{"version":3,"sources":["node_modules/@vendasta/listing-sync-pro/fesm2020/vendasta-listing-sync-pro.mjs","libs/local-seo/src/lib/local-seo.ts","libs/local-seo/src/lib/upgrade-cta-dialog/upgrade-cta-dialog.service.ts","libs/local-seo/src/lib/keyword-tracking-page/keyword-tracking/keyword-tracking.service.ts","libs/local-seo/src/lib/keyword-tracking-page/local-seo-keyword-dialog/local-seo-keyword-dialog.component.ts","libs/local-seo/src/lib/keyword-tracking-page/local-seo-keyword-dialog/local-seo-keyword-dialog.component.html","libs/local-seo/src/lib/delta/delta.component.ts","libs/local-seo/src/lib/delta/delta.component.html","node_modules/@vendasta/snapshot/fesm2020/vendasta-snapshot.mjs","libs/local-seo/src/lib/local-seo-table/local-seo-graph/local-seo-graph.config.ts","libs/local-seo/src/lib/local-seo-table/local-seo-graph/local-seo-graph.component.ts","libs/local-seo/src/lib/local-seo-table/local-seo-graph/local-seo-graph.component.html","libs/local-seo/src/lib/local-seo-table/local-seo-grid/local-seo-grid.ts","libs/local-seo/src/lib/local-seo-table/local-seo-grid/local-seo-grid.component.ts","libs/local-seo/src/lib/local-seo-table/local-seo-grid/local-seo-grid.component.html","libs/local-seo/src/lib/local-seo-table/local-seo-table.component.ts","libs/local-seo/src/lib/local-seo-table/local-seo-table.component.html","node_modules/@kurkle/color/dist/color.esm.js","node_modules/chart.js/dist/chunks/helpers.segment.js","node_modules/chart.js/dist/chart.js","libs/bit-chart/src/lib/chart-color.service.ts","libs/bit-chart/src/lib/config-parser.service.ts","libs/bit-chart/src/lib/chart.component.ts","libs/bit-chart/src/lib/chart.component.html","libs/bit-chart/src/lib/chart.module.ts","libs/bit-chart/src/lib/interface.ts","libs/bit-chart/src/lib/colors.ts","libs/bit-chart/src/lib/public_api.ts","libs/bit-chart/src/index.ts","libs/local-seo/src/lib/stat-tabs/stat-tabs.component.ts","libs/local-seo/src/lib/stat-tabs/stat-tabs.component.html","libs/local-seo/src/lib/keyword-stats-cards/local-seo-keywords-stats-cards.component.ts","libs/local-seo/src/lib/keyword-stats-cards/local-seo-keywords-stats-cards.component.html","libs/local-seo/src/lib/info-banner/info-banner.component.ts","libs/local-seo/src/lib/info-banner/info-banner.component.html","libs/local-seo/src/lib/keyword-tracking-page/keyword-tracking/keyword-tracking.component.ts","libs/local-seo/src/lib/keyword-tracking-page/keyword-tracking/keyword-tracking.component.html","libs/local-seo/src/lib/keyword-tracking-page/local-seo-settings-dialog/local-seo-settings-dialog.component.ts","libs/local-seo/src/lib/keyword-tracking-page/local-seo-settings-dialog/local-seo-settings-dialog.component.html","libs/local-seo/src/lib/keyword-stats-cards/local-seo-keywords-stats-cards.module.ts","libs/local-seo/src/lib/assets/i18n/en_devel.json","libs/local-seo/src/lib/local-seo-table/local-seo-table.module.ts","libs/local-seo/src/lib/keyword-tracking-page/local-seo-page-title-action/local-seo-page-title-action.component.ts","libs/local-seo/src/lib/keyword-tracking-page/local-seo-page-title-action/local-seo-page-title-action.component.html","libs/local-seo/src/lib/keyword-tracking-page/keyword-tracking/keyword-tracking.module.ts","node_modules/ng-click-outside/lib_esmodule/click-outside.directive.js","node_modules/ng-click-outside/lib_esmodule/click-outside.module.js","node_modules/ng-click-outside/lib_esmodule/index.js","libs/local-seo/src/lib/business-center/business-center.service.ts","libs/local-seo/src/lib/repcore-api/vapi.service.ts","libs/local-seo/src/lib/repcore-api/repcore-api.service.ts","libs/local-seo/src/lib/listings-management/listing-sync.api.service.ts","libs/local-seo/src/lib/listings-management/listing-sync.service.ts","libs/local-seo/src/lib/disconnect-service-modal/disconnect-service-modal.component.ts","libs/local-seo/src/lib/disconnect-service-modal/disconnect-service-modal.component.html","libs/local-seo/src/lib/listings-management/listing-sync-table/listing-sync-table.service.ts","libs/local-seo/src/lib/listings-management/primary-sources/constants.ts","libs/local-seo/src/lib/listings-management/listing-sync-table/columns/presence-accuracy/accuracy-text.pipe.ts","libs/local-seo/src/lib/listings-management/listing-sync-table/sync-info-modal/sync-info-modal.component.ts","libs/local-seo/src/lib/listings-management/listing-sync-table/sync-info-modal/sync-info-modal.component.html","libs/local-seo/src/lib/listings-management/listing-sync-table/columns/source-name-column/icon/icon.component.ts","libs/local-seo/src/lib/listings-management/listing-sync-table/columns/source-name-column/icon/icon.component.html","libs/local-seo/src/lib/listings-management/listing-sync-table/listing-sidebar/listing-sidebar.component.ts","libs/local-seo/src/lib/listings-management/listing-sync-table/listing-sidebar/listing-sidebar.component.html","libs/local-seo/src/lib/listings-management/listing-sync-table/listing-sync-table-filter.service.ts","libs/local-seo/src/lib/listings-management/listing-sync-table/lsp-error-messages/lsp-error-messages.component.ts","libs/local-seo/src/lib/listings-management/listing-sync-table/lsp-error-messages/lsp-error-messages.component.html","libs/local-seo/src/lib/listings-management/listing-sync-table/listing-sync-table.component.ts","libs/local-seo/src/lib/listings-management/listing-sync-table/listing-sync-table.component.html","libs/local-seo/src/lib/listings-management/listing-score-summary-card/listing-score-summary-card.component.ts","libs/local-seo/src/lib/listings-management/listing-score-summary-card/listing-score-summary-card.component.html","libs/local-seo/src/lib/color-icon/color-icon.component.ts","libs/local-seo/src/lib/color-icon/color-icon.component.html","libs/local-seo/src/lib/listings-management/listings-summary-card/listings-summary-card.component.ts","libs/local-seo/src/lib/listings-management/listings-summary-card/listings-summary-card.component.html","libs/local-seo/src/lib/listings-management/syncing-progress-summary-card/syncing-progress-summary-card.component.ts","libs/local-seo/src/lib/listings-management/syncing-progress-summary-card/syncing-progress-summary-card.component.html","libs/local-seo/src/lib/listings-management/connected-account-modal/connected-account-modal.component.ts","libs/local-seo/src/lib/listings-management/connected-account-modal/connected-account-modal.component.html","libs/local-seo/src/lib/listings-management/listing-sync-table/listing-signup-sidebar/signup-modal/signup-modal.component.ts","libs/local-seo/src/lib/listings-management/listing-sync-table/listing-signup-sidebar/signup-modal/signup-modal.component.html","libs/local-seo/src/lib/listings-management/listing-sync-table/listing-signup-sidebar/listing-signup-sidebar.component.ts","libs/local-seo/src/lib/listings-management/listing-sync-table/listing-signup-sidebar/listing-signup-sidebar.component.html","libs/local-seo/src/lib/listings-management/primary-sources/primary-source/primary-source.component.ts","libs/local-seo/src/lib/listings-management/primary-sources/primary-source/primary-source.component.html","libs/local-seo/src/lib/listings-management/primary-sources/primary-sources.component.ts","libs/local-seo/src/lib/listings-management/primary-sources/primary-sources.component.html","libs/local-seo/src/lib/listings-management/listings-management.component.ts","libs/local-seo/src/lib/listings-management/listings-management.component.html","node_modules/ngx-json-viewer/fesm2020/ngx-json-viewer.mjs","libs/local-seo/src/lib/listings-management/listing-sync-table/columns/presence-accuracy/errors-modal/anchor-data-key-to-icon.pipe.ts","libs/local-seo/src/lib/listings-management/listing-sync-table/columns/presence-accuracy/errors-modal/fill-empty-anchor-data.pipe.ts","libs/local-seo/src/lib/listings-management/listing-sync-table/columns/presence-accuracy/errors-modal/errors-modal.component.ts","libs/local-seo/src/lib/listings-management/listing-sync-table/columns/presence-accuracy/errors-modal/errors-modal.component.html","libs/local-seo/src/lib/listings-management/listing-sync-table/columns/column.directive.ts","libs/local-seo/src/lib/listings-management/listing-sync-table/columns/presence-accuracy/presence-accuracy.component.ts","libs/local-seo/src/lib/listings-management/listing-sync-table/columns/presence-accuracy/presence-accuracy.component.html","libs/local-seo/src/lib/listings-management/listing-sync-table/columns/source-name-column/source-name-column.component.ts","libs/local-seo/src/lib/listings-management/listing-sync-table/columns/source-name-column/source-name-column.component.html","libs/local-seo/src/lib/listings-management/listing-sync-table/columns/status-column/status-column.component.ts","libs/local-seo/src/lib/listings-management/listing-sync-table/columns/status-column/status-column.component.html","libs/local-seo/src/lib/listings-management/listing-sync-table/listing-sync-table-model.ts","libs/local-seo/src/lib/listings-management/listings-management.module.ts","libs/local-seo/src/lib/index.ts","libs/local-seo/src/index.ts"],"sourcesContent":["import * as i0 from '@angular/core';\nimport { Injectable } from '@angular/core';\nimport * as i1 from '@angular/common/http';\nimport { HttpHeaders } from '@angular/common/http';\nimport { map, catchError } from 'rxjs/operators';\nimport { of } from 'rxjs';\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar AccuracyStatus = /*#__PURE__*/function (AccuracyStatus) {\n AccuracyStatus[AccuracyStatus[\"ACCURACY_STATUS_UNKNOWN\"] = 0] = \"ACCURACY_STATUS_UNKNOWN\";\n AccuracyStatus[AccuracyStatus[\"ACCURACY_STATUS_ACCURATE\"] = 1] = \"ACCURACY_STATUS_ACCURATE\";\n AccuracyStatus[AccuracyStatus[\"ACCURACY_STATUS_INACCURATE\"] = 2] = \"ACCURACY_STATUS_INACCURATE\";\n AccuracyStatus[AccuracyStatus[\"ACCURACY_STATUS_NOT_AVAILABLE\"] = 3] = \"ACCURACY_STATUS_NOT_AVAILABLE\";\n AccuracyStatus[AccuracyStatus[\"ACCURACY_STATUS_NOT_FOUND\"] = 4] = \"ACCURACY_STATUS_NOT_FOUND\";\n return AccuracyStatus;\n}(AccuracyStatus || {});\nvar ListListingSyncProAddonIdsResponseAddonInfoBillingFrequency = /*#__PURE__*/function (ListListingSyncProAddonIdsResponseAddonInfoBillingFrequency) {\n ListListingSyncProAddonIdsResponseAddonInfoBillingFrequency[ListListingSyncProAddonIdsResponseAddonInfoBillingFrequency[\"LIST_LISTING_SYNC_PRO_ADDON_IDS_RESPONSE_ADDON_INFO_BILLING_FREQUENCY_UNSPECIFIED\"] = 0] = \"LIST_LISTING_SYNC_PRO_ADDON_IDS_RESPONSE_ADDON_INFO_BILLING_FREQUENCY_UNSPECIFIED\";\n ListListingSyncProAddonIdsResponseAddonInfoBillingFrequency[ListListingSyncProAddonIdsResponseAddonInfoBillingFrequency[\"LIST_LISTING_SYNC_PRO_ADDON_IDS_RESPONSE_ADDON_INFO_BILLING_FREQUENCY_MONTHLY\"] = 1] = \"LIST_LISTING_SYNC_PRO_ADDON_IDS_RESPONSE_ADDON_INFO_BILLING_FREQUENCY_MONTHLY\";\n ListListingSyncProAddonIdsResponseAddonInfoBillingFrequency[ListListingSyncProAddonIdsResponseAddonInfoBillingFrequency[\"LIST_LISTING_SYNC_PRO_ADDON_IDS_RESPONSE_ADDON_INFO_BILLING_FREQUENCY_YEARLY\"] = 2] = \"LIST_LISTING_SYNC_PRO_ADDON_IDS_RESPONSE_ADDON_INFO_BILLING_FREQUENCY_YEARLY\";\n return ListListingSyncProAddonIdsResponseAddonInfoBillingFrequency;\n}(ListListingSyncProAddonIdsResponseAddonInfoBillingFrequency || {});\nvar BillingFrequency = /*#__PURE__*/function (BillingFrequency) {\n BillingFrequency[BillingFrequency[\"BILLING_FREQUENCY_UNSPECIFIED\"] = 0] = \"BILLING_FREQUENCY_UNSPECIFIED\";\n BillingFrequency[BillingFrequency[\"BILLING_FREQUENCY_MONTHLY\"] = 1] = \"BILLING_FREQUENCY_MONTHLY\";\n BillingFrequency[BillingFrequency[\"BILLING_FREQUENCY_YEARLY\"] = 2] = \"BILLING_FREQUENCY_YEARLY\";\n return BillingFrequency;\n}(BillingFrequency || {});\nvar ErrorCode = /*#__PURE__*/function (ErrorCode) {\n ErrorCode[ErrorCode[\"ERROR_CODE_NAME\"] = 0] = \"ERROR_CODE_NAME\";\n ErrorCode[ErrorCode[\"ERROR_CODE_STREET_ADDRESS\"] = 1] = \"ERROR_CODE_STREET_ADDRESS\";\n ErrorCode[ErrorCode[\"ERROR_CODE_ZIP_CODE\"] = 2] = \"ERROR_CODE_ZIP_CODE\";\n ErrorCode[ErrorCode[\"ERROR_CODE_PHONE_NUMBER\"] = 3] = \"ERROR_CODE_PHONE_NUMBER\";\n ErrorCode[ErrorCode[\"ERROR_CODE_WHOLE_ADDRESS\"] = 4] = \"ERROR_CODE_WHOLE_ADDRESS\";\n ErrorCode[ErrorCode[\"ERROR_CODE_HOURS_OF_OPERATION\"] = 5] = \"ERROR_CODE_HOURS_OF_OPERATION\";\n ErrorCode[ErrorCode[\"ERROR_CODE_CATEGORIES\"] = 6] = \"ERROR_CODE_CATEGORIES\";\n ErrorCode[ErrorCode[\"ERROR_CODE_DESCRIPTION_LONG\"] = 7] = \"ERROR_CODE_DESCRIPTION_LONG\";\n ErrorCode[ErrorCode[\"ERROR_CODE_DESCRIPTION_SHORT\"] = 8] = \"ERROR_CODE_DESCRIPTION_SHORT\";\n ErrorCode[ErrorCode[\"ERROR_CODE_EMAIL\"] = 9] = \"ERROR_CODE_EMAIL\";\n ErrorCode[ErrorCode[\"ERROR_CODE_PAYMENT_OPTIONS\"] = 10] = \"ERROR_CODE_PAYMENT_OPTIONS\";\n ErrorCode[ErrorCode[\"ERROR_CODE_PHOTOS\"] = 11] = \"ERROR_CODE_PHOTOS\";\n ErrorCode[ErrorCode[\"ERROR_CODE_SOCIAL_PROFILES\"] = 12] = \"ERROR_CODE_SOCIAL_PROFILES\";\n ErrorCode[ErrorCode[\"ERROR_CODE_WEBSITE\"] = 13] = \"ERROR_CODE_WEBSITE\";\n ErrorCode[ErrorCode[\"ERROR_CODE_NOT_FOUND\"] = 14] = \"ERROR_CODE_NOT_FOUND\";\n ErrorCode[ErrorCode[\"ERROR_CODE_NOT_IN_SYNC\"] = 15] = \"ERROR_CODE_NOT_IN_SYNC\";\n ErrorCode[ErrorCode[\"ERROR_CODE_DOES_NOT_SUPPORT_SERVICE_AREA_BUSINESS\"] = 16] = \"ERROR_CODE_DOES_NOT_SUPPORT_SERVICE_AREA_BUSINESS\";\n ErrorCode[ErrorCode[\"ERROR_CODE_CLAIMED_BY_OTHERS\"] = 17] = \"ERROR_CODE_CLAIMED_BY_OTHERS\";\n ErrorCode[ErrorCode[\"ERROR_CODE_NOT_CLAIMABLE\"] = 18] = \"ERROR_CODE_NOT_CLAIMABLE\";\n ErrorCode[ErrorCode[\"ERROR_CODE_NO_ONLINE_LISTING\"] = 19] = \"ERROR_CODE_NO_ONLINE_LISTING\";\n ErrorCode[ErrorCode[\"ERROR_CODE_UNHANDLED_ERROR\"] = 20] = \"ERROR_CODE_UNHANDLED_ERROR\";\n ErrorCode[ErrorCode[\"ERROR_CODE_EXISTING_RELATIONSHIP\"] = 21] = \"ERROR_CODE_EXISTING_RELATIONSHIP\";\n ErrorCode[ErrorCode[\"ERROR_CODE_CONTACT_SOURCE\"] = 22] = \"ERROR_CODE_CONTACT_SOURCE\";\n ErrorCode[ErrorCode[\"ERROR_CODE_CHAIN_LOCATION\"] = 23] = \"ERROR_CODE_CHAIN_LOCATION\";\n ErrorCode[ErrorCode[\"ERROR_CODE_UNAVAILABLE_REASON\"] = 24] = \"ERROR_CODE_UNAVAILABLE_REASON\";\n ErrorCode[ErrorCode[\"ERROR_CODE_SCRAPED_DATA_URL_MISMATCH\"] = 25] = \"ERROR_CODE_SCRAPED_DATA_URL_MISMATCH\";\n ErrorCode[ErrorCode[\"ERROR_CODE_CITY\"] = 26] = \"ERROR_CODE_CITY\";\n ErrorCode[ErrorCode[\"ERROR_CODE_SERVICES\"] = 27] = \"ERROR_CODE_SERVICES\";\n return ErrorCode;\n}(ErrorCode || {});\nvar ServiceProvider = /*#__PURE__*/function (ServiceProvider) {\n ServiceProvider[ServiceProvider[\"SERVICE_PROVIDER_UNSPECIFIED\"] = 0] = \"SERVICE_PROVIDER_UNSPECIFIED\";\n ServiceProvider[ServiceProvider[\"SERVICE_PROVIDER_PROVIDER_0\"] = 1] = \"SERVICE_PROVIDER_PROVIDER_0\";\n ServiceProvider[ServiceProvider[\"SERVICE_PROVIDER_PROVIDER_1\"] = 2] = \"SERVICE_PROVIDER_PROVIDER_1\";\n return ServiceProvider;\n}(ServiceProvider || {});\nvar SiteType = /*#__PURE__*/function (SiteType) {\n SiteType[SiteType[\"SITE_TYPE_UNSPECIFIED\"] = 0] = \"SITE_TYPE_UNSPECIFIED\";\n SiteType[SiteType[\"SITE_TYPE_MAP\"] = 1] = \"SITE_TYPE_MAP\";\n SiteType[SiteType[\"SITE_TYPE_SOCIAL\"] = 2] = \"SITE_TYPE_SOCIAL\";\n SiteType[SiteType[\"SITE_TYPE_AGGREGATOR\"] = 3] = \"SITE_TYPE_AGGREGATOR\";\n SiteType[SiteType[\"SITE_TYPE_HISPANIC_SITE\"] = 4] = \"SITE_TYPE_HISPANIC_SITE\";\n SiteType[SiteType[\"SITE_TYPE_APP\"] = 5] = \"SITE_TYPE_APP\";\n SiteType[SiteType[\"SITE_TYPE_GPS\"] = 6] = \"SITE_TYPE_GPS\";\n SiteType[SiteType[\"SITE_TYPE_DIRECTORY\"] = 7] = \"SITE_TYPE_DIRECTORY\";\n return SiteType;\n}(SiteType || {});\nvar StatusCode = /*#__PURE__*/function (StatusCode) {\n StatusCode[StatusCode[\"STATUS_CODE_UNKNOWN\"] = 0] = \"STATUS_CODE_UNKNOWN\";\n StatusCode[StatusCode[\"STATUS_CODE_SYNCED\"] = 1] = \"STATUS_CODE_SYNCED\";\n StatusCode[StatusCode[\"STATUS_CODE_IN_PROGRESS\"] = 2] = \"STATUS_CODE_IN_PROGRESS\";\n StatusCode[StatusCode[\"STATUS_CODE_IGNORING_ERRORS\"] = 3] = \"STATUS_CODE_IGNORING_ERRORS\";\n StatusCode[StatusCode[\"STATUS_CODE_SYNCING_WITH_WARNINGS\"] = 4] = \"STATUS_CODE_SYNCING_WITH_WARNINGS\";\n StatusCode[StatusCode[\"STATUS_CODE_HAS_ERRORS\"] = 5] = \"STATUS_CODE_HAS_ERRORS\";\n StatusCode[StatusCode[\"STATUS_CODE_SYNC_DISABLED\"] = 6] = \"STATUS_CODE_SYNC_DISABLED\";\n StatusCode[StatusCode[\"STATUS_CODE_CLAIMED_BY_OTHERS\"] = 7] = \"STATUS_CODE_CLAIMED_BY_OTHERS\";\n StatusCode[StatusCode[\"STATUS_CODE_DOES_NOT_SUPPORT_SERVICE_AREA_BUSINESS\"] = 8] = \"STATUS_CODE_DOES_NOT_SUPPORT_SERVICE_AREA_BUSINESS\";\n StatusCode[StatusCode[\"STATUS_CODE_SUBMITTED\"] = 9] = \"STATUS_CODE_SUBMITTED\";\n StatusCode[StatusCode[\"STATUS_CODE_MANUAL_UPDATE_ONLY\"] = 10] = \"STATUS_CODE_MANUAL_UPDATE_ONLY\";\n StatusCode[StatusCode[\"STATUS_CODE_NOT_FOUND\"] = 11] = \"STATUS_CODE_NOT_FOUND\";\n return StatusCode;\n}(StatusCode || {});\nvar SyncingStatus = /*#__PURE__*/function (SyncingStatus) {\n SyncingStatus[SyncingStatus[\"SYNCING_STATUS_UNSPECIFIED\"] = 0] = \"SYNCING_STATUS_UNSPECIFIED\";\n SyncingStatus[SyncingStatus[\"SYNCING_STATUS_SYNCING\"] = 1] = \"SYNCING_STATUS_SYNCING\";\n SyncingStatus[SyncingStatus[\"SYNCING_STATUS_COMPLETELY_SYNCED\"] = 2] = \"SYNCING_STATUS_COMPLETELY_SYNCED\";\n return SyncingStatus;\n}(SyncingStatus || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums Index.\n// *********************************\n\nfunction enumStringToValue$1(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Access {\n static fromProto(proto) {\n let m = new Access();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.scope !== 'undefined') {\n toReturn['scope'] = this.scope;\n }\n if (typeof this.public !== 'undefined') {\n toReturn['public'] = this.public;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass AccountFilters {\n static fromProto(proto) {\n let m = new AccountFilters();\n m = Object.assign(m, proto);\n if (proto.serviceProvider) {\n m.serviceProvider = enumStringToValue(ServiceProvider, proto.serviceProvider);\n }\n if (proto.errorCodes) {\n m.errorCodes = proto.errorCodes.map(v => enumStringToValue(ErrorCode, v));\n }\n if (proto.syncingStatus) {\n m.syncingStatus = enumStringToValue(SyncingStatus, proto.syncingStatus);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.marketId !== 'undefined') {\n toReturn['marketId'] = this.marketId;\n }\n if (typeof this.serviceProvider !== 'undefined') {\n toReturn['serviceProvider'] = this.serviceProvider;\n }\n if (typeof this.errorCodes !== 'undefined') {\n toReturn['errorCodes'] = this.errorCodes;\n }\n if (typeof this.syncingStatus !== 'undefined') {\n toReturn['syncingStatus'] = this.syncingStatus;\n }\n return toReturn;\n }\n}\nclass AccountListingStatuses {\n static fromProto(proto) {\n let m = new AccountListingStatuses();\n m = Object.assign(m, proto);\n if (proto.sourceStatuses) {\n m.sourceStatuses = proto.sourceStatuses.map(SourceStatus.fromProto);\n }\n if (proto.statusDate) {\n m.statusDate = new Date(proto.statusDate);\n }\n if (proto.businessUpdated) {\n m.businessUpdated = new Date(proto.businessUpdated);\n }\n if (proto.sourceData) {\n m.sourceData = SourceData.fromProto(proto.sourceData);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.businessName !== 'undefined') {\n toReturn['businessName'] = this.businessName;\n }\n if (typeof this.address !== 'undefined') {\n toReturn['address'] = this.address;\n }\n if (typeof this.city !== 'undefined') {\n toReturn['city'] = this.city;\n }\n if (typeof this.state !== 'undefined') {\n toReturn['state'] = this.state;\n }\n if (typeof this.sourceStatuses !== 'undefined' && this.sourceStatuses !== null) {\n toReturn['sourceStatuses'] = 'toApiJson' in this.sourceStatuses ? this.sourceStatuses.toApiJson() : this.sourceStatuses;\n }\n if (typeof this.businessId !== 'undefined') {\n toReturn['businessId'] = this.businessId;\n }\n if (typeof this.statusDate !== 'undefined' && this.statusDate !== null) {\n toReturn['statusDate'] = 'toApiJson' in this.statusDate ? this.statusDate.toApiJson() : this.statusDate;\n }\n if (typeof this.businessUpdated !== 'undefined' && this.businessUpdated !== null) {\n toReturn['businessUpdated'] = 'toApiJson' in this.businessUpdated ? this.businessUpdated.toApiJson() : this.businessUpdated;\n }\n if (typeof this.sourceData !== 'undefined' && this.sourceData !== null) {\n toReturn['sourceData'] = 'toApiJson' in this.sourceData ? this.sourceData.toApiJson() : this.sourceData;\n }\n return toReturn;\n }\n}\nclass ActivateListingSyncProRequest {\n static fromProto(proto) {\n let m = new ActivateListingSyncProRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.addonId !== 'undefined') {\n toReturn['addonId'] = this.addonId;\n }\n return toReturn;\n }\n}\nclass ListListingSyncProAddonIdsResponseAddonInfo {\n static fromProto(proto) {\n let m = new ListListingSyncProAddonIdsResponseAddonInfo();\n m = Object.assign(m, proto);\n if (proto.provider) {\n m.provider = enumStringToValue(ServiceProvider, proto.provider);\n }\n if (proto.billingFrequency) {\n m.billingFrequency = enumStringToValue(ListListingSyncProAddonIdsResponseAddonInfoBillingFrequency, proto.billingFrequency);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.provider !== 'undefined') {\n toReturn['provider'] = this.provider;\n }\n if (typeof this.isDiscounted !== 'undefined') {\n toReturn['isDiscounted'] = this.isDiscounted;\n }\n if (typeof this.countryCode !== 'undefined') {\n toReturn['countryCode'] = this.countryCode;\n }\n if (typeof this.billingFrequency !== 'undefined') {\n toReturn['billingFrequency'] = this.billingFrequency;\n }\n return toReturn;\n }\n}\nclass ListListingSyncProAddonIdsResponseAddonInfoEntry {\n static fromProto(proto) {\n let m = new ListListingSyncProAddonIdsResponseAddonInfoEntry();\n m = Object.assign(m, proto);\n if (proto.value) {\n m.value = ListListingSyncProAddonIdsResponseAddonInfo.fromProto(proto.value);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.key !== 'undefined') {\n toReturn['key'] = this.key;\n }\n if (typeof this.value !== 'undefined' && this.value !== null) {\n toReturn['value'] = 'toApiJson' in this.value ? this.value.toApiJson() : this.value;\n }\n return toReturn;\n }\n}\nclass AnchorData {\n static fromProto(proto) {\n let m = new AnchorData();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.website !== 'undefined') {\n toReturn['website'] = this.website;\n }\n if (typeof this.city !== 'undefined') {\n toReturn['city'] = this.city;\n }\n if (typeof this.zip !== 'undefined') {\n toReturn['zip'] = this.zip;\n }\n if (typeof this.companyName !== 'undefined') {\n toReturn['companyName'] = this.companyName;\n }\n if (typeof this.country !== 'undefined') {\n toReturn['country'] = this.country;\n }\n if (typeof this.phone !== 'undefined') {\n toReturn['phone'] = this.phone;\n }\n if (typeof this.state !== 'undefined') {\n toReturn['state'] = this.state;\n }\n if (typeof this.address !== 'undefined') {\n toReturn['address'] = this.address;\n }\n return toReturn;\n }\n}\nclass AnchorDataMatches {\n static fromProto(proto) {\n let m = new AnchorDataMatches();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.website !== 'undefined') {\n toReturn['website'] = this.website;\n }\n if (typeof this.city !== 'undefined') {\n toReturn['city'] = this.city;\n }\n if (typeof this.zip !== 'undefined') {\n toReturn['zip'] = this.zip;\n }\n if (typeof this.companyName !== 'undefined') {\n toReturn['companyName'] = this.companyName;\n }\n if (typeof this.country !== 'undefined') {\n toReturn['country'] = this.country;\n }\n if (typeof this.phone !== 'undefined') {\n toReturn['phone'] = this.phone;\n }\n if (typeof this.state !== 'undefined') {\n toReturn['state'] = this.state;\n }\n if (typeof this.address !== 'undefined') {\n toReturn['address'] = this.address;\n }\n return toReturn;\n }\n}\nclass Citation {\n static fromProto(proto) {\n let m = new Citation();\n m = Object.assign(m, proto);\n if (proto.listings) {\n m.listings = proto.listings.map(CitationListing.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.domain !== 'undefined') {\n toReturn['domain'] = this.domain;\n }\n if (typeof this.listings !== 'undefined' && this.listings !== null) {\n toReturn['listings'] = 'toApiJson' in this.listings ? this.listings.toApiJson() : this.listings;\n }\n return toReturn;\n }\n}\nclass CitationListing {\n static fromProto(proto) {\n let m = new CitationListing();\n m = Object.assign(m, proto);\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.url !== 'undefined') {\n toReturn['url'] = this.url;\n }\n if (typeof this.title !== 'undefined') {\n toReturn['title'] = this.title;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n return toReturn;\n }\n}\nclass CollectStatsRequest {\n static fromProto(proto) {\n let m = new CollectStatsRequest();\n m = Object.assign(m, proto);\n if (proto.serviceProvider) {\n m.serviceProvider = enumStringToValue(ServiceProvider, proto.serviceProvider);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.serviceProvider !== 'undefined') {\n toReturn['serviceProvider'] = this.serviceProvider;\n }\n if (typeof this.serviceAreaBusiness !== 'undefined') {\n toReturn['serviceAreaBusiness'] = this.serviceAreaBusiness;\n }\n if (typeof this.refreshListings !== 'undefined') {\n toReturn['refreshListings'] = this.refreshListings;\n }\n if (typeof this.validateCsListingSubmissions !== 'undefined') {\n toReturn['validateCsListingSubmissions'] = this.validateCsListingSubmissions;\n }\n return toReturn;\n }\n}\nclass CreateListingSyncProProviderSourceDataRequest {\n static fromProto(proto) {\n let m = new CreateListingSyncProProviderSourceDataRequest();\n m = Object.assign(m, proto);\n if (proto.serviceProvider) {\n m.serviceProvider = enumStringToValue(ServiceProvider, proto.serviceProvider);\n }\n if (proto.sourceData) {\n m.sourceData = ListingSyncProProviderSourceData.fromProto(proto.sourceData);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.providerSpecificId !== 'undefined') {\n toReturn['providerSpecificId'] = this.providerSpecificId;\n }\n if (typeof this.serviceProvider !== 'undefined') {\n toReturn['serviceProvider'] = this.serviceProvider;\n }\n if (typeof this.sourceData !== 'undefined' && this.sourceData !== null) {\n toReturn['sourceData'] = 'toApiJson' in this.sourceData ? this.sourceData.toApiJson() : this.sourceData;\n }\n return toReturn;\n }\n}\nclass CreateListingSyncProSourceRequest {\n static fromProto(proto) {\n let m = new CreateListingSyncProSourceRequest();\n m = Object.assign(m, proto);\n if (proto.sourceInfo) {\n m.sourceInfo = SourceInfo.fromProto(proto.sourceInfo);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sourceInfo !== 'undefined' && this.sourceInfo !== null) {\n toReturn['sourceInfo'] = 'toApiJson' in this.sourceInfo ? this.sourceInfo.toApiJson() : this.sourceInfo;\n }\n return toReturn;\n }\n}\nclass CreateListingSyncProSourceResponse {\n static fromProto(proto) {\n let m = new CreateListingSyncProSourceResponse();\n m = Object.assign(m, proto);\n if (proto.sourceInfo) {\n m.sourceInfo = SourceInfo.fromProto(proto.sourceInfo);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sourceInfo !== 'undefined' && this.sourceInfo !== null) {\n toReturn['sourceInfo'] = 'toApiJson' in this.sourceInfo ? this.sourceInfo.toApiJson() : this.sourceInfo;\n }\n return toReturn;\n }\n}\nclass DeactivateListingSyncProRequest {\n static fromProto(proto) {\n let m = new DeactivateListingSyncProRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n return toReturn;\n }\n}\nclass DeleteListingSyncProProviderSourceRequest {\n static fromProto(proto) {\n let m = new DeleteListingSyncProProviderSourceRequest();\n m = Object.assign(m, proto);\n if (proto.serviceProvider) {\n m.serviceProvider = enumStringToValue(ServiceProvider, proto.serviceProvider);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.providerSpecificId !== 'undefined') {\n toReturn['providerSpecificId'] = this.providerSpecificId;\n }\n if (typeof this.serviceProvider !== 'undefined') {\n toReturn['serviceProvider'] = this.serviceProvider;\n }\n return toReturn;\n }\n}\nclass DeleteStatsRequest {\n static fromProto(proto) {\n let m = new DeleteStatsRequest();\n m = Object.assign(m, proto);\n if (proto.fromDate) {\n m.fromDate = new Date(proto.fromDate);\n }\n if (proto.toDate) {\n m.toDate = new Date(proto.toDate);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.fromDate !== 'undefined' && this.fromDate !== null) {\n toReturn['fromDate'] = 'toApiJson' in this.fromDate ? this.fromDate.toApiJson() : this.fromDate;\n }\n if (typeof this.toDate !== 'undefined' && this.toDate !== null) {\n toReturn['toDate'] = 'toApiJson' in this.toDate ? this.toDate.toApiJson() : this.toDate;\n }\n if (typeof this.sources !== 'undefined') {\n toReturn['sources'] = this.sources;\n }\n return toReturn;\n }\n}\nclass Errors {\n static fromProto(proto) {\n let m = new Errors();\n m = Object.assign(m, proto);\n if (proto.errorCode) {\n m.errorCode = enumStringToValue(ErrorCode, proto.errorCode);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.errorCode !== 'undefined') {\n toReturn['errorCode'] = this.errorCode;\n }\n if (typeof this.errorDetails !== 'undefined') {\n toReturn['errorDetails'] = this.errorDetails;\n }\n return toReturn;\n }\n}\nclass GetAvailableProvidersForPartnerRequest {\n static fromProto(proto) {\n let m = new GetAvailableProvidersForPartnerRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n return toReturn;\n }\n}\nclass GetAvailableProvidersForPartnerResponse {\n static fromProto(proto) {\n let m = new GetAvailableProvidersForPartnerResponse();\n m = Object.assign(m, proto);\n if (proto.serviceProviders) {\n m.serviceProviders = proto.serviceProviders.map(v => enumStringToValue(ServiceProvider, v));\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.serviceProviders !== 'undefined') {\n toReturn['serviceProviders'] = this.serviceProviders;\n }\n return toReturn;\n }\n}\nclass GetCitationDataRequest {\n static fromProto(proto) {\n let m = new GetCitationDataRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.businessId !== 'undefined') {\n toReturn['businessId'] = this.businessId;\n }\n return toReturn;\n }\n}\nclass GetCitationDataResponse {\n static fromProto(proto) {\n let m = new GetCitationDataResponse();\n m = Object.assign(m, proto);\n if (proto.citationCount) {\n m.citationCount = parseInt(proto.citationCount, 10);\n }\n if (proto.initialCitationCount) {\n m.initialCitationCount = parseInt(proto.initialCitationCount, 10);\n }\n if (proto.historicalCitationsSeries) {\n m.historicalCitationsSeries = proto.historicalCitationsSeries.map(HistoricalCitationsDataPoint.fromProto);\n }\n if (proto.citations) {\n m.citations = proto.citations.map(Citation.fromProto);\n }\n if (proto.startDate) {\n m.startDate = new Date(proto.startDate);\n }\n if (proto.citationPercentGrowth) {\n m.citationPercentGrowth = parseInt(proto.citationPercentGrowth, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.citationCount !== 'undefined') {\n toReturn['citationCount'] = this.citationCount;\n }\n if (typeof this.initialCitationCount !== 'undefined') {\n toReturn['initialCitationCount'] = this.initialCitationCount;\n }\n if (typeof this.historicalCitationsSeries !== 'undefined' && this.historicalCitationsSeries !== null) {\n toReturn['historicalCitationsSeries'] = 'toApiJson' in this.historicalCitationsSeries ? this.historicalCitationsSeries.toApiJson() : this.historicalCitationsSeries;\n }\n if (typeof this.citations !== 'undefined' && this.citations !== null) {\n toReturn['citations'] = 'toApiJson' in this.citations ? this.citations.toApiJson() : this.citations;\n }\n if (typeof this.startDate !== 'undefined' && this.startDate !== null) {\n toReturn['startDate'] = 'toApiJson' in this.startDate ? this.startDate.toApiJson() : this.startDate;\n }\n if (typeof this.citationPercentGrowth !== 'undefined') {\n toReturn['citationPercentGrowth'] = this.citationPercentGrowth;\n }\n return toReturn;\n }\n}\nclass GetListingDataForATimePeriodRequest {\n static fromProto(proto) {\n let m = new GetListingDataForATimePeriodRequest();\n m = Object.assign(m, proto);\n if (proto.begin) {\n m.begin = new Date(proto.begin);\n }\n if (proto.recent) {\n m.recent = new Date(proto.recent);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.businessId !== 'undefined') {\n toReturn['businessId'] = this.businessId;\n }\n if (typeof this.begin !== 'undefined' && this.begin !== null) {\n toReturn['begin'] = 'toApiJson' in this.begin ? this.begin.toApiJson() : this.begin;\n }\n if (typeof this.recent !== 'undefined' && this.recent !== null) {\n toReturn['recent'] = 'toApiJson' in this.recent ? this.recent.toApiJson() : this.recent;\n }\n return toReturn;\n }\n}\nclass GetListingDataRequest {\n static fromProto(proto) {\n let m = new GetListingDataRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.businessId !== 'undefined') {\n toReturn['businessId'] = this.businessId;\n }\n return toReturn;\n }\n}\nclass GetListingDataResponse {\n static fromProto(proto) {\n let m = new GetListingDataResponse();\n m = Object.assign(m, proto);\n if (proto.provider) {\n m.provider = enumStringToValue(ServiceProvider, proto.provider);\n }\n if (proto.scores) {\n m.scores = ScoreData.fromProto(proto.scores);\n }\n if (proto.anchorData) {\n m.anchorData = AnchorData.fromProto(proto.anchorData);\n }\n if (proto.sources) {\n m.sources = proto.sources.map(SourceTableData.fromProto);\n }\n if (proto.totalSources) {\n m.totalSources = parseInt(proto.totalSources, 10);\n }\n if (proto.totalAcceptedSources) {\n m.totalAcceptedSources = parseInt(proto.totalAcceptedSources, 10);\n }\n if (proto.totalAccuracyGoodSources) {\n m.totalAccuracyGoodSources = parseInt(proto.totalAccuracyGoodSources, 10);\n }\n if (proto.totalManualSyncOnlySources) {\n m.totalManualSyncOnlySources = parseInt(proto.totalManualSyncOnlySources, 10);\n }\n if (proto.totalAccuracySources) {\n m.totalAccuracySources = parseInt(proto.totalAccuracySources, 10);\n }\n if (proto.totalPossibleErrors) {\n m.totalPossibleErrors = parseInt(proto.totalPossibleErrors, 10);\n }\n if (proto.totalNotFound) {\n m.totalNotFound = parseInt(proto.totalNotFound, 10);\n }\n if (proto.totalInProgressSources) {\n m.totalInProgressSources = parseInt(proto.totalInProgressSources, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.businessId !== 'undefined') {\n toReturn['businessId'] = this.businessId;\n }\n if (typeof this.lspActive !== 'undefined') {\n toReturn['lspActive'] = this.lspActive;\n }\n if (typeof this.ldActive !== 'undefined') {\n toReturn['ldActive'] = this.ldActive;\n }\n if (typeof this.provider !== 'undefined') {\n toReturn['provider'] = this.provider;\n }\n if (typeof this.scores !== 'undefined' && this.scores !== null) {\n toReturn['scores'] = 'toApiJson' in this.scores ? this.scores.toApiJson() : this.scores;\n }\n if (typeof this.anchorData !== 'undefined' && this.anchorData !== null) {\n toReturn['anchorData'] = 'toApiJson' in this.anchorData ? this.anchorData.toApiJson() : this.anchorData;\n }\n if (typeof this.sources !== 'undefined' && this.sources !== null) {\n toReturn['sources'] = 'toApiJson' in this.sources ? this.sources.toApiJson() : this.sources;\n }\n if (typeof this.totalSources !== 'undefined') {\n toReturn['totalSources'] = this.totalSources;\n }\n if (typeof this.totalAcceptedSources !== 'undefined') {\n toReturn['totalAcceptedSources'] = this.totalAcceptedSources;\n }\n if (typeof this.totalAccuracyGoodSources !== 'undefined') {\n toReturn['totalAccuracyGoodSources'] = this.totalAccuracyGoodSources;\n }\n if (typeof this.totalManualSyncOnlySources !== 'undefined') {\n toReturn['totalManualSyncOnlySources'] = this.totalManualSyncOnlySources;\n }\n if (typeof this.totalAccuracySources !== 'undefined') {\n toReturn['totalAccuracySources'] = this.totalAccuracySources;\n }\n if (typeof this.percentageAccuracyGoodSources !== 'undefined') {\n toReturn['percentageAccuracyGoodSources'] = this.percentageAccuracyGoodSources;\n }\n if (typeof this.totalPossibleErrors !== 'undefined') {\n toReturn['totalPossibleErrors'] = this.totalPossibleErrors;\n }\n if (typeof this.totalNotFound !== 'undefined') {\n toReturn['totalNotFound'] = this.totalNotFound;\n }\n if (typeof this.socialProfileId !== 'undefined') {\n toReturn['socialProfileId'] = this.socialProfileId;\n }\n if (typeof this.totalInProgressSources !== 'undefined') {\n toReturn['totalInProgressSources'] = this.totalInProgressSources;\n }\n if (typeof this.lspUpgradePathEnabled !== 'undefined') {\n toReturn['lspUpgradePathEnabled'] = this.lspUpgradePathEnabled;\n }\n if (typeof this.localSeoProUpgradePathEnabled !== 'undefined') {\n toReturn['localSeoProUpgradePathEnabled'] = this.localSeoProUpgradePathEnabled;\n }\n return toReturn;\n }\n}\nclass GetListingSyncProAddonIdRequest {\n static fromProto(proto) {\n let m = new GetListingSyncProAddonIdRequest();\n m = Object.assign(m, proto);\n if (proto.provider) {\n m.provider = enumStringToValue(ServiceProvider, proto.provider);\n }\n if (proto.billingFrequency) {\n m.billingFrequency = enumStringToValue(BillingFrequency, proto.billingFrequency);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.provider !== 'undefined') {\n toReturn['provider'] = this.provider;\n }\n if (typeof this.billingFrequency !== 'undefined') {\n toReturn['billingFrequency'] = this.billingFrequency;\n }\n return toReturn;\n }\n}\nclass GetListingSyncProAddonIdResponse {\n static fromProto(proto) {\n let m = new GetListingSyncProAddonIdResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.addonId !== 'undefined') {\n toReturn['addonId'] = this.addonId;\n }\n if (typeof this.preferencesOverriddenReasons !== 'undefined') {\n toReturn['preferencesOverriddenReasons'] = this.preferencesOverriddenReasons;\n }\n return toReturn;\n }\n}\nclass GetListingSyncProProviderSourcesDataRequest {\n static fromProto(proto) {\n let m = new GetListingSyncProProviderSourcesDataRequest();\n m = Object.assign(m, proto);\n if (proto.serviceProvider) {\n m.serviceProvider = enumStringToValue(ServiceProvider, proto.serviceProvider);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.serviceProvider !== 'undefined') {\n toReturn['serviceProvider'] = this.serviceProvider;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n return toReturn;\n }\n}\nclass GetListingSyncProProviderSourcesDataResponse {\n static fromProto(proto) {\n let m = new GetListingSyncProProviderSourcesDataResponse();\n m = Object.assign(m, proto);\n if (proto.sourceData) {\n m.sourceData = Object.keys(proto.sourceData).reduce((obj, k) => {\n obj[k] = ListingSyncProProviderSourceData.fromProto(proto.sourceData[k]);\n return obj;\n }, {});\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sourceData !== 'undefined' && this.sourceData !== null) {\n toReturn['sourceData'] = 'toApiJson' in this.sourceData ? this.sourceData.toApiJson() : this.sourceData;\n }\n return toReturn;\n }\n}\nclass GetProviderSourcesForBusinessRequest {\n static fromProto(proto) {\n let m = new GetProviderSourcesForBusinessRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.businessId !== 'undefined') {\n toReturn['businessId'] = this.businessId;\n }\n return toReturn;\n }\n}\nclass GetProviderSourcesForBusinessResponse {\n static fromProto(proto) {\n let m = new GetProviderSourcesForBusinessResponse();\n m = Object.assign(m, proto);\n if (proto.provider) {\n m.provider = enumStringToValue(ServiceProvider, proto.provider);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.provider !== 'undefined') {\n toReturn['provider'] = this.provider;\n }\n if (typeof this.sourceNames !== 'undefined') {\n toReturn['sourceNames'] = this.sourceNames;\n }\n return toReturn;\n }\n}\nclass GetScrapedSourceStatusesRequest {\n static fromProto(proto) {\n let m = new GetScrapedSourceStatusesRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.businessId !== 'undefined') {\n toReturn['businessId'] = this.businessId;\n }\n return toReturn;\n }\n}\nclass GetScrapedSourceStatusesResponse {\n static fromProto(proto) {\n let m = new GetScrapedSourceStatusesResponse();\n m = Object.assign(m, proto);\n if (proto.sourceStatuses) {\n m.sourceStatuses = proto.sourceStatuses.map(SourceStatus.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sourceStatuses !== 'undefined' && this.sourceStatuses !== null) {\n toReturn['sourceStatuses'] = 'toApiJson' in this.sourceStatuses ? this.sourceStatuses.toApiJson() : this.sourceStatuses;\n }\n return toReturn;\n }\n}\nclass GetSelectedSocialServicesRequest {\n static fromProto(proto) {\n let m = new GetSelectedSocialServicesRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.businessId !== 'undefined') {\n toReturn['businessId'] = this.businessId;\n }\n return toReturn;\n }\n}\nclass GetSelectedSocialServicesResponse {\n static fromProto(proto) {\n let m = new GetSelectedSocialServicesResponse();\n m = Object.assign(m, proto);\n if (proto.selectedServices) {\n m.selectedServices = proto.selectedServices.map(SelectedSocialService.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.selectedServices !== 'undefined' && this.selectedServices !== null) {\n toReturn['selectedServices'] = 'toApiJson' in this.selectedServices ? this.selectedServices.toApiJson() : this.selectedServices;\n }\n return toReturn;\n }\n}\nclass HistoricalCitationsDataPoint {\n static fromProto(proto) {\n let m = new HistoricalCitationsDataPoint();\n m = Object.assign(m, proto);\n if (proto.date) {\n m.date = new Date(proto.date);\n }\n if (proto.value) {\n m.value = parseInt(proto.value, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.date !== 'undefined' && this.date !== null) {\n toReturn['date'] = 'toApiJson' in this.date ? this.date.toApiJson() : this.date;\n }\n if (typeof this.value !== 'undefined') {\n toReturn['value'] = this.value;\n }\n return toReturn;\n }\n}\nclass HistoricalScore {\n static fromProto(proto) {\n let m = new HistoricalScore();\n m = Object.assign(m, proto);\n if (proto.score) {\n m.score = parseInt(proto.score, 10);\n }\n if (proto.timestamp) {\n m.timestamp = new Date(proto.timestamp);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.score !== 'undefined') {\n toReturn['score'] = this.score;\n }\n if (typeof this.timestamp !== 'undefined' && this.timestamp !== null) {\n toReturn['timestamp'] = 'toApiJson' in this.timestamp ? this.timestamp.toApiJson() : this.timestamp;\n }\n return toReturn;\n }\n}\nclass IsListingSyncProActiveRequest {\n static fromProto(proto) {\n let m = new IsListingSyncProActiveRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n return toReturn;\n }\n}\nclass IsListingSyncProActiveResponse {\n static fromProto(proto) {\n let m = new IsListingSyncProActiveResponse();\n m = Object.assign(m, proto);\n if (proto.provider) {\n m.provider = enumStringToValue(ServiceProvider, proto.provider);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.isActive !== 'undefined') {\n toReturn['isActive'] = this.isActive;\n }\n if (typeof this.addonId !== 'undefined') {\n toReturn['addonId'] = this.addonId;\n }\n if (typeof this.provider !== 'undefined') {\n toReturn['provider'] = this.provider;\n }\n return toReturn;\n }\n}\nclass ListListingSyncProAddonIdsRequest {\n static fromProto(proto) {\n let m = new ListListingSyncProAddonIdsRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n return toReturn;\n }\n}\nclass ListListingSyncProAddonIdsResponse {\n static fromProto(proto) {\n let m = new ListListingSyncProAddonIdsResponse();\n m = Object.assign(m, proto);\n if (proto.addonInfo) {\n m.addonInfo = Object.keys(proto.addonInfo).reduce((obj, k) => {\n obj[k] = ListListingSyncProAddonIdsResponseAddonInfo.fromProto(proto.addonInfo[k]);\n return obj;\n }, {});\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.addonIds !== 'undefined') {\n toReturn['addonIds'] = this.addonIds;\n }\n if (typeof this.addonInfo !== 'undefined' && this.addonInfo !== null) {\n toReturn['addonInfo'] = 'toApiJson' in this.addonInfo ? this.addonInfo.toApiJson() : this.addonInfo;\n }\n return toReturn;\n }\n}\nclass ListListingSyncProSourcesRequest {\n static fromProto(proto) {\n let m = new ListListingSyncProSourcesRequest();\n m = Object.assign(m, proto);\n if (proto.serviceProviders) {\n m.serviceProviders = proto.serviceProviders.map(v => enumStringToValue(ServiceProvider, v));\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.serviceProviders !== 'undefined') {\n toReturn['serviceProviders'] = this.serviceProviders;\n }\n return toReturn;\n }\n}\nclass ListListingSyncProSourcesResponse {\n static fromProto(proto) {\n let m = new ListListingSyncProSourcesResponse();\n m = Object.assign(m, proto);\n if (proto.sources) {\n m.sources = Object.keys(proto.sources).reduce((obj, k) => {\n obj[k] = SourceInfo.fromProto(proto.sources[k]);\n return obj;\n }, {});\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sources !== 'undefined' && this.sources !== null) {\n toReturn['sources'] = 'toApiJson' in this.sources ? this.sources.toApiJson() : this.sources;\n }\n return toReturn;\n }\n}\nclass ListStatusesByBusinessRequest {\n static fromProto(proto) {\n let m = new ListStatusesByBusinessRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.businessId !== 'undefined') {\n toReturn['businessId'] = this.businessId;\n }\n return toReturn;\n }\n}\nclass ListStatusesByBusinessResponse {\n static fromProto(proto) {\n let m = new ListStatusesByBusinessResponse();\n m = Object.assign(m, proto);\n if (proto.sourceStatuses) {\n m.sourceStatuses = proto.sourceStatuses.map(SourceStatus.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sourceStatuses !== 'undefined' && this.sourceStatuses !== null) {\n toReturn['sourceStatuses'] = 'toApiJson' in this.sourceStatuses ? this.sourceStatuses.toApiJson() : this.sourceStatuses;\n }\n return toReturn;\n }\n}\nclass ListStatusesByPartnerRequest {\n static fromProto(proto) {\n let m = new ListStatusesByPartnerRequest();\n m = Object.assign(m, proto);\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n if (proto.filters) {\n m.filters = AccountFilters.fromProto(proto.filters);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n if (typeof this.searchTerm !== 'undefined') {\n toReturn['searchTerm'] = this.searchTerm;\n }\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n return toReturn;\n }\n}\nclass ListStatusesByPartnerResponse {\n static fromProto(proto) {\n let m = new ListStatusesByPartnerResponse();\n m = Object.assign(m, proto);\n if (proto.lspData) {\n m.lspData = proto.lspData.map(AccountListingStatuses.fromProto);\n }\n if (proto.pagingData) {\n m.pagingData = PagedResponseMetadata.fromProto(proto.pagingData);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.lspData !== 'undefined' && this.lspData !== null) {\n toReturn['lspData'] = 'toApiJson' in this.lspData ? this.lspData.toApiJson() : this.lspData;\n }\n if (typeof this.pagingData !== 'undefined' && this.pagingData !== null) {\n toReturn['pagingData'] = 'toApiJson' in this.pagingData ? this.pagingData.toApiJson() : this.pagingData;\n }\n return toReturn;\n }\n}\nclass ListingSyncProProviderSourceData {\n static fromProto(proto) {\n let m = new ListingSyncProProviderSourceData();\n m = Object.assign(m, proto);\n if (proto.type) {\n m.type = enumStringToValue(SiteType, proto.type);\n }\n if (proto.popularity) {\n m.popularity = parseInt(proto.popularity, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.icon !== 'undefined') {\n toReturn['icon'] = this.icon;\n }\n if (typeof this.type !== 'undefined') {\n toReturn['type'] = this.type;\n }\n if (typeof this.popularity !== 'undefined') {\n toReturn['popularity'] = this.popularity;\n }\n if (typeof this.whitelistedPartnerIds !== 'undefined') {\n toReturn['whitelistedPartnerIds'] = this.whitelistedPartnerIds;\n }\n return toReturn;\n }\n}\nclass ProcessListingSyncProMarketplaceActivationRequestOrderFormDataEntry {\n static fromProto(proto) {\n let m = new ProcessListingSyncProMarketplaceActivationRequestOrderFormDataEntry();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.key !== 'undefined') {\n toReturn['key'] = this.key;\n }\n if (typeof this.value !== 'undefined') {\n toReturn['value'] = this.value;\n }\n return toReturn;\n }\n}\nclass PagedRequestOptions {\n static fromProto(proto) {\n let m = new PagedRequestOptions();\n m = Object.assign(m, proto);\n if (proto.pageSize) {\n m.pageSize = parseInt(proto.pageSize, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.cursor !== 'undefined') {\n toReturn['cursor'] = this.cursor;\n }\n if (typeof this.pageSize !== 'undefined') {\n toReturn['pageSize'] = this.pageSize;\n }\n return toReturn;\n }\n}\nclass PagedResponseMetadata {\n static fromProto(proto) {\n let m = new PagedResponseMetadata();\n m = Object.assign(m, proto);\n if (proto.totalResults) {\n m.totalResults = parseInt(proto.totalResults, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.nextCursor !== 'undefined') {\n toReturn['nextCursor'] = this.nextCursor;\n }\n if (typeof this.hasMore !== 'undefined') {\n toReturn['hasMore'] = this.hasMore;\n }\n if (typeof this.totalResults !== 'undefined') {\n toReturn['totalResults'] = this.totalResults;\n }\n return toReturn;\n }\n}\nclass ProcessListingSyncProMarketplaceActivationRequest {\n static fromProto(proto) {\n let m = new ProcessListingSyncProMarketplaceActivationRequest();\n m = Object.assign(m, proto);\n if (proto.orderFormData) {\n m.orderFormData = Object.keys(proto.orderFormData).reduce((obj, k) => {\n obj[k] = proto.orderFormData[k];\n return obj;\n }, {});\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.addonId !== 'undefined') {\n toReturn['addonId'] = this.addonId;\n }\n if (typeof this.activationId !== 'undefined') {\n toReturn['activationId'] = this.activationId;\n }\n if (typeof this.orderFormData !== 'undefined' && this.orderFormData !== null) {\n toReturn['orderFormData'] = 'toApiJson' in this.orderFormData ? this.orderFormData.toApiJson() : this.orderFormData;\n }\n if (typeof this.dryRun !== 'undefined') {\n toReturn['dryRun'] = this.dryRun;\n }\n return toReturn;\n }\n}\nclass SourceInfoProviderSpecificIdsEntry {\n static fromProto(proto) {\n let m = new SourceInfoProviderSpecificIdsEntry();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.key !== 'undefined') {\n toReturn['key'] = this.key;\n }\n if (typeof this.value !== 'undefined') {\n toReturn['value'] = this.value;\n }\n return toReturn;\n }\n}\nclass ScoreData {\n static fromProto(proto) {\n let m = new ScoreData();\n m = Object.assign(m, proto);\n if (proto.totalScore) {\n m.totalScore = parseInt(proto.totalScore, 10);\n }\n if (proto.maxListingScore) {\n m.maxListingScore = parseInt(proto.maxListingScore, 10);\n }\n if (proto.listingScore) {\n m.listingScore = parseInt(proto.listingScore, 10);\n }\n if (proto.industryAverage) {\n m.industryAverage = parseInt(proto.industryAverage, 10);\n }\n if (proto.industryAveragePercentile) {\n m.industryAveragePercentile = parseInt(proto.industryAveragePercentile, 10);\n }\n if (proto.ninetyFifthPercentile) {\n m.ninetyFifthPercentile = parseInt(proto.ninetyFifthPercentile, 10);\n }\n if (proto.businessPercentile) {\n m.businessPercentile = parseInt(proto.businessPercentile, 10);\n }\n if (proto.initialBusinessPercentile) {\n m.initialBusinessPercentile = parseInt(proto.initialBusinessPercentile, 10);\n }\n if (proto.listingScoreHistory) {\n m.listingScoreHistory = proto.listingScoreHistory.map(HistoricalScore.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.totalScore !== 'undefined') {\n toReturn['totalScore'] = this.totalScore;\n }\n if (typeof this.maxListingScore !== 'undefined') {\n toReturn['maxListingScore'] = this.maxListingScore;\n }\n if (typeof this.listingScore !== 'undefined') {\n toReturn['listingScore'] = this.listingScore;\n }\n if (typeof this.industryAverage !== 'undefined') {\n toReturn['industryAverage'] = this.industryAverage;\n }\n if (typeof this.industryAveragePercentile !== 'undefined') {\n toReturn['industryAveragePercentile'] = this.industryAveragePercentile;\n }\n if (typeof this.ninetyFifthPercentile !== 'undefined') {\n toReturn['ninetyFifthPercentile'] = this.ninetyFifthPercentile;\n }\n if (typeof this.businessPercentile !== 'undefined') {\n toReturn['businessPercentile'] = this.businessPercentile;\n }\n if (typeof this.initialBusinessPercentile !== 'undefined') {\n toReturn['initialBusinessPercentile'] = this.initialBusinessPercentile;\n }\n if (typeof this.listingScoreHistory !== 'undefined' && this.listingScoreHistory !== null) {\n toReturn['listingScoreHistory'] = 'toApiJson' in this.listingScoreHistory ? this.listingScoreHistory.toApiJson() : this.listingScoreHistory;\n }\n return toReturn;\n }\n}\nclass SelectedSocialService {\n static fromProto(proto) {\n let m = new SelectedSocialService();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sourceId !== 'undefined') {\n toReturn['sourceId'] = this.sourceId;\n }\n if (typeof this.sourceName !== 'undefined') {\n toReturn['sourceName'] = this.sourceName;\n }\n if (typeof this.ssid !== 'undefined') {\n toReturn['ssid'] = this.ssid;\n }\n return toReturn;\n }\n}\nclass SetSelectedSocialServiceRequest {\n static fromProto(proto) {\n let m = new SetSelectedSocialServiceRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.businessId !== 'undefined') {\n toReturn['businessId'] = this.businessId;\n }\n if (typeof this.ssid !== 'undefined') {\n toReturn['ssid'] = this.ssid;\n }\n if (typeof this.sourceId !== 'undefined') {\n toReturn['sourceId'] = this.sourceId;\n }\n if (typeof this.sourceName !== 'undefined') {\n toReturn['sourceName'] = this.sourceName;\n }\n return toReturn;\n }\n}\nclass SetSelectedSocialServiceResponse {\n static fromProto(proto) {\n let m = new SetSelectedSocialServiceResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.errorMsg !== 'undefined') {\n toReturn['errorMsg'] = this.errorMsg;\n }\n if (typeof this.successful !== 'undefined') {\n toReturn['successful'] = this.successful;\n }\n return toReturn;\n }\n}\nclass SourceAccuracy {\n static fromProto(proto) {\n let m = new SourceAccuracy();\n m = Object.assign(m, proto);\n if (proto.anchorData) {\n m.anchorData = AnchorData.fromProto(proto.anchorData);\n }\n if (proto.anchorDataMatches) {\n m.anchorDataMatches = AnchorDataMatches.fromProto(proto.anchorDataMatches);\n }\n if (proto.status) {\n m.status = enumStringToValue(AccuracyStatus, proto.status);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.anchorData !== 'undefined' && this.anchorData !== null) {\n toReturn['anchorData'] = 'toApiJson' in this.anchorData ? this.anchorData.toApiJson() : this.anchorData;\n }\n if (typeof this.anchorDataMatches !== 'undefined' && this.anchorDataMatches !== null) {\n toReturn['anchorDataMatches'] = 'toApiJson' in this.anchorDataMatches ? this.anchorDataMatches.toApiJson() : this.anchorDataMatches;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n return toReturn;\n }\n}\nclass SourceData {\n static fromProto(proto) {\n let m = new SourceData();\n m = Object.assign(m, proto);\n if (proto.syncedSources) {\n m.syncedSources = parseInt(proto.syncedSources, 10);\n }\n if (proto.totalSources) {\n m.totalSources = parseInt(proto.totalSources, 10);\n }\n if (proto.errors) {\n m.errors = proto.errors.map(v => enumStringToValue(ErrorCode, v));\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.syncedSources !== 'undefined') {\n toReturn['syncedSources'] = this.syncedSources;\n }\n if (typeof this.totalSources !== 'undefined') {\n toReturn['totalSources'] = this.totalSources;\n }\n if (typeof this.errors !== 'undefined') {\n toReturn['errors'] = this.errors;\n }\n return toReturn;\n }\n}\nclass GetListingSyncProProviderSourcesDataResponseSourceDataEntry {\n static fromProto(proto) {\n let m = new GetListingSyncProProviderSourcesDataResponseSourceDataEntry();\n m = Object.assign(m, proto);\n if (proto.value) {\n m.value = ListingSyncProProviderSourceData.fromProto(proto.value);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.key !== 'undefined') {\n toReturn['key'] = this.key;\n }\n if (typeof this.value !== 'undefined' && this.value !== null) {\n toReturn['value'] = 'toApiJson' in this.value ? this.value.toApiJson() : this.value;\n }\n return toReturn;\n }\n}\nclass SourceInfo {\n static fromProto(proto) {\n let m = new SourceInfo();\n m = Object.assign(m, proto);\n if (proto.sourceId) {\n m.sourceId = parseInt(proto.sourceId, 10);\n }\n if (proto.serviceProviders) {\n m.serviceProviders = proto.serviceProviders.map(v => enumStringToValue(ServiceProvider, v));\n }\n if (proto.providerSpecificIds) {\n m.providerSpecificIds = Object.keys(proto.providerSpecificIds).reduce((obj, k) => {\n obj[k] = proto.providerSpecificIds[k];\n return obj;\n }, {});\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sourceId !== 'undefined') {\n toReturn['sourceId'] = this.sourceId;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.serviceProviders !== 'undefined') {\n toReturn['serviceProviders'] = this.serviceProviders;\n }\n if (typeof this.providerSpecificIds !== 'undefined' && this.providerSpecificIds !== null) {\n toReturn['providerSpecificIds'] = 'toApiJson' in this.providerSpecificIds ? this.providerSpecificIds.toApiJson() : this.providerSpecificIds;\n }\n return toReturn;\n }\n}\nclass SourceStatus {\n static fromProto(proto) {\n let m = new SourceStatus();\n m = Object.assign(m, proto);\n if (proto.statusCode) {\n m.statusCode = enumStringToValue(StatusCode, proto.statusCode);\n }\n if (proto.errors) {\n m.errors = proto.errors.map(Errors.fromProto);\n }\n if (proto.warnings) {\n m.warnings = proto.warnings.map(Errors.fromProto);\n }\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.source !== 'undefined') {\n toReturn['source'] = this.source;\n }\n if (typeof this.statusCode !== 'undefined') {\n toReturn['statusCode'] = this.statusCode;\n }\n if (typeof this.errors !== 'undefined' && this.errors !== null) {\n toReturn['errors'] = 'toApiJson' in this.errors ? this.errors.toApiJson() : this.errors;\n }\n if (typeof this.url !== 'undefined') {\n toReturn['url'] = this.url;\n }\n if (typeof this.warnings !== 'undefined' && this.warnings !== null) {\n toReturn['warnings'] = 'toApiJson' in this.warnings ? this.warnings.toApiJson() : this.warnings;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n return toReturn;\n }\n}\nclass SourceTableData {\n static fromProto(proto) {\n let m = new SourceTableData();\n m = Object.assign(m, proto);\n if (proto.popularity) {\n m.popularity = parseInt(proto.popularity, 10);\n }\n if (proto.type) {\n m.type = enumStringToValue(SiteType, proto.type);\n }\n if (proto.provider) {\n m.provider = enumStringToValue(ServiceProvider, proto.provider);\n }\n if (proto.sourceId) {\n m.sourceId = parseInt(proto.sourceId, 10);\n }\n if (proto.syncStatus) {\n m.syncStatus = enumStringToValue(StatusCode, proto.syncStatus);\n }\n if (proto.score) {\n m.score = parseInt(proto.score, 10);\n }\n if (proto.maxScore) {\n m.maxScore = parseInt(proto.maxScore, 10);\n }\n if (proto.errorDetails) {\n m.errorDetails = proto.errorDetails.map(Errors.fromProto);\n }\n if (proto.warningDetails) {\n m.warningDetails = proto.warningDetails.map(Errors.fromProto);\n }\n if (proto.accuracy) {\n m.accuracy = SourceAccuracy.fromProto(proto.accuracy);\n }\n if (proto.updated) {\n m.updated = new Date(proto.updated);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.icon !== 'undefined') {\n toReturn['icon'] = this.icon;\n }\n if (typeof this.popularity !== 'undefined') {\n toReturn['popularity'] = this.popularity;\n }\n if (typeof this.type !== 'undefined') {\n toReturn['type'] = this.type;\n }\n if (typeof this.providerSourceId !== 'undefined') {\n toReturn['providerSourceId'] = this.providerSourceId;\n }\n if (typeof this.provider !== 'undefined') {\n toReturn['provider'] = this.provider;\n }\n if (typeof this.sourceId !== 'undefined') {\n toReturn['sourceId'] = this.sourceId;\n }\n if (typeof this.isDirectlySubmittedSource !== 'undefined') {\n toReturn['isDirectlySubmittedSource'] = this.isDirectlySubmittedSource;\n }\n if (typeof this.isLdSource !== 'undefined') {\n toReturn['isLdSource'] = this.isLdSource;\n }\n if (typeof this.directSubmissionActive !== 'undefined') {\n toReturn['directSubmissionActive'] = this.directSubmissionActive;\n }\n if (typeof this.syncStatus !== 'undefined') {\n toReturn['syncStatus'] = this.syncStatus;\n }\n if (typeof this.score !== 'undefined') {\n toReturn['score'] = this.score;\n }\n if (typeof this.maxScore !== 'undefined') {\n toReturn['maxScore'] = this.maxScore;\n }\n if (typeof this.externalId !== 'undefined') {\n toReturn['externalId'] = this.externalId;\n }\n if (typeof this.url !== 'undefined') {\n toReturn['url'] = this.url;\n }\n if (typeof this.errorDetails !== 'undefined' && this.errorDetails !== null) {\n toReturn['errorDetails'] = 'toApiJson' in this.errorDetails ? this.errorDetails.toApiJson() : this.errorDetails;\n }\n if (typeof this.warningDetails !== 'undefined' && this.warningDetails !== null) {\n toReturn['warningDetails'] = 'toApiJson' in this.warningDetails ? this.warningDetails.toApiJson() : this.warningDetails;\n }\n if (typeof this.accuracy !== 'undefined' && this.accuracy !== null) {\n toReturn['accuracy'] = 'toApiJson' in this.accuracy ? this.accuracy.toApiJson() : this.accuracy;\n }\n if (typeof this.updated !== 'undefined' && this.updated !== null) {\n toReturn['updated'] = 'toApiJson' in this.updated ? this.updated.toApiJson() : this.updated;\n }\n if (typeof this.listingId !== 'undefined') {\n toReturn['listingId'] = this.listingId;\n }\n if (typeof this.connectLink !== 'undefined') {\n toReturn['connectLink'] = this.connectLink;\n }\n if (typeof this.disconnectLink !== 'undefined') {\n toReturn['disconnectLink'] = this.disconnectLink;\n }\n if (typeof this.ssid !== 'undefined') {\n toReturn['ssid'] = this.ssid;\n }\n if (typeof this.updateSyncLink !== 'undefined') {\n toReturn['updateSyncLink'] = this.updateSyncLink;\n }\n if (typeof this.selectedSocialService !== 'undefined') {\n toReturn['selectedSocialService'] = this.selectedSocialService;\n }\n if (typeof this.socialServiceName !== 'undefined') {\n toReturn['socialServiceName'] = this.socialServiceName;\n }\n if (typeof this.serviceType !== 'undefined') {\n toReturn['serviceType'] = this.serviceType;\n }\n if (typeof this.serviceUserId !== 'undefined') {\n toReturn['serviceUserId'] = this.serviceUserId;\n }\n if (typeof this.clientTags !== 'undefined') {\n toReturn['clientTags'] = this.clientTags;\n }\n if (typeof this.profileImageUrl !== 'undefined') {\n toReturn['profileImageUrl'] = this.profileImageUrl;\n }\n return toReturn;\n }\n}\nclass ListListingSyncProSourcesResponseSourcesEntry {\n static fromProto(proto) {\n let m = new ListListingSyncProSourcesResponseSourcesEntry();\n m = Object.assign(m, proto);\n if (proto.key) {\n m.key = parseInt(proto.key, 10);\n }\n if (proto.value) {\n m.value = SourceInfo.fromProto(proto.value);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.key !== 'undefined') {\n toReturn['key'] = this.key;\n }\n if (typeof this.value !== 'undefined' && this.value !== null) {\n toReturn['value'] = 'toApiJson' in this.value ? this.value.toApiJson() : this.value;\n }\n return toReturn;\n }\n}\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Objects Index.\n// *********************************\n\nconst environment = (window ? window['environment'] : 'prod') ?? 'prod';\nconst hostMap = {\n 'local': 'listing-sync-pro-api.vendasta-local.com',\n 'test': '',\n 'demo': 'listing-sync-pro-api-demo.apigateway.co',\n 'prod': 'listing-sync-pro-api-prod.apigateway.co',\n 'production': 'listing-sync-pro-api-prod.apigateway.co'\n};\nlet HostService = /*#__PURE__*/(() => {\n class HostService {\n get host() {\n return hostMap[environment.toLowerCase()];\n }\n get hostWithScheme() {\n return 'https://' + this.host;\n }\n }\n HostService.ɵfac = function HostService_Factory(t) {\n return new (t || HostService)();\n };\n HostService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: HostService,\n factory: HostService.ɵfac,\n providedIn: 'root'\n });\n return HostService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// API Service.\n// *********************************\nlet ListingSyncProApiService = /*#__PURE__*/(() => {\n class ListingSyncProApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n debouncedTriggerStatsCollection(r) {\n const request = r.toApiJson ? r : new CollectStatsRequest(r);\n return this.http.post(this._host + \"/listing_sync_pro.v1.ListingSyncProService/DebouncedTriggerStatsCollection\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n triggerStatsCollection(r) {\n const request = r.toApiJson ? r : new CollectStatsRequest(r);\n return this.http.post(this._host + \"/listing_sync_pro.v1.ListingSyncProService/TriggerStatsCollection\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n listStatusesByPartner(r) {\n const request = r.toApiJson ? r : new ListStatusesByPartnerRequest(r);\n return this.http.post(this._host + \"/listing_sync_pro.v1.ListingSyncProService/ListStatusesByPartner\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListStatusesByPartnerResponse.fromProto(resp)));\n }\n listStatusesByBusiness(r) {\n const request = r.toApiJson ? r : new ListStatusesByBusinessRequest(r);\n return this.http.post(this._host + \"/listing_sync_pro.v1.ListingSyncProService/ListStatusesByBusiness\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListStatusesByBusinessResponse.fromProto(resp)));\n }\n deleteStats(r) {\n const request = r.toApiJson ? r : new DeleteStatsRequest(r);\n return this.http.post(this._host + \"/listing_sync_pro.v1.ListingSyncProService/DeleteStats\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n createListingSyncProSource(r) {\n const request = r.toApiJson ? r : new CreateListingSyncProSourceRequest(r);\n return this.http.post(this._host + \"/listing_sync_pro.v1.ListingSyncProService/CreateListingSyncProSource\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CreateListingSyncProSourceResponse.fromProto(resp)));\n }\n listListingSyncProSources(r) {\n const request = r.toApiJson ? r : new ListListingSyncProSourcesRequest(r);\n return this.http.post(this._host + \"/listing_sync_pro.v1.ListingSyncProService/ListListingSyncProSources\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListListingSyncProSourcesResponse.fromProto(resp)));\n }\n getAvailableProvidersForPartner(r) {\n const request = r.toApiJson ? r : new GetAvailableProvidersForPartnerRequest(r);\n return this.http.post(this._host + \"/listing_sync_pro.v1.ListingSyncProService/GetAvailableProvidersForPartner\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetAvailableProvidersForPartnerResponse.fromProto(resp)));\n }\n listListingSyncProAddonIds(r) {\n const request = r.toApiJson ? r : new ListListingSyncProAddonIdsRequest(r);\n return this.http.post(this._host + \"/listing_sync_pro.v1.ListingSyncProService/ListListingSyncProAddonIds\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListListingSyncProAddonIdsResponse.fromProto(resp)));\n }\n activateListingSyncPro(r) {\n const request = r.toApiJson ? r : new ActivateListingSyncProRequest(r);\n return this.http.post(this._host + \"/listing_sync_pro.v1.ListingSyncProService/ActivateListingSyncPro\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n processListingSyncProMarketplaceActivation(r) {\n const request = r.toApiJson ? r : new ProcessListingSyncProMarketplaceActivationRequest(r);\n return this.http.post(this._host + \"/listing_sync_pro.v1.ListingSyncProService/ProcessListingSyncProMarketplaceActivation\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n deactivateListingSyncPro(r) {\n const request = r.toApiJson ? r : new DeactivateListingSyncProRequest(r);\n return this.http.post(this._host + \"/listing_sync_pro.v1.ListingSyncProService/DeactivateListingSyncPro\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n isListingSyncProActiveForAccount(r) {\n const request = r.toApiJson ? r : new IsListingSyncProActiveRequest(r);\n return this.http.post(this._host + \"/listing_sync_pro.v1.ListingSyncProService/IsListingSyncProActiveForAccount\", request.toApiJson(), this.apiOptions()).pipe(map(resp => IsListingSyncProActiveResponse.fromProto(resp)));\n }\n createListingSyncProProviderSourceData(r) {\n const request = r.toApiJson ? r : new CreateListingSyncProProviderSourceDataRequest(r);\n return this.http.post(this._host + \"/listing_sync_pro.v1.ListingSyncProService/CreateListingSyncProProviderSourceData\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getListingSyncProProviderSourcesData(r) {\n const request = r.toApiJson ? r : new GetListingSyncProProviderSourcesDataRequest(r);\n return this.http.post(this._host + \"/listing_sync_pro.v1.ListingSyncProService/GetListingSyncProProviderSourcesData\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetListingSyncProProviderSourcesDataResponse.fromProto(resp)));\n }\n deleteListingSyncProProviderSource(r) {\n const request = r.toApiJson ? r : new DeleteListingSyncProProviderSourceRequest(r);\n return this.http.post(this._host + \"/listing_sync_pro.v1.ListingSyncProService/DeleteListingSyncProProviderSource\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getListingSyncProAddonId(r) {\n const request = r.toApiJson ? r : new GetListingSyncProAddonIdRequest(r);\n return this.http.post(this._host + \"/listing_sync_pro.v1.ListingSyncProService/GetListingSyncProAddonId\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetListingSyncProAddonIdResponse.fromProto(resp)));\n }\n getScrapedSourceStatuses(r) {\n const request = r.toApiJson ? r : new GetScrapedSourceStatusesRequest(r);\n return this.http.post(this._host + \"/listing_sync_pro.v1.ListingSyncProService/GetScrapedSourceStatuses\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetScrapedSourceStatusesResponse.fromProto(resp)));\n }\n getListingData(r) {\n const request = r.toApiJson ? r : new GetListingDataRequest(r);\n return this.http.post(this._host + \"/listing_sync_pro.v1.ListingSyncProService/GetListingData\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetListingDataResponse.fromProto(resp)));\n }\n getListingDataForATimePeriod(r) {\n const request = r.toApiJson ? r : new GetListingDataForATimePeriodRequest(r);\n return this.http.post(this._host + \"/listing_sync_pro.v1.ListingSyncProService/GetListingDataForATimePeriod\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetListingDataResponse.fromProto(resp)));\n }\n setSelectedSocialService(r) {\n const request = r.toApiJson ? r : new SetSelectedSocialServiceRequest(r);\n return this.http.post(this._host + \"/listing_sync_pro.v1.ListingSyncProService/SetSelectedSocialService\", request.toApiJson(), this.apiOptions()).pipe(map(resp => SetSelectedSocialServiceResponse.fromProto(resp)));\n }\n getSelectedSocialServices(r) {\n const request = r.toApiJson ? r : new GetSelectedSocialServicesRequest(r);\n return this.http.post(this._host + \"/listing_sync_pro.v1.ListingSyncProService/GetSelectedSocialServices\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetSelectedSocialServicesResponse.fromProto(resp)));\n }\n getCitationsData(r) {\n const request = r.toApiJson ? r : new GetCitationDataRequest(r);\n return this.http.post(this._host + \"/listing_sync_pro.v1.ListingSyncProService/GetCitationsData\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetCitationDataResponse.fromProto(resp)));\n }\n getRawProviderSourcesForBusiness(r) {\n const request = r.toApiJson ? r : new GetProviderSourcesForBusinessRequest(r);\n return this.http.post(this._host + \"/listing_sync_pro.v1.ListingSyncProService/GetRawProviderSourcesForBusiness\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetProviderSourcesForBusinessResponse.fromProto(resp)));\n }\n }\n ListingSyncProApiService.ɵfac = function ListingSyncProApiService_Factory(t) {\n return new (t || ListingSyncProApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n ListingSyncProApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ListingSyncProApiService,\n factory: ListingSyncProApiService.ɵfac,\n providedIn: 'root'\n });\n return ListingSyncProApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Index.\n// *********************************\nlet ListingSyncProService = /*#__PURE__*/(() => {\n class ListingSyncProService {\n constructor(_api) {\n this._api = _api;\n }\n getListingSyncProAddonIds() {\n return this._api.listListingSyncProAddonIds({}).pipe(map(response => response.addonIds), catchError(() => {\n return of([]);\n }));\n }\n getListingSyncProAddonInfo() {\n return this._api.listListingSyncProAddonIds({}).pipe(map(response => response.addonInfo), catchError(() => {\n return of({});\n }));\n }\n getListingSyncProProviderSourcesData(provider, partnerId) {\n if (typeof provider === 'string') {\n provider = this.convertServiceProvider(provider);\n }\n return this._api.getListingSyncProProviderSourcesData({\n serviceProvider: provider,\n partnerId: partnerId\n }).pipe(map(response => response.sourceData), catchError(() => {\n return of({});\n }));\n }\n getListingSyncStatusesByBusinessID(businessId) {\n return this._api.listStatusesByBusiness({\n businessId\n }).pipe(map(response => response.sourceStatuses), catchError(() => {\n return of([]);\n }));\n }\n getListingSyncSources() {\n return this._api.listListingSyncProSources({\n serviceProviders: [ServiceProvider.SERVICE_PROVIDER_PROVIDER_0, ServiceProvider.SERVICE_PROVIDER_PROVIDER_1]\n }).pipe(map(response => response.sources), catchError(() => {\n return of({});\n }));\n }\n getScrapedSourceStatuses(businessId) {\n return this._api.getScrapedSourceStatuses({\n businessId\n }).pipe(map(response => response.sourceStatuses), catchError(() => {\n return of([]);\n }));\n }\n getListingData(businessId) {\n return this._api.getListingData({\n businessId\n }).pipe(map(response => response), catchError(() => {\n return of(new GetListingDataResponse({}));\n }));\n }\n listStatusesByPartner(partnerId, pagingOptions, searchTerm, filters) {\n return this._api.listStatusesByPartner({\n partnerId,\n pagingOptions,\n searchTerm,\n filters\n }).pipe(map(response => response), catchError(() => {\n return of(new ListStatusesByPartnerResponse({}));\n }));\n }\n convertServiceProvider(provider) {\n if (provider === 'PROVIDER_0') {\n return ServiceProvider.SERVICE_PROVIDER_PROVIDER_0;\n } else if (provider === 'PROVIDER_1') {\n return ServiceProvider.SERVICE_PROVIDER_PROVIDER_1;\n } else {\n return ServiceProvider.SERVICE_PROVIDER_UNSPECIFIED;\n }\n }\n }\n ListingSyncProService.ɵfac = function ListingSyncProService_Factory(t) {\n return new (t || ListingSyncProService)(i0.ɵɵinject(ListingSyncProApiService));\n };\n ListingSyncProService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ListingSyncProService,\n factory: ListingSyncProService.ɵfac,\n providedIn: 'root'\n });\n return ListingSyncProService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Access, AccountFilters, AccountListingStatuses, AccuracyStatus, ActivateListingSyncProRequest, AnchorData, AnchorDataMatches, BillingFrequency, Citation, CitationListing, CollectStatsRequest, CreateListingSyncProProviderSourceDataRequest, CreateListingSyncProSourceRequest, CreateListingSyncProSourceResponse, DeactivateListingSyncProRequest, DeleteListingSyncProProviderSourceRequest, DeleteStatsRequest, ErrorCode, Errors, GetAvailableProvidersForPartnerRequest, GetAvailableProvidersForPartnerResponse, GetCitationDataRequest, GetCitationDataResponse, GetListingDataForATimePeriodRequest, GetListingDataRequest, GetListingDataResponse, GetListingSyncProAddonIdRequest, GetListingSyncProAddonIdResponse, GetListingSyncProProviderSourcesDataRequest, GetListingSyncProProviderSourcesDataResponse, GetListingSyncProProviderSourcesDataResponseSourceDataEntry, GetProviderSourcesForBusinessRequest, GetProviderSourcesForBusinessResponse, GetScrapedSourceStatusesRequest, GetScrapedSourceStatusesResponse, GetSelectedSocialServicesRequest, GetSelectedSocialServicesResponse, HistoricalCitationsDataPoint, HistoricalScore, HostService, IsListingSyncProActiveRequest, IsListingSyncProActiveResponse, ListListingSyncProAddonIdsRequest, ListListingSyncProAddonIdsResponse, ListListingSyncProAddonIdsResponseAddonInfo, ListListingSyncProAddonIdsResponseAddonInfoBillingFrequency, ListListingSyncProAddonIdsResponseAddonInfoEntry, ListListingSyncProSourcesRequest, ListListingSyncProSourcesResponse, ListListingSyncProSourcesResponseSourcesEntry, ListStatusesByBusinessRequest, ListStatusesByBusinessResponse, ListStatusesByPartnerRequest, ListStatusesByPartnerResponse, ListingSyncProApiService, ListingSyncProProviderSourceData, ListingSyncProService, PagedRequestOptions, PagedResponseMetadata, ProcessListingSyncProMarketplaceActivationRequest, ProcessListingSyncProMarketplaceActivationRequestOrderFormDataEntry, ScoreData, SelectedSocialService, ServiceProvider, SetSelectedSocialServiceRequest, SetSelectedSocialServiceResponse, SiteType, SourceAccuracy, SourceData, SourceInfo, SourceInfoProviderSpecificIdsEntry, SourceStatus, SourceTableData, StatusCode, SyncingStatus };\n","import { LocalSearchData, SEOData, SocialService } from '@vendasta/listing-products';\nimport { formatNumber } from '@angular/common';\nimport { DateRange } from '@vendasta/galaxy/utility/date-utils';\nimport {\n ErrorCode,\n ErrorsInterface,\n ScoreData,\n SourceAccuracy,\n SourceTableData,\n StatusCode,\n} from '@vendasta/listing-sync-pro';\nimport { uniqBy } from 'lodash';\n\nexport const SEARCH_RADIUS_LOCAL = 1.25;\nexport const SEARCH_RADIUS_SMALL_CITY = 2.5;\nexport const SEARCH_RADIUS_BIG_CITY = 5;\nexport const SEARCH_RADIUS_XL_CITY = 10;\n\nexport const AGIDTOKEN = 'AGID';\nexport const IS_IMPERSONATING_TOKEN = 'IS_IMPERSONATING';\nexport const DEMO_PAID_EDITION = 'EDITION-MXWLTQPN';\nexport const PROD_PAID_EDITION = 'EDITION-CFH5CKHC';\nexport const APP_ID = 'MS';\n\nexport const SEODataSearchRadiusZoomValue = {\n [SEARCH_RADIUS_LOCAL]: 12.6,\n [SEARCH_RADIUS_SMALL_CITY]: 11.55,\n [SEARCH_RADIUS_BIG_CITY]: 10.6,\n [SEARCH_RADIUS_XL_CITY]: 9.7,\n};\n\nexport const SEODataSearchRadiusTypes = [\n SEARCH_RADIUS_LOCAL,\n SEARCH_RADIUS_SMALL_CITY,\n SEARCH_RADIUS_BIG_CITY,\n SEARCH_RADIUS_XL_CITY,\n] as const;\n\nexport type SeoDataSearchRadiusType = (typeof SEODataSearchRadiusTypes)[number];\n\nexport const MaxRank = 50;\nexport const MaxMapsRank = 20;\n\nexport interface SEODataPoint {\n date: Date;\n value: number;\n}\n\nexport interface SeoDataKeywordMetrics {\n dateRange?: DateRange;\n keyword?: string;\n localRank?: SEODataPoint[];\n organicRank?: SEODataPoint[];\n}\n\nexport interface SeoDataSettings {\n businessId?: string;\n localSearchRadius?: number;\n favoriteKeywords?: string[];\n}\n\nexport interface SEODataPeriods {\n current: SEOTableData;\n previous: SEOTableData;\n}\n\nexport interface Stat {\n value: string;\n rawValue: number;\n}\n\nexport class SEOTableData {\n keyword: Stat;\n date: Date;\n localRank: Stat;\n organicRank: Stat;\n localStartedAt: Stat;\n organicStartedAt: Stat;\n difficulty: Stat;\n searchVolume: Stat;\n localSearches: LocalSearchData[];\n metrics?: SeoDataKeywordMetrics;\n searchRadius?: number;\n isFavorite?: boolean;\n inProgress?: boolean;\n\n constructor(keyword: string, data: SEOData, metrics: SeoDataKeywordMetrics, settings?: SeoDataSettings) {\n if (!data) {\n this.inProgress = true;\n }\n\n this.keyword = { value: keyword, rawValue: 0 };\n this.date = data?.date;\n this.localRank = {\n value: convertRank(data?.localRank, this.inProgress),\n rawValue: data?.localRank,\n };\n this.organicRank = {\n value: convertRank(data?.organicRank, this.inProgress),\n rawValue: data?.organicRank,\n };\n this.difficulty = {\n value: convertDifficulty(data?.difficulty),\n rawValue: data?.difficulty,\n };\n this.searchVolume = {\n value: convertNumber(data?.searchVolume),\n rawValue: data?.searchVolume,\n };\n this.localSearches = data?.localSearches;\n this.searchRadius = data?.searchRadius;\n this.metrics = metrics;\n\n this.localStartedAt = {\n value: convertRank(0, this.inProgress),\n rawValue: MaxMapsRank,\n };\n this.organicStartedAt = {\n value: convertRank(0, this.inProgress),\n rawValue: MaxRank,\n };\n if (metrics?.localRank.length > 0) {\n this.localStartedAt = {\n value: convertRank(metrics.localRank[0].value, this.inProgress),\n rawValue: metrics.localRank[0].value || MaxMapsRank,\n };\n }\n if (metrics?.organicRank.length > 0) {\n this.organicStartedAt = {\n value: convertRank(metrics.organicRank[0].value, this.inProgress),\n rawValue: metrics.organicRank[0].value || MaxRank,\n };\n }\n this.isFavorite = settings?.favoriteKeywords?.includes(data?.keyword);\n }\n}\n\nfunction convertDifficulty(value?: number): string {\n if (value === null || value === undefined || value === 0) {\n return 'N/A';\n }\n if (value < 33) {\n return 'Low';\n }\n if (value < 66) {\n return 'Medium';\n }\n return 'High';\n}\n\nfunction convertRank(value: number, inProgress: boolean): string {\n if (inProgress) {\n return '—';\n }\n if (value === null || value === undefined || value === 0) {\n return 'NR';\n }\n if (value > MaxRank) {\n return '50+';\n }\n return formatNumber(value, 'en-US', '1.0-2');\n}\n\nfunction convertNumber(value?: number): string {\n if (value === null || value === undefined || value === 0) {\n return 'N/A';\n }\n return formatNumber(value, 'en-US', '1.0-2');\n}\n\nexport const LocaleDateTickFormatting = (val: any) => {\n if (val instanceof Date) {\n let locale = 'en';\n if (localStorage) {\n locale = localStorage['locale'] || 'en';\n }\n return (val).toLocaleDateString(locale, { month: 'short', day: 'numeric' });\n }\n return val;\n};\n\nexport const WholeNumberTickFormatting = (val: any) => {\n if (val % 1 === 0) {\n return val.toLocaleString();\n }\n return '';\n};\n\nexport interface SyncingProgressSummaryData {\n lspActive: boolean;\n totalSourcesCount: number;\n syncedSourcesCount: number;\n syncInProgressSourcesCount: number;\n notSyncingSourcesCount: number;\n}\n\nexport interface ListingsScoreSummaryData {\n listingScore: number;\n originalListingScore: number;\n industryAverageListingsScore: number;\n ninetyFifthPercentile: number;\n totalAcceptedSources: number;\n totalSources: number;\n totalAccurate: number;\n totalPossibleErrors: number;\n totalNotFound: number;\n}\n\nexport function determineOriginalListingScore(scoreData: ScoreData): number {\n if (!scoreData.listingScoreHistory || scoreData.listingScoreHistory.length <= 0) {\n return 0;\n }\n\n return scoreData.listingScoreHistory[0].score || 0;\n}\n\nexport enum MaterialIcons {\n DONE = 'done',\n SYNC = 'sync',\n SYNC_DISABLED = 'sync_disabled',\n SYNC_PROBLEM = 'sync_problem',\n VISIBILITY = 'visibility',\n WARNING = 'warning',\n LOCK = 'lock',\n}\n\nexport interface SyncingProgressSyncLegend {\n icon: MaterialIcons;\n name: string;\n description: string;\n}\n\nexport const SyncingProgressSyncLegendConfig: SyncingProgressSyncLegend[] = [\n {\n icon: MaterialIcons.DONE,\n name: 'LISTING_SYNC.SYNCING_PROGRESS_SUMMARY_CARD.SYNC_LEGENDS.SYNCED.NAME',\n description: 'LISTING_SYNC.SYNCING_PROGRESS_SUMMARY_CARD.SYNC_LEGENDS.SYNCED.DESCRIPTION',\n },\n {\n icon: MaterialIcons.DONE,\n name: 'LISTING_SYNC.SYNCING_PROGRESS_SUMMARY_CARD.SYNC_LEGENDS.SUBMITTED.NAME',\n description: 'LISTING_SYNC.SYNCING_PROGRESS_SUMMARY_CARD.SYNC_LEGENDS.SUBMITTED.DESCRIPTION',\n },\n {\n icon: MaterialIcons.SYNC_PROBLEM,\n name: 'LISTING_SYNC.SYNCING_PROGRESS_SUMMARY_CARD.SYNC_LEGENDS.PARTIAL_SYNC.NAME',\n description: 'LISTING_SYNC.SYNCING_PROGRESS_SUMMARY_CARD.SYNC_LEGENDS.PARTIAL_SYNC.DESCRIPTION',\n },\n {\n icon: MaterialIcons.SYNC,\n name: 'LISTING_SYNC.SYNCING_PROGRESS_SUMMARY_CARD.SYNC_LEGENDS.SYNCING.NAME',\n description: 'LISTING_SYNC.SYNCING_PROGRESS_SUMMARY_CARD.SYNC_LEGENDS.SYNCING.DESCRIPTION',\n },\n {\n icon: MaterialIcons.LOCK,\n name: 'LISTING_SYNC.SYNCING_PROGRESS_SUMMARY_CARD.SYNC_LEGENDS.CLAIMED.NAME',\n description: 'LISTING_SYNC.SYNCING_PROGRESS_SUMMARY_CARD.SYNC_LEGENDS.CLAIMED.DESCRIPTION',\n },\n];\nconst ErrorMapping = new Map([\n [ErrorCode.ERROR_CODE_NAME, `NAME`],\n [ErrorCode.ERROR_CODE_STREET_ADDRESS, `STREET_ADDRESS`],\n [ErrorCode.ERROR_CODE_ZIP_CODE, `ZIP_CODE`],\n [ErrorCode.ERROR_CODE_PHONE_NUMBER, `PHONE_NUMBER`],\n [ErrorCode.ERROR_CODE_WHOLE_ADDRESS, `WHOLE_ADDRESS`],\n [ErrorCode.ERROR_CODE_HOURS_OF_OPERATION, `HOURS_OF_OPERATION`],\n [ErrorCode.ERROR_CODE_CATEGORIES, `CATEGORIES`],\n [ErrorCode.ERROR_CODE_DESCRIPTION_LONG, `DESCRIPTION_LONG`],\n [ErrorCode.ERROR_CODE_DESCRIPTION_SHORT, `DESCRIPTION_SHORT`],\n [ErrorCode.ERROR_CODE_EMAIL, `EMAIL`],\n [ErrorCode.ERROR_CODE_PAYMENT_OPTIONS, `PAYMENT_OPTIONS`],\n [ErrorCode.ERROR_CODE_PHOTOS, `PHOTOS`],\n [ErrorCode.ERROR_CODE_SOCIAL_PROFILES, `SOCIAL_PROFILES`],\n [ErrorCode.ERROR_CODE_WEBSITE, `WEBSITE`],\n [ErrorCode.ERROR_CODE_UNHANDLED_ERROR, `UNHANDLED_ERROR`],\n [ErrorCode.ERROR_CODE_EXISTING_RELATIONSHIP, `EXISTING_RELATIONSHIP`],\n [ErrorCode.ERROR_CODE_CONTACT_SOURCE, `CONTACT_SOURCE`],\n [ErrorCode.ERROR_CODE_CHAIN_LOCATION, `CHAIN_LOCATION`],\n [ErrorCode.ERROR_CODE_UNAVAILABLE_REASON, `UNAVAILABLE_REASON`],\n [ErrorCode.ERROR_CODE_CITY, `CITY`],\n [ErrorCode.ERROR_CODE_SERVICES, `SERVICES`],\n]);\n\n// For sync status errors\nexport function getErrorMessages(sourceStatus: SourceTableData): string[] {\n const uniqueErrors: ErrorsInterface[] = uniqBy(sourceStatus.errorDetails, 'errorCode');\n return uniqueErrors\n .map((error: ErrorsInterface) => ErrorMapping.get(error.errorCode))\n .filter((errorValue: string) => errorValue !== undefined)\n .map((key: string) => `LISTING_SYNC.LSP_ADDON.ERROR_CODE.${key}`);\n}\n\nexport function getFieldsWithWarnings(sourceStatus: SourceTableData): string[] {\n const uniqueErrors: ErrorsInterface[] = uniqBy(sourceStatus.warningDetails, 'errorCode');\n return uniqueErrors\n .filter(\n (error: ErrorsInterface) =>\n [\n ErrorCode.ERROR_CODE_NAME,\n ErrorCode.ERROR_CODE_STREET_ADDRESS,\n ErrorCode.ERROR_CODE_ZIP_CODE,\n ErrorCode.ERROR_CODE_PHONE_NUMBER,\n ErrorCode.ERROR_CODE_WHOLE_ADDRESS,\n ErrorCode.ERROR_CODE_CATEGORIES,\n ErrorCode.ERROR_CODE_WEBSITE,\n ErrorCode.ERROR_CODE_HOURS_OF_OPERATION,\n ErrorCode.ERROR_CODE_CONTACT_SOURCE,\n ErrorCode.ERROR_CODE_CITY,\n ].indexOf(error.errorCode) !== -1,\n )\n .map((warning: ErrorsInterface) => ErrorMapping.get(warning.errorCode))\n .filter((warningValue: string) => warningValue !== undefined)\n .map((key: string) => `LISTING_SYNC.LSP_ADDON.WARNING_CODE.${key}`)\n .sort((a: string, b: string) => (a < b ? -1 : 1));\n}\n\nexport interface SyncingDetails {\n sourceName: string;\n explanation: string;\n warnings: string[];\n errors: string[];\n}\n\nexport function syncingDetails(source: SourceTableData): SyncingDetails {\n const defaultData: SyncingDetails = {\n sourceName: source.name,\n explanation: '',\n warnings: [],\n errors: [],\n };\n if (source.syncStatus === StatusCode.STATUS_CODE_SYNCING_WITH_WARNINGS) {\n return {\n ...defaultData,\n explanation: 'LISTING_SYNC.LSP_ADDON.SYNCING_WITH_WARNINGS_MESSAGE',\n warnings: getFieldsWithWarnings(source),\n };\n } else if (source.syncStatus === StatusCode.STATUS_CODE_HAS_ERRORS) {\n return {\n ...defaultData,\n explanation: 'LISTING_SYNC.LSP_ADDON.ERRORS_MESSAGE',\n errors: getErrorMessages(source),\n };\n } else if (source.syncStatus === StatusCode.STATUS_CODE_IN_PROGRESS) {\n return { ...defaultData, explanation: 'LISTING_SYNC.LSP_ADDON.IN_PROGRESS_CHECK_BACK_SOON_MESSAGE' };\n }\n return defaultData;\n}\n\nexport interface SocialServiceSource {\n ssid?: string;\n name?: string;\n username?: string;\n profileImageUrl?: string;\n profileUrl?: string;\n serviceType?: string;\n socialProfileId?: string;\n isSyncing?: boolean;\n serviceId?: string;\n isDisabledFlag?: boolean;\n socialTokenBroken?: boolean;\n isVerified?: boolean;\n connectLink?: string;\n accuracy?: SourceAccuracy;\n score?: number;\n maxScore?: number;\n listingUrl?: string;\n sourceId?: number;\n additionalSocialServices?: SocialService[];\n clientTags?: string[];\n listingId?: string;\n accountGroupId?: string;\n sourceHasReporting?: boolean;\n syncingDetails?: SyncingDetails;\n lspSyncStatus?: StatusCode;\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { TranslateService } from '@ngx-translate/core';\nimport {\n AppPartnerSettingsService,\n Currency,\n Frequency,\n MarketplacePackagesApiService,\n PartnerMarketContainer,\n Price,\n Pricing,\n RetailPrice,\n} from '@vendasta/marketplace-packages';\nimport { DisplayPriceService } from '@vendasta/shared';\nimport { ProductAnalyticsService } from '@vendasta/product-analytics';\nimport { AppPartnerService, EditionChange, EditionUpgradeAction, UpgradeDialogContent } from '@galaxy/marketplace-apps';\nimport { combineLatest, Observable, of, throwError } from 'rxjs';\nimport { catchError, distinctUntilChanged, filter, map, shareReplay, switchMap } from 'rxjs/operators';\nimport { AppSettings } from '@vendasta/marketplace-apps';\nimport { AGIDTOKEN, IS_IMPERSONATING_TOKEN } from '../local-seo';\nimport { DomainService } from '@vendasta/domain';\nimport { AccountGroupApiService, GetMultiRequest, ProjectionFilter } from '@vendasta/account-group';\n\ninterface RedirectInfo {\n url: string;\n isImpersonation: boolean;\n}\n\nexport interface PartnerMarket {\n marketId: string;\n partnerId: string;\n}\n\nexport const appID = 'MS';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UpgradeCTADialogService {\n vbcHost$: Observable;\n partnerMarket$: Observable;\n public appSettings$: Observable;\n\n constructor(\n @Inject(AGIDTOKEN) private agid$: Observable,\n @Inject(IS_IMPERSONATING_TOKEN) private isImpersonation$: Observable,\n private translateService: TranslateService,\n private matSnackBar: MatSnackBar,\n private snowplowService: ProductAnalyticsService,\n private appPartnerService: AppPartnerService,\n private appPartnerSettingsService: AppPartnerSettingsService,\n private marketplacePackagesService: MarketplacePackagesApiService,\n private displayPriceService: DisplayPriceService,\n private domainService: DomainService,\n private accountGroupService: AccountGroupApiService,\n ) {\n this.partnerMarket$ = this.agid$.pipe(\n switchMap((businessID) =>\n businessID\n ? this.accountGroupService\n .getMulti(\n new GetMultiRequest({\n accountGroupIds: [businessID],\n projectionFilter: new ProjectionFilter({\n accountGroupExternalIdentifiers: true,\n }),\n }),\n )\n .pipe(\n map((resp) => {\n let partnerId = resp.accountGroups[0]?.accountGroup?.accountGroupExternalIdentifiers?.partnerId;\n const marketId = resp.accountGroups[0]?.accountGroup?.accountGroupExternalIdentifiers?.marketId;\n if (partnerId.toUpperCase() === 'DW1') {\n partnerId = 'DW';\n }\n if (partnerId.toUpperCase() === 'VEND') {\n partnerId = 'SRP';\n }\n return {\n partnerId: partnerId,\n marketId: marketId,\n };\n }),\n filter((val) => !!val),\n )\n : of(null),\n ),\n distinctUntilChanged(),\n shareReplay(1),\n );\n const defaultAppSettings = new AppSettings({\n editionChange: {\n editionUpgradeAction: EditionUpgradeAction.EDITION_UPGRADE_ACTION_CONTACT_SALES,\n },\n branding: { enabled: false },\n });\n\n this.appSettings$ = this.partnerMarket$.pipe(\n switchMap((pm) => {\n return this.appPartnerService.getAppSettings(appID, pm.partnerId, pm.marketId).pipe(\n catchError((err) => {\n if (err.status === 404) {\n // The selected market doesn't have auto-activation setting\n return of(defaultAppSettings);\n }\n return throwError(err);\n }),\n map((response: AppSettings) => {\n return response ? response : defaultAppSettings;\n }),\n );\n }),\n shareReplay(1),\n );\n\n this.vbcHost$ = this.partnerMarket$.pipe(\n switchMap((pm) =>\n this.domainService.getDomainByIdentifier(`/application/VBC/partner/${pm.partnerId}`).pipe(\n map((resp) => resp.primary.domain),\n shareReplay(1),\n ),\n ),\n );\n }\n\n getUpgradeText(retailPrice: RetailPrice, editionChangeDetails: EditionChange): string {\n if (!retailPrice) {\n return null;\n }\n\n if (retailPrice.price !== null && !(retailPrice.price < 0)) {\n // The price isn't `contact sales`.\n let upgradeSuffix = 'UPGRADE_NOW';\n if (\n !!editionChangeDetails &&\n editionChangeDetails.editionUpgradeAction === EditionUpgradeAction.EDITION_UPGRADE_ACTION_CUSTOM_ORDER &&\n !!editionChangeDetails.customUpgradePackageIds &&\n editionChangeDetails.customUpgradePackageIds.length > 1\n ) {\n upgradeSuffix = 'STARTING_AT';\n }\n return this.translateService.instant(`UPGRADE_DIALOG.UPGRADE_TEXT.${upgradeSuffix}`);\n }\n return null;\n }\n\n getFrequencyText(retailPrice: RetailPrice): string {\n if (!retailPrice) {\n return null;\n }\n\n if (!!retailPrice.price && retailPrice.price > 0) {\n const frequencyKey: string = Frequency[retailPrice.billingFrequency || Frequency.MONTHLY];\n return this.translateService.instant(`UPGRADE_DIALOG.FREQUENCY.${frequencyKey}`);\n }\n return null;\n }\n\n getEditionChangeDetails$(): Observable {\n return this.appSettings$.pipe(\n map((response: AppSettings) => (response?.editionChange ? response.editionChange : new EditionChange())),\n shareReplay(1),\n );\n }\n\n getAddonUpgradeDetails$(addonID: string): Observable {\n const defaultEditionChange = new EditionChange({\n editionUpgradeAction: EditionUpgradeAction.EDITION_UPGRADE_ACTION_CONTACT_SALES,\n });\n\n return this.partnerMarket$.pipe(\n switchMap((pm) => {\n return this.appPartnerService.getAppSettings(addonID, pm.partnerId, pm.marketId).pipe(\n catchError((err) => {\n if (err.status === 404) {\n // The selected market doesn't have auto-activation setting\n return of(defaultEditionChange);\n }\n return throwError(err);\n }),\n map((response: AppSettings) => {\n return response?.editionChange ? response.editionChange : defaultEditionChange;\n }),\n );\n }),\n shareReplay(1),\n );\n }\n\n getCustomUpgradeModalContent$(addonID?: string): Observable {\n return this.partnerMarket$.pipe(\n switchMap((pm) => {\n return this.appPartnerService.getUpgradeDialogContent(pm.partnerId, pm.marketId, addonID ? addonID : appID);\n }),\n catchError(() => of(null)),\n map((response) => (response ? response.upgradeDialogContent : null)),\n );\n }\n\n getFormattedRetailPrice$(retailPrice: RetailPrice): Observable {\n if (!retailPrice) {\n // The price is hidden.\n return of('');\n }\n const currencyKey: string = Currency[retailPrice.currency || Currency.USD];\n return this.displayPriceService.formatDisplayPrice(retailPrice.price, currencyKey, null, true, true, true, false);\n }\n\n getUpgradePrice$(\n pmConfig: PartnerMarket,\n addonID: string,\n editionChangeDetails: EditionChange,\n editionID?: string,\n ): Observable {\n if (\n !editionChangeDetails?.editionUpgradeAction ||\n editionChangeDetails.editionUpgradeAction === EditionUpgradeAction.EDITION_UPGRADE_ACTION_CREATE_ORDER\n ) {\n return this.getRetailPriceForAddonID$(addonID, pmConfig, editionID);\n } else if (editionChangeDetails.editionUpgradeAction === EditionUpgradeAction.EDITION_UPGRADE_ACTION_CUSTOM_ORDER) {\n if (editionChangeDetails.priceReferencePackageId) {\n return this.getMostFrequentPriceForPackage$(editionChangeDetails.priceReferencePackageId);\n }\n }\n return of(null);\n }\n\n getRetailPriceForAddonID$(\n addonID: string,\n partnerMarket: PartnerMarket,\n editionId?: string,\n ): Observable {\n const pmConfig = new PartnerMarketContainer({\n partnerId: partnerMarket.partnerId,\n marketId: partnerMarket.marketId,\n });\n return combineLatest([\n this.appPartnerSettingsService\n .getRetailPrice(addonID, pmConfig, editionId, true)\n .pipe(catchError(() => of(null))),\n this.appPartnerSettingsService\n .getRetailPrice(addonID, pmConfig, editionId, false)\n .pipe(catchError(() => of(null))),\n ]).pipe(map(([overridePrice, defaultPrice]: [RetailPrice, RetailPrice]) => overridePrice || defaultPrice));\n }\n\n getMostFrequentPriceForPackage$(packageID: string): Observable {\n return this.marketplacePackagesService\n .getMultiPackages({\n packageIds: [packageID],\n })\n .pipe(\n map((response) => {\n if (!!response.packageContainers && response.packageContainers.length > 0) {\n const container = response.packageContainers[0];\n return findMostFrequentPrice(container.package.pricing);\n } else {\n return {\n price: -1,\n } as RetailPrice;\n }\n }),\n );\n }\n\n buildBusinessCenterUpgradeRedirectInfo(\n item: UpgradeRedirectItem,\n upgradeAction: EditionUpgradeAction,\n ): Observable {\n return combineLatest([this.agid$, this.vbcHost$, this.isImpersonation$]).pipe(\n map(([agid, vbcHost, isImpersonation]) => {\n const nextURL = encodeURIComponent(window.location.href);\n const itemsJSON = encodeURIComponent(JSON.stringify([item]));\n const upgradePath =\n upgradeAction === EditionUpgradeAction.EDITION_UPGRADE_ACTION_CONTACT_SALES\n ? 'edition-upgrades'\n : 'orders/create/confirmation';\n const purchaseAddOnURL = `https://${vbcHost}/account/location/${agid}/${upgradePath}?items=${itemsJSON}&nextUrl=${nextURL}`;\n return {\n url: purchaseAddOnURL,\n isImpersonation: isImpersonation,\n };\n }),\n );\n }\n\n sendToVbc(redirectInfo: RedirectInfo) {\n if (redirectInfo.isImpersonation) {\n this.matSnackBar.open(this.translateService.instant('SHARED.UPGRADE_MODAL.IMPERSONATION_FORBIDDEN'), null, {\n duration: 2000,\n });\n } else {\n window.location.href = redirectInfo.url;\n }\n }\n}\n\nfunction normalizeFrequencyEnum(value: keyof typeof Frequency | Frequency): Frequency {\n if (typeof value === 'string') {\n return Frequency[value];\n }\n\n return value;\n}\n\nexport function findMostFrequentPrice(pricing: Pricing): RetailPrice {\n if (!pricing || !pricing.prices || pricing.prices.length <= 0) {\n return {\n price: -1,\n } as RetailPrice;\n }\n\n // Sort the prices by frequency.\n const mostFrequentPrice = pricing.prices.sort((a: Price, b: Price): number => {\n if (a.price === null || a.price < 0) {\n // The price is `contact sales`\n return 1;\n }\n\n const orderedFrequencies = [\n Frequency.DAILY,\n Frequency.WEEKLY,\n Frequency.MONTHLY,\n Frequency.YEARLY,\n Frequency.ONCE,\n Frequency.OTHER,\n ];\n a.frequency = normalizeFrequencyEnum(a.frequency || Frequency.MONTHLY);\n b.frequency = normalizeFrequencyEnum(b.frequency || Frequency.MONTHLY);\n const aIndex = orderedFrequencies.indexOf(a.frequency);\n const bIndex = orderedFrequencies.indexOf(b.frequency);\n return aIndex !== bIndex ? aIndex - bIndex : a.price - b.price;\n })[0]; // The first price is the most frequent.\n\n if (mostFrequentPrice.price === undefined) {\n mostFrequentPrice.price = 0;\n } else if (mostFrequentPrice.price === null) {\n mostFrequentPrice.price = -1;\n }\n\n return {\n price: mostFrequentPrice.price,\n billingFrequency: mostFrequentPrice.frequency,\n currency: pricing.currency,\n } as RetailPrice;\n}\n\n// Usage of this interface will differ based on upgrade type:\n// - Edition: appId and editionId\n// - Addon: appId and addonId\n// - Package: packageId\nexport interface UpgradeRedirectItem {\n appId?: string;\n editionId?: string;\n addonId?: string;\n packageId?: string;\n}\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { TranslateService } from '@ngx-translate/core';\nimport {\n AccountsService,\n AppAndAddonActivationStatus,\n ListAppAndAddonActivationStatusFilter,\n} from '@vendasta/accounts/legacy';\nimport { FeatureFlagMultiResponse, FeatureFlagService } from '@vendasta/businesses';\nimport { DateRange } from '@vendasta/galaxy/utility/date-utils';\nimport {\n AddonActivation,\n FieldMask,\n GetActiveSEOAddonsRequest,\n GetMultiListingProfileRequest,\n GetPartnerSettingsRequest,\n GetSEODataRequest,\n GetSEOSettingsRequest,\n GetSEOSuggestedKeywordsRequest,\n KeywordInfo,\n ListingProductsApiService,\n ListingProfile,\n ListingProfileApiService,\n RichData,\n SEOApiService,\n SEOData,\n SEOSettingsResponse,\n SEOSuggestedKeywordsApiService,\n SaveSEOSettingsRequest,\n UpdateListingProfileRequest,\n UpdateOperation,\n ProjectionFilter,\n GetOrGenerateSEOSuggestedKeywordsResponse,\n} from '@vendasta/listing-products';\nimport {\n Alignment,\n AlignmentPeriod,\n AlignmentPeriodCalendar,\n BusinessResourceId,\n FieldFilter,\n FieldFilterOperator,\n Filter,\n GroupBy,\n Measure,\n MeasureAggregate,\n MeasureAggregateOperator,\n MetricResult,\n MultiLocationAnalyticsService,\n PropertyType,\n QueryMetricsRequest,\n QueryMetricsResponse,\n ResourceId,\n} from '@vendasta/multi-location-analytics';\nimport dayjs from 'dayjs';\nimport { BehaviorSubject, EMPTY, Observable, combineLatest, of } from 'rxjs';\nimport { catchError, filter, map, shareReplay, switchMap, take, tap } from 'rxjs/operators';\nimport { AGIDTOKEN, DEMO_PAID_EDITION, PROD_PAID_EDITION, SEARCH_RADIUS_LOCAL } from '../../local-seo';\nimport { UpgradeCTADialogService } from '../../upgrade-cta-dialog/upgrade-cta-dialog.service';\n\nexport interface SEODataPoint {\n date: Date;\n value: number;\n}\n\nexport interface SeoDataKeywordMetrics {\n dateRange?: DateRange;\n keyword?: string;\n localRank?: SEODataPoint[];\n organicRank?: SEODataPoint[];\n}\n\nexport interface SeoDataSettings {\n businessId?: string;\n localSearchRadius?: number;\n favoriteKeywords?: string[];\n}\n\nconst ADDON_INCREMENT = 15;\n\nconst SEODATA_STATS: string[] = ['local_rank', 'organic_rank'];\nconst free_edition_keywords = 3;\nconst paid_edition_keywords = 15;\n\nexport const MaxRank = 50;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class KeywordTrackingService {\n public listingProfile$$: BehaviorSubject = new BehaviorSubject(null);\n public keywords$$: BehaviorSubject = new BehaviorSubject([]);\n public loading$$: BehaviorSubject = new BehaviorSubject(false);\n public keywordLimit$: Observable;\n public SEOData$: Observable;\n public keywordMetrics$: Observable;\n public seoSettings$: Observable;\n private canEditKeywords$$ = new BehaviorSubject(true);\n public canEditKeywords$ = this.canEditKeywords$$.asObservable();\n private defaultMarketID = 'all-markets-default-fallback';\n public suggestedKeywords$: Observable;\n private syncingKeywords$$: BehaviorSubject = new BehaviorSubject([]);\n public syncingKeywords$ = this.syncingKeywords$$.asObservable();\n\n public SEOSettings$$: BehaviorSubject = new BehaviorSubject({});\n private dateRange$$: BehaviorSubject = new BehaviorSubject(undefined);\n private addOns$: Observable;\n\n public missingGeoLocation$$: BehaviorSubject = new BehaviorSubject(false);\n public missingWebsite$$: BehaviorSubject = new BehaviorSubject(false);\n public suggestedKeywords$$: BehaviorSubject = new BehaviorSubject([]);\n\n public featureFlags$: Observable;\n\n public isLBFreeEdition$: Observable;\n\n constructor(\n private listingProfileService: ListingProfileApiService,\n private lpSEOService: SEOApiService,\n private mla: MultiLocationAnalyticsService,\n @Inject(AGIDTOKEN) private agid$: Observable,\n private snackBar: MatSnackBar,\n private translate: TranslateService,\n private listingProductsApiService: ListingProductsApiService,\n private seoSuggestedKeywordsService: SEOSuggestedKeywordsApiService,\n private accountsService: AccountsService,\n private upgradeDialogService: UpgradeCTADialogService,\n private featureFlagService: FeatureFlagService,\n ) {\n this.featureFlags$ = upgradeDialogService.partnerMarket$.pipe(\n switchMap((partnerMarket) =>\n featureFlagService.checkFeatureFlagsMulti(partnerMarket.partnerId, partnerMarket.marketId, [\n 'lb_seo_card_graphs',\n '10_2023_display_keyword_suggestions',\n ]),\n ),\n shareReplay(1),\n );\n\n this.isLBFreeEdition$ = this.agid$.pipe(\n switchMap((agid) => {\n const filters: ListAppAndAddonActivationStatusFilter = {\n appIds: ['MS'],\n statuses: [AppAndAddonActivationStatus.ACTIVATED],\n };\n return accountsService.listAppsAndAddonsActivationStatusesForBusiness(agid, filters).pipe(\n map((activations) => {\n if (activations?.length > 0) {\n switch (activations[0].editionId) {\n case DEMO_PAID_EDITION:\n return false;\n case PROD_PAID_EDITION:\n return false;\n }\n }\n return true;\n }),\n shareReplay(1),\n );\n }),\n );\n\n this.fetchBusinessData();\n this.fetchSEODataSettings();\n this.getProductSettings();\n this.getSuggestedKeywords();\n const seoDataResponse$ = combineLatest([\n this.agid$,\n this.keywords$$.asObservable(),\n this.dateRange$$.asObservable(),\n ]).pipe(\n filter(([agid, , dateRange]) => !!agid && !!dateRange),\n switchMap(([agid, keywords, dateRange]) => {\n return this.fetchSEOData(agid, keywords, dateRange).pipe(shareReplay(1));\n }),\n );\n\n this.SEOData$ = seoDataResponse$.pipe(map((res) => res.current));\n this.suggestedKeywords$ = this.suggestedKeywords$$.asObservable();\n\n this.keywordMetrics$ = combineLatest([\n this.upgradeDialogService.partnerMarket$,\n this.agid$,\n this.keywords$$.asObservable(),\n this.dateRange$$.asObservable(),\n ]).pipe(\n filter(([pm, agid, keywords, dateRange]) => !!pm && !!agid && !!keywords && !!dateRange),\n switchMap(([pm, agid, keywords, dateRange]) => {\n return this.fetchSEOQueryMetrics(pm.partnerId, agid, keywords, dateRange);\n }),\n shareReplay(1),\n );\n\n this.seoSettings$ = this.SEOSettings$$.asObservable();\n\n this.addOns$ = this.agid$.pipe(\n switchMap((agid) => {\n return this.lpSEOService\n .getActiveSeoAddons(\n new GetActiveSEOAddonsRequest({\n businessId: agid,\n }),\n )\n .pipe(\n map((res) => {\n return res?.activeAddons || [];\n }),\n );\n }),\n shareReplay(1),\n );\n\n this.keywordLimit$ = combineLatest([this.isLBFreeEdition$, this.addOns$]).pipe(\n map(([isFreeEdition, addOns]) => {\n let keywordLimit = free_edition_keywords;\n\n if (!isFreeEdition) {\n keywordLimit = paid_edition_keywords;\n }\n\n if (addOns?.length > 0) {\n // ActiveSEOAddons will always contain one element, with the count property\n // incremented based on the number of activations for that add on\n const limitIncrement = addOns[0].count * ADDON_INCREMENT;\n\n keywordLimit = keywordLimit + limitIncrement;\n }\n\n return keywordLimit;\n }),\n );\n }\n\n fetchSEODataSettings(): void {\n this.agid$\n .pipe(\n switchMap((agid) =>\n this.lpSEOService.getSeoSettings(new GetSEOSettingsRequest({ businessId: agid })).pipe(\n catchError((err: HttpErrorResponse) => {\n if (err.status !== 404) {\n const message = err.error?.message ? err.error.message : 'Unknown error';\n this.snackBar.open(message, '', { politeness: 'assertive', duration: 5000 });\n return EMPTY;\n }\n return of(\n new SEOSettingsResponse({\n businessId: agid,\n localSearchRadius: SEARCH_RADIUS_LOCAL,\n favoriteKeywords: [],\n }),\n );\n }),\n map((res) => {\n return new SEOSettingsResponse({\n businessId: res.businessId,\n localSearchRadius: res.localSearchRadius,\n favoriteKeywords: res.favoriteKeywords || [],\n });\n }),\n ),\n ),\n )\n .subscribe((seoSettings) => {\n this.SEOSettings$$.next(\n new SEOSettingsResponse({\n businessId: seoSettings.businessId || '',\n localSearchRadius: seoSettings.localSearchRadius || SEARCH_RADIUS_LOCAL,\n favoriteKeywords: seoSettings.favoriteKeywords || [],\n }),\n );\n });\n }\n\n fetchBusinessData(): void {\n this.loading$$.next(true);\n this.agid$\n .pipe(\n switchMap((agid) =>\n this.listingProfileService\n .getMulti(\n new GetMultiListingProfileRequest({\n businessIds: [agid],\n languageCode: this.translate.currentLang || this.translate.defaultLang,\n projectionFilter: new ProjectionFilter({\n richData: true,\n napData: true,\n }),\n }),\n )\n .pipe(\n catchError((err: HttpErrorResponse) => {\n const message = err.error?.message ? err.error.message : 'Unknown error';\n this.snackBar.open(message, '', { politeness: 'assertive', duration: 5000 });\n return EMPTY;\n }),\n map((res) => res.listingProfiles[0].listingProfile),\n ),\n ),\n )\n .subscribe((listingProfile) => {\n this.listingProfile$$.next(listingProfile);\n this.missingGeoLocation$$.next(\n !listingProfile?.napData?.location?.latitude && !listingProfile?.napData?.location?.longitude,\n );\n this.missingWebsite$$.next(!listingProfile?.napData?.website);\n const seoKeywords = listingProfile?.richData?.seoKeywords;\n const syncingKeywords = listingProfile?.richData?.syncingSeoKeywords;\n if (seoKeywords && seoKeywords.length > 0) {\n this.keywords$$.next(seoKeywords.filter((value) => value !== ''));\n } else {\n this.keywords$$.next([]);\n }\n if (syncingKeywords && syncingKeywords.length > 0) {\n this.syncingKeywords$$.next(syncingKeywords);\n } else {\n this.syncingKeywords$$.next([]);\n }\n this.loading$$.next(false);\n });\n }\n\n fetchSEOQueryMetrics(\n pid: string,\n businessId: string,\n keywords: string[],\n range: DateRange,\n ): Observable {\n this.loading$$.next(true);\n const metrics: SeoDataKeywordMetrics[] = [];\n const obsMetrics: Observable[] = [];\n keywords.forEach((keyword) => {\n const result = this.mla\n .queryMetrics(generateSEODataQueryMetricsRequest(pid, businessId, keyword, range.start, range.end))\n .pipe(\n catchError((err: HttpErrorResponse) => {\n const message = err.error?.message ? err.error.message : 'Unknown error';\n this.snackBar.open(message, '', { politeness: 'assertive', duration: 5000 });\n return EMPTY;\n }),\n map((resp: QueryMetricsResponse) => {\n const metricResults = this.mla.unwrapMetricsResponse(resp);\n return {\n dateRange: range,\n keyword: keyword,\n localRank: ParseRowsFromQueryMetricsResult(metricResults, SEODATA_STATS.indexOf('local_rank')),\n organicRank: ParseRowsFromQueryMetricsResult(metricResults, SEODATA_STATS.indexOf('organic_rank')),\n };\n }),\n );\n obsMetrics.push(result);\n });\n\n return combineLatest(obsMetrics).pipe(\n map((res) => {\n res.forEach((metric) => {\n metrics.push(metric);\n });\n return metrics;\n }),\n tap(() => {\n this.loading$$.next(false);\n }),\n );\n }\n\n getProductSettings(): void {\n this.loading$$.next(true);\n this.upgradeDialogService.partnerMarket$\n .pipe(\n switchMap((pm) =>\n this.listingProductsApiService.getProductSettings(\n new GetPartnerSettingsRequest({\n partnerId: pm.partnerId,\n marketId: this.defaultMarketID,\n }),\n ),\n ),\n take(1),\n catchError(() => {\n return of(null);\n }),\n )\n .subscribe((partnerSettings) => {\n this.setCanEditKeywords(partnerSettings?.canEditKeywords || false);\n this.loading$$.next(false);\n });\n }\n\n private fetchSEOData(\n businessID: string,\n keywords: string[],\n dateRange: DateRange,\n ): Observable<{ current: SEOData[]; previous: SEOData[] }> {\n return this.lpSEOService\n .getSeoData(\n new GetSEODataRequest({\n businessId: businessID,\n keywords: keywords,\n startDate: dateRange.start,\n endDate: dateRange.end,\n }),\n )\n .pipe(\n catchError((err: HttpErrorResponse) => {\n const message = err.error?.message ? err.error.message : 'Unknown error';\n this.snackBar.open(message, '', { politeness: 'assertive', duration: 5000 });\n return EMPTY;\n }),\n map((res) => {\n const data = formatSEOData(res?.data || []);\n const previousData = formatSEOData(res?.previousData || []);\n return { current: data, previous: previousData };\n }),\n );\n }\n\n getSuggestedKeywords(): void {\n this.loading$$.next(true);\n combineLatest([this.agid$, this.isLBFreeEdition$])\n .pipe(\n switchMap(([agid, isFree]) => {\n if (isFree) {\n return of(new GetOrGenerateSEOSuggestedKeywordsResponse({ keywordInfo: [] }));\n }\n return this.seoSuggestedKeywordsService\n .getOrGenerateSeoSuggestedKeywords(\n new GetSEOSuggestedKeywordsRequest({\n businessId: agid,\n }),\n )\n .pipe(\n catchError(() => {\n return of(new GetOrGenerateSEOSuggestedKeywordsResponse({ keywordInfo: [] }));\n }),\n );\n }),\n )\n .subscribe((suggestedkeywords) => {\n this.suggestedKeywords$$.next(\n suggestedkeywords.keywordInfo.map(\n (info) =>\n new KeywordInfo({\n keyword: info.keyword || '',\n competition: info.competition || 'LOW',\n competitionIndex: info.competitionIndex || 0,\n searchVolume: info.searchVolume || 0,\n lowTopOfPageBid: info.lowTopOfPageBid || 0,\n highTopOfPageBid: info.highTopOfPageBid || 0,\n }),\n ) || [],\n );\n this.loading$$.next(false);\n });\n }\n\n updateLocalSearchRadius(mapRadius: number): void {\n this.agid$\n .pipe(\n take(1),\n switchMap((agid) =>\n this.lpSEOService\n .saveSeoSettings(\n new SaveSEOSettingsRequest({\n businessId: agid,\n localSearchRadius: mapRadius,\n fieldMask: new FieldMask({\n paths: ['local_search_radius'],\n }),\n }),\n )\n .pipe(\n catchError((err: HttpErrorResponse) => {\n const message = err.error?.message ? err.error.message : 'Unknown error';\n this.snackBar.open(message, '', { politeness: 'assertive', duration: 5000 });\n return EMPTY;\n }),\n ),\n ),\n )\n .subscribe(() => {\n this.fetchSEODataSettings();\n });\n }\n\n updateFavoriteKeywords(keywords: string[]): void {\n keywords = keywords.filter((keyword) => !!keyword);\n this.agid$\n .pipe(\n take(1),\n switchMap((agid) =>\n this.lpSEOService\n .saveSeoSettings(\n new SaveSEOSettingsRequest({\n businessId: agid,\n favoriteKeywords: keywords,\n fieldMask: new FieldMask({\n paths: ['favorite_keywords'],\n }),\n }),\n )\n .pipe(\n catchError((err: HttpErrorResponse) => {\n const message = err.error?.message ? err.error.message : 'Unknown error';\n this.snackBar.open(message, '', { politeness: 'assertive', duration: 5000 });\n return EMPTY;\n }),\n ),\n ),\n )\n .subscribe(() => {\n this.snackBar.open(this.translate.instant('LOCAL_SEO.FAVORITES_UPDATED'), '', {\n politeness: 'polite',\n duration: 5000,\n });\n this.fetchSEODataSettings();\n });\n }\n\n updateKeywords(keywords: string[]): void {\n keywords = keywords.filter((keyword) => !!keyword);\n if (keywords.length === 0) {\n return;\n }\n this.agid$\n .pipe(\n take(1),\n switchMap((agid) =>\n this.listingProfileService\n .update(\n new UpdateListingProfileRequest({\n businessId: agid,\n updateOperations: [\n new UpdateOperation({\n richData: new RichData({\n seoKeywords: keywords,\n }),\n fieldMask: new FieldMask({\n paths: ['seo_keywords'],\n }),\n }),\n ],\n }),\n )\n .pipe(\n catchError((err: HttpErrorResponse) => {\n const message = err.error?.message ? err.error.message : 'Unknown error';\n this.snackBar.open(message, '', { politeness: 'assertive', duration: 5000 });\n return EMPTY;\n }),\n ),\n ),\n )\n .subscribe(() => {\n this.snackBar.open(this.translate.instant('LOCAL_SEO.KEYWORDS_UPDATED'), '', {\n politeness: 'polite',\n duration: 5000,\n });\n this.fetchBusinessData();\n this.fetchSEODataSettings();\n });\n }\n\n updateSyncingKeywords(syncingKeywords: string[]): void {\n syncingKeywords = syncingKeywords.filter((keyword) => !!keyword);\n this.agid$\n .pipe(\n take(1),\n switchMap((agid) =>\n this.listingProfileService\n .update(\n new UpdateListingProfileRequest({\n businessId: agid,\n updateOperations: [\n new UpdateOperation({\n richData: new RichData({\n syncingSeoKeywords: syncingKeywords,\n }),\n fieldMask: new FieldMask({\n paths: ['syncing_seo_keywords'],\n }),\n }),\n ],\n }),\n )\n .pipe(\n catchError((err: HttpErrorResponse) => {\n const message = err.error?.message ? err.error.message : 'Unknown error';\n this.snackBar.open(message, '', { politeness: 'assertive', duration: 5000 });\n return EMPTY;\n }),\n ),\n ),\n )\n .subscribe(() => {\n this.snackBar.open(this.translate.instant('LOCAL_SEO.SYNCING_KEYWORDS_UPDATED'), '', {\n politeness: 'polite',\n duration: 5000,\n });\n this.fetchBusinessData();\n this.fetchSEODataSettings();\n });\n }\n\n deleteKeyword(keyword: string): void {\n combineLatest([this.agid$, this.keywords$$.asObservable()])\n .pipe(\n take(1),\n switchMap(([agid, keywords]) => {\n const filteredKeywords = keywords.filter((k) => k !== keyword);\n return this.listingProfileService\n .update(\n new UpdateListingProfileRequest({\n businessId: agid,\n updateOperations: [\n new UpdateOperation({\n richData: new RichData({\n seoKeywords: filteredKeywords,\n }),\n fieldMask: new FieldMask({\n paths: ['seo_keywords'],\n }),\n }),\n ],\n }),\n )\n .pipe(\n catchError((err: HttpErrorResponse) => {\n const message = err.error?.message ? err.error.message : 'Unknown error';\n this.snackBar.open(message, '', { politeness: 'assertive', duration: 5000 });\n return EMPTY;\n }),\n );\n }),\n )\n .subscribe(() => {\n this.snackBar.open(this.translate.instant('LOCAL_SEO.KEYWORD_DELETED'), '', {\n politeness: 'polite',\n duration: 5000,\n });\n this.fetchBusinessData();\n });\n }\n\n updateDateRange(dateRange: DateRange): void {\n this.dateRange$$.next(dateRange);\n }\n\n setCanEditKeywords(value: boolean): void {\n this.canEditKeywords$$.next(value);\n }\n\n setLocalStorage(key: string, value: string): void {\n this.agid$\n .pipe(\n map((agid) => {\n localStorage.setItem(`${agid}-${key}`, value);\n return EMPTY;\n }),\n )\n .subscribe();\n }\n\n getLocalStorage(key: string): Observable {\n return this.agid$.pipe(\n map((agid) => {\n return localStorage.getItem(`${agid}-${key}`);\n }),\n );\n }\n}\n\nfunction formatSEOData(data: SEOData[]): SEOData[] {\n return (\n data?.map((seoData) => {\n seoData.localSearches = seoData.localSearches?.map((localSearch) => {\n const mainIndex = localSearch.results.findIndex((result) => result.isMainBusiness);\n if (mainIndex > 2) {\n const mainBusiness = localSearch.results[mainIndex];\n localSearch.results = localSearch.results.slice(0, 3);\n localSearch.results.push(mainBusiness);\n } else {\n localSearch.results = localSearch.results.slice(0, 3);\n }\n return localSearch;\n });\n return seoData;\n }) || []\n );\n}\n\nfunction ParseRowsFromQueryMetricsResult(resp: MetricResult[], metricIndex: number): SEODataPoint[] {\n return resp.reduce((arr: SEODataPoint[], metric) => {\n arr.push({\n value: metric.measures[metricIndex],\n date: metric.dimension,\n });\n return arr;\n }, []);\n}\n\nfunction generateSEODataQueryMetricsRequest(\n partnerId: string,\n businessId: string,\n keyword: string,\n startDate: Date,\n endDate: Date,\n): QueryMetricsRequest {\n const measures = [\n new Measure({\n aggregate: new MeasureAggregate({\n measure: 'local_rank',\n aggOp: MeasureAggregateOperator.MAX,\n }),\n }),\n new Measure({\n aggregate: new MeasureAggregate({\n measure: 'organic_rank',\n aggOp: MeasureAggregateOperator.MAX,\n }),\n }),\n ];\n\n const alignmentPeriod = getAlignmentPeriodForDayJSRange(dayjs(startDate), dayjs(endDate));\n\n return new QueryMetricsRequest({\n metricName: 'seo_data',\n partnerId: partnerId,\n resourceIds: [\n new ResourceId({\n businessId: new BusinessResourceId({ businessId: businessId }),\n }),\n ],\n filter: new Filter({\n fieldFilter: new FieldFilter({\n dimension: 'keyword',\n operator: FieldFilterOperator.EQUAL,\n value: {\n value: keyword,\n valueType: PropertyType.PROPERTY_TYPE_STRING,\n },\n }),\n }),\n dateRange: {\n start: startDate,\n end: endDate,\n },\n measures: measures,\n groupBy: new GroupBy({\n dimension: [{ dimension: 'date' }],\n }),\n alignment: Alignment.ALIGN_DELTA,\n alignmentPeriod: new AlignmentPeriod({\n calendar: alignmentPeriod,\n }),\n });\n}\n\nexport function getAlignmentPeriodForDayJSRange(start: dayjs.Dayjs, end: dayjs.Dayjs): AlignmentPeriodCalendar {\n const numMonths = end.diff(start, 'months');\n const numDays = end.diff(start, 'days');\n if (numMonths >= 8) {\n return AlignmentPeriodCalendar.CALENDAR_MONTH;\n } else if (numDays >= 89) {\n // Use weekly alignment for 90 days or more\n return AlignmentPeriodCalendar.CALENDAR_WEEK;\n } else {\n return AlignmentPeriodCalendar.CALENDAR_DAY;\n }\n}\n","import { Component, Inject } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { FormBuilder, UntypedFormArray } from '@angular/forms';\nimport { SelectInputOption } from '@vendasta/galaxy/input';\nimport { Observable } from 'rxjs';\nimport { KeywordInfo } from '@vendasta/listing-products';\nimport { map } from 'rxjs/operators';\nimport { ProductAnalyticsService } from '@vendasta/product-analytics';\nimport { KeywordTrackingService } from '../keyword-tracking/keyword-tracking.service';\n\n@Component({\n selector: 'local-seo-keyword-dialog',\n templateUrl: './local-seo-keyword-dialog.component.html',\n styleUrls: ['./local-seo-keyword-dialog.component.scss'],\n})\nexport class LocalSeoKeywordDialogComponent {\n keywordLimit: number;\n form: UntypedFormArray;\n options: SelectInputOption[];\n displaySuggestedKeywords$: Observable;\n suggestedKeywordList: KeywordInfo[];\n displayedColumns: string[] = ['keyword', 'competition', 'search_volume', 'add_button'];\n isLbFreeEdition$: Observable;\n canEditKeywords: boolean;\n\n constructor(\n @Inject(MAT_DIALOG_DATA)\n public data: {\n keywords: string[];\n keywordLimit: number;\n suggestedKeywords: KeywordInfo[];\n canEditKeywords: boolean;\n },\n public dialogRef: MatDialogRef,\n private fb: FormBuilder,\n private keywordTrackingService: KeywordTrackingService,\n private posthogService: ProductAnalyticsService,\n ) {\n this.canEditKeywords = data.canEditKeywords;\n this.isLbFreeEdition$ = this.keywordTrackingService.isLBFreeEdition$;\n this.displaySuggestedKeywords$ = this.keywordTrackingService.featureFlags$.pipe(\n map((flags) => flags['10_2023_display_keyword_suggestions']),\n );\n this.suggestedKeywordList = data.suggestedKeywords;\n this.keywordLimit = data.keywordLimit;\n this.form = new UntypedFormArray([]);\n this.form.controls.push(this.fb.control(''));\n }\n\n currentKeywordUsage() {\n const inputsWithText = this.form.controls.filter((control) => control.value.length > 0).length;\n return this.data.keywords.length + inputsWithText;\n }\n\n closeModal(save: boolean): void {\n // forms-va-input-repeated returns [''] by default. We need to filter this out.\n const keywordsAdded = this.form.controls.map((control) => control.value).filter((value) => value !== '');\n if (!keywordsAdded.length) {\n this.dialogRef.close(undefined);\n }\n\n const result = {\n keywords: Array.from(new Set(keywordsAdded.concat(this.data.keywords)).values()),\n };\n\n this.raisePostHogEvent(keywordsAdded);\n\n this.dialogRef.close(save ? result : undefined);\n }\n\n raisePostHogEvent(keywordsAdded: any[]): void {\n const suggestedKeywordsAdded = this.data.suggestedKeywords.filter((keyword) =>\n keywordsAdded.includes(keyword.keyword),\n );\n\n for (const suggestedKeywordsAddedElement of suggestedKeywordsAdded) {\n this.posthogService.trackEvent('suggested-keywords-added', 'suggest-keyword', 'save', 1, {\n keyword: suggestedKeywordsAddedElement.keyword,\n });\n }\n }\n\n addSuggestedKeyword(element: KeywordInfo): void {\n this.form.controls.push(this.fb.control(element.keyword));\n this.form.controls = this.form.controls.filter((control) => control.value !== '');\n this.suggestedKeywordList = this.suggestedKeywordList.filter((keyword) => keyword.keyword !== element.keyword);\n }\n\n removeClicked(keyword: string): void {\n const removedKeyword = this.data.suggestedKeywords.find((keywordInfo) => keywordInfo.keyword === keyword);\n if (!removedKeyword) {\n return;\n }\n this.suggestedKeywordList.push(removedKeyword);\n this.suggestedKeywordList = [].concat(this.suggestedKeywordList);\n }\n}\n","

\n {{ 'LOCAL_SEO.ADD_KEYWORDS' | translate }}\n \n {{ currentKeywordUsage() }}/{{ keywordLimit }} {{ 'LOCAL_SEO.USED' | translate }}\n \n

\n\n \n = keywordLimit\"\n [bottomSpacing]=\"'small'\"\n (removeClicked)=\"removeClicked($event)\"\n >\n \n \n {{ 'LOCAL_SEO.SMART_SUGGESTIONS' | translate }}\n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n
KEYWORD{{ element?.keyword }}COMPETITIVENESS{{ element?.competition | titlecase }}SEARCH VOLUME\n {{ element.searchVolume ? element.searchVolume.toLocaleString() : '' }}\n \n = keywordLimit || !canEditKeywords\"\n (click)=\"addSuggestedKeyword(element)\"\n >\n add\n \n
\n
\n
\n\n \n data?.keywords.length && canEditKeywords)\"\n >\n {{ 'COMMON.ADD_KEYWORDS' | translate }}\n \n\n","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n selector: 'local-seo-delta',\n standalone: true,\n imports: [CommonModule, MatIconModule],\n templateUrl: './delta.component.html',\n styleUrls: ['./delta.component.scss'],\n})\nexport class DeltaComponent {\n @Input() value: number;\n @Input() showNeutral = false;\n\n absVal(value: number) {\n return Math.abs(value);\n }\n}\n","
\n 0\">\n \n \n \n \n \n \n \n \n
\n\n\n
\n arrow_drop_down\n {{ absVal(value) | number : '1.0-2' }}\n
\n
\n\n\n
\n arrow_drop_up\n {{ value | number : '1.0-2' }}\n
\n
\n\n\n
no change
\n
\n","import * as i0 from '@angular/core';\nimport { Injectable } from '@angular/core';\nimport * as i1 from '@angular/common/http';\nimport { HttpHeaders } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar CompetitionAnalysis = /*#__PURE__*/function (CompetitionAnalysis) {\n CompetitionAnalysis[CompetitionAnalysis[\"UNSET\"] = 0] = \"UNSET\";\n CompetitionAnalysis[CompetitionAnalysis[\"INDUSTRY_DATA\"] = 1] = \"INDUSTRY_DATA\";\n CompetitionAnalysis[CompetitionAnalysis[\"COMPETITOR_DATA\"] = 2] = \"COMPETITOR_DATA\";\n CompetitionAnalysis[CompetitionAnalysis[\"DIRECT_COMPETITOR_DATA\"] = 3] = \"DIRECT_COMPETITOR_DATA\";\n return CompetitionAnalysis;\n}(CompetitionAnalysis || {});\nvar GlobalConfigEnabledSection = /*#__PURE__*/function (GlobalConfigEnabledSection) {\n GlobalConfigEnabledSection[GlobalConfigEnabledSection[\"REVIEWS\"] = 0] = \"REVIEWS\";\n GlobalConfigEnabledSection[GlobalConfigEnabledSection[\"LISTINGS\"] = 1] = \"LISTINGS\";\n GlobalConfigEnabledSection[GlobalConfigEnabledSection[\"SOCIAL\"] = 2] = \"SOCIAL\";\n GlobalConfigEnabledSection[GlobalConfigEnabledSection[\"WEBSITE\"] = 3] = \"WEBSITE\";\n GlobalConfigEnabledSection[GlobalConfigEnabledSection[\"ADVERTISING\"] = 4] = \"ADVERTISING\";\n GlobalConfigEnabledSection[GlobalConfigEnabledSection[\"SEO\"] = 5] = \"SEO\";\n GlobalConfigEnabledSection[GlobalConfigEnabledSection[\"ECOMMERCE\"] = 6] = \"ECOMMERCE\";\n GlobalConfigEnabledSection[GlobalConfigEnabledSection[\"TECHNOLOGY\"] = 7] = \"TECHNOLOGY\";\n return GlobalConfigEnabledSection;\n}(GlobalConfigEnabledSection || {});\nvar Grade = /*#__PURE__*/function (Grade) {\n Grade[Grade[\"NO_GRADE\"] = 0] = \"NO_GRADE\";\n Grade[Grade[\"A\"] = 1] = \"A\";\n Grade[Grade[\"B\"] = 2] = \"B\";\n Grade[Grade[\"C\"] = 3] = \"C\";\n Grade[Grade[\"D\"] = 4] = \"D\";\n Grade[Grade[\"F\"] = 5] = \"F\";\n return Grade;\n}(Grade || {});\nvar Section = /*#__PURE__*/function (Section) {\n Section[Section[\"REVIEWS\"] = 0] = \"REVIEWS\";\n Section[Section[\"LISTINGS\"] = 1] = \"LISTINGS\";\n Section[Section[\"SOCIAL\"] = 2] = \"SOCIAL\";\n Section[Section[\"WEBSITE\"] = 3] = \"WEBSITE\";\n Section[Section[\"ADVERTISING\"] = 4] = \"ADVERTISING\";\n Section[Section[\"SNAPSHOT\"] = 5] = \"SNAPSHOT\";\n Section[Section[\"SEO\"] = 6] = \"SEO\";\n Section[Section[\"ECOMMERCE\"] = 7] = \"ECOMMERCE\";\n Section[Section[\"TECHNOLOGY\"] = 8] = \"TECHNOLOGY\";\n return Section;\n}(Section || {});\nvar VideoStyle = /*#__PURE__*/function (VideoStyle) {\n VideoStyle[VideoStyle[\"NO_VIDEOS\"] = 0] = \"NO_VIDEOS\";\n VideoStyle[VideoStyle[\"NORTH_AMERICAN_LEGACY\"] = 1] = \"NORTH_AMERICAN_LEGACY\";\n VideoStyle[VideoStyle[\"NORTH_AMERICAN\"] = 2] = \"NORTH_AMERICAN\";\n VideoStyle[VideoStyle[\"AUSTRALIAN\"] = 3] = \"AUSTRALIAN\";\n VideoStyle[VideoStyle[\"UNITED_KINGDOM\"] = 4] = \"UNITED_KINGDOM\";\n VideoStyle[VideoStyle[\"SOUTH_AFRICA\"] = 5] = \"SOUTH_AFRICA\";\n VideoStyle[VideoStyle[\"FRENCH\"] = 6] = \"FRENCH\";\n return VideoStyle;\n}(VideoStyle || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar ListingListingStatus = /*#__PURE__*/function (ListingListingStatus) {\n ListingListingStatus[ListingListingStatus[\"ACCURATE\"] = 0] = \"ACCURATE\";\n ListingListingStatus[ListingListingStatus[\"INACCURATE\"] = 1] = \"INACCURATE\";\n ListingListingStatus[ListingListingStatus[\"NOT_FOUND\"] = 2] = \"NOT_FOUND\";\n return ListingListingStatus;\n}(ListingListingStatus || {});\nvar ListingV2ListingStatus = /*#__PURE__*/function (ListingV2ListingStatus) {\n ListingV2ListingStatus[ListingV2ListingStatus[\"UNSPECIFIED\"] = 0] = \"UNSPECIFIED\";\n ListingV2ListingStatus[ListingV2ListingStatus[\"ACCURATE\"] = 1] = \"ACCURATE\";\n ListingV2ListingStatus[ListingV2ListingStatus[\"INACCURATE\"] = 2] = \"INACCURATE\";\n ListingV2ListingStatus[ListingV2ListingStatus[\"NOT_FOUND\"] = 3] = \"NOT_FOUND\";\n return ListingV2ListingStatus;\n}(ListingV2ListingStatus || {});\nvar DataProviderAccuracyStatus = /*#__PURE__*/function (DataProviderAccuracyStatus) {\n DataProviderAccuracyStatus[DataProviderAccuracyStatus[\"ACCURATE\"] = 0] = \"ACCURATE\";\n DataProviderAccuracyStatus[DataProviderAccuracyStatus[\"NOT_FOUND\"] = 1] = \"NOT_FOUND\";\n DataProviderAccuracyStatus[DataProviderAccuracyStatus[\"CONTAINS_ERRORS\"] = 2] = \"CONTAINS_ERRORS\";\n return DataProviderAccuracyStatus;\n}(DataProviderAccuracyStatus || {});\nvar DataProviderAccuracyStatusV2 = /*#__PURE__*/function (DataProviderAccuracyStatusV2) {\n DataProviderAccuracyStatusV2[DataProviderAccuracyStatusV2[\"UNSPECIFIED_V2\"] = 0] = \"UNSPECIFIED_V2\";\n DataProviderAccuracyStatusV2[DataProviderAccuracyStatusV2[\"ACCURATE_V2\"] = 1] = \"ACCURATE_V2\";\n DataProviderAccuracyStatusV2[DataProviderAccuracyStatusV2[\"NOT_FOUND_V2\"] = 2] = \"NOT_FOUND_V2\";\n DataProviderAccuracyStatusV2[DataProviderAccuracyStatusV2[\"CONTAINS_ERRORS_V2\"] = 3] = \"CONTAINS_ERRORS_V2\";\n return DataProviderAccuracyStatusV2;\n}(DataProviderAccuracyStatusV2 || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar GMBClaimStatus = /*#__PURE__*/function (GMBClaimStatus) {\n GMBClaimStatus[GMBClaimStatus[\"GMB_CLAIM_STATUS_INVALID\"] = 0] = \"GMB_CLAIM_STATUS_INVALID\";\n GMBClaimStatus[GMBClaimStatus[\"GMB_CLAIM_STATUS_UNKNOWN\"] = 1] = \"GMB_CLAIM_STATUS_UNKNOWN\";\n GMBClaimStatus[GMBClaimStatus[\"GMB_CLAIM_STATUS_CLAIMED\"] = 2] = \"GMB_CLAIM_STATUS_CLAIMED\";\n GMBClaimStatus[GMBClaimStatus[\"GMB_CLAIM_STATUS_UNCLAIMED\"] = 3] = \"GMB_CLAIM_STATUS_UNCLAIMED\";\n return GMBClaimStatus;\n}(GMBClaimStatus || {});\nvar Status = /*#__PURE__*/function (Status) {\n Status[Status[\"STATUS_UNDEFINED\"] = 0] = \"STATUS_UNDEFINED\";\n Status[Status[\"STATUS_DOES_NOT_EXIST\"] = 1] = \"STATUS_DOES_NOT_EXIST\";\n Status[Status[\"STATUS_IN_PROGRESS\"] = 2] = \"STATUS_IN_PROGRESS\";\n Status[Status[\"STATUS_FINISHED\"] = 3] = \"STATUS_FINISHED\";\n return Status;\n}(Status || {});\nvar Vicinity = /*#__PURE__*/function (Vicinity) {\n Vicinity[Vicinity[\"VICINITY_UNDEFINED\"] = 0] = \"VICINITY_UNDEFINED\";\n Vicinity[Vicinity[\"VICINITY_CITY\"] = 1] = \"VICINITY_CITY\";\n Vicinity[Vicinity[\"VICINITY_NEARME\"] = 2] = \"VICINITY_NEARME\";\n Vicinity[Vicinity[\"VICINITY_NEARME_NORTH\"] = 3] = \"VICINITY_NEARME_NORTH\";\n Vicinity[Vicinity[\"VICINITY_NEARME_NORTHEAST\"] = 4] = \"VICINITY_NEARME_NORTHEAST\";\n Vicinity[Vicinity[\"VICINITY_NEARME_EAST\"] = 5] = \"VICINITY_NEARME_EAST\";\n Vicinity[Vicinity[\"VICINITY_NEARME_SOUTHEAST\"] = 6] = \"VICINITY_NEARME_SOUTHEAST\";\n Vicinity[Vicinity[\"VICINITY_NEARME_SOUTH\"] = 7] = \"VICINITY_NEARME_SOUTH\";\n Vicinity[Vicinity[\"VICINITY_NEARME_SOUTHWEST\"] = 8] = \"VICINITY_NEARME_SOUTHWEST\";\n Vicinity[Vicinity[\"VICINITY_NEARME_WEST\"] = 9] = \"VICINITY_NEARME_WEST\";\n Vicinity[Vicinity[\"VICINITY_NEARME_NORTHWEST\"] = 10] = \"VICINITY_NEARME_NORTHWEST\";\n return Vicinity;\n}(Vicinity || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar InstagramDataInstagramDataStatus = /*#__PURE__*/function (InstagramDataInstagramDataStatus) {\n InstagramDataInstagramDataStatus[InstagramDataInstagramDataStatus[\"INSTAGRAM_DATA_INSTAGRAM_DATA_STATUS_IN_PROGRESS\"] = 0] = \"INSTAGRAM_DATA_INSTAGRAM_DATA_STATUS_IN_PROGRESS\";\n InstagramDataInstagramDataStatus[InstagramDataInstagramDataStatus[\"INSTAGRAM_DATA_INSTAGRAM_DATA_STATUS_SUCCESS\"] = 1] = \"INSTAGRAM_DATA_INSTAGRAM_DATA_STATUS_SUCCESS\";\n InstagramDataInstagramDataStatus[InstagramDataInstagramDataStatus[\"INSTAGRAM_DATA_INSTAGRAM_DATA_STATUS_INVALID_USER_ID\"] = 2] = \"INSTAGRAM_DATA_INSTAGRAM_DATA_STATUS_INVALID_USER_ID\";\n InstagramDataInstagramDataStatus[InstagramDataInstagramDataStatus[\"INSTAGRAM_DATA_INSTAGRAM_DATA_STATUS_UNKNOWN_ERROR\"] = 3] = \"INSTAGRAM_DATA_INSTAGRAM_DATA_STATUS_UNKNOWN_ERROR\";\n return InstagramDataInstagramDataStatus;\n}(InstagramDataInstagramDataStatus || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar SSLSummaryStatus = /*#__PURE__*/function (SSLSummaryStatus) {\n SSLSummaryStatus[SSLSummaryStatus[\"SSL_SUMMARY_STATUS_UNDETERMINED\"] = 0] = \"SSL_SUMMARY_STATUS_UNDETERMINED\";\n SSLSummaryStatus[SSLSummaryStatus[\"SSL_SUMMARY_STATUS_INVALID\"] = 1] = \"SSL_SUMMARY_STATUS_INVALID\";\n SSLSummaryStatus[SSLSummaryStatus[\"SSL_SUMMARY_STATUS_VALID\"] = 2] = \"SSL_SUMMARY_STATUS_VALID\";\n return SSLSummaryStatus;\n}(SSLSummaryStatus || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar Role = /*#__PURE__*/function (Role) {\n Role[Role[\"ROLE_UNSET\"] = 0] = \"ROLE_UNSET\";\n Role[Role[\"ROLE_SYSTEM\"] = 1] = \"ROLE_SYSTEM\";\n Role[Role[\"ROLE_USER\"] = 2] = \"ROLE_USER\";\n Role[Role[\"ROLE_ASSISTANT\"] = 3] = \"ROLE_ASSISTANT\";\n return Role;\n}(Role || {});\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar AppDomain = /*#__PURE__*/function (AppDomain) {\n AppDomain[AppDomain[\"APP_DOMAIN_INVALID\"] = 0] = \"APP_DOMAIN_INVALID\";\n AppDomain[AppDomain[\"APP_DOMAIN_VBC\"] = 1] = \"APP_DOMAIN_VBC\";\n AppDomain[AppDomain[\"APP_DOMAIN_MS\"] = 2] = \"APP_DOMAIN_MS\";\n AppDomain[AppDomain[\"APP_DOMAIN_SM\"] = 3] = \"APP_DOMAIN_SM\";\n AppDomain[AppDomain[\"APP_DOMAIN_ST\"] = 4] = \"APP_DOMAIN_ST\";\n AppDomain[AppDomain[\"APP_DOMAIN_RM\"] = 5] = \"APP_DOMAIN_RM\";\n return AppDomain;\n}(AppDomain || {});\n// *********************************\n\nfunction enumStringToValue$k(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass SalesPerson {\n static fromProto(proto) {\n let m = new SalesPerson();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.salesPersonId !== 'undefined') {\n toReturn['salesPersonId'] = this.salesPersonId;\n }\n if (typeof this.firstName !== 'undefined') {\n toReturn['firstName'] = this.firstName;\n }\n if (typeof this.lastName !== 'undefined') {\n toReturn['lastName'] = this.lastName;\n }\n if (typeof this.email !== 'undefined') {\n toReturn['email'] = this.email;\n }\n if (typeof this.phoneNumbers !== 'undefined') {\n toReturn['phoneNumbers'] = this.phoneNumbers;\n }\n if (typeof this.photoUrl !== 'undefined') {\n toReturn['photoUrl'] = this.photoUrl;\n }\n if (typeof this.jobTitle !== 'undefined') {\n toReturn['jobTitle'] = this.jobTitle;\n }\n if (typeof this.coverPageTitle !== 'undefined') {\n toReturn['coverPageTitle'] = this.coverPageTitle;\n }\n if (typeof this.country !== 'undefined') {\n toReturn['country'] = this.country;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$j(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Competitor {\n static fromProto(proto) {\n let m = new Competitor();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.website !== 'undefined') {\n toReturn['website'] = this.website;\n }\n if (typeof this.snapshotId !== 'undefined') {\n toReturn['snapshotId'] = this.snapshotId;\n }\n return toReturn;\n }\n}\nclass Contact {\n static fromProto(proto) {\n let m = new Contact();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.firstName !== 'undefined') {\n toReturn['firstName'] = this.firstName;\n }\n if (typeof this.lastName !== 'undefined') {\n toReturn['lastName'] = this.lastName;\n }\n if (typeof this.email !== 'undefined') {\n toReturn['email'] = this.email;\n }\n if (typeof this.fullName !== 'undefined') {\n toReturn['fullName'] = this.fullName;\n }\n return toReturn;\n }\n}\nclass Email {\n static fromProto(proto) {\n let m = new Email();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.body !== 'undefined') {\n toReturn['body'] = this.body;\n }\n if (typeof this.subject !== 'undefined') {\n toReturn['subject'] = this.subject;\n }\n if (typeof this.greeting !== 'undefined') {\n toReturn['greeting'] = this.greeting;\n }\n if (typeof this.closing !== 'undefined') {\n toReturn['closing'] = this.closing;\n }\n if (typeof this.buttonText !== 'undefined') {\n toReturn['buttonText'] = this.buttonText;\n }\n return toReturn;\n }\n}\nclass GlobalConfig {\n static fromProto(proto) {\n let m = new GlobalConfig();\n m = Object.assign(m, proto);\n if (proto.videoStyle) {\n m.videoStyle = enumStringToValue$j(VideoStyle, proto.videoStyle);\n }\n if (proto.enabledSections) {\n m.enabledSections = proto.enabledSections.map(v => enumStringToValue$j(GlobalConfigEnabledSection, v));\n }\n if (proto.competitors) {\n m.competitors = proto.competitors.map(Competitor.fromProto);\n }\n if (proto.competitionAnalysis) {\n m.competitionAnalysis = enumStringToValue$j(CompetitionAnalysis, proto.competitionAnalysis);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.hideGrades !== 'undefined') {\n toReturn['hideGrades'] = this.hideGrades;\n }\n if (typeof this.videoStyle !== 'undefined') {\n toReturn['videoStyle'] = this.videoStyle;\n }\n if (typeof this.hideImages !== 'undefined') {\n toReturn['hideImages'] = this.hideImages;\n }\n if (typeof this.enabledSections !== 'undefined') {\n toReturn['enabledSections'] = this.enabledSections;\n }\n if (typeof this.locale !== 'undefined') {\n toReturn['locale'] = this.locale;\n }\n if (typeof this.competitors !== 'undefined' && this.competitors !== null) {\n toReturn['competitors'] = 'toApiJson' in this.competitors ? this.competitors.toApiJson() : this.competitors;\n }\n if (typeof this.hideSubsectionGrades !== 'undefined') {\n toReturn['hideSubsectionGrades'] = this.hideSubsectionGrades;\n }\n if (typeof this.hideScheduleMeetingOption !== 'undefined') {\n toReturn['hideScheduleMeetingOption'] = this.hideScheduleMeetingOption;\n }\n if (typeof this.competitionAnalysis !== 'undefined') {\n toReturn['competitionAnalysis'] = this.competitionAnalysis;\n }\n return toReturn;\n }\n}\nclass IndustryPercentiles {\n static fromProto(proto) {\n let m = new IndustryPercentiles();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.fortieth !== 'undefined') {\n toReturn['fortieth'] = this.fortieth;\n }\n if (typeof this.fiftieth !== 'undefined') {\n toReturn['fiftieth'] = this.fiftieth;\n }\n if (typeof this.fiftyFifth !== 'undefined') {\n toReturn['fiftyFifth'] = this.fiftyFifth;\n }\n if (typeof this.seventyFifth !== 'undefined') {\n toReturn['seventyFifth'] = this.seventyFifth;\n }\n if (typeof this.ninetieth !== 'undefined') {\n toReturn['ninetieth'] = this.ninetieth;\n }\n if (typeof this.ninetyFifth !== 'undefined') {\n toReturn['ninetyFifth'] = this.ninetyFifth;\n }\n return toReturn;\n }\n}\nclass InferredFields {\n static fromProto(proto) {\n let m = new InferredFields();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.website !== 'undefined') {\n toReturn['website'] = this.website;\n }\n return toReturn;\n }\n}\nclass LanguageConfig {\n static fromProto(proto) {\n let m = new LanguageConfig();\n m = Object.assign(m, proto);\n if (proto.videoStyle) {\n m.videoStyle = enumStringToValue$j(VideoStyle, proto.videoStyle);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.locale !== 'undefined') {\n toReturn['locale'] = this.locale;\n }\n if (typeof this.videoStyle !== 'undefined') {\n toReturn['videoStyle'] = this.videoStyle;\n }\n return toReturn;\n }\n}\nclass SectionContent {\n static fromProto(proto) {\n let m = new SectionContent();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.messageId !== 'undefined') {\n toReturn['messageId'] = this.messageId;\n }\n if (typeof this.videoId !== 'undefined') {\n toReturn['videoId'] = this.videoId;\n }\n if (typeof this.footerMessageId !== 'undefined') {\n toReturn['footerMessageId'] = this.footerMessageId;\n }\n return toReturn;\n }\n}\nclass Snapshot {\n static fromProto(proto) {\n let m = new Snapshot();\n m = Object.assign(m, proto);\n if (proto.config) {\n m.config = GlobalConfig.fromProto(proto.config);\n }\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.expired) {\n m.expired = new Date(proto.expired);\n }\n if (proto.data) {\n m.data = SnapshotData.fromProto(proto.data);\n }\n if (proto.salesPerson) {\n m.salesPerson = SalesPerson.fromProto(proto.salesPerson);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.snapshotId !== 'undefined') {\n toReturn['snapshotId'] = this.snapshotId;\n }\n if (typeof this.businessId !== 'undefined') {\n toReturn['businessId'] = this.businessId;\n }\n if (typeof this.config !== 'undefined' && this.config !== null) {\n toReturn['config'] = 'toApiJson' in this.config ? this.config.toApiJson() : this.config;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.expired !== 'undefined' && this.expired !== null) {\n toReturn['expired'] = 'toApiJson' in this.expired ? this.expired.toApiJson() : this.expired;\n }\n if (typeof this.data !== 'undefined' && this.data !== null) {\n toReturn['data'] = 'toApiJson' in this.data ? this.data.toApiJson() : this.data;\n }\n if (typeof this.salesPerson !== 'undefined' && this.salesPerson !== null) {\n toReturn['salesPerson'] = 'toApiJson' in this.salesPerson ? this.salesPerson.toApiJson() : this.salesPerson;\n }\n if (typeof this.createdBy !== 'undefined') {\n toReturn['createdBy'] = this.createdBy;\n }\n if (typeof this.isPartnerConfig !== 'undefined') {\n toReturn['isPartnerConfig'] = this.isPartnerConfig;\n }\n return toReturn;\n }\n}\nclass SnapshotData {\n static fromProto(proto) {\n let m = new SnapshotData();\n m = Object.assign(m, proto);\n if (proto.inferredFields) {\n m.inferredFields = InferredFields.fromProto(proto.inferredFields);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.companyName !== 'undefined') {\n toReturn['companyName'] = this.companyName;\n }\n if (typeof this.address !== 'undefined') {\n toReturn['address'] = this.address;\n }\n if (typeof this.city !== 'undefined') {\n toReturn['city'] = this.city;\n }\n if (typeof this.state !== 'undefined') {\n toReturn['state'] = this.state;\n }\n if (typeof this.zip !== 'undefined') {\n toReturn['zip'] = this.zip;\n }\n if (typeof this.country !== 'undefined') {\n toReturn['country'] = this.country;\n }\n if (typeof this.phoneNumbers !== 'undefined') {\n toReturn['phoneNumbers'] = this.phoneNumbers;\n }\n if (typeof this.website !== 'undefined') {\n toReturn['website'] = this.website;\n }\n if (typeof this.taxonomyId !== 'undefined') {\n toReturn['taxonomyId'] = this.taxonomyId;\n }\n if (typeof this.imageUrls !== 'undefined') {\n toReturn['imageUrls'] = this.imageUrls;\n }\n if (typeof this.taxonomyName !== 'undefined') {\n toReturn['taxonomyName'] = this.taxonomyName;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.marketId !== 'undefined') {\n toReturn['marketId'] = this.marketId;\n }\n if (typeof this.facebookUrl !== 'undefined') {\n toReturn['facebookUrl'] = this.facebookUrl;\n }\n if (typeof this.twitterUrl !== 'undefined') {\n toReturn['twitterUrl'] = this.twitterUrl;\n }\n if (typeof this.instagramUrl !== 'undefined') {\n toReturn['instagramUrl'] = this.instagramUrl;\n }\n if (typeof this.serviceAreaBusiness !== 'undefined') {\n toReturn['serviceAreaBusiness'] = this.serviceAreaBusiness;\n }\n if (typeof this.inferredFields !== 'undefined' && this.inferredFields !== null) {\n toReturn['inferredFields'] = 'toApiJson' in this.inferredFields ? this.inferredFields.toApiJson() : this.inferredFields;\n }\n if (typeof this.vcategoryId !== 'undefined') {\n toReturn['vcategoryId'] = this.vcategoryId;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$i(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass AdvertisingConfig {\n static fromProto(proto) {\n let m = new AdvertisingConfig();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.hideContent !== 'undefined') {\n toReturn['hideContent'] = this.hideContent;\n }\n if (typeof this.customizedMessage !== 'undefined') {\n toReturn['customizedMessage'] = this.customizedMessage;\n }\n if (typeof this.hideSemSection !== 'undefined') {\n toReturn['hideSemSection'] = this.hideSemSection;\n }\n if (typeof this.hideSemPayPerClick !== 'undefined') {\n toReturn['hideSemPayPerClick'] = this.hideSemPayPerClick;\n }\n if (typeof this.hideSemRetargeting !== 'undefined') {\n toReturn['hideSemRetargeting'] = this.hideSemRetargeting;\n }\n if (typeof this.hideSemContent !== 'undefined') {\n toReturn['hideSemContent'] = this.hideSemContent;\n }\n if (typeof this.customizedSemMessage !== 'undefined') {\n toReturn['customizedSemMessage'] = this.customizedSemMessage;\n }\n if (typeof this.hideAdwordsSection !== 'undefined') {\n toReturn['hideAdwordsSection'] = this.hideAdwordsSection;\n }\n if (typeof this.hideFooter !== 'undefined') {\n toReturn['hideFooter'] = this.hideFooter;\n }\n if (typeof this.customizedFooterMessage !== 'undefined') {\n toReturn['customizedFooterMessage'] = this.customizedFooterMessage;\n }\n if (typeof this.customizedFooterCtaLabel !== 'undefined') {\n toReturn['customizedFooterCtaLabel'] = this.customizedFooterCtaLabel;\n }\n if (typeof this.customizedFooterCtaTargetUrl !== 'undefined') {\n toReturn['customizedFooterCtaTargetUrl'] = this.customizedFooterCtaTargetUrl;\n }\n if (typeof this.customizedFooterCtaTargetProduct !== 'undefined') {\n toReturn['customizedFooterCtaTargetProduct'] = this.customizedFooterCtaTargetProduct;\n }\n return toReturn;\n }\n}\nclass AdvertisingData {\n static fromProto(proto) {\n let m = new AdvertisingData();\n m = Object.assign(m, proto);\n if (proto.adwordsData) {\n m.adwordsData = AdwordsData.fromProto(proto.adwordsData);\n }\n if (proto.payPerClickData) {\n m.payPerClickData = PayPerClickData.fromProto(proto.payPerClickData);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.adwordsData !== 'undefined' && this.adwordsData !== null) {\n toReturn['adwordsData'] = 'toApiJson' in this.adwordsData ? this.adwordsData.toApiJson() : this.adwordsData;\n }\n if (typeof this.payPerClickData !== 'undefined' && this.payPerClickData !== null) {\n toReturn['payPerClickData'] = 'toApiJson' in this.payPerClickData ? this.payPerClickData.toApiJson() : this.payPerClickData;\n }\n if (typeof this.isRetargeting !== 'undefined') {\n toReturn['isRetargeting'] = this.isRetargeting;\n }\n if (typeof this.website !== 'undefined') {\n toReturn['website'] = this.website;\n }\n if (typeof this.zip !== 'undefined') {\n toReturn['zip'] = this.zip;\n }\n return toReturn;\n }\n}\nclass AdvertisingSection {\n static fromProto(proto) {\n let m = new AdvertisingSection();\n m = Object.assign(m, proto);\n if (proto.grade) {\n m.grade = enumStringToValue$i(Grade, proto.grade);\n }\n if (proto.content) {\n m.content = SectionContent.fromProto(proto.content);\n }\n if (proto.data) {\n m.data = AdvertisingData.fromProto(proto.data);\n }\n if (proto.config) {\n m.config = AdvertisingConfig.fromProto(proto.config);\n }\n if (proto.semContent) {\n m.semContent = SectionContent.fromProto(proto.semContent);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.grade !== 'undefined') {\n toReturn['grade'] = this.grade;\n }\n if (typeof this.content !== 'undefined' && this.content !== null) {\n toReturn['content'] = 'toApiJson' in this.content ? this.content.toApiJson() : this.content;\n }\n if (typeof this.data !== 'undefined' && this.data !== null) {\n toReturn['data'] = 'toApiJson' in this.data ? this.data.toApiJson() : this.data;\n }\n if (typeof this.config !== 'undefined' && this.config !== null) {\n toReturn['config'] = 'toApiJson' in this.config ? this.config.toApiJson() : this.config;\n }\n if (typeof this.semContent !== 'undefined' && this.semContent !== null) {\n toReturn['semContent'] = 'toApiJson' in this.semContent ? this.semContent.toApiJson() : this.semContent;\n }\n return toReturn;\n }\n}\nclass AdwordsData {\n static fromProto(proto) {\n let m = new AdwordsData();\n m = Object.assign(m, proto);\n if (proto.impressions) {\n m.impressions = proto.impressions.map(Impressions.fromProto);\n }\n if (proto.clicks) {\n m.clicks = proto.clicks.map(Clicks.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.impressions !== 'undefined' && this.impressions !== null) {\n toReturn['impressions'] = 'toApiJson' in this.impressions ? this.impressions.toApiJson() : this.impressions;\n }\n if (typeof this.clicks !== 'undefined' && this.clicks !== null) {\n toReturn['clicks'] = 'toApiJson' in this.clicks ? this.clicks.toApiJson() : this.clicks;\n }\n if (typeof this.stillWorking !== 'undefined') {\n toReturn['stillWorking'] = this.stillWorking;\n }\n return toReturn;\n }\n}\nclass Clicks {\n static fromProto(proto) {\n let m = new Clicks();\n m = Object.assign(m, proto);\n if (proto.clicksPerMonth) {\n m.clicksPerMonth = FloatRange.fromProto(proto.clicksPerMonth);\n }\n if (proto.averageCostPerClick) {\n m.averageCostPerClick = IntRange.fromProto(proto.averageCostPerClick);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.keyword !== 'undefined') {\n toReturn['keyword'] = this.keyword;\n }\n if (typeof this.clicksPerMonth !== 'undefined' && this.clicksPerMonth !== null) {\n toReturn['clicksPerMonth'] = 'toApiJson' in this.clicksPerMonth ? this.clicksPerMonth.toApiJson() : this.clicksPerMonth;\n }\n if (typeof this.averageCostPerClick !== 'undefined' && this.averageCostPerClick !== null) {\n toReturn['averageCostPerClick'] = 'toApiJson' in this.averageCostPerClick ? this.averageCostPerClick.toApiJson() : this.averageCostPerClick;\n }\n return toReturn;\n }\n}\nclass DomainMetrics {\n static fromProto(proto) {\n let m = new DomainMetrics();\n m = Object.assign(m, proto);\n if (proto.averageAdPosition) {\n m.averageAdPosition = parseInt(proto.averageAdPosition, 10);\n }\n if (proto.numberOfAdvertisers) {\n m.numberOfAdvertisers = parseInt(proto.numberOfAdvertisers, 10);\n }\n if (proto.numberOfPaidKeywords) {\n m.numberOfPaidKeywords = parseInt(proto.numberOfPaidKeywords, 10);\n }\n if (proto.paidClicksPerMonth) {\n m.paidClicksPerMonth = parseInt(proto.paidClicksPerMonth, 10);\n }\n if (proto.dailyAdwordsBudget) {\n m.dailyAdwordsBudget = parseInt(proto.dailyAdwordsBudget, 10);\n }\n if (proto.monthlyAdwordsBudget) {\n m.monthlyAdwordsBudget = parseInt(proto.monthlyAdwordsBudget, 10);\n }\n if (proto.paidDomainRanking) {\n m.paidDomainRanking = parseInt(proto.paidDomainRanking, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.domainName !== 'undefined') {\n toReturn['domainName'] = this.domainName;\n }\n if (typeof this.averageAdPosition !== 'undefined') {\n toReturn['averageAdPosition'] = this.averageAdPosition;\n }\n if (typeof this.numberOfAdvertisers !== 'undefined') {\n toReturn['numberOfAdvertisers'] = this.numberOfAdvertisers;\n }\n if (typeof this.numberOfPaidKeywords !== 'undefined') {\n toReturn['numberOfPaidKeywords'] = this.numberOfPaidKeywords;\n }\n if (typeof this.paidClicksPerMonth !== 'undefined') {\n toReturn['paidClicksPerMonth'] = this.paidClicksPerMonth;\n }\n if (typeof this.dailyAdwordsBudget !== 'undefined') {\n toReturn['dailyAdwordsBudget'] = this.dailyAdwordsBudget;\n }\n if (typeof this.monthlyAdwordsBudget !== 'undefined') {\n toReturn['monthlyAdwordsBudget'] = this.monthlyAdwordsBudget;\n }\n if (typeof this.paidDomainRanking !== 'undefined') {\n toReturn['paidDomainRanking'] = this.paidDomainRanking;\n }\n if (typeof this.overlap !== 'undefined') {\n toReturn['overlap'] = this.overlap;\n }\n return toReturn;\n }\n}\nclass FloatRange {\n static fromProto(proto) {\n let m = new FloatRange();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.minimum !== 'undefined') {\n toReturn['minimum'] = this.minimum;\n }\n if (typeof this.maximum !== 'undefined') {\n toReturn['maximum'] = this.maximum;\n }\n return toReturn;\n }\n}\nclass Impressions {\n static fromProto(proto) {\n let m = new Impressions();\n m = Object.assign(m, proto);\n if (proto.impressionsPerMonth) {\n m.impressionsPerMonth = FloatRange.fromProto(proto.impressionsPerMonth);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.keyword !== 'undefined') {\n toReturn['keyword'] = this.keyword;\n }\n if (typeof this.impressionsPerMonth !== 'undefined' && this.impressionsPerMonth !== null) {\n toReturn['impressionsPerMonth'] = 'toApiJson' in this.impressionsPerMonth ? this.impressionsPerMonth.toApiJson() : this.impressionsPerMonth;\n }\n return toReturn;\n }\n}\nclass IntRange {\n static fromProto(proto) {\n let m = new IntRange();\n m = Object.assign(m, proto);\n if (proto.minimum) {\n m.minimum = parseInt(proto.minimum, 10);\n }\n if (proto.maximum) {\n m.maximum = parseInt(proto.maximum, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.minimum !== 'undefined') {\n toReturn['minimum'] = this.minimum;\n }\n if (typeof this.maximum !== 'undefined') {\n toReturn['maximum'] = this.maximum;\n }\n return toReturn;\n }\n}\nclass PayPerClickData {\n static fromProto(proto) {\n let m = new PayPerClickData();\n m = Object.assign(m, proto);\n if (proto.business) {\n m.business = DomainMetrics.fromProto(proto.business);\n }\n if (proto.competitors) {\n m.competitors = proto.competitors.map(DomainMetrics.fromProto);\n }\n if (proto.grade) {\n m.grade = enumStringToValue$i(Grade, proto.grade);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.business !== 'undefined' && this.business !== null) {\n toReturn['business'] = 'toApiJson' in this.business ? this.business.toApiJson() : this.business;\n }\n if (typeof this.competitors !== 'undefined' && this.competitors !== null) {\n toReturn['competitors'] = 'toApiJson' in this.competitors ? this.competitors.toApiJson() : this.competitors;\n }\n if (typeof this.grade !== 'undefined') {\n toReturn['grade'] = this.grade;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$h(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Configuration {\n static fromProto(proto) {\n let m = new Configuration();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.showPpc !== 'undefined') {\n toReturn['showPpc'] = this.showPpc;\n }\n if (typeof this.showRemarketing !== 'undefined') {\n toReturn['showRemarketing'] = this.showRemarketing;\n }\n if (typeof this.useCustomSnapshotHeader !== 'undefined') {\n toReturn['useCustomSnapshotHeader'] = this.useCustomSnapshotHeader;\n }\n if (typeof this.customSnapshotHeader !== 'undefined') {\n toReturn['customSnapshotHeader'] = this.customSnapshotHeader;\n }\n if (typeof this.useCustomSnapshotFooter !== 'undefined') {\n toReturn['useCustomSnapshotFooter'] = this.useCustomSnapshotFooter;\n }\n if (typeof this.customSnapshotFooter !== 'undefined') {\n toReturn['customSnapshotFooter'] = this.customSnapshotFooter;\n }\n if (typeof this.useCustomSnapshotPopupMessage !== 'undefined') {\n toReturn['useCustomSnapshotPopupMessage'] = this.useCustomSnapshotPopupMessage;\n }\n if (typeof this.customSnapshotPopupMessage !== 'undefined') {\n toReturn['customSnapshotPopupMessage'] = this.customSnapshotPopupMessage;\n }\n if (typeof this.allowClaimUser !== 'undefined') {\n toReturn['allowClaimUser'] = this.allowClaimUser;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$g(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Current {\n static fromProto(proto) {\n let m = new Current();\n m = Object.assign(m, proto);\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.expired) {\n m.expired = new Date(proto.expired);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.snapshotId !== 'undefined') {\n toReturn['snapshotId'] = this.snapshotId;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.expired !== 'undefined' && this.expired !== null) {\n toReturn['expired'] = 'toApiJson' in this.expired ? this.expired.toApiJson() : this.expired;\n }\n if (typeof this.path !== 'undefined') {\n toReturn['path'] = this.path;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$f(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass FieldMask {\n static fromProto(proto) {\n let m = new FieldMask();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.paths !== 'undefined') {\n toReturn['paths'] = this.paths;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$e(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass AvailableListingSource {\n static fromProto(proto) {\n let m = new AvailableListingSource();\n m = Object.assign(m, proto);\n if (proto.sourceId) {\n m.sourceId = parseInt(proto.sourceId, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sourceId !== 'undefined') {\n toReturn['sourceId'] = this.sourceId;\n }\n if (typeof this.sourceName !== 'undefined') {\n toReturn['sourceName'] = this.sourceName;\n }\n if (typeof this.sourceIconUrl !== 'undefined') {\n toReturn['sourceIconUrl'] = this.sourceIconUrl;\n }\n if (typeof this.ignored !== 'undefined') {\n toReturn['ignored'] = this.ignored;\n }\n return toReturn;\n }\n}\nclass ListingPresenceCompetitor {\n static fromProto(proto) {\n let m = new ListingPresenceCompetitor();\n m = Object.assign(m, proto);\n if (proto.foundCount) {\n m.foundCount = parseInt(proto.foundCount, 10);\n }\n if (proto.updated) {\n m.updated = new Date(proto.updated);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.snapshotId !== 'undefined') {\n toReturn['snapshotId'] = this.snapshotId;\n }\n if (typeof this.companyName !== 'undefined') {\n toReturn['companyName'] = this.companyName;\n }\n if (typeof this.foundCount !== 'undefined') {\n toReturn['foundCount'] = this.foundCount;\n }\n if (typeof this.updated !== 'undefined' && this.updated !== null) {\n toReturn['updated'] = 'toApiJson' in this.updated ? this.updated.toApiJson() : this.updated;\n }\n return toReturn;\n }\n}\nclass ListingAccuracyCompetitor {\n static fromProto(proto) {\n let m = new ListingAccuracyCompetitor();\n m = Object.assign(m, proto);\n if (proto.updated) {\n m.updated = new Date(proto.updated);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.snapshotId !== 'undefined') {\n toReturn['snapshotId'] = this.snapshotId;\n }\n if (typeof this.companyName !== 'undefined') {\n toReturn['companyName'] = this.companyName;\n }\n if (typeof this.accurateListings !== 'undefined') {\n toReturn['accurateListings'] = this.accurateListings;\n }\n if (typeof this.updated !== 'undefined' && this.updated !== null) {\n toReturn['updated'] = 'toApiJson' in this.updated ? this.updated.toApiJson() : this.updated;\n }\n return toReturn;\n }\n}\nclass DataProviderAccuracy {\n static fromProto(proto) {\n let m = new DataProviderAccuracy();\n m = Object.assign(m, proto);\n if (proto.neustarAccurate) {\n m.neustarAccurate = enumStringToValue$e(DataProviderAccuracyStatus, proto.neustarAccurate);\n }\n if (proto.factualAccurate) {\n m.factualAccurate = enumStringToValue$e(DataProviderAccuracyStatus, proto.factualAccurate);\n }\n if (proto.acxiomAccurate) {\n m.acxiomAccurate = enumStringToValue$e(DataProviderAccuracyStatus, proto.acxiomAccurate);\n }\n if (proto.infogroupAccurate) {\n m.infogroupAccurate = enumStringToValue$e(DataProviderAccuracyStatus, proto.infogroupAccurate);\n }\n if (proto.neustarStatus) {\n m.neustarStatus = enumStringToValue$e(DataProviderAccuracyStatusV2, proto.neustarStatus);\n }\n if (proto.factualStatus) {\n m.factualStatus = enumStringToValue$e(DataProviderAccuracyStatusV2, proto.factualStatus);\n }\n if (proto.infogroupStatus) {\n m.infogroupStatus = enumStringToValue$e(DataProviderAccuracyStatusV2, proto.infogroupStatus);\n }\n if (proto.foursquareStatus) {\n m.foursquareStatus = enumStringToValue$e(DataProviderAccuracyStatusV2, proto.foursquareStatus);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.neustarAccurate !== 'undefined') {\n toReturn['neustarAccurate'] = this.neustarAccurate;\n }\n if (typeof this.factualAccurate !== 'undefined') {\n toReturn['factualAccurate'] = this.factualAccurate;\n }\n if (typeof this.acxiomAccurate !== 'undefined') {\n toReturn['acxiomAccurate'] = this.acxiomAccurate;\n }\n if (typeof this.infogroupAccurate !== 'undefined') {\n toReturn['infogroupAccurate'] = this.infogroupAccurate;\n }\n if (typeof this.neustarStatus !== 'undefined') {\n toReturn['neustarStatus'] = this.neustarStatus;\n }\n if (typeof this.factualStatus !== 'undefined') {\n toReturn['factualStatus'] = this.factualStatus;\n }\n if (typeof this.infogroupStatus !== 'undefined') {\n toReturn['infogroupStatus'] = this.infogroupStatus;\n }\n if (typeof this.foursquareStatus !== 'undefined') {\n toReturn['foursquareStatus'] = this.foursquareStatus;\n }\n return toReturn;\n }\n}\nclass InaccurateData {\n static fromProto(proto) {\n let m = new InaccurateData();\n m = Object.assign(m, proto);\n if (proto.inaccurateCount) {\n m.inaccurateCount = parseInt(proto.inaccurateCount, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.inaccurateCount !== 'undefined') {\n toReturn['inaccurateCount'] = this.inaccurateCount;\n }\n if (typeof this.exampleData !== 'undefined') {\n toReturn['exampleData'] = this.exampleData;\n }\n if (typeof this.sourceName !== 'undefined') {\n toReturn['sourceName'] = this.sourceName;\n }\n if (typeof this.exampleListingUrl !== 'undefined') {\n toReturn['exampleListingUrl'] = this.exampleListingUrl;\n }\n return toReturn;\n }\n}\nclass Listing {\n static fromProto(proto) {\n let m = new Listing();\n m = Object.assign(m, proto);\n if (proto.reviewCount) {\n m.reviewCount = parseInt(proto.reviewCount, 10);\n }\n if (proto.status) {\n m.status = enumStringToValue$e(ListingListingStatus, proto.status);\n }\n if (proto.sourceId) {\n m.sourceId = parseInt(proto.sourceId, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.companyName !== 'undefined') {\n toReturn['companyName'] = this.companyName;\n }\n if (typeof this.address !== 'undefined') {\n toReturn['address'] = this.address;\n }\n if (typeof this.city !== 'undefined') {\n toReturn['city'] = this.city;\n }\n if (typeof this.state !== 'undefined') {\n toReturn['state'] = this.state;\n }\n if (typeof this.country !== 'undefined') {\n toReturn['country'] = this.country;\n }\n if (typeof this.zipCode !== 'undefined') {\n toReturn['zipCode'] = this.zipCode;\n }\n if (typeof this.website !== 'undefined') {\n toReturn['website'] = this.website;\n }\n if (typeof this.phone !== 'undefined') {\n toReturn['phone'] = this.phone;\n }\n if (typeof this.url !== 'undefined') {\n toReturn['url'] = this.url;\n }\n if (typeof this.externalId !== 'undefined') {\n toReturn['externalId'] = this.externalId;\n }\n if (typeof this.reviewCount !== 'undefined') {\n toReturn['reviewCount'] = this.reviewCount;\n }\n if (typeof this.reviewRating !== 'undefined') {\n toReturn['reviewRating'] = this.reviewRating;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n if (typeof this.sourceId !== 'undefined') {\n toReturn['sourceId'] = this.sourceId;\n }\n if (typeof this.sourceName !== 'undefined') {\n toReturn['sourceName'] = this.sourceName;\n }\n if (typeof this.sourceIconUrl !== 'undefined') {\n toReturn['sourceIconUrl'] = this.sourceIconUrl;\n }\n if (typeof this.companyNameMatch !== 'undefined') {\n toReturn['companyNameMatch'] = this.companyNameMatch;\n }\n if (typeof this.addressMatch !== 'undefined') {\n toReturn['addressMatch'] = this.addressMatch;\n }\n if (typeof this.phoneMatch !== 'undefined') {\n toReturn['phoneMatch'] = this.phoneMatch;\n }\n return toReturn;\n }\n}\nclass ListingAccuracy {\n static fromProto(proto) {\n let m = new ListingAccuracy();\n m = Object.assign(m, proto);\n if (proto.incorrectPhoneNumber) {\n m.incorrectPhoneNumber = InaccurateData.fromProto(proto.incorrectPhoneNumber);\n }\n if (proto.missingPhoneNumber) {\n m.missingPhoneNumber = InaccurateData.fromProto(proto.missingPhoneNumber);\n }\n if (proto.incorrectAddress) {\n m.incorrectAddress = InaccurateData.fromProto(proto.incorrectAddress);\n }\n if (proto.missingAddress) {\n m.missingAddress = InaccurateData.fromProto(proto.missingAddress);\n }\n if (proto.incorrectWebsite) {\n m.incorrectWebsite = InaccurateData.fromProto(proto.incorrectWebsite);\n }\n if (proto.missingWebsite) {\n m.missingWebsite = InaccurateData.fromProto(proto.missingWebsite);\n }\n if (proto.competitors) {\n m.competitors = proto.competitors.map(ListingAccuracyCompetitor.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.accurateListings !== 'undefined') {\n toReturn['accurateListings'] = this.accurateListings;\n }\n if (typeof this.industryAverageAccurateListings !== 'undefined') {\n toReturn['industryAverageAccurateListings'] = this.industryAverageAccurateListings;\n }\n if (typeof this.incorrectPhoneNumber !== 'undefined' && this.incorrectPhoneNumber !== null) {\n toReturn['incorrectPhoneNumber'] = 'toApiJson' in this.incorrectPhoneNumber ? this.incorrectPhoneNumber.toApiJson() : this.incorrectPhoneNumber;\n }\n if (typeof this.missingPhoneNumber !== 'undefined' && this.missingPhoneNumber !== null) {\n toReturn['missingPhoneNumber'] = 'toApiJson' in this.missingPhoneNumber ? this.missingPhoneNumber.toApiJson() : this.missingPhoneNumber;\n }\n if (typeof this.incorrectAddress !== 'undefined' && this.incorrectAddress !== null) {\n toReturn['incorrectAddress'] = 'toApiJson' in this.incorrectAddress ? this.incorrectAddress.toApiJson() : this.incorrectAddress;\n }\n if (typeof this.missingAddress !== 'undefined' && this.missingAddress !== null) {\n toReturn['missingAddress'] = 'toApiJson' in this.missingAddress ? this.missingAddress.toApiJson() : this.missingAddress;\n }\n if (typeof this.incorrectWebsite !== 'undefined' && this.incorrectWebsite !== null) {\n toReturn['incorrectWebsite'] = 'toApiJson' in this.incorrectWebsite ? this.incorrectWebsite.toApiJson() : this.incorrectWebsite;\n }\n if (typeof this.missingWebsite !== 'undefined' && this.missingWebsite !== null) {\n toReturn['missingWebsite'] = 'toApiJson' in this.missingWebsite ? this.missingWebsite.toApiJson() : this.missingWebsite;\n }\n if (typeof this.competitors !== 'undefined' && this.competitors !== null) {\n toReturn['competitors'] = 'toApiJson' in this.competitors ? this.competitors.toApiJson() : this.competitors;\n }\n return toReturn;\n }\n}\nclass ListingConfig {\n static fromProto(proto) {\n let m = new ListingConfig();\n m = Object.assign(m, proto);\n if (proto.listingPresenceVersion) {\n m.listingPresenceVersion = parseInt(proto.listingPresenceVersion, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.hideContent !== 'undefined') {\n toReturn['hideContent'] = this.hideContent;\n }\n if (typeof this.customizedMessage !== 'undefined') {\n toReturn['customizedMessage'] = this.customizedMessage;\n }\n if (typeof this.hideListingPresence !== 'undefined') {\n toReturn['hideListingPresence'] = this.hideListingPresence;\n }\n if (typeof this.hideListingPresenceFacebook !== 'undefined') {\n toReturn['hideListingPresenceFacebook'] = this.hideListingPresenceFacebook;\n }\n if (typeof this.hideListingPresenceTwitter !== 'undefined') {\n toReturn['hideListingPresenceTwitter'] = this.hideListingPresenceTwitter;\n }\n if (typeof this.hideListingPresenceGoogle !== 'undefined') {\n toReturn['hideListingPresenceGoogle'] = this.hideListingPresenceGoogle;\n }\n if (typeof this.hideListingPresenceMissing !== 'undefined') {\n toReturn['hideListingPresenceMissing'] = this.hideListingPresenceMissing;\n }\n if (typeof this.hideListingAccuracy !== 'undefined') {\n toReturn['hideListingAccuracy'] = this.hideListingAccuracy;\n }\n if (typeof this.hideListingAccuracyMissingPhone !== 'undefined') {\n toReturn['hideListingAccuracyMissingPhone'] = this.hideListingAccuracyMissingPhone;\n }\n if (typeof this.hideListingAccuracyIncorrectPhone !== 'undefined') {\n toReturn['hideListingAccuracyIncorrectPhone'] = this.hideListingAccuracyIncorrectPhone;\n }\n if (typeof this.hideListingAccuracyMissingAddress !== 'undefined') {\n toReturn['hideListingAccuracyMissingAddress'] = this.hideListingAccuracyMissingAddress;\n }\n if (typeof this.hideListingAccuracyIncorrectAddress !== 'undefined') {\n toReturn['hideListingAccuracyIncorrectAddress'] = this.hideListingAccuracyIncorrectAddress;\n }\n if (typeof this.hideListingAccuracyMissingWebsite !== 'undefined') {\n toReturn['hideListingAccuracyMissingWebsite'] = this.hideListingAccuracyMissingWebsite;\n }\n if (typeof this.hideListingAccuracyIncorrectWebsite !== 'undefined') {\n toReturn['hideListingAccuracyIncorrectWebsite'] = this.hideListingAccuracyIncorrectWebsite;\n }\n if (typeof this.hideListingDistribution !== 'undefined') {\n toReturn['hideListingDistribution'] = this.hideListingDistribution;\n }\n if (typeof this.hideListingDistributionContent !== 'undefined') {\n toReturn['hideListingDistributionContent'] = this.hideListingDistributionContent;\n }\n if (typeof this.customizedListingDistributionMessage !== 'undefined') {\n toReturn['customizedListingDistributionMessage'] = this.customizedListingDistributionMessage;\n }\n if (typeof this.hideListingPresenceFoursquare !== 'undefined') {\n toReturn['hideListingPresenceFoursquare'] = this.hideListingPresenceFoursquare;\n }\n if (typeof this.hideFooter !== 'undefined') {\n toReturn['hideFooter'] = this.hideFooter;\n }\n if (typeof this.hideListingScan !== 'undefined') {\n toReturn['hideListingScan'] = this.hideListingScan;\n }\n if (typeof this.customizedFooterMessage !== 'undefined') {\n toReturn['customizedFooterMessage'] = this.customizedFooterMessage;\n }\n if (typeof this.customizedFooterCtaLabel !== 'undefined') {\n toReturn['customizedFooterCtaLabel'] = this.customizedFooterCtaLabel;\n }\n if (typeof this.customizedFooterCtaTargetUrl !== 'undefined') {\n toReturn['customizedFooterCtaTargetUrl'] = this.customizedFooterCtaTargetUrl;\n }\n if (typeof this.customizedFooterCtaTargetProduct !== 'undefined') {\n toReturn['customizedFooterCtaTargetProduct'] = this.customizedFooterCtaTargetProduct;\n }\n if (typeof this.hideListingDetails !== 'undefined') {\n toReturn['hideListingDetails'] = this.hideListingDetails;\n }\n if (typeof this.hideListingPresenceInstagram !== 'undefined') {\n toReturn['hideListingPresenceInstagram'] = this.hideListingPresenceInstagram;\n }\n if (typeof this.listingPresenceVersion !== 'undefined') {\n toReturn['listingPresenceVersion'] = this.listingPresenceVersion;\n }\n return toReturn;\n }\n}\nclass ListingData {\n static fromProto(proto) {\n let m = new ListingData();\n m = Object.assign(m, proto);\n if (proto.listingPresence) {\n m.listingPresence = ListingPresence.fromProto(proto.listingPresence);\n }\n if (proto.listingAccuracy) {\n m.listingAccuracy = ListingAccuracy.fromProto(proto.listingAccuracy);\n }\n if (proto.dataProviderAccuracy) {\n m.dataProviderAccuracy = DataProviderAccuracy.fromProto(proto.dataProviderAccuracy);\n }\n if (proto.listingScan) {\n m.listingScan = ListingScan.fromProto(proto.listingScan);\n }\n if (proto.listings) {\n m.listings = Listings.fromProto(proto.listings);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.listingPresence !== 'undefined' && this.listingPresence !== null) {\n toReturn['listingPresence'] = 'toApiJson' in this.listingPresence ? this.listingPresence.toApiJson() : this.listingPresence;\n }\n if (typeof this.listingAccuracy !== 'undefined' && this.listingAccuracy !== null) {\n toReturn['listingAccuracy'] = 'toApiJson' in this.listingAccuracy ? this.listingAccuracy.toApiJson() : this.listingAccuracy;\n }\n if (typeof this.dataProviderAccuracy !== 'undefined' && this.dataProviderAccuracy !== null) {\n toReturn['dataProviderAccuracy'] = 'toApiJson' in this.dataProviderAccuracy ? this.dataProviderAccuracy.toApiJson() : this.dataProviderAccuracy;\n }\n if (typeof this.listingScan !== 'undefined' && this.listingScan !== null) {\n toReturn['listingScan'] = 'toApiJson' in this.listingScan ? this.listingScan.toApiJson() : this.listingScan;\n }\n if (typeof this.listings !== 'undefined' && this.listings !== null) {\n toReturn['listings'] = 'toApiJson' in this.listings ? this.listings.toApiJson() : this.listings;\n }\n return toReturn;\n }\n}\nclass ListingV2ListingField {\n static fromProto(proto) {\n let m = new ListingV2ListingField();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.value !== 'undefined') {\n toReturn['value'] = this.value;\n }\n if (typeof this.match !== 'undefined') {\n toReturn['match'] = this.match;\n }\n if (typeof this.ignore !== 'undefined') {\n toReturn['ignore'] = this.ignore;\n }\n return toReturn;\n }\n}\nclass ListingPresence {\n static fromProto(proto) {\n let m = new ListingPresence();\n m = Object.assign(m, proto);\n if (proto.foundCount) {\n m.foundCount = parseInt(proto.foundCount, 10);\n }\n if (proto.facebook) {\n m.facebook = ListingSource.fromProto(proto.facebook);\n }\n if (proto.twitter) {\n m.twitter = ListingSource.fromProto(proto.twitter);\n }\n if (proto.foursquare) {\n m.foursquare = ListingSource.fromProto(proto.foursquare);\n }\n if (proto.google) {\n m.google = ListingSource.fromProto(proto.google);\n }\n if (proto.availableSources) {\n m.availableSources = parseInt(proto.availableSources, 10);\n }\n if (proto.competitors) {\n m.competitors = proto.competitors.map(ListingPresenceCompetitor.fromProto);\n }\n if (proto.instagram) {\n m.instagram = ListingSource.fromProto(proto.instagram);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.foundCount !== 'undefined') {\n toReturn['foundCount'] = this.foundCount;\n }\n if (typeof this.industryAverageFound !== 'undefined') {\n toReturn['industryAverageFound'] = this.industryAverageFound;\n }\n if (typeof this.facebook !== 'undefined' && this.facebook !== null) {\n toReturn['facebook'] = 'toApiJson' in this.facebook ? this.facebook.toApiJson() : this.facebook;\n }\n if (typeof this.twitter !== 'undefined' && this.twitter !== null) {\n toReturn['twitter'] = 'toApiJson' in this.twitter ? this.twitter.toApiJson() : this.twitter;\n }\n if (typeof this.foursquare !== 'undefined' && this.foursquare !== null) {\n toReturn['foursquare'] = 'toApiJson' in this.foursquare ? this.foursquare.toApiJson() : this.foursquare;\n }\n if (typeof this.google !== 'undefined' && this.google !== null) {\n toReturn['google'] = 'toApiJson' in this.google ? this.google.toApiJson() : this.google;\n }\n if (typeof this.availableSources !== 'undefined') {\n toReturn['availableSources'] = this.availableSources;\n }\n if (typeof this.competitors !== 'undefined' && this.competitors !== null) {\n toReturn['competitors'] = 'toApiJson' in this.competitors ? this.competitors.toApiJson() : this.competitors;\n }\n if (typeof this.instagram !== 'undefined' && this.instagram !== null) {\n toReturn['instagram'] = 'toApiJson' in this.instagram ? this.instagram.toApiJson() : this.instagram;\n }\n return toReturn;\n }\n}\nclass ListingScan {\n static fromProto(proto) {\n let m = new ListingScan();\n m = Object.assign(m, proto);\n if (proto.listings) {\n m.listings = proto.listings.map(Listing.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.listings !== 'undefined' && this.listings !== null) {\n toReturn['listings'] = 'toApiJson' in this.listings ? this.listings.toApiJson() : this.listings;\n }\n return toReturn;\n }\n}\nclass ListingSection {\n static fromProto(proto) {\n let m = new ListingSection();\n m = Object.assign(m, proto);\n if (proto.grade) {\n m.grade = enumStringToValue$e(Grade, proto.grade);\n }\n if (proto.content) {\n m.content = SectionContent.fromProto(proto.content);\n }\n if (proto.data) {\n m.data = ListingData.fromProto(proto.data);\n }\n if (proto.config) {\n m.config = ListingConfig.fromProto(proto.config);\n }\n if (proto.listingDistributionContent) {\n m.listingDistributionContent = SectionContent.fromProto(proto.listingDistributionContent);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.grade !== 'undefined') {\n toReturn['grade'] = this.grade;\n }\n if (typeof this.content !== 'undefined' && this.content !== null) {\n toReturn['content'] = 'toApiJson' in this.content ? this.content.toApiJson() : this.content;\n }\n if (typeof this.data !== 'undefined' && this.data !== null) {\n toReturn['data'] = 'toApiJson' in this.data ? this.data.toApiJson() : this.data;\n }\n if (typeof this.config !== 'undefined' && this.config !== null) {\n toReturn['config'] = 'toApiJson' in this.config ? this.config.toApiJson() : this.config;\n }\n if (typeof this.listingDistributionContent !== 'undefined' && this.listingDistributionContent !== null) {\n toReturn['listingDistributionContent'] = 'toApiJson' in this.listingDistributionContent ? this.listingDistributionContent.toApiJson() : this.listingDistributionContent;\n }\n return toReturn;\n }\n}\nclass ListingSource {\n static fromProto(proto) {\n let m = new ListingSource();\n m = Object.assign(m, proto);\n if (proto.foundCount) {\n m.foundCount = parseInt(proto.foundCount, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.foundCount !== 'undefined') {\n toReturn['foundCount'] = this.foundCount;\n }\n if (typeof this.exampleListingUrl !== 'undefined') {\n toReturn['exampleListingUrl'] = this.exampleListingUrl;\n }\n if (typeof this.industryAverageFound !== 'undefined') {\n toReturn['industryAverageFound'] = this.industryAverageFound;\n }\n return toReturn;\n }\n}\nclass ListingV2 {\n static fromProto(proto) {\n let m = new ListingV2();\n m = Object.assign(m, proto);\n if (proto.companyName) {\n m.companyName = ListingV2ListingField.fromProto(proto.companyName);\n }\n if (proto.address) {\n m.address = ListingV2ListingField.fromProto(proto.address);\n }\n if (proto.city) {\n m.city = ListingV2ListingField.fromProto(proto.city);\n }\n if (proto.state) {\n m.state = ListingV2ListingField.fromProto(proto.state);\n }\n if (proto.zip) {\n m.zip = ListingV2ListingField.fromProto(proto.zip);\n }\n if (proto.website) {\n m.website = ListingV2ListingField.fromProto(proto.website);\n }\n if (proto.phone) {\n m.phone = ListingV2ListingField.fromProto(proto.phone);\n }\n if (proto.status) {\n m.status = enumStringToValue$e(ListingV2ListingStatus, proto.status);\n }\n if (proto.source) {\n m.source = ListingV2Source.fromProto(proto.source);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.companyName !== 'undefined' && this.companyName !== null) {\n toReturn['companyName'] = 'toApiJson' in this.companyName ? this.companyName.toApiJson() : this.companyName;\n }\n if (typeof this.address !== 'undefined' && this.address !== null) {\n toReturn['address'] = 'toApiJson' in this.address ? this.address.toApiJson() : this.address;\n }\n if (typeof this.city !== 'undefined' && this.city !== null) {\n toReturn['city'] = 'toApiJson' in this.city ? this.city.toApiJson() : this.city;\n }\n if (typeof this.state !== 'undefined' && this.state !== null) {\n toReturn['state'] = 'toApiJson' in this.state ? this.state.toApiJson() : this.state;\n }\n if (typeof this.zip !== 'undefined' && this.zip !== null) {\n toReturn['zip'] = 'toApiJson' in this.zip ? this.zip.toApiJson() : this.zip;\n }\n if (typeof this.website !== 'undefined' && this.website !== null) {\n toReturn['website'] = 'toApiJson' in this.website ? this.website.toApiJson() : this.website;\n }\n if (typeof this.phone !== 'undefined' && this.phone !== null) {\n toReturn['phone'] = 'toApiJson' in this.phone ? this.phone.toApiJson() : this.phone;\n }\n if (typeof this.listingUrl !== 'undefined') {\n toReturn['listingUrl'] = this.listingUrl;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n if (typeof this.source !== 'undefined' && this.source !== null) {\n toReturn['source'] = 'toApiJson' in this.source ? this.source.toApiJson() : this.source;\n }\n return toReturn;\n }\n}\nclass Listings {\n static fromProto(proto) {\n let m = new Listings();\n m = Object.assign(m, proto);\n if (proto.listings) {\n m.listings = proto.listings.map(ListingV2.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.listings !== 'undefined' && this.listings !== null) {\n toReturn['listings'] = 'toApiJson' in this.listings ? this.listings.toApiJson() : this.listings;\n }\n return toReturn;\n }\n}\nclass ListingV2Source {\n static fromProto(proto) {\n let m = new ListingV2Source();\n m = Object.assign(m, proto);\n if (proto.sourceId) {\n m.sourceId = parseInt(proto.sourceId, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sourceId !== 'undefined') {\n toReturn['sourceId'] = this.sourceId;\n }\n if (typeof this.sourceName !== 'undefined') {\n toReturn['sourceName'] = this.sourceName;\n }\n if (typeof this.sourceIconUrl !== 'undefined') {\n toReturn['sourceIconUrl'] = this.sourceIconUrl;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$d(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass ReviewDataCompetitor {\n static fromProto(proto) {\n let m = new ReviewDataCompetitor();\n m = Object.assign(m, proto);\n if (proto.updated) {\n m.updated = new Date(proto.updated);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.snapshotId !== 'undefined') {\n toReturn['snapshotId'] = this.snapshotId;\n }\n if (typeof this.companyName !== 'undefined') {\n toReturn['companyName'] = this.companyName;\n }\n if (typeof this.reviewsFound !== 'undefined') {\n toReturn['reviewsFound'] = this.reviewsFound;\n }\n if (typeof this.averageReviewScore !== 'undefined') {\n toReturn['averageReviewScore'] = this.averageReviewScore;\n }\n if (typeof this.numberOfReviewSources !== 'undefined') {\n toReturn['numberOfReviewSources'] = this.numberOfReviewSources;\n }\n if (typeof this.updated !== 'undefined' && this.updated !== null) {\n toReturn['updated'] = 'toApiJson' in this.updated ? this.updated.toApiJson() : this.updated;\n }\n if (typeof this.reviewsFoundPerMonth !== 'undefined') {\n toReturn['reviewsFoundPerMonth'] = this.reviewsFoundPerMonth;\n }\n return toReturn;\n }\n}\nclass ReviewConfig {\n static fromProto(proto) {\n let m = new ReviewConfig();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.hideContent !== 'undefined') {\n toReturn['hideContent'] = this.hideContent;\n }\n if (typeof this.hideReviewsFound !== 'undefined') {\n toReturn['hideReviewsFound'] = this.hideReviewsFound;\n }\n if (typeof this.hideReviewsFoundPerMonth !== 'undefined') {\n toReturn['hideReviewsFoundPerMonth'] = this.hideReviewsFoundPerMonth;\n }\n if (typeof this.hideAverageReviewScore !== 'undefined') {\n toReturn['hideAverageReviewScore'] = this.hideAverageReviewScore;\n }\n if (typeof this.hideNumberOfReviewSources !== 'undefined') {\n toReturn['hideNumberOfReviewSources'] = this.hideNumberOfReviewSources;\n }\n if (typeof this.customizedMessage !== 'undefined') {\n toReturn['customizedMessage'] = this.customizedMessage;\n }\n if (typeof this.hideFooter !== 'undefined') {\n toReturn['hideFooter'] = this.hideFooter;\n }\n if (typeof this.customizedFooterMessage !== 'undefined') {\n toReturn['customizedFooterMessage'] = this.customizedFooterMessage;\n }\n if (typeof this.customizedFooterCtaLabel !== 'undefined') {\n toReturn['customizedFooterCtaLabel'] = this.customizedFooterCtaLabel;\n }\n if (typeof this.customizedFooterCtaTargetUrl !== 'undefined') {\n toReturn['customizedFooterCtaTargetUrl'] = this.customizedFooterCtaTargetUrl;\n }\n if (typeof this.customizedFooterCtaTargetProduct !== 'undefined') {\n toReturn['customizedFooterCtaTargetProduct'] = this.customizedFooterCtaTargetProduct;\n }\n return toReturn;\n }\n}\nclass ReviewData {\n static fromProto(proto) {\n let m = new ReviewData();\n m = Object.assign(m, proto);\n if (proto.reviewsFound) {\n m.reviewsFound = ReviewDataItem.fromProto(proto.reviewsFound);\n }\n if (proto.reviewsFoundPerMonth) {\n m.reviewsFoundPerMonth = ReviewDataItem.fromProto(proto.reviewsFoundPerMonth);\n }\n if (proto.averageReviewScore) {\n m.averageReviewScore = ReviewDataItem.fromProto(proto.averageReviewScore);\n }\n if (proto.numberOfReviewSources) {\n m.numberOfReviewSources = ReviewDataItem.fromProto(proto.numberOfReviewSources);\n }\n if (proto.sampleSourceCounts) {\n m.sampleSourceCounts = proto.sampleSourceCounts.map(SampleSourceCount.fromProto);\n }\n if (proto.competitors) {\n m.competitors = proto.competitors.map(ReviewDataCompetitor.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.reviewsFound !== 'undefined' && this.reviewsFound !== null) {\n toReturn['reviewsFound'] = 'toApiJson' in this.reviewsFound ? this.reviewsFound.toApiJson() : this.reviewsFound;\n }\n if (typeof this.reviewsFoundPerMonth !== 'undefined' && this.reviewsFoundPerMonth !== null) {\n toReturn['reviewsFoundPerMonth'] = 'toApiJson' in this.reviewsFoundPerMonth ? this.reviewsFoundPerMonth.toApiJson() : this.reviewsFoundPerMonth;\n }\n if (typeof this.averageReviewScore !== 'undefined' && this.averageReviewScore !== null) {\n toReturn['averageReviewScore'] = 'toApiJson' in this.averageReviewScore ? this.averageReviewScore.toApiJson() : this.averageReviewScore;\n }\n if (typeof this.numberOfReviewSources !== 'undefined' && this.numberOfReviewSources !== null) {\n toReturn['numberOfReviewSources'] = 'toApiJson' in this.numberOfReviewSources ? this.numberOfReviewSources.toApiJson() : this.numberOfReviewSources;\n }\n if (typeof this.sampleSourceCounts !== 'undefined' && this.sampleSourceCounts !== null) {\n toReturn['sampleSourceCounts'] = 'toApiJson' in this.sampleSourceCounts ? this.sampleSourceCounts.toApiJson() : this.sampleSourceCounts;\n }\n if (typeof this.competitors !== 'undefined' && this.competitors !== null) {\n toReturn['competitors'] = 'toApiJson' in this.competitors ? this.competitors.toApiJson() : this.competitors;\n }\n return toReturn;\n }\n}\nclass ReviewDataItem {\n static fromProto(proto) {\n let m = new ReviewDataItem();\n m = Object.assign(m, proto);\n if (proto.grade) {\n m.grade = enumStringToValue$d(Grade, proto.grade);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.grade !== 'undefined') {\n toReturn['grade'] = this.grade;\n }\n if (typeof this.business !== 'undefined') {\n toReturn['business'] = this.business;\n }\n if (typeof this.industryAverage !== 'undefined') {\n toReturn['industryAverage'] = this.industryAverage;\n }\n if (typeof this.industryLeader !== 'undefined') {\n toReturn['industryLeader'] = this.industryLeader;\n }\n return toReturn;\n }\n}\nclass ReviewSection {\n static fromProto(proto) {\n let m = new ReviewSection();\n m = Object.assign(m, proto);\n if (proto.grade) {\n m.grade = enumStringToValue$d(Grade, proto.grade);\n }\n if (proto.content) {\n m.content = SectionContent.fromProto(proto.content);\n }\n if (proto.data) {\n m.data = ReviewData.fromProto(proto.data);\n }\n if (proto.config) {\n m.config = ReviewConfig.fromProto(proto.config);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.grade !== 'undefined') {\n toReturn['grade'] = this.grade;\n }\n if (typeof this.content !== 'undefined' && this.content !== null) {\n toReturn['content'] = 'toApiJson' in this.content ? this.content.toApiJson() : this.content;\n }\n if (typeof this.data !== 'undefined' && this.data !== null) {\n toReturn['data'] = 'toApiJson' in this.data ? this.data.toApiJson() : this.data;\n }\n if (typeof this.config !== 'undefined' && this.config !== null) {\n toReturn['config'] = 'toApiJson' in this.config ? this.config.toApiJson() : this.config;\n }\n return toReturn;\n }\n}\nclass SampleSourceCount {\n static fromProto(proto) {\n let m = new SampleSourceCount();\n m = Object.assign(m, proto);\n if (proto.reviewCount) {\n m.reviewCount = parseInt(proto.reviewCount, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sourceName !== 'undefined') {\n toReturn['sourceName'] = this.sourceName;\n }\n if (typeof this.reviewCount !== 'undefined') {\n toReturn['reviewCount'] = this.reviewCount;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$c(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Keyword {\n static fromProto(proto) {\n let m = new Keyword();\n m = Object.assign(m, proto);\n if (proto.position) {\n m.position = parseInt(proto.position, 10);\n }\n if (proto.difficulty) {\n m.difficulty = parseInt(proto.difficulty, 10);\n }\n if (proto.monthlySearchVolume) {\n m.monthlySearchVolume = parseInt(proto.monthlySearchVolume, 10);\n }\n if (proto.monthlyLocalSearchVolume) {\n m.monthlyLocalSearchVolume = parseInt(proto.monthlyLocalSearchVolume, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.term !== 'undefined') {\n toReturn['term'] = this.term;\n }\n if (typeof this.position !== 'undefined') {\n toReturn['position'] = this.position;\n }\n if (typeof this.difficulty !== 'undefined') {\n toReturn['difficulty'] = this.difficulty;\n }\n if (typeof this.monthlyClicks !== 'undefined') {\n toReturn['monthlyClicks'] = this.monthlyClicks;\n }\n if (typeof this.monthlySearchVolume !== 'undefined') {\n toReturn['monthlySearchVolume'] = this.monthlySearchVolume;\n }\n if (typeof this.monthlyLocalSearchVolume !== 'undefined') {\n toReturn['monthlyLocalSearchVolume'] = this.monthlyLocalSearchVolume;\n }\n return toReturn;\n }\n}\nclass KeywordMetrics {\n static fromProto(proto) {\n let m = new KeywordMetrics();\n m = Object.assign(m, proto);\n if (proto.keywords) {\n m.keywords = proto.keywords.map(Keyword.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.domainName !== 'undefined') {\n toReturn['domainName'] = this.domainName;\n }\n if (typeof this.keywords !== 'undefined' && this.keywords !== null) {\n toReturn['keywords'] = 'toApiJson' in this.keywords ? this.keywords.toApiJson() : this.keywords;\n }\n return toReturn;\n }\n}\nclass LatLng {\n static fromProto(proto) {\n let m = new LatLng();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.lat !== 'undefined') {\n toReturn['lat'] = this.lat;\n }\n if (typeof this.lng !== 'undefined') {\n toReturn['lng'] = this.lng;\n }\n if (typeof this.latitude !== 'undefined') {\n toReturn['latitude'] = this.latitude;\n }\n if (typeof this.longitude !== 'undefined') {\n toReturn['longitude'] = this.longitude;\n }\n return toReturn;\n }\n}\nclass LocalSEOData {\n static fromProto(proto) {\n let m = new LocalSEOData();\n m = Object.assign(m, proto);\n if (proto.searches) {\n m.searches = proto.searches.map(SERPMetrics.fromProto);\n }\n if (proto.grade) {\n m.grade = enumStringToValue$c(Grade, proto.grade);\n }\n if (proto.status) {\n m.status = enumStringToValue$c(Status, proto.status);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.searches !== 'undefined' && this.searches !== null) {\n toReturn['searches'] = 'toApiJson' in this.searches ? this.searches.toApiJson() : this.searches;\n }\n if (typeof this.grade !== 'undefined') {\n toReturn['grade'] = this.grade;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n if (typeof this.searchKeyword !== 'undefined') {\n toReturn['searchKeyword'] = this.searchKeyword;\n }\n return toReturn;\n }\n}\nclass OrganicDomainData {\n static fromProto(proto) {\n let m = new OrganicDomainData();\n m = Object.assign(m, proto);\n if (proto.business) {\n m.business = SEODomainMetrics.fromProto(proto.business);\n }\n if (proto.competitors) {\n m.competitors = proto.competitors.map(SEODomainMetrics.fromProto);\n }\n if (proto.grade) {\n m.grade = enumStringToValue$c(Grade, proto.grade);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.business !== 'undefined' && this.business !== null) {\n toReturn['business'] = 'toApiJson' in this.business ? this.business.toApiJson() : this.business;\n }\n if (typeof this.competitors !== 'undefined' && this.competitors !== null) {\n toReturn['competitors'] = 'toApiJson' in this.competitors ? this.competitors.toApiJson() : this.competitors;\n }\n if (typeof this.grade !== 'undefined') {\n toReturn['grade'] = this.grade;\n }\n return toReturn;\n }\n}\nclass OrganicKeywordData {\n static fromProto(proto) {\n let m = new OrganicKeywordData();\n m = Object.assign(m, proto);\n if (proto.business) {\n m.business = KeywordMetrics.fromProto(proto.business);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.business !== 'undefined' && this.business !== null) {\n toReturn['business'] = 'toApiJson' in this.business ? this.business.toApiJson() : this.business;\n }\n return toReturn;\n }\n}\nclass Results {\n static fromProto(proto) {\n let m = new Results();\n m = Object.assign(m, proto);\n if (proto.rank) {\n m.rank = parseInt(proto.rank, 10);\n }\n if (proto.reviews) {\n m.reviews = ResultsReviews.fromProto(proto.reviews);\n }\n if (proto.claimStatus) {\n m.claimStatus = enumStringToValue$c(GMBClaimStatus, proto.claimStatus);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.businessName !== 'undefined') {\n toReturn['businessName'] = this.businessName;\n }\n if (typeof this.address !== 'undefined') {\n toReturn['address'] = this.address;\n }\n if (typeof this.url !== 'undefined') {\n toReturn['url'] = this.url;\n }\n if (typeof this.rank !== 'undefined') {\n toReturn['rank'] = this.rank;\n }\n if (typeof this.isMainBusiness !== 'undefined') {\n toReturn['isMainBusiness'] = this.isMainBusiness;\n }\n if (typeof this.reviews !== 'undefined' && this.reviews !== null) {\n toReturn['reviews'] = 'toApiJson' in this.reviews ? this.reviews.toApiJson() : this.reviews;\n }\n if (typeof this.phoneNumber !== 'undefined') {\n toReturn['phoneNumber'] = this.phoneNumber;\n }\n if (typeof this.claimStatus !== 'undefined') {\n toReturn['claimStatus'] = this.claimStatus;\n }\n return toReturn;\n }\n}\nclass ResultsReviews {\n static fromProto(proto) {\n let m = new ResultsReviews();\n m = Object.assign(m, proto);\n if (proto.count) {\n m.count = parseInt(proto.count, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.rating !== 'undefined') {\n toReturn['rating'] = this.rating;\n }\n if (typeof this.count !== 'undefined') {\n toReturn['count'] = this.count;\n }\n return toReturn;\n }\n}\nclass SEOConfig {\n static fromProto(proto) {\n let m = new SEOConfig();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.hideContent !== 'undefined') {\n toReturn['hideContent'] = this.hideContent;\n }\n if (typeof this.customizedMessage !== 'undefined') {\n toReturn['customizedMessage'] = this.customizedMessage;\n }\n if (typeof this.hideFooter !== 'undefined') {\n toReturn['hideFooter'] = this.hideFooter;\n }\n if (typeof this.hideOrganicSeoData !== 'undefined') {\n toReturn['hideOrganicSeoData'] = this.hideOrganicSeoData;\n }\n if (typeof this.hideOrganicKeywordData !== 'undefined') {\n toReturn['hideOrganicKeywordData'] = this.hideOrganicKeywordData;\n }\n if (typeof this.customizedFooterMessage !== 'undefined') {\n toReturn['customizedFooterMessage'] = this.customizedFooterMessage;\n }\n if (typeof this.customizedFooterCtaLabel !== 'undefined') {\n toReturn['customizedFooterCtaLabel'] = this.customizedFooterCtaLabel;\n }\n if (typeof this.customizedFooterCtaTargetUrl !== 'undefined') {\n toReturn['customizedFooterCtaTargetUrl'] = this.customizedFooterCtaTargetUrl;\n }\n if (typeof this.customizedFooterCtaTargetProduct !== 'undefined') {\n toReturn['customizedFooterCtaTargetProduct'] = this.customizedFooterCtaTargetProduct;\n }\n if (typeof this.hideLocalSeoData !== 'undefined') {\n toReturn['hideLocalSeoData'] = this.hideLocalSeoData;\n }\n if (typeof this.customKeyword !== 'undefined') {\n toReturn['customKeyword'] = this.customKeyword;\n }\n return toReturn;\n }\n}\nclass SEOData {\n static fromProto(proto) {\n let m = new SEOData();\n m = Object.assign(m, proto);\n if (proto.organicDomainData) {\n m.organicDomainData = OrganicDomainData.fromProto(proto.organicDomainData);\n }\n if (proto.organicKeywordData) {\n m.organicKeywordData = OrganicKeywordData.fromProto(proto.organicKeywordData);\n }\n if (proto.localSeoData) {\n m.localSeoData = LocalSEOData.fromProto(proto.localSeoData);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.organicDomainData !== 'undefined' && this.organicDomainData !== null) {\n toReturn['organicDomainData'] = 'toApiJson' in this.organicDomainData ? this.organicDomainData.toApiJson() : this.organicDomainData;\n }\n if (typeof this.organicKeywordData !== 'undefined' && this.organicKeywordData !== null) {\n toReturn['organicKeywordData'] = 'toApiJson' in this.organicKeywordData ? this.organicKeywordData.toApiJson() : this.organicKeywordData;\n }\n if (typeof this.localSeoData !== 'undefined' && this.localSeoData !== null) {\n toReturn['localSeoData'] = 'toApiJson' in this.localSeoData ? this.localSeoData.toApiJson() : this.localSeoData;\n }\n return toReturn;\n }\n}\nclass SEODomainMetrics {\n static fromProto(proto) {\n let m = new SEODomainMetrics();\n m = Object.assign(m, proto);\n if (proto.numberOfOrganicKeywords) {\n m.numberOfOrganicKeywords = parseInt(proto.numberOfOrganicKeywords, 10);\n }\n if (proto.organicClicksPerMonth) {\n m.organicClicksPerMonth = parseInt(proto.organicClicksPerMonth, 10);\n }\n if (proto.dailyOrganicTrafficValue) {\n m.dailyOrganicTrafficValue = parseInt(proto.dailyOrganicTrafficValue, 10);\n }\n if (proto.organicDomainRanking) {\n m.organicDomainRanking = parseInt(proto.organicDomainRanking, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.domainName !== 'undefined') {\n toReturn['domainName'] = this.domainName;\n }\n if (typeof this.numberOfOrganicKeywords !== 'undefined') {\n toReturn['numberOfOrganicKeywords'] = this.numberOfOrganicKeywords;\n }\n if (typeof this.organicClicksPerMonth !== 'undefined') {\n toReturn['organicClicksPerMonth'] = this.organicClicksPerMonth;\n }\n if (typeof this.dailyOrganicTrafficValue !== 'undefined') {\n toReturn['dailyOrganicTrafficValue'] = this.dailyOrganicTrafficValue;\n }\n if (typeof this.organicDomainRanking !== 'undefined') {\n toReturn['organicDomainRanking'] = this.organicDomainRanking;\n }\n if (typeof this.overlap !== 'undefined') {\n toReturn['overlap'] = this.overlap;\n }\n if (typeof this.valuePerClick !== 'undefined') {\n toReturn['valuePerClick'] = this.valuePerClick;\n }\n return toReturn;\n }\n}\nclass SEOSection {\n static fromProto(proto) {\n let m = new SEOSection();\n m = Object.assign(m, proto);\n if (proto.grade) {\n m.grade = enumStringToValue$c(Grade, proto.grade);\n }\n if (proto.content) {\n m.content = SectionContent.fromProto(proto.content);\n }\n if (proto.data) {\n m.data = SEOData.fromProto(proto.data);\n }\n if (proto.config) {\n m.config = SEOConfig.fromProto(proto.config);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.grade !== 'undefined') {\n toReturn['grade'] = this.grade;\n }\n if (typeof this.content !== 'undefined' && this.content !== null) {\n toReturn['content'] = 'toApiJson' in this.content ? this.content.toApiJson() : this.content;\n }\n if (typeof this.data !== 'undefined' && this.data !== null) {\n toReturn['data'] = 'toApiJson' in this.data ? this.data.toApiJson() : this.data;\n }\n if (typeof this.config !== 'undefined' && this.config !== null) {\n toReturn['config'] = 'toApiJson' in this.config ? this.config.toApiJson() : this.config;\n }\n return toReturn;\n }\n}\nclass SERPMetrics {\n static fromProto(proto) {\n let m = new SERPMetrics();\n m = Object.assign(m, proto);\n if (proto.vicinity) {\n m.vicinity = enumStringToValue$c(Vicinity, proto.vicinity);\n }\n if (proto.searchLocation) {\n m.searchLocation = LatLng.fromProto(proto.searchLocation);\n }\n if (proto.results) {\n m.results = proto.results.map(Results.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.searchTerm !== 'undefined') {\n toReturn['searchTerm'] = this.searchTerm;\n }\n if (typeof this.vicinity !== 'undefined') {\n toReturn['vicinity'] = this.vicinity;\n }\n if (typeof this.searchLocation !== 'undefined' && this.searchLocation !== null) {\n toReturn['searchLocation'] = 'toApiJson' in this.searchLocation ? this.searchLocation.toApiJson() : this.searchLocation;\n }\n if (typeof this.results !== 'undefined' && this.results !== null) {\n toReturn['results'] = 'toApiJson' in this.results ? this.results.toApiJson() : this.results;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$b(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Business {\n static fromProto(proto) {\n let m = new Business();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.companyName !== 'undefined') {\n toReturn['companyName'] = this.companyName;\n }\n if (typeof this.address !== 'undefined') {\n toReturn['address'] = this.address;\n }\n if (typeof this.city !== 'undefined') {\n toReturn['city'] = this.city;\n }\n if (typeof this.state !== 'undefined') {\n toReturn['state'] = this.state;\n }\n if (typeof this.zip !== 'undefined') {\n toReturn['zip'] = this.zip;\n }\n if (typeof this.country !== 'undefined') {\n toReturn['country'] = this.country;\n }\n if (typeof this.phoneNumber !== 'undefined') {\n toReturn['phoneNumber'] = this.phoneNumber;\n }\n if (typeof this.website !== 'undefined') {\n toReturn['website'] = this.website;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.marketId !== 'undefined') {\n toReturn['marketId'] = this.marketId;\n }\n return toReturn;\n }\n}\nclass SnapshotLite {\n static fromProto(proto) {\n let m = new SnapshotLite();\n m = Object.assign(m, proto);\n if (proto.business) {\n m.business = Business.fromProto(proto.business);\n }\n if (proto.salesPerson) {\n m.salesPerson = SalesPerson.fromProto(proto.salesPerson);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.business !== 'undefined' && this.business !== null) {\n toReturn['business'] = 'toApiJson' in this.business ? this.business.toApiJson() : this.business;\n }\n if (typeof this.salesPerson !== 'undefined' && this.salesPerson !== null) {\n toReturn['salesPerson'] = 'toApiJson' in this.salesPerson ? this.salesPerson.toApiJson() : this.salesPerson;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$a(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass SocialDataCompetitor {\n static fromProto(proto) {\n let m = new SocialDataCompetitor();\n m = Object.assign(m, proto);\n if (proto.facebookData) {\n m.facebookData = SocialDataCompetitorFacebookData.fromProto(proto.facebookData);\n }\n if (proto.twitterData) {\n m.twitterData = SocialDataCompetitorTwitterData.fromProto(proto.twitterData);\n }\n if (proto.instagramData) {\n m.instagramData = SocialDataCompetitorInstagramData.fromProto(proto.instagramData);\n }\n if (proto.updated) {\n m.updated = new Date(proto.updated);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.snapshotId !== 'undefined') {\n toReturn['snapshotId'] = this.snapshotId;\n }\n if (typeof this.companyName !== 'undefined') {\n toReturn['companyName'] = this.companyName;\n }\n if (typeof this.facebookData !== 'undefined' && this.facebookData !== null) {\n toReturn['facebookData'] = 'toApiJson' in this.facebookData ? this.facebookData.toApiJson() : this.facebookData;\n }\n if (typeof this.twitterData !== 'undefined' && this.twitterData !== null) {\n toReturn['twitterData'] = 'toApiJson' in this.twitterData ? this.twitterData.toApiJson() : this.twitterData;\n }\n if (typeof this.instagramData !== 'undefined' && this.instagramData !== null) {\n toReturn['instagramData'] = 'toApiJson' in this.instagramData ? this.instagramData.toApiJson() : this.instagramData;\n }\n if (typeof this.updated !== 'undefined' && this.updated !== null) {\n toReturn['updated'] = 'toApiJson' in this.updated ? this.updated.toApiJson() : this.updated;\n }\n return toReturn;\n }\n}\nclass SocialDataCompetitorFacebookData {\n static fromProto(proto) {\n let m = new SocialDataCompetitorFacebookData();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.averageSharesPerPost !== 'undefined') {\n toReturn['averageSharesPerPost'] = this.averageSharesPerPost;\n }\n if (typeof this.averageLikesPerPost !== 'undefined') {\n toReturn['averageLikesPerPost'] = this.averageLikesPerPost;\n }\n if (typeof this.likes !== 'undefined') {\n toReturn['likes'] = this.likes;\n }\n if (typeof this.averagePostsPerMonth !== 'undefined') {\n toReturn['averagePostsPerMonth'] = this.averagePostsPerMonth;\n }\n return toReturn;\n }\n}\nclass FacebookData {\n static fromProto(proto) {\n let m = new FacebookData();\n m = Object.assign(m, proto);\n if (proto.averageSharesPerPost) {\n m.averageSharesPerPost = SocialDataItem.fromProto(proto.averageSharesPerPost);\n }\n if (proto.averageLikesPerPost) {\n m.averageLikesPerPost = SocialDataItem.fromProto(proto.averageLikesPerPost);\n }\n if (proto.likes) {\n m.likes = SocialDataItem.fromProto(proto.likes);\n }\n if (proto.posts) {\n m.posts = SocialDataItem.fromProto(proto.posts);\n }\n if (proto.recentPosts) {\n m.recentPosts = proto.recentPosts.map(FacebookPost.fromProto);\n }\n if (proto.averagePostsPerMonth) {\n m.averagePostsPerMonth = SocialDataItem.fromProto(proto.averagePostsPerMonth);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.averageSharesPerPost !== 'undefined' && this.averageSharesPerPost !== null) {\n toReturn['averageSharesPerPost'] = 'toApiJson' in this.averageSharesPerPost ? this.averageSharesPerPost.toApiJson() : this.averageSharesPerPost;\n }\n if (typeof this.averageLikesPerPost !== 'undefined' && this.averageLikesPerPost !== null) {\n toReturn['averageLikesPerPost'] = 'toApiJson' in this.averageLikesPerPost ? this.averageLikesPerPost.toApiJson() : this.averageLikesPerPost;\n }\n if (typeof this.likes !== 'undefined' && this.likes !== null) {\n toReturn['likes'] = 'toApiJson' in this.likes ? this.likes.toApiJson() : this.likes;\n }\n if (typeof this.posts !== 'undefined' && this.posts !== null) {\n toReturn['posts'] = 'toApiJson' in this.posts ? this.posts.toApiJson() : this.posts;\n }\n if (typeof this.recentPosts !== 'undefined' && this.recentPosts !== null) {\n toReturn['recentPosts'] = 'toApiJson' in this.recentPosts ? this.recentPosts.toApiJson() : this.recentPosts;\n }\n if (typeof this.averagePostsPerMonth !== 'undefined' && this.averagePostsPerMonth !== null) {\n toReturn['averagePostsPerMonth'] = 'toApiJson' in this.averagePostsPerMonth ? this.averagePostsPerMonth.toApiJson() : this.averagePostsPerMonth;\n }\n if (typeof this.url !== 'undefined') {\n toReturn['url'] = this.url;\n }\n return toReturn;\n }\n}\nclass FacebookPost {\n static fromProto(proto) {\n let m = new FacebookPost();\n m = Object.assign(m, proto);\n if (proto.posted) {\n m.posted = new Date(proto.posted);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.profileImageUrl !== 'undefined') {\n toReturn['profileImageUrl'] = this.profileImageUrl;\n }\n if (typeof this.profileUrl !== 'undefined') {\n toReturn['profileUrl'] = this.profileUrl;\n }\n if (typeof this.posted !== 'undefined' && this.posted !== null) {\n toReturn['posted'] = 'toApiJson' in this.posted ? this.posted.toApiJson() : this.posted;\n }\n if (typeof this.postText !== 'undefined') {\n toReturn['postText'] = this.postText;\n }\n if (typeof this.postUrl !== 'undefined') {\n toReturn['postUrl'] = this.postUrl;\n }\n if (typeof this.profileName !== 'undefined') {\n toReturn['profileName'] = this.profileName;\n }\n return toReturn;\n }\n}\nclass SocialDataCompetitorInstagramData {\n static fromProto(proto) {\n let m = new SocialDataCompetitorInstagramData();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.followers !== 'undefined') {\n toReturn['followers'] = this.followers;\n }\n if (typeof this.posts !== 'undefined') {\n toReturn['posts'] = this.posts;\n }\n return toReturn;\n }\n}\nclass InstagramData {\n static fromProto(proto) {\n let m = new InstagramData();\n m = Object.assign(m, proto);\n if (proto.followers) {\n m.followers = SocialDataItem.fromProto(proto.followers);\n }\n if (proto.posts) {\n m.posts = SocialDataItem.fromProto(proto.posts);\n }\n if (proto.status) {\n m.status = enumStringToValue$a(InstagramDataInstagramDataStatus, proto.status);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.followers !== 'undefined' && this.followers !== null) {\n toReturn['followers'] = 'toApiJson' in this.followers ? this.followers.toApiJson() : this.followers;\n }\n if (typeof this.posts !== 'undefined' && this.posts !== null) {\n toReturn['posts'] = 'toApiJson' in this.posts ? this.posts.toApiJson() : this.posts;\n }\n if (typeof this.url !== 'undefined') {\n toReturn['url'] = this.url;\n }\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n return toReturn;\n }\n}\nclass SocialConfig {\n static fromProto(proto) {\n let m = new SocialConfig();\n m = Object.assign(m, proto);\n if (proto.selectedFacebookPost) {\n m.selectedFacebookPost = FacebookPost.fromProto(proto.selectedFacebookPost);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.hideContent !== 'undefined') {\n toReturn['hideContent'] = this.hideContent;\n }\n if (typeof this.customizedMessage !== 'undefined') {\n toReturn['customizedMessage'] = this.customizedMessage;\n }\n if (typeof this.hideFacebook !== 'undefined') {\n toReturn['hideFacebook'] = this.hideFacebook;\n }\n if (typeof this.hideFacebookLikes !== 'undefined') {\n toReturn['hideFacebookLikes'] = this.hideFacebookLikes;\n }\n if (typeof this.hideFacebookPosts !== 'undefined') {\n toReturn['hideFacebookPosts'] = this.hideFacebookPosts;\n }\n if (typeof this.hideFacebookAverageLikesPerPost !== 'undefined') {\n toReturn['hideFacebookAverageLikesPerPost'] = this.hideFacebookAverageLikesPerPost;\n }\n if (typeof this.hideFacebookAverageSharesPerPost !== 'undefined') {\n toReturn['hideFacebookAverageSharesPerPost'] = this.hideFacebookAverageSharesPerPost;\n }\n if (typeof this.hideFacebookSelectedPost !== 'undefined') {\n toReturn['hideFacebookSelectedPost'] = this.hideFacebookSelectedPost;\n }\n if (typeof this.selectedFacebookPost !== 'undefined' && this.selectedFacebookPost !== null) {\n toReturn['selectedFacebookPost'] = 'toApiJson' in this.selectedFacebookPost ? this.selectedFacebookPost.toApiJson() : this.selectedFacebookPost;\n }\n if (typeof this.hideTwitter !== 'undefined') {\n toReturn['hideTwitter'] = this.hideTwitter;\n }\n if (typeof this.hideTwitterFollowers !== 'undefined') {\n toReturn['hideTwitterFollowers'] = this.hideTwitterFollowers;\n }\n if (typeof this.hideTwitterFollowing !== 'undefined') {\n toReturn['hideTwitterFollowing'] = this.hideTwitterFollowing;\n }\n if (typeof this.hideTwitterTweets !== 'undefined') {\n toReturn['hideTwitterTweets'] = this.hideTwitterTweets;\n }\n if (typeof this.hideFooter !== 'undefined') {\n toReturn['hideFooter'] = this.hideFooter;\n }\n if (typeof this.hideInstagram !== 'undefined') {\n toReturn['hideInstagram'] = this.hideInstagram;\n }\n if (typeof this.customizedFooterMessage !== 'undefined') {\n toReturn['customizedFooterMessage'] = this.customizedFooterMessage;\n }\n if (typeof this.customizedFooterCtaLabel !== 'undefined') {\n toReturn['customizedFooterCtaLabel'] = this.customizedFooterCtaLabel;\n }\n if (typeof this.customizedFooterCtaTargetUrl !== 'undefined') {\n toReturn['customizedFooterCtaTargetUrl'] = this.customizedFooterCtaTargetUrl;\n }\n if (typeof this.customizedFooterCtaTargetProduct !== 'undefined') {\n toReturn['customizedFooterCtaTargetProduct'] = this.customizedFooterCtaTargetProduct;\n }\n return toReturn;\n }\n}\nclass SocialData {\n static fromProto(proto) {\n let m = new SocialData();\n m = Object.assign(m, proto);\n if (proto.facebookData) {\n m.facebookData = FacebookData.fromProto(proto.facebookData);\n }\n if (proto.twitterData) {\n m.twitterData = TwitterData.fromProto(proto.twitterData);\n }\n if (proto.instagramData) {\n m.instagramData = InstagramData.fromProto(proto.instagramData);\n }\n if (proto.competitors) {\n m.competitors = proto.competitors.map(SocialDataCompetitor.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.facebookData !== 'undefined' && this.facebookData !== null) {\n toReturn['facebookData'] = 'toApiJson' in this.facebookData ? this.facebookData.toApiJson() : this.facebookData;\n }\n if (typeof this.twitterData !== 'undefined' && this.twitterData !== null) {\n toReturn['twitterData'] = 'toApiJson' in this.twitterData ? this.twitterData.toApiJson() : this.twitterData;\n }\n if (typeof this.instagramData !== 'undefined' && this.instagramData !== null) {\n toReturn['instagramData'] = 'toApiJson' in this.instagramData ? this.instagramData.toApiJson() : this.instagramData;\n }\n if (typeof this.competitors !== 'undefined' && this.competitors !== null) {\n toReturn['competitors'] = 'toApiJson' in this.competitors ? this.competitors.toApiJson() : this.competitors;\n }\n return toReturn;\n }\n}\nclass SocialDataItem {\n static fromProto(proto) {\n let m = new SocialDataItem();\n m = Object.assign(m, proto);\n if (proto.grade) {\n m.grade = enumStringToValue$a(Grade, proto.grade);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.grade !== 'undefined') {\n toReturn['grade'] = this.grade;\n }\n if (typeof this.business !== 'undefined') {\n toReturn['business'] = this.business;\n }\n if (typeof this.industryAverage !== 'undefined') {\n toReturn['industryAverage'] = this.industryAverage;\n }\n if (typeof this.industryLeader !== 'undefined') {\n toReturn['industryLeader'] = this.industryLeader;\n }\n return toReturn;\n }\n}\nclass SocialSection {\n static fromProto(proto) {\n let m = new SocialSection();\n m = Object.assign(m, proto);\n if (proto.grade) {\n m.grade = enumStringToValue$a(Grade, proto.grade);\n }\n if (proto.content) {\n m.content = SectionContent.fromProto(proto.content);\n }\n if (proto.data) {\n m.data = SocialData.fromProto(proto.data);\n }\n if (proto.config) {\n m.config = SocialConfig.fromProto(proto.config);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.grade !== 'undefined') {\n toReturn['grade'] = this.grade;\n }\n if (typeof this.content !== 'undefined' && this.content !== null) {\n toReturn['content'] = 'toApiJson' in this.content ? this.content.toApiJson() : this.content;\n }\n if (typeof this.data !== 'undefined' && this.data !== null) {\n toReturn['data'] = 'toApiJson' in this.data ? this.data.toApiJson() : this.data;\n }\n if (typeof this.config !== 'undefined' && this.config !== null) {\n toReturn['config'] = 'toApiJson' in this.config ? this.config.toApiJson() : this.config;\n }\n return toReturn;\n }\n}\nclass SocialDataCompetitorTwitterData {\n static fromProto(proto) {\n let m = new SocialDataCompetitorTwitterData();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.following !== 'undefined') {\n toReturn['following'] = this.following;\n }\n if (typeof this.followers !== 'undefined') {\n toReturn['followers'] = this.followers;\n }\n if (typeof this.tweets !== 'undefined') {\n toReturn['tweets'] = this.tweets;\n }\n return toReturn;\n }\n}\nclass TwitterData {\n static fromProto(proto) {\n let m = new TwitterData();\n m = Object.assign(m, proto);\n if (proto.following) {\n m.following = SocialDataItem.fromProto(proto.following);\n }\n if (proto.followers) {\n m.followers = SocialDataItem.fromProto(proto.followers);\n }\n if (proto.tweets) {\n m.tweets = SocialDataItem.fromProto(proto.tweets);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.following !== 'undefined' && this.following !== null) {\n toReturn['following'] = 'toApiJson' in this.following ? this.following.toApiJson() : this.following;\n }\n if (typeof this.followers !== 'undefined' && this.followers !== null) {\n toReturn['followers'] = 'toApiJson' in this.followers ? this.followers.toApiJson() : this.followers;\n }\n if (typeof this.tweets !== 'undefined' && this.tweets !== null) {\n toReturn['tweets'] = 'toApiJson' in this.tweets ? this.tweets.toApiJson() : this.tweets;\n }\n if (typeof this.url !== 'undefined') {\n toReturn['url'] = this.url;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$9(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Audit {\n static fromProto(proto) {\n let m = new Audit();\n m = Object.assign(m, proto);\n if (proto.details) {\n m.details = proto.details.map(AuditDetail.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.title !== 'undefined') {\n toReturn['title'] = this.title;\n }\n if (typeof this.description !== 'undefined') {\n toReturn['description'] = this.description;\n }\n if (typeof this.score !== 'undefined') {\n toReturn['score'] = this.score;\n }\n if (typeof this.details !== 'undefined' && this.details !== null) {\n toReturn['details'] = 'toApiJson' in this.details ? this.details.toApiJson() : this.details;\n }\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n return toReturn;\n }\n}\nclass AuditDetail {\n static fromProto(proto) {\n let m = new AuditDetail();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.title !== 'undefined') {\n toReturn['title'] = this.title;\n }\n if (typeof this.detailItems !== 'undefined') {\n toReturn['detailItems'] = this.detailItems;\n }\n return toReturn;\n }\n}\nclass AuditSummary {\n static fromProto(proto) {\n let m = new AuditSummary();\n m = Object.assign(m, proto);\n if (proto.grade) {\n m.grade = enumStringToValue$9(Grade, proto.grade);\n }\n if (proto.audits) {\n m.audits = proto.audits.map(Audit.fromProto);\n }\n if (proto.score) {\n m.score = parseInt(proto.score, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.grade !== 'undefined') {\n toReturn['grade'] = this.grade;\n }\n if (typeof this.audits !== 'undefined' && this.audits !== null) {\n toReturn['audits'] = 'toApiJson' in this.audits ? this.audits.toApiJson() : this.audits;\n }\n if (typeof this.locale !== 'undefined') {\n toReturn['locale'] = this.locale;\n }\n if (typeof this.score !== 'undefined') {\n toReturn['score'] = this.score;\n }\n return toReturn;\n }\n}\nclass WebsiteDataCompetitor {\n static fromProto(proto) {\n let m = new WebsiteDataCompetitor();\n m = Object.assign(m, proto);\n if (proto.homepageData) {\n m.homepageData = CompetitorHomepageData.fromProto(proto.homepageData);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.website !== 'undefined') {\n toReturn['website'] = this.website;\n }\n if (typeof this.companyName !== 'undefined') {\n toReturn['companyName'] = this.companyName;\n }\n if (typeof this.homepageData !== 'undefined' && this.homepageData !== null) {\n toReturn['homepageData'] = 'toApiJson' in this.homepageData ? this.homepageData.toApiJson() : this.homepageData;\n }\n return toReturn;\n }\n}\nclass CompetitorHomepageData {\n static fromProto(proto) {\n let m = new CompetitorHomepageData();\n m = Object.assign(m, proto);\n if (proto.size) {\n m.size = parseInt(proto.size, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.size !== 'undefined') {\n toReturn['size'] = this.size;\n }\n if (typeof this.facebookPresent !== 'undefined') {\n toReturn['facebookPresent'] = this.facebookPresent;\n }\n if (typeof this.twitterPresent !== 'undefined') {\n toReturn['twitterPresent'] = this.twitterPresent;\n }\n if (typeof this.instagramPresent !== 'undefined') {\n toReturn['instagramPresent'] = this.instagramPresent;\n }\n if (typeof this.videoPresent !== 'undefined') {\n toReturn['videoPresent'] = this.videoPresent;\n }\n return toReturn;\n }\n}\nclass HomepageData {\n static fromProto(proto) {\n let m = new HomepageData();\n m = Object.assign(m, proto);\n if (proto.grade) {\n m.grade = enumStringToValue$9(Grade, proto.grade);\n }\n if (proto.size) {\n m.size = parseInt(proto.size, 10);\n }\n if (proto.sizeIndustryAverage) {\n m.sizeIndustryAverage = parseInt(proto.sizeIndustryAverage, 10);\n }\n if (proto.score) {\n m.score = parseInt(proto.score, 10);\n }\n if (proto.sizeIndustryPercentiles) {\n m.sizeIndustryPercentiles = IndustryPercentiles.fromProto(proto.sizeIndustryPercentiles);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.grade !== 'undefined') {\n toReturn['grade'] = this.grade;\n }\n if (typeof this.size !== 'undefined') {\n toReturn['size'] = this.size;\n }\n if (typeof this.sizeIndustryAverage !== 'undefined') {\n toReturn['sizeIndustryAverage'] = this.sizeIndustryAverage;\n }\n if (typeof this.facebookPresent !== 'undefined') {\n toReturn['facebookPresent'] = this.facebookPresent;\n }\n if (typeof this.facebookPresentIndustryAverage !== 'undefined') {\n toReturn['facebookPresentIndustryAverage'] = this.facebookPresentIndustryAverage;\n }\n if (typeof this.twitterPresent !== 'undefined') {\n toReturn['twitterPresent'] = this.twitterPresent;\n }\n if (typeof this.twitterPresentIndustryAverage !== 'undefined') {\n toReturn['twitterPresentIndustryAverage'] = this.twitterPresentIndustryAverage;\n }\n if (typeof this.addressPresent !== 'undefined') {\n toReturn['addressPresent'] = this.addressPresent;\n }\n if (typeof this.addressPresentIndustryAverage !== 'undefined') {\n toReturn['addressPresentIndustryAverage'] = this.addressPresentIndustryAverage;\n }\n if (typeof this.phonePresent !== 'undefined') {\n toReturn['phonePresent'] = this.phonePresent;\n }\n if (typeof this.phonePresentIndustryAverage !== 'undefined') {\n toReturn['phonePresentIndustryAverage'] = this.phonePresentIndustryAverage;\n }\n if (typeof this.score !== 'undefined') {\n toReturn['score'] = this.score;\n }\n if (typeof this.sizeIndustryPercentiles !== 'undefined' && this.sizeIndustryPercentiles !== null) {\n toReturn['sizeIndustryPercentiles'] = 'toApiJson' in this.sizeIndustryPercentiles ? this.sizeIndustryPercentiles.toApiJson() : this.sizeIndustryPercentiles;\n }\n if (typeof this.videoPresent !== 'undefined') {\n toReturn['videoPresent'] = this.videoPresent;\n }\n if (typeof this.videoPresentIndustryAverage !== 'undefined') {\n toReturn['videoPresentIndustryAverage'] = this.videoPresentIndustryAverage;\n }\n if (typeof this.instagramPresent !== 'undefined') {\n toReturn['instagramPresent'] = this.instagramPresent;\n }\n if (typeof this.instagramPresentIndustryAverage !== 'undefined') {\n toReturn['instagramPresentIndustryAverage'] = this.instagramPresentIndustryAverage;\n }\n return toReturn;\n }\n}\nclass Rule {\n static fromProto(proto) {\n let m = new Rule();\n m = Object.assign(m, proto);\n if (proto.details) {\n m.details = proto.details.map(RuleDetail.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.summaryHtml !== 'undefined') {\n toReturn['summaryHtml'] = this.summaryHtml;\n }\n if (typeof this.impact !== 'undefined') {\n toReturn['impact'] = this.impact;\n }\n if (typeof this.details !== 'undefined' && this.details !== null) {\n toReturn['details'] = 'toApiJson' in this.details ? this.details.toApiJson() : this.details;\n }\n return toReturn;\n }\n}\nclass RuleDetail {\n static fromProto(proto) {\n let m = new RuleDetail();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.titleHtml !== 'undefined') {\n toReturn['titleHtml'] = this.titleHtml;\n }\n if (typeof this.detailItems !== 'undefined') {\n toReturn['detailItems'] = this.detailItems;\n }\n return toReturn;\n }\n}\nclass RuleSummary {\n static fromProto(proto) {\n let m = new RuleSummary();\n m = Object.assign(m, proto);\n if (proto.grade) {\n m.grade = enumStringToValue$9(Grade, proto.grade);\n }\n if (proto.rules) {\n m.rules = proto.rules.map(Rule.fromProto);\n }\n if (proto.score) {\n m.score = parseInt(proto.score, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.grade !== 'undefined') {\n toReturn['grade'] = this.grade;\n }\n if (typeof this.rules !== 'undefined' && this.rules !== null) {\n toReturn['rules'] = 'toApiJson' in this.rules ? this.rules.toApiJson() : this.rules;\n }\n if (typeof this.locale !== 'undefined') {\n toReturn['locale'] = this.locale;\n }\n if (typeof this.score !== 'undefined') {\n toReturn['score'] = this.score;\n }\n return toReturn;\n }\n}\nclass SSLSummary {\n static fromProto(proto) {\n let m = new SSLSummary();\n m = Object.assign(m, proto);\n if (proto.status) {\n m.status = enumStringToValue$9(SSLSummaryStatus, proto.status);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.status !== 'undefined') {\n toReturn['status'] = this.status;\n }\n return toReturn;\n }\n}\nclass WebsiteConfig {\n static fromProto(proto) {\n let m = new WebsiteConfig();\n m = Object.assign(m, proto);\n if (proto.sectionVersion) {\n m.sectionVersion = parseInt(proto.sectionVersion, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.hideContent !== 'undefined') {\n toReturn['hideContent'] = this.hideContent;\n }\n if (typeof this.customizedMessage !== 'undefined') {\n toReturn['customizedMessage'] = this.customizedMessage;\n }\n if (typeof this.hideMissingWebsiteWarning !== 'undefined') {\n toReturn['hideMissingWebsiteWarning'] = this.hideMissingWebsiteWarning;\n }\n if (typeof this.hideMobile !== 'undefined') {\n toReturn['hideMobile'] = this.hideMobile;\n }\n if (typeof this.hideMobilePreview !== 'undefined') {\n toReturn['hideMobilePreview'] = this.hideMobilePreview;\n }\n if (typeof this.hideDesktop !== 'undefined') {\n toReturn['hideDesktop'] = this.hideDesktop;\n }\n if (typeof this.hideDesktopPreview !== 'undefined') {\n toReturn['hideDesktopPreview'] = this.hideDesktopPreview;\n }\n if (typeof this.hideHomepageContent !== 'undefined') {\n toReturn['hideHomepageContent'] = this.hideHomepageContent;\n }\n if (typeof this.hideFooter !== 'undefined') {\n toReturn['hideFooter'] = this.hideFooter;\n }\n if (typeof this.hideHomepageVideo !== 'undefined') {\n toReturn['hideHomepageVideo'] = this.hideHomepageVideo;\n }\n if (typeof this.customizedFooterMessage !== 'undefined') {\n toReturn['customizedFooterMessage'] = this.customizedFooterMessage;\n }\n if (typeof this.customizedFooterCtaLabel !== 'undefined') {\n toReturn['customizedFooterCtaLabel'] = this.customizedFooterCtaLabel;\n }\n if (typeof this.customizedFooterCtaTargetUrl !== 'undefined') {\n toReturn['customizedFooterCtaTargetUrl'] = this.customizedFooterCtaTargetUrl;\n }\n if (typeof this.customizedFooterCtaTargetProduct !== 'undefined') {\n toReturn['customizedFooterCtaTargetProduct'] = this.customizedFooterCtaTargetProduct;\n }\n if (typeof this.sectionVersion !== 'undefined') {\n toReturn['sectionVersion'] = this.sectionVersion;\n }\n return toReturn;\n }\n}\nclass WebsiteData {\n static fromProto(proto) {\n let m = new WebsiteData();\n m = Object.assign(m, proto);\n if (proto.homepageData) {\n m.homepageData = HomepageData.fromProto(proto.homepageData);\n }\n if (proto.desktopSpeed) {\n m.desktopSpeed = RuleSummary.fromProto(proto.desktopSpeed);\n }\n if (proto.mobileSpeed) {\n m.mobileSpeed = RuleSummary.fromProto(proto.mobileSpeed);\n }\n if (proto.userExperience) {\n m.userExperience = RuleSummary.fromProto(proto.userExperience);\n }\n if (proto.mobileGrade) {\n m.mobileGrade = enumStringToValue$9(Grade, proto.mobileGrade);\n }\n if (proto.desktopInsights) {\n m.desktopInsights = AuditSummary.fromProto(proto.desktopInsights);\n }\n if (proto.mobileInsights) {\n m.mobileInsights = AuditSummary.fromProto(proto.mobileInsights);\n }\n if (proto.competitors) {\n m.competitors = proto.competitors.map(WebsiteDataCompetitor.fromProto);\n }\n if (proto.ssl) {\n m.ssl = SSLSummary.fromProto(proto.ssl);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.homepageData !== 'undefined' && this.homepageData !== null) {\n toReturn['homepageData'] = 'toApiJson' in this.homepageData ? this.homepageData.toApiJson() : this.homepageData;\n }\n if (typeof this.desktopSpeed !== 'undefined' && this.desktopSpeed !== null) {\n toReturn['desktopSpeed'] = 'toApiJson' in this.desktopSpeed ? this.desktopSpeed.toApiJson() : this.desktopSpeed;\n }\n if (typeof this.mobileSpeed !== 'undefined' && this.mobileSpeed !== null) {\n toReturn['mobileSpeed'] = 'toApiJson' in this.mobileSpeed ? this.mobileSpeed.toApiJson() : this.mobileSpeed;\n }\n if (typeof this.userExperience !== 'undefined' && this.userExperience !== null) {\n toReturn['userExperience'] = 'toApiJson' in this.userExperience ? this.userExperience.toApiJson() : this.userExperience;\n }\n if (typeof this.mobileScreenshot !== 'undefined') {\n toReturn['mobileScreenshot'] = this.mobileScreenshot;\n }\n if (typeof this.desktopScreenshot !== 'undefined') {\n toReturn['desktopScreenshot'] = this.desktopScreenshot;\n }\n if (typeof this.mobileGrade !== 'undefined') {\n toReturn['mobileGrade'] = this.mobileGrade;\n }\n if (typeof this.mobileFriendly !== 'undefined') {\n toReturn['mobileFriendly'] = this.mobileFriendly;\n }\n if (typeof this.desktopInsights !== 'undefined' && this.desktopInsights !== null) {\n toReturn['desktopInsights'] = 'toApiJson' in this.desktopInsights ? this.desktopInsights.toApiJson() : this.desktopInsights;\n }\n if (typeof this.mobileInsights !== 'undefined' && this.mobileInsights !== null) {\n toReturn['mobileInsights'] = 'toApiJson' in this.mobileInsights ? this.mobileInsights.toApiJson() : this.mobileInsights;\n }\n if (typeof this.competitors !== 'undefined' && this.competitors !== null) {\n toReturn['competitors'] = 'toApiJson' in this.competitors ? this.competitors.toApiJson() : this.competitors;\n }\n if (typeof this.ssl !== 'undefined' && this.ssl !== null) {\n toReturn['ssl'] = 'toApiJson' in this.ssl ? this.ssl.toApiJson() : this.ssl;\n }\n return toReturn;\n }\n}\nclass WebsiteSection {\n static fromProto(proto) {\n let m = new WebsiteSection();\n m = Object.assign(m, proto);\n if (proto.grade) {\n m.grade = enumStringToValue$9(Grade, proto.grade);\n }\n if (proto.content) {\n m.content = SectionContent.fromProto(proto.content);\n }\n if (proto.data) {\n m.data = WebsiteData.fromProto(proto.data);\n }\n if (proto.config) {\n m.config = WebsiteConfig.fromProto(proto.config);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.grade !== 'undefined') {\n toReturn['grade'] = this.grade;\n }\n if (typeof this.content !== 'undefined' && this.content !== null) {\n toReturn['content'] = 'toApiJson' in this.content ? this.content.toApiJson() : this.content;\n }\n if (typeof this.data !== 'undefined' && this.data !== null) {\n toReturn['data'] = 'toApiJson' in this.data ? this.data.toApiJson() : this.data;\n }\n if (typeof this.config !== 'undefined' && this.config !== null) {\n toReturn['config'] = 'toApiJson' in this.config ? this.config.toApiJson() : this.config;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$8(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Branding {\n static fromProto(proto) {\n let m = new Branding();\n m = Object.assign(m, proto);\n if (proto.assets) {\n m.assets = BrandingAssets.fromProto(proto.assets);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.primaryColor !== 'undefined') {\n toReturn['primaryColor'] = this.primaryColor;\n }\n if (typeof this.assets !== 'undefined' && this.assets !== null) {\n toReturn['assets'] = 'toApiJson' in this.assets ? this.assets.toApiJson() : this.assets;\n }\n if (typeof this.businessCenterName !== 'undefined') {\n toReturn['businessCenterName'] = this.businessCenterName;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.partnerName !== 'undefined') {\n toReturn['partnerName'] = this.partnerName;\n }\n if (typeof this.businessCenterHost !== 'undefined') {\n toReturn['businessCenterHost'] = this.businessCenterHost;\n }\n return toReturn;\n }\n}\nclass BrandingAssets {\n static fromProto(proto) {\n let m = new BrandingAssets();\n m = Object.assign(m, proto);\n if (proto.faviconUrl) {\n m.faviconUrl = URL.fromProto(proto.faviconUrl);\n }\n if (proto.shortcutIconUrl) {\n m.shortcutIconUrl = URL.fromProto(proto.shortcutIconUrl);\n }\n if (proto.logoUrl) {\n m.logoUrl = URL.fromProto(proto.logoUrl);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.faviconUrl !== 'undefined' && this.faviconUrl !== null) {\n toReturn['faviconUrl'] = 'toApiJson' in this.faviconUrl ? this.faviconUrl.toApiJson() : this.faviconUrl;\n }\n if (typeof this.shortcutIconUrl !== 'undefined' && this.shortcutIconUrl !== null) {\n toReturn['shortcutIconUrl'] = 'toApiJson' in this.shortcutIconUrl ? this.shortcutIconUrl.toApiJson() : this.shortcutIconUrl;\n }\n if (typeof this.logoUrl !== 'undefined' && this.logoUrl !== null) {\n toReturn['logoUrl'] = 'toApiJson' in this.logoUrl ? this.logoUrl.toApiJson() : this.logoUrl;\n }\n return toReturn;\n }\n}\nclass URL {\n static fromProto(proto) {\n let m = new URL();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.secure !== 'undefined') {\n toReturn['secure'] = this.secure;\n }\n if (typeof this.insecure !== 'undefined') {\n toReturn['insecure'] = this.insecure;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$7(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Application {\n static fromProto(proto) {\n let m = new Application();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.version !== 'undefined') {\n toReturn['version'] = this.version;\n }\n return toReturn;\n }\n}\nclass EcommerceDataApplicationsAvailabilityEntry {\n static fromProto(proto) {\n let m = new EcommerceDataApplicationsAvailabilityEntry();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.key !== 'undefined') {\n toReturn['key'] = this.key;\n }\n if (typeof this.value !== 'undefined') {\n toReturn['value'] = this.value;\n }\n return toReturn;\n }\n}\nclass EcommerceDataCompetitor {\n static fromProto(proto) {\n let m = new EcommerceDataCompetitor();\n m = Object.assign(m, proto);\n if (proto.ecommerceSolution) {\n m.ecommerceSolution = proto.ecommerceSolution.map(Application.fromProto);\n }\n if (proto.onlinePayments) {\n m.onlinePayments = proto.onlinePayments.map(Application.fromProto);\n }\n if (proto.adRetargeting) {\n m.adRetargeting = proto.adRetargeting.map(Application.fromProto);\n }\n if (proto.appointmentScheduling) {\n m.appointmentScheduling = proto.appointmentScheduling.map(Application.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.website !== 'undefined') {\n toReturn['website'] = this.website;\n }\n if (typeof this.companyName !== 'undefined') {\n toReturn['companyName'] = this.companyName;\n }\n if (typeof this.ecommerceSolution !== 'undefined' && this.ecommerceSolution !== null) {\n toReturn['ecommerceSolution'] = 'toApiJson' in this.ecommerceSolution ? this.ecommerceSolution.toApiJson() : this.ecommerceSolution;\n }\n if (typeof this.onlinePayments !== 'undefined' && this.onlinePayments !== null) {\n toReturn['onlinePayments'] = 'toApiJson' in this.onlinePayments ? this.onlinePayments.toApiJson() : this.onlinePayments;\n }\n if (typeof this.adRetargeting !== 'undefined' && this.adRetargeting !== null) {\n toReturn['adRetargeting'] = 'toApiJson' in this.adRetargeting ? this.adRetargeting.toApiJson() : this.adRetargeting;\n }\n if (typeof this.appointmentScheduling !== 'undefined' && this.appointmentScheduling !== null) {\n toReturn['appointmentScheduling'] = 'toApiJson' in this.appointmentScheduling ? this.appointmentScheduling.toApiJson() : this.appointmentScheduling;\n }\n return toReturn;\n }\n}\nclass EcommerceConfig {\n static fromProto(proto) {\n let m = new EcommerceConfig();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.hideContent !== 'undefined') {\n toReturn['hideContent'] = this.hideContent;\n }\n if (typeof this.customizedMessage !== 'undefined') {\n toReturn['customizedMessage'] = this.customizedMessage;\n }\n if (typeof this.hideFooter !== 'undefined') {\n toReturn['hideFooter'] = this.hideFooter;\n }\n if (typeof this.hideEcommerceSolution !== 'undefined') {\n toReturn['hideEcommerceSolution'] = this.hideEcommerceSolution;\n }\n if (typeof this.hideOnlinePayments !== 'undefined') {\n toReturn['hideOnlinePayments'] = this.hideOnlinePayments;\n }\n if (typeof this.hideDigitalAdvertising !== 'undefined') {\n toReturn['hideDigitalAdvertising'] = this.hideDigitalAdvertising;\n }\n if (typeof this.hideAdRetargeting !== 'undefined') {\n toReturn['hideAdRetargeting'] = this.hideAdRetargeting;\n }\n if (typeof this.customizedFooterMessage !== 'undefined') {\n toReturn['customizedFooterMessage'] = this.customizedFooterMessage;\n }\n if (typeof this.customizedFooterCtaLabel !== 'undefined') {\n toReturn['customizedFooterCtaLabel'] = this.customizedFooterCtaLabel;\n }\n if (typeof this.customizedFooterCtaTargetUrl !== 'undefined') {\n toReturn['customizedFooterCtaTargetUrl'] = this.customizedFooterCtaTargetUrl;\n }\n if (typeof this.customizedFooterCtaTargetProduct !== 'undefined') {\n toReturn['customizedFooterCtaTargetProduct'] = this.customizedFooterCtaTargetProduct;\n }\n if (typeof this.hideAppointmentScheduling !== 'undefined') {\n toReturn['hideAppointmentScheduling'] = this.hideAppointmentScheduling;\n }\n return toReturn;\n }\n}\nclass EcommerceData {\n static fromProto(proto) {\n let m = new EcommerceData();\n m = Object.assign(m, proto);\n if (proto.grade) {\n m.grade = enumStringToValue$7(Grade, proto.grade);\n }\n if (proto.ecommerceSolution) {\n m.ecommerceSolution = proto.ecommerceSolution.map(Application.fromProto);\n }\n if (proto.onlinePayments) {\n m.onlinePayments = proto.onlinePayments.map(Application.fromProto);\n }\n if (proto.digitalAdvertising) {\n m.digitalAdvertising = proto.digitalAdvertising.map(Application.fromProto);\n }\n if (proto.adRetargeting) {\n m.adRetargeting = proto.adRetargeting.map(Application.fromProto);\n }\n if (proto.competitors) {\n m.competitors = proto.competitors.map(EcommerceDataCompetitor.fromProto);\n }\n if (proto.appointmentScheduling) {\n m.appointmentScheduling = proto.appointmentScheduling.map(Application.fromProto);\n }\n if (proto.applicationsAvailability) {\n m.applicationsAvailability = Object.keys(proto.applicationsAvailability).reduce((obj, k) => {\n obj[k] = proto.applicationsAvailability[k];\n return obj;\n }, {});\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.grade !== 'undefined') {\n toReturn['grade'] = this.grade;\n }\n if (typeof this.ecommerceSolution !== 'undefined' && this.ecommerceSolution !== null) {\n toReturn['ecommerceSolution'] = 'toApiJson' in this.ecommerceSolution ? this.ecommerceSolution.toApiJson() : this.ecommerceSolution;\n }\n if (typeof this.onlinePayments !== 'undefined' && this.onlinePayments !== null) {\n toReturn['onlinePayments'] = 'toApiJson' in this.onlinePayments ? this.onlinePayments.toApiJson() : this.onlinePayments;\n }\n if (typeof this.digitalAdvertising !== 'undefined' && this.digitalAdvertising !== null) {\n toReturn['digitalAdvertising'] = 'toApiJson' in this.digitalAdvertising ? this.digitalAdvertising.toApiJson() : this.digitalAdvertising;\n }\n if (typeof this.adRetargeting !== 'undefined' && this.adRetargeting !== null) {\n toReturn['adRetargeting'] = 'toApiJson' in this.adRetargeting ? this.adRetargeting.toApiJson() : this.adRetargeting;\n }\n if (typeof this.competitors !== 'undefined' && this.competitors !== null) {\n toReturn['competitors'] = 'toApiJson' in this.competitors ? this.competitors.toApiJson() : this.competitors;\n }\n if (typeof this.website !== 'undefined') {\n toReturn['website'] = this.website;\n }\n if (typeof this.appointmentScheduling !== 'undefined' && this.appointmentScheduling !== null) {\n toReturn['appointmentScheduling'] = 'toApiJson' in this.appointmentScheduling ? this.appointmentScheduling.toApiJson() : this.appointmentScheduling;\n }\n if (typeof this.applicationsAvailability !== 'undefined' && this.applicationsAvailability !== null) {\n toReturn['applicationsAvailability'] = 'toApiJson' in this.applicationsAvailability ? this.applicationsAvailability.toApiJson() : this.applicationsAvailability;\n }\n return toReturn;\n }\n}\nclass EcommerceSection {\n static fromProto(proto) {\n let m = new EcommerceSection();\n m = Object.assign(m, proto);\n if (proto.grade) {\n m.grade = enumStringToValue$7(Grade, proto.grade);\n }\n if (proto.content) {\n m.content = SectionContent.fromProto(proto.content);\n }\n if (proto.data) {\n m.data = EcommerceData.fromProto(proto.data);\n }\n if (proto.config) {\n m.config = EcommerceConfig.fromProto(proto.config);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.grade !== 'undefined') {\n toReturn['grade'] = this.grade;\n }\n if (typeof this.content !== 'undefined' && this.content !== null) {\n toReturn['content'] = 'toApiJson' in this.content ? this.content.toApiJson() : this.content;\n }\n if (typeof this.data !== 'undefined' && this.data !== null) {\n toReturn['data'] = 'toApiJson' in this.data ? this.data.toApiJson() : this.data;\n }\n if (typeof this.config !== 'undefined' && this.config !== null) {\n toReturn['config'] = 'toApiJson' in this.config ? this.config.toApiJson() : this.config;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$6(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass DirectCompetitor {\n static fromProto(proto) {\n let m = new DirectCompetitor();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.snapshotId !== 'undefined') {\n toReturn['snapshotId'] = this.snapshotId;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$5(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Record {\n static fromProto(proto) {\n let m = new Record();\n m = Object.assign(m, proto);\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.expired) {\n m.expired = new Date(proto.expired);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.snapshotId !== 'undefined') {\n toReturn['snapshotId'] = this.snapshotId;\n }\n if (typeof this.businessId !== 'undefined') {\n toReturn['businessId'] = this.businessId;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.expired !== 'undefined' && this.expired !== null) {\n toReturn['expired'] = 'toApiJson' in this.expired ? this.expired.toApiJson() : this.expired;\n }\n if (typeof this.origin !== 'undefined') {\n toReturn['origin'] = this.origin;\n }\n if (typeof this.createdBy !== 'undefined') {\n toReturn['createdBy'] = this.createdBy;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$4(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass PagedRequestOptions {\n static fromProto(proto) {\n let m = new PagedRequestOptions();\n m = Object.assign(m, proto);\n if (proto.pageSize) {\n m.pageSize = parseInt(proto.pageSize, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.cursor !== 'undefined') {\n toReturn['cursor'] = this.cursor;\n }\n if (typeof this.pageSize !== 'undefined') {\n toReturn['pageSize'] = this.pageSize;\n }\n return toReturn;\n }\n}\nclass PagedResponseMetadata {\n static fromProto(proto) {\n let m = new PagedResponseMetadata();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.nextCursor !== 'undefined') {\n toReturn['nextCursor'] = this.nextCursor;\n }\n if (typeof this.hasMore !== 'undefined') {\n toReturn['hasMore'] = this.hasMore;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$3(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Technology {\n static fromProto(proto) {\n let m = new Technology();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.technologyId !== 'undefined') {\n toReturn['technologyId'] = this.technologyId;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.categoryIds !== 'undefined') {\n toReturn['categoryIds'] = this.categoryIds;\n }\n if (typeof this.website !== 'undefined') {\n toReturn['website'] = this.website;\n }\n if (typeof this.iconName !== 'undefined') {\n toReturn['iconName'] = this.iconName;\n }\n return toReturn;\n }\n}\nclass TechnologyCategory {\n static fromProto(proto) {\n let m = new TechnologyCategory();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.categoryId !== 'undefined') {\n toReturn['categoryId'] = this.categoryId;\n }\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n return toReturn;\n }\n}\nclass TechnologyConfig {\n static fromProto(proto) {\n let m = new TechnologyConfig();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.hideContent !== 'undefined') {\n toReturn['hideContent'] = this.hideContent;\n }\n if (typeof this.customizedMessage !== 'undefined') {\n toReturn['customizedMessage'] = this.customizedMessage;\n }\n if (typeof this.hideFooter !== 'undefined') {\n toReturn['hideFooter'] = this.hideFooter;\n }\n if (typeof this.customizedFooterMessage !== 'undefined') {\n toReturn['customizedFooterMessage'] = this.customizedFooterMessage;\n }\n if (typeof this.customizedFooterCtaLabel !== 'undefined') {\n toReturn['customizedFooterCtaLabel'] = this.customizedFooterCtaLabel;\n }\n if (typeof this.customizedFooterCtaTargetUrl !== 'undefined') {\n toReturn['customizedFooterCtaTargetUrl'] = this.customizedFooterCtaTargetUrl;\n }\n if (typeof this.customizedFooterCtaTargetProduct !== 'undefined') {\n toReturn['customizedFooterCtaTargetProduct'] = this.customizedFooterCtaTargetProduct;\n }\n return toReturn;\n }\n}\nclass TechnologyData {\n static fromProto(proto) {\n let m = new TechnologyData();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.technologyIds !== 'undefined') {\n toReturn['technologyIds'] = this.technologyIds;\n }\n return toReturn;\n }\n}\nclass TechnologySection {\n static fromProto(proto) {\n let m = new TechnologySection();\n m = Object.assign(m, proto);\n if (proto.grade) {\n m.grade = enumStringToValue$3(Grade, proto.grade);\n }\n if (proto.content) {\n m.content = SectionContent.fromProto(proto.content);\n }\n if (proto.data) {\n m.data = TechnologyData.fromProto(proto.data);\n }\n if (proto.config) {\n m.config = TechnologyConfig.fromProto(proto.config);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.grade !== 'undefined') {\n toReturn['grade'] = this.grade;\n }\n if (typeof this.content !== 'undefined' && this.content !== null) {\n toReturn['content'] = 'toApiJson' in this.content ? this.content.toApiJson() : this.content;\n }\n if (typeof this.data !== 'undefined' && this.data !== null) {\n toReturn['data'] = 'toApiJson' in this.data ? this.data.toApiJson() : this.data;\n }\n if (typeof this.config !== 'undefined' && this.config !== null) {\n toReturn['config'] = 'toApiJson' in this.config ? this.config.toApiJson() : this.config;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$2(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass Access {\n static fromProto(proto) {\n let m = new Access();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.scope !== 'undefined') {\n toReturn['scope'] = this.scope;\n }\n if (typeof this.public !== 'undefined') {\n toReturn['public'] = this.public;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue$1(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass AIPrompt {\n static fromProto(proto) {\n let m = new AIPrompt();\n m = Object.assign(m, proto);\n if (proto.role) {\n m.role = enumStringToValue$1(Role, proto.role);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.prompt !== 'undefined') {\n toReturn['prompt'] = this.prompt;\n }\n if (typeof this.role !== 'undefined') {\n toReturn['role'] = this.role;\n }\n return toReturn;\n }\n}\nfunction enumStringToValue(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass CreateSnapshotRequest {\n static fromProto(proto) {\n let m = new CreateSnapshotRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.businessId !== 'undefined') {\n toReturn['businessId'] = this.businessId;\n }\n if (typeof this.snapshotId !== 'undefined') {\n toReturn['snapshotId'] = this.snapshotId;\n }\n if (typeof this.createdBy !== 'undefined') {\n toReturn['createdBy'] = this.createdBy;\n }\n return toReturn;\n }\n}\nclass CreateSnapshotResponse {\n static fromProto(proto) {\n let m = new CreateSnapshotResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.snapshotId !== 'undefined') {\n toReturn['snapshotId'] = this.snapshotId;\n }\n return toReturn;\n }\n}\nclass CreateTechnologyRequest {\n static fromProto(proto) {\n let m = new CreateTechnologyRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.name !== 'undefined') {\n toReturn['name'] = this.name;\n }\n if (typeof this.categoryIds !== 'undefined') {\n toReturn['categoryIds'] = this.categoryIds;\n }\n if (typeof this.website !== 'undefined') {\n toReturn['website'] = this.website;\n }\n if (typeof this.iconName !== 'undefined') {\n toReturn['iconName'] = this.iconName;\n }\n return toReturn;\n }\n}\nclass CreateTechnologyResponse {\n static fromProto(proto) {\n let m = new CreateTechnologyResponse();\n m = Object.assign(m, proto);\n if (proto.technology) {\n m.technology = Technology.fromProto(proto.technology);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.technology !== 'undefined' && this.technology !== null) {\n toReturn['technology'] = 'toApiJson' in this.technology ? this.technology.toApiJson() : this.technology;\n }\n return toReturn;\n }\n}\nclass DeleteTechnologyRequest {\n static fromProto(proto) {\n let m = new DeleteTechnologyRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.technologyId !== 'undefined') {\n toReturn['technologyId'] = this.technologyId;\n }\n return toReturn;\n }\n}\nclass Domain {\n static fromProto(proto) {\n let m = new Domain();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.domain !== 'undefined') {\n toReturn['domain'] = this.domain;\n }\n if (typeof this.secure !== 'undefined') {\n toReturn['secure'] = this.secure;\n }\n return toReturn;\n }\n}\nclass ForceRefreshSectionRequest {\n static fromProto(proto) {\n let m = new ForceRefreshSectionRequest();\n m = Object.assign(m, proto);\n if (proto.sections) {\n m.sections = proto.sections.map(v => enumStringToValue(Section, v));\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.snapshotId !== 'undefined') {\n toReturn['snapshotId'] = this.snapshotId;\n }\n if (typeof this.sections !== 'undefined') {\n toReturn['sections'] = this.sections;\n }\n return toReturn;\n }\n}\nclass GenerateMessageRequest {\n static fromProto(proto) {\n let m = new GenerateMessageRequest();\n m = Object.assign(m, proto);\n if (proto.prompts) {\n m.prompts = proto.prompts.map(AIPrompt.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.snapshotId !== 'undefined') {\n toReturn['snapshotId'] = this.snapshotId;\n }\n if (typeof this.prompts !== 'undefined' && this.prompts !== null) {\n toReturn['prompts'] = 'toApiJson' in this.prompts ? this.prompts.toApiJson() : this.prompts;\n }\n return toReturn;\n }\n}\nclass GenerateMessageResponse {\n static fromProto(proto) {\n let m = new GenerateMessageResponse();\n m = Object.assign(m, proto);\n if (proto.role) {\n m.role = enumStringToValue(Role, proto.role);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.role !== 'undefined') {\n toReturn['role'] = this.role;\n }\n if (typeof this.content !== 'undefined') {\n toReturn['content'] = this.content;\n }\n return toReturn;\n }\n}\nclass GeneratePDFRequest {\n static fromProto(proto) {\n let m = new GeneratePDFRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.snapshotId !== 'undefined') {\n toReturn['snapshotId'] = this.snapshotId;\n }\n return toReturn;\n }\n}\nclass GeneratePDFResponse {\n static fromProto(proto) {\n let m = new GeneratePDFResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.pdf !== 'undefined') {\n toReturn['pdf'] = this.pdf;\n }\n return toReturn;\n }\n}\nclass GetAdvertisingSectionResponse {\n static fromProto(proto) {\n let m = new GetAdvertisingSectionResponse();\n m = Object.assign(m, proto);\n if (proto.section) {\n m.section = AdvertisingSection.fromProto(proto.section);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.section !== 'undefined' && this.section !== null) {\n toReturn['section'] = 'toApiJson' in this.section ? this.section.toApiJson() : this.section;\n }\n return toReturn;\n }\n}\nclass GetAvailableListingSourcesRequest {\n static fromProto(proto) {\n let m = new GetAvailableListingSourcesRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.snapshotId !== 'undefined') {\n toReturn['snapshotId'] = this.snapshotId;\n }\n return toReturn;\n }\n}\nclass GetAvailableListingSourcesResponse {\n static fromProto(proto) {\n let m = new GetAvailableListingSourcesResponse();\n m = Object.assign(m, proto);\n if (proto.sources) {\n m.sources = proto.sources.map(AvailableListingSource.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sources !== 'undefined' && this.sources !== null) {\n toReturn['sources'] = 'toApiJson' in this.sources ? this.sources.toApiJson() : this.sources;\n }\n return toReturn;\n }\n}\nclass GetBusinessIDFromSalesforceIDRequest {\n static fromProto(proto) {\n let m = new GetBusinessIDFromSalesforceIDRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.salesforceId !== 'undefined') {\n toReturn['salesforceId'] = this.salesforceId;\n }\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n return toReturn;\n }\n}\nclass GetBusinessIDFromSalesforceIDResponse {\n static fromProto(proto) {\n let m = new GetBusinessIDFromSalesforceIDResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.businessId !== 'undefined') {\n toReturn['businessId'] = this.businessId;\n }\n return toReturn;\n }\n}\nclass GetConfigurationRequest {\n static fromProto(proto) {\n let m = new GetConfigurationRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.snapshotId !== 'undefined') {\n toReturn['snapshotId'] = this.snapshotId;\n }\n return toReturn;\n }\n}\nclass GetConfigurationResponse {\n static fromProto(proto) {\n let m = new GetConfigurationResponse();\n m = Object.assign(m, proto);\n if (proto.configuration) {\n m.configuration = Configuration.fromProto(proto.configuration);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.configuration !== 'undefined' && this.configuration !== null) {\n toReturn['configuration'] = 'toApiJson' in this.configuration ? this.configuration.toApiJson() : this.configuration;\n }\n return toReturn;\n }\n}\nclass GetCurrentRequest {\n static fromProto(proto) {\n let m = new GetCurrentRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.businessId !== 'undefined') {\n toReturn['businessId'] = this.businessId;\n }\n return toReturn;\n }\n}\nclass GetCurrentResponse {\n static fromProto(proto) {\n let m = new GetCurrentResponse();\n m = Object.assign(m, proto);\n if (proto.snapshot) {\n m.snapshot = Current.fromProto(proto.snapshot);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.snapshot !== 'undefined' && this.snapshot !== null) {\n toReturn['snapshot'] = 'toApiJson' in this.snapshot ? this.snapshot.toApiJson() : this.snapshot;\n }\n return toReturn;\n }\n}\nclass GetDirectCompetitorsRequest {\n static fromProto(proto) {\n let m = new GetDirectCompetitorsRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.snapshotId !== 'undefined') {\n toReturn['snapshotId'] = this.snapshotId;\n }\n return toReturn;\n }\n}\nclass GetDirectCompetitorsResponse {\n static fromProto(proto) {\n let m = new GetDirectCompetitorsResponse();\n m = Object.assign(m, proto);\n if (proto.directCompetitors) {\n m.directCompetitors = proto.directCompetitors.map(DirectCompetitor.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.directCompetitors !== 'undefined' && this.directCompetitors !== null) {\n toReturn['directCompetitors'] = 'toApiJson' in this.directCompetitors ? this.directCompetitors.toApiJson() : this.directCompetitors;\n }\n return toReturn;\n }\n}\nclass GetDomainRequest {\n static fromProto(proto) {\n let m = new GetDomainRequest();\n m = Object.assign(m, proto);\n if (proto.application) {\n m.application = enumStringToValue(AppDomain, proto.application);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.application !== 'undefined') {\n toReturn['application'] = this.application;\n }\n return toReturn;\n }\n}\nclass GetDomainResponse {\n static fromProto(proto) {\n let m = new GetDomainResponse();\n m = Object.assign(m, proto);\n if (proto.primary) {\n m.primary = Domain.fromProto(proto.primary);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.primary !== 'undefined' && this.primary !== null) {\n toReturn['primary'] = 'toApiJson' in this.primary ? this.primary.toApiJson() : this.primary;\n }\n return toReturn;\n }\n}\nclass GetEcommerceSectionResponse {\n static fromProto(proto) {\n let m = new GetEcommerceSectionResponse();\n m = Object.assign(m, proto);\n if (proto.section) {\n m.section = EcommerceSection.fromProto(proto.section);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.section !== 'undefined' && this.section !== null) {\n toReturn['section'] = 'toApiJson' in this.section ? this.section.toApiJson() : this.section;\n }\n return toReturn;\n }\n}\nclass GetLatestSnapshotIDRequest {\n static fromProto(proto) {\n let m = new GetLatestSnapshotIDRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.businessId !== 'undefined') {\n toReturn['businessId'] = this.businessId;\n }\n return toReturn;\n }\n}\nclass GetLatestSnapshotIDResponse {\n static fromProto(proto) {\n let m = new GetLatestSnapshotIDResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.snapshotId !== 'undefined') {\n toReturn['snapshotId'] = this.snapshotId;\n }\n return toReturn;\n }\n}\nclass GetListingScanRequest {\n static fromProto(proto) {\n let m = new GetListingScanRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.businessId !== 'undefined') {\n toReturn['businessId'] = this.businessId;\n }\n return toReturn;\n }\n}\nclass GetListingScanResponse {\n static fromProto(proto) {\n let m = new GetListingScanResponse();\n m = Object.assign(m, proto);\n if (proto.listingScan) {\n m.listingScan = ListingScan.fromProto(proto.listingScan);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.listingScan !== 'undefined' && this.listingScan !== null) {\n toReturn['listingScan'] = 'toApiJson' in this.listingScan ? this.listingScan.toApiJson() : this.listingScan;\n }\n return toReturn;\n }\n}\nclass GetListingSectionResponse {\n static fromProto(proto) {\n let m = new GetListingSectionResponse();\n m = Object.assign(m, proto);\n if (proto.section) {\n m.section = ListingSection.fromProto(proto.section);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.section !== 'undefined' && this.section !== null) {\n toReturn['section'] = 'toApiJson' in this.section ? this.section.toApiJson() : this.section;\n }\n return toReturn;\n }\n}\nclass GetMultiTechnologyCategoryRequest {\n static fromProto(proto) {\n let m = new GetMultiTechnologyCategoryRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.categoryIds !== 'undefined') {\n toReturn['categoryIds'] = this.categoryIds;\n }\n return toReturn;\n }\n}\nclass GetMultiTechnologyCategoryResponse {\n static fromProto(proto) {\n let m = new GetMultiTechnologyCategoryResponse();\n m = Object.assign(m, proto);\n if (proto.technologyCategories) {\n m.technologyCategories = proto.technologyCategories.map(TechnologyCategory.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.technologyCategories !== 'undefined' && this.technologyCategories !== null) {\n toReturn['technologyCategories'] = 'toApiJson' in this.technologyCategories ? this.technologyCategories.toApiJson() : this.technologyCategories;\n }\n return toReturn;\n }\n}\nclass GetMultiTechnologyRequest {\n static fromProto(proto) {\n let m = new GetMultiTechnologyRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.technologyIds !== 'undefined') {\n toReturn['technologyIds'] = this.technologyIds;\n }\n return toReturn;\n }\n}\nclass GetMultiTechnologyResponse {\n static fromProto(proto) {\n let m = new GetMultiTechnologyResponse();\n m = Object.assign(m, proto);\n if (proto.technologies) {\n m.technologies = proto.technologies.map(Technology.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.technologies !== 'undefined' && this.technologies !== null) {\n toReturn['technologies'] = 'toApiJson' in this.technologies ? this.technologies.toApiJson() : this.technologies;\n }\n return toReturn;\n }\n}\nclass GetRequest {\n static fromProto(proto) {\n let m = new GetRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.businessId !== 'undefined') {\n toReturn['businessId'] = this.businessId;\n }\n if (typeof this.snapshotId !== 'undefined') {\n toReturn['snapshotId'] = this.snapshotId;\n }\n return toReturn;\n }\n}\nclass GetResponse {\n static fromProto(proto) {\n let m = new GetResponse();\n m = Object.assign(m, proto);\n if (proto.record) {\n m.record = Record.fromProto(proto.record);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.record !== 'undefined' && this.record !== null) {\n toReturn['record'] = 'toApiJson' in this.record ? this.record.toApiJson() : this.record;\n }\n return toReturn;\n }\n}\nclass GetReviewSectionResponse {\n static fromProto(proto) {\n let m = new GetReviewSectionResponse();\n m = Object.assign(m, proto);\n if (proto.section) {\n m.section = ReviewSection.fromProto(proto.section);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.section !== 'undefined' && this.section !== null) {\n toReturn['section'] = 'toApiJson' in this.section ? this.section.toApiJson() : this.section;\n }\n return toReturn;\n }\n}\nclass GetSEOSectionResponse {\n static fromProto(proto) {\n let m = new GetSEOSectionResponse();\n m = Object.assign(m, proto);\n if (proto.section) {\n m.section = SEOSection.fromProto(proto.section);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.section !== 'undefined' && this.section !== null) {\n toReturn['section'] = 'toApiJson' in this.section ? this.section.toApiJson() : this.section;\n }\n return toReturn;\n }\n}\nclass GetSalesPersonRequest {\n static fromProto(proto) {\n let m = new GetSalesPersonRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.snapshotId !== 'undefined') {\n toReturn['snapshotId'] = this.snapshotId;\n }\n return toReturn;\n }\n}\nclass GetSalesPersonResponse {\n static fromProto(proto) {\n let m = new GetSalesPersonResponse();\n m = Object.assign(m, proto);\n if (proto.salesPerson) {\n m.salesPerson = SalesPerson.fromProto(proto.salesPerson);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.salesPerson !== 'undefined' && this.salesPerson !== null) {\n toReturn['salesPerson'] = 'toApiJson' in this.salesPerson ? this.salesPerson.toApiJson() : this.salesPerson;\n }\n return toReturn;\n }\n}\nclass GetSectionAvailabilityRequest {\n static fromProto(proto) {\n let m = new GetSectionAvailabilityRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.snapshotId !== 'undefined') {\n toReturn['snapshotId'] = this.snapshotId;\n }\n return toReturn;\n }\n}\nclass GetSectionAvailabilityResponse {\n static fromProto(proto) {\n let m = new GetSectionAvailabilityResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.isAvailable !== 'undefined') {\n toReturn['isAvailable'] = this.isAvailable;\n }\n return toReturn;\n }\n}\nclass GetSectionRequest {\n static fromProto(proto) {\n let m = new GetSectionRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.snapshotId !== 'undefined') {\n toReturn['snapshotId'] = this.snapshotId;\n }\n return toReturn;\n }\n}\nclass GetSnapshotCountCreatedBySalespersonIDRequest {\n static fromProto(proto) {\n let m = new GetSnapshotCountCreatedBySalespersonIDRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.marketId !== 'undefined') {\n toReturn['marketId'] = this.marketId;\n }\n if (typeof this.salespersonId !== 'undefined') {\n toReturn['salespersonId'] = this.salespersonId;\n }\n return toReturn;\n }\n}\nclass GetSnapshotCountCreatedBySalespersonIDResponse {\n static fromProto(proto) {\n let m = new GetSnapshotCountCreatedBySalespersonIDResponse();\n m = Object.assign(m, proto);\n if (proto.count) {\n m.count = parseInt(proto.count, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.count !== 'undefined') {\n toReturn['count'] = this.count;\n }\n return toReturn;\n }\n}\nclass GetSnapshotIDRequest {\n static fromProto(proto) {\n let m = new GetSnapshotIDRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.partnerId !== 'undefined') {\n toReturn['partnerId'] = this.partnerId;\n }\n if (typeof this.marketId !== 'undefined') {\n toReturn['marketId'] = this.marketId;\n }\n return toReturn;\n }\n}\nclass GetSnapshotIDResponse {\n static fromProto(proto) {\n let m = new GetSnapshotIDResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.snapshotId !== 'undefined') {\n toReturn['snapshotId'] = this.snapshotId;\n }\n return toReturn;\n }\n}\nclass GetSnapshotLiteRequest {\n static fromProto(proto) {\n let m = new GetSnapshotLiteRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.businessId !== 'undefined') {\n toReturn['businessId'] = this.businessId;\n }\n return toReturn;\n }\n}\nclass GetSnapshotLiteResponse {\n static fromProto(proto) {\n let m = new GetSnapshotLiteResponse();\n m = Object.assign(m, proto);\n if (proto.snapshot) {\n m.snapshot = SnapshotLite.fromProto(proto.snapshot);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.snapshot !== 'undefined' && this.snapshot !== null) {\n toReturn['snapshot'] = 'toApiJson' in this.snapshot ? this.snapshot.toApiJson() : this.snapshot;\n }\n return toReturn;\n }\n}\nclass GetSnapshotRequest {\n static fromProto(proto) {\n let m = new GetSnapshotRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.snapshotId !== 'undefined') {\n toReturn['snapshotId'] = this.snapshotId;\n }\n return toReturn;\n }\n}\nclass GetSnapshotResponse {\n static fromProto(proto) {\n let m = new GetSnapshotResponse();\n m = Object.assign(m, proto);\n if (proto.snapshot) {\n m.snapshot = Snapshot.fromProto(proto.snapshot);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.snapshot !== 'undefined' && this.snapshot !== null) {\n toReturn['snapshot'] = 'toApiJson' in this.snapshot ? this.snapshot.toApiJson() : this.snapshot;\n }\n return toReturn;\n }\n}\nclass GetSocialSectionResponse {\n static fromProto(proto) {\n let m = new GetSocialSectionResponse();\n m = Object.assign(m, proto);\n if (proto.section) {\n m.section = SocialSection.fromProto(proto.section);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.section !== 'undefined' && this.section !== null) {\n toReturn['section'] = 'toApiJson' in this.section ? this.section.toApiJson() : this.section;\n }\n return toReturn;\n }\n}\nclass GetSummaryRequest {\n static fromProto(proto) {\n let m = new GetSummaryRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.snapshotId !== 'undefined') {\n toReturn['snapshotId'] = this.snapshotId;\n }\n return toReturn;\n }\n}\nclass GetSummaryResponse {\n static fromProto(proto) {\n let m = new GetSummaryResponse();\n m = Object.assign(m, proto);\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.expired) {\n m.expired = new Date(proto.expired);\n }\n if (proto.sections) {\n m.sections = proto.sections.map(SectionSummary.fromProto);\n }\n if (proto.location) {\n m.location = Location.fromProto(proto.location);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.snapshotId !== 'undefined') {\n toReturn['snapshotId'] = this.snapshotId;\n }\n if (typeof this.businessId !== 'undefined') {\n toReturn['businessId'] = this.businessId;\n }\n if (typeof this.companyName !== 'undefined') {\n toReturn['companyName'] = this.companyName;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.expired !== 'undefined' && this.expired !== null) {\n toReturn['expired'] = 'toApiJson' in this.expired ? this.expired.toApiJson() : this.expired;\n }\n if (typeof this.score !== 'undefined') {\n toReturn['score'] = this.score;\n }\n if (typeof this.sections !== 'undefined' && this.sections !== null) {\n toReturn['sections'] = 'toApiJson' in this.sections ? this.sections.toApiJson() : this.sections;\n }\n if (typeof this.location !== 'undefined' && this.location !== null) {\n toReturn['location'] = 'toApiJson' in this.location ? this.location.toApiJson() : this.location;\n }\n return toReturn;\n }\n}\nclass GetTechnologyRequest {\n static fromProto(proto) {\n let m = new GetTechnologyRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.technologyId !== 'undefined') {\n toReturn['technologyId'] = this.technologyId;\n }\n return toReturn;\n }\n}\nclass GetTechnologyResponse {\n static fromProto(proto) {\n let m = new GetTechnologyResponse();\n m = Object.assign(m, proto);\n if (proto.technology) {\n m.technology = Technology.fromProto(proto.technology);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.technology !== 'undefined' && this.technology !== null) {\n toReturn['technology'] = 'toApiJson' in this.technology ? this.technology.toApiJson() : this.technology;\n }\n return toReturn;\n }\n}\nclass GetTechnologySectionResponse {\n static fromProto(proto) {\n let m = new GetTechnologySectionResponse();\n m = Object.assign(m, proto);\n if (proto.section) {\n m.section = TechnologySection.fromProto(proto.section);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.section !== 'undefined' && this.section !== null) {\n toReturn['section'] = 'toApiJson' in this.section ? this.section.toApiJson() : this.section;\n }\n return toReturn;\n }\n}\nclass GetWebsiteSectionResponse {\n static fromProto(proto) {\n let m = new GetWebsiteSectionResponse();\n m = Object.assign(m, proto);\n if (proto.section) {\n m.section = WebsiteSection.fromProto(proto.section);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.section !== 'undefined' && this.section !== null) {\n toReturn['section'] = 'toApiJson' in this.section ? this.section.toApiJson() : this.section;\n }\n return toReturn;\n }\n}\nclass GetWhitelabelRequest {\n static fromProto(proto) {\n let m = new GetWhitelabelRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.snapshotId !== 'undefined') {\n toReturn['snapshotId'] = this.snapshotId;\n }\n return toReturn;\n }\n}\nclass GetWhitelabelResponse {\n static fromProto(proto) {\n let m = new GetWhitelabelResponse();\n m = Object.assign(m, proto);\n if (proto.branding) {\n m.branding = Branding.fromProto(proto.branding);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.branding !== 'undefined' && this.branding !== null) {\n toReturn['branding'] = 'toApiJson' in this.branding ? this.branding.toApiJson() : this.branding;\n }\n return toReturn;\n }\n}\nclass IgnoreListingSourceRequest {\n static fromProto(proto) {\n let m = new IgnoreListingSourceRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.snapshotId !== 'undefined') {\n toReturn['snapshotId'] = this.snapshotId;\n }\n if (typeof this.sourceId !== 'undefined') {\n toReturn['sourceId'] = this.sourceId;\n }\n return toReturn;\n }\n}\nclass Location {\n static fromProto(proto) {\n let m = new Location();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.address !== 'undefined') {\n toReturn['address'] = this.address;\n }\n if (typeof this.city !== 'undefined') {\n toReturn['city'] = this.city;\n }\n if (typeof this.state !== 'undefined') {\n toReturn['state'] = this.state;\n }\n if (typeof this.country !== 'undefined') {\n toReturn['country'] = this.country;\n }\n return toReturn;\n }\n}\nclass LookupRequest {\n static fromProto(proto) {\n let m = new LookupRequest();\n m = Object.assign(m, proto);\n if (proto.pagingOptions) {\n m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {\n toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;\n }\n if (typeof this.businessId !== 'undefined') {\n toReturn['businessId'] = this.businessId;\n }\n return toReturn;\n }\n}\nclass LookupResponse {\n static fromProto(proto) {\n let m = new LookupResponse();\n m = Object.assign(m, proto);\n if (proto.record) {\n m.record = proto.record.map(Record.fromProto);\n }\n if (proto.pagingMetadata) {\n m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.record !== 'undefined' && this.record !== null) {\n toReturn['record'] = 'toApiJson' in this.record ? this.record.toApiJson() : this.record;\n }\n if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {\n toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;\n }\n return toReturn;\n }\n}\nclass PreviewEmailRequest {\n static fromProto(proto) {\n let m = new PreviewEmailRequest();\n m = Object.assign(m, proto);\n if (proto.email) {\n m.email = Email.fromProto(proto.email);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.email !== 'undefined' && this.email !== null) {\n toReturn['email'] = 'toApiJson' in this.email ? this.email.toApiJson() : this.email;\n }\n return toReturn;\n }\n}\nclass PreviewEmailResponse {\n static fromProto(proto) {\n let m = new PreviewEmailResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.renderedTemplate !== 'undefined') {\n toReturn['renderedTemplate'] = this.renderedTemplate;\n }\n return toReturn;\n }\n}\nclass PreviewRefreshSnapshotForBusinessesRequest {\n static fromProto(proto) {\n let m = new PreviewRefreshSnapshotForBusinessesRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.businessIds !== 'undefined') {\n toReturn['businessIds'] = this.businessIds;\n }\n return toReturn;\n }\n}\nclass PreviewRefreshSnapshotForBusinessesResponse {\n static fromProto(proto) {\n let m = new PreviewRefreshSnapshotForBusinessesResponse();\n m = Object.assign(m, proto);\n if (proto.total) {\n m.total = parseInt(proto.total, 10);\n }\n if (proto.toRefresh) {\n m.toRefresh = parseInt(proto.toRefresh, 10);\n }\n if (proto.toCreate) {\n m.toCreate = parseInt(proto.toCreate, 10);\n }\n if (proto.unaffected) {\n m.unaffected = parseInt(proto.unaffected, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.total !== 'undefined') {\n toReturn['total'] = this.total;\n }\n if (typeof this.toRefresh !== 'undefined') {\n toReturn['toRefresh'] = this.toRefresh;\n }\n if (typeof this.toCreate !== 'undefined') {\n toReturn['toCreate'] = this.toCreate;\n }\n if (typeof this.unaffected !== 'undefined') {\n toReturn['unaffected'] = this.unaffected;\n }\n return toReturn;\n }\n}\nclass ProvisionSnapshotOptions {\n static fromProto(proto) {\n let m = new ProvisionSnapshotOptions();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.inferMissingData !== 'undefined') {\n toReturn['inferMissingData'] = this.inferMissingData;\n }\n return toReturn;\n }\n}\nclass ProvisionSnapshotRequest {\n static fromProto(proto) {\n let m = new ProvisionSnapshotRequest();\n m = Object.assign(m, proto);\n if (proto.options) {\n m.options = ProvisionSnapshotOptions.fromProto(proto.options);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.businessId !== 'undefined') {\n toReturn['businessId'] = this.businessId;\n }\n if (typeof this.origin !== 'undefined') {\n toReturn['origin'] = this.origin;\n }\n if (typeof this.userId !== 'undefined') {\n toReturn['userId'] = this.userId;\n }\n if (typeof this.options !== 'undefined' && this.options !== null) {\n toReturn['options'] = 'toApiJson' in this.options ? this.options.toApiJson() : this.options;\n }\n return toReturn;\n }\n}\nclass ProvisionSnapshotResponse {\n static fromProto(proto) {\n let m = new ProvisionSnapshotResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.snapshotId !== 'undefined') {\n toReturn['snapshotId'] = this.snapshotId;\n }\n return toReturn;\n }\n}\nclass SaveDirectCompetitorsRequest {\n static fromProto(proto) {\n let m = new SaveDirectCompetitorsRequest();\n m = Object.assign(m, proto);\n if (proto.directCompetitors) {\n m.directCompetitors = proto.directCompetitors.map(DirectCompetitor.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.snapshotId !== 'undefined') {\n toReturn['snapshotId'] = this.snapshotId;\n }\n if (typeof this.directCompetitors !== 'undefined' && this.directCompetitors !== null) {\n toReturn['directCompetitors'] = 'toApiJson' in this.directCompetitors ? this.directCompetitors.toApiJson() : this.directCompetitors;\n }\n return toReturn;\n }\n}\nclass SectionSummary {\n static fromProto(proto) {\n let m = new SectionSummary();\n m = Object.assign(m, proto);\n if (proto.grade) {\n m.grade = enumStringToValue(Grade, proto.grade);\n }\n if (proto.sectionId) {\n m.sectionId = enumStringToValue(Section, proto.sectionId);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sectionName !== 'undefined') {\n toReturn['sectionName'] = this.sectionName;\n }\n if (typeof this.grade !== 'undefined') {\n toReturn['grade'] = this.grade;\n }\n if (typeof this.sectionId !== 'undefined') {\n toReturn['sectionId'] = this.sectionId;\n }\n return toReturn;\n }\n}\nclass ShareSnapshotRequest {\n static fromProto(proto) {\n let m = new ShareSnapshotRequest();\n m = Object.assign(m, proto);\n if (proto.contacts) {\n m.contacts = proto.contacts.map(Contact.fromProto);\n }\n if (proto.sender) {\n m.sender = Contact.fromProto(proto.sender);\n }\n if (proto.email) {\n m.email = Email.fromProto(proto.email);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.contacts !== 'undefined' && this.contacts !== null) {\n toReturn['contacts'] = 'toApiJson' in this.contacts ? this.contacts.toApiJson() : this.contacts;\n }\n if (typeof this.sender !== 'undefined' && this.sender !== null) {\n toReturn['sender'] = 'toApiJson' in this.sender ? this.sender.toApiJson() : this.sender;\n }\n if (typeof this.businessId !== 'undefined') {\n toReturn['businessId'] = this.businessId;\n }\n if (typeof this.snapshotId !== 'undefined') {\n toReturn['snapshotId'] = this.snapshotId;\n }\n if (typeof this.email !== 'undefined' && this.email !== null) {\n toReturn['email'] = 'toApiJson' in this.email ? this.email.toApiJson() : this.email;\n }\n if (typeof this.domain !== 'undefined') {\n toReturn['domain'] = this.domain;\n }\n return toReturn;\n }\n}\nclass UnignoreListingSourceRequest {\n static fromProto(proto) {\n let m = new UnignoreListingSourceRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.snapshotId !== 'undefined') {\n toReturn['snapshotId'] = this.snapshotId;\n }\n if (typeof this.sourceId !== 'undefined') {\n toReturn['sourceId'] = this.sourceId;\n }\n return toReturn;\n }\n}\nclass UpdateAdvertisingConfigRequest {\n static fromProto(proto) {\n let m = new UpdateAdvertisingConfigRequest();\n m = Object.assign(m, proto);\n if (proto.advertisingConfig) {\n m.advertisingConfig = AdvertisingConfig.fromProto(proto.advertisingConfig);\n }\n if (proto.fieldMask) {\n m.fieldMask = FieldMask.fromProto(proto.fieldMask);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.snapshotId !== 'undefined') {\n toReturn['snapshotId'] = this.snapshotId;\n }\n if (typeof this.advertisingConfig !== 'undefined' && this.advertisingConfig !== null) {\n toReturn['advertisingConfig'] = 'toApiJson' in this.advertisingConfig ? this.advertisingConfig.toApiJson() : this.advertisingConfig;\n }\n if (typeof this.fieldMask !== 'undefined' && this.fieldMask !== null) {\n toReturn['fieldMask'] = 'toApiJson' in this.fieldMask ? this.fieldMask.toApiJson() : this.fieldMask;\n }\n return toReturn;\n }\n}\nclass UpdateCurrentRequest {\n static fromProto(proto) {\n let m = new UpdateCurrentRequest();\n m = Object.assign(m, proto);\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.expired) {\n m.expired = new Date(proto.expired);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.businessId !== 'undefined') {\n toReturn['businessId'] = this.businessId;\n }\n if (typeof this.snapshotId !== 'undefined') {\n toReturn['snapshotId'] = this.snapshotId;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.expired !== 'undefined' && this.expired !== null) {\n toReturn['expired'] = 'toApiJson' in this.expired ? this.expired.toApiJson() : this.expired;\n }\n return toReturn;\n }\n}\nclass UpdateEcommerceConfigRequest {\n static fromProto(proto) {\n let m = new UpdateEcommerceConfigRequest();\n m = Object.assign(m, proto);\n if (proto.ecommerceConfig) {\n m.ecommerceConfig = EcommerceConfig.fromProto(proto.ecommerceConfig);\n }\n if (proto.fieldMask) {\n m.fieldMask = FieldMask.fromProto(proto.fieldMask);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.snapshotId !== 'undefined') {\n toReturn['snapshotId'] = this.snapshotId;\n }\n if (typeof this.ecommerceConfig !== 'undefined' && this.ecommerceConfig !== null) {\n toReturn['ecommerceConfig'] = 'toApiJson' in this.ecommerceConfig ? this.ecommerceConfig.toApiJson() : this.ecommerceConfig;\n }\n if (typeof this.fieldMask !== 'undefined' && this.fieldMask !== null) {\n toReturn['fieldMask'] = 'toApiJson' in this.fieldMask ? this.fieldMask.toApiJson() : this.fieldMask;\n }\n return toReturn;\n }\n}\nclass UpdateListingConfigRequest {\n static fromProto(proto) {\n let m = new UpdateListingConfigRequest();\n m = Object.assign(m, proto);\n if (proto.listingConfig) {\n m.listingConfig = ListingConfig.fromProto(proto.listingConfig);\n }\n if (proto.fieldMask) {\n m.fieldMask = FieldMask.fromProto(proto.fieldMask);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.snapshotId !== 'undefined') {\n toReturn['snapshotId'] = this.snapshotId;\n }\n if (typeof this.listingConfig !== 'undefined' && this.listingConfig !== null) {\n toReturn['listingConfig'] = 'toApiJson' in this.listingConfig ? this.listingConfig.toApiJson() : this.listingConfig;\n }\n if (typeof this.fieldMask !== 'undefined' && this.fieldMask !== null) {\n toReturn['fieldMask'] = 'toApiJson' in this.fieldMask ? this.fieldMask.toApiJson() : this.fieldMask;\n }\n return toReturn;\n }\n}\nclass UpdateReviewConfigRequest {\n static fromProto(proto) {\n let m = new UpdateReviewConfigRequest();\n m = Object.assign(m, proto);\n if (proto.reviewConfig) {\n m.reviewConfig = ReviewConfig.fromProto(proto.reviewConfig);\n }\n if (proto.fieldMask) {\n m.fieldMask = FieldMask.fromProto(proto.fieldMask);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.snapshotId !== 'undefined') {\n toReturn['snapshotId'] = this.snapshotId;\n }\n if (typeof this.reviewConfig !== 'undefined' && this.reviewConfig !== null) {\n toReturn['reviewConfig'] = 'toApiJson' in this.reviewConfig ? this.reviewConfig.toApiJson() : this.reviewConfig;\n }\n if (typeof this.fieldMask !== 'undefined' && this.fieldMask !== null) {\n toReturn['fieldMask'] = 'toApiJson' in this.fieldMask ? this.fieldMask.toApiJson() : this.fieldMask;\n }\n return toReturn;\n }\n}\nclass UpdateSEOConfigRequest {\n static fromProto(proto) {\n let m = new UpdateSEOConfigRequest();\n m = Object.assign(m, proto);\n if (proto.seoConfig) {\n m.seoConfig = SEOConfig.fromProto(proto.seoConfig);\n }\n if (proto.fieldMask) {\n m.fieldMask = FieldMask.fromProto(proto.fieldMask);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.snapshotId !== 'undefined') {\n toReturn['snapshotId'] = this.snapshotId;\n }\n if (typeof this.seoConfig !== 'undefined' && this.seoConfig !== null) {\n toReturn['seoConfig'] = 'toApiJson' in this.seoConfig ? this.seoConfig.toApiJson() : this.seoConfig;\n }\n if (typeof this.fieldMask !== 'undefined' && this.fieldMask !== null) {\n toReturn['fieldMask'] = 'toApiJson' in this.fieldMask ? this.fieldMask.toApiJson() : this.fieldMask;\n }\n return toReturn;\n }\n}\nclass UpdateSnapshotConfigRequest {\n static fromProto(proto) {\n let m = new UpdateSnapshotConfigRequest();\n m = Object.assign(m, proto);\n if (proto.config) {\n m.config = GlobalConfig.fromProto(proto.config);\n }\n if (proto.fieldMask) {\n m.fieldMask = FieldMask.fromProto(proto.fieldMask);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.snapshotId !== 'undefined') {\n toReturn['snapshotId'] = this.snapshotId;\n }\n if (typeof this.config !== 'undefined' && this.config !== null) {\n toReturn['config'] = 'toApiJson' in this.config ? this.config.toApiJson() : this.config;\n }\n if (typeof this.fieldMask !== 'undefined' && this.fieldMask !== null) {\n toReturn['fieldMask'] = 'toApiJson' in this.fieldMask ? this.fieldMask.toApiJson() : this.fieldMask;\n }\n return toReturn;\n }\n}\nclass UpdateSnapshotLanguageConfigRequest {\n static fromProto(proto) {\n let m = new UpdateSnapshotLanguageConfigRequest();\n m = Object.assign(m, proto);\n if (proto.config) {\n m.config = LanguageConfig.fromProto(proto.config);\n }\n if (proto.fieldMask) {\n m.fieldMask = FieldMask.fromProto(proto.fieldMask);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.snapshotId !== 'undefined') {\n toReturn['snapshotId'] = this.snapshotId;\n }\n if (typeof this.config !== 'undefined' && this.config !== null) {\n toReturn['config'] = 'toApiJson' in this.config ? this.config.toApiJson() : this.config;\n }\n if (typeof this.fieldMask !== 'undefined' && this.fieldMask !== null) {\n toReturn['fieldMask'] = 'toApiJson' in this.fieldMask ? this.fieldMask.toApiJson() : this.fieldMask;\n }\n return toReturn;\n }\n}\nclass UpdateSnapshotLiteBusinessDataRequest {\n static fromProto(proto) {\n let m = new UpdateSnapshotLiteBusinessDataRequest();\n m = Object.assign(m, proto);\n if (proto.business) {\n m.business = Business.fromProto(proto.business);\n }\n if (proto.fieldMask) {\n m.fieldMask = FieldMask.fromProto(proto.fieldMask);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.businessId !== 'undefined') {\n toReturn['businessId'] = this.businessId;\n }\n if (typeof this.business !== 'undefined' && this.business !== null) {\n toReturn['business'] = 'toApiJson' in this.business ? this.business.toApiJson() : this.business;\n }\n if (typeof this.fieldMask !== 'undefined' && this.fieldMask !== null) {\n toReturn['fieldMask'] = 'toApiJson' in this.fieldMask ? this.fieldMask.toApiJson() : this.fieldMask;\n }\n return toReturn;\n }\n}\nclass UpdateSocialConfigRequest {\n static fromProto(proto) {\n let m = new UpdateSocialConfigRequest();\n m = Object.assign(m, proto);\n if (proto.socialConfig) {\n m.socialConfig = SocialConfig.fromProto(proto.socialConfig);\n }\n if (proto.fieldMask) {\n m.fieldMask = FieldMask.fromProto(proto.fieldMask);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.snapshotId !== 'undefined') {\n toReturn['snapshotId'] = this.snapshotId;\n }\n if (typeof this.socialConfig !== 'undefined' && this.socialConfig !== null) {\n toReturn['socialConfig'] = 'toApiJson' in this.socialConfig ? this.socialConfig.toApiJson() : this.socialConfig;\n }\n if (typeof this.fieldMask !== 'undefined' && this.fieldMask !== null) {\n toReturn['fieldMask'] = 'toApiJson' in this.fieldMask ? this.fieldMask.toApiJson() : this.fieldMask;\n }\n return toReturn;\n }\n}\nclass UpdateTechnologyConfigRequest {\n static fromProto(proto) {\n let m = new UpdateTechnologyConfigRequest();\n m = Object.assign(m, proto);\n if (proto.technologyConfig) {\n m.technologyConfig = TechnologyConfig.fromProto(proto.technologyConfig);\n }\n if (proto.fieldMask) {\n m.fieldMask = FieldMask.fromProto(proto.fieldMask);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.snapshotId !== 'undefined') {\n toReturn['snapshotId'] = this.snapshotId;\n }\n if (typeof this.technologyConfig !== 'undefined' && this.technologyConfig !== null) {\n toReturn['technologyConfig'] = 'toApiJson' in this.technologyConfig ? this.technologyConfig.toApiJson() : this.technologyConfig;\n }\n if (typeof this.fieldMask !== 'undefined' && this.fieldMask !== null) {\n toReturn['fieldMask'] = 'toApiJson' in this.fieldMask ? this.fieldMask.toApiJson() : this.fieldMask;\n }\n return toReturn;\n }\n}\nclass UpdateTechnologyRequest {\n static fromProto(proto) {\n let m = new UpdateTechnologyRequest();\n m = Object.assign(m, proto);\n if (proto.technology) {\n m.technology = Technology.fromProto(proto.technology);\n }\n if (proto.fieldMask) {\n m.fieldMask = FieldMask.fromProto(proto.fieldMask);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.technologyId !== 'undefined') {\n toReturn['technologyId'] = this.technologyId;\n }\n if (typeof this.technology !== 'undefined' && this.technology !== null) {\n toReturn['technology'] = 'toApiJson' in this.technology ? this.technology.toApiJson() : this.technology;\n }\n if (typeof this.fieldMask !== 'undefined' && this.fieldMask !== null) {\n toReturn['fieldMask'] = 'toApiJson' in this.fieldMask ? this.fieldMask.toApiJson() : this.fieldMask;\n }\n return toReturn;\n }\n}\nclass UpdateWebsiteConfigRequest {\n static fromProto(proto) {\n let m = new UpdateWebsiteConfigRequest();\n m = Object.assign(m, proto);\n if (proto.websiteConfig) {\n m.websiteConfig = WebsiteConfig.fromProto(proto.websiteConfig);\n }\n if (proto.fieldMask) {\n m.fieldMask = FieldMask.fromProto(proto.fieldMask);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.snapshotId !== 'undefined') {\n toReturn['snapshotId'] = this.snapshotId;\n }\n if (typeof this.websiteConfig !== 'undefined' && this.websiteConfig !== null) {\n toReturn['websiteConfig'] = 'toApiJson' in this.websiteConfig ? this.websiteConfig.toApiJson() : this.websiteConfig;\n }\n if (typeof this.fieldMask !== 'undefined' && this.fieldMask !== null) {\n toReturn['fieldMask'] = 'toApiJson' in this.fieldMask ? this.fieldMask.toApiJson() : this.fieldMask;\n }\n return toReturn;\n }\n}\n\n// *********************************\n\nconst environment = (window ? window['environment'] : 'prod') ?? 'prod';\nconst hostMap = {\n 'local': 'snapshot-api.vendasta-local.com',\n 'test': '',\n 'demo': 'snapshot-api-demo.apigateway.co',\n 'prod': 'snapshot-api-prod.apigateway.co',\n 'production': 'snapshot-api-prod.apigateway.co'\n};\nlet HostService = /*#__PURE__*/(() => {\n class HostService {\n get host() {\n return hostMap[environment.toLowerCase()];\n }\n get hostWithScheme() {\n return 'https://' + this.host;\n }\n }\n HostService.ɵfac = function HostService_Factory(t) {\n return new (t || HostService)();\n };\n HostService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: HostService,\n factory: HostService.ɵfac,\n providedIn: 'root'\n });\n return HostService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\nlet AdvertisingSectionApiService = /*#__PURE__*/(() => {\n class AdvertisingSectionApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n get(r) {\n const request = r.toApiJson ? r : new GetSectionRequest(r);\n return this.http.post(this._host + \"/snapshot.v1.AdvertisingSectionService/Get\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetAdvertisingSectionResponse.fromProto(resp)));\n }\n updateConfig(r) {\n const request = r.toApiJson ? r : new UpdateAdvertisingConfigRequest(r);\n return this.http.post(this._host + \"/snapshot.v1.AdvertisingSectionService/UpdateConfig\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n }\n AdvertisingSectionApiService.ɵfac = function AdvertisingSectionApiService_Factory(t) {\n return new (t || AdvertisingSectionApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n AdvertisingSectionApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: AdvertisingSectionApiService,\n factory: AdvertisingSectionApiService.ɵfac,\n providedIn: 'root'\n });\n return AdvertisingSectionApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\nlet ArtificialIntelligenceApiService = /*#__PURE__*/(() => {\n class ArtificialIntelligenceApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n generateMessage(r) {\n const request = r.toApiJson ? r : new GenerateMessageRequest(r);\n return this.http.post(this._host + \"/snapshot.v1.ArtificialIntelligence/GenerateMessage\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GenerateMessageResponse.fromProto(resp)));\n }\n }\n ArtificialIntelligenceApiService.ɵfac = function ArtificialIntelligenceApiService_Factory(t) {\n return new (t || ArtificialIntelligenceApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n ArtificialIntelligenceApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ArtificialIntelligenceApiService,\n factory: ArtificialIntelligenceApiService.ɵfac,\n providedIn: 'root'\n });\n return ArtificialIntelligenceApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\nlet CurrentSnapshotApiService = /*#__PURE__*/(() => {\n class CurrentSnapshotApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n updateCurrent(r) {\n const request = r.toApiJson ? r : new UpdateCurrentRequest(r);\n return this.http.post(this._host + \"/snapshot.v1.CurrentSnapshot/UpdateCurrent\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getCurrent(r) {\n const request = r.toApiJson ? r : new GetCurrentRequest(r);\n return this.http.post(this._host + \"/snapshot.v1.CurrentSnapshot/GetCurrent\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetCurrentResponse.fromProto(resp)));\n }\n }\n CurrentSnapshotApiService.ɵfac = function CurrentSnapshotApiService_Factory(t) {\n return new (t || CurrentSnapshotApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n CurrentSnapshotApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: CurrentSnapshotApiService,\n factory: CurrentSnapshotApiService.ɵfac,\n providedIn: 'root'\n });\n return CurrentSnapshotApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\nlet EcommerceSectionApiService = /*#__PURE__*/(() => {\n class EcommerceSectionApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n get(r) {\n const request = r.toApiJson ? r : new GetSectionRequest(r);\n return this.http.post(this._host + \"/snapshot.v1.EcommerceSectionService/Get\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetEcommerceSectionResponse.fromProto(resp)));\n }\n updateConfig(r) {\n const request = r.toApiJson ? r : new UpdateEcommerceConfigRequest(r);\n return this.http.post(this._host + \"/snapshot.v1.EcommerceSectionService/UpdateConfig\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getSectionAvailability(r) {\n const request = r.toApiJson ? r : new GetSectionAvailabilityRequest(r);\n return this.http.post(this._host + \"/snapshot.v1.EcommerceSectionService/GetSectionAvailability\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetSectionAvailabilityResponse.fromProto(resp)));\n }\n }\n EcommerceSectionApiService.ɵfac = function EcommerceSectionApiService_Factory(t) {\n return new (t || EcommerceSectionApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n EcommerceSectionApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: EcommerceSectionApiService,\n factory: EcommerceSectionApiService.ɵfac,\n providedIn: 'root'\n });\n return EcommerceSectionApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\nlet ListingSectionApiService = /*#__PURE__*/(() => {\n class ListingSectionApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n get(r) {\n const request = r.toApiJson ? r : new GetSectionRequest(r);\n return this.http.post(this._host + \"/snapshot.v1.ListingSectionService/Get\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetListingSectionResponse.fromProto(resp)));\n }\n updateConfig(r) {\n const request = r.toApiJson ? r : new UpdateListingConfigRequest(r);\n return this.http.post(this._host + \"/snapshot.v1.ListingSectionService/UpdateConfig\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getListingScan(r) {\n const request = r.toApiJson ? r : new GetListingScanRequest(r);\n return this.http.post(this._host + \"/snapshot.v1.ListingSectionService/GetListingScan\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetListingScanResponse.fromProto(resp)));\n }\n getAvailableListingSources(r) {\n const request = r.toApiJson ? r : new GetAvailableListingSourcesRequest(r);\n return this.http.post(this._host + \"/snapshot.v1.ListingSectionService/GetAvailableListingSources\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetAvailableListingSourcesResponse.fromProto(resp)));\n }\n ignoreListingSource(r) {\n const request = r.toApiJson ? r : new IgnoreListingSourceRequest(r);\n return this.http.post(this._host + \"/snapshot.v1.ListingSectionService/IgnoreListingSource\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n unignoreListingSource(r) {\n const request = r.toApiJson ? r : new UnignoreListingSourceRequest(r);\n return this.http.post(this._host + \"/snapshot.v1.ListingSectionService/UnignoreListingSource\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n }\n ListingSectionApiService.ɵfac = function ListingSectionApiService_Factory(t) {\n return new (t || ListingSectionApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n ListingSectionApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ListingSectionApiService,\n factory: ListingSectionApiService.ɵfac,\n providedIn: 'root'\n });\n return ListingSectionApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\nlet ReviewSectionApiService = /*#__PURE__*/(() => {\n class ReviewSectionApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n get(r) {\n const request = r.toApiJson ? r : new GetSectionRequest(r);\n return this.http.post(this._host + \"/snapshot.v1.ReviewSectionService/Get\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetReviewSectionResponse.fromProto(resp)));\n }\n updateConfig(r) {\n const request = r.toApiJson ? r : new UpdateReviewConfigRequest(r);\n return this.http.post(this._host + \"/snapshot.v1.ReviewSectionService/UpdateConfig\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n }\n ReviewSectionApiService.ɵfac = function ReviewSectionApiService_Factory(t) {\n return new (t || ReviewSectionApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n ReviewSectionApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ReviewSectionApiService,\n factory: ReviewSectionApiService.ɵfac,\n providedIn: 'root'\n });\n return ReviewSectionApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\nlet SEOSectionApiService = /*#__PURE__*/(() => {\n class SEOSectionApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n get(r) {\n const request = r.toApiJson ? r : new GetSectionRequest(r);\n return this.http.post(this._host + \"/snapshot.v1.SEOSectionService/Get\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetSEOSectionResponse.fromProto(resp)));\n }\n updateConfig(r) {\n const request = r.toApiJson ? r : new UpdateSEOConfigRequest(r);\n return this.http.post(this._host + \"/snapshot.v1.SEOSectionService/UpdateConfig\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n }\n SEOSectionApiService.ɵfac = function SEOSectionApiService_Factory(t) {\n return new (t || SEOSectionApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n SEOSectionApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: SEOSectionApiService,\n factory: SEOSectionApiService.ɵfac,\n providedIn: 'root'\n });\n return SEOSectionApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\nlet SnapshotLiteApiService = /*#__PURE__*/(() => {\n class SnapshotLiteApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n get(r) {\n const request = r.toApiJson ? r : new GetSnapshotLiteRequest(r);\n return this.http.post(this._host + \"/snapshot.v1.SnapshotLiteService/Get\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetSnapshotLiteResponse.fromProto(resp)));\n }\n updateSnapshotLiteBusinessData(r) {\n const request = r.toApiJson ? r : new UpdateSnapshotLiteBusinessDataRequest(r);\n return this.http.post(this._host + \"/snapshot.v1.SnapshotLiteService/UpdateSnapshotLiteBusinessData\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n }\n SnapshotLiteApiService.ɵfac = function SnapshotLiteApiService_Factory(t) {\n return new (t || SnapshotLiteApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n SnapshotLiteApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: SnapshotLiteApiService,\n factory: SnapshotLiteApiService.ɵfac,\n providedIn: 'root'\n });\n return SnapshotLiteApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\nlet SnapshotRecordApiService = /*#__PURE__*/(() => {\n class SnapshotRecordApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n get(r) {\n const request = r.toApiJson ? r : new GetRequest(r);\n return this.http.post(this._host + \"/snapshot.v1.SnapshotRecord/Get\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetResponse.fromProto(resp)));\n }\n lookup(r) {\n const request = r.toApiJson ? r : new LookupRequest(r);\n return this.http.post(this._host + \"/snapshot.v1.SnapshotRecord/Lookup\", request.toApiJson(), this.apiOptions()).pipe(map(resp => LookupResponse.fromProto(resp)));\n }\n }\n SnapshotRecordApiService.ɵfac = function SnapshotRecordApiService_Factory(t) {\n return new (t || SnapshotRecordApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n SnapshotRecordApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: SnapshotRecordApiService,\n factory: SnapshotRecordApiService.ɵfac,\n providedIn: 'root'\n });\n return SnapshotRecordApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\nlet SnapshotApiService = /*#__PURE__*/(() => {\n class SnapshotApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n create(r) {\n const request = r.toApiJson ? r : new CreateSnapshotRequest(r);\n return this.http.post(this._host + \"/snapshot.v1.SnapshotService/Create\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CreateSnapshotResponse.fromProto(resp)));\n }\n get(r) {\n const request = r.toApiJson ? r : new GetSnapshotRequest(r);\n return this.http.post(this._host + \"/snapshot.v1.SnapshotService/Get\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetSnapshotResponse.fromProto(resp)));\n }\n updateConfig(r) {\n const request = r.toApiJson ? r : new UpdateSnapshotConfigRequest(r);\n return this.http.post(this._host + \"/snapshot.v1.SnapshotService/UpdateConfig\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n updateLanguageConfig(r) {\n const request = r.toApiJson ? r : new UpdateSnapshotLanguageConfigRequest(r);\n return this.http.post(this._host + \"/snapshot.v1.SnapshotService/UpdateLanguageConfig\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getSnapshotId(r) {\n const request = r.toApiJson ? r : new GetSnapshotIDRequest(r);\n return this.http.post(this._host + \"/snapshot.v1.SnapshotService/GetSnapshotID\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetSnapshotIDResponse.fromProto(resp)));\n }\n getWhitelabel(r) {\n const request = r.toApiJson ? r : new GetWhitelabelRequest(r);\n return this.http.post(this._host + \"/snapshot.v1.SnapshotService/GetWhitelabel\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetWhitelabelResponse.fromProto(resp)));\n }\n getConfiguration(r) {\n const request = r.toApiJson ? r : new GetConfigurationRequest(r);\n return this.http.post(this._host + \"/snapshot.v1.SnapshotService/GetConfiguration\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetConfigurationResponse.fromProto(resp)));\n }\n getSalesPerson(r) {\n const request = r.toApiJson ? r : new GetSalesPersonRequest(r);\n return this.http.post(this._host + \"/snapshot.v1.SnapshotService/GetSalesPerson\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetSalesPersonResponse.fromProto(resp)));\n }\n forceRefreshSection(r) {\n const request = r.toApiJson ? r : new ForceRefreshSectionRequest(r);\n return this.http.post(this._host + \"/snapshot.v1.SnapshotService/ForceRefreshSection\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getLatestSnapshotId(r) {\n const request = r.toApiJson ? r : new GetLatestSnapshotIDRequest(r);\n return this.http.post(this._host + \"/snapshot.v1.SnapshotService/GetLatestSnapshotID\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetLatestSnapshotIDResponse.fromProto(resp)));\n }\n getBusinessIdFromSalesforceId(r) {\n const request = r.toApiJson ? r : new GetBusinessIDFromSalesforceIDRequest(r);\n return this.http.post(this._host + \"/snapshot.v1.SnapshotService/GetBusinessIDFromSalesforceID\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetBusinessIDFromSalesforceIDResponse.fromProto(resp)));\n }\n getSnapshotCountCreatedBySalespersonId(r) {\n const request = r.toApiJson ? r : new GetSnapshotCountCreatedBySalespersonIDRequest(r);\n return this.http.post(this._host + \"/snapshot.v1.SnapshotService/GetSnapshotCountCreatedBySalespersonID\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetSnapshotCountCreatedBySalespersonIDResponse.fromProto(resp)));\n }\n previewRefreshSnapshotForBusinesses(r) {\n const request = r.toApiJson ? r : new PreviewRefreshSnapshotForBusinessesRequest(r);\n return this.http.post(this._host + \"/snapshot.v1.SnapshotService/PreviewRefreshSnapshotForBusinesses\", request.toApiJson(), this.apiOptions()).pipe(map(resp => PreviewRefreshSnapshotForBusinessesResponse.fromProto(resp)));\n }\n shareSnapshot(r) {\n const request = r.toApiJson ? r : new ShareSnapshotRequest(r);\n return this.http.post(this._host + \"/snapshot.v1.SnapshotService/ShareSnapshot\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getDomain(r) {\n const request = r.toApiJson ? r : new GetDomainRequest(r);\n return this.http.post(this._host + \"/snapshot.v1.SnapshotService/GetDomain\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetDomainResponse.fromProto(resp)));\n }\n previewEmail(r) {\n const request = r.toApiJson ? r : new PreviewEmailRequest(r);\n return this.http.post(this._host + \"/snapshot.v1.SnapshotService/PreviewEmail\", request.toApiJson(), this.apiOptions()).pipe(map(resp => PreviewEmailResponse.fromProto(resp)));\n }\n getDirectCompetitors(r) {\n const request = r.toApiJson ? r : new GetDirectCompetitorsRequest(r);\n return this.http.post(this._host + \"/snapshot.v1.SnapshotService/GetDirectCompetitors\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetDirectCompetitorsResponse.fromProto(resp)));\n }\n saveDirectCompetitors(r) {\n const request = r.toApiJson ? r : new SaveDirectCompetitorsRequest(r);\n return this.http.post(this._host + \"/snapshot.v1.SnapshotService/SaveDirectCompetitors\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n provision(r) {\n const request = r.toApiJson ? r : new ProvisionSnapshotRequest(r);\n return this.http.post(this._host + \"/snapshot.v1.SnapshotService/Provision\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ProvisionSnapshotResponse.fromProto(resp)));\n }\n getSummary(r) {\n const request = r.toApiJson ? r : new GetSummaryRequest(r);\n return this.http.post(this._host + \"/snapshot.v1.SnapshotService/GetSummary\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetSummaryResponse.fromProto(resp)));\n }\n generatePdf(r) {\n const request = r.toApiJson ? r : new GeneratePDFRequest(r);\n return this.http.post(this._host + \"/snapshot.v1.SnapshotService/GeneratePDF\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GeneratePDFResponse.fromProto(resp)));\n }\n }\n SnapshotApiService.ɵfac = function SnapshotApiService_Factory(t) {\n return new (t || SnapshotApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n SnapshotApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: SnapshotApiService,\n factory: SnapshotApiService.ɵfac,\n providedIn: 'root'\n });\n return SnapshotApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\nlet SocialSectionApiService = /*#__PURE__*/(() => {\n class SocialSectionApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n get(r) {\n const request = r.toApiJson ? r : new GetSectionRequest(r);\n return this.http.post(this._host + \"/snapshot.v1.SocialSectionService/Get\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetSocialSectionResponse.fromProto(resp)));\n }\n updateConfig(r) {\n const request = r.toApiJson ? r : new UpdateSocialConfigRequest(r);\n return this.http.post(this._host + \"/snapshot.v1.SocialSectionService/UpdateConfig\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n }\n SocialSectionApiService.ɵfac = function SocialSectionApiService_Factory(t) {\n return new (t || SocialSectionApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n SocialSectionApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: SocialSectionApiService,\n factory: SocialSectionApiService.ɵfac,\n providedIn: 'root'\n });\n return SocialSectionApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\nlet TechnologySectionApiService = /*#__PURE__*/(() => {\n class TechnologySectionApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n get(r) {\n const request = r.toApiJson ? r : new GetSectionRequest(r);\n return this.http.post(this._host + \"/snapshot.v1.TechnologySectionService/Get\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetTechnologySectionResponse.fromProto(resp)));\n }\n updateConfig(r) {\n const request = r.toApiJson ? r : new UpdateTechnologyConfigRequest(r);\n return this.http.post(this._host + \"/snapshot.v1.TechnologySectionService/UpdateConfig\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n }\n TechnologySectionApiService.ɵfac = function TechnologySectionApiService_Factory(t) {\n return new (t || TechnologySectionApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n TechnologySectionApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: TechnologySectionApiService,\n factory: TechnologySectionApiService.ɵfac,\n providedIn: 'root'\n });\n return TechnologySectionApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\nlet TechnologyApiService = /*#__PURE__*/(() => {\n class TechnologyApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n create(r) {\n const request = r.toApiJson ? r : new CreateTechnologyRequest(r);\n return this.http.post(this._host + \"/snapshot.v1.TechnologyService/Create\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CreateTechnologyResponse.fromProto(resp)));\n }\n get(r) {\n const request = r.toApiJson ? r : new GetTechnologyRequest(r);\n return this.http.post(this._host + \"/snapshot.v1.TechnologyService/Get\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetTechnologyResponse.fromProto(resp)));\n }\n getMulti(r) {\n const request = r.toApiJson ? r : new GetMultiTechnologyRequest(r);\n return this.http.post(this._host + \"/snapshot.v1.TechnologyService/GetMulti\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMultiTechnologyResponse.fromProto(resp)));\n }\n update(r) {\n const request = r.toApiJson ? r : new UpdateTechnologyRequest(r);\n return this.http.post(this._host + \"/snapshot.v1.TechnologyService/Update\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n delete(r) {\n const request = r.toApiJson ? r : new DeleteTechnologyRequest(r);\n return this.http.post(this._host + \"/snapshot.v1.TechnologyService/Delete\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n getMultiCategory(r) {\n const request = r.toApiJson ? r : new GetMultiTechnologyCategoryRequest(r);\n return this.http.post(this._host + \"/snapshot.v1.TechnologyService/GetMultiCategory\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetMultiTechnologyCategoryResponse.fromProto(resp)));\n }\n }\n TechnologyApiService.ɵfac = function TechnologyApiService_Factory(t) {\n return new (t || TechnologyApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n TechnologyApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: TechnologyApiService,\n factory: TechnologyApiService.ɵfac,\n providedIn: 'root'\n });\n return TechnologyApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\nlet WebsiteSectionApiService = /*#__PURE__*/(() => {\n class WebsiteSectionApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n get(r) {\n const request = r.toApiJson ? r : new GetSectionRequest(r);\n return this.http.post(this._host + \"/snapshot.v1.WebsiteSectionService/Get\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetWebsiteSectionResponse.fromProto(resp)));\n }\n updateConfig(r) {\n const request = r.toApiJson ? r : new UpdateWebsiteConfigRequest(r);\n return this.http.post(this._host + \"/snapshot.v1.WebsiteSectionService/UpdateConfig\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n }\n WebsiteSectionApiService.ɵfac = function WebsiteSectionApiService_Factory(t) {\n return new (t || WebsiteSectionApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n WebsiteSectionApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: WebsiteSectionApiService,\n factory: WebsiteSectionApiService.ɵfac,\n providedIn: 'root'\n });\n return WebsiteSectionApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\nlet SnapshotCountSdkService = /*#__PURE__*/(() => {\n class SnapshotCountSdkService {\n constructor(service) {\n this.service = service;\n }\n getSnapshotCount(partnerId, marketId, salespersonId) {\n const req = new GetSnapshotCountCreatedBySalespersonIDRequest({\n partnerId: partnerId,\n marketId: marketId,\n salespersonId: salespersonId\n });\n return this.service.getSnapshotCountCreatedBySalespersonId(req);\n }\n }\n SnapshotCountSdkService.ɵfac = function SnapshotCountSdkService_Factory(t) {\n return new (t || SnapshotCountSdkService)(i0.ɵɵinject(SnapshotApiService));\n };\n SnapshotCountSdkService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: SnapshotCountSdkService,\n factory: SnapshotCountSdkService.ɵfac,\n providedIn: 'root'\n });\n return SnapshotCountSdkService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nfunction buildFieldMask(obj) {\n const fieldMaskPaths = [];\n for (const x in obj) {\n if (obj.hasOwnProperty(x) && obj[x] !== undefined) {\n fieldMaskPaths.push(x);\n }\n }\n return new FieldMask({\n paths: fieldMaskPaths\n });\n}\nlet AdvertisingSectionService = /*#__PURE__*/(() => {\n class AdvertisingSectionService {\n constructor(_api) {\n this._api = _api;\n }\n get(snapshotId) {\n return this._api.get({\n snapshotId: snapshotId\n }).pipe(map(resp => resp.section));\n }\n updateConfig(snapshotId, advertisingConfig) {\n return this._api.updateConfig({\n snapshotId: snapshotId,\n advertisingConfig: new AdvertisingConfig(advertisingConfig),\n fieldMask: buildFieldMask(advertisingConfig)\n });\n }\n }\n AdvertisingSectionService.ɵfac = function AdvertisingSectionService_Factory(t) {\n return new (t || AdvertisingSectionService)(i0.ɵɵinject(AdvertisingSectionApiService));\n };\n AdvertisingSectionService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: AdvertisingSectionService,\n factory: AdvertisingSectionService.ɵfac,\n providedIn: 'root'\n });\n return AdvertisingSectionService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet CurrentSnapshotService = /*#__PURE__*/(() => {\n class CurrentSnapshotService {\n constructor(_api) {\n this._api = _api;\n }\n get(businessID) {\n const req = new GetCurrentRequest({\n businessId: businessID\n });\n return this._api.getCurrent(req);\n }\n }\n CurrentSnapshotService.ɵfac = function CurrentSnapshotService_Factory(t) {\n return new (t || CurrentSnapshotService)(i0.ɵɵinject(CurrentSnapshotApiService));\n };\n CurrentSnapshotService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: CurrentSnapshotService,\n factory: CurrentSnapshotService.ɵfac,\n providedIn: 'root'\n });\n return CurrentSnapshotService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet ListingSectionService = /*#__PURE__*/(() => {\n class ListingSectionService {\n constructor(_api) {\n this._api = _api;\n }\n get(snapshotId) {\n return this._api.get({\n snapshotId: snapshotId\n }).pipe(map(resp => resp.section));\n }\n updateConfig(snapshotId, listingConfig) {\n return this._api.updateConfig({\n snapshotId: snapshotId,\n listingConfig: new ListingConfig(listingConfig),\n fieldMask: buildFieldMask(listingConfig)\n });\n }\n getListingScan(businessId) {\n return this._api.getListingScan({\n businessId: businessId\n }).pipe(map(resp => resp.listingScan));\n }\n getAvailableListingSources(snapshotId) {\n return this._api.getAvailableListingSources({\n snapshotId\n }).pipe(map(resp => resp.sources));\n }\n ignoreListingSource(snapshotId, sourceId) {\n return this._api.ignoreListingSource({\n snapshotId,\n sourceId\n }).pipe(map(() => null));\n }\n unignoreListingSource(snapshotId, sourceId) {\n return this._api.unignoreListingSource({\n snapshotId,\n sourceId\n }).pipe(map(() => null));\n }\n }\n ListingSectionService.ɵfac = function ListingSectionService_Factory(t) {\n return new (t || ListingSectionService)(i0.ɵɵinject(ListingSectionApiService));\n };\n ListingSectionService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ListingSectionService,\n factory: ListingSectionService.ɵfac,\n providedIn: 'root'\n });\n return ListingSectionService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet ReviewSectionService = /*#__PURE__*/(() => {\n class ReviewSectionService {\n constructor(_api) {\n this._api = _api;\n }\n get(snapshotId) {\n return this._api.get({\n snapshotId: snapshotId\n }).pipe(map(resp => resp.section));\n }\n updateConfig(snapshotId, reviewConfig) {\n return this._api.updateConfig({\n snapshotId: snapshotId,\n reviewConfig: new ReviewConfig(reviewConfig),\n fieldMask: buildFieldMask(reviewConfig)\n });\n }\n }\n ReviewSectionService.ɵfac = function ReviewSectionService_Factory(t) {\n return new (t || ReviewSectionService)(i0.ɵɵinject(ReviewSectionApiService));\n };\n ReviewSectionService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ReviewSectionService,\n factory: ReviewSectionService.ɵfac,\n providedIn: 'root'\n });\n return ReviewSectionService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet SEOSectionService = /*#__PURE__*/(() => {\n class SEOSectionService {\n constructor(_api) {\n this._api = _api;\n }\n get(snapshotId) {\n return this._api.get({\n snapshotId: snapshotId\n }).pipe(map(resp => resp.section));\n }\n updateConfig(snapshotId, seoConfig) {\n return this._api.updateConfig({\n snapshotId: snapshotId,\n seoConfig: new SEOConfig(seoConfig),\n fieldMask: buildFieldMask(seoConfig)\n });\n }\n }\n SEOSectionService.ɵfac = function SEOSectionService_Factory(t) {\n return new (t || SEOSectionService)(i0.ɵɵinject(SEOSectionApiService));\n };\n SEOSectionService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: SEOSectionService,\n factory: SEOSectionService.ɵfac,\n providedIn: 'root'\n });\n return SEOSectionService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet SnapshotLiteService = /*#__PURE__*/(() => {\n class SnapshotLiteService {\n constructor(_api) {\n this._api = _api;\n }\n get(businessId) {\n return this._api.get({\n businessId: businessId\n }).pipe(map(resp => resp.snapshot));\n }\n updateSnapshotLiteBusinessData(businessId, data) {\n return this._api.updateSnapshotLiteBusinessData({\n businessId: businessId,\n business: data,\n fieldMask: buildFieldMask(data)\n });\n }\n }\n SnapshotLiteService.ɵfac = function SnapshotLiteService_Factory(t) {\n return new (t || SnapshotLiteService)(i0.ɵɵinject(SnapshotLiteApiService));\n };\n SnapshotLiteService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: SnapshotLiteService,\n factory: SnapshotLiteService.ɵfac,\n providedIn: 'root'\n });\n return SnapshotLiteService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet SocialSectionService = /*#__PURE__*/(() => {\n class SocialSectionService {\n constructor(_api) {\n this._api = _api;\n }\n get(snapshotId) {\n return this._api.get({\n snapshotId: snapshotId\n }).pipe(map(resp => resp.section));\n }\n updateConfig(snapshotId, socialConfig) {\n // need to explicitly convert any object types\n if (socialConfig.selectedFacebookPost !== undefined) {\n socialConfig.selectedFacebookPost = new FacebookPost(socialConfig.selectedFacebookPost);\n }\n return this._api.updateConfig({\n snapshotId: snapshotId,\n socialConfig: new SocialConfig(socialConfig),\n fieldMask: buildFieldMask(socialConfig)\n });\n }\n }\n SocialSectionService.ɵfac = function SocialSectionService_Factory(t) {\n return new (t || SocialSectionService)(i0.ɵɵinject(SocialSectionApiService));\n };\n SocialSectionService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: SocialSectionService,\n factory: SocialSectionService.ɵfac,\n providedIn: 'root'\n });\n return SocialSectionService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet WebsiteSectionService = /*#__PURE__*/(() => {\n class WebsiteSectionService {\n constructor(_api) {\n this._api = _api;\n }\n get(snapshotId) {\n return this._api.get({\n snapshotId: snapshotId\n }).pipe(map(resp => resp.section));\n }\n updateConfig(snapshotId, websiteConfig) {\n return this._api.updateConfig({\n snapshotId: snapshotId,\n websiteConfig: new WebsiteConfig(websiteConfig),\n fieldMask: buildFieldMask(websiteConfig)\n });\n }\n }\n WebsiteSectionService.ɵfac = function WebsiteSectionService_Factory(t) {\n return new (t || WebsiteSectionService)(i0.ɵɵinject(WebsiteSectionApiService));\n };\n WebsiteSectionService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: WebsiteSectionService,\n factory: WebsiteSectionService.ɵfac,\n providedIn: 'root'\n });\n return WebsiteSectionService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet EcommerceSectionService = /*#__PURE__*/(() => {\n class EcommerceSectionService {\n constructor(_api) {\n this._api = _api;\n }\n get(snapshotId) {\n return this._api.get({\n snapshotId: snapshotId\n }).pipe(map(resp => resp.section));\n }\n updateConfig(snapshotId, ecommerceConfig) {\n return this._api.updateConfig({\n snapshotId: snapshotId,\n ecommerceConfig: new EcommerceConfig(ecommerceConfig),\n fieldMask: buildFieldMask(ecommerceConfig)\n });\n }\n getSectionAvailability(snapshotId) {\n return this._api.getSectionAvailability({\n snapshotId: snapshotId\n }).pipe(map(resp => resp.isAvailable));\n }\n }\n EcommerceSectionService.ɵfac = function EcommerceSectionService_Factory(t) {\n return new (t || EcommerceSectionService)(i0.ɵɵinject(EcommerceSectionApiService));\n };\n EcommerceSectionService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: EcommerceSectionService,\n factory: EcommerceSectionService.ɵfac,\n providedIn: 'root'\n });\n return EcommerceSectionService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nvar Origin = /*#__PURE__*/function (Origin) {\n Origin[\"UNKNOWN\"] = \"unknown\";\n Origin[\"PARTNER_CENTER\"] = \"partner-center\";\n Origin[\"SALES_SUCCESS_CENTER\"] = \"sales-success-center\";\n Origin[\"ACQUISITION_WIDGET\"] = \"acquisition-widget\";\n Origin[\"CAMPAIGN\"] = \"campaign\";\n Origin[\"LIST\"] = \"list\";\n Origin[\"SNAPSHOT\"] = \"snapshot\";\n Origin[\"OTHER\"] = \"other\";\n return Origin;\n}(Origin || {});\nclass PagedResponse {\n constructor(results, nextCursor, hasMore) {\n this.results = results;\n this.nextCursor = nextCursor;\n this.hasMore = hasMore;\n }\n}\nfunction recordFromApi(recordApi) {\n return {\n snapshotId: recordApi.snapshotId,\n businessId: recordApi.businessId,\n created: recordApi.created,\n expired: recordApi.expired,\n origin: recordApi.origin,\n createdBy: recordApi.createdBy\n };\n}\nconst CORE_WEB_VITALS_SPEED_INDEX = 'speed-index';\nconst CORE_WEB_VITALS_LARGEST_CONTENTFUL_PAINT = 'largest-contentful-paint';\nconst CORE_WEB_VITALS_MAX_POTENTIAL_FID = 'max-potential-fid';\nconst CORE_WEB_VITALS_CUMULATIVE_LAYOUT_SHIFT = 'cumulative-layout-shift';\nconst CORE_WEB_VITALS_ESTIMATED_INPUT_LATENCY = 'estimated-input-latency'; // deprecated\nconst CORE_WEB_VITALS_INTERACTIVE = 'interactive'; // not a core web vital\nlet SnapshotRecordService = /*#__PURE__*/(() => {\n class SnapshotRecordService {\n constructor(_api) {\n this._api = _api;\n }\n get(businessId, snapshotId) {\n return this._api.get({\n businessId: businessId,\n snapshotId: snapshotId\n }).pipe(map(resp => resp.record));\n }\n lookup(businessId, cursor, pageSize) {\n return this._api.lookup({\n businessId: businessId,\n pagingOptions: {\n cursor: cursor,\n pageSize: pageSize\n }\n }).pipe(map(resp => {\n const records = (resp.record || []).map(r => recordFromApi(r));\n return new PagedResponse(records, resp.pagingMetadata.nextCursor, resp.pagingMetadata.hasMore);\n }));\n }\n getLatestSnapshot(businessId) {\n return this._api.lookup({\n businessId: businessId,\n pagingOptions: {\n cursor: '',\n pageSize: 1\n }\n }).pipe(map(resp => (resp.record || []).map(r => recordFromApi(r))));\n }\n }\n SnapshotRecordService.ɵfac = function SnapshotRecordService_Factory(t) {\n return new (t || SnapshotRecordService)(i0.ɵɵinject(SnapshotRecordApiService));\n };\n SnapshotRecordService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: SnapshotRecordService,\n factory: SnapshotRecordService.ɵfac,\n providedIn: 'root'\n });\n return SnapshotRecordService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet SnapshotService = /*#__PURE__*/(() => {\n class SnapshotService {\n constructor(_api) {\n this._api = _api;\n }\n get(snapshotId) {\n return this._api.get({\n snapshotId: snapshotId\n }).pipe(map(resp => resp.snapshot));\n }\n provision(businessId, origin, originDetails, inferMissingData) {\n let source = '';\n if (!!origin) {\n source += origin;\n if (!!originDetails) {\n for (const detail of originDetails) {\n source += `:${detail}`;\n }\n }\n }\n return this._api.provision({\n businessId: businessId,\n origin: source,\n options: {\n inferMissingData: inferMissingData\n }\n }).pipe(map(resp => resp.snapshotId));\n }\n getSummary(snapshotId) {\n return this._api.getSummary({\n snapshotId: snapshotId\n });\n }\n getLatestSnapshotId(businessId) {\n return this._api.getLatestSnapshotId({\n businessId: businessId\n }).pipe(map(resp => resp.snapshotId));\n }\n updateConfig(snapshotId, snapshotConfig) {\n return this._api.updateConfig({\n snapshotId: snapshotId,\n config: new GlobalConfig(snapshotConfig),\n fieldMask: buildFieldMask(snapshotConfig)\n });\n }\n updateLanguageConfig(snapshotId, languageConfig) {\n return this._api.updateLanguageConfig({\n snapshotId: snapshotId,\n config: new LanguageConfig(languageConfig),\n fieldMask: buildFieldMask(languageConfig)\n });\n }\n getWhitelabel(snapshotId) {\n return this._api.getWhitelabel({\n snapshotId: snapshotId\n }).pipe(map(resp => resp.branding));\n }\n getSalesPerson(snapshotId) {\n return this._api.getSalesPerson({\n snapshotId: snapshotId\n }).pipe(map(resp => resp.salesPerson));\n }\n getConfiguration(snapshotId) {\n return this._api.getConfiguration({\n snapshotId: snapshotId\n }).pipe(map(resp => resp.configuration));\n }\n getBusinessIdFromSalesforceId(salesforceId, partnerId) {\n return this._api.getBusinessIdFromSalesforceId({\n salesforceId: salesforceId,\n partnerId: partnerId\n }).pipe(map(resp => resp.businessId));\n }\n shareSnapshot(businessId, sender, contacts, snapshotId, email, domain) {\n return this._api.shareSnapshot({\n businessId: businessId,\n sender: sender,\n contacts: contacts,\n snapshotId: snapshotId,\n email: email,\n domain: domain\n });\n }\n previewEmail(email) {\n return this._api.previewEmail({\n email: email\n }).pipe(map(resp => {\n return this.stringToBlob(resp.renderedTemplate, 'application/html');\n }));\n }\n stringToBlob(value, type) {\n const binary = atob(value);\n const binaryLen = binary.length;\n const bytes = new Uint8Array(binaryLen);\n for (let i = 0; i < binaryLen; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n return new Blob([bytes], {\n type: type\n });\n }\n getDomain(partnerId, application) {\n return this._api.getDomain({\n partnerId: partnerId,\n application: application\n }).pipe(map(res => res.primary));\n }\n getDirectCompetitors(snapshotId) {\n return this._api.getDirectCompetitors({\n snapshotId: snapshotId\n }).pipe(map(res => res.directCompetitors));\n }\n saveDirectCompetitors(snapshotId, directCompetitors) {\n return this._api.saveDirectCompetitors({\n snapshotId: snapshotId,\n directCompetitors: directCompetitors\n });\n }\n generatePdf(snapshotId) {\n return this._api.generatePdf({\n snapshotId\n }).pipe(map(res => res?.pdf));\n }\n }\n SnapshotService.ɵfac = function SnapshotService_Factory(t) {\n return new (t || SnapshotService)(i0.ɵɵinject(SnapshotApiService));\n };\n SnapshotService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: SnapshotService,\n factory: SnapshotService.ɵfac,\n providedIn: 'root'\n });\n return SnapshotService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet TechnologySectionService = /*#__PURE__*/(() => {\n class TechnologySectionService {\n constructor(_api) {\n this._api = _api;\n }\n get(snapshotId) {\n return this._api.get({\n snapshotId: snapshotId\n }).pipe(map(resp => resp.section));\n }\n updateConfig(snapshotId, technologyConfig) {\n return this._api.updateConfig({\n snapshotId,\n technologyConfig: new TechnologyConfig(technologyConfig),\n fieldMask: buildFieldMask(technologyConfig)\n });\n }\n }\n TechnologySectionService.ɵfac = function TechnologySectionService_Factory(t) {\n return new (t || TechnologySectionService)(i0.ɵɵinject(TechnologySectionApiService));\n };\n TechnologySectionService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: TechnologySectionService,\n factory: TechnologySectionService.ɵfac,\n providedIn: 'root'\n });\n return TechnologySectionService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AIPrompt, Access, AdvertisingConfig, AdvertisingData, AdvertisingSection, AdvertisingSectionApiService, AdvertisingSectionService, AdwordsData, AppDomain, Application, ArtificialIntelligenceApiService, Audit, AuditDetail, AuditSummary, AvailableListingSource, Branding, BrandingAssets, Business, CORE_WEB_VITALS_CUMULATIVE_LAYOUT_SHIFT, CORE_WEB_VITALS_ESTIMATED_INPUT_LATENCY, CORE_WEB_VITALS_INTERACTIVE, CORE_WEB_VITALS_LARGEST_CONTENTFUL_PAINT, CORE_WEB_VITALS_MAX_POTENTIAL_FID, CORE_WEB_VITALS_SPEED_INDEX, Clicks, CompetitionAnalysis, Competitor, CompetitorHomepageData, Configuration, Contact, CreateSnapshotRequest, CreateSnapshotResponse, CreateTechnologyRequest, CreateTechnologyResponse, Current, CurrentSnapshotApiService, CurrentSnapshotService, DataProviderAccuracy, DataProviderAccuracyStatus, DataProviderAccuracyStatusV2, DeleteTechnologyRequest, DirectCompetitor, Domain, DomainMetrics, EcommerceConfig, EcommerceData, EcommerceDataApplicationsAvailabilityEntry, EcommerceDataCompetitor, EcommerceSection, EcommerceSectionApiService, EcommerceSectionService, Email, FacebookData, FacebookPost, FieldMask, FloatRange, ForceRefreshSectionRequest, GMBClaimStatus, GenerateMessageRequest, GenerateMessageResponse, GeneratePDFRequest, GeneratePDFResponse, GetAdvertisingSectionResponse, GetAvailableListingSourcesRequest, GetAvailableListingSourcesResponse, GetBusinessIDFromSalesforceIDRequest, GetBusinessIDFromSalesforceIDResponse, GetConfigurationRequest, GetConfigurationResponse, GetCurrentRequest, GetCurrentResponse, GetDirectCompetitorsRequest, GetDirectCompetitorsResponse, GetDomainRequest, GetDomainResponse, GetEcommerceSectionResponse, GetLatestSnapshotIDRequest, GetLatestSnapshotIDResponse, GetListingScanRequest, GetListingScanResponse, GetListingSectionResponse, GetMultiTechnologyCategoryRequest, GetMultiTechnologyCategoryResponse, GetMultiTechnologyRequest, GetMultiTechnologyResponse, GetRequest, GetResponse, GetReviewSectionResponse, GetSEOSectionResponse, GetSalesPersonRequest, GetSalesPersonResponse, GetSectionAvailabilityRequest, GetSectionAvailabilityResponse, GetSectionRequest, GetSnapshotCountCreatedBySalespersonIDRequest, GetSnapshotCountCreatedBySalespersonIDResponse, GetSnapshotIDRequest, GetSnapshotIDResponse, GetSnapshotLiteRequest, GetSnapshotLiteResponse, GetSnapshotRequest, GetSnapshotResponse, GetSocialSectionResponse, GetSummaryRequest, GetSummaryResponse, GetTechnologyRequest, GetTechnologyResponse, GetTechnologySectionResponse, GetWebsiteSectionResponse, GetWhitelabelRequest, GetWhitelabelResponse, GlobalConfig, GlobalConfigEnabledSection, Grade, HomepageData, IgnoreListingSourceRequest, Impressions, InaccurateData, IndustryPercentiles, InferredFields, InstagramData, InstagramDataInstagramDataStatus, IntRange, Keyword, KeywordMetrics, LanguageConfig, LatLng, Listing, ListingAccuracy, ListingAccuracyCompetitor, ListingConfig, ListingData, ListingListingStatus, ListingPresence, ListingPresenceCompetitor, ListingScan, ListingSection, ListingSectionApiService, ListingSectionService, ListingSource, ListingV2, ListingV2ListingField, ListingV2ListingStatus, ListingV2Source, Listings, LocalSEOData, Location, LookupRequest, LookupResponse, OrganicDomainData, OrganicKeywordData, Origin, PagedRequestOptions, PagedResponse, PagedResponseMetadata, PayPerClickData, PreviewEmailRequest, PreviewEmailResponse, PreviewRefreshSnapshotForBusinessesRequest, PreviewRefreshSnapshotForBusinessesResponse, ProvisionSnapshotOptions, ProvisionSnapshotRequest, ProvisionSnapshotResponse, Record, Results, ResultsReviews, ReviewConfig, ReviewData, ReviewDataCompetitor, ReviewDataItem, ReviewSection, ReviewSectionApiService, ReviewSectionService, Role, Rule, RuleDetail, RuleSummary, SEOConfig, SEOData, SEODomainMetrics, SEOSection, SEOSectionApiService, SEOSectionService, SERPMetrics, SSLSummary, SSLSummaryStatus, SalesPerson, SampleSourceCount, SaveDirectCompetitorsRequest, Section, SectionContent, SectionSummary, ShareSnapshotRequest, Snapshot, SnapshotApiService, SnapshotCountSdkService, SnapshotData, SnapshotLite, SnapshotLiteApiService, SnapshotLiteService, SnapshotRecordApiService, SnapshotRecordService, SnapshotService, SocialConfig, SocialData, SocialDataCompetitor, SocialDataCompetitorFacebookData, SocialDataCompetitorInstagramData, SocialDataCompetitorTwitterData, SocialDataItem, SocialSection, SocialSectionApiService, SocialSectionService, Status, Technology, TechnologyApiService, TechnologyCategory, TechnologyConfig, TechnologyData, TechnologySection, TechnologySectionApiService, TechnologySectionService, TwitterData, URL, UnignoreListingSourceRequest, UpdateAdvertisingConfigRequest, UpdateCurrentRequest, UpdateEcommerceConfigRequest, UpdateListingConfigRequest, UpdateReviewConfigRequest, UpdateSEOConfigRequest, UpdateSnapshotConfigRequest, UpdateSnapshotLanguageConfigRequest, UpdateSnapshotLiteBusinessDataRequest, UpdateSocialConfigRequest, UpdateTechnologyConfigRequest, UpdateTechnologyRequest, UpdateWebsiteConfigRequest, Vicinity, VideoStyle, WebsiteConfig, WebsiteData, WebsiteDataCompetitor, WebsiteSection, WebsiteSectionApiService, WebsiteSectionService };\n","export const chartBlue = '#2E8DED';\nexport const chartGreen = '#3FB23F';\n","import { Component, Input, OnChanges, OnInit } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { AlignmentPeriodCalendar } from '@vendasta/multi-location-analytics';\nimport dayjs from 'dayjs';\nimport {\n LocaleDateTickFormatting,\n MaxRank,\n SEODataPoint,\n SEOTableData,\n WholeNumberTickFormatting,\n} from '../../local-seo';\nimport { chartBlue, chartGreen } from './local-seo-graph.config';\n\ninterface ChartConfig {\n seriesData: MultiSeriesValue[];\n seriesTotal?: number;\n alignment?: AlignmentPeriodCalendar;\n colorOverrides?: SeriesValue[];\n showXAxis?: boolean;\n showYAxis?: boolean;\n showLegend?: boolean;\n xAxisLabel?: string;\n yAxisLabel?: string;\n disableTooltip?: boolean;\n yAxisMin?: number;\n yAxisMax?: number;\n view?: number[];\n xAxisTickFormatting?: (val: any) => string;\n yAxisTickFormatting?: (val: any) => string;\n}\n\ninterface SeriesValue {\n name: any;\n value: T;\n}\n\ninterface MultiSeriesValue {\n name: string;\n series: SeriesValue[];\n}\n\n@Component({\n selector: 'local-seo-graph',\n templateUrl: 'local-seo-graph.component.html',\n styleUrls: ['local-seo-graph.component.scss'],\n})\nexport class LocalSEOGraphComponent implements OnInit, OnChanges {\n @Input() localSEOData: SEOTableData;\n config: ChartConfig;\n\n forceHoverState = true;\n legendConfig = [\n {\n legendTranslationKey: 'LOCAL_SEO.LOCAL_SEO.GRAPH.LEGEND.LOCAL_RANK',\n icon: 'stop',\n iconColor: chartGreen,\n },\n {\n legendTranslationKey: 'LOCAL_SEO.LOCAL_SEO.GRAPH.LEGEND.ORGANIC_RANK',\n icon: 'stop',\n iconColor: chartBlue,\n },\n ];\n\n constructor(private translate: TranslateService) {}\n\n ngOnChanges(): void {\n window.requestAnimationFrame(() => {\n this.forceHoverState = false;\n });\n\n // Dispatch a resize event on the next frame\n window.requestAnimationFrame(() => {\n window.dispatchEvent(new Event('resize'));\n this.forceHoverState = true;\n });\n }\n\n ngOnInit() {\n this.config = this.buildChartConfig(this.localSEOData);\n }\n\n buildChartConfig(seoData: SEOTableData) {\n const defaultMultiConfig = {\n showXAxis: true,\n showYAxis: true,\n xAxisTickFormatting: LocaleDateTickFormatting,\n yAxisTickFormatting: WholeNumberTickFormatting,\n yAxisLabel: this.translate.instant('LOCAL_SEO.LOCAL_SEO.GRAPH.LABEL.YAXIS'),\n showLegend: false,\n };\n\n const range = seoData.metrics?.dateRange;\n\n const seriesData: MultiSeriesValue[] = [\n {\n name: 'Google Maps (Local)',\n series: formatSeriesData(seoData.metrics?.localRank || []),\n },\n {\n name: 'Google Search (Organic)',\n series: formatSeriesData(seoData.metrics?.organicRank || []),\n },\n ];\n\n const alignment = getAlignmentPeriodForDayJSRange(dayjs(range.start), dayjs(range.end));\n\n return {\n ...defaultMultiConfig,\n seriesData: seriesData,\n colorOverrides: [\n { name: 'Google Maps (Local)', value: chartGreen },\n { name: 'Google Search (Organic)', value: chartBlue },\n ],\n alignment: alignment,\n yAxisTickFormatting(value) {\n value = Math.abs(value);\n if (value > MaxRank) {\n return '${MaxRank}+';\n }\n return value;\n },\n yAxisMax: -1,\n };\n }\n\n formatDataPointDate(date: Date, aligment: AlignmentPeriodCalendar) {\n if (aligment === AlignmentPeriodCalendar.CALENDAR_MONTH) {\n return dayjs.utc(date).format('MMM, YYYY');\n } else if (aligment === AlignmentPeriodCalendar.CALENDAR_WEEK) {\n return this.translate.instant('COMMON.WEEK_OF') + ' ' + dayjs.utc(date).format('MMM D, YYYY');\n }\n return dayjs.utc(date).format('MMM D, YYYY');\n }\n}\n\nfunction getAlignmentPeriodForDayJSRange(start: dayjs.Dayjs, end: dayjs.Dayjs): AlignmentPeriodCalendar {\n const numMonths = end.diff(start, 'months');\n if (numMonths >= 8) {\n return AlignmentPeriodCalendar.CALENDAR_MONTH;\n } else if (numMonths >= 2) {\n return AlignmentPeriodCalendar.CALENDAR_WEEK;\n }\n return AlignmentPeriodCalendar.CALENDAR_DAY;\n}\n\nfunction formatSeriesData(data: SEODataPoint[]) {\n return data\n .filter((e) => e.value > 0 && e.value <= MaxRank)\n .map((l) => {\n return {\n name: offsetToUTCZero(l.date.toString()),\n value: l.value * -1, // add the lowest rank as possible since 0 is no rank\n };\n });\n}\n\nexport function offsetToUTCZero(date: string): Date {\n const offset = dayjs(date).utcOffset();\n return dayjs.utc(date).subtract(offset, 'm').toDate();\n}\n","
\n
\n \n \n
\n
\n {{ formatDataPointDate(model[0]?.name, config.alignment) }}\n
\n
\n
\n {{ mod.series }}: {{ config.yAxisTickFormatting(mod.value) }}\n
\n
\n
\n \n
\n
{{ config.yAxisTickFormatting(model.value) }}
\n
{{ formatDataPointDate(model.name, config.alignment) }}
\n
\n
\n \n
\n
\n \n
\n stop\n \n {{ legendItem.legendTranslationKey | translate }}\n \n
\n
\n
\n
\n","export interface BusinessPerformance {\n ranking: string;\n color: string;\n}\n//\nexport interface MapMarker {\n label: google.maps.MarkerLabel;\n lat: string;\n lng: string;\n icon: google.maps.Symbol;\n}\n//\nexport const SEOPerformance = {\n TOP: { ranking: 'top', color: '#4CAF50' },\n AVERAGE: { ranking: 'average', color: '#FFB300' },\n BOTTOM: { ranking: 'bottom', color: '#C62828' },\n UNKNOWN: { ranking: 'unknown', color: '#C62828' },\n};\n","import { Component, Input, OnInit, Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { LocalSearchData, Vicinity } from '@vendasta/listing-products';\nimport { Geo } from '@vendasta/listing-products/lib/_internal/objects/listing-profile';\nimport { Location } from '@vendasta/listing-products';\nimport { GMBClaimStatus, Status } from '@vendasta/snapshot';\nimport { Observable, ReplaySubject } from 'rxjs';\nimport { SEOTableData } from '../../local-seo';\nimport { offsetToUTCZero } from '../local-seo-graph/local-seo-graph.component';\nimport { BusinessPerformance, MapMarker, SEOPerformance } from './local-seo-grid';\n\n@Pipe({\n name: 'ordinalNumber',\n})\nexport class OrdinalNumberPipe implements PipeTransform {\n static nth(n: number): string {\n if (n > 3 && n < 21) return 'th';\n switch (n % 10) {\n case 1:\n return 'st';\n case 2:\n return 'nd';\n case 3:\n return 'rd';\n default:\n return 'th';\n }\n }\n\n transform(value: number): string {\n if (!value) {\n return '';\n }\n return `${value}${OrdinalNumberPipe.nth(value)}`;\n }\n}\n\nconst selectedMarkerOpacity = 1;\nconst markerOpacity = 0.6;\n\n@Component({\n selector: 'local-seo-grid',\n templateUrl: 'local-seo-grid.component.html',\n styleUrls: ['local-seo-grid.component.scss'],\n providers: [OrdinalNumberPipe],\n})\nexport class LocalSEOGridComponent implements OnInit {\n @Input() agid: string;\n @Input() businessData: Location;\n @Input() localSEOData: SEOTableData;\n @Input() zoomValue: number;\n @Input() radiusSetting: number;\n\n private currentNearMeSearch$$: ReplaySubject = new ReplaySubject(1);\n private readonly conversionFactor = 1.60934;\n currentNearMeSearch$: Observable = this.currentNearMeSearch$$.asObservable();\n\n nearMeMarkers: MapMarker[];\n searchTerm: string;\n dataRadiusValue: number;\n mapUnits: string;\n translatedMapUnitsKMS: string;\n\n public get SEOPerformance(): typeof SEOPerformance {\n return SEOPerformance;\n }\n\n public get Vicinity(): typeof Vicinity {\n return Vicinity;\n }\n\n public get Status(): typeof Status {\n return Status;\n }\n\n public get GMBClaimStatus(): typeof GMBClaimStatus {\n return GMBClaimStatus;\n }\n\n public get CenterPoint(): Geo {\n const center = this.localSEOData?.localSearches?.find((search) => search.vicinity === Vicinity.VICINITY_C3);\n if (!center) {\n return this.businessData.location;\n }\n\n return center?.searchLocation;\n }\n\n public get MainBusinessPerformance(): BusinessPerformance {\n const center = this.localSEOData?.localSearches?.find((search) => search.vicinity === Vicinity.VICINITY_C3);\n const mainBusiness = center?.results.find((result) => result.isMainBusiness);\n return this.businessPerformance(+mainBusiness.rank);\n }\n\n public get MainBusinessRank(): number {\n const center = this.localSEOData?.localSearches?.find((search) => search.vicinity === Vicinity.VICINITY_C3);\n const mainBusiness = center?.results.find((result) => result.isMainBusiness);\n return +mainBusiness.rank;\n }\n\n constructor(private ordinalPipe: OrdinalNumberPipe, private translate: TranslateService) {}\n\n ngOnInit(): void {\n this.currentNearMeSearch$$.next(\n this.localSEOData?.localSearches.find((search) => search.vicinity === Vicinity.VICINITY_C3),\n );\n this.nearMeMarkers = this.buildMarkers(this.localSEOData?.localSearches);\n\n // this.radiusValue = Object.keys(SEODataSearchRadiusZoomValue).find((key) => SEODataSearchRadiusZoomValue[key] === this.zoomValue) ??\n // SEARCH_RADIUS_LOCAL.toString();\n\n this.mapUnits =\n this.getLocalStorage('mapUnits') ?? this.translate.instant('LOCAL_SEO.SELECT_LOCAL_SEARCH_RADIUS.MILES');\n\n this.translate.get('LOCAL_SEO.SELECT_LOCAL_SEARCH_RADIUS.KMS').subscribe((translation) => {\n this.translatedMapUnitsKMS = translation;\n });\n }\n\n onMarkerClick(index: number): void {\n this.currentNearMeSearch$$.next(this.localSEOData?.localSearches[index]);\n this.setNearMeSelectedMarker(index);\n }\n\n offsetUTC(date: Date): Date {\n return offsetToUTCZero(date.toString());\n }\n\n businessPerformance(rank: number): BusinessPerformance {\n if (rank > 0 && rank <= 3) {\n return SEOPerformance.TOP;\n }\n if (rank > 3 && rank <= 20) {\n return SEOPerformance.AVERAGE;\n }\n if (rank > 20 && rank <= 100) {\n return SEOPerformance.BOTTOM;\n }\n return SEOPerformance.UNKNOWN;\n }\n\n getLocalStorage(key: string): string | null {\n return localStorage.getItem(`${this.agid}-${key}`);\n }\n\n buildMarkers(searches: LocalSearchData[]): MapMarker[] {\n const businessMarkers = [];\n\n searches.forEach((s) => {\n const markerBase = {\n path: 0,\n strokeWeight: 2,\n strokeColor: 'white',\n scale: 22,\n fillOpacity: this.setSelectedCenterMarker(s.vicinity),\n };\n\n const mainBusinessFiltered = s.results?.filter((b) => b.isMainBusiness);\n const mainBusiness = mainBusinessFiltered.length > 0 ? mainBusinessFiltered[0] : null;\n if (mainBusiness) {\n const markerIcon = {\n ...markerBase,\n fillColor: this.businessPerformance(+mainBusiness.rank).color,\n };\n\n if (s.searchLocation) {\n businessMarkers.push({\n label: {\n text: mainBusiness?.rank ? this.ordinalPipe.transform(+mainBusiness.rank) : '-',\n color: 'white',\n },\n lat: s.searchLocation.latitude,\n lng: s.searchLocation.longitude,\n icon: markerIcon,\n });\n }\n } else {\n businessMarkers.push({\n label: {\n text: '-',\n color: 'white',\n },\n lat: s.searchLocation.latitude,\n lng: s.searchLocation.longitude,\n icon: {\n ...markerBase,\n fillColor: SEOPerformance.UNKNOWN.color,\n },\n });\n }\n });\n return businessMarkers;\n }\n\n setSelectedCenterMarker(vicinity: Vicinity): number {\n if (vicinity === Vicinity.VICINITY_CITY || vicinity === Vicinity.VICINITY_C3) {\n return selectedMarkerOpacity;\n }\n return markerOpacity;\n }\n\n setNearMeSelectedMarker(index: number): void {\n this.nearMeMarkers.forEach((m) => {\n if (m.icon.fillOpacity === 1) {\n m.icon = { ...m.icon, fillOpacity: markerOpacity };\n }\n });\n this.nearMeMarkers[index].icon = { ...this.nearMeMarkers[index].icon, fillOpacity: selectedMarkerOpacity };\n }\n\n convertStringToNumber(radiusValue: string): number {\n return +radiusValue;\n }\n\n getConvertedRadiusValue(radiusValue: number, mapUnits: string, kilometersTranslationKey: string): number {\n if (mapUnits === kilometersTranslationKey) {\n const kilometers = radiusValue * this.conversionFactor;\n return Math.round(kilometers);\n }\n\n return radiusValue;\n }\n}\n","
\n \n \n
\n '{{ localSEOData.keyword }}'\n \n {{ MainBusinessRank || '-' }}\n \n
\n
\n
\n\n \n\n \n
\n\n\n
\n
\n
\n \n
\n \n
\n \n
\n \n ads_click\n {{ 'LOCAL_SEO.LOCAL_SEO.MAP_INFO_TEXT' | translate }}\n
\n
\n
\n
\n \n {{ 'LOCAL_SEO.LOCAL_SEO.RADIUS_UPDATE_IN_PROGRESS_BADGE' | translate }}\n \n
\n
\n 0; else noSearchResults\">\n
\n
\n
\n
\n \n {{ result.rank || '-' }}\n \n \n \n {{ result.businessName }}\n \n \n {{ result.reviews?.rating }}\n star\n \n 0\"\n >\n \n {{ 'LOCAL_SEO.LOCAL_SEO.REVIEWS_COUNT' | translate : { count: result.reviews?.count } }}\n \n \n \n \n {{ 'COMMON.YOU' | translate }}\n \n
\n\n
\n
\n \n \n {{ result.address }}\n \n \n \n {{ result.phoneNumber | phone : result?.country || 'US' }}\n \n \n
\n
\n
\n 1 }\">\n
\n \n \n
\n
\n \n
\n
\n
\n\n \n
\n {{ 'COMMON.UPDATED' | translate }} {{ offsetUTC(localSEOData.date) | date : 'MMMM d, y' }}\n
\n
\n \n \n\n \n
\n \n \n search_off\n \n \n {{ 'LOCAL_SEO.LOCAL_SEO.NO_RESULTS_TITLE' | translate }}\n \n \n
\n
\n\n \n \n {{ 'LOCAL_SEO.LOCAL_SEO.PHONE_NOT_FOUND' | translate }}\n \n \n\n \n \n \n \n \n verified_user\n {{ 'LOCAL_SEO.LOCAL_SEO.CLAIMED' | translate }}\n \n \n\n \n \n \n not_listed_location\n {{ 'LOCAL_SEO.LOCAL_SEO.UNCLAIMED' | translate }}\n \n \n\n \n \n \n \n \n
\n","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { Component, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild } from '@angular/core';\nimport { MatPaginator } from '@angular/material/paginator';\nimport { MatSort } from '@angular/material/sort';\nimport { MatTableDataSource } from '@angular/material/table';\nimport { Location } from '@vendasta/listing-products';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BehaviorSubject, Observable, Subscription } from 'rxjs';\nimport {\n MaxRank,\n SEARCH_RADIUS_LOCAL,\n SEODataSearchRadiusZoomValue,\n SEOTableData,\n SeoDataSettings,\n} from '../local-seo';\n\ninterface ColumnConfigValue {\n name: string;\n class: string;\n iconURL?: string;\n showDelta?: boolean;\n deltaColumn?: string;\n}\n\nexport interface ColumnConfig {\n [key: string]: ColumnConfigValue;\n}\n\ninterface SortSettings {\n active: keyof SEOTableData;\n direction: 'asc' | 'desc';\n}\n\nexport interface Stat {\n value: string;\n rawValue: number;\n}\n\nexport const SEODATA_TAB_GRAPH = 'graph';\nexport const SEODATA_TAB_GRID = 'grid';\n\n@Component({\n selector: 'local-seo-keyword-table',\n templateUrl: './local-seo-table.component.html',\n styleUrls: ['./local-seo-table.component.scss'],\n animations: [\n trigger('detailExpand', [\n state('collapsed', style({ height: '0px', minHeight: '0' })),\n state('expanded', style({ height: '*', minHeight: '60px' })),\n transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\n ]),\n trigger('rotateIcon', [\n state('down', style({ transform: 'rotate(0)' })),\n state('up', style({ transform: 'rotate(-180deg)' })),\n transition('down <=> up', animate('225ms ease-out')),\n ]),\n ],\n})\nexport class LocalSEOTableComponent implements OnInit, OnDestroy {\n sortSettings = { active: 'localRank', direction: 'asc' };\n dataSource: MatTableDataSource = new MatTableDataSource([]);\n\n @Input() set SEOData(data: SEOTableData[]) {\n if (!data?.length) {\n return;\n }\n this.dataSource.data = data;\n this.dataSource.sort = this.sort;\n this.dataSource.paginator = this.paginator;\n this.dataSource.sortData = (data: SEOTableData[], sort: MatSort) => {\n const favorites = this.sortData(\n data.filter((item) => item.isFavorite),\n sort,\n );\n const nonFavorites = this.sortData(\n data.filter((item) => !item.isFavorite),\n sort,\n );\n return [...favorites, ...nonFavorites];\n };\n if (!this.expandedData) {\n const sortedData = this.dataSource.sortData(data, this.sort);\n this.expandedData = sortedData[0];\n }\n }\n\n @Input() loading$: Observable;\n @Input() keywords: string[];\n @Input() emptyStateImageURL: string;\n @Input() hideDropdown: boolean;\n @Input() proActive: boolean;\n @Input() location: Location;\n @Input() agid: string;\n @Input() settings: SeoDataSettings;\n @Input() disableEditingKeywords: boolean;\n @Input() editionUpgradeHidden: boolean;\n @Input() syncingKeywords: string[];\n @Output() upgradeButtonClicked: EventEmitter = new EventEmitter();\n @Output() deleteKeyword: EventEmitter = new EventEmitter();\n @Output() favoriteKeywordsChanged: EventEmitter = new EventEmitter();\n @Output() syncingKeywordsChanged: EventEmitter = new EventEmitter();\n selectedTab$: Observable;\n subscriptions: Subscription[] = [];\n private selectedTab$$: BehaviorSubject = new BehaviorSubject(SEODATA_TAB_GRID);\n private paginator: MatPaginator;\n private sort: MatSort;\n expandedData: SEOTableData | null;\n activeTab: string;\n\n maxRank = MaxRank;\n\n columnConfig: ColumnConfig = {\n keyword: {\n name: 'LOCAL_SEO.KEYWORD',\n class: '',\n },\n local: {\n name: 'LOCAL_SEO.LOCAL_SEO.MAPS',\n class: 'divided',\n iconURL: 'https://vstatic-prod.apigateway.co/listing-builder-client/assets/images/google/google-maps.svg',\n },\n organic: {\n name: 'LOCAL_SEO.LOCAL_SEO.ORGANIC',\n class: 'divided',\n iconURL: 'https://vstatic-prod.apigateway.co/listing-builder-client/assets/images/google/google.png',\n },\n localRank: {\n name: 'LOCAL_SEO.LOCAL_SEO.RANK',\n class: 'divided',\n showDelta: true,\n deltaColumn: 'localStartedAt',\n },\n organicRank: {\n name: 'LOCAL_SEO.LOCAL_SEO.RANK',\n class: 'divided',\n showDelta: true,\n deltaColumn: 'organicStartedAt',\n },\n localStartedAt: {\n name: 'LOCAL_SEO.LOCAL_SEO.STARTED_AT',\n class: '',\n },\n organicStartedAt: {\n name: 'LOCAL_SEO.LOCAL_SEO.STARTED_AT',\n class: '',\n },\n difficulty: {\n name: 'LOCAL_SEO.LOCAL_SEO.RANK_DIFFICULTY',\n class: 'divided',\n },\n searchVolume: {\n name: 'LOCAL_SEO.LOCAL_SEO.SEARCH_VOLUME',\n class: 'mat-header-wrap-text',\n },\n empty: {\n name: '',\n class: '',\n },\n empty2: {\n name: '',\n class: '',\n },\n };\n statColumns: string[] = [\n 'localRank',\n 'localStartedAt',\n 'organicRank',\n 'organicStartedAt',\n 'difficulty',\n 'searchVolume',\n ];\n topColumns: string[] = ['empty', 'local', 'organic', 'empty2', 'expandIcon'];\n columns: string[] = [\n 'keyword',\n 'localRank',\n 'localStartedAt',\n 'organicRank',\n 'organicStartedAt',\n 'difficulty',\n 'searchVolume',\n 'expandIcon',\n ];\n\n constructor(public translate: TranslateService) {\n this.selectedTab$ = this.selectedTab$$.asObservable();\n }\n\n @ViewChild(MatSort)\n set matSort(ms: MatSort) {\n this.sort = ms;\n this.setDataSourceAttributes();\n }\n\n @ViewChild(MatPaginator)\n set matPaginator(mp: MatPaginator) {\n this.paginator = mp;\n this.setDataSourceAttributes();\n }\n\n setDataSourceAttributes(): void {\n this.dataSource.paginator = this.paginator;\n this.dataSource.sort = this.sort;\n }\n\n onSelectActiveTab(tab: string): void {\n this.selectedTab$$.next(tab);\n }\n\n ngOnInit(): void {\n this.subscriptions.push(\n this.selectedTab$.subscribe((tab: string) => {\n this.activeTab = tab;\n }),\n );\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach((sub) => sub.unsubscribe());\n }\n\n setSortSettings($event: SortSettings): void {\n this.sortSettings = { ...$event };\n }\n\n getZoomLevel(radius: number): number {\n return SEODataSearchRadiusZoomValue[radius ?? SEARCH_RADIUS_LOCAL];\n }\n\n updateSyncingKeywords(keyword: string, checked: boolean): void {\n if (checked) {\n this.syncingKeywordsChanged.emit([...this.syncingKeywords, keyword]);\n } else {\n this.syncingKeywordsChanged.emit(this.syncingKeywords.filter((syncingKeywords) => syncingKeywords !== keyword));\n }\n }\n\n updateFavoriteKeywords(keyword: string, checked: boolean): void {\n if (checked) {\n this.favoriteKeywordsChanged.emit([...this.settings.favoriteKeywords, keyword]);\n } else {\n this.favoriteKeywordsChanged.emit(this.settings.favoriteKeywords.filter((favKeyword) => favKeyword !== keyword));\n }\n }\n\n sortData(data: SEOTableData[], sort: MatSort): SEOTableData[] {\n const active = sort?.active;\n const direction = sort.direction;\n if (!active || direction === '') {\n return data;\n }\n\n return data.sort((a, b) => {\n const valueA = getValuesForSorting(a, active);\n const valueB = getValuesForSorting(b, active);\n const comparatorResult = valueA < valueB ? -1 : valueA > valueB ? 1 : 0;\n return comparatorResult * (direction === 'asc' ? 1 : -1);\n });\n }\n}\n\nexport function getValuesForSorting(data: SEOTableData, sortHeaderId: string): string | number {\n const value = data[sortHeaderId];\n switch (sortHeaderId) {\n case 'keyword':\n return (value as Stat).value.toLocaleLowerCase();\n default:\n return (value as Stat).rawValue ?? 999999; //set undefined as the highest possible value so it remains at the bottom\n }\n}\n","\n \n\n\n\n \n \n \n \n \n
\n star\n {{ seoData.keyword.value }}\n
\n \n \n\n \n
\n \n
\n {{ seoData[column].value }}\n \n \n 0\"\n [value]=\"-1 * (seoData[column]?.rawValue - seoData[deltaColumn]?.rawValue)\"\n >\n \n \n
\n \n \n\n \n
\n \n\n \n \n \n\n \n \n \n \n \n
{{ columnConfig['organic'].name | translate }}
\n \n
\n\n \n \n \n\n \n \n \n \n expand_more\n \n \n \n\n \n \n \n \n \n
\n \n \n grid_on\n {{ 'LOCAL_SEO.LOCAL_SEO.KEYWORD.EXPANDED_DROPDOWN.TAB.LOCAL_GRID' | translate }}\n \n \n trending_up\n {{ 'LOCAL_SEO.LOCAL_SEO.KEYWORD.EXPANDED_DROPDOWN.TAB.TREND' | translate }}\n \n \n settings\n {{ 'LOCAL_SEO.LOCAL_SEO.KEYWORD.EXPANDED_DROPDOWN.TAB.SETTINGS' | translate }}\n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n \n
\n
\n \n
\n
\n {{ 'LOCAL_SEO.LOCAL_SEO.KEYWORD.EXPANDED_DROPDOWN.SETTINGS.FAVORITE_KEYWORD' | translate }}\n
\n
\n {{\n 'LOCAL_SEO.LOCAL_SEO.KEYWORD.EXPANDED_DROPDOWN.SETTINGS.FAVORITE_KEYWORD_SUBTITLE' | translate\n }}\n
\n
\n
\n
\n \n
\n
\n {{ 'LOCAL_SEO.LOCAL_SEO.KEYWORD.EXPANDED_DROPDOWN.SETTINGS.SYNC_KEYWORD' | translate }}\n
\n
\n {{ 'LOCAL_SEO.LOCAL_SEO.KEYWORD.EXPANDED_DROPDOWN.SETTINGS.SYNC_KEYWORD_SUBTITLE' | translate }}\n
\n
\n
\n\n \n
\n
\n \n \n
\n\n
\n \n \n \n
\n {{ columnConfig['keyword'].name | translate }}\n \n \n \n \n \n \n \n \n \n
{{ columnConfig['local'].name | translate }}
\n
\n 20\"\n #paginator\n [pageSize]=\"20\"\n [pageSizeOptions]=\"[10, 20, 50, 100]\"\n >\n \n
\n\n\n \n \n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n \n \n
{{ columnConfig['organic'].name | translate }}
\n \n
\n\n \n \n \n\n \n \n \n expand_more\n \n \n\n \n \n \n \n \n\n \n \n \n
\n {{ columnConfig['keyword'].name | translate }}\n \n \n \n \n \n \n \n
{{ columnConfig['local'].name | translate }}
\n
\n \n \n
\n\n\n
\n \n \n
\n
\n\n\n
\n \n \n
\n
\n\n\n \n \n pending\n \n \n {{ 'LOCAL_SEO.LOCAL_SEO.IN_PROGRESS_TITLE' | translate }}\n \n

{{ 'LOCAL_SEO.LOCAL_SEO.IN_PROGRESS_DESCRIPTION' | translate }}

\n
\n
\n","/*!\n * @kurkle/color v0.3.2\n * https://github.com/kurkle/color#readme\n * (c) 2023 Jukka Kurkela\n * Released under the MIT License\n */\nfunction round(v) {\n return v + 0.5 | 0;\n}\nconst lim = (v, l, h) => Math.max(Math.min(v, h), l);\nfunction p2b(v) {\n return lim(round(v * 2.55), 0, 255);\n}\nfunction b2p(v) {\n return lim(round(v / 2.55), 0, 100);\n}\nfunction n2b(v) {\n return lim(round(v * 255), 0, 255);\n}\nfunction b2n(v) {\n return lim(round(v / 2.55) / 100, 0, 1);\n}\nfunction n2p(v) {\n return lim(round(v * 100), 0, 100);\n}\nconst map$1 = {\n 0: 0,\n 1: 1,\n 2: 2,\n 3: 3,\n 4: 4,\n 5: 5,\n 6: 6,\n 7: 7,\n 8: 8,\n 9: 9,\n A: 10,\n B: 11,\n C: 12,\n D: 13,\n E: 14,\n F: 15,\n a: 10,\n b: 11,\n c: 12,\n d: 13,\n e: 14,\n f: 15\n};\nconst hex = [...'0123456789ABCDEF'];\nconst h1 = b => hex[b & 0xF];\nconst h2 = b => hex[(b & 0xF0) >> 4] + hex[b & 0xF];\nconst eq = b => (b & 0xF0) >> 4 === (b & 0xF);\nconst isShort = v => eq(v.r) && eq(v.g) && eq(v.b) && eq(v.a);\nfunction hexParse(str) {\n var len = str.length;\n var ret;\n if (str[0] === '#') {\n if (len === 4 || len === 5) {\n ret = {\n r: 255 & map$1[str[1]] * 17,\n g: 255 & map$1[str[2]] * 17,\n b: 255 & map$1[str[3]] * 17,\n a: len === 5 ? map$1[str[4]] * 17 : 255\n };\n } else if (len === 7 || len === 9) {\n ret = {\n r: map$1[str[1]] << 4 | map$1[str[2]],\n g: map$1[str[3]] << 4 | map$1[str[4]],\n b: map$1[str[5]] << 4 | map$1[str[6]],\n a: len === 9 ? map$1[str[7]] << 4 | map$1[str[8]] : 255\n };\n }\n }\n return ret;\n}\nconst alpha = (a, f) => a < 255 ? f(a) : '';\nfunction hexString(v) {\n var f = isShort(v) ? h1 : h2;\n return v ? '#' + f(v.r) + f(v.g) + f(v.b) + alpha(v.a, f) : undefined;\n}\nconst HUE_RE = /^(hsla?|hwb|hsv)\\(\\s*([-+.e\\d]+)(?:deg)?[\\s,]+([-+.e\\d]+)%[\\s,]+([-+.e\\d]+)%(?:[\\s,]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction hsl2rgbn(h, s, l) {\n const a = s * Math.min(l, 1 - l);\n const f = (n, k = (n + h / 30) % 12) => l - a * Math.max(Math.min(k - 3, 9 - k, 1), -1);\n return [f(0), f(8), f(4)];\n}\nfunction hsv2rgbn(h, s, v) {\n const f = (n, k = (n + h / 60) % 6) => v - v * s * Math.max(Math.min(k, 4 - k, 1), 0);\n return [f(5), f(3), f(1)];\n}\nfunction hwb2rgbn(h, w, b) {\n const rgb = hsl2rgbn(h, 1, 0.5);\n let i;\n if (w + b > 1) {\n i = 1 / (w + b);\n w *= i;\n b *= i;\n }\n for (i = 0; i < 3; i++) {\n rgb[i] *= 1 - w - b;\n rgb[i] += w;\n }\n return rgb;\n}\nfunction hueValue(r, g, b, d, max) {\n if (r === max) {\n return (g - b) / d + (g < b ? 6 : 0);\n }\n if (g === max) {\n return (b - r) / d + 2;\n }\n return (r - g) / d + 4;\n}\nfunction rgb2hsl(v) {\n const range = 255;\n const r = v.r / range;\n const g = v.g / range;\n const b = v.b / range;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const l = (max + min) / 2;\n let h, s, d;\n if (max !== min) {\n d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n h = hueValue(r, g, b, d, max);\n h = h * 60 + 0.5;\n }\n return [h | 0, s || 0, l];\n}\nfunction calln(f, a, b, c) {\n return (Array.isArray(a) ? f(a[0], a[1], a[2]) : f(a, b, c)).map(n2b);\n}\nfunction hsl2rgb(h, s, l) {\n return calln(hsl2rgbn, h, s, l);\n}\nfunction hwb2rgb(h, w, b) {\n return calln(hwb2rgbn, h, w, b);\n}\nfunction hsv2rgb(h, s, v) {\n return calln(hsv2rgbn, h, s, v);\n}\nfunction hue(h) {\n return (h % 360 + 360) % 360;\n}\nfunction hueParse(str) {\n const m = HUE_RE.exec(str);\n let a = 255;\n let v;\n if (!m) {\n return;\n }\n if (m[5] !== v) {\n a = m[6] ? p2b(+m[5]) : n2b(+m[5]);\n }\n const h = hue(+m[2]);\n const p1 = +m[3] / 100;\n const p2 = +m[4] / 100;\n if (m[1] === 'hwb') {\n v = hwb2rgb(h, p1, p2);\n } else if (m[1] === 'hsv') {\n v = hsv2rgb(h, p1, p2);\n } else {\n v = hsl2rgb(h, p1, p2);\n }\n return {\n r: v[0],\n g: v[1],\n b: v[2],\n a: a\n };\n}\nfunction rotate(v, deg) {\n var h = rgb2hsl(v);\n h[0] = hue(h[0] + deg);\n h = hsl2rgb(h);\n v.r = h[0];\n v.g = h[1];\n v.b = h[2];\n}\nfunction hslString(v) {\n if (!v) {\n return;\n }\n const a = rgb2hsl(v);\n const h = a[0];\n const s = n2p(a[1]);\n const l = n2p(a[2]);\n return v.a < 255 ? `hsla(${h}, ${s}%, ${l}%, ${b2n(v.a)})` : `hsl(${h}, ${s}%, ${l}%)`;\n}\nconst map = {\n x: 'dark',\n Z: 'light',\n Y: 're',\n X: 'blu',\n W: 'gr',\n V: 'medium',\n U: 'slate',\n A: 'ee',\n T: 'ol',\n S: 'or',\n B: 'ra',\n C: 'lateg',\n D: 'ights',\n R: 'in',\n Q: 'turquois',\n E: 'hi',\n P: 'ro',\n O: 'al',\n N: 'le',\n M: 'de',\n L: 'yello',\n F: 'en',\n K: 'ch',\n G: 'arks',\n H: 'ea',\n I: 'ightg',\n J: 'wh'\n};\nconst names$1 = {\n OiceXe: 'f0f8ff',\n antiquewEte: 'faebd7',\n aqua: 'ffff',\n aquamarRe: '7fffd4',\n azuY: 'f0ffff',\n beige: 'f5f5dc',\n bisque: 'ffe4c4',\n black: '0',\n blanKedOmond: 'ffebcd',\n Xe: 'ff',\n XeviTet: '8a2be2',\n bPwn: 'a52a2a',\n burlywood: 'deb887',\n caMtXe: '5f9ea0',\n KartYuse: '7fff00',\n KocTate: 'd2691e',\n cSO: 'ff7f50',\n cSnflowerXe: '6495ed',\n cSnsilk: 'fff8dc',\n crimson: 'dc143c',\n cyan: 'ffff',\n xXe: '8b',\n xcyan: '8b8b',\n xgTMnPd: 'b8860b',\n xWay: 'a9a9a9',\n xgYF: '6400',\n xgYy: 'a9a9a9',\n xkhaki: 'bdb76b',\n xmagFta: '8b008b',\n xTivegYF: '556b2f',\n xSange: 'ff8c00',\n xScEd: '9932cc',\n xYd: '8b0000',\n xsOmon: 'e9967a',\n xsHgYF: '8fbc8f',\n xUXe: '483d8b',\n xUWay: '2f4f4f',\n xUgYy: '2f4f4f',\n xQe: 'ced1',\n xviTet: '9400d3',\n dAppRk: 'ff1493',\n dApskyXe: 'bfff',\n dimWay: '696969',\n dimgYy: '696969',\n dodgerXe: '1e90ff',\n fiYbrick: 'b22222',\n flSOwEte: 'fffaf0',\n foYstWAn: '228b22',\n fuKsia: 'ff00ff',\n gaRsbSo: 'dcdcdc',\n ghostwEte: 'f8f8ff',\n gTd: 'ffd700',\n gTMnPd: 'daa520',\n Way: '808080',\n gYF: '8000',\n gYFLw: 'adff2f',\n gYy: '808080',\n honeyMw: 'f0fff0',\n hotpRk: 'ff69b4',\n RdianYd: 'cd5c5c',\n Rdigo: '4b0082',\n ivSy: 'fffff0',\n khaki: 'f0e68c',\n lavFMr: 'e6e6fa',\n lavFMrXsh: 'fff0f5',\n lawngYF: '7cfc00',\n NmoncEffon: 'fffacd',\n ZXe: 'add8e6',\n ZcSO: 'f08080',\n Zcyan: 'e0ffff',\n ZgTMnPdLw: 'fafad2',\n ZWay: 'd3d3d3',\n ZgYF: '90ee90',\n ZgYy: 'd3d3d3',\n ZpRk: 'ffb6c1',\n ZsOmon: 'ffa07a',\n ZsHgYF: '20b2aa',\n ZskyXe: '87cefa',\n ZUWay: '778899',\n ZUgYy: '778899',\n ZstAlXe: 'b0c4de',\n ZLw: 'ffffe0',\n lime: 'ff00',\n limegYF: '32cd32',\n lRF: 'faf0e6',\n magFta: 'ff00ff',\n maPon: '800000',\n VaquamarRe: '66cdaa',\n VXe: 'cd',\n VScEd: 'ba55d3',\n VpurpN: '9370db',\n VsHgYF: '3cb371',\n VUXe: '7b68ee',\n VsprRggYF: 'fa9a',\n VQe: '48d1cc',\n VviTetYd: 'c71585',\n midnightXe: '191970',\n mRtcYam: 'f5fffa',\n mistyPse: 'ffe4e1',\n moccasR: 'ffe4b5',\n navajowEte: 'ffdead',\n navy: '80',\n Tdlace: 'fdf5e6',\n Tive: '808000',\n TivedBb: '6b8e23',\n Sange: 'ffa500',\n SangeYd: 'ff4500',\n ScEd: 'da70d6',\n pOegTMnPd: 'eee8aa',\n pOegYF: '98fb98',\n pOeQe: 'afeeee',\n pOeviTetYd: 'db7093',\n papayawEp: 'ffefd5',\n pHKpuff: 'ffdab9',\n peru: 'cd853f',\n pRk: 'ffc0cb',\n plum: 'dda0dd',\n powMrXe: 'b0e0e6',\n purpN: '800080',\n YbeccapurpN: '663399',\n Yd: 'ff0000',\n Psybrown: 'bc8f8f',\n PyOXe: '4169e1',\n saddNbPwn: '8b4513',\n sOmon: 'fa8072',\n sandybPwn: 'f4a460',\n sHgYF: '2e8b57',\n sHshell: 'fff5ee',\n siFna: 'a0522d',\n silver: 'c0c0c0',\n skyXe: '87ceeb',\n UXe: '6a5acd',\n UWay: '708090',\n UgYy: '708090',\n snow: 'fffafa',\n sprRggYF: 'ff7f',\n stAlXe: '4682b4',\n tan: 'd2b48c',\n teO: '8080',\n tEstN: 'd8bfd8',\n tomato: 'ff6347',\n Qe: '40e0d0',\n viTet: 'ee82ee',\n JHt: 'f5deb3',\n wEte: 'ffffff',\n wEtesmoke: 'f5f5f5',\n Lw: 'ffff00',\n LwgYF: '9acd32'\n};\nfunction unpack() {\n const unpacked = {};\n const keys = Object.keys(names$1);\n const tkeys = Object.keys(map);\n let i, j, k, ok, nk;\n for (i = 0; i < keys.length; i++) {\n ok = nk = keys[i];\n for (j = 0; j < tkeys.length; j++) {\n k = tkeys[j];\n nk = nk.replace(k, map[k]);\n }\n k = parseInt(names$1[ok], 16);\n unpacked[nk] = [k >> 16 & 0xFF, k >> 8 & 0xFF, k & 0xFF];\n }\n return unpacked;\n}\nlet names;\nfunction nameParse(str) {\n if (!names) {\n names = unpack();\n names.transparent = [0, 0, 0, 0];\n }\n const a = names[str.toLowerCase()];\n return a && {\n r: a[0],\n g: a[1],\n b: a[2],\n a: a.length === 4 ? a[3] : 255\n };\n}\nconst RGB_RE = /^rgba?\\(\\s*([-+.\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?[\\s,]+([-+.e\\d]+)(%)?(?:[\\s,/]+([-+.e\\d]+)(%)?)?\\s*\\)$/;\nfunction rgbParse(str) {\n const m = RGB_RE.exec(str);\n let a = 255;\n let r, g, b;\n if (!m) {\n return;\n }\n if (m[7] !== r) {\n const v = +m[7];\n a = m[8] ? p2b(v) : lim(v * 255, 0, 255);\n }\n r = +m[1];\n g = +m[3];\n b = +m[5];\n r = 255 & (m[2] ? p2b(r) : lim(r, 0, 255));\n g = 255 & (m[4] ? p2b(g) : lim(g, 0, 255));\n b = 255 & (m[6] ? p2b(b) : lim(b, 0, 255));\n return {\n r: r,\n g: g,\n b: b,\n a: a\n };\n}\nfunction rgbString(v) {\n return v && (v.a < 255 ? `rgba(${v.r}, ${v.g}, ${v.b}, ${b2n(v.a)})` : `rgb(${v.r}, ${v.g}, ${v.b})`);\n}\nconst to = v => v <= 0.0031308 ? v * 12.92 : Math.pow(v, 1.0 / 2.4) * 1.055 - 0.055;\nconst from = v => v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);\nfunction interpolate(rgb1, rgb2, t) {\n const r = from(b2n(rgb1.r));\n const g = from(b2n(rgb1.g));\n const b = from(b2n(rgb1.b));\n return {\n r: n2b(to(r + t * (from(b2n(rgb2.r)) - r))),\n g: n2b(to(g + t * (from(b2n(rgb2.g)) - g))),\n b: n2b(to(b + t * (from(b2n(rgb2.b)) - b))),\n a: rgb1.a + t * (rgb2.a - rgb1.a)\n };\n}\nfunction modHSL(v, i, ratio) {\n if (v) {\n let tmp = rgb2hsl(v);\n tmp[i] = Math.max(0, Math.min(tmp[i] + tmp[i] * ratio, i === 0 ? 360 : 1));\n tmp = hsl2rgb(tmp);\n v.r = tmp[0];\n v.g = tmp[1];\n v.b = tmp[2];\n }\n}\nfunction clone(v, proto) {\n return v ? Object.assign(proto || {}, v) : v;\n}\nfunction fromObject(input) {\n var v = {\n r: 0,\n g: 0,\n b: 0,\n a: 255\n };\n if (Array.isArray(input)) {\n if (input.length >= 3) {\n v = {\n r: input[0],\n g: input[1],\n b: input[2],\n a: 255\n };\n if (input.length > 3) {\n v.a = n2b(input[3]);\n }\n }\n } else {\n v = clone(input, {\n r: 0,\n g: 0,\n b: 0,\n a: 1\n });\n v.a = n2b(v.a);\n }\n return v;\n}\nfunction functionParse(str) {\n if (str.charAt(0) === 'r') {\n return rgbParse(str);\n }\n return hueParse(str);\n}\nclass Color {\n constructor(input) {\n if (input instanceof Color) {\n return input;\n }\n const type = typeof input;\n let v;\n if (type === 'object') {\n v = fromObject(input);\n } else if (type === 'string') {\n v = hexParse(input) || nameParse(input) || functionParse(input);\n }\n this._rgb = v;\n this._valid = !!v;\n }\n get valid() {\n return this._valid;\n }\n get rgb() {\n var v = clone(this._rgb);\n if (v) {\n v.a = b2n(v.a);\n }\n return v;\n }\n set rgb(obj) {\n this._rgb = fromObject(obj);\n }\n rgbString() {\n return this._valid ? rgbString(this._rgb) : undefined;\n }\n hexString() {\n return this._valid ? hexString(this._rgb) : undefined;\n }\n hslString() {\n return this._valid ? hslString(this._rgb) : undefined;\n }\n mix(color, weight) {\n if (color) {\n const c1 = this.rgb;\n const c2 = color.rgb;\n let w2;\n const p = weight === w2 ? 0.5 : weight;\n const w = 2 * p - 1;\n const a = c1.a - c2.a;\n const w1 = ((w * a === -1 ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n w2 = 1 - w1;\n c1.r = 0xFF & w1 * c1.r + w2 * c2.r + 0.5;\n c1.g = 0xFF & w1 * c1.g + w2 * c2.g + 0.5;\n c1.b = 0xFF & w1 * c1.b + w2 * c2.b + 0.5;\n c1.a = p * c1.a + (1 - p) * c2.a;\n this.rgb = c1;\n }\n return this;\n }\n interpolate(color, t) {\n if (color) {\n this._rgb = interpolate(this._rgb, color._rgb, t);\n }\n return this;\n }\n clone() {\n return new Color(this.rgb);\n }\n alpha(a) {\n this._rgb.a = n2b(a);\n return this;\n }\n clearer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 - ratio;\n return this;\n }\n greyscale() {\n const rgb = this._rgb;\n const val = round(rgb.r * 0.3 + rgb.g * 0.59 + rgb.b * 0.11);\n rgb.r = rgb.g = rgb.b = val;\n return this;\n }\n opaquer(ratio) {\n const rgb = this._rgb;\n rgb.a *= 1 + ratio;\n return this;\n }\n negate() {\n const v = this._rgb;\n v.r = 255 - v.r;\n v.g = 255 - v.g;\n v.b = 255 - v.b;\n return this;\n }\n lighten(ratio) {\n modHSL(this._rgb, 2, ratio);\n return this;\n }\n darken(ratio) {\n modHSL(this._rgb, 2, -ratio);\n return this;\n }\n saturate(ratio) {\n modHSL(this._rgb, 1, ratio);\n return this;\n }\n desaturate(ratio) {\n modHSL(this._rgb, 1, -ratio);\n return this;\n }\n rotate(deg) {\n rotate(this._rgb, deg);\n return this;\n }\n}\nfunction index_esm(input) {\n return new Color(input);\n}\nexport { Color, b2n, b2p, index_esm as default, hexParse, hexString, hsl2rgb, hslString, hsv2rgb, hueParse, hwb2rgb, lim, n2b, n2p, nameParse, p2b, rgb2hsl, rgbParse, rgbString, rotate, round };","/*!\n * Chart.js v4.4.2\n * https://www.chartjs.org\n * (c) 2024 Chart.js Contributors\n * Released under the MIT License\n */\nimport { Color } from '@kurkle/color';\n\n/**\n * @namespace Chart.helpers\n */ /**\n * An empty function that can be used, for example, for optional callback.\n */\nfunction noop() {\n /* noop */}\n/**\n * Returns a unique id, sequentially generated from a global variable.\n */\nconst uid = (() => {\n let id = 0;\n return () => id++;\n})();\n/**\n * Returns true if `value` is neither null nor undefined, else returns false.\n * @param value - The value to test.\n * @since 2.7.0\n */\nfunction isNullOrUndef(value) {\n return value === null || typeof value === 'undefined';\n}\n/**\n * Returns true if `value` is an array (including typed arrays), else returns false.\n * @param value - The value to test.\n * @function\n */\nfunction isArray(value) {\n if (Array.isArray && Array.isArray(value)) {\n return true;\n }\n const type = Object.prototype.toString.call(value);\n if (type.slice(0, 7) === '[object' && type.slice(-6) === 'Array]') {\n return true;\n }\n return false;\n}\n/**\n * Returns true if `value` is an object (excluding null), else returns false.\n * @param value - The value to test.\n * @since 2.7.0\n */\nfunction isObject(value) {\n return value !== null && Object.prototype.toString.call(value) === '[object Object]';\n}\n/**\n * Returns true if `value` is a finite number, else returns false\n * @param value - The value to test.\n */\nfunction isNumberFinite(value) {\n return (typeof value === 'number' || value instanceof Number) && isFinite(+value);\n}\n/**\n * Returns `value` if finite, else returns `defaultValue`.\n * @param value - The value to return if defined.\n * @param defaultValue - The value to return if `value` is not finite.\n */\nfunction finiteOrDefault(value, defaultValue) {\n return isNumberFinite(value) ? value : defaultValue;\n}\n/**\n * Returns `value` if defined, else returns `defaultValue`.\n * @param value - The value to return if defined.\n * @param defaultValue - The value to return if `value` is undefined.\n */\nfunction valueOrDefault(value, defaultValue) {\n return typeof value === 'undefined' ? defaultValue : value;\n}\nconst toPercentage = (value, dimension) => typeof value === 'string' && value.endsWith('%') ? parseFloat(value) / 100 : +value / dimension;\nconst toDimension = (value, dimension) => typeof value === 'string' && value.endsWith('%') ? parseFloat(value) / 100 * dimension : +value;\n/**\n * Calls `fn` with the given `args` in the scope defined by `thisArg` and returns the\n * value returned by `fn`. If `fn` is not a function, this method returns undefined.\n * @param fn - The function to call.\n * @param args - The arguments with which `fn` should be called.\n * @param [thisArg] - The value of `this` provided for the call to `fn`.\n */\nfunction callback(fn, args, thisArg) {\n if (fn && typeof fn.call === 'function') {\n return fn.apply(thisArg, args);\n }\n}\nfunction each(loopable, fn, thisArg, reverse) {\n let i, len, keys;\n if (isArray(loopable)) {\n len = loopable.length;\n if (reverse) {\n for (i = len - 1; i >= 0; i--) {\n fn.call(thisArg, loopable[i], i);\n }\n } else {\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[i], i);\n }\n }\n } else if (isObject(loopable)) {\n keys = Object.keys(loopable);\n len = keys.length;\n for (i = 0; i < len; i++) {\n fn.call(thisArg, loopable[keys[i]], keys[i]);\n }\n }\n}\n/**\n * Returns true if the `a0` and `a1` arrays have the same content, else returns false.\n * @param a0 - The array to compare\n * @param a1 - The array to compare\n * @private\n */\nfunction _elementsEqual(a0, a1) {\n let i, ilen, v0, v1;\n if (!a0 || !a1 || a0.length !== a1.length) {\n return false;\n }\n for (i = 0, ilen = a0.length; i < ilen; ++i) {\n v0 = a0[i];\n v1 = a1[i];\n if (v0.datasetIndex !== v1.datasetIndex || v0.index !== v1.index) {\n return false;\n }\n }\n return true;\n}\n/**\n * Returns a deep copy of `source` without keeping references on objects and arrays.\n * @param source - The value to clone.\n */\nfunction clone(source) {\n if (isArray(source)) {\n return source.map(clone);\n }\n if (isObject(source)) {\n const target = Object.create(null);\n const keys = Object.keys(source);\n const klen = keys.length;\n let k = 0;\n for (; k < klen; ++k) {\n target[keys[k]] = clone(source[keys[k]]);\n }\n return target;\n }\n return source;\n}\nfunction isValidKey(key) {\n return ['__proto__', 'prototype', 'constructor'].indexOf(key) === -1;\n}\n/**\n * The default merger when Chart.helpers.merge is called without merger option.\n * Note(SB): also used by mergeConfig and mergeScaleConfig as fallback.\n * @private\n */\nfunction _merger(key, target, source, options) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n merge(tval, sval, options);\n } else {\n target[key] = clone(sval);\n }\n}\nfunction merge(target, source, options) {\n const sources = isArray(source) ? source : [source];\n const ilen = sources.length;\n if (!isObject(target)) {\n return target;\n }\n options = options || {};\n const merger = options.merger || _merger;\n let current;\n for (let i = 0; i < ilen; ++i) {\n current = sources[i];\n if (!isObject(current)) {\n continue;\n }\n const keys = Object.keys(current);\n for (let k = 0, klen = keys.length; k < klen; ++k) {\n merger(keys[k], target, current, options);\n }\n }\n return target;\n}\nfunction mergeIf(target, source) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n return merge(target, source, {\n merger: _mergerIf\n });\n}\n/**\n * Merges source[key] in target[key] only if target[key] is undefined.\n * @private\n */\nfunction _mergerIf(key, target, source) {\n if (!isValidKey(key)) {\n return;\n }\n const tval = target[key];\n const sval = source[key];\n if (isObject(tval) && isObject(sval)) {\n mergeIf(tval, sval);\n } else if (!Object.prototype.hasOwnProperty.call(target, key)) {\n target[key] = clone(sval);\n }\n}\n/**\n * @private\n */\nfunction _deprecated(scope, value, previous, current) {\n if (value !== undefined) {\n console.warn(scope + ': \"' + previous + '\" is deprecated. Please use \"' + current + '\" instead');\n }\n}\n// resolveObjectKey resolver cache\nconst keyResolvers = {\n // Chart.helpers.core resolveObjectKey should resolve empty key to root object\n '': v => v,\n // default resolvers\n x: o => o.x,\n y: o => o.y\n};\n/**\n * @private\n */\nfunction _splitKey(key) {\n const parts = key.split('.');\n const keys = [];\n let tmp = '';\n for (const part of parts) {\n tmp += part;\n if (tmp.endsWith('\\\\')) {\n tmp = tmp.slice(0, -1) + '.';\n } else {\n keys.push(tmp);\n tmp = '';\n }\n }\n return keys;\n}\nfunction _getKeyResolver(key) {\n const keys = _splitKey(key);\n return obj => {\n for (const k of keys) {\n if (k === '') {\n break;\n }\n obj = obj && obj[k];\n }\n return obj;\n };\n}\nfunction resolveObjectKey(obj, key) {\n const resolver = keyResolvers[key] || (keyResolvers[key] = _getKeyResolver(key));\n return resolver(obj);\n}\n/**\n * @private\n */\nfunction _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\nconst defined = value => typeof value !== 'undefined';\nconst isFunction = value => typeof value === 'function';\n// Adapted from https://stackoverflow.com/questions/31128855/comparing-ecma6-sets-for-equality#31129384\nconst setsEqual = (a, b) => {\n if (a.size !== b.size) {\n return false;\n }\n for (const item of a) {\n if (!b.has(item)) {\n return false;\n }\n }\n return true;\n};\n/**\n * @param e - The event\n * @private\n */\nfunction _isClickEvent(e) {\n return e.type === 'mouseup' || e.type === 'click' || e.type === 'contextmenu';\n}\n\n/**\n * @alias Chart.helpers.math\n * @namespace\n */\nconst PI = Math.PI;\nconst TAU = 2 * PI;\nconst PITAU = TAU + PI;\nconst INFINITY = Number.POSITIVE_INFINITY;\nconst RAD_PER_DEG = PI / 180;\nconst HALF_PI = PI / 2;\nconst QUARTER_PI = PI / 4;\nconst TWO_THIRDS_PI = PI * 2 / 3;\nconst log10 = Math.log10;\nconst sign = Math.sign;\nfunction almostEquals(x, y, epsilon) {\n return Math.abs(x - y) < epsilon;\n}\n/**\n * Implementation of the nice number algorithm used in determining where axis labels will go\n */\nfunction niceNum(range) {\n const roundedRange = Math.round(range);\n range = almostEquals(range, roundedRange, range / 1000) ? roundedRange : range;\n const niceRange = Math.pow(10, Math.floor(log10(range)));\n const fraction = range / niceRange;\n const niceFraction = fraction <= 1 ? 1 : fraction <= 2 ? 2 : fraction <= 5 ? 5 : 10;\n return niceFraction * niceRange;\n}\n/**\n * Returns an array of factors sorted from 1 to sqrt(value)\n * @private\n */\nfunction _factorize(value) {\n const result = [];\n const sqrt = Math.sqrt(value);\n let i;\n for (i = 1; i < sqrt; i++) {\n if (value % i === 0) {\n result.push(i);\n result.push(value / i);\n }\n }\n if (sqrt === (sqrt | 0)) {\n result.push(sqrt);\n }\n result.sort((a, b) => a - b).pop();\n return result;\n}\nfunction isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n}\nfunction almostWhole(x, epsilon) {\n const rounded = Math.round(x);\n return rounded - epsilon <= x && rounded + epsilon >= x;\n}\n/**\n * @private\n */\nfunction _setMinAndMaxByKey(array, target, property) {\n let i, ilen, value;\n for (i = 0, ilen = array.length; i < ilen; i++) {\n value = array[i][property];\n if (!isNaN(value)) {\n target.min = Math.min(target.min, value);\n target.max = Math.max(target.max, value);\n }\n }\n}\nfunction toRadians(degrees) {\n return degrees * (PI / 180);\n}\nfunction toDegrees(radians) {\n return radians * (180 / PI);\n}\n/**\n * Returns the number of decimal places\n * i.e. the number of digits after the decimal point, of the value of this Number.\n * @param x - A number.\n * @returns The number of decimal places.\n * @private\n */\nfunction _decimalPlaces(x) {\n if (!isNumberFinite(x)) {\n return;\n }\n let e = 1;\n let p = 0;\n while (Math.round(x * e) / e !== x) {\n e *= 10;\n p++;\n }\n return p;\n}\n// Gets the angle from vertical upright to the point about a centre.\nfunction getAngleFromPoint(centrePoint, anglePoint) {\n const distanceFromXCenter = anglePoint.x - centrePoint.x;\n const distanceFromYCenter = anglePoint.y - centrePoint.y;\n const radialDistanceFromCenter = Math.sqrt(distanceFromXCenter * distanceFromXCenter + distanceFromYCenter * distanceFromYCenter);\n let angle = Math.atan2(distanceFromYCenter, distanceFromXCenter);\n if (angle < -0.5 * PI) {\n angle += TAU; // make sure the returned angle is in the range of (-PI/2, 3PI/2]\n }\n return {\n angle,\n distance: radialDistanceFromCenter\n };\n}\nfunction distanceBetweenPoints(pt1, pt2) {\n return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n}\n/**\n * Shortest distance between angles, in either direction.\n * @private\n */\nfunction _angleDiff(a, b) {\n return (a - b + PITAU) % TAU - PI;\n}\n/**\n * Normalize angle to be between 0 and 2*PI\n * @private\n */\nfunction _normalizeAngle(a) {\n return (a % TAU + TAU) % TAU;\n}\n/**\n * @private\n */\nfunction _angleBetween(angle, start, end, sameAngleIsFullCircle) {\n const a = _normalizeAngle(angle);\n const s = _normalizeAngle(start);\n const e = _normalizeAngle(end);\n const angleToStart = _normalizeAngle(s - a);\n const angleToEnd = _normalizeAngle(e - a);\n const startToAngle = _normalizeAngle(a - s);\n const endToAngle = _normalizeAngle(a - e);\n return a === s || a === e || sameAngleIsFullCircle && s === e || angleToStart > angleToEnd && startToAngle < endToAngle;\n}\n/**\n * Limit `value` between `min` and `max`\n * @param value\n * @param min\n * @param max\n * @private\n */\nfunction _limitValue(value, min, max) {\n return Math.max(min, Math.min(max, value));\n}\n/**\n * @param {number} value\n * @private\n */\nfunction _int16Range(value) {\n return _limitValue(value, -32768, 32767);\n}\n/**\n * @param value\n * @param start\n * @param end\n * @param [epsilon]\n * @private\n */\nfunction _isBetween(value, start, end, epsilon = 1e-6) {\n return value >= Math.min(start, end) - epsilon && value <= Math.max(start, end) + epsilon;\n}\nfunction _lookup(table, value, cmp) {\n cmp = cmp || (index => table[index] < value);\n let hi = table.length - 1;\n let lo = 0;\n let mid;\n while (hi - lo > 1) {\n mid = lo + hi >> 1;\n if (cmp(mid)) {\n lo = mid;\n } else {\n hi = mid;\n }\n }\n return {\n lo,\n hi\n };\n}\n/**\n * Binary search\n * @param table - the table search. must be sorted!\n * @param key - property name for the value in each entry\n * @param value - value to find\n * @param last - lookup last index\n * @private\n */\nconst _lookupByKey = (table, key, value, last) => _lookup(table, value, last ? index => {\n const ti = table[index][key];\n return ti < value || ti === value && table[index + 1][key] === value;\n} : index => table[index][key] < value);\n/**\n * Reverse binary search\n * @param table - the table search. must be sorted!\n * @param key - property name for the value in each entry\n * @param value - value to find\n * @private\n */\nconst _rlookupByKey = (table, key, value) => _lookup(table, value, index => table[index][key] >= value);\n/**\n * Return subset of `values` between `min` and `max` inclusive.\n * Values are assumed to be in sorted order.\n * @param values - sorted array of values\n * @param min - min value\n * @param max - max value\n */\nfunction _filterBetween(values, min, max) {\n let start = 0;\n let end = values.length;\n while (start < end && values[start] < min) {\n start++;\n }\n while (end > start && values[end - 1] > max) {\n end--;\n }\n return start > 0 || end < values.length ? values.slice(start, end) : values;\n}\nconst arrayEvents = ['push', 'pop', 'shift', 'splice', 'unshift'];\nfunction listenArrayEvents(array, listener) {\n if (array._chartjs) {\n array._chartjs.listeners.push(listener);\n return;\n }\n Object.defineProperty(array, '_chartjs', {\n configurable: true,\n enumerable: false,\n value: {\n listeners: [listener]\n }\n });\n arrayEvents.forEach(key => {\n const method = '_onData' + _capitalize(key);\n const base = array[key];\n Object.defineProperty(array, key, {\n configurable: true,\n enumerable: false,\n value(...args) {\n const res = base.apply(this, args);\n array._chartjs.listeners.forEach(object => {\n if (typeof object[method] === 'function') {\n object[method](...args);\n }\n });\n return res;\n }\n });\n });\n}\nfunction unlistenArrayEvents(array, listener) {\n const stub = array._chartjs;\n if (!stub) {\n return;\n }\n const listeners = stub.listeners;\n const index = listeners.indexOf(listener);\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n if (listeners.length > 0) {\n return;\n }\n arrayEvents.forEach(key => {\n delete array[key];\n });\n delete array._chartjs;\n}\n/**\n * @param items\n */\nfunction _arrayUnique(items) {\n const set = new Set(items);\n if (set.size === items.length) {\n return items;\n }\n return Array.from(set);\n}\nfunction fontString(pixelSize, fontStyle, fontFamily) {\n return fontStyle + ' ' + pixelSize + 'px ' + fontFamily;\n}\n/**\n* Request animation polyfill\n*/\nconst requestAnimFrame = function () {\n if (typeof window === 'undefined') {\n return function (callback) {\n return callback();\n };\n }\n return window.requestAnimationFrame;\n}();\n/**\n * Throttles calling `fn` once per animation frame\n * Latest arguments are used on the actual call\n */\nfunction throttled(fn, thisArg) {\n let argsToUse = [];\n let ticking = false;\n return function (...args) {\n // Save the args for use later\n argsToUse = args;\n if (!ticking) {\n ticking = true;\n requestAnimFrame.call(window, () => {\n ticking = false;\n fn.apply(thisArg, argsToUse);\n });\n }\n };\n}\n/**\n * Debounces calling `fn` for `delay` ms\n */\nfunction debounce(fn, delay) {\n let timeout;\n return function (...args) {\n if (delay) {\n clearTimeout(timeout);\n timeout = setTimeout(fn, delay, args);\n } else {\n fn.apply(this, args);\n }\n return delay;\n };\n}\n/**\n * Converts 'start' to 'left', 'end' to 'right' and others to 'center'\n * @private\n */\nconst _toLeftRightCenter = align => align === 'start' ? 'left' : align === 'end' ? 'right' : 'center';\n/**\n * Returns `start`, `end` or `(start + end) / 2` depending on `align`. Defaults to `center`\n * @private\n */\nconst _alignStartEnd = (align, start, end) => align === 'start' ? start : align === 'end' ? end : (start + end) / 2;\n/**\n * Returns `left`, `right` or `(left + right) / 2` depending on `align`. Defaults to `left`\n * @private\n */\nconst _textX = (align, left, right, rtl) => {\n const check = rtl ? 'left' : 'right';\n return align === check ? right : align === 'center' ? (left + right) / 2 : left;\n};\n/**\n * Return start and count of visible points.\n * @private\n */\nfunction _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled) {\n const pointCount = points.length;\n let start = 0;\n let count = pointCount;\n if (meta._sorted) {\n const {\n iScale,\n _parsed\n } = meta;\n const axis = iScale.axis;\n const {\n min,\n max,\n minDefined,\n maxDefined\n } = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(Math.min(\n // @ts-expect-error Need to type _parsed\n _lookupByKey(_parsed, axis, min).lo,\n // @ts-expect-error Need to fix types on _lookupByKey\n animationsDisabled ? pointCount : _lookupByKey(points, axis, iScale.getPixelForValue(min)).lo), 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(Math.max(\n // @ts-expect-error Need to type _parsed\n _lookupByKey(_parsed, iScale.axis, max, true).hi + 1,\n // @ts-expect-error Need to fix types on _lookupByKey\n animationsDisabled ? 0 : _lookupByKey(points, axis, iScale.getPixelForValue(max), true).hi + 1), start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n }\n return {\n start,\n count\n };\n}\n/**\n * Checks if the scale ranges have changed.\n * @param {object} meta - dataset meta.\n * @returns {boolean}\n * @private\n */\nfunction _scaleRangesChanged(meta) {\n const {\n xScale,\n yScale,\n _scaleRanges\n } = meta;\n const newRanges = {\n xmin: xScale.min,\n xmax: xScale.max,\n ymin: yScale.min,\n ymax: yScale.max\n };\n if (!_scaleRanges) {\n meta._scaleRanges = newRanges;\n return true;\n }\n const changed = _scaleRanges.xmin !== xScale.min || _scaleRanges.xmax !== xScale.max || _scaleRanges.ymin !== yScale.min || _scaleRanges.ymax !== yScale.max;\n Object.assign(_scaleRanges, newRanges);\n return changed;\n}\nconst atEdge = t => t === 0 || t === 1;\nconst elasticIn = (t, s, p) => -(Math.pow(2, 10 * (t -= 1)) * Math.sin((t - s) * TAU / p));\nconst elasticOut = (t, s, p) => Math.pow(2, -10 * t) * Math.sin((t - s) * TAU / p) + 1;\n/**\n * Easing functions adapted from Robert Penner's easing equations.\n * @namespace Chart.helpers.easing.effects\n * @see http://www.robertpenner.com/easing/\n */\nconst effects = {\n linear: t => t,\n easeInQuad: t => t * t,\n easeOutQuad: t => -t * (t - 2),\n easeInOutQuad: t => (t /= 0.5) < 1 ? 0.5 * t * t : -0.5 * (--t * (t - 2) - 1),\n easeInCubic: t => t * t * t,\n easeOutCubic: t => (t -= 1) * t * t + 1,\n easeInOutCubic: t => (t /= 0.5) < 1 ? 0.5 * t * t * t : 0.5 * ((t -= 2) * t * t + 2),\n easeInQuart: t => t * t * t * t,\n easeOutQuart: t => -((t -= 1) * t * t * t - 1),\n easeInOutQuart: t => (t /= 0.5) < 1 ? 0.5 * t * t * t * t : -0.5 * ((t -= 2) * t * t * t - 2),\n easeInQuint: t => t * t * t * t * t,\n easeOutQuint: t => (t -= 1) * t * t * t * t + 1,\n easeInOutQuint: t => (t /= 0.5) < 1 ? 0.5 * t * t * t * t * t : 0.5 * ((t -= 2) * t * t * t * t + 2),\n easeInSine: t => -Math.cos(t * HALF_PI) + 1,\n easeOutSine: t => Math.sin(t * HALF_PI),\n easeInOutSine: t => -0.5 * (Math.cos(PI * t) - 1),\n easeInExpo: t => t === 0 ? 0 : Math.pow(2, 10 * (t - 1)),\n easeOutExpo: t => t === 1 ? 1 : -Math.pow(2, -10 * t) + 1,\n easeInOutExpo: t => atEdge(t) ? t : t < 0.5 ? 0.5 * Math.pow(2, 10 * (t * 2 - 1)) : 0.5 * (-Math.pow(2, -10 * (t * 2 - 1)) + 2),\n easeInCirc: t => t >= 1 ? t : -(Math.sqrt(1 - t * t) - 1),\n easeOutCirc: t => Math.sqrt(1 - (t -= 1) * t),\n easeInOutCirc: t => (t /= 0.5) < 1 ? -0.5 * (Math.sqrt(1 - t * t) - 1) : 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1),\n easeInElastic: t => atEdge(t) ? t : elasticIn(t, 0.075, 0.3),\n easeOutElastic: t => atEdge(t) ? t : elasticOut(t, 0.075, 0.3),\n easeInOutElastic(t) {\n const s = 0.1125;\n const p = 0.45;\n return atEdge(t) ? t : t < 0.5 ? 0.5 * elasticIn(t * 2, s, p) : 0.5 + 0.5 * elasticOut(t * 2 - 1, s, p);\n },\n easeInBack(t) {\n const s = 1.70158;\n return t * t * ((s + 1) * t - s);\n },\n easeOutBack(t) {\n const s = 1.70158;\n return (t -= 1) * t * ((s + 1) * t + s) + 1;\n },\n easeInOutBack(t) {\n let s = 1.70158;\n if ((t /= 0.5) < 1) {\n return 0.5 * (t * t * (((s *= 1.525) + 1) * t - s));\n }\n return 0.5 * ((t -= 2) * t * (((s *= 1.525) + 1) * t + s) + 2);\n },\n easeInBounce: t => 1 - effects.easeOutBounce(1 - t),\n easeOutBounce(t) {\n const m = 7.5625;\n const d = 2.75;\n if (t < 1 / d) {\n return m * t * t;\n }\n if (t < 2 / d) {\n return m * (t -= 1.5 / d) * t + 0.75;\n }\n if (t < 2.5 / d) {\n return m * (t -= 2.25 / d) * t + 0.9375;\n }\n return m * (t -= 2.625 / d) * t + 0.984375;\n },\n easeInOutBounce: t => t < 0.5 ? effects.easeInBounce(t * 2) * 0.5 : effects.easeOutBounce(t * 2 - 1) * 0.5 + 0.5\n};\nfunction isPatternOrGradient(value) {\n if (value && typeof value === 'object') {\n const type = value.toString();\n return type === '[object CanvasPattern]' || type === '[object CanvasGradient]';\n }\n return false;\n}\nfunction color(value) {\n return isPatternOrGradient(value) ? value : new Color(value);\n}\nfunction getHoverColor(value) {\n return isPatternOrGradient(value) ? value : new Color(value).saturate(0.5).darken(0.1).hexString();\n}\nconst numbers = ['x', 'y', 'borderWidth', 'radius', 'tension'];\nconst colors = ['color', 'borderColor', 'backgroundColor'];\nfunction applyAnimationsDefaults(defaults) {\n defaults.set('animation', {\n delay: undefined,\n duration: 1000,\n easing: 'easeOutQuart',\n fn: undefined,\n from: undefined,\n loop: undefined,\n to: undefined,\n type: undefined\n });\n defaults.describe('animation', {\n _fallback: false,\n _indexable: false,\n _scriptable: name => name !== 'onProgress' && name !== 'onComplete' && name !== 'fn'\n });\n defaults.set('animations', {\n colors: {\n type: 'color',\n properties: colors\n },\n numbers: {\n type: 'number',\n properties: numbers\n }\n });\n defaults.describe('animations', {\n _fallback: 'animation'\n });\n defaults.set('transitions', {\n active: {\n animation: {\n duration: 400\n }\n },\n resize: {\n animation: {\n duration: 0\n }\n },\n show: {\n animations: {\n colors: {\n from: 'transparent'\n },\n visible: {\n type: 'boolean',\n duration: 0\n }\n }\n },\n hide: {\n animations: {\n colors: {\n to: 'transparent'\n },\n visible: {\n type: 'boolean',\n easing: 'linear',\n fn: v => v | 0\n }\n }\n }\n });\n}\nfunction applyLayoutsDefaults(defaults) {\n defaults.set('layout', {\n autoPadding: true,\n padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }\n });\n}\nconst intlCache = new Map();\nfunction getNumberFormat(locale, options) {\n options = options || {};\n const cacheKey = locale + JSON.stringify(options);\n let formatter = intlCache.get(cacheKey);\n if (!formatter) {\n formatter = new Intl.NumberFormat(locale, options);\n intlCache.set(cacheKey, formatter);\n }\n return formatter;\n}\nfunction formatNumber(num, locale, options) {\n return getNumberFormat(locale, options).format(num);\n}\nconst formatters = {\n values(value) {\n return isArray(value) ? value : '' + value;\n },\n numeric(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const locale = this.chart.options.locale;\n let notation;\n let delta = tickValue;\n if (ticks.length > 1) {\n const maxTick = Math.max(Math.abs(ticks[0].value), Math.abs(ticks[ticks.length - 1].value));\n if (maxTick < 1e-4 || maxTick > 1e+15) {\n notation = 'scientific';\n }\n delta = calculateDelta(tickValue, ticks);\n }\n const logDelta = log10(Math.abs(delta));\n const numDecimal = isNaN(logDelta) ? 1 : Math.max(Math.min(-1 * Math.floor(logDelta), 20), 0);\n const options = {\n notation,\n minimumFractionDigits: numDecimal,\n maximumFractionDigits: numDecimal\n };\n Object.assign(options, this.options.ticks.format);\n return formatNumber(tickValue, locale, options);\n },\n logarithmic(tickValue, index, ticks) {\n if (tickValue === 0) {\n return '0';\n }\n const remain = ticks[index].significand || tickValue / Math.pow(10, Math.floor(log10(tickValue)));\n if ([1, 2, 3, 5, 10, 15].includes(remain) || index > 0.8 * ticks.length) {\n return formatters.numeric.call(this, tickValue, index, ticks);\n }\n return '';\n }\n};\nfunction calculateDelta(tickValue, ticks) {\n let delta = ticks.length > 3 ? ticks[2].value - ticks[1].value : ticks[1].value - ticks[0].value;\n if (Math.abs(delta) >= 1 && tickValue !== Math.floor(tickValue)) {\n delta = tickValue - Math.floor(tickValue);\n }\n return delta;\n}\nvar Ticks = {\n formatters\n};\nfunction applyScaleDefaults(defaults) {\n defaults.set('scale', {\n display: true,\n offset: false,\n reverse: false,\n beginAtZero: false,\n bounds: 'ticks',\n clip: true,\n grace: 0,\n grid: {\n display: true,\n lineWidth: 1,\n drawOnChartArea: true,\n drawTicks: true,\n tickLength: 8,\n tickWidth: (_ctx, options) => options.lineWidth,\n tickColor: (_ctx, options) => options.color,\n offset: false\n },\n border: {\n display: true,\n dash: [],\n dashOffset: 0.0,\n width: 1\n },\n title: {\n display: false,\n text: '',\n padding: {\n top: 4,\n bottom: 4\n }\n },\n ticks: {\n minRotation: 0,\n maxRotation: 50,\n mirror: false,\n textStrokeWidth: 0,\n textStrokeColor: '',\n padding: 3,\n display: true,\n autoSkip: true,\n autoSkipPadding: 3,\n labelOffset: 0,\n callback: Ticks.formatters.values,\n minor: {},\n major: {},\n align: 'center',\n crossAlign: 'near',\n showLabelBackdrop: false,\n backdropColor: 'rgba(255, 255, 255, 0.75)',\n backdropPadding: 2\n }\n });\n defaults.route('scale.ticks', 'color', '', 'color');\n defaults.route('scale.grid', 'color', '', 'borderColor');\n defaults.route('scale.border', 'color', '', 'borderColor');\n defaults.route('scale.title', 'color', '', 'color');\n defaults.describe('scale', {\n _fallback: false,\n _scriptable: name => !name.startsWith('before') && !name.startsWith('after') && name !== 'callback' && name !== 'parser',\n _indexable: name => name !== 'borderDash' && name !== 'tickBorderDash' && name !== 'dash'\n });\n defaults.describe('scales', {\n _fallback: 'scale'\n });\n defaults.describe('scale.ticks', {\n _scriptable: name => name !== 'backdropPadding' && name !== 'callback',\n _indexable: name => name !== 'backdropPadding'\n });\n}\nconst overrides = Object.create(null);\nconst descriptors = Object.create(null);\nfunction getScope$1(node, key) {\n if (!key) {\n return node;\n }\n const keys = key.split('.');\n for (let i = 0, n = keys.length; i < n; ++i) {\n const k = keys[i];\n node = node[k] || (node[k] = Object.create(null));\n }\n return node;\n}\nfunction set(root, scope, values) {\n if (typeof scope === 'string') {\n return merge(getScope$1(root, scope), values);\n }\n return merge(getScope$1(root, ''), scope);\n}\nclass Defaults {\n constructor(_descriptors, _appliers) {\n this.animation = undefined;\n this.backgroundColor = 'rgba(0,0,0,0.1)';\n this.borderColor = 'rgba(0,0,0,0.1)';\n this.color = '#666';\n this.datasets = {};\n this.devicePixelRatio = context => context.chart.platform.getDevicePixelRatio();\n this.elements = {};\n this.events = ['mousemove', 'mouseout', 'click', 'touchstart', 'touchmove'];\n this.font = {\n family: \"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif\",\n size: 12,\n style: 'normal',\n lineHeight: 1.2,\n weight: null\n };\n this.hover = {};\n this.hoverBackgroundColor = (ctx, options) => getHoverColor(options.backgroundColor);\n this.hoverBorderColor = (ctx, options) => getHoverColor(options.borderColor);\n this.hoverColor = (ctx, options) => getHoverColor(options.color);\n this.indexAxis = 'x';\n this.interaction = {\n mode: 'nearest',\n intersect: true,\n includeInvisible: false\n };\n this.maintainAspectRatio = true;\n this.onHover = null;\n this.onClick = null;\n this.parsing = true;\n this.plugins = {};\n this.responsive = true;\n this.scale = undefined;\n this.scales = {};\n this.showLine = true;\n this.drawActiveElementsOnTop = true;\n this.describe(_descriptors);\n this.apply(_appliers);\n }\n set(scope, values) {\n return set(this, scope, values);\n }\n get(scope) {\n return getScope$1(this, scope);\n }\n describe(scope, values) {\n return set(descriptors, scope, values);\n }\n override(scope, values) {\n return set(overrides, scope, values);\n }\n route(scope, name, targetScope, targetName) {\n const scopeObject = getScope$1(this, scope);\n const targetScopeObject = getScope$1(this, targetScope);\n const privateName = '_' + name;\n Object.defineProperties(scopeObject, {\n [privateName]: {\n value: scopeObject[name],\n writable: true\n },\n [name]: {\n enumerable: true,\n get() {\n const local = this[privateName];\n const target = targetScopeObject[targetName];\n if (isObject(local)) {\n return Object.assign({}, target, local);\n }\n return valueOrDefault(local, target);\n },\n set(value) {\n this[privateName] = value;\n }\n }\n });\n }\n apply(appliers) {\n appliers.forEach(apply => apply(this));\n }\n}\nvar defaults = /* #__PURE__ */new Defaults({\n _scriptable: name => !name.startsWith('on'),\n _indexable: name => name !== 'events',\n hover: {\n _fallback: 'interaction'\n },\n interaction: {\n _scriptable: false,\n _indexable: false\n }\n}, [applyAnimationsDefaults, applyLayoutsDefaults, applyScaleDefaults]);\n\n/**\n * Converts the given font object into a CSS font string.\n * @param font - A font object.\n * @return The CSS font string. See https://developer.mozilla.org/en-US/docs/Web/CSS/font\n * @private\n */\nfunction toFontString(font) {\n if (!font || isNullOrUndef(font.size) || isNullOrUndef(font.family)) {\n return null;\n }\n return (font.style ? font.style + ' ' : '') + (font.weight ? font.weight + ' ' : '') + font.size + 'px ' + font.family;\n}\n/**\n * @private\n */\nfunction _measureText(ctx, data, gc, longest, string) {\n let textWidth = data[string];\n if (!textWidth) {\n textWidth = data[string] = ctx.measureText(string).width;\n gc.push(string);\n }\n if (textWidth > longest) {\n longest = textWidth;\n }\n return longest;\n}\n/**\n * @private\n */ // eslint-disable-next-line complexity\nfunction _longestText(ctx, font, arrayOfThings, cache) {\n cache = cache || {};\n let data = cache.data = cache.data || {};\n let gc = cache.garbageCollect = cache.garbageCollect || [];\n if (cache.font !== font) {\n data = cache.data = {};\n gc = cache.garbageCollect = [];\n cache.font = font;\n }\n ctx.save();\n ctx.font = font;\n let longest = 0;\n const ilen = arrayOfThings.length;\n let i, j, jlen, thing, nestedThing;\n for (i = 0; i < ilen; i++) {\n thing = arrayOfThings[i];\n // Undefined strings and arrays should not be measured\n if (thing !== undefined && thing !== null && !isArray(thing)) {\n longest = _measureText(ctx, data, gc, longest, thing);\n } else if (isArray(thing)) {\n // if it is an array lets measure each element\n // to do maybe simplify this function a bit so we can do this more recursively?\n for (j = 0, jlen = thing.length; j < jlen; j++) {\n nestedThing = thing[j];\n // Undefined strings and arrays should not be measured\n if (nestedThing !== undefined && nestedThing !== null && !isArray(nestedThing)) {\n longest = _measureText(ctx, data, gc, longest, nestedThing);\n }\n }\n }\n }\n ctx.restore();\n const gcLen = gc.length / 2;\n if (gcLen > arrayOfThings.length) {\n for (i = 0; i < gcLen; i++) {\n delete data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n return longest;\n}\n/**\n * Returns the aligned pixel value to avoid anti-aliasing blur\n * @param chart - The chart instance.\n * @param pixel - A pixel value.\n * @param width - The width of the element.\n * @returns The aligned pixel value.\n * @private\n */\nfunction _alignPixel(chart, pixel, width) {\n const devicePixelRatio = chart.currentDevicePixelRatio;\n const halfWidth = width !== 0 ? Math.max(width / 2, 0.5) : 0;\n return Math.round((pixel - halfWidth) * devicePixelRatio) / devicePixelRatio + halfWidth;\n}\n/**\n * Clears the entire canvas.\n */\nfunction clearCanvas(canvas, ctx) {\n ctx = ctx || canvas.getContext('2d');\n ctx.save();\n // canvas.width and canvas.height do not consider the canvas transform,\n // while clearRect does\n ctx.resetTransform();\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.restore();\n}\nfunction drawPoint(ctx, options, x, y) {\n // eslint-disable-next-line @typescript-eslint/no-use-before-define\n drawPointLegend(ctx, options, x, y, null);\n}\n// eslint-disable-next-line complexity\nfunction drawPointLegend(ctx, options, x, y, w) {\n let type, xOffset, yOffset, size, cornerRadius, width, xOffsetW, yOffsetW;\n const style = options.pointStyle;\n const rotation = options.rotation;\n const radius = options.radius;\n let rad = (rotation || 0) * RAD_PER_DEG;\n if (style && typeof style === 'object') {\n type = style.toString();\n if (type === '[object HTMLImageElement]' || type === '[object HTMLCanvasElement]') {\n ctx.save();\n ctx.translate(x, y);\n ctx.rotate(rad);\n ctx.drawImage(style, -style.width / 2, -style.height / 2, style.width, style.height);\n ctx.restore();\n return;\n }\n }\n if (isNaN(radius) || radius <= 0) {\n return;\n }\n ctx.beginPath();\n switch (style) {\n // Default includes circle\n default:\n if (w) {\n ctx.ellipse(x, y, w / 2, radius, 0, 0, TAU);\n } else {\n ctx.arc(x, y, radius, 0, TAU);\n }\n ctx.closePath();\n break;\n case 'triangle':\n width = w ? w / 2 : radius;\n ctx.moveTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n rad += TWO_THIRDS_PI;\n ctx.lineTo(x + Math.sin(rad) * width, y - Math.cos(rad) * radius);\n ctx.closePath();\n break;\n case 'rectRounded':\n // NOTE: the rounded rect implementation changed to use `arc` instead of\n // `quadraticCurveTo` since it generates better results when rect is\n // almost a circle. 0.516 (instead of 0.5) produces results with visually\n // closer proportion to the previous impl and it is inscribed in the\n // circle with `radius`. For more details, see the following PRs:\n // https://github.com/chartjs/Chart.js/issues/5597\n // https://github.com/chartjs/Chart.js/issues/5858\n cornerRadius = radius * 0.516;\n size = radius - cornerRadius;\n xOffset = Math.cos(rad + QUARTER_PI) * size;\n xOffsetW = Math.cos(rad + QUARTER_PI) * (w ? w / 2 - cornerRadius : size);\n yOffset = Math.sin(rad + QUARTER_PI) * size;\n yOffsetW = Math.sin(rad + QUARTER_PI) * (w ? w / 2 - cornerRadius : size);\n ctx.arc(x - xOffsetW, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI);\n ctx.arc(x + yOffsetW, y - xOffset, cornerRadius, rad - HALF_PI, rad);\n ctx.arc(x + xOffsetW, y + yOffset, cornerRadius, rad, rad + HALF_PI);\n ctx.arc(x - yOffsetW, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI);\n ctx.closePath();\n break;\n case 'rect':\n if (!rotation) {\n size = Math.SQRT1_2 * radius;\n width = w ? w / 2 : size;\n ctx.rect(x - width, y - size, 2 * width, 2 * size);\n break;\n }\n rad += QUARTER_PI;\n /* falls through */\n case 'rectRot':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n ctx.closePath();\n break;\n case 'crossRot':\n rad += QUARTER_PI;\n /* falls through */\n case 'cross':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n break;\n case 'star':\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n rad += QUARTER_PI;\n xOffsetW = Math.cos(rad) * (w ? w / 2 : radius);\n xOffset = Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n yOffsetW = Math.sin(rad) * (w ? w / 2 : radius);\n ctx.moveTo(x - xOffsetW, y - yOffset);\n ctx.lineTo(x + xOffsetW, y + yOffset);\n ctx.moveTo(x + yOffsetW, y - xOffset);\n ctx.lineTo(x - yOffsetW, y + xOffset);\n break;\n case 'line':\n xOffset = w ? w / 2 : Math.cos(rad) * radius;\n yOffset = Math.sin(rad) * radius;\n ctx.moveTo(x - xOffset, y - yOffset);\n ctx.lineTo(x + xOffset, y + yOffset);\n break;\n case 'dash':\n ctx.moveTo(x, y);\n ctx.lineTo(x + Math.cos(rad) * (w ? w / 2 : radius), y + Math.sin(rad) * radius);\n break;\n case false:\n ctx.closePath();\n break;\n }\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n}\n/**\n * Returns true if the point is inside the rectangle\n * @param point - The point to test\n * @param area - The rectangle\n * @param margin - allowed margin\n * @private\n */\nfunction _isPointInArea(point, area, margin) {\n margin = margin || 0.5; // margin - default is to match rounded decimals\n return !area || point && point.x > area.left - margin && point.x < area.right + margin && point.y > area.top - margin && point.y < area.bottom + margin;\n}\nfunction clipArea(ctx, area) {\n ctx.save();\n ctx.beginPath();\n ctx.rect(area.left, area.top, area.right - area.left, area.bottom - area.top);\n ctx.clip();\n}\nfunction unclipArea(ctx) {\n ctx.restore();\n}\n/**\n * @private\n */\nfunction _steppedLineTo(ctx, previous, target, flip, mode) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n if (mode === 'middle') {\n const midpoint = (previous.x + target.x) / 2.0;\n ctx.lineTo(midpoint, previous.y);\n ctx.lineTo(midpoint, target.y);\n } else if (mode === 'after' !== !!flip) {\n ctx.lineTo(previous.x, target.y);\n } else {\n ctx.lineTo(target.x, previous.y);\n }\n ctx.lineTo(target.x, target.y);\n}\n/**\n * @private\n */\nfunction _bezierCurveTo(ctx, previous, target, flip) {\n if (!previous) {\n return ctx.lineTo(target.x, target.y);\n }\n ctx.bezierCurveTo(flip ? previous.cp1x : previous.cp2x, flip ? previous.cp1y : previous.cp2y, flip ? target.cp2x : target.cp1x, flip ? target.cp2y : target.cp1y, target.x, target.y);\n}\nfunction setRenderOpts(ctx, opts) {\n if (opts.translation) {\n ctx.translate(opts.translation[0], opts.translation[1]);\n }\n if (!isNullOrUndef(opts.rotation)) {\n ctx.rotate(opts.rotation);\n }\n if (opts.color) {\n ctx.fillStyle = opts.color;\n }\n if (opts.textAlign) {\n ctx.textAlign = opts.textAlign;\n }\n if (opts.textBaseline) {\n ctx.textBaseline = opts.textBaseline;\n }\n}\nfunction decorateText(ctx, x, y, line, opts) {\n if (opts.strikethrough || opts.underline) {\n /**\n * Now that IE11 support has been dropped, we can use more\n * of the TextMetrics object. The actual bounding boxes\n * are unflagged in Chrome, Firefox, Edge, and Safari so they\n * can be safely used.\n * See https://developer.mozilla.org/en-US/docs/Web/API/TextMetrics#Browser_compatibility\n */\n const metrics = ctx.measureText(line);\n const left = x - metrics.actualBoundingBoxLeft;\n const right = x + metrics.actualBoundingBoxRight;\n const top = y - metrics.actualBoundingBoxAscent;\n const bottom = y + metrics.actualBoundingBoxDescent;\n const yDecoration = opts.strikethrough ? (top + bottom) / 2 : bottom;\n ctx.strokeStyle = ctx.fillStyle;\n ctx.beginPath();\n ctx.lineWidth = opts.decorationWidth || 2;\n ctx.moveTo(left, yDecoration);\n ctx.lineTo(right, yDecoration);\n ctx.stroke();\n }\n}\nfunction drawBackdrop(ctx, opts) {\n const oldColor = ctx.fillStyle;\n ctx.fillStyle = opts.color;\n ctx.fillRect(opts.left, opts.top, opts.width, opts.height);\n ctx.fillStyle = oldColor;\n}\n/**\n * Render text onto the canvas\n */\nfunction renderText(ctx, text, x, y, font, opts = {}) {\n const lines = isArray(text) ? text : [text];\n const stroke = opts.strokeWidth > 0 && opts.strokeColor !== '';\n let i, line;\n ctx.save();\n ctx.font = font.string;\n setRenderOpts(ctx, opts);\n for (i = 0; i < lines.length; ++i) {\n line = lines[i];\n if (opts.backdrop) {\n drawBackdrop(ctx, opts.backdrop);\n }\n if (stroke) {\n if (opts.strokeColor) {\n ctx.strokeStyle = opts.strokeColor;\n }\n if (!isNullOrUndef(opts.strokeWidth)) {\n ctx.lineWidth = opts.strokeWidth;\n }\n ctx.strokeText(line, x, y, opts.maxWidth);\n }\n ctx.fillText(line, x, y, opts.maxWidth);\n decorateText(ctx, x, y, line, opts);\n y += Number(font.lineHeight);\n }\n ctx.restore();\n}\n/**\n * Add a path of a rectangle with rounded corners to the current sub-path\n * @param ctx - Context\n * @param rect - Bounding rect\n */\nfunction addRoundedRectPath(ctx, rect) {\n const {\n x,\n y,\n w,\n h,\n radius\n } = rect;\n // top left arc\n ctx.arc(x + radius.topLeft, y + radius.topLeft, radius.topLeft, 1.5 * PI, PI, true);\n // line from top left to bottom left\n ctx.lineTo(x, y + h - radius.bottomLeft);\n // bottom left arc\n ctx.arc(x + radius.bottomLeft, y + h - radius.bottomLeft, radius.bottomLeft, PI, HALF_PI, true);\n // line from bottom left to bottom right\n ctx.lineTo(x + w - radius.bottomRight, y + h);\n // bottom right arc\n ctx.arc(x + w - radius.bottomRight, y + h - radius.bottomRight, radius.bottomRight, HALF_PI, 0, true);\n // line from bottom right to top right\n ctx.lineTo(x + w, y + radius.topRight);\n // top right arc\n ctx.arc(x + w - radius.topRight, y + radius.topRight, radius.topRight, 0, -HALF_PI, true);\n // line from top right to top left\n ctx.lineTo(x + radius.topLeft, y);\n}\nconst LINE_HEIGHT = /^(normal|(\\d+(?:\\.\\d+)?)(px|em|%)?)$/;\nconst FONT_STYLE = /^(normal|italic|initial|inherit|unset|(oblique( -?[0-9]?[0-9]deg)?))$/;\n/**\n * @alias Chart.helpers.options\n * @namespace\n */ /**\n * Converts the given line height `value` in pixels for a specific font `size`.\n * @param value - The lineHeight to parse (eg. 1.6, '14px', '75%', '1.6em').\n * @param size - The font size (in pixels) used to resolve relative `value`.\n * @returns The effective line height in pixels (size * 1.2 if value is invalid).\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/line-height\n * @since 2.7.0\n */\nfunction toLineHeight(value, size) {\n const matches = ('' + value).match(LINE_HEIGHT);\n if (!matches || matches[1] === 'normal') {\n return size * 1.2;\n }\n value = +matches[2];\n switch (matches[3]) {\n case 'px':\n return value;\n case '%':\n value /= 100;\n break;\n }\n return size * value;\n}\nconst numberOrZero = v => +v || 0;\nfunction _readValueToProps(value, props) {\n const ret = {};\n const objProps = isObject(props);\n const keys = objProps ? Object.keys(props) : props;\n const read = isObject(value) ? objProps ? prop => valueOrDefault(value[prop], value[props[prop]]) : prop => value[prop] : () => value;\n for (const prop of keys) {\n ret[prop] = numberOrZero(read(prop));\n }\n return ret;\n}\n/**\n * Converts the given value into a TRBL object.\n * @param value - If a number, set the value to all TRBL component,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * x / y are shorthands for same value for left/right and top/bottom.\n * @returns The padding values (top, right, bottom, left)\n * @since 3.0.0\n */\nfunction toTRBL(value) {\n return _readValueToProps(value, {\n top: 'y',\n right: 'x',\n bottom: 'y',\n left: 'x'\n });\n}\n/**\n * Converts the given value into a TRBL corners object (similar with css border-radius).\n * @param value - If a number, set the value to all TRBL corner components,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * @returns The TRBL corner values (topLeft, topRight, bottomLeft, bottomRight)\n * @since 3.0.0\n */\nfunction toTRBLCorners(value) {\n return _readValueToProps(value, ['topLeft', 'topRight', 'bottomLeft', 'bottomRight']);\n}\n/**\n * Converts the given value into a padding object with pre-computed width/height.\n * @param value - If a number, set the value to all TRBL component,\n * else, if an object, use defined properties and sets undefined ones to 0.\n * x / y are shorthands for same value for left/right and top/bottom.\n * @returns The padding values (top, right, bottom, left, width, height)\n * @since 2.7.0\n */\nfunction toPadding(value) {\n const obj = toTRBL(value);\n obj.width = obj.left + obj.right;\n obj.height = obj.top + obj.bottom;\n return obj;\n}\n/**\n * Parses font options and returns the font object.\n * @param options - A object that contains font options to be parsed.\n * @param fallback - A object that contains fallback font options.\n * @return The font object.\n * @private\n */\nfunction toFont(options, fallback) {\n options = options || {};\n fallback = fallback || defaults.font;\n let size = valueOrDefault(options.size, fallback.size);\n if (typeof size === 'string') {\n size = parseInt(size, 10);\n }\n let style = valueOrDefault(options.style, fallback.style);\n if (style && !('' + style).match(FONT_STYLE)) {\n console.warn('Invalid font style specified: \"' + style + '\"');\n style = undefined;\n }\n const font = {\n family: valueOrDefault(options.family, fallback.family),\n lineHeight: toLineHeight(valueOrDefault(options.lineHeight, fallback.lineHeight), size),\n size,\n style,\n weight: valueOrDefault(options.weight, fallback.weight),\n string: ''\n };\n font.string = toFontString(font);\n return font;\n}\n/**\n * Evaluates the given `inputs` sequentially and returns the first defined value.\n * @param inputs - An array of values, falling back to the last value.\n * @param context - If defined and the current value is a function, the value\n * is called with `context` as first argument and the result becomes the new input.\n * @param index - If defined and the current value is an array, the value\n * at `index` become the new input.\n * @param info - object to return information about resolution in\n * @param info.cacheable - Will be set to `false` if option is not cacheable.\n * @since 2.7.0\n */\nfunction resolve(inputs, context, index, info) {\n let cacheable = true;\n let i, ilen, value;\n for (i = 0, ilen = inputs.length; i < ilen; ++i) {\n value = inputs[i];\n if (value === undefined) {\n continue;\n }\n if (context !== undefined && typeof value === 'function') {\n value = value(context);\n cacheable = false;\n }\n if (index !== undefined && isArray(value)) {\n value = value[index % value.length];\n cacheable = false;\n }\n if (value !== undefined) {\n if (info && !cacheable) {\n info.cacheable = false;\n }\n return value;\n }\n }\n}\n/**\n * @param minmax\n * @param grace\n * @param beginAtZero\n * @private\n */\nfunction _addGrace(minmax, grace, beginAtZero) {\n const {\n min,\n max\n } = minmax;\n const change = toDimension(grace, (max - min) / 2);\n const keepZero = (value, add) => beginAtZero && value === 0 ? 0 : value + add;\n return {\n min: keepZero(min, -Math.abs(change)),\n max: keepZero(max, change)\n };\n}\nfunction createContext(parentContext, context) {\n return Object.assign(Object.create(parentContext), context);\n}\n\n/**\n * Creates a Proxy for resolving raw values for options.\n * @param scopes - The option scopes to look for values, in resolution order\n * @param prefixes - The prefixes for values, in resolution order.\n * @param rootScopes - The root option scopes\n * @param fallback - Parent scopes fallback\n * @param getTarget - callback for getting the target for changed values\n * @returns Proxy\n * @private\n */\nfunction _createResolver(scopes, prefixes = [''], rootScopes, fallback, getTarget = () => scopes[0]) {\n const finalRootScopes = rootScopes || scopes;\n if (typeof fallback === 'undefined') {\n fallback = _resolve('_fallback', scopes);\n }\n const cache = {\n [Symbol.toStringTag]: 'Object',\n _cacheable: true,\n _scopes: scopes,\n _rootScopes: finalRootScopes,\n _fallback: fallback,\n _getTarget: getTarget,\n override: scope => _createResolver([scope, ...scopes], prefixes, finalRootScopes, fallback)\n };\n return new Proxy(cache, {\n /**\n * A trap for the delete operator.\n */\n deleteProperty(target, prop) {\n delete target[prop]; // remove from cache\n delete target._keys; // remove cached keys\n delete scopes[0][prop]; // remove from top level scope\n return true;\n },\n /**\n * A trap for getting property values.\n */\n get(target, prop) {\n return _cached(target, prop, () => _resolveWithPrefixes(prop, prefixes, scopes, target));\n },\n /**\n * A trap for Object.getOwnPropertyDescriptor.\n * Also used by Object.hasOwnProperty.\n */\n getOwnPropertyDescriptor(target, prop) {\n return Reflect.getOwnPropertyDescriptor(target._scopes[0], prop);\n },\n /**\n * A trap for Object.getPrototypeOf.\n */\n getPrototypeOf() {\n return Reflect.getPrototypeOf(scopes[0]);\n },\n /**\n * A trap for the in operator.\n */\n has(target, prop) {\n return getKeysFromAllScopes(target).includes(prop);\n },\n /**\n * A trap for Object.getOwnPropertyNames and Object.getOwnPropertySymbols.\n */\n ownKeys(target) {\n return getKeysFromAllScopes(target);\n },\n /**\n * A trap for setting property values.\n */\n set(target, prop, value) {\n const storage = target._storage || (target._storage = getTarget());\n target[prop] = storage[prop] = value; // set to top level scope + cache\n delete target._keys; // remove cached keys\n return true;\n }\n });\n}\n/**\n * Returns an Proxy for resolving option values with context.\n * @param proxy - The Proxy returned by `_createResolver`\n * @param context - Context object for scriptable/indexable options\n * @param subProxy - The proxy provided for scriptable options\n * @param descriptorDefaults - Defaults for descriptors\n * @private\n */\nfunction _attachContext(proxy, context, subProxy, descriptorDefaults) {\n const cache = {\n _cacheable: false,\n _proxy: proxy,\n _context: context,\n _subProxy: subProxy,\n _stack: new Set(),\n _descriptors: _descriptors(proxy, descriptorDefaults),\n setContext: ctx => _attachContext(proxy, ctx, subProxy, descriptorDefaults),\n override: scope => _attachContext(proxy.override(scope), context, subProxy, descriptorDefaults)\n };\n return new Proxy(cache, {\n /**\n * A trap for the delete operator.\n */\n deleteProperty(target, prop) {\n delete target[prop]; // remove from cache\n delete proxy[prop]; // remove from proxy\n return true;\n },\n /**\n * A trap for getting property values.\n */\n get(target, prop, receiver) {\n return _cached(target, prop, () => _resolveWithContext(target, prop, receiver));\n },\n /**\n * A trap for Object.getOwnPropertyDescriptor.\n * Also used by Object.hasOwnProperty.\n */\n getOwnPropertyDescriptor(target, prop) {\n return target._descriptors.allKeys ? Reflect.has(proxy, prop) ? {\n enumerable: true,\n configurable: true\n } : undefined : Reflect.getOwnPropertyDescriptor(proxy, prop);\n },\n /**\n * A trap for Object.getPrototypeOf.\n */\n getPrototypeOf() {\n return Reflect.getPrototypeOf(proxy);\n },\n /**\n * A trap for the in operator.\n */\n has(target, prop) {\n return Reflect.has(proxy, prop);\n },\n /**\n * A trap for Object.getOwnPropertyNames and Object.getOwnPropertySymbols.\n */\n ownKeys() {\n return Reflect.ownKeys(proxy);\n },\n /**\n * A trap for setting property values.\n */\n set(target, prop, value) {\n proxy[prop] = value; // set to proxy\n delete target[prop]; // remove from cache\n return true;\n }\n });\n}\n/**\n * @private\n */\nfunction _descriptors(proxy, defaults = {\n scriptable: true,\n indexable: true\n}) {\n const {\n _scriptable = defaults.scriptable,\n _indexable = defaults.indexable,\n _allKeys = defaults.allKeys\n } = proxy;\n return {\n allKeys: _allKeys,\n scriptable: _scriptable,\n indexable: _indexable,\n isScriptable: isFunction(_scriptable) ? _scriptable : () => _scriptable,\n isIndexable: isFunction(_indexable) ? _indexable : () => _indexable\n };\n}\nconst readKey = (prefix, name) => prefix ? prefix + _capitalize(name) : name;\nconst needsSubResolver = (prop, value) => isObject(value) && prop !== 'adapters' && (Object.getPrototypeOf(value) === null || value.constructor === Object);\nfunction _cached(target, prop, resolve) {\n if (Object.prototype.hasOwnProperty.call(target, prop)) {\n return target[prop];\n }\n const value = resolve();\n // cache the resolved value\n target[prop] = value;\n return value;\n}\nfunction _resolveWithContext(target, prop, receiver) {\n const {\n _proxy,\n _context,\n _subProxy,\n _descriptors: descriptors\n } = target;\n let value = _proxy[prop]; // resolve from proxy\n // resolve with context\n if (isFunction(value) && descriptors.isScriptable(prop)) {\n value = _resolveScriptable(prop, value, target, receiver);\n }\n if (isArray(value) && value.length) {\n value = _resolveArray(prop, value, target, descriptors.isIndexable);\n }\n if (needsSubResolver(prop, value)) {\n // if the resolved value is an object, create a sub resolver for it\n value = _attachContext(value, _context, _subProxy && _subProxy[prop], descriptors);\n }\n return value;\n}\nfunction _resolveScriptable(prop, getValue, target, receiver) {\n const {\n _proxy,\n _context,\n _subProxy,\n _stack\n } = target;\n if (_stack.has(prop)) {\n throw new Error('Recursion detected: ' + Array.from(_stack).join('->') + '->' + prop);\n }\n _stack.add(prop);\n let value = getValue(_context, _subProxy || receiver);\n _stack.delete(prop);\n if (needsSubResolver(prop, value)) {\n // When scriptable option returns an object, create a resolver on that.\n value = createSubResolver(_proxy._scopes, _proxy, prop, value);\n }\n return value;\n}\nfunction _resolveArray(prop, value, target, isIndexable) {\n const {\n _proxy,\n _context,\n _subProxy,\n _descriptors: descriptors\n } = target;\n if (typeof _context.index !== 'undefined' && isIndexable(prop)) {\n return value[_context.index % value.length];\n } else if (isObject(value[0])) {\n // Array of objects, return array or resolvers\n const arr = value;\n const scopes = _proxy._scopes.filter(s => s !== arr);\n value = [];\n for (const item of arr) {\n const resolver = createSubResolver(scopes, _proxy, prop, item);\n value.push(_attachContext(resolver, _context, _subProxy && _subProxy[prop], descriptors));\n }\n }\n return value;\n}\nfunction resolveFallback(fallback, prop, value) {\n return isFunction(fallback) ? fallback(prop, value) : fallback;\n}\nconst getScope = (key, parent) => key === true ? parent : typeof key === 'string' ? resolveObjectKey(parent, key) : undefined;\nfunction addScopes(set, parentScopes, key, parentFallback, value) {\n for (const parent of parentScopes) {\n const scope = getScope(key, parent);\n if (scope) {\n set.add(scope);\n const fallback = resolveFallback(scope._fallback, key, value);\n if (typeof fallback !== 'undefined' && fallback !== key && fallback !== parentFallback) {\n // When we reach the descriptor that defines a new _fallback, return that.\n // The fallback will resume to that new scope.\n return fallback;\n }\n } else if (scope === false && typeof parentFallback !== 'undefined' && key !== parentFallback) {\n // Fallback to `false` results to `false`, when falling back to different key.\n // For example `interaction` from `hover` or `plugins.tooltip` and `animation` from `animations`\n return null;\n }\n }\n return false;\n}\nfunction createSubResolver(parentScopes, resolver, prop, value) {\n const rootScopes = resolver._rootScopes;\n const fallback = resolveFallback(resolver._fallback, prop, value);\n const allScopes = [...parentScopes, ...rootScopes];\n const set = new Set();\n set.add(value);\n let key = addScopesFromKey(set, allScopes, prop, fallback || prop, value);\n if (key === null) {\n return false;\n }\n if (typeof fallback !== 'undefined' && fallback !== prop) {\n key = addScopesFromKey(set, allScopes, fallback, key, value);\n if (key === null) {\n return false;\n }\n }\n return _createResolver(Array.from(set), [''], rootScopes, fallback, () => subGetTarget(resolver, prop, value));\n}\nfunction addScopesFromKey(set, allScopes, key, fallback, item) {\n while (key) {\n key = addScopes(set, allScopes, key, fallback, item);\n }\n return key;\n}\nfunction subGetTarget(resolver, prop, value) {\n const parent = resolver._getTarget();\n if (!(prop in parent)) {\n parent[prop] = {};\n }\n const target = parent[prop];\n if (isArray(target) && isObject(value)) {\n // For array of objects, the object is used to store updated values\n return value;\n }\n return target || {};\n}\nfunction _resolveWithPrefixes(prop, prefixes, scopes, proxy) {\n let value;\n for (const prefix of prefixes) {\n value = _resolve(readKey(prefix, prop), scopes);\n if (typeof value !== 'undefined') {\n return needsSubResolver(prop, value) ? createSubResolver(scopes, proxy, prop, value) : value;\n }\n }\n}\nfunction _resolve(key, scopes) {\n for (const scope of scopes) {\n if (!scope) {\n continue;\n }\n const value = scope[key];\n if (typeof value !== 'undefined') {\n return value;\n }\n }\n}\nfunction getKeysFromAllScopes(target) {\n let keys = target._keys;\n if (!keys) {\n keys = target._keys = resolveKeysFromAllScopes(target._scopes);\n }\n return keys;\n}\nfunction resolveKeysFromAllScopes(scopes) {\n const set = new Set();\n for (const scope of scopes) {\n for (const key of Object.keys(scope).filter(k => !k.startsWith('_'))) {\n set.add(key);\n }\n }\n return Array.from(set);\n}\nfunction _parseObjectDataRadialScale(meta, data, start, count) {\n const {\n iScale\n } = meta;\n const {\n key = 'r'\n } = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n r: iScale.parse(resolveObjectKey(item, key), index)\n };\n }\n return parsed;\n}\nconst EPSILON = Number.EPSILON || 1e-14;\nconst getPoint = (points, i) => i < points.length && !points[i].skip && points[i];\nconst getValueAxis = indexAxis => indexAxis === 'x' ? 'y' : 'x';\nfunction splineCurve(firstPoint, middlePoint, afterPoint, t) {\n // Props to Rob Spencer at scaled innovation for his post on splining between points\n // http://scaledinnovation.com/analytics/splines/aboutSplines.html\n // This function must also respect \"skipped\" points\n const previous = firstPoint.skip ? middlePoint : firstPoint;\n const current = middlePoint;\n const next = afterPoint.skip ? middlePoint : afterPoint;\n const d01 = distanceBetweenPoints(current, previous);\n const d12 = distanceBetweenPoints(next, current);\n let s01 = d01 / (d01 + d12);\n let s12 = d12 / (d01 + d12);\n // If all points are the same, s01 & s02 will be inf\n s01 = isNaN(s01) ? 0 : s01;\n s12 = isNaN(s12) ? 0 : s12;\n const fa = t * s01; // scaling factor for triangle Ta\n const fb = t * s12;\n return {\n previous: {\n x: current.x - fa * (next.x - previous.x),\n y: current.y - fa * (next.y - previous.y)\n },\n next: {\n x: current.x + fb * (next.x - previous.x),\n y: current.y + fb * (next.y - previous.y)\n }\n };\n}\n/**\n * Adjust tangents to ensure monotonic properties\n */\nfunction monotoneAdjust(points, deltaK, mK) {\n const pointsLen = points.length;\n let alphaK, betaK, tauK, squaredMagnitude, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (let i = 0; i < pointsLen - 1; ++i) {\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent || !pointAfter) {\n continue;\n }\n if (almostEquals(deltaK[i], 0, EPSILON)) {\n mK[i] = mK[i + 1] = 0;\n continue;\n }\n alphaK = mK[i] / deltaK[i];\n betaK = mK[i + 1] / deltaK[i];\n squaredMagnitude = Math.pow(alphaK, 2) + Math.pow(betaK, 2);\n if (squaredMagnitude <= 9) {\n continue;\n }\n tauK = 3 / Math.sqrt(squaredMagnitude);\n mK[i] = alphaK * tauK * deltaK[i];\n mK[i + 1] = betaK * tauK * deltaK[i];\n }\n}\nfunction monotoneCompute(points, mK, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n let delta, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (let i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n const iPixel = pointCurrent[indexAxis];\n const vPixel = pointCurrent[valueAxis];\n if (pointBefore) {\n delta = (iPixel - pointBefore[indexAxis]) / 3;\n pointCurrent[`cp1${indexAxis}`] = iPixel - delta;\n pointCurrent[`cp1${valueAxis}`] = vPixel - delta * mK[i];\n }\n if (pointAfter) {\n delta = (pointAfter[indexAxis] - iPixel) / 3;\n pointCurrent[`cp2${indexAxis}`] = iPixel + delta;\n pointCurrent[`cp2${valueAxis}`] = vPixel + delta * mK[i];\n }\n }\n}\n/**\n * This function calculates Bézier control points in a similar way than |splineCurve|,\n * but preserves monotonicity of the provided data and ensures no local extremums are added\n * between the dataset discrete points due to the interpolation.\n * See : https://en.wikipedia.org/wiki/Monotone_cubic_interpolation\n */\nfunction splineCurveMonotone(points, indexAxis = 'x') {\n const valueAxis = getValueAxis(indexAxis);\n const pointsLen = points.length;\n const deltaK = Array(pointsLen).fill(0);\n const mK = Array(pointsLen);\n // Calculate slopes (deltaK) and initialize tangents (mK)\n let i, pointBefore, pointCurrent;\n let pointAfter = getPoint(points, 0);\n for (i = 0; i < pointsLen; ++i) {\n pointBefore = pointCurrent;\n pointCurrent = pointAfter;\n pointAfter = getPoint(points, i + 1);\n if (!pointCurrent) {\n continue;\n }\n if (pointAfter) {\n const slopeDelta = pointAfter[indexAxis] - pointCurrent[indexAxis];\n // In the case of two points that appear at the same x pixel, slopeDeltaX is 0\n deltaK[i] = slopeDelta !== 0 ? (pointAfter[valueAxis] - pointCurrent[valueAxis]) / slopeDelta : 0;\n }\n mK[i] = !pointBefore ? deltaK[i] : !pointAfter ? deltaK[i - 1] : sign(deltaK[i - 1]) !== sign(deltaK[i]) ? 0 : (deltaK[i - 1] + deltaK[i]) / 2;\n }\n monotoneAdjust(points, deltaK, mK);\n monotoneCompute(points, mK, indexAxis);\n}\nfunction capControlPoint(pt, min, max) {\n return Math.max(Math.min(pt, max), min);\n}\nfunction capBezierPoints(points, area) {\n let i, ilen, point, inArea, inAreaPrev;\n let inAreaNext = _isPointInArea(points[0], area);\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n inAreaPrev = inArea;\n inArea = inAreaNext;\n inAreaNext = i < ilen - 1 && _isPointInArea(points[i + 1], area);\n if (!inArea) {\n continue;\n }\n point = points[i];\n if (inAreaPrev) {\n point.cp1x = capControlPoint(point.cp1x, area.left, area.right);\n point.cp1y = capControlPoint(point.cp1y, area.top, area.bottom);\n }\n if (inAreaNext) {\n point.cp2x = capControlPoint(point.cp2x, area.left, area.right);\n point.cp2y = capControlPoint(point.cp2y, area.top, area.bottom);\n }\n }\n}\n/**\n * @private\n */\nfunction _updateBezierControlPoints(points, options, area, loop, indexAxis) {\n let i, ilen, point, controlPoints;\n // Only consider points that are drawn in case the spanGaps option is used\n if (options.spanGaps) {\n points = points.filter(pt => !pt.skip);\n }\n if (options.cubicInterpolationMode === 'monotone') {\n splineCurveMonotone(points, indexAxis);\n } else {\n let prev = loop ? points[points.length - 1] : points[0];\n for (i = 0, ilen = points.length; i < ilen; ++i) {\n point = points[i];\n controlPoints = splineCurve(prev, point, points[Math.min(i + 1, ilen - (loop ? 0 : 1)) % ilen], options.tension);\n point.cp1x = controlPoints.previous.x;\n point.cp1y = controlPoints.previous.y;\n point.cp2x = controlPoints.next.x;\n point.cp2y = controlPoints.next.y;\n prev = point;\n }\n }\n if (options.capBezierPoints) {\n capBezierPoints(points, area);\n }\n}\n\n/**\n * Note: typedefs are auto-exported, so use a made-up `dom` namespace where\n * necessary to avoid duplicates with `export * from './helpers`; see\n * https://github.com/microsoft/TypeScript/issues/46011\n * @typedef { import('../core/core.controller.js').default } dom.Chart\n * @typedef { import('../../types').ChartEvent } ChartEvent\n */ /**\n * @private\n */\nfunction _isDomSupported() {\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n/**\n * @private\n */\nfunction _getParentNode(domNode) {\n let parent = domNode.parentNode;\n if (parent && parent.toString() === '[object ShadowRoot]') {\n parent = parent.host;\n }\n return parent;\n}\n/**\n * convert max-width/max-height values that may be percentages into a number\n * @private\n */\nfunction parseMaxStyle(styleValue, node, parentProperty) {\n let valueInPixels;\n if (typeof styleValue === 'string') {\n valueInPixels = parseInt(styleValue, 10);\n if (styleValue.indexOf('%') !== -1) {\n // percentage * size in dimension\n valueInPixels = valueInPixels / 100 * node.parentNode[parentProperty];\n }\n } else {\n valueInPixels = styleValue;\n }\n return valueInPixels;\n}\nconst getComputedStyle = element => element.ownerDocument.defaultView.getComputedStyle(element, null);\nfunction getStyle(el, property) {\n return getComputedStyle(el).getPropertyValue(property);\n}\nconst positions = ['top', 'right', 'bottom', 'left'];\nfunction getPositionedStyle(styles, style, suffix) {\n const result = {};\n suffix = suffix ? '-' + suffix : '';\n for (let i = 0; i < 4; i++) {\n const pos = positions[i];\n result[pos] = parseFloat(styles[style + '-' + pos + suffix]) || 0;\n }\n result.width = result.left + result.right;\n result.height = result.top + result.bottom;\n return result;\n}\nconst useOffsetPos = (x, y, target) => (x > 0 || y > 0) && (!target || !target.shadowRoot);\n/**\n * @param e\n * @param canvas\n * @returns Canvas position\n */\nfunction getCanvasPosition(e, canvas) {\n const touches = e.touches;\n const source = touches && touches.length ? touches[0] : e;\n const {\n offsetX,\n offsetY\n } = source;\n let box = false;\n let x, y;\n if (useOffsetPos(offsetX, offsetY, e.target)) {\n x = offsetX;\n y = offsetY;\n } else {\n const rect = canvas.getBoundingClientRect();\n x = source.clientX - rect.left;\n y = source.clientY - rect.top;\n box = true;\n }\n return {\n x,\n y,\n box\n };\n}\n/**\n * Gets an event's x, y coordinates, relative to the chart area\n * @param event\n * @param chart\n * @returns x and y coordinates of the event\n */\nfunction getRelativePosition(event, chart) {\n if ('native' in event) {\n return event;\n }\n const {\n canvas,\n currentDevicePixelRatio\n } = chart;\n const style = getComputedStyle(canvas);\n const borderBox = style.boxSizing === 'border-box';\n const paddings = getPositionedStyle(style, 'padding');\n const borders = getPositionedStyle(style, 'border', 'width');\n const {\n x,\n y,\n box\n } = getCanvasPosition(event, canvas);\n const xOffset = paddings.left + (box && borders.left);\n const yOffset = paddings.top + (box && borders.top);\n let {\n width,\n height\n } = chart;\n if (borderBox) {\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n return {\n x: Math.round((x - xOffset) / width * canvas.width / currentDevicePixelRatio),\n y: Math.round((y - yOffset) / height * canvas.height / currentDevicePixelRatio)\n };\n}\nfunction getContainerSize(canvas, width, height) {\n let maxWidth, maxHeight;\n if (width === undefined || height === undefined) {\n const container = _getParentNode(canvas);\n if (!container) {\n width = canvas.clientWidth;\n height = canvas.clientHeight;\n } else {\n const rect = container.getBoundingClientRect(); // this is the border box of the container\n const containerStyle = getComputedStyle(container);\n const containerBorder = getPositionedStyle(containerStyle, 'border', 'width');\n const containerPadding = getPositionedStyle(containerStyle, 'padding');\n width = rect.width - containerPadding.width - containerBorder.width;\n height = rect.height - containerPadding.height - containerBorder.height;\n maxWidth = parseMaxStyle(containerStyle.maxWidth, container, 'clientWidth');\n maxHeight = parseMaxStyle(containerStyle.maxHeight, container, 'clientHeight');\n }\n }\n return {\n width,\n height,\n maxWidth: maxWidth || INFINITY,\n maxHeight: maxHeight || INFINITY\n };\n}\nconst round1 = v => Math.round(v * 10) / 10;\n// eslint-disable-next-line complexity\nfunction getMaximumSize(canvas, bbWidth, bbHeight, aspectRatio) {\n const style = getComputedStyle(canvas);\n const margins = getPositionedStyle(style, 'margin');\n const maxWidth = parseMaxStyle(style.maxWidth, canvas, 'clientWidth') || INFINITY;\n const maxHeight = parseMaxStyle(style.maxHeight, canvas, 'clientHeight') || INFINITY;\n const containerSize = getContainerSize(canvas, bbWidth, bbHeight);\n let {\n width,\n height\n } = containerSize;\n if (style.boxSizing === 'content-box') {\n const borders = getPositionedStyle(style, 'border', 'width');\n const paddings = getPositionedStyle(style, 'padding');\n width -= paddings.width + borders.width;\n height -= paddings.height + borders.height;\n }\n width = Math.max(0, width - margins.width);\n height = Math.max(0, aspectRatio ? width / aspectRatio : height - margins.height);\n width = round1(Math.min(width, maxWidth, containerSize.maxWidth));\n height = round1(Math.min(height, maxHeight, containerSize.maxHeight));\n if (width && !height) {\n // https://github.com/chartjs/Chart.js/issues/4659\n // If the canvas has width, but no height, default to aspectRatio of 2 (canvas default)\n height = round1(width / 2);\n }\n const maintainHeight = bbWidth !== undefined || bbHeight !== undefined;\n if (maintainHeight && aspectRatio && containerSize.height && height > containerSize.height) {\n height = containerSize.height;\n width = round1(Math.floor(height * aspectRatio));\n }\n return {\n width,\n height\n };\n}\n/**\n * @param chart\n * @param forceRatio\n * @param forceStyle\n * @returns True if the canvas context size or transformation has changed.\n */\nfunction retinaScale(chart, forceRatio, forceStyle) {\n const pixelRatio = forceRatio || 1;\n const deviceHeight = Math.floor(chart.height * pixelRatio);\n const deviceWidth = Math.floor(chart.width * pixelRatio);\n chart.height = Math.floor(chart.height);\n chart.width = Math.floor(chart.width);\n const canvas = chart.canvas;\n // If no style has been set on the canvas, the render size is used as display size,\n // making the chart visually bigger, so let's enforce it to the \"correct\" values.\n // See https://github.com/chartjs/Chart.js/issues/3575\n if (canvas.style && (forceStyle || !canvas.style.height && !canvas.style.width)) {\n canvas.style.height = `${chart.height}px`;\n canvas.style.width = `${chart.width}px`;\n }\n if (chart.currentDevicePixelRatio !== pixelRatio || canvas.height !== deviceHeight || canvas.width !== deviceWidth) {\n chart.currentDevicePixelRatio = pixelRatio;\n canvas.height = deviceHeight;\n canvas.width = deviceWidth;\n chart.ctx.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n return true;\n }\n return false;\n}\n/**\n * Detects support for options object argument in addEventListener.\n * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\n * @private\n */\nconst supportsEventListenerOptions = function () {\n let passiveSupported = false;\n try {\n const options = {\n get passive() {\n passiveSupported = true;\n return false;\n }\n };\n if (_isDomSupported()) {\n window.addEventListener('test', null, options);\n window.removeEventListener('test', null, options);\n }\n } catch (e) {\n // continue regardless of error\n }\n return passiveSupported;\n}();\n/**\n * The \"used\" size is the final value of a dimension property after all calculations have\n * been performed. This method uses the computed style of `element` but returns undefined\n * if the computed style is not expressed in pixels. That can happen in some cases where\n * `element` has a size relative to its parent and this last one is not yet displayed,\n * for example because of `display: none` on a parent node.\n * @see https://developer.mozilla.org/en-US/docs/Web/CSS/used_value\n * @returns Size in pixels or undefined if unknown.\n */\nfunction readUsedSize(element, property) {\n const value = getStyle(element, property);\n const matches = value && value.match(/^(\\d+)(\\.\\d+)?px$/);\n return matches ? +matches[1] : undefined;\n}\n\n/**\n * @private\n */\nfunction _pointInLine(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: p1.y + t * (p2.y - p1.y)\n };\n}\n/**\n * @private\n */\nfunction _steppedInterpolation(p1, p2, t, mode) {\n return {\n x: p1.x + t * (p2.x - p1.x),\n y: mode === 'middle' ? t < 0.5 ? p1.y : p2.y : mode === 'after' ? t < 1 ? p1.y : p2.y : t > 0 ? p2.y : p1.y\n };\n}\n/**\n * @private\n */\nfunction _bezierInterpolation(p1, p2, t, mode) {\n const cp1 = {\n x: p1.cp2x,\n y: p1.cp2y\n };\n const cp2 = {\n x: p2.cp1x,\n y: p2.cp1y\n };\n const a = _pointInLine(p1, cp1, t);\n const b = _pointInLine(cp1, cp2, t);\n const c = _pointInLine(cp2, p2, t);\n const d = _pointInLine(a, b, t);\n const e = _pointInLine(b, c, t);\n return _pointInLine(d, e, t);\n}\nconst getRightToLeftAdapter = function (rectX, width) {\n return {\n x(x) {\n return rectX + rectX + width - x;\n },\n setWidth(w) {\n width = w;\n },\n textAlign(align) {\n if (align === 'center') {\n return align;\n }\n return align === 'right' ? 'left' : 'right';\n },\n xPlus(x, value) {\n return x - value;\n },\n leftForLtr(x, itemWidth) {\n return x - itemWidth;\n }\n };\n};\nconst getLeftToRightAdapter = function () {\n return {\n x(x) {\n return x;\n },\n setWidth(w) {},\n textAlign(align) {\n return align;\n },\n xPlus(x, value) {\n return x + value;\n },\n leftForLtr(x, _itemWidth) {\n return x;\n }\n };\n};\nfunction getRtlAdapter(rtl, rectX, width) {\n return rtl ? getRightToLeftAdapter(rectX, width) : getLeftToRightAdapter();\n}\nfunction overrideTextDirection(ctx, direction) {\n let style, original;\n if (direction === 'ltr' || direction === 'rtl') {\n style = ctx.canvas.style;\n original = [style.getPropertyValue('direction'), style.getPropertyPriority('direction')];\n style.setProperty('direction', direction, 'important');\n ctx.prevTextDirection = original;\n }\n}\nfunction restoreTextDirection(ctx, original) {\n if (original !== undefined) {\n delete ctx.prevTextDirection;\n ctx.canvas.style.setProperty('direction', original[0], original[1]);\n }\n}\nfunction propertyFn(property) {\n if (property === 'angle') {\n return {\n between: _angleBetween,\n compare: _angleDiff,\n normalize: _normalizeAngle\n };\n }\n return {\n between: _isBetween,\n compare: (a, b) => a - b,\n normalize: x => x\n };\n}\nfunction normalizeSegment({\n start,\n end,\n count,\n loop,\n style\n}) {\n return {\n start: start % count,\n end: end % count,\n loop: loop && (end - start + 1) % count === 0,\n style\n };\n}\nfunction getSegment(segment, points, bounds) {\n const {\n property,\n start: startBound,\n end: endBound\n } = bounds;\n const {\n between,\n normalize\n } = propertyFn(property);\n const count = points.length;\n let {\n start,\n end,\n loop\n } = segment;\n let i, ilen;\n if (loop) {\n start += count;\n end += count;\n for (i = 0, ilen = count; i < ilen; ++i) {\n if (!between(normalize(points[start % count][property]), startBound, endBound)) {\n break;\n }\n start--;\n end--;\n }\n start %= count;\n end %= count;\n }\n if (end < start) {\n end += count;\n }\n return {\n start,\n end,\n loop,\n style: segment.style\n };\n}\nfunction _boundSegment(segment, points, bounds) {\n if (!bounds) {\n return [segment];\n }\n const {\n property,\n start: startBound,\n end: endBound\n } = bounds;\n const count = points.length;\n const {\n compare,\n between,\n normalize\n } = propertyFn(property);\n const {\n start,\n end,\n loop,\n style\n } = getSegment(segment, points, bounds);\n const result = [];\n let inside = false;\n let subStart = null;\n let value, point, prevValue;\n const startIsBefore = () => between(startBound, prevValue, value) && compare(startBound, prevValue) !== 0;\n const endIsBefore = () => compare(endBound, value) === 0 || between(endBound, prevValue, value);\n const shouldStart = () => inside || startIsBefore();\n const shouldStop = () => !inside || endIsBefore();\n for (let i = start, prev = start; i <= end; ++i) {\n point = points[i % count];\n if (point.skip) {\n continue;\n }\n value = normalize(point[property]);\n if (value === prevValue) {\n continue;\n }\n inside = between(value, startBound, endBound);\n if (subStart === null && shouldStart()) {\n subStart = compare(value, startBound) === 0 ? i : prev;\n }\n if (subStart !== null && shouldStop()) {\n result.push(normalizeSegment({\n start: subStart,\n end: i,\n loop,\n count,\n style\n }));\n subStart = null;\n }\n prev = i;\n prevValue = value;\n }\n if (subStart !== null) {\n result.push(normalizeSegment({\n start: subStart,\n end,\n loop,\n count,\n style\n }));\n }\n return result;\n}\nfunction _boundSegments(line, bounds) {\n const result = [];\n const segments = line.segments;\n for (let i = 0; i < segments.length; i++) {\n const sub = _boundSegment(segments[i], line.points, bounds);\n if (sub.length) {\n result.push(...sub);\n }\n }\n return result;\n}\nfunction findStartAndEnd(points, count, loop, spanGaps) {\n let start = 0;\n let end = count - 1;\n if (loop && !spanGaps) {\n while (start < count && !points[start].skip) {\n start++;\n }\n }\n while (start < count && points[start].skip) {\n start++;\n }\n start %= count;\n if (loop) {\n end += start;\n }\n while (end > start && points[end % count].skip) {\n end--;\n }\n end %= count;\n return {\n start,\n end\n };\n}\nfunction solidSegments(points, start, max, loop) {\n const count = points.length;\n const result = [];\n let last = start;\n let prev = points[start];\n let end;\n for (end = start + 1; end <= max; ++end) {\n const cur = points[end % count];\n if (cur.skip || cur.stop) {\n if (!prev.skip) {\n loop = false;\n result.push({\n start: start % count,\n end: (end - 1) % count,\n loop\n });\n start = last = cur.stop ? end : null;\n }\n } else {\n last = end;\n if (prev.skip) {\n start = end;\n }\n }\n prev = cur;\n }\n if (last !== null) {\n result.push({\n start: start % count,\n end: last % count,\n loop\n });\n }\n return result;\n}\nfunction _computeSegments(line, segmentOptions) {\n const points = line.points;\n const spanGaps = line.options.spanGaps;\n const count = points.length;\n if (!count) {\n return [];\n }\n const loop = !!line._loop;\n const {\n start,\n end\n } = findStartAndEnd(points, count, loop, spanGaps);\n if (spanGaps === true) {\n return splitByStyles(line, [{\n start,\n end,\n loop\n }], points, segmentOptions);\n }\n const max = end < start ? end + count : end;\n const completeLoop = !!line._fullLoop && start === 0 && end === count - 1;\n return splitByStyles(line, solidSegments(points, start, max, completeLoop), points, segmentOptions);\n}\nfunction splitByStyles(line, segments, points, segmentOptions) {\n if (!segmentOptions || !segmentOptions.setContext || !points) {\n return segments;\n }\n return doSplitByStyles(line, segments, points, segmentOptions);\n}\nfunction doSplitByStyles(line, segments, points, segmentOptions) {\n const chartContext = line._chart.getContext();\n const baseStyle = readStyle(line.options);\n const {\n _datasetIndex: datasetIndex,\n options: {\n spanGaps\n }\n } = line;\n const count = points.length;\n const result = [];\n let prevStyle = baseStyle;\n let start = segments[0].start;\n let i = start;\n function addStyle(s, e, l, st) {\n const dir = spanGaps ? -1 : 1;\n if (s === e) {\n return;\n }\n s += count;\n while (points[s % count].skip) {\n s -= dir;\n }\n while (points[e % count].skip) {\n e += dir;\n }\n if (s % count !== e % count) {\n result.push({\n start: s % count,\n end: e % count,\n loop: l,\n style: st\n });\n prevStyle = st;\n start = e % count;\n }\n }\n for (const segment of segments) {\n start = spanGaps ? start : segment.start;\n let prev = points[start % count];\n let style;\n for (i = start + 1; i <= segment.end; i++) {\n const pt = points[i % count];\n style = readStyle(segmentOptions.setContext(createContext(chartContext, {\n type: 'segment',\n p0: prev,\n p1: pt,\n p0DataIndex: (i - 1) % count,\n p1DataIndex: i % count,\n datasetIndex\n })));\n if (styleChanged(style, prevStyle)) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n prev = pt;\n prevStyle = style;\n }\n if (start < i - 1) {\n addStyle(start, i - 1, segment.loop, prevStyle);\n }\n }\n return result;\n}\nfunction readStyle(options) {\n return {\n backgroundColor: options.backgroundColor,\n borderCapStyle: options.borderCapStyle,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderJoinStyle: options.borderJoinStyle,\n borderWidth: options.borderWidth,\n borderColor: options.borderColor\n };\n}\nfunction styleChanged(style, prevStyle) {\n if (!prevStyle) {\n return false;\n }\n const cache = [];\n const replacer = function (key, value) {\n if (!isPatternOrGradient(value)) {\n return value;\n }\n if (!cache.includes(value)) {\n cache.push(value);\n }\n return cache.indexOf(value);\n };\n return JSON.stringify(style, replacer) !== JSON.stringify(prevStyle, replacer);\n}\nexport { unclipArea as $, _rlookupByKey as A, _lookupByKey as B, _isPointInArea as C, getAngleFromPoint as D, toPadding as E, each as F, getMaximumSize as G, HALF_PI as H, _getParentNode as I, readUsedSize as J, supportsEventListenerOptions as K, throttled as L, _isDomSupported as M, _factorize as N, finiteOrDefault as O, PI as P, callback as Q, _addGrace as R, _limitValue as S, TAU as T, toDegrees as U, _measureText as V, _int16Range as W, _alignPixel as X, clipArea as Y, renderText as Z, _arrayUnique as _, resolve as a, fontString as a$, toFont as a0, _toLeftRightCenter as a1, _alignStartEnd as a2, overrides as a3, merge as a4, _capitalize as a5, descriptors as a6, isFunction as a7, _attachContext as a8, _createResolver as a9, overrideTextDirection as aA, _textX as aB, restoreTextDirection as aC, drawPointLegend as aD, distanceBetweenPoints as aE, noop as aF, _setMinAndMaxByKey as aG, niceNum as aH, almostWhole as aI, almostEquals as aJ, _decimalPlaces as aK, Ticks as aL, log10 as aM, _longestText as aN, _filterBetween as aO, _lookup as aP, isPatternOrGradient as aQ, getHoverColor as aR, clone as aS, _merger as aT, _mergerIf as aU, _deprecated as aV, _splitKey as aW, toFontString as aX, splineCurve as aY, splineCurveMonotone as aZ, getStyle as a_, _descriptors as aa, mergeIf as ab, uid as ac, debounce as ad, retinaScale as ae, clearCanvas as af, setsEqual as ag, _elementsEqual as ah, _isClickEvent as ai, _isBetween as aj, _readValueToProps as ak, _updateBezierControlPoints as al, _computeSegments as am, _boundSegments as an, _steppedInterpolation as ao, _bezierInterpolation as ap, _pointInLine as aq, _steppedLineTo as ar, _bezierCurveTo as as, drawPoint as at, addRoundedRectPath as au, toTRBL as av, toTRBLCorners as aw, _boundSegment as ax, _normalizeAngle as ay, getRtlAdapter as az, isArray as b, toLineHeight as b0, PITAU as b1, INFINITY as b2, RAD_PER_DEG as b3, QUARTER_PI as b4, TWO_THIRDS_PI as b5, _angleDiff as b6, color as c, defaults as d, effects as e, resolveObjectKey as f, isNumberFinite as g, defined as h, isObject as i, createContext as j, isNullOrUndef as k, listenArrayEvents as l, toPercentage as m, toDimension as n, formatNumber as o, _angleBetween as p, _getStartAndCountOfVisiblePoints as q, requestAnimFrame as r, sign as s, toRadians as t, unlistenArrayEvents as u, valueOrDefault as v, _scaleRangesChanged as w, isNumber as x, _parseObjectDataRadialScale as y, getRelativePosition as z };\n","/*!\n * Chart.js v4.4.2\n * https://www.chartjs.org\n * (c) 2024 Chart.js Contributors\n * Released under the MIT License\n */\nimport { r as requestAnimFrame, a as resolve, e as effects, c as color, i as isObject, d as defaults, b as isArray, v as valueOrDefault, u as unlistenArrayEvents, l as listenArrayEvents, f as resolveObjectKey, g as isNumberFinite, h as defined, s as sign, j as createContext, k as isNullOrUndef, _ as _arrayUnique, t as toRadians, m as toPercentage, n as toDimension, T as TAU, o as formatNumber, p as _angleBetween, H as HALF_PI, P as PI, q as _getStartAndCountOfVisiblePoints, w as _scaleRangesChanged, x as isNumber, y as _parseObjectDataRadialScale, z as getRelativePosition, A as _rlookupByKey, B as _lookupByKey, C as _isPointInArea, D as getAngleFromPoint, E as toPadding, F as each, G as getMaximumSize, I as _getParentNode, J as readUsedSize, K as supportsEventListenerOptions, L as throttled, M as _isDomSupported, N as _factorize, O as finiteOrDefault, Q as callback, R as _addGrace, S as _limitValue, U as toDegrees, V as _measureText, W as _int16Range, X as _alignPixel, Y as clipArea, Z as renderText, $ as unclipArea, a0 as toFont, a1 as _toLeftRightCenter, a2 as _alignStartEnd, a3 as overrides, a4 as merge, a5 as _capitalize, a6 as descriptors, a7 as isFunction, a8 as _attachContext, a9 as _createResolver, aa as _descriptors, ab as mergeIf, ac as uid, ad as debounce, ae as retinaScale, af as clearCanvas, ag as setsEqual, ah as _elementsEqual, ai as _isClickEvent, aj as _isBetween, ak as _readValueToProps, al as _updateBezierControlPoints, am as _computeSegments, an as _boundSegments, ao as _steppedInterpolation, ap as _bezierInterpolation, aq as _pointInLine, ar as _steppedLineTo, as as _bezierCurveTo, at as drawPoint, au as addRoundedRectPath, av as toTRBL, aw as toTRBLCorners, ax as _boundSegment, ay as _normalizeAngle, az as getRtlAdapter, aA as overrideTextDirection, aB as _textX, aC as restoreTextDirection, aD as drawPointLegend, aE as distanceBetweenPoints, aF as noop, aG as _setMinAndMaxByKey, aH as niceNum, aI as almostWhole, aJ as almostEquals, aK as _decimalPlaces, aL as Ticks, aM as log10, aN as _longestText, aO as _filterBetween, aP as _lookup } from './chunks/helpers.segment.js';\nimport '@kurkle/color';\nclass Animator {\n constructor() {\n this._request = null;\n this._charts = new Map();\n this._running = false;\n this._lastDate = undefined;\n }\n _notify(chart, anims, date, type) {\n const callbacks = anims.listeners[type];\n const numSteps = anims.duration;\n callbacks.forEach(fn => fn({\n chart,\n initial: anims.initial,\n numSteps,\n currentStep: Math.min(date - anims.start, numSteps)\n }));\n }\n _refresh() {\n if (this._request) {\n return;\n }\n this._running = true;\n this._request = requestAnimFrame.call(window, () => {\n this._update();\n this._request = null;\n if (this._running) {\n this._refresh();\n }\n });\n }\n _update(date = Date.now()) {\n let remaining = 0;\n this._charts.forEach((anims, chart) => {\n if (!anims.running || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n let draw = false;\n let item;\n for (; i >= 0; --i) {\n item = items[i];\n if (item._active) {\n if (item._total > anims.duration) {\n anims.duration = item._total;\n }\n item.tick(date);\n draw = true;\n } else {\n items[i] = items[items.length - 1];\n items.pop();\n }\n }\n if (draw) {\n chart.draw();\n this._notify(chart, anims, date, 'progress');\n }\n if (!items.length) {\n anims.running = false;\n this._notify(chart, anims, date, 'complete');\n anims.initial = false;\n }\n remaining += items.length;\n });\n this._lastDate = date;\n if (remaining === 0) {\n this._running = false;\n }\n }\n _getAnims(chart) {\n const charts = this._charts;\n let anims = charts.get(chart);\n if (!anims) {\n anims = {\n running: false,\n initial: true,\n items: [],\n listeners: {\n complete: [],\n progress: []\n }\n };\n charts.set(chart, anims);\n }\n return anims;\n }\n listen(chart, event, cb) {\n this._getAnims(chart).listeners[event].push(cb);\n }\n add(chart, items) {\n if (!items || !items.length) {\n return;\n }\n this._getAnims(chart).items.push(...items);\n }\n has(chart) {\n return this._getAnims(chart).items.length > 0;\n }\n start(chart) {\n const anims = this._charts.get(chart);\n if (!anims) {\n return;\n }\n anims.running = true;\n anims.start = Date.now();\n anims.duration = anims.items.reduce((acc, cur) => Math.max(acc, cur._duration), 0);\n this._refresh();\n }\n running(chart) {\n if (!this._running) {\n return false;\n }\n const anims = this._charts.get(chart);\n if (!anims || !anims.running || !anims.items.length) {\n return false;\n }\n return true;\n }\n stop(chart) {\n const anims = this._charts.get(chart);\n if (!anims || !anims.items.length) {\n return;\n }\n const items = anims.items;\n let i = items.length - 1;\n for (; i >= 0; --i) {\n items[i].cancel();\n }\n anims.items = [];\n this._notify(chart, anims, Date.now(), 'complete');\n }\n remove(chart) {\n return this._charts.delete(chart);\n }\n}\nvar animator = /* #__PURE__ */new Animator();\nconst transparent = 'transparent';\nconst interpolators = {\n boolean(from, to, factor) {\n return factor > 0.5 ? to : from;\n },\n color(from, to, factor) {\n const c0 = color(from || transparent);\n const c1 = c0.valid && color(to || transparent);\n return c1 && c1.valid ? c1.mix(c0, factor).hexString() : to;\n },\n number(from, to, factor) {\n return from + (to - from) * factor;\n }\n};\nclass Animation {\n constructor(cfg, target, prop, to) {\n const currentValue = target[prop];\n to = resolve([cfg.to, to, currentValue, cfg.from]);\n const from = resolve([cfg.from, currentValue, to]);\n this._active = true;\n this._fn = cfg.fn || interpolators[cfg.type || typeof from];\n this._easing = effects[cfg.easing] || effects.linear;\n this._start = Math.floor(Date.now() + (cfg.delay || 0));\n this._duration = this._total = Math.floor(cfg.duration);\n this._loop = !!cfg.loop;\n this._target = target;\n this._prop = prop;\n this._from = from;\n this._to = to;\n this._promises = undefined;\n }\n active() {\n return this._active;\n }\n update(cfg, to, date) {\n if (this._active) {\n this._notify(false);\n const currentValue = this._target[this._prop];\n const elapsed = date - this._start;\n const remain = this._duration - elapsed;\n this._start = date;\n this._duration = Math.floor(Math.max(remain, cfg.duration));\n this._total += elapsed;\n this._loop = !!cfg.loop;\n this._to = resolve([cfg.to, to, currentValue, cfg.from]);\n this._from = resolve([cfg.from, currentValue, to]);\n }\n }\n cancel() {\n if (this._active) {\n this.tick(Date.now());\n this._active = false;\n this._notify(false);\n }\n }\n tick(date) {\n const elapsed = date - this._start;\n const duration = this._duration;\n const prop = this._prop;\n const from = this._from;\n const loop = this._loop;\n const to = this._to;\n let factor;\n this._active = from !== to && (loop || elapsed < duration);\n if (!this._active) {\n this._target[prop] = to;\n this._notify(true);\n return;\n }\n if (elapsed < 0) {\n this._target[prop] = from;\n return;\n }\n factor = elapsed / duration % 2;\n factor = loop && factor > 1 ? 2 - factor : factor;\n factor = this._easing(Math.min(1, Math.max(0, factor)));\n this._target[prop] = this._fn(from, to, factor);\n }\n wait() {\n const promises = this._promises || (this._promises = []);\n return new Promise((res, rej) => {\n promises.push({\n res,\n rej\n });\n });\n }\n _notify(resolved) {\n const method = resolved ? 'res' : 'rej';\n const promises = this._promises || [];\n for (let i = 0; i < promises.length; i++) {\n promises[i][method]();\n }\n }\n}\nclass Animations {\n constructor(chart, config) {\n this._chart = chart;\n this._properties = new Map();\n this.configure(config);\n }\n configure(config) {\n if (!isObject(config)) {\n return;\n }\n const animationOptions = Object.keys(defaults.animation);\n const animatedProps = this._properties;\n Object.getOwnPropertyNames(config).forEach(key => {\n const cfg = config[key];\n if (!isObject(cfg)) {\n return;\n }\n const resolved = {};\n for (const option of animationOptions) {\n resolved[option] = cfg[option];\n }\n (isArray(cfg.properties) && cfg.properties || [key]).forEach(prop => {\n if (prop === key || !animatedProps.has(prop)) {\n animatedProps.set(prop, resolved);\n }\n });\n });\n }\n _animateOptions(target, values) {\n const newOptions = values.options;\n const options = resolveTargetOptions(target, newOptions);\n if (!options) {\n return [];\n }\n const animations = this._createAnimations(options, newOptions);\n if (newOptions.$shared) {\n awaitAll(target.options.$animations, newOptions).then(() => {\n target.options = newOptions;\n }, () => {});\n }\n return animations;\n }\n _createAnimations(target, values) {\n const animatedProps = this._properties;\n const animations = [];\n const running = target.$animations || (target.$animations = {});\n const props = Object.keys(values);\n const date = Date.now();\n let i;\n for (i = props.length - 1; i >= 0; --i) {\n const prop = props[i];\n if (prop.charAt(0) === '$') {\n continue;\n }\n if (prop === 'options') {\n animations.push(...this._animateOptions(target, values));\n continue;\n }\n const value = values[prop];\n let animation = running[prop];\n const cfg = animatedProps.get(prop);\n if (animation) {\n if (cfg && animation.active()) {\n animation.update(cfg, value, date);\n continue;\n } else {\n animation.cancel();\n }\n }\n if (!cfg || !cfg.duration) {\n target[prop] = value;\n continue;\n }\n running[prop] = animation = new Animation(cfg, target, prop, value);\n animations.push(animation);\n }\n return animations;\n }\n update(target, values) {\n if (this._properties.size === 0) {\n Object.assign(target, values);\n return;\n }\n const animations = this._createAnimations(target, values);\n if (animations.length) {\n animator.add(this._chart, animations);\n return true;\n }\n }\n}\nfunction awaitAll(animations, properties) {\n const running = [];\n const keys = Object.keys(properties);\n for (let i = 0; i < keys.length; i++) {\n const anim = animations[keys[i]];\n if (anim && anim.active()) {\n running.push(anim.wait());\n }\n }\n return Promise.all(running);\n}\nfunction resolveTargetOptions(target, newOptions) {\n if (!newOptions) {\n return;\n }\n let options = target.options;\n if (!options) {\n target.options = newOptions;\n return;\n }\n if (options.$shared) {\n target.options = options = Object.assign({}, options, {\n $shared: false,\n $animations: {}\n });\n }\n return options;\n}\nfunction scaleClip(scale, allowedOverflow) {\n const opts = scale && scale.options || {};\n const reverse = opts.reverse;\n const min = opts.min === undefined ? allowedOverflow : 0;\n const max = opts.max === undefined ? allowedOverflow : 0;\n return {\n start: reverse ? max : min,\n end: reverse ? min : max\n };\n}\nfunction defaultClip(xScale, yScale, allowedOverflow) {\n if (allowedOverflow === false) {\n return false;\n }\n const x = scaleClip(xScale, allowedOverflow);\n const y = scaleClip(yScale, allowedOverflow);\n return {\n top: y.end,\n right: x.end,\n bottom: y.start,\n left: x.start\n };\n}\nfunction toClip(value) {\n let t, r, b, l;\n if (isObject(value)) {\n t = value.top;\n r = value.right;\n b = value.bottom;\n l = value.left;\n } else {\n t = r = b = l = value;\n }\n return {\n top: t,\n right: r,\n bottom: b,\n left: l,\n disabled: value === false\n };\n}\nfunction getSortedDatasetIndices(chart, filterVisible) {\n const keys = [];\n const metasets = chart._getSortedDatasetMetas(filterVisible);\n let i, ilen;\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n keys.push(metasets[i].index);\n }\n return keys;\n}\nfunction applyStack(stack, value, dsIndex, options = {}) {\n const keys = stack.keys;\n const singleMode = options.mode === 'single';\n let i, ilen, datasetIndex, otherValue;\n if (value === null) {\n return;\n }\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n datasetIndex = +keys[i];\n if (datasetIndex === dsIndex) {\n if (options.all) {\n continue;\n }\n break;\n }\n otherValue = stack.values[datasetIndex];\n if (isNumberFinite(otherValue) && (singleMode || value === 0 || sign(value) === sign(otherValue))) {\n value += otherValue;\n }\n }\n return value;\n}\nfunction convertObjectDataToArray(data) {\n const keys = Object.keys(data);\n const adata = new Array(keys.length);\n let i, ilen, key;\n for (i = 0, ilen = keys.length; i < ilen; ++i) {\n key = keys[i];\n adata[i] = {\n x: key,\n y: data[key]\n };\n }\n return adata;\n}\nfunction isStacked(scale, meta) {\n const stacked = scale && scale.options.stacked;\n return stacked || stacked === undefined && meta.stack !== undefined;\n}\nfunction getStackKey(indexScale, valueScale, meta) {\n return `${indexScale.id}.${valueScale.id}.${meta.stack || meta.type}`;\n}\nfunction getUserBounds(scale) {\n const {\n min,\n max,\n minDefined,\n maxDefined\n } = scale.getUserBounds();\n return {\n min: minDefined ? min : Number.NEGATIVE_INFINITY,\n max: maxDefined ? max : Number.POSITIVE_INFINITY\n };\n}\nfunction getOrCreateStack(stacks, stackKey, indexValue) {\n const subStack = stacks[stackKey] || (stacks[stackKey] = {});\n return subStack[indexValue] || (subStack[indexValue] = {});\n}\nfunction getLastIndexInStack(stack, vScale, positive, type) {\n for (const meta of vScale.getMatchingVisibleMetas(type).reverse()) {\n const value = stack[meta.index];\n if (positive && value > 0 || !positive && value < 0) {\n return meta.index;\n }\n }\n return null;\n}\nfunction updateStacks(controller, parsed) {\n const {\n chart,\n _cachedMeta: meta\n } = controller;\n const stacks = chart._stacks || (chart._stacks = {});\n const {\n iScale,\n vScale,\n index: datasetIndex\n } = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const key = getStackKey(iScale, vScale, meta);\n const ilen = parsed.length;\n let stack;\n for (let i = 0; i < ilen; ++i) {\n const item = parsed[i];\n const {\n [iAxis]: index,\n [vAxis]: value\n } = item;\n const itemStacks = item._stacks || (item._stacks = {});\n stack = itemStacks[vAxis] = getOrCreateStack(stacks, key, index);\n stack[datasetIndex] = value;\n stack._top = getLastIndexInStack(stack, vScale, true, meta.type);\n stack._bottom = getLastIndexInStack(stack, vScale, false, meta.type);\n const visualValues = stack._visualValues || (stack._visualValues = {});\n visualValues[datasetIndex] = value;\n }\n}\nfunction getFirstScaleId(chart, axis) {\n const scales = chart.scales;\n return Object.keys(scales).filter(key => scales[key].axis === axis).shift();\n}\nfunction createDatasetContext(parent, index) {\n return createContext(parent, {\n active: false,\n dataset: undefined,\n datasetIndex: index,\n index,\n mode: 'default',\n type: 'dataset'\n });\n}\nfunction createDataContext(parent, index, element) {\n return createContext(parent, {\n active: false,\n dataIndex: index,\n parsed: undefined,\n raw: undefined,\n element,\n index,\n mode: 'default',\n type: 'data'\n });\n}\nfunction clearStacks(meta, items) {\n const datasetIndex = meta.controller.index;\n const axis = meta.vScale && meta.vScale.axis;\n if (!axis) {\n return;\n }\n items = items || meta._parsed;\n for (const parsed of items) {\n const stacks = parsed._stacks;\n if (!stacks || stacks[axis] === undefined || stacks[axis][datasetIndex] === undefined) {\n return;\n }\n delete stacks[axis][datasetIndex];\n if (stacks[axis]._visualValues !== undefined && stacks[axis]._visualValues[datasetIndex] !== undefined) {\n delete stacks[axis]._visualValues[datasetIndex];\n }\n }\n}\nconst isDirectUpdateMode = mode => mode === 'reset' || mode === 'none';\nconst cloneIfNotShared = (cached, shared) => shared ? cached : Object.assign({}, cached);\nconst createStack = (canStack, meta, chart) => canStack && !meta.hidden && meta._stacked && {\n keys: getSortedDatasetIndices(chart, true),\n values: null\n};\nlet DatasetController = /*#__PURE__*/(() => {\n class DatasetController {\n static defaults = {};\n static datasetElementType = null;\n static dataElementType = null;\n constructor(chart, datasetIndex) {\n this.chart = chart;\n this._ctx = chart.ctx;\n this.index = datasetIndex;\n this._cachedDataOpts = {};\n this._cachedMeta = this.getMeta();\n this._type = this._cachedMeta.type;\n this.options = undefined;\n this._parsing = false;\n this._data = undefined;\n this._objectData = undefined;\n this._sharedOptions = undefined;\n this._drawStart = undefined;\n this._drawCount = undefined;\n this.enableOptionSharing = false;\n this.supportsDecimation = false;\n this.$context = undefined;\n this._syncList = [];\n this.datasetElementType = new.target.datasetElementType;\n this.dataElementType = new.target.dataElementType;\n this.initialize();\n }\n initialize() {\n const meta = this._cachedMeta;\n this.configure();\n this.linkScales();\n meta._stacked = isStacked(meta.vScale, meta);\n this.addElements();\n if (this.options.fill && !this.chart.isPluginEnabled('filler')) {\n console.warn(\"Tried to use the 'fill' option without the 'Filler' plugin enabled. Please import and register the 'Filler' plugin and make sure it is not disabled in the options\");\n }\n }\n updateIndex(datasetIndex) {\n if (this.index !== datasetIndex) {\n clearStacks(this._cachedMeta);\n }\n this.index = datasetIndex;\n }\n linkScales() {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n const chooseId = (axis, x, y, r) => axis === 'x' ? x : axis === 'r' ? r : y;\n const xid = meta.xAxisID = valueOrDefault(dataset.xAxisID, getFirstScaleId(chart, 'x'));\n const yid = meta.yAxisID = valueOrDefault(dataset.yAxisID, getFirstScaleId(chart, 'y'));\n const rid = meta.rAxisID = valueOrDefault(dataset.rAxisID, getFirstScaleId(chart, 'r'));\n const indexAxis = meta.indexAxis;\n const iid = meta.iAxisID = chooseId(indexAxis, xid, yid, rid);\n const vid = meta.vAxisID = chooseId(indexAxis, yid, xid, rid);\n meta.xScale = this.getScaleForId(xid);\n meta.yScale = this.getScaleForId(yid);\n meta.rScale = this.getScaleForId(rid);\n meta.iScale = this.getScaleForId(iid);\n meta.vScale = this.getScaleForId(vid);\n }\n getDataset() {\n return this.chart.data.datasets[this.index];\n }\n getMeta() {\n return this.chart.getDatasetMeta(this.index);\n }\n getScaleForId(scaleID) {\n return this.chart.scales[scaleID];\n }\n _getOtherScale(scale) {\n const meta = this._cachedMeta;\n return scale === meta.iScale ? meta.vScale : meta.iScale;\n }\n reset() {\n this._update('reset');\n }\n _destroy() {\n const meta = this._cachedMeta;\n if (this._data) {\n unlistenArrayEvents(this._data, this);\n }\n if (meta._stacked) {\n clearStacks(meta);\n }\n }\n _dataCheck() {\n const dataset = this.getDataset();\n const data = dataset.data || (dataset.data = []);\n const _data = this._data;\n if (isObject(data)) {\n this._data = convertObjectDataToArray(data);\n } else if (_data !== data) {\n if (_data) {\n unlistenArrayEvents(_data, this);\n const meta = this._cachedMeta;\n clearStacks(meta);\n meta._parsed = [];\n }\n if (data && Object.isExtensible(data)) {\n listenArrayEvents(data, this);\n }\n this._syncList = [];\n this._data = data;\n }\n }\n addElements() {\n const meta = this._cachedMeta;\n this._dataCheck();\n if (this.datasetElementType) {\n meta.dataset = new this.datasetElementType();\n }\n }\n buildOrUpdateElements(resetNewElements) {\n const meta = this._cachedMeta;\n const dataset = this.getDataset();\n let stackChanged = false;\n this._dataCheck();\n const oldStacked = meta._stacked;\n meta._stacked = isStacked(meta.vScale, meta);\n if (meta.stack !== dataset.stack) {\n stackChanged = true;\n clearStacks(meta);\n meta.stack = dataset.stack;\n }\n this._resyncElements(resetNewElements);\n if (stackChanged || oldStacked !== meta._stacked) {\n updateStacks(this, meta._parsed);\n }\n }\n configure() {\n const config = this.chart.config;\n const scopeKeys = config.datasetScopeKeys(this._type);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys, true);\n this.options = config.createResolver(scopes, this.getContext());\n this._parsing = this.options.parsing;\n this._cachedDataOpts = {};\n }\n parse(start, count) {\n const {\n _cachedMeta: meta,\n _data: data\n } = this;\n const {\n iScale,\n _stacked\n } = meta;\n const iAxis = iScale.axis;\n let sorted = start === 0 && count === data.length ? true : meta._sorted;\n let prev = start > 0 && meta._parsed[start - 1];\n let i, cur, parsed;\n if (this._parsing === false) {\n meta._parsed = data;\n meta._sorted = true;\n parsed = data;\n } else {\n if (isArray(data[start])) {\n parsed = this.parseArrayData(meta, data, start, count);\n } else if (isObject(data[start])) {\n parsed = this.parseObjectData(meta, data, start, count);\n } else {\n parsed = this.parsePrimitiveData(meta, data, start, count);\n }\n const isNotInOrderComparedToPrev = () => cur[iAxis] === null || prev && cur[iAxis] < prev[iAxis];\n for (i = 0; i < count; ++i) {\n meta._parsed[i + start] = cur = parsed[i];\n if (sorted) {\n if (isNotInOrderComparedToPrev()) {\n sorted = false;\n }\n prev = cur;\n }\n }\n meta._sorted = sorted;\n }\n if (_stacked) {\n updateStacks(this, parsed);\n }\n }\n parsePrimitiveData(meta, data, start, count) {\n const {\n iScale,\n vScale\n } = meta;\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = new Array(count);\n let i, ilen, index;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n parsed[i] = {\n [iAxis]: singleScale || iScale.parse(labels[index], index),\n [vAxis]: vScale.parse(data[index], index)\n };\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const {\n xScale,\n yScale\n } = meta;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(item[0], index),\n y: yScale.parse(item[1], index)\n };\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const {\n xScale,\n yScale\n } = meta;\n const {\n xAxisKey = 'x',\n yAxisKey = 'y'\n } = this._parsing;\n const parsed = new Array(count);\n let i, ilen, index, item;\n for (i = 0, ilen = count; i < ilen; ++i) {\n index = i + start;\n item = data[index];\n parsed[i] = {\n x: xScale.parse(resolveObjectKey(item, xAxisKey), index),\n y: yScale.parse(resolveObjectKey(item, yAxisKey), index)\n };\n }\n return parsed;\n }\n getParsed(index) {\n return this._cachedMeta._parsed[index];\n }\n getDataElement(index) {\n return this._cachedMeta.data[index];\n }\n applyStack(scale, parsed, mode) {\n const chart = this.chart;\n const meta = this._cachedMeta;\n const value = parsed[scale.axis];\n const stack = {\n keys: getSortedDatasetIndices(chart, true),\n values: parsed._stacks[scale.axis]._visualValues\n };\n return applyStack(stack, value, meta.index, {\n mode\n });\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n const parsedValue = parsed[scale.axis];\n let value = parsedValue === null ? NaN : parsedValue;\n const values = stack && parsed._stacks[scale.axis];\n if (stack && values) {\n stack.values = values;\n value = applyStack(stack, parsedValue, this._cachedMeta.index);\n }\n range.min = Math.min(range.min, value);\n range.max = Math.max(range.max, value);\n }\n getMinMax(scale, canStack) {\n const meta = this._cachedMeta;\n const _parsed = meta._parsed;\n const sorted = meta._sorted && scale === meta.iScale;\n const ilen = _parsed.length;\n const otherScale = this._getOtherScale(scale);\n const stack = createStack(canStack, meta, this.chart);\n const range = {\n min: Number.POSITIVE_INFINITY,\n max: Number.NEGATIVE_INFINITY\n };\n const {\n min: otherMin,\n max: otherMax\n } = getUserBounds(otherScale);\n let i, parsed;\n function _skip() {\n parsed = _parsed[i];\n const otherValue = parsed[otherScale.axis];\n return !isNumberFinite(parsed[scale.axis]) || otherMin > otherValue || otherMax < otherValue;\n }\n for (i = 0; i < ilen; ++i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n if (sorted) {\n break;\n }\n }\n if (sorted) {\n for (i = ilen - 1; i >= 0; --i) {\n if (_skip()) {\n continue;\n }\n this.updateRangeFromParsed(range, scale, parsed, stack);\n break;\n }\n }\n return range;\n }\n getAllParsedValues(scale) {\n const parsed = this._cachedMeta._parsed;\n const values = [];\n let i, ilen, value;\n for (i = 0, ilen = parsed.length; i < ilen; ++i) {\n value = parsed[i][scale.axis];\n if (isNumberFinite(value)) {\n values.push(value);\n }\n }\n return values;\n }\n getMaxOverflow() {\n return false;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: iScale ? '' + iScale.getLabelForValue(parsed[iScale.axis]) : '',\n value: vScale ? '' + vScale.getLabelForValue(parsed[vScale.axis]) : ''\n };\n }\n _update(mode) {\n const meta = this._cachedMeta;\n this.update(mode || 'default');\n meta._clip = toClip(valueOrDefault(this.options.clip, defaultClip(meta.xScale, meta.yScale, this.getMaxOverflow())));\n }\n update(mode) {}\n draw() {\n const ctx = this._ctx;\n const chart = this.chart;\n const meta = this._cachedMeta;\n const elements = meta.data || [];\n const area = chart.chartArea;\n const active = [];\n const start = this._drawStart || 0;\n const count = this._drawCount || elements.length - start;\n const drawActiveElementsOnTop = this.options.drawActiveElementsOnTop;\n let i;\n if (meta.dataset) {\n meta.dataset.draw(ctx, area, start, count);\n }\n for (i = start; i < start + count; ++i) {\n const element = elements[i];\n if (element.hidden) {\n continue;\n }\n if (element.active && drawActiveElementsOnTop) {\n active.push(element);\n } else {\n element.draw(ctx, area);\n }\n }\n for (i = 0; i < active.length; ++i) {\n active[i].draw(ctx, area);\n }\n }\n getStyle(index, active) {\n const mode = active ? 'active' : 'default';\n return index === undefined && this._cachedMeta.dataset ? this.resolveDatasetElementOptions(mode) : this.resolveDataElementOptions(index || 0, mode);\n }\n getContext(index, active, mode) {\n const dataset = this.getDataset();\n let context;\n if (index >= 0 && index < this._cachedMeta.data.length) {\n const element = this._cachedMeta.data[index];\n context = element.$context || (element.$context = createDataContext(this.getContext(), index, element));\n context.parsed = this.getParsed(index);\n context.raw = dataset.data[index];\n context.index = context.dataIndex = index;\n } else {\n context = this.$context || (this.$context = createDatasetContext(this.chart.getContext(), this.index));\n context.dataset = dataset;\n context.index = context.datasetIndex = this.index;\n }\n context.active = !!active;\n context.mode = mode;\n return context;\n }\n resolveDatasetElementOptions(mode) {\n return this._resolveElementOptions(this.datasetElementType.id, mode);\n }\n resolveDataElementOptions(index, mode) {\n return this._resolveElementOptions(this.dataElementType.id, mode, index);\n }\n _resolveElementOptions(elementType, mode = 'default', index) {\n const active = mode === 'active';\n const cache = this._cachedDataOpts;\n const cacheKey = elementType + '-' + mode;\n const cached = cache[cacheKey];\n const sharing = this.enableOptionSharing && defined(index);\n if (cached) {\n return cloneIfNotShared(cached, sharing);\n }\n const config = this.chart.config;\n const scopeKeys = config.datasetElementScopeKeys(this._type, elementType);\n const prefixes = active ? [`${elementType}Hover`, 'hover', elementType, ''] : [elementType, ''];\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n const names = Object.keys(defaults.elements[elementType]);\n const context = () => this.getContext(index, active, mode);\n const values = config.resolveNamedOptions(scopes, names, context, prefixes);\n if (values.$shared) {\n values.$shared = sharing;\n cache[cacheKey] = Object.freeze(cloneIfNotShared(values, sharing));\n }\n return values;\n }\n _resolveAnimations(index, transition, active) {\n const chart = this.chart;\n const cache = this._cachedDataOpts;\n const cacheKey = `animation-${transition}`;\n const cached = cache[cacheKey];\n if (cached) {\n return cached;\n }\n let options;\n if (chart.options.animation !== false) {\n const config = this.chart.config;\n const scopeKeys = config.datasetAnimationScopeKeys(this._type, transition);\n const scopes = config.getOptionScopes(this.getDataset(), scopeKeys);\n options = config.createResolver(scopes, this.getContext(index, active, transition));\n }\n const animations = new Animations(chart, options && options.animations);\n if (options && options._cacheable) {\n cache[cacheKey] = Object.freeze(animations);\n }\n return animations;\n }\n getSharedOptions(options) {\n if (!options.$shared) {\n return;\n }\n return this._sharedOptions || (this._sharedOptions = Object.assign({}, options));\n }\n includeOptions(mode, sharedOptions) {\n return !sharedOptions || isDirectUpdateMode(mode) || this.chart._animationsDisabled;\n }\n _getSharedOptions(start, mode) {\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const previouslySharedOptions = this._sharedOptions;\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions) || sharedOptions !== previouslySharedOptions;\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n return {\n sharedOptions,\n includeOptions\n };\n }\n updateElement(element, index, properties, mode) {\n if (isDirectUpdateMode(mode)) {\n Object.assign(element, properties);\n } else {\n this._resolveAnimations(index, mode).update(element, properties);\n }\n }\n updateSharedOptions(sharedOptions, mode, newOptions) {\n if (sharedOptions && !isDirectUpdateMode(mode)) {\n this._resolveAnimations(undefined, mode).update(sharedOptions, newOptions);\n }\n }\n _setStyle(element, index, mode, active) {\n element.active = active;\n const options = this.getStyle(index, active);\n this._resolveAnimations(index, mode, active).update(element, {\n options: !active && this.getSharedOptions(options) || options\n });\n }\n removeHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', false);\n }\n setHoverStyle(element, datasetIndex, index) {\n this._setStyle(element, index, 'active', true);\n }\n _removeDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', false);\n }\n }\n _setDatasetHoverStyle() {\n const element = this._cachedMeta.dataset;\n if (element) {\n this._setStyle(element, undefined, 'active', true);\n }\n }\n _resyncElements(resetNewElements) {\n const data = this._data;\n const elements = this._cachedMeta.data;\n for (const [method, arg1, arg2] of this._syncList) {\n this[method](arg1, arg2);\n }\n this._syncList = [];\n const numMeta = elements.length;\n const numData = data.length;\n const count = Math.min(numData, numMeta);\n if (count) {\n this.parse(0, count);\n }\n if (numData > numMeta) {\n this._insertElements(numMeta, numData - numMeta, resetNewElements);\n } else if (numData < numMeta) {\n this._removeElements(numData, numMeta - numData);\n }\n }\n _insertElements(start, count, resetNewElements = true) {\n const meta = this._cachedMeta;\n const data = meta.data;\n const end = start + count;\n let i;\n const move = arr => {\n arr.length += count;\n for (i = arr.length - 1; i >= end; i--) {\n arr[i] = arr[i - count];\n }\n };\n move(data);\n for (i = start; i < end; ++i) {\n data[i] = new this.dataElementType();\n }\n if (this._parsing) {\n move(meta._parsed);\n }\n this.parse(start, count);\n if (resetNewElements) {\n this.updateElements(data, start, count, 'reset');\n }\n }\n updateElements(element, start, count, mode) {}\n _removeElements(start, count) {\n const meta = this._cachedMeta;\n if (this._parsing) {\n const removed = meta._parsed.splice(start, count);\n if (meta._stacked) {\n clearStacks(meta, removed);\n }\n }\n meta.data.splice(start, count);\n }\n _sync(args) {\n if (this._parsing) {\n this._syncList.push(args);\n } else {\n const [method, arg1, arg2] = args;\n this[method](arg1, arg2);\n }\n this.chart._dataChanges.push([this.index, ...args]);\n }\n _onDataPush() {\n const count = arguments.length;\n this._sync(['_insertElements', this.getDataset().data.length - count, count]);\n }\n _onDataPop() {\n this._sync(['_removeElements', this._cachedMeta.data.length - 1, 1]);\n }\n _onDataShift() {\n this._sync(['_removeElements', 0, 1]);\n }\n _onDataSplice(start, count) {\n if (count) {\n this._sync(['_removeElements', start, count]);\n }\n const newCount = arguments.length - 2;\n if (newCount) {\n this._sync(['_insertElements', start, newCount]);\n }\n }\n _onDataUnshift() {\n this._sync(['_insertElements', 0, arguments.length]);\n }\n }\n return DatasetController;\n})();\nfunction getAllScaleValues(scale, type) {\n if (!scale._cache.$bar) {\n const visibleMetas = scale.getMatchingVisibleMetas(type);\n let values = [];\n for (let i = 0, ilen = visibleMetas.length; i < ilen; i++) {\n values = values.concat(visibleMetas[i].controller.getAllParsedValues(scale));\n }\n scale._cache.$bar = _arrayUnique(values.sort((a, b) => a - b));\n }\n return scale._cache.$bar;\n}\nfunction computeMinSampleSize(meta) {\n const scale = meta.iScale;\n const values = getAllScaleValues(scale, meta.type);\n let min = scale._length;\n let i, ilen, curr, prev;\n const updateMinAndPrev = () => {\n if (curr === 32767 || curr === -32768) {\n return;\n }\n if (defined(prev)) {\n min = Math.min(min, Math.abs(curr - prev) || min);\n }\n prev = curr;\n };\n for (i = 0, ilen = values.length; i < ilen; ++i) {\n curr = scale.getPixelForValue(values[i]);\n updateMinAndPrev();\n }\n prev = undefined;\n for (i = 0, ilen = scale.ticks.length; i < ilen; ++i) {\n curr = scale.getPixelForTick(i);\n updateMinAndPrev();\n }\n return min;\n}\nfunction computeFitCategoryTraits(index, ruler, options, stackCount) {\n const thickness = options.barThickness;\n let size, ratio;\n if (isNullOrUndef(thickness)) {\n size = ruler.min * options.categoryPercentage;\n ratio = options.barPercentage;\n } else {\n size = thickness * stackCount;\n ratio = 1;\n }\n return {\n chunk: size / stackCount,\n ratio,\n start: ruler.pixels[index] - size / 2\n };\n}\nfunction computeFlexCategoryTraits(index, ruler, options, stackCount) {\n const pixels = ruler.pixels;\n const curr = pixels[index];\n let prev = index > 0 ? pixels[index - 1] : null;\n let next = index < pixels.length - 1 ? pixels[index + 1] : null;\n const percent = options.categoryPercentage;\n if (prev === null) {\n prev = curr - (next === null ? ruler.end - ruler.start : next - curr);\n }\n if (next === null) {\n next = curr + curr - prev;\n }\n const start = curr - (curr - Math.min(prev, next)) / 2 * percent;\n const size = Math.abs(next - prev) / 2 * percent;\n return {\n chunk: size / stackCount,\n ratio: options.barPercentage,\n start\n };\n}\nfunction parseFloatBar(entry, item, vScale, i) {\n const startValue = vScale.parse(entry[0], i);\n const endValue = vScale.parse(entry[1], i);\n const min = Math.min(startValue, endValue);\n const max = Math.max(startValue, endValue);\n let barStart = min;\n let barEnd = max;\n if (Math.abs(min) > Math.abs(max)) {\n barStart = max;\n barEnd = min;\n }\n item[vScale.axis] = barEnd;\n item._custom = {\n barStart,\n barEnd,\n start: startValue,\n end: endValue,\n min,\n max\n };\n}\nfunction parseValue(entry, item, vScale, i) {\n if (isArray(entry)) {\n parseFloatBar(entry, item, vScale, i);\n } else {\n item[vScale.axis] = vScale.parse(entry, i);\n }\n return item;\n}\nfunction parseArrayOrPrimitive(meta, data, start, count) {\n const iScale = meta.iScale;\n const vScale = meta.vScale;\n const labels = iScale.getLabels();\n const singleScale = iScale === vScale;\n const parsed = [];\n let i, ilen, item, entry;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n entry = data[i];\n item = {};\n item[iScale.axis] = singleScale || iScale.parse(labels[i], i);\n parsed.push(parseValue(entry, item, vScale, i));\n }\n return parsed;\n}\nfunction isFloatBar(custom) {\n return custom && custom.barStart !== undefined && custom.barEnd !== undefined;\n}\nfunction barSign(size, vScale, actualBase) {\n if (size !== 0) {\n return sign(size);\n }\n return (vScale.isHorizontal() ? 1 : -1) * (vScale.min >= actualBase ? 1 : -1);\n}\nfunction borderProps(properties) {\n let reverse, start, end, top, bottom;\n if (properties.horizontal) {\n reverse = properties.base > properties.x;\n start = 'left';\n end = 'right';\n } else {\n reverse = properties.base < properties.y;\n start = 'bottom';\n end = 'top';\n }\n if (reverse) {\n top = 'end';\n bottom = 'start';\n } else {\n top = 'start';\n bottom = 'end';\n }\n return {\n start,\n end,\n reverse,\n top,\n bottom\n };\n}\nfunction setBorderSkipped(properties, options, stack, index) {\n let edge = options.borderSkipped;\n const res = {};\n if (!edge) {\n properties.borderSkipped = res;\n return;\n }\n if (edge === true) {\n properties.borderSkipped = {\n top: true,\n right: true,\n bottom: true,\n left: true\n };\n return;\n }\n const {\n start,\n end,\n reverse,\n top,\n bottom\n } = borderProps(properties);\n if (edge === 'middle' && stack) {\n properties.enableBorderRadius = true;\n if ((stack._top || 0) === index) {\n edge = top;\n } else if ((stack._bottom || 0) === index) {\n edge = bottom;\n } else {\n res[parseEdge(bottom, start, end, reverse)] = true;\n edge = top;\n }\n }\n res[parseEdge(edge, start, end, reverse)] = true;\n properties.borderSkipped = res;\n}\nfunction parseEdge(edge, a, b, reverse) {\n if (reverse) {\n edge = swap(edge, a, b);\n edge = startEnd(edge, b, a);\n } else {\n edge = startEnd(edge, a, b);\n }\n return edge;\n}\nfunction swap(orig, v1, v2) {\n return orig === v1 ? v2 : orig === v2 ? v1 : orig;\n}\nfunction startEnd(v, start, end) {\n return v === 'start' ? start : v === 'end' ? end : v;\n}\nfunction setInflateAmount(properties, {\n inflateAmount\n}, ratio) {\n properties.inflateAmount = inflateAmount === 'auto' ? ratio === 1 ? 0.33 : 0 : inflateAmount;\n}\nlet BarController = /*#__PURE__*/(() => {\n class BarController extends DatasetController {\n static id = 'bar';\n static defaults = {\n datasetElementType: false,\n dataElementType: 'bar',\n categoryPercentage: 0.8,\n barPercentage: 0.9,\n grouped: true,\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'base', 'width', 'height']\n }\n }\n };\n static overrides = {\n scales: {\n _index_: {\n type: 'category',\n offset: true,\n grid: {\n offset: true\n }\n },\n _value_: {\n type: 'linear',\n beginAtZero: true\n }\n }\n };\n parsePrimitiveData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseArrayData(meta, data, start, count) {\n return parseArrayOrPrimitive(meta, data, start, count);\n }\n parseObjectData(meta, data, start, count) {\n const {\n iScale,\n vScale\n } = meta;\n const {\n xAxisKey = 'x',\n yAxisKey = 'y'\n } = this._parsing;\n const iAxisKey = iScale.axis === 'x' ? xAxisKey : yAxisKey;\n const vAxisKey = vScale.axis === 'x' ? xAxisKey : yAxisKey;\n const parsed = [];\n let i, ilen, item, obj;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n obj = data[i];\n item = {};\n item[iScale.axis] = iScale.parse(resolveObjectKey(obj, iAxisKey), i);\n parsed.push(parseValue(resolveObjectKey(obj, vAxisKey), item, vScale, i));\n }\n return parsed;\n }\n updateRangeFromParsed(range, scale, parsed, stack) {\n super.updateRangeFromParsed(range, scale, parsed, stack);\n const custom = parsed._custom;\n if (custom && scale === this._cachedMeta.vScale) {\n range.min = Math.min(range.min, custom.min);\n range.max = Math.max(range.max, custom.max);\n }\n }\n getMaxOverflow() {\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const {\n iScale,\n vScale\n } = meta;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const value = isFloatBar(custom) ? '[' + custom.start + ', ' + custom.end + ']' : '' + vScale.getLabelForValue(parsed[vScale.axis]);\n return {\n label: '' + iScale.getLabelForValue(parsed[iScale.axis]),\n value\n };\n }\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n const meta = this._cachedMeta;\n meta.stack = this.getDataset().stack;\n }\n update(mode) {\n const meta = this._cachedMeta;\n this.updateElements(meta.data, 0, meta.data.length, mode);\n }\n updateElements(bars, start, count, mode) {\n const reset = mode === 'reset';\n const {\n index,\n _cachedMeta: {\n vScale\n }\n } = this;\n const base = vScale.getBasePixel();\n const horizontal = vScale.isHorizontal();\n const ruler = this._getRuler();\n const {\n sharedOptions,\n includeOptions\n } = this._getSharedOptions(start, mode);\n for (let i = start; i < start + count; i++) {\n const parsed = this.getParsed(i);\n const vpixels = reset || isNullOrUndef(parsed[vScale.axis]) ? {\n base,\n head: base\n } : this._calculateBarValuePixels(i);\n const ipixels = this._calculateBarIndexPixels(i, ruler);\n const stack = (parsed._stacks || {})[vScale.axis];\n const properties = {\n horizontal,\n base: vpixels.base,\n enableBorderRadius: !stack || isFloatBar(parsed._custom) || index === stack._top || index === stack._bottom,\n x: horizontal ? vpixels.head : ipixels.center,\n y: horizontal ? ipixels.center : vpixels.head,\n height: horizontal ? ipixels.size : Math.abs(vpixels.size),\n width: horizontal ? Math.abs(vpixels.size) : ipixels.size\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, bars[i].active ? 'active' : mode);\n }\n const options = properties.options || bars[i].options;\n setBorderSkipped(properties, options, stack, index);\n setInflateAmount(properties, options, ruler.ratio);\n this.updateElement(bars[i], i, properties, mode);\n }\n }\n _getStacks(last, dataIndex) {\n const {\n iScale\n } = this._cachedMeta;\n const metasets = iScale.getMatchingVisibleMetas(this._type).filter(meta => meta.controller.options.grouped);\n const stacked = iScale.options.stacked;\n const stacks = [];\n const skipNull = meta => {\n const parsed = meta.controller.getParsed(dataIndex);\n const val = parsed && parsed[meta.vScale.axis];\n if (isNullOrUndef(val) || isNaN(val)) {\n return true;\n }\n };\n for (const meta of metasets) {\n if (dataIndex !== undefined && skipNull(meta)) {\n continue;\n }\n if (stacked === false || stacks.indexOf(meta.stack) === -1 || stacked === undefined && meta.stack === undefined) {\n stacks.push(meta.stack);\n }\n if (meta.index === last) {\n break;\n }\n }\n if (!stacks.length) {\n stacks.push(undefined);\n }\n return stacks;\n }\n _getStackCount(index) {\n return this._getStacks(undefined, index).length;\n }\n _getStackIndex(datasetIndex, name, dataIndex) {\n const stacks = this._getStacks(datasetIndex, dataIndex);\n const index = name !== undefined ? stacks.indexOf(name) : -1;\n return index === -1 ? stacks.length - 1 : index;\n }\n _getRuler() {\n const opts = this.options;\n const meta = this._cachedMeta;\n const iScale = meta.iScale;\n const pixels = [];\n let i, ilen;\n for (i = 0, ilen = meta.data.length; i < ilen; ++i) {\n pixels.push(iScale.getPixelForValue(this.getParsed(i)[iScale.axis], i));\n }\n const barThickness = opts.barThickness;\n const min = barThickness || computeMinSampleSize(meta);\n return {\n min,\n pixels,\n start: iScale._startPixel,\n end: iScale._endPixel,\n stackCount: this._getStackCount(),\n scale: iScale,\n grouped: opts.grouped,\n ratio: barThickness ? 1 : opts.categoryPercentage * opts.barPercentage\n };\n }\n _calculateBarValuePixels(index) {\n const {\n _cachedMeta: {\n vScale,\n _stacked,\n index: datasetIndex\n },\n options: {\n base: baseValue,\n minBarLength\n }\n } = this;\n const actualBase = baseValue || 0;\n const parsed = this.getParsed(index);\n const custom = parsed._custom;\n const floating = isFloatBar(custom);\n let value = parsed[vScale.axis];\n let start = 0;\n let length = _stacked ? this.applyStack(vScale, parsed, _stacked) : value;\n let head, size;\n if (length !== value) {\n start = length - value;\n length = value;\n }\n if (floating) {\n value = custom.barStart;\n length = custom.barEnd - custom.barStart;\n if (value !== 0 && sign(value) !== sign(custom.barEnd)) {\n start = 0;\n }\n start += value;\n }\n const startValue = !isNullOrUndef(baseValue) && !floating ? baseValue : start;\n let base = vScale.getPixelForValue(startValue);\n if (this.chart.getDataVisibility(index)) {\n head = vScale.getPixelForValue(start + length);\n } else {\n head = base;\n }\n size = head - base;\n if (Math.abs(size) < minBarLength) {\n size = barSign(size, vScale, actualBase) * minBarLength;\n if (value === actualBase) {\n base -= size / 2;\n }\n const startPixel = vScale.getPixelForDecimal(0);\n const endPixel = vScale.getPixelForDecimal(1);\n const min = Math.min(startPixel, endPixel);\n const max = Math.max(startPixel, endPixel);\n base = Math.max(Math.min(base, max), min);\n head = base + size;\n if (_stacked && !floating) {\n parsed._stacks[vScale.axis]._visualValues[datasetIndex] = vScale.getValueForPixel(head) - vScale.getValueForPixel(base);\n }\n }\n if (base === vScale.getPixelForValue(actualBase)) {\n const halfGrid = sign(size) * vScale.getLineWidthForValue(actualBase) / 2;\n base += halfGrid;\n size -= halfGrid;\n }\n return {\n size,\n base,\n head,\n center: head + size / 2\n };\n }\n _calculateBarIndexPixels(index, ruler) {\n const scale = ruler.scale;\n const options = this.options;\n const skipNull = options.skipNull;\n const maxBarThickness = valueOrDefault(options.maxBarThickness, Infinity);\n let center, size;\n if (ruler.grouped) {\n const stackCount = skipNull ? this._getStackCount(index) : ruler.stackCount;\n const range = options.barThickness === 'flex' ? computeFlexCategoryTraits(index, ruler, options, stackCount) : computeFitCategoryTraits(index, ruler, options, stackCount);\n const stackIndex = this._getStackIndex(this.index, this._cachedMeta.stack, skipNull ? index : undefined);\n center = range.start + range.chunk * stackIndex + range.chunk / 2;\n size = Math.min(maxBarThickness, range.chunk * range.ratio);\n } else {\n center = scale.getPixelForValue(this.getParsed(index)[scale.axis], index);\n size = Math.min(maxBarThickness, ruler.min * ruler.ratio);\n }\n return {\n base: center - size / 2,\n head: center + size / 2,\n center,\n size\n };\n }\n draw() {\n const meta = this._cachedMeta;\n const vScale = meta.vScale;\n const rects = meta.data;\n const ilen = rects.length;\n let i = 0;\n for (; i < ilen; ++i) {\n if (this.getParsed(i)[vScale.axis] !== null) {\n rects[i].draw(this._ctx);\n }\n }\n }\n }\n return BarController;\n})();\nlet BubbleController = /*#__PURE__*/(() => {\n class BubbleController extends DatasetController {\n static id = 'bubble';\n static defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'borderWidth', 'radius']\n }\n }\n };\n static overrides = {\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n };\n initialize() {\n this.enableOptionSharing = true;\n super.initialize();\n }\n parsePrimitiveData(meta, data, start, count) {\n const parsed = super.parsePrimitiveData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n parsed[i]._custom = this.resolveDataElementOptions(i + start).radius;\n }\n return parsed;\n }\n parseArrayData(meta, data, start, count) {\n const parsed = super.parseArrayData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item[2], this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n parseObjectData(meta, data, start, count) {\n const parsed = super.parseObjectData(meta, data, start, count);\n for (let i = 0; i < parsed.length; i++) {\n const item = data[start + i];\n parsed[i]._custom = valueOrDefault(item && item.r && +item.r, this.resolveDataElementOptions(i + start).radius);\n }\n return parsed;\n }\n getMaxOverflow() {\n const data = this._cachedMeta.data;\n let max = 0;\n for (let i = data.length - 1; i >= 0; --i) {\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const labels = this.chart.data.labels || [];\n const {\n xScale,\n yScale\n } = meta;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n const r = parsed._custom;\n return {\n label: labels[index] || '',\n value: '(' + x + ', ' + y + (r ? ', ' + r : '') + ')'\n };\n }\n update(mode) {\n const points = this._cachedMeta.data;\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {\n iScale,\n vScale\n } = this._cachedMeta;\n const {\n sharedOptions,\n includeOptions\n } = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const parsed = !reset && this.getParsed(i);\n const properties = {};\n const iPixel = properties[iAxis] = reset ? iScale.getPixelForDecimal(0.5) : iScale.getPixelForValue(parsed[iAxis]);\n const vPixel = properties[vAxis] = reset ? vScale.getBasePixel() : vScale.getPixelForValue(parsed[vAxis]);\n properties.skip = isNaN(iPixel) || isNaN(vPixel);\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n if (reset) {\n properties.options.radius = 0;\n }\n }\n this.updateElement(point, i, properties, mode);\n }\n }\n resolveDataElementOptions(index, mode) {\n const parsed = this.getParsed(index);\n let values = super.resolveDataElementOptions(index, mode);\n if (values.$shared) {\n values = Object.assign({}, values, {\n $shared: false\n });\n }\n const radius = values.radius;\n if (mode !== 'active') {\n values.radius = 0;\n }\n values.radius += valueOrDefault(parsed && parsed._custom, radius);\n return values;\n }\n }\n return BubbleController;\n})();\nfunction getRatioAndOffset(rotation, circumference, cutout) {\n let ratioX = 1;\n let ratioY = 1;\n let offsetX = 0;\n let offsetY = 0;\n if (circumference < TAU) {\n const startAngle = rotation;\n const endAngle = startAngle + circumference;\n const startX = Math.cos(startAngle);\n const startY = Math.sin(startAngle);\n const endX = Math.cos(endAngle);\n const endY = Math.sin(endAngle);\n const calcMax = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? 1 : Math.max(a, a * cutout, b, b * cutout);\n const calcMin = (angle, a, b) => _angleBetween(angle, startAngle, endAngle, true) ? -1 : Math.min(a, a * cutout, b, b * cutout);\n const maxX = calcMax(0, startX, endX);\n const maxY = calcMax(HALF_PI, startY, endY);\n const minX = calcMin(PI, startX, endX);\n const minY = calcMin(PI + HALF_PI, startY, endY);\n ratioX = (maxX - minX) / 2;\n ratioY = (maxY - minY) / 2;\n offsetX = -(maxX + minX) / 2;\n offsetY = -(maxY + minY) / 2;\n }\n return {\n ratioX,\n ratioY,\n offsetX,\n offsetY\n };\n}\nlet DoughnutController = /*#__PURE__*/(() => {\n class DoughnutController extends DatasetController {\n static id = 'doughnut';\n static defaults = {\n datasetElementType: false,\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: false\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['circumference', 'endAngle', 'innerRadius', 'outerRadius', 'startAngle', 'x', 'y', 'offset', 'borderWidth', 'spacing']\n }\n },\n cutout: '50%',\n rotation: 0,\n circumference: 360,\n radius: '100%',\n spacing: 0,\n indexAxis: 'r'\n };\n static descriptors = {\n _scriptable: name => name !== 'spacing',\n _indexable: name => name !== 'spacing' && !name.startsWith('borderDash') && !name.startsWith('hoverBorderDash')\n };\n static overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const {\n labels: {\n pointStyle,\n color\n }\n } = chart.legend.options;\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n fontColor: color,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n }\n }\n };\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n this.enableOptionSharing = true;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.offsetX = undefined;\n this.offsetY = undefined;\n }\n linkScales() {}\n parse(start, count) {\n const data = this.getDataset().data;\n const meta = this._cachedMeta;\n if (this._parsing === false) {\n meta._parsed = data;\n } else {\n let getter = i => +data[i];\n if (isObject(data[start])) {\n const {\n key = 'value'\n } = this._parsing;\n getter = i => +resolveObjectKey(data[i], key);\n }\n let i, ilen;\n for (i = start, ilen = start + count; i < ilen; ++i) {\n meta._parsed[i] = getter(i);\n }\n }\n }\n _getRotation() {\n return toRadians(this.options.rotation - 90);\n }\n _getCircumference() {\n return toRadians(this.options.circumference);\n }\n _getRotationExtents() {\n let min = TAU;\n let max = -TAU;\n for (let i = 0; i < this.chart.data.datasets.length; ++i) {\n if (this.chart.isDatasetVisible(i) && this.chart.getDatasetMeta(i).type === this._type) {\n const controller = this.chart.getDatasetMeta(i).controller;\n const rotation = controller._getRotation();\n const circumference = controller._getCircumference();\n min = Math.min(min, rotation);\n max = Math.max(max, rotation + circumference);\n }\n }\n return {\n rotation: min,\n circumference: max - min\n };\n }\n update(mode) {\n const chart = this.chart;\n const {\n chartArea\n } = chart;\n const meta = this._cachedMeta;\n const arcs = meta.data;\n const spacing = this.getMaxBorderWidth() + this.getMaxOffset(arcs) + this.options.spacing;\n const maxSize = Math.max((Math.min(chartArea.width, chartArea.height) - spacing) / 2, 0);\n const cutout = Math.min(toPercentage(this.options.cutout, maxSize), 1);\n const chartWeight = this._getRingWeight(this.index);\n const {\n circumference,\n rotation\n } = this._getRotationExtents();\n const {\n ratioX,\n ratioY,\n offsetX,\n offsetY\n } = getRatioAndOffset(rotation, circumference, cutout);\n const maxWidth = (chartArea.width - spacing) / ratioX;\n const maxHeight = (chartArea.height - spacing) / ratioY;\n const maxRadius = Math.max(Math.min(maxWidth, maxHeight) / 2, 0);\n const outerRadius = toDimension(this.options.radius, maxRadius);\n const innerRadius = Math.max(outerRadius * cutout, 0);\n const radiusLength = (outerRadius - innerRadius) / this._getVisibleDatasetWeightTotal();\n this.offsetX = offsetX * outerRadius;\n this.offsetY = offsetY * outerRadius;\n meta.total = this.calculateTotal();\n this.outerRadius = outerRadius - radiusLength * this._getRingWeightOffset(this.index);\n this.innerRadius = Math.max(this.outerRadius - radiusLength * chartWeight, 0);\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n _circumference(i, reset) {\n const opts = this.options;\n const meta = this._cachedMeta;\n const circumference = this._getCircumference();\n if (reset && opts.animation.animateRotate || !this.chart.getDataVisibility(i) || meta._parsed[i] === null || meta.data[i].hidden) {\n return 0;\n }\n return this.calculateCircumference(meta._parsed[i] * circumference / TAU);\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const centerX = (chartArea.left + chartArea.right) / 2;\n const centerY = (chartArea.top + chartArea.bottom) / 2;\n const animateScale = reset && animationOpts.animateScale;\n const innerRadius = animateScale ? 0 : this.innerRadius;\n const outerRadius = animateScale ? 0 : this.outerRadius;\n const {\n sharedOptions,\n includeOptions\n } = this._getSharedOptions(start, mode);\n let startAngle = this._getRotation();\n let i;\n for (i = 0; i < start; ++i) {\n startAngle += this._circumference(i, reset);\n }\n for (i = start; i < start + count; ++i) {\n const circumference = this._circumference(i, reset);\n const arc = arcs[i];\n const properties = {\n x: centerX + this.offsetX,\n y: centerY + this.offsetY,\n startAngle,\n endAngle: startAngle + circumference,\n circumference,\n outerRadius,\n innerRadius\n };\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, arc.active ? 'active' : mode);\n }\n startAngle += circumference;\n this.updateElement(arc, i, properties, mode);\n }\n }\n calculateTotal() {\n const meta = this._cachedMeta;\n const metaData = meta.data;\n let total = 0;\n let i;\n for (i = 0; i < metaData.length; i++) {\n const value = meta._parsed[i];\n if (value !== null && !isNaN(value) && this.chart.getDataVisibility(i) && !metaData[i].hidden) {\n total += Math.abs(value);\n }\n }\n return total;\n }\n calculateCircumference(value) {\n const total = this._cachedMeta.total;\n if (total > 0 && !isNaN(value)) {\n return TAU * (Math.abs(value) / total);\n }\n return 0;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index], chart.options.locale);\n return {\n label: labels[index] || '',\n value\n };\n }\n getMaxBorderWidth(arcs) {\n let max = 0;\n const chart = this.chart;\n let i, ilen, meta, controller, options;\n if (!arcs) {\n for (i = 0, ilen = chart.data.datasets.length; i < ilen; ++i) {\n if (chart.isDatasetVisible(i)) {\n meta = chart.getDatasetMeta(i);\n arcs = meta.data;\n controller = meta.controller;\n break;\n }\n }\n }\n if (!arcs) {\n return 0;\n }\n for (i = 0, ilen = arcs.length; i < ilen; ++i) {\n options = controller.resolveDataElementOptions(i);\n if (options.borderAlign !== 'inner') {\n max = Math.max(max, options.borderWidth || 0, options.hoverBorderWidth || 0);\n }\n }\n return max;\n }\n getMaxOffset(arcs) {\n let max = 0;\n for (let i = 0, ilen = arcs.length; i < ilen; ++i) {\n const options = this.resolveDataElementOptions(i);\n max = Math.max(max, options.offset || 0, options.hoverOffset || 0);\n }\n return max;\n }\n _getRingWeightOffset(datasetIndex) {\n let ringWeightOffset = 0;\n for (let i = 0; i < datasetIndex; ++i) {\n if (this.chart.isDatasetVisible(i)) {\n ringWeightOffset += this._getRingWeight(i);\n }\n }\n return ringWeightOffset;\n }\n _getRingWeight(datasetIndex) {\n return Math.max(valueOrDefault(this.chart.data.datasets[datasetIndex].weight, 1), 0);\n }\n _getVisibleDatasetWeightTotal() {\n return this._getRingWeightOffset(this.chart.data.datasets.length) || 1;\n }\n }\n return DoughnutController;\n})();\nlet LineController = /*#__PURE__*/(() => {\n class LineController extends DatasetController {\n static id = 'line';\n static defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n showLine: true,\n spanGaps: false\n };\n static overrides = {\n scales: {\n _index_: {\n type: 'category'\n },\n _value_: {\n type: 'linear'\n }\n }\n };\n initialize() {\n this.enableOptionSharing = true;\n this.supportsDecimation = true;\n super.initialize();\n }\n update(mode) {\n const meta = this._cachedMeta;\n const {\n dataset: line,\n data: points = [],\n _dataset\n } = meta;\n const animationsDisabled = this.chart._animationsDisabled;\n let {\n start,\n count\n } = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n this._drawStart = start;\n this._drawCount = count;\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n this.updateElements(points, start, count, mode);\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {\n iScale,\n vScale,\n _stacked,\n _dataset\n } = this._cachedMeta;\n const {\n sharedOptions,\n includeOptions\n } = this._getSharedOptions(start, mode);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const {\n spanGaps,\n segment\n } = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n const end = start + count;\n const pointsCount = points.length;\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for (let i = 0; i < pointsCount; ++i) {\n const point = points[i];\n const properties = directUpdate ? point : {};\n if (i < start || i >= end) {\n properties.skip = true;\n continue;\n }\n const parsed = this.getParsed(i);\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && Math.abs(parsed[iAxis] - prevParsed[iAxis]) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n prevParsed = parsed;\n }\n }\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n const data = meta.data || [];\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n draw() {\n const meta = this._cachedMeta;\n meta.dataset.updateControlPoints(this.chart.chartArea, meta.iScale.axis);\n super.draw();\n }\n }\n return LineController;\n})();\nlet PolarAreaController = /*#__PURE__*/(() => {\n class PolarAreaController extends DatasetController {\n static id = 'polarArea';\n static defaults = {\n dataElementType: 'arc',\n animation: {\n animateRotate: true,\n animateScale: true\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'startAngle', 'endAngle', 'innerRadius', 'outerRadius']\n }\n },\n indexAxis: 'r',\n startAngle: 0\n };\n static overrides = {\n aspectRatio: 1,\n plugins: {\n legend: {\n labels: {\n generateLabels(chart) {\n const data = chart.data;\n if (data.labels.length && data.datasets.length) {\n const {\n labels: {\n pointStyle,\n color\n }\n } = chart.legend.options;\n return data.labels.map((label, i) => {\n const meta = chart.getDatasetMeta(0);\n const style = meta.controller.getStyle(i);\n return {\n text: label,\n fillStyle: style.backgroundColor,\n strokeStyle: style.borderColor,\n fontColor: color,\n lineWidth: style.borderWidth,\n pointStyle: pointStyle,\n hidden: !chart.getDataVisibility(i),\n index: i\n };\n });\n }\n return [];\n }\n },\n onClick(e, legendItem, legend) {\n legend.chart.toggleDataVisibility(legendItem.index);\n legend.chart.update();\n }\n }\n },\n scales: {\n r: {\n type: 'radialLinear',\n angleLines: {\n display: false\n },\n beginAtZero: true,\n grid: {\n circular: true\n },\n pointLabels: {\n display: false\n },\n startAngle: 0\n }\n }\n };\n constructor(chart, datasetIndex) {\n super(chart, datasetIndex);\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n }\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const chart = this.chart;\n const labels = chart.data.labels || [];\n const value = formatNumber(meta._parsed[index].r, chart.options.locale);\n return {\n label: labels[index] || '',\n value\n };\n }\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n update(mode) {\n const arcs = this._cachedMeta.data;\n this._updateRadius();\n this.updateElements(arcs, 0, arcs.length, mode);\n }\n getMinMax() {\n const meta = this._cachedMeta;\n const range = {\n min: Number.POSITIVE_INFINITY,\n max: Number.NEGATIVE_INFINITY\n };\n meta.data.forEach((element, index) => {\n const parsed = this.getParsed(index).r;\n if (!isNaN(parsed) && this.chart.getDataVisibility(index)) {\n if (parsed < range.min) {\n range.min = parsed;\n }\n if (parsed > range.max) {\n range.max = parsed;\n }\n }\n });\n return range;\n }\n _updateRadius() {\n const chart = this.chart;\n const chartArea = chart.chartArea;\n const opts = chart.options;\n const minSize = Math.min(chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);\n const outerRadius = Math.max(minSize / 2, 0);\n const innerRadius = Math.max(opts.cutoutPercentage ? outerRadius / 100 * opts.cutoutPercentage : 1, 0);\n const radiusLength = (outerRadius - innerRadius) / chart.getVisibleDatasetCount();\n this.outerRadius = outerRadius - radiusLength * this.index;\n this.innerRadius = this.outerRadius - radiusLength;\n }\n updateElements(arcs, start, count, mode) {\n const reset = mode === 'reset';\n const chart = this.chart;\n const opts = chart.options;\n const animationOpts = opts.animation;\n const scale = this._cachedMeta.rScale;\n const centerX = scale.xCenter;\n const centerY = scale.yCenter;\n const datasetStartAngle = scale.getIndexAngle(0) - 0.5 * PI;\n let angle = datasetStartAngle;\n let i;\n const defaultAngle = 360 / this.countVisibleElements();\n for (i = 0; i < start; ++i) {\n angle += this._computeAngle(i, mode, defaultAngle);\n }\n for (i = start; i < start + count; i++) {\n const arc = arcs[i];\n let startAngle = angle;\n let endAngle = angle + this._computeAngle(i, mode, defaultAngle);\n let outerRadius = chart.getDataVisibility(i) ? scale.getDistanceFromCenterForValue(this.getParsed(i).r) : 0;\n angle = endAngle;\n if (reset) {\n if (animationOpts.animateScale) {\n outerRadius = 0;\n }\n if (animationOpts.animateRotate) {\n startAngle = endAngle = datasetStartAngle;\n }\n }\n const properties = {\n x: centerX,\n y: centerY,\n innerRadius: 0,\n outerRadius,\n startAngle,\n endAngle,\n options: this.resolveDataElementOptions(i, arc.active ? 'active' : mode)\n };\n this.updateElement(arc, i, properties, mode);\n }\n }\n countVisibleElements() {\n const meta = this._cachedMeta;\n let count = 0;\n meta.data.forEach((element, index) => {\n if (!isNaN(this.getParsed(index).r) && this.chart.getDataVisibility(index)) {\n count++;\n }\n });\n return count;\n }\n _computeAngle(index, mode, defaultAngle) {\n return this.chart.getDataVisibility(index) ? toRadians(this.resolveDataElementOptions(index, mode).angle || defaultAngle) : 0;\n }\n }\n return PolarAreaController;\n})();\nlet PieController = /*#__PURE__*/(() => {\n class PieController extends DoughnutController {\n static id = 'pie';\n static defaults = {\n cutout: 0,\n rotation: 0,\n circumference: 360,\n radius: '100%'\n };\n }\n return PieController;\n})();\nlet RadarController = /*#__PURE__*/(() => {\n class RadarController extends DatasetController {\n static id = 'radar';\n static defaults = {\n datasetElementType: 'line',\n dataElementType: 'point',\n indexAxis: 'r',\n showLine: true,\n elements: {\n line: {\n fill: 'start'\n }\n }\n };\n static overrides = {\n aspectRatio: 1,\n scales: {\n r: {\n type: 'radialLinear'\n }\n }\n };\n getLabelAndValue(index) {\n const vScale = this._cachedMeta.vScale;\n const parsed = this.getParsed(index);\n return {\n label: vScale.getLabels()[index],\n value: '' + vScale.getLabelForValue(parsed[vScale.axis])\n };\n }\n parseObjectData(meta, data, start, count) {\n return _parseObjectDataRadialScale.bind(this)(meta, data, start, count);\n }\n update(mode) {\n const meta = this._cachedMeta;\n const line = meta.dataset;\n const points = meta.data || [];\n const labels = meta.iScale.getLabels();\n line.points = points;\n if (mode !== 'resize') {\n const options = this.resolveDatasetElementOptions(mode);\n if (!this.options.showLine) {\n options.borderWidth = 0;\n }\n const properties = {\n _loop: true,\n _fullLoop: labels.length === points.length,\n options\n };\n this.updateElement(line, undefined, properties, mode);\n }\n this.updateElements(points, 0, points.length, mode);\n }\n updateElements(points, start, count, mode) {\n const scale = this._cachedMeta.rScale;\n const reset = mode === 'reset';\n for (let i = start; i < start + count; i++) {\n const point = points[i];\n const options = this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n const pointPosition = scale.getPointPositionForValue(i, this.getParsed(i).r);\n const x = reset ? scale.xCenter : pointPosition.x;\n const y = reset ? scale.yCenter : pointPosition.y;\n const properties = {\n x,\n y,\n angle: pointPosition.angle,\n skip: isNaN(x) || isNaN(y),\n options\n };\n this.updateElement(point, i, properties, mode);\n }\n }\n }\n return RadarController;\n})();\nlet ScatterController = /*#__PURE__*/(() => {\n class ScatterController extends DatasetController {\n static id = 'scatter';\n static defaults = {\n datasetElementType: false,\n dataElementType: 'point',\n showLine: false,\n fill: false\n };\n static overrides = {\n interaction: {\n mode: 'point'\n },\n scales: {\n x: {\n type: 'linear'\n },\n y: {\n type: 'linear'\n }\n }\n };\n getLabelAndValue(index) {\n const meta = this._cachedMeta;\n const labels = this.chart.data.labels || [];\n const {\n xScale,\n yScale\n } = meta;\n const parsed = this.getParsed(index);\n const x = xScale.getLabelForValue(parsed.x);\n const y = yScale.getLabelForValue(parsed.y);\n return {\n label: labels[index] || '',\n value: '(' + x + ', ' + y + ')'\n };\n }\n update(mode) {\n const meta = this._cachedMeta;\n const {\n data: points = []\n } = meta;\n const animationsDisabled = this.chart._animationsDisabled;\n let {\n start,\n count\n } = _getStartAndCountOfVisiblePoints(meta, points, animationsDisabled);\n this._drawStart = start;\n this._drawCount = count;\n if (_scaleRangesChanged(meta)) {\n start = 0;\n count = points.length;\n }\n if (this.options.showLine) {\n if (!this.datasetElementType) {\n this.addElements();\n }\n const {\n dataset: line,\n _dataset\n } = meta;\n line._chart = this.chart;\n line._datasetIndex = this.index;\n line._decimated = !!_dataset._decimated;\n line.points = points;\n const options = this.resolveDatasetElementOptions(mode);\n options.segment = this.options.segment;\n this.updateElement(line, undefined, {\n animated: !animationsDisabled,\n options\n }, mode);\n } else if (this.datasetElementType) {\n delete meta.dataset;\n this.datasetElementType = false;\n }\n this.updateElements(points, start, count, mode);\n }\n addElements() {\n const {\n showLine\n } = this.options;\n if (!this.datasetElementType && showLine) {\n this.datasetElementType = this.chart.registry.getElement('line');\n }\n super.addElements();\n }\n updateElements(points, start, count, mode) {\n const reset = mode === 'reset';\n const {\n iScale,\n vScale,\n _stacked,\n _dataset\n } = this._cachedMeta;\n const firstOpts = this.resolveDataElementOptions(start, mode);\n const sharedOptions = this.getSharedOptions(firstOpts);\n const includeOptions = this.includeOptions(mode, sharedOptions);\n const iAxis = iScale.axis;\n const vAxis = vScale.axis;\n const {\n spanGaps,\n segment\n } = this.options;\n const maxGapLength = isNumber(spanGaps) ? spanGaps : Number.POSITIVE_INFINITY;\n const directUpdate = this.chart._animationsDisabled || reset || mode === 'none';\n let prevParsed = start > 0 && this.getParsed(start - 1);\n for (let i = start; i < start + count; ++i) {\n const point = points[i];\n const parsed = this.getParsed(i);\n const properties = directUpdate ? point : {};\n const nullData = isNullOrUndef(parsed[vAxis]);\n const iPixel = properties[iAxis] = iScale.getPixelForValue(parsed[iAxis], i);\n const vPixel = properties[vAxis] = reset || nullData ? vScale.getBasePixel() : vScale.getPixelForValue(_stacked ? this.applyStack(vScale, parsed, _stacked) : parsed[vAxis], i);\n properties.skip = isNaN(iPixel) || isNaN(vPixel) || nullData;\n properties.stop = i > 0 && Math.abs(parsed[iAxis] - prevParsed[iAxis]) > maxGapLength;\n if (segment) {\n properties.parsed = parsed;\n properties.raw = _dataset.data[i];\n }\n if (includeOptions) {\n properties.options = sharedOptions || this.resolveDataElementOptions(i, point.active ? 'active' : mode);\n }\n if (!directUpdate) {\n this.updateElement(point, i, properties, mode);\n }\n prevParsed = parsed;\n }\n this.updateSharedOptions(sharedOptions, mode, firstOpts);\n }\n getMaxOverflow() {\n const meta = this._cachedMeta;\n const data = meta.data || [];\n if (!this.options.showLine) {\n let max = 0;\n for (let i = data.length - 1; i >= 0; --i) {\n max = Math.max(max, data[i].size(this.resolveDataElementOptions(i)) / 2);\n }\n return max > 0 && max;\n }\n const dataset = meta.dataset;\n const border = dataset.options && dataset.options.borderWidth || 0;\n if (!data.length) {\n return border;\n }\n const firstPoint = data[0].size(this.resolveDataElementOptions(0));\n const lastPoint = data[data.length - 1].size(this.resolveDataElementOptions(data.length - 1));\n return Math.max(border, firstPoint, lastPoint) / 2;\n }\n }\n return ScatterController;\n})();\nvar controllers = /*#__PURE__*/Object.freeze({\n __proto__: null,\n BarController: BarController,\n BubbleController: BubbleController,\n DoughnutController: DoughnutController,\n LineController: LineController,\n PieController: PieController,\n PolarAreaController: PolarAreaController,\n RadarController: RadarController,\n ScatterController: ScatterController\n});\n\n/**\n * @namespace Chart._adapters\n * @since 2.8.0\n * @private\n */\nfunction abstract() {\n throw new Error('This method is not implemented: Check that a complete date adapter is provided.');\n}\n/**\n * Date adapter (current used by the time scale)\n * @namespace Chart._adapters._date\n * @memberof Chart._adapters\n * @private\n */\nclass DateAdapterBase {\n /**\n * Override default date adapter methods.\n * Accepts type parameter to define options type.\n * @example\n * Chart._adapters._date.override<{myAdapterOption: string}>({\n * init() {\n * console.log(this.options.myAdapterOption);\n * }\n * })\n */\n static override(members) {\n Object.assign(DateAdapterBase.prototype, members);\n }\n options;\n constructor(options) {\n this.options = options || {};\n }\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n init() {}\n formats() {\n return abstract();\n }\n parse() {\n return abstract();\n }\n format() {\n return abstract();\n }\n add() {\n return abstract();\n }\n diff() {\n return abstract();\n }\n startOf() {\n return abstract();\n }\n endOf() {\n return abstract();\n }\n}\nvar adapters = {\n _date: DateAdapterBase\n};\nfunction binarySearch(metaset, axis, value, intersect) {\n const {\n controller,\n data,\n _sorted\n } = metaset;\n const iScale = controller._cachedMeta.iScale;\n if (iScale && axis === iScale.axis && axis !== 'r' && _sorted && data.length) {\n const lookupMethod = iScale._reversePixels ? _rlookupByKey : _lookupByKey;\n if (!intersect) {\n return lookupMethod(data, axis, value);\n } else if (controller._sharedOptions) {\n const el = data[0];\n const range = typeof el.getRange === 'function' && el.getRange(axis);\n if (range) {\n const start = lookupMethod(data, axis, value - range);\n const end = lookupMethod(data, axis, value + range);\n return {\n lo: start.lo,\n hi: end.hi\n };\n }\n }\n }\n return {\n lo: 0,\n hi: data.length - 1\n };\n}\nfunction evaluateInteractionItems(chart, axis, position, handler, intersect) {\n const metasets = chart.getSortedVisibleDatasetMetas();\n const value = position[axis];\n for (let i = 0, ilen = metasets.length; i < ilen; ++i) {\n const {\n index,\n data\n } = metasets[i];\n const {\n lo,\n hi\n } = binarySearch(metasets[i], axis, value, intersect);\n for (let j = lo; j <= hi; ++j) {\n const element = data[j];\n if (!element.skip) {\n handler(element, index, j);\n }\n }\n }\n}\nfunction getDistanceMetricForAxis(axis) {\n const useX = axis.indexOf('x') !== -1;\n const useY = axis.indexOf('y') !== -1;\n return function (pt1, pt2) {\n const deltaX = useX ? Math.abs(pt1.x - pt2.x) : 0;\n const deltaY = useY ? Math.abs(pt1.y - pt2.y) : 0;\n return Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n };\n}\nfunction getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) {\n const items = [];\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return items;\n }\n const evaluationFunc = function (element, datasetIndex, index) {\n if (!includeInvisible && !_isPointInArea(element, chart.chartArea, 0)) {\n return;\n }\n if (element.inRange(position.x, position.y, useFinalPosition)) {\n items.push({\n element,\n datasetIndex,\n index\n });\n }\n };\n evaluateInteractionItems(chart, axis, position, evaluationFunc, true);\n return items;\n}\nfunction getNearestRadialItems(chart, position, axis, useFinalPosition) {\n let items = [];\n function evaluationFunc(element, datasetIndex, index) {\n const {\n startAngle,\n endAngle\n } = element.getProps(['startAngle', 'endAngle'], useFinalPosition);\n const {\n angle\n } = getAngleFromPoint(element, {\n x: position.x,\n y: position.y\n });\n if (_angleBetween(angle, startAngle, endAngle)) {\n items.push({\n element,\n datasetIndex,\n index\n });\n }\n }\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\nfunction getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n let items = [];\n const distanceMetric = getDistanceMetricForAxis(axis);\n let minDistance = Number.POSITIVE_INFINITY;\n function evaluationFunc(element, datasetIndex, index) {\n const inRange = element.inRange(position.x, position.y, useFinalPosition);\n if (intersect && !inRange) {\n return;\n }\n const center = element.getCenterPoint(useFinalPosition);\n const pointInArea = !!includeInvisible || chart.isPointInArea(center);\n if (!pointInArea && !inRange) {\n return;\n }\n const distance = distanceMetric(position, center);\n if (distance < minDistance) {\n items = [{\n element,\n datasetIndex,\n index\n }];\n minDistance = distance;\n } else if (distance === minDistance) {\n items.push({\n element,\n datasetIndex,\n index\n });\n }\n }\n evaluateInteractionItems(chart, axis, position, evaluationFunc);\n return items;\n}\nfunction getNearestItems(chart, position, axis, intersect, useFinalPosition, includeInvisible) {\n if (!includeInvisible && !chart.isPointInArea(position)) {\n return [];\n }\n return axis === 'r' && !intersect ? getNearestRadialItems(chart, position, axis, useFinalPosition) : getNearestCartesianItems(chart, position, axis, intersect, useFinalPosition, includeInvisible);\n}\nfunction getAxisItems(chart, position, axis, intersect, useFinalPosition) {\n const items = [];\n const rangeMethod = axis === 'x' ? 'inXRange' : 'inYRange';\n let intersectsItem = false;\n evaluateInteractionItems(chart, axis, position, (element, datasetIndex, index) => {\n if (element[rangeMethod](position[axis], useFinalPosition)) {\n items.push({\n element,\n datasetIndex,\n index\n });\n intersectsItem = intersectsItem || element.inRange(position.x, position.y, useFinalPosition);\n }\n });\n if (intersect && !intersectsItem) {\n return [];\n }\n return items;\n}\nvar Interaction = {\n evaluateInteractionItems,\n modes: {\n index(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'x';\n const includeInvisible = options.includeInvisible || false;\n const items = options.intersect ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n const elements = [];\n if (!items.length) {\n return [];\n }\n chart.getSortedVisibleDatasetMetas().forEach(meta => {\n const index = items[0].index;\n const element = meta.data[index];\n if (element && !element.skip) {\n elements.push({\n element,\n datasetIndex: meta.index,\n index\n });\n }\n });\n return elements;\n },\n dataset(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n let items = options.intersect ? getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible) : getNearestItems(chart, position, axis, false, useFinalPosition, includeInvisible);\n if (items.length > 0) {\n const datasetIndex = items[0].datasetIndex;\n const data = chart.getDatasetMeta(datasetIndex).data;\n items = [];\n for (let i = 0; i < data.length; ++i) {\n items.push({\n element: data[i],\n datasetIndex,\n index: i\n });\n }\n }\n return items;\n },\n point(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getIntersectItems(chart, position, axis, useFinalPosition, includeInvisible);\n },\n nearest(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n const axis = options.axis || 'xy';\n const includeInvisible = options.includeInvisible || false;\n return getNearestItems(chart, position, axis, options.intersect, useFinalPosition, includeInvisible);\n },\n x(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'x', options.intersect, useFinalPosition);\n },\n y(chart, e, options, useFinalPosition) {\n const position = getRelativePosition(e, chart);\n return getAxisItems(chart, position, 'y', options.intersect, useFinalPosition);\n }\n }\n};\nconst STATIC_POSITIONS = ['left', 'top', 'right', 'bottom'];\nfunction filterByPosition(array, position) {\n return array.filter(v => v.pos === position);\n}\nfunction filterDynamicPositionByAxis(array, axis) {\n return array.filter(v => STATIC_POSITIONS.indexOf(v.pos) === -1 && v.box.axis === axis);\n}\nfunction sortByWeight(array, reverse) {\n return array.sort((a, b) => {\n const v0 = reverse ? b : a;\n const v1 = reverse ? a : b;\n return v0.weight === v1.weight ? v0.index - v1.index : v0.weight - v1.weight;\n });\n}\nfunction wrapBoxes(boxes) {\n const layoutBoxes = [];\n let i, ilen, box, pos, stack, stackWeight;\n for (i = 0, ilen = (boxes || []).length; i < ilen; ++i) {\n box = boxes[i];\n ({\n position: pos,\n options: {\n stack,\n stackWeight = 1\n }\n } = box);\n layoutBoxes.push({\n index: i,\n box,\n pos,\n horizontal: box.isHorizontal(),\n weight: box.weight,\n stack: stack && pos + stack,\n stackWeight\n });\n }\n return layoutBoxes;\n}\nfunction buildStacks(layouts) {\n const stacks = {};\n for (const wrap of layouts) {\n const {\n stack,\n pos,\n stackWeight\n } = wrap;\n if (!stack || !STATIC_POSITIONS.includes(pos)) {\n continue;\n }\n const _stack = stacks[stack] || (stacks[stack] = {\n count: 0,\n placed: 0,\n weight: 0,\n size: 0\n });\n _stack.count++;\n _stack.weight += stackWeight;\n }\n return stacks;\n}\nfunction setLayoutDims(layouts, params) {\n const stacks = buildStacks(layouts);\n const {\n vBoxMaxWidth,\n hBoxMaxHeight\n } = params;\n let i, ilen, layout;\n for (i = 0, ilen = layouts.length; i < ilen; ++i) {\n layout = layouts[i];\n const {\n fullSize\n } = layout.box;\n const stack = stacks[layout.stack];\n const factor = stack && layout.stackWeight / stack.weight;\n if (layout.horizontal) {\n layout.width = factor ? factor * vBoxMaxWidth : fullSize && params.availableWidth;\n layout.height = hBoxMaxHeight;\n } else {\n layout.width = vBoxMaxWidth;\n layout.height = factor ? factor * hBoxMaxHeight : fullSize && params.availableHeight;\n }\n }\n return stacks;\n}\nfunction buildLayoutBoxes(boxes) {\n const layoutBoxes = wrapBoxes(boxes);\n const fullSize = sortByWeight(layoutBoxes.filter(wrap => wrap.box.fullSize), true);\n const left = sortByWeight(filterByPosition(layoutBoxes, 'left'), true);\n const right = sortByWeight(filterByPosition(layoutBoxes, 'right'));\n const top = sortByWeight(filterByPosition(layoutBoxes, 'top'), true);\n const bottom = sortByWeight(filterByPosition(layoutBoxes, 'bottom'));\n const centerHorizontal = filterDynamicPositionByAxis(layoutBoxes, 'x');\n const centerVertical = filterDynamicPositionByAxis(layoutBoxes, 'y');\n return {\n fullSize,\n leftAndTop: left.concat(top),\n rightAndBottom: right.concat(centerVertical).concat(bottom).concat(centerHorizontal),\n chartArea: filterByPosition(layoutBoxes, 'chartArea'),\n vertical: left.concat(right).concat(centerVertical),\n horizontal: top.concat(bottom).concat(centerHorizontal)\n };\n}\nfunction getCombinedMax(maxPadding, chartArea, a, b) {\n return Math.max(maxPadding[a], chartArea[a]) + Math.max(maxPadding[b], chartArea[b]);\n}\nfunction updateMaxPadding(maxPadding, boxPadding) {\n maxPadding.top = Math.max(maxPadding.top, boxPadding.top);\n maxPadding.left = Math.max(maxPadding.left, boxPadding.left);\n maxPadding.bottom = Math.max(maxPadding.bottom, boxPadding.bottom);\n maxPadding.right = Math.max(maxPadding.right, boxPadding.right);\n}\nfunction updateDims(chartArea, params, layout, stacks) {\n const {\n pos,\n box\n } = layout;\n const maxPadding = chartArea.maxPadding;\n if (!isObject(pos)) {\n if (layout.size) {\n chartArea[pos] -= layout.size;\n }\n const stack = stacks[layout.stack] || {\n size: 0,\n count: 1\n };\n stack.size = Math.max(stack.size, layout.horizontal ? box.height : box.width);\n layout.size = stack.size / stack.count;\n chartArea[pos] += layout.size;\n }\n if (box.getPadding) {\n updateMaxPadding(maxPadding, box.getPadding());\n }\n const newWidth = Math.max(0, params.outerWidth - getCombinedMax(maxPadding, chartArea, 'left', 'right'));\n const newHeight = Math.max(0, params.outerHeight - getCombinedMax(maxPadding, chartArea, 'top', 'bottom'));\n const widthChanged = newWidth !== chartArea.w;\n const heightChanged = newHeight !== chartArea.h;\n chartArea.w = newWidth;\n chartArea.h = newHeight;\n return layout.horizontal ? {\n same: widthChanged,\n other: heightChanged\n } : {\n same: heightChanged,\n other: widthChanged\n };\n}\nfunction handleMaxPadding(chartArea) {\n const maxPadding = chartArea.maxPadding;\n function updatePos(pos) {\n const change = Math.max(maxPadding[pos] - chartArea[pos], 0);\n chartArea[pos] += change;\n return change;\n }\n chartArea.y += updatePos('top');\n chartArea.x += updatePos('left');\n updatePos('right');\n updatePos('bottom');\n}\nfunction getMargins(horizontal, chartArea) {\n const maxPadding = chartArea.maxPadding;\n function marginForPositions(positions) {\n const margin = {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0\n };\n positions.forEach(pos => {\n margin[pos] = Math.max(chartArea[pos], maxPadding[pos]);\n });\n return margin;\n }\n return horizontal ? marginForPositions(['left', 'right']) : marginForPositions(['top', 'bottom']);\n}\nfunction fitBoxes(boxes, chartArea, params, stacks) {\n const refitBoxes = [];\n let i, ilen, layout, box, refit, changed;\n for (i = 0, ilen = boxes.length, refit = 0; i < ilen; ++i) {\n layout = boxes[i];\n box = layout.box;\n box.update(layout.width || chartArea.w, layout.height || chartArea.h, getMargins(layout.horizontal, chartArea));\n const {\n same,\n other\n } = updateDims(chartArea, params, layout, stacks);\n refit |= same && refitBoxes.length;\n changed = changed || other;\n if (!box.fullSize) {\n refitBoxes.push(layout);\n }\n }\n return refit && fitBoxes(refitBoxes, chartArea, params, stacks) || changed;\n}\nfunction setBoxDims(box, left, top, width, height) {\n box.top = top;\n box.left = left;\n box.right = left + width;\n box.bottom = top + height;\n box.width = width;\n box.height = height;\n}\nfunction placeBoxes(boxes, chartArea, params, stacks) {\n const userPadding = params.padding;\n let {\n x,\n y\n } = chartArea;\n for (const layout of boxes) {\n const box = layout.box;\n const stack = stacks[layout.stack] || {\n count: 1,\n placed: 0,\n weight: 1\n };\n const weight = layout.stackWeight / stack.weight || 1;\n if (layout.horizontal) {\n const width = chartArea.w * weight;\n const height = stack.size || box.height;\n if (defined(stack.start)) {\n y = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, userPadding.left, y, params.outerWidth - userPadding.right - userPadding.left, height);\n } else {\n setBoxDims(box, chartArea.left + stack.placed, y, width, height);\n }\n stack.start = y;\n stack.placed += width;\n y = box.bottom;\n } else {\n const height = chartArea.h * weight;\n const width = stack.size || box.width;\n if (defined(stack.start)) {\n x = stack.start;\n }\n if (box.fullSize) {\n setBoxDims(box, x, userPadding.top, width, params.outerHeight - userPadding.bottom - userPadding.top);\n } else {\n setBoxDims(box, x, chartArea.top + stack.placed, width, height);\n }\n stack.start = x;\n stack.placed += height;\n x = box.right;\n }\n }\n chartArea.x = x;\n chartArea.y = y;\n}\nvar layouts = {\n addBox(chart, item) {\n if (!chart.boxes) {\n chart.boxes = [];\n }\n item.fullSize = item.fullSize || false;\n item.position = item.position || 'top';\n item.weight = item.weight || 0;\n item._layers = item._layers || function () {\n return [{\n z: 0,\n draw(chartArea) {\n item.draw(chartArea);\n }\n }];\n };\n chart.boxes.push(item);\n },\n removeBox(chart, layoutItem) {\n const index = chart.boxes ? chart.boxes.indexOf(layoutItem) : -1;\n if (index !== -1) {\n chart.boxes.splice(index, 1);\n }\n },\n configure(chart, item, options) {\n item.fullSize = options.fullSize;\n item.position = options.position;\n item.weight = options.weight;\n },\n update(chart, width, height, minPadding) {\n if (!chart) {\n return;\n }\n const padding = toPadding(chart.options.layout.padding);\n const availableWidth = Math.max(width - padding.width, 0);\n const availableHeight = Math.max(height - padding.height, 0);\n const boxes = buildLayoutBoxes(chart.boxes);\n const verticalBoxes = boxes.vertical;\n const horizontalBoxes = boxes.horizontal;\n each(chart.boxes, box => {\n if (typeof box.beforeLayout === 'function') {\n box.beforeLayout();\n }\n });\n const visibleVerticalBoxCount = verticalBoxes.reduce((total, wrap) => wrap.box.options && wrap.box.options.display === false ? total : total + 1, 0) || 1;\n const params = Object.freeze({\n outerWidth: width,\n outerHeight: height,\n padding,\n availableWidth,\n availableHeight,\n vBoxMaxWidth: availableWidth / 2 / visibleVerticalBoxCount,\n hBoxMaxHeight: availableHeight / 2\n });\n const maxPadding = Object.assign({}, padding);\n updateMaxPadding(maxPadding, toPadding(minPadding));\n const chartArea = Object.assign({\n maxPadding,\n w: availableWidth,\n h: availableHeight,\n x: padding.left,\n y: padding.top\n }, padding);\n const stacks = setLayoutDims(verticalBoxes.concat(horizontalBoxes), params);\n fitBoxes(boxes.fullSize, chartArea, params, stacks);\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n if (fitBoxes(horizontalBoxes, chartArea, params, stacks)) {\n fitBoxes(verticalBoxes, chartArea, params, stacks);\n }\n handleMaxPadding(chartArea);\n placeBoxes(boxes.leftAndTop, chartArea, params, stacks);\n chartArea.x += chartArea.w;\n chartArea.y += chartArea.h;\n placeBoxes(boxes.rightAndBottom, chartArea, params, stacks);\n chart.chartArea = {\n left: chartArea.left,\n top: chartArea.top,\n right: chartArea.left + chartArea.w,\n bottom: chartArea.top + chartArea.h,\n height: chartArea.h,\n width: chartArea.w\n };\n each(boxes.chartArea, layout => {\n const box = layout.box;\n Object.assign(box, chart.chartArea);\n box.update(chartArea.w, chartArea.h, {\n left: 0,\n top: 0,\n right: 0,\n bottom: 0\n });\n });\n }\n};\nclass BasePlatform {\n acquireContext(canvas, aspectRatio) {}\n releaseContext(context) {\n return false;\n }\n addEventListener(chart, type, listener) {}\n removeEventListener(chart, type, listener) {}\n getDevicePixelRatio() {\n return 1;\n }\n getMaximumSize(element, width, height, aspectRatio) {\n width = Math.max(0, width || element.width);\n height = height || element.height;\n return {\n width,\n height: Math.max(0, aspectRatio ? Math.floor(width / aspectRatio) : height)\n };\n }\n isAttached(canvas) {\n return true;\n }\n updateConfig(config) {}\n}\nclass BasicPlatform extends BasePlatform {\n acquireContext(item) {\n return item && item.getContext && item.getContext('2d') || null;\n }\n updateConfig(config) {\n config.options.animation = false;\n }\n}\nconst EXPANDO_KEY = '$chartjs';\nconst EVENT_TYPES = {\n touchstart: 'mousedown',\n touchmove: 'mousemove',\n touchend: 'mouseup',\n pointerenter: 'mouseenter',\n pointerdown: 'mousedown',\n pointermove: 'mousemove',\n pointerup: 'mouseup',\n pointerleave: 'mouseout',\n pointerout: 'mouseout'\n};\nconst isNullOrEmpty = value => value === null || value === '';\nfunction initCanvas(canvas, aspectRatio) {\n const style = canvas.style;\n const renderHeight = canvas.getAttribute('height');\n const renderWidth = canvas.getAttribute('width');\n canvas[EXPANDO_KEY] = {\n initial: {\n height: renderHeight,\n width: renderWidth,\n style: {\n display: style.display,\n height: style.height,\n width: style.width\n }\n }\n };\n style.display = style.display || 'block';\n style.boxSizing = style.boxSizing || 'border-box';\n if (isNullOrEmpty(renderWidth)) {\n const displayWidth = readUsedSize(canvas, 'width');\n if (displayWidth !== undefined) {\n canvas.width = displayWidth;\n }\n }\n if (isNullOrEmpty(renderHeight)) {\n if (canvas.style.height === '') {\n canvas.height = canvas.width / (aspectRatio || 2);\n } else {\n const displayHeight = readUsedSize(canvas, 'height');\n if (displayHeight !== undefined) {\n canvas.height = displayHeight;\n }\n }\n }\n return canvas;\n}\nconst eventListenerOptions = supportsEventListenerOptions ? {\n passive: true\n} : false;\nfunction addListener(node, type, listener) {\n if (node) {\n node.addEventListener(type, listener, eventListenerOptions);\n }\n}\nfunction removeListener(chart, type, listener) {\n if (chart && chart.canvas) {\n chart.canvas.removeEventListener(type, listener, eventListenerOptions);\n }\n}\nfunction fromNativeEvent(event, chart) {\n const type = EVENT_TYPES[event.type] || event.type;\n const {\n x,\n y\n } = getRelativePosition(event, chart);\n return {\n type,\n chart,\n native: event,\n x: x !== undefined ? x : null,\n y: y !== undefined ? y : null\n };\n}\nfunction nodeListContains(nodeList, canvas) {\n for (const node of nodeList) {\n if (node === canvas || node.contains(canvas)) {\n return true;\n }\n }\n}\nfunction createAttachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.addedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.removedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {\n childList: true,\n subtree: true\n });\n return observer;\n}\nfunction createDetachObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const observer = new MutationObserver(entries => {\n let trigger = false;\n for (const entry of entries) {\n trigger = trigger || nodeListContains(entry.removedNodes, canvas);\n trigger = trigger && !nodeListContains(entry.addedNodes, canvas);\n }\n if (trigger) {\n listener();\n }\n });\n observer.observe(document, {\n childList: true,\n subtree: true\n });\n return observer;\n}\nconst drpListeningCharts = new Map();\nlet oldDevicePixelRatio = 0;\nfunction onWindowResize() {\n const dpr = window.devicePixelRatio;\n if (dpr === oldDevicePixelRatio) {\n return;\n }\n oldDevicePixelRatio = dpr;\n drpListeningCharts.forEach((resize, chart) => {\n if (chart.currentDevicePixelRatio !== dpr) {\n resize();\n }\n });\n}\nfunction listenDevicePixelRatioChanges(chart, resize) {\n if (!drpListeningCharts.size) {\n window.addEventListener('resize', onWindowResize);\n }\n drpListeningCharts.set(chart, resize);\n}\nfunction unlistenDevicePixelRatioChanges(chart) {\n drpListeningCharts.delete(chart);\n if (!drpListeningCharts.size) {\n window.removeEventListener('resize', onWindowResize);\n }\n}\nfunction createResizeObserver(chart, type, listener) {\n const canvas = chart.canvas;\n const container = canvas && _getParentNode(canvas);\n if (!container) {\n return;\n }\n const resize = throttled((width, height) => {\n const w = container.clientWidth;\n listener(width, height);\n if (w < container.clientWidth) {\n listener();\n }\n }, window);\n const observer = new ResizeObserver(entries => {\n const entry = entries[0];\n const width = entry.contentRect.width;\n const height = entry.contentRect.height;\n if (width === 0 && height === 0) {\n return;\n }\n resize(width, height);\n });\n observer.observe(container);\n listenDevicePixelRatioChanges(chart, resize);\n return observer;\n}\nfunction releaseObserver(chart, type, observer) {\n if (observer) {\n observer.disconnect();\n }\n if (type === 'resize') {\n unlistenDevicePixelRatioChanges(chart);\n }\n}\nfunction createProxyAndListen(chart, type, listener) {\n const canvas = chart.canvas;\n const proxy = throttled(event => {\n if (chart.ctx !== null) {\n listener(fromNativeEvent(event, chart));\n }\n }, chart);\n addListener(canvas, type, proxy);\n return proxy;\n}\nclass DomPlatform extends BasePlatform {\n acquireContext(canvas, aspectRatio) {\n const context = canvas && canvas.getContext && canvas.getContext('2d');\n if (context && context.canvas === canvas) {\n initCanvas(canvas, aspectRatio);\n return context;\n }\n return null;\n }\n releaseContext(context) {\n const canvas = context.canvas;\n if (!canvas[EXPANDO_KEY]) {\n return false;\n }\n const initial = canvas[EXPANDO_KEY].initial;\n ['height', 'width'].forEach(prop => {\n const value = initial[prop];\n if (isNullOrUndef(value)) {\n canvas.removeAttribute(prop);\n } else {\n canvas.setAttribute(prop, value);\n }\n });\n const style = initial.style || {};\n Object.keys(style).forEach(key => {\n canvas.style[key] = style[key];\n });\n canvas.width = canvas.width;\n delete canvas[EXPANDO_KEY];\n return true;\n }\n addEventListener(chart, type, listener) {\n this.removeEventListener(chart, type);\n const proxies = chart.$proxies || (chart.$proxies = {});\n const handlers = {\n attach: createAttachObserver,\n detach: createDetachObserver,\n resize: createResizeObserver\n };\n const handler = handlers[type] || createProxyAndListen;\n proxies[type] = handler(chart, type, listener);\n }\n removeEventListener(chart, type) {\n const proxies = chart.$proxies || (chart.$proxies = {});\n const proxy = proxies[type];\n if (!proxy) {\n return;\n }\n const handlers = {\n attach: releaseObserver,\n detach: releaseObserver,\n resize: releaseObserver\n };\n const handler = handlers[type] || removeListener;\n handler(chart, type, proxy);\n proxies[type] = undefined;\n }\n getDevicePixelRatio() {\n return window.devicePixelRatio;\n }\n getMaximumSize(canvas, width, height, aspectRatio) {\n return getMaximumSize(canvas, width, height, aspectRatio);\n }\n isAttached(canvas) {\n const container = _getParentNode(canvas);\n return !!(container && container.isConnected);\n }\n}\nfunction _detectPlatform(canvas) {\n if (!_isDomSupported() || typeof OffscreenCanvas !== 'undefined' && canvas instanceof OffscreenCanvas) {\n return BasicPlatform;\n }\n return DomPlatform;\n}\nclass Element {\n static defaults = {};\n static defaultRoutes = undefined;\n x;\n y;\n active = false;\n options;\n $animations;\n tooltipPosition(useFinalPosition) {\n const {\n x,\n y\n } = this.getProps(['x', 'y'], useFinalPosition);\n return {\n x,\n y\n };\n }\n hasValue() {\n return isNumber(this.x) && isNumber(this.y);\n }\n getProps(props, final) {\n const anims = this.$animations;\n if (!final || !anims) {\n // let's not create an object, if not needed\n return this;\n }\n const ret = {};\n props.forEach(prop => {\n ret[prop] = anims[prop] && anims[prop].active() ? anims[prop]._to : this[prop];\n });\n return ret;\n }\n}\nfunction autoSkip(scale, ticks) {\n const tickOpts = scale.options.ticks;\n const determinedMaxTicks = determineMaxTicks(scale);\n const ticksLimit = Math.min(tickOpts.maxTicksLimit || determinedMaxTicks, determinedMaxTicks);\n const majorIndices = tickOpts.major.enabled ? getMajorIndices(ticks) : [];\n const numMajorIndices = majorIndices.length;\n const first = majorIndices[0];\n const last = majorIndices[numMajorIndices - 1];\n const newTicks = [];\n if (numMajorIndices > ticksLimit) {\n skipMajors(ticks, newTicks, majorIndices, numMajorIndices / ticksLimit);\n return newTicks;\n }\n const spacing = calculateSpacing(majorIndices, ticks, ticksLimit);\n if (numMajorIndices > 0) {\n let i, ilen;\n const avgMajorSpacing = numMajorIndices > 1 ? Math.round((last - first) / (numMajorIndices - 1)) : null;\n skip(ticks, newTicks, spacing, isNullOrUndef(avgMajorSpacing) ? 0 : first - avgMajorSpacing, first);\n for (i = 0, ilen = numMajorIndices - 1; i < ilen; i++) {\n skip(ticks, newTicks, spacing, majorIndices[i], majorIndices[i + 1]);\n }\n skip(ticks, newTicks, spacing, last, isNullOrUndef(avgMajorSpacing) ? ticks.length : last + avgMajorSpacing);\n return newTicks;\n }\n skip(ticks, newTicks, spacing);\n return newTicks;\n}\nfunction determineMaxTicks(scale) {\n const offset = scale.options.offset;\n const tickLength = scale._tickSize();\n const maxScale = scale._length / tickLength + (offset ? 0 : 1);\n const maxChart = scale._maxLength / tickLength;\n return Math.floor(Math.min(maxScale, maxChart));\n}\nfunction calculateSpacing(majorIndices, ticks, ticksLimit) {\n const evenMajorSpacing = getEvenSpacing(majorIndices);\n const spacing = ticks.length / ticksLimit;\n if (!evenMajorSpacing) {\n return Math.max(spacing, 1);\n }\n const factors = _factorize(evenMajorSpacing);\n for (let i = 0, ilen = factors.length - 1; i < ilen; i++) {\n const factor = factors[i];\n if (factor > spacing) {\n return factor;\n }\n }\n return Math.max(spacing, 1);\n}\nfunction getMajorIndices(ticks) {\n const result = [];\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (ticks[i].major) {\n result.push(i);\n }\n }\n return result;\n}\nfunction skipMajors(ticks, newTicks, majorIndices, spacing) {\n let count = 0;\n let next = majorIndices[0];\n let i;\n spacing = Math.ceil(spacing);\n for (i = 0; i < ticks.length; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = majorIndices[count * spacing];\n }\n }\n}\nfunction skip(ticks, newTicks, spacing, majorStart, majorEnd) {\n const start = valueOrDefault(majorStart, 0);\n const end = Math.min(valueOrDefault(majorEnd, ticks.length), ticks.length);\n let count = 0;\n let length, i, next;\n spacing = Math.ceil(spacing);\n if (majorEnd) {\n length = majorEnd - majorStart;\n spacing = length / Math.floor(length / spacing);\n }\n next = start;\n while (next < 0) {\n count++;\n next = Math.round(start + count * spacing);\n }\n for (i = Math.max(start, 0); i < end; i++) {\n if (i === next) {\n newTicks.push(ticks[i]);\n count++;\n next = Math.round(start + count * spacing);\n }\n }\n}\nfunction getEvenSpacing(arr) {\n const len = arr.length;\n let i, diff;\n if (len < 2) {\n return false;\n }\n for (diff = arr[0], i = 1; i < len; ++i) {\n if (arr[i] - arr[i - 1] !== diff) {\n return false;\n }\n }\n return diff;\n}\nconst reverseAlign = align => align === 'left' ? 'right' : align === 'right' ? 'left' : align;\nconst offsetFromEdge = (scale, edge, offset) => edge === 'top' || edge === 'left' ? scale[edge] + offset : scale[edge] - offset;\nconst getTicksLimit = (ticksLength, maxTicksLimit) => Math.min(maxTicksLimit || ticksLength, ticksLength);\nfunction sample(arr, numItems) {\n const result = [];\n const increment = arr.length / numItems;\n const len = arr.length;\n let i = 0;\n for (; i < len; i += increment) {\n result.push(arr[Math.floor(i)]);\n }\n return result;\n}\nfunction getPixelForGridLine(scale, index, offsetGridLines) {\n const length = scale.ticks.length;\n const validIndex = Math.min(index, length - 1);\n const start = scale._startPixel;\n const end = scale._endPixel;\n const epsilon = 1e-6;\n let lineValue = scale.getPixelForTick(validIndex);\n let offset;\n if (offsetGridLines) {\n if (length === 1) {\n offset = Math.max(lineValue - start, end - lineValue);\n } else if (index === 0) {\n offset = (scale.getPixelForTick(1) - lineValue) / 2;\n } else {\n offset = (lineValue - scale.getPixelForTick(validIndex - 1)) / 2;\n }\n lineValue += validIndex < index ? offset : -offset;\n if (lineValue < start - epsilon || lineValue > end + epsilon) {\n return;\n }\n }\n return lineValue;\n}\nfunction garbageCollect(caches, length) {\n each(caches, cache => {\n const gc = cache.gc;\n const gcLen = gc.length / 2;\n let i;\n if (gcLen > length) {\n for (i = 0; i < gcLen; ++i) {\n delete cache.data[gc[i]];\n }\n gc.splice(0, gcLen);\n }\n });\n}\nfunction getTickMarkLength(options) {\n return options.drawTicks ? options.tickLength : 0;\n}\nfunction getTitleHeight(options, fallback) {\n if (!options.display) {\n return 0;\n }\n const font = toFont(options.font, fallback);\n const padding = toPadding(options.padding);\n const lines = isArray(options.text) ? options.text.length : 1;\n return lines * font.lineHeight + padding.height;\n}\nfunction createScaleContext(parent, scale) {\n return createContext(parent, {\n scale,\n type: 'scale'\n });\n}\nfunction createTickContext(parent, index, tick) {\n return createContext(parent, {\n tick,\n index,\n type: 'tick'\n });\n}\nfunction titleAlign(align, position, reverse) {\n let ret = _toLeftRightCenter(align);\n if (reverse && position !== 'right' || !reverse && position === 'right') {\n ret = reverseAlign(ret);\n }\n return ret;\n}\nfunction titleArgs(scale, offset, position, align) {\n const {\n top,\n left,\n bottom,\n right,\n chart\n } = scale;\n const {\n chartArea,\n scales\n } = chart;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n const height = bottom - top;\n const width = right - left;\n if (scale.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleY = scales[positionAxisID].getPixelForValue(value) + height - offset;\n } else if (position === 'center') {\n titleY = (chartArea.bottom + chartArea.top) / 2 + height - offset;\n } else {\n titleY = offsetFromEdge(scale, position, offset);\n }\n maxWidth = right - left;\n } else {\n if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n titleX = scales[positionAxisID].getPixelForValue(value) - width + offset;\n } else if (position === 'center') {\n titleX = (chartArea.left + chartArea.right) / 2 - width + offset;\n } else {\n titleX = offsetFromEdge(scale, position, offset);\n }\n titleY = _alignStartEnd(align, bottom, top);\n rotation = position === 'left' ? -HALF_PI : HALF_PI;\n }\n return {\n titleX,\n titleY,\n maxWidth,\n rotation\n };\n}\nclass Scale extends Element {\n constructor(cfg) {\n super();\n this.id = cfg.id;\n this.type = cfg.type;\n this.options = undefined;\n this.ctx = cfg.ctx;\n this.chart = cfg.chart;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this._margins = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n this.maxWidth = undefined;\n this.maxHeight = undefined;\n this.paddingTop = undefined;\n this.paddingBottom = undefined;\n this.paddingLeft = undefined;\n this.paddingRight = undefined;\n this.axis = undefined;\n this.labelRotation = undefined;\n this.min = undefined;\n this.max = undefined;\n this._range = undefined;\n this.ticks = [];\n this._gridLineItems = null;\n this._labelItems = null;\n this._labelSizes = null;\n this._length = 0;\n this._maxLength = 0;\n this._longestTextCache = {};\n this._startPixel = undefined;\n this._endPixel = undefined;\n this._reversePixels = false;\n this._userMax = undefined;\n this._userMin = undefined;\n this._suggestedMax = undefined;\n this._suggestedMin = undefined;\n this._ticksLength = 0;\n this._borderValue = 0;\n this._cache = {};\n this._dataLimitsCached = false;\n this.$context = undefined;\n }\n init(options) {\n this.options = options.setContext(this.getContext());\n this.axis = options.axis;\n this._userMin = this.parse(options.min);\n this._userMax = this.parse(options.max);\n this._suggestedMin = this.parse(options.suggestedMin);\n this._suggestedMax = this.parse(options.suggestedMax);\n }\n parse(raw, index) {\n return raw;\n }\n getUserBounds() {\n let {\n _userMin,\n _userMax,\n _suggestedMin,\n _suggestedMax\n } = this;\n _userMin = finiteOrDefault(_userMin, Number.POSITIVE_INFINITY);\n _userMax = finiteOrDefault(_userMax, Number.NEGATIVE_INFINITY);\n _suggestedMin = finiteOrDefault(_suggestedMin, Number.POSITIVE_INFINITY);\n _suggestedMax = finiteOrDefault(_suggestedMax, Number.NEGATIVE_INFINITY);\n return {\n min: finiteOrDefault(_userMin, _suggestedMin),\n max: finiteOrDefault(_userMax, _suggestedMax),\n minDefined: isNumberFinite(_userMin),\n maxDefined: isNumberFinite(_userMax)\n };\n }\n getMinMax(canStack) {\n let {\n min,\n max,\n minDefined,\n maxDefined\n } = this.getUserBounds();\n let range;\n if (minDefined && maxDefined) {\n return {\n min,\n max\n };\n }\n const metas = this.getMatchingVisibleMetas();\n for (let i = 0, ilen = metas.length; i < ilen; ++i) {\n range = metas[i].controller.getMinMax(this, canStack);\n if (!minDefined) {\n min = Math.min(min, range.min);\n }\n if (!maxDefined) {\n max = Math.max(max, range.max);\n }\n }\n min = maxDefined && min > max ? max : min;\n max = minDefined && min > max ? min : max;\n return {\n min: finiteOrDefault(min, finiteOrDefault(max, min)),\n max: finiteOrDefault(max, finiteOrDefault(min, max))\n };\n }\n getPadding() {\n return {\n left: this.paddingLeft || 0,\n top: this.paddingTop || 0,\n right: this.paddingRight || 0,\n bottom: this.paddingBottom || 0\n };\n }\n getTicks() {\n return this.ticks;\n }\n getLabels() {\n const data = this.chart.data;\n return this.options.labels || (this.isHorizontal() ? data.xLabels : data.yLabels) || data.labels || [];\n }\n getLabelItems(chartArea = this.chart.chartArea) {\n const items = this._labelItems || (this._labelItems = this._computeLabelItems(chartArea));\n return items;\n }\n beforeLayout() {\n this._cache = {};\n this._dataLimitsCached = false;\n }\n beforeUpdate() {\n callback(this.options.beforeUpdate, [this]);\n }\n update(maxWidth, maxHeight, margins) {\n const {\n beginAtZero,\n grace,\n ticks: tickOpts\n } = this.options;\n const sampleSize = tickOpts.sampleSize;\n this.beforeUpdate();\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins = Object.assign({\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n }, margins);\n this.ticks = null;\n this._labelSizes = null;\n this._gridLineItems = null;\n this._labelItems = null;\n this.beforeSetDimensions();\n this.setDimensions();\n this.afterSetDimensions();\n this._maxLength = this.isHorizontal() ? this.width + margins.left + margins.right : this.height + margins.top + margins.bottom;\n if (!this._dataLimitsCached) {\n this.beforeDataLimits();\n this.determineDataLimits();\n this.afterDataLimits();\n this._range = _addGrace(this, grace, beginAtZero);\n this._dataLimitsCached = true;\n }\n this.beforeBuildTicks();\n this.ticks = this.buildTicks() || [];\n this.afterBuildTicks();\n const samplingEnabled = sampleSize < this.ticks.length;\n this._convertTicksToLabels(samplingEnabled ? sample(this.ticks, sampleSize) : this.ticks);\n this.configure();\n this.beforeCalculateLabelRotation();\n this.calculateLabelRotation();\n this.afterCalculateLabelRotation();\n if (tickOpts.display && (tickOpts.autoSkip || tickOpts.source === 'auto')) {\n this.ticks = autoSkip(this, this.ticks);\n this._labelSizes = null;\n this.afterAutoSkip();\n }\n if (samplingEnabled) {\n this._convertTicksToLabels(this.ticks);\n }\n this.beforeFit();\n this.fit();\n this.afterFit();\n this.afterUpdate();\n }\n configure() {\n let reversePixels = this.options.reverse;\n let startPixel, endPixel;\n if (this.isHorizontal()) {\n startPixel = this.left;\n endPixel = this.right;\n } else {\n startPixel = this.top;\n endPixel = this.bottom;\n reversePixels = !reversePixels;\n }\n this._startPixel = startPixel;\n this._endPixel = endPixel;\n this._reversePixels = reversePixels;\n this._length = endPixel - startPixel;\n this._alignToPixels = this.options.alignToPixels;\n }\n afterUpdate() {\n callback(this.options.afterUpdate, [this]);\n }\n beforeSetDimensions() {\n callback(this.options.beforeSetDimensions, [this]);\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = 0;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = 0;\n this.bottom = this.height;\n }\n this.paddingLeft = 0;\n this.paddingTop = 0;\n this.paddingRight = 0;\n this.paddingBottom = 0;\n }\n afterSetDimensions() {\n callback(this.options.afterSetDimensions, [this]);\n }\n _callHooks(name) {\n this.chart.notifyPlugins(name, this.getContext());\n callback(this.options[name], [this]);\n }\n beforeDataLimits() {\n this._callHooks('beforeDataLimits');\n }\n determineDataLimits() {}\n afterDataLimits() {\n this._callHooks('afterDataLimits');\n }\n beforeBuildTicks() {\n this._callHooks('beforeBuildTicks');\n }\n buildTicks() {\n return [];\n }\n afterBuildTicks() {\n this._callHooks('afterBuildTicks');\n }\n beforeTickToLabelConversion() {\n callback(this.options.beforeTickToLabelConversion, [this]);\n }\n generateTickLabels(ticks) {\n const tickOpts = this.options.ticks;\n let i, ilen, tick;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n tick = ticks[i];\n tick.label = callback(tickOpts.callback, [tick.value, i, ticks], this);\n }\n }\n afterTickToLabelConversion() {\n callback(this.options.afterTickToLabelConversion, [this]);\n }\n beforeCalculateLabelRotation() {\n callback(this.options.beforeCalculateLabelRotation, [this]);\n }\n calculateLabelRotation() {\n const options = this.options;\n const tickOpts = options.ticks;\n const numTicks = getTicksLimit(this.ticks.length, options.ticks.maxTicksLimit);\n const minRotation = tickOpts.minRotation || 0;\n const maxRotation = tickOpts.maxRotation;\n let labelRotation = minRotation;\n let tickWidth, maxHeight, maxLabelDiagonal;\n if (!this._isVisible() || !tickOpts.display || minRotation >= maxRotation || numTicks <= 1 || !this.isHorizontal()) {\n this.labelRotation = minRotation;\n return;\n }\n const labelSizes = this._getLabelSizes();\n const maxLabelWidth = labelSizes.widest.width;\n const maxLabelHeight = labelSizes.highest.height;\n const maxWidth = _limitValue(this.chart.width - maxLabelWidth, 0, this.maxWidth);\n tickWidth = options.offset ? this.maxWidth / numTicks : maxWidth / (numTicks - 1);\n if (maxLabelWidth + 6 > tickWidth) {\n tickWidth = maxWidth / (numTicks - (options.offset ? 0.5 : 1));\n maxHeight = this.maxHeight - getTickMarkLength(options.grid) - tickOpts.padding - getTitleHeight(options.title, this.chart.options.font);\n maxLabelDiagonal = Math.sqrt(maxLabelWidth * maxLabelWidth + maxLabelHeight * maxLabelHeight);\n labelRotation = toDegrees(Math.min(Math.asin(_limitValue((labelSizes.highest.height + 6) / tickWidth, -1, 1)), Math.asin(_limitValue(maxHeight / maxLabelDiagonal, -1, 1)) - Math.asin(_limitValue(maxLabelHeight / maxLabelDiagonal, -1, 1))));\n labelRotation = Math.max(minRotation, Math.min(maxRotation, labelRotation));\n }\n this.labelRotation = labelRotation;\n }\n afterCalculateLabelRotation() {\n callback(this.options.afterCalculateLabelRotation, [this]);\n }\n afterAutoSkip() {}\n beforeFit() {\n callback(this.options.beforeFit, [this]);\n }\n fit() {\n const minSize = {\n width: 0,\n height: 0\n };\n const {\n chart,\n options: {\n ticks: tickOpts,\n title: titleOpts,\n grid: gridOpts\n }\n } = this;\n const display = this._isVisible();\n const isHorizontal = this.isHorizontal();\n if (display) {\n const titleHeight = getTitleHeight(titleOpts, chart.options.font);\n if (isHorizontal) {\n minSize.width = this.maxWidth;\n minSize.height = getTickMarkLength(gridOpts) + titleHeight;\n } else {\n minSize.height = this.maxHeight;\n minSize.width = getTickMarkLength(gridOpts) + titleHeight;\n }\n if (tickOpts.display && this.ticks.length) {\n const {\n first,\n last,\n widest,\n highest\n } = this._getLabelSizes();\n const tickPadding = tickOpts.padding * 2;\n const angleRadians = toRadians(this.labelRotation);\n const cos = Math.cos(angleRadians);\n const sin = Math.sin(angleRadians);\n if (isHorizontal) {\n const labelHeight = tickOpts.mirror ? 0 : sin * widest.width + cos * highest.height;\n minSize.height = Math.min(this.maxHeight, minSize.height + labelHeight + tickPadding);\n } else {\n const labelWidth = tickOpts.mirror ? 0 : cos * widest.width + sin * highest.height;\n minSize.width = Math.min(this.maxWidth, minSize.width + labelWidth + tickPadding);\n }\n this._calculatePadding(first, last, sin, cos);\n }\n }\n this._handleMargins();\n if (isHorizontal) {\n this.width = this._length = chart.width - this._margins.left - this._margins.right;\n this.height = minSize.height;\n } else {\n this.width = minSize.width;\n this.height = this._length = chart.height - this._margins.top - this._margins.bottom;\n }\n }\n _calculatePadding(first, last, sin, cos) {\n const {\n ticks: {\n align,\n padding\n },\n position\n } = this.options;\n const isRotated = this.labelRotation !== 0;\n const labelsBelowTicks = position !== 'top' && this.axis === 'x';\n if (this.isHorizontal()) {\n const offsetLeft = this.getPixelForTick(0) - this.left;\n const offsetRight = this.right - this.getPixelForTick(this.ticks.length - 1);\n let paddingLeft = 0;\n let paddingRight = 0;\n if (isRotated) {\n if (labelsBelowTicks) {\n paddingLeft = cos * first.width;\n paddingRight = sin * last.height;\n } else {\n paddingLeft = sin * first.height;\n paddingRight = cos * last.width;\n }\n } else if (align === 'start') {\n paddingRight = last.width;\n } else if (align === 'end') {\n paddingLeft = first.width;\n } else if (align !== 'inner') {\n paddingLeft = first.width / 2;\n paddingRight = last.width / 2;\n }\n this.paddingLeft = Math.max((paddingLeft - offsetLeft + padding) * this.width / (this.width - offsetLeft), 0);\n this.paddingRight = Math.max((paddingRight - offsetRight + padding) * this.width / (this.width - offsetRight), 0);\n } else {\n let paddingTop = last.height / 2;\n let paddingBottom = first.height / 2;\n if (align === 'start') {\n paddingTop = 0;\n paddingBottom = first.height;\n } else if (align === 'end') {\n paddingTop = last.height;\n paddingBottom = 0;\n }\n this.paddingTop = paddingTop + padding;\n this.paddingBottom = paddingBottom + padding;\n }\n }\n _handleMargins() {\n if (this._margins) {\n this._margins.left = Math.max(this.paddingLeft, this._margins.left);\n this._margins.top = Math.max(this.paddingTop, this._margins.top);\n this._margins.right = Math.max(this.paddingRight, this._margins.right);\n this._margins.bottom = Math.max(this.paddingBottom, this._margins.bottom);\n }\n }\n afterFit() {\n callback(this.options.afterFit, [this]);\n }\n isHorizontal() {\n const {\n axis,\n position\n } = this.options;\n return position === 'top' || position === 'bottom' || axis === 'x';\n }\n isFullSize() {\n return this.options.fullSize;\n }\n _convertTicksToLabels(ticks) {\n this.beforeTickToLabelConversion();\n this.generateTickLabels(ticks);\n let i, ilen;\n for (i = 0, ilen = ticks.length; i < ilen; i++) {\n if (isNullOrUndef(ticks[i].label)) {\n ticks.splice(i, 1);\n ilen--;\n i--;\n }\n }\n this.afterTickToLabelConversion();\n }\n _getLabelSizes() {\n let labelSizes = this._labelSizes;\n if (!labelSizes) {\n const sampleSize = this.options.ticks.sampleSize;\n let ticks = this.ticks;\n if (sampleSize < ticks.length) {\n ticks = sample(ticks, sampleSize);\n }\n this._labelSizes = labelSizes = this._computeLabelSizes(ticks, ticks.length, this.options.ticks.maxTicksLimit);\n }\n return labelSizes;\n }\n _computeLabelSizes(ticks, length, maxTicksLimit) {\n const {\n ctx,\n _longestTextCache: caches\n } = this;\n const widths = [];\n const heights = [];\n const increment = Math.floor(length / getTicksLimit(length, maxTicksLimit));\n let widestLabelSize = 0;\n let highestLabelSize = 0;\n let i, j, jlen, label, tickFont, fontString, cache, lineHeight, width, height, nestedLabel;\n for (i = 0; i < length; i += increment) {\n label = ticks[i].label;\n tickFont = this._resolveTickFontOptions(i);\n ctx.font = fontString = tickFont.string;\n cache = caches[fontString] = caches[fontString] || {\n data: {},\n gc: []\n };\n lineHeight = tickFont.lineHeight;\n width = height = 0;\n if (!isNullOrUndef(label) && !isArray(label)) {\n width = _measureText(ctx, cache.data, cache.gc, width, label);\n height = lineHeight;\n } else if (isArray(label)) {\n for (j = 0, jlen = label.length; j < jlen; ++j) {\n nestedLabel = label[j];\n if (!isNullOrUndef(nestedLabel) && !isArray(nestedLabel)) {\n width = _measureText(ctx, cache.data, cache.gc, width, nestedLabel);\n height += lineHeight;\n }\n }\n }\n widths.push(width);\n heights.push(height);\n widestLabelSize = Math.max(width, widestLabelSize);\n highestLabelSize = Math.max(height, highestLabelSize);\n }\n garbageCollect(caches, length);\n const widest = widths.indexOf(widestLabelSize);\n const highest = heights.indexOf(highestLabelSize);\n const valueAt = idx => ({\n width: widths[idx] || 0,\n height: heights[idx] || 0\n });\n return {\n first: valueAt(0),\n last: valueAt(length - 1),\n widest: valueAt(widest),\n highest: valueAt(highest),\n widths,\n heights\n };\n }\n getLabelForValue(value) {\n return value;\n }\n getPixelForValue(value, index) {\n return NaN;\n }\n getValueForPixel(pixel) {}\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getPixelForDecimal(decimal) {\n if (this._reversePixels) {\n decimal = 1 - decimal;\n }\n const pixel = this._startPixel + decimal * this._length;\n return _int16Range(this._alignToPixels ? _alignPixel(this.chart, pixel, 0) : pixel);\n }\n getDecimalForPixel(pixel) {\n const decimal = (pixel - this._startPixel) / this._length;\n return this._reversePixels ? 1 - decimal : decimal;\n }\n getBasePixel() {\n return this.getPixelForValue(this.getBaseValue());\n }\n getBaseValue() {\n const {\n min,\n max\n } = this;\n return min < 0 && max < 0 ? max : min > 0 && max > 0 ? min : 0;\n }\n getContext(index) {\n const ticks = this.ticks || [];\n if (index >= 0 && index < ticks.length) {\n const tick = ticks[index];\n return tick.$context || (tick.$context = createTickContext(this.getContext(), index, tick));\n }\n return this.$context || (this.$context = createScaleContext(this.chart.getContext(), this));\n }\n _tickSize() {\n const optionTicks = this.options.ticks;\n const rot = toRadians(this.labelRotation);\n const cos = Math.abs(Math.cos(rot));\n const sin = Math.abs(Math.sin(rot));\n const labelSizes = this._getLabelSizes();\n const padding = optionTicks.autoSkipPadding || 0;\n const w = labelSizes ? labelSizes.widest.width + padding : 0;\n const h = labelSizes ? labelSizes.highest.height + padding : 0;\n return this.isHorizontal() ? h * cos > w * sin ? w / cos : h / sin : h * sin < w * cos ? h / cos : w / sin;\n }\n _isVisible() {\n const display = this.options.display;\n if (display !== 'auto') {\n return !!display;\n }\n return this.getMatchingVisibleMetas().length > 0;\n }\n _computeGridLineItems(chartArea) {\n const axis = this.axis;\n const chart = this.chart;\n const options = this.options;\n const {\n grid,\n position,\n border\n } = options;\n const offset = grid.offset;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const ticksLength = ticks.length + (offset ? 1 : 0);\n const tl = getTickMarkLength(grid);\n const items = [];\n const borderOpts = border.setContext(this.getContext());\n const axisWidth = borderOpts.display ? borderOpts.width : 0;\n const axisHalfWidth = axisWidth / 2;\n const alignBorderValue = function (pixel) {\n return _alignPixel(chart, pixel, axisWidth);\n };\n let borderValue, i, lineValue, alignedLineValue;\n let tx1, ty1, tx2, ty2, x1, y1, x2, y2;\n if (position === 'top') {\n borderValue = alignBorderValue(this.bottom);\n ty1 = this.bottom - tl;\n ty2 = borderValue - axisHalfWidth;\n y1 = alignBorderValue(chartArea.top) + axisHalfWidth;\n y2 = chartArea.bottom;\n } else if (position === 'bottom') {\n borderValue = alignBorderValue(this.top);\n y1 = chartArea.top;\n y2 = alignBorderValue(chartArea.bottom) - axisHalfWidth;\n ty1 = borderValue + axisHalfWidth;\n ty2 = this.top + tl;\n } else if (position === 'left') {\n borderValue = alignBorderValue(this.right);\n tx1 = this.right - tl;\n tx2 = borderValue - axisHalfWidth;\n x1 = alignBorderValue(chartArea.left) + axisHalfWidth;\n x2 = chartArea.right;\n } else if (position === 'right') {\n borderValue = alignBorderValue(this.left);\n x1 = chartArea.left;\n x2 = alignBorderValue(chartArea.right) - axisHalfWidth;\n tx1 = borderValue + axisHalfWidth;\n tx2 = this.left + tl;\n } else if (axis === 'x') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.top + chartArea.bottom) / 2 + 0.5);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n y1 = chartArea.top;\n y2 = chartArea.bottom;\n ty1 = borderValue + axisHalfWidth;\n ty2 = ty1 + tl;\n } else if (axis === 'y') {\n if (position === 'center') {\n borderValue = alignBorderValue((chartArea.left + chartArea.right) / 2);\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n borderValue = alignBorderValue(this.chart.scales[positionAxisID].getPixelForValue(value));\n }\n tx1 = borderValue - axisHalfWidth;\n tx2 = tx1 - tl;\n x1 = chartArea.left;\n x2 = chartArea.right;\n }\n const limit = valueOrDefault(options.ticks.maxTicksLimit, ticksLength);\n const step = Math.max(1, Math.ceil(ticksLength / limit));\n for (i = 0; i < ticksLength; i += step) {\n const context = this.getContext(i);\n const optsAtIndex = grid.setContext(context);\n const optsAtIndexBorder = border.setContext(context);\n const lineWidth = optsAtIndex.lineWidth;\n const lineColor = optsAtIndex.color;\n const borderDash = optsAtIndexBorder.dash || [];\n const borderDashOffset = optsAtIndexBorder.dashOffset;\n const tickWidth = optsAtIndex.tickWidth;\n const tickColor = optsAtIndex.tickColor;\n const tickBorderDash = optsAtIndex.tickBorderDash || [];\n const tickBorderDashOffset = optsAtIndex.tickBorderDashOffset;\n lineValue = getPixelForGridLine(this, i, offset);\n if (lineValue === undefined) {\n continue;\n }\n alignedLineValue = _alignPixel(chart, lineValue, lineWidth);\n if (isHorizontal) {\n tx1 = tx2 = x1 = x2 = alignedLineValue;\n } else {\n ty1 = ty2 = y1 = y2 = alignedLineValue;\n }\n items.push({\n tx1,\n ty1,\n tx2,\n ty2,\n x1,\n y1,\n x2,\n y2,\n width: lineWidth,\n color: lineColor,\n borderDash,\n borderDashOffset,\n tickWidth,\n tickColor,\n tickBorderDash,\n tickBorderDashOffset\n });\n }\n this._ticksLength = ticksLength;\n this._borderValue = borderValue;\n return items;\n }\n _computeLabelItems(chartArea) {\n const axis = this.axis;\n const options = this.options;\n const {\n position,\n ticks: optionTicks\n } = options;\n const isHorizontal = this.isHorizontal();\n const ticks = this.ticks;\n const {\n align,\n crossAlign,\n padding,\n mirror\n } = optionTicks;\n const tl = getTickMarkLength(options.grid);\n const tickAndPadding = tl + padding;\n const hTickAndPadding = mirror ? -padding : tickAndPadding;\n const rotation = -toRadians(this.labelRotation);\n const items = [];\n let i, ilen, tick, label, x, y, textAlign, pixel, font, lineHeight, lineCount, textOffset;\n let textBaseline = 'middle';\n if (position === 'top') {\n y = this.bottom - hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'bottom') {\n y = this.top + hTickAndPadding;\n textAlign = this._getXAxisLabelAlignment();\n } else if (position === 'left') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (position === 'right') {\n const ret = this._getYAxisLabelAlignment(tl);\n textAlign = ret.textAlign;\n x = ret.x;\n } else if (axis === 'x') {\n if (position === 'center') {\n y = (chartArea.top + chartArea.bottom) / 2 + tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n y = this.chart.scales[positionAxisID].getPixelForValue(value) + tickAndPadding;\n }\n textAlign = this._getXAxisLabelAlignment();\n } else if (axis === 'y') {\n if (position === 'center') {\n x = (chartArea.left + chartArea.right) / 2 - tickAndPadding;\n } else if (isObject(position)) {\n const positionAxisID = Object.keys(position)[0];\n const value = position[positionAxisID];\n x = this.chart.scales[positionAxisID].getPixelForValue(value);\n }\n textAlign = this._getYAxisLabelAlignment(tl).textAlign;\n }\n if (axis === 'y') {\n if (align === 'start') {\n textBaseline = 'top';\n } else if (align === 'end') {\n textBaseline = 'bottom';\n }\n }\n const labelSizes = this._getLabelSizes();\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n label = tick.label;\n const optsAtIndex = optionTicks.setContext(this.getContext(i));\n pixel = this.getPixelForTick(i) + optionTicks.labelOffset;\n font = this._resolveTickFontOptions(i);\n lineHeight = font.lineHeight;\n lineCount = isArray(label) ? label.length : 1;\n const halfCount = lineCount / 2;\n const color = optsAtIndex.color;\n const strokeColor = optsAtIndex.textStrokeColor;\n const strokeWidth = optsAtIndex.textStrokeWidth;\n let tickTextAlign = textAlign;\n if (isHorizontal) {\n x = pixel;\n if (textAlign === 'inner') {\n if (i === ilen - 1) {\n tickTextAlign = !this.options.reverse ? 'right' : 'left';\n } else if (i === 0) {\n tickTextAlign = !this.options.reverse ? 'left' : 'right';\n } else {\n tickTextAlign = 'center';\n }\n }\n if (position === 'top') {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = -lineCount * lineHeight + lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = -labelSizes.highest.height / 2 - halfCount * lineHeight + lineHeight;\n } else {\n textOffset = -labelSizes.highest.height + lineHeight / 2;\n }\n } else {\n if (crossAlign === 'near' || rotation !== 0) {\n textOffset = lineHeight / 2;\n } else if (crossAlign === 'center') {\n textOffset = labelSizes.highest.height / 2 - halfCount * lineHeight;\n } else {\n textOffset = labelSizes.highest.height - lineCount * lineHeight;\n }\n }\n if (mirror) {\n textOffset *= -1;\n }\n if (rotation !== 0 && !optsAtIndex.showLabelBackdrop) {\n x += lineHeight / 2 * Math.sin(rotation);\n }\n } else {\n y = pixel;\n textOffset = (1 - lineCount) * lineHeight / 2;\n }\n let backdrop;\n if (optsAtIndex.showLabelBackdrop) {\n const labelPadding = toPadding(optsAtIndex.backdropPadding);\n const height = labelSizes.heights[i];\n const width = labelSizes.widths[i];\n let top = textOffset - labelPadding.top;\n let left = 0 - labelPadding.left;\n switch (textBaseline) {\n case 'middle':\n top -= height / 2;\n break;\n case 'bottom':\n top -= height;\n break;\n }\n switch (textAlign) {\n case 'center':\n left -= width / 2;\n break;\n case 'right':\n left -= width;\n break;\n case 'inner':\n if (i === ilen - 1) {\n left -= width;\n } else if (i > 0) {\n left -= width / 2;\n }\n break;\n }\n backdrop = {\n left,\n top,\n width: width + labelPadding.width,\n height: height + labelPadding.height,\n color: optsAtIndex.backdropColor\n };\n }\n items.push({\n label,\n font,\n textOffset,\n options: {\n rotation,\n color,\n strokeColor,\n strokeWidth,\n textAlign: tickTextAlign,\n textBaseline,\n translation: [x, y],\n backdrop\n }\n });\n }\n return items;\n }\n _getXAxisLabelAlignment() {\n const {\n position,\n ticks\n } = this.options;\n const rotation = -toRadians(this.labelRotation);\n if (rotation) {\n return position === 'top' ? 'left' : 'right';\n }\n let align = 'center';\n if (ticks.align === 'start') {\n align = 'left';\n } else if (ticks.align === 'end') {\n align = 'right';\n } else if (ticks.align === 'inner') {\n align = 'inner';\n }\n return align;\n }\n _getYAxisLabelAlignment(tl) {\n const {\n position,\n ticks: {\n crossAlign,\n mirror,\n padding\n }\n } = this.options;\n const labelSizes = this._getLabelSizes();\n const tickAndPadding = tl + padding;\n const widest = labelSizes.widest.width;\n let textAlign;\n let x;\n if (position === 'left') {\n if (mirror) {\n x = this.right + padding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += widest / 2;\n } else {\n textAlign = 'right';\n x += widest;\n }\n } else {\n x = this.right - tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= widest / 2;\n } else {\n textAlign = 'left';\n x = this.left;\n }\n }\n } else if (position === 'right') {\n if (mirror) {\n x = this.left + padding;\n if (crossAlign === 'near') {\n textAlign = 'right';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x -= widest / 2;\n } else {\n textAlign = 'left';\n x -= widest;\n }\n } else {\n x = this.left + tickAndPadding;\n if (crossAlign === 'near') {\n textAlign = 'left';\n } else if (crossAlign === 'center') {\n textAlign = 'center';\n x += widest / 2;\n } else {\n textAlign = 'right';\n x = this.right;\n }\n }\n } else {\n textAlign = 'right';\n }\n return {\n textAlign,\n x\n };\n }\n _computeLabelArea() {\n if (this.options.ticks.mirror) {\n return;\n }\n const chart = this.chart;\n const position = this.options.position;\n if (position === 'left' || position === 'right') {\n return {\n top: 0,\n left: this.left,\n bottom: chart.height,\n right: this.right\n };\n }\n if (position === 'top' || position === 'bottom') {\n return {\n top: this.top,\n left: 0,\n bottom: this.bottom,\n right: chart.width\n };\n }\n }\n drawBackground() {\n const {\n ctx,\n options: {\n backgroundColor\n },\n left,\n top,\n width,\n height\n } = this;\n if (backgroundColor) {\n ctx.save();\n ctx.fillStyle = backgroundColor;\n ctx.fillRect(left, top, width, height);\n ctx.restore();\n }\n }\n getLineWidthForValue(value) {\n const grid = this.options.grid;\n if (!this._isVisible() || !grid.display) {\n return 0;\n }\n const ticks = this.ticks;\n const index = ticks.findIndex(t => t.value === value);\n if (index >= 0) {\n const opts = grid.setContext(this.getContext(index));\n return opts.lineWidth;\n }\n return 0;\n }\n drawGrid(chartArea) {\n const grid = this.options.grid;\n const ctx = this.ctx;\n const items = this._gridLineItems || (this._gridLineItems = this._computeGridLineItems(chartArea));\n let i, ilen;\n const drawLine = (p1, p2, style) => {\n if (!style.width || !style.color) {\n return;\n }\n ctx.save();\n ctx.lineWidth = style.width;\n ctx.strokeStyle = style.color;\n ctx.setLineDash(style.borderDash || []);\n ctx.lineDashOffset = style.borderDashOffset;\n ctx.beginPath();\n ctx.moveTo(p1.x, p1.y);\n ctx.lineTo(p2.x, p2.y);\n ctx.stroke();\n ctx.restore();\n };\n if (grid.display) {\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n const item = items[i];\n if (grid.drawOnChartArea) {\n drawLine({\n x: item.x1,\n y: item.y1\n }, {\n x: item.x2,\n y: item.y2\n }, item);\n }\n if (grid.drawTicks) {\n drawLine({\n x: item.tx1,\n y: item.ty1\n }, {\n x: item.tx2,\n y: item.ty2\n }, {\n color: item.tickColor,\n width: item.tickWidth,\n borderDash: item.tickBorderDash,\n borderDashOffset: item.tickBorderDashOffset\n });\n }\n }\n }\n }\n drawBorder() {\n const {\n chart,\n ctx,\n options: {\n border,\n grid\n }\n } = this;\n const borderOpts = border.setContext(this.getContext());\n const axisWidth = border.display ? borderOpts.width : 0;\n if (!axisWidth) {\n return;\n }\n const lastLineWidth = grid.setContext(this.getContext(0)).lineWidth;\n const borderValue = this._borderValue;\n let x1, x2, y1, y2;\n if (this.isHorizontal()) {\n x1 = _alignPixel(chart, this.left, axisWidth) - axisWidth / 2;\n x2 = _alignPixel(chart, this.right, lastLineWidth) + lastLineWidth / 2;\n y1 = y2 = borderValue;\n } else {\n y1 = _alignPixel(chart, this.top, axisWidth) - axisWidth / 2;\n y2 = _alignPixel(chart, this.bottom, lastLineWidth) + lastLineWidth / 2;\n x1 = x2 = borderValue;\n }\n ctx.save();\n ctx.lineWidth = borderOpts.width;\n ctx.strokeStyle = borderOpts.color;\n ctx.beginPath();\n ctx.moveTo(x1, y1);\n ctx.lineTo(x2, y2);\n ctx.stroke();\n ctx.restore();\n }\n drawLabels(chartArea) {\n const optionTicks = this.options.ticks;\n if (!optionTicks.display) {\n return;\n }\n const ctx = this.ctx;\n const area = this._computeLabelArea();\n if (area) {\n clipArea(ctx, area);\n }\n const items = this.getLabelItems(chartArea);\n for (const item of items) {\n const renderTextOptions = item.options;\n const tickFont = item.font;\n const label = item.label;\n const y = item.textOffset;\n renderText(ctx, label, 0, y, tickFont, renderTextOptions);\n }\n if (area) {\n unclipArea(ctx);\n }\n }\n drawTitle() {\n const {\n ctx,\n options: {\n position,\n title,\n reverse\n }\n } = this;\n if (!title.display) {\n return;\n }\n const font = toFont(title.font);\n const padding = toPadding(title.padding);\n const align = title.align;\n let offset = font.lineHeight / 2;\n if (position === 'bottom' || position === 'center' || isObject(position)) {\n offset += padding.bottom;\n if (isArray(title.text)) {\n offset += font.lineHeight * (title.text.length - 1);\n }\n } else {\n offset += padding.top;\n }\n const {\n titleX,\n titleY,\n maxWidth,\n rotation\n } = titleArgs(this, offset, position, align);\n renderText(ctx, title.text, 0, 0, font, {\n color: title.color,\n maxWidth,\n rotation,\n textAlign: titleAlign(align, position, reverse),\n textBaseline: 'middle',\n translation: [titleX, titleY]\n });\n }\n draw(chartArea) {\n if (!this._isVisible()) {\n return;\n }\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawBorder();\n this.drawTitle();\n this.drawLabels(chartArea);\n }\n _layers() {\n const opts = this.options;\n const tz = opts.ticks && opts.ticks.z || 0;\n const gz = valueOrDefault(opts.grid && opts.grid.z, -1);\n const bz = valueOrDefault(opts.border && opts.border.z, 0);\n if (!this._isVisible() || this.draw !== Scale.prototype.draw) {\n return [{\n z: tz,\n draw: chartArea => {\n this.draw(chartArea);\n }\n }];\n }\n return [{\n z: gz,\n draw: chartArea => {\n this.drawBackground();\n this.drawGrid(chartArea);\n this.drawTitle();\n }\n }, {\n z: bz,\n draw: () => {\n this.drawBorder();\n }\n }, {\n z: tz,\n draw: chartArea => {\n this.drawLabels(chartArea);\n }\n }];\n }\n getMatchingVisibleMetas(type) {\n const metas = this.chart.getSortedVisibleDatasetMetas();\n const axisID = this.axis + 'AxisID';\n const result = [];\n let i, ilen;\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n const meta = metas[i];\n if (meta[axisID] === this.id && (!type || meta.type === type)) {\n result.push(meta);\n }\n }\n return result;\n }\n _resolveTickFontOptions(index) {\n const opts = this.options.ticks.setContext(this.getContext(index));\n return toFont(opts.font);\n }\n _maxDigits() {\n const fontSize = this._resolveTickFontOptions(0).lineHeight;\n return (this.isHorizontal() ? this.width : this.height) / fontSize;\n }\n}\nclass TypedRegistry {\n constructor(type, scope, override) {\n this.type = type;\n this.scope = scope;\n this.override = override;\n this.items = Object.create(null);\n }\n isForType(type) {\n return Object.prototype.isPrototypeOf.call(this.type.prototype, type.prototype);\n }\n register(item) {\n const proto = Object.getPrototypeOf(item);\n let parentScope;\n if (isIChartComponent(proto)) {\n parentScope = this.register(proto);\n }\n const items = this.items;\n const id = item.id;\n const scope = this.scope + '.' + id;\n if (!id) {\n throw new Error('class does not have id: ' + item);\n }\n if (id in items) {\n return scope;\n }\n items[id] = item;\n registerDefaults(item, scope, parentScope);\n if (this.override) {\n defaults.override(item.id, item.overrides);\n }\n return scope;\n }\n get(id) {\n return this.items[id];\n }\n unregister(item) {\n const items = this.items;\n const id = item.id;\n const scope = this.scope;\n if (id in items) {\n delete items[id];\n }\n if (scope && id in defaults[scope]) {\n delete defaults[scope][id];\n if (this.override) {\n delete overrides[id];\n }\n }\n }\n}\nfunction registerDefaults(item, scope, parentScope) {\n const itemDefaults = merge(Object.create(null), [parentScope ? defaults.get(parentScope) : {}, defaults.get(scope), item.defaults]);\n defaults.set(scope, itemDefaults);\n if (item.defaultRoutes) {\n routeDefaults(scope, item.defaultRoutes);\n }\n if (item.descriptors) {\n defaults.describe(scope, item.descriptors);\n }\n}\nfunction routeDefaults(scope, routes) {\n Object.keys(routes).forEach(property => {\n const propertyParts = property.split('.');\n const sourceName = propertyParts.pop();\n const sourceScope = [scope].concat(propertyParts).join('.');\n const parts = routes[property].split('.');\n const targetName = parts.pop();\n const targetScope = parts.join('.');\n defaults.route(sourceScope, sourceName, targetScope, targetName);\n });\n}\nfunction isIChartComponent(proto) {\n return 'id' in proto && 'defaults' in proto;\n}\nclass Registry {\n constructor() {\n this.controllers = new TypedRegistry(DatasetController, 'datasets', true);\n this.elements = new TypedRegistry(Element, 'elements');\n this.plugins = new TypedRegistry(Object, 'plugins');\n this.scales = new TypedRegistry(Scale, 'scales');\n this._typedRegistries = [this.controllers, this.scales, this.elements];\n }\n add(...args) {\n this._each('register', args);\n }\n remove(...args) {\n this._each('unregister', args);\n }\n addControllers(...args) {\n this._each('register', args, this.controllers);\n }\n addElements(...args) {\n this._each('register', args, this.elements);\n }\n addPlugins(...args) {\n this._each('register', args, this.plugins);\n }\n addScales(...args) {\n this._each('register', args, this.scales);\n }\n getController(id) {\n return this._get(id, this.controllers, 'controller');\n }\n getElement(id) {\n return this._get(id, this.elements, 'element');\n }\n getPlugin(id) {\n return this._get(id, this.plugins, 'plugin');\n }\n getScale(id) {\n return this._get(id, this.scales, 'scale');\n }\n removeControllers(...args) {\n this._each('unregister', args, this.controllers);\n }\n removeElements(...args) {\n this._each('unregister', args, this.elements);\n }\n removePlugins(...args) {\n this._each('unregister', args, this.plugins);\n }\n removeScales(...args) {\n this._each('unregister', args, this.scales);\n }\n _each(method, args, typedRegistry) {\n [...args].forEach(arg => {\n const reg = typedRegistry || this._getRegistryForType(arg);\n if (typedRegistry || reg.isForType(arg) || reg === this.plugins && arg.id) {\n this._exec(method, reg, arg);\n } else {\n each(arg, item => {\n const itemReg = typedRegistry || this._getRegistryForType(item);\n this._exec(method, itemReg, item);\n });\n }\n });\n }\n _exec(method, registry, component) {\n const camelMethod = _capitalize(method);\n callback(component['before' + camelMethod], [], component);\n registry[method](component);\n callback(component['after' + camelMethod], [], component);\n }\n _getRegistryForType(type) {\n for (let i = 0; i < this._typedRegistries.length; i++) {\n const reg = this._typedRegistries[i];\n if (reg.isForType(type)) {\n return reg;\n }\n }\n return this.plugins;\n }\n _get(id, typedRegistry, type) {\n const item = typedRegistry.get(id);\n if (item === undefined) {\n throw new Error('\"' + id + '\" is not a registered ' + type + '.');\n }\n return item;\n }\n}\nvar registry = /* #__PURE__ */new Registry();\nclass PluginService {\n constructor() {\n this._init = [];\n }\n notify(chart, hook, args, filter) {\n if (hook === 'beforeInit') {\n this._init = this._createDescriptors(chart, true);\n this._notify(this._init, chart, 'install');\n }\n const descriptors = filter ? this._descriptors(chart).filter(filter) : this._descriptors(chart);\n const result = this._notify(descriptors, chart, hook, args);\n if (hook === 'afterDestroy') {\n this._notify(descriptors, chart, 'stop');\n this._notify(this._init, chart, 'uninstall');\n }\n return result;\n }\n _notify(descriptors, chart, hook, args) {\n args = args || {};\n for (const descriptor of descriptors) {\n const plugin = descriptor.plugin;\n const method = plugin[hook];\n const params = [chart, args, descriptor.options];\n if (callback(method, params, plugin) === false && args.cancelable) {\n return false;\n }\n }\n return true;\n }\n invalidate() {\n if (!isNullOrUndef(this._cache)) {\n this._oldCache = this._cache;\n this._cache = undefined;\n }\n }\n _descriptors(chart) {\n if (this._cache) {\n return this._cache;\n }\n const descriptors = this._cache = this._createDescriptors(chart);\n this._notifyStateChanges(chart);\n return descriptors;\n }\n _createDescriptors(chart, all) {\n const config = chart && chart.config;\n const options = valueOrDefault(config.options && config.options.plugins, {});\n const plugins = allPlugins(config);\n return options === false && !all ? [] : createDescriptors(chart, plugins, options, all);\n }\n _notifyStateChanges(chart) {\n const previousDescriptors = this._oldCache || [];\n const descriptors = this._cache;\n const diff = (a, b) => a.filter(x => !b.some(y => x.plugin.id === y.plugin.id));\n this._notify(diff(previousDescriptors, descriptors), chart, 'stop');\n this._notify(diff(descriptors, previousDescriptors), chart, 'start');\n }\n}\nfunction allPlugins(config) {\n const localIds = {};\n const plugins = [];\n const keys = Object.keys(registry.plugins.items);\n for (let i = 0; i < keys.length; i++) {\n plugins.push(registry.getPlugin(keys[i]));\n }\n const local = config.plugins || [];\n for (let i = 0; i < local.length; i++) {\n const plugin = local[i];\n if (plugins.indexOf(plugin) === -1) {\n plugins.push(plugin);\n localIds[plugin.id] = true;\n }\n }\n return {\n plugins,\n localIds\n };\n}\nfunction getOpts(options, all) {\n if (!all && options === false) {\n return null;\n }\n if (options === true) {\n return {};\n }\n return options;\n}\nfunction createDescriptors(chart, {\n plugins,\n localIds\n}, options, all) {\n const result = [];\n const context = chart.getContext();\n for (const plugin of plugins) {\n const id = plugin.id;\n const opts = getOpts(options[id], all);\n if (opts === null) {\n continue;\n }\n result.push({\n plugin,\n options: pluginOpts(chart.config, {\n plugin,\n local: localIds[id]\n }, opts, context)\n });\n }\n return result;\n}\nfunction pluginOpts(config, {\n plugin,\n local\n}, opts, context) {\n const keys = config.pluginScopeKeys(plugin);\n const scopes = config.getOptionScopes(opts, keys);\n if (local && plugin.defaults) {\n scopes.push(plugin.defaults);\n }\n return config.createResolver(scopes, context, [''], {\n scriptable: false,\n indexable: false,\n allKeys: true\n });\n}\nfunction getIndexAxis(type, options) {\n const datasetDefaults = defaults.datasets[type] || {};\n const datasetOptions = (options.datasets || {})[type] || {};\n return datasetOptions.indexAxis || options.indexAxis || datasetDefaults.indexAxis || 'x';\n}\nfunction getAxisFromDefaultScaleID(id, indexAxis) {\n let axis = id;\n if (id === '_index_') {\n axis = indexAxis;\n } else if (id === '_value_') {\n axis = indexAxis === 'x' ? 'y' : 'x';\n }\n return axis;\n}\nfunction getDefaultScaleIDFromAxis(axis, indexAxis) {\n return axis === indexAxis ? '_index_' : '_value_';\n}\nfunction idMatchesAxis(id) {\n if (id === 'x' || id === 'y' || id === 'r') {\n return id;\n }\n}\nfunction axisFromPosition(position) {\n if (position === 'top' || position === 'bottom') {\n return 'x';\n }\n if (position === 'left' || position === 'right') {\n return 'y';\n }\n}\nfunction determineAxis(id, ...scaleOptions) {\n if (idMatchesAxis(id)) {\n return id;\n }\n for (const opts of scaleOptions) {\n const axis = opts.axis || axisFromPosition(opts.position) || id.length > 1 && idMatchesAxis(id[0].toLowerCase());\n if (axis) {\n return axis;\n }\n }\n throw new Error(`Cannot determine type of '${id}' axis. Please provide 'axis' or 'position' option.`);\n}\nfunction getAxisFromDataset(id, axis, dataset) {\n if (dataset[axis + 'AxisID'] === id) {\n return {\n axis\n };\n }\n}\nfunction retrieveAxisFromDatasets(id, config) {\n if (config.data && config.data.datasets) {\n const boundDs = config.data.datasets.filter(d => d.xAxisID === id || d.yAxisID === id);\n if (boundDs.length) {\n return getAxisFromDataset(id, 'x', boundDs[0]) || getAxisFromDataset(id, 'y', boundDs[0]);\n }\n }\n return {};\n}\nfunction mergeScaleConfig(config, options) {\n const chartDefaults = overrides[config.type] || {\n scales: {}\n };\n const configScales = options.scales || {};\n const chartIndexAxis = getIndexAxis(config.type, options);\n const scales = Object.create(null);\n Object.keys(configScales).forEach(id => {\n const scaleConf = configScales[id];\n if (!isObject(scaleConf)) {\n return console.error(`Invalid scale configuration for scale: ${id}`);\n }\n if (scaleConf._proxy) {\n return console.warn(`Ignoring resolver passed as options for scale: ${id}`);\n }\n const axis = determineAxis(id, scaleConf, retrieveAxisFromDatasets(id, config), defaults.scales[scaleConf.type]);\n const defaultId = getDefaultScaleIDFromAxis(axis, chartIndexAxis);\n const defaultScaleOptions = chartDefaults.scales || {};\n scales[id] = mergeIf(Object.create(null), [{\n axis\n }, scaleConf, defaultScaleOptions[axis], defaultScaleOptions[defaultId]]);\n });\n config.data.datasets.forEach(dataset => {\n const type = dataset.type || config.type;\n const indexAxis = dataset.indexAxis || getIndexAxis(type, options);\n const datasetDefaults = overrides[type] || {};\n const defaultScaleOptions = datasetDefaults.scales || {};\n Object.keys(defaultScaleOptions).forEach(defaultID => {\n const axis = getAxisFromDefaultScaleID(defaultID, indexAxis);\n const id = dataset[axis + 'AxisID'] || axis;\n scales[id] = scales[id] || Object.create(null);\n mergeIf(scales[id], [{\n axis\n }, configScales[id], defaultScaleOptions[defaultID]]);\n });\n });\n Object.keys(scales).forEach(key => {\n const scale = scales[key];\n mergeIf(scale, [defaults.scales[scale.type], defaults.scale]);\n });\n return scales;\n}\nfunction initOptions(config) {\n const options = config.options || (config.options = {});\n options.plugins = valueOrDefault(options.plugins, {});\n options.scales = mergeScaleConfig(config, options);\n}\nfunction initData(data) {\n data = data || {};\n data.datasets = data.datasets || [];\n data.labels = data.labels || [];\n return data;\n}\nfunction initConfig(config) {\n config = config || {};\n config.data = initData(config.data);\n initOptions(config);\n return config;\n}\nconst keyCache = new Map();\nconst keysCached = new Set();\nfunction cachedKeys(cacheKey, generate) {\n let keys = keyCache.get(cacheKey);\n if (!keys) {\n keys = generate();\n keyCache.set(cacheKey, keys);\n keysCached.add(keys);\n }\n return keys;\n}\nconst addIfFound = (set, obj, key) => {\n const opts = resolveObjectKey(obj, key);\n if (opts !== undefined) {\n set.add(opts);\n }\n};\nclass Config {\n constructor(config) {\n this._config = initConfig(config);\n this._scopeCache = new Map();\n this._resolverCache = new Map();\n }\n get platform() {\n return this._config.platform;\n }\n get type() {\n return this._config.type;\n }\n set type(type) {\n this._config.type = type;\n }\n get data() {\n return this._config.data;\n }\n set data(data) {\n this._config.data = initData(data);\n }\n get options() {\n return this._config.options;\n }\n set options(options) {\n this._config.options = options;\n }\n get plugins() {\n return this._config.plugins;\n }\n update() {\n const config = this._config;\n this.clearCache();\n initOptions(config);\n }\n clearCache() {\n this._scopeCache.clear();\n this._resolverCache.clear();\n }\n datasetScopeKeys(datasetType) {\n return cachedKeys(datasetType, () => [[`datasets.${datasetType}`, '']]);\n }\n datasetAnimationScopeKeys(datasetType, transition) {\n return cachedKeys(`${datasetType}.transition.${transition}`, () => [[`datasets.${datasetType}.transitions.${transition}`, `transitions.${transition}`], [`datasets.${datasetType}`, '']]);\n }\n datasetElementScopeKeys(datasetType, elementType) {\n return cachedKeys(`${datasetType}-${elementType}`, () => [[`datasets.${datasetType}.elements.${elementType}`, `datasets.${datasetType}`, `elements.${elementType}`, '']]);\n }\n pluginScopeKeys(plugin) {\n const id = plugin.id;\n const type = this.type;\n return cachedKeys(`${type}-plugin-${id}`, () => [[`plugins.${id}`, ...(plugin.additionalOptionScopes || [])]]);\n }\n _cachedScopes(mainScope, resetCache) {\n const _scopeCache = this._scopeCache;\n let cache = _scopeCache.get(mainScope);\n if (!cache || resetCache) {\n cache = new Map();\n _scopeCache.set(mainScope, cache);\n }\n return cache;\n }\n getOptionScopes(mainScope, keyLists, resetCache) {\n const {\n options,\n type\n } = this;\n const cache = this._cachedScopes(mainScope, resetCache);\n const cached = cache.get(keyLists);\n if (cached) {\n return cached;\n }\n const scopes = new Set();\n keyLists.forEach(keys => {\n if (mainScope) {\n scopes.add(mainScope);\n keys.forEach(key => addIfFound(scopes, mainScope, key));\n }\n keys.forEach(key => addIfFound(scopes, options, key));\n keys.forEach(key => addIfFound(scopes, overrides[type] || {}, key));\n keys.forEach(key => addIfFound(scopes, defaults, key));\n keys.forEach(key => addIfFound(scopes, descriptors, key));\n });\n const array = Array.from(scopes);\n if (array.length === 0) {\n array.push(Object.create(null));\n }\n if (keysCached.has(keyLists)) {\n cache.set(keyLists, array);\n }\n return array;\n }\n chartOptionScopes() {\n const {\n options,\n type\n } = this;\n return [options, overrides[type] || {}, defaults.datasets[type] || {}, {\n type\n }, defaults, descriptors];\n }\n resolveNamedOptions(scopes, names, context, prefixes = ['']) {\n const result = {\n $shared: true\n };\n const {\n resolver,\n subPrefixes\n } = getResolver(this._resolverCache, scopes, prefixes);\n let options = resolver;\n if (needContext(resolver, names)) {\n result.$shared = false;\n context = isFunction(context) ? context() : context;\n const subResolver = this.createResolver(scopes, context, subPrefixes);\n options = _attachContext(resolver, context, subResolver);\n }\n for (const prop of names) {\n result[prop] = options[prop];\n }\n return result;\n }\n createResolver(scopes, context, prefixes = [''], descriptorDefaults) {\n const {\n resolver\n } = getResolver(this._resolverCache, scopes, prefixes);\n return isObject(context) ? _attachContext(resolver, context, undefined, descriptorDefaults) : resolver;\n }\n}\nfunction getResolver(resolverCache, scopes, prefixes) {\n let cache = resolverCache.get(scopes);\n if (!cache) {\n cache = new Map();\n resolverCache.set(scopes, cache);\n }\n const cacheKey = prefixes.join();\n let cached = cache.get(cacheKey);\n if (!cached) {\n const resolver = _createResolver(scopes, prefixes);\n cached = {\n resolver,\n subPrefixes: prefixes.filter(p => !p.toLowerCase().includes('hover'))\n };\n cache.set(cacheKey, cached);\n }\n return cached;\n}\nconst hasFunction = value => isObject(value) && Object.getOwnPropertyNames(value).some(key => isFunction(value[key]));\nfunction needContext(proxy, names) {\n const {\n isScriptable,\n isIndexable\n } = _descriptors(proxy);\n for (const prop of names) {\n const scriptable = isScriptable(prop);\n const indexable = isIndexable(prop);\n const value = (indexable || scriptable) && proxy[prop];\n if (scriptable && (isFunction(value) || hasFunction(value)) || indexable && isArray(value)) {\n return true;\n }\n }\n return false;\n}\nvar version = \"4.4.2\";\nconst KNOWN_POSITIONS = ['top', 'bottom', 'left', 'right', 'chartArea'];\nfunction positionIsHorizontal(position, axis) {\n return position === 'top' || position === 'bottom' || KNOWN_POSITIONS.indexOf(position) === -1 && axis === 'x';\n}\nfunction compare2Level(l1, l2) {\n return function (a, b) {\n return a[l1] === b[l1] ? a[l2] - b[l2] : a[l1] - b[l1];\n };\n}\nfunction onAnimationsComplete(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n chart.notifyPlugins('afterRender');\n callback(animationOptions && animationOptions.onComplete, [context], chart);\n}\nfunction onAnimationProgress(context) {\n const chart = context.chart;\n const animationOptions = chart.options.animation;\n callback(animationOptions && animationOptions.onProgress, [context], chart);\n}\nfunction getCanvas(item) {\n if (_isDomSupported() && typeof item === 'string') {\n item = document.getElementById(item);\n } else if (item && item.length) {\n item = item[0];\n }\n if (item && item.canvas) {\n item = item.canvas;\n }\n return item;\n}\nconst instances = {};\nconst getChart = key => {\n const canvas = getCanvas(key);\n return Object.values(instances).filter(c => c.canvas === canvas).pop();\n};\nfunction moveNumericKeys(obj, start, move) {\n const keys = Object.keys(obj);\n for (const key of keys) {\n const intKey = +key;\n if (intKey >= start) {\n const value = obj[key];\n delete obj[key];\n if (move > 0 || intKey > start) {\n obj[intKey + move] = value;\n }\n }\n }\n}\nfunction determineLastEvent(e, lastEvent, inChartArea, isClick) {\n if (!inChartArea || e.type === 'mouseout') {\n return null;\n }\n if (isClick) {\n return lastEvent;\n }\n return e;\n}\nfunction getSizeForArea(scale, chartArea, field) {\n return scale.options.clip ? scale[field] : chartArea[field];\n}\nfunction getDatasetArea(meta, chartArea) {\n const {\n xScale,\n yScale\n } = meta;\n if (xScale && yScale) {\n return {\n left: getSizeForArea(xScale, chartArea, 'left'),\n right: getSizeForArea(xScale, chartArea, 'right'),\n top: getSizeForArea(yScale, chartArea, 'top'),\n bottom: getSizeForArea(yScale, chartArea, 'bottom')\n };\n }\n return chartArea;\n}\nlet Chart = /*#__PURE__*/(() => {\n class Chart {\n static defaults = defaults;\n static instances = instances;\n static overrides = overrides;\n static registry = registry;\n static version = version;\n static getChart = getChart;\n static register(...items) {\n registry.add(...items);\n invalidatePlugins();\n }\n static unregister(...items) {\n registry.remove(...items);\n invalidatePlugins();\n }\n constructor(item, userConfig) {\n const config = this.config = new Config(userConfig);\n const initialCanvas = getCanvas(item);\n const existingChart = getChart(initialCanvas);\n if (existingChart) {\n throw new Error('Canvas is already in use. Chart with ID \\'' + existingChart.id + '\\'' + ' must be destroyed before the canvas with ID \\'' + existingChart.canvas.id + '\\' can be reused.');\n }\n const options = config.createResolver(config.chartOptionScopes(), this.getContext());\n this.platform = new (config.platform || _detectPlatform(initialCanvas))();\n this.platform.updateConfig(config);\n const context = this.platform.acquireContext(initialCanvas, options.aspectRatio);\n const canvas = context && context.canvas;\n const height = canvas && canvas.height;\n const width = canvas && canvas.width;\n this.id = uid();\n this.ctx = context;\n this.canvas = canvas;\n this.width = width;\n this.height = height;\n this._options = options;\n this._aspectRatio = this.aspectRatio;\n this._layers = [];\n this._metasets = [];\n this._stacks = undefined;\n this.boxes = [];\n this.currentDevicePixelRatio = undefined;\n this.chartArea = undefined;\n this._active = [];\n this._lastEvent = undefined;\n this._listeners = {};\n this._responsiveListeners = undefined;\n this._sortedMetasets = [];\n this.scales = {};\n this._plugins = new PluginService();\n this.$proxies = {};\n this._hiddenIndices = {};\n this.attached = false;\n this._animationsDisabled = undefined;\n this.$context = undefined;\n this._doResize = debounce(mode => this.update(mode), options.resizeDelay || 0);\n this._dataChanges = [];\n instances[this.id] = this;\n if (!context || !canvas) {\n console.error(\"Failed to create chart: can't acquire context from the given item\");\n return;\n }\n animator.listen(this, 'complete', onAnimationsComplete);\n animator.listen(this, 'progress', onAnimationProgress);\n this._initialize();\n if (this.attached) {\n this.update();\n }\n }\n get aspectRatio() {\n const {\n options: {\n aspectRatio,\n maintainAspectRatio\n },\n width,\n height,\n _aspectRatio\n } = this;\n if (!isNullOrUndef(aspectRatio)) {\n return aspectRatio;\n }\n if (maintainAspectRatio && _aspectRatio) {\n return _aspectRatio;\n }\n return height ? width / height : null;\n }\n get data() {\n return this.config.data;\n }\n set data(data) {\n this.config.data = data;\n }\n get options() {\n return this._options;\n }\n set options(options) {\n this.config.options = options;\n }\n get registry() {\n return registry;\n }\n _initialize() {\n this.notifyPlugins('beforeInit');\n if (this.options.responsive) {\n this.resize();\n } else {\n retinaScale(this, this.options.devicePixelRatio);\n }\n this.bindEvents();\n this.notifyPlugins('afterInit');\n return this;\n }\n clear() {\n clearCanvas(this.canvas, this.ctx);\n return this;\n }\n stop() {\n animator.stop(this);\n return this;\n }\n resize(width, height) {\n if (!animator.running(this)) {\n this._resize(width, height);\n } else {\n this._resizeBeforeDraw = {\n width,\n height\n };\n }\n }\n _resize(width, height) {\n const options = this.options;\n const canvas = this.canvas;\n const aspectRatio = options.maintainAspectRatio && this.aspectRatio;\n const newSize = this.platform.getMaximumSize(canvas, width, height, aspectRatio);\n const newRatio = options.devicePixelRatio || this.platform.getDevicePixelRatio();\n const mode = this.width ? 'resize' : 'attach';\n this.width = newSize.width;\n this.height = newSize.height;\n this._aspectRatio = this.aspectRatio;\n if (!retinaScale(this, newRatio, true)) {\n return;\n }\n this.notifyPlugins('resize', {\n size: newSize\n });\n callback(options.onResize, [this, newSize], this);\n if (this.attached) {\n if (this._doResize(mode)) {\n this.render();\n }\n }\n }\n ensureScalesHaveIDs() {\n const options = this.options;\n const scalesOptions = options.scales || {};\n each(scalesOptions, (axisOptions, axisID) => {\n axisOptions.id = axisID;\n });\n }\n buildOrUpdateScales() {\n const options = this.options;\n const scaleOpts = options.scales;\n const scales = this.scales;\n const updated = Object.keys(scales).reduce((obj, id) => {\n obj[id] = false;\n return obj;\n }, {});\n let items = [];\n if (scaleOpts) {\n items = items.concat(Object.keys(scaleOpts).map(id => {\n const scaleOptions = scaleOpts[id];\n const axis = determineAxis(id, scaleOptions);\n const isRadial = axis === 'r';\n const isHorizontal = axis === 'x';\n return {\n options: scaleOptions,\n dposition: isRadial ? 'chartArea' : isHorizontal ? 'bottom' : 'left',\n dtype: isRadial ? 'radialLinear' : isHorizontal ? 'category' : 'linear'\n };\n }));\n }\n each(items, item => {\n const scaleOptions = item.options;\n const id = scaleOptions.id;\n const axis = determineAxis(id, scaleOptions);\n const scaleType = valueOrDefault(scaleOptions.type, item.dtype);\n if (scaleOptions.position === undefined || positionIsHorizontal(scaleOptions.position, axis) !== positionIsHorizontal(item.dposition)) {\n scaleOptions.position = item.dposition;\n }\n updated[id] = true;\n let scale = null;\n if (id in scales && scales[id].type === scaleType) {\n scale = scales[id];\n } else {\n const scaleClass = registry.getScale(scaleType);\n scale = new scaleClass({\n id,\n type: scaleType,\n ctx: this.ctx,\n chart: this\n });\n scales[scale.id] = scale;\n }\n scale.init(scaleOptions, options);\n });\n each(updated, (hasUpdated, id) => {\n if (!hasUpdated) {\n delete scales[id];\n }\n });\n each(scales, scale => {\n layouts.configure(this, scale, scale.options);\n layouts.addBox(this, scale);\n });\n }\n _updateMetasets() {\n const metasets = this._metasets;\n const numData = this.data.datasets.length;\n const numMeta = metasets.length;\n metasets.sort((a, b) => a.index - b.index);\n if (numMeta > numData) {\n for (let i = numData; i < numMeta; ++i) {\n this._destroyDatasetMeta(i);\n }\n metasets.splice(numData, numMeta - numData);\n }\n this._sortedMetasets = metasets.slice(0).sort(compare2Level('order', 'index'));\n }\n _removeUnreferencedMetasets() {\n const {\n _metasets: metasets,\n data: {\n datasets\n }\n } = this;\n if (metasets.length > datasets.length) {\n delete this._stacks;\n }\n metasets.forEach((meta, index) => {\n if (datasets.filter(x => x === meta._dataset).length === 0) {\n this._destroyDatasetMeta(index);\n }\n });\n }\n buildOrUpdateControllers() {\n const newControllers = [];\n const datasets = this.data.datasets;\n let i, ilen;\n this._removeUnreferencedMetasets();\n for (i = 0, ilen = datasets.length; i < ilen; i++) {\n const dataset = datasets[i];\n let meta = this.getDatasetMeta(i);\n const type = dataset.type || this.config.type;\n if (meta.type && meta.type !== type) {\n this._destroyDatasetMeta(i);\n meta = this.getDatasetMeta(i);\n }\n meta.type = type;\n meta.indexAxis = dataset.indexAxis || getIndexAxis(type, this.options);\n meta.order = dataset.order || 0;\n meta.index = i;\n meta.label = '' + dataset.label;\n meta.visible = this.isDatasetVisible(i);\n if (meta.controller) {\n meta.controller.updateIndex(i);\n meta.controller.linkScales();\n } else {\n const ControllerClass = registry.getController(type);\n const {\n datasetElementType,\n dataElementType\n } = defaults.datasets[type];\n Object.assign(ControllerClass, {\n dataElementType: registry.getElement(dataElementType),\n datasetElementType: datasetElementType && registry.getElement(datasetElementType)\n });\n meta.controller = new ControllerClass(this, i);\n newControllers.push(meta.controller);\n }\n }\n this._updateMetasets();\n return newControllers;\n }\n _resetElements() {\n each(this.data.datasets, (dataset, datasetIndex) => {\n this.getDatasetMeta(datasetIndex).controller.reset();\n }, this);\n }\n reset() {\n this._resetElements();\n this.notifyPlugins('reset');\n }\n update(mode) {\n const config = this.config;\n config.update();\n const options = this._options = config.createResolver(config.chartOptionScopes(), this.getContext());\n const animsDisabled = this._animationsDisabled = !options.animation;\n this._updateScales();\n this._checkEventBindings();\n this._updateHiddenIndices();\n this._plugins.invalidate();\n if (this.notifyPlugins('beforeUpdate', {\n mode,\n cancelable: true\n }) === false) {\n return;\n }\n const newControllers = this.buildOrUpdateControllers();\n this.notifyPlugins('beforeElementsUpdate');\n let minPadding = 0;\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; i++) {\n const {\n controller\n } = this.getDatasetMeta(i);\n const reset = !animsDisabled && newControllers.indexOf(controller) === -1;\n controller.buildOrUpdateElements(reset);\n minPadding = Math.max(+controller.getMaxOverflow(), minPadding);\n }\n minPadding = this._minPadding = options.layout.autoPadding ? minPadding : 0;\n this._updateLayout(minPadding);\n if (!animsDisabled) {\n each(newControllers, controller => {\n controller.reset();\n });\n }\n this._updateDatasets(mode);\n this.notifyPlugins('afterUpdate', {\n mode\n });\n this._layers.sort(compare2Level('z', '_idx'));\n const {\n _active,\n _lastEvent\n } = this;\n if (_lastEvent) {\n this._eventHandler(_lastEvent, true);\n } else if (_active.length) {\n this._updateHoverStyles(_active, _active, true);\n }\n this.render();\n }\n _updateScales() {\n each(this.scales, scale => {\n layouts.removeBox(this, scale);\n });\n this.ensureScalesHaveIDs();\n this.buildOrUpdateScales();\n }\n _checkEventBindings() {\n const options = this.options;\n const existingEvents = new Set(Object.keys(this._listeners));\n const newEvents = new Set(options.events);\n if (!setsEqual(existingEvents, newEvents) || !!this._responsiveListeners !== options.responsive) {\n this.unbindEvents();\n this.bindEvents();\n }\n }\n _updateHiddenIndices() {\n const {\n _hiddenIndices\n } = this;\n const changes = this._getUniformDataChanges() || [];\n for (const {\n method,\n start,\n count\n } of changes) {\n const move = method === '_removeElements' ? -count : count;\n moveNumericKeys(_hiddenIndices, start, move);\n }\n }\n _getUniformDataChanges() {\n const _dataChanges = this._dataChanges;\n if (!_dataChanges || !_dataChanges.length) {\n return;\n }\n this._dataChanges = [];\n const datasetCount = this.data.datasets.length;\n const makeSet = idx => new Set(_dataChanges.filter(c => c[0] === idx).map((c, i) => i + ',' + c.splice(1).join(',')));\n const changeSet = makeSet(0);\n for (let i = 1; i < datasetCount; i++) {\n if (!setsEqual(changeSet, makeSet(i))) {\n return;\n }\n }\n return Array.from(changeSet).map(c => c.split(',')).map(a => ({\n method: a[1],\n start: +a[2],\n count: +a[3]\n }));\n }\n _updateLayout(minPadding) {\n if (this.notifyPlugins('beforeLayout', {\n cancelable: true\n }) === false) {\n return;\n }\n layouts.update(this, this.width, this.height, minPadding);\n const area = this.chartArea;\n const noArea = area.width <= 0 || area.height <= 0;\n this._layers = [];\n each(this.boxes, box => {\n if (noArea && box.position === 'chartArea') {\n return;\n }\n if (box.configure) {\n box.configure();\n }\n this._layers.push(...box._layers());\n }, this);\n this._layers.forEach((item, index) => {\n item._idx = index;\n });\n this.notifyPlugins('afterLayout');\n }\n _updateDatasets(mode) {\n if (this.notifyPlugins('beforeDatasetsUpdate', {\n mode,\n cancelable: true\n }) === false) {\n return;\n }\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this.getDatasetMeta(i).controller.configure();\n }\n for (let i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._updateDataset(i, isFunction(mode) ? mode({\n datasetIndex: i\n }) : mode);\n }\n this.notifyPlugins('afterDatasetsUpdate', {\n mode\n });\n }\n _updateDataset(index, mode) {\n const meta = this.getDatasetMeta(index);\n const args = {\n meta,\n index,\n mode,\n cancelable: true\n };\n if (this.notifyPlugins('beforeDatasetUpdate', args) === false) {\n return;\n }\n meta.controller._update(mode);\n args.cancelable = false;\n this.notifyPlugins('afterDatasetUpdate', args);\n }\n render() {\n if (this.notifyPlugins('beforeRender', {\n cancelable: true\n }) === false) {\n return;\n }\n if (animator.has(this)) {\n if (this.attached && !animator.running(this)) {\n animator.start(this);\n }\n } else {\n this.draw();\n onAnimationsComplete({\n chart: this\n });\n }\n }\n draw() {\n let i;\n if (this._resizeBeforeDraw) {\n const {\n width,\n height\n } = this._resizeBeforeDraw;\n this._resize(width, height);\n this._resizeBeforeDraw = null;\n }\n this.clear();\n if (this.width <= 0 || this.height <= 0) {\n return;\n }\n if (this.notifyPlugins('beforeDraw', {\n cancelable: true\n }) === false) {\n return;\n }\n const layers = this._layers;\n for (i = 0; i < layers.length && layers[i].z <= 0; ++i) {\n layers[i].draw(this.chartArea);\n }\n this._drawDatasets();\n for (; i < layers.length; ++i) {\n layers[i].draw(this.chartArea);\n }\n this.notifyPlugins('afterDraw');\n }\n _getSortedDatasetMetas(filterVisible) {\n const metasets = this._sortedMetasets;\n const result = [];\n let i, ilen;\n for (i = 0, ilen = metasets.length; i < ilen; ++i) {\n const meta = metasets[i];\n if (!filterVisible || meta.visible) {\n result.push(meta);\n }\n }\n return result;\n }\n getSortedVisibleDatasetMetas() {\n return this._getSortedDatasetMetas(true);\n }\n _drawDatasets() {\n if (this.notifyPlugins('beforeDatasetsDraw', {\n cancelable: true\n }) === false) {\n return;\n }\n const metasets = this.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n this._drawDataset(metasets[i]);\n }\n this.notifyPlugins('afterDatasetsDraw');\n }\n _drawDataset(meta) {\n const ctx = this.ctx;\n const clip = meta._clip;\n const useClip = !clip.disabled;\n const area = getDatasetArea(meta, this.chartArea);\n const args = {\n meta,\n index: meta.index,\n cancelable: true\n };\n if (this.notifyPlugins('beforeDatasetDraw', args) === false) {\n return;\n }\n if (useClip) {\n clipArea(ctx, {\n left: clip.left === false ? 0 : area.left - clip.left,\n right: clip.right === false ? this.width : area.right + clip.right,\n top: clip.top === false ? 0 : area.top - clip.top,\n bottom: clip.bottom === false ? this.height : area.bottom + clip.bottom\n });\n }\n meta.controller.draw();\n if (useClip) {\n unclipArea(ctx);\n }\n args.cancelable = false;\n this.notifyPlugins('afterDatasetDraw', args);\n }\n isPointInArea(point) {\n return _isPointInArea(point, this.chartArea, this._minPadding);\n }\n getElementsAtEventForMode(e, mode, options, useFinalPosition) {\n const method = Interaction.modes[mode];\n if (typeof method === 'function') {\n return method(this, e, options, useFinalPosition);\n }\n return [];\n }\n getDatasetMeta(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n const metasets = this._metasets;\n let meta = metasets.filter(x => x && x._dataset === dataset).pop();\n if (!meta) {\n meta = {\n type: null,\n data: [],\n dataset: null,\n controller: null,\n hidden: null,\n xAxisID: null,\n yAxisID: null,\n order: dataset && dataset.order || 0,\n index: datasetIndex,\n _dataset: dataset,\n _parsed: [],\n _sorted: false\n };\n metasets.push(meta);\n }\n return meta;\n }\n getContext() {\n return this.$context || (this.$context = createContext(null, {\n chart: this,\n type: 'chart'\n }));\n }\n getVisibleDatasetCount() {\n return this.getSortedVisibleDatasetMetas().length;\n }\n isDatasetVisible(datasetIndex) {\n const dataset = this.data.datasets[datasetIndex];\n if (!dataset) {\n return false;\n }\n const meta = this.getDatasetMeta(datasetIndex);\n return typeof meta.hidden === 'boolean' ? !meta.hidden : !dataset.hidden;\n }\n setDatasetVisibility(datasetIndex, visible) {\n const meta = this.getDatasetMeta(datasetIndex);\n meta.hidden = !visible;\n }\n toggleDataVisibility(index) {\n this._hiddenIndices[index] = !this._hiddenIndices[index];\n }\n getDataVisibility(index) {\n return !this._hiddenIndices[index];\n }\n _updateVisibility(datasetIndex, dataIndex, visible) {\n const mode = visible ? 'show' : 'hide';\n const meta = this.getDatasetMeta(datasetIndex);\n const anims = meta.controller._resolveAnimations(undefined, mode);\n if (defined(dataIndex)) {\n meta.data[dataIndex].hidden = !visible;\n this.update();\n } else {\n this.setDatasetVisibility(datasetIndex, visible);\n anims.update(meta, {\n visible\n });\n this.update(ctx => ctx.datasetIndex === datasetIndex ? mode : undefined);\n }\n }\n hide(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, false);\n }\n show(datasetIndex, dataIndex) {\n this._updateVisibility(datasetIndex, dataIndex, true);\n }\n _destroyDatasetMeta(datasetIndex) {\n const meta = this._metasets[datasetIndex];\n if (meta && meta.controller) {\n meta.controller._destroy();\n }\n delete this._metasets[datasetIndex];\n }\n _stop() {\n let i, ilen;\n this.stop();\n animator.remove(this);\n for (i = 0, ilen = this.data.datasets.length; i < ilen; ++i) {\n this._destroyDatasetMeta(i);\n }\n }\n destroy() {\n this.notifyPlugins('beforeDestroy');\n const {\n canvas,\n ctx\n } = this;\n this._stop();\n this.config.clearCache();\n if (canvas) {\n this.unbindEvents();\n clearCanvas(canvas, ctx);\n this.platform.releaseContext(ctx);\n this.canvas = null;\n this.ctx = null;\n }\n delete instances[this.id];\n this.notifyPlugins('afterDestroy');\n }\n toBase64Image(...args) {\n return this.canvas.toDataURL(...args);\n }\n bindEvents() {\n this.bindUserEvents();\n if (this.options.responsive) {\n this.bindResponsiveEvents();\n } else {\n this.attached = true;\n }\n }\n bindUserEvents() {\n const listeners = this._listeners;\n const platform = this.platform;\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const listener = (e, x, y) => {\n e.offsetX = x;\n e.offsetY = y;\n this._eventHandler(e);\n };\n each(this.options.events, type => _add(type, listener));\n }\n bindResponsiveEvents() {\n if (!this._responsiveListeners) {\n this._responsiveListeners = {};\n }\n const listeners = this._responsiveListeners;\n const platform = this.platform;\n const _add = (type, listener) => {\n platform.addEventListener(this, type, listener);\n listeners[type] = listener;\n };\n const _remove = (type, listener) => {\n if (listeners[type]) {\n platform.removeEventListener(this, type, listener);\n delete listeners[type];\n }\n };\n const listener = (width, height) => {\n if (this.canvas) {\n this.resize(width, height);\n }\n };\n let detached;\n const attached = () => {\n _remove('attach', attached);\n this.attached = true;\n this.resize();\n _add('resize', listener);\n _add('detach', detached);\n };\n detached = () => {\n this.attached = false;\n _remove('resize', listener);\n this._stop();\n this._resize(0, 0);\n _add('attach', attached);\n };\n if (platform.isAttached(this.canvas)) {\n attached();\n } else {\n detached();\n }\n }\n unbindEvents() {\n each(this._listeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._listeners = {};\n each(this._responsiveListeners, (listener, type) => {\n this.platform.removeEventListener(this, type, listener);\n });\n this._responsiveListeners = undefined;\n }\n updateHoverStyle(items, mode, enabled) {\n const prefix = enabled ? 'set' : 'remove';\n let meta, item, i, ilen;\n if (mode === 'dataset') {\n meta = this.getDatasetMeta(items[0].datasetIndex);\n meta.controller['_' + prefix + 'DatasetHoverStyle']();\n }\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n item = items[i];\n const controller = item && this.getDatasetMeta(item.datasetIndex).controller;\n if (controller) {\n controller[prefix + 'HoverStyle'](item.element, item.datasetIndex, item.index);\n }\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements) {\n const lastActive = this._active || [];\n const active = activeElements.map(({\n datasetIndex,\n index\n }) => {\n const meta = this.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('No dataset found at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index\n };\n });\n const changed = !_elementsEqual(active, lastActive);\n if (changed) {\n this._active = active;\n this._lastEvent = null;\n this._updateHoverStyles(active, lastActive);\n }\n }\n notifyPlugins(hook, args, filter) {\n return this._plugins.notify(this, hook, args, filter);\n }\n isPluginEnabled(pluginId) {\n return this._plugins._cache.filter(p => p.plugin.id === pluginId).length === 1;\n }\n _updateHoverStyles(active, lastActive, replay) {\n const hoverOptions = this.options.hover;\n const diff = (a, b) => a.filter(x => !b.some(y => x.datasetIndex === y.datasetIndex && x.index === y.index));\n const deactivated = diff(lastActive, active);\n const activated = replay ? active : diff(active, lastActive);\n if (deactivated.length) {\n this.updateHoverStyle(deactivated, hoverOptions.mode, false);\n }\n if (activated.length && hoverOptions.mode) {\n this.updateHoverStyle(activated, hoverOptions.mode, true);\n }\n }\n _eventHandler(e, replay) {\n const args = {\n event: e,\n replay,\n cancelable: true,\n inChartArea: this.isPointInArea(e)\n };\n const eventFilter = plugin => (plugin.options.events || this.options.events).includes(e.native.type);\n if (this.notifyPlugins('beforeEvent', args, eventFilter) === false) {\n return;\n }\n const changed = this._handleEvent(e, replay, args.inChartArea);\n args.cancelable = false;\n this.notifyPlugins('afterEvent', args, eventFilter);\n if (changed || args.changed) {\n this.render();\n }\n return this;\n }\n _handleEvent(e, replay, inChartArea) {\n const {\n _active: lastActive = [],\n options\n } = this;\n const useFinalPosition = replay;\n const active = this._getActiveElements(e, lastActive, inChartArea, useFinalPosition);\n const isClick = _isClickEvent(e);\n const lastEvent = determineLastEvent(e, this._lastEvent, inChartArea, isClick);\n if (inChartArea) {\n this._lastEvent = null;\n callback(options.onHover, [e, active, this], this);\n if (isClick) {\n callback(options.onClick, [e, active, this], this);\n }\n }\n const changed = !_elementsEqual(active, lastActive);\n if (changed || replay) {\n this._active = active;\n this._updateHoverStyles(active, lastActive, replay);\n }\n this._lastEvent = lastEvent;\n return changed;\n }\n _getActiveElements(e, lastActive, inChartArea, useFinalPosition) {\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive;\n }\n const hoverOptions = this.options.hover;\n return this.getElementsAtEventForMode(e, hoverOptions.mode, hoverOptions, useFinalPosition);\n }\n }\n return Chart;\n})();\nfunction invalidatePlugins() {\n return each(Chart.instances, chart => chart._plugins.invalidate());\n}\nfunction clipArc(ctx, element, endAngle) {\n const {\n startAngle,\n pixelMargin,\n x,\n y,\n outerRadius,\n innerRadius\n } = element;\n let angleMargin = pixelMargin / outerRadius;\n // Draw an inner border by clipping the arc and drawing a double-width border\n // Enlarge the clipping arc by 0.33 pixels to eliminate glitches between borders\n ctx.beginPath();\n ctx.arc(x, y, outerRadius, startAngle - angleMargin, endAngle + angleMargin);\n if (innerRadius > pixelMargin) {\n angleMargin = pixelMargin / innerRadius;\n ctx.arc(x, y, innerRadius, endAngle + angleMargin, startAngle - angleMargin, true);\n } else {\n ctx.arc(x, y, pixelMargin, endAngle + HALF_PI, startAngle - HALF_PI);\n }\n ctx.closePath();\n ctx.clip();\n}\nfunction toRadiusCorners(value) {\n return _readValueToProps(value, ['outerStart', 'outerEnd', 'innerStart', 'innerEnd']);\n}\n/**\n * Parse border radius from the provided options\n */\nfunction parseBorderRadius$1(arc, innerRadius, outerRadius, angleDelta) {\n const o = toRadiusCorners(arc.options.borderRadius);\n const halfThickness = (outerRadius - innerRadius) / 2;\n const innerLimit = Math.min(halfThickness, angleDelta * innerRadius / 2);\n // Outer limits are complicated. We want to compute the available angular distance at\n // a radius of outerRadius - borderRadius because for small angular distances, this term limits.\n // We compute at r = outerRadius - borderRadius because this circle defines the center of the border corners.\n //\n // If the borderRadius is large, that value can become negative.\n // This causes the outer borders to lose their radius entirely, which is rather unexpected. To solve that, if borderRadius > outerRadius\n // we know that the thickness term will dominate and compute the limits at that point\n const computeOuterLimit = val => {\n const outerArcLimit = (outerRadius - Math.min(halfThickness, val)) * angleDelta / 2;\n return _limitValue(val, 0, Math.min(halfThickness, outerArcLimit));\n };\n return {\n outerStart: computeOuterLimit(o.outerStart),\n outerEnd: computeOuterLimit(o.outerEnd),\n innerStart: _limitValue(o.innerStart, 0, innerLimit),\n innerEnd: _limitValue(o.innerEnd, 0, innerLimit)\n };\n}\n/**\n * Convert (r, 𝜃) to (x, y)\n */\nfunction rThetaToXY(r, theta, x, y) {\n return {\n x: x + r * Math.cos(theta),\n y: y + r * Math.sin(theta)\n };\n}\n/**\n * Path the arc, respecting border radius by separating into left and right halves.\n *\n * Start End\n *\n * 1--->a--->2 Outer\n * / \\\n * 8 3\n * | |\n * | |\n * 7 4\n * \\ /\n * 6<---b<---5 Inner\n */\nfunction pathArc(ctx, element, offset, spacing, end, circular) {\n const {\n x,\n y,\n startAngle: start,\n pixelMargin,\n innerRadius: innerR\n } = element;\n const outerRadius = Math.max(element.outerRadius + spacing + offset - pixelMargin, 0);\n const innerRadius = innerR > 0 ? innerR + spacing + offset + pixelMargin : 0;\n let spacingOffset = 0;\n const alpha = end - start;\n if (spacing) {\n // When spacing is present, it is the same for all items\n // So we adjust the start and end angle of the arc such that\n // the distance is the same as it would be without the spacing\n const noSpacingInnerRadius = innerR > 0 ? innerR - spacing : 0;\n const noSpacingOuterRadius = outerRadius > 0 ? outerRadius - spacing : 0;\n const avNogSpacingRadius = (noSpacingInnerRadius + noSpacingOuterRadius) / 2;\n const adjustedAngle = avNogSpacingRadius !== 0 ? alpha * avNogSpacingRadius / (avNogSpacingRadius + spacing) : alpha;\n spacingOffset = (alpha - adjustedAngle) / 2;\n }\n const beta = Math.max(0.001, alpha * outerRadius - offset / PI) / outerRadius;\n const angleOffset = (alpha - beta) / 2;\n const startAngle = start + angleOffset + spacingOffset;\n const endAngle = end - angleOffset - spacingOffset;\n const {\n outerStart,\n outerEnd,\n innerStart,\n innerEnd\n } = parseBorderRadius$1(element, innerRadius, outerRadius, endAngle - startAngle);\n const outerStartAdjustedRadius = outerRadius - outerStart;\n const outerEndAdjustedRadius = outerRadius - outerEnd;\n const outerStartAdjustedAngle = startAngle + outerStart / outerStartAdjustedRadius;\n const outerEndAdjustedAngle = endAngle - outerEnd / outerEndAdjustedRadius;\n const innerStartAdjustedRadius = innerRadius + innerStart;\n const innerEndAdjustedRadius = innerRadius + innerEnd;\n const innerStartAdjustedAngle = startAngle + innerStart / innerStartAdjustedRadius;\n const innerEndAdjustedAngle = endAngle - innerEnd / innerEndAdjustedRadius;\n ctx.beginPath();\n if (circular) {\n // The first arc segments from point 1 to point a to point 2\n const outerMidAdjustedAngle = (outerStartAdjustedAngle + outerEndAdjustedAngle) / 2;\n ctx.arc(x, y, outerRadius, outerStartAdjustedAngle, outerMidAdjustedAngle);\n ctx.arc(x, y, outerRadius, outerMidAdjustedAngle, outerEndAdjustedAngle);\n // The corner segment from point 2 to point 3\n if (outerEnd > 0) {\n const pCenter = rThetaToXY(outerEndAdjustedRadius, outerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerEnd, outerEndAdjustedAngle, endAngle + HALF_PI);\n }\n // The line from point 3 to point 4\n const p4 = rThetaToXY(innerEndAdjustedRadius, endAngle, x, y);\n ctx.lineTo(p4.x, p4.y);\n // The corner segment from point 4 to point 5\n if (innerEnd > 0) {\n const pCenter = rThetaToXY(innerEndAdjustedRadius, innerEndAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerEnd, endAngle + HALF_PI, innerEndAdjustedAngle + Math.PI);\n }\n // The inner arc from point 5 to point b to point 6\n const innerMidAdjustedAngle = (endAngle - innerEnd / innerRadius + (startAngle + innerStart / innerRadius)) / 2;\n ctx.arc(x, y, innerRadius, endAngle - innerEnd / innerRadius, innerMidAdjustedAngle, true);\n ctx.arc(x, y, innerRadius, innerMidAdjustedAngle, startAngle + innerStart / innerRadius, true);\n // The corner segment from point 6 to point 7\n if (innerStart > 0) {\n const pCenter = rThetaToXY(innerStartAdjustedRadius, innerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, innerStart, innerStartAdjustedAngle + Math.PI, startAngle - HALF_PI);\n }\n // The line from point 7 to point 8\n const p8 = rThetaToXY(outerStartAdjustedRadius, startAngle, x, y);\n ctx.lineTo(p8.x, p8.y);\n // The corner segment from point 8 to point 1\n if (outerStart > 0) {\n const pCenter = rThetaToXY(outerStartAdjustedRadius, outerStartAdjustedAngle, x, y);\n ctx.arc(pCenter.x, pCenter.y, outerStart, startAngle - HALF_PI, outerStartAdjustedAngle);\n }\n } else {\n ctx.moveTo(x, y);\n const outerStartX = Math.cos(outerStartAdjustedAngle) * outerRadius + x;\n const outerStartY = Math.sin(outerStartAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerStartX, outerStartY);\n const outerEndX = Math.cos(outerEndAdjustedAngle) * outerRadius + x;\n const outerEndY = Math.sin(outerEndAdjustedAngle) * outerRadius + y;\n ctx.lineTo(outerEndX, outerEndY);\n }\n ctx.closePath();\n}\nfunction drawArc(ctx, element, offset, spacing, circular) {\n const {\n fullCircles,\n startAngle,\n circumference\n } = element;\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n for (let i = 0; i < fullCircles; ++i) {\n ctx.fill();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + (circumference % TAU || TAU);\n }\n }\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.fill();\n return endAngle;\n}\nfunction drawBorder(ctx, element, offset, spacing, circular) {\n const {\n fullCircles,\n startAngle,\n circumference,\n options\n } = element;\n const {\n borderWidth,\n borderJoinStyle,\n borderDash,\n borderDashOffset\n } = options;\n const inner = options.borderAlign === 'inner';\n if (!borderWidth) {\n return;\n }\n ctx.setLineDash(borderDash || []);\n ctx.lineDashOffset = borderDashOffset;\n if (inner) {\n ctx.lineWidth = borderWidth * 2;\n ctx.lineJoin = borderJoinStyle || 'round';\n } else {\n ctx.lineWidth = borderWidth;\n ctx.lineJoin = borderJoinStyle || 'bevel';\n }\n let endAngle = element.endAngle;\n if (fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n for (let i = 0; i < fullCircles; ++i) {\n ctx.stroke();\n }\n if (!isNaN(circumference)) {\n endAngle = startAngle + (circumference % TAU || TAU);\n }\n }\n if (inner) {\n clipArc(ctx, element, endAngle);\n }\n if (!fullCircles) {\n pathArc(ctx, element, offset, spacing, endAngle, circular);\n ctx.stroke();\n }\n}\nclass ArcElement extends Element {\n static id = 'arc';\n static defaults = {\n borderAlign: 'center',\n borderColor: '#fff',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: undefined,\n borderRadius: 0,\n borderWidth: 2,\n offset: 0,\n spacing: 0,\n angle: undefined,\n circular: true\n };\n static defaultRoutes = {\n backgroundColor: 'backgroundColor'\n };\n static descriptors = {\n _scriptable: true,\n _indexable: name => name !== 'borderDash'\n };\n circumference;\n endAngle;\n fullCircles;\n innerRadius;\n outerRadius;\n pixelMargin;\n startAngle;\n constructor(cfg) {\n super();\n this.options = undefined;\n this.circumference = undefined;\n this.startAngle = undefined;\n this.endAngle = undefined;\n this.innerRadius = undefined;\n this.outerRadius = undefined;\n this.pixelMargin = 0;\n this.fullCircles = 0;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(chartX, chartY, useFinalPosition) {\n const point = this.getProps(['x', 'y'], useFinalPosition);\n const {\n angle,\n distance\n } = getAngleFromPoint(point, {\n x: chartX,\n y: chartY\n });\n const {\n startAngle,\n endAngle,\n innerRadius,\n outerRadius,\n circumference\n } = this.getProps(['startAngle', 'endAngle', 'innerRadius', 'outerRadius', 'circumference'], useFinalPosition);\n const rAdjust = (this.options.spacing + this.options.borderWidth) / 2;\n const _circumference = valueOrDefault(circumference, endAngle - startAngle);\n const betweenAngles = _circumference >= TAU || _angleBetween(angle, startAngle, endAngle);\n const withinRadius = _isBetween(distance, innerRadius + rAdjust, outerRadius + rAdjust);\n return betweenAngles && withinRadius;\n }\n getCenterPoint(useFinalPosition) {\n const {\n x,\n y,\n startAngle,\n endAngle,\n innerRadius,\n outerRadius\n } = this.getProps(['x', 'y', 'startAngle', 'endAngle', 'innerRadius', 'outerRadius'], useFinalPosition);\n const {\n offset,\n spacing\n } = this.options;\n const halfAngle = (startAngle + endAngle) / 2;\n const halfRadius = (innerRadius + outerRadius + spacing + offset) / 2;\n return {\n x: x + Math.cos(halfAngle) * halfRadius,\n y: y + Math.sin(halfAngle) * halfRadius\n };\n }\n tooltipPosition(useFinalPosition) {\n return this.getCenterPoint(useFinalPosition);\n }\n draw(ctx) {\n const {\n options,\n circumference\n } = this;\n const offset = (options.offset || 0) / 4;\n const spacing = (options.spacing || 0) / 2;\n const circular = options.circular;\n this.pixelMargin = options.borderAlign === 'inner' ? 0.33 : 0;\n this.fullCircles = circumference > TAU ? Math.floor(circumference / TAU) : 0;\n if (circumference === 0 || this.innerRadius < 0 || this.outerRadius < 0) {\n return;\n }\n ctx.save();\n const halfAngle = (this.startAngle + this.endAngle) / 2;\n ctx.translate(Math.cos(halfAngle) * offset, Math.sin(halfAngle) * offset);\n const fix = 1 - Math.sin(Math.min(PI, circumference || 0));\n const radiusOffset = offset * fix;\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n drawArc(ctx, this, radiusOffset, spacing, circular);\n drawBorder(ctx, this, radiusOffset, spacing, circular);\n ctx.restore();\n }\n}\nfunction setStyle(ctx, options, style = options) {\n ctx.lineCap = valueOrDefault(style.borderCapStyle, options.borderCapStyle);\n ctx.setLineDash(valueOrDefault(style.borderDash, options.borderDash));\n ctx.lineDashOffset = valueOrDefault(style.borderDashOffset, options.borderDashOffset);\n ctx.lineJoin = valueOrDefault(style.borderJoinStyle, options.borderJoinStyle);\n ctx.lineWidth = valueOrDefault(style.borderWidth, options.borderWidth);\n ctx.strokeStyle = valueOrDefault(style.borderColor, options.borderColor);\n}\nfunction lineTo(ctx, previous, target) {\n ctx.lineTo(target.x, target.y);\n}\nfunction getLineMethod(options) {\n if (options.stepped) {\n return _steppedLineTo;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierCurveTo;\n }\n return lineTo;\n}\nfunction pathVars(points, segment, params = {}) {\n const count = points.length;\n const {\n start: paramsStart = 0,\n end: paramsEnd = count - 1\n } = params;\n const {\n start: segmentStart,\n end: segmentEnd\n } = segment;\n const start = Math.max(paramsStart, segmentStart);\n const end = Math.min(paramsEnd, segmentEnd);\n const outside = paramsStart < segmentStart && paramsEnd < segmentStart || paramsStart > segmentEnd && paramsEnd > segmentEnd;\n return {\n count,\n start,\n loop: segment.loop,\n ilen: end < start && !outside ? count + end - start : end - start\n };\n}\nfunction pathSegment(ctx, line, segment, params) {\n const {\n points,\n options\n } = line;\n const {\n count,\n start,\n loop,\n ilen\n } = pathVars(points, segment, params);\n const lineMethod = getLineMethod(options);\n let {\n move = true,\n reverse\n } = params || {};\n let i, point, prev;\n for (i = 0; i <= ilen; ++i) {\n point = points[(start + (reverse ? ilen - i : i)) % count];\n if (point.skip) {\n continue;\n } else if (move) {\n ctx.moveTo(point.x, point.y);\n move = false;\n } else {\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n prev = point;\n }\n if (loop) {\n point = points[(start + (reverse ? ilen : 0)) % count];\n lineMethod(ctx, prev, point, reverse, options.stepped);\n }\n return !!loop;\n}\nfunction fastPathSegment(ctx, line, segment, params) {\n const points = line.points;\n const {\n count,\n start,\n ilen\n } = pathVars(points, segment, params);\n const {\n move = true,\n reverse\n } = params || {};\n let avgX = 0;\n let countX = 0;\n let i, point, prevX, minY, maxY, lastY;\n const pointIndex = index => (start + (reverse ? ilen - index : index)) % count;\n const drawX = () => {\n if (minY !== maxY) {\n ctx.lineTo(avgX, maxY);\n ctx.lineTo(avgX, minY);\n ctx.lineTo(avgX, lastY);\n }\n };\n if (move) {\n point = points[pointIndex(0)];\n ctx.moveTo(point.x, point.y);\n }\n for (i = 0; i <= ilen; ++i) {\n point = points[pointIndex(i)];\n if (point.skip) {\n continue;\n }\n const x = point.x;\n const y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n } else if (y > maxY) {\n maxY = y;\n }\n avgX = (countX * avgX + x) / ++countX;\n } else {\n drawX();\n ctx.lineTo(x, y);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n }\n lastY = y;\n }\n drawX();\n}\nfunction _getSegmentMethod(line) {\n const opts = line.options;\n const borderDash = opts.borderDash && opts.borderDash.length;\n const useFastPath = !line._decimated && !line._loop && !opts.tension && opts.cubicInterpolationMode !== 'monotone' && !opts.stepped && !borderDash;\n return useFastPath ? fastPathSegment : pathSegment;\n}\nfunction _getInterpolationMethod(options) {\n if (options.stepped) {\n return _steppedInterpolation;\n }\n if (options.tension || options.cubicInterpolationMode === 'monotone') {\n return _bezierInterpolation;\n }\n return _pointInLine;\n}\nfunction strokePathWithCache(ctx, line, start, count) {\n let path = line._path;\n if (!path) {\n path = line._path = new Path2D();\n if (line.path(path, start, count)) {\n path.closePath();\n }\n }\n setStyle(ctx, line.options);\n ctx.stroke(path);\n}\nfunction strokePathDirect(ctx, line, start, count) {\n const {\n segments,\n options\n } = line;\n const segmentMethod = _getSegmentMethod(line);\n for (const segment of segments) {\n setStyle(ctx, options, segment.style);\n ctx.beginPath();\n if (segmentMethod(ctx, line, segment, {\n start,\n end: start + count - 1\n })) {\n ctx.closePath();\n }\n ctx.stroke();\n }\n}\nconst usePath2D = typeof Path2D === 'function';\nfunction draw(ctx, line, start, count) {\n if (usePath2D && !line.options.segment) {\n strokePathWithCache(ctx, line, start, count);\n } else {\n strokePathDirect(ctx, line, start, count);\n }\n}\nlet LineElement = /*#__PURE__*/(() => {\n class LineElement extends Element {\n static id = 'line';\n static defaults = {\n borderCapStyle: 'butt',\n borderDash: [],\n borderDashOffset: 0,\n borderJoinStyle: 'miter',\n borderWidth: 3,\n capBezierPoints: true,\n cubicInterpolationMode: 'default',\n fill: false,\n spanGaps: false,\n stepped: false,\n tension: 0\n };\n static defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n };\n static descriptors = {\n _scriptable: true,\n _indexable: name => name !== 'borderDash' && name !== 'fill'\n };\n constructor(cfg) {\n super();\n this.animated = true;\n this.options = undefined;\n this._chart = undefined;\n this._loop = undefined;\n this._fullLoop = undefined;\n this._path = undefined;\n this._points = undefined;\n this._segments = undefined;\n this._decimated = false;\n this._pointsUpdated = false;\n this._datasetIndex = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n updateControlPoints(chartArea, indexAxis) {\n const options = this.options;\n if ((options.tension || options.cubicInterpolationMode === 'monotone') && !options.stepped && !this._pointsUpdated) {\n const loop = options.spanGaps ? this._loop : this._fullLoop;\n _updateBezierControlPoints(this._points, options, chartArea, loop, indexAxis);\n this._pointsUpdated = true;\n }\n }\n set points(points) {\n this._points = points;\n delete this._segments;\n delete this._path;\n this._pointsUpdated = false;\n }\n get points() {\n return this._points;\n }\n get segments() {\n return this._segments || (this._segments = _computeSegments(this, this.options.segment));\n }\n first() {\n const segments = this.segments;\n const points = this.points;\n return segments.length && points[segments[0].start];\n }\n last() {\n const segments = this.segments;\n const points = this.points;\n const count = segments.length;\n return count && points[segments[count - 1].end];\n }\n interpolate(point, property) {\n const options = this.options;\n const value = point[property];\n const points = this.points;\n const segments = _boundSegments(this, {\n property,\n start: value,\n end: value\n });\n if (!segments.length) {\n return;\n }\n const result = [];\n const _interpolate = _getInterpolationMethod(options);\n let i, ilen;\n for (i = 0, ilen = segments.length; i < ilen; ++i) {\n const {\n start,\n end\n } = segments[i];\n const p1 = points[start];\n const p2 = points[end];\n if (p1 === p2) {\n result.push(p1);\n continue;\n }\n const t = Math.abs((value - p1[property]) / (p2[property] - p1[property]));\n const interpolated = _interpolate(p1, p2, t, options.stepped);\n interpolated[property] = point[property];\n result.push(interpolated);\n }\n return result.length === 1 ? result[0] : result;\n }\n pathSegment(ctx, segment, params) {\n const segmentMethod = _getSegmentMethod(this);\n return segmentMethod(ctx, this, segment, params);\n }\n path(ctx, start, count) {\n const segments = this.segments;\n const segmentMethod = _getSegmentMethod(this);\n let loop = this._loop;\n start = start || 0;\n count = count || this.points.length - start;\n for (const segment of segments) {\n loop &= segmentMethod(ctx, this, segment, {\n start,\n end: start + count - 1\n });\n }\n return !!loop;\n }\n draw(ctx, chartArea, start, count) {\n const options = this.options || {};\n const points = this.points || [];\n if (points.length && options.borderWidth) {\n ctx.save();\n draw(ctx, this, start, count);\n ctx.restore();\n }\n if (this.animated) {\n this._pointsUpdated = false;\n this._path = undefined;\n }\n }\n }\n return LineElement;\n})();\nfunction inRange$1(el, pos, axis, useFinalPosition) {\n const options = el.options;\n const {\n [axis]: value\n } = el.getProps([axis], useFinalPosition);\n return Math.abs(pos - value) < options.radius + options.hitRadius;\n}\nlet PointElement = /*#__PURE__*/(() => {\n class PointElement extends Element {\n static id = 'point';\n parsed;\n skip;\n stop;\n /**\n * @type {any}\n */\n static defaults = {\n borderWidth: 1,\n hitRadius: 1,\n hoverBorderWidth: 1,\n hoverRadius: 4,\n pointStyle: 'circle',\n radius: 3,\n rotation: 0\n };\n /**\n * @type {any}\n */\n static defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n };\n constructor(cfg) {\n super();\n this.options = undefined;\n this.parsed = undefined;\n this.skip = undefined;\n this.stop = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n const options = this.options;\n const {\n x,\n y\n } = this.getProps(['x', 'y'], useFinalPosition);\n return Math.pow(mouseX - x, 2) + Math.pow(mouseY - y, 2) < Math.pow(options.hitRadius + options.radius, 2);\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange$1(this, mouseX, 'x', useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange$1(this, mouseY, 'y', useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const {\n x,\n y\n } = this.getProps(['x', 'y'], useFinalPosition);\n return {\n x,\n y\n };\n }\n size(options) {\n options = options || this.options || {};\n let radius = options.radius || 0;\n radius = Math.max(radius, radius && options.hoverRadius || 0);\n const borderWidth = radius && options.borderWidth || 0;\n return (radius + borderWidth) * 2;\n }\n draw(ctx, area) {\n const options = this.options;\n if (this.skip || options.radius < 0.1 || !_isPointInArea(this, area, this.size(options) / 2)) {\n return;\n }\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.fillStyle = options.backgroundColor;\n drawPoint(ctx, options, this.x, this.y);\n }\n getRange() {\n const options = this.options || {};\n // @ts-expect-error Fallbacks should never be hit in practice\n return options.radius + options.hitRadius;\n }\n }\n return PointElement;\n})();\nfunction getBarBounds(bar, useFinalPosition) {\n const {\n x,\n y,\n base,\n width,\n height\n } = bar.getProps(['x', 'y', 'base', 'width', 'height'], useFinalPosition);\n let left, right, top, bottom, half;\n if (bar.horizontal) {\n half = height / 2;\n left = Math.min(x, base);\n right = Math.max(x, base);\n top = y - half;\n bottom = y + half;\n } else {\n half = width / 2;\n left = x - half;\n right = x + half;\n top = Math.min(y, base);\n bottom = Math.max(y, base);\n }\n return {\n left,\n top,\n right,\n bottom\n };\n}\nfunction skipOrLimit(skip, value, min, max) {\n return skip ? 0 : _limitValue(value, min, max);\n}\nfunction parseBorderWidth(bar, maxW, maxH) {\n const value = bar.options.borderWidth;\n const skip = bar.borderSkipped;\n const o = toTRBL(value);\n return {\n t: skipOrLimit(skip.top, o.top, 0, maxH),\n r: skipOrLimit(skip.right, o.right, 0, maxW),\n b: skipOrLimit(skip.bottom, o.bottom, 0, maxH),\n l: skipOrLimit(skip.left, o.left, 0, maxW)\n };\n}\nfunction parseBorderRadius(bar, maxW, maxH) {\n const {\n enableBorderRadius\n } = bar.getProps(['enableBorderRadius']);\n const value = bar.options.borderRadius;\n const o = toTRBLCorners(value);\n const maxR = Math.min(maxW, maxH);\n const skip = bar.borderSkipped;\n const enableBorder = enableBorderRadius || isObject(value);\n return {\n topLeft: skipOrLimit(!enableBorder || skip.top || skip.left, o.topLeft, 0, maxR),\n topRight: skipOrLimit(!enableBorder || skip.top || skip.right, o.topRight, 0, maxR),\n bottomLeft: skipOrLimit(!enableBorder || skip.bottom || skip.left, o.bottomLeft, 0, maxR),\n bottomRight: skipOrLimit(!enableBorder || skip.bottom || skip.right, o.bottomRight, 0, maxR)\n };\n}\nfunction boundingRects(bar) {\n const bounds = getBarBounds(bar);\n const width = bounds.right - bounds.left;\n const height = bounds.bottom - bounds.top;\n const border = parseBorderWidth(bar, width / 2, height / 2);\n const radius = parseBorderRadius(bar, width / 2, height / 2);\n return {\n outer: {\n x: bounds.left,\n y: bounds.top,\n w: width,\n h: height,\n radius\n },\n inner: {\n x: bounds.left + border.l,\n y: bounds.top + border.t,\n w: width - border.l - border.r,\n h: height - border.t - border.b,\n radius: {\n topLeft: Math.max(0, radius.topLeft - Math.max(border.t, border.l)),\n topRight: Math.max(0, radius.topRight - Math.max(border.t, border.r)),\n bottomLeft: Math.max(0, radius.bottomLeft - Math.max(border.b, border.l)),\n bottomRight: Math.max(0, radius.bottomRight - Math.max(border.b, border.r))\n }\n }\n };\n}\nfunction inRange(bar, x, y, useFinalPosition) {\n const skipX = x === null;\n const skipY = y === null;\n const skipBoth = skipX && skipY;\n const bounds = bar && !skipBoth && getBarBounds(bar, useFinalPosition);\n return bounds && (skipX || _isBetween(x, bounds.left, bounds.right)) && (skipY || _isBetween(y, bounds.top, bounds.bottom));\n}\nfunction hasRadius(radius) {\n return radius.topLeft || radius.topRight || radius.bottomLeft || radius.bottomRight;\n}\nfunction addNormalRectPath(ctx, rect) {\n ctx.rect(rect.x, rect.y, rect.w, rect.h);\n}\nfunction inflateRect(rect, amount, refRect = {}) {\n const x = rect.x !== refRect.x ? -amount : 0;\n const y = rect.y !== refRect.y ? -amount : 0;\n const w = (rect.x + rect.w !== refRect.x + refRect.w ? amount : 0) - x;\n const h = (rect.y + rect.h !== refRect.y + refRect.h ? amount : 0) - y;\n return {\n x: rect.x + x,\n y: rect.y + y,\n w: rect.w + w,\n h: rect.h + h,\n radius: rect.radius\n };\n}\nclass BarElement extends Element {\n static id = 'bar';\n static defaults = {\n borderSkipped: 'start',\n borderWidth: 0,\n borderRadius: 0,\n inflateAmount: 'auto',\n pointStyle: undefined\n };\n static defaultRoutes = {\n backgroundColor: 'backgroundColor',\n borderColor: 'borderColor'\n };\n constructor(cfg) {\n super();\n this.options = undefined;\n this.horizontal = undefined;\n this.base = undefined;\n this.width = undefined;\n this.height = undefined;\n this.inflateAmount = undefined;\n if (cfg) {\n Object.assign(this, cfg);\n }\n }\n draw(ctx) {\n const {\n inflateAmount,\n options: {\n borderColor,\n backgroundColor\n }\n } = this;\n const {\n inner,\n outer\n } = boundingRects(this);\n const addRectPath = hasRadius(outer.radius) ? addRoundedRectPath : addNormalRectPath;\n ctx.save();\n if (outer.w !== inner.w || outer.h !== inner.h) {\n ctx.beginPath();\n addRectPath(ctx, inflateRect(outer, inflateAmount, inner));\n ctx.clip();\n addRectPath(ctx, inflateRect(inner, -inflateAmount, outer));\n ctx.fillStyle = borderColor;\n ctx.fill('evenodd');\n }\n ctx.beginPath();\n addRectPath(ctx, inflateRect(inner, inflateAmount));\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n inRange(mouseX, mouseY, useFinalPosition) {\n return inRange(this, mouseX, mouseY, useFinalPosition);\n }\n inXRange(mouseX, useFinalPosition) {\n return inRange(this, mouseX, null, useFinalPosition);\n }\n inYRange(mouseY, useFinalPosition) {\n return inRange(this, null, mouseY, useFinalPosition);\n }\n getCenterPoint(useFinalPosition) {\n const {\n x,\n y,\n base,\n horizontal\n } = this.getProps(['x', 'y', 'base', 'horizontal'], useFinalPosition);\n return {\n x: horizontal ? (x + base) / 2 : x,\n y: horizontal ? y : (y + base) / 2\n };\n }\n getRange(axis) {\n return axis === 'x' ? this.width / 2 : this.height / 2;\n }\n}\nvar elements = /*#__PURE__*/Object.freeze({\n __proto__: null,\n ArcElement: ArcElement,\n BarElement: BarElement,\n LineElement: LineElement,\n PointElement: PointElement\n});\nconst BORDER_COLORS = ['rgb(54, 162, 235)', 'rgb(255, 99, 132)', 'rgb(255, 159, 64)', 'rgb(255, 205, 86)', 'rgb(75, 192, 192)', 'rgb(153, 102, 255)', 'rgb(201, 203, 207)' // grey\n];\n// Border colors with 50% transparency\nconst BACKGROUND_COLORS = /* #__PURE__ */BORDER_COLORS.map(color => color.replace('rgb(', 'rgba(').replace(')', ', 0.5)'));\nfunction getBorderColor(i) {\n return BORDER_COLORS[i % BORDER_COLORS.length];\n}\nfunction getBackgroundColor(i) {\n return BACKGROUND_COLORS[i % BACKGROUND_COLORS.length];\n}\nfunction colorizeDefaultDataset(dataset, i) {\n dataset.borderColor = getBorderColor(i);\n dataset.backgroundColor = getBackgroundColor(i);\n return ++i;\n}\nfunction colorizeDoughnutDataset(dataset, i) {\n dataset.backgroundColor = dataset.data.map(() => getBorderColor(i++));\n return i;\n}\nfunction colorizePolarAreaDataset(dataset, i) {\n dataset.backgroundColor = dataset.data.map(() => getBackgroundColor(i++));\n return i;\n}\nfunction getColorizer(chart) {\n let i = 0;\n return (dataset, datasetIndex) => {\n const controller = chart.getDatasetMeta(datasetIndex).controller;\n if (controller instanceof DoughnutController) {\n i = colorizeDoughnutDataset(dataset, i);\n } else if (controller instanceof PolarAreaController) {\n i = colorizePolarAreaDataset(dataset, i);\n } else if (controller) {\n i = colorizeDefaultDataset(dataset, i);\n }\n };\n}\nfunction containsColorsDefinitions(descriptors) {\n let k;\n for (k in descriptors) {\n if (descriptors[k].borderColor || descriptors[k].backgroundColor) {\n return true;\n }\n }\n return false;\n}\nfunction containsColorsDefinition(descriptor) {\n return descriptor && (descriptor.borderColor || descriptor.backgroundColor);\n}\nvar plugin_colors = {\n id: 'colors',\n defaults: {\n enabled: true,\n forceOverride: false\n },\n beforeLayout(chart, _args, options) {\n if (!options.enabled) {\n return;\n }\n const {\n data: {\n datasets\n },\n options: chartOptions\n } = chart.config;\n const {\n elements\n } = chartOptions;\n if (!options.forceOverride && (containsColorsDefinitions(datasets) || containsColorsDefinition(chartOptions) || elements && containsColorsDefinitions(elements))) {\n return;\n }\n const colorizer = getColorizer(chart);\n datasets.forEach(colorizer);\n }\n};\nfunction lttbDecimation(data, start, count, availableWidth, options) {\n const samples = options.samples || availableWidth;\n if (samples >= count) {\n return data.slice(start, start + count);\n }\n const decimated = [];\n const bucketWidth = (count - 2) / (samples - 2);\n let sampledIndex = 0;\n const endIndex = start + count - 1;\n let a = start;\n let i, maxAreaPoint, maxArea, area, nextA;\n decimated[sampledIndex++] = data[a];\n for (i = 0; i < samples - 2; i++) {\n let avgX = 0;\n let avgY = 0;\n let j;\n const avgRangeStart = Math.floor((i + 1) * bucketWidth) + 1 + start;\n const avgRangeEnd = Math.min(Math.floor((i + 2) * bucketWidth) + 1, count) + start;\n const avgRangeLength = avgRangeEnd - avgRangeStart;\n for (j = avgRangeStart; j < avgRangeEnd; j++) {\n avgX += data[j].x;\n avgY += data[j].y;\n }\n avgX /= avgRangeLength;\n avgY /= avgRangeLength;\n const rangeOffs = Math.floor(i * bucketWidth) + 1 + start;\n const rangeTo = Math.min(Math.floor((i + 1) * bucketWidth) + 1, count) + start;\n const {\n x: pointAx,\n y: pointAy\n } = data[a];\n maxArea = area = -1;\n for (j = rangeOffs; j < rangeTo; j++) {\n area = 0.5 * Math.abs((pointAx - avgX) * (data[j].y - pointAy) - (pointAx - data[j].x) * (avgY - pointAy));\n if (area > maxArea) {\n maxArea = area;\n maxAreaPoint = data[j];\n nextA = j;\n }\n }\n decimated[sampledIndex++] = maxAreaPoint;\n a = nextA;\n }\n decimated[sampledIndex++] = data[endIndex];\n return decimated;\n}\nfunction minMaxDecimation(data, start, count, availableWidth) {\n let avgX = 0;\n let countX = 0;\n let i, point, x, y, prevX, minIndex, maxIndex, startIndex, minY, maxY;\n const decimated = [];\n const endIndex = start + count - 1;\n const xMin = data[start].x;\n const xMax = data[endIndex].x;\n const dx = xMax - xMin;\n for (i = start; i < start + count; ++i) {\n point = data[i];\n x = (point.x - xMin) / dx * availableWidth;\n y = point.y;\n const truncX = x | 0;\n if (truncX === prevX) {\n if (y < minY) {\n minY = y;\n minIndex = i;\n } else if (y > maxY) {\n maxY = y;\n maxIndex = i;\n }\n avgX = (countX * avgX + point.x) / ++countX;\n } else {\n const lastIndex = i - 1;\n if (!isNullOrUndef(minIndex) && !isNullOrUndef(maxIndex)) {\n const intermediateIndex1 = Math.min(minIndex, maxIndex);\n const intermediateIndex2 = Math.max(minIndex, maxIndex);\n if (intermediateIndex1 !== startIndex && intermediateIndex1 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex1],\n x: avgX\n });\n }\n if (intermediateIndex2 !== startIndex && intermediateIndex2 !== lastIndex) {\n decimated.push({\n ...data[intermediateIndex2],\n x: avgX\n });\n }\n }\n if (i > 0 && lastIndex !== startIndex) {\n decimated.push(data[lastIndex]);\n }\n decimated.push(point);\n prevX = truncX;\n countX = 0;\n minY = maxY = y;\n minIndex = maxIndex = startIndex = i;\n }\n }\n return decimated;\n}\nfunction cleanDecimatedDataset(dataset) {\n if (dataset._decimated) {\n const data = dataset._data;\n delete dataset._decimated;\n delete dataset._data;\n Object.defineProperty(dataset, 'data', {\n configurable: true,\n enumerable: true,\n writable: true,\n value: data\n });\n }\n}\nfunction cleanDecimatedData(chart) {\n chart.data.datasets.forEach(dataset => {\n cleanDecimatedDataset(dataset);\n });\n}\nfunction getStartAndCountOfVisiblePointsSimplified(meta, points) {\n const pointCount = points.length;\n let start = 0;\n let count;\n const {\n iScale\n } = meta;\n const {\n min,\n max,\n minDefined,\n maxDefined\n } = iScale.getUserBounds();\n if (minDefined) {\n start = _limitValue(_lookupByKey(points, iScale.axis, min).lo, 0, pointCount - 1);\n }\n if (maxDefined) {\n count = _limitValue(_lookupByKey(points, iScale.axis, max).hi + 1, start, pointCount) - start;\n } else {\n count = pointCount - start;\n }\n return {\n start,\n count\n };\n}\nvar plugin_decimation = {\n id: 'decimation',\n defaults: {\n algorithm: 'min-max',\n enabled: false\n },\n beforeElementsUpdate: (chart, args, options) => {\n if (!options.enabled) {\n cleanDecimatedData(chart);\n return;\n }\n const availableWidth = chart.width;\n chart.data.datasets.forEach((dataset, datasetIndex) => {\n const {\n _data,\n indexAxis\n } = dataset;\n const meta = chart.getDatasetMeta(datasetIndex);\n const data = _data || dataset.data;\n if (resolve([indexAxis, chart.options.indexAxis]) === 'y') {\n return;\n }\n if (!meta.controller.supportsDecimation) {\n return;\n }\n const xAxis = chart.scales[meta.xAxisID];\n if (xAxis.type !== 'linear' && xAxis.type !== 'time') {\n return;\n }\n if (chart.options.parsing) {\n return;\n }\n let {\n start,\n count\n } = getStartAndCountOfVisiblePointsSimplified(meta, data);\n const threshold = options.threshold || 4 * availableWidth;\n if (count <= threshold) {\n cleanDecimatedDataset(dataset);\n return;\n }\n if (isNullOrUndef(_data)) {\n dataset._data = data;\n delete dataset.data;\n Object.defineProperty(dataset, 'data', {\n configurable: true,\n enumerable: true,\n get: function () {\n return this._decimated;\n },\n set: function (d) {\n this._data = d;\n }\n });\n }\n let decimated;\n switch (options.algorithm) {\n case 'lttb':\n decimated = lttbDecimation(data, start, count, availableWidth, options);\n break;\n case 'min-max':\n decimated = minMaxDecimation(data, start, count, availableWidth);\n break;\n default:\n throw new Error(`Unsupported decimation algorithm '${options.algorithm}'`);\n }\n dataset._decimated = decimated;\n });\n },\n destroy(chart) {\n cleanDecimatedData(chart);\n }\n};\nfunction _segments(line, target, property) {\n const segments = line.segments;\n const points = line.points;\n const tpoints = target.points;\n const parts = [];\n for (const segment of segments) {\n let {\n start,\n end\n } = segment;\n end = _findSegmentEnd(start, end, points);\n const bounds = _getBounds(property, points[start], points[end], segment.loop);\n if (!target.segments) {\n parts.push({\n source: segment,\n target: bounds,\n start: points[start],\n end: points[end]\n });\n continue;\n }\n const targetSegments = _boundSegments(target, bounds);\n for (const tgt of targetSegments) {\n const subBounds = _getBounds(property, tpoints[tgt.start], tpoints[tgt.end], tgt.loop);\n const fillSources = _boundSegment(segment, points, subBounds);\n for (const fillSource of fillSources) {\n parts.push({\n source: fillSource,\n target: tgt,\n start: {\n [property]: _getEdge(bounds, subBounds, 'start', Math.max)\n },\n end: {\n [property]: _getEdge(bounds, subBounds, 'end', Math.min)\n }\n });\n }\n }\n }\n return parts;\n}\nfunction _getBounds(property, first, last, loop) {\n if (loop) {\n return;\n }\n let start = first[property];\n let end = last[property];\n if (property === 'angle') {\n start = _normalizeAngle(start);\n end = _normalizeAngle(end);\n }\n return {\n property,\n start,\n end\n };\n}\nfunction _pointsFromSegments(boundary, line) {\n const {\n x = null,\n y = null\n } = boundary || {};\n const linePoints = line.points;\n const points = [];\n line.segments.forEach(({\n start,\n end\n }) => {\n end = _findSegmentEnd(start, end, linePoints);\n const first = linePoints[start];\n const last = linePoints[end];\n if (y !== null) {\n points.push({\n x: first.x,\n y\n });\n points.push({\n x: last.x,\n y\n });\n } else if (x !== null) {\n points.push({\n x,\n y: first.y\n });\n points.push({\n x,\n y: last.y\n });\n }\n });\n return points;\n}\nfunction _findSegmentEnd(start, end, points) {\n for (; end > start; end--) {\n const point = points[end];\n if (!isNaN(point.x) && !isNaN(point.y)) {\n break;\n }\n }\n return end;\n}\nfunction _getEdge(a, b, prop, fn) {\n if (a && b) {\n return fn(a[prop], b[prop]);\n }\n return a ? a[prop] : b ? b[prop] : 0;\n}\nfunction _createBoundaryLine(boundary, line) {\n let points = [];\n let _loop = false;\n if (isArray(boundary)) {\n _loop = true;\n points = boundary;\n } else {\n points = _pointsFromSegments(boundary, line);\n }\n return points.length ? new LineElement({\n points,\n options: {\n tension: 0\n },\n _loop,\n _fullLoop: _loop\n }) : null;\n}\nfunction _shouldApplyFill(source) {\n return source && source.fill !== false;\n}\nfunction _resolveTarget(sources, index, propagate) {\n const source = sources[index];\n let fill = source.fill;\n const visited = [index];\n let target;\n if (!propagate) {\n return fill;\n }\n while (fill !== false && visited.indexOf(fill) === -1) {\n if (!isNumberFinite(fill)) {\n return fill;\n }\n target = sources[fill];\n if (!target) {\n return false;\n }\n if (target.visible) {\n return fill;\n }\n visited.push(fill);\n fill = target.fill;\n }\n return false;\n}\nfunction _decodeFill(line, index, count) {\n const fill = parseFillOption(line);\n if (isObject(fill)) {\n return isNaN(fill.value) ? false : fill;\n }\n let target = parseFloat(fill);\n if (isNumberFinite(target) && Math.floor(target) === target) {\n return decodeTargetIndex(fill[0], index, target, count);\n }\n return ['origin', 'start', 'end', 'stack', 'shape'].indexOf(fill) >= 0 && fill;\n}\nfunction decodeTargetIndex(firstCh, index, target, count) {\n if (firstCh === '-' || firstCh === '+') {\n target = index + target;\n }\n if (target === index || target < 0 || target >= count) {\n return false;\n }\n return target;\n}\nfunction _getTargetPixel(fill, scale) {\n let pixel = null;\n if (fill === 'start') {\n pixel = scale.bottom;\n } else if (fill === 'end') {\n pixel = scale.top;\n } else if (isObject(fill)) {\n pixel = scale.getPixelForValue(fill.value);\n } else if (scale.getBasePixel) {\n pixel = scale.getBasePixel();\n }\n return pixel;\n}\nfunction _getTargetValue(fill, scale, startValue) {\n let value;\n if (fill === 'start') {\n value = startValue;\n } else if (fill === 'end') {\n value = scale.options.reverse ? scale.min : scale.max;\n } else if (isObject(fill)) {\n value = fill.value;\n } else {\n value = scale.getBaseValue();\n }\n return value;\n}\nfunction parseFillOption(line) {\n const options = line.options;\n const fillOption = options.fill;\n let fill = valueOrDefault(fillOption && fillOption.target, fillOption);\n if (fill === undefined) {\n fill = !!options.backgroundColor;\n }\n if (fill === false || fill === null) {\n return false;\n }\n if (fill === true) {\n return 'origin';\n }\n return fill;\n}\nfunction _buildStackLine(source) {\n const {\n scale,\n index,\n line\n } = source;\n const points = [];\n const segments = line.segments;\n const sourcePoints = line.points;\n const linesBelow = getLinesBelow(scale, index);\n linesBelow.push(_createBoundaryLine({\n x: null,\n y: scale.bottom\n }, line));\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n for (let j = segment.start; j <= segment.end; j++) {\n addPointsBelow(points, sourcePoints[j], linesBelow);\n }\n }\n return new LineElement({\n points,\n options: {}\n });\n}\nfunction getLinesBelow(scale, index) {\n const below = [];\n const metas = scale.getMatchingVisibleMetas('line');\n for (let i = 0; i < metas.length; i++) {\n const meta = metas[i];\n if (meta.index === index) {\n break;\n }\n if (!meta.hidden) {\n below.unshift(meta.dataset);\n }\n }\n return below;\n}\nfunction addPointsBelow(points, sourcePoint, linesBelow) {\n const postponed = [];\n for (let j = 0; j < linesBelow.length; j++) {\n const line = linesBelow[j];\n const {\n first,\n last,\n point\n } = findPoint(line, sourcePoint, 'x');\n if (!point || first && last) {\n continue;\n }\n if (first) {\n postponed.unshift(point);\n } else {\n points.push(point);\n if (!last) {\n break;\n }\n }\n }\n points.push(...postponed);\n}\nfunction findPoint(line, sourcePoint, property) {\n const point = line.interpolate(sourcePoint, property);\n if (!point) {\n return {};\n }\n const pointValue = point[property];\n const segments = line.segments;\n const linePoints = line.points;\n let first = false;\n let last = false;\n for (let i = 0; i < segments.length; i++) {\n const segment = segments[i];\n const firstValue = linePoints[segment.start][property];\n const lastValue = linePoints[segment.end][property];\n if (_isBetween(pointValue, firstValue, lastValue)) {\n first = pointValue === firstValue;\n last = pointValue === lastValue;\n break;\n }\n }\n return {\n first,\n last,\n point\n };\n}\nclass simpleArc {\n constructor(opts) {\n this.x = opts.x;\n this.y = opts.y;\n this.radius = opts.radius;\n }\n pathSegment(ctx, bounds, opts) {\n const {\n x,\n y,\n radius\n } = this;\n bounds = bounds || {\n start: 0,\n end: TAU\n };\n ctx.arc(x, y, radius, bounds.end, bounds.start, true);\n return !opts.bounds;\n }\n interpolate(point) {\n const {\n x,\n y,\n radius\n } = this;\n const angle = point.angle;\n return {\n x: x + Math.cos(angle) * radius,\n y: y + Math.sin(angle) * radius,\n angle\n };\n }\n}\nfunction _getTarget(source) {\n const {\n chart,\n fill,\n line\n } = source;\n if (isNumberFinite(fill)) {\n return getLineByIndex(chart, fill);\n }\n if (fill === 'stack') {\n return _buildStackLine(source);\n }\n if (fill === 'shape') {\n return true;\n }\n const boundary = computeBoundary(source);\n if (boundary instanceof simpleArc) {\n return boundary;\n }\n return _createBoundaryLine(boundary, line);\n}\nfunction getLineByIndex(chart, index) {\n const meta = chart.getDatasetMeta(index);\n const visible = meta && chart.isDatasetVisible(index);\n return visible ? meta.dataset : null;\n}\nfunction computeBoundary(source) {\n const scale = source.scale || {};\n if (scale.getPointPositionForValue) {\n return computeCircularBoundary(source);\n }\n return computeLinearBoundary(source);\n}\nfunction computeLinearBoundary(source) {\n const {\n scale = {},\n fill\n } = source;\n const pixel = _getTargetPixel(fill, scale);\n if (isNumberFinite(pixel)) {\n const horizontal = scale.isHorizontal();\n return {\n x: horizontal ? pixel : null,\n y: horizontal ? null : pixel\n };\n }\n return null;\n}\nfunction computeCircularBoundary(source) {\n const {\n scale,\n fill\n } = source;\n const options = scale.options;\n const length = scale.getLabels().length;\n const start = options.reverse ? scale.max : scale.min;\n const value = _getTargetValue(fill, scale, start);\n const target = [];\n if (options.grid.circular) {\n const center = scale.getPointPositionForValue(0, start);\n return new simpleArc({\n x: center.x,\n y: center.y,\n radius: scale.getDistanceFromCenterForValue(value)\n });\n }\n for (let i = 0; i < length; ++i) {\n target.push(scale.getPointPositionForValue(i, value));\n }\n return target;\n}\nfunction _drawfill(ctx, source, area) {\n const target = _getTarget(source);\n const {\n line,\n scale,\n axis\n } = source;\n const lineOpts = line.options;\n const fillOption = lineOpts.fill;\n const color = lineOpts.backgroundColor;\n const {\n above = color,\n below = color\n } = fillOption || {};\n if (target && line.points.length) {\n clipArea(ctx, area);\n doFill(ctx, {\n line,\n target,\n above,\n below,\n area,\n scale,\n axis\n });\n unclipArea(ctx);\n }\n}\nfunction doFill(ctx, cfg) {\n const {\n line,\n target,\n above,\n below,\n area,\n scale\n } = cfg;\n const property = line._loop ? 'angle' : cfg.axis;\n ctx.save();\n if (property === 'x' && below !== above) {\n clipVertical(ctx, target, area.top);\n fill(ctx, {\n line,\n target,\n color: above,\n scale,\n property\n });\n ctx.restore();\n ctx.save();\n clipVertical(ctx, target, area.bottom);\n }\n fill(ctx, {\n line,\n target,\n color: below,\n scale,\n property\n });\n ctx.restore();\n}\nfunction clipVertical(ctx, target, clipY) {\n const {\n segments,\n points\n } = target;\n let first = true;\n let lineLoop = false;\n ctx.beginPath();\n for (const segment of segments) {\n const {\n start,\n end\n } = segment;\n const firstPoint = points[start];\n const lastPoint = points[_findSegmentEnd(start, end, points)];\n if (first) {\n ctx.moveTo(firstPoint.x, firstPoint.y);\n first = false;\n } else {\n ctx.lineTo(firstPoint.x, clipY);\n ctx.lineTo(firstPoint.x, firstPoint.y);\n }\n lineLoop = !!target.pathSegment(ctx, segment, {\n move: lineLoop\n });\n if (lineLoop) {\n ctx.closePath();\n } else {\n ctx.lineTo(lastPoint.x, clipY);\n }\n }\n ctx.lineTo(target.first().x, clipY);\n ctx.closePath();\n ctx.clip();\n}\nfunction fill(ctx, cfg) {\n const {\n line,\n target,\n property,\n color,\n scale\n } = cfg;\n const segments = _segments(line, target, property);\n for (const {\n source: src,\n target: tgt,\n start,\n end\n } of segments) {\n const {\n style: {\n backgroundColor = color\n } = {}\n } = src;\n const notShape = target !== true;\n ctx.save();\n ctx.fillStyle = backgroundColor;\n clipBounds(ctx, scale, notShape && _getBounds(property, start, end));\n ctx.beginPath();\n const lineLoop = !!line.pathSegment(ctx, src);\n let loop;\n if (notShape) {\n if (lineLoop) {\n ctx.closePath();\n } else {\n interpolatedLineTo(ctx, target, end, property);\n }\n const targetLoop = !!target.pathSegment(ctx, tgt, {\n move: lineLoop,\n reverse: true\n });\n loop = lineLoop && targetLoop;\n if (!loop) {\n interpolatedLineTo(ctx, target, start, property);\n }\n }\n ctx.closePath();\n ctx.fill(loop ? 'evenodd' : 'nonzero');\n ctx.restore();\n }\n}\nfunction clipBounds(ctx, scale, bounds) {\n const {\n top,\n bottom\n } = scale.chart.chartArea;\n const {\n property,\n start,\n end\n } = bounds || {};\n if (property === 'x') {\n ctx.beginPath();\n ctx.rect(start, top, end - start, bottom - top);\n ctx.clip();\n }\n}\nfunction interpolatedLineTo(ctx, target, point, property) {\n const interpolatedPoint = target.interpolate(point, property);\n if (interpolatedPoint) {\n ctx.lineTo(interpolatedPoint.x, interpolatedPoint.y);\n }\n}\nvar index = {\n id: 'filler',\n afterDatasetsUpdate(chart, _args, options) {\n const count = (chart.data.datasets || []).length;\n const sources = [];\n let meta, i, line, source;\n for (i = 0; i < count; ++i) {\n meta = chart.getDatasetMeta(i);\n line = meta.dataset;\n source = null;\n if (line && line.options && line instanceof LineElement) {\n source = {\n visible: chart.isDatasetVisible(i),\n index: i,\n fill: _decodeFill(line, i, count),\n chart,\n axis: meta.controller.options.indexAxis,\n scale: meta.vScale,\n line\n };\n }\n meta.$filler = source;\n sources.push(source);\n }\n for (i = 0; i < count; ++i) {\n source = sources[i];\n if (!source || source.fill === false) {\n continue;\n }\n source.fill = _resolveTarget(sources, i, options.propagate);\n }\n },\n beforeDraw(chart, _args, options) {\n const draw = options.drawTime === 'beforeDraw';\n const metasets = chart.getSortedVisibleDatasetMetas();\n const area = chart.chartArea;\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n if (!source) {\n continue;\n }\n source.line.updateControlPoints(area, source.axis);\n if (draw && source.fill) {\n _drawfill(chart.ctx, source, area);\n }\n }\n },\n beforeDatasetsDraw(chart, _args, options) {\n if (options.drawTime !== 'beforeDatasetsDraw') {\n return;\n }\n const metasets = chart.getSortedVisibleDatasetMetas();\n for (let i = metasets.length - 1; i >= 0; --i) {\n const source = metasets[i].$filler;\n if (_shouldApplyFill(source)) {\n _drawfill(chart.ctx, source, chart.chartArea);\n }\n }\n },\n beforeDatasetDraw(chart, args, options) {\n const source = args.meta.$filler;\n if (!_shouldApplyFill(source) || options.drawTime !== 'beforeDatasetDraw') {\n return;\n }\n _drawfill(chart.ctx, source, chart.chartArea);\n },\n defaults: {\n propagate: true,\n drawTime: 'beforeDatasetDraw'\n }\n};\nconst getBoxSize = (labelOpts, fontSize) => {\n let {\n boxHeight = fontSize,\n boxWidth = fontSize\n } = labelOpts;\n if (labelOpts.usePointStyle) {\n boxHeight = Math.min(boxHeight, fontSize);\n boxWidth = labelOpts.pointStyleWidth || Math.min(boxWidth, fontSize);\n }\n return {\n boxWidth,\n boxHeight,\n itemHeight: Math.max(fontSize, boxHeight)\n };\n};\nconst itemsEqual = (a, b) => a !== null && b !== null && a.datasetIndex === b.datasetIndex && a.index === b.index;\nclass Legend extends Element {\n constructor(config) {\n super();\n this._added = false;\n this.legendHitBoxes = [];\n this._hoveredItem = null;\n this.doughnutMode = false;\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this.legendItems = undefined;\n this.columnSizes = undefined;\n this.lineWidths = undefined;\n this.maxHeight = undefined;\n this.maxWidth = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.height = undefined;\n this.width = undefined;\n this._margins = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight, margins) {\n this.maxWidth = maxWidth;\n this.maxHeight = maxHeight;\n this._margins = margins;\n this.setDimensions();\n this.buildLabels();\n this.fit();\n }\n setDimensions() {\n if (this.isHorizontal()) {\n this.width = this.maxWidth;\n this.left = this._margins.left;\n this.right = this.width;\n } else {\n this.height = this.maxHeight;\n this.top = this._margins.top;\n this.bottom = this.height;\n }\n }\n buildLabels() {\n const labelOpts = this.options.labels || {};\n let legendItems = callback(labelOpts.generateLabels, [this.chart], this) || [];\n if (labelOpts.filter) {\n legendItems = legendItems.filter(item => labelOpts.filter(item, this.chart.data));\n }\n if (labelOpts.sort) {\n legendItems = legendItems.sort((a, b) => labelOpts.sort(a, b, this.chart.data));\n }\n if (this.options.reverse) {\n legendItems.reverse();\n }\n this.legendItems = legendItems;\n }\n fit() {\n const {\n options,\n ctx\n } = this;\n if (!options.display) {\n this.width = this.height = 0;\n return;\n }\n const labelOpts = options.labels;\n const labelFont = toFont(labelOpts.font);\n const fontSize = labelFont.size;\n const titleHeight = this._computeTitleHeight();\n const {\n boxWidth,\n itemHeight\n } = getBoxSize(labelOpts, fontSize);\n let width, height;\n ctx.font = labelFont.string;\n if (this.isHorizontal()) {\n width = this.maxWidth;\n height = this._fitRows(titleHeight, fontSize, boxWidth, itemHeight) + 10;\n } else {\n height = this.maxHeight;\n width = this._fitCols(titleHeight, labelFont, boxWidth, itemHeight) + 10;\n }\n this.width = Math.min(width, options.maxWidth || this.maxWidth);\n this.height = Math.min(height, options.maxHeight || this.maxHeight);\n }\n _fitRows(titleHeight, fontSize, boxWidth, itemHeight) {\n const {\n ctx,\n maxWidth,\n options: {\n labels: {\n padding\n }\n }\n } = this;\n const hitboxes = this.legendHitBoxes = [];\n const lineWidths = this.lineWidths = [0];\n const lineHeight = itemHeight + padding;\n let totalHeight = titleHeight;\n ctx.textAlign = 'left';\n ctx.textBaseline = 'middle';\n let row = -1;\n let top = -lineHeight;\n this.legendItems.forEach((legendItem, i) => {\n const itemWidth = boxWidth + fontSize / 2 + ctx.measureText(legendItem.text).width;\n if (i === 0 || lineWidths[lineWidths.length - 1] + itemWidth + 2 * padding > maxWidth) {\n totalHeight += lineHeight;\n lineWidths[lineWidths.length - (i > 0 ? 0 : 1)] = 0;\n top += lineHeight;\n row++;\n }\n hitboxes[i] = {\n left: 0,\n top,\n row,\n width: itemWidth,\n height: itemHeight\n };\n lineWidths[lineWidths.length - 1] += itemWidth + padding;\n });\n return totalHeight;\n }\n _fitCols(titleHeight, labelFont, boxWidth, _itemHeight) {\n const {\n ctx,\n maxHeight,\n options: {\n labels: {\n padding\n }\n }\n } = this;\n const hitboxes = this.legendHitBoxes = [];\n const columnSizes = this.columnSizes = [];\n const heightLimit = maxHeight - titleHeight;\n let totalWidth = padding;\n let currentColWidth = 0;\n let currentColHeight = 0;\n let left = 0;\n let col = 0;\n this.legendItems.forEach((legendItem, i) => {\n const {\n itemWidth,\n itemHeight\n } = calculateItemSize(boxWidth, labelFont, ctx, legendItem, _itemHeight);\n if (i > 0 && currentColHeight + itemHeight + 2 * padding > heightLimit) {\n totalWidth += currentColWidth + padding;\n columnSizes.push({\n width: currentColWidth,\n height: currentColHeight\n });\n left += currentColWidth + padding;\n col++;\n currentColWidth = currentColHeight = 0;\n }\n hitboxes[i] = {\n left,\n top: currentColHeight,\n col,\n width: itemWidth,\n height: itemHeight\n };\n currentColWidth = Math.max(currentColWidth, itemWidth);\n currentColHeight += itemHeight + padding;\n });\n totalWidth += currentColWidth;\n columnSizes.push({\n width: currentColWidth,\n height: currentColHeight\n });\n return totalWidth;\n }\n adjustHitBoxes() {\n if (!this.options.display) {\n return;\n }\n const titleHeight = this._computeTitleHeight();\n const {\n legendHitBoxes: hitboxes,\n options: {\n align,\n labels: {\n padding\n },\n rtl\n }\n } = this;\n const rtlHelper = getRtlAdapter(rtl, this.left, this.width);\n if (this.isHorizontal()) {\n let row = 0;\n let left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n for (const hitbox of hitboxes) {\n if (row !== hitbox.row) {\n row = hitbox.row;\n left = _alignStartEnd(align, this.left + padding, this.right - this.lineWidths[row]);\n }\n hitbox.top += this.top + titleHeight + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(left), hitbox.width);\n left += hitbox.width + padding;\n }\n } else {\n let col = 0;\n let top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n for (const hitbox of hitboxes) {\n if (hitbox.col !== col) {\n col = hitbox.col;\n top = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - this.columnSizes[col].height);\n }\n hitbox.top = top;\n hitbox.left += this.left + padding;\n hitbox.left = rtlHelper.leftForLtr(rtlHelper.x(hitbox.left), hitbox.width);\n top += hitbox.height + padding;\n }\n }\n }\n isHorizontal() {\n return this.options.position === 'top' || this.options.position === 'bottom';\n }\n draw() {\n if (this.options.display) {\n const ctx = this.ctx;\n clipArea(ctx, this);\n this._draw();\n unclipArea(ctx);\n }\n }\n _draw() {\n const {\n options: opts,\n columnSizes,\n lineWidths,\n ctx\n } = this;\n const {\n align,\n labels: labelOpts\n } = opts;\n const defaultColor = defaults.color;\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const labelFont = toFont(labelOpts.font);\n const {\n padding\n } = labelOpts;\n const fontSize = labelFont.size;\n const halfFontSize = fontSize / 2;\n let cursor;\n this.drawTitle();\n ctx.textAlign = rtlHelper.textAlign('left');\n ctx.textBaseline = 'middle';\n ctx.lineWidth = 0.5;\n ctx.font = labelFont.string;\n const {\n boxWidth,\n boxHeight,\n itemHeight\n } = getBoxSize(labelOpts, fontSize);\n const drawLegendBox = function (x, y, legendItem) {\n if (isNaN(boxWidth) || boxWidth <= 0 || isNaN(boxHeight) || boxHeight < 0) {\n return;\n }\n ctx.save();\n const lineWidth = valueOrDefault(legendItem.lineWidth, 1);\n ctx.fillStyle = valueOrDefault(legendItem.fillStyle, defaultColor);\n ctx.lineCap = valueOrDefault(legendItem.lineCap, 'butt');\n ctx.lineDashOffset = valueOrDefault(legendItem.lineDashOffset, 0);\n ctx.lineJoin = valueOrDefault(legendItem.lineJoin, 'miter');\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = valueOrDefault(legendItem.strokeStyle, defaultColor);\n ctx.setLineDash(valueOrDefault(legendItem.lineDash, []));\n if (labelOpts.usePointStyle) {\n const drawOptions = {\n radius: boxHeight * Math.SQRT2 / 2,\n pointStyle: legendItem.pointStyle,\n rotation: legendItem.rotation,\n borderWidth: lineWidth\n };\n const centerX = rtlHelper.xPlus(x, boxWidth / 2);\n const centerY = y + halfFontSize;\n drawPointLegend(ctx, drawOptions, centerX, centerY, labelOpts.pointStyleWidth && boxWidth);\n } else {\n const yBoxTop = y + Math.max((fontSize - boxHeight) / 2, 0);\n const xBoxLeft = rtlHelper.leftForLtr(x, boxWidth);\n const borderRadius = toTRBLCorners(legendItem.borderRadius);\n ctx.beginPath();\n if (Object.values(borderRadius).some(v => v !== 0)) {\n addRoundedRectPath(ctx, {\n x: xBoxLeft,\n y: yBoxTop,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius\n });\n } else {\n ctx.rect(xBoxLeft, yBoxTop, boxWidth, boxHeight);\n }\n ctx.fill();\n if (lineWidth !== 0) {\n ctx.stroke();\n }\n }\n ctx.restore();\n };\n const fillText = function (x, y, legendItem) {\n renderText(ctx, legendItem.text, x, y + itemHeight / 2, labelFont, {\n strikethrough: legendItem.hidden,\n textAlign: rtlHelper.textAlign(legendItem.textAlign)\n });\n };\n const isHorizontal = this.isHorizontal();\n const titleHeight = this._computeTitleHeight();\n if (isHorizontal) {\n cursor = {\n x: _alignStartEnd(align, this.left + padding, this.right - lineWidths[0]),\n y: this.top + padding + titleHeight,\n line: 0\n };\n } else {\n cursor = {\n x: this.left + padding,\n y: _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[0].height),\n line: 0\n };\n }\n overrideTextDirection(this.ctx, opts.textDirection);\n const lineHeight = itemHeight + padding;\n this.legendItems.forEach((legendItem, i) => {\n ctx.strokeStyle = legendItem.fontColor;\n ctx.fillStyle = legendItem.fontColor;\n const textWidth = ctx.measureText(legendItem.text).width;\n const textAlign = rtlHelper.textAlign(legendItem.textAlign || (legendItem.textAlign = labelOpts.textAlign));\n const width = boxWidth + halfFontSize + textWidth;\n let x = cursor.x;\n let y = cursor.y;\n rtlHelper.setWidth(this.width);\n if (isHorizontal) {\n if (i > 0 && x + width + padding > this.right) {\n y = cursor.y += lineHeight;\n cursor.line++;\n x = cursor.x = _alignStartEnd(align, this.left + padding, this.right - lineWidths[cursor.line]);\n }\n } else if (i > 0 && y + lineHeight > this.bottom) {\n x = cursor.x = x + columnSizes[cursor.line].width + padding;\n cursor.line++;\n y = cursor.y = _alignStartEnd(align, this.top + titleHeight + padding, this.bottom - columnSizes[cursor.line].height);\n }\n const realX = rtlHelper.x(x);\n drawLegendBox(realX, y, legendItem);\n x = _textX(textAlign, x + boxWidth + halfFontSize, isHorizontal ? x + width : this.right, opts.rtl);\n fillText(rtlHelper.x(x), y, legendItem);\n if (isHorizontal) {\n cursor.x += width + padding;\n } else if (typeof legendItem.text !== 'string') {\n const fontLineHeight = labelFont.lineHeight;\n cursor.y += calculateLegendItemHeight(legendItem, fontLineHeight) + padding;\n } else {\n cursor.y += lineHeight;\n }\n });\n restoreTextDirection(this.ctx, opts.textDirection);\n }\n drawTitle() {\n const opts = this.options;\n const titleOpts = opts.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n if (!titleOpts.display) {\n return;\n }\n const rtlHelper = getRtlAdapter(opts.rtl, this.left, this.width);\n const ctx = this.ctx;\n const position = titleOpts.position;\n const halfFontSize = titleFont.size / 2;\n const topPaddingPlusHalfFontSize = titlePadding.top + halfFontSize;\n let y;\n let left = this.left;\n let maxWidth = this.width;\n if (this.isHorizontal()) {\n maxWidth = Math.max(...this.lineWidths);\n y = this.top + topPaddingPlusHalfFontSize;\n left = _alignStartEnd(opts.align, left, this.right - maxWidth);\n } else {\n const maxHeight = this.columnSizes.reduce((acc, size) => Math.max(acc, size.height), 0);\n y = topPaddingPlusHalfFontSize + _alignStartEnd(opts.align, this.top, this.bottom - maxHeight - opts.labels.padding - this._computeTitleHeight());\n }\n const x = _alignStartEnd(position, left, left + maxWidth);\n ctx.textAlign = rtlHelper.textAlign(_toLeftRightCenter(position));\n ctx.textBaseline = 'middle';\n ctx.strokeStyle = titleOpts.color;\n ctx.fillStyle = titleOpts.color;\n ctx.font = titleFont.string;\n renderText(ctx, titleOpts.text, x, y, titleFont);\n }\n _computeTitleHeight() {\n const titleOpts = this.options.title;\n const titleFont = toFont(titleOpts.font);\n const titlePadding = toPadding(titleOpts.padding);\n return titleOpts.display ? titleFont.lineHeight + titlePadding.height : 0;\n }\n _getLegendItemAt(x, y) {\n let i, hitBox, lh;\n if (_isBetween(x, this.left, this.right) && _isBetween(y, this.top, this.bottom)) {\n lh = this.legendHitBoxes;\n for (i = 0; i < lh.length; ++i) {\n hitBox = lh[i];\n if (_isBetween(x, hitBox.left, hitBox.left + hitBox.width) && _isBetween(y, hitBox.top, hitBox.top + hitBox.height)) {\n return this.legendItems[i];\n }\n }\n }\n return null;\n }\n handleEvent(e) {\n const opts = this.options;\n if (!isListened(e.type, opts)) {\n return;\n }\n const hoveredItem = this._getLegendItemAt(e.x, e.y);\n if (e.type === 'mousemove' || e.type === 'mouseout') {\n const previous = this._hoveredItem;\n const sameItem = itemsEqual(previous, hoveredItem);\n if (previous && !sameItem) {\n callback(opts.onLeave, [e, previous, this], this);\n }\n this._hoveredItem = hoveredItem;\n if (hoveredItem && !sameItem) {\n callback(opts.onHover, [e, hoveredItem, this], this);\n }\n } else if (hoveredItem) {\n callback(opts.onClick, [e, hoveredItem, this], this);\n }\n }\n}\nfunction calculateItemSize(boxWidth, labelFont, ctx, legendItem, _itemHeight) {\n const itemWidth = calculateItemWidth(legendItem, boxWidth, labelFont, ctx);\n const itemHeight = calculateItemHeight(_itemHeight, legendItem, labelFont.lineHeight);\n return {\n itemWidth,\n itemHeight\n };\n}\nfunction calculateItemWidth(legendItem, boxWidth, labelFont, ctx) {\n let legendItemText = legendItem.text;\n if (legendItemText && typeof legendItemText !== 'string') {\n legendItemText = legendItemText.reduce((a, b) => a.length > b.length ? a : b);\n }\n return boxWidth + labelFont.size / 2 + ctx.measureText(legendItemText).width;\n}\nfunction calculateItemHeight(_itemHeight, legendItem, fontLineHeight) {\n let itemHeight = _itemHeight;\n if (typeof legendItem.text !== 'string') {\n itemHeight = calculateLegendItemHeight(legendItem, fontLineHeight);\n }\n return itemHeight;\n}\nfunction calculateLegendItemHeight(legendItem, fontLineHeight) {\n const labelHeight = legendItem.text ? legendItem.text.length : 0;\n return fontLineHeight * labelHeight;\n}\nfunction isListened(type, opts) {\n if ((type === 'mousemove' || type === 'mouseout') && (opts.onHover || opts.onLeave)) {\n return true;\n }\n if (opts.onClick && (type === 'click' || type === 'mouseup')) {\n return true;\n }\n return false;\n}\nvar plugin_legend = {\n id: 'legend',\n _element: Legend,\n start(chart, _args, options) {\n const legend = chart.legend = new Legend({\n ctx: chart.ctx,\n options,\n chart\n });\n layouts.configure(chart, legend, options);\n layouts.addBox(chart, legend);\n },\n stop(chart) {\n layouts.removeBox(chart, chart.legend);\n delete chart.legend;\n },\n beforeUpdate(chart, _args, options) {\n const legend = chart.legend;\n layouts.configure(chart, legend, options);\n legend.options = options;\n },\n afterUpdate(chart) {\n const legend = chart.legend;\n legend.buildLabels();\n legend.adjustHitBoxes();\n },\n afterEvent(chart, args) {\n if (!args.replay) {\n chart.legend.handleEvent(args.event);\n }\n },\n defaults: {\n display: true,\n position: 'top',\n align: 'center',\n fullSize: true,\n reverse: false,\n weight: 1000,\n onClick(e, legendItem, legend) {\n const index = legendItem.datasetIndex;\n const ci = legend.chart;\n if (ci.isDatasetVisible(index)) {\n ci.hide(index);\n legendItem.hidden = true;\n } else {\n ci.show(index);\n legendItem.hidden = false;\n }\n },\n onHover: null,\n onLeave: null,\n labels: {\n color: ctx => ctx.chart.options.color,\n boxWidth: 40,\n padding: 10,\n generateLabels(chart) {\n const datasets = chart.data.datasets;\n const {\n labels: {\n usePointStyle,\n pointStyle,\n textAlign,\n color,\n useBorderRadius,\n borderRadius\n }\n } = chart.legend.options;\n return chart._getSortedDatasetMetas().map(meta => {\n const style = meta.controller.getStyle(usePointStyle ? 0 : undefined);\n const borderWidth = toPadding(style.borderWidth);\n return {\n text: datasets[meta.index].label,\n fillStyle: style.backgroundColor,\n fontColor: color,\n hidden: !meta.visible,\n lineCap: style.borderCapStyle,\n lineDash: style.borderDash,\n lineDashOffset: style.borderDashOffset,\n lineJoin: style.borderJoinStyle,\n lineWidth: (borderWidth.width + borderWidth.height) / 4,\n strokeStyle: style.borderColor,\n pointStyle: pointStyle || style.pointStyle,\n rotation: style.rotation,\n textAlign: textAlign || style.textAlign,\n borderRadius: useBorderRadius && (borderRadius || style.borderRadius),\n datasetIndex: meta.index\n };\n }, this);\n }\n },\n title: {\n color: ctx => ctx.chart.options.color,\n display: false,\n position: 'center',\n text: ''\n }\n },\n descriptors: {\n _scriptable: name => !name.startsWith('on'),\n labels: {\n _scriptable: name => !['generateLabels', 'filter', 'sort'].includes(name)\n }\n }\n};\nclass Title extends Element {\n constructor(config) {\n super();\n this.chart = config.chart;\n this.options = config.options;\n this.ctx = config.ctx;\n this._padding = undefined;\n this.top = undefined;\n this.bottom = undefined;\n this.left = undefined;\n this.right = undefined;\n this.width = undefined;\n this.height = undefined;\n this.position = undefined;\n this.weight = undefined;\n this.fullSize = undefined;\n }\n update(maxWidth, maxHeight) {\n const opts = this.options;\n this.left = 0;\n this.top = 0;\n if (!opts.display) {\n this.width = this.height = this.right = this.bottom = 0;\n return;\n }\n this.width = this.right = maxWidth;\n this.height = this.bottom = maxHeight;\n const lineCount = isArray(opts.text) ? opts.text.length : 1;\n this._padding = toPadding(opts.padding);\n const textSize = lineCount * toFont(opts.font).lineHeight + this._padding.height;\n if (this.isHorizontal()) {\n this.height = textSize;\n } else {\n this.width = textSize;\n }\n }\n isHorizontal() {\n const pos = this.options.position;\n return pos === 'top' || pos === 'bottom';\n }\n _drawArgs(offset) {\n const {\n top,\n left,\n bottom,\n right,\n options\n } = this;\n const align = options.align;\n let rotation = 0;\n let maxWidth, titleX, titleY;\n if (this.isHorizontal()) {\n titleX = _alignStartEnd(align, left, right);\n titleY = top + offset;\n maxWidth = right - left;\n } else {\n if (options.position === 'left') {\n titleX = left + offset;\n titleY = _alignStartEnd(align, bottom, top);\n rotation = PI * -0.5;\n } else {\n titleX = right - offset;\n titleY = _alignStartEnd(align, top, bottom);\n rotation = PI * 0.5;\n }\n maxWidth = bottom - top;\n }\n return {\n titleX,\n titleY,\n maxWidth,\n rotation\n };\n }\n draw() {\n const ctx = this.ctx;\n const opts = this.options;\n if (!opts.display) {\n return;\n }\n const fontOpts = toFont(opts.font);\n const lineHeight = fontOpts.lineHeight;\n const offset = lineHeight / 2 + this._padding.top;\n const {\n titleX,\n titleY,\n maxWidth,\n rotation\n } = this._drawArgs(offset);\n renderText(ctx, opts.text, 0, 0, fontOpts, {\n color: opts.color,\n maxWidth,\n rotation,\n textAlign: _toLeftRightCenter(opts.align),\n textBaseline: 'middle',\n translation: [titleX, titleY]\n });\n }\n}\nfunction createTitle(chart, titleOpts) {\n const title = new Title({\n ctx: chart.ctx,\n options: titleOpts,\n chart\n });\n layouts.configure(chart, title, titleOpts);\n layouts.addBox(chart, title);\n chart.titleBlock = title;\n}\nvar plugin_title = {\n id: 'title',\n _element: Title,\n start(chart, _args, options) {\n createTitle(chart, options);\n },\n stop(chart) {\n const titleBlock = chart.titleBlock;\n layouts.removeBox(chart, titleBlock);\n delete chart.titleBlock;\n },\n beforeUpdate(chart, _args, options) {\n const title = chart.titleBlock;\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'bold'\n },\n fullSize: true,\n padding: 10,\n position: 'top',\n text: '',\n weight: 2000\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false\n }\n};\nconst map = new WeakMap();\nvar plugin_subtitle = {\n id: 'subtitle',\n start(chart, _args, options) {\n const title = new Title({\n ctx: chart.ctx,\n options,\n chart\n });\n layouts.configure(chart, title, options);\n layouts.addBox(chart, title);\n map.set(chart, title);\n },\n stop(chart) {\n layouts.removeBox(chart, map.get(chart));\n map.delete(chart);\n },\n beforeUpdate(chart, _args, options) {\n const title = map.get(chart);\n layouts.configure(chart, title, options);\n title.options = options;\n },\n defaults: {\n align: 'center',\n display: false,\n font: {\n weight: 'normal'\n },\n fullSize: true,\n padding: 0,\n position: 'top',\n text: '',\n weight: 1500\n },\n defaultRoutes: {\n color: 'color'\n },\n descriptors: {\n _scriptable: true,\n _indexable: false\n }\n};\nconst positioners = {\n average(items) {\n if (!items.length) {\n return false;\n }\n let i, len;\n let xSet = new Set();\n let y = 0;\n let count = 0;\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const pos = el.tooltipPosition();\n xSet.add(pos.x);\n y += pos.y;\n ++count;\n }\n }\n const xAverage = [...xSet].reduce((a, b) => a + b) / xSet.size;\n return {\n x: xAverage,\n y: y / count\n };\n },\n nearest(items, eventPosition) {\n if (!items.length) {\n return false;\n }\n let x = eventPosition.x;\n let y = eventPosition.y;\n let minDistance = Number.POSITIVE_INFINITY;\n let i, len, nearestElement;\n for (i = 0, len = items.length; i < len; ++i) {\n const el = items[i].element;\n if (el && el.hasValue()) {\n const center = el.getCenterPoint();\n const d = distanceBetweenPoints(eventPosition, center);\n if (d < minDistance) {\n minDistance = d;\n nearestElement = el;\n }\n }\n }\n if (nearestElement) {\n const tp = nearestElement.tooltipPosition();\n x = tp.x;\n y = tp.y;\n }\n return {\n x,\n y\n };\n }\n};\nfunction pushOrConcat(base, toPush) {\n if (toPush) {\n if (isArray(toPush)) {\n Array.prototype.push.apply(base, toPush);\n } else {\n base.push(toPush);\n }\n }\n return base;\n}\nfunction splitNewlines(str) {\n if ((typeof str === 'string' || str instanceof String) && str.indexOf('\\n') > -1) {\n return str.split('\\n');\n }\n return str;\n}\nfunction createTooltipItem(chart, item) {\n const {\n element,\n datasetIndex,\n index\n } = item;\n const controller = chart.getDatasetMeta(datasetIndex).controller;\n const {\n label,\n value\n } = controller.getLabelAndValue(index);\n return {\n chart,\n label,\n parsed: controller.getParsed(index),\n raw: chart.data.datasets[datasetIndex].data[index],\n formattedValue: value,\n dataset: controller.getDataset(),\n dataIndex: index,\n datasetIndex,\n element\n };\n}\nfunction getTooltipSize(tooltip, options) {\n const ctx = tooltip.chart.ctx;\n const {\n body,\n footer,\n title\n } = tooltip;\n const {\n boxWidth,\n boxHeight\n } = options;\n const bodyFont = toFont(options.bodyFont);\n const titleFont = toFont(options.titleFont);\n const footerFont = toFont(options.footerFont);\n const titleLineCount = title.length;\n const footerLineCount = footer.length;\n const bodyLineItemCount = body.length;\n const padding = toPadding(options.padding);\n let height = padding.height;\n let width = 0;\n let combinedBodyLength = body.reduce((count, bodyItem) => count + bodyItem.before.length + bodyItem.lines.length + bodyItem.after.length, 0);\n combinedBodyLength += tooltip.beforeBody.length + tooltip.afterBody.length;\n if (titleLineCount) {\n height += titleLineCount * titleFont.lineHeight + (titleLineCount - 1) * options.titleSpacing + options.titleMarginBottom;\n }\n if (combinedBodyLength) {\n const bodyLineHeight = options.displayColors ? Math.max(boxHeight, bodyFont.lineHeight) : bodyFont.lineHeight;\n height += bodyLineItemCount * bodyLineHeight + (combinedBodyLength - bodyLineItemCount) * bodyFont.lineHeight + (combinedBodyLength - 1) * options.bodySpacing;\n }\n if (footerLineCount) {\n height += options.footerMarginTop + footerLineCount * footerFont.lineHeight + (footerLineCount - 1) * options.footerSpacing;\n }\n let widthPadding = 0;\n const maxLineWidth = function (line) {\n width = Math.max(width, ctx.measureText(line).width + widthPadding);\n };\n ctx.save();\n ctx.font = titleFont.string;\n each(tooltip.title, maxLineWidth);\n ctx.font = bodyFont.string;\n each(tooltip.beforeBody.concat(tooltip.afterBody), maxLineWidth);\n widthPadding = options.displayColors ? boxWidth + 2 + options.boxPadding : 0;\n each(body, bodyItem => {\n each(bodyItem.before, maxLineWidth);\n each(bodyItem.lines, maxLineWidth);\n each(bodyItem.after, maxLineWidth);\n });\n widthPadding = 0;\n ctx.font = footerFont.string;\n each(tooltip.footer, maxLineWidth);\n ctx.restore();\n width += padding.width;\n return {\n width,\n height\n };\n}\nfunction determineYAlign(chart, size) {\n const {\n y,\n height\n } = size;\n if (y < height / 2) {\n return 'top';\n } else if (y > chart.height - height / 2) {\n return 'bottom';\n }\n return 'center';\n}\nfunction doesNotFitWithAlign(xAlign, chart, options, size) {\n const {\n x,\n width\n } = size;\n const caret = options.caretSize + options.caretPadding;\n if (xAlign === 'left' && x + width + caret > chart.width) {\n return true;\n }\n if (xAlign === 'right' && x - width - caret < 0) {\n return true;\n }\n}\nfunction determineXAlign(chart, options, size, yAlign) {\n const {\n x,\n width\n } = size;\n const {\n width: chartWidth,\n chartArea: {\n left,\n right\n }\n } = chart;\n let xAlign = 'center';\n if (yAlign === 'center') {\n xAlign = x <= (left + right) / 2 ? 'left' : 'right';\n } else if (x <= width / 2) {\n xAlign = 'left';\n } else if (x >= chartWidth - width / 2) {\n xAlign = 'right';\n }\n if (doesNotFitWithAlign(xAlign, chart, options, size)) {\n xAlign = 'center';\n }\n return xAlign;\n}\nfunction determineAlignment(chart, options, size) {\n const yAlign = size.yAlign || options.yAlign || determineYAlign(chart, size);\n return {\n xAlign: size.xAlign || options.xAlign || determineXAlign(chart, options, size, yAlign),\n yAlign\n };\n}\nfunction alignX(size, xAlign) {\n let {\n x,\n width\n } = size;\n if (xAlign === 'right') {\n x -= width;\n } else if (xAlign === 'center') {\n x -= width / 2;\n }\n return x;\n}\nfunction alignY(size, yAlign, paddingAndSize) {\n let {\n y,\n height\n } = size;\n if (yAlign === 'top') {\n y += paddingAndSize;\n } else if (yAlign === 'bottom') {\n y -= height + paddingAndSize;\n } else {\n y -= height / 2;\n }\n return y;\n}\nfunction getBackgroundPoint(options, size, alignment, chart) {\n const {\n caretSize,\n caretPadding,\n cornerRadius\n } = options;\n const {\n xAlign,\n yAlign\n } = alignment;\n const paddingAndSize = caretSize + caretPadding;\n const {\n topLeft,\n topRight,\n bottomLeft,\n bottomRight\n } = toTRBLCorners(cornerRadius);\n let x = alignX(size, xAlign);\n const y = alignY(size, yAlign, paddingAndSize);\n if (yAlign === 'center') {\n if (xAlign === 'left') {\n x += paddingAndSize;\n } else if (xAlign === 'right') {\n x -= paddingAndSize;\n }\n } else if (xAlign === 'left') {\n x -= Math.max(topLeft, bottomLeft) + caretSize;\n } else if (xAlign === 'right') {\n x += Math.max(topRight, bottomRight) + caretSize;\n }\n return {\n x: _limitValue(x, 0, chart.width - size.width),\n y: _limitValue(y, 0, chart.height - size.height)\n };\n}\nfunction getAlignedX(tooltip, align, options) {\n const padding = toPadding(options.padding);\n return align === 'center' ? tooltip.x + tooltip.width / 2 : align === 'right' ? tooltip.x + tooltip.width - padding.right : tooltip.x + padding.left;\n}\nfunction getBeforeAfterBodyLines(callback) {\n return pushOrConcat([], splitNewlines(callback));\n}\nfunction createTooltipContext(parent, tooltip, tooltipItems) {\n return createContext(parent, {\n tooltip,\n tooltipItems,\n type: 'tooltip'\n });\n}\nfunction overrideCallbacks(callbacks, context) {\n const override = context && context.dataset && context.dataset.tooltip && context.dataset.tooltip.callbacks;\n return override ? callbacks.override(override) : callbacks;\n}\nconst defaultCallbacks = {\n beforeTitle: noop,\n title(tooltipItems) {\n if (tooltipItems.length > 0) {\n const item = tooltipItems[0];\n const labels = item.chart.data.labels;\n const labelCount = labels ? labels.length : 0;\n if (this && this.options && this.options.mode === 'dataset') {\n return item.dataset.label || '';\n } else if (item.label) {\n return item.label;\n } else if (labelCount > 0 && item.dataIndex < labelCount) {\n return labels[item.dataIndex];\n }\n }\n return '';\n },\n afterTitle: noop,\n beforeBody: noop,\n beforeLabel: noop,\n label(tooltipItem) {\n if (this && this.options && this.options.mode === 'dataset') {\n return tooltipItem.label + ': ' + tooltipItem.formattedValue || tooltipItem.formattedValue;\n }\n let label = tooltipItem.dataset.label || '';\n if (label) {\n label += ': ';\n }\n const value = tooltipItem.formattedValue;\n if (!isNullOrUndef(value)) {\n label += value;\n }\n return label;\n },\n labelColor(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n borderColor: options.borderColor,\n backgroundColor: options.backgroundColor,\n borderWidth: options.borderWidth,\n borderDash: options.borderDash,\n borderDashOffset: options.borderDashOffset,\n borderRadius: 0\n };\n },\n labelTextColor() {\n return this.options.bodyColor;\n },\n labelPointStyle(tooltipItem) {\n const meta = tooltipItem.chart.getDatasetMeta(tooltipItem.datasetIndex);\n const options = meta.controller.getStyle(tooltipItem.dataIndex);\n return {\n pointStyle: options.pointStyle,\n rotation: options.rotation\n };\n },\n afterLabel: noop,\n afterBody: noop,\n beforeFooter: noop,\n footer: noop,\n afterFooter: noop\n};\nfunction invokeCallbackWithFallback(callbacks, name, ctx, arg) {\n const result = callbacks[name].call(ctx, arg);\n if (typeof result === 'undefined') {\n return defaultCallbacks[name].call(ctx, arg);\n }\n return result;\n}\nlet Tooltip = /*#__PURE__*/(() => {\n class Tooltip extends Element {\n static positioners = positioners;\n constructor(config) {\n super();\n this.opacity = 0;\n this._active = [];\n this._eventPosition = undefined;\n this._size = undefined;\n this._cachedAnimations = undefined;\n this._tooltipItems = [];\n this.$animations = undefined;\n this.$context = undefined;\n this.chart = config.chart;\n this.options = config.options;\n this.dataPoints = undefined;\n this.title = undefined;\n this.beforeBody = undefined;\n this.body = undefined;\n this.afterBody = undefined;\n this.footer = undefined;\n this.xAlign = undefined;\n this.yAlign = undefined;\n this.x = undefined;\n this.y = undefined;\n this.height = undefined;\n this.width = undefined;\n this.caretX = undefined;\n this.caretY = undefined;\n this.labelColors = undefined;\n this.labelPointStyles = undefined;\n this.labelTextColors = undefined;\n }\n initialize(options) {\n this.options = options;\n this._cachedAnimations = undefined;\n this.$context = undefined;\n }\n _resolveAnimations() {\n const cached = this._cachedAnimations;\n if (cached) {\n return cached;\n }\n const chart = this.chart;\n const options = this.options.setContext(this.getContext());\n const opts = options.enabled && chart.options.animation && options.animations;\n const animations = new Animations(this.chart, opts);\n if (opts._cacheable) {\n this._cachedAnimations = Object.freeze(animations);\n }\n return animations;\n }\n getContext() {\n return this.$context || (this.$context = createTooltipContext(this.chart.getContext(), this, this._tooltipItems));\n }\n getTitle(context, options) {\n const {\n callbacks\n } = options;\n const beforeTitle = invokeCallbackWithFallback(callbacks, 'beforeTitle', this, context);\n const title = invokeCallbackWithFallback(callbacks, 'title', this, context);\n const afterTitle = invokeCallbackWithFallback(callbacks, 'afterTitle', this, context);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeTitle));\n lines = pushOrConcat(lines, splitNewlines(title));\n lines = pushOrConcat(lines, splitNewlines(afterTitle));\n return lines;\n }\n getBeforeBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(invokeCallbackWithFallback(options.callbacks, 'beforeBody', this, tooltipItems));\n }\n getBody(tooltipItems, options) {\n const {\n callbacks\n } = options;\n const bodyItems = [];\n each(tooltipItems, context => {\n const bodyItem = {\n before: [],\n lines: [],\n after: []\n };\n const scoped = overrideCallbacks(callbacks, context);\n pushOrConcat(bodyItem.before, splitNewlines(invokeCallbackWithFallback(scoped, 'beforeLabel', this, context)));\n pushOrConcat(bodyItem.lines, invokeCallbackWithFallback(scoped, 'label', this, context));\n pushOrConcat(bodyItem.after, splitNewlines(invokeCallbackWithFallback(scoped, 'afterLabel', this, context)));\n bodyItems.push(bodyItem);\n });\n return bodyItems;\n }\n getAfterBody(tooltipItems, options) {\n return getBeforeAfterBodyLines(invokeCallbackWithFallback(options.callbacks, 'afterBody', this, tooltipItems));\n }\n getFooter(tooltipItems, options) {\n const {\n callbacks\n } = options;\n const beforeFooter = invokeCallbackWithFallback(callbacks, 'beforeFooter', this, tooltipItems);\n const footer = invokeCallbackWithFallback(callbacks, 'footer', this, tooltipItems);\n const afterFooter = invokeCallbackWithFallback(callbacks, 'afterFooter', this, tooltipItems);\n let lines = [];\n lines = pushOrConcat(lines, splitNewlines(beforeFooter));\n lines = pushOrConcat(lines, splitNewlines(footer));\n lines = pushOrConcat(lines, splitNewlines(afterFooter));\n return lines;\n }\n _createItems(options) {\n const active = this._active;\n const data = this.chart.data;\n const labelColors = [];\n const labelPointStyles = [];\n const labelTextColors = [];\n let tooltipItems = [];\n let i, len;\n for (i = 0, len = active.length; i < len; ++i) {\n tooltipItems.push(createTooltipItem(this.chart, active[i]));\n }\n if (options.filter) {\n tooltipItems = tooltipItems.filter((element, index, array) => options.filter(element, index, array, data));\n }\n if (options.itemSort) {\n tooltipItems = tooltipItems.sort((a, b) => options.itemSort(a, b, data));\n }\n each(tooltipItems, context => {\n const scoped = overrideCallbacks(options.callbacks, context);\n labelColors.push(invokeCallbackWithFallback(scoped, 'labelColor', this, context));\n labelPointStyles.push(invokeCallbackWithFallback(scoped, 'labelPointStyle', this, context));\n labelTextColors.push(invokeCallbackWithFallback(scoped, 'labelTextColor', this, context));\n });\n this.labelColors = labelColors;\n this.labelPointStyles = labelPointStyles;\n this.labelTextColors = labelTextColors;\n this.dataPoints = tooltipItems;\n return tooltipItems;\n }\n update(changed, replay) {\n const options = this.options.setContext(this.getContext());\n const active = this._active;\n let properties;\n let tooltipItems = [];\n if (!active.length) {\n if (this.opacity !== 0) {\n properties = {\n opacity: 0\n };\n }\n } else {\n const position = positioners[options.position].call(this, active, this._eventPosition);\n tooltipItems = this._createItems(options);\n this.title = this.getTitle(tooltipItems, options);\n this.beforeBody = this.getBeforeBody(tooltipItems, options);\n this.body = this.getBody(tooltipItems, options);\n this.afterBody = this.getAfterBody(tooltipItems, options);\n this.footer = this.getFooter(tooltipItems, options);\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, size);\n const alignment = determineAlignment(this.chart, options, positionAndSize);\n const backgroundPoint = getBackgroundPoint(options, positionAndSize, alignment, this.chart);\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n properties = {\n opacity: 1,\n x: backgroundPoint.x,\n y: backgroundPoint.y,\n width: size.width,\n height: size.height,\n caretX: position.x,\n caretY: position.y\n };\n }\n this._tooltipItems = tooltipItems;\n this.$context = undefined;\n if (properties) {\n this._resolveAnimations().update(this, properties);\n }\n if (changed && options.external) {\n options.external.call(this, {\n chart: this.chart,\n tooltip: this,\n replay\n });\n }\n }\n drawCaret(tooltipPoint, ctx, size, options) {\n const caretPosition = this.getCaretPosition(tooltipPoint, size, options);\n ctx.lineTo(caretPosition.x1, caretPosition.y1);\n ctx.lineTo(caretPosition.x2, caretPosition.y2);\n ctx.lineTo(caretPosition.x3, caretPosition.y3);\n }\n getCaretPosition(tooltipPoint, size, options) {\n const {\n xAlign,\n yAlign\n } = this;\n const {\n caretSize,\n cornerRadius\n } = options;\n const {\n topLeft,\n topRight,\n bottomLeft,\n bottomRight\n } = toTRBLCorners(cornerRadius);\n const {\n x: ptX,\n y: ptY\n } = tooltipPoint;\n const {\n width,\n height\n } = size;\n let x1, x2, x3, y1, y2, y3;\n if (yAlign === 'center') {\n y2 = ptY + height / 2;\n if (xAlign === 'left') {\n x1 = ptX;\n x2 = x1 - caretSize;\n y1 = y2 + caretSize;\n y3 = y2 - caretSize;\n } else {\n x1 = ptX + width;\n x2 = x1 + caretSize;\n y1 = y2 - caretSize;\n y3 = y2 + caretSize;\n }\n x3 = x1;\n } else {\n if (xAlign === 'left') {\n x2 = ptX + Math.max(topLeft, bottomLeft) + caretSize;\n } else if (xAlign === 'right') {\n x2 = ptX + width - Math.max(topRight, bottomRight) - caretSize;\n } else {\n x2 = this.caretX;\n }\n if (yAlign === 'top') {\n y1 = ptY;\n y2 = y1 - caretSize;\n x1 = x2 - caretSize;\n x3 = x2 + caretSize;\n } else {\n y1 = ptY + height;\n y2 = y1 + caretSize;\n x1 = x2 + caretSize;\n x3 = x2 - caretSize;\n }\n y3 = y1;\n }\n return {\n x1,\n x2,\n x3,\n y1,\n y2,\n y3\n };\n }\n drawTitle(pt, ctx, options) {\n const title = this.title;\n const length = title.length;\n let titleFont, titleSpacing, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.titleAlign, options);\n ctx.textAlign = rtlHelper.textAlign(options.titleAlign);\n ctx.textBaseline = 'middle';\n titleFont = toFont(options.titleFont);\n titleSpacing = options.titleSpacing;\n ctx.fillStyle = options.titleColor;\n ctx.font = titleFont.string;\n for (i = 0; i < length; ++i) {\n ctx.fillText(title[i], rtlHelper.x(pt.x), pt.y + titleFont.lineHeight / 2);\n pt.y += titleFont.lineHeight + titleSpacing;\n if (i + 1 === length) {\n pt.y += options.titleMarginBottom - titleSpacing;\n }\n }\n }\n }\n _drawColorBox(ctx, pt, i, rtlHelper, options) {\n const labelColor = this.labelColors[i];\n const labelPointStyle = this.labelPointStyles[i];\n const {\n boxHeight,\n boxWidth\n } = options;\n const bodyFont = toFont(options.bodyFont);\n const colorX = getAlignedX(this, 'left', options);\n const rtlColorX = rtlHelper.x(colorX);\n const yOffSet = boxHeight < bodyFont.lineHeight ? (bodyFont.lineHeight - boxHeight) / 2 : 0;\n const colorY = pt.y + yOffSet;\n if (options.usePointStyle) {\n const drawOptions = {\n radius: Math.min(boxWidth, boxHeight) / 2,\n pointStyle: labelPointStyle.pointStyle,\n rotation: labelPointStyle.rotation,\n borderWidth: 1\n };\n const centerX = rtlHelper.leftForLtr(rtlColorX, boxWidth) + boxWidth / 2;\n const centerY = colorY + boxHeight / 2;\n ctx.strokeStyle = options.multiKeyBackground;\n ctx.fillStyle = options.multiKeyBackground;\n drawPoint(ctx, drawOptions, centerX, centerY);\n ctx.strokeStyle = labelColor.borderColor;\n ctx.fillStyle = labelColor.backgroundColor;\n drawPoint(ctx, drawOptions, centerX, centerY);\n } else {\n ctx.lineWidth = isObject(labelColor.borderWidth) ? Math.max(...Object.values(labelColor.borderWidth)) : labelColor.borderWidth || 1;\n ctx.strokeStyle = labelColor.borderColor;\n ctx.setLineDash(labelColor.borderDash || []);\n ctx.lineDashOffset = labelColor.borderDashOffset || 0;\n const outerX = rtlHelper.leftForLtr(rtlColorX, boxWidth);\n const innerX = rtlHelper.leftForLtr(rtlHelper.xPlus(rtlColorX, 1), boxWidth - 2);\n const borderRadius = toTRBLCorners(labelColor.borderRadius);\n if (Object.values(borderRadius).some(v => v !== 0)) {\n ctx.beginPath();\n ctx.fillStyle = options.multiKeyBackground;\n addRoundedRectPath(ctx, {\n x: outerX,\n y: colorY,\n w: boxWidth,\n h: boxHeight,\n radius: borderRadius\n });\n ctx.fill();\n ctx.stroke();\n ctx.fillStyle = labelColor.backgroundColor;\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: innerX,\n y: colorY + 1,\n w: boxWidth - 2,\n h: boxHeight - 2,\n radius: borderRadius\n });\n ctx.fill();\n } else {\n ctx.fillStyle = options.multiKeyBackground;\n ctx.fillRect(outerX, colorY, boxWidth, boxHeight);\n ctx.strokeRect(outerX, colorY, boxWidth, boxHeight);\n ctx.fillStyle = labelColor.backgroundColor;\n ctx.fillRect(innerX, colorY + 1, boxWidth - 2, boxHeight - 2);\n }\n }\n ctx.fillStyle = this.labelTextColors[i];\n }\n drawBody(pt, ctx, options) {\n const {\n body\n } = this;\n const {\n bodySpacing,\n bodyAlign,\n displayColors,\n boxHeight,\n boxWidth,\n boxPadding\n } = options;\n const bodyFont = toFont(options.bodyFont);\n let bodyLineHeight = bodyFont.lineHeight;\n let xLinePadding = 0;\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n const fillLineOfText = function (line) {\n ctx.fillText(line, rtlHelper.x(pt.x + xLinePadding), pt.y + bodyLineHeight / 2);\n pt.y += bodyLineHeight + bodySpacing;\n };\n const bodyAlignForCalculation = rtlHelper.textAlign(bodyAlign);\n let bodyItem, textColor, lines, i, j, ilen, jlen;\n ctx.textAlign = bodyAlign;\n ctx.textBaseline = 'middle';\n ctx.font = bodyFont.string;\n pt.x = getAlignedX(this, bodyAlignForCalculation, options);\n ctx.fillStyle = options.bodyColor;\n each(this.beforeBody, fillLineOfText);\n xLinePadding = displayColors && bodyAlignForCalculation !== 'right' ? bodyAlign === 'center' ? boxWidth / 2 + boxPadding : boxWidth + 2 + boxPadding : 0;\n for (i = 0, ilen = body.length; i < ilen; ++i) {\n bodyItem = body[i];\n textColor = this.labelTextColors[i];\n ctx.fillStyle = textColor;\n each(bodyItem.before, fillLineOfText);\n lines = bodyItem.lines;\n if (displayColors && lines.length) {\n this._drawColorBox(ctx, pt, i, rtlHelper, options);\n bodyLineHeight = Math.max(bodyFont.lineHeight, boxHeight);\n }\n for (j = 0, jlen = lines.length; j < jlen; ++j) {\n fillLineOfText(lines[j]);\n bodyLineHeight = bodyFont.lineHeight;\n }\n each(bodyItem.after, fillLineOfText);\n }\n xLinePadding = 0;\n bodyLineHeight = bodyFont.lineHeight;\n each(this.afterBody, fillLineOfText);\n pt.y -= bodySpacing;\n }\n drawFooter(pt, ctx, options) {\n const footer = this.footer;\n const length = footer.length;\n let footerFont, i;\n if (length) {\n const rtlHelper = getRtlAdapter(options.rtl, this.x, this.width);\n pt.x = getAlignedX(this, options.footerAlign, options);\n pt.y += options.footerMarginTop;\n ctx.textAlign = rtlHelper.textAlign(options.footerAlign);\n ctx.textBaseline = 'middle';\n footerFont = toFont(options.footerFont);\n ctx.fillStyle = options.footerColor;\n ctx.font = footerFont.string;\n for (i = 0; i < length; ++i) {\n ctx.fillText(footer[i], rtlHelper.x(pt.x), pt.y + footerFont.lineHeight / 2);\n pt.y += footerFont.lineHeight + options.footerSpacing;\n }\n }\n }\n drawBackground(pt, ctx, tooltipSize, options) {\n const {\n xAlign,\n yAlign\n } = this;\n const {\n x,\n y\n } = pt;\n const {\n width,\n height\n } = tooltipSize;\n const {\n topLeft,\n topRight,\n bottomLeft,\n bottomRight\n } = toTRBLCorners(options.cornerRadius);\n ctx.fillStyle = options.backgroundColor;\n ctx.strokeStyle = options.borderColor;\n ctx.lineWidth = options.borderWidth;\n ctx.beginPath();\n ctx.moveTo(x + topLeft, y);\n if (yAlign === 'top') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width - topRight, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + topRight);\n if (yAlign === 'center' && xAlign === 'right') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + width, y + height - bottomRight);\n ctx.quadraticCurveTo(x + width, y + height, x + width - bottomRight, y + height);\n if (yAlign === 'bottom') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x + bottomLeft, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - bottomLeft);\n if (yAlign === 'center' && xAlign === 'left') {\n this.drawCaret(pt, ctx, tooltipSize, options);\n }\n ctx.lineTo(x, y + topLeft);\n ctx.quadraticCurveTo(x, y, x + topLeft, y);\n ctx.closePath();\n ctx.fill();\n if (options.borderWidth > 0) {\n ctx.stroke();\n }\n }\n _updateAnimationTarget(options) {\n const chart = this.chart;\n const anims = this.$animations;\n const animX = anims && anims.x;\n const animY = anims && anims.y;\n if (animX || animY) {\n const position = positioners[options.position].call(this, this._active, this._eventPosition);\n if (!position) {\n return;\n }\n const size = this._size = getTooltipSize(this, options);\n const positionAndSize = Object.assign({}, position, this._size);\n const alignment = determineAlignment(chart, options, positionAndSize);\n const point = getBackgroundPoint(options, positionAndSize, alignment, chart);\n if (animX._to !== point.x || animY._to !== point.y) {\n this.xAlign = alignment.xAlign;\n this.yAlign = alignment.yAlign;\n this.width = size.width;\n this.height = size.height;\n this.caretX = position.x;\n this.caretY = position.y;\n this._resolveAnimations().update(this, point);\n }\n }\n }\n _willRender() {\n return !!this.opacity;\n }\n draw(ctx) {\n const options = this.options.setContext(this.getContext());\n let opacity = this.opacity;\n if (!opacity) {\n return;\n }\n this._updateAnimationTarget(options);\n const tooltipSize = {\n width: this.width,\n height: this.height\n };\n const pt = {\n x: this.x,\n y: this.y\n };\n opacity = Math.abs(opacity) < 1e-3 ? 0 : opacity;\n const padding = toPadding(options.padding);\n const hasTooltipContent = this.title.length || this.beforeBody.length || this.body.length || this.afterBody.length || this.footer.length;\n if (options.enabled && hasTooltipContent) {\n ctx.save();\n ctx.globalAlpha = opacity;\n this.drawBackground(pt, ctx, tooltipSize, options);\n overrideTextDirection(ctx, options.textDirection);\n pt.y += padding.top;\n this.drawTitle(pt, ctx, options);\n this.drawBody(pt, ctx, options);\n this.drawFooter(pt, ctx, options);\n restoreTextDirection(ctx, options.textDirection);\n ctx.restore();\n }\n }\n getActiveElements() {\n return this._active || [];\n }\n setActiveElements(activeElements, eventPosition) {\n const lastActive = this._active;\n const active = activeElements.map(({\n datasetIndex,\n index\n }) => {\n const meta = this.chart.getDatasetMeta(datasetIndex);\n if (!meta) {\n throw new Error('Cannot find a dataset at index ' + datasetIndex);\n }\n return {\n datasetIndex,\n element: meta.data[index],\n index\n };\n });\n const changed = !_elementsEqual(lastActive, active);\n const positionChanged = this._positionChanged(active, eventPosition);\n if (changed || positionChanged) {\n this._active = active;\n this._eventPosition = eventPosition;\n this._ignoreReplayEvents = true;\n this.update(true);\n }\n }\n handleEvent(e, replay, inChartArea = true) {\n if (replay && this._ignoreReplayEvents) {\n return false;\n }\n this._ignoreReplayEvents = false;\n const options = this.options;\n const lastActive = this._active || [];\n const active = this._getActiveElements(e, lastActive, replay, inChartArea);\n const positionChanged = this._positionChanged(active, e);\n const changed = replay || !_elementsEqual(active, lastActive) || positionChanged;\n if (changed) {\n this._active = active;\n if (options.enabled || options.external) {\n this._eventPosition = {\n x: e.x,\n y: e.y\n };\n this.update(true, replay);\n }\n }\n return changed;\n }\n _getActiveElements(e, lastActive, replay, inChartArea) {\n const options = this.options;\n if (e.type === 'mouseout') {\n return [];\n }\n if (!inChartArea) {\n return lastActive.filter(i => this.chart.data.datasets[i.datasetIndex] && this.chart.getDatasetMeta(i.datasetIndex).controller.getParsed(i.index) !== undefined);\n }\n const active = this.chart.getElementsAtEventForMode(e, options.mode, options, replay);\n if (options.reverse) {\n active.reverse();\n }\n return active;\n }\n _positionChanged(active, e) {\n const {\n caretX,\n caretY,\n options\n } = this;\n const position = positioners[options.position].call(this, active, e);\n return position !== false && (caretX !== position.x || caretY !== position.y);\n }\n }\n return Tooltip;\n})();\nvar plugin_tooltip = {\n id: 'tooltip',\n _element: Tooltip,\n positioners,\n afterInit(chart, _args, options) {\n if (options) {\n chart.tooltip = new Tooltip({\n chart,\n options\n });\n }\n },\n beforeUpdate(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n reset(chart, _args, options) {\n if (chart.tooltip) {\n chart.tooltip.initialize(options);\n }\n },\n afterDraw(chart) {\n const tooltip = chart.tooltip;\n if (tooltip && tooltip._willRender()) {\n const args = {\n tooltip\n };\n if (chart.notifyPlugins('beforeTooltipDraw', {\n ...args,\n cancelable: true\n }) === false) {\n return;\n }\n tooltip.draw(chart.ctx);\n chart.notifyPlugins('afterTooltipDraw', args);\n }\n },\n afterEvent(chart, args) {\n if (chart.tooltip) {\n const useFinalPosition = args.replay;\n if (chart.tooltip.handleEvent(args.event, useFinalPosition, args.inChartArea)) {\n args.changed = true;\n }\n }\n },\n defaults: {\n enabled: true,\n external: null,\n position: 'average',\n backgroundColor: 'rgba(0,0,0,0.8)',\n titleColor: '#fff',\n titleFont: {\n weight: 'bold'\n },\n titleSpacing: 2,\n titleMarginBottom: 6,\n titleAlign: 'left',\n bodyColor: '#fff',\n bodySpacing: 2,\n bodyFont: {},\n bodyAlign: 'left',\n footerColor: '#fff',\n footerSpacing: 2,\n footerMarginTop: 6,\n footerFont: {\n weight: 'bold'\n },\n footerAlign: 'left',\n padding: 6,\n caretPadding: 2,\n caretSize: 5,\n cornerRadius: 6,\n boxHeight: (ctx, opts) => opts.bodyFont.size,\n boxWidth: (ctx, opts) => opts.bodyFont.size,\n multiKeyBackground: '#fff',\n displayColors: true,\n boxPadding: 0,\n borderColor: 'rgba(0,0,0,0)',\n borderWidth: 0,\n animation: {\n duration: 400,\n easing: 'easeOutQuart'\n },\n animations: {\n numbers: {\n type: 'number',\n properties: ['x', 'y', 'width', 'height', 'caretX', 'caretY']\n },\n opacity: {\n easing: 'linear',\n duration: 200\n }\n },\n callbacks: defaultCallbacks\n },\n defaultRoutes: {\n bodyFont: 'font',\n footerFont: 'font',\n titleFont: 'font'\n },\n descriptors: {\n _scriptable: name => name !== 'filter' && name !== 'itemSort' && name !== 'external',\n _indexable: false,\n callbacks: {\n _scriptable: false,\n _indexable: false\n },\n animation: {\n _fallback: false\n },\n animations: {\n _fallback: 'animation'\n }\n },\n additionalOptionScopes: ['interaction']\n};\nvar plugins = /*#__PURE__*/Object.freeze({\n __proto__: null,\n Colors: plugin_colors,\n Decimation: plugin_decimation,\n Filler: index,\n Legend: plugin_legend,\n SubTitle: plugin_subtitle,\n Title: plugin_title,\n Tooltip: plugin_tooltip\n});\nconst addIfString = (labels, raw, index, addedLabels) => {\n if (typeof raw === 'string') {\n index = labels.push(raw) - 1;\n addedLabels.unshift({\n index,\n label: raw\n });\n } else if (isNaN(raw)) {\n index = null;\n }\n return index;\n};\nfunction findOrAddLabel(labels, raw, index, addedLabels) {\n const first = labels.indexOf(raw);\n if (first === -1) {\n return addIfString(labels, raw, index, addedLabels);\n }\n const last = labels.lastIndexOf(raw);\n return first !== last ? index : first;\n}\nconst validIndex = (index, max) => index === null ? null : _limitValue(Math.round(index), 0, max);\nfunction _getLabelForValue(value) {\n const labels = this.getLabels();\n if (value >= 0 && value < labels.length) {\n return labels[value];\n }\n return value;\n}\nlet CategoryScale = /*#__PURE__*/(() => {\n class CategoryScale extends Scale {\n static id = 'category';\n static defaults = {\n ticks: {\n callback: _getLabelForValue\n }\n };\n constructor(cfg) {\n super(cfg);\n this._startValue = undefined;\n this._valueRange = 0;\n this._addedLabels = [];\n }\n init(scaleOptions) {\n const added = this._addedLabels;\n if (added.length) {\n const labels = this.getLabels();\n for (const {\n index,\n label\n } of added) {\n if (labels[index] === label) {\n labels.splice(index, 1);\n }\n }\n this._addedLabels = [];\n }\n super.init(scaleOptions);\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n const labels = this.getLabels();\n index = isFinite(index) && labels[index] === raw ? index : findOrAddLabel(labels, raw, valueOrDefault(index, raw), this._addedLabels);\n return validIndex(index, labels.length - 1);\n }\n determineDataLimits() {\n const {\n minDefined,\n maxDefined\n } = this.getUserBounds();\n let {\n min,\n max\n } = this.getMinMax(true);\n if (this.options.bounds === 'ticks') {\n if (!minDefined) {\n min = 0;\n }\n if (!maxDefined) {\n max = this.getLabels().length - 1;\n }\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const min = this.min;\n const max = this.max;\n const offset = this.options.offset;\n const ticks = [];\n let labels = this.getLabels();\n labels = min === 0 && max === labels.length - 1 ? labels : labels.slice(min, max + 1);\n this._valueRange = Math.max(labels.length - (offset ? 0 : 1), 1);\n this._startValue = this.min - (offset ? 0.5 : 0);\n for (let value = min; value <= max; value++) {\n ticks.push({\n value\n });\n }\n return ticks;\n }\n getLabelForValue(value) {\n return _getLabelForValue.call(this, value);\n }\n configure() {\n super.configure();\n if (!this.isHorizontal()) {\n this._reversePixels = !this._reversePixels;\n }\n }\n getPixelForValue(value) {\n if (typeof value !== 'number') {\n value = this.parse(value);\n }\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getPixelForTick(index) {\n const ticks = this.ticks;\n if (index < 0 || index > ticks.length - 1) {\n return null;\n }\n return this.getPixelForValue(ticks[index].value);\n }\n getValueForPixel(pixel) {\n return Math.round(this._startValue + this.getDecimalForPixel(pixel) * this._valueRange);\n }\n getBasePixel() {\n return this.bottom;\n }\n }\n return CategoryScale;\n})();\nfunction generateTicks$1(generationOptions, dataRange) {\n const ticks = [];\n const MIN_SPACING = 1e-14;\n const {\n bounds,\n step,\n min,\n max,\n precision,\n count,\n maxTicks,\n maxDigits,\n includeBounds\n } = generationOptions;\n const unit = step || 1;\n const maxSpaces = maxTicks - 1;\n const {\n min: rmin,\n max: rmax\n } = dataRange;\n const minDefined = !isNullOrUndef(min);\n const maxDefined = !isNullOrUndef(max);\n const countDefined = !isNullOrUndef(count);\n const minSpacing = (rmax - rmin) / (maxDigits + 1);\n let spacing = niceNum((rmax - rmin) / maxSpaces / unit) * unit;\n let factor, niceMin, niceMax, numSpaces;\n if (spacing < MIN_SPACING && !minDefined && !maxDefined) {\n return [{\n value: rmin\n }, {\n value: rmax\n }];\n }\n numSpaces = Math.ceil(rmax / spacing) - Math.floor(rmin / spacing);\n if (numSpaces > maxSpaces) {\n spacing = niceNum(numSpaces * spacing / maxSpaces / unit) * unit;\n }\n if (!isNullOrUndef(precision)) {\n factor = Math.pow(10, precision);\n spacing = Math.ceil(spacing * factor) / factor;\n }\n if (bounds === 'ticks') {\n niceMin = Math.floor(rmin / spacing) * spacing;\n niceMax = Math.ceil(rmax / spacing) * spacing;\n } else {\n niceMin = rmin;\n niceMax = rmax;\n }\n if (minDefined && maxDefined && step && almostWhole((max - min) / step, spacing / 1000)) {\n numSpaces = Math.round(Math.min((max - min) / spacing, maxTicks));\n spacing = (max - min) / numSpaces;\n niceMin = min;\n niceMax = max;\n } else if (countDefined) {\n niceMin = minDefined ? min : niceMin;\n niceMax = maxDefined ? max : niceMax;\n numSpaces = count - 1;\n spacing = (niceMax - niceMin) / numSpaces;\n } else {\n numSpaces = (niceMax - niceMin) / spacing;\n if (almostEquals(numSpaces, Math.round(numSpaces), spacing / 1000)) {\n numSpaces = Math.round(numSpaces);\n } else {\n numSpaces = Math.ceil(numSpaces);\n }\n }\n const decimalPlaces = Math.max(_decimalPlaces(spacing), _decimalPlaces(niceMin));\n factor = Math.pow(10, isNullOrUndef(precision) ? decimalPlaces : precision);\n niceMin = Math.round(niceMin * factor) / factor;\n niceMax = Math.round(niceMax * factor) / factor;\n let j = 0;\n if (minDefined) {\n if (includeBounds && niceMin !== min) {\n ticks.push({\n value: min\n });\n if (niceMin < min) {\n j++;\n }\n if (almostEquals(Math.round((niceMin + j * spacing) * factor) / factor, min, relativeLabelSize(min, minSpacing, generationOptions))) {\n j++;\n }\n } else if (niceMin < min) {\n j++;\n }\n }\n for (; j < numSpaces; ++j) {\n const tickValue = Math.round((niceMin + j * spacing) * factor) / factor;\n if (maxDefined && tickValue > max) {\n break;\n }\n ticks.push({\n value: tickValue\n });\n }\n if (maxDefined && includeBounds && niceMax !== max) {\n if (ticks.length && almostEquals(ticks[ticks.length - 1].value, max, relativeLabelSize(max, minSpacing, generationOptions))) {\n ticks[ticks.length - 1].value = max;\n } else {\n ticks.push({\n value: max\n });\n }\n } else if (!maxDefined || niceMax === max) {\n ticks.push({\n value: niceMax\n });\n }\n return ticks;\n}\nfunction relativeLabelSize(value, minSpacing, {\n horizontal,\n minRotation\n}) {\n const rad = toRadians(minRotation);\n const ratio = (horizontal ? Math.sin(rad) : Math.cos(rad)) || 0.001;\n const length = 0.75 * minSpacing * ('' + value).length;\n return Math.min(minSpacing / ratio, length);\n}\nclass LinearScaleBase extends Scale {\n constructor(cfg) {\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._endValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n if (isNullOrUndef(raw)) {\n return null;\n }\n if ((typeof raw === 'number' || raw instanceof Number) && !isFinite(+raw)) {\n return null;\n }\n return +raw;\n }\n handleTickRangeOptions() {\n const {\n beginAtZero\n } = this.options;\n const {\n minDefined,\n maxDefined\n } = this.getUserBounds();\n let {\n min,\n max\n } = this;\n const setMin = v => min = minDefined ? min : v;\n const setMax = v => max = maxDefined ? max : v;\n if (beginAtZero) {\n const minSign = sign(min);\n const maxSign = sign(max);\n if (minSign < 0 && maxSign < 0) {\n setMax(0);\n } else if (minSign > 0 && maxSign > 0) {\n setMin(0);\n }\n }\n if (min === max) {\n let offset = max === 0 ? 1 : Math.abs(max * 0.05);\n setMax(max + offset);\n if (!beginAtZero) {\n setMin(min - offset);\n }\n }\n this.min = min;\n this.max = max;\n }\n getTickLimit() {\n const tickOpts = this.options.ticks;\n let {\n maxTicksLimit,\n stepSize\n } = tickOpts;\n let maxTicks;\n if (stepSize) {\n maxTicks = Math.ceil(this.max / stepSize) - Math.floor(this.min / stepSize) + 1;\n if (maxTicks > 1000) {\n console.warn(`scales.${this.id}.ticks.stepSize: ${stepSize} would result generating up to ${maxTicks} ticks. Limiting to 1000.`);\n maxTicks = 1000;\n }\n } else {\n maxTicks = this.computeTickLimit();\n maxTicksLimit = maxTicksLimit || 11;\n }\n if (maxTicksLimit) {\n maxTicks = Math.min(maxTicksLimit, maxTicks);\n }\n return maxTicks;\n }\n computeTickLimit() {\n return Number.POSITIVE_INFINITY;\n }\n buildTicks() {\n const opts = this.options;\n const tickOpts = opts.ticks;\n let maxTicks = this.getTickLimit();\n maxTicks = Math.max(2, maxTicks);\n const numericGeneratorOptions = {\n maxTicks,\n bounds: opts.bounds,\n min: opts.min,\n max: opts.max,\n precision: tickOpts.precision,\n step: tickOpts.stepSize,\n count: tickOpts.count,\n maxDigits: this._maxDigits(),\n horizontal: this.isHorizontal(),\n minRotation: tickOpts.minRotation || 0,\n includeBounds: tickOpts.includeBounds !== false\n };\n const dataRange = this._range || this;\n const ticks = generateTicks$1(numericGeneratorOptions, dataRange);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n configure() {\n const ticks = this.ticks;\n let start = this.min;\n let end = this.max;\n super.configure();\n if (this.options.offset && ticks.length) {\n const offset = (end - start) / Math.max(ticks.length - 1, 1) / 2;\n start -= offset;\n end += offset;\n }\n this._startValue = start;\n this._endValue = end;\n this._valueRange = end - start;\n }\n getLabelForValue(value) {\n return formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n}\nclass LinearScale extends LinearScaleBase {\n static id = 'linear';\n static defaults = {\n ticks: {\n callback: Ticks.formatters.numeric\n }\n };\n determineDataLimits() {\n const {\n min,\n max\n } = this.getMinMax(true);\n this.min = isNumberFinite(min) ? min : 0;\n this.max = isNumberFinite(max) ? max : 1;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n const horizontal = this.isHorizontal();\n const length = horizontal ? this.width : this.height;\n const minRotation = toRadians(this.options.ticks.minRotation);\n const ratio = (horizontal ? Math.sin(minRotation) : Math.cos(minRotation)) || 0.001;\n const tickFont = this._resolveTickFontOptions(0);\n return Math.ceil(length / Math.min(40, tickFont.lineHeight / ratio));\n }\n getPixelForValue(value) {\n return value === null ? NaN : this.getPixelForDecimal((value - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n return this._startValue + this.getDecimalForPixel(pixel) * this._valueRange;\n }\n}\nconst log10Floor = v => Math.floor(log10(v));\nconst changeExponent = (v, m) => Math.pow(10, log10Floor(v) + m);\nfunction isMajor(tickVal) {\n const remain = tickVal / Math.pow(10, log10Floor(tickVal));\n return remain === 1;\n}\nfunction steps(min, max, rangeExp) {\n const rangeStep = Math.pow(10, rangeExp);\n const start = Math.floor(min / rangeStep);\n const end = Math.ceil(max / rangeStep);\n return end - start;\n}\nfunction startExp(min, max) {\n const range = max - min;\n let rangeExp = log10Floor(range);\n while (steps(min, max, rangeExp) > 10) {\n rangeExp++;\n }\n while (steps(min, max, rangeExp) < 10) {\n rangeExp--;\n }\n return Math.min(rangeExp, log10Floor(min));\n}\nfunction generateTicks(generationOptions, {\n min,\n max\n}) {\n min = finiteOrDefault(generationOptions.min, min);\n const ticks = [];\n const minExp = log10Floor(min);\n let exp = startExp(min, max);\n let precision = exp < 0 ? Math.pow(10, Math.abs(exp)) : 1;\n const stepSize = Math.pow(10, exp);\n const base = minExp > exp ? Math.pow(10, minExp) : 0;\n const start = Math.round((min - base) * precision) / precision;\n const offset = Math.floor((min - base) / stepSize / 10) * stepSize * 10;\n let significand = Math.floor((start - offset) / Math.pow(10, exp));\n let value = finiteOrDefault(generationOptions.min, Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision);\n while (value < max) {\n ticks.push({\n value,\n major: isMajor(value),\n significand\n });\n if (significand >= 10) {\n significand = significand < 15 ? 15 : 20;\n } else {\n significand++;\n }\n if (significand >= 20) {\n exp++;\n significand = 2;\n precision = exp >= 0 ? 1 : precision;\n }\n value = Math.round((base + offset + significand * Math.pow(10, exp)) * precision) / precision;\n }\n const lastTick = finiteOrDefault(generationOptions.max, value);\n ticks.push({\n value: lastTick,\n major: isMajor(lastTick),\n significand\n });\n return ticks;\n}\nclass LogarithmicScale extends Scale {\n static id = 'logarithmic';\n static defaults = {\n ticks: {\n callback: Ticks.formatters.logarithmic,\n major: {\n enabled: true\n }\n }\n };\n constructor(cfg) {\n super(cfg);\n this.start = undefined;\n this.end = undefined;\n this._startValue = undefined;\n this._valueRange = 0;\n }\n parse(raw, index) {\n const value = LinearScaleBase.prototype.parse.apply(this, [raw, index]);\n if (value === 0) {\n this._zero = true;\n return undefined;\n }\n return isNumberFinite(value) && value > 0 ? value : null;\n }\n determineDataLimits() {\n const {\n min,\n max\n } = this.getMinMax(true);\n this.min = isNumberFinite(min) ? Math.max(0, min) : null;\n this.max = isNumberFinite(max) ? Math.max(0, max) : null;\n if (this.options.beginAtZero) {\n this._zero = true;\n }\n if (this._zero && this.min !== this._suggestedMin && !isNumberFinite(this._userMin)) {\n this.min = min === changeExponent(this.min, 0) ? changeExponent(this.min, -1) : changeExponent(this.min, 0);\n }\n this.handleTickRangeOptions();\n }\n handleTickRangeOptions() {\n const {\n minDefined,\n maxDefined\n } = this.getUserBounds();\n let min = this.min;\n let max = this.max;\n const setMin = v => min = minDefined ? min : v;\n const setMax = v => max = maxDefined ? max : v;\n if (min === max) {\n if (min <= 0) {\n setMin(1);\n setMax(10);\n } else {\n setMin(changeExponent(min, -1));\n setMax(changeExponent(max, +1));\n }\n }\n if (min <= 0) {\n setMin(changeExponent(max, -1));\n }\n if (max <= 0) {\n setMax(changeExponent(min, +1));\n }\n this.min = min;\n this.max = max;\n }\n buildTicks() {\n const opts = this.options;\n const generationOptions = {\n min: this._userMin,\n max: this._userMax\n };\n const ticks = generateTicks(generationOptions, this);\n if (opts.bounds === 'ticks') {\n _setMinAndMaxByKey(ticks, this, 'value');\n }\n if (opts.reverse) {\n ticks.reverse();\n this.start = this.max;\n this.end = this.min;\n } else {\n this.start = this.min;\n this.end = this.max;\n }\n return ticks;\n }\n getLabelForValue(value) {\n return value === undefined ? '0' : formatNumber(value, this.chart.options.locale, this.options.ticks.format);\n }\n configure() {\n const start = this.min;\n super.configure();\n this._startValue = log10(start);\n this._valueRange = log10(this.max) - log10(start);\n }\n getPixelForValue(value) {\n if (value === undefined || value === 0) {\n value = this.min;\n }\n if (value === null || isNaN(value)) {\n return NaN;\n }\n return this.getPixelForDecimal(value === this.min ? 0 : (log10(value) - this._startValue) / this._valueRange);\n }\n getValueForPixel(pixel) {\n const decimal = this.getDecimalForPixel(pixel);\n return Math.pow(10, this._startValue + decimal * this._valueRange);\n }\n}\nfunction getTickBackdropHeight(opts) {\n const tickOpts = opts.ticks;\n if (tickOpts.display && opts.display) {\n const padding = toPadding(tickOpts.backdropPadding);\n return valueOrDefault(tickOpts.font && tickOpts.font.size, defaults.font.size) + padding.height;\n }\n return 0;\n}\nfunction measureLabelSize(ctx, font, label) {\n label = isArray(label) ? label : [label];\n return {\n w: _longestText(ctx, font.string, label),\n h: label.length * font.lineHeight\n };\n}\nfunction determineLimits(angle, pos, size, min, max) {\n if (angle === min || angle === max) {\n return {\n start: pos - size / 2,\n end: pos + size / 2\n };\n } else if (angle < min || angle > max) {\n return {\n start: pos - size,\n end: pos\n };\n }\n return {\n start: pos,\n end: pos + size\n };\n}\nfunction fitWithPointLabels(scale) {\n const orig = {\n l: scale.left + scale._padding.left,\n r: scale.right - scale._padding.right,\n t: scale.top + scale._padding.top,\n b: scale.bottom - scale._padding.bottom\n };\n const limits = Object.assign({}, orig);\n const labelSizes = [];\n const padding = [];\n const valueCount = scale._pointLabels.length;\n const pointLabelOpts = scale.options.pointLabels;\n const additionalAngle = pointLabelOpts.centerPointLabels ? PI / valueCount : 0;\n for (let i = 0; i < valueCount; i++) {\n const opts = pointLabelOpts.setContext(scale.getPointLabelContext(i));\n padding[i] = opts.padding;\n const pointPosition = scale.getPointPosition(i, scale.drawingArea + padding[i], additionalAngle);\n const plFont = toFont(opts.font);\n const textSize = measureLabelSize(scale.ctx, plFont, scale._pointLabels[i]);\n labelSizes[i] = textSize;\n const angleRadians = _normalizeAngle(scale.getIndexAngle(i) + additionalAngle);\n const angle = Math.round(toDegrees(angleRadians));\n const hLimits = determineLimits(angle, pointPosition.x, textSize.w, 0, 180);\n const vLimits = determineLimits(angle, pointPosition.y, textSize.h, 90, 270);\n updateLimits(limits, orig, angleRadians, hLimits, vLimits);\n }\n scale.setCenterPoint(orig.l - limits.l, limits.r - orig.r, orig.t - limits.t, limits.b - orig.b);\n scale._pointLabelItems = buildPointLabelItems(scale, labelSizes, padding);\n}\nfunction updateLimits(limits, orig, angle, hLimits, vLimits) {\n const sin = Math.abs(Math.sin(angle));\n const cos = Math.abs(Math.cos(angle));\n let x = 0;\n let y = 0;\n if (hLimits.start < orig.l) {\n x = (orig.l - hLimits.start) / sin;\n limits.l = Math.min(limits.l, orig.l - x);\n } else if (hLimits.end > orig.r) {\n x = (hLimits.end - orig.r) / sin;\n limits.r = Math.max(limits.r, orig.r + x);\n }\n if (vLimits.start < orig.t) {\n y = (orig.t - vLimits.start) / cos;\n limits.t = Math.min(limits.t, orig.t - y);\n } else if (vLimits.end > orig.b) {\n y = (vLimits.end - orig.b) / cos;\n limits.b = Math.max(limits.b, orig.b + y);\n }\n}\nfunction createPointLabelItem(scale, index, itemOpts) {\n const outerDistance = scale.drawingArea;\n const {\n extra,\n additionalAngle,\n padding,\n size\n } = itemOpts;\n const pointLabelPosition = scale.getPointPosition(index, outerDistance + extra + padding, additionalAngle);\n const angle = Math.round(toDegrees(_normalizeAngle(pointLabelPosition.angle + HALF_PI)));\n const y = yForAngle(pointLabelPosition.y, size.h, angle);\n const textAlign = getTextAlignForAngle(angle);\n const left = leftForTextAlign(pointLabelPosition.x, size.w, textAlign);\n return {\n visible: true,\n x: pointLabelPosition.x,\n y,\n textAlign,\n left,\n top: y,\n right: left + size.w,\n bottom: y + size.h\n };\n}\nfunction isNotOverlapped(item, area) {\n if (!area) {\n return true;\n }\n const {\n left,\n top,\n right,\n bottom\n } = item;\n const apexesInArea = _isPointInArea({\n x: left,\n y: top\n }, area) || _isPointInArea({\n x: left,\n y: bottom\n }, area) || _isPointInArea({\n x: right,\n y: top\n }, area) || _isPointInArea({\n x: right,\n y: bottom\n }, area);\n return !apexesInArea;\n}\nfunction buildPointLabelItems(scale, labelSizes, padding) {\n const items = [];\n const valueCount = scale._pointLabels.length;\n const opts = scale.options;\n const {\n centerPointLabels,\n display\n } = opts.pointLabels;\n const itemOpts = {\n extra: getTickBackdropHeight(opts) / 2,\n additionalAngle: centerPointLabels ? PI / valueCount : 0\n };\n let area;\n for (let i = 0; i < valueCount; i++) {\n itemOpts.padding = padding[i];\n itemOpts.size = labelSizes[i];\n const item = createPointLabelItem(scale, i, itemOpts);\n items.push(item);\n if (display === 'auto') {\n item.visible = isNotOverlapped(item, area);\n if (item.visible) {\n area = item;\n }\n }\n }\n return items;\n}\nfunction getTextAlignForAngle(angle) {\n if (angle === 0 || angle === 180) {\n return 'center';\n } else if (angle < 180) {\n return 'left';\n }\n return 'right';\n}\nfunction leftForTextAlign(x, w, align) {\n if (align === 'right') {\n x -= w;\n } else if (align === 'center') {\n x -= w / 2;\n }\n return x;\n}\nfunction yForAngle(y, h, angle) {\n if (angle === 90 || angle === 270) {\n y -= h / 2;\n } else if (angle > 270 || angle < 90) {\n y -= h;\n }\n return y;\n}\nfunction drawPointLabelBox(ctx, opts, item) {\n const {\n left,\n top,\n right,\n bottom\n } = item;\n const {\n backdropColor\n } = opts;\n if (!isNullOrUndef(backdropColor)) {\n const borderRadius = toTRBLCorners(opts.borderRadius);\n const padding = toPadding(opts.backdropPadding);\n ctx.fillStyle = backdropColor;\n const backdropLeft = left - padding.left;\n const backdropTop = top - padding.top;\n const backdropWidth = right - left + padding.width;\n const backdropHeight = bottom - top + padding.height;\n if (Object.values(borderRadius).some(v => v !== 0)) {\n ctx.beginPath();\n addRoundedRectPath(ctx, {\n x: backdropLeft,\n y: backdropTop,\n w: backdropWidth,\n h: backdropHeight,\n radius: borderRadius\n });\n ctx.fill();\n } else {\n ctx.fillRect(backdropLeft, backdropTop, backdropWidth, backdropHeight);\n }\n }\n}\nfunction drawPointLabels(scale, labelCount) {\n const {\n ctx,\n options: {\n pointLabels\n }\n } = scale;\n for (let i = labelCount - 1; i >= 0; i--) {\n const item = scale._pointLabelItems[i];\n if (!item.visible) {\n continue;\n }\n const optsAtIndex = pointLabels.setContext(scale.getPointLabelContext(i));\n drawPointLabelBox(ctx, optsAtIndex, item);\n const plFont = toFont(optsAtIndex.font);\n const {\n x,\n y,\n textAlign\n } = item;\n renderText(ctx, scale._pointLabels[i], x, y + plFont.lineHeight / 2, plFont, {\n color: optsAtIndex.color,\n textAlign: textAlign,\n textBaseline: 'middle'\n });\n }\n}\nfunction pathRadiusLine(scale, radius, circular, labelCount) {\n const {\n ctx\n } = scale;\n if (circular) {\n ctx.arc(scale.xCenter, scale.yCenter, radius, 0, TAU);\n } else {\n let pointPosition = scale.getPointPosition(0, radius);\n ctx.moveTo(pointPosition.x, pointPosition.y);\n for (let i = 1; i < labelCount; i++) {\n pointPosition = scale.getPointPosition(i, radius);\n ctx.lineTo(pointPosition.x, pointPosition.y);\n }\n }\n}\nfunction drawRadiusLine(scale, gridLineOpts, radius, labelCount, borderOpts) {\n const ctx = scale.ctx;\n const circular = gridLineOpts.circular;\n const {\n color,\n lineWidth\n } = gridLineOpts;\n if (!circular && !labelCount || !color || !lineWidth || radius < 0) {\n return;\n }\n ctx.save();\n ctx.strokeStyle = color;\n ctx.lineWidth = lineWidth;\n ctx.setLineDash(borderOpts.dash);\n ctx.lineDashOffset = borderOpts.dashOffset;\n ctx.beginPath();\n pathRadiusLine(scale, radius, circular, labelCount);\n ctx.closePath();\n ctx.stroke();\n ctx.restore();\n}\nfunction createPointLabelContext(parent, index, label) {\n return createContext(parent, {\n label,\n index,\n type: 'pointLabel'\n });\n}\nclass RadialLinearScale extends LinearScaleBase {\n static id = 'radialLinear';\n static defaults = {\n display: true,\n animate: true,\n position: 'chartArea',\n angleLines: {\n display: true,\n lineWidth: 1,\n borderDash: [],\n borderDashOffset: 0.0\n },\n grid: {\n circular: false\n },\n startAngle: 0,\n ticks: {\n showLabelBackdrop: true,\n callback: Ticks.formatters.numeric\n },\n pointLabels: {\n backdropColor: undefined,\n backdropPadding: 2,\n display: true,\n font: {\n size: 10\n },\n callback(label) {\n return label;\n },\n padding: 5,\n centerPointLabels: false\n }\n };\n static defaultRoutes = {\n 'angleLines.color': 'borderColor',\n 'pointLabels.color': 'color',\n 'ticks.color': 'color'\n };\n static descriptors = {\n angleLines: {\n _fallback: 'grid'\n }\n };\n constructor(cfg) {\n super(cfg);\n this.xCenter = undefined;\n this.yCenter = undefined;\n this.drawingArea = undefined;\n this._pointLabels = [];\n this._pointLabelItems = [];\n }\n setDimensions() {\n const padding = this._padding = toPadding(getTickBackdropHeight(this.options) / 2);\n const w = this.width = this.maxWidth - padding.width;\n const h = this.height = this.maxHeight - padding.height;\n this.xCenter = Math.floor(this.left + w / 2 + padding.left);\n this.yCenter = Math.floor(this.top + h / 2 + padding.top);\n this.drawingArea = Math.floor(Math.min(w, h) / 2);\n }\n determineDataLimits() {\n const {\n min,\n max\n } = this.getMinMax(false);\n this.min = isNumberFinite(min) && !isNaN(min) ? min : 0;\n this.max = isNumberFinite(max) && !isNaN(max) ? max : 0;\n this.handleTickRangeOptions();\n }\n computeTickLimit() {\n return Math.ceil(this.drawingArea / getTickBackdropHeight(this.options));\n }\n generateTickLabels(ticks) {\n LinearScaleBase.prototype.generateTickLabels.call(this, ticks);\n this._pointLabels = this.getLabels().map((value, index) => {\n const label = callback(this.options.pointLabels.callback, [value, index], this);\n return label || label === 0 ? label : '';\n }).filter((v, i) => this.chart.getDataVisibility(i));\n }\n fit() {\n const opts = this.options;\n if (opts.display && opts.pointLabels.display) {\n fitWithPointLabels(this);\n } else {\n this.setCenterPoint(0, 0, 0, 0);\n }\n }\n setCenterPoint(leftMovement, rightMovement, topMovement, bottomMovement) {\n this.xCenter += Math.floor((leftMovement - rightMovement) / 2);\n this.yCenter += Math.floor((topMovement - bottomMovement) / 2);\n this.drawingArea -= Math.min(this.drawingArea / 2, Math.max(leftMovement, rightMovement, topMovement, bottomMovement));\n }\n getIndexAngle(index) {\n const angleMultiplier = TAU / (this._pointLabels.length || 1);\n const startAngle = this.options.startAngle || 0;\n return _normalizeAngle(index * angleMultiplier + toRadians(startAngle));\n }\n getDistanceFromCenterForValue(value) {\n if (isNullOrUndef(value)) {\n return NaN;\n }\n const scalingFactor = this.drawingArea / (this.max - this.min);\n if (this.options.reverse) {\n return (this.max - value) * scalingFactor;\n }\n return (value - this.min) * scalingFactor;\n }\n getValueForDistanceFromCenter(distance) {\n if (isNullOrUndef(distance)) {\n return NaN;\n }\n const scaledDistance = distance / (this.drawingArea / (this.max - this.min));\n return this.options.reverse ? this.max - scaledDistance : this.min + scaledDistance;\n }\n getPointLabelContext(index) {\n const pointLabels = this._pointLabels || [];\n if (index >= 0 && index < pointLabels.length) {\n const pointLabel = pointLabels[index];\n return createPointLabelContext(this.getContext(), index, pointLabel);\n }\n }\n getPointPosition(index, distanceFromCenter, additionalAngle = 0) {\n const angle = this.getIndexAngle(index) - HALF_PI + additionalAngle;\n return {\n x: Math.cos(angle) * distanceFromCenter + this.xCenter,\n y: Math.sin(angle) * distanceFromCenter + this.yCenter,\n angle\n };\n }\n getPointPositionForValue(index, value) {\n return this.getPointPosition(index, this.getDistanceFromCenterForValue(value));\n }\n getBasePosition(index) {\n return this.getPointPositionForValue(index || 0, this.getBaseValue());\n }\n getPointLabelPosition(index) {\n const {\n left,\n top,\n right,\n bottom\n } = this._pointLabelItems[index];\n return {\n left,\n top,\n right,\n bottom\n };\n }\n drawBackground() {\n const {\n backgroundColor,\n grid: {\n circular\n }\n } = this.options;\n if (backgroundColor) {\n const ctx = this.ctx;\n ctx.save();\n ctx.beginPath();\n pathRadiusLine(this, this.getDistanceFromCenterForValue(this._endValue), circular, this._pointLabels.length);\n ctx.closePath();\n ctx.fillStyle = backgroundColor;\n ctx.fill();\n ctx.restore();\n }\n }\n drawGrid() {\n const ctx = this.ctx;\n const opts = this.options;\n const {\n angleLines,\n grid,\n border\n } = opts;\n const labelCount = this._pointLabels.length;\n let i, offset, position;\n if (opts.pointLabels.display) {\n drawPointLabels(this, labelCount);\n }\n if (grid.display) {\n this.ticks.forEach((tick, index) => {\n if (index !== 0 || index === 0 && this.min < 0) {\n offset = this.getDistanceFromCenterForValue(tick.value);\n const context = this.getContext(index);\n const optsAtIndex = grid.setContext(context);\n const optsAtIndexBorder = border.setContext(context);\n drawRadiusLine(this, optsAtIndex, offset, labelCount, optsAtIndexBorder);\n }\n });\n }\n if (angleLines.display) {\n ctx.save();\n for (i = labelCount - 1; i >= 0; i--) {\n const optsAtIndex = angleLines.setContext(this.getPointLabelContext(i));\n const {\n color,\n lineWidth\n } = optsAtIndex;\n if (!lineWidth || !color) {\n continue;\n }\n ctx.lineWidth = lineWidth;\n ctx.strokeStyle = color;\n ctx.setLineDash(optsAtIndex.borderDash);\n ctx.lineDashOffset = optsAtIndex.borderDashOffset;\n offset = this.getDistanceFromCenterForValue(opts.ticks.reverse ? this.min : this.max);\n position = this.getPointPosition(i, offset);\n ctx.beginPath();\n ctx.moveTo(this.xCenter, this.yCenter);\n ctx.lineTo(position.x, position.y);\n ctx.stroke();\n }\n ctx.restore();\n }\n }\n drawBorder() {}\n drawLabels() {\n const ctx = this.ctx;\n const opts = this.options;\n const tickOpts = opts.ticks;\n if (!tickOpts.display) {\n return;\n }\n const startAngle = this.getIndexAngle(0);\n let offset, width;\n ctx.save();\n ctx.translate(this.xCenter, this.yCenter);\n ctx.rotate(startAngle);\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n this.ticks.forEach((tick, index) => {\n if (index === 0 && this.min >= 0 && !opts.reverse) {\n return;\n }\n const optsAtIndex = tickOpts.setContext(this.getContext(index));\n const tickFont = toFont(optsAtIndex.font);\n offset = this.getDistanceFromCenterForValue(this.ticks[index].value);\n if (optsAtIndex.showLabelBackdrop) {\n ctx.font = tickFont.string;\n width = ctx.measureText(tick.label).width;\n ctx.fillStyle = optsAtIndex.backdropColor;\n const padding = toPadding(optsAtIndex.backdropPadding);\n ctx.fillRect(-width / 2 - padding.left, -offset - tickFont.size / 2 - padding.top, width + padding.width, tickFont.size + padding.height);\n }\n renderText(ctx, tick.label, 0, -offset, tickFont, {\n color: optsAtIndex.color,\n strokeColor: optsAtIndex.textStrokeColor,\n strokeWidth: optsAtIndex.textStrokeWidth\n });\n });\n ctx.restore();\n }\n drawTitle() {}\n}\nconst INTERVALS = {\n millisecond: {\n common: true,\n size: 1,\n steps: 1000\n },\n second: {\n common: true,\n size: 1000,\n steps: 60\n },\n minute: {\n common: true,\n size: 60000,\n steps: 60\n },\n hour: {\n common: true,\n size: 3600000,\n steps: 24\n },\n day: {\n common: true,\n size: 86400000,\n steps: 30\n },\n week: {\n common: false,\n size: 604800000,\n steps: 4\n },\n month: {\n common: true,\n size: 2.628e9,\n steps: 12\n },\n quarter: {\n common: false,\n size: 7.884e9,\n steps: 4\n },\n year: {\n common: true,\n size: 3.154e10\n }\n};\nconst UNITS = /* #__PURE__ */Object.keys(INTERVALS);\nfunction sorter(a, b) {\n return a - b;\n}\nfunction parse(scale, input) {\n if (isNullOrUndef(input)) {\n return null;\n }\n const adapter = scale._adapter;\n const {\n parser,\n round,\n isoWeekday\n } = scale._parseOpts;\n let value = input;\n if (typeof parser === 'function') {\n value = parser(value);\n }\n if (!isNumberFinite(value)) {\n value = typeof parser === 'string' ? adapter.parse(value, parser) : adapter.parse(value);\n }\n if (value === null) {\n return null;\n }\n if (round) {\n value = round === 'week' && (isNumber(isoWeekday) || isoWeekday === true) ? adapter.startOf(value, 'isoWeek', isoWeekday) : adapter.startOf(value, round);\n }\n return +value;\n}\nfunction determineUnitForAutoTicks(minUnit, min, max, capacity) {\n const ilen = UNITS.length;\n for (let i = UNITS.indexOf(minUnit); i < ilen - 1; ++i) {\n const interval = INTERVALS[UNITS[i]];\n const factor = interval.steps ? interval.steps : Number.MAX_SAFE_INTEGER;\n if (interval.common && Math.ceil((max - min) / (factor * interval.size)) <= capacity) {\n return UNITS[i];\n }\n }\n return UNITS[ilen - 1];\n}\nfunction determineUnitForFormatting(scale, numTicks, minUnit, min, max) {\n for (let i = UNITS.length - 1; i >= UNITS.indexOf(minUnit); i--) {\n const unit = UNITS[i];\n if (INTERVALS[unit].common && scale._adapter.diff(max, min, unit) >= numTicks - 1) {\n return unit;\n }\n }\n return UNITS[minUnit ? UNITS.indexOf(minUnit) : 0];\n}\nfunction determineMajorUnit(unit) {\n for (let i = UNITS.indexOf(unit) + 1, ilen = UNITS.length; i < ilen; ++i) {\n if (INTERVALS[UNITS[i]].common) {\n return UNITS[i];\n }\n }\n}\nfunction addTick(ticks, time, timestamps) {\n if (!timestamps) {\n ticks[time] = true;\n } else if (timestamps.length) {\n const {\n lo,\n hi\n } = _lookup(timestamps, time);\n const timestamp = timestamps[lo] >= time ? timestamps[lo] : timestamps[hi];\n ticks[timestamp] = true;\n }\n}\nfunction setMajorTicks(scale, ticks, map, majorUnit) {\n const adapter = scale._adapter;\n const first = +adapter.startOf(ticks[0].value, majorUnit);\n const last = ticks[ticks.length - 1].value;\n let major, index;\n for (major = first; major <= last; major = +adapter.add(major, 1, majorUnit)) {\n index = map[major];\n if (index >= 0) {\n ticks[index].major = true;\n }\n }\n return ticks;\n}\nfunction ticksFromTimestamps(scale, values, majorUnit) {\n const ticks = [];\n const map = {};\n const ilen = values.length;\n let i, value;\n for (i = 0; i < ilen; ++i) {\n value = values[i];\n map[value] = i;\n ticks.push({\n value,\n major: false\n });\n }\n return ilen === 0 || !majorUnit ? ticks : setMajorTicks(scale, ticks, map, majorUnit);\n}\nlet TimeScale = /*#__PURE__*/(() => {\n class TimeScale extends Scale {\n static id = 'time';\n static defaults = {\n bounds: 'data',\n adapters: {},\n time: {\n parser: false,\n unit: false,\n round: false,\n isoWeekday: false,\n minUnit: 'millisecond',\n displayFormats: {}\n },\n ticks: {\n source: 'auto',\n callback: false,\n major: {\n enabled: false\n }\n }\n };\n constructor(props) {\n super(props);\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n this._unit = 'day';\n this._majorUnit = undefined;\n this._offsets = {};\n this._normalized = false;\n this._parseOpts = undefined;\n }\n init(scaleOpts, opts = {}) {\n const time = scaleOpts.time || (scaleOpts.time = {});\n const adapter = this._adapter = new adapters._date(scaleOpts.adapters.date);\n adapter.init(opts);\n mergeIf(time.displayFormats, adapter.formats());\n this._parseOpts = {\n parser: time.parser,\n round: time.round,\n isoWeekday: time.isoWeekday\n };\n super.init(scaleOpts);\n this._normalized = opts.normalized;\n }\n parse(raw, index) {\n if (raw === undefined) {\n return null;\n }\n return parse(this, raw);\n }\n beforeLayout() {\n super.beforeLayout();\n this._cache = {\n data: [],\n labels: [],\n all: []\n };\n }\n determineDataLimits() {\n const options = this.options;\n const adapter = this._adapter;\n const unit = options.time.unit || 'day';\n let {\n min,\n max,\n minDefined,\n maxDefined\n } = this.getUserBounds();\n function _applyBounds(bounds) {\n if (!minDefined && !isNaN(bounds.min)) {\n min = Math.min(min, bounds.min);\n }\n if (!maxDefined && !isNaN(bounds.max)) {\n max = Math.max(max, bounds.max);\n }\n }\n if (!minDefined || !maxDefined) {\n _applyBounds(this._getLabelBounds());\n if (options.bounds !== 'ticks' || options.ticks.source !== 'labels') {\n _applyBounds(this.getMinMax(false));\n }\n }\n min = isNumberFinite(min) && !isNaN(min) ? min : +adapter.startOf(Date.now(), unit);\n max = isNumberFinite(max) && !isNaN(max) ? max : +adapter.endOf(Date.now(), unit) + 1;\n this.min = Math.min(min, max - 1);\n this.max = Math.max(min + 1, max);\n }\n _getLabelBounds() {\n const arr = this.getLabelTimestamps();\n let min = Number.POSITIVE_INFINITY;\n let max = Number.NEGATIVE_INFINITY;\n if (arr.length) {\n min = arr[0];\n max = arr[arr.length - 1];\n }\n return {\n min,\n max\n };\n }\n buildTicks() {\n const options = this.options;\n const timeOpts = options.time;\n const tickOpts = options.ticks;\n const timestamps = tickOpts.source === 'labels' ? this.getLabelTimestamps() : this._generate();\n if (options.bounds === 'ticks' && timestamps.length) {\n this.min = this._userMin || timestamps[0];\n this.max = this._userMax || timestamps[timestamps.length - 1];\n }\n const min = this.min;\n const max = this.max;\n const ticks = _filterBetween(timestamps, min, max);\n this._unit = timeOpts.unit || (tickOpts.autoSkip ? determineUnitForAutoTicks(timeOpts.minUnit, this.min, this.max, this._getLabelCapacity(min)) : determineUnitForFormatting(this, ticks.length, timeOpts.minUnit, this.min, this.max));\n this._majorUnit = !tickOpts.major.enabled || this._unit === 'year' ? undefined : determineMajorUnit(this._unit);\n this.initOffsets(timestamps);\n if (options.reverse) {\n ticks.reverse();\n }\n return ticksFromTimestamps(this, ticks, this._majorUnit);\n }\n afterAutoSkip() {\n if (this.options.offsetAfterAutoskip) {\n this.initOffsets(this.ticks.map(tick => +tick.value));\n }\n }\n initOffsets(timestamps = []) {\n let start = 0;\n let end = 0;\n let first, last;\n if (this.options.offset && timestamps.length) {\n first = this.getDecimalForValue(timestamps[0]);\n if (timestamps.length === 1) {\n start = 1 - first;\n } else {\n start = (this.getDecimalForValue(timestamps[1]) - first) / 2;\n }\n last = this.getDecimalForValue(timestamps[timestamps.length - 1]);\n if (timestamps.length === 1) {\n end = last;\n } else {\n end = (last - this.getDecimalForValue(timestamps[timestamps.length - 2])) / 2;\n }\n }\n const limit = timestamps.length < 3 ? 0.5 : 0.25;\n start = _limitValue(start, 0, limit);\n end = _limitValue(end, 0, limit);\n this._offsets = {\n start,\n end,\n factor: 1 / (start + 1 + end)\n };\n }\n _generate() {\n const adapter = this._adapter;\n const min = this.min;\n const max = this.max;\n const options = this.options;\n const timeOpts = options.time;\n const minor = timeOpts.unit || determineUnitForAutoTicks(timeOpts.minUnit, min, max, this._getLabelCapacity(min));\n const stepSize = valueOrDefault(options.ticks.stepSize, 1);\n const weekday = minor === 'week' ? timeOpts.isoWeekday : false;\n const hasWeekday = isNumber(weekday) || weekday === true;\n const ticks = {};\n let first = min;\n let time, count;\n if (hasWeekday) {\n first = +adapter.startOf(first, 'isoWeek', weekday);\n }\n first = +adapter.startOf(first, hasWeekday ? 'day' : minor);\n if (adapter.diff(max, min, minor) > 100000 * stepSize) {\n throw new Error(min + ' and ' + max + ' are too far apart with stepSize of ' + stepSize + ' ' + minor);\n }\n const timestamps = options.ticks.source === 'data' && this.getDataTimestamps();\n for (time = first, count = 0; time < max; time = +adapter.add(time, stepSize, minor), count++) {\n addTick(ticks, time, timestamps);\n }\n if (time === max || options.bounds === 'ticks' || count === 1) {\n addTick(ticks, time, timestamps);\n }\n return Object.keys(ticks).sort(sorter).map(x => +x);\n }\n getLabelForValue(value) {\n const adapter = this._adapter;\n const timeOpts = this.options.time;\n if (timeOpts.tooltipFormat) {\n return adapter.format(value, timeOpts.tooltipFormat);\n }\n return adapter.format(value, timeOpts.displayFormats.datetime);\n }\n format(value, format) {\n const options = this.options;\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const fmt = format || formats[unit];\n return this._adapter.format(value, fmt);\n }\n _tickFormatFunction(time, index, ticks, format) {\n const options = this.options;\n const formatter = options.ticks.callback;\n if (formatter) {\n return callback(formatter, [time, index, ticks], this);\n }\n const formats = options.time.displayFormats;\n const unit = this._unit;\n const majorUnit = this._majorUnit;\n const minorFormat = unit && formats[unit];\n const majorFormat = majorUnit && formats[majorUnit];\n const tick = ticks[index];\n const major = majorUnit && majorFormat && tick && tick.major;\n return this._adapter.format(time, format || (major ? majorFormat : minorFormat));\n }\n generateTickLabels(ticks) {\n let i, ilen, tick;\n for (i = 0, ilen = ticks.length; i < ilen; ++i) {\n tick = ticks[i];\n tick.label = this._tickFormatFunction(tick.value, i, ticks);\n }\n }\n getDecimalForValue(value) {\n return value === null ? NaN : (value - this.min) / (this.max - this.min);\n }\n getPixelForValue(value) {\n const offsets = this._offsets;\n const pos = this.getDecimalForValue(value);\n return this.getPixelForDecimal((offsets.start + pos) * offsets.factor);\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const pos = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return this.min + pos * (this.max - this.min);\n }\n _getLabelSize(label) {\n const ticksOpts = this.options.ticks;\n const tickLabelWidth = this.ctx.measureText(label).width;\n const angle = toRadians(this.isHorizontal() ? ticksOpts.maxRotation : ticksOpts.minRotation);\n const cosRotation = Math.cos(angle);\n const sinRotation = Math.sin(angle);\n const tickFontSize = this._resolveTickFontOptions(0).size;\n return {\n w: tickLabelWidth * cosRotation + tickFontSize * sinRotation,\n h: tickLabelWidth * sinRotation + tickFontSize * cosRotation\n };\n }\n _getLabelCapacity(exampleTime) {\n const timeOpts = this.options.time;\n const displayFormats = timeOpts.displayFormats;\n const format = displayFormats[timeOpts.unit] || displayFormats.millisecond;\n const exampleLabel = this._tickFormatFunction(exampleTime, 0, ticksFromTimestamps(this, [exampleTime], this._majorUnit), format);\n const size = this._getLabelSize(exampleLabel);\n const capacity = Math.floor(this.isHorizontal() ? this.width / size.w : this.height / size.h) - 1;\n return capacity > 0 ? capacity : 1;\n }\n getDataTimestamps() {\n let timestamps = this._cache.data || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const metas = this.getMatchingVisibleMetas();\n if (this._normalized && metas.length) {\n return this._cache.data = metas[0].controller.getAllParsedValues(this);\n }\n for (i = 0, ilen = metas.length; i < ilen; ++i) {\n timestamps = timestamps.concat(metas[i].controller.getAllParsedValues(this));\n }\n return this._cache.data = this.normalize(timestamps);\n }\n getLabelTimestamps() {\n const timestamps = this._cache.labels || [];\n let i, ilen;\n if (timestamps.length) {\n return timestamps;\n }\n const labels = this.getLabels();\n for (i = 0, ilen = labels.length; i < ilen; ++i) {\n timestamps.push(parse(this, labels[i]));\n }\n return this._cache.labels = this._normalized ? timestamps : this.normalize(timestamps);\n }\n normalize(values) {\n return _arrayUnique(values.sort(sorter));\n }\n }\n return TimeScale;\n})();\nfunction interpolate(table, val, reverse) {\n let lo = 0;\n let hi = table.length - 1;\n let prevSource, nextSource, prevTarget, nextTarget;\n if (reverse) {\n if (val >= table[lo].pos && val <= table[hi].pos) {\n ({\n lo,\n hi\n } = _lookupByKey(table, 'pos', val));\n }\n ({\n pos: prevSource,\n time: prevTarget\n } = table[lo]);\n ({\n pos: nextSource,\n time: nextTarget\n } = table[hi]);\n } else {\n if (val >= table[lo].time && val <= table[hi].time) {\n ({\n lo,\n hi\n } = _lookupByKey(table, 'time', val));\n }\n ({\n time: prevSource,\n pos: prevTarget\n } = table[lo]);\n ({\n time: nextSource,\n pos: nextTarget\n } = table[hi]);\n }\n const span = nextSource - prevSource;\n return span ? prevTarget + (nextTarget - prevTarget) * (val - prevSource) / span : prevTarget;\n}\nclass TimeSeriesScale extends TimeScale {\n static id = 'timeseries';\n static defaults = TimeScale.defaults;\n constructor(props) {\n super(props);\n this._table = [];\n this._minPos = undefined;\n this._tableRange = undefined;\n }\n initOffsets() {\n const timestamps = this._getTimestampsForTable();\n const table = this._table = this.buildLookupTable(timestamps);\n this._minPos = interpolate(table, this.min);\n this._tableRange = interpolate(table, this.max) - this._minPos;\n super.initOffsets(timestamps);\n }\n buildLookupTable(timestamps) {\n const {\n min,\n max\n } = this;\n const items = [];\n const table = [];\n let i, ilen, prev, curr, next;\n for (i = 0, ilen = timestamps.length; i < ilen; ++i) {\n curr = timestamps[i];\n if (curr >= min && curr <= max) {\n items.push(curr);\n }\n }\n if (items.length < 2) {\n return [{\n time: min,\n pos: 0\n }, {\n time: max,\n pos: 1\n }];\n }\n for (i = 0, ilen = items.length; i < ilen; ++i) {\n next = items[i + 1];\n prev = items[i - 1];\n curr = items[i];\n if (Math.round((next + prev) / 2) !== curr) {\n table.push({\n time: curr,\n pos: i / (ilen - 1)\n });\n }\n }\n return table;\n }\n _generate() {\n const min = this.min;\n const max = this.max;\n let timestamps = super.getDataTimestamps();\n if (!timestamps.includes(min) || !timestamps.length) {\n timestamps.splice(0, 0, min);\n }\n if (!timestamps.includes(max) || timestamps.length === 1) {\n timestamps.push(max);\n }\n return timestamps.sort((a, b) => a - b);\n }\n _getTimestampsForTable() {\n let timestamps = this._cache.all || [];\n if (timestamps.length) {\n return timestamps;\n }\n const data = this.getDataTimestamps();\n const label = this.getLabelTimestamps();\n if (data.length && label.length) {\n timestamps = this.normalize(data.concat(label));\n } else {\n timestamps = data.length ? data : label;\n }\n timestamps = this._cache.all = timestamps;\n return timestamps;\n }\n getDecimalForValue(value) {\n return (interpolate(this._table, value) - this._minPos) / this._tableRange;\n }\n getValueForPixel(pixel) {\n const offsets = this._offsets;\n const decimal = this.getDecimalForPixel(pixel) / offsets.factor - offsets.end;\n return interpolate(this._table, decimal * this._tableRange + this._minPos, true);\n }\n}\nvar scales = /*#__PURE__*/Object.freeze({\n __proto__: null,\n CategoryScale: CategoryScale,\n LinearScale: LinearScale,\n LogarithmicScale: LogarithmicScale,\n RadialLinearScale: RadialLinearScale,\n TimeScale: TimeScale,\n TimeSeriesScale: TimeSeriesScale\n});\nconst registerables = [controllers, elements, plugins, scales];\nexport { Animation, Animations, ArcElement, BarController, BarElement, BasePlatform, BasicPlatform, BubbleController, CategoryScale, Chart, plugin_colors as Colors, DatasetController, plugin_decimation as Decimation, DomPlatform, DoughnutController, Element, index as Filler, Interaction, plugin_legend as Legend, LineController, LineElement, LinearScale, LogarithmicScale, PieController, PointElement, PolarAreaController, RadarController, RadialLinearScale, Scale, ScatterController, plugin_subtitle as SubTitle, Ticks, TimeScale, TimeSeriesScale, plugin_title as Title, plugin_tooltip as Tooltip, adapters as _adapters, _detectPlatform, animator, controllers, defaults, elements, layouts, plugins, registerables, registry, scales };\n","import { Injectable } from '@angular/core';\nimport { GalaxyGradientFill, GalaxyChartColor } from './interface';\n\n@Injectable()\nexport class ChartColorService {\n /**\n * Parses the GalaxyChartColor into either the string representation of the color or a\n * gradient fill compatable with Canvas\n * @param ctx - Canvas 2D context\n * @param value - GalaxyChartColor config\n */\n public parseColorInformation(ctx: CanvasRenderingContext2D, value: GalaxyChartColor | GalaxyChartColor[]) {\n // If the value is a string, that means they are just passing in a Hex, RGB, etc.\n if (typeof value === 'string') {\n return value;\n }\n\n // If it is an array of colors, change the check a bit\n if (Array.isArray(value)) {\n return value.map((val) => {\n return this.parseColorInformation(ctx, val);\n });\n }\n\n const gradientFill = ctx.createLinearGradient(ctx.canvas.width / 2, 0, ctx.canvas.width / 2, ctx.canvas.height);\n (value as GalaxyGradientFill).colors.forEach((color, index) => {\n gradientFill.addColorStop(index / value.colors.length, color);\n });\n return gradientFill;\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ChartConfiguration } from 'chart.js';\nimport { ChartColorService } from './chart-color.service';\n\n@Injectable()\nexport class ConfigParserService {\n constructor(private readonly chartColorService: ChartColorService) {}\n\n /**\n * Constructs an Option config for Chart.js based on the Galaxy Config passed in\n * @param config - Config to parse\n */\n public parseConfig(ctx: CanvasRenderingContext2D, config: ChartConfiguration) {\n // If there is no options passed in, just return out of it.\n if (!config || !config.options) {\n return {};\n }\n\n return this.checkForColorParsing(ctx, config.options, '');\n }\n\n /**\n * Parses through the GalaxyChartConfig for any *Color variables and if any are found, they are\n * parsed through the color parser.\n * @param ctx - Canvas 2D Context\n * @param currentDict - The current dictionary we are looking at\n * @param val - Current key we are looking at\n */\n private checkForColorParsing(ctx: CanvasRenderingContext2D, currentDict: any, val: any) {\n if (val.endsWith('Color')) {\n return this.chartColorService.parseColorInformation(ctx, currentDict);\n }\n\n const responseObject = {};\n Object.keys(currentDict).forEach((key) => {\n // If the information passed in is an object, we have to loop through those keys\n if (typeof currentDict[key] === 'object' && key !== 'scales' && key !== 'tooltip') {\n responseObject[key] = this.checkForColorParsing(ctx, currentDict[key], key);\n } else {\n responseObject[key] = currentDict[key];\n }\n });\n return responseObject;\n }\n}\n","import {\n Component,\n ElementRef,\n EventEmitter,\n Input,\n OnChanges,\n OnInit,\n Output,\n SimpleChanges,\n ViewChild,\n} from '@angular/core';\nimport { Chart, ChartConfiguration, ChartData } from 'chart.js';\nimport { ConfigParserService } from './config-parser.service';\n\n// Limit the available chart types while we are developing\nconst AVAILABLE_CHART_TYPES = ['line', 'bar'];\n\n@Component({\n selector: 'glxy-chart',\n templateUrl: './chart.component.html',\n styleUrls: ['./chart.component.scss'],\n})\nexport class ChartComponent implements OnInit, OnChanges {\n @Input() config: ChartConfiguration;\n @Input() data: ChartData;\n @Input() htmlLegend = false;\n @Output() htmlLegendContent: EventEmitter = new EventEmitter(true);\n\n @ViewChild('chartJsChartContainer', { static: true })\n chartContainer: ElementRef;\n\n private canvasContext: CanvasRenderingContext2D;\n private chartObj;\n\n constructor(private readonly configParserService: ConfigParserService) {}\n\n ngOnInit() {\n if (this.config) {\n if (AVAILABLE_CHART_TYPES.indexOf(this.config.type) === -1) {\n throw new Error(\n `The chart type \"${this.config.type}\" is not a supported chart type. Please reach out to #wisakejak to request this chart type`,\n );\n }\n this.setupChartJsContainer();\n if (this.htmlLegend) {\n this.emitHtmlLegend();\n }\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (!!changes.config && !changes.config.firstChange) {\n const options = this.configParserService.parseConfig(this.canvasContext, this.config);\n this.chartObj.options = options;\n this.chartObj.update();\n }\n if (!!changes.data && !changes.data.firstChange) {\n this.chartObj.data = this.data;\n this.chartObj.update();\n }\n if (this.htmlLegend && this.config) {\n this.emitHtmlLegend();\n }\n }\n\n /**\n * Constructs the canvas object and sets up the chart container\n */\n private setupChartJsContainer() {\n this.canvasContext = (this.chartContainer.nativeElement as HTMLCanvasElement).getContext('2d');\n\n const options = this.configParserService.parseConfig(this.canvasContext, this.config);\n this.chartObj = new Chart(this.canvasContext, {\n type: this.config.type,\n data: this.data,\n options,\n });\n }\n\n emitHtmlLegend() {\n if (this.chartObj) {\n this.htmlLegendContent.emit(this.chartObj.generateLegend());\n }\n }\n}\n","\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ChartComponent } from './chart.component';\nimport { ConfigParserService } from './config-parser.service';\nimport { ChartColorService } from './chart-color.service';\n\n@NgModule({\n declarations: [ChartComponent],\n imports: [CommonModule],\n exports: [ChartComponent],\n providers: [ConfigParserService, ChartColorService],\n})\nexport class ChartModule {}\n\nexport { ChartComponent } from './chart.component';\n","// Chart.js chart types: 'line' | 'bar' | 'radar' | 'pie' | 'doughtnut' | 'polarArea' | 'bubble' | 'scatter';\nexport enum GalaxyChartType {\n LINE = 'line',\n BAR = 'bar',\n}\n\nexport type GalaxyChartAvailableTypes = GalaxyChartType.LINE | GalaxyChartType.BAR;\nexport type GalaxyPointTypes =\n | 'circle'\n | 'cross'\n | 'crossRot'\n | 'dash'\n | 'line'\n | 'rect'\n | 'rectRounded'\n | 'rectRot'\n | 'star'\n | 'triangle';\n\n/**\n * An example of using a custom tick for showing USD currency\n */\nexport function USDCurrencyTick(value) {\n return new Intl.NumberFormat('en-US', {\n style: 'currency',\n currency: 'USD',\n notation: 'compact',\n compactDisplay: 'short',\n } as any).format(value);\n}\n\n/**\n * Galaxy gradient fill color. It will order indexes 0 -> ... top -> bottom\n */\nexport interface GalaxyGradientFill {\n colors: string[];\n}\nexport type GalaxyChartColor = string | GalaxyGradientFill;\n\n/**\n * Configure Chart.js Legend\n * For more information:\n * https://www.chartjs.org/docs/latest/configuration/legend.html\n */\nexport interface GalaxyChartLegendConfig {\n display?: boolean;\n position?: 'top' | 'left' | 'right' | 'bottom';\n align?: 'start' | 'center' | 'end';\n\n onClick?: (event, legendItem) => void;\n onHover?: (event, legendItem) => void;\n onLeave?: (event, legendItem) => void;\n}\n\n/**\n * Configure the Chart.js title\n * For more information:\n * https://www.chartjs.org/docs/latest/configuration/title.html\n */\nexport interface GalaxyChartTitle {\n /// Show the title, default false\n display?: boolean;\n // Position of the title, default top\n position?: 'top' | 'left' | 'right' | 'bottom';\n // Font Settings\n fontSize?: number;\n fontFamily?: string;\n fontColor?: GalaxyChartColor;\n fontStyle?: string;\n // Number of pixels to add above and below the title text\n padding?: number;\n // Height of an individual line\n lineHeight?: number | string;\n // Title text to display.\n text: string;\n}\n\n/**\n * Layout config for the chart\n * For more information:\n * https://www.chartjs.org/docs/latest/configuration/layout.html\n */\nexport interface GalaxyChartLayout {\n // If this value is a number, it is applied to all sides of the chart (left, top, right, bottom).\n // If this value is an object, the left property defines the left padding.\n // Similarly the right, top and bottom properties can also be specified.\n padding: number | Record;\n}\n\n/**\n * Configure Chart.js Line Chart\n * This is only a subset of options available on the config.\n * Just to keep things streamlined and simple. If there is a missing config\n * that you could utillize, you can add it to the config.\n * For more information:\n * https://www.chartjs.org/docs/latest/charts/line.html#line-styling\n */\nexport interface GalaxyLineChartConfig {\n /**\n * GENERAL SETTINGS\n */\n // Bezier curve tension of the line. Set to 0 to draw straightlines.\n lineTension?: number;\n // Bar chart style steps in a line chart\n // https://www.chartjs.org/docs/latest/charts/line.html#stepped-line\n steppedLine?: boolean | 'before' | 'after' | 'middle';\n\n /**\n * LINE STYLING\n */\n // How to fill the area under the line\n // https://www.chartjs.org/docs/latest/charts/area.html\n // false = disabled, enabled by default\n fill?: any;\n // The line fill color\n backgroundColor?: GalaxyChartColor;\n // The line color\n borderColor?: GalaxyChartColor;\n // The line width (in pixels).\n borderWidth?: number;\n\n /**\n * POINT STYLING\n */\n // The fill color for points.\n pointBackgroundColor?: GalaxyChartColor;\n // The border color for points.\n pointBorderColor?: GalaxyChartColor;\n // The width of the point border (in pixels).\n pointBorderWidth?: number;\n // The radius of the point shape. If set to 0, the point is not rendered.\n pointRadius?: number;\n // The style of the point\n pointStyle?: GalaxyPointTypes;\n // The pixel size of the non-displayed point that reacts to mouse events.\n pointHitRadius?: number;\n}\n\nexport interface GalaxyBarChartConfig {\n backgroundColor: GalaxyChartColor[];\n}\n","export const GalaxyChartPredefinedColor = {\n BLUE: {\n SOLID: 'rgb(66, 165, 245)',\n GRADIENT: [\n 'rgba(66, 165, 245, 0.5)',\n 'rgba(66, 165, 245, 0.3)',\n 'rgba(66, 165, 245, 0.2)',\n 'rgba(66, 165, 245, 0.0)',\n 'rgba(66, 165, 245, 0.0)',\n ],\n },\n};\n","export * from './chart.module';\nexport * from './interface';\nexport * from './colors';\n","export * from './lib/public_api';\n","import { Component, Input, TemplateRef, ViewChild } from '@angular/core';\nimport { animate, state, style, transition, trigger } from '@angular/animations';\n\nexport interface StatTabTooltip {\n title: string;\n content: string;\n}\n\nexport interface StatTabData {\n name: string;\n value: string;\n showDelta: boolean;\n deltaValue: number;\n toolTip?: StatTabTooltip;\n subtitle?: string;\n}\n\n@Component({\n selector: 'local-seo-stat-tabs',\n templateUrl: './stat-tabs.component.html',\n styleUrls: ['./stat-tabs.component.scss'],\n animations: [\n trigger('detailExpand', [\n state('collapsed', style({ height: '0px', minHeight: '0' })),\n state('expanded', style({ height: '*', minHeight: '0' })),\n transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\n ]),\n ],\n})\nexport class LocalSEOStatTabsComponent {\n @Input() tabs: StatTabData[];\n @Input() content: TemplateRef[];\n @Input() disableDropdowns: boolean;\n\n openContent: TemplateRef;\n selectedIndex = -1;\n\n @ViewChild('tabGroup') tabGroup;\n\n selectContent(index: number) {\n if (this.disableDropdowns) {\n return;\n }\n\n if (this.selectedIndex === index) {\n this.selectedIndex = -1;\n this.openContent = null;\n return;\n }\n this.selectedIndex = index;\n this.openContent = this.content[index];\n }\n}\n","
\n
\n \n
\n
\n {{ tab.name | translate }}\n \n \n info_outline\n \n \n
\n
\n {{ tab.value }}\n \n
{{ tab.subtitle }}
\n
\n
\n
\n
\n\n
\n \n
\n\n","import { formatNumber } from '@angular/common';\nimport { Component, HostListener, Input, OnChanges } from '@angular/core';\nimport { GalaxyChartType } from '@bit/vendasta.planets.chart';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Chart, ChartConfiguration, ChartData, registerables } from 'chart.js';\nimport dayjs from 'dayjs';\nimport { MaxMapsRank, MaxRank, SEODataPoint, SEOTableData, SeoDataKeywordMetrics } from '../local-seo';\nimport { StatTabData } from '../stat-tabs/stat-tabs.component';\n\ninterface CardDataPoint {\n value: string;\n delta?: number;\n}\n\ninterface keywordMovement {\n keywordsUp: number;\n keywordsDown: number;\n ranksUp: number;\n ranksDown: number;\n}\n\ninterface keywordRanks {\n date: Date;\n top10: number;\n top50: number;\n other: number;\n}\n\ninterface positionDataPoint {\n date: Date;\n local: positionTotal;\n organic: positionTotal;\n average: positionTotal;\n}\n\ninterface positionTotal {\n value: number;\n totalKeywords: number;\n}\n\n@Component({\n selector: 'local-seo-keywords-stats-cards',\n templateUrl: './local-seo-keywords-stats-cards.component.html',\n styleUrls: ['./local-seo-keywords-stats-cards.component.scss'],\n})\nexport class LocalSeoKeywordsStatsCardsComponent implements OnChanges {\n localCards: StatTabData[];\n @Input() data: SEOTableData[];\n @Input() disableDropdowns: boolean;\n\n keywordMovement: keywordMovement;\n screenWidth = window.innerWidth;\n\n constructor(private translate: TranslateService) {\n this.onResize();\n Chart.register(...registerables);\n }\n\n @HostListener('window:resize', ['$event'])\n onResize() {\n this.top10ChartConfig.options.plugins.legend.position = window.innerWidth > 600 ? 'right' : 'bottom';\n this.positionChartConfig.options.plugins.legend.position = window.innerWidth > 600 ? 'right' : 'bottom';\n }\n\n @Input() set keywordMetrics(metrics: SeoDataKeywordMetrics[]) {\n this.setTop10PositionChartData(metrics);\n this.setPositionChartData(metrics);\n }\n\n setTop10PositionChartData(metrics: SeoDataKeywordMetrics[]) {\n const series = metrics.map((keywordSeries) =>\n getBestRankForEachDate(keywordSeries.organicRank, keywordSeries.localRank),\n );\n let values: keywordRanks[] = [];\n series.reduce((acc, keywordSeries) => {\n acc = keywordSeries.reduce((acc2, point) => {\n if (point.value > 0 && point.value <= 10) {\n acc2 = addKeywordRanksToList(acc2, point.date, true, false, false);\n } else if (point.value > 0 && point.value <= MaxRank) {\n acc2 = addKeywordRanksToList(acc2, point.date, false, true, false);\n } else {\n acc2 = addKeywordRanksToList(acc2, point.date, false, false, true);\n }\n return acc2;\n }, acc);\n return acc;\n }, values);\n\n values = values.sort((a, b) => {\n return new Date(a.date).getTime() < new Date(b.date).getTime() ? -1 : 1;\n });\n\n this.top10ChartData.labels = values.map((value) => dayjs.utc(value.date).format('MMM D'));\n this.top10ChartData.datasets = [\n {\n label: this.translate.instant('LOCAL_SEO.LOCAL_SEO.GRAPHS.OVER_50'),\n data: values.map((value) => value.other),\n backgroundColor: ['#BDBDBD'],\n },\n {\n label: this.translate.instant('LOCAL_SEO.LOCAL_SEO.GRAPHS.TOP50'),\n data: values.map((value) => value.top50),\n backgroundColor: ['#4CAF50'],\n },\n {\n label: this.translate.instant('LOCAL_SEO.LOCAL_SEO.GRAPHS.TOP10'),\n data: values.map((value) => value.top10),\n backgroundColor: ['#388E3C'],\n },\n ];\n }\n\n setPositionChartData(metrics: SeoDataKeywordMetrics[]) {\n let datesWithData = metrics.reduce((acc, keywordSeries) => {\n keywordSeries.organicRank.reduce((acc2, point) => {\n if (point.value > 0 && point.value < MaxRank && !acc2.includes(point.date)) {\n acc2.push(point.date);\n }\n return acc2;\n }, acc);\n keywordSeries.localRank.reduce((acc2, point) => {\n if (point.value > 0 && point.value < MaxMapsRank && !acc2.includes(point.date)) {\n acc2.push(point.date);\n }\n return acc2;\n }, acc);\n return acc;\n }, []);\n\n datesWithData = datesWithData.sort((a, b) => {\n return new Date(a).getTime() < new Date(b).getTime() ? -1 : 1;\n });\n\n let dataPoints: positionDataPoint[] = datesWithData.map((date) => {\n return {\n date: date,\n local: {\n value: 0,\n totalKeywords: 0,\n },\n organic: {\n value: 0,\n totalKeywords: 0,\n },\n average: {\n value: 0,\n totalKeywords: 0,\n },\n };\n });\n\n dataPoints = metrics.reduce((acc, keywordSeries) => {\n acc = keywordSeries.organicRank.reduce((acc2, point) => {\n if (point.value === 0 || point.value > MaxRank) {\n return acc2;\n }\n const existingIndex = acc.findIndex((entry) => entry.date === point.date);\n if (existingIndex > -1) {\n acc2[existingIndex].organic.value += point.value;\n acc2[existingIndex].organic.totalKeywords++;\n acc2[existingIndex].average.value += point.value;\n acc2[existingIndex].average.totalKeywords++;\n }\n return acc2;\n }, acc);\n acc = keywordSeries.localRank.reduce((acc2, point) => {\n if (point.value === 0 || point.value > MaxMapsRank) {\n return acc2;\n }\n const existingIndex = acc.findIndex((entry) => entry.date === point.date);\n if (existingIndex > -1) {\n acc2[existingIndex].local.value += point.value;\n acc2[existingIndex].local.totalKeywords++;\n acc2[existingIndex].average.value += point.value;\n acc2[existingIndex].average.totalKeywords++;\n }\n return acc2;\n }, acc);\n return acc;\n }, dataPoints);\n\n this.positionChartData.labels = datesWithData.map((date) => dayjs.utc(date).format('MMM D'));\n this.positionChartData.datasets = [\n {\n label: '',\n type: 'line',\n data: dataPoints.map((point) => {\n if (point.average.value === 0 || point.average.totalKeywords === 0) {\n return 0;\n }\n return MaxRank - Math.round(point.average.value / point.average.totalKeywords);\n }),\n borderColor: ['#000000'],\n borderDash: [2, 2],\n borderWidth: 1,\n pointRadius: 0,\n },\n {\n label: this.translate.instant('LOCAL_SEO.LOCAL_SEO.GRAPHS.LOCAL'),\n data: dataPoints.map((point) => {\n if (point.local.value === 0 || point.local.totalKeywords === 0) {\n return 0;\n }\n return MaxRank - Math.round(point.local.value / point.local.totalKeywords);\n }),\n backgroundColor: ['#66BB6A'],\n },\n {\n label: this.translate.instant('LOCAL_SEO.LOCAL_SEO.GRAPHS.ORGANIC'),\n data: dataPoints.map((point) => {\n if (point.organic.value === 0 || point.organic.totalKeywords === 0) {\n return 0;\n }\n return MaxRank - Math.round(point.organic.value / point.organic.totalKeywords);\n }),\n backgroundColor: ['#56B4E9'],\n },\n ];\n }\n\n top10ChartConfig: ChartConfiguration = {\n type: GalaxyChartType.BAR,\n data: {\n datasets: [],\n labels: [],\n },\n options: {\n responsive: true,\n maintainAspectRatio: false,\n plugins: {\n legend: {\n display: true,\n position: this.screenWidth > 600 ? 'right' : 'bottom',\n align: 'center',\n fullSize: true,\n },\n },\n scales: {\n x: {\n stacked: false,\n },\n y: {\n beginAtZero: true,\n ticks: {\n maxTicksLimit: 3,\n },\n },\n },\n },\n };\n\n top10ChartData: ChartData = {\n datasets: [],\n };\n\n positionChartConfig: ChartConfiguration = {\n type: GalaxyChartType.BAR,\n data: {\n datasets: [],\n labels: [],\n },\n options: {\n responsive: true,\n maintainAspectRatio: false,\n plugins: {\n legend: {\n display: true,\n position: this.screenWidth > 600 ? 'right' : 'bottom',\n align: 'center',\n fullSize: true,\n labels: {\n filter: function (item) {\n return !!item.text;\n },\n },\n },\n tooltip: {\n callbacks: {\n label: function (context) {\n let label = context.dataset.label || '';\n if (label) {\n label += ': ';\n }\n if (context.parsed.y !== null) {\n label += MaxRank - context.parsed.y;\n }\n return label;\n },\n },\n },\n },\n scales: {\n x: {\n stacked: false,\n },\n y: {\n max: MaxRank - 1,\n min: 0,\n ticks: {\n maxTicksLimit: 3,\n callback: function (value): string {\n if (value === 0) {\n return `${MaxRank}+`;\n }\n return (-1 * (+value - MaxRank)).toString();\n },\n },\n },\n },\n },\n };\n\n positionChartData: ChartData = {\n labels: [],\n datasets: [],\n };\n\n ngOnChanges() {\n const averagePosition = this.getAveragePosition(this.data);\n const top10 = this.getTop10(this.data);\n const hasPreviousData = !!this.data.find((item) => !!item.localStartedAt);\n this.keywordMovement = this.getKeywordsUp(this.data, hasPreviousData);\n\n this.localCards = [\n {\n name: 'LOCAL_SEO.LOCAL_SEO.TOP_10',\n value: top10.value,\n showDelta: hasPreviousData,\n deltaValue: top10.delta,\n },\n {\n name: 'LOCAL_SEO.LOCAL_SEO.AVERAGE_POSITION',\n value: averagePosition.value,\n showDelta: hasPreviousData,\n deltaValue: averagePosition.delta,\n toolTip: {\n title: 'LOCAL_SEO.LOCAL_SEO.AVERAGE_POSITION_TOOLTIP_TITLE',\n content: 'LOCAL_SEO.LOCAL_SEO.AVERAGE_POSITION_TOOLTIP',\n },\n },\n {\n name: 'LOCAL_SEO.LOCAL_SEO.KEYWORDS_UP',\n value: this.keywordMovement.keywordsUp.toString(),\n showDelta: false,\n deltaValue: null,\n subtitle:\n this.keywordMovement.ranksUp > 0\n ? this.translate.instant('LOCAL_SEO.LOCAL_SEO.BY_RANKS', { value: this.keywordMovement.ranksUp })\n : '',\n },\n ];\n }\n\n private getAveragePosition(data: SEOTableData[]): CardDataPoint {\n let currentTotalRanks = 0;\n let currentTotalRankValue = 0;\n let previousTotalRanks = 0;\n let previousTotalRankValue = 0;\n data.forEach((item) => {\n if (item.organicRank.rawValue <= MaxRank && item.organicRank.rawValue > 0) {\n currentTotalRanks++;\n currentTotalRankValue += item.organicRank.rawValue;\n }\n if (item.localRank.rawValue <= MaxMapsRank && item.localRank.rawValue > 0) {\n currentTotalRanks++;\n currentTotalRankValue += item.localRank.rawValue;\n }\n if (item.organicStartedAt.rawValue <= MaxRank && item.organicStartedAt.rawValue > 0) {\n previousTotalRanks++;\n previousTotalRankValue += item.organicStartedAt.rawValue;\n }\n if (item.localStartedAt.rawValue <= MaxMapsRank && item.localStartedAt.rawValue > 0) {\n previousTotalRanks++;\n previousTotalRankValue += item.localStartedAt.rawValue;\n }\n });\n if (currentTotalRanks === 0) {\n return { value: '---' };\n }\n const average = Math.round(currentTotalRankValue / currentTotalRanks);\n const previousAverage = Math.round(previousTotalRankValue / previousTotalRanks);\n\n // We invert the delta here because a lower number is better\n return { value: formatNumber(average, 'en-US', '1.0-2'), delta: -1 * (average - previousAverage) };\n }\n\n private getKeywordsUp(data: SEOTableData[], hasPreviousData: boolean): keywordMovement {\n if (!hasPreviousData) {\n return {\n ranksUp: 0,\n ranksDown: 0,\n keywordsUp: 0,\n keywordsDown: 0,\n };\n }\n\n let keywordsUp = 0;\n let keywordsDown = 0;\n let ranksUp = 0;\n let ranksDown = 0;\n data.forEach((item) => {\n let rank = 0;\n if (item.localRank.rawValue > 0 && item.localRank.rawValue < MaxMapsRank && item.localStartedAt.rawValue > 0) {\n rank += item.localStartedAt.rawValue - item.localRank.rawValue;\n }\n\n if (item.organicRank.rawValue > 0 && item.organicRank.rawValue < MaxRank && item.organicStartedAt.rawValue > 0) {\n rank += item.organicStartedAt.rawValue - item.organicRank.rawValue;\n }\n rank > 0 ? keywordsUp++ : rank < 0 ? keywordsDown++ : null;\n rank > 0 ? (ranksUp += rank) : rank < 0 ? (ranksDown += rank) : null;\n });\n\n return {\n ranksUp: ranksUp,\n ranksDown: Math.abs(ranksDown),\n keywordsUp: keywordsUp,\n keywordsDown: keywordsDown,\n };\n }\n\n private getTop10(data: SEOTableData[]): CardDataPoint {\n const currentTop10 = data.filter(\n (item) =>\n (item.localRank.rawValue > 0 && item.localRank.rawValue <= 10) ||\n (item.organicRank.rawValue > 0 && item.organicRank.rawValue <= 10),\n ).length;\n const previousTop10 = data.filter(\n (item) =>\n (item.localStartedAt.rawValue > 0 && item.localStartedAt.rawValue <= 10) ||\n (item.organicStartedAt.rawValue > 0 && item.organicStartedAt.rawValue <= 10),\n ).length;\n return {\n value: formatNumber(currentTop10, 'en-US', '1.0-2'),\n delta: currentTop10 - previousTop10,\n };\n }\n}\n\nfunction addKeywordRanksToList(\n list: keywordRanks[],\n date: Date,\n top10: boolean,\n top50: boolean,\n other: boolean,\n): keywordRanks[] {\n const existingIndex = list.findIndex((point) => point.date === date);\n if (existingIndex > -1) {\n if (top10) {\n list[existingIndex].top10++;\n }\n if (top50) {\n list[existingIndex].top50++;\n }\n if (other) {\n list[existingIndex].other++;\n }\n } else {\n list.push({\n date: date,\n top10: top10 ? 1 : 0,\n top50: top50 ? 1 : 0,\n other: other ? 1 : 0,\n });\n }\n return list;\n}\n\nfunction getBestRankForEachDate(organic: SEODataPoint[], local: SEODataPoint[]) {\n const bestRank: SEODataPoint[] = [];\n organic.forEach((organicPoint) => {\n bestRank.push({\n date: organicPoint.date,\n value: organicPoint.value,\n });\n });\n local.forEach((localPoint) => {\n const existingIndex = bestRank.findIndex((point) => point.date === localPoint.date);\n if (existingIndex > -1) {\n if (\n (localPoint.value !== 0 && localPoint.value < bestRank[existingIndex].value) ||\n bestRank[existingIndex].value === 0\n ) {\n bestRank[existingIndex].value = localPoint.value;\n }\n } else {\n bestRank.push({\n date: localPoint.date,\n value: localPoint.value,\n });\n }\n });\n return bestRank;\n}\n","
\n
\n \n
\n
\n\n\n \n \n \n \n \n\n\n\n \n \n \n \n \n\n\n\n \n \n
\n
\n
\n Keywords Up\n
\n
\n {{ keywordMovement.keywordsUp }}\n
0\">\n {{ 'LOCAL_SEO.LOCAL_SEO.BY_RANKS' | translate : { value: keywordMovement.ranksUp } }}\n
\n
\n
\n\n
\n
\n Keywords Down\n
\n
\n {{ keywordMovement.keywordsDown }}\n
0\">\n {{ 'LOCAL_SEO.LOCAL_SEO.BY_RANKS' | translate : { value: keywordMovement.ranksDown } }}\n
\n
\n
\n
\n
\n
\n
\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\n@Component({\n selector: 'local-seo-info-banner',\n templateUrl: './info-banner.component.html',\n styleUrls: ['./info-banner.component.scss'],\n})\nexport class InfoBannerComponent {\n @Input() title: string;\n @Input() imageURL: string;\n @Input() description: string;\n @Input() buttonText: string;\n @Output() buttonClick = new EventEmitter();\n open = true;\n\n toggle() {\n this.open = !this.open;\n }\n}\n","
\n \n \n
\n \n \n \n
\n
{{ title }}
\n
{{ description }}
\n
\n \n
\n
\n \n
\n
\n
\n
\n\n\n \n\n","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { Component, Inject, OnDestroy, OnInit } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Environment, EnvironmentService } from '@galaxy/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { KeywordInfo, Location } from '@vendasta/listing-products';\nimport { EditionUpgradeAction } from '@vendasta/marketplace-apps';\nimport { RetailPrice } from '@vendasta/marketplace-packages';\nimport { UpgradeCTADialogComponent, UpgradeCTADialogConfig, VaProductNavActionButton } from '@vendasta/uikit';\nimport { Observable, Subscription, combineLatest } from 'rxjs';\nimport { filter, map, shareReplay, switchMap, take } from 'rxjs/operators';\nimport { AGIDTOKEN, APP_ID, DEMO_PAID_EDITION, PROD_PAID_EDITION, SEOTableData } from '../../local-seo';\nimport {\n UpgradeCTADialogService,\n appID,\n UpgradeRedirectItem,\n} from '../../upgrade-cta-dialog/upgrade-cta-dialog.service';\nimport { LocalSeoKeywordDialogComponent } from '../local-seo-keyword-dialog/local-seo-keyword-dialog.component';\nimport { KeywordTrackingService } from './keyword-tracking.service';\n\nexport interface Stat {\n value: string;\n rawValue: number;\n}\n\ninterface ColumnConfigValue {\n name: string;\n class: string;\n iconURL?: string;\n}\n\nexport interface ColumnConfig {\n [key: string]: ColumnConfigValue;\n}\n\ninterface SortSettings {\n active: keyof SEOTableData;\n direction: 'asc' | 'desc';\n}\n\nexport const SEODATA_TAB_GRAPH = 'graph';\nexport const SEODATA_TAB_GRID = 'grid';\n\n@Component({\n selector: 'local-seo-keyword-tracking',\n templateUrl: './keyword-tracking.component.html',\n styleUrls: ['./keyword-tracking.component.scss'],\n animations: [\n trigger('detailExpand', [\n state('collapsed', style({ height: '0px', minHeight: '0' })),\n state('expanded', style({ height: '*', minHeight: '60px' })),\n transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),\n ]),\n trigger('rotateIcon', [\n state('down', style({ transform: 'rotate(0)' })),\n state('up', style({ transform: 'rotate(-180deg)' })),\n transition('down <=> up', animate('225ms ease-out')),\n ]),\n ],\n})\nexport class KeywordTrackingComponent implements OnInit, OnDestroy {\n actionButton: VaProductNavActionButton;\n SEOData$: Observable;\n Location$: Observable;\n loading$: Observable;\n isKeywordListEmpty$: Observable;\n Math: Math;\n subscriptions: Subscription[] = [];\n activeTab: string;\n\n columnConfig: ColumnConfig = {\n keyword: {\n name: 'LOCAL_SEO.KEYWORD',\n class: 'keyword',\n },\n local: {\n name: 'LOCAL_SEO.LOCAL_SEO.MAPS',\n class: 'divided',\n iconURL: 'https://vstatic-prod.apigateway.co/listing-builder-client/assets/images/google/google-maps.svg',\n },\n organic: {\n name: 'LOCAL_SEO.LOCAL_SEO.ORGANIC',\n class: 'divided',\n iconURL: 'https://vstatic-prod.apigateway.co/listing-builder-client/assets/images/google/google.png',\n },\n localRank: {\n name: 'LOCAL_SEO.LOCAL_SEO.RANK',\n class: 'divided',\n },\n organicRank: {\n name: 'LOCAL_SEO.LOCAL_SEO.RANK',\n class: 'divided',\n },\n localStartedAt: {\n name: 'LOCAL_SEO.LOCAL_SEO.STARTED_AT',\n class: '',\n },\n organicStartedAt: {\n name: 'LOCAL_SEO.LOCAL_SEO.STARTED_AT',\n class: '',\n },\n difficulty: {\n name: 'LOCAL_SEO.LOCAL_SEO.RANK_DIFFICULTY',\n class: 'divided',\n },\n searchVolume: {\n name: 'LOCAL_SEO.LOCAL_SEO.SEARCH_VOLUME',\n class: 'mat-header-wrap-text',\n },\n empty: {\n name: '',\n class: '',\n },\n empty2: {\n name: '',\n class: '',\n },\n };\n sortSettings = { active: 'localRank', direction: 'asc' };\n\n ExampleData = [\n {\n keyword: 'LOCAL_SEO.LOCAL_SEO.EXAMPLE_KEYWORD',\n mapsRank: 1,\n mapsStartedAt: 3,\n organicRank: 2,\n organicStartedAt: 10,\n rankDifficulty: 200,\n searchVolume: 4000,\n },\n ];\n\n statColumns: string[] = [\n 'keyword',\n 'localRank',\n 'localStartedAt',\n 'organicRank',\n 'organicStartedAt',\n 'difficulty',\n 'searchVolume',\n ];\n topColumns: string[] = ['empty', 'local', 'organic', 'empty2', 'expandIcon'];\n columns: string[] = [\n 'keyword',\n 'localRank',\n 'localStartedAt',\n 'organicRank',\n 'organicStartedAt',\n 'difficulty',\n 'searchVolume',\n 'expandIcon',\n ];\n\n dialogRef: MatDialogRef;\n upgradeDialogRef: MatDialogRef;\n listingProfileRedirectLink: string;\n canEditKeywords: boolean;\n editionUpgradeHidden$: Observable;\n emptyStateImage$: Observable;\n showTopCardDropdowns$: Observable;\n isLbFreeEdition$: Observable;\n\n constructor(\n public localSEOService: KeywordTrackingService,\n @Inject(AGIDTOKEN) public agid$: Observable,\n private dialog: MatDialog,\n private upgradeDialogService: UpgradeCTADialogService,\n private translate: TranslateService,\n private router: Router,\n private route: ActivatedRoute,\n private env: EnvironmentService,\n ) {\n this.isLbFreeEdition$ = localSEOService.isLBFreeEdition$;\n\n this.showTopCardDropdowns$ = this.localSEOService.featureFlags$.pipe(map((flags) => flags['lb_seo_card_graphs']));\n this.editionUpgradeHidden$ = combineLatest([\n this.isLbFreeEdition$,\n this.upgradeDialogService.getEditionChangeDetails$(),\n ]).pipe(\n map(([isFreeEdition, details]) => {\n return isFreeEdition && !!details?.hideUpgradeCta;\n }),\n );\n this.listingProfileRedirectLink = this.router\n .createUrlTree(['../listing-profile'], { relativeTo: this.route })\n .toString();\n this.loading$ = localSEOService.loading$$.asObservable();\n\n this.emptyStateImage$ = this.isLbFreeEdition$.pipe(\n map((isFreeEdition) =>\n isFreeEdition\n ? 'https://vstatic-prod.apigateway.co/listing-builder-client/assets/images/keywords-empty-state-std-edition.svg'\n : 'https://vstatic-prod.apigateway.co/listing-builder-client/assets/images/keywords-empty-state-pro-edition.svg',\n ),\n );\n\n this.SEOData$ = combineLatest([\n localSEOService.SEOData$,\n localSEOService.keywords$$.asObservable(),\n localSEOService.keywordMetrics$,\n localSEOService.seoSettings$,\n ]).pipe(\n map(([seoData, keywords, metrics, settings]) => {\n const seoDataPeriods: SEOTableData[] = [];\n keywords.forEach((keyword) => {\n const currentKMetric = metrics.find((m) => m.keyword === keyword);\n const currentData = seoData.find((d) => d.keyword === keyword);\n seoDataPeriods.push(new SEOTableData(keyword, currentData, currentKMetric, settings));\n });\n return seoDataPeriods;\n }),\n );\n this.Location$ = localSEOService.listingProfile$$.asObservable().pipe(map((profile) => profile?.napData));\n\n this.isKeywordListEmpty$ = this.localSEOService.keywords$$.asObservable().pipe(map((k) => k?.length < 1));\n this.localSEOService.canEditKeywords$.subscribe((value) => {\n this.canEditKeywords = value;\n });\n }\n\n ngOnInit(): void {\n this.actionButton = {\n label: 'local-seo-title-action',\n } as VaProductNavActionButton;\n }\n\n public getValuesForSorting(data: SEOTableData, sortHeaderId: keyof SEOTableData): string | number {\n const value = data[sortHeaderId];\n switch (sortHeaderId) {\n case 'keyword':\n return (value as Stat).value.toLocaleLowerCase();\n default:\n return (value as Stat).rawValue ?? 999999; //set undefined as the highest possible value so it remains at the bottom\n }\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach((sub) => sub.unsubscribe());\n }\n\n setSortSettings($event: SortSettings): void {\n this.sortSettings = { ...$event };\n }\n\n open(limit: number, suggestedKeywords: KeywordInfo[]): void {\n this.dialogRef = this.dialog.open(LocalSeoKeywordDialogComponent, {\n data: {\n keywords: [],\n keywordLimit: limit,\n suggestedKeywords: suggestedKeywords,\n canEditKeywords: this.canEditKeywords,\n },\n width: '600px',\n });\n this.subscriptions.push(\n this.dialogRef.afterClosed().subscribe((result) => {\n if (result !== undefined) {\n this.localSEOService.updateKeywords(result.keywords);\n }\n }),\n );\n }\n\n OpenUpgradeDialog() {\n const editionChangeDetails$ = this.upgradeDialogService.getEditionChangeDetails$();\n const upgradePrice$: Observable = combineLatest([\n this.upgradeDialogService.partnerMarket$,\n editionChangeDetails$,\n ]).pipe(\n switchMap(([pmConfig, editionChangeDetails]) => {\n let paidEdition = DEMO_PAID_EDITION;\n if (this.env.getEnvironment() == Environment.PROD) {\n paidEdition = PROD_PAID_EDITION;\n }\n return this.upgradeDialogService.getUpgradePrice$(pmConfig, appID, editionChangeDetails, paidEdition);\n }),\n shareReplay(1),\n );\n const formattedUpgradePrice$ = upgradePrice$.pipe(\n switchMap((upgradePrice) => this.upgradeDialogService.getFormattedRetailPrice$(upgradePrice)),\n );\n combineLatest([\n upgradePrice$,\n formattedUpgradePrice$,\n editionChangeDetails$,\n this.upgradeDialogService.getCustomUpgradeModalContent$(),\n this.upgradeDialogService.appSettings$,\n ])\n .pipe(\n take(1),\n switchMap(\n ([upgradePrice, formattedUpgradePrice, editionChangeDetails, customUpgradeModalContent, settings]) => {\n const marketingPoints = [\n this.translate.instant('EDITION.UPGRADE_MODAL.MARKETING_POINTS.LINE_1'),\n this.translate.instant('EDITION.UPGRADE_MODAL.MARKETING_POINTS.LINE_2'),\n this.translate.instant('EDITION.UPGRADE_MODAL.MARKETING_POINTS.LINE_3'),\n this.translate.instant('EDITION.UPGRADE_MODAL.MARKETING_POINTS.LINE_4'),\n this.translate.instant('EDITION.UPGRADE_MODAL.MARKETING_POINTS.LINE_5'),\n this.translate.instant('EDITION.UPGRADE_MODAL.MARKETING_POINTS.LINE_6'),\n ];\n const appName =\n settings.branding &&\n settings.branding.enabled &&\n settings.branding.enabled === true &&\n settings.branding.name\n ? settings.branding.name\n : 'Local SEO';\n\n let ctaText =\n !!customUpgradeModalContent && customUpgradeModalContent.buttonText\n ? customUpgradeModalContent.buttonText\n : undefined;\n if (editionChangeDetails?.editionUpgradeAction && !ctaText) {\n switch (editionChangeDetails?.editionUpgradeAction) {\n case EditionUpgradeAction.EDITION_UPGRADE_ACTION_CONTACT_SALES:\n ctaText = this.translate.instant('UPGRADE_DIALOG.PRICE.CONTACT_SALES');\n break;\n default:\n ctaText = this.translate.instant('LISTING_DISTRIBUTION.UPGRADE_MODAL.BUTTON_TEXT');\n break;\n }\n }\n\n const dialogConfig: UpgradeCTADialogConfig = {\n editionName: `${appName} ${this.translate.instant('COMMON.PRO')}`,\n imageText:\n !!customUpgradeModalContent && customUpgradeModalContent.titleText\n ? customUpgradeModalContent.titleText\n : this.translate.instant('EDITION.UPGRADE_MODAL.IMAGE_TEXT'),\n imageUrl:\n !!customUpgradeModalContent && customUpgradeModalContent.imageUrl\n ? customUpgradeModalContent.imageUrl\n : `https://vstatic-prod.apigateway.co/listing-builder-client/assets/images/LocalSearch.svg`,\n keySellingPoints:\n !!customUpgradeModalContent && customUpgradeModalContent.sellingPoints\n ? customUpgradeModalContent.sellingPoints\n : marketingPoints,\n ctaText: ctaText || this.translate.instant('LISTING_DISTRIBUTION.UPGRADE_MODAL.BUTTON_TEXT'),\n upgradeNowText: this.upgradeDialogService.getUpgradeText(upgradePrice, editionChangeDetails),\n price: formattedUpgradePrice,\n frequency: this.upgradeDialogService.getFrequencyText(upgradePrice),\n };\n\n this.upgradeDialogRef = this.dialog.open(UpgradeCTADialogComponent, {\n data: dialogConfig,\n });\n return this.upgradeDialogRef.afterClosed().pipe(\n filter((upgradeClicked) => !!upgradeClicked),\n switchMap(() => {\n const isCustomPackage =\n editionChangeDetails.editionUpgradeAction == EditionUpgradeAction.EDITION_UPGRADE_ACTION_CUSTOM_ORDER;\n let paidEdition = DEMO_PAID_EDITION;\n if (this.env.getEnvironment() == Environment.PROD) {\n paidEdition = PROD_PAID_EDITION;\n }\n const item: UpgradeRedirectItem = isCustomPackage\n ? { packageId: editionChangeDetails.priceReferencePackageId }\n : { appId: APP_ID, editionId: paidEdition };\n return this.upgradeDialogService.buildBusinessCenterUpgradeRedirectInfo(\n item,\n editionChangeDetails.editionUpgradeAction,\n );\n }),\n );\n },\n ),\n )\n .subscribe((redirectInfo) => {\n this.upgradeDialogService.sendToVbc(redirectInfo);\n });\n }\n\n deleteKeyword(keyword: string): void {\n this.localSEOService.deleteKeyword(keyword);\n }\n}\n","
\n
\n
\n
\n \n
\n \n
\n
\n\n
\n
\n \n
\n \n
\n
\n\n
\n
\n \n
\n
\n\n
\n
\n \n \n \n
\n
\n
\n
\n \n \n \n \n add\n {{ 'LOCAL_SEO.ADD_INITIAL_KEYWORD' | translate }}\n \n \n \n \n \n \n \n
\n
\n\n
\n
\n \n
\n
\n {{ 'LOCAL_SEO.LEGEND.LABEL' | translate }}\n
\n
50+ {{ 'LOCAL_SEO.LEGEND.OVER_50' | translate }}
\n
NR {{ 'LOCAL_SEO.LEGEND.NOT_RANKED' | translate }}
\n
{{ 'LOCAL_SEO.LEGEND.SEARCHING' | translate }}
\n
\n
\n
\n
\n \n
\n

\n {{ 'COMMON.DISCLAIMER' | translate }}\n

\n
\n\n\n\n \n \n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n \n\n \n \n \n \n\n \n \n \n \n\n \n \n \n \n\n \n \n \n \n\n \n \n \n \n\n \n \n \n \n\n \n \n \n
\n
\n \n
{{ 'LOCAL_SEO.LOCAL_SEO.MAPS' | translate }}
\n
\n
\n
\n \n
{{ 'LOCAL_SEO.LOCAL_SEO.ORGANIC' | translate }}
\n
\n
{{ 'LOCAL_SEO.KEYWORD' | translate }}{{ element.keyword | translate }}{{ 'LOCAL_SEO.LOCAL_SEO.RANK' | translate }}{{ element.mapsRank }}{{ 'LOCAL_SEO.LOCAL_SEO.STARTED_AT' | translate }}{{ element.mapsStartedAt }}{{ 'LOCAL_SEO.LOCAL_SEO.RANK' | translate }}{{ element.organicRank }}{{ 'LOCAL_SEO.LOCAL_SEO.STARTED_AT' | translate }}{{ element.organicStartedAt }}\n {{ 'LOCAL_SEO.LOCAL_SEO.RANK_DIFFICULTY' | translate }}\n {{ element.rankDifficulty }}{{ element.searchVolume }}
\n
\n
\n\n \n \n \n\n\n \n\n","import { Component, Inject, Pipe, PipeTransform } from '@angular/core';\nimport { FormBuilder, UntypedFormControl } from '@angular/forms';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { TranslateService } from '@ngx-translate/core';\nimport { SelectInputOption } from '@vendasta/galaxy/input';\nimport {\n SEARCH_RADIUS_BIG_CITY,\n SEARCH_RADIUS_LOCAL,\n SEARCH_RADIUS_SMALL_CITY,\n SEARCH_RADIUS_XL_CITY,\n SEODataSearchRadiusTypes,\n SeoDataSearchRadiusType,\n} from '../../local-seo';\n\nconst defaultOptions = [\n {\n label: 'LOCAL_SEO.SELECT_LOCAL_SEARCH_RADIUS.LOCAL',\n value: SEARCH_RADIUS_LOCAL,\n },\n {\n label: 'LOCAL_SEO.SELECT_LOCAL_SEARCH_RADIUS.SMALL_CITY',\n value: SEARCH_RADIUS_SMALL_CITY,\n },\n {\n label: 'LOCAL_SEO.SELECT_LOCAL_SEARCH_RADIUS.BIG_CITY',\n value: SEARCH_RADIUS_BIG_CITY,\n },\n {\n label: 'LOCAL_SEO.SELECT_LOCAL_SEARCH_RADIUS.XL_CITY',\n value: SEARCH_RADIUS_XL_CITY,\n },\n];\n\n@Pipe({\n name: 'mileToKilometer',\n})\nexport class MileToKilometerPipe implements PipeTransform {\n private readonly conversionFactor = 1.60934;\n transform(value: string, kilometersTranslationKey: string): string {\n const parts = value.split(' ');\n const number = parseFloat(parts[0]);\n const unit = parts[1];\n if (unit === kilometersTranslationKey) {\n const kilometers = number * this.conversionFactor;\n return `${Math.round(kilometers)} ${unit}`;\n }\n\n return `${number} ${unit}`;\n }\n}\n\n@Component({\n selector: 'local-seo-settings-dialog',\n templateUrl: './local-seo-settings-dialog.component.html',\n styleUrls: ['./local-seo-settings-dialog.component.scss'],\n})\nexport class LocalSeoSettingsDialogComponent {\n seoSettingsRadiusForm: UntypedFormControl;\n options: SelectInputOption[];\n selectedMapUnit: string;\n selectedValue: number;\n translatedMapUnitsKMS: string;\n constructor(\n @Inject(MAT_DIALOG_DATA)\n public data: { mapRadius: number; mapUnits: string },\n public dialogRef: MatDialogRef,\n private fb: FormBuilder,\n private translateService: TranslateService,\n ) {\n this.options = defaultOptions;\n\n this.selectedValue = SEARCH_RADIUS_LOCAL;\n\n this.translateService.get('LOCAL_SEO.SELECT_LOCAL_SEARCH_RADIUS.KMS').subscribe((translation) => {\n this.translatedMapUnitsKMS = translation;\n });\n\n const radiusValue = SEODataSearchRadiusTypes.includes(data.mapRadius as SeoDataSearchRadiusType)\n ? data.mapRadius\n : SEARCH_RADIUS_LOCAL;\n\n if (data.mapRadius && data.mapRadius > 0) {\n this.selectedValue = radiusValue;\n }\n\n this.seoSettingsRadiusForm = new UntypedFormControl();\n this.selectedMapUnit = data.mapUnits;\n this.seoSettingsRadiusForm.setValue(radiusValue);\n }\n\n closeModal(save: boolean): void {\n const result = {\n mapRadius: this.selectedValue,\n mapUnits: this.selectedMapUnit,\n };\n this.dialogRef.close(save ? result : undefined);\n }\n\n setMapUnit(selectedMapUnit: string): void {\n this.selectedMapUnit = selectedMapUnit;\n }\n}\n","

{{ 'COMMON.SETTINGS' | translate }}

\n\n \n \n {{ 'LOCAL_SEO.SELECT_LOCAL_SEARCH_RADIUS.MAP_UNITS.LABEL' | translate }}\n \n \n {{ 'LOCAL_SEO.SELECT_LOCAL_SEARCH_RADIUS.MAP_UNITS.MILES' | translate }}\n \n \n {{ 'LOCAL_SEO.SELECT_LOCAL_SEARCH_RADIUS.MAP_UNITS.KILOMETERS' | translate }}\n \n \n \n \n {{ 'LOCAL_SEO.SELECT_LOCAL_SEARCH_RADIUS.LABEL' | translate }}\n \n \n {{ option.label | translate : { mapUnits: selectedMapUnit } | mileToKilometer : translatedMapUnitsKMS }}\n \n \n \n \n {{ 'LOCAL_SEO.SELECT_LOCAL_SEARCH_RADIUS.DESCRIPTION' | translate }}\n \n \n\n\n \n \n\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatCardModule } from '@angular/material/card';\nimport { LocalSeoKeywordsStatsCardsComponent } from './local-seo-keywords-stats-cards.component';\nimport { LocalSEOStatTabsComponent } from '../stat-tabs/stat-tabs.component';\nimport { ChartModule } from '@bit/vendasta.planets.chart';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { GalaxyTooltipModule } from '@vendasta/galaxy/tooltip';\nimport { DeltaComponent } from '../delta/delta.component';\n\n@NgModule({\n declarations: [LocalSeoKeywordsStatsCardsComponent, LocalSEOStatTabsComponent],\n imports: [\n CommonModule,\n TranslateModule,\n MatCardModule,\n ChartModule,\n MatIconModule,\n GalaxyTooltipModule,\n DeltaComponent,\n ],\n exports: [LocalSeoKeywordsStatsCardsComponent],\n})\nexport class LocalSeoKeywordsStatsCardsModule {}\n","{\n \"COMMON.ACTIVATE_SYNC\": \"Activate Syncing\",\n \"COMMON.APPLY\": \"Apply\",\n \"COMMON.ADD_KEYWORDS\": \"Add Keywords\",\n \"COMMON.CANCEL\": \"Cancel\",\n \"COMMON.DISCLAIMER\": \"All product and company names, logos, brands are trademarks or registered trademarks of their respective holders. Use of them is for identification or reference purposes only and does not imply any affiliation, association, or endorsement by them.\",\n \"COMMON.DISCONNECT\": \"Disconnect\",\n \"COMMON.HAS_CATEGORY_NOT_FOUND_MESSAGE\": \"Please select a business category to improve the performance of your syncing listings\",\n \"COMMON.LEGEND\": \"Legend\",\n \"COMMON.PRO\": \"Pro\",\n \"COMMON.RECONNECT_FACEBOOK.NO_SM_DESCRIPTION\": \"We’re updating the way we manage connections to Facebook and Instagram accounts. Reconnect your accounts to ensure that your business data continues to sync to these sources.\",\n \"COMMON.RECONNECT_FACEBOOK.TITLE\": \"Reconnect to Facebook and Instagram\",\n \"COMMON.RECONNECT_FACEBOOK.WITH_SM_DESCRIPTION\": \"We’re updating the way we manage connections to Facebook and Instagram accounts. Reconnect your accounts from the {{businessAppCustomName}} Connections Page to ensure that your business data continues to sync to these sources. Any removed accounts will result in scheduled social posts moving to drafts.\",\n \"COMMON.SETTINGS\": \"Settings\",\n \"COMMON.TWITTER_BANNER_RECONNECT_MESSAGE\": \"Your posts are no longer being posted to X (Formely Twitter). Please reconnect your accounts to ensure your content can be posted.\",\n \"COMMON.UPDATED\": \"Updated\",\n \"COMMON.YOU\": \"You\",\n \"COMMON.WEEK_OF\": \"Week of\",\n \"EDITION.UPGRADE_MODAL.IMAGE_TEXT\": \"Additional listing sources, local search grid, competitor rankings, and more!\",\n \"EDITION.UPGRADE_MODAL.MARKETING_POINTS.LINE_1\": \"Intuitive local SEO grid\",\n \"EDITION.UPGRADE_MODAL.MARKETING_POINTS.LINE_2\": \"Zero in on results based on map location\",\n \"EDITION.UPGRADE_MODAL.MARKETING_POINTS.LINE_3\": \"Gain access to 15 keywords\",\n \"EDITION.UPGRADE_MODAL.MARKETING_POINTS.LINE_4\": \"Keyword data refreshes weekly\",\n \"EDITION.UPGRADE_MODAL.MARKETING_POINTS.LINE_5\": \"Visually track keyword position over time\",\n \"EDITION.UPGRADE_MODAL.MARKETING_POINTS.LINE_6\": \"Sync to premium sources Apple, Bing, Instagram, and X\",\n \"LISTING_DATA.TURBO_LISTER_BUTTON\": \"Sync\",\n \"LISTING_DISTRIBUTION.UPGRADE_MODAL.BUTTON_TEXT\": \"Upgrade now\",\n \"LISTING_DISTRIBUTION.UPGRADE_MODAL.ACTIVE_ORDER_PRIMARY\": \"Hold tight!\",\n \"LISTING_DISTRIBUTION.UPGRADE_MODAL.ACTIVE_ORDER_SECONDARY\": \"Your upgrade is on its way.\",\n \"LISTING_DISTRIBUTION.UPGRADE_MODAL.IMAGE_TEXT\": \"The essential layer to your business being found.\",\n \"LISTING_DISTRIBUTION.UPGRADE_MODAL.MARKETING_POINTS.LINE_1\": \"Help customers find your business\",\n \"LISTING_DISTRIBUTION.UPGRADE_MODAL.MARKETING_POINTS.LINE_2\": \"Ensure accuracy across sources\",\n \"LISTING_DISTRIBUTION.UPGRADE_MODAL.MARKETING_POINTS.LINE_3\": \"Mobile apps, voice search, & more\",\n \"LISTING_DISTRIBUTION.UPGRADE_MODAL.MARKETING_POINTS.LINE_4\": \"Keep listings correct through changes\",\n \"LISTING_DISTRIBUTION.UPGRADE_MODAL.MARKETING_POINTS.LINE_5\": \"Trusted over manual listing updates\",\n \"LISTING_SYNC.ACCEPTANCE_SUMMARY_CARD.ACTIVATE_LSP_BUTTON\": \"Activate Listing Sync Pro\",\n \"LISTING_SYNC.ACCEPTANCE_SUMMARY_CARD.LSP_ACTIVE_BOTTOM_PARAGRAPH\": \"Update all of your listings to maximize your listing accuracy and improve your SEO ranking on top search engines like Google.\",\n \"LISTING_SYNC.ACCEPTANCE_SUMMARY_CARD.LSP_ACTIVE_INDICATOR_TEXT\": \"Listing Sync Pro Active\",\n \"LISTING_SYNC.ACCEPTANCE_SUMMARY_CARD.LSP_ACTIVE_MIDDLE_PARAGRAPH\": \"{{ manualUpdateOnlySourcesCount }} sources can only be updated by you.\",\n \"LISTING_SYNC.ACCEPTANCE_SUMMARY_CARD.LSP_ACTIVE_TOP_PARAGRAPH\": \"Your business information is accepted on {{ syncedSourcesCount }} listing sources.\",\n \"LISTING_SYNC.ACCEPTANCE_SUMMARY_CARD.LSP_ACTIVE_ZERO_MANUAL_MIDDLE_PARAGRAPH\": \"All of your listing sources are being updated by Listing Sync Pro.\",\n \"LISTING_SYNC.ACCEPTANCE_SUMMARY_CARD.LSP_NOT_ACTIVE_BOTTOM_PARAGRAPH\": \"Activate Listing Sync Pro to fix your listings automatically, turn your searchers into customers, and increase your ranking on top search engines like Google. We've included our top 4 sources for free!\",\n \"LISTING_SYNC.ACCEPTANCE_SUMMARY_CARD.LSP_NOT_ACTIVE_TOP_PARAGRAPH\": \"Your business information appears to be inaccurate or missing on several listing sources. This impacts your SEO negatively.\",\n \"LISTING_SYNC.ACCEPTANCE_SUMMARY_CARD.MORE_INFO_VIDEO_BUTTON\": \"See How It Works\",\n \"LISTING_SYNC.ACCEPTANCE_SUMMARY_CARD.TITLE\": \"Listing Acceptance\",\n \"LISTING_SYNC.ADDITIONAL_SOURCES.SUBTITLE\": \"If a listing for your business already exists it will be found, updated and checked regularly. Sources with no listing will have a new listing automatically created.\",\n \"LISTING_SYNC.ADDITIONAL_SOURCES.TITLE\": \"Additional Sources\",\n \"LISTING_SYNC.COLUMN_HEADERS.CONNECTED_ACCOUNT\": \"Connected Account\",\n \"LISTING_SYNC.COLUMN_HEADERS.LAST_UPDATED\": \"Last Update\",\n \"LISTING_SYNC.COLUMN_HEADERS.LISTING_ACCURACY\": \"Accuracy Report\",\n \"LISTING_SYNC.COLUMN_HEADERS.MAX_SCORE\": \"Listing Score (max)\",\n \"LISTING_SYNC.COLUMN_HEADERS.SCORE\": \"Listing Score\",\n \"LISTING_SYNC.COLUMN_HEADERS.SITE_NAME\": \"Source\",\n \"LISTING_SYNC.COLUMN_HEADERS.SITE_TYPE\": \"Category\",\n \"LISTING_SYNC.COLUMN_HEADERS.STATUS\": \"Status\",\n \"LISTING_SYNC.LISTING_SCORE_SUMMARY_CARD.INDUSTRY_AVERAGE\": \"Industry Avg.\",\n \"LISTING_SYNC.LISTING_SCORE_SUMMARY_CARD.LISTING_SCORE_TOOL_TIP\": \"Your listing score represents the quality of your online presence across all listing sources. The score is calculated according to your listing’s presence and accuracy on a listing source, as well as any citations of your business across the internet. Certain sources like Google Business Profile, are weighted higher than others based on their reputability.\",\n \"LISTING_SYNC.LISTING_SCORE_SUMMARY_CARD.PERCENTILE\": \"95th percentile.\",\n \"LISTING_SYNC.LISTING_SCORE_SUMMARY_CARD.STARTED_AT\": \"Started at\",\n \"LISTING_SYNC.LISTING_SCORE_SUMMARY_CARD.SUBTITLE\": \"The overall status of your online presence\",\n \"LISTING_SYNC.LISTING_SCORE_SUMMARY_CARD.TITLE\": \"Listing Score\",\n \"LISTING_SYNC.LSP_ADDON.COLUMNS.ACCURACY.ACCURATE\": \"Accurate\",\n \"LISTING_SYNC.LSP_ADDON.COLUMNS.ACCURACY.ACCURATE_LISTING\": \"Accurate Listing\",\n \"LISTING_SYNC.LSP_ADDON.COLUMNS.ACCURACY.ERRORS.ADDRESS\": \"Address\",\n \"LISTING_SYNC.LSP_ADDON.COLUMNS.ACCURACY.ERRORS.CITY\": \"City\",\n \"LISTING_SYNC.LSP_ADDON.COLUMNS.ACCURACY.ERRORS.COUNTRY\": \"Country\",\n \"LISTING_SYNC.LSP_ADDON.COLUMNS.ACCURACY.ERRORS.NAME\": \"Name\",\n \"LISTING_SYNC.LSP_ADDON.COLUMNS.ACCURACY.ERRORS.PHONE\": \"Phone\",\n \"LISTING_SYNC.LSP_ADDON.COLUMNS.ACCURACY.ERRORS.STATE\": \"State\",\n \"LISTING_SYNC.LSP_ADDON.COLUMNS.ACCURACY.ERRORS.WEBSITE\": \"Website\",\n \"LISTING_SYNC.LSP_ADDON.COLUMNS.ACCURACY.ERRORS.ZIP\": \"Zip Code\",\n \"LISTING_SYNC.LSP_ADDON.COLUMNS.ACCURACY.FOUND_WITH_ERRORS\": \"Found with possible errors\",\n \"LISTING_SYNC.LSP_ADDON.COLUMNS.ACCURACY.IN_PROGRESS\": \"In Progress\",\n \"LISTING_SYNC.LSP_ADDON.COLUMNS.ACCURACY.LISTING_NOT_FOUND\": \"Listing Not found\",\n \"LISTING_SYNC.LSP_ADDON.COLUMNS.ACCURACY.NOT_AVAILABLE\": \"Accuracy reporting isn't available for this source.\",\n \"LISTING_SYNC.LSP_ADDON.COLUMNS.ACCURACY.NOT_FOUND\": \"Not found\",\n \"LISTING_SYNC.LSP_ADDON.COLUMNS.ACCURACY.NO_REPORTING\": \"Source does not have reporting\",\n \"LISTING_SYNC.LSP_ADDON.COLUMNS.ACCURACY.POSSIBLE_ERRORS\": \"Possible errors\",\n \"LISTING_SYNC.LSP_ADDON.COLUMNS.ACCURACY.REFRESH\": \"Refresh accuracy data\",\n \"LISTING_SYNC.LSP_ADDON.COLUMNS.ACCURACY.SEARCHING\": \"We're still searching for accuracy data for this source. Check back soon.\",\n \"LISTING_SYNC.LSP_ADDON.COLUMNS.ACCURACY.TITLE\": \"Accuracy\",\n \"LISTING_SYNC.LSP_ADDON.COLUMNS.ACCURACY.WARNING\": \"Some fields don't match your\",\n \"LISTING_SYNC.LSP_ADDON.COLUMNS.SITE_TYPE.TYPES.AGGREGATOR\": \"Aggregator\",\n \"LISTING_SYNC.LSP_ADDON.COLUMNS.SITE_TYPE.TYPES.APP\": \"App\",\n \"LISTING_SYNC.LSP_ADDON.COLUMNS.SITE_TYPE.TYPES.DIRECTORY\": \"Directory\",\n \"LISTING_SYNC.LSP_ADDON.COLUMNS.SITE_TYPE.TYPES.GPS\": \"GPS\",\n \"LISTING_SYNC.LSP_ADDON.COLUMNS.SITE_TYPE.TYPES.HISPANIC_SITE\": \"Hispanic Site\",\n \"LISTING_SYNC.LSP_ADDON.COLUMNS.SITE_TYPE.TYPES.MAP\": \"Map\",\n \"LISTING_SYNC.LSP_ADDON.COLUMNS.SITE_TYPE.TYPES.SOCIAL\": \"Social\",\n \"LISTING_SYNC.LSP_ADDON.COLUMNS.SYNC_STATUS.CLAIMED_BY_OTHERS.DETAILS\": \"Listing is already Claimed\",\n \"LISTING_SYNC.LSP_ADDON.COLUMNS.SYNC_STATUS.CLAIMED_BY_OTHERS.SHORT\": \"Claimed\",\n \"LISTING_SYNC.LSP_ADDON.COLUMNS.SYNC_STATUS.DOES_NOT_SUPPORT_SERVICE_AREA_BUSINESS.DETAILS\": \"Source unable to hide physical location address.\",\n \"LISTING_SYNC.LSP_ADDON.COLUMNS.SYNC_STATUS.DOES_NOT_SUPPORT_SERVICE_AREA_BUSINESS.SHORT\": \"Not Applicable\",\n \"LISTING_SYNC.LSP_ADDON.COLUMNS.SYNC_STATUS.HAS_ERRORS.DETAILS\": \"Listing sync inaccurate - Unable to correct\",\n \"LISTING_SYNC.LSP_ADDON.COLUMNS.SYNC_STATUS.HAS_ERRORS.SHORT\": \"Not Syncing\",\n \"LISTING_SYNC.LSP_ADDON.COLUMNS.SYNC_STATUS.IN_PROGRESS.DETAILS\": \"In Progress\",\n \"LISTING_SYNC.LSP_ADDON.COLUMNS.SYNC_STATUS.IN_PROGRESS.SHORT\": \"Syncing\",\n \"LISTING_SYNC.LSP_ADDON.COLUMNS.SYNC_STATUS.IN_SYNC.DETAILS\": \"Listing is Accurate\",\n \"LISTING_SYNC.LSP_ADDON.COLUMNS.SYNC_STATUS.IN_SYNC.SHORT\": \"Synced\",\n \"LISTING_SYNC.LSP_ADDON.COLUMNS.SYNC_STATUS.MANUAL_UPDATE_ONLY.DETAILS\": \"Manual update only\",\n \"LISTING_SYNC.LSP_ADDON.COLUMNS.SYNC_STATUS.MANUAL_UPDATE_ONLY.SHORT\": \"Manual update only\",\n \"LISTING_SYNC.LSP_ADDON.COLUMNS.SYNC_STATUS.NOT_ACTIVATED.DETAILS\": \"Not Activated\",\n \"LISTING_SYNC.LSP_ADDON.COLUMNS.SYNC_STATUS.NOT_ACTIVATED.SHORT\": \"Not Activated\",\n \"LISTING_SYNC.LSP_ADDON.COLUMNS.SYNC_STATUS.NOT_CLAIMABLE.TOOLTIP.DESCRIPTION\": \"The data cannot be updated on the source as there is an existing online listing that is already claimed by the business owner or a third party.\",\n \"LISTING_SYNC.LSP_ADDON.COLUMNS.SYNC_STATUS.NOT_CLAIMABLE.TOOLTIP.TITLE\": \"Listing claimed\",\n \"LISTING_SYNC.LSP_ADDON.COLUMNS.SYNC_STATUS.STATUS_CODE_NOT_FOUND.SHORT\": \"Not syncing\",\n \"LISTING_SYNC.LSP_ADDON.COLUMNS.SYNC_STATUS.SUBMITTED.DETAILS\": \"Submitted to source\",\n \"LISTING_SYNC.LSP_ADDON.COLUMNS.SYNC_STATUS.SUBMITTED.SHORT\": \"Submitted to source\",\n \"LISTING_SYNC.LSP_ADDON.COLUMNS.SYNC_STATUS.SYNCING_WITH_WARNINGS.DETAILS\": \"Listing Accepted - Partial Syncing\",\n \"LISTING_SYNC.LSP_ADDON.COLUMNS.SYNC_STATUS.SYNCING_WITH_WARNINGS.SHORT\": \"Syncing\",\n \"LISTING_SYNC.LSP_ADDON.COLUMNS.SYNC_STATUS.TURN_OFF_SYNCING\": \"Turn off syncing\",\n \"LISTING_SYNC.LSP_ADDON.ERRORS_MESSAGE\": \"Not syncing due to the following errors:\",\n \"LISTING_SYNC.LSP_ADDON.ERROR_CODE.CATEGORIES\": \"One or more of your Business Categories are invalid.\",\n \"LISTING_SYNC.LSP_ADDON.ERROR_CODE.CHAIN_LOCATION\": \"According to Yelp, we're unable to update this listing, as it's associated with a larger chain and is not eligible for all updates.\",\n \"LISTING_SYNC.LSP_ADDON.ERROR_CODE.CITY\": \"There was an error found in your address's City field\",\n \"LISTING_SYNC.LSP_ADDON.ERROR_CODE.CONTACT_SOURCE\": \"Yelp has indicated to us that they are unable to update certain fields as they have been locked due to previous abuse or the business requesting to have it locked.\",\n \"LISTING_SYNC.LSP_ADDON.ERROR_CODE.DESCRIPTION_LONG\": \"There was an error found in your Business Long Description.\",\n \"LISTING_SYNC.LSP_ADDON.ERROR_CODE.DESCRIPTION_SHORT\": \"There was an error found in your Business Short Description.\",\n \"LISTING_SYNC.LSP_ADDON.ERROR_CODE.EMAIL\": \"There was an error found in your Business Email.\",\n \"LISTING_SYNC.LSP_ADDON.ERROR_CODE.EXISTING_RELATIONSHIP\": \"Listing Sync is not available because this business has a paid advertising relationship with a particular source.\",\n \"LISTING_SYNC.LSP_ADDON.ERROR_CODE.HOURS_OF_OPERATION\": \"Hours of operation are invalid.\",\n \"LISTING_SYNC.LSP_ADDON.ERROR_CODE.NAME\": \"There was an error found in your Business name.\",\n \"LISTING_SYNC.LSP_ADDON.ERROR_CODE.PAYMENT_OPTIONS\": \"There was an error found in your Payment Methods.\",\n \"LISTING_SYNC.LSP_ADDON.ERROR_CODE.PHONE_NUMBER\": \"There was an error found in your Phone number.\",\n \"LISTING_SYNC.LSP_ADDON.ERROR_CODE.PHOTOS\": \"There was an error found in your Photos.\",\n \"LISTING_SYNC.LSP_ADDON.ERROR_CODE.SERVICES\": \"There was an error found in services\",\n \"LISTING_SYNC.LSP_ADDON.ERROR_CODE.SOCIAL_PROFILES\": \"There was an error found in your Social Business Pages URL.\",\n \"LISTING_SYNC.LSP_ADDON.ERROR_CODE.STREET_ADDRESS\": \"There was an error found in your Street address.\",\n \"LISTING_SYNC.LSP_ADDON.ERROR_CODE.UNHANDLED_ERROR\": \"There was an error syncing this listing. Please contact support.\",\n \"LISTING_SYNC.LSP_ADDON.ERROR_CODE.WEBSITE\": \"There was an error found in your Website URL.\",\n \"LISTING_SYNC.LSP_ADDON.ERROR_CODE.WHOLE_ADDRESS\": \"There was an error found in your Business Address.\",\n \"LISTING_SYNC.LSP_ADDON.ERROR_CODE.ZIP_CODE\": \"There was an error found in your Zip code.\",\n \"LISTING_SYNC.LSP_ADDON.FIELDS_TO_BE_SYNCED\": \"Fields still to be synced\",\n \"LISTING_SYNC.LSP_ADDON.IN_PROGRESS_CHECK_BACK_SOON_MESSAGE\": \"Data syncing is in progress. Check back soon for more information.\",\n \"LISTING_SYNC.LSP_ADDON.NAME\": \"Listing Sync Pro\",\n \"LISTING_SYNC.LSP_ADDON.SYNCING_WITH_WARNINGS_MESSAGE\": \"Partial syncing in progress. Check listing for errors in these fields:\",\n \"LISTING_SYNC.LSP_ADDON.UPGRADE_MODAL.ACTIVE_ORDER_PRIMARY\": \"Hold tight!\",\n \"LISTING_SYNC.LSP_ADDON.UPGRADE_MODAL.ACTIVE_ORDER_SECONDARY\": \"Your upgrade is on its way.\",\n \"LISTING_SYNC.LSP_ADDON.UPGRADE_MODAL.BUTTON_TEXT\": \"Upgrade now\",\n \"LISTING_SYNC.LSP_ADDON.UPGRADE_MODAL.IMAGE_TEXT\": \"Help customers find your business faster.\",\n \"LISTING_SYNC.LSP_ADDON.WARNING_CODE.CATEGORIES\": \"Categories\",\n \"LISTING_SYNC.LSP_ADDON.WARNING_CODE.CHAIN_LOCATION\": \"Chain Location\",\n \"LISTING_SYNC.LSP_ADDON.WARNING_CODE.CITY\": \"City\",\n \"LISTING_SYNC.LSP_ADDON.WARNING_CODE.CONTACT_SOURCE\": \"Contact Source\",\n \"LISTING_SYNC.LSP_ADDON.WARNING_CODE.DESCRIPTION_LONG\": \"Long description\",\n \"LISTING_SYNC.LSP_ADDON.WARNING_CODE.DESCRIPTION_SHORT\": \"Short description\",\n \"LISTING_SYNC.LSP_ADDON.WARNING_CODE.EMAIL\": \"Email\",\n \"LISTING_SYNC.LSP_ADDON.WARNING_CODE.EXISTING_RELATIONSHIP\": \"Paid Advertiser\",\n \"LISTING_SYNC.LSP_ADDON.WARNING_CODE.HOURS_OF_OPERATION\": \"Hours of operation\",\n \"LISTING_SYNC.LSP_ADDON.WARNING_CODE.NAME\": \"Name\",\n \"LISTING_SYNC.LSP_ADDON.WARNING_CODE.PAYMENT_OPTIONS\": \"Payment options\",\n \"LISTING_SYNC.LSP_ADDON.WARNING_CODE.PHONE_NUMBER\": \"Phone number\",\n \"LISTING_SYNC.LSP_ADDON.WARNING_CODE.PHOTOS\": \"Photos\",\n \"LISTING_SYNC.LSP_ADDON.WARNING_CODE.SERVICES\": \"Services\",\n \"LISTING_SYNC.LSP_ADDON.WARNING_CODE.SOCIAL_PROFILES\": \"Social profiles\",\n \"LISTING_SYNC.LSP_ADDON.WARNING_CODE.STREET_ADDRESS\": \"Street Address\",\n \"LISTING_SYNC.LSP_ADDON.WARNING_CODE.WEBSITE\": \"Website\",\n \"LISTING_SYNC.LSP_ADDON.WARNING_CODE.WHOLE_ADDRESS\": \"Whole Address\",\n \"LISTING_SYNC.LSP_ADDON.WARNING_CODE.ZIP_CODE\": \"Zip code\",\n \"LISTING_SYNC.LS_FREE_ADDON.COMMON_TOOLTIP.ADDRESS\": \"Street Address, Zip/Postal Code, City, State (street address and zip/postal code are hidden for service area businesses)\",\n \"LISTING_SYNC.LS_FREE_ADDON.COMMON_TOOLTIP.BUSINESS_NAME\": \"Business Name\",\n \"LISTING_SYNC.LS_FREE_ADDON.COMMON_TOOLTIP.GOOGLE_ATTRIBUTES\": \"Google Attributes (see Business Profile's More tab)\",\n \"LISTING_SYNC.LS_FREE_ADDON.COMMON_TOOLTIP.HOURS\": \"Hours of operation\",\n \"LISTING_SYNC.LS_FREE_ADDON.COMMON_TOOLTIP.HOURS_AND_SPECIAL_HOURS\": \"Hours of operation and Special Hours\",\n \"LISTING_SYNC.LS_FREE_ADDON.COMMON_TOOLTIP.IMAGE_TIP_FORMAT\": \"Format: JPG, PNG\",\n \"LISTING_SYNC.LS_FREE_ADDON.COMMON_TOOLTIP.IMAGE_TIP_QUALITY\": \"Ensure that your Primary Photo is in focus, well lit, and does not feature excessive filters or alterations\",\n \"LISTING_SYNC.LS_FREE_ADDON.COMMON_TOOLTIP.IMAGE_TIP_RECOMMENDED_ASPECT_RATIO_PRIMARY_PHOTO\": \"Must have an aspect ratio of 16:9\",\n \"LISTING_SYNC.LS_FREE_ADDON.COMMON_TOOLTIP.IMAGE_TIP_RECOMMENDED_RESOLUTION_LOGO\": \"Recommended resolution of 250:250px (min 120:120px; max 5200:5300px)\",\n \"LISTING_SYNC.LS_FREE_ADDON.COMMON_TOOLTIP.IMAGE_TIP_RECOMMENDED_RESOLUTION_PRIMARY_PHOTO\": \"Recommended resolution of 1080:608px (min 480:270px; max 2120:1192px)\",\n \"LISTING_SYNC.LS_FREE_ADDON.COMMON_TOOLTIP.IMAGE_TIP_SIZE\": \"File size: 10KB-5MB\",\n \"LISTING_SYNC.LS_FREE_ADDON.COMMON_TOOLTIP.LOCATION_HEADER\": \"Location Requirements\",\n \"LISTING_SYNC.LS_FREE_ADDON.COMMON_TOOLTIP.LOGO\": \"Logo\",\n \"LISTING_SYNC.LS_FREE_ADDON.COMMON_TOOLTIP.LONG_DESCRIPTION\": \"Long description\",\n \"LISTING_SYNC.LS_FREE_ADDON.COMMON_TOOLTIP.MEDIA_HEADER\": \"Image Requirements\",\n \"LISTING_SYNC.LS_FREE_ADDON.COMMON_TOOLTIP.PAYMENT\": \"Payment methods\",\n \"LISTING_SYNC.LS_FREE_ADDON.COMMON_TOOLTIP.PHONE\": \"Phone number\",\n \"LISTING_SYNC.LS_FREE_ADDON.COMMON_TOOLTIP.PRIMARY_PHONE\": \"Primary phone number\",\n \"LISTING_SYNC.LS_FREE_ADDON.COMMON_TOOLTIP.PRIMARY_PHOTO\": \"Primary Photo\",\n \"LISTING_SYNC.LS_FREE_ADDON.COMMON_TOOLTIP.WEBSITE\": \"Website URL\",\n \"LISTING_SYNC.LS_FREE_ADDON.FACEBOOK.ACTIVATE_DIALOG.TEXT\": \"Your Facebook account has been successfully connected. Sync your business profile data (address, phone number, website url, etc.) now to ensure accurate and consistent information appears on your public profile.\",\n \"LISTING_SYNC.LS_FREE_ADDON.FACEBOOK.ACTIVATE_DIALOG.TITLE\": \"Would you like to activate sync now?\",\n \"LISTING_SYNC.LS_FREE_ADDON.FACEBOOK.TOOLTIP.TEXT\": \"The following information will be synced to Facebook if an account is connected and sync is turned on:\",\n \"LISTING_SYNC.LS_FREE_ADDON.FACEBOOK.TOOLTIP.TITLE\": \"Info Synced to Facebook\",\n \"LISTING_SYNC.LS_FREE_ADDON.GOOGLE_MY_BUSINESS.ACTIVATE_DIALOG.TEXT\": \"Your {{ name }} account, {{ accountName }} has been successfully connected\",\n \"LISTING_SYNC.LS_FREE_ADDON.GOOGLE_MY_BUSINESS.ACTIVATE_DIALOG.TITLE\": \"Activate {{ name }} syncing\",\n \"LISTING_SYNC.LS_FREE_ADDON.GOOGLE_MY_BUSINESS.TOOLTIP.TEXT\": \"The following information from your Business Profile is synced to Google Business Profile when your location is connected and syncing is active.\",\n \"LISTING_SYNC.LS_FREE_ADDON.GOOGLE_MY_BUSINESS.TOOLTIP.TITLE\": \"Info synced to Google Business Profile\",\n \"LISTING_SYNC.LS_FREE_ADDON.INSTAGRAM.TOOLTIP.TEXT\": \"Your Facebook account must be connected with sync turned on, in order to connect Instagram. The following information will be synced to Instagram if an account is connected and sync is turned on:\",\n \"LISTING_SYNC.LS_FREE_ADDON.INSTAGRAM.TOOLTIP.TITLE\": \"Info Synced to Instagram\",\n \"LISTING_SYNC.LS_FREE_ADDON.TWITTER.ACTIVATE_DIALOG.TEXT\": \"Your X account has been successfully connected. Sync your business profile data (city, website url, etc.) now to ensure accurate and consistent information appears on your public profile.\",\n \"LISTING_SYNC.LS_FREE_ADDON.TWITTER.ACTIVATE_DIALOG.TITLE\": \"Would you like to activate sync now?\",\n \"LISTING_SYNC.LS_FREE_ADDON.TWITTER.TOOLTIP.SHORT_DESC\": \"Short Description, if less than 160 characters\",\n \"LISTING_SYNC.LS_FREE_ADDON.TWITTER.TOOLTIP.TEXT\": \"The following information will be synced to X if an account is connected and sync is turned on:\",\n \"LISTING_SYNC.LS_FREE_ADDON.TWITTER.TOOLTIP.TITLE\": \"Info Synced to X\",\n \"LISTING_SYNC.LS_FREE_ADDON.TWITTER.TOOLTIP.ADDRESS\": \"City, State, and Country\",\n \"LISTING_SYNC.PRIMARY_SOURCES.APPLE.COMING_SOON\": \"Apple (Coming soon)\",\n \"LISTING_SYNC.PRIMARY_SOURCES.APPLE.COMING_SOON_SIGNED_UP\": \"Signed up\",\n \"LISTING_SYNC.PRIMARY_SOURCES.APPLE.COMING_SOON_SIGN_UP\": \"Sign up\",\n \"LISTING_SYNC.PRIMARY_SOURCES.APPLE.TURN_ON_MODAL.CANCEL\": \"Cancel\",\n \"LISTING_SYNC.PRIMARY_SOURCES.APPLE.TURN_ON_MODAL.P1\": \"Apple Business Connect is coming soon. By opting-in, a listing will automatically be created for you once this source becomes available.\",\n \"LISTING_SYNC.PRIMARY_SOURCES.APPLE.TURN_ON_MODAL.P2\": \"Service area businesses will only be accepted by Apple if they serve customers at their business location.\",\n \"LISTING_SYNC.PRIMARY_SOURCES.APPLE.TURN_ON_MODAL.SERVES_CUSTOMERS_AT_LOCATION_CHECKBOX\": \"My business serves customers at the business location\",\n \"LISTING_SYNC.PRIMARY_SOURCES.APPLE.TURN_ON_MODAL.TITLE\": \"Sign up for syncing\",\n \"LISTING_SYNC.PRIMARY_SOURCES.BING.ATTRIBUTES\": \"Bing Attributes (see Business Profile's More tab)\",\n \"LISTING_SYNC.PRIMARY_SOURCES.BING.HOURS\": \"Regular hours of operation\",\n \"LISTING_SYNC.PRIMARY_SOURCES.BING.TOOLTIP.TEXT\": \"Info Synced to Bing\",\n \"LISTING_SYNC.PRIMARY_SOURCES.BING.TOOLTIP.TITLE\": \"The following information will be synced to Bing if sync is turned on\",\n \"LISTING_SYNC.PRIMARY_SOURCES.LISTING_SCORE\": \"Listing Score\",\n \"LISTING_SYNC.PRIMARY_SOURCES.SUBTITLE\": \"Connect directly to your existing listings to begin updating them with the data on your business profile.\",\n \"LISTING_SYNC.PRIMARY_SOURCES.TITLE\": \"Primary Sources\",\n \"LISTING_SYNC.PRIMARY_SOURCES.UPGRADE_TO_PRO\": \"Upgrade to Pro\",\n \"LISTING_SYNC.PRODUCT.MORE_INFO_VIDEO_BUTTON\": \"Learn about Listing Syncing\",\n \"LISTING_SYNC.PRODUCT.NAME\": \"Listing Sync\",\n \"LISTING_SYNC.PRODUCT.TITLE\": \"Listing Sync\",\n \"LISTING_SYNC.SOURCE_MENU.DETAILS\": \"Details\",\n \"LISTING_SYNC.SOURCE_MENU.REFRESH_LISTING_FAILURE\": \"Error when attempting to refresh\",\n \"LISTING_SYNC.SOURCE_MENU.REFRESH_LISTING_SUCCESS\": \"Refresh Listing in Process\",\n \"LISTING_SYNC.SOURCE_MENU.REFRESH_SYNCING_SUCCESS\": \"Updated syncing\",\n \"LISTING_SYNC.SOURCE_MENU.SYNCING_INFO_LINK\": \"What data is synced to {{ source }}?\",\n \"LISTING_SYNC.SOURCE_MENU.SYNCING_INFO_LINK_X\": \"What data is synced to X?\",\n \"LISTING_SYNC.SOURCE_MENU.UPDATE_SERVICE_FAILURE\": \"Error updating selected account\",\n \"LISTING_SYNC.SOURCE_MENU.UPDATE_SERVICE_SUCCESS\": \"Updated selected account\",\n \"LISTING_SYNC.SYNCING_PROGRESS_SUMMARY_CARD.SYNC_IN_PROGRESS_DETAILS.NOT_SYNCING\": \"Not syncing\",\n \"LISTING_SYNC.SYNCING_PROGRESS_SUMMARY_CARD.SYNC_IN_PROGRESS_DETAILS.SYNCED_OR_SUBMITTED\": \"Synced or submitted\",\n \"LISTING_SYNC.SYNCING_PROGRESS_SUMMARY_CARD.SYNC_IN_PROGRESS_DETAILS.SYNC_IN_PROGRESS\": \"Sync in progress\",\n \"LISTING_SYNC.SYNCING_PROGRESS_SUMMARY_CARD.SYNC_LEGENDS.CLAIMED.DESCRIPTION\": \"The listing cannot be updated because the business owner or a third party already owns it.\",\n \"LISTING_SYNC.SYNCING_PROGRESS_SUMMARY_CARD.SYNC_LEGENDS.CLAIMED.NAME\": \"Claimed\",\n \"LISTING_SYNC.SYNCING_PROGRESS_SUMMARY_CARD.SYNC_LEGENDS.PARTIAL_SYNC.DESCRIPTION\": \"Some data was rejected by the recipient.\",\n \"LISTING_SYNC.SYNCING_PROGRESS_SUMMARY_CARD.SYNC_LEGENDS.PARTIAL_SYNC.NAME\": \"Partial Sync\",\n \"LISTING_SYNC.SYNCING_PROGRESS_SUMMARY_CARD.SYNC_LEGENDS.SUBMITTED.DESCRIPTION\": \"Data has been sent to a provider that does not provide publishing feedback. Updates complete.\",\n \"LISTING_SYNC.SYNCING_PROGRESS_SUMMARY_CARD.SYNC_LEGENDS.SUBMITTED.NAME\": \"Submitted\",\n \"LISTING_SYNC.SYNCING_PROGRESS_SUMMARY_CARD.SYNC_LEGENDS.SYNCED.DESCRIPTION\": \"Data is correct, checked regularly, and updated if needed.\",\n \"LISTING_SYNC.SYNCING_PROGRESS_SUMMARY_CARD.SYNC_LEGENDS.SYNCED.NAME\": \"Synced\",\n \"LISTING_SYNC.SYNCING_PROGRESS_SUMMARY_CARD.SYNC_LEGENDS.SYNCING.DESCRIPTION\": \"Some data was rejected by the recipient. Data is in the process of being submitted and accepted.\",\n \"LISTING_SYNC.SYNCING_PROGRESS_SUMMARY_CARD.SYNC_LEGENDS.SYNCING.NAME\": \"Syncing\",\n \"LISTING_SYNC.SYNCING_PROGRESS_SUMMARY_CARD.TITLE\": \"Syncing progress\",\n \"LISTING_SYNC.SYNCING_STATUS.CONNECT_FACEBOOK_TO_SYNC\": \"Connect Facebook to Sync\",\n \"LISTING_SYNC.SYNCING_STATUS.CONNECT_OR_CREATE\": \"Connect or create listing\",\n \"LISTING_SYNC.SYNCING_STATUS.LOCKED_UPGRADE_TO_CREATE\": \"Upgrade to create listing\",\n \"LISTING_SYNC.SYNCING_STATUS.LOCKED_UPGRADE_TO_SYNC\": \"Upgrade to sync\",\n \"LISTING_SYNC.SYNCING_STATUS.SYNCED\": \"Synced\",\n \"LISTING_SYNC.SYNCING_STATUS.SYNC_TO\": \"Sync to\",\n \"LISTING_SYNC.SYNCING_STATUS.SYNC_TO_FIX\": \"Sync to fix\",\n \"LISTING_SYNC.SYNCING_STATUS.SYNC_TO_KEEP_ACCURATE\": \"Sync to keep accurate\",\n \"LISTING_SYNC.TABLE_FILTERS.SYNC_STATUS_FILTER.GROUP_LABEL\": \"Syncing Status Filters\",\n \"LISTING_SYNC.TABLE_FILTERS.SYNC_STATUS_FILTER.MANUAL_UPDATE_ONLY\": \"Manual Update Only\",\n \"LISTING_SYNC.TABLE_FILTERS.SYNC_STATUS_FILTER.SYNCING_AVAILABLE\": \"Syncing Available\",\n \"LISTING_SYNC.TABLE_LABEL.ADD_SORT_COLUMN\": \"Add another column to sort on\",\n \"LISTING_SYNC.TABLE_LABEL.CANCEL\": \"Cancel\",\n \"LISTING_SYNC.TABLE_LABEL.CHOOSE_SORT_COLUMN\": \"Choose a column to sort on\",\n \"LISTING_SYNC.TABLE_LABEL.COLUMN_SELECTOR\": \"Columns\",\n \"LISTING_SYNC.TABLE_LABEL.EXPORT\": \"Export\",\n \"LISTING_SYNC.TABLE_LABEL.NONE\": \"None\",\n \"LISTING_SYNC.TABLE_LABEL.NO_RESULTS\": \"No Results\",\n \"LISTING_SYNC.TABLE_LABEL.SORT_BY\": \"Sort By\",\n \"LISTING_SYNC.TABLE_LABEL.SORT_DATE_ASC\": \"Earliest to Latest\",\n \"LISTING_SYNC.TABLE_LABEL.SORT_DATE_DSC\": \"Latest to Earliest\",\n \"LISTING_SYNC.TABLE_LABEL.SORT_DEFAULT_ASC\": \"ascending\",\n \"LISTING_SYNC.TABLE_LABEL.SORT_DEFAULT_DSC\": \"descending\",\n \"LISTING_SYNC.TABLE_LABEL.SORT_NUMBER_ASC\": \"1 to 9\",\n \"LISTING_SYNC.TABLE_LABEL.SORT_NUMBER_DSC\": \"9 to 1\",\n \"LISTING_SYNC.TABLE_LABEL.SORT_STRING_ASC\": \"A to Z\",\n \"LISTING_SYNC.TABLE_LABEL.SORT_STRING_DSC\": \"Z to A\",\n \"LISTING_SYNC.TABLE_LABEL.THEN_SORT_BY\": \"Then Sort By\",\n \"LISTING_SYNC.TABLE_LABEL.UPDATE\": \"Update\",\n \"LISTING_SYNC.TABLE_LABEL.VIEW_SOURCE\": \"View listing\",\n \"LISTING_SYNC.UPDATE_BUSINESS_PROFILE\": \"Update on Business Profile\",\n \"NAVBAR.LISTING_PROFILE\": \"Business Profile\",\n \"NAVBAR.SEO\": \"Keyword Tracking\",\n \"LOCAL_SEO.ADD_A_KEYWORD\": \"Add a keyword...\",\n \"LOCAL_SEO.ADD_INITIAL_KEYWORD\": \"Add your first keyword\",\n \"LOCAL_SEO.ADD_KEYWORDS\": \"Add Keywords\",\n \"LOCAL_SEO.USED\": \"used\",\n \"LOCAL_SEO.BANNER.DESCRIPTION\": \"Track your business's keyword positions on Google, equipping you to stay ahead of the competition and improve your online visibility\",\n \"LOCAL_SEO.BANNER.TITLE\": \"Google keyword tracking to empower your marketing efforts\",\n \"LOCAL_SEO.FAVORITES_UPDATED\": \"Favorites updated\",\n \"LOCAL_SEO.KEYWORD\": \"Keyword\",\n \"LOCAL_SEO.KEYWORDS_UPDATED\": \"Keywords updated\",\n \"LOCAL_SEO.KEYWORD_DELETED\": \"Keyword deleted\",\n \"LOCAL_SEO.SYNCING_KEYWORDS_UPDATED\": \"Syncing keywords updated\",\n \"LOCAL_SEO.LOCAL_SEO.AVERAGE_POSITION\": \"Average Position\",\n \"LOCAL_SEO.LOCAL_SEO.AVERAGE_POSITION_TOOLTIP\": \"Positions from both maps and keywords are averaged together.\",\n \"LOCAL_SEO.LOCAL_SEO.AVERAGE_POSITION_TOOLTIP_TITLE\": \"How is this calculated?\",\n \"LOCAL_SEO.LOCAL_SEO.BUSINESS_NOT_FOUND\": \"Your business {{businessName}} wasn't found in the top 100 search results\",\n \"LOCAL_SEO.LOCAL_SEO.BY_RANKS\": \"by {{value}} ranks\",\n \"LOCAL_SEO.LOCAL_SEO.CLAIMED\": \"Claimed\",\n \"LOCAL_SEO.LOCAL_SEO.DESCRIPTION\": \"This is your average ranking on Google Maps when someone searches for '{{searchTerm}}', within a {{radius}} mile radius of your business.\",\n \"LOCAL_SEO.LOCAL_SEO.EXAMPLE_KEYWORD\": \"Example Keyword\",\n \"LOCAL_SEO.LOCAL_SEO.PROFILE_GEO_NOT_SET\": \"Geo-location not set: Please set your pin to enable citation searching and local search results\",\n \"LOCAL_SEO.LOCAL_SEO.GEO_NOT_SET\": \"Geo-location not set: Please set your pin to enable citation searching and local search results. Set pin\",\n \"LOCAL_SEO.LOCAL_SEO.GRAPH.LABEL.YAXIS\": \"Keyword Position\",\n \"LOCAL_SEO.LOCAL_SEO.GRAPH.LEGEND.LOCAL_RANK\": \"Google Maps (Local)\",\n \"LOCAL_SEO.LOCAL_SEO.GRAPH.LEGEND.ORGANIC_RANK\": \"Google Search (Organic)\",\n \"LOCAL_SEO.LOCAL_SEO.GRAPHS.AVERAGE\": \"Average\",\n \"LOCAL_SEO.LOCAL_SEO.GRAPHS.LOCAL\": \"Google Maps (Local)\",\n \"LOCAL_SEO.LOCAL_SEO.GRAPHS.ORGANIC\": \"Google Search (Organic)\",\n \"LOCAL_SEO.LOCAL_SEO.GRAPHS.OVER_50\": \"Position 50+\",\n \"LOCAL_SEO.LOCAL_SEO.GRAPHS.TOP10\": \"Position 1-10\",\n \"LOCAL_SEO.LOCAL_SEO.GRAPHS.TOP50\": \"Position 10-50\",\n \"LOCAL_SEO.LOCAL_SEO.HEADING\": \"Local Search Results\",\n \"LOCAL_SEO.LOCAL_SEO.IN_PROGRESS_DESCRIPTION\": \"We are currently searching your keywords. Searching can take up to 15 minutes.\",\n \"LOCAL_SEO.LOCAL_SEO.IN_PROGRESS_TITLE\": \"Searching in progress\",\n \"LOCAL_SEO.LOCAL_SEO.KEYWORD.EXPANDED_DROPDOWN.SETTINGS.DELETE_KEYWORD\": \"Delete Keyword\",\n \"LOCAL_SEO.LOCAL_SEO.KEYWORD.EXPANDED_DROPDOWN.SETTINGS.FAVORITE_KEYWORD\": \"Favorite Keyword\",\n \"LOCAL_SEO.LOCAL_SEO.KEYWORD.EXPANDED_DROPDOWN.SETTINGS.FAVORITE_KEYWORD_SUBTITLE\": \"Enable this setting to surface this keyword at the top of this list.\",\n \"LOCAL_SEO.LOCAL_SEO.KEYWORD.EXPANDED_DROPDOWN.SETTINGS.SYNC_KEYWORD\": \"Sync Keyword\",\n \"LOCAL_SEO.LOCAL_SEO.KEYWORD.EXPANDED_DROPDOWN.SETTINGS.SYNC_KEYWORD_SUBTITLE\": \"Enable this setting to send this keyword to listings that accept this data\",\n \"LOCAL_SEO.LOCAL_SEO.KEYWORD.EXPANDED_DROPDOWN.TAB.LOCAL_GRID\": \"Local Grid\",\n \"LOCAL_SEO.LOCAL_SEO.KEYWORD.EXPANDED_DROPDOWN.TAB.SETTINGS\": \"Settings\",\n \"LOCAL_SEO.LOCAL_SEO.KEYWORD.EXPANDED_DROPDOWN.TAB.TREND\": \"Trend\",\n \"LOCAL_SEO.LOCAL_SEO.KEYWORDS_UP\": \"Total Keywords Up\",\n \"LOCAL_SEO.LOCAL_SEO.MAPS\": \"Maps\",\n \"LOCAL_SEO.LOCAL_SEO.MAP_INFO_TEXT\": \"Click hotspots to see results change based on location\",\n \"LOCAL_SEO.LOCAL_SEO.NO_RESULTS_DESCRIPTION\": \"We couldn’t find any search results for {{searchTerm}} + {{vicinity}}.\",\n \"LOCAL_SEO.LOCAL_SEO.NO_RESULTS_TITLE\": \"No results\",\n \"LOCAL_SEO.LOCAL_SEO.ORGANIC\": \"Organic\",\n \"LOCAL_SEO.LOCAL_SEO.PHONE_NOT_FOUND\": \"Phone not found\",\n \"LOCAL_SEO.LOCAL_SEO.RADIUS_UPDATE_IN_PROGRESS_BADGE\": \"Map radius update in progress\",\n \"LOCAL_SEO.LOCAL_SEO.RANK\": \"Rank\",\n \"LOCAL_SEO.LOCAL_SEO.RANK_DIFFICULTY\": \"Rank Difficulty\",\n \"LOCAL_SEO.LOCAL_SEO.REVIEWS_COUNT\": \"{{count}} reviews\",\n \"LOCAL_SEO.LOCAL_SEO.SEARCH_VOLUME\": \"Search Volume (last 30 days)\",\n \"LOCAL_SEO.LOCAL_SEO.STARTED_AT\": \"Started at\",\n \"LOCAL_SEO.LOCAL_SEO.SUBHEADING\": \"Who shows up when customers search for your business category?\",\n \"LOCAL_SEO.LOCAL_SEO.TABS.NEAR_ME\": \"'Near me'\",\n \"LOCAL_SEO.LOCAL_SEO.TOP_10\": \"Keywords in top 10\",\n \"LOCAL_SEO.LOCAL_SEO.UNCLAIMED\": \"Unclaimed\",\n \"LOCAL_SEO.LOCAL_SEO.UPGRADE_TO_VIEW\": \"Upgrade to view\",\n \"LOCAL_SEO.LOCAL_SEO.WEBSITE_NOT_SET\": \"Website not entered: Organic rank is based on your website, add it here to begin tracking your organic rankings.\",\n \"LOCAL_SEO.SELECT_LOCAL_SEARCH_RADIUS.BIG_CITY\": \"5 {{mapUnits}}\",\n \"LOCAL_SEO.SELECT_LOCAL_SEARCH_RADIUS.DESCRIPTION\": \"Expanding the map radius affects competitor inclusion, map ranking, and local grid results. Allow up to 15 minutes for this change to update all keywords.\",\n \"LOCAL_SEO.SELECT_LOCAL_SEARCH_RADIUS.KMS\": \"kms\",\n \"LOCAL_SEO.SELECT_LOCAL_SEARCH_RADIUS.LABEL\": \"Map Radius\",\n \"LOCAL_SEO.SELECT_LOCAL_SEARCH_RADIUS.LOCAL\": \"1.25 {{mapUnits}}\",\n \"LOCAL_SEO.SELECT_LOCAL_SEARCH_RADIUS.MAP_UNITS.KILOMETERS\": \"Kilometers\",\n \"LOCAL_SEO.SELECT_LOCAL_SEARCH_RADIUS.MAP_UNITS.LABEL\": \"Map Units\",\n \"LOCAL_SEO.SELECT_LOCAL_SEARCH_RADIUS.MAP_UNITS.MILES\": \"Miles\",\n \"LOCAL_SEO.SELECT_LOCAL_SEARCH_RADIUS.MILES\": \"miles\",\n \"LOCAL_SEO.SELECT_LOCAL_SEARCH_RADIUS.SMALL_CITY\": \"2.5 {{mapUnits}}\",\n \"LOCAL_SEO.SELECT_LOCAL_SEARCH_RADIUS.XL_CITY\": \"10 {{mapUnits}}\",\n \"LOCAL_SEO.LEGEND.LABEL\": \"Legend\",\n \"LOCAL_SEO.LEGEND.OVER_50\": \"Your rank for this keyword is above 50\",\n \"LOCAL_SEO.LEGEND.NOT_RANKED\": \"You don't rank for this keyword\",\n \"LOCAL_SEO.LEGEND.SEARCHING\": \"We're still searching for results for this keyword\",\n \"LOCAL_SEO.SMART_SUGGESTIONS\": \"Smart Suggestions\",\n \"SHARED.DISCONNECT_MODAL.TEXT\": \"Disconnecting {{ source }} will affect the performance and accuracy of products and reports associated with your business. This action cannot be undone, but you may reconnect your account at any time.\",\n \"SHARED.DISCONNECT_MODAL.TITLE\": \"Are you sure you want to disconnect {{ source }}?\",\n \"SHARED.UPGRADE_MODAL.IMPERSONATION_FORBIDDEN\": \"An impersonated user cannot upgrade.\",\n \"UPGRADE_DIALOG.FREQUENCY.DAILY\": \"/day\",\n \"UPGRADE_DIALOG.FREQUENCY.MONTHLY\": \"/month\",\n \"UPGRADE_DIALOG.FREQUENCY.ONCE\": \"One time\",\n \"UPGRADE_DIALOG.FREQUENCY.OTHER\": \"Other\",\n \"UPGRADE_DIALOG.FREQUENCY.WEEKLY\": \"/week\",\n \"UPGRADE_DIALOG.FREQUENCY.YEARLY\": \"/year\",\n \"UPGRADE_DIALOG.PRICE.CONTACT_SALES\": \"Contact sales\",\n \"UPGRADE_DIALOG.PRICE.FREE\": \"Free\",\n \"UPGRADE_DIALOG.UPGRADE_TEXT.STARTING_AT\": \"Upgrades starting at\",\n \"UPGRADE_DIALOG.UPGRADE_TEXT.UPGRADE_NOW\": \"Upgrade now for only\"\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatIconModule } from '@angular/material/icon';\nimport { UIKitModule } from '@vendasta/uikit';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { MatSortModule } from '@angular/material/sort';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { GalaxyEmptyStateModule } from '@vendasta/galaxy/empty-state';\nimport { MatListModule } from '@angular/material/list';\nimport { GalaxyLoadingSpinnerModule } from '@vendasta/galaxy/loading-spinner';\nimport { LocalSEOTableComponent } from './local-seo-table.component';\nimport { DeltaComponent } from '../delta/delta.component';\nimport { LexiconModule } from '@galaxy/lexicon';\nimport en from '../assets/i18n/en_devel.json';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatButtonModule } from '@angular/material/button';\nimport { LocalSEOGridComponent } from './local-seo-grid/local-seo-grid.component';\nimport { LocalSEOGraphComponent } from './local-seo-graph/local-seo-graph.component';\nimport { NgxChartsModule } from '@swimlane/ngx-charts';\nimport { GoogleMapsModule } from '@angular/google-maps';\nimport { GalaxyBadgeModule } from '@vendasta/galaxy/badge';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\n@NgModule({\n declarations: [LocalSEOTableComponent, LocalSEOGridComponent, LocalSEOGraphComponent],\n imports: [\n CommonModule,\n TranslateModule,\n MatCardModule,\n MatIconModule,\n UIKitModule,\n MatTableModule,\n MatPaginatorModule,\n MatSortModule,\n MatDividerModule,\n GalaxyEmptyStateModule,\n MatListModule,\n GalaxyLoadingSpinnerModule,\n DeltaComponent,\n LexiconModule.forChild({\n componentName: 'common/local-seo',\n baseTranslation: en,\n }),\n DeltaComponent,\n MatButtonToggleModule,\n DeltaComponent,\n MatButtonModule,\n NgxChartsModule,\n GoogleMapsModule,\n GalaxyBadgeModule,\n MatSlideToggleModule,\n ],\n exports: [LocalSEOTableComponent],\n})\nexport class LocalSEOTableModule {}\n","import { Component, OnDestroy } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { TranslateService } from '@ngx-translate/core';\nimport { DateRangePresetPeriod } from '@vendasta/galaxy/datepicker';\nimport { DateRange } from '@vendasta/galaxy/utility/date-utils';\nimport { KeywordInfo } from '@vendasta/listing-products';\nimport { BehaviorSubject, Subscription } from 'rxjs';\nimport { SEODATA_TAB_GRID } from '../keyword-tracking/keyword-tracking.component';\nimport { KeywordTrackingService, SeoDataSettings } from '../keyword-tracking/keyword-tracking.service';\nimport { LocalSeoKeywordDialogComponent } from '../local-seo-keyword-dialog/local-seo-keyword-dialog.component';\nimport { LocalSeoSettingsDialogComponent } from '../local-seo-settings-dialog/local-seo-settings-dialog.component';\n\n@Component({\n selector: 'local-seo-page-title-action',\n templateUrl: './local-seo-page-title-action.component.html',\n styleUrls: ['./local-seo-page-title-action.component.scss'],\n})\nexport class LocalSeoPageTitleActionComponent implements OnDestroy {\n selectedDateRange: DateRange;\n keywordDialogRef: MatDialogRef;\n settingsDialogRef: MatDialogRef;\n subscriptions: Subscription[] = [];\n defaultDatePeriod = DateRangePresetPeriod.lastNinetyDays;\n private selectedTab$$: BehaviorSubject = new BehaviorSubject(SEODATA_TAB_GRID);\n canEditKeywords: boolean;\n\n constructor(public service: KeywordTrackingService, private dialog: MatDialog, private translate: TranslateService) {\n this.service.canEditKeywords$.subscribe((value) => {\n this.canEditKeywords = value;\n });\n }\n\n openKeywords(keywords: string[], limit: number, suggestedKeywords: KeywordInfo[]): void {\n if (!keywords || keywords.length === 0) {\n keywords = [];\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n let mapUnits: string;\n this.service.getLocalStorage('mapUnits').subscribe((value) => {\n mapUnits = value ?? this.translate.instant('LOCAL_SEO.SELECT_LOCAL_SEARCH_RADIUS.MILES');\n });\n\n this.keywordDialogRef = this.dialog.open(LocalSeoKeywordDialogComponent, {\n data: {\n keywords: keywords,\n keywordLimit: limit,\n suggestedKeywords: suggestedKeywords,\n canEditKeywords: this.canEditKeywords,\n },\n width: '600px',\n });\n this.subscriptions.push(\n this.keywordDialogRef.afterClosed().subscribe((result) => {\n if (result !== undefined) {\n this.service.updateKeywords(result.keywords);\n }\n }),\n );\n }\n\n openSettings(seoDataSettings: SeoDataSettings): void {\n let mapUnits: string;\n this.service.getLocalStorage('mapUnits').subscribe((value) => {\n mapUnits = value ?? this.translate.instant('LOCAL_SEO.SELECT_LOCAL_SEARCH_RADIUS.MILES');\n });\n\n this.settingsDialogRef = this.dialog.open(LocalSeoSettingsDialogComponent, {\n data: {\n mapRadius: seoDataSettings?.localSearchRadius,\n mapUnits: mapUnits,\n },\n width: '600px',\n });\n this.subscriptions.push(\n this.settingsDialogRef.afterClosed().subscribe((result) => {\n if (result !== undefined) {\n this.service.updateLocalSearchRadius(result.mapRadius);\n this.service.setLocalStorage(\n 'mapUnits',\n result.mapUnits ?? this.translate.instant('LOCAL_SEO.SELECT_LOCAL_SEARCH_RADIUS.MILES'),\n );\n }\n }),\n );\n }\n\n onDateRangeSelect(value: DateRange): void {\n this.selectedTab$$.next(SEODATA_TAB_GRID);\n this.service.updateDateRange(value);\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach((sub) => sub.unsubscribe());\n }\n}\n","
\n
\n
\n
\n \n
\n
\n
\n \n \n \n \n \n \n \n add\n {{ 'LOCAL_SEO.ADD_KEYWORDS' | translate }}\n \n \n \n \n
\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { GalaxyDatepickerModule } from '@vendasta/galaxy/datepicker';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatSelectModule } from '@angular/material/select';\nimport { NgxChartsModule } from '@swimlane/ngx-charts';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { GoogleMapsModule } from '@angular/google-maps';\nimport { UIKitModule } from '@vendasta/uikit';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { MatSortModule } from '@angular/material/sort';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { GalaxyEmptyStateModule } from '@vendasta/galaxy/empty-state';\nimport { LocalSeoKeywordDialogComponent } from '../local-seo-keyword-dialog/local-seo-keyword-dialog.component';\nimport { MileToKilometerPipe } from '../local-seo-settings-dialog/local-seo-settings-dialog.component';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatListModule } from '@angular/material/list';\nimport { VaFormsModule } from '@vendasta/forms';\nimport { GalaxyLoadingSpinnerModule } from '@vendasta/galaxy/loading-spinner';\nimport { DeltaComponent } from '../../delta/delta.component';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { ChartModule } from '@bit/vendasta.planets.chart';\nimport { GalaxyAlertModule } from '@vendasta/galaxy/alert';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { GalaxyBadgeModule } from '@vendasta/galaxy/badge';\nimport { LocalSeoKeywordsStatsCardsModule } from '../../keyword-stats-cards/local-seo-keywords-stats-cards.module';\nimport { LocalSEOTableModule } from '../../local-seo-table/local-seo-table.module';\nimport { LocalSeoSettingsDialogComponent } from '../local-seo-settings-dialog/local-seo-settings-dialog.component';\nimport { InfoBannerComponent } from '../../info-banner/info-banner.component';\nimport { GalaxyPageModule } from '@vendasta/galaxy/page';\nimport { KeywordTrackingComponent } from './keyword-tracking.component';\nimport { LocalSeoPageTitleActionComponent } from '../local-seo-page-title-action/local-seo-page-title-action.component';\nimport { LexiconModule } from '@galaxy/lexicon';\nimport en from '../../assets/i18n/en_devel.json';\n\n@NgModule({\n declarations: [\n LocalSeoKeywordDialogComponent,\n MileToKilometerPipe,\n LocalSeoSettingsDialogComponent,\n InfoBannerComponent,\n KeywordTrackingComponent,\n LocalSeoPageTitleActionComponent,\n ],\n imports: [\n CommonModule,\n TranslateModule,\n GalaxyDatepickerModule,\n MatCardModule,\n MatIconModule,\n MatTabsModule,\n GoogleMapsModule,\n UIKitModule,\n MatTableModule,\n MatPaginatorModule,\n MatSortModule,\n MatDividerModule,\n GalaxyEmptyStateModule,\n MatButtonModule,\n MatDialogModule,\n MatListModule,\n VaFormsModule,\n GalaxyLoadingSpinnerModule,\n DeltaComponent,\n MatButtonToggleModule,\n NgxChartsModule,\n GalaxyFormFieldModule,\n MatSelectModule,\n ChartModule,\n GalaxyAlertModule,\n MatRadioModule,\n GalaxyBadgeModule,\n LocalSEOTableModule,\n LocalSeoKeywordsStatsCardsModule,\n GalaxyPageModule,\n LexiconModule.forChild({\n componentName: 'common/local-seo',\n baseTranslation: en,\n }),\n ],\n exports: [KeywordTrackingComponent, LocalSeoPageTitleActionComponent],\n})\nexport class KeywordTrackingModule {}\n","import { Directive, ElementRef, EventEmitter, Inject, Input, Output, PLATFORM_ID, NgZone } from '@angular/core';\nimport { isPlatformBrowser } from '@angular/common';\nimport * as i0 from \"@angular/core\";\nvar ClickOutsideDirective = function () {\n function ClickOutsideDirective(_el, _ngZone, platformId) {\n this._el = _el;\n this._ngZone = _ngZone;\n this.platformId = platformId;\n this.clickOutsideEnabled = true;\n this.attachOutsideOnClick = false;\n this.delayClickOutsideInit = false;\n this.emitOnBlur = false;\n this.exclude = '';\n this.excludeBeforeClick = false;\n this.clickOutsideEvents = '';\n this.clickOutside = new EventEmitter();\n this._nodesExcluded = [];\n this._events = ['click'];\n this._initOnClickBody = this._initOnClickBody.bind(this);\n this._onClickBody = this._onClickBody.bind(this);\n this._onWindowBlur = this._onWindowBlur.bind(this);\n }\n ClickOutsideDirective.prototype.ngOnInit = function () {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n this._init();\n };\n ClickOutsideDirective.prototype.ngOnDestroy = function () {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n this._removeClickOutsideListener();\n this._removeAttachOutsideOnClickListener();\n this._removeWindowBlurListener();\n };\n ClickOutsideDirective.prototype.ngOnChanges = function (changes) {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n if (changes['attachOutsideOnClick'] || changes['exclude'] || changes['emitOnBlur']) {\n this._init();\n }\n };\n ClickOutsideDirective.prototype._init = function () {\n if (this.clickOutsideEvents !== '') {\n this._events = this.clickOutsideEvents.split(',').map(function (e) {\n return e.trim();\n });\n }\n this._excludeCheck();\n if (this.attachOutsideOnClick) {\n this._initAttachOutsideOnClickListener();\n } else {\n this._initOnClickBody();\n }\n if (this.emitOnBlur) {\n this._initWindowBlurListener();\n }\n };\n ClickOutsideDirective.prototype._initOnClickBody = function () {\n if (this.delayClickOutsideInit) {\n setTimeout(this._initClickOutsideListener.bind(this));\n } else {\n this._initClickOutsideListener();\n }\n };\n ClickOutsideDirective.prototype._excludeCheck = function () {\n if (this.exclude) {\n try {\n var nodes = Array.from(document.querySelectorAll(this.exclude));\n if (nodes) {\n this._nodesExcluded = nodes;\n }\n } catch (err) {\n console.error('[ng-click-outside] Check your exclude selector syntax.', err);\n }\n }\n };\n ClickOutsideDirective.prototype._onClickBody = function (ev) {\n if (!this.clickOutsideEnabled) {\n return;\n }\n if (this.excludeBeforeClick) {\n this._excludeCheck();\n }\n if (!this._el.nativeElement.contains(ev.target) && !this._shouldExclude(ev.target)) {\n this._emit(ev);\n if (this.attachOutsideOnClick) {\n this._removeClickOutsideListener();\n }\n }\n };\n ClickOutsideDirective.prototype._onWindowBlur = function (ev) {\n var _this = this;\n setTimeout(function () {\n if (!document.hidden) {\n _this._emit(ev);\n }\n });\n };\n ClickOutsideDirective.prototype._emit = function (ev) {\n var _this = this;\n if (!this.clickOutsideEnabled) {\n return;\n }\n this._ngZone.run(function () {\n return _this.clickOutside.emit(ev);\n });\n };\n ClickOutsideDirective.prototype._shouldExclude = function (target) {\n for (var _i = 0, _a = this._nodesExcluded; _i < _a.length; _i++) {\n var excludedNode = _a[_i];\n if (excludedNode.contains(target)) {\n return true;\n }\n }\n return false;\n };\n ClickOutsideDirective.prototype._initClickOutsideListener = function () {\n var _this = this;\n this._ngZone.runOutsideAngular(function () {\n _this._events.forEach(function (e) {\n return document.addEventListener(e, _this._onClickBody);\n });\n });\n };\n ClickOutsideDirective.prototype._removeClickOutsideListener = function () {\n var _this = this;\n this._ngZone.runOutsideAngular(function () {\n _this._events.forEach(function (e) {\n return document.removeEventListener(e, _this._onClickBody);\n });\n });\n };\n ClickOutsideDirective.prototype._initAttachOutsideOnClickListener = function () {\n var _this = this;\n this._ngZone.runOutsideAngular(function () {\n _this._events.forEach(function (e) {\n return _this._el.nativeElement.addEventListener(e, _this._initOnClickBody);\n });\n });\n };\n ClickOutsideDirective.prototype._removeAttachOutsideOnClickListener = function () {\n var _this = this;\n this._ngZone.runOutsideAngular(function () {\n _this._events.forEach(function (e) {\n return _this._el.nativeElement.removeEventListener(e, _this._initOnClickBody);\n });\n });\n };\n ClickOutsideDirective.prototype._initWindowBlurListener = function () {\n var _this = this;\n this._ngZone.runOutsideAngular(function () {\n window.addEventListener('blur', _this._onWindowBlur);\n });\n };\n ClickOutsideDirective.prototype._removeWindowBlurListener = function () {\n var _this = this;\n this._ngZone.runOutsideAngular(function () {\n window.removeEventListener('blur', _this._onWindowBlur);\n });\n };\n ClickOutsideDirective.ɵfac = function ClickOutsideDirective_Factory(t) {\n return new (t || ClickOutsideDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(PLATFORM_ID));\n };\n ClickOutsideDirective.ɵdir = i0.ɵɵdefineDirective({\n type: ClickOutsideDirective,\n selectors: [[\"\", \"clickOutside\", \"\"]],\n inputs: {\n clickOutsideEnabled: \"clickOutsideEnabled\",\n attachOutsideOnClick: \"attachOutsideOnClick\",\n delayClickOutsideInit: \"delayClickOutsideInit\",\n emitOnBlur: \"emitOnBlur\",\n exclude: \"exclude\",\n excludeBeforeClick: \"excludeBeforeClick\",\n clickOutsideEvents: \"clickOutsideEvents\"\n },\n outputs: {\n clickOutside: \"clickOutside\"\n },\n features: [i0.ɵɵNgOnChangesFeature]\n });\n return ClickOutsideDirective;\n}();\nexport { ClickOutsideDirective };\n(function () {\n void 0;\n})();","import { NgModule } from '@angular/core';\nimport { ClickOutsideDirective } from './click-outside.directive';\nimport * as i0 from \"@angular/core\";\nvar ClickOutsideModule = function () {\n function ClickOutsideModule() {}\n ClickOutsideModule.ɵmod = i0.ɵɵdefineNgModule({\n type: ClickOutsideModule\n });\n ClickOutsideModule.ɵinj = i0.ɵɵdefineInjector({\n factory: function ClickOutsideModule_Factory(t) {\n return new (t || ClickOutsideModule)();\n }\n });\n return ClickOutsideModule;\n}();\nexport { ClickOutsideModule };\n(function () {\n (typeof ngJitMode === \"undefined\" || ngJitMode) && i0.ɵɵsetNgModuleScope(ClickOutsideModule, {\n declarations: [ClickOutsideDirective],\n exports: [ClickOutsideDirective]\n });\n})();\n(function () {\n void 0;\n})();","export { ClickOutsideDirective } from './click-outside.directive';\nexport { ClickOutsideModule } from './click-outside.module';","import { Injectable, Inject } from '@angular/core';\nimport { SSOService, newPartnerServiceContext } from '@vendasta/sso';\nimport { switchMap, map, shareReplay } from 'rxjs/operators';\nimport { Observable, combineLatest } from 'rxjs';\nimport { WhitelabelService } from '@galaxy/partner';\n\nexport interface VBCEntryInfo {\n url: string;\n name: string;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class BusinessCenterService {\n private entryUrl$: Observable;\n private vbcName$: Observable = this.partnerId$.pipe(\n switchMap((partnerId) => this.whitelabelService.getBranding(partnerId)),\n map((branding) => branding.apps['VBC'].name),\n shareReplay(1),\n );\n\n constructor(\n private ssoService: SSOService,\n @Inject('PARTNER_ID') private readonly partnerId$: Observable,\n private whitelabelService: WhitelabelService,\n ) {\n // Whitelabelled entry URL\n this.entryUrl$ = this.partnerId$.pipe(\n switchMap((partnerId) => {\n return this.ssoService.getEntryUrl('VBC', newPartnerServiceContext(partnerId));\n }),\n shareReplay(1),\n );\n }\n\n getVBCEntryUrl(accountGroupId?: string, page = 'dashboard'): Observable {\n if (accountGroupId) {\n // Entry URL with nextUrl to go to location's dashboard\n return combineLatest([this.entryUrl$, this.vbcName$]).pipe(\n map(([entryUrl, vbcName]) => {\n return {\n url: addNextUrl(entryUrl, `/account/location/${accountGroupId}/${page}`),\n name: vbcName,\n };\n }),\n );\n }\n // if no account group chosen, just redirect to /entry, and let business app\n // handle looking up default account group\n return combineLatest([this.entryUrl$, this.vbcName$]).pipe(\n map(([entryUrl, vbcName]) => {\n return {\n url: entryUrl,\n name: vbcName,\n };\n }),\n );\n }\n}\n\nexport function addNextUrl(entryUrl: string, nextUrl: string): string {\n if (!('URL' in window)) {\n return entryUrl + `?nextUrl=${encodeURIComponent(nextUrl)}`;\n }\n const urlObj = new URL(entryUrl);\n const params = new URLSearchParams(urlObj.search);\n params.append('nextUrl', nextUrl);\n urlObj.search = params.toString();\n return urlObj.toString();\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpErrorResponse, HttpHeaders } from '@angular/common/http';\nimport { Observable, throwError as observableThrowError } from 'rxjs';\n\nimport { catchError, map } from 'rxjs/operators';\nimport { SessionService } from '@galaxy/core';\n\nexport class ApiError implements Error {\n name: string;\n message: string;\n code: number;\n data?: Record;\n\n constructor(message: string, code: number, data?: Record) {\n this.name = `ApiError${code}`;\n this.message = message;\n this.code = code;\n this.data = data;\n }\n}\n\n@Injectable()\nexport class VApiService {\n apiOptions: any;\n\n constructor(private http: HttpClient, private sessionService: SessionService) {\n this.apiOptions = {\n headers: new HttpHeaders({\n Authorization: `Bearer ${sessionService.getSessionId()}`,\n 'Content-Type': 'application/json',\n }),\n withCredentials: true,\n responseType: 'json',\n };\n }\n\n public get(url: string, options?: any): Observable {\n return this.http\n .get(url, Object.assign({}, this.apiOptions, options))\n .pipe(map(this.extractData), catchError(this.handleError));\n }\n\n public put(url: string, body: any, options?: any): Observable {\n return this.http\n .put(url, body, Object.assign({}, this.apiOptions, options))\n .pipe(map(this.extractData), catchError(this.handleError));\n }\n\n public post(url: string, body: any, options?: any): Observable {\n return this.http\n .post(url, body, Object.assign({}, this.apiOptions, options))\n .pipe(map(this.extractData), catchError(this.handleError));\n }\n\n public generateUrlWithParams(url: string, params: Record): string {\n if (Object.keys(params).length === 0) {\n return url;\n }\n\n const finalUrl = url + '?';\n const finalParams = Object.keys(params)\n .map((param_key) => `${param_key}=${params[param_key]}`)\n .join('&');\n return finalUrl + finalParams;\n }\n\n public generateRepeatedUrlParams(paramName: string, params: string[]): string {\n let repeatedParams = '';\n params.forEach((id, index) => {\n if (index !== 0) {\n repeatedParams += '&';\n }\n repeatedParams += paramName + '=' + id;\n });\n return repeatedParams;\n }\n\n private extractData(res: any): any {\n try {\n return 'data' in res ? res.data : res;\n } catch (error) {\n return res;\n }\n }\n\n private handleError(error: HttpErrorResponse): Observable {\n try {\n const errorInfo = error;\n const err = new ApiError(errorInfo.message, errorInfo.status, errorInfo.error);\n return observableThrowError(err);\n } catch (error) {\n const err = new ApiError('Unknown Error', 500);\n return observableThrowError(err);\n }\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Environment, EnvironmentService } from '@galaxy/core';\nimport { Observable, of } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { VApiService } from './vapi.service';\n\nconst REPCORE_HOSTS = new Map();\nREPCORE_HOSTS.set(Environment.LOCAL, 'repcore-demo.appspot.com');\nREPCORE_HOSTS.set(Environment.DEMO, 'repcore-demo.appspot.com');\nREPCORE_HOSTS.set(Environment.PROD, 'repcore-prod.appspot.com');\n\n@Injectable()\nexport class RepcoreApiService {\n private scheme = '';\n private repcoreHost = '';\n\n constructor(private vapiService: VApiService, private environmentService: EnvironmentService) {\n this.scheme = window.location.protocol.startsWith('https') ? 'https' : 'http';\n this.repcoreHost = REPCORE_HOSTS.get(environmentService.getEnvironment());\n }\n\n getTwitterCustomAppConnections(accountGroupid: string): Observable {\n const url = `${this.scheme}://${this.repcoreHost}/api/v2/social/twitterAppChecker/`;\n return this.vapiService\n .post(url, { agid: accountGroupid })\n .pipe(catchError(() => of({ reconnect_group: [], total_connections: 0 })));\n }\n\n getFacebookAppConnections(accountGroupid: string): Observable {\n const url = `${this.scheme}://${this.repcoreHost}/api/v2/social/facebookAppChecker/`;\n return this.vapiService\n .post(url, { agid: accountGroupid })\n .pipe(catchError(() => of({ reconnect_needed: false, reconnect_group: [], total_connections: 0 })));\n }\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { Observable, of } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { MatSnackBar } from '@angular/material/snack-bar';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ListingSyncApiService {\n constructor(private http: HttpClient, private snackbar: MatSnackBar) {}\n\n updateSyncStatus(url: string, ssid: string): Observable {\n const body = new HttpParams().set('syncing_ssid', ssid);\n return this.http\n .post(url, body.toString(), {\n headers: {\n 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8',\n },\n })\n .pipe(\n catchError((error) => {\n if (!error.responseText || error.responseText.indexOf('NORMALIZATION_FAILED') < 0) {\n this.snackbar.open('There was an error updating your sync status', '', { duration: 5000 });\n }\n return of(null);\n }),\n );\n }\n\n getServiceUserIdFromSSID(ssid: string): string {\n if (ssid?.split('/')?.length > 1) {\n return ssid.split('/')[1];\n } else {\n return ssid.substring(ssid.indexOf('-') + 1);\n }\n }\n\n disconnectService(url: string, ssid: string, clientTags: string[]): Observable {\n const body = new HttpParams()\n .set('ssid', ssid)\n .set('service_user_id', this.getServiceUserIdFromSSID(ssid))\n .set('clientTags', JSON.stringify(clientTags));\n return this.http\n .post(url, body.toString(), {\n headers: {\n 'content-type': 'application/x-www-form-urlencoded; charset=UTF-8',\n },\n })\n .pipe(\n catchError((error) => {\n if (!error.responseText || error.responseText.indexOf('NORMALIZATION_FAILED') < 0) {\n this.snackbar.open('There was an error disconnecting your account', '', { duration: 5000 });\n }\n return of(null);\n }),\n );\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport {\n AccountsService,\n AppAndAddonActivationStatus,\n ListAppAndAddonActivationStatusFilter,\n} from '@vendasta/accounts/legacy';\nimport { FeatureFlagMultiResponse, FeatureFlagService } from '@vendasta/businesses';\nimport {\n BillingFrequency,\n GetListingDataRequest,\n GetListingDataResponse,\n GetListingSyncProAddonIdRequestInterface,\n GetListingSyncProAddonIdResponse,\n ListingSyncProApiService as ListingSyncProApiServiceSDK,\n SourceTableData,\n} from '@vendasta/listing-sync-pro';\nimport { BehaviorSubject, Observable, combineLatest, of } from 'rxjs';\nimport { catchError, filter, map, shareReplay, switchMap } from 'rxjs/operators';\nimport {\n AGIDTOKEN,\n DEMO_PAID_EDITION,\n ListingsScoreSummaryData,\n PROD_PAID_EDITION,\n SyncingProgressSummaryData,\n determineOriginalListingScore,\n} from '../local-seo';\nimport { UpgradeCTADialogService } from '../upgrade-cta-dialog/upgrade-cta-dialog.service';\nimport { ListingSyncApiService } from './listing-sync.api.service';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ListingSyncService {\n public addonID$: Observable;\n public listingData$$: BehaviorSubject = new BehaviorSubject(null);\n public lspActive$: Observable;\n\n public isLBFreeEdition$: Observable;\n public featureFlags$: Observable;\n\n public syncingProgressSummaryData$: Observable;\n public listingsScoreSummaryData$: Observable;\n public lspFacebookPages$: Observable;\n\n constructor(\n @Inject(AGIDTOKEN) private agid$: Observable,\n private apiService: ListingSyncApiService,\n private listingSyncProApiServiceSDK: ListingSyncProApiServiceSDK,\n private accountsService: AccountsService,\n private upgradeCTADialogService: UpgradeCTADialogService,\n private featureFlagService: FeatureFlagService,\n ) {\n this.lspFacebookPages$ = this.getListingData$().pipe(\n map((data) => data?.sources?.filter((source) => source.sourceId === 10050)),\n );\n\n this.featureFlags$ = upgradeCTADialogService.partnerMarket$.pipe(\n switchMap((partnerMarket) =>\n featureFlagService.checkFeatureFlagsMulti(partnerMarket.partnerId, partnerMarket.marketId, [\n 'reauth_facebook_account_banner_2023',\n 'localseo_restrict_twitter_instagram_to_pro',\n ]),\n ),\n shareReplay(1),\n );\n\n this.isLBFreeEdition$ = this.agid$.pipe(\n switchMap((agid) => {\n const filters: ListAppAndAddonActivationStatusFilter = {\n appIds: ['MS'],\n statuses: [AppAndAddonActivationStatus.ACTIVATED],\n };\n return accountsService.listAppsAndAddonsActivationStatusesForBusiness(agid, filters).pipe(\n map((activations) => {\n if (activations?.length > 0) {\n switch (activations[0].editionId) {\n case DEMO_PAID_EDITION:\n return false;\n case PROD_PAID_EDITION:\n return false;\n }\n }\n return true;\n }),\n shareReplay(1),\n );\n }),\n );\n this.agid$\n .pipe(\n switchMap((agid) =>\n agid\n ? this.listingSyncProApiServiceSDK.getListingData(new GetListingDataRequest({ businessId: agid }))\n : of(null),\n ),\n )\n .subscribe(this.listingData$$);\n\n this.addonID$ = combineLatest([this.agid$, this.getListingData$()]).pipe(\n switchMap(([agid, listingData]) =>\n this.listingSyncProApiServiceSDK.getListingSyncProAddonId({\n accountGroupId: agid,\n provider: listingData.provider,\n billingFrequency: BillingFrequency.BILLING_FREQUENCY_MONTHLY,\n } as GetListingSyncProAddonIdRequestInterface),\n ),\n catchError(() => of(null)),\n map((resp: GetListingSyncProAddonIdResponse) => (resp && resp.addonId ? resp.addonId : null)),\n shareReplay(1),\n );\n\n this.lspActive$ = this.getListingData$().pipe(map((data) => data.lspActive));\n this.syncingProgressSummaryData$ = this.getListingData$().pipe(\n map((data) => {\n return {\n lspActive: !!data.lspActive,\n totalSourcesCount: data.totalSources || 0,\n syncedSourcesCount: data.totalAcceptedSources || 0,\n syncInProgressSourcesCount: data.totalInProgressSources || 0,\n notSyncingSourcesCount:\n (data.totalSources || 0) - ((data.totalAcceptedSources || 0) + (data.totalInProgressSources || 0)),\n };\n }),\n );\n\n this.listingsScoreSummaryData$ = this.getListingData$().pipe(\n map((data) => {\n return {\n listingScore: data.scores.totalScore ? data.scores.totalScore : 0,\n totalAcceptedSources: data.totalAcceptedSources ? data.totalAcceptedSources : 0,\n totalSources: data.totalSources ? data.totalSources : 0,\n originalListingScore: determineOriginalListingScore(data.scores),\n industryAverageListingsScore: data.scores.industryAverage ? data.scores.industryAverage : 0,\n ninetyFifthPercentile: data.scores.ninetyFifthPercentile ? data.scores.ninetyFifthPercentile : 0,\n totalAccurate: data.totalAccuracyGoodSources ? data.totalAccuracyGoodSources : 0,\n totalPossibleErrors: data.totalPossibleErrors ? data.totalPossibleErrors : 0,\n totalNotFound: data.totalNotFound ? data.totalNotFound : 0,\n };\n }),\n );\n }\n\n getListingData$(refresh?: boolean): Observable {\n if (refresh) {\n this.agid$\n .pipe(\n switchMap((agid) =>\n this.listingSyncProApiServiceSDK.getListingData(new GetListingDataRequest({ businessId: agid })),\n ),\n )\n .subscribe(this.listingData$$);\n }\n\n return this.listingData$$.asObservable().pipe(filter((config) => config !== null));\n }\n\n disconnectService$(url: string, ssid: string, clientTags = []): Observable {\n return this.apiService.disconnectService(url, ssid, clientTags);\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n updateSyncStatus$(url: string, ssid: string, serviceType = ''): Observable {\n return this.apiService.updateSyncStatus(url, ssid);\n }\n}\n","import { Component, Inject } from '@angular/core';\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\n\n@Component({\n selector: 'local-seo-disconnect-service-modal',\n templateUrl: './disconnect-service-modal.component.html',\n styleUrls: ['./disconnect-service-modal.component.scss'],\n})\nexport class DisconnectServiceModalComponent {\n source: string;\n\n constructor(@Inject(MAT_DIALOG_DATA) public data: any) {\n this.source = data.source;\n }\n}\n","\n \n \n {{ 'SHARED.DISCONNECT_MODAL.TITLE' | translate : { source: source } }}\n \n \n \n
\n {{ 'SHARED.DISCONNECT_MODAL.TEXT' | translate : { source: source } }}\n
\n
\n \n \n \n \n
\n","import { Inject, Injectable } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport {\n AccuracyStatus,\n AnchorData,\n AnchorDataMatches,\n SiteType,\n SourceAccuracy,\n SourceTableData,\n StatusCode,\n} from '@vendasta/listing-sync-pro';\nimport { ProductAnalyticsService } from '@vendasta/product-analytics';\nimport { LoadRequest, SortDirection, SortSetting, TableDataService } from '@vendasta/va-filter2-table';\nimport { Observable, combineLatest } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { AGIDTOKEN, SyncingDetails, getErrorMessages, getFieldsWithWarnings, syncingDetails } from '../../local-seo';\nimport { ListingSyncService } from '../listing-sync.service';\n\nenum AccuracyClass {\n IN_PROGRESS = 'in-progress',\n}\n\nenum IconClass {\n RED = 'sync-red',\n ORANGE = 'sync-orange',\n YELLOW = 'sync-yellow',\n GREEN = 'sync-green',\n}\n\nenum MaterialIcons {\n DONE = 'done',\n SYNC = 'sync',\n SYNC_DISABLED = 'sync_disabled',\n SYNC_PROBLEM = 'sync_problem',\n VISIBILITY = 'visibility',\n WARNING = 'warning',\n LOCK = 'lock',\n}\n\nconst SITE_TYPE_MAPPING = new Map([\n [SiteType.SITE_TYPE_UNSPECIFIED, `DIRECTORY`],\n [SiteType.SITE_TYPE_MAP, `MAP`],\n [SiteType.SITE_TYPE_SOCIAL, `SOCIAL`],\n [SiteType.SITE_TYPE_AGGREGATOR, `AGGREGATOR`],\n [SiteType.SITE_TYPE_HISPANIC_SITE, `HISPANIC_SITE`],\n [SiteType.SITE_TYPE_APP, `APP`],\n [SiteType.SITE_TYPE_GPS, `GPS`],\n [SiteType.SITE_TYPE_DIRECTORY, `DIRECTORY`],\n]);\n\nfunction getIconUrl(sourceIcon: string): string {\n return sourceIcon ? `//www.cdnstyles.com/static/images/source-icons/${sourceIcon}.svg` : null;\n}\n\nfunction getSourceType(siteType: SiteType): string {\n const key = SITE_TYPE_MAPPING.get(siteType) || `DIRECTORY`;\n return `LISTING_SYNC.LSP_ADDON.COLUMNS.SITE_TYPE.TYPES.${key}`;\n}\n\nfunction getAccuracyAndSyncSettings(source: SourceTableData): any {\n if (source.syncStatus) {\n return AccuracyAndSyncMapping.get(source.syncStatus);\n }\n // If the response contains no status, default to NOT_FOUND behavior\n return AccuracyAndSyncMapping.get(StatusCode.STATUS_CODE_NOT_FOUND);\n}\n\nenum SyncTextClass {\n GREEN_OK = 'sync-green',\n ORANGE = 'sync-yellow',\n CLICKABLE = 'clickable',\n NOT_FOUND = 'not-found',\n SYNCED = 'sync-green',\n MANUAL_UPDATE_ONLY = 'manual-update-only',\n}\n\nexport const AccuracyAndSyncMapping = new Map<\n StatusCode,\n {\n accuracyClass: AccuracyClass;\n accuracyText: string;\n syncIconClass: IconClass;\n syncIcon: MaterialIcons;\n syncTextClass: SyncTextClass;\n syncText: string;\n tooltipTitle?: string;\n tooltipText?: string;\n }\n>([\n [\n StatusCode.STATUS_CODE_SYNCED,\n {\n accuracyClass: null,\n accuracyText: 'LISTING_SYNC.LSP_ADDON.COLUMNS.SYNC_STATUS.IN_SYNC.DETAILS',\n syncIconClass: IconClass.GREEN,\n syncIcon: MaterialIcons.DONE,\n syncTextClass: SyncTextClass.GREEN_OK,\n syncText: 'LISTING_SYNC.LSP_ADDON.COLUMNS.SYNC_STATUS.IN_SYNC.SHORT',\n },\n ],\n [\n StatusCode.STATUS_CODE_IN_PROGRESS,\n {\n accuracyClass: AccuracyClass.IN_PROGRESS,\n accuracyText: 'LISTING_SYNC.LSP_ADDON.COLUMNS.SYNC_STATUS.IN_PROGRESS.DETAILS',\n syncIconClass: IconClass.GREEN,\n syncIcon: MaterialIcons.SYNC,\n syncTextClass: SyncTextClass.GREEN_OK,\n syncText: 'LISTING_SYNC.LSP_ADDON.COLUMNS.SYNC_STATUS.IN_PROGRESS.SHORT',\n },\n ],\n [\n StatusCode.STATUS_CODE_SYNCING_WITH_WARNINGS,\n {\n accuracyClass: AccuracyClass.IN_PROGRESS,\n accuracyText: 'LISTING_SYNC.LSP_ADDON.COLUMNS.SYNC_STATUS.SYNCING_WITH_WARNINGS.DETAILS',\n syncIconClass: IconClass.GREEN,\n syncIcon: MaterialIcons.SYNC_PROBLEM,\n syncTextClass: SyncTextClass.CLICKABLE,\n syncText: 'LISTING_SYNC.LSP_ADDON.COLUMNS.SYNC_STATUS.SYNCING_WITH_WARNINGS.SHORT',\n },\n ],\n [\n StatusCode.STATUS_CODE_HAS_ERRORS,\n {\n accuracyClass: AccuracyClass.IN_PROGRESS,\n accuracyText: 'LISTING_SYNC.LSP_ADDON.COLUMNS.SYNC_STATUS.HAS_ERRORS.DETAILS',\n syncIconClass: IconClass.RED,\n syncIcon: MaterialIcons.SYNC_DISABLED,\n syncTextClass: SyncTextClass.CLICKABLE,\n syncText: 'LISTING_SYNC.LSP_ADDON.COLUMNS.SYNC_STATUS.HAS_ERRORS.SHORT',\n },\n ],\n [\n StatusCode.STATUS_CODE_SYNC_DISABLED,\n {\n accuracyClass: null,\n accuracyText: 'LISTING_SYNC.LSP_ADDON.COLUMNS.SYNC_STATUS.NOT_ACTIVATED.DETAILS',\n syncIconClass: IconClass.GREEN,\n syncIcon: MaterialIcons.DONE,\n syncTextClass: SyncTextClass.GREEN_OK,\n syncText: 'LISTING_SYNC.LSP_ADDON.COLUMNS.SYNC_STATUS.NOT_ACTIVATED.SHORT',\n },\n ],\n [\n StatusCode.STATUS_CODE_CLAIMED_BY_OTHERS,\n {\n accuracyClass: null,\n accuracyText: 'LISTING_SYNC.LSP_ADDON.COLUMNS.SYNC_STATUS.CLAIMED_BY_OTHERS.DETAILS',\n syncIconClass: IconClass.GREEN,\n syncIcon: MaterialIcons.LOCK,\n syncTextClass: SyncTextClass.GREEN_OK,\n syncText: 'LISTING_SYNC.LSP_ADDON.COLUMNS.SYNC_STATUS.CLAIMED_BY_OTHERS.SHORT',\n tooltipTitle: 'LISTING_SYNC.LSP_ADDON.COLUMNS.SYNC_STATUS.NOT_CLAIMABLE.TOOLTIP.TITLE',\n tooltipText: 'LISTING_SYNC.LSP_ADDON.COLUMNS.SYNC_STATUS.NOT_CLAIMABLE.TOOLTIP.DESCRIPTION',\n },\n ],\n [\n StatusCode.STATUS_CODE_DOES_NOT_SUPPORT_SERVICE_AREA_BUSINESS,\n {\n accuracyClass: null,\n accuracyText: 'LISTING_SYNC.LSP_ADDON.COLUMNS.SYNC_STATUS.DOES_NOT_SUPPORT_SERVICE_AREA_BUSINESS.DETAILS',\n syncIconClass: IconClass.ORANGE,\n syncIcon: MaterialIcons.VISIBILITY,\n syncTextClass: SyncTextClass.ORANGE,\n syncText: 'LISTING_SYNC.LSP_ADDON.COLUMNS.SYNC_STATUS.DOES_NOT_SUPPORT_SERVICE_AREA_BUSINESS.SHORT',\n },\n ],\n [\n StatusCode.STATUS_CODE_IGNORING_ERRORS,\n {\n accuracyClass: null,\n accuracyText: 'LISTING_SYNC.LSP_ADDON.COLUMNS.SYNC_STATUS.IN_SYNC.DETAILS',\n syncIconClass: IconClass.GREEN,\n syncIcon: MaterialIcons.DONE,\n syncTextClass: SyncTextClass.GREEN_OK,\n syncText: 'LISTING_SYNC.LSP_ADDON.COLUMNS.SYNC_STATUS.IN_SYNC.SHORT',\n },\n ],\n [\n StatusCode.STATUS_CODE_SUBMITTED,\n {\n accuracyClass: null,\n accuracyText: 'LISTING_SYNC.LSP_ADDON.COLUMNS.SYNC_STATUS.SUBMITTED.DETAILS',\n syncIconClass: IconClass.GREEN,\n syncIcon: MaterialIcons.DONE,\n syncTextClass: SyncTextClass.GREEN_OK,\n syncText: 'LISTING_SYNC.LSP_ADDON.COLUMNS.SYNC_STATUS.SUBMITTED.SHORT',\n },\n ],\n [\n StatusCode.STATUS_CODE_MANUAL_UPDATE_ONLY,\n {\n accuracyClass: null,\n accuracyText: 'LISTING_SYNC.LSP_ADDON.COLUMNS.SYNC_STATUS.MANUAL_UPDATE_ONLY.DETAILS',\n syncIconClass: null,\n syncIcon: null,\n syncTextClass: SyncTextClass.MANUAL_UPDATE_ONLY,\n syncText: 'LISTING_SYNC.LSP_ADDON.COLUMNS.SYNC_STATUS.MANUAL_UPDATE_ONLY.SHORT',\n },\n ],\n [\n StatusCode.STATUS_CODE_NOT_FOUND,\n {\n accuracyClass: null,\n accuracyText: 'LISTING_SYNC.LSP_ADDON.COLUMNS.ACCURACY.LISTING_NOT_FOUND',\n syncIconClass: IconClass.GREEN,\n syncIcon: null,\n syncTextClass: SyncTextClass.NOT_FOUND,\n syncText: 'LISTING_SYNC.LSP_ADDON.COLUMNS.SYNC_STATUS.STATUS_CODE_NOT_FOUND.SHORT',\n },\n ],\n]);\n\n// mirrors getAccuracyText except for sorting with a private enum\nfunction sortAccuracy(a: LBListingSourceTableEntry, b: LBListingSourceTableEntry): number {\n const accuracyDisplayStatus = ['ACCEPTED', 'NOT_FOUND', 'UNKNOWN', 'ACCURATE', 'INACCURATE'];\n\n const getEnum = (source: LBListingSourceTableEntry): string => {\n if (source.typeEnum === SiteType.SITE_TYPE_GPS) {\n return 'ACCEPTED';\n }\n const sourceAccuracy = source.accuracy;\n if (sourceAccuracy === undefined) {\n return 'NOT_FOUND';\n }\n switch (sourceAccuracy.status) {\n case AccuracyStatus.ACCURACY_STATUS_UNKNOWN:\n return 'UNKNOWN';\n case AccuracyStatus.ACCURACY_STATUS_ACCURATE:\n return 'ACCURATE';\n case AccuracyStatus.ACCURACY_STATUS_INACCURATE:\n return 'INACCURATE';\n }\n };\n\n const aIdx = accuracyDisplayStatus.indexOf(getEnum(a));\n const bIdx = accuracyDisplayStatus.indexOf(getEnum(b));\n\n return aIdx > bIdx ? 1 : bIdx > aIdx ? -1 : 0;\n}\n\nfunction getLastUpdated(lastUpdated: Date): string {\n if (lastUpdated === undefined) {\n return 'Never';\n }\n const lastUpdatedDate = new Date(lastUpdated);\n const differenceInTime = new Date().getTime() - lastUpdatedDate.getTime();\n const differenceInDays = Math.floor(differenceInTime / (1000 * 3600 * 24));\n\n if (differenceInDays === 0) {\n return 'Just updated';\n }\n\n return differenceInDays + ' days ago';\n}\n\nexport enum SyncStatusType {\n LSP_ACTIVE = 'LSP_ACTIVE',\n LSP_INACTIVE = 'LSP_INACTIVE',\n}\n\nfunction sortSyncStatus(a: LBListingSourceTableEntry, b: LBListingSourceTableEntry): number {\n const aCode = a.statusCode || 0;\n const bCode = b.statusCode || 0;\n return aCode > bCode ? 1 : bCode > aCode ? -1 : 0;\n}\n\nfunction _columnTypeSpecificComparitor(\n field: string,\n a: LBListingSourceTableEntry,\n b: LBListingSourceTableEntry,\n): number {\n switch (field) {\n // Date\n case 'lastUpdated': {\n const x = a.lastUpdatedDate;\n const y = b.lastUpdatedDate;\n\n // handle when date is 'never'\n if (x !== undefined && y === undefined) {\n return 1;\n } else if (x === undefined && y !== undefined) {\n return -1;\n } else if (x === undefined && y === undefined) {\n return 0;\n }\n\n return x > y ? 1 : y > x ? -1 : 0;\n }\n // Strings\n case 'name': {\n // normalize to lower case\n return a[field].localeCompare(b[field]);\n }\n // Numbers\n case 'score':\n case 'maxScore':\n return a[field] > b[field] ? 1 : b[field] > a[field] ? -1 : 0;\n // Enums\n case 'accuracyText':\n return sortAccuracy(a, b);\n case 'syncText':\n return sortSyncStatus(a, b);\n case 'type':\n return a.type > b.type ? 1 : b.type > a.type ? -1 : 0;\n default:\n // unknown column type, defaulting sort to number sort\n return a[field] > b[field] ? 1 : b[field] > a[field] ? -1 : 0;\n }\n\n return 0;\n}\n\nfunction _columnSort(\n sortOptions: SortSetting[],\n sortOptionIndex: number,\n a: LBListingSourceTableEntry,\n b: LBListingSourceTableEntry,\n): number {\n const field = sortOptions[sortOptionIndex].field;\n const ascend = sortOptions[sortOptionIndex].direction === SortDirection.SORT_DIRECTION_ASCENDING;\n const result = _columnTypeSpecificComparitor(field, a, b);\n\n // If the sort results in a tie then progress to the next highest priority sort\n if (result === 0) {\n if (sortOptionIndex === sortOptions.length - 1) {\n return 0;\n }\n return _columnSort(sortOptions, sortOptionIndex + 1, a, b);\n }\n return ascend ? result : result * -1;\n}\n\nfunction columnSortEntry(\n sortOptions: SortSetting[],\n a: LBListingSourceTableEntry,\n b: LBListingSourceTableEntry,\n): number {\n if (sortOptions.length === 0) {\n return 0;\n }\n return _columnSort(sortOptions, 0, a, b);\n}\n\nfunction applyDefaultSortOptions(sortOpts: SortSetting[]): void {\n const sortMaxScoreOpt: SortSetting = {\n ascendingLabel: 'LISTING_SYNC.TABLE_LABEL.SORT_NUMBER_ASC',\n descendingLabel: 'LISTING_SYNC.TABLE_LABEL.SORT_NUMBER_DSC',\n direction: SortDirection.SORT_DIRECTION_DESCENDING,\n displayName: 'LISTING_SYNC.COLUMN_HEADERS.MAX_SCORE',\n field: 'maxScore',\n id: 'scoreMax',\n };\n\n if (sortOpts.length === 0) {\n sortOpts.push(sortMaxScoreOpt);\n }\n}\n\nfunction countAccuracyErrors(anchorDataMatches: AnchorDataMatches): number {\n if (!anchorDataMatches) {\n return 0;\n }\n\n const fields = ['website', 'city', 'zip', 'companyName', 'phone', 'state', 'address'];\n let errorCount = 0;\n for (let i = 0; i < fields.length; i++) {\n const field = fields[i];\n if (!Object.prototype.hasOwnProperty.call(anchorDataMatches, field)) {\n errorCount += 1;\n }\n }\n return errorCount;\n}\n\nexport class LBListingSourceTableEntry {\n name: string;\n isDirectlySubmittedSource: boolean;\n iconUrl: string;\n listingUrl: string;\n type: string;\n typeEnum: SiteType;\n accuracy: SourceAccuracy;\n accuracyClass: AccuracyClass;\n accuracyErrorTotal: number;\n syncIconClass: IconClass;\n syncIcon: MaterialIcons;\n syncTextClass: string;\n syncText: string;\n tooltipTitle?: string;\n tooltipText?: string;\n errors: string[];\n fieldsWithWarnings: string[];\n statusCode: StatusCode;\n score: number;\n maxScore: number;\n lastUpdated: string;\n // for sorting\n lastUpdatedDate: Date;\n syncStatusType: SyncStatusType;\n listingId?: string;\n sourceId: number;\n accountGroupId: string;\n anchorData: AnchorData;\n connectLink?: string;\n socialServiceName?: string;\n ssid?: string;\n updateSyncLink?: string;\n selectedSocialService?: boolean;\n disconnectLink?: string;\n serviceType: string;\n clientTags: string[];\n sync: boolean;\n // This contains syncing error or warning details\n syncingDetails?: SyncingDetails;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ListingSyncTableService implements TableDataService {\n totalResults$: Observable;\n lspEnabled = false;\n private excludedSources = [10020, 13840];\n constructor(\n @Inject(AGIDTOKEN) private accountGroupId$: Observable,\n private listingSyncService: ListingSyncService,\n private snowplowService: ProductAnalyticsService,\n private translateService: TranslateService,\n ) {}\n\n load(request: LoadRequest): Observable {\n return combineLatest([this.accountGroupId$, this.listingSyncService.getListingData$(true)]).pipe(\n map(([agid, data]) => {\n this.lspEnabled = data.lspActive;\n let sources: SourceTableData[] = data.sources;\n\n sources = sources.filter((value) => {\n return !this.excludedSources.includes(value.sourceId);\n });\n\n if (request.filters['search']) {\n sources = sources.filter((value) => {\n const query: string = request.filters['search'];\n return value.name.toLowerCase().startsWith(query.toLowerCase());\n });\n }\n\n if (request.filters['syncing_available']) {\n sources = sources.filter((value) => {\n return value.syncStatus !== StatusCode.STATUS_CODE_MANUAL_UPDATE_ONLY;\n });\n }\n\n if (request.filters['manual_update_only']) {\n sources = sources.filter((value) => {\n return value.syncStatus === StatusCode.STATUS_CODE_MANUAL_UPDATE_ONLY;\n });\n }\n\n let tableFormattedSources: LBListingSourceTableEntry[] = sources.map((src: SourceTableData) => {\n const accuracyAndSyncSettings = getAccuracyAndSyncSettings(src);\n\n const formattedSource = {\n name: src.name,\n isDirectlySubmittedSource: src.isDirectlySubmittedSource,\n iconUrl: getIconUrl(src.icon),\n listingUrl: src.url,\n type: this.translateService.instant(getSourceType(src.type)),\n typeEnum: src.type,\n accuracy: src.accuracy,\n accuracyClass: accuracyAndSyncSettings,\n accuracyErrorTotal: countAccuracyErrors(src.accuracy.anchorDataMatches),\n syncIconClass: accuracyAndSyncSettings.syncIconClass,\n syncIcon: accuracyAndSyncSettings.syncIcon,\n syncTextClass: accuracyAndSyncSettings.syncTextClass,\n syncText: this.translateService.instant(accuracyAndSyncSettings.syncText),\n tooltipTitle: accuracyAndSyncSettings?.tooltipTitle || '',\n tooltipText: accuracyAndSyncSettings?.tooltipText || '',\n errors: getErrorMessages(src),\n fieldsWithWarnings: getFieldsWithWarnings(src),\n statusCode: src.syncStatus,\n score: src.score ? src.score : 0,\n maxScore: src.maxScore,\n lastUpdated: getLastUpdated(src.updated),\n lastUpdatedDate: src.updated,\n syncStatusType: this.lspEnabled ? SyncStatusType.LSP_ACTIVE : SyncStatusType.LSP_INACTIVE,\n accountGroupId: agid,\n listingId: src.listingId,\n sourceId: src.sourceId,\n anchorData: data.anchorData,\n connectLink: src.connectLink,\n socialServiceName: src.socialServiceName,\n ssid: src.ssid,\n updateSyncLink: src.updateSyncLink,\n selectedSocialService: src.selectedSocialService,\n disconnectLink: src.disconnectLink,\n serviceType: src.serviceType,\n clientTags: src.clientTags,\n sync: src.syncStatus === StatusCode.STATUS_CODE_SYNCED,\n syncingDetails: syncingDetails(src),\n };\n\n return formattedSource;\n });\n\n // TODO: Stop returning primary sources from back end\n tableFormattedSources = tableFormattedSources.filter(\n (source) =>\n source.sourceId !== 10010 &&\n source.sourceId !== 10050 &&\n source.sourceId !== 10060 &&\n source.sourceId !== 11610,\n );\n\n const sortOpts = [...request.sortingOptions];\n applyDefaultSortOptions(sortOpts);\n\n const result = this.sortTableRows(tableFormattedSources, sortOpts);\n return result;\n }),\n );\n }\n\n sortTableRows(data: LBListingSourceTableEntry[], options?: SortSetting[]): LBListingSourceTableEntry[] {\n const cmpGenerator = function (): (a: LBListingSourceTableEntry, b: LBListingSourceTableEntry) => number {\n return (a: LBListingSourceTableEntry, b: LBListingSourceTableEntry): number => {\n return columnSortEntry(options, a, b);\n };\n };\n\n data = data.sort(cmpGenerator());\n\n return data;\n }\n}\n","import { StatusCode } from '@vendasta/listing-sync-pro';\nimport { TranslateService } from '@ngx-translate/core';\nimport { AccuracyAndSyncMapping } from '../listing-sync-table/listing-sync-table.service';\n\nexport const DIRECT_SUBMIT_SOURCES = [\n 10010, // Google\n 10050, // Facebook\n 10060, // Twitter\n 11610, // Instagram\n 10020, // Bing\n 13840, // Apple\n];\n\nexport const DIRECT_SUBMIT_WITHOUT_ACCOUNT_SOURCES = [\n 10020, // Bing\n 13840, // Apple\n];\n\nexport const DIRECT_SUBMIT_SOURCE_TO_VENDOR_ID: Record = {\n 10020: 'bing', // Bing\n 13840: 'abc', // Apple\n};\n\nexport function StatusCodeColor(code: StatusCode): string {\n switch (code) {\n case StatusCode.STATUS_CODE_SYNCED:\n case StatusCode.STATUS_CODE_IGNORING_ERRORS:\n case StatusCode.STATUS_CODE_SYNCING_WITH_WARNINGS:\n case StatusCode.STATUS_CODE_SUBMITTED:\n case StatusCode.STATUS_CODE_IN_PROGRESS:\n return 'green';\n case StatusCode.STATUS_CODE_HAS_ERRORS:\n case StatusCode.STATUS_CODE_SYNC_DISABLED:\n case StatusCode.STATUS_CODE_CLAIMED_BY_OTHERS:\n case StatusCode.STATUS_CODE_DOES_NOT_SUPPORT_SERVICE_AREA_BUSINESS:\n case StatusCode.STATUS_CODE_MANUAL_UPDATE_ONLY:\n return 'yellow';\n default:\n return 'blue-solid';\n }\n}\n\nexport function getSyncStatusText(\n translate: TranslateService,\n sourceId: number,\n sourceName: string,\n listingFound: boolean,\n listingAccurate: boolean,\n hasAccountConnected: boolean,\n isSyncing: boolean,\n locked: boolean,\n lspSyncStatus: StatusCode,\n): string {\n if (lspSyncStatus > 0) {\n return translate.instant(AccuracyAndSyncMapping.get(lspSyncStatus)?.syncText);\n }\n\n if (locked) {\n if (!listingFound) {\n return translate.instant('LISTING_SYNC.SYNCING_STATUS.LOCKED_UPGRADE_TO_CREATE');\n }\n return translate.instant('LISTING_SYNC.SYNCING_STATUS.LOCKED_UPGRADE_TO_SYNC');\n }\n\n if (!hasAccountConnected) {\n if (sourceId === 11610) {\n return translate.instant('LISTING_SYNC.SYNCING_STATUS.CONNECT_FACEBOOK_TO_SYNC');\n }\n if (!listingFound) {\n return translate.instant('LISTING_SYNC.SYNCING_STATUS.CONNECT_OR_CREATE');\n }\n if (!listingAccurate) {\n return translate.instant('LISTING_SYNC.SYNCING_STATUS.SYNC_TO_FIX') + ' ' + sourceName;\n }\n return translate.instant('LISTING_SYNC.SYNCING_STATUS.SYNC_TO_KEEP_ACCURATE');\n }\n if (!isSyncing) {\n if (!listingFound) {\n return translate.instant('LISTING_SYNC.SYNCING_STATUS.SYNC_TO') + ' ' + sourceName;\n }\n if (!listingAccurate) {\n return translate.instant('LISTING_SYNC.SYNCING_STATUS.SYNC_TO_FIX') + ' ' + sourceName;\n }\n return translate.instant('LISTING_SYNC.SYNCING_STATUS.SYNC_TO_KEEP_ACCURATE');\n }\n return translate.instant('LISTING_SYNC.SYNCING_STATUS.SYNCED');\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { AccuracyStatus } from '@vendasta/listing-sync-pro';\n\n@Pipe({\n name: 'accuracyText',\n})\nexport class AccuracyTextPipe implements PipeTransform {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n transform(value: unknown, ...args: unknown[]): unknown {\n const notFound = 'Not found';\n switch (value) {\n case AccuracyStatus.ACCURACY_STATUS_UNKNOWN:\n return notFound;\n case AccuracyStatus.ACCURACY_STATUS_NOT_FOUND:\n return notFound;\n case AccuracyStatus.ACCURACY_STATUS_NOT_AVAILABLE:\n return 'Source does not have reporting';\n case AccuracyStatus.ACCURACY_STATUS_ACCURATE:\n return 'Accurate';\n case AccuracyStatus.ACCURACY_STATUS_INACCURATE:\n return `Possible errors`;\n }\n return null;\n }\n}\n\nexport interface AccuracyText {\n Card: string;\n Table: string;\n Sidebar: string;\n}\n\nexport const ListingAccuracyText: Record = {\n [AccuracyStatus.ACCURACY_STATUS_UNKNOWN]: {\n Card: 'LISTING_SYNC.LSP_ADDON.COLUMNS.ACCURACY.LISTING_NOT_FOUND',\n Table: 'LISTING_SYNC.LSP_ADDON.COLUMNS.ACCURACY.NOT_FOUND',\n Sidebar: 'LISTING_SYNC.LSP_ADDON.COLUMNS.ACCURACY.NOT_FOUND',\n },\n [AccuracyStatus.ACCURACY_STATUS_NOT_AVAILABLE]: {\n Card: 'LISTING_SYNC.LSP_ADDON.COLUMNS.ACCURACY.NO_REPORTING',\n Table: 'LISTING_SYNC.LSP_ADDON.COLUMNS.ACCURACY.NO_REPORTING',\n Sidebar: 'LISTING_SYNC.LSP_ADDON.COLUMNS.ACCURACY.NO_REPORTING',\n },\n [AccuracyStatus.ACCURACY_STATUS_ACCURATE]: {\n Card: 'LISTING_SYNC.LSP_ADDON.COLUMNS.ACCURACY.ACCURATE',\n Table: 'LISTING_SYNC.LSP_ADDON.COLUMNS.ACCURACY.ACCURATE',\n Sidebar: 'LISTING_SYNC.LSP_ADDON.COLUMNS.ACCURACY.ACCURATE_LISTING',\n },\n [AccuracyStatus.ACCURACY_STATUS_INACCURATE]: {\n Card: 'LISTING_SYNC.LSP_ADDON.COLUMNS.ACCURACY.FOUND_WITH_ERRORS',\n Table: 'LISTING_SYNC.LSP_ADDON.COLUMNS.ACCURACY.POSSIBLE_ERRORS',\n Sidebar: 'LISTING_SYNC.LSP_ADDON.COLUMNS.ACCURACY.FOUND_WITH_ERRORS',\n },\n [AccuracyStatus.ACCURACY_STATUS_NOT_FOUND]: {\n Card: 'LISTING_SYNC.LSP_ADDON.COLUMNS.ACCURACY.LISTING_NOT_FOUND',\n Table: 'LISTING_SYNC.LSP_ADDON.COLUMNS.ACCURACY.NOT_FOUND',\n Sidebar: 'LISTING_SYNC.LSP_ADDON.COLUMNS.ACCURACY.NOT_FOUND',\n },\n};\n","import { Component, Inject } from '@angular/core';\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\n\n@Component({\n selector: 'local-seo-sync-info-modal',\n templateUrl: './sync-info-modal.component.html',\n styleUrls: ['./sync-info-modal.component.scss'],\n})\nexport class SyncInfoModalComponent {\n readonly GOOGLE_BUSINESS_PROFILE = 'Google Business Profile';\n readonly FACEBOOK = 'Facebook';\n readonly INSTAGRAM = 'Instagram';\n readonly TWITTER = 'X (Formerly Twitter)';\n readonly BING = 'Bing';\n source: string;\n\n constructor(@Inject(MAT_DIALOG_DATA) public data: any) {\n this.source = data.source;\n }\n}\n","\n \n \n \n \n \n\n\n\n \n \n \n {{ 'LISTING_SYNC.LS_FREE_ADDON.GOOGLE_MY_BUSINESS.TOOLTIP.TITLE' | translate }}\n \n \n
\n \n {{ 'LISTING_SYNC.LS_FREE_ADDON.GOOGLE_MY_BUSINESS.TOOLTIP.TEXT' | translate }}\n
\n

\n {{ 'LISTING_SYNC.LS_FREE_ADDON.COMMON_TOOLTIP.LOCATION_HEADER' | translate }}\n

\n
\n
    \n
  • \n {{ 'LISTING_SYNC.LS_FREE_ADDON.COMMON_TOOLTIP.BUSINESS_NAME' | translate }}\n
  • \n
  • \n {{ 'LISTING_SYNC.LS_FREE_ADDON.COMMON_TOOLTIP.ADDRESS' | translate }}\n
  • \n
  • \n {{ 'LISTING_SYNC.LS_FREE_ADDON.COMMON_TOOLTIP.PRIMARY_PHONE' | translate }}\n
  • \n
  • \n {{ 'LISTING_SYNC.LS_FREE_ADDON.COMMON_TOOLTIP.WEBSITE' | translate }}\n
  • \n
  • \n {{ 'LISTING_SYNC.LS_FREE_ADDON.COMMON_TOOLTIP.HOURS_AND_SPECIAL_HOURS' | translate }}\n
  • \n
  • \n {{ 'LISTING_SYNC.LS_FREE_ADDON.COMMON_TOOLTIP.GOOGLE_ATTRIBUTES' | translate }}\n
  • \n
  • \n {{ 'LISTING_SYNC.LS_FREE_ADDON.COMMON_TOOLTIP.LONG_DESCRIPTION' | translate }}\n
  • \n
\n
\n

\n {{ 'LISTING_SYNC.LS_FREE_ADDON.COMMON_TOOLTIP.MEDIA_HEADER' | translate }}\n

\n
    \n
  • \n {{ 'LISTING_SYNC.LS_FREE_ADDON.COMMON_TOOLTIP.IMAGE_TIP_FORMAT' | translate }}\n
  • \n
  • \n {{ 'LISTING_SYNC.LS_FREE_ADDON.COMMON_TOOLTIP.IMAGE_TIP_SIZE' | translate }}\n
  • \n
  • \n \n {{ 'LISTING_SYNC.LS_FREE_ADDON.COMMON_TOOLTIP.LOGO' | translate }}\n \n
  • \n
      \n
    • \n {{ 'LISTING_SYNC.LS_FREE_ADDON.COMMON_TOOLTIP.IMAGE_TIP_RECOMMENDED_RESOLUTION_LOGO' | translate }}\n
    • \n
    \n
  • \n \n {{ 'LISTING_SYNC.LS_FREE_ADDON.COMMON_TOOLTIP.PRIMARY_PHOTO' | translate }}\n \n
  • \n
      \n
    • \n {{\n 'LISTING_SYNC.LS_FREE_ADDON.COMMON_TOOLTIP.IMAGE_TIP_RECOMMENDED_ASPECT_RATIO_PRIMARY_PHOTO' | translate\n }}\n
    • \n
    • \n {{\n 'LISTING_SYNC.LS_FREE_ADDON.COMMON_TOOLTIP.IMAGE_TIP_RECOMMENDED_RESOLUTION_PRIMARY_PHOTO' | translate\n }}\n
    • \n
    • \n {{ 'LISTING_SYNC.LS_FREE_ADDON.COMMON_TOOLTIP.IMAGE_TIP_QUALITY' | translate }}\n
    • \n
    \n
\n
\n
\n
\n
\n\n\n \n \n \n {{ 'LISTING_SYNC.LS_FREE_ADDON.FACEBOOK.TOOLTIP.TITLE' | translate }}\n \n \n
\n \n {{ 'LISTING_SYNC.LS_FREE_ADDON.FACEBOOK.TOOLTIP.TEXT' | translate }}\n
\n
    \n
  • \n {{ 'LISTING_SYNC.LS_FREE_ADDON.COMMON_TOOLTIP.ADDRESS' | translate }}\n
  • \n
  • \n {{ 'LISTING_SYNC.LS_FREE_ADDON.COMMON_TOOLTIP.PRIMARY_PHONE' | translate }}\n
  • \n
  • \n {{ 'LISTING_SYNC.LS_FREE_ADDON.COMMON_TOOLTIP.WEBSITE' | translate }}\n
  • \n
  • \n {{ 'LISTING_SYNC.LS_FREE_ADDON.COMMON_TOOLTIP.HOURS' | translate }}\n
  • \n
  • \n {{ 'LISTING_SYNC.LS_FREE_ADDON.COMMON_TOOLTIP.PAYMENT' | translate }}\n
  • \n
  • \n \n
  • \n
  • \n {{ 'LISTING_SYNC.LS_FREE_ADDON.COMMON_TOOLTIP.LONG_DESCRIPTION' | translate }}\n
  • \n
\n
\n
\n
\n
\n\n\n \n \n \n {{ 'LISTING_SYNC.LS_FREE_ADDON.INSTAGRAM.TOOLTIP.TITLE' | translate }}\n \n \n
\n \n {{ 'LISTING_SYNC.LS_FREE_ADDON.INSTAGRAM.TOOLTIP.TEXT' | translate }}\n
\n
    \n
  • \n {{ 'LISTING_SYNC.LS_FREE_ADDON.COMMON_TOOLTIP.ADDRESS' | translate }}\n
  • \n
\n
\n
\n
\n
\n\n\n \n \n \n {{ 'LISTING_SYNC.LS_FREE_ADDON.TWITTER.TOOLTIP.TITLE' | translate }}\n \n \n
\n \n {{ 'LISTING_SYNC.LS_FREE_ADDON.TWITTER.TOOLTIP.TEXT' | translate }}\n
\n
    \n
  • \n {{ 'LISTING_SYNC.LS_FREE_ADDON.TWITTER.TOOLTIP.ADDRESS' | translate }}\n
  • \n
  • \n {{ 'LISTING_SYNC.LS_FREE_ADDON.COMMON_TOOLTIP.WEBSITE' | translate }}\n
  • \n
  • \n \n
  • \n
  • \n {{ 'LISTING_SYNC.LS_FREE_ADDON.TWITTER.TOOLTIP.SHORT_DESC' | translate }}\n
  • \n
\n
\n
\n
\n
\n\n\n \n \n \n {{ 'LISTING_SYNC.PRIMARY_SOURCES.BING.TOOLTIP.TITLE' | translate }}\n \n \n
\n \n {{ 'LISTING_SYNC.PRIMARY_SOURCES.BING.TOOLTIP.TEXT' | translate }}\n
\n
    \n
  • \n {{ 'LISTING_SYNC.LS_FREE_ADDON.COMMON_TOOLTIP.ADDRESS' | translate }}\n
  • \n
  • \n {{ 'LISTING_SYNC.LS_FREE_ADDON.COMMON_TOOLTIP.WEBSITE' | translate }}\n
  • \n
  • \n \n
  • \n
  • \n {{ 'LISTING_SYNC.PRIMARY_SOURCES.BING.ATTRIBUTES' | translate }}\n
  • \n
  • \n {{ 'LISTING_SYNC.LS_FREE_ADDON.COMMON_TOOLTIP.PRIMARY_PHONE' | translate }}\n
  • \n
  • \n {{ 'LISTING_SYNC.PRIMARY_SOURCES.BING.HOURS' | translate }}\n
  • \n
\n
\n
\n
\n
\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'local-seo-source-name-icon',\n templateUrl: './icon.component.html',\n styleUrls: ['./icon.component.scss'],\n})\nexport class IconComponent {\n @Input() iconUrl: string;\n @Input() name: string;\n @Input() iconSize = 38;\n\n getHeightStyle(): { [klass: string]: any } {\n return {\n height: `${this.iconSize}px`,\n lineHeight: `${this.iconSize}px`,\n };\n }\n}\n","\n \"{{\n\n\n\n
\n \n
\n
\n","import { HttpErrorResponse } from '@angular/common/http';\nimport { Component, EventEmitter, Inject, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { TranslateService } from '@ngx-translate/core';\nimport { ListingProductsApiService, SocialService, UpdateVendorSyncFlagRequest } from '@vendasta/listing-products';\nimport {\n AccuracyStatus,\n ListingSyncProApiService as ListingSyncProApiServiceSDK,\n SetSelectedSocialServiceRequest,\n SourceAccuracy,\n} from '@vendasta/listing-sync-pro';\nimport { ForceRefreshListingRequest, ListingApiService } from '@vendasta/reputation';\nimport { BehaviorSubject, EMPTY, Observable, Subscription, combineLatest } from 'rxjs';\nimport { catchError, switchMap } from 'rxjs/operators';\nimport { DisconnectServiceModalComponent } from '../../../disconnect-service-modal/disconnect-service-modal.component';\nimport { AGIDTOKEN, SyncingDetails } from '../../../local-seo';\nimport { ListingSyncService } from '../../listing-sync.service';\nimport {\n DIRECT_SUBMIT_SOURCES,\n DIRECT_SUBMIT_SOURCE_TO_VENDOR_ID,\n DIRECT_SUBMIT_WITHOUT_ACCOUNT_SOURCES,\n getSyncStatusText,\n} from '../../primary-sources/constants';\nimport { ListingAccuracyText } from '../columns/presence-accuracy/accuracy-text.pipe';\nimport { SyncInfoModalComponent } from '../sync-info-modal/sync-info-modal.component';\n\nconst SocialServiceSourceToMSType: Record = {\n 10010: 'GP_USER',\n 10050: 'FB_PAGE',\n 10060: 'TW_USER',\n 11610: 'FB_PAGE',\n};\n\nconst SourceToInfoKey: Record = {\n 10010: 'Google Business Profile',\n 10050: 'Facebook',\n 10060: 'X (Formerly Twitter)',\n 11610: 'Instagram',\n 10020: 'Bing',\n};\n\n@Component({\n selector: 'local-seo-listing-sidebar',\n templateUrl: './listing-sidebar.component.html',\n styleUrls: ['./listing-sidebar.component.scss'],\n})\nexport class ListingSidebarComponent implements OnInit, OnDestroy {\n @Input() iconUrl: string;\n @Input() listingUrl: string;\n @Input() profileUrl: string;\n @Input() name: string;\n @Input() accuracy: SourceAccuracy;\n @Input() sourceSupportsListings: boolean;\n @Input() ssid: string;\n @Input() sourceId: number;\n @Input() socialServiceSyncing: boolean;\n @Input() clientTags: string[];\n @Input() connectLink: string;\n @Input() listingId: string;\n @Input() accountName: string;\n @Input() accountImageUrl: string;\n @Input() additionalSocialServices: SocialService[];\n @Input() showLSPCTA: boolean;\n @Input() lspActive: boolean;\n @Input() syncingDetails: SyncingDetails;\n @Input() disableActions: boolean;\n @Input() topPadding = 0;\n @Output() retry = new EventEmitter();\n @Output() syncStatusLoading = new EventEmitter();\n @Output() closed: EventEmitter = new EventEmitter();\n @Output() upgrade: EventEmitter = new EventEmitter();\n\n accuracyText = ListingAccuracyText;\n loadingChanges$$: BehaviorSubject = new BehaviorSubject(false);\n subscriptions: Subscription[] = [];\n selectedSSID: string;\n\n constructor(\n @Inject(AGIDTOKEN) private agid$: Observable,\n private translate: TranslateService,\n private listingSyncService: ListingSyncService,\n private dialog: MatDialog,\n private router: Router,\n private route: ActivatedRoute,\n private reputationService: ListingApiService,\n private snackBar: MatSnackBar,\n private listingSyncProApiServiceSDK: ListingSyncProApiServiceSDK,\n private listingProductsService: ListingProductsApiService,\n ) {}\n\n ngOnInit(): void {\n this.selectedSSID = this.ssid;\n }\n\n syncStatusText(): string {\n return getSyncStatusText(\n this.translate,\n this.sourceId,\n this.name,\n this.listingUrl && this.listingUrl.length > 0,\n this.accuracy?.status === AccuracyStatus.ACCURACY_STATUS_ACCURATE,\n (this.ssid && this.ssid.length > 0) || this.canSyncWithoutAccount(),\n this.socialServiceSyncing,\n false,\n 0,\n );\n }\n\n accuracySidebarBadgeColor(): string {\n if (this.accuracy?.status === AccuracyStatus.ACCURACY_STATUS_ACCURATE) {\n return 'green';\n }\n return 'yellow';\n }\n\n isDirectSubmitSource(): boolean {\n return DIRECT_SUBMIT_SOURCES.find((id) => id === this.sourceId) !== undefined;\n }\n\n canSyncWithoutAccount(): boolean {\n return DIRECT_SUBMIT_WITHOUT_ACCOUNT_SOURCES.find((id) => id === this.sourceId) !== undefined;\n }\n\n public connectSocialService(): void {\n if (!this.ssid) {\n window.location.href = this.connectLink;\n }\n }\n\n public updateSyncing(newSyncState: boolean): void {\n this.loadingChanges$$.next(true);\n this.syncStatusLoading.emit(true);\n\n if (this.canSyncWithoutAccount()) {\n const vendorID = DIRECT_SUBMIT_SOURCE_TO_VENDOR_ID[this.sourceId];\n this.subscriptions.push(\n this.agid$\n .pipe(\n switchMap((agid) =>\n this.listingProductsService.updateVendorSyncFlag(\n new UpdateVendorSyncFlagRequest({\n businessId: agid,\n vendorId: vendorID,\n syncing: newSyncState,\n }),\n ),\n ),\n )\n .subscribe(() => {\n this.snackBar.open(this.translate.instant('LISTING_SYNC.SOURCE_MENU.REFRESH_SYNCING_SUCCESS'), '', {\n duration: 5000,\n });\n this.retry.emit();\n this.loadingChanges$$.next(false);\n this.syncStatusLoading.emit(false);\n this.listingSyncService.getListingData$(true);\n }),\n );\n }\n\n const msType = SocialServiceSourceToMSType[this.sourceId];\n if (!msType || !this.ssid) {\n return;\n }\n const ssid = newSyncState ? this.ssid : '';\n this.subscriptions.push(\n this.agid$\n .pipe(\n switchMap((agid) =>\n this.listingSyncService.updateSyncStatus$(`/edit/account/${agid}/listing-sync/?service=${msType}`, ssid),\n ),\n )\n .subscribe(() => {\n this.snackBar.open(this.translate.instant('LISTING_SYNC.SOURCE_MENU.REFRESH_SYNCING_SUCCESS'), '', {\n duration: 5000,\n });\n this.retry.emit();\n this.loadingChanges$$.next(false);\n this.syncStatusLoading.emit(false);\n this.listingSyncService.getListingData$(true);\n }),\n );\n }\n\n disconnectService(): void {\n const url = this.sourceId === 10010 ? '/_ajax/v1/disconnect-gmb-location/' : '/_ajax/v1/disconnect-social-service/';\n this.subscriptions.push(\n this.dialog\n .open(DisconnectServiceModalComponent, {\n data: {\n source: this.name,\n },\n })\n .afterClosed()\n .subscribe((shouldDisconnect: boolean) => {\n if (shouldDisconnect) {\n this.listingSyncService\n .disconnectService$(url, this.ssid, this.clientTags)\n .subscribe(() => window.location.reload());\n }\n }),\n );\n }\n\n openSyncInfoModal(): void {\n this.dialog.open(SyncInfoModalComponent, {\n data: {\n source: SourceToInfoKey[this.sourceId],\n },\n });\n }\n\n refreshListing(): void {\n if (!this.listingId) {\n this.snackBar.open('No listing found', '', { duration: 5000 });\n return;\n }\n this.subscriptions.push(\n this.agid$\n .pipe(\n switchMap((agid) =>\n this.reputationService.forceRefreshListing(\n new ForceRefreshListingRequest({\n accountGroupId: agid,\n listingId: this.listingId,\n sourceId: this.sourceId,\n }),\n ),\n ),\n catchError((err: HttpErrorResponse) => {\n const message = err.error?.message ? err.error.message : 'Unknown error';\n this.snackBar.open(\n this.translate.instant('LISTING_SYNC.SOURCE_MENU.REFRESH_LISTING_FAILURE') + `: ${message}`,\n '',\n { politeness: 'assertive', duration: 5000 },\n );\n return EMPTY;\n }),\n )\n .subscribe(() => {\n this.snackBar.open(this.translate.instant('LISTING_SYNC.SOURCE_MENU.REFRESH_LISTING_SUCCESS'), '', {\n duration: 5000,\n });\n }),\n );\n }\n\n setSelectedSocialService(): void {\n this.loadingChanges$$.next(true);\n this.syncStatusLoading.emit(true);\n const msType = SocialServiceSourceToMSType[this.sourceId];\n\n this.subscriptions.push(\n this.agid$\n .pipe(\n switchMap((agid) => {\n const req = {\n businessId: agid,\n ssid: this.selectedSSID,\n sourceId: this.sourceId.toString(),\n sourceName: this.name,\n };\n return combineLatest([\n this.listingSyncProApiServiceSDK.setSelectedSocialService(req),\n this.listingSyncService.updateSyncStatus$(`/edit/account/${agid}/listing-sync/?service=${msType}`, ''),\n ]);\n }),\n catchError((err: HttpErrorResponse) => {\n const message = err.error?.message ? err.error.message : 'Unknown error';\n this.snackBar.open(\n this.translate.instant('LISTING_SYNC.SOURCE_MENU.UPDATE_SERVICE_FAILURE') + `: ${message}`,\n '',\n { politeness: 'assertive', duration: 5000 },\n );\n return EMPTY;\n }),\n )\n .subscribe(() => {\n this.snackBar.open(this.translate.instant('LISTING_SYNC.SOURCE_MENU.UPDATE_SERVICE_SUCCESS'), '', {\n duration: 5000,\n });\n this.retry.emit();\n this.loadingChanges$$.next(false);\n this.syncStatusLoading.emit(false);\n this.listingSyncService.getListingData$(true);\n }),\n );\n }\n\n navigateToListingProfile(): void {\n this.router.navigate(['../listing-profile'], {\n queryParamsHandling: 'preserve',\n relativeTo: this.route,\n });\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach((sub) => sub.unsubscribe());\n }\n}\n","\n \n \n
\n \n \n {{ name }}\n open_in_new\n \n
\n {{ name }}\n
\n
\n \n
\n
\n \n \n
\n
{{ 'LISTING_SYNC.COLUMN_HEADERS.CONNECTED_ACCOUNT' | translate }}
\n
\n \n
\n \n \n {{ accountName }}\n \n
\n {{ accountName }}\n
\n
\n
\n \n \n \n
\n \n \n {{ accountName }}\n \n
\n {{ accountName }}\n
\n
\n
\n \n
\n \n \n {{ service.name }}\n \n
\n {{ service.name }}\n
\n
\n
\n
\n
\n \n
\n
\n
{{ 'LISTING_SYNC.LSP_ADDON.COLUMNS.ACCURACY.TITLE' | translate }}
\n \n
{{ accuracyText[accuracy?.status]?.Sidebar | translate }}
\n
\n
\n \n
\n \n
\n {{ 'LISTING_SYNC.LSP_ADDON.COLUMNS.ACCURACY.NOT_AVAILABLE' | translate }}\n
\n
\n
\n \n
\n \n
\n {{ 'LISTING_SYNC.LSP_ADDON.COLUMNS.ACCURACY.SEARCHING' | translate }}\n
\n
\n \n \n
\n {{ 'LISTING_SYNC.LSP_ADDON.COLUMNS.ACCURACY.WARNING' | translate }}\n {{ 'NAVBAR.LISTING_PROFILE' | translate }}\n
\n
\n \n
\n business\n
\n \n {{ accuracy.anchorData?.companyName || '--' }}\n \n
\n
\n
\n room\n
\n
\n {{ accuracy.anchorData?.address || '--' }}\n
\n
\n \n {{ accuracy.anchorData?.city || '--' }},\n \n \n {{ accuracy.anchorData?.state || '--' }},\n \n \n {{ accuracy.anchorData?.country || '--' }}\n \n
\n
\n {{ accuracy.anchorData?.zip || '--' }}\n
\n
\n
\n
\n phone\n
\n \n {{ accuracy.anchorData?.phone || '--' }}\n \n
\n
\n
\n link\n
\n \n {{ accuracy.anchorData?.website || '--' }}\n \n
\n
\n
\n \n \n \n {{ syncStatusText() }}\n \n \n {{ syncStatusText() }}\n \n \n {{ 'LISTING_SYNC.SYNCING_STATUS.SYNC_TO' | translate }} {{ name }}\n \n \n More\n \n \n \n\n \n \n \n link_off\n {{ 'COMMON.DISCONNECT' | translate }}\n \n \n sync_disabled\n {{ 'LISTING_SYNC.LSP_ADDON.COLUMNS.SYNC_STATUS.TURN_OFF_SYNCING' | translate }}\n \n \n \n {{\n sourceId !== 10060\n ? ('LISTING_SYNC.SOURCE_MENU.SYNCING_INFO_LINK' | translate: { source: name })\n : ('LISTING_SYNC.SOURCE_MENU.SYNCING_INFO_LINK_X' | translate: { source: name })\n }}\n \n\n \n \n
\n
{{ 'LISTING_SYNC.SOURCE_MENU.DETAILS' | translate }}
\n
\n
{{ syncingDetails.explanation | translate }}
\n\n 0\">\n
    \n
  • {{ warning | translate }}
  • \n
\n
\n\n 0\">\n
    \n
  • {{ error | translate }}
  • \n
\n
\n
\n
\n
\n\n\n {{ 'LISTING_SYNC.LSP_ADDON.COLUMNS.ACCURACY.NO_REPORTING' | translate }}\n\n\n\n \n\n","import { Injectable } from '@angular/core';\nimport { CheckboxFilterControl, FilterGroup, SearchFilterControl } from '@vendasta/va-filter2';\n\n@Injectable()\nexport class ListingSyncTableFilterService {\n filters: FilterGroup = new FilterGroup('listings_table');\n constructor() {\n this.filters\n .addToolbarSection(new SearchFilterControl('search'))\n .addSection('LISTING_SYNC.TABLE_FILTERS.SYNC_STATUS_FILTER.GROUP_LABEL', [\n new CheckboxFilterControl(\n 'syncing_available',\n 'LISTING_SYNC.TABLE_FILTERS.SYNC_STATUS_FILTER.SYNCING_AVAILABLE',\n false,\n {\n appliedValueMapper: (name) => ({\n name,\n label: 'LISTING_SYNC.TABLE_FILTERS.SYNC_STATUS_FILTER.SYNCING_AVAILABLE',\n }),\n },\n ),\n new CheckboxFilterControl(\n 'manual_update_only',\n 'LISTING_SYNC.TABLE_FILTERS.SYNC_STATUS_FILTER.MANUAL_UPDATE_ONLY',\n false,\n {\n appliedValueMapper: (name) => ({\n name,\n label: 'LISTING_SYNC.TABLE_FILTERS.SYNC_STATUS_FILTER.MANUAL_UPDATE_ONLY',\n }),\n },\n ),\n ]);\n }\n}\n","import { Component, Inject } from '@angular/core';\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\n\n@Component({\n selector: 'local-seo-listing-sync-pro-error-messages',\n templateUrl: './lsp-error-messages.component.html',\n styleUrls: ['./lsp-error-messages.component.scss'],\n})\nexport class ListingSyncProErrorDialogComponent {\n sourceName: string;\n explanation: string;\n warnings: string[];\n errors: string[];\n\n constructor(@Inject(MAT_DIALOG_DATA) public data: any) {\n this.sourceName = data.sourceName;\n this.explanation = data.explanation;\n this.warnings = data.warnings;\n this.errors = data.errors;\n }\n}\n","

{{ sourceName }}

\n\n\n
{{ explanation | translate }}
\n\n 0\">\n

{{ 'LISTING_SYNC.LSP_ADDON.FIELDS_TO_BE_SYNCED' | translate }}:

\n
    \n
  • {{ warning | translate }}
  • \n
\n
\n\n 0\">\n
{{ error | translate }}
\n
\n
\n","import { Component, Input, ViewChild } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { MatSidenav } from '@angular/material/sidenav';\nimport { MatSlideToggleChange } from '@angular/material/slide-toggle';\nimport { TranslateService } from '@ngx-translate/core';\nimport { StatusCode } from '@vendasta/listing-sync-pro';\nimport { EditionUpgradeAction } from '@vendasta/marketplace-apps';\nimport { RetailPrice } from '@vendasta/marketplace-packages';\nimport { ProductAnalyticsService } from '@vendasta/product-analytics';\nimport { UpgradeCTADialogComponent, UpgradeCTADialogConfig } from '@vendasta/uikit';\nimport { VaFilteredMatTableComponent, VaFilteredMatTableService, VaTableSortService } from '@vendasta/va-filter2-table';\nimport moment from 'moment';\nimport { Observable, combineLatest } from 'rxjs';\nimport { filter, map, shareReplay, switchMap, take } from 'rxjs/operators';\nimport { DisconnectServiceModalComponent } from '../../disconnect-service-modal/disconnect-service-modal.component';\nimport { UpgradeCTADialogService, UpgradeRedirectItem } from '../../upgrade-cta-dialog/upgrade-cta-dialog.service';\nimport { ListingSyncService } from '../listing-sync.service';\nimport { ListingsTableRowEvent } from './columns/column.directive';\nimport { ListingSidebarComponent } from './listing-sidebar/listing-sidebar.component';\nimport { ListingSyncTableFilterService } from './listing-sync-table-filter.service';\nimport { LBListingSourceTableEntry, ListingSyncTableService } from './listing-sync-table.service';\nimport { ListingSyncProErrorDialogComponent } from './lsp-error-messages/lsp-error-messages.component';\nimport { APP_ID } from '../../local-seo';\n\n@Component({\n selector: 'local-seo-listing-sync-table',\n templateUrl: './listing-sync-table.component.html',\n styleUrls: ['./listing-sync-table.component.scss'],\n providers: [VaTableSortService, VaFilteredMatTableService],\n})\nexport class ListingSyncTableComponent {\n @Input() sidebarTopPadding = 0;\n @ViewChild('table') table: VaFilteredMatTableComponent;\n\n @Input() lspPurchaseDate: string;\n @ViewChild('sidenav') sidenav: MatSidenav;\n @ViewChild('listingSidebar') listingSidebar: ListingSidebarComponent;\n\n showLSPUpgradeCTA$: Observable;\n lspActive$: Observable;\n dialogRef: MatDialogRef;\n\n sidebarData: LBListingSourceTableEntry;\n\n constructor(\n public listingSyncTableService: ListingSyncTableService,\n private dialog: MatDialog,\n private upgradeDialogService: UpgradeCTADialogService,\n private listingSyncService: ListingSyncService,\n private translateService: TranslateService,\n private readonly analyticsService: ProductAnalyticsService,\n private filterService: ListingSyncTableFilterService,\n ) {\n this.lspActive$ = this.listingSyncService.lspActive$;\n this.showLSPUpgradeCTA$ = this.listingSyncService\n .getListingData$()\n .pipe(map((data) => !data.lspActive && data.lspUpgradePathEnabled));\n }\n\n private showCheckBackSoonMessage(): boolean {\n const DAYS_TO_WAIT = 2; // only show IN_PROGRESS_CHECK_BACK_SOON_MESSAGE message for first two days, otherwise show warnings\n const startOfToday = moment().startOf('day');\n return startOfToday.diff(this.lspPurchaseDate, 'days') < DAYS_TO_WAIT;\n }\n\n handleRowClick(event: LBListingSourceTableEntry): void {\n this.sidebarData = event;\n this.sidenav.open();\n }\n\n handleCellEvent(event: ListingsTableRowEvent): void {\n if (event.openUpgradeDialog) {\n this.OpenUpgradeDialog();\n }\n if (event.toggleSyncEvent) {\n const msg = event.toggleSyncEvent;\n this.toggleSync(msg.event, msg.updateSyncLink, msg.ssid, msg.serviceType);\n }\n if (event.disconnectServiceEvent) {\n const msg = event.disconnectServiceEvent;\n this.disconnectServiceModal(msg.sourceName, msg.url, msg.ssid, msg.clientTags);\n }\n if (!!event.clickSyncStatus && !!event.element) {\n this.clickSyncStatus(event.element);\n }\n }\n\n disconnectServiceModal(sourceName: string, url: string, ssid: string, clientTags: string[]): void {\n this.dialog\n .open(DisconnectServiceModalComponent, {\n data: {\n source: sourceName,\n },\n })\n .afterClosed()\n .subscribe((shouldDisconnect: boolean) => {\n if (shouldDisconnect) {\n this.listingSyncService.disconnectService$(url, ssid, clientTags).subscribe(() => window.location.reload());\n }\n });\n }\n\n toggleSync(event: MatSlideToggleChange, updateSyncLink: string, ssid: string, serviceType: string): void {\n if (!event.checked) {\n ssid = '';\n }\n\n event.source.setDisabledState(true);\n this.listingSyncService.updateSyncStatus$(updateSyncLink, ssid, serviceType).subscribe(() => {\n event.source.setDisabledState(false);\n this.filterService.filters.enable();\n });\n\n this.analyticsService.trackToggle('toggle-sync', event.checked);\n }\n\n clickSyncStatus(source: LBListingSourceTableEntry): void {\n const defaultData = {\n sourceName: source.name,\n explanation: '',\n warnings: [],\n errors: [],\n };\n if (source.statusCode === StatusCode.STATUS_CODE_SYNCING_WITH_WARNINGS) {\n this.dialog.open(ListingSyncProErrorDialogComponent, {\n data: this.showCheckBackSoonMessage()\n ? { ...defaultData, explanation: 'LISTING_SYNC.LSP_ADDON.IN_PROGRESS_CHECK_BACK_SOON_MESSAGE' }\n : {\n ...defaultData,\n explanation: 'LISTING_SYNC.LSP_ADDON.SYNCING_WITH_WARNINGS_MESSAGE',\n warnings: source.fieldsWithWarnings,\n },\n });\n } else if (source.statusCode === StatusCode.STATUS_CODE_HAS_ERRORS) {\n this.dialog.open(ListingSyncProErrorDialogComponent, {\n data: { ...defaultData, errors: source.errors },\n });\n } else if (source.statusCode === StatusCode.STATUS_CODE_IN_PROGRESS) {\n this.dialog.open(ListingSyncProErrorDialogComponent, {\n data: { ...defaultData, explanation: 'LISTING_SYNC.LSP_ADDON.IN_PROGRESS_CHECK_BACK_SOON_MESSAGE' },\n });\n }\n }\n\n OpenUpgradeDialog() {\n const editionChangeDetails$ = this.listingSyncService.addonID$.pipe(\n switchMap((addonID) => this.upgradeDialogService.getAddonUpgradeDetails$(addonID)),\n );\n const upgradePrice$: Observable = combineLatest([\n this.upgradeDialogService.partnerMarket$,\n this.listingSyncService.addonID$,\n editionChangeDetails$,\n ]).pipe(\n switchMap(([pmConfig, addonID, editionChangeDetails]) => {\n return this.upgradeDialogService.getUpgradePrice$(pmConfig, addonID, editionChangeDetails);\n }),\n shareReplay(1),\n );\n const formattedUpgradePrice$ = upgradePrice$.pipe(\n switchMap((upgradePrice) => this.upgradeDialogService.getFormattedRetailPrice$(upgradePrice)),\n );\n this.listingSyncService.addonID$\n .pipe(\n switchMap((addonID) =>\n combineLatest([\n upgradePrice$,\n formattedUpgradePrice$,\n editionChangeDetails$,\n this.upgradeDialogService.getCustomUpgradeModalContent$(addonID),\n ]).pipe(\n take(1),\n switchMap(([upgradePrice, formattedUpgradePrice, editionChangeDetails, customUpgradeModalContent]) => {\n const marketingPoints = [\n this.translateService.instant('LISTING_DISTRIBUTION.UPGRADE_MODAL.MARKETING_POINTS.LINE_1'),\n this.translateService.instant('LISTING_DISTRIBUTION.UPGRADE_MODAL.MARKETING_POINTS.LINE_2'),\n this.translateService.instant('LISTING_DISTRIBUTION.UPGRADE_MODAL.MARKETING_POINTS.LINE_3'),\n this.translateService.instant('LISTING_DISTRIBUTION.UPGRADE_MODAL.MARKETING_POINTS.LINE_4'),\n this.translateService.instant('LISTING_DISTRIBUTION.UPGRADE_MODAL.MARKETING_POINTS.LINE_5'),\n ];\n let ctaText =\n !!customUpgradeModalContent && customUpgradeModalContent.buttonText\n ? customUpgradeModalContent.buttonText\n : undefined;\n if (editionChangeDetails?.editionUpgradeAction && !ctaText) {\n switch (editionChangeDetails?.editionUpgradeAction) {\n case EditionUpgradeAction.EDITION_UPGRADE_ACTION_CONTACT_SALES:\n ctaText = this.translateService.instant('UPGRADE_DIALOG.PRICE.CONTACT_SALES');\n break;\n default:\n ctaText = this.translateService.instant('LISTING_SYNC.LSP_ADDON.UPGRADE_MODAL.BUTTON_TEXT');\n break;\n }\n }\n const dialogRef: UpgradeCTADialogConfig = {\n editionName: this.translateService.instant('LISTING_SYNC.LSP_ADDON.NAME'),\n imageText:\n !!customUpgradeModalContent && customUpgradeModalContent.titleText\n ? customUpgradeModalContent.titleText\n : this.translateService.instant('LISTING_SYNC.LSP_ADDON.UPGRADE_MODAL.IMAGE_TEXT'),\n imageUrl:\n !!customUpgradeModalContent && customUpgradeModalContent.imageUrl\n ? customUpgradeModalContent.imageUrl\n : `https://vstatic-prod.apigateway.co/listing-builder-client/assets/images/listing-sync-pro-upgrade-info.png`,\n keySellingPoints:\n !!customUpgradeModalContent && customUpgradeModalContent.sellingPoints\n ? customUpgradeModalContent.sellingPoints\n : marketingPoints,\n ctaText: ctaText || this.translateService.instant('LISTING_SYNC.LSP_ADDON.UPGRADE_MODAL.BUTTON_TEXT'),\n activeOrderPrimaryText: this.translateService.instant(\n 'LISTING_SYNC.LSP_ADDON.UPGRADE_MODAL.ACTIVE_ORDER_PRIMARY',\n ),\n activeOrderSecondaryText: this.translateService.instant(\n 'LISTING_SYNC.LSP_ADDON.UPGRADE_MODAL.ACTIVE_ORDER_SECONDARY',\n ),\n activeOrderImageUrl: `https://vstatic-prod.apigateway.co/listing-builder-client/assets/images/active-order.png`,\n upgradeNowText: this.upgradeDialogService.getUpgradeText(upgradePrice, editionChangeDetails),\n price: formattedUpgradePrice,\n frequency: this.upgradeDialogService.getFrequencyText(upgradePrice),\n };\n\n this.dialogRef = this.dialog.open(UpgradeCTADialogComponent, {\n data: dialogRef,\n });\n return this.dialogRef.afterClosed().pipe(\n filter((upgradeClicked) => !!upgradeClicked),\n switchMap(() => {\n const isCustomPackage =\n editionChangeDetails.editionUpgradeAction ==\n EditionUpgradeAction.EDITION_UPGRADE_ACTION_CUSTOM_ORDER;\n const item: UpgradeRedirectItem = isCustomPackage\n ? { packageId: editionChangeDetails.priceReferencePackageId }\n : { appId: APP_ID, addonId: addonID };\n return this.upgradeDialogService.buildBusinessCenterUpgradeRedirectInfo(\n item,\n editionChangeDetails.editionUpgradeAction,\n );\n }),\n );\n }),\n ),\n ),\n )\n .subscribe((redirectInfo) => {\n this.upgradeDialogService.sendToVbc(redirectInfo);\n });\n }\n}\n","
\n \n \n \n \n \n \n \n \n \n \n
\n","import { Component } from '@angular/core';\nimport { PopoverPositions } from '@vendasta/galaxy/popover';\nimport { ListingSyncService } from '../listing-sync.service';\nimport { Observable } from 'rxjs';\nimport { ListingsScoreSummaryData } from '../../local-seo';\n\n@Component({\n selector: 'local-seo-listing-score-summary-card',\n templateUrl: './listing-score-summary-card.component.html',\n styleUrls: ['./listing-score-summary-card.component.scss'],\n})\nexport class ListingScoreSummaryCardComponent {\n summaryData$: Observable;\n PopoverPositions = PopoverPositions;\n showPopover = false;\n\n constructor(private readonly listingSyncService: ListingSyncService) {\n this.summaryData$ = this.listingSyncService.listingsScoreSummaryData$;\n }\n\n showPopovers(): void {\n this.showPopover = true;\n }\n\n hidePopovers(): void {\n this.showPopover = false;\n }\n}\n","\n \n \n {{ 'LISTING_SYNC.LISTING_SCORE_SUMMARY_CARD.TITLE' | translate }}\n \n \n \n info_outline\n \n \n
\n {{ 'LISTING_SYNC.LISTING_SCORE_SUMMARY_CARD.LISTING_SCORE_TOOL_TIP' | translate }}\n
\n \n
\n
\n \n
\n \n
\n
\n
\n {{ data.listingScore }}\n
\n
\n
\n \n
\n
\n
{{ 'LISTING_SYNC.LISTING_SCORE_SUMMARY_CARD.STARTED_AT' | translate }}
\n
\n {{ data.originalListingScore }}\n
\n
\n
\n
{{ 'LISTING_SYNC.LISTING_SCORE_SUMMARY_CARD.INDUSTRY_AVERAGE' | translate }}
\n
\n {{ data.industryAverageListingsScore }}\n
\n
\n
\n
{{ 'LISTING_SYNC.LISTING_SCORE_SUMMARY_CARD.PERCENTILE' | translate }}
\n
\n {{ data.ninetyFifthPercentile }}\n
\n
\n
\n
\n \n \n
\n \n
\n
\n
\n","import { Component, Input } from '@angular/core';\n\n@Component({\n selector: 'local-seo-color-icon',\n templateUrl: './color-icon.component.html',\n styleUrls: ['./color-icon.component.scss'],\n})\nexport class ColorIconComponent {\n @Input() backgroundColor: 'green' | 'dark-green' | 'grey' | 'white' | 'default' = 'default';\n @Input() iconColor: 'green' | 'dark-green' | 'grey' | 'white' = 'white';\n @Input() icon = 'close';\n @Input() text: string;\n @Input() backgroundSize = 18;\n @Input() iconSize = 16;\n}\n","
\n \n \n check\n \n \n sync\n \n \n check_circle\n \n \n check_circle_outline\n \n \n close\n \n
\n
{{ text }}
\n\n","import { Component, Input } from '@angular/core';\n\nimport { SyncingProgressSummaryData } from '../../local-seo';\n\n@Component({\n selector: 'local-seo-listings-summary-card',\n templateUrl: './listings-summary-card.component.html',\n styleUrls: ['./listings-summary-card.component.scss'],\n})\nexport class ListingsSummaryCardComponent {\n @Input() data: SyncingProgressSummaryData;\n}\n","
\n
\n \n {{ data.syncedSourcesCount || 0 }}\n
\n
\n \n {{ data.syncInProgressSourcesCount || 0 }}\n
\n
\n \n {{ data.notSyncingSourcesCount || 0 }}\n
\n
\n","import { Component } from '@angular/core';\nimport { ListingSyncService } from '../listing-sync.service';\nimport { PopoverPositions } from '@vendasta/galaxy/popover';\nimport { Observable } from 'rxjs';\nimport { SyncingProgressSummaryData, SyncingProgressSyncLegendConfig } from '../../local-seo';\n\n@Component({\n selector: 'local-seo-syncing-progress-summary-card',\n templateUrl: './syncing-progress-summary-card.component.html',\n styleUrls: ['./syncing-progress-summary-card.component.scss'],\n})\nexport class SyncingProgressSummaryCardComponent {\n summaryData$: Observable;\n PopoverPositions = PopoverPositions;\n showPopover = false;\n\n syncingProgressLegendConfig = SyncingProgressSyncLegendConfig;\n\n constructor(private readonly listingSyncService: ListingSyncService) {\n this.summaryData$ = this.listingSyncService.syncingProgressSummaryData$;\n }\n\n showPopovers(): void {\n this.showPopover = true;\n }\n\n hidePopovers(): void {\n this.showPopover = false;\n }\n\n getSyncValueBgColor(data): string {\n if (!data.lspActive) {\n return 'not-syncing-grey';\n }\n\n const max = Math.max(\n data?.syncedSourcesCount || 0,\n data?.syncInProgressSourcesCount || 0,\n data?.notSyncingSourcesCount || 0,\n );\n\n switch (max) {\n case data?.syncedSourcesCount:\n return 'sync-green';\n case data?.syncInProgressSourcesCount:\n return 'syncing-green';\n case data?.notSyncingSourcesCount:\n return 'not-syncing-grey';\n default:\n return 'not-syncing-grey';\n }\n }\n}\n","\n \n \n \n {{ 'LISTING_SYNC.SYNCING_PROGRESS_SUMMARY_CARD.TITLE' | translate }}\n \n \n \n info_outline\n \n \n \n
\n \n {{ statusLegend.icon }}\n \n {{ statusLegend.name | translate }}\n |\n {{ statusLegend.description | translate }}\n
\n \n \n
\n
\n \n
\n
\n
\n {{ data.syncedSourcesCount || 0 }}/{{ data.totalSourcesCount }}\n
\n
\n \n
\n \n
\n \n
\n \n
\n
\n
\n","import { Component, Inject } from '@angular/core';\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\n\n@Component({\n selector: 'local-seo-connected-account-modal',\n templateUrl: './connected-account-modal.component.html',\n styleUrls: ['./connected-account-modal.component.scss'],\n})\nexport class ConnectedAccountModalComponent {\n sourceId: string;\n accountName: string;\n accountLink: string;\n sourceName: Record = {\n 10010: 'Google',\n 10050: 'Facebook',\n 10060: 'Twitter',\n };\n\n readonly GOOGLE_MY_BUSINESS = 'Google My Business';\n readonly FACEBOOK = 'Facebook';\n readonly TWITTER = 'Twitter';\n\n constructor(\n @Inject(MAT_DIALOG_DATA)\n public data: {\n sourceId: string;\n accountName: string;\n accountLink: string;\n },\n ) {\n this.sourceId = data.sourceId;\n this.accountName = data.accountName;\n this.accountLink = data.accountLink;\n }\n}\n","\n \n \n {{\n 'LISTING_SYNC.LS_FREE_ADDON.GOOGLE_MY_BUSINESS.ACTIVATE_DIALOG.TITLE'\n | translate : { name: sourceName[sourceId] }\n }}\n \n \n \n
\n {{\n 'LISTING_SYNC.LS_FREE_ADDON.GOOGLE_MY_BUSINESS.ACTIVATE_DIALOG.TEXT'\n | translate : { name: sourceName[sourceId], accountName: accountName }\n }}\n
\n
\n \n
\n \n \n
\n
\n
\n","import { Component, Inject } from '@angular/core';\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { MatSnackBar } from '@angular/material/snack-bar';\n\n@Component({\n selector: 'local-seo-signup-modal',\n templateUrl: './signup-modal.component.html',\n styleUrls: ['./signup-modal.component.scss'],\n})\nexport class SignupModalComponent {\n checkboxValue = false;\n\n constructor(\n @Inject(MAT_DIALOG_DATA) public data: any,\n private dialogRef: MatDialogRef,\n private snackBar: MatSnackBar,\n ) {}\n public closeDialog() {\n this.dialogRef.close('false');\n }\n\n public turnOnSync() {\n if (this.checkboxValue) {\n this.dialogRef.close('true');\n }\n this.snackBar.open('Please confirm your business serves customers at the business location', '', {\n duration: 5000,\n });\n }\n}\n","\n \n {{ 'LISTING_SYNC.PRIMARY_SOURCES.APPLE.TURN_ON_MODAL.TITLE' | translate }}\n \n
\n \n

\n {{ 'LISTING_SYNC.PRIMARY_SOURCES.APPLE.TURN_ON_MODAL.P1' | translate }}\n

\n

\n {{ 'LISTING_SYNC.PRIMARY_SOURCES.APPLE.TURN_ON_MODAL.P2' | translate }}\n

\n
\n
\n \n {{ 'LISTING_SYNC.PRIMARY_SOURCES.APPLE.TURN_ON_MODAL.SERVES_CUSTOMERS_AT_LOCATION_CHECKBOX' | translate }}\n \n
\n \n \n
\n
\n","import { Component, EventEmitter, Inject, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { ListingProductsApiService, SocialService, UpdateVendorSyncFlagRequest } from '@vendasta/listing-products';\nimport { SourceAccuracy } from '@vendasta/listing-sync-pro';\nimport { BehaviorSubject, Observable, Subscription } from 'rxjs';\nimport { switchMap } from 'rxjs/operators';\nimport { AGIDTOKEN, SyncingDetails } from '../../../local-seo';\nimport { ListingSyncService } from '../../listing-sync.service';\nimport { DIRECT_SUBMIT_SOURCE_TO_VENDOR_ID } from '../../primary-sources/constants';\nimport { ListingAccuracyText } from '../columns/presence-accuracy/accuracy-text.pipe';\nimport { SyncInfoModalComponent } from '../sync-info-modal/sync-info-modal.component';\nimport { SignupModalComponent } from './signup-modal/signup-modal.component';\n\n@Component({\n selector: 'local-seo-listing-signup-sidebar',\n templateUrl: './listing-signup-sidebar.component.html',\n styleUrls: ['./listing-signup-sidebar.component.scss'],\n})\nexport class ListingSignupSidebarComponent implements OnInit, OnDestroy {\n @Input() iconUrl: string;\n @Input() listingUrl: string;\n @Input() profileUrl: string;\n @Input() name: string;\n @Input() accuracy: SourceAccuracy;\n @Input() sourceSupportsListings: boolean;\n @Input() ssid: string;\n @Input() sourceId: number;\n @Input() socialServiceSyncing: boolean;\n @Input() clientTags: string[];\n @Input() connectLink: string;\n @Input() listingId: string;\n @Input() accountName: string;\n @Input() accountImageUrl: string;\n @Input() additionalSocialServices: SocialService[];\n @Input() showLSPCTA: boolean;\n @Input() lspActive: boolean;\n @Input() syncingDetails: SyncingDetails;\n @Input() disableActions: boolean;\n @Input() topPadding = 0;\n @Output() retry = new EventEmitter();\n @Output() syncStatusLoading = new EventEmitter();\n @Output() closed: EventEmitter = new EventEmitter();\n @Output() upgrade: EventEmitter = new EventEmitter();\n\n accuracyText = ListingAccuracyText;\n loadingChanges$$: BehaviorSubject = new BehaviorSubject(false);\n subscriptions: Subscription[] = [];\n selectedSSID: string;\n\n constructor(\n @Inject(AGIDTOKEN) private agid$: Observable,\n private listingSyncService: ListingSyncService,\n private dialog: MatDialog,\n private signUpDialog: MatDialog,\n private snackBar: MatSnackBar,\n private listingProductsService: ListingProductsApiService,\n ) {}\n\n ngOnInit(): void {\n this.selectedSSID = this.ssid;\n }\n\n public updateSyncing(newSyncState: boolean): void {\n this.loadingChanges$$.next(true);\n this.syncStatusLoading.emit(true);\n\n const vendorID = DIRECT_SUBMIT_SOURCE_TO_VENDOR_ID[this.sourceId];\n this.subscriptions.push(\n this.agid$\n .pipe(\n switchMap((agid) =>\n this.listingProductsService.updateVendorSyncFlag(\n new UpdateVendorSyncFlagRequest({\n businessId: agid,\n vendorId: vendorID,\n syncing: newSyncState,\n }),\n ),\n ),\n )\n .subscribe(() => {\n this.snackBar.open('Successfully signed up for Apple Business Connect', '', {\n duration: 5000,\n });\n this.retry.emit();\n this.loadingChanges$$.next(false);\n this.syncStatusLoading.emit(false);\n this.listingSyncService.getListingData$(true);\n }),\n );\n }\n\n public openSignUpModal(): void {\n const dialogRef = this.signUpDialog.open(SignupModalComponent, {});\n dialogRef.afterClosed().subscribe((result) => {\n if (result === 'true') {\n this.updateSyncing(true);\n }\n });\n }\n\n openSyncInfoModal(): void {\n this.dialog.open(SyncInfoModalComponent, {\n data: {\n source: 'Apple Business Connect',\n },\n });\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach((sub) => sub.unsubscribe());\n }\n}\n","\n \n \n
\n {{ name }}\n
\n \n
\n
\n \n \n \n \n \n \n \n
\n\n \n\n\n\n Signed up\n\n","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output, ViewChild } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { MatSidenav } from '@angular/material/sidenav';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Environment, EnvironmentService } from '@galaxy/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { AccuracyStatus } from '@vendasta/listing-sync-pro';\nimport { EditionUpgradeAction } from '@vendasta/marketplace-apps';\nimport { RetailPrice } from '@vendasta/marketplace-packages';\nimport { UpgradeCTADialogComponent, UpgradeCTADialogConfig } from '@vendasta/uikit';\nimport { BehaviorSubject, Observable, Subscription, combineLatest } from 'rxjs';\nimport { filter, shareReplay, switchMap, take } from 'rxjs/operators';\nimport { APP_ID, DEMO_PAID_EDITION, PROD_PAID_EDITION, SocialServiceSource } from '../../../local-seo';\nimport {\n UpgradeCTADialogService,\n appID,\n UpgradeRedirectItem,\n} from '../../../upgrade-cta-dialog/upgrade-cta-dialog.service';\nimport { ConnectedAccountModalComponent } from '../../connected-account-modal/connected-account-modal.component';\nimport { ListingAccuracyText } from '../../listing-sync-table/columns/presence-accuracy/accuracy-text.pipe';\nimport { ListingSidebarComponent } from '../../listing-sync-table/listing-sidebar/listing-sidebar.component';\nimport { DIRECT_SUBMIT_WITHOUT_ACCOUNT_SOURCES, StatusCodeColor, getSyncStatusText } from '../constants';\n\n@Component({\n selector: 'local-seo-primary-source',\n templateUrl: './primary-source.component.html',\n styleUrls: ['./primary-source.component.scss'],\n})\nexport class PrimarySourceComponent implements OnInit, OnDestroy {\n @Input() name: string;\n @Input() iconUrl: string;\n @Input() data$: Observable;\n @Input() locked: boolean;\n @Input() poweredByLSP: boolean;\n @Input() sidebarTopPadding = 0;\n @Output() retry = new EventEmitter();\n @ViewChild('sidenav') sidenav: MatSidenav;\n @ViewChild('listingSidebar') listingSidebar: ListingSidebarComponent;\n\n syncStatusloading$$: BehaviorSubject = new BehaviorSubject(false);\n syncStatusloading$ = this.syncStatusloading$$.asObservable();\n subscriptions: Subscription[] = [];\n dialogRef: MatDialogRef;\n\n accuracyText = ListingAccuracyText;\n\n syncStatusText(s: SocialServiceSource): string {\n let name = this.name;\n if (this.name === 'Apple (Coming soon)') {\n name = 'Apple';\n }\n return getSyncStatusText(\n this.translate,\n s.sourceId,\n name,\n s.listingUrl && s.listingUrl.length > 0,\n s.accuracy.status === AccuracyStatus.ACCURACY_STATUS_ACCURATE,\n (s.ssid && s.ssid.length > 0) || this.canSyncWithoutAccount(s.sourceId),\n s.isSyncing,\n this.locked,\n s.lspSyncStatus,\n );\n }\n\n canSyncWithoutAccount(sourceId: number): boolean {\n return DIRECT_SUBMIT_WITHOUT_ACCOUNT_SOURCES.find((id) => id === sourceId) !== undefined;\n }\n\n accuracyBadgeColor(socialService: SocialServiceSource): string {\n if (socialService.accuracy.status === AccuracyStatus.ACCURACY_STATUS_ACCURATE) {\n return 'green';\n }\n return 'grey';\n }\n\n syncBadgeColor(socialService: SocialServiceSource): string {\n if (socialService.lspSyncStatus > 0) {\n return StatusCodeColor(socialService.lspSyncStatus);\n }\n\n if (socialService.isSyncing) {\n return 'green';\n }\n return 'blue-solid';\n }\n\n keyOrder = ['companyName', 'address', 'city', 'state', 'zip', 'country', 'phone', 'website'];\n\n constructor(\n private translate: TranslateService,\n private route: ActivatedRoute,\n private router: Router,\n private dialog: MatDialog,\n private upgradeDialogService: UpgradeCTADialogService,\n private env: EnvironmentService,\n ) {}\n\n ngOnInit(): void {\n this.subscriptions.push(\n combineLatest([this.data$, this.route.queryParams]).subscribe(([data, params]) => {\n if (params['service'] && serviceToSourceID(params['service']) === data.sourceId) {\n this.dialog\n .open(ConnectedAccountModalComponent, {\n data: {\n sourceId: data.sourceId,\n accountName: data.name,\n },\n })\n .afterClosed()\n .subscribe((shouldSync: boolean) => {\n this.listingSidebar.updateSyncing(shouldSync);\n this.router.navigate([this.router.url.split('?')[0]]);\n });\n }\n }),\n );\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach((s) => s.unsubscribe());\n }\n\n close() {\n this.sidenav.close();\n }\n\n open() {\n // TODO: Open LB Pro Upgrade Modal if card is locked\n\n if (!this.locked) {\n this.sidenav.open();\n } else {\n this.OpenUpgradeDialog();\n }\n }\n\n OpenUpgradeDialog() {\n const editionChangeDetails$ = this.upgradeDialogService.getEditionChangeDetails$();\n const upgradePrice$: Observable = combineLatest([\n this.upgradeDialogService.partnerMarket$,\n editionChangeDetails$,\n ]).pipe(\n switchMap(([pmConfig, editionChangeDetails]) => {\n let paidEdition = DEMO_PAID_EDITION;\n if (this.env.getEnvironment() == Environment.PROD) {\n paidEdition = PROD_PAID_EDITION;\n }\n return this.upgradeDialogService.getUpgradePrice$(pmConfig, appID, editionChangeDetails, paidEdition);\n }),\n shareReplay(1),\n );\n const formattedUpgradePrice$ = upgradePrice$.pipe(\n switchMap((upgradePrice) => this.upgradeDialogService.getFormattedRetailPrice$(upgradePrice)),\n );\n combineLatest([\n upgradePrice$,\n formattedUpgradePrice$,\n editionChangeDetails$,\n this.upgradeDialogService.getCustomUpgradeModalContent$(),\n this.upgradeDialogService.appSettings$,\n ])\n .pipe(\n take(1),\n switchMap(\n ([upgradePrice, formattedUpgradePrice, editionChangeDetails, customUpgradeModalContent, settings]) => {\n const marketingPoints = [\n this.translate.instant('EDITION.UPGRADE_MODAL.MARKETING_POINTS.LINE_1'),\n this.translate.instant('EDITION.UPGRADE_MODAL.MARKETING_POINTS.LINE_2'),\n this.translate.instant('EDITION.UPGRADE_MODAL.MARKETING_POINTS.LINE_3'),\n this.translate.instant('EDITION.UPGRADE_MODAL.MARKETING_POINTS.LINE_4'),\n this.translate.instant('EDITION.UPGRADE_MODAL.MARKETING_POINTS.LINE_5'),\n this.translate.instant('EDITION.UPGRADE_MODAL.MARKETING_POINTS.LINE_6'),\n ];\n const appName =\n settings.branding &&\n settings.branding.enabled &&\n settings.branding.enabled === true &&\n settings.branding.name\n ? settings.branding.name\n : 'Local SEO';\n let ctaText =\n !!customUpgradeModalContent && customUpgradeModalContent.buttonText\n ? customUpgradeModalContent.buttonText\n : undefined;\n if (editionChangeDetails?.editionUpgradeAction && !ctaText) {\n switch (editionChangeDetails?.editionUpgradeAction) {\n case EditionUpgradeAction.EDITION_UPGRADE_ACTION_CONTACT_SALES:\n ctaText = this.translate.instant('UPGRADE_DIALOG.PRICE.CONTACT_SALES');\n break;\n default:\n ctaText = this.translate.instant('LISTING_SYNC.LSP_ADDON.UPGRADE_MODAL.BUTTON_TEXT');\n break;\n }\n }\n const dialogConfig: UpgradeCTADialogConfig = {\n editionName: `${appName} ${this.translate.instant('COMMON.PRO')}`,\n imageText:\n !!customUpgradeModalContent && customUpgradeModalContent.titleText\n ? customUpgradeModalContent.titleText\n : this.translate.instant('EDITION.UPGRADE_MODAL.IMAGE_TEXT'),\n imageUrl:\n !!customUpgradeModalContent && customUpgradeModalContent.imageUrl\n ? customUpgradeModalContent.imageUrl\n : `https://vstatic-prod.apigateway.co/listing-builder-client/assets/images/LocalSearch.svg`,\n keySellingPoints:\n !!customUpgradeModalContent && customUpgradeModalContent.sellingPoints\n ? customUpgradeModalContent.sellingPoints\n : marketingPoints,\n ctaText: ctaText || this.translate.instant('LISTING_SYNC.LSP_ADDON.UPGRADE_MODAL.BUTTON_TEXT'),\n upgradeNowText: this.upgradeDialogService.getUpgradeText(upgradePrice, editionChangeDetails),\n price: formattedUpgradePrice,\n frequency: this.upgradeDialogService.getFrequencyText(upgradePrice),\n };\n\n this.dialogRef = this.dialog.open(UpgradeCTADialogComponent, {\n data: dialogConfig,\n });\n return this.dialogRef.afterClosed().pipe(\n filter((upgradeClicked) => !!upgradeClicked),\n switchMap(() => {\n const isCustomPackage =\n editionChangeDetails.editionUpgradeAction == EditionUpgradeAction.EDITION_UPGRADE_ACTION_CUSTOM_ORDER;\n let paidEdition = DEMO_PAID_EDITION;\n if (this.env.getEnvironment() == Environment.PROD) {\n paidEdition = PROD_PAID_EDITION;\n }\n const item: UpgradeRedirectItem = isCustomPackage\n ? { packageId: editionChangeDetails.priceReferencePackageId }\n : { appId: APP_ID, editionId: paidEdition };\n return this.upgradeDialogService.buildBusinessCenterUpgradeRedirectInfo(\n item,\n editionChangeDetails.editionUpgradeAction,\n );\n }),\n );\n },\n ),\n )\n .subscribe((redirectInfo) => {\n this.upgradeDialogService.sendToVbc(redirectInfo);\n });\n }\n}\n\nfunction serviceToSourceID(service: string): number {\n switch (service) {\n case 'GMB_LOCATION':\n return 10010;\n case 'FB_PAGE':\n return 10050;\n default:\n return 10060;\n }\n}\n","\n \n \n \n \n \n \n \n \n \n
\n \n
\n \n
{{ name }}
\n lock\n
\n
\n \n
\n \n
Apple
\n lock\n
\n
\n \n
\n \n
{{ 'LISTING_SYNC.PRIMARY_SOURCES.APPLE.COMING_SOON' | translate }}
\n lock\n
\n
\n
\n {{ 'LISTING_SYNC.PRIMARY_SOURCES.LISTING_SCORE' | translate }} {{ data.score }}/{{ data.maxScore }}\n
\n
\n \n \n done\n
{{ accuracyText[data?.accuracy?.status]?.Card | translate }}
\n \n \n done\n
{{ syncStatusText(data) }}
\n \n
\n \n \n done\n
{{ accuracyText[data?.accuracy?.status]?.Card | translate }}
\n \n \n done\n
{{ syncStatusText(data) }}
\n \n
\n \n \n \n
{{ 'LISTING_SYNC.PRIMARY_SOURCES.UPGRADE_TO_PRO' | translate }}
\n
{{ 'LISTING_SYNC.PRIMARY_SOURCES.APPLE.COMING_SOON_SIGN_UP' | translate }}
\n \n \n \n
{{ 'LISTING_SYNC.PRIMARY_SOURCES.APPLE.COMING_SOON_SIGN_UP' | translate }}
\n \n
\n \n \n
{{ 'LISTING_SYNC.PRIMARY_SOURCES.APPLE.COMING_SOON_SIGNED_UP' | translate }}
\n \n \n \n
{{ 'LISTING_SYNC.PRIMARY_SOURCES.APPLE.COMING_SOON_SIGNED_UP' | translate }}
\n \n
\n
\n
\n
\n
\n
\n
\n\n\n \n \n
\n
\n \n
{{ name }}
\n
\n
\n \n
\n
\n
\n\n\n \n\n\n\n \n {{ 'LISTING_SYNC.LSP_ADDON.COLUMNS.ACCURACY.NO_REPORTING' | translate }}\n \n\n","import { Component, Inject, Input, OnInit } from '@angular/core';\nimport { AccountsService } from '@vendasta/accounts';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport {\n AnchorDataMatches,\n AccuracyStatus as LPAccuracyStatus,\n ListSocialServicesRequest,\n ListVendorListingsRequest,\n ListingProductsApiService,\n ServiceAreaBusinessType,\n SocialService,\n VendorListing,\n ProjectionFilter,\n} from '@vendasta/listing-products';\nimport { ListingProfileService } from '@vendasta/listing-profile-common';\nimport {\n AccuracyStatus,\n GetSelectedSocialServicesRequest,\n ListingSyncProApiService,\n SelectedSocialService,\n SourceAccuracy,\n SourceTableData,\n StatusCode,\n} from '@vendasta/listing-sync-pro';\nimport { Observable, combineLatest, of } from 'rxjs';\nimport { catchError, map, shareReplay, switchMap } from 'rxjs/operators';\nimport { AGIDTOKEN, SocialServiceSource, syncingDetails } from '../../local-seo';\nimport { UpgradeCTADialogService } from '../../upgrade-cta-dialog/upgrade-cta-dialog.service';\nimport { ListingSyncService } from '../listing-sync.service';\n\n@Component({\n selector: 'local-seo-primary-sources',\n templateUrl: './primary-sources.component.html',\n styleUrls: ['./primary-sources.component.scss'],\n})\nexport class PrimarySourcesComponent implements OnInit {\n @Input() sidebarTopPadding = 0;\n\n // Social Services\n socialServices$: Observable;\n selectedSocialServices$: Observable;\n Google$: Observable;\n Facebook$: Observable;\n Instagram$: Observable;\n BusinessAddressHidden$: Observable;\n\n // Vendor Listing [Bing & Twitter]\n Twitter$: Observable;\n Bing$: Observable;\n Apple$: Observable;\n VendorListing$: Observable;\n // LIS-921: This flag should be replaced with the lockProCards$ flag once all partners are moved off of the feature\n // flag and the feature flag is removed.\n lockCardsMovingToPro$: Observable;\n lockProCards$: Observable;\n lockTwitterCard$: Observable;\n lockInstagramCard$: Observable;\n activeProductIds$: Observable;\n editionUpgradeHidden$: Observable;\n\n constructor(\n @Inject(AGIDTOKEN) private accountGroupId$: Observable,\n private listingProductsService: ListingProductsApiService,\n private lspService: ListingSyncProApiService,\n private snackbar: SnackbarService,\n public listingSyncService: ListingSyncService,\n private listingProfileService: ListingProfileService,\n private accountsService: AccountsService,\n private upgradeCTADialogService: UpgradeCTADialogService,\n ) {\n this.editionUpgradeHidden$ = upgradeCTADialogService\n .getEditionChangeDetails$()\n .pipe(map((details) => !!details?.hideUpgradeCta));\n }\n\n ngOnInit(): void {\n this.BusinessAddressHidden$ = this.accountGroupId$.pipe(\n switchMap((agid) => this.listingProfileService.get(agid, new ProjectionFilter({ napData: true }))),\n map((lp) => {\n return (\n !!lp.napData.serviceAreaBusiness &&\n lp.napData.serviceArea.businessType ===\n ServiceAreaBusinessType.SERVICE_AREA_BUSINESS_TYPE_CUSTOMER_LOCATION_ONLY\n );\n }),\n shareReplay(1),\n );\n\n // LIS-921: lockCardsMovingToPro$ should be replaced with the lockProCards$ flag once all partners are moved off\n // of the feature flag and the feature flag is removed. My suggestion is to refactor the lockProCards$ flag so\n // that it is only determined by Pro/Not pro and thus matches its name. We also have the PoweredByLSP flag so\n // we should shift to using that in combination with LSP activation status as a separate flag to check.\n this.lockCardsMovingToPro$ = combineLatest([\n this.listingSyncService.isLBFreeEdition$,\n this.listingSyncService.featureFlags$,\n ]).pipe(map(([isLbFreeEdition, flags]) => isLbFreeEdition && flags['localseo_restrict_twitter_instagram_to_pro']));\n this.activeProductIds$ = this.accountGroupId$.pipe(\n switchMap((businessID) => this.accountsService.getMultiActivationStatuses([businessID])),\n map((activations) => activations.map((activation) => activation.productId)),\n );\n this.lockProCards$ = combineLatest([\n this.listingSyncService.isLBFreeEdition$,\n this.listingSyncService.lspActive$,\n this.activeProductIds$,\n ]).pipe(map(([isLbFreeEdition, lspActive]) => isLbFreeEdition && !lspActive));\n this.lockTwitterCard$ = combineLatest([\n this.listingSyncService.isLBFreeEdition$,\n this.lockCardsMovingToPro$,\n this.activeProductIds$,\n ]).pipe(\n map(([isLbFreeEdition, lockTwitterAndInstaFlag, productIds]) => {\n if (!lockTwitterAndInstaFlag) {\n return false;\n }\n\n const DemoTwitterAddonId = 'A-JTGPPWMT2J';\n if (productIds.some((id) => id === DemoTwitterAddonId)) {\n return false;\n }\n const ProdTwitterAddonId = 'A-4G6F57NPXJ';\n if (productIds.some((id) => id === ProdTwitterAddonId)) {\n return false;\n }\n\n return isLbFreeEdition;\n }),\n );\n this.lockInstagramCard$ = combineLatest([\n this.listingSyncService.isLBFreeEdition$,\n this.lockCardsMovingToPro$,\n this.activeProductIds$,\n ]).pipe(\n map(([isLbFreeEdition, lockTwitterAndInstaFlag, productIds]) => {\n if (!lockTwitterAndInstaFlag) {\n return false;\n }\n\n const DemoInstagramAddonId = 'A-846GWQ7ZQJ';\n if (productIds.some((id) => id === DemoInstagramAddonId)) {\n return false;\n }\n const ProdInstagramAddonId = 'A-HCWDHXTSH3';\n if (productIds.some((id) => id === ProdInstagramAddonId)) {\n return false;\n }\n\n return isLbFreeEdition;\n }),\n );\n\n this.socialServices$ = this.accountGroupId$.pipe(\n switchMap((agid) =>\n this.listingProductsService\n .listSocialServices(\n new ListSocialServicesRequest({\n businessId: agid,\n clientTags: ['MS', 'SM', 'SR_SOCIAL_DASHBOARD'],\n refresh: true,\n }),\n )\n .pipe(\n map((res) => res?.socialServices || []),\n catchError((err) => {\n console.log(err);\n this.snackbar.openErrorSnack('Error loading primary sources');\n return of([]);\n }),\n ),\n ),\n shareReplay(1),\n );\n this.selectedSocialServices$ = this.accountGroupId$.pipe(\n switchMap((agid) =>\n this.lspService\n .getSelectedSocialServices(\n new GetSelectedSocialServicesRequest({\n businessId: agid,\n }),\n )\n .pipe(\n map((res) => res?.selectedServices || []),\n catchError((err) => {\n if (err.status === 404) {\n return of([]);\n }\n console.log(err);\n this.snackbar.openErrorSnack('Error fetching selected social services');\n return of([]);\n }),\n ),\n ),\n shareReplay(1),\n );\n\n this.VendorListing$ = this.accountGroupId$\n .pipe(\n switchMap((agid) =>\n this.listingProductsService.listVendorListings(\n new ListVendorListingsRequest({\n businessId: agid,\n }),\n ),\n ),\n )\n .pipe(\n map((res) => {\n return res?.vendorListing || [];\n }),\n catchError((err) => {\n if (err.status === 404) {\n return of([]);\n }\n console.log(err);\n this.snackbar.openErrorSnack('Error fetching bing data');\n return of([]);\n }),\n shareReplay(1),\n );\n\n this.Bing$ = this.VendorListing$.pipe(\n map((vendorListings) => constructSocialServiceFromVendorListing(vendorListings, 10020)),\n );\n\n this.Apple$ = this.listingSyncService.getListingData$().pipe(\n switchMap((listingData) => {\n const vendorListing$ = this.VendorListing$.pipe(\n map((vendorListings) => {\n return constructSocialServiceFromVendorListing(vendorListings, 13840);\n }),\n );\n if (!listingData.lspActive) {\n return vendorListing$;\n }\n const filteredListings = listingData.sources.filter((source) => source.sourceId === 13840);\n if (!filteredListings?.length) {\n return vendorListing$;\n }\n return of(constructSocialServiceSourceFromTableListing(filteredListings[0]));\n }),\n );\n\n this.Google$ = combineLatest([this.socialServices$, this.selectedSocialServices$]).pipe(\n map(([socialServices, selectedSocialServices]) =>\n constructSocialServiceSource(socialServices, selectedSocialServices, 10010),\n ),\n );\n\n this.Facebook$ = combineLatest([this.socialServices$, this.selectedSocialServices$]).pipe(\n map(([socialServices, selectedSocialServices]) =>\n constructSocialServiceSource(socialServices, selectedSocialServices, 10050),\n ),\n );\n\n this.Twitter$ = combineLatest([this.socialServices$, this.selectedSocialServices$]).pipe(\n map(([socialServices, selectedSocialServices]) =>\n constructSocialServiceSource(socialServices, selectedSocialServices, 10060),\n ),\n );\n\n this.Instagram$ = combineLatest([this.socialServices$, this.selectedSocialServices$]).pipe(\n map(([socialServices, selectedSocialServices]) =>\n constructSocialServiceSource(socialServices, selectedSocialServices, 11610),\n ),\n );\n }\n\n retry(): void {\n this.ngOnInit();\n }\n}\n\nfunction lpToLSPAccuracy(lpAccuracy: LPAccuracyStatus): AccuracyStatus {\n switch (lpAccuracy) {\n case LPAccuracyStatus.ACCURACY_STATUS_INVALID:\n return AccuracyStatus.ACCURACY_STATUS_UNKNOWN;\n case LPAccuracyStatus.ACCURACY_STATUS_UNKNOWN:\n return AccuracyStatus.ACCURACY_STATUS_NOT_FOUND;\n case LPAccuracyStatus.ACCURACY_STATUS_ACCURATE:\n return AccuracyStatus.ACCURACY_STATUS_ACCURATE;\n case LPAccuracyStatus.ACCURACY_STATUS_INACCURATE:\n return AccuracyStatus.ACCURACY_STATUS_INACCURATE;\n }\n}\n\nfunction constructSocialServiceFromVendorListing(\n vendorListings: VendorListing[],\n sourceId: number,\n): SocialServiceSource {\n const sources = vendorListings.filter((listing) => listing.sourceId === sourceId);\n if (sources?.length === 0) {\n return;\n }\n const vendorListing = sources[0];\n return {\n name: vendorListing.name,\n accountGroupId: vendorListing.accountGroupId,\n isSyncing: vendorListing.isSyncing,\n accuracy: new SourceAccuracy({\n anchorData: vendorListing.accuracy?.anchorData,\n anchorDataMatches: vendorListing.accuracy?.anchorDataMatches || new AnchorDataMatches({}),\n status: lpToLSPAccuracy(vendorListing.accuracy?.status),\n }),\n score: vendorListing.score || 0,\n maxScore: vendorListing.maxScore,\n listingUrl: vendorListing.listingUrl,\n profileUrl: vendorListing.listingUrl,\n sourceId: vendorListing.sourceId,\n listingId: vendorListing.listingId,\n sourceHasReporting: sourceId !== 11610 && sourceId !== 13840,\n };\n}\n\nfunction constructSocialServiceSourceFromTableListing(data: SourceTableData): SocialServiceSource {\n const syncedStatuses = [\n StatusCode.STATUS_CODE_SYNCED,\n StatusCode.STATUS_CODE_IGNORING_ERRORS,\n StatusCode.STATUS_CODE_SYNCING_WITH_WARNINGS,\n StatusCode.STATUS_CODE_SUBMITTED,\n StatusCode.STATUS_CODE_IN_PROGRESS,\n ];\n\n return {\n name: data.name,\n isSyncing: syncedStatuses.filter((status) => status === data.syncStatus)?.length > 0,\n accuracy: data.accuracy,\n score: data.score,\n maxScore: data.maxScore,\n listingUrl: data.url,\n sourceId: data.sourceId,\n listingId: data.listingId,\n sourceHasReporting: data.accuracy.status !== AccuracyStatus.ACCURACY_STATUS_NOT_AVAILABLE,\n syncingDetails: syncingDetails(data),\n lspSyncStatus: data.syncStatus,\n };\n}\n\nfunction constructSocialServiceSource(\n socialServices: SocialService[],\n selectedSocialServices: SelectedSocialService[],\n sourceId: number,\n): SocialServiceSource {\n const sourceServices = socialServices.filter((service) => service.sourceId === sourceId);\n if (sourceServices?.length === 0) {\n return;\n }\n let selectedService = sourceServices[0];\n let additionalServices: SocialService[] = sourceServices.slice(1);\n const selectedSourceService = selectedSocialServices?.find((service) => +service.sourceId === sourceId);\n if (selectedSourceService) {\n selectedService = sourceServices.find((service) => service.ssid === selectedSourceService.ssid) || selectedService;\n additionalServices = sourceServices.filter((service) => service.ssid !== selectedSourceService.ssid);\n }\n\n let profileUrl = selectedService.profileUrl;\n if (!profileUrl || sourceId === 10010) {\n profileUrl = selectedService.listingUrl;\n }\n\n return {\n ssid: selectedService.ssid,\n name: selectedService.name,\n username: selectedService.username,\n profileImageUrl: selectedService.profileImageUrl,\n profileUrl: profileUrl,\n serviceType: selectedService.serviceType,\n socialProfileId: selectedService.socialProfileId,\n isSyncing: selectedService.isSyncing,\n serviceId: selectedService.serviceId,\n isDisabledFlag: selectedService.isDisabledFlag,\n socialTokenBroken: selectedService.socialTokenBroken,\n isVerified: selectedService.isVerified,\n connectLink: selectedService.connectLink,\n accuracy: new SourceAccuracy({\n anchorData: selectedService.accuracy?.anchorData,\n anchorDataMatches: selectedService.accuracy?.anchorDataMatches || new AnchorDataMatches({}),\n status: lpToLSPAccuracy(selectedService.accuracy?.status),\n }),\n score: selectedService.score || 0,\n maxScore: selectedService.maxScore || 0,\n listingUrl: selectedService.listingUrl,\n sourceId: selectedService.sourceId,\n additionalSocialServices: additionalServices,\n clientTags: selectedService.clientTags,\n listingId: selectedService.listingId,\n sourceHasReporting: sourceId !== 11610 && sourceId !== 13840,\n };\n}\n","
\n
\n \n
\n
\n \n
\n \n \n
\n \n \n \n \n \n \n \n
\n \n
\n
\n\n","import { Component, Inject, Input, OnDestroy, OnInit } from '@angular/core';\nimport { AccountGroup, AccountGroupService, ProjectionFilter } from '@galaxy/account-group';\nimport {\n AccountsService,\n AppAndAddonActivationStatus,\n ListAppAndAddonActivationStatusFilter,\n} from '@vendasta/accounts/legacy';\nimport { EMPTY, Observable, Subscription, combineLatest, of } from 'rxjs';\nimport { catchError, map, shareReplay, switchMap } from 'rxjs/operators';\nimport { BusinessCenterService } from '../business-center/business-center.service';\nimport { AGIDTOKEN } from '../local-seo';\nimport { RepcoreApiService } from '../repcore-api/repcore-api.service';\nimport { UpgradeCTADialogService } from '../upgrade-cta-dialog/upgrade-cta-dialog.service';\nimport { ListingSyncService } from './listing-sync.service';\nimport { GetMultiListingProfileRequest, ListingProfileApiService } from '@vendasta/listing-products';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { ActivatedRoute, Router } from '@angular/router';\n@Component({\n selector: 'local-seo-listings-management',\n templateUrl: './listings-management.component.html',\n styleUrls: ['./listings-management.component.scss'],\n})\nexport class ListingsManagementComponent implements OnInit, OnDestroy {\n @Input() sidebarTopPadding = 0;\n\n showTwitterReconnectBanner$: Observable;\n accountGroup$: Observable;\n hasCategoryNotFound: boolean;\n redirectLink: string;\n getSelectedFacebookPageSSID$: Observable;\n facebookReauthFeatureFlag$: Observable;\n showFacebookReconnectBanner$: Observable;\n isSmActive$: Observable;\n businessAppReconnectLink: string;\n businessAppCustomName: string;\n lspUpgradeHidden$: Observable;\n missingGeoLocation$: Observable;\n listingProfileRedirectLink: string;\n\n private readonly subscriptions: Subscription[] = [];\n\n constructor(\n @Inject(AGIDTOKEN) private accountGroupId$: Observable,\n private repCoreService: RepcoreApiService,\n private accountGroupService: AccountGroupService,\n private businessCenterService: BusinessCenterService,\n private accountsService: AccountsService,\n private upgradeCTADialogService: UpgradeCTADialogService,\n private listingSyncService: ListingSyncService,\n private listingProfileService: ListingProfileApiService,\n private snackBar: MatSnackBar,\n private router: Router,\n private route: ActivatedRoute,\n ) {\n this.lspUpgradeHidden$ = this.listingSyncService\n .getListingData$()\n .pipe(map((data) => !data.lspActive && !data.lspUpgradePathEnabled));\n this.facebookReauthFeatureFlag$ = this.listingSyncService.featureFlags$.pipe(\n map((flags) => flags['reauth_facebook_account_banner_2023']),\n );\n this.getSelectedFacebookPageSSID$ = this.listingSyncService.lspFacebookPages$.pipe(\n map((data) => data.map((d) => d.ssid)),\n );\n\n this.listingProfileRedirectLink = this.router\n .createUrlTree(['../listing-profile'], { relativeTo: this.route })\n .toString();\n\n this.missingGeoLocation$ = this.accountGroupId$.pipe(\n switchMap((agid) =>\n this.listingProfileService\n .getMulti(\n new GetMultiListingProfileRequest({\n businessIds: [agid],\n projectionFilter: new ProjectionFilter({\n napData: true,\n }),\n }),\n )\n .pipe(\n catchError((err: HttpErrorResponse) => {\n const message = err.error?.message ? err.error.message : 'Unknown error';\n this.snackBar.open(message, '', { politeness: 'assertive', duration: 5000 });\n return EMPTY;\n }),\n map(\n (res) =>\n !res.listingProfiles[0].listingProfile?.napData?.location?.latitude &&\n !res.listingProfiles[0].listingProfile?.napData?.location?.longitude,\n ),\n ),\n ),\n shareReplay(1),\n );\n }\n\n ngOnInit(): void {\n this.accountGroupId$.subscribe((agid) => {\n this.showTwitterReconnectBanner$ = this.repCoreService.getTwitterCustomAppConnections(agid).pipe(\n map((response: { reconnect_group: any[] }) => {\n return response.reconnect_group.length > 0;\n }),\n );\n this.subscriptions.push(\n this.accountGroupService\n .get(agid, new ProjectionFilter({ accountGroupExternalIdentifiers: true }))\n .subscribe((data) => {\n const vCat = data.externalIdentifiers.vCategoryIds;\n this.hasCategoryNotFound = vCat.length === 0 || (vCat.length === 1 && vCat.includes('not_found'));\n }),\n );\n this.redirectLink = '/edit/account/' + agid + '/app/listing-profile';\n });\n\n this.isSmActive$ = this.accountGroupId$.pipe(\n switchMap((agid) => {\n return this.accountsService\n .listAppsAndAddonsActivationStatusesForBusiness(agid, {\n appIds: ['SM'],\n statuses: [AppAndAddonActivationStatus.ACTIVATED],\n } as ListAppAndAddonActivationStatusFilter)\n .pipe(\n map((data) => {\n return data?.map((d) => d.status === AppAndAddonActivationStatus.ACTIVATED)?.length > 0;\n }),\n );\n }),\n );\n\n this.showFacebookReconnectBanner$ = combineLatest([\n this.accountGroupId$,\n this.facebookReauthFeatureFlag$,\n this.getSelectedFacebookPageSSID$,\n this.isSmActive$,\n ]).pipe(\n switchMap(([agid, isFbFeatureFlagEnabled, , isSmActive]) => {\n if (isFbFeatureFlagEnabled) {\n if (isSmActive) {\n this.businessCenterService.getVBCEntryUrl(agid, 'settings/connections').subscribe((data) => {\n this.businessAppReconnectLink = data.url;\n this.businessAppCustomName = data.name;\n });\n }\n\n return this.repCoreService.getFacebookAppConnections(agid).pipe(\n map((response: { reconnect_needed: boolean }) => {\n return response.reconnect_needed;\n }),\n );\n }\n return of(false);\n }),\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach((s) => s.unsubscribe());\n }\n}\n","
\n
\n \n
\n \n
\n\n
\n \n Reconnect to X (Formerly Twitter)\n — {{ 'COMMON.TWITTER_BANNER_RECONNECT_MESSAGE' | translate }}\n \n \n \n {{ 'COMMON.RECONNECT_FACEBOOK.TITLE' | translate }}\n —\n \n \n \n {{ 'COMMON.RECONNECT_FACEBOOK.TITLE' | translate }}\n — {{ 'COMMON.RECONNECT_FACEBOOK.NO_SM_DESCRIPTION' | translate }}\n \n \n \n
\n
\n\n
\n
\n \n
\n
\n \n
\n
\n\n
\n
\n
{{ 'LISTING_SYNC.PRIMARY_SOURCES.TITLE' | translate }}
\n

{{ 'LISTING_SYNC.PRIMARY_SOURCES.SUBTITLE' | translate }}

\n \n
\n
\n\n \n
\n
\n
{{ 'LISTING_SYNC.ADDITIONAL_SOURCES.TITLE' | translate }}
\n

{{ 'LISTING_SYNC.ADDITIONAL_SOURCES.SUBTITLE' | translate }}

\n \n
\n
\n
\n
\n","import * as i0 from '@angular/core';\nimport { Component, Input, NgModule } from '@angular/core';\nimport * as i1 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nconst _c0 = a0 => [\"segment\", a0];\nconst _c1 = (a0, a1) => ({\n \"segment-main\": true,\n \"expandable\": a0,\n \"expanded\": a1\n});\nfunction NgxJsonViewerComponent_section_1_div_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"div\", 9);\n }\n}\nfunction NgxJsonViewerComponent_section_1_span_7_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 10);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const segment_r2 = i0.ɵɵnextContext().$implicit;\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(segment_r2.description);\n }\n}\nfunction NgxJsonViewerComponent_section_1_section_8_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"section\", 11);\n i0.ɵɵelement(1, \"ngx-json-viewer\", 12);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const segment_r2 = i0.ɵɵnextContext().$implicit;\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"json\", segment_r2.value)(\"expanded\", ctx_r2.expanded)(\"depth\", ctx_r2.depth)(\"_currentDepth\", ctx_r2._currentDepth + 1);\n }\n}\nfunction NgxJsonViewerComponent_section_1_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"section\", 2)(1, \"section\", 3);\n i0.ɵɵlistener(\"click\", function NgxJsonViewerComponent_section_1_Template_section_click_1_listener() {\n const segment_r2 = i0.ɵɵrestoreView(_r1).$implicit;\n const ctx_r2 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r2.toggle(segment_r2));\n });\n i0.ɵɵtemplate(2, NgxJsonViewerComponent_section_1_div_2_Template, 1, 0, \"div\", 4);\n i0.ɵɵelementStart(3, \"span\", 5);\n i0.ɵɵtext(4);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(5, \"span\", 6);\n i0.ɵɵtext(6, \": \");\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(7, NgxJsonViewerComponent_section_1_span_7_Template, 2, 1, \"span\", 7);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(8, NgxJsonViewerComponent_section_1_section_8_Template, 2, 4, \"section\", 8);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const segment_r2 = ctx.$implicit;\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction1(6, _c0, \"segment-type-\" + segment_r2.type));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction2(8, _c1, ctx_r2.isExpandable(segment_r2), segment_r2.expanded));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r2.isExpandable(segment_r2));\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate(segment_r2.key);\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"ngIf\", !segment_r2.expanded || !ctx_r2.isExpandable(segment_r2));\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", segment_r2.expanded && ctx_r2.isExpandable(segment_r2));\n }\n}\nlet NgxJsonViewerComponent = /*#__PURE__*/(() => {\n class NgxJsonViewerComponent {\n constructor() {\n this.expanded = true;\n this.depth = -1;\n this._currentDepth = 0;\n this.segments = [];\n }\n ngOnChanges() {\n this.segments = [];\n // remove cycles\n this.json = this.decycle(this.json);\n if (typeof this.json === 'object') {\n Object.keys(this.json).forEach(key => {\n this.segments.push(this.parseKeyValue(key, this.json[key]));\n });\n } else {\n this.segments.push(this.parseKeyValue(`(${typeof this.json})`, this.json));\n }\n }\n isExpandable(segment) {\n return segment.type === 'object' || segment.type === 'array';\n }\n toggle(segment) {\n if (this.isExpandable(segment)) {\n segment.expanded = !segment.expanded;\n }\n }\n parseKeyValue(key, value) {\n const segment = {\n key: key,\n value: value,\n type: undefined,\n description: '' + value,\n expanded: this.isExpanded()\n };\n switch (typeof segment.value) {\n case 'number':\n {\n segment.type = 'number';\n break;\n }\n case 'boolean':\n {\n segment.type = 'boolean';\n break;\n }\n case 'function':\n {\n segment.type = 'function';\n break;\n }\n case 'string':\n {\n segment.type = 'string';\n segment.description = '\"' + segment.value + '\"';\n break;\n }\n case 'undefined':\n {\n segment.type = 'undefined';\n segment.description = 'undefined';\n break;\n }\n case 'object':\n {\n // yea, null is object\n if (segment.value === null) {\n segment.type = 'null';\n segment.description = 'null';\n } else if (Array.isArray(segment.value)) {\n segment.type = 'array';\n segment.description = 'Array[' + segment.value.length + '] ' + JSON.stringify(segment.value);\n } else if (segment.value instanceof Date) {\n segment.type = 'date';\n } else {\n segment.type = 'object';\n segment.description = 'Object ' + JSON.stringify(segment.value);\n }\n break;\n }\n }\n return segment;\n }\n isExpanded() {\n return this.expanded && !(this.depth > -1 && this._currentDepth >= this.depth);\n }\n // https://github.com/douglascrockford/JSON-js/blob/master/cycle.js\n decycle(object) {\n const objects = new WeakMap();\n return function derez(value, path) {\n let old_path;\n let nu;\n if (typeof value === 'object' && value !== null && !(value instanceof Boolean) && !(value instanceof Date) && !(value instanceof Number) && !(value instanceof RegExp) && !(value instanceof String)) {\n old_path = objects.get(value);\n if (old_path !== undefined) {\n return {\n $ref: old_path\n };\n }\n objects.set(value, path);\n if (Array.isArray(value)) {\n nu = [];\n value.forEach(function (element, i) {\n nu[i] = derez(element, path + '[' + i + ']');\n });\n } else {\n nu = {};\n Object.keys(value).forEach(function (name) {\n nu[name] = derez(value[name], path + '[' + JSON.stringify(name) + ']');\n });\n }\n return nu;\n }\n return value;\n }(object, '$');\n }\n }\n NgxJsonViewerComponent.ɵfac = function NgxJsonViewerComponent_Factory(t) {\n return new (t || NgxJsonViewerComponent)();\n };\n NgxJsonViewerComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: NgxJsonViewerComponent,\n selectors: [[\"ngx-json-viewer\"]],\n inputs: {\n json: \"json\",\n expanded: \"expanded\",\n depth: \"depth\",\n _currentDepth: \"_currentDepth\"\n },\n features: [i0.ɵɵNgOnChangesFeature],\n decls: 2,\n vars: 1,\n consts: [[1, \"ngx-json-viewer\"], [3, \"ngClass\", 4, \"ngFor\", \"ngForOf\"], [3, \"ngClass\"], [3, \"click\", \"ngClass\"], [\"class\", \"toggler\", 4, \"ngIf\"], [1, \"segment-key\"], [1, \"segment-separator\"], [\"class\", \"segment-value\", 4, \"ngIf\"], [\"class\", \"children\", 4, \"ngIf\"], [1, \"toggler\"], [1, \"segment-value\"], [1, \"children\"], [3, \"json\", \"expanded\", \"depth\", \"_currentDepth\"]],\n template: function NgxJsonViewerComponent_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"section\", 0);\n i0.ɵɵtemplate(1, NgxJsonViewerComponent_section_1_Template, 9, 11, \"section\", 1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", ctx.segments);\n }\n },\n dependencies: [i1.NgClass, i1.NgForOf, i1.NgIf, NgxJsonViewerComponent],\n styles: [\"@charset \\\"UTF-8\\\";.ngx-json-viewer[_ngcontent-%COMP%]{font-family:var(--ngx-json-font-family, monospace);font-size:var(--ngx-json-font-size, 1em);width:100%;height:100%;overflow:hidden;position:relative}.ngx-json-viewer[_ngcontent-%COMP%] .segment[_ngcontent-%COMP%]{padding:2px;margin:1px 1px 1px 12px}.ngx-json-viewer[_ngcontent-%COMP%] .segment[_ngcontent-%COMP%] .segment-main[_ngcontent-%COMP%]{word-wrap:break-word}.ngx-json-viewer[_ngcontent-%COMP%] .segment[_ngcontent-%COMP%] .segment-main[_ngcontent-%COMP%] .toggler[_ngcontent-%COMP%]{position:absolute;margin-left:-14px;margin-top:3px;font-size:.8em;line-height:1.2em;vertical-align:middle;color:var(--ngx-json-toggler, #787878)}.ngx-json-viewer[_ngcontent-%COMP%] .segment[_ngcontent-%COMP%] .segment-main[_ngcontent-%COMP%] .toggler[_ngcontent-%COMP%]:after{display:inline-block;content:\\\"\\\\25ba\\\";transition:transform .1s ease-in}.ngx-json-viewer[_ngcontent-%COMP%] .segment[_ngcontent-%COMP%] .segment-main[_ngcontent-%COMP%] .segment-key[_ngcontent-%COMP%]{color:var(--ngx-json-key, #4E187C)}.ngx-json-viewer[_ngcontent-%COMP%] .segment[_ngcontent-%COMP%] .segment-main[_ngcontent-%COMP%] .segment-separator[_ngcontent-%COMP%]{color:var(--ngx-json-separator, #999)}.ngx-json-viewer[_ngcontent-%COMP%] .segment[_ngcontent-%COMP%] .segment-main[_ngcontent-%COMP%] .segment-value[_ngcontent-%COMP%]{color:var(--ngx-json-value, #000)}.ngx-json-viewer[_ngcontent-%COMP%] .segment[_ngcontent-%COMP%] .children[_ngcontent-%COMP%]{margin-left:12px}.ngx-json-viewer[_ngcontent-%COMP%] .segment-type-string[_ngcontent-%COMP%] > .segment-main[_ngcontent-%COMP%] > .segment-value[_ngcontent-%COMP%]{color:var(--ngx-json-string, #FF6B6B)}.ngx-json-viewer[_ngcontent-%COMP%] .segment-type-number[_ngcontent-%COMP%] > .segment-main[_ngcontent-%COMP%] > .segment-value[_ngcontent-%COMP%]{color:var(--ngx-json-number, #009688)}.ngx-json-viewer[_ngcontent-%COMP%] .segment-type-boolean[_ngcontent-%COMP%] > .segment-main[_ngcontent-%COMP%] > .segment-value[_ngcontent-%COMP%]{color:var(--ngx-json-boolean, #B938A4)}.ngx-json-viewer[_ngcontent-%COMP%] .segment-type-date[_ngcontent-%COMP%] > .segment-main[_ngcontent-%COMP%] > .segment-value[_ngcontent-%COMP%]{color:var(--ngx-json-date, #05668D)}.ngx-json-viewer[_ngcontent-%COMP%] .segment-type-array[_ngcontent-%COMP%] > .segment-main[_ngcontent-%COMP%] > .segment-value[_ngcontent-%COMP%]{color:var(--ngx-json-array, #999)}.ngx-json-viewer[_ngcontent-%COMP%] .segment-type-object[_ngcontent-%COMP%] > .segment-main[_ngcontent-%COMP%] > .segment-value[_ngcontent-%COMP%]{color:var(--ngx-json-object, #999)}.ngx-json-viewer[_ngcontent-%COMP%] .segment-type-function[_ngcontent-%COMP%] > .segment-main[_ngcontent-%COMP%] > .segment-value[_ngcontent-%COMP%]{color:var(--ngx-json-function, #999)}.ngx-json-viewer[_ngcontent-%COMP%] .segment-type-null[_ngcontent-%COMP%] > .segment-main[_ngcontent-%COMP%] > .segment-value[_ngcontent-%COMP%]{color:var(--ngx-json-null, #fff)}.ngx-json-viewer[_ngcontent-%COMP%] .segment-type-undefined[_ngcontent-%COMP%] > .segment-main[_ngcontent-%COMP%] > .segment-value[_ngcontent-%COMP%]{color:var(--ngx-json-undefined, #fff)}.ngx-json-viewer[_ngcontent-%COMP%] .segment-type-null[_ngcontent-%COMP%] > .segment-main[_ngcontent-%COMP%] > .segment-value[_ngcontent-%COMP%]{background-color:var(--ngx-json-null-bg, red)}.ngx-json-viewer[_ngcontent-%COMP%] .segment-type-undefined[_ngcontent-%COMP%] > .segment-main[_ngcontent-%COMP%] > .segment-key[_ngcontent-%COMP%]{color:var(--ngx-json-undefined-key, #999)}.ngx-json-viewer[_ngcontent-%COMP%] .segment-type-undefined[_ngcontent-%COMP%] > .segment-main[_ngcontent-%COMP%] > .segment-value[_ngcontent-%COMP%]{background-color:var(--ngx-json-undefined-key, #999)}.ngx-json-viewer[_ngcontent-%COMP%] .segment-type-object[_ngcontent-%COMP%] > .segment-main[_ngcontent-%COMP%], .ngx-json-viewer[_ngcontent-%COMP%] .segment-type-array[_ngcontent-%COMP%] > .segment-main[_ngcontent-%COMP%]{white-space:nowrap}.ngx-json-viewer[_ngcontent-%COMP%] .expanded[_ngcontent-%COMP%] > .toggler[_ngcontent-%COMP%]:after{transform:rotate(90deg)}.ngx-json-viewer[_ngcontent-%COMP%] .expandable[_ngcontent-%COMP%], .ngx-json-viewer[_ngcontent-%COMP%] .expandable[_ngcontent-%COMP%] > .toggler[_ngcontent-%COMP%]{cursor:pointer}\"]\n });\n return NgxJsonViewerComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet NgxJsonViewerModule = /*#__PURE__*/(() => {\n class NgxJsonViewerModule {}\n NgxJsonViewerModule.ɵfac = function NgxJsonViewerModule_Factory(t) {\n return new (t || NgxJsonViewerModule)();\n };\n NgxJsonViewerModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: NgxJsonViewerModule\n });\n NgxJsonViewerModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [CommonModule]\n });\n return NgxJsonViewerModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { NgxJsonViewerComponent, NgxJsonViewerModule };\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'anchorDataKeyToIcon',\n})\nexport class AnchorDataKeyToIconPipe implements PipeTransform {\n transform(value: unknown): unknown {\n switch (value) {\n case 'companyName':\n return 'business';\n case 'address':\n return 'room';\n case 'city':\n return 'none';\n case 'state':\n return 'none';\n case 'zip':\n return 'none';\n case 'country':\n return 'none';\n case 'phone':\n return 'phone';\n case 'website':\n return 'link';\n }\n return 'icon not found';\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'fillEmptyAnchorData',\n})\nexport class FillEmptyAnchorDataPipe implements PipeTransform {\n transform(value: string): unknown {\n if (!value || value.match(/^\\s*$/)) {\n return 'Missing';\n }\n return value;\n }\n}\n","import { Component, Inject } from '@angular/core';\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { AnchorData, SourceAccuracy } from '@vendasta/listing-sync-pro';\n\n@Component({\n selector: 'local-seo-errors-modal',\n templateUrl: './errors-modal.component.html',\n styleUrls: ['./errors-modal.component.scss'],\n})\nexport class ErrorsModalComponent {\n sourceName: string;\n accuracy: SourceAccuracy;\n profileAnchorData: AnchorData;\n\n keyOrder = ['companyName', 'address', 'city', 'state', 'zip', 'country', 'phone', 'website'];\n\n constructor(@Inject(MAT_DIALOG_DATA) public data: any) {\n if (!data) {\n return;\n }\n this.sourceName = data.sourceName;\n this.accuracy = data.accuracy;\n this.profileAnchorData = data.profileAnchorData;\n }\n\n anchorDataMatches(prop: string): boolean {\n // TODO: fix this. The country check needs some work in the backend. Currently it is producing a lot of false errors\n // so we are disabling it until those issues are resolved.\n if (prop === 'country') {\n return true;\n }\n return this.accuracy.anchorDataMatches[prop];\n }\n}\n","

{{ sourceName }} accuracy

\n\n
\n
\n
\n {{ sourceName }}\n
\n
\n
Business Profile
\n
\n
\n \n {{ key | anchorDataKeyToIcon }}\n \n
\n \n {{ accuracy.anchorData[key] | fillEmptyAnchorData }}\n \n
\n
\n \n {{ key | anchorDataKeyToIcon }}\n \n
\n \n {{ profileAnchorData[key] | fillEmptyAnchorData }}\n \n
\n
\n
\n
\n","import { Input, Directive, EventEmitter } from '@angular/core';\nimport { ColumnDefinition, CustomCellComponent } from '@vendasta/va-filter2-table';\nimport { LBListingSourceTableEntry } from '../listing-sync-table.service';\nimport { MatSlideToggleChange } from '@angular/material/slide-toggle';\n\n@Directive()\nexport class TableColumnDirective implements CustomCellComponent {\n @Input() columnDefinition: ColumnDefinition;\n @Input() element: LBListingSourceTableEntry;\n @Input() eventEmitter: EventEmitter;\n}\n\nexport class ToggleSyncEvent {\n event: MatSlideToggleChange;\n updateSyncLink: string;\n ssid: string;\n serviceType: string;\n}\n\nexport class DisconnectServiceEvent {\n sourceName: string;\n url: string;\n ssid: string;\n clientTags: string[];\n}\n\nexport interface ListingsTableRowEvent {\n element?: LBListingSourceTableEntry;\n openUpgradeDialog?: boolean;\n toggleSyncEvent?: ToggleSyncEvent;\n disconnectServiceEvent?: DisconnectServiceEvent;\n clickSyncStatus?: boolean;\n}\n","import { Component } from '@angular/core';\nimport { TableColumnDirective } from '../column.directive';\nimport { MatDialog } from '@angular/material/dialog';\nimport { ErrorsModalComponent } from './errors-modal/errors-modal.component';\nimport { AccuracyStatus } from '@vendasta/listing-sync-pro';\nimport { LBListingSourceTableEntry, SyncStatusType } from '../../listing-sync-table.service';\nimport { StatusCode } from '@vendasta/listing-sync-pro';\n\n@Component({\n selector: 'local-seo-presence-accuracy',\n templateUrl: './presence-accuracy.component.html',\n styleUrls: ['./presence-accuracy.component.scss'],\n})\nexport class PresenceAccuracyComponent extends TableColumnDirective {\n constructor(private dialog: MatDialog) {\n super();\n }\n\n inProgressAccuractyStatus = [\n StatusCode.STATUS_CODE_IN_PROGRESS,\n StatusCode.STATUS_CODE_SYNCED,\n StatusCode.STATUS_CODE_SUBMITTED,\n ];\n\n canShowAccuracyTextAsInProgress(element: LBListingSourceTableEntry): boolean {\n if (\n element.syncStatusType !== SyncStatusType.LSP_ACTIVE &&\n element.accuracy.status === AccuracyStatus.ACCURACY_STATUS_INACCURATE &&\n element.statusCode === StatusCode.STATUS_CODE_IN_PROGRESS\n ) {\n return true;\n }\n\n return (\n element.syncStatusType === SyncStatusType.LSP_ACTIVE &&\n element.accuracy.status === AccuracyStatus.ACCURACY_STATUS_INACCURATE &&\n this.inProgressAccuractyStatus.includes(element.statusCode)\n );\n }\n\n openInfoModal(): void {\n this.dialog.open(ErrorsModalComponent, {\n data: {\n sourceName: this.element.name,\n accuracy: this.element.accuracy,\n profileAnchorData: this.element.anchorData,\n },\n });\n }\n}\n","\n
0; else unclickableSyncStatus\">\n \n {{ 'LISTING_SYNC.LSP_ADDON.COLUMNS.ACCURACY.IN_PROGRESS' | translate }}\n \n
\n
\n\n {{ element.accuracy.status | accuracyText : element.accuracyErrorTotal }}\n\n\n\n {{ element.accuracy.status | accuracyText : element.accuracyErrorTotal }}\n\n","import { Component } from '@angular/core';\nimport { TableColumnDirective } from '../column.directive';\n\n@Component({\n selector: 'local-seo-source-name-column',\n templateUrl: './source-name-column.component.html',\n styleUrls: ['./source-name-column.component.scss'],\n})\nexport class SourceNameColumnComponent extends TableColumnDirective {}\n","
\n \n \n
\n","import { Component } from '@angular/core';\nimport { TableColumnDirective } from '../column.directive';\n\n@Component({\n selector: 'local-seo-status-column',\n templateUrl: './status-column.component.html',\n styleUrls: ['./status-column.component.scss'],\n})\nexport class StatusColumnComponent extends TableColumnDirective {\n constructor() {\n super();\n }\n\n openUpgradeDialog(): void {\n this.eventEmitter.emit({ openUpgradeDialog: true });\n }\n}\n","\n \n \n \n
\n \n {{ element.syncIcon }}\n \n \n {{ element.syncText }}\n \n
\n
\n","import {\n ColumnOrganizerType,\n ColumnType,\n ColumnWidth,\n GenericTableLabels,\n Pinned,\n TableDefinition,\n} from '@vendasta/va-filter2-table';\nimport { ListingSyncTableFilterService } from './listing-sync-table-filter.service';\nimport { SourceNameColumnComponent } from './columns/source-name-column/source-name-column.component';\nimport { StatusColumnComponent } from './columns/status-column/status-column.component';\nimport { PresenceAccuracyComponent } from './columns/presence-accuracy/presence-accuracy.component';\n\nconst COMMON_TABLE_LABELS: GenericTableLabels = {\n noResults: 'LISTING_SYNC.TABLE_LABEL.NO_RESULTS',\n cancel: 'LISTING_SYNC.TABLE_LABEL.CANCEL',\n none: 'LISTING_SYNC.TABLE_LABEL.NONE',\n update: 'LISTING_SYNC.TABLE_LABEL.UPDATE',\n sortBy: 'LISTING_SYNC.TABLE_LABEL.SORT_BY',\n thenSortBy: 'LISTING_SYNC.TABLE_LABEL.THEN_SORT_BY',\n addAnotherSortColumn: 'LISTING_SYNC.TABLE_LABEL.ADD_SORT_COLUMN',\n chooseColumnToSortBy: 'LISTING_SYNC.TABLE_LABEL.CHOOSE_SORT_COLUMN',\n columnSorting: {\n date: {\n ascending: 'LISTING_SYNC.TABLE_LABEL.SORT_DATE_ASC',\n descending: 'LISTING_SYNC.TABLE_LABEL.SORT_DATE_DSC',\n },\n number: {\n ascending: 'LISTING_SYNC.TABLE_LABEL.SORT_NUMBER_ASC',\n descending: 'LISTING_SYNC.TABLE_LABEL.SORT_NUMBER_DSC',\n },\n string: {\n ascending: 'LISTING_SYNC.TABLE_LABEL.SORT_STRING_ASC',\n descending: 'LISTING_SYNC.TABLE_LABEL.SORT_STRING_DSC',\n },\n default: {\n ascending: 'LISTING_SYNC.TABLE_LABEL.SORT_DEFAULT_ASC',\n descending: 'LISTING_SYNC.TABLE_LABEL.SORT_DEFAULT_DSC',\n },\n },\n export: {\n buttonText: '',\n buttonTooltipBeforeCount: '',\n buttonTooltipAfterCount: '',\n description: 'LISTING_SYNC.TABLE_LABEL.EXPORT',\n },\n columnSelector: {\n buttonText: 'LISTING_SYNC.TABLE_LABEL.COLUMN_SELECTOR',\n },\n};\n\nconst LISTING_SYNC_TABLE_DEF: TableDefinition = {\n id: 'listing-sync',\n labels: COMMON_TABLE_LABELS,\n columns: [\n {\n id: 'sourceName',\n field: 'name',\n displayName: 'LISTING_SYNC.COLUMN_HEADERS.SITE_NAME',\n type: ColumnType.COLUMN_TYPE_STRING,\n cellComponent: SourceNameColumnComponent,\n pinned: Pinned.PINNED_LEFT,\n sortOptions: { sortable: true },\n width: ColumnWidth.WIDTH_WIDE,\n },\n {\n id: 'listingAccuracy',\n field: 'accuracyText',\n displayName: 'LISTING_SYNC.COLUMN_HEADERS.LISTING_ACCURACY',\n type: ColumnType.COLUMN_TYPE_STRING,\n cellComponent: PresenceAccuracyComponent,\n sortOptions: { sortable: true },\n },\n {\n id: 'syncStatus',\n field: 'syncText',\n displayName: 'LISTING_SYNC.COLUMN_HEADERS.STATUS',\n type: ColumnType.COLUMN_TYPE_STRING,\n cellComponent: StatusColumnComponent,\n sortOptions: { sortable: true },\n },\n {\n id: 'score',\n field: 'score',\n displayName: 'LISTING_SYNC.COLUMN_HEADERS.SCORE',\n type: ColumnType.COLUMN_TYPE_NUMBER,\n sortOptions: { sortable: true },\n },\n {\n id: 'scoreMax',\n field: 'maxScore',\n displayName: 'LISTING_SYNC.COLUMN_HEADERS.MAX_SCORE',\n type: ColumnType.COLUMN_TYPE_NUMBER,\n sortOptions: { sortable: true },\n },\n {\n id: 'lastUpdated',\n field: 'lastUpdated',\n displayName: 'LISTING_SYNC.COLUMN_HEADERS.LAST_UPDATED',\n type: ColumnType.COLUMN_TYPE_STRING,\n sortOptions: { sortable: true },\n },\n {\n id: 'sourceType',\n field: 'type',\n displayName: 'LISTING_SYNC.COLUMN_HEADERS.SITE_TYPE',\n type: ColumnType.COLUMN_TYPE_STRING,\n sortOptions: { sortable: true },\n },\n ],\n groups: [],\n columnOrganizerType: ColumnOrganizerType.ADVANCED_ORGANIZER,\n options: {\n pageSizeOptions: [10, 25, 50],\n defaultPageSize: 50,\n },\n};\n\nexport const tableDefinitionFactory = (filterService: ListingSyncTableFilterService) => {\n const tableDefinition = LISTING_SYNC_TABLE_DEF;\n tableDefinition.filters = filterService.filters;\n return tableDefinition;\n};\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatListModule } from '@angular/material/list';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { LexiconModule } from '@galaxy/lexicon';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { GalaxyAlertModule } from '@vendasta/galaxy/alert';\nimport { GalaxyBadgeModule } from '@vendasta/galaxy/badge';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { GalaxyLoadingSpinnerModule } from '@vendasta/galaxy/loading-spinner';\nimport { GalaxyPageModule } from '@vendasta/galaxy/page';\nimport { GalaxyPopoverModule } from '@vendasta/galaxy/popover';\nimport { GalaxyTooltipModule } from '@vendasta/galaxy/tooltip';\nimport { VaIconModule } from '@vendasta/uikit';\nimport { FilterModule } from '@vendasta/va-filter2';\nimport { Filter2TableModule, TABLE_DEFINITION, VaFilteredMatTableService } from '@vendasta/va-filter2-table';\nimport { ClickOutsideModule } from 'ng-click-outside';\nimport { NgxJsonViewerModule } from 'ngx-json-viewer';\nimport en from '../assets/i18n/en_devel.json';\nimport { ColorIconComponent } from '../color-icon/color-icon.component';\nimport { DisconnectServiceModalComponent } from '../disconnect-service-modal/disconnect-service-modal.component';\nimport { RepcoreApiService } from '../repcore-api/repcore-api.service';\nimport { VApiService } from '../repcore-api/vapi.service';\nimport { UpgradeCTADialogService } from '../upgrade-cta-dialog/upgrade-cta-dialog.service';\nimport { ConnectedAccountModalComponent } from './connected-account-modal/connected-account-modal.component';\nimport { ListingScoreSummaryCardComponent } from './listing-score-summary-card/listing-score-summary-card.component';\nimport { AccuracyTextPipe } from './listing-sync-table/columns/presence-accuracy/accuracy-text.pipe';\nimport { AnchorDataKeyToIconPipe } from './listing-sync-table/columns/presence-accuracy/errors-modal/anchor-data-key-to-icon.pipe';\nimport { ErrorsModalComponent } from './listing-sync-table/columns/presence-accuracy/errors-modal/errors-modal.component';\nimport { FillEmptyAnchorDataPipe } from './listing-sync-table/columns/presence-accuracy/errors-modal/fill-empty-anchor-data.pipe';\nimport { PresenceAccuracyComponent } from './listing-sync-table/columns/presence-accuracy/presence-accuracy.component';\nimport { IconComponent } from './listing-sync-table/columns/source-name-column/icon/icon.component';\nimport { SourceNameColumnComponent } from './listing-sync-table/columns/source-name-column/source-name-column.component';\nimport { StatusColumnComponent } from './listing-sync-table/columns/status-column/status-column.component';\nimport { ListingSidebarComponent } from './listing-sync-table/listing-sidebar/listing-sidebar.component';\nimport { ListingSignupSidebarComponent } from './listing-sync-table/listing-signup-sidebar/listing-signup-sidebar.component';\nimport { SignupModalComponent } from './listing-sync-table/listing-signup-sidebar/signup-modal/signup-modal.component';\nimport { ListingSyncTableFilterService } from './listing-sync-table/listing-sync-table-filter.service';\nimport { tableDefinitionFactory } from './listing-sync-table/listing-sync-table-model';\nimport { ListingSyncTableComponent } from './listing-sync-table/listing-sync-table.component';\nimport { ListingSyncTableService } from './listing-sync-table/listing-sync-table.service';\nimport { ListingSyncProErrorDialogComponent } from './listing-sync-table/lsp-error-messages/lsp-error-messages.component';\nimport { SyncInfoModalComponent } from './listing-sync-table/sync-info-modal/sync-info-modal.component';\nimport { ListingSyncService } from './listing-sync.service';\nimport { ListingsManagementComponent } from './listings-management.component';\nimport { ListingsSummaryCardComponent } from './listings-summary-card/listings-summary-card.component';\nimport { PrimarySourceComponent } from './primary-sources/primary-source/primary-source.component';\nimport { PrimarySourcesComponent } from './primary-sources/primary-sources.component';\nimport { SyncingProgressSummaryCardComponent } from './syncing-progress-summary-card/syncing-progress-summary-card.component';\n\n@NgModule({\n declarations: [\n ListingsManagementComponent,\n ListingSyncProErrorDialogComponent,\n ListingSidebarComponent,\n SyncInfoModalComponent,\n ConnectedAccountModalComponent,\n ListingSyncTableComponent,\n SourceNameColumnComponent,\n IconComponent,\n StatusColumnComponent,\n ListingsSummaryCardComponent,\n ListingScoreSummaryCardComponent,\n SyncingProgressSummaryCardComponent,\n PresenceAccuracyComponent,\n ErrorsModalComponent,\n AccuracyTextPipe,\n AnchorDataKeyToIconPipe,\n FillEmptyAnchorDataPipe,\n PrimarySourcesComponent,\n PrimarySourceComponent,\n ListingSignupSidebarComponent,\n SignupModalComponent,\n DisconnectServiceModalComponent,\n ColorIconComponent,\n ],\n imports: [\n CommonModule,\n TranslateModule,\n GalaxyAlertModule,\n CommonModule,\n MatButtonModule,\n MatCardModule,\n MatDialogModule,\n MatMenuModule,\n MatIconModule,\n GalaxyTooltipModule,\n MatProgressSpinnerModule,\n MatSlideToggleModule,\n MatSnackBarModule,\n MatTableModule,\n MatRadioModule,\n TranslateModule,\n VaIconModule,\n Filter2TableModule,\n ReactiveFormsModule,\n FilterModule,\n MatTooltipModule,\n GalaxyFormFieldModule,\n GalaxyPageModule,\n NgxJsonViewerModule,\n MatExpansionModule,\n MatListModule,\n GalaxyBadgeModule,\n GalaxyLoadingSpinnerModule,\n MatSidenavModule,\n ClickOutsideModule,\n GalaxyPopoverModule,\n ReactiveFormsModule,\n FormsModule,\n MatCheckboxModule,\n LexiconModule.forChild({\n componentName: 'common/local-seo',\n baseTranslation: en,\n }),\n MatExpansionModule,\n ],\n exports: [\n ListingsSummaryCardComponent,\n ListingScoreSummaryCardComponent,\n SyncingProgressSummaryCardComponent,\n ListingSyncTableComponent,\n PrimarySourcesComponent,\n ListingsManagementComponent,\n ],\n providers: [\n VaFilteredMatTableService,\n ListingSyncTableFilterService,\n {\n provide: TABLE_DEFINITION,\n useFactory: tableDefinitionFactory,\n deps: [ListingSyncTableFilterService],\n },\n RepcoreApiService,\n VApiService,\n UpgradeCTADialogService,\n ListingSyncService,\n ListingSyncTableService,\n ],\n})\nexport class LocalSEOListingsManagementModule {}\n","export { LocalSEOTableModule } from './local-seo-table/local-seo-table.module';\nexport { LocalSeoKeywordsStatsCardsModule } from './keyword-stats-cards/local-seo-keywords-stats-cards.module';\nexport { KeywordTrackingPageModule } from './keyword-tracking-page/keyword-tracking-page.module';\nexport { KeywordTrackingModule } from './keyword-tracking-page/keyword-tracking/keyword-tracking.module';\nexport { KeywordTrackingService } from './keyword-tracking-page/keyword-tracking/keyword-tracking.service';\nexport { UpgradeCTADialogService } from './upgrade-cta-dialog/upgrade-cta-dialog.service';\nexport { LocalSEOListingsManagementModule } from './listings-management/listings-management.module';\nexport * from './local-seo';\n","export * from './lib/index';\n"],"mappings":"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","names":["enumStringToValue","enumRef","value","AccuracyStatus","ListListingSyncProAddonIdsResponseAddonInfoBillingFrequency","BillingFrequency","ErrorCode","ServiceProvider","SiteType","StatusCode","SyncingStatus","AccountFilters","AccountListingStatuses","ActivateListingSyncProRequest","ListListingSyncProAddonIdsResponseAddonInfo","AnchorData","AnchorDataMatches","Citation","CitationListing","CollectStatsRequest","CreateListingSyncProProviderSourceDataRequest","CreateListingSyncProSourceRequest","CreateListingSyncProSourceResponse","DeactivateListingSyncProRequest","DeleteListingSyncProProviderSourceRequest","DeleteStatsRequest","Errors","GetAvailableProvidersForPartnerRequest","GetAvailableProvidersForPartnerResponse","GetCitationDataRequest","GetCitationDataResponse","GetListingDataForATimePeriodRequest","GetListingDataRequest","GetListingDataResponse","GetListingSyncProAddonIdRequest","GetListingSyncProAddonIdResponse","GetListingSyncProProviderSourcesDataRequest","GetListingSyncProProviderSourcesDataResponse","GetProviderSourcesForBusinessRequest","GetProviderSourcesForBusinessResponse","GetScrapedSourceStatusesRequest","GetScrapedSourceStatusesResponse","GetSelectedSocialServicesRequest","GetSelectedSocialServicesResponse","HistoricalCitationsDataPoint","HistoricalScore","IsListingSyncProActiveRequest","IsListingSyncProActiveResponse","ListListingSyncProAddonIdsRequest","ListListingSyncProAddonIdsResponse","ListListingSyncProSourcesRequest","ListListingSyncProSourcesResponse","ListStatusesByBusinessRequest","ListStatusesByBusinessResponse","ListStatusesByPartnerRequest","ListStatusesByPartnerResponse","ListingSyncProProviderSourceData","PagedRequestOptions","PagedResponseMetadata","ProcessListingSyncProMarketplaceActivationRequest","ScoreData","SelectedSocialService","SetSelectedSocialServiceRequest","SetSelectedSocialServiceResponse","SourceAccuracy","SourceData","SourceInfo","SourceStatus","SourceTableData","environment","hostMap","HostService","ListingSyncProApiService","init_vendasta_listing_sync_pro","__esmMin","init_core","init_http","init_operators","_AccountFilters","proto","m","v","kwargs","toReturn","_AccountListingStatuses","_ActivateListingSyncProRequest","_ListListingSyncProAddonIdsResponseAddonInfo","_AnchorData","_AnchorDataMatches","_Citation","_CitationListing","_CollectStatsRequest","_CreateListingSyncProProviderSourceDataRequest","_CreateListingSyncProSourceRequest","_CreateListingSyncProSourceResponse","_DeactivateListingSyncProRequest","_DeleteListingSyncProProviderSourceRequest","_DeleteStatsRequest","_Errors","_GetAvailableProvidersForPartnerRequest","_GetAvailableProvidersForPartnerResponse","_GetCitationDataRequest","_GetCitationDataResponse","_GetListingDataForATimePeriodRequest","_GetListingDataRequest","_GetListingDataResponse","_GetListingSyncProAddonIdRequest","_GetListingSyncProAddonIdResponse","_GetListingSyncProProviderSourcesDataRequest","_GetListingSyncProProviderSourcesDataResponse","obj","k","_GetProviderSourcesForBusinessRequest","_GetProviderSourcesForBusinessResponse","_GetScrapedSourceStatusesRequest","_GetScrapedSourceStatusesResponse","_GetSelectedSocialServicesRequest","_GetSelectedSocialServicesResponse","_HistoricalCitationsDataPoint","_HistoricalScore","_IsListingSyncProActiveRequest","_IsListingSyncProActiveResponse","_ListListingSyncProAddonIdsRequest","_ListListingSyncProAddonIdsResponse","_ListListingSyncProSourcesRequest","_ListListingSyncProSourcesResponse","_ListStatusesByBusinessRequest","_ListStatusesByBusinessResponse","_ListStatusesByPartnerRequest","_ListStatusesByPartnerResponse","_ListingSyncProProviderSourceData","_PagedRequestOptions","_PagedResponseMetadata","_ProcessListingSyncProMarketplaceActivationRequest","_ScoreData","_SelectedSocialService","_SetSelectedSocialServiceRequest","_SetSelectedSocialServiceResponse","_SourceAccuracy","_SourceData","_SourceInfo","_SourceStatus","_SourceTableData","t","ɵɵdefineInjectable","http","hostService","HttpHeaders","r","request","__spreadProps","__spreadValues","map","resp","ɵɵinject","HttpClient","convertDifficulty","value","convertRank","inProgress","MaxRank","formatNumber","convertNumber","determineOriginalListingScore","scoreData","listingScoreHistory","length","score","getErrorMessages","sourceStatus","uniqBy","errorDetails","map","error","ErrorMapping","get","errorCode","filter","errorValue","undefined","key","getFieldsWithWarnings","warningDetails","ErrorCode","ERROR_CODE_NAME","ERROR_CODE_STREET_ADDRESS","ERROR_CODE_ZIP_CODE","ERROR_CODE_PHONE_NUMBER","ERROR_CODE_WHOLE_ADDRESS","ERROR_CODE_CATEGORIES","ERROR_CODE_WEBSITE","ERROR_CODE_HOURS_OF_OPERATION","ERROR_CODE_CONTACT_SOURCE","ERROR_CODE_CITY","indexOf","warning","warningValue","sort","a","b","syncingDetails","source","defaultData","sourceName","name","explanation","warnings","errors","syncStatus","StatusCode","STATUS_CODE_SYNCING_WITH_WARNINGS","__spreadProps","__spreadValues","STATUS_CODE_HAS_ERRORS","STATUS_CODE_IN_PROGRESS","import_lodash","SEARCH_RADIUS_LOCAL","SEARCH_RADIUS_SMALL_CITY","SEARCH_RADIUS_BIG_CITY","SEARCH_RADIUS_XL_CITY","AGIDTOKEN","IS_IMPERSONATING_TOKEN","DEMO_PAID_EDITION","PROD_PAID_EDITION","APP_ID","SEODataSearchRadiusZoomValue","SEODataSearchRadiusTypes","MaxMapsRank","SEOTableData","LocaleDateTickFormatting","WholeNumberTickFormatting","MaterialIcons","SyncingProgressSyncLegendConfig","init_local_seo","__esmMin","init_common","init_vendasta_listing_sync_pro","constructor","keyword","data","metrics","settings","rawValue","date","localRank","organicRank","difficulty","searchVolume","localSearches","searchRadius","localStartedAt","organicStartedAt","isFavorite","favoriteKeywords","includes","val","Date","locale","localStorage","toLocaleDateString","month","day","toLocaleString","icon","DONE","description","SYNC_PROBLEM","SYNC","LOCK","Map","ERROR_CODE_DESCRIPTION_LONG","ERROR_CODE_DESCRIPTION_SHORT","ERROR_CODE_EMAIL","ERROR_CODE_PAYMENT_OPTIONS","ERROR_CODE_PHOTOS","ERROR_CODE_SOCIAL_PROFILES","ERROR_CODE_UNHANDLED_ERROR","ERROR_CODE_EXISTING_RELATIONSHIP","ERROR_CODE_CHAIN_LOCATION","ERROR_CODE_UNAVAILABLE_REASON","ERROR_CODE_SERVICES","normalizeFrequencyEnum","value","Frequency","findMostFrequentPrice","pricing","prices","length","price","mostFrequentPrice","sort","a","b","orderedFrequencies","DAILY","WEEKLY","MONTHLY","YEARLY","ONCE","OTHER","frequency","aIndex","indexOf","bIndex","undefined","billingFrequency","currency","appID","UpgradeCTADialogService","init_upgrade_cta_dialog_service","__esmMin","init_vendasta_marketplace_packages","init_src","init_esm","init_operators","init_vendasta_marketplace_apps","init_local_seo","init_vendasta_account_group","constructor","agid$","isImpersonation$","translateService","matSnackBar","snowplowService","appPartnerService","appPartnerSettingsService","marketplacePackagesService","displayPriceService","domainService","accountGroupService","partnerMarket$","pipe","switchMap","businessID","getMulti","GetMultiRequest","accountGroupIds","projectionFilter","ProjectionFilter","accountGroupExternalIdentifiers","map","resp","partnerId","accountGroups","accountGroup","marketId","toUpperCase","filter","val","of","distinctUntilChanged","shareReplay","defaultAppSettings","AppSettings","editionChange","editionUpgradeAction","EditionUpgradeAction","EDITION_UPGRADE_ACTION_CONTACT_SALES","branding","enabled","appSettings$","pm","getAppSettings","catchError","err","status","throwError","response","vbcHost$","getDomainByIdentifier","primary","domain","getUpgradeText","retailPrice","editionChangeDetails","upgradeSuffix","EDITION_UPGRADE_ACTION_CUSTOM_ORDER","customUpgradePackageIds","instant","getFrequencyText","frequencyKey","getEditionChangeDetails$","EditionChange","getAddonUpgradeDetails$","addonID","defaultEditionChange","getCustomUpgradeModalContent$","getUpgradeDialogContent","upgradeDialogContent","getFormattedRetailPrice$","currencyKey","Currency","USD","formatDisplayPrice","getUpgradePrice$","pmConfig","editionID","EDITION_UPGRADE_ACTION_CREATE_ORDER","getRetailPriceForAddonID$","priceReferencePackageId","getMostFrequentPriceForPackage$","partnerMarket","editionId","PartnerMarketContainer","combineLatest","getRetailPrice","overridePrice","defaultPrice","packageID","getMultiPackages","packageIds","packageContainers","container","package","buildBusinessCenterUpgradeRedirectInfo","item","upgradeAction","agid","vbcHost","isImpersonation","nextURL","encodeURIComponent","window","location","href","itemsJSON","JSON","stringify","upgradePath","url","sendToVbc","redirectInfo","open","duration","ɵɵinject","AGIDTOKEN","IS_IMPERSONATING_TOKEN","TranslateService","MatSnackBar","ProductAnalyticsService","AppPartnerService","AppPartnerSettingsService","MarketplacePackagesApiService","DisplayPriceService","DomainService","AccountGroupApiService","factory","ɵfac","providedIn","_UpgradeCTADialogService","formatSEOData","data","map","seoData","localSearches","localSearch","mainIndex","results","findIndex","result","isMainBusiness","mainBusiness","slice","push","ParseRowsFromQueryMetricsResult","resp","metricIndex","reduce","arr","metric","value","measures","date","dimension","generateSEODataQueryMetricsRequest","partnerId","businessId","keyword","startDate","endDate","Measure","aggregate","MeasureAggregate","measure","aggOp","MeasureAggregateOperator","MAX","alignmentPeriod","getAlignmentPeriodForDayJSRange","dayjs","QueryMetricsRequest","metricName","resourceIds","ResourceId","BusinessResourceId","filter","Filter","fieldFilter","FieldFilter","operator","FieldFilterOperator","EQUAL","valueType","PropertyType","PROPERTY_TYPE_STRING","dateRange","start","end","groupBy","GroupBy","alignment","Alignment","ALIGN_DELTA","AlignmentPeriod","calendar","numMonths","diff","numDays","AlignmentPeriodCalendar","CALENDAR_MONTH","CALENDAR_WEEK","CALENDAR_DAY","import_dayjs","ADDON_INCREMENT","SEODATA_STATS","free_edition_keywords","paid_edition_keywords","KeywordTrackingService","init_keyword_tracking_service","__esmMin","init_vendasta_accounts_legacy","init_vendasta_listing_products","init_vendasta_multi_location_analytics","init_esm","init_operators","init_local_seo","constructor","listingProfileService","lpSEOService","mla","agid$","snackBar","translate","listingProductsApiService","seoSuggestedKeywordsService","accountsService","upgradeDialogService","featureFlagService","listingProfile$$","BehaviorSubject","keywords$$","loading$$","canEditKeywords$$","canEditKeywords$","asObservable","defaultMarketID","syncingKeywords$$","syncingKeywords$","SEOSettings$$","dateRange$$","undefined","missingGeoLocation$$","missingWebsite$$","suggestedKeywords$$","featureFlags$","partnerMarket$","pipe","switchMap","partnerMarket","checkFeatureFlagsMulti","marketId","shareReplay","isLBFreeEdition$","agid","filters","appIds","statuses","AppAndAddonActivationStatus","ACTIVATED","listAppsAndAddonsActivationStatusesForBusiness","activations","length","editionId","DEMO_PAID_EDITION","PROD_PAID_EDITION","fetchBusinessData","fetchSEODataSettings","getProductSettings","getSuggestedKeywords","seoDataResponse$","combineLatest","keywords","fetchSEOData","SEOData$","res","current","suggestedKeywords$","keywordMetrics$","pm","fetchSEOQueryMetrics","seoSettings$","addOns$","getActiveSeoAddons","GetActiveSEOAddonsRequest","activeAddons","keywordLimit$","isFreeEdition","addOns","keywordLimit","limitIncrement","count","getSeoSettings","GetSEOSettingsRequest","catchError","err","status","message","error","open","politeness","duration","EMPTY","of","SEOSettingsResponse","localSearchRadius","SEARCH_RADIUS_LOCAL","favoriteKeywords","subscribe","seoSettings","next","getMulti","GetMultiListingProfileRequest","businessIds","languageCode","currentLang","defaultLang","projectionFilter","ProjectionFilter","richData","napData","listingProfiles","listingProfile","location","latitude","longitude","website","seoKeywords","syncingKeywords","syncingSeoKeywords","pid","range","metrics","obsMetrics","forEach","queryMetrics","metricResults","unwrapMetricsResponse","localRank","indexOf","organicRank","tap","GetPartnerSettingsRequest","take","partnerSettings","setCanEditKeywords","canEditKeywords","businessID","getSeoData","GetSEODataRequest","previousData","previous","isFree","GetOrGenerateSEOSuggestedKeywordsResponse","keywordInfo","getOrGenerateSeoSuggestedKeywords","GetSEOSuggestedKeywordsRequest","suggestedkeywords","info","KeywordInfo","competition","competitionIndex","searchVolume","lowTopOfPageBid","highTopOfPageBid","updateLocalSearchRadius","mapRadius","saveSeoSettings","SaveSEOSettingsRequest","fieldMask","FieldMask","paths","updateFavoriteKeywords","instant","updateKeywords","update","UpdateListingProfileRequest","updateOperations","UpdateOperation","RichData","updateSyncingKeywords","deleteKeyword","filteredKeywords","k","updateDateRange","setLocalStorage","key","localStorage","setItem","getLocalStorage","getItem","ɵɵinject","ListingProfileApiService","SEOApiService","MultiLocationAnalyticsService","AGIDTOKEN","MatSnackBar","TranslateService","ListingProductsApiService","SEOSuggestedKeywordsApiService","AccountsService","UpgradeCTADialogService","FeatureFlagService","factory","ɵfac","providedIn","_KeywordTrackingService","ɵɵelementStart","ɵɵlistener","$event","ɵɵrestoreView","_r1","ctx_r1","ɵɵnextContext","ɵɵresetView","removeClicked","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","form","ɵɵpipeBind1","keywordLimit","data","keywords","length","ɵɵtext","ɵɵtextInterpolate","element_r3","keyword","element_r4","competition","ɵɵtextInterpolate1","element_r5","searchVolume","toLocaleString","ɵɵelement","element_r7","_r6","$implicit","addSuggestedKeyword","controls","canEditKeywords","ɵɵelementContainerStart","ɵɵtemplate","LocalSeoKeywordDialogComponent_ng_container_8_th_6_Template","LocalSeoKeywordDialogComponent_ng_container_8_td_7_Template","LocalSeoKeywordDialogComponent_ng_container_8_th_9_Template","LocalSeoKeywordDialogComponent_ng_container_8_td_10_Template","LocalSeoKeywordDialogComponent_ng_container_8_th_12_Template","LocalSeoKeywordDialogComponent_ng_container_8_td_13_Template","LocalSeoKeywordDialogComponent_ng_container_8_th_15_Template","LocalSeoKeywordDialogComponent_ng_container_8_td_16_Template","LocalSeoKeywordDialogComponent_ng_container_8_tr_17_Template","LocalSeoKeywordDialogComponent_ng_container_8_tr_18_Template","suggestedKeywordList","displayedColumns","LocalSeoKeywordDialogComponent","init_local_seo_keyword_dialog_component","__esmMin","init_dialog","init_forms","init_operators","constructor","dialogRef","fb","keywordTrackingService","posthogService","isLbFreeEdition$","isLBFreeEdition$","displaySuggestedKeywords$","featureFlags$","pipe","map","flags","suggestedKeywords","UntypedFormArray","push","control","currentKeywordUsage","inputsWithText","filter","value","closeModal","save","keywordsAdded","close","undefined","result","Array","from","Set","concat","values","raisePostHogEvent","suggestedKeywordsAdded","includes","suggestedKeywordsAddedElement","trackEvent","element","removedKeyword","find","keywordInfo","ɵɵdirectiveInject","MAT_DIALOG_DATA","MatDialogRef","FormBuilder","KeywordTrackingService","ProductAnalyticsService","selectors","decls","vars","consts","template","rf","ctx","LocalSeoKeywordDialogComponent_mat_list_7_Template","LocalSeoKeywordDialogComponent_ng_container_8_Template","ɵɵtextInterpolate3","_LocalSeoKeywordDialogComponent","ɵɵelementContainer","ɵɵelementContainerStart","ɵɵtemplate","DeltaComponent_ng_container_1_ng_container_1_Template","ɵɵadvance","ɵɵproperty","positiveDelta_r2","ɵɵpureFunction1","_c0","ctx_r0","value","DeltaComponent_ng_container_2_ng_container_1_Template","neutralDelta_r3","DeltaComponent_ng_container_3_ng_container_1_Template","negativeDelta_r4","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵtextInterpolate1","ɵɵpipeBind2","absVal","value_r5","value_r6","DeltaComponent","init_delta_component","__esmMin","init_common","init_icon","constructor","showNeutral","Math","abs","selectors","inputs","standalone","features","ɵɵStandaloneFeature","decls","vars","consts","template","rf","ctx","DeltaComponent_ng_container_1_Template","DeltaComponent_ng_container_2_Template","DeltaComponent_ng_container_3_Template","DeltaComponent_ng_template_4_Template","ɵɵtemplateRefExtractor","DeltaComponent_ng_template_6_Template","DeltaComponent_ng_template_8_Template","CommonModule","NgIf","NgTemplateOutlet","DecimalPipe","MatIconModule","MatIcon","styles","_DeltaComponent","enumStringToValue$j","enumRef","value","enumStringToValue$i","enumStringToValue$e","enumStringToValue$d","enumStringToValue$c","enumStringToValue$a","enumStringToValue$9","enumStringToValue$7","enumStringToValue$3","enumStringToValue","buildFieldMask","obj","fieldMaskPaths","x","FieldMask","CompetitionAnalysis","GlobalConfigEnabledSection","Grade","Section","VideoStyle","ListingListingStatus","ListingV2ListingStatus","DataProviderAccuracyStatus","DataProviderAccuracyStatusV2","GMBClaimStatus","Status","Vicinity","InstagramDataInstagramDataStatus","SSLSummaryStatus","AppDomain","SalesPerson","Competitor","Contact","Email","GlobalConfig","IndustryPercentiles","InferredFields","LanguageConfig","SectionContent","Snapshot","SnapshotData","AdvertisingConfig","AdvertisingData","AdvertisingSection","AdwordsData","Clicks","DomainMetrics","FloatRange","Impressions","IntRange","PayPerClickData","Configuration","Current","AvailableListingSource","ListingPresenceCompetitor","ListingAccuracyCompetitor","DataProviderAccuracy","InaccurateData","Listing","ListingAccuracy","ListingConfig","ListingData","ListingV2ListingField","ListingPresence","ListingScan","ListingSection","ListingSource","ListingV2","Listings","ListingV2Source","ReviewDataCompetitor","ReviewConfig","ReviewData","ReviewDataItem","ReviewSection","SampleSourceCount","Keyword","KeywordMetrics","LatLng","LocalSEOData","OrganicDomainData","OrganicKeywordData","Results","ResultsReviews","SEOConfig","SEOData","SEODomainMetrics","SEOSection","SERPMetrics","Business","SnapshotLite","SocialDataCompetitor","SocialDataCompetitorFacebookData","FacebookData","FacebookPost","SocialDataCompetitorInstagramData","InstagramData","SocialConfig","SocialData","SocialDataItem","SocialSection","SocialDataCompetitorTwitterData","TwitterData","Audit","AuditDetail","AuditSummary","WebsiteDataCompetitor","CompetitorHomepageData","HomepageData","Rule","RuleDetail","RuleSummary","SSLSummary","WebsiteConfig","WebsiteData","WebsiteSection","Branding","BrandingAssets","URL","Application","EcommerceDataCompetitor","EcommerceConfig","EcommerceData","EcommerceSection","DirectCompetitor","Technology","TechnologyCategory","TechnologyConfig","TechnologyData","TechnologySection","CreateSnapshotRequest","CreateSnapshotResponse","CreateTechnologyRequest","CreateTechnologyResponse","DeleteTechnologyRequest","Domain","ForceRefreshSectionRequest","GeneratePDFRequest","GeneratePDFResponse","GetAdvertisingSectionResponse","GetAvailableListingSourcesRequest","GetAvailableListingSourcesResponse","GetBusinessIDFromSalesforceIDRequest","GetBusinessIDFromSalesforceIDResponse","GetConfigurationRequest","GetConfigurationResponse","GetCurrentRequest","GetCurrentResponse","GetDirectCompetitorsRequest","GetDirectCompetitorsResponse","GetDomainRequest","GetDomainResponse","GetEcommerceSectionResponse","GetLatestSnapshotIDRequest","GetLatestSnapshotIDResponse","GetListingScanRequest","GetListingScanResponse","GetListingSectionResponse","GetMultiTechnologyCategoryRequest","GetMultiTechnologyCategoryResponse","GetMultiTechnologyRequest","GetMultiTechnologyResponse","GetReviewSectionResponse","GetSEOSectionResponse","GetSalesPersonRequest","GetSalesPersonResponse","GetSectionAvailabilityRequest","GetSectionAvailabilityResponse","GetSectionRequest","GetSnapshotCountCreatedBySalespersonIDRequest","GetSnapshotCountCreatedBySalespersonIDResponse","GetSnapshotIDRequest","GetSnapshotIDResponse","GetSnapshotLiteRequest","GetSnapshotLiteResponse","GetSnapshotRequest","GetSnapshotResponse","GetSocialSectionResponse","GetSummaryRequest","GetSummaryResponse","GetTechnologyRequest","GetTechnologyResponse","GetTechnologySectionResponse","GetWebsiteSectionResponse","GetWhitelabelRequest","GetWhitelabelResponse","IgnoreListingSourceRequest","Location","PreviewEmailRequest","PreviewEmailResponse","PreviewRefreshSnapshotForBusinessesRequest","PreviewRefreshSnapshotForBusinessesResponse","ProvisionSnapshotOptions","ProvisionSnapshotRequest","ProvisionSnapshotResponse","SaveDirectCompetitorsRequest","SectionSummary","ShareSnapshotRequest","UnignoreListingSourceRequest","UpdateAdvertisingConfigRequest","UpdateCurrentRequest","UpdateEcommerceConfigRequest","UpdateListingConfigRequest","UpdateReviewConfigRequest","UpdateSEOConfigRequest","UpdateSnapshotConfigRequest","UpdateSnapshotLanguageConfigRequest","UpdateSnapshotLiteBusinessDataRequest","UpdateSocialConfigRequest","UpdateTechnologyConfigRequest","UpdateTechnologyRequest","UpdateWebsiteConfigRequest","environment","hostMap","HostService","AdvertisingSectionApiService","CurrentSnapshotApiService","EcommerceSectionApiService","ListingSectionApiService","ReviewSectionApiService","SEOSectionApiService","SnapshotLiteApiService","SnapshotApiService","SocialSectionApiService","TechnologySectionApiService","TechnologyApiService","WebsiteSectionApiService","AdvertisingSectionService","CurrentSnapshotService","ListingSectionService","ReviewSectionService","SEOSectionService","SnapshotLiteService","SocialSectionService","WebsiteSectionService","EcommerceSectionService","Origin","CORE_WEB_VITALS_SPEED_INDEX","CORE_WEB_VITALS_LARGEST_CONTENTFUL_PAINT","CORE_WEB_VITALS_MAX_POTENTIAL_FID","CORE_WEB_VITALS_CUMULATIVE_LAYOUT_SHIFT","CORE_WEB_VITALS_INTERACTIVE","SnapshotService","TechnologySectionService","init_vendasta_snapshot","__esmMin","init_core","init_http","init_operators","_SalesPerson","proto","m","kwargs","toReturn","_Competitor","_Contact","_Email","_GlobalConfig","v","_IndustryPercentiles","_InferredFields","_LanguageConfig","_SectionContent","_Snapshot","_SnapshotData","_AdvertisingConfig","_AdvertisingData","_AdvertisingSection","_AdwordsData","_Clicks","_DomainMetrics","_FloatRange","_Impressions","_IntRange","_PayPerClickData","_Configuration","_Current","_FieldMask","_AvailableListingSource","_ListingPresenceCompetitor","_ListingAccuracyCompetitor","_DataProviderAccuracy","_InaccurateData","_Listing","_ListingAccuracy","_ListingConfig","_ListingData","_ListingV2ListingField","_ListingPresence","_ListingScan","_ListingSection","_ListingSource","_ListingV2","_Listings","_ListingV2Source","_ReviewDataCompetitor","_ReviewConfig","_ReviewData","_ReviewDataItem","_ReviewSection","_SampleSourceCount","_Keyword","_KeywordMetrics","_LatLng","_LocalSEOData","_OrganicDomainData","_OrganicKeywordData","_Results","_ResultsReviews","_SEOConfig","_SEOData","_SEODomainMetrics","_SEOSection","_SERPMetrics","_Business","_SnapshotLite","_SocialDataCompetitor","_SocialDataCompetitorFacebookData","_FacebookData","_FacebookPost","_SocialDataCompetitorInstagramData","_InstagramData","_SocialConfig","_SocialData","_SocialDataItem","_SocialSection","_SocialDataCompetitorTwitterData","_TwitterData","_Audit","_AuditDetail","_AuditSummary","_WebsiteDataCompetitor","_CompetitorHomepageData","_HomepageData","_Rule","_RuleDetail","_RuleSummary","_SSLSummary","_WebsiteConfig","_WebsiteData","_WebsiteSection","_Branding","_BrandingAssets","_URL","_Application","_EcommerceDataCompetitor","_EcommerceConfig","_EcommerceData","k","_EcommerceSection","_DirectCompetitor","_Technology","_TechnologyCategory","_TechnologyConfig","_TechnologyData","_TechnologySection","_CreateSnapshotRequest","_CreateSnapshotResponse","_CreateTechnologyRequest","_CreateTechnologyResponse","_DeleteTechnologyRequest","_Domain","_ForceRefreshSectionRequest","_GeneratePDFRequest","_GeneratePDFResponse","_GetAdvertisingSectionResponse","_GetAvailableListingSourcesRequest","_GetAvailableListingSourcesResponse","_GetBusinessIDFromSalesforceIDRequest","_GetBusinessIDFromSalesforceIDResponse","_GetConfigurationRequest","_GetConfigurationResponse","_GetCurrentRequest","_GetCurrentResponse","_GetDirectCompetitorsRequest","_GetDirectCompetitorsResponse","_GetDomainRequest","_GetDomainResponse","_GetEcommerceSectionResponse","_GetLatestSnapshotIDRequest","_GetLatestSnapshotIDResponse","_GetListingScanRequest","_GetListingScanResponse","_GetListingSectionResponse","_GetMultiTechnologyCategoryRequest","_GetMultiTechnologyCategoryResponse","_GetMultiTechnologyRequest","_GetMultiTechnologyResponse","_GetReviewSectionResponse","_GetSEOSectionResponse","_GetSalesPersonRequest","_GetSalesPersonResponse","_GetSectionAvailabilityRequest","_GetSectionAvailabilityResponse","_GetSectionRequest","_GetSnapshotCountCreatedBySalespersonIDRequest","_GetSnapshotCountCreatedBySalespersonIDResponse","_GetSnapshotIDRequest","_GetSnapshotIDResponse","_GetSnapshotLiteRequest","_GetSnapshotLiteResponse","_GetSnapshotRequest","_GetSnapshotResponse","_GetSocialSectionResponse","_GetSummaryRequest","_GetSummaryResponse","_GetTechnologyRequest","_GetTechnologyResponse","_GetTechnologySectionResponse","_GetWebsiteSectionResponse","_GetWhitelabelRequest","_GetWhitelabelResponse","_IgnoreListingSourceRequest","_Location","_PreviewEmailRequest","_PreviewEmailResponse","_PreviewRefreshSnapshotForBusinessesRequest","_PreviewRefreshSnapshotForBusinessesResponse","_ProvisionSnapshotOptions","_ProvisionSnapshotRequest","_ProvisionSnapshotResponse","_SaveDirectCompetitorsRequest","_SectionSummary","_ShareSnapshotRequest","_UnignoreListingSourceRequest","_UpdateAdvertisingConfigRequest","_UpdateCurrentRequest","_UpdateEcommerceConfigRequest","_UpdateListingConfigRequest","_UpdateReviewConfigRequest","_UpdateSEOConfigRequest","_UpdateSnapshotConfigRequest","_UpdateSnapshotLanguageConfigRequest","_UpdateSnapshotLiteBusinessDataRequest","_UpdateSocialConfigRequest","_UpdateTechnologyConfigRequest","_UpdateTechnologyRequest","_UpdateWebsiteConfigRequest","t","ɵɵdefineInjectable","http","hostService","HttpHeaders","r","request","map","resp","__spreadProps","__spreadValues","ɵɵinject","HttpClient","_api","snapshotId","advertisingConfig","businessID","req","listingConfig","businessId","sourceId","reviewConfig","seoConfig","data","socialConfig","websiteConfig","ecommerceConfig","origin","originDetails","inferMissingData","source","detail","snapshotConfig","languageConfig","salesforceId","partnerId","sender","contacts","email","domain","type","binary","binaryLen","bytes","i","application","res","directCompetitors","technologyConfig","chartBlue","chartGreen","init_local_seo_graph_config","__esmMin","ɵɵelementStart","ɵɵelement","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","ɵɵpureFunction1","_c1","mod_r1","color","ɵɵtextInterpolate2","series","ctx_r1","config","yAxisTickFormatting","value","ɵɵtemplate","LocalSEOGraphComponent_ngx_charts_line_chart_2_ng_template_2_div_0_div_3_Template","ɵɵtextInterpolate1","formatDataPointDate","model_r3","name","alignment","LocalSEOGraphComponent_ngx_charts_line_chart_2_ng_template_2_div_0_Template","ɵɵtextInterpolate","model_r4","LocalSEOGraphComponent_ngx_charts_line_chart_2_ng_template_2_Template","ɵɵtemplateRefExtractor","LocalSEOGraphComponent_ngx_charts_line_chart_2_ng_template_4_Template","view","_c0","forceHoverState","seriesData","showLegend","showXAxis","showYAxis","colorOverrides","xAxisLabel","yAxisLabel","xAxisTickFormatting","disableTooltip","yAxisMin","yAxisMax","ɵɵpipeBind1","ɵɵelementContainerStart","_c2","legendItem_r5","iconColor","legendTranslationKey","getAlignmentPeriodForDayJSRange","start","end","numMonths","diff","AlignmentPeriodCalendar","CALENDAR_MONTH","CALENDAR_WEEK","CALENDAR_DAY","formatSeriesData","data","filter","e","MaxRank","map","l","offsetToUTCZero","date","toString","offset","dayjs","utcOffset","utc","subtract","toDate","import_dayjs","LocalSEOGraphComponent","init_local_seo_graph_component","__esmMin","init_vendasta_multi_location_analytics","init_local_seo","init_local_seo_graph_config","constructor","translate","legendConfig","icon","chartGreen","chartBlue","ngOnChanges","window","requestAnimationFrame","dispatchEvent","Event","ngOnInit","buildChartConfig","localSEOData","seoData","defaultMultiConfig","LocaleDateTickFormatting","WholeNumberTickFormatting","instant","range","metrics","dateRange","localRank","organicRank","__spreadProps","__spreadValues","Math","abs","aligment","format","ɵɵdirectiveInject","TranslateService","selectors","inputs","features","ɵɵNgOnChangesFeature","decls","vars","consts","template","rf","ctx","LocalSEOGraphComponent_ngx_charts_line_chart_2_Template","LocalSEOGraphComponent_ng_container_4_Template","_LocalSEOGraphComponent","SEOPerformance","init_local_seo_grid","__esmMin","TOP","ranking","color","AVERAGE","BOTTOM","UNKNOWN","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ctx_r0","localSEOData","keyword","ɵɵproperty","ɵɵpureFunction2","_c2","MainBusinessPerformance","SEOPerformance","TOP","AVERAGE","MainBusinessRank","ɵɵtemplate","LocalSEOGridComponent_ng_template_1_ng_template_0_Template","ɵɵelementContainer","ɵɵlistener","i_r3","ɵɵrestoreView","_r2","index","ɵɵnextContext","ɵɵresetView","onMarkerClick","_c3","marker_r4","lat","lng","icon","label","ɵɵpipeBind1","ɵɵelement","ɵɵpipeBind2","ɵɵpureFunction3","_c5","search_r5","getConvertedRadiusValue","radiusSetting","mapUnits","translatedMapUnitsKMS","ɵɵsanitizeHtml","result_r6","reviews","rating","ɵɵpureFunction1","_c7","count","businessPerformance","rank","phoneNumber","country","_c8","index_r7","LocalSEOGridComponent_ng_template_7_ng_container_9_div_1_span_9_Template","LocalSEOGridComponent_ng_template_7_ng_container_9_div_1_span_10_Template","LocalSEOGridComponent_ng_template_7_ng_container_9_div_1_span_11_Template","LocalSEOGridComponent_ng_template_7_ng_container_9_div_1_span_12_Template","LocalSEOGridComponent_ng_template_7_ng_container_9_div_1_span_20_Template","LocalSEOGridComponent_ng_template_7_ng_container_9_div_1_mat_divider_21_Template","ɵɵclassProp","url","ɵɵpropertyInterpolate","ɵɵsanitizeUrl","businessName","claimStatus_r10","_c6","claimStatus","isMainBusiness","address","phoneNotFound_r9","last_r8","ɵɵelementContainerStart","_c9","businessData","companyName","LocalSEOGridComponent_ng_template_7_ng_container_9_div_1_Template","LocalSEOGridComponent_ng_template_7_ng_container_9_ng_container_2_Template","results","mainBusiness","ɵɵtextInterpolate2","offsetUTC","date","LocalSEOGridComponent_ng_template_7_ng_template_15_ng_container_1_Template","LocalSEOGridComponent_ng_template_7_ng_template_15_ng_container_2_Template","LocalSEOGridComponent_ng_template_7_ng_template_15_ng_container_3_Template","claimStatus_r11","GMBClaimStatus","GMB_CLAIM_STATUS_CLAIMED","GMB_CLAIM_STATUS_UNCLAIMED","LocalSEOGridComponent_ng_template_7_div_4_Template","LocalSEOGridComponent_ng_template_7_div_5_Template","LocalSEOGridComponent_ng_template_7_div_7_Template","LocalSEOGridComponent_ng_template_7_div_8_Template","LocalSEOGridComponent_ng_template_7_ng_container_9_Template","LocalSEOGridComponent_ng_template_7_ng_container_10_Template","LocalSEOGridComponent_ng_template_7_ng_template_11_Template","ɵɵtemplateRefExtractor","LocalSEOGridComponent_ng_template_7_ng_template_13_Template","LocalSEOGridComponent_ng_template_7_ng_template_15_Template","_c4","CenterPoint","latitude","longitude","zoomValue","markers_r12","data","vicinity","Vicinity","VICINITY_CITY","searchRadius","length","noSearchResults_r13","OrdinalNumberPipe","selectedMarkerOpacity","markerOpacity","LocalSEOGridComponent","init_local_seo_grid_component","__esmMin","init_vendasta_listing_products","init_vendasta_snapshot","init_esm","init_local_seo_graph_component","init_local_seo_grid","nth","n","transform","value","pure","_OrdinalNumberPipe","Status","center","localSearches","find","search","VICINITY_C3","searchLocation","location","result","constructor","ordinalPipe","translate","currentNearMeSearch$$","ReplaySubject","conversionFactor","currentNearMeSearch$","asObservable","ngOnInit","next","nearMeMarkers","buildMarkers","getLocalStorage","instant","get","subscribe","translation","setNearMeSelectedMarker","offsetToUTCZero","toString","BOTTOM","UNKNOWN","key","localStorage","getItem","agid","searches","businessMarkers","forEach","s","markerBase","path","strokeWeight","strokeColor","scale","fillOpacity","setSelectedCenterMarker","mainBusinessFiltered","filter","b","markerIcon","__spreadProps","__spreadValues","fillColor","color","push","text","m","convertStringToNumber","radiusValue","kilometersTranslationKey","kilometers","Math","round","ɵɵdirectiveInject","TranslateService","selectors","inputs","features","ɵɵProvidersFeature","decls","vars","consts","template","rf","ctx","LocalSEOGridComponent_ng_template_1_Template","LocalSEOGridComponent_ng_container_3_Template","LocalSEOGridComponent_ng_container_5_Template","LocalSEOGridComponent_ng_template_7_Template","currentNearMeSearch_r14","_c0","businessesRanking_r15","_c1","_LocalSEOGridComponent","ɵɵelement","ɵɵproperty","ctx_r0","emptyStateImageURL","ɵɵsanitizeUrl","ɵɵelementContainerStart","ɵɵtemplate","LocalSEOTableComponent_ng_container_0_img_1_Template","ɵɵadvance","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵtextInterpolate","ɵɵpipeBind1","columnConfig","name","LocalSEOTableComponent_ng_template_1_div_0_table_1_td_4_mat_icon_2_Template","seoData_r3","expandedData","hideDropdown","settings","favoriteKeywords","includes","keyword","value","ɵɵtextInterpolate1","iconURL_r4","LocalSEOTableComponent_ng_template_1_div_0_table_1_ng_container_5_th_1_ng_container_1_Template","ɵɵclassMap","column_r5","class","iconURL","ɵɵsanitizeHtml","seoData_r7","rawValue","deltaColumn_r6","LocalSEOTableComponent_ng_template_1_div_0_table_1_ng_container_5_td_2_ng_container_3_ng_container_1_local_seo_delta_1_Template","LocalSEOTableComponent_ng_template_1_div_0_table_1_ng_container_5_td_2_ng_container_3_ng_container_1_Template","deltaColumn","LocalSEOTableComponent_ng_template_1_div_0_table_1_ng_container_5_td_2_ng_container_3_Template","showDelta","LocalSEOTableComponent_ng_template_1_div_0_table_1_ng_container_5_th_1_Template","LocalSEOTableComponent_ng_template_1_div_0_table_1_ng_container_5_td_2_Template","iconURL_r8","LocalSEOTableComponent_ng_template_1_div_0_table_1_th_9_ng_container_1_Template","iconURL_r9","LocalSEOTableComponent_ng_template_1_div_0_table_1_th_11_ng_container_1_Template","element_r10","LocalSEOTableComponent_ng_template_1_div_0_table_1_td_16_mat_icon_1_Template","ɵɵlistener","ɵɵrestoreView","_r12","ɵɵnextContext","ɵɵresetView","onSelectActiveTab","agid","location","getZoomLevel","searchRadius","localSearchRadius","LocalSEOTableComponent_ng_template_1_div_0_table_1_td_18_div_1_ng_container_1_ng_container_1_ng_container_14_ng_container_1_local_seo_grid_1_Template","inProgress","keywordEmpty_r13","LocalSEOTableComponent_ng_template_1_div_0_table_1_td_18_div_1_ng_container_1_ng_container_1_ng_container_14_ng_container_1_Template","proActive","blurredGrid_r14","LocalSEOTableComponent_ng_template_1_div_0_table_1_td_18_div_1_ng_container_1_ng_container_1_ng_container_15_ng_container_1_local_seo_graph_1_Template","LocalSEOTableComponent_ng_template_1_div_0_table_1_td_18_div_1_ng_container_1_ng_container_1_ng_container_15_ng_container_1_Template","blurredGraph_r15","ɵɵelementContainer","LocalSEOTableComponent_ng_template_1_div_0_table_1_td_18_div_1_ng_container_1_ng_container_1_ng_container_16_ng_container_1_Template","settingsTab_r16","_r11","LocalSEOTableComponent_ng_template_1_div_0_table_1_td_18_div_1_ng_container_1_ng_container_1_mat_button_toggle_13_Template","LocalSEOTableComponent_ng_template_1_div_0_table_1_td_18_div_1_ng_container_1_ng_container_1_ng_container_14_Template","LocalSEOTableComponent_ng_template_1_div_0_table_1_td_18_div_1_ng_container_1_ng_container_1_ng_container_15_Template","LocalSEOTableComponent_ng_template_1_div_0_table_1_td_18_div_1_ng_container_1_ng_container_1_ng_container_16_Template","disableEditingKeywords","activeTab","LocalSEOTableComponent_ng_template_1_div_0_table_1_td_18_div_1_ng_container_1_ng_container_1_Template","editionUpgradeHidden","$event","_r17","updateFavoriteKeywords","checked","updateSyncingKeywords","deleteKeyword","emit","syncingKeywords","LocalSEOTableComponent_ng_template_1_div_0_table_1_td_18_div_1_ng_container_1_Template","LocalSEOTableComponent_ng_template_1_div_0_table_1_td_18_div_1_ng_template_2_Template","ɵɵtemplateRefExtractor","element_r18","LocalSEOTableComponent_ng_template_1_div_0_table_1_td_18_div_1_Template","row_r20","_r19","$implicit","ɵɵclassProp","LocalSEOTableComponent_ng_template_1_div_0_table_1_th_3_Template","LocalSEOTableComponent_ng_template_1_div_0_table_1_td_4_Template","LocalSEOTableComponent_ng_template_1_div_0_table_1_ng_container_5_Template","LocalSEOTableComponent_ng_template_1_div_0_table_1_th_7_Template","LocalSEOTableComponent_ng_template_1_div_0_table_1_th_9_Template","LocalSEOTableComponent_ng_template_1_div_0_table_1_th_11_Template","LocalSEOTableComponent_ng_template_1_div_0_table_1_th_13_Template","LocalSEOTableComponent_ng_template_1_div_0_table_1_th_15_Template","LocalSEOTableComponent_ng_template_1_div_0_table_1_td_16_Template","LocalSEOTableComponent_ng_template_1_div_0_table_1_td_18_Template","LocalSEOTableComponent_ng_template_1_div_0_table_1_tr_19_Template","LocalSEOTableComponent_ng_template_1_div_0_table_1_tr_20_Template","LocalSEOTableComponent_ng_template_1_div_0_table_1_tr_21_Template","LocalSEOTableComponent_ng_template_1_div_0_table_1_tr_22_Template","dataSource","statColumns","topColumns","columns","ɵɵpureFunction0","_c0","_c1","_r2","setSortSettings","LocalSEOTableComponent_ng_template_1_div_0_table_1_Template","LocalSEOTableComponent_ng_template_1_div_0_mat_paginator_2_Template","sortSettings","active","direction","data","length","LocalSEOTableComponent_ng_template_1_div_0_Template","loading$","loadingTable_r21","column_r23","LocalSEOTableComponent_ng_template_3_ng_container_5_th_1_img_1_Template","LocalSEOTableComponent_ng_template_3_ng_container_5_th_1_Template","iconURL_r24","LocalSEOTableComponent_ng_template_3_th_9_ng_container_1_Template","iconURL_r25","LocalSEOTableComponent_ng_template_3_th_11_ng_container_1_Template","element_r26","element_r27","_r22","LocalSEOTableComponent_ng_template_3_th_4_Template","LocalSEOTableComponent_ng_template_3_ng_container_5_Template","LocalSEOTableComponent_ng_template_3_th_7_Template","LocalSEOTableComponent_ng_template_3_th_9_Template","LocalSEOTableComponent_ng_template_3_th_11_Template","LocalSEOTableComponent_ng_template_3_th_13_Template","LocalSEOTableComponent_ng_template_3_th_15_Template","LocalSEOTableComponent_ng_template_3_td_16_Template","LocalSEOTableComponent_ng_template_3_td_18_Template","LocalSEOTableComponent_ng_template_3_tr_19_Template","LocalSEOTableComponent_ng_template_3_tr_20_Template","LocalSEOTableComponent_ng_template_3_tr_21_Template","ɵɵpureFunction1","_c3","_c2","_r28","upgradeButtonClicked","_r29","getValuesForSorting","sortHeaderId","toLocaleLowerCase","SEODATA_TAB_GRID","LocalSEOTableComponent","init_local_seo_table_component","__esmMin","init_animations","init_core","init_paginator","init_sort","init_table","init_esm","init_local_seo","SEOData","sort","paginator","sortData","favorites","filter","item","isFavorite","nonFavorites","sortedData","constructor","translate","MatTableDataSource","EventEmitter","favoriteKeywordsChanged","syncingKeywordsChanged","subscriptions","selectedTab$$","BehaviorSubject","maxRank","MaxRank","local","organic","localRank","organicRank","localStartedAt","organicStartedAt","difficulty","searchVolume","empty","empty2","selectedTab$","asObservable","matSort","ms","setDataSourceAttributes","matPaginator","mp","tab","next","ngOnInit","push","subscribe","ngOnDestroy","forEach","sub","unsubscribe","__spreadValues","radius","SEODataSearchRadiusZoomValue","SEARCH_RADIUS_LOCAL","favKeyword","a","b","valueA","valueB","ɵɵdirectiveInject","TranslateService","selectors","viewQuery","rf","ctx","MatSort","MatPaginator","LocalSEOTableComponent_ng_container_0_Template","LocalSEOTableComponent_ng_template_1_Template","LocalSEOTableComponent_ng_template_3_Template","LocalSEOTableComponent_ng_template_5_Template","LocalSEOTableComponent_ng_template_7_Template","LocalSEOTableComponent_ng_template_9_Template","keywords","showTable_r30","trigger","state","style","height","minHeight","transition","animate","transform","_LocalSEOTableComponent","round","v","p2b","lim","n2b","b2n","n2p","hexParse","str","len","ret","map$1","hexString","f","isShort","h1","h2","alpha","hsl2rgbn","h","s","l","a","n","k","hsv2rgbn","hwb2rgbn","w","b","rgb","i","hueValue","r","g","d","max","rgb2hsl","min","calln","c","hsl2rgb","hwb2rgb","hsv2rgb","hue","hueParse","m","HUE_RE","p1","p2","rotate","deg","hslString","unpack","unpacked","keys","names$1","tkeys","map","j","ok","nk","nameParse","names","rgbParse","RGB_RE","rgbString","interpolate","rgb1","rgb2","t","from","to","modHSL","ratio","tmp","clone","proto","fromObject","input","functionParse","hex","eq","Color","init_color_esm","__esmMin","_Color","type","obj","color","weight","c1","c2","w2","p","w1","val","noop","isNullOrUndef","value","isArray","type","isObject","isNumberFinite","finiteOrDefault","defaultValue","valueOrDefault","callback","fn","args","thisArg","each","loopable","reverse","i","len","keys","_elementsEqual","a0","a1","ilen","v0","v1","clone","source","target","klen","k","isValidKey","key","_merger","options","tval","sval","merge","sources","merger","current","mergeIf","_mergerIf","_splitKey","parts","tmp","part","_getKeyResolver","obj","resolveObjectKey","keyResolvers","_capitalize","str","_isClickEvent","e","almostEquals","x","y","epsilon","niceNum","range","roundedRange","niceRange","log10","fraction","_factorize","result","sqrt","a","b","isNumber","n","almostWhole","rounded","_setMinAndMaxByKey","array","property","toRadians","degrees","PI","toDegrees","radians","_decimalPlaces","p","getAngleFromPoint","centrePoint","anglePoint","distanceFromXCenter","distanceFromYCenter","radialDistanceFromCenter","angle","TAU","distanceBetweenPoints","pt1","pt2","_angleDiff","PITAU","_normalizeAngle","_angleBetween","start","end","sameAngleIsFullCircle","s","angleToStart","angleToEnd","startToAngle","endToAngle","_limitValue","min","max","_int16Range","_isBetween","_lookup","table","cmp","index","hi","lo","mid","_filterBetween","values","listenArrayEvents","listener","arrayEvents","method","base","res","object","unlistenArrayEvents","stub","listeners","_arrayUnique","items","set","throttled","argsToUse","ticking","requestAnimFrame","debounce","delay","timeout","_getStartAndCountOfVisiblePoints","meta","points","animationsDisabled","pointCount","count","iScale","_parsed","axis","minDefined","maxDefined","_lookupByKey","_scaleRangesChanged","xScale","yScale","_scaleRanges","newRanges","changed","isPatternOrGradient","color","Color","getHoverColor","applyAnimationsDefaults","defaults","name","colors","numbers","v","applyLayoutsDefaults","getNumberFormat","locale","cacheKey","formatter","intlCache","formatNumber","num","calculateDelta","tickValue","ticks","delta","applyScaleDefaults","_ctx","Ticks","getScope$1","node","root","scope","toFontString","font","_measureText","ctx","data","gc","longest","string","textWidth","_longestText","arrayOfThings","cache","j","jlen","thing","nestedThing","gcLen","_alignPixel","chart","pixel","width","devicePixelRatio","halfWidth","clearCanvas","canvas","drawPoint","drawPointLegend","w","xOffset","yOffset","size","cornerRadius","xOffsetW","yOffsetW","style","rotation","radius","rad","RAD_PER_DEG","TWO_THIRDS_PI","QUARTER_PI","HALF_PI","_isPointInArea","point","area","margin","clipArea","unclipArea","_steppedLineTo","previous","flip","mode","midpoint","_bezierCurveTo","setRenderOpts","opts","decorateText","line","metrics","left","right","top","bottom","yDecoration","drawBackdrop","oldColor","renderText","text","lines","stroke","addRoundedRectPath","rect","h","toLineHeight","matches","LINE_HEIGHT","_readValueToProps","props","ret","objProps","read","prop","numberOrZero","toTRBL","toTRBLCorners","toPadding","toFont","fallback","FONT_STYLE","resolve","inputs","context","info","cacheable","_addGrace","minmax","grace","beginAtZero","change","toDimension","keepZero","add","createContext","parentContext","_createResolver","scopes","prefixes","rootScopes","getTarget","finalRootScopes","_resolve","_cached","_resolveWithPrefixes","getKeysFromAllScopes","storage","_attachContext","proxy","subProxy","descriptorDefaults","_descriptors","receiver","_resolveWithContext","_scriptable","_indexable","_allKeys","isFunction","_proxy","_context","_subProxy","descriptors","_resolveScriptable","_resolveArray","needsSubResolver","getValue","_stack","createSubResolver","isIndexable","arr","item","resolver","resolveFallback","addScopes","parentScopes","parentFallback","parent","getScope","allScopes","addScopesFromKey","subGetTarget","prefix","readKey","resolveKeysFromAllScopes","_parseObjectDataRadialScale","parsed","splineCurve","firstPoint","middlePoint","afterPoint","t","next","d01","d12","s01","s12","fa","fb","monotoneAdjust","deltaK","mK","pointsLen","alphaK","betaK","tauK","squaredMagnitude","pointCurrent","pointAfter","getPoint","EPSILON","monotoneCompute","indexAxis","valueAxis","getValueAxis","pointBefore","iPixel","vPixel","splineCurveMonotone","slopeDelta","sign","capControlPoint","pt","capBezierPoints","inArea","inAreaPrev","inAreaNext","_updateBezierControlPoints","loop","controlPoints","prev","_isDomSupported","_getParentNode","domNode","parseMaxStyle","styleValue","parentProperty","valueInPixels","getStyle","el","getComputedStyle","getPositionedStyle","styles","suffix","pos","positions","getCanvasPosition","touches","offsetX","offsetY","box","useOffsetPos","getRelativePosition","event","currentDevicePixelRatio","borderBox","paddings","borders","height","getContainerSize","maxWidth","maxHeight","container","containerStyle","containerBorder","containerPadding","INFINITY","getMaximumSize","bbWidth","bbHeight","aspectRatio","margins","containerSize","round1","retinaScale","forceRatio","forceStyle","pixelRatio","deviceHeight","deviceWidth","readUsedSize","element","_pointInLine","p1","p2","_steppedInterpolation","_bezierInterpolation","cp1","cp2","d","getRtlAdapter","rtl","rectX","getRightToLeftAdapter","getLeftToRightAdapter","overrideTextDirection","direction","original","restoreTextDirection","propertyFn","normalizeSegment","getSegment","segment","bounds","startBound","endBound","between","normalize","_boundSegment","compare","inside","subStart","prevValue","startIsBefore","endIsBefore","shouldStart","shouldStop","_boundSegments","segments","sub","findStartAndEnd","spanGaps","solidSegments","last","cur","_computeSegments","segmentOptions","splitByStyles","completeLoop","doSplitByStyles","chartContext","baseStyle","readStyle","datasetIndex","prevStyle","addStyle","l","st","dir","styleChanged","replacer","uid","toPercentage","defined","setsEqual","_rlookupByKey","_toLeftRightCenter","_alignStartEnd","_textX","atEdge","elasticIn","elasticOut","effects","formatters","overrides","Defaults","supportsEventListenerOptions","init_helpers_segment","__esmMin","init_color_esm","id","dimension","o","ti","align","notation","maxTick","logDelta","numDecimal","remain","_appliers","targetScope","targetName","scopeObject","targetScopeObject","privateName","local","appliers","apply","passiveSupported","itemWidth","_itemWidth","awaitAll","animations","properties","running","keys","i","anim","resolveTargetOptions","target","newOptions","options","scaleClip","scale","allowedOverflow","opts","reverse","min","max","defaultClip","xScale","yScale","x","y","toClip","value","r","b","l","isObject","getSortedDatasetIndices","chart","filterVisible","metasets","ilen","applyStack","stack","dsIndex","singleMode","datasetIndex","otherValue","isNumberFinite","sign","convertObjectDataToArray","data","adata","key","isStacked","meta","stacked","getStackKey","indexScale","valueScale","getUserBounds","minDefined","maxDefined","getOrCreateStack","stacks","stackKey","indexValue","subStack","getLastIndexInStack","vScale","positive","type","updateStacks","controller","parsed","iScale","iAxis","vAxis","item","index","itemStacks","visualValues","getFirstScaleId","axis","scales","createDatasetContext","parent","createContext","createDataContext","element","clearStacks","items","getAllScaleValues","visibleMetas","values","_arrayUnique","a","computeMinSampleSize","curr","prev","updateMinAndPrev","defined","computeFitCategoryTraits","ruler","stackCount","thickness","size","ratio","isNullOrUndef","computeFlexCategoryTraits","pixels","next","percent","start","parseFloatBar","entry","startValue","endValue","barStart","barEnd","parseValue","isArray","parseArrayOrPrimitive","count","labels","singleScale","isFloatBar","custom","barSign","actualBase","borderProps","end","top","bottom","setBorderSkipped","edge","res","parseEdge","swap","startEnd","orig","v1","v2","v","setInflateAmount","inflateAmount","getRatioAndOffset","rotation","circumference","cutout","ratioX","ratioY","offsetX","offsetY","TAU","startAngle","endAngle","startX","startY","endX","endY","calcMax","angle","_angleBetween","calcMin","maxX","maxY","HALF_PI","minX","PI","minY","abstract","binarySearch","metaset","intersect","_sorted","lookupMethod","_rlookupByKey","_lookupByKey","el","range","evaluateInteractionItems","position","handler","lo","hi","j","getDistanceMetricForAxis","useX","useY","pt1","pt2","deltaX","deltaY","getIntersectItems","useFinalPosition","includeInvisible","_isPointInArea","getNearestRadialItems","evaluationFunc","getAngleFromPoint","getNearestCartesianItems","distanceMetric","minDistance","inRange","center","distance","getNearestItems","getAxisItems","rangeMethod","intersectsItem","filterByPosition","array","filterDynamicPositionByAxis","STATIC_POSITIONS","sortByWeight","v0","wrapBoxes","boxes","layoutBoxes","box","pos","stackWeight","buildStacks","layouts","wrap","_stack","setLayoutDims","params","vBoxMaxWidth","hBoxMaxHeight","layout","fullSize","factor","buildLayoutBoxes","left","right","centerHorizontal","centerVertical","getCombinedMax","maxPadding","chartArea","updateMaxPadding","boxPadding","updateDims","newWidth","newHeight","widthChanged","heightChanged","handleMaxPadding","updatePos","change","getMargins","horizontal","marginForPositions","positions","margin","fitBoxes","refitBoxes","refit","changed","same","other","setBoxDims","width","height","placeBoxes","userPadding","weight","initCanvas","canvas","aspectRatio","style","renderHeight","renderWidth","EXPANDO_KEY","isNullOrEmpty","displayWidth","readUsedSize","displayHeight","addListener","node","listener","eventListenerOptions","removeListener","fromNativeEvent","event","EVENT_TYPES","getRelativePosition","nodeListContains","nodeList","createAttachObserver","observer","entries","trigger","createDetachObserver","onWindowResize","dpr","oldDevicePixelRatio","drpListeningCharts","resize","listenDevicePixelRatioChanges","unlistenDevicePixelRatioChanges","createResizeObserver","container","_getParentNode","throttled","w","releaseObserver","createProxyAndListen","proxy","_detectPlatform","_isDomSupported","BasicPlatform","DomPlatform","autoSkip","ticks","tickOpts","determinedMaxTicks","determineMaxTicks","ticksLimit","majorIndices","getMajorIndices","numMajorIndices","first","last","newTicks","skipMajors","spacing","calculateSpacing","avgMajorSpacing","skip","offset","tickLength","maxScale","maxChart","evenMajorSpacing","getEvenSpacing","factors","_factorize","result","majorStart","majorEnd","valueOrDefault","length","arr","len","diff","sample","numItems","increment","getPixelForGridLine","offsetGridLines","validIndex","epsilon","lineValue","garbageCollect","caches","each","cache","gc","gcLen","getTickMarkLength","getTitleHeight","fallback","font","toFont","padding","toPadding","createScaleContext","createTickContext","tick","titleAlign","align","ret","_toLeftRightCenter","reverseAlign","titleArgs","maxWidth","titleX","titleY","_alignStartEnd","positionAxisID","offsetFromEdge","registerDefaults","scope","parentScope","itemDefaults","merge","defaults","routeDefaults","routes","property","propertyParts","sourceName","sourceScope","parts","targetName","targetScope","isIChartComponent","proto","allPlugins","config","localIds","plugins","registry","local","plugin","getOpts","all","createDescriptors","context","id","pluginOpts","scopes","getIndexAxis","datasetDefaults","getAxisFromDefaultScaleID","indexAxis","getDefaultScaleIDFromAxis","idMatchesAxis","axisFromPosition","determineAxis","scaleOptions","getAxisFromDataset","dataset","retrieveAxisFromDatasets","boundDs","d","mergeScaleConfig","chartDefaults","overrides","configScales","chartIndexAxis","scaleConf","defaultId","defaultScaleOptions","mergeIf","defaultID","initOptions","initData","initConfig","cachedKeys","cacheKey","generate","keyCache","keysCached","getResolver","resolverCache","prefixes","cached","_createResolver","p","needContext","names","isScriptable","isIndexable","_descriptors","prop","scriptable","indexable","isFunction","hasFunction","positionIsHorizontal","KNOWN_POSITIONS","compare2Level","l1","l2","onAnimationsComplete","animationOptions","callback","onAnimationProgress","getCanvas","moveNumericKeys","obj","move","intKey","determineLastEvent","e","lastEvent","inChartArea","isClick","getSizeForArea","field","getDatasetArea","invalidatePlugins","Chart","clipArc","ctx","pixelMargin","outerRadius","innerRadius","angleMargin","toRadiusCorners","_readValueToProps","parseBorderRadius$1","arc","angleDelta","o","halfThickness","innerLimit","computeOuterLimit","val","outerArcLimit","_limitValue","rThetaToXY","theta","pathArc","circular","innerR","spacingOffset","alpha","noSpacingInnerRadius","noSpacingOuterRadius","avNogSpacingRadius","adjustedAngle","beta","angleOffset","outerStart","outerEnd","innerStart","innerEnd","outerStartAdjustedRadius","outerEndAdjustedRadius","outerStartAdjustedAngle","outerEndAdjustedAngle","innerStartAdjustedRadius","innerEndAdjustedRadius","innerStartAdjustedAngle","innerEndAdjustedAngle","outerMidAdjustedAngle","pCenter","p4","innerMidAdjustedAngle","p8","outerStartX","outerStartY","outerEndX","outerEndY","drawArc","fullCircles","drawBorder","borderWidth","borderJoinStyle","borderDash","borderDashOffset","inner","setStyle","lineTo","previous","getLineMethod","_steppedLineTo","_bezierCurveTo","pathVars","points","segment","paramsStart","paramsEnd","segmentStart","segmentEnd","outside","pathSegment","line","loop","lineMethod","point","fastPathSegment","avgX","countX","prevX","lastY","pointIndex","drawX","truncX","_getSegmentMethod","_getInterpolationMethod","_steppedInterpolation","_bezierInterpolation","_pointInLine","strokePathWithCache","path","strokePathDirect","segments","segmentMethod","draw","usePath2D","inRange$1","getBarBounds","bar","base","half","skipOrLimit","parseBorderWidth","maxW","maxH","toTRBL","parseBorderRadius","enableBorderRadius","toTRBLCorners","maxR","enableBorder","boundingRects","bounds","border","radius","skipX","skipY","_isBetween","hasRadius","addNormalRectPath","rect","inflateRect","amount","refRect","h","getBorderColor","BORDER_COLORS","getBackgroundColor","BACKGROUND_COLORS","colorizeDefaultDataset","colorizeDoughnutDataset","colorizePolarAreaDataset","getColorizer","DoughnutController","PolarAreaController","containsColorsDefinitions","descriptors","k","containsColorsDefinition","descriptor","lttbDecimation","availableWidth","samples","decimated","bucketWidth","sampledIndex","endIndex","maxAreaPoint","maxArea","area","nextA","avgY","avgRangeStart","avgRangeEnd","avgRangeLength","rangeOffs","rangeTo","pointAx","pointAy","minMaxDecimation","minIndex","maxIndex","startIndex","xMin","dx","lastIndex","intermediateIndex1","intermediateIndex2","__spreadProps","__spreadValues","cleanDecimatedDataset","cleanDecimatedData","getStartAndCountOfVisiblePointsSimplified","pointCount","_segments","tpoints","_findSegmentEnd","_getBounds","targetSegments","_boundSegments","tgt","subBounds","fillSources","_boundSegment","fillSource","_getEdge","_normalizeAngle","_pointsFromSegments","boundary","linePoints","fn","_createBoundaryLine","_loop","LineElement","_shouldApplyFill","source","_resolveTarget","sources","propagate","fill","visited","_decodeFill","parseFillOption","decodeTargetIndex","firstCh","_getTargetPixel","pixel","_getTargetValue","fillOption","_buildStackLine","sourcePoints","linesBelow","getLinesBelow","addPointsBelow","below","metas","sourcePoint","postponed","findPoint","pointValue","firstValue","lastValue","_getTarget","getLineByIndex","computeBoundary","simpleArc","computeCircularBoundary","computeLinearBoundary","_drawfill","lineOpts","color","above","clipArea","doFill","unclipArea","cfg","clipVertical","clipY","lineLoop","firstPoint","lastPoint","src","backgroundColor","notShape","clipBounds","interpolatedLineTo","targetLoop","interpolatedPoint","calculateItemSize","boxWidth","labelFont","legendItem","_itemHeight","itemWidth","calculateItemWidth","itemHeight","calculateItemHeight","legendItemText","fontLineHeight","calculateLegendItemHeight","labelHeight","isListened","createTitle","titleOpts","title","Title","pushOrConcat","toPush","splitNewlines","str","createTooltipItem","label","getTooltipSize","tooltip","body","footer","boxHeight","bodyFont","titleFont","footerFont","titleLineCount","footerLineCount","bodyLineItemCount","combinedBodyLength","bodyItem","bodyLineHeight","widthPadding","maxLineWidth","determineYAlign","doesNotFitWithAlign","xAlign","caret","determineXAlign","yAlign","chartWidth","determineAlignment","alignX","alignY","paddingAndSize","getBackgroundPoint","alignment","caretSize","caretPadding","cornerRadius","topLeft","topRight","bottomLeft","bottomRight","getAlignedX","getBeforeAfterBodyLines","createTooltipContext","tooltipItems","overrideCallbacks","callbacks","override","invokeCallbackWithFallback","name","arg","defaultCallbacks","findOrAddLabel","raw","addedLabels","addIfString","_getLabelForValue","generateTicks$1","generationOptions","dataRange","step","precision","maxTicks","maxDigits","includeBounds","unit","maxSpaces","rmin","rmax","countDefined","minSpacing","niceNum","niceMin","niceMax","numSpaces","almostWhole","almostEquals","decimalPlaces","_decimalPlaces","relativeLabelSize","tickValue","minRotation","rad","toRadians","isMajor","tickVal","log10Floor","steps","rangeExp","rangeStep","startExp","generateTicks","finiteOrDefault","minExp","exp","stepSize","significand","lastTick","getTickBackdropHeight","measureLabelSize","_longestText","determineLimits","fitWithPointLabels","limits","labelSizes","valueCount","pointLabelOpts","additionalAngle","pointPosition","plFont","textSize","angleRadians","toDegrees","hLimits","vLimits","updateLimits","buildPointLabelItems","sin","cos","createPointLabelItem","itemOpts","outerDistance","extra","pointLabelPosition","yForAngle","textAlign","getTextAlignForAngle","leftForTextAlign","isNotOverlapped","centerPointLabels","display","drawPointLabelBox","backdropColor","borderRadius","backdropLeft","backdropTop","backdropWidth","backdropHeight","addRoundedRectPath","drawPointLabels","labelCount","pointLabels","optsAtIndex","renderText","pathRadiusLine","drawRadiusLine","gridLineOpts","borderOpts","lineWidth","createPointLabelContext","sorter","parse","input","adapter","parser","round","isoWeekday","isNumber","determineUnitForAutoTicks","minUnit","capacity","UNITS","interval","INTERVALS","determineUnitForFormatting","numTicks","determineMajorUnit","addTick","time","timestamps","_lookup","timestamp","setMajorTicks","map","majorUnit","major","ticksFromTimestamps","interpolate","table","prevSource","nextSource","prevTarget","nextTarget","span","Animator","animator","transparent","interpolators","Animation","Animations","isDirectUpdateMode","cloneIfNotShared","createStack","DatasetController","BarController","BubbleController","LineController","PieController","RadarController","ScatterController","controllers","DateAdapterBase","adapters","Interaction","BasePlatform","Element","getTicksLimit","Scale","TypedRegistry","Registry","PluginService","addIfFound","Config","version","instances","getChart","ArcElement","PointElement","BarElement","elements","plugin_colors","plugin_decimation","getBoxSize","itemsEqual","Legend","plugin_legend","plugin_title","plugin_subtitle","positioners","Tooltip","plugin_tooltip","CategoryScale","LinearScaleBase","LinearScale","changeExponent","LogarithmicScale","RadialLinearScale","TimeScale","TimeSeriesScale","registerables","init_chart","__esmMin","init_helpers_segment","anims","date","numSteps","requestAnimFrame","remaining","charts","cb","acc","cur","from","to","c0","c1","currentValue","resolve","effects","elapsed","remain","duration","promises","rej","resolved","method","animatedProps","option","props","animation","mode","shared","canStack","chooseId","xid","yid","rid","iid","vid","scaleID","unlistenArrayEvents","_data","listenArrayEvents","resetNewElements","stackChanged","oldStacked","scopeKeys","_stacked","sorted","isNotInOrderComparedToPrev","xAxisKey","yAxisKey","resolveObjectKey","parsedValue","_parsed","otherScale","otherMin","otherMax","_skip","active","drawActiveElementsOnTop","elementType","sharing","transition","sharedOptions","firstOpts","previouslySharedOptions","includeOptions","arg1","arg2","numMeta","numData","removed","args","newCount","iAxisKey","vAxisKey","bars","reset","vpixels","ipixels","dataIndex","skipNull","barThickness","baseValue","minBarLength","floating","head","startPixel","endPixel","halfGrid","maxBarThickness","stackIndex","rects","iPixel","vPixel","pointStyle","legend","getter","arcs","maxSize","toPercentage","chartWeight","maxHeight","maxRadius","toDimension","radiusLength","animationOpts","centerX","centerY","animateScale","metaData","total","formatNumber","ringWeightOffset","_dataset","animationsDisabled","_getStartAndCountOfVisiblePoints","_scaleRangesChanged","spanGaps","maxGapLength","directUpdate","pointsCount","prevParsed","nullData","_parseObjectDataRadialScale","minSize","datasetStartAngle","defaultAngle","showLine","_DateAdapterBase","members","layoutItem","minPadding","availableHeight","verticalBoxes","horizontalBoxes","visibleVerticalBoxCount","supportsEventListenerOptions","initial","proxies","getMaximumSize","final","ticksLength","maxTicksLimit","_Scale","_userMin","_userMax","_suggestedMin","_suggestedMax","margins","beginAtZero","grace","sampleSize","_addGrace","samplingEnabled","reversePixels","maxRotation","labelRotation","tickWidth","maxLabelDiagonal","maxLabelWidth","maxLabelHeight","gridOpts","isHorizontal","titleHeight","widest","highest","tickPadding","labelWidth","isRotated","labelsBelowTicks","offsetLeft","offsetRight","paddingLeft","paddingRight","paddingTop","paddingBottom","widths","heights","widestLabelSize","highestLabelSize","jlen","tickFont","fontString","lineHeight","nestedLabel","_measureText","valueAt","idx","decimal","_int16Range","_alignPixel","optionTicks","rot","grid","tl","axisWidth","axisHalfWidth","alignBorderValue","borderValue","alignedLineValue","tx1","ty1","tx2","ty2","x1","y1","x2","y2","limit","optsAtIndexBorder","lineColor","tickColor","tickBorderDash","tickBorderDashOffset","crossAlign","mirror","tickAndPadding","hTickAndPadding","lineCount","textOffset","textBaseline","halfCount","strokeColor","strokeWidth","tickTextAlign","backdrop","labelPadding","t","drawLine","p1","p2","lastLineWidth","renderTextOptions","tz","gz","bz","axisID","fontSize","typedRegistry","reg","itemReg","component","camelMethod","_capitalize","hook","filter","previousDescriptors","set","datasetType","mainScope","resetCache","_scopeCache","keyLists","resolver","subPrefixes","subResolver","_attachContext","descriptorDefaults","c","userConfig","initialCanvas","existingChart","uid","debounce","maintainAspectRatio","_aspectRatio","retinaScale","clearCanvas","newSize","newRatio","scalesOptions","axisOptions","scaleOpts","updated","isRadial","scaleType","scaleClass","hasUpdated","datasets","newControllers","ControllerClass","datasetElementType","dataElementType","animsDisabled","_active","_lastEvent","existingEvents","newEvents","setsEqual","_hiddenIndices","changes","_dataChanges","datasetCount","makeSet","changeSet","noArea","layers","clip","useClip","visible","listeners","platform","_add","_remove","detached","attached","enabled","prefix","activeElements","lastActive","_elementsEqual","pluginId","replay","hoverOptions","deactivated","activated","eventFilter","_isClickEvent","chartX","chartY","rAdjust","betweenAngles","withinRadius","halfAngle","halfRadius","fix","radiusOffset","_updateBezierControlPoints","_computeSegments","_interpolate","interpolated","mouseX","mouseY","drawPoint","borderColor","outer","addRectPath","_args","chartOptions","colorizer","xAxis","threshold","labelOpts","legendItems","hitboxes","lineWidths","totalHeight","row","columnSizes","heightLimit","totalWidth","currentColWidth","currentColHeight","col","rtl","rtlHelper","getRtlAdapter","hitbox","defaultColor","halfFontSize","cursor","drawLegendBox","drawOptions","drawPointLegend","yBoxTop","xBoxLeft","fillText","overrideTextDirection","textWidth","realX","_textX","restoreTextDirection","titlePadding","topPaddingPlusHalfFontSize","hitBox","lh","hoveredItem","sameItem","ci","usePointStyle","useBorderRadius","fontOpts","titleBlock","xSet","eventPosition","nearestElement","distanceBetweenPoints","tp","noop","tooltipItem","beforeTitle","afterTitle","lines","bodyItems","scoped","beforeFooter","afterFooter","labelColors","labelPointStyles","labelTextColors","positionAndSize","backgroundPoint","tooltipPoint","caretPosition","ptX","ptY","x3","y3","pt","titleSpacing","labelColor","labelPointStyle","colorX","rtlColorX","yOffSet","colorY","outerX","innerX","bodySpacing","bodyAlign","displayColors","xLinePadding","fillLineOfText","bodyAlignForCalculation","textColor","tooltipSize","animX","animY","opacity","hasTooltipContent","positionChanged","caretX","caretY","added","setMin","setMax","minSign","maxSign","numericGeneratorOptions","_setMinAndMaxByKey","Ticks","log10","m","leftMovement","rightMovement","topMovement","bottomMovement","angleMultiplier","scalingFactor","scaledDistance","pointLabel","distanceFromCenter","angleLines","_applyBounds","timeOpts","_filterBetween","minor","weekday","hasWeekday","format","formats","fmt","formatter","minorFormat","majorFormat","offsets","ticksOpts","tickLabelWidth","cosRotation","sinRotation","tickFontSize","exampleTime","displayFormats","exampleLabel","ChartColorService","init_chart_color_service","__esmMin","parseColorInformation","ctx","value","Array","isArray","map","val","gradientFill","createLinearGradient","canvas","width","height","colors","forEach","color","index","addColorStop","length","factory","ɵfac","_ChartColorService","ConfigParserService","init_config_parser_service","__esmMin","constructor","chartColorService","parseConfig","ctx","config","options","checkForColorParsing","currentDict","val","endsWith","parseColorInformation","responseObject","Object","keys","forEach","key","ɵɵinject","ChartColorService","factory","ɵfac","_ConfigParserService","AVAILABLE_CHART_TYPES","ChartComponent","init_chart_component","__esmMin","init_core","init_chart","constructor","configParserService","htmlLegend","htmlLegendContent","EventEmitter","ngOnInit","config","indexOf","type","Error","setupChartJsContainer","emitHtmlLegend","ngOnChanges","changes","firstChange","options","parseConfig","canvasContext","chartObj","update","data","chartContainer","nativeElement","getContext","Chart","emit","generateLegend","ɵɵdirectiveInject","ConfigParserService","selectors","viewQuery","rf","ctx","ɵɵelement","_ChartComponent","ChartModule","init_chart_module","__esmMin","init_common","init_config_parser_service","init_chart_color_service","ConfigParserService","ChartColorService","imports","CommonModule","_ChartModule","GalaxyChartType","init_interface","__esmMin","init_colors","__esmMin","init_public_api","__esmMin","init_chart_module","init_interface","init_colors","init_src","__esmMin","init_public_api","ɵɵelementContainerStart","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","ɵɵpipeBind1","tab_r4","toolTip","content","title","ɵɵelement","deltaValue","ɵɵtextInterpolate","subtitle","ɵɵlistener","i_r2","ɵɵrestoreView","_r1","index","ctx_r2","ɵɵnextContext","ɵɵresetView","selectContent","ɵɵtemplate","LocalSEOStatTabsComponent_div_2_ng_container_6_Template","LocalSEOStatTabsComponent_div_2_local_seo_delta_10_Template","LocalSEOStatTabsComponent_div_2_div_11_Template","ɵɵpureFunction2","_c1","selectedIndex","disableDropdowns","name","value","showDelta","LocalSEOStatTabsComponent_4_ng_template_0_Template","openContent","LocalSEOStatTabsComponent","init_stat_tabs_component","__esmMin","init_animations","constructor","selectors","viewQuery","rf","ctx","LocalSEOStatTabsComponent_div_2_Template","LocalSEOStatTabsComponent_4_Template","tabs","trigger","state","style","height","minHeight","transition","animate","_LocalSEOStatTabsComponent","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","ctx_r0","top10ChartConfig","top10ChartData","positionChartConfig","positionChartData","ɵɵtext","ɵɵtextInterpolate1","ɵɵpipeBind2","ɵɵpureFunction1","_c1","keywordMovement","ranksUp","ranksDown","ɵɵtemplate","LocalSeoKeywordsStatsCardsComponent_ng_template_7_div_10_Template","LocalSeoKeywordsStatsCardsComponent_ng_template_7_div_18_Template","ɵɵtextInterpolate","keywordsUp","keywordsDown","addKeywordRanksToList","list","date","top10","top50","other","existingIndex","findIndex","point","push","getBestRankForEachDate","organic","local","bestRank","forEach","organicPoint","value","localPoint","import_dayjs","LocalSeoKeywordsStatsCardsComponent","init_local_seo_keywords_stats_cards_component","__esmMin","init_common","init_src","init_chart","init_local_seo","constructor","translate","screenWidth","window","innerWidth","type","GalaxyChartType","BAR","data","datasets","labels","options","responsive","maintainAspectRatio","plugins","legend","display","position","align","fullSize","scales","x","stacked","y","beginAtZero","ticks","maxTicksLimit","filter","item","text","tooltip","callbacks","label","context","dataset","parsed","MaxRank","max","min","callback","toString","onResize","Chart","register","registerables","keywordMetrics","metrics","setTop10PositionChartData","setPositionChartData","series","map","keywordSeries","organicRank","localRank","values","reduce","acc","acc2","sort","a","b","Date","getTime","dayjs","utc","format","instant","backgroundColor","datesWithData","includes","MaxMapsRank","dataPoints","totalKeywords","average","entry","Math","round","borderColor","borderDash","borderWidth","pointRadius","ngOnChanges","averagePosition","getAveragePosition","getTop10","hasPreviousData","find","localStartedAt","getKeywordsUp","localCards","name","showDelta","deltaValue","delta","toolTip","title","content","subtitle","currentTotalRanks","currentTotalRankValue","previousTotalRanks","previousTotalRankValue","rawValue","organicStartedAt","previousAverage","formatNumber","rank","abs","currentTop10","length","previousTop10","ɵɵdirectiveInject","TranslateService","selectors","hostBindings","rf","ctx","ɵɵlistener","$event","ɵɵresolveWindow","LocalSeoKeywordsStatsCardsComponent_ng_template_3_Template","ɵɵtemplateRefExtractor","LocalSeoKeywordsStatsCardsComponent_ng_template_5_Template","LocalSeoKeywordsStatsCardsComponent_ng_template_7_Template","ɵɵpureFunction3","_c0","top10KeywordChart_r2","positionChart_r3","keywordMovementCard_r4","disableDropdowns","_LocalSeoKeywordsStatsCardsComponent","ɵɵelementContainerStart","ɵɵelement","ɵɵadvance","ɵɵproperty","ctx_r1","imageURL","ɵɵsanitizeUrl","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","_r3","ɵɵnextContext","ɵɵresetView","buttonClick","emit","ɵɵtext","ɵɵelementEnd","ɵɵtextInterpolate1","buttonText","ɵɵtemplate","InfoBannerComponent_mat_card_1_ng_container_3_Template","_r1","toggle","InfoBannerComponent_mat_card_1_button_13_Template","ɵɵtextInterpolate","title","description","length","_r4","InfoBannerComponent","init_info_banner_component","__esmMin","init_core","constructor","EventEmitter","open","selectors","inputs","outputs","decls","vars","consts","template","rf","ctx","InfoBannerComponent_mat_card_1_Template","InfoBannerComponent_ng_template_2_Template","ɵɵtemplateRefExtractor","closed_r5","_InfoBannerComponent","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","ɵɵpipeBind2","ɵɵpureFunction1","_c0","ctx_r0","listingProfileRedirectLink","ɵɵsanitizeHtml","ɵɵelementContainerStart","data_r2","ɵɵpipeBind1","localSEOService","keywordMetrics$","showTopCardDropdowns$","ɵɵlistener","suggestedKeywords_r4","ɵɵrestoreView","_r3","ngIf","limit_r5","ɵɵnextContext","ɵɵresetView","open","ɵɵtext","canEditKeywords","ɵɵtextInterpolate1","ɵɵtemplate","KeywordTrackingComponent_ng_container_17_ng_container_1_ng_container_1_Template","suggestedKeywords$","KeywordTrackingComponent_ng_container_17_ng_container_1_Template","keywordLimit$","ɵɵelementContainer","KeywordTrackingComponent_ng_container_19_ng_container_1_Template","isLbFreeEdition$","exampleTable_r6","emptyStatePro_r7","ɵɵtextInterpolate","element_r8","keyword","element_r9","mapsRank","element_r10","mapsStartedAt","element_r11","organicRank","element_r12","organicStartedAt","element_r13","rankDifficulty","element_r14","searchVolume","KeywordTrackingComponent_ng_template_48_th_3_Template","KeywordTrackingComponent_ng_template_48_th_5_Template","KeywordTrackingComponent_ng_template_48_th_7_Template","KeywordTrackingComponent_ng_template_48_th_9_Template","KeywordTrackingComponent_ng_template_48_th_11_Template","KeywordTrackingComponent_ng_template_48_td_12_Template","KeywordTrackingComponent_ng_template_48_th_14_Template","KeywordTrackingComponent_ng_template_48_td_15_Template","KeywordTrackingComponent_ng_template_48_th_17_Template","KeywordTrackingComponent_ng_template_48_td_18_Template","KeywordTrackingComponent_ng_template_48_th_20_Template","KeywordTrackingComponent_ng_template_48_td_21_Template","KeywordTrackingComponent_ng_template_48_th_23_Template","KeywordTrackingComponent_ng_template_48_td_24_Template","KeywordTrackingComponent_ng_template_48_th_26_Template","KeywordTrackingComponent_ng_template_48_td_27_Template","KeywordTrackingComponent_ng_template_48_th_29_Template","KeywordTrackingComponent_ng_template_48_td_30_Template","KeywordTrackingComponent_ng_template_48_tr_31_Template","KeywordTrackingComponent_ng_template_48_tr_32_Template","KeywordTrackingComponent_ng_template_48_tr_33_Template","ExampleData","ɵɵpureFunction0","_c1","_c2","_r15","OpenUpgradeDialog","$event","deleteKeyword","updateFavoriteKeywords","updateSyncingKeywords","SEOData$","loading$","keywords$$","asObservable","syncingKeywords$","emptyStateImage$","editionUpgradeHidden$","Location$","agid$","seoSettings$","SEODATA_TAB_GRID","KeywordTrackingComponent","init_keyword_tracking_component","__esmMin","init_animations","init_src","init_vendasta_marketplace_apps","init_esm","init_operators","init_local_seo","init_upgrade_cta_dialog_service","init_local_seo_keyword_dialog_component","constructor","dialog","upgradeDialogService","translate","router","route","env","subscriptions","columnConfig","name","class","local","iconURL","organic","localRank","localStartedAt","difficulty","empty","empty2","sortSettings","active","direction","statColumns","topColumns","columns","isLBFreeEdition$","featureFlags$","pipe","map","flags","combineLatest","getEditionChangeDetails$","isFreeEdition","details","hideUpgradeCta","createUrlTree","relativeTo","toString","loading$$","seoData","keywords","metrics","settings","seoDataPeriods","forEach","currentKMetric","find","m","currentData","d","push","SEOTableData","listingProfile$$","profile","napData","isKeywordListEmpty$","k","length","canEditKeywords$","subscribe","value","ngOnInit","actionButton","label","getValuesForSorting","data","sortHeaderId","toLocaleLowerCase","rawValue","ngOnDestroy","sub","unsubscribe","setSortSettings","__spreadValues","limit","suggestedKeywords","dialogRef","LocalSeoKeywordDialogComponent","keywordLimit","width","afterClosed","result","undefined","updateKeywords","editionChangeDetails$","upgradePrice$","partnerMarket$","switchMap","pmConfig","editionChangeDetails","paidEdition","DEMO_PAID_EDITION","getEnvironment","Environment","PROD","PROD_PAID_EDITION","getUpgradePrice$","appID","shareReplay","formattedUpgradePrice$","upgradePrice","getFormattedRetailPrice$","getCustomUpgradeModalContent$","appSettings$","take","formattedUpgradePrice","customUpgradeModalContent","marketingPoints","instant","appName","branding","enabled","ctaText","buttonText","editionUpgradeAction","EditionUpgradeAction","EDITION_UPGRADE_ACTION_CONTACT_SALES","dialogConfig","editionName","imageText","titleText","imageUrl","keySellingPoints","sellingPoints","upgradeNowText","getUpgradeText","price","frequency","getFrequencyText","upgradeDialogRef","UpgradeCTADialogComponent","filter","upgradeClicked","isCustomPackage","EDITION_UPGRADE_ACTION_CUSTOM_ORDER","item","packageId","priceReferencePackageId","appId","APP_ID","editionId","buildBusinessCenterUpgradeRedirectInfo","redirectInfo","sendToVbc","ɵɵdirectiveInject","KeywordTrackingService","AGIDTOKEN","MatDialog","UpgradeCTADialogService","TranslateService","Router","ActivatedRoute","EnvironmentService","selectors","decls","vars","consts","template","rf","ctx","KeywordTrackingComponent_div_2_Template","KeywordTrackingComponent_div_4_Template","KeywordTrackingComponent_ng_container_13_Template","KeywordTrackingComponent_ng_container_17_Template","KeywordTrackingComponent_ng_container_19_Template","KeywordTrackingComponent_ng_template_48_Template","ɵɵtemplateRefExtractor","KeywordTrackingComponent_ng_template_50_Template","KeywordTrackingComponent_ng_template_52_Template","missingGeoLocation$$","missingWebsite$$","showTable_r16","trigger","state","style","height","minHeight","transition","animate","transform","_KeywordTrackingComponent","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","option_r1","value","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind2","label","ɵɵpureFunction1","_c0","ctx_r1","selectedMapUnit","translatedMapUnitsKMS","defaultOptions","MileToKilometerPipe","LocalSeoSettingsDialogComponent","init_local_seo_settings_dialog_component","__esmMin","init_forms","init_dialog","init_local_seo","SEARCH_RADIUS_LOCAL","SEARCH_RADIUS_SMALL_CITY","SEARCH_RADIUS_BIG_CITY","SEARCH_RADIUS_XL_CITY","constructor","conversionFactor","transform","kilometersTranslationKey","parts","split","number","parseFloat","unit","kilometers","Math","round","pure","_MileToKilometerPipe","data","dialogRef","fb","translateService","options","selectedValue","get","subscribe","translation","radiusValue","SEODataSearchRadiusTypes","includes","mapRadius","seoSettingsRadiusForm","UntypedFormControl","mapUnits","setValue","closeModal","save","result","close","undefined","setMapUnit","ɵɵdirectiveInject","MAT_DIALOG_DATA","MatDialogRef","FormBuilder","TranslateService","selectors","decls","vars","consts","template","rf","ctx","ɵɵlistener","$event","ɵɵtwoWayListener","i0","ɵɵtwoWayBindingSet","ɵɵtemplate","LocalSeoSettingsDialogComponent_mat_option_23_Template","ɵɵtextInterpolate","ɵɵpipeBind1","ɵɵpropertyInterpolate","ɵɵtwoWayProperty","styles","_LocalSeoSettingsDialogComponent","LocalSeoKeywordsStatsCardsModule","init_local_seo_keywords_stats_cards_module","__esmMin","init_common","init_card","init_src","init_ngx_translate_core","init_icon","init_tooltip","init_delta_component","CommonModule","TranslateModule","MatCardModule","ChartModule","MatIconModule","GalaxyTooltipModule","DeltaComponent","_LocalSeoKeywordsStatsCardsModule","en_devel_default","init_en_devel","__esmMin","LocalSEOTableModule","init_local_seo_table_module","__esmMin","init_common","init_ngx_translate_core","init_card","init_icon","init_src","init_table","init_paginator","init_sort","init_divider","init_empty_state","init_list","init_loading_spinner","init_delta_component","init_en_devel","init_button_toggle","init_button","init_swimlane_ngx_charts","init_google_maps","init_badge","init_slide_toggle","CommonModule","TranslateModule","MatCardModule","MatIconModule","UIKitModule","MatTableModule","MatPaginatorModule","MatSortModule","MatDividerModule","GalaxyEmptyStateModule","MatListModule","GalaxyLoadingSpinnerModule","DeltaComponent","LexiconModule","forChild","componentName","baseTranslation","en","MatButtonToggleModule","MatButtonModule","NgxChartsModule","GoogleMapsModule","GalaxyBadgeModule","MatSlideToggleModule","_LocalSEOTableModule","ɵɵelementContainerStart","ɵɵelementStart","ɵɵlistener","settings_r2","ɵɵrestoreView","_r1","ngIf","ctx_r2","ɵɵnextContext","ɵɵresetView","openSettings","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","canEditKeywords","ɵɵtextInterpolate1","ɵɵpipeBind1","suggestedKeywords_r5","_r4","limit_r6","keywords_r7","openKeywords","ɵɵtemplate","LocalSeoPageTitleActionComponent_ng_container_7_ng_container_1_ng_container_1_Template","service","suggestedKeywords$","LocalSeoPageTitleActionComponent_ng_container_7_ng_container_1_Template","keywordLimit$","LocalSeoPageTitleActionComponent","init_local_seo_page_title_action_component","__esmMin","init_datepicker","init_esm","init_keyword_tracking_component","init_local_seo_keyword_dialog_component","init_local_seo_settings_dialog_component","constructor","dialog","translate","subscriptions","defaultDatePeriod","DateRangePresetPeriod","lastNinetyDays","selectedTab$$","BehaviorSubject","SEODATA_TAB_GRID","canEditKeywords$","subscribe","value","keywords","limit","suggestedKeywords","length","mapUnits","getLocalStorage","instant","keywordDialogRef","open","LocalSeoKeywordDialogComponent","data","keywordLimit","width","push","afterClosed","result","undefined","updateKeywords","seoDataSettings","settingsDialogRef","LocalSeoSettingsDialogComponent","mapRadius","localSearchRadius","updateLocalSearchRadius","setLocalStorage","onDateRangeSelect","next","updateDateRange","ngOnDestroy","forEach","sub","unsubscribe","ɵɵdirectiveInject","KeywordTrackingService","MatDialog","TranslateService","selectors","decls","vars","consts","template","rf","ctx","$event","LocalSeoPageTitleActionComponent_ng_container_5_Template","LocalSeoPageTitleActionComponent_ng_container_7_Template","seoSettings$","keywords$$","asObservable","_LocalSeoPageTitleActionComponent","KeywordTrackingModule","init_keyword_tracking_module","__esmMin","init_common","init_ngx_translate_core","init_datepicker","init_card","init_icon","init_select","init_swimlane_ngx_charts","init_tabs","init_google_maps","init_src","init_table","init_paginator","init_sort","init_divider","init_empty_state","init_button","init_button_toggle","init_dialog","init_list","init_loading_spinner","init_delta_component","init_form_field","init_alert","init_radio","init_badge","init_local_seo_keywords_stats_cards_module","init_local_seo_table_module","init_page","init_en_devel","CommonModule","TranslateModule","GalaxyDatepickerModule","MatCardModule","MatIconModule","MatTabsModule","GoogleMapsModule","UIKitModule","MatTableModule","MatPaginatorModule","MatSortModule","MatDividerModule","GalaxyEmptyStateModule","MatButtonModule","MatDialogModule","MatListModule","VaFormsModule","GalaxyLoadingSpinnerModule","DeltaComponent","MatButtonToggleModule","NgxChartsModule","GalaxyFormFieldModule","MatSelectModule","ChartModule","GalaxyAlertModule","MatRadioModule","GalaxyBadgeModule","LocalSEOTableModule","LocalSeoKeywordsStatsCardsModule","GalaxyPageModule","LexiconModule","forChild","componentName","baseTranslation","en","_KeywordTrackingModule","ClickOutsideDirective","init_click_outside_directive","__esmMin","init_core","init_common","_el","_ngZone","platformId","EventEmitter","isPlatformBrowser","changes","e","nodes","err","ev","_this","target","_i","_a","excludedNode","t","ɵɵdirectiveInject","ElementRef","NgZone","PLATFORM_ID","ɵɵdefineDirective","ɵɵNgOnChangesFeature","ClickOutsideModule","init_click_outside_module","__esmMin","init_click_outside_directive","init_core","ɵɵdefineNgModule","ɵɵdefineInjector","t","init_lib_esmodule","__esmMin","init_click_outside_directive","init_click_outside_module","addNextUrl","entryUrl","nextUrl","window","encodeURIComponent","urlObj","URL","params","URLSearchParams","search","append","toString","BusinessCenterService","init_business_center_service","__esmMin","init_vendasta_sso","init_operators","init_esm","constructor","ssoService","partnerId$","whitelabelService","vbcName$","pipe","switchMap","partnerId","getBranding","map","branding","apps","name","shareReplay","entryUrl$","getEntryUrl","newPartnerServiceContext","getVBCEntryUrl","accountGroupId","page","combineLatest","vbcName","url","ɵɵinject","SSOService","WhitelabelService","factory","ɵfac","providedIn","_BusinessCenterService","ApiError","VApiService","init_vapi_service","__esmMin","init_http","init_esm","init_operators","constructor","message","code","data","name","http","sessionService","apiOptions","headers","HttpHeaders","Authorization","getSessionId","withCredentials","responseType","get","url","options","Object","assign","pipe","map","extractData","catchError","handleError","put","body","post","generateUrlWithParams","params","keys","length","finalUrl","finalParams","param_key","join","generateRepeatedUrlParams","paramName","repeatedParams","forEach","id","index","res","error","errorInfo","err","status","observableThrowError","ɵɵinject","HttpClient","SessionService","factory","ɵfac","_VApiService","REPCORE_HOSTS","RepcoreApiService","init_repcore_api_service","__esmMin","init_src","init_esm","init_operators","Map","set","Environment","LOCAL","DEMO","PROD","constructor","vapiService","environmentService","scheme","repcoreHost","window","location","protocol","startsWith","get","getEnvironment","getTwitterCustomAppConnections","accountGroupid","url","post","agid","pipe","catchError","of","reconnect_group","total_connections","getFacebookAppConnections","reconnect_needed","ɵɵinject","VApiService","EnvironmentService","factory","ɵfac","_RepcoreApiService","ListingSyncApiService","init_listing_sync_api_service","__esmMin","init_http","init_esm","init_operators","constructor","http","snackbar","updateSyncStatus","url","ssid","body","HttpParams","set","post","toString","headers","pipe","catchError","error","responseText","indexOf","open","duration","of","getServiceUserIdFromSSID","split","length","substring","disconnectService","clientTags","JSON","stringify","ɵɵinject","HttpClient","MatSnackBar","factory","ɵfac","providedIn","_ListingSyncApiService","ListingSyncService","init_listing_sync_service","__esmMin","init_vendasta_accounts_legacy","init_vendasta_listing_sync_pro","init_esm","init_operators","init_local_seo","constructor","agid$","apiService","listingSyncProApiServiceSDK","accountsService","upgradeCTADialogService","featureFlagService","listingData$$","BehaviorSubject","lspFacebookPages$","getListingData$","pipe","map","data","sources","filter","source","sourceId","featureFlags$","partnerMarket$","switchMap","partnerMarket","checkFeatureFlagsMulti","partnerId","marketId","shareReplay","isLBFreeEdition$","agid","filters","appIds","statuses","AppAndAddonActivationStatus","ACTIVATED","listAppsAndAddonsActivationStatusesForBusiness","activations","length","editionId","DEMO_PAID_EDITION","PROD_PAID_EDITION","getListingData","GetListingDataRequest","businessId","of","subscribe","addonID$","combineLatest","listingData","getListingSyncProAddonId","accountGroupId","provider","billingFrequency","BillingFrequency","BILLING_FREQUENCY_MONTHLY","catchError","resp","addonId","lspActive$","lspActive","syncingProgressSummaryData$","totalSourcesCount","totalSources","syncedSourcesCount","totalAcceptedSources","syncInProgressSourcesCount","totalInProgressSources","notSyncingSourcesCount","listingsScoreSummaryData$","listingScore","scores","totalScore","originalListingScore","determineOriginalListingScore","industryAverageListingsScore","industryAverage","ninetyFifthPercentile","totalAccurate","totalAccuracyGoodSources","totalPossibleErrors","totalNotFound","refresh","asObservable","config","disconnectService$","url","ssid","clientTags","disconnectService","updateSyncStatus$","serviceType","updateSyncStatus","ɵɵinject","AGIDTOKEN","ListingSyncApiService","ListingSyncProApiService","AccountsService","UpgradeCTADialogService","FeatureFlagService","factory","ɵfac","providedIn","_ListingSyncService","DisconnectServiceModalComponent","init_disconnect_service_modal_component","__esmMin","init_dialog","constructor","data","source","ɵɵdirectiveInject","MAT_DIALOG_DATA","selectors","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind2","ɵɵpureFunction1","_c0","ɵɵproperty","ɵɵpipeBind1","_DisconnectServiceModalComponent","getIconUrl","sourceIcon","getSourceType","siteType","SITE_TYPE_MAPPING","get","getAccuracyAndSyncSettings","source","syncStatus","AccuracyAndSyncMapping","StatusCode","STATUS_CODE_NOT_FOUND","sortAccuracy","a","b","accuracyDisplayStatus","getEnum","typeEnum","SiteType","SITE_TYPE_GPS","sourceAccuracy","accuracy","undefined","status","AccuracyStatus","ACCURACY_STATUS_UNKNOWN","ACCURACY_STATUS_ACCURATE","ACCURACY_STATUS_INACCURATE","aIdx","indexOf","bIdx","getLastUpdated","lastUpdated","lastUpdatedDate","Date","differenceInTime","getTime","differenceInDays","Math","floor","sortSyncStatus","aCode","statusCode","bCode","_columnTypeSpecificComparitor","field","x","y","localeCompare","type","_columnSort","sortOptions","sortOptionIndex","ascend","direction","SortDirection","SORT_DIRECTION_ASCENDING","result","length","columnSortEntry","applyDefaultSortOptions","sortOpts","sortMaxScoreOpt","ascendingLabel","descendingLabel","SORT_DIRECTION_DESCENDING","displayName","id","push","countAccuracyErrors","anchorDataMatches","fields","errorCount","i","Object","prototype","hasOwnProperty","call","AccuracyClass","IconClass","MaterialIcons","SyncTextClass","SyncStatusType","ListingSyncTableService","init_listing_sync_table_service","__esmMin","init_vendasta_listing_sync_pro","init_src","init_esm","init_operators","init_local_seo","Map","SITE_TYPE_UNSPECIFIED","SITE_TYPE_MAP","SITE_TYPE_SOCIAL","SITE_TYPE_AGGREGATOR","SITE_TYPE_HISPANIC_SITE","SITE_TYPE_APP","SITE_TYPE_DIRECTORY","STATUS_CODE_SYNCED","accuracyClass","accuracyText","syncIconClass","GREEN","syncIcon","DONE","syncTextClass","GREEN_OK","syncText","STATUS_CODE_IN_PROGRESS","IN_PROGRESS","SYNC","STATUS_CODE_SYNCING_WITH_WARNINGS","SYNC_PROBLEM","CLICKABLE","STATUS_CODE_HAS_ERRORS","RED","SYNC_DISABLED","STATUS_CODE_SYNC_DISABLED","STATUS_CODE_CLAIMED_BY_OTHERS","LOCK","tooltipTitle","tooltipText","STATUS_CODE_DOES_NOT_SUPPORT_SERVICE_AREA_BUSINESS","ORANGE","VISIBILITY","STATUS_CODE_IGNORING_ERRORS","STATUS_CODE_SUBMITTED","STATUS_CODE_MANUAL_UPDATE_ONLY","MANUAL_UPDATE_ONLY","NOT_FOUND","constructor","accountGroupId$","listingSyncService","snowplowService","translateService","lspEnabled","excludedSources","load","request","combineLatest","getListingData$","pipe","map","agid","data","lspActive","sources","filter","value","includes","sourceId","filters","query","name","toLowerCase","startsWith","tableFormattedSources","src","accuracyAndSyncSettings","isDirectlySubmittedSource","iconUrl","icon","listingUrl","url","instant","accuracyErrorTotal","errors","getErrorMessages","fieldsWithWarnings","getFieldsWithWarnings","score","maxScore","updated","syncStatusType","LSP_ACTIVE","LSP_INACTIVE","accountGroupId","listingId","anchorData","connectLink","socialServiceName","ssid","updateSyncLink","selectedSocialService","disconnectLink","serviceType","clientTags","sync","syncingDetails","sortingOptions","sortTableRows","options","cmpGenerator","sort","ɵɵinject","AGIDTOKEN","ListingSyncService","ProductAnalyticsService","TranslateService","factory","ɵfac","providedIn","_ListingSyncTableService","StatusCodeColor","code","StatusCode","STATUS_CODE_SYNCED","STATUS_CODE_IGNORING_ERRORS","STATUS_CODE_SYNCING_WITH_WARNINGS","STATUS_CODE_SUBMITTED","STATUS_CODE_IN_PROGRESS","STATUS_CODE_HAS_ERRORS","STATUS_CODE_SYNC_DISABLED","STATUS_CODE_CLAIMED_BY_OTHERS","STATUS_CODE_DOES_NOT_SUPPORT_SERVICE_AREA_BUSINESS","STATUS_CODE_MANUAL_UPDATE_ONLY","getSyncStatusText","translate","sourceId","sourceName","listingFound","listingAccurate","hasAccountConnected","isSyncing","locked","lspSyncStatus","instant","AccuracyAndSyncMapping","get","syncText","DIRECT_SUBMIT_SOURCES","DIRECT_SUBMIT_WITHOUT_ACCOUNT_SOURCES","DIRECT_SUBMIT_SOURCE_TO_VENDOR_ID","init_constants","__esmMin","init_vendasta_listing_sync_pro","init_listing_sync_table_service","AccuracyTextPipe","ListingAccuracyText","init_accuracy_text_pipe","__esmMin","init_vendasta_listing_sync_pro","transform","value","args","notFound","AccuracyStatus","ACCURACY_STATUS_UNKNOWN","ACCURACY_STATUS_NOT_FOUND","ACCURACY_STATUS_NOT_AVAILABLE","ACCURACY_STATUS_ACCURATE","ACCURACY_STATUS_INACCURATE","pure","_AccuracyTextPipe","Card","Table","Sidebar","ɵɵelementContainer","ɵɵproperty","gmb_r1","facebook_r2","instagram_r3","twitter_r4","bing_r5","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵelement","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","ɵɵsanitizeHtml","SyncInfoModalComponent","init_sync_info_modal_component","__esmMin","init_dialog","constructor","data","GOOGLE_BUSINESS_PROFILE","FACEBOOK","INSTAGRAM","TWITTER","BING","source","ɵɵdirectiveInject","MAT_DIALOG_DATA","selectors","decls","vars","consts","template","rf","ctx","ɵɵelementContainerStart","ɵɵtemplate","SyncInfoModalComponent_ng_container_1_Template","SyncInfoModalComponent_ng_container_2_Template","SyncInfoModalComponent_ng_container_3_Template","SyncInfoModalComponent_ng_container_4_Template","SyncInfoModalComponent_ng_container_5_Template","SyncInfoModalComponent_ng_template_6_Template","ɵɵtemplateRefExtractor","SyncInfoModalComponent_ng_template_8_Template","SyncInfoModalComponent_ng_template_10_Template","SyncInfoModalComponent_ng_template_12_Template","SyncInfoModalComponent_ng_template_14_Template","_SyncInfoModalComponent","ɵɵelementContainerStart","ɵɵelement","ɵɵadvance","ɵɵpropertyInterpolate","ctx_r0","iconUrl","ɵɵsanitizeUrl","name","ɵɵproperty","getHeightStyle","ɵɵelementStart","ɵɵelementEnd","IconComponent","init_icon_component","__esmMin","constructor","iconSize","height","lineHeight","selectors","inputs","decls","vars","consts","template","rf","ctx","ɵɵtemplate","IconComponent_ng_container_0_Template","IconComponent_ng_template_1_Template","ɵɵtemplateRefExtractor","generatedIcon_r2","_IconComponent","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","ctx_r1","listingUrl","ɵɵsanitizeUrl","ɵɵadvance","ɵɵtextInterpolate1","name","ɵɵelement","accountImageUrl","profileUrl","accountName","ɵɵelementContainerStart","ɵɵtemplate","ListingSidebarComponent_ng_container_11_ng_container_5_local_seo_source_name_icon_2_Template","ListingSidebarComponent_ng_container_11_ng_container_5_a_3_Template","ListingSidebarComponent_ng_container_11_ng_container_5_div_4_Template","service_r4","profileImageUrl","ListingSidebarComponent_ng_container_11_ng_container_6_mat_radio_button_7_local_seo_source_name_icon_2_Template","ListingSidebarComponent_ng_container_11_ng_container_6_mat_radio_button_7_a_3_Template","ListingSidebarComponent_ng_container_11_ng_container_6_mat_radio_button_7_div_4_Template","ssid","ɵɵtwoWayListener","$event","ɵɵrestoreView","_r3","ɵɵnextContext","i0","ɵɵtwoWayBindingSet","selectedSSID","ɵɵresetView","ɵɵlistener","setSelectedSocialService","ListingSidebarComponent_ng_container_11_ng_container_6_local_seo_source_name_icon_4_Template","ListingSidebarComponent_ng_container_11_ng_container_6_a_5_Template","ListingSidebarComponent_ng_container_11_ng_container_6_div_6_Template","ListingSidebarComponent_ng_container_11_ng_container_6_mat_radio_button_7_Template","ɵɵtwoWayProperty","additionalSocialServices","ListingSidebarComponent_ng_container_11_ng_container_5_Template","ListingSidebarComponent_ng_container_11_ng_container_6_Template","ɵɵtextInterpolate","ɵɵpipeBind1","length","accuracySidebarBadgeColor","accuracyText","accuracy","status","Sidebar","_r5","navigateToListingProfile","ɵɵclassProp","anchorDataMatches","address","anchorData","city","state","country","zip","ListingSidebarComponent_ng_container_20_div_7_Template","companyName","sourceSupportsListings","phone","website","_r6","connectSocialService","syncStatusText","_r7","updateSyncing","_r8","upgrade","emit","ɵɵtextInterpolate2","optionsMenu_r9","ListingSidebarComponent_ng_container_21_ng_container_1_button_1_Template","ListingSidebarComponent_ng_container_21_ng_container_1_button_2_Template","ListingSidebarComponent_ng_container_21_ng_container_1_button_3_Template","ListingSidebarComponent_ng_container_21_ng_container_1_button_4_Template","isDirectSubmitSource","canSyncWithoutAccount","socialServiceSyncing","showLSPCTA","listingId","ListingSidebarComponent_ng_container_21_ng_container_1_Template","disableActions","_r10","refreshListing","_r11","disconnectService","_r12","_r13","openSyncInfoModal","sourceId","ɵɵpipeBind2","ɵɵpureFunction1","_c1","warning_r14","ListingSidebarComponent_ng_container_29_ng_container_9_li_2_Template","syncingDetails","warnings","error_r15","ListingSidebarComponent_ng_container_29_ng_container_10_li_2_Template","errors","ListingSidebarComponent_ng_container_29_ng_container_9_Template","ListingSidebarComponent_ng_container_29_ng_container_10_Template","explanation","SocialServiceSourceToMSType","SourceToInfoKey","ListingSidebarComponent","init_listing_sidebar_component","__esmMin","init_core","init_vendasta_listing_products","init_vendasta_listing_sync_pro","init_vendasta_reputation","init_esm","init_operators","init_disconnect_service_modal_component","init_local_seo","init_constants","init_accuracy_text_pipe","init_sync_info_modal_component","constructor","agid$","translate","listingSyncService","dialog","router","route","reputationService","snackBar","listingSyncProApiServiceSDK","listingProductsService","topPadding","retry","EventEmitter","syncStatusLoading","closed","ListingAccuracyText","loadingChanges$$","BehaviorSubject","subscriptions","ngOnInit","getSyncStatusText","AccuracyStatus","ACCURACY_STATUS_ACCURATE","DIRECT_SUBMIT_SOURCES","find","id","undefined","DIRECT_SUBMIT_WITHOUT_ACCOUNT_SOURCES","window","location","href","connectLink","newSyncState","next","vendorID","DIRECT_SUBMIT_SOURCE_TO_VENDOR_ID","push","pipe","switchMap","agid","updateVendorSyncFlag","UpdateVendorSyncFlagRequest","businessId","vendorId","syncing","subscribe","open","instant","duration","getListingData$","msType","updateSyncStatus$","url","DisconnectServiceModalComponent","data","source","afterClosed","shouldDisconnect","disconnectService$","clientTags","reload","SyncInfoModalComponent","forceRefreshListing","ForceRefreshListingRequest","accountGroupId","catchError","err","message","error","politeness","EMPTY","req","toString","sourceName","combineLatest","navigate","queryParamsHandling","relativeTo","ngOnDestroy","forEach","sub","unsubscribe","ɵɵdirectiveInject","AGIDTOKEN","TranslateService","ListingSyncService","MatDialog","Router","ActivatedRoute","ListingApiService","MatSnackBar","ListingSyncProApiService","ListingProductsApiService","selectors","inputs","iconUrl","lspActive","outputs","decls","vars","consts","template","rf","ctx","ListingSidebarComponent_a_5_Template","ListingSidebarComponent_div_6_Template","_r1","ListingSidebarComponent_ng_container_11_Template","ListingSidebarComponent_glxy_badge_16_Template","ListingSidebarComponent_ng_container_17_Template","ListingSidebarComponent_ng_container_18_Template","ListingSidebarComponent_ng_container_19_Template","ListingSidebarComponent_ng_container_20_Template","ListingSidebarComponent_ng_container_21_Template","ListingSidebarComponent_button_25_Template","ListingSidebarComponent_button_26_Template","ListingSidebarComponent_button_27_Template","ListingSidebarComponent_a_28_Template","ListingSidebarComponent_ng_container_29_Template","ListingSidebarComponent_ng_template_30_Template","ɵɵtemplateRefExtractor","ListingSidebarComponent_ng_template_32_Template","_c0","asObservable","loading_r16","_ListingSidebarComponent","ListingSyncTableFilterService","init_listing_sync_table_filter_service","__esmMin","init_src","constructor","filters","FilterGroup","addToolbarSection","SearchFilterControl","addSection","CheckboxFilterControl","appliedValueMapper","name","label","factory","ɵfac","_ListingSyncTableFilterService","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate","ɵɵpipeBind1","warning_r1","ɵɵelementContainerStart","ɵɵtemplate","ListingSyncProErrorDialogComponent_ng_container_6_li_5_Template","ɵɵtextInterpolate1","ɵɵproperty","ctx_r1","warnings","error_r3","ListingSyncProErrorDialogComponent_ng_container_7_div_1_Template","errors","ListingSyncProErrorDialogComponent","init_lsp_error_messages_component","__esmMin","init_dialog","constructor","data","sourceName","explanation","ɵɵdirectiveInject","MAT_DIALOG_DATA","selectors","decls","vars","consts","template","rf","ctx","ListingSyncProErrorDialogComponent_ng_container_6_Template","ListingSyncProErrorDialogComponent_ng_container_7_Template","length","_ListingSyncProErrorDialogComponent","ɵɵelementContainerStart","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","_r3","ɵɵnextContext","sidenav_r2","ɵɵreference","ɵɵresetView","close","ctx_r3","OpenUpgradeDialog","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","sidebarData","iconUrl","listingUrl","name","accuracy","status","sourceId","listingId","ɵɵpipeBind1","showLSPUpgradeCTA$","lspActive$","syncingDetails","sidebarTopPadding","import_moment","ListingSyncTableComponent","init_listing_sync_table_component","__esmMin","init_vendasta_listing_sync_pro","init_vendasta_marketplace_apps","init_src","init_esm","init_operators","init_disconnect_service_modal_component","init_lsp_error_messages_component","init_local_seo","constructor","listingSyncTableService","dialog","upgradeDialogService","listingSyncService","translateService","analyticsService","filterService","getListingData$","pipe","map","data","lspActive","lspUpgradePathEnabled","showCheckBackSoonMessage","moment","startOf","diff","lspPurchaseDate","DAYS_TO_WAIT","handleRowClick","event","sidenav","open","handleCellEvent","openUpgradeDialog","toggleSyncEvent","msg","toggleSync","updateSyncLink","ssid","serviceType","disconnectServiceEvent","disconnectServiceModal","sourceName","url","clientTags","clickSyncStatus","element","DisconnectServiceModalComponent","source","afterClosed","subscribe","shouldDisconnect","disconnectService$","window","location","reload","checked","setDisabledState","updateSyncStatus$","filters","enable","trackToggle","defaultData","explanation","warnings","errors","statusCode","StatusCode","STATUS_CODE_SYNCING_WITH_WARNINGS","ListingSyncProErrorDialogComponent","__spreadProps","__spreadValues","fieldsWithWarnings","STATUS_CODE_HAS_ERRORS","STATUS_CODE_IN_PROGRESS","editionChangeDetails$","addonID$","switchMap","addonID","getAddonUpgradeDetails$","upgradePrice$","combineLatest","partnerMarket$","pmConfig","editionChangeDetails","getUpgradePrice$","shareReplay","formattedUpgradePrice$","upgradePrice","getFormattedRetailPrice$","getCustomUpgradeModalContent$","take","formattedUpgradePrice","customUpgradeModalContent","marketingPoints","instant","ctaText","buttonText","undefined","editionUpgradeAction","EditionUpgradeAction","EDITION_UPGRADE_ACTION_CONTACT_SALES","dialogRef","editionName","imageText","titleText","imageUrl","keySellingPoints","sellingPoints","activeOrderPrimaryText","activeOrderSecondaryText","activeOrderImageUrl","upgradeNowText","getUpgradeText","price","frequency","getFrequencyText","UpgradeCTADialogComponent","filter","upgradeClicked","item","EDITION_UPGRADE_ACTION_CUSTOM_ORDER","packageId","priceReferencePackageId","appId","APP_ID","addonId","buildBusinessCenterUpgradeRedirectInfo","redirectInfo","sendToVbc","ɵɵdirectiveInject","ListingSyncTableService","MatDialog","UpgradeCTADialogService","ListingSyncService","TranslateService","ProductAnalyticsService","ListingSyncTableFilterService","selectors","viewQuery","rf","ctx","VaTableSortService","VaFilteredMatTableService","decls","vars","consts","template","_r1","ɵɵtemplate","ListingSyncTableComponent_ng_container_4_Template","$event","i0","_ListingSyncTableComponent","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","data_r2","listingScore","ɵɵtextInterpolate","ɵɵpipeBind1","originalListingScore","industryAverageListingsScore","ninetyFifthPercentile","ɵɵelement","ListingScoreSummaryCardComponent","init_listing_score_summary_card_component","__esmMin","init_popover","constructor","listingSyncService","PopoverPositions","showPopover","summaryData$","listingsScoreSummaryData$","showPopovers","hidePopovers","ɵɵdirectiveInject","ListingSyncService","selectors","decls","vars","consts","template","rf","ctx","ɵɵlistener","i0","ɵɵrestoreView","_r1","ɵɵresetView","ɵɵtemplate","ListingScoreSummaryCardComponent_mat_card_content_14_Template","ListingScoreSummaryCardComponent_ng_template_16_Template","ɵɵtemplateRefExtractor","ɵɵproperty","listingScoreCardInfoPopover_r3","ɵɵpureFunction1","_c0","Bottom","loading_r4","_ListingScoreSummaryCardComponent","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","ctx_r0","iconColor","ɵɵpureFunction3","_c1","iconSize","ɵɵadvance","ɵɵtextInterpolate","text","ColorIconComponent","init_color_icon_component","__esmMin","constructor","backgroundColor","icon","backgroundSize","selectors","inputs","decls","vars","consts","template","rf","ctx","ɵɵtemplate","ColorIconComponent_mat_icon_2_Template","ColorIconComponent_mat_icon_3_Template","ColorIconComponent_mat_icon_4_Template","ColorIconComponent_mat_icon_5_Template","ColorIconComponent_mat_icon_6_Template","ColorIconComponent_div_7_Template","ɵɵpureFunction2","_c0","_ColorIconComponent","ListingsSummaryCardComponent","init_listings_summary_card_component","__esmMin","selectors","inputs","data","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵelement","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","ɵɵpipeBind1","ɵɵtextInterpolate","syncedSourcesCount","syncInProgressSourcesCount","notSyncingSourcesCount","_ListingsSummaryCardComponent","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate","statusLegend_r2","icon","ɵɵpipeBind1","name","description","ɵɵelement","ɵɵclassMapInterpolate1","ctx_r3","getSyncValueBgColor","data_r3","ɵɵtextInterpolate2","syncedSourcesCount","totalSourcesCount","ɵɵproperty","SyncingProgressSummaryCardComponent","init_syncing_progress_summary_card_component","__esmMin","init_popover","init_local_seo","constructor","listingSyncService","PopoverPositions","showPopover","syncingProgressLegendConfig","SyncingProgressSyncLegendConfig","summaryData$","syncingProgressSummaryData$","showPopovers","hidePopovers","data","lspActive","Math","max","syncInProgressSourcesCount","notSyncingSourcesCount","ɵɵdirectiveInject","ListingSyncService","selectors","decls","vars","consts","template","rf","ctx","ɵɵelementContainerStart","ɵɵlistener","i0","ɵɵrestoreView","_r1","ɵɵresetView","ɵɵtemplate","SyncingProgressSummaryCardComponent_div_11_Template","SyncingProgressSummaryCardComponent_mat_card_content_12_Template","SyncingProgressSummaryCardComponent_ng_template_14_Template","ɵɵtemplateRefExtractor","ɵɵtextInterpolate1","syncingProgressPopover_r5","ɵɵpureFunction1","_c0","Bottom","loading_r6","_SyncingProgressSummaryCardComponent","ConnectedAccountModalComponent","init_connected_account_modal_component","__esmMin","init_dialog","constructor","data","sourceName","GOOGLE_MY_BUSINESS","FACEBOOK","TWITTER","sourceId","accountName","accountLink","ɵɵdirectiveInject","MAT_DIALOG_DATA","selectors","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind2","ɵɵpureFunction1","_c0","ɵɵpureFunction2","_c1","ɵɵproperty","ɵɵpipeBind1","_ConnectedAccountModalComponent","SignupModalComponent","init_signup_modal_component","__esmMin","init_dialog","constructor","data","dialogRef","snackBar","checkboxValue","closeDialog","close","turnOnSync","open","duration","ɵɵdirectiveInject","MAT_DIALOG_DATA","MatDialogRef","MatSnackBar","selectors","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵelement","ɵɵtwoWayListener","$event","i0","ɵɵtwoWayBindingSet","ɵɵlistener","ɵɵadvance","ɵɵtextInterpolate","ɵɵpipeBind1","ɵɵtextInterpolate1","ɵɵtwoWayProperty","_SignupModalComponent","ɵɵelementContainerStart","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","_r2","ctx_r2","ɵɵnextContext","ɵɵresetView","openSignUpModal","ɵɵtext","ɵɵelementEnd","ɵɵtemplate","ListingSignupSidebarComponent_ng_container_9_ng_container_1_Template","ɵɵadvance","ɵɵproperty","ɵɵpipeBind1","loadingChanges$$","asObservable","loading_r4","ɵɵelement","ListingSignupSidebarComponent","init_listing_signup_sidebar_component","__esmMin","init_core","init_vendasta_listing_products","init_esm","init_operators","init_local_seo","init_constants","init_accuracy_text_pipe","init_sync_info_modal_component","init_signup_modal_component","constructor","agid$","listingSyncService","dialog","signUpDialog","snackBar","listingProductsService","topPadding","retry","EventEmitter","syncStatusLoading","closed","upgrade","accuracyText","ListingAccuracyText","BehaviorSubject","subscriptions","ngOnInit","selectedSSID","ssid","updateSyncing","newSyncState","next","emit","vendorID","DIRECT_SUBMIT_SOURCE_TO_VENDOR_ID","sourceId","push","pipe","switchMap","agid","updateVendorSyncFlag","UpdateVendorSyncFlagRequest","businessId","vendorId","syncing","subscribe","open","duration","getListingData$","SignupModalComponent","afterClosed","result","openSyncInfoModal","SyncInfoModalComponent","data","source","ngOnDestroy","forEach","sub","unsubscribe","ɵɵdirectiveInject","AGIDTOKEN","ListingSyncService","MatDialog","MatSnackBar","ListingProductsApiService","selectors","inputs","iconUrl","listingUrl","profileUrl","name","accuracy","sourceSupportsListings","socialServiceSyncing","clientTags","connectLink","listingId","accountName","accountImageUrl","additionalSocialServices","showLSPCTA","lspActive","syncingDetails","disableActions","outputs","decls","vars","consts","template","rf","ctx","i0","_r1","ListingSignupSidebarComponent_ng_container_9_Template","ListingSignupSidebarComponent_ng_template_10_Template","ɵɵtemplateRefExtractor","ListingSignupSidebarComponent_ng_template_12_Template","ɵɵpureFunction1","_c0","ɵɵtextInterpolate1","signedUp_r5","_ListingSignupSidebarComponent","ɵɵelementStart","ɵɵlistener","$event","ɵɵrestoreView","_r3","ctx_r3","ɵɵnextContext","ɵɵresetView","syncStatusloading$$","next","retry","emit","sidenav_r2","ɵɵreference","close","ɵɵelementEnd","ɵɵproperty","iconUrl","data_r5","listingUrl","profileUrl","name","accuracy","sourceHasReporting","ssid","sourceId","isSyncing","clientTags","connectLink","listingId","profileImageUrl","additionalSocialServices","poweredByLSP","syncingDetails","sidebarTopPadding","_r6","_r7","ɵɵpipeBind1","ɵɵtext","ɵɵelementContainerStart","ɵɵelement","ɵɵtemplate","PrimarySourceComponent_ng_container_0_ng_container_11_mat_icon_5_Template","ɵɵadvance","ɵɵpureFunction1","_c3","locked","ɵɵtextInterpolate","PrimarySourceComponent_ng_container_0_ng_container_12_mat_icon_5_Template","PrimarySourceComponent_ng_container_0_ng_container_13_mat_icon_7_Template","PrimarySourceComponent_ng_container_0_ng_container_17_glxy_badge_1_mat_icon_1_Template","accuracyBadgeColor","status","accuracyText","Card","PrimarySourceComponent_ng_container_0_ng_container_17_glxy_badge_2_mat_icon_1_Template","syncBadgeColor","syncStatusText","PrimarySourceComponent_ng_container_0_ng_container_17_glxy_badge_1_Template","PrimarySourceComponent_ng_container_0_ng_container_17_glxy_badge_2_Template","noReporting_r9","syncStatusloading$","loadingSyncStatus_r8","PrimarySourceComponent_ng_container_0_ng_container_18_glxy_badge_1_mat_icon_1_Template","PrimarySourceComponent_ng_container_0_ng_container_18_glxy_badge_2_mat_icon_1_Template","PrimarySourceComponent_ng_container_0_ng_container_18_glxy_badge_1_Template","PrimarySourceComponent_ng_container_0_ng_container_18_glxy_badge_2_Template","PrimarySourceComponent_ng_container_0_ng_container_19_ng_container_1_glxy_badge_1_div_1_Template","PrimarySourceComponent_ng_container_0_ng_container_19_ng_container_1_glxy_badge_1_div_2_Template","PrimarySourceComponent_ng_container_0_ng_container_19_ng_container_1_glxy_badge_1_Template","PrimarySourceComponent_ng_container_0_ng_container_19_ng_container_1_glxy_badge_3_Template","PrimarySourceComponent_ng_container_0_ng_container_19_ng_container_2_glxy_badge_1_Template","PrimarySourceComponent_ng_container_0_ng_container_19_ng_container_2_glxy_badge_3_Template","PrimarySourceComponent_ng_container_0_ng_container_19_ng_container_1_Template","PrimarySourceComponent_ng_container_0_ng_container_19_ng_container_2_Template","_r1","PrimarySourceComponent_ng_container_0_local_seo_listing_sidebar_6_Template","PrimarySourceComponent_ng_container_0_local_seo_listing_sidebar_7_Template","PrimarySourceComponent_ng_container_0_local_seo_listing_signup_sidebar_8_Template","open","PrimarySourceComponent_ng_container_0_ng_container_11_Template","PrimarySourceComponent_ng_container_0_ng_container_12_Template","PrimarySourceComponent_ng_container_0_ng_container_13_Template","PrimarySourceComponent_ng_container_0_ng_container_17_Template","PrimarySourceComponent_ng_container_0_ng_container_18_Template","PrimarySourceComponent_ng_container_0_ng_container_19_Template","_c2","ɵɵtextInterpolate3","score","maxScore","ɵɵtextInterpolate1","serviceToSourceID","service","PrimarySourceComponent","init_primary_source_component","__esmMin","init_core","init_src","init_vendasta_listing_sync_pro","init_vendasta_marketplace_apps","init_esm","init_operators","init_local_seo","init_upgrade_cta_dialog_service","init_connected_account_modal_component","init_accuracy_text_pipe","init_constants","s","getSyncStatusText","translate","length","AccuracyStatus","ACCURACY_STATUS_ACCURATE","canSyncWithoutAccount","lspSyncStatus","DIRECT_SUBMIT_WITHOUT_ACCOUNT_SOURCES","find","id","undefined","socialService","StatusCodeColor","constructor","route","router","dialog","upgradeDialogService","env","EventEmitter","BehaviorSubject","asObservable","subscriptions","ListingAccuracyText","keyOrder","ngOnInit","push","combineLatest","data$","queryParams","subscribe","data","params","ConnectedAccountModalComponent","accountName","afterClosed","shouldSync","listingSidebar","updateSyncing","navigate","url","split","ngOnDestroy","forEach","unsubscribe","sidenav","OpenUpgradeDialog","editionChangeDetails$","getEditionChangeDetails$","upgradePrice$","partnerMarket$","pipe","switchMap","pmConfig","editionChangeDetails","paidEdition","DEMO_PAID_EDITION","getEnvironment","Environment","PROD","PROD_PAID_EDITION","getUpgradePrice$","appID","shareReplay","formattedUpgradePrice$","upgradePrice","getFormattedRetailPrice$","getCustomUpgradeModalContent$","appSettings$","take","formattedUpgradePrice","customUpgradeModalContent","settings","marketingPoints","instant","appName","branding","enabled","ctaText","buttonText","editionUpgradeAction","EditionUpgradeAction","EDITION_UPGRADE_ACTION_CONTACT_SALES","dialogConfig","editionName","imageText","titleText","imageUrl","keySellingPoints","sellingPoints","upgradeNowText","getUpgradeText","price","frequency","getFrequencyText","dialogRef","UpgradeCTADialogComponent","filter","upgradeClicked","isCustomPackage","EDITION_UPGRADE_ACTION_CUSTOM_ORDER","item","packageId","priceReferencePackageId","appId","APP_ID","editionId","buildBusinessCenterUpgradeRedirectInfo","redirectInfo","sendToVbc","ɵɵdirectiveInject","TranslateService","ActivatedRoute","Router","MatDialog","UpgradeCTADialogService","EnvironmentService","selectors","viewQuery","rf","ctx","PrimarySourceComponent_ng_container_0_Template","PrimarySourceComponent_ng_template_2_Template","ɵɵtemplateRefExtractor","PrimarySourceComponent_ng_template_4_Template","PrimarySourceComponent_ng_template_6_Template","loadingCard_r10","_PrimarySourceComponent","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","_r1","ctx_r1","ɵɵnextContext","ɵɵresetView","retry","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","Instagram$","ɵɵpipeBind1","lockInstagramCard$","sidebarTopPadding","_r3","Twitter$","lockTwitterCard$","_r4","Bing$","lockProCards$","_r5","Apple$","listingSyncService","lspActive$","ɵɵelementContainerStart","ɵɵtemplate","PrimarySourcesComponent_ng_container_14_div_1_Template","BusinessAddressHidden$","lpToLSPAccuracy","lpAccuracy","LPAccuracyStatus","ACCURACY_STATUS_INVALID","AccuracyStatus","ACCURACY_STATUS_UNKNOWN","ACCURACY_STATUS_NOT_FOUND","ACCURACY_STATUS_ACCURATE","ACCURACY_STATUS_INACCURATE","constructSocialServiceFromVendorListing","vendorListings","sourceId","sources","filter","listing","length","vendorListing","name","accountGroupId","isSyncing","accuracy","SourceAccuracy","anchorData","anchorDataMatches","AnchorDataMatches","status","score","maxScore","listingUrl","profileUrl","listingId","sourceHasReporting","constructSocialServiceSourceFromTableListing","data","syncedStatuses","StatusCode","STATUS_CODE_SYNCED","STATUS_CODE_IGNORING_ERRORS","STATUS_CODE_SYNCING_WITH_WARNINGS","STATUS_CODE_SUBMITTED","STATUS_CODE_IN_PROGRESS","syncStatus","url","ACCURACY_STATUS_NOT_AVAILABLE","syncingDetails","lspSyncStatus","constructSocialServiceSource","socialServices","selectedSocialServices","sourceServices","service","selectedService","additionalServices","slice","selectedSourceService","find","ssid","username","profileImageUrl","serviceType","socialProfileId","serviceId","isDisabledFlag","socialTokenBroken","isVerified","connectLink","additionalSocialServices","clientTags","PrimarySourcesComponent","init_primary_sources_component","__esmMin","init_vendasta_listing_products","init_vendasta_listing_sync_pro","init_esm","init_operators","init_local_seo","constructor","accountGroupId$","listingProductsService","lspService","snackbar","listingProfileService","accountsService","upgradeCTADialogService","editionUpgradeHidden$","getEditionChangeDetails$","pipe","map","details","hideUpgradeCta","ngOnInit","switchMap","agid","get","ProjectionFilter","napData","lp","serviceAreaBusiness","serviceArea","businessType","ServiceAreaBusinessType","SERVICE_AREA_BUSINESS_TYPE_CUSTOMER_LOCATION_ONLY","shareReplay","lockCardsMovingToPro$","combineLatest","isLBFreeEdition$","featureFlags$","isLbFreeEdition","flags","activeProductIds$","businessID","getMultiActivationStatuses","activations","activation","productId","lspActive","lockTwitterAndInstaFlag","productIds","DemoTwitterAddonId","some","id","ProdTwitterAddonId","DemoInstagramAddonId","ProdInstagramAddonId","socialServices$","listSocialServices","ListSocialServicesRequest","businessId","refresh","res","catchError","err","console","log","openErrorSnack","of","selectedSocialServices$","getSelectedSocialServices","GetSelectedSocialServicesRequest","selectedServices","VendorListing$","listVendorListings","ListVendorListingsRequest","getListingData$","listingData","vendorListing$","filteredListings","source","Google$","Facebook$","ɵɵdirectiveInject","AGIDTOKEN","ListingProductsApiService","ListingSyncProApiService","SnackbarService","ListingSyncService","ListingProfileService","AccountsService","UpgradeCTADialogService","selectors","inputs","decls","vars","consts","template","rf","ctx","PrimarySourcesComponent_div_5_Template","PrimarySourcesComponent_div_8_Template","PrimarySourcesComponent_div_11_Template","PrimarySourcesComponent_ng_container_14_Template","_PrimarySourcesComponent","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","ɵɵpipeBind2","ɵɵpureFunction1","_c0","ctx_r0","listingProfileRedirectLink","ɵɵsanitizeHtml","ɵɵtext","ɵɵtextInterpolate1","ɵɵpipeBind1","ɵɵtextInterpolate","ɵɵpureFunction2","_c1","businessAppReconnectLink","businessAppCustomName","ɵɵtemplate","ListingsManagementComponent_glxy_alert_5_span_1_Template","ListingsManagementComponent_glxy_alert_5_ng_template_3_Template","ɵɵtemplateRefExtractor","isSmActive$","fbWarningNoSm_r2","redirectLink","ɵɵelementContainerStart","sidebarTopPadding","ListingsManagementComponent","init_listings_management_component","__esmMin","init_src","init_vendasta_accounts_legacy","init_esm","init_operators","init_local_seo","init_vendasta_listing_products","constructor","accountGroupId$","repCoreService","accountGroupService","businessCenterService","accountsService","upgradeCTADialogService","listingSyncService","listingProfileService","snackBar","router","route","subscriptions","lspUpgradeHidden$","getListingData$","pipe","map","data","lspActive","lspUpgradePathEnabled","facebookReauthFeatureFlag$","featureFlags$","flags","getSelectedFacebookPageSSID$","lspFacebookPages$","d","ssid","createUrlTree","relativeTo","toString","missingGeoLocation$","switchMap","agid","getMulti","GetMultiListingProfileRequest","businessIds","projectionFilter","ProjectionFilter","napData","catchError","err","message","error","open","politeness","duration","EMPTY","res","listingProfiles","listingProfile","location","latitude","longitude","shareReplay","ngOnInit","subscribe","showTwitterReconnectBanner$","getTwitterCustomAppConnections","response","reconnect_group","length","push","get","accountGroupExternalIdentifiers","vCat","externalIdentifiers","vCategoryIds","hasCategoryNotFound","includes","listAppsAndAddonsActivationStatusesForBusiness","appIds","statuses","AppAndAddonActivationStatus","ACTIVATED","status","showFacebookReconnectBanner$","combineLatest","isFbFeatureFlagEnabled","isSmActive","getVBCEntryUrl","url","name","getFacebookAppConnections","reconnect_needed","of","ngOnDestroy","forEach","s","unsubscribe","ɵɵdirectiveInject","AGIDTOKEN","RepcoreApiService","AccountGroupService","BusinessCenterService","AccountsService","UpgradeCTADialogService","ListingSyncService","ListingProfileApiService","MatSnackBar","Router","ActivatedRoute","selectors","inputs","decls","vars","consts","template","rf","ctx","ListingsManagementComponent_div_0_Template","ListingsManagementComponent_glxy_alert_3_Template","ListingsManagementComponent_glxy_alert_5_Template","ListingsManagementComponent_glxy_alert_7_Template","ListingsManagementComponent_ng_container_22_Template","_ListingsManagementComponent","NgxJsonViewerModule","init_ngx_json_viewer","__esmMin","init_core","init_common","t","ɵɵdefineNgModule","ɵɵdefineInjector","CommonModule","AnchorDataKeyToIconPipe","init_anchor_data_key_to_icon_pipe","__esmMin","transform","value","pure","_AnchorDataKeyToIconPipe","FillEmptyAnchorDataPipe","init_fill_empty_anchor_data_pipe","__esmMin","transform","value","match","pure","_FillEmptyAnchorDataPipe","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵelement","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","key_r1","ɵɵclassProp","ctx_r1","anchorDataMatches","accuracy","anchorData","profileAnchorData","ErrorsModalComponent","init_errors_modal_component","__esmMin","init_dialog","constructor","data","keyOrder","sourceName","prop","ɵɵdirectiveInject","MAT_DIALOG_DATA","selectors","decls","vars","consts","template","rf","ctx","ɵɵtemplate","ErrorsModalComponent_div_10_Template","ɵɵproperty","_ErrorsModalComponent","TableColumnDirective","init_column_directive","__esmMin","inputs","columnDefinition","element","eventEmitter","_TableColumnDirective","ɵɵelementContainerStart","ɵɵtext","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","ɵɵelementStart","ɵɵtemplate","PresenceAccuracyComponent_div_1_ng_container_1_Template","ɵɵelementEnd","ɵɵproperty","ctx_r0","canShowAccuracyTextAsInProgress","element","displayAccuracyStatus_r2","ɵɵpipeBind2","accuracy","status","accuracyErrorTotal","PresenceAccuracyComponent","init_presence_accuracy_component","__esmMin","init_column_directive","init_errors_modal_component","init_vendasta_listing_sync_pro","init_listing_sync_table_service","TableColumnDirective","constructor","dialog","inProgressAccuractyStatus","StatusCode","STATUS_CODE_IN_PROGRESS","STATUS_CODE_SYNCED","STATUS_CODE_SUBMITTED","syncStatusType","SyncStatusType","LSP_ACTIVE","AccuracyStatus","ACCURACY_STATUS_INACCURATE","statusCode","includes","openInfoModal","open","ErrorsModalComponent","data","sourceName","name","profileAnchorData","anchorData","ɵɵdirectiveInject","MatDialog","selectors","features","ɵɵInheritDefinitionFeature","decls","vars","consts","template","rf","ctx","PresenceAccuracyComponent_div_1_Template","PresenceAccuracyComponent_ng_template_2_Template","ɵɵtemplateRefExtractor","PresenceAccuracyComponent_ng_template_4_Template","unclickableSyncStatus_r3","_PresenceAccuracyComponent","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","ctx_r0","element","listingUrl","ɵɵsanitizeUrl","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","SourceNameColumnComponent","init_source_name_column_component","__esmMin","init_column_directive","TableColumnDirective","t","selectors","features","ɵɵInheritDefinitionFeature","decls","vars","consts","template","rf","ctx","ɵɵelement","ɵɵtemplate","SourceNameColumnComponent_a_5_Template","name","iconUrl","ɵɵtextInterpolate","syncStatusType","_SourceNameColumnComponent","ɵɵelementContainerStart","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","_r1","ctx_r1","ɵɵnextContext","ɵɵresetView","openUpgradeDialog","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵclassMapInterpolate1","element","syncIconClass","ɵɵtextInterpolate1","syncIcon","syncTextClass","ɵɵproperty","tooltipText","tooltipTitle","syncText","StatusColumnComponent","init_status_column_component","__esmMin","init_column_directive","TableColumnDirective","constructor","eventEmitter","emit","selectors","features","ɵɵInheritDefinitionFeature","decls","vars","consts","template","rf","ctx","ɵɵtemplate","StatusColumnComponent_ng_container_1_Template","StatusColumnComponent_div_2_Template","syncStatusType","_StatusColumnComponent","COMMON_TABLE_LABELS","LISTING_SYNC_TABLE_DEF","tableDefinitionFactory","init_listing_sync_table_model","__esmMin","init_src","init_source_name_column_component","init_status_column_component","init_presence_accuracy_component","noResults","cancel","none","update","sortBy","thenSortBy","addAnotherSortColumn","chooseColumnToSortBy","columnSorting","date","ascending","descending","number","string","default","export","buttonText","buttonTooltipBeforeCount","buttonTooltipAfterCount","description","columnSelector","id","labels","columns","field","displayName","type","ColumnType","COLUMN_TYPE_STRING","cellComponent","SourceNameColumnComponent","pinned","Pinned","PINNED_LEFT","sortOptions","sortable","width","ColumnWidth","WIDTH_WIDE","PresenceAccuracyComponent","StatusColumnComponent","COLUMN_TYPE_NUMBER","groups","columnOrganizerType","ColumnOrganizerType","ADVANCED_ORGANIZER","options","pageSizeOptions","defaultPageSize","filterService","tableDefinition","filters","LocalSEOListingsManagementModule","init_listings_management_module","__esmMin","init_common","init_forms","init_button","init_card","init_checkbox","init_dialog","init_expansion","init_icon","init_list","init_menu","init_progress_spinner","init_radio","init_sidenav","init_slide_toggle","init_snack_bar","init_table","init_tooltip","init_src","init_ngx_translate_core","init_alert","init_badge","init_form_field","init_loading_spinner","init_page","init_popover","init_lib_esmodule","init_ngx_json_viewer","init_en_devel","init_repcore_api_service","init_vapi_service","init_upgrade_cta_dialog_service","init_listing_sync_table_filter_service","init_listing_sync_table_model","init_listing_sync_table_service","init_listing_sync_service","VaFilteredMatTableService","ListingSyncTableFilterService","provide","TABLE_DEFINITION","useFactory","tableDefinitionFactory","deps","RepcoreApiService","VApiService","UpgradeCTADialogService","ListingSyncService","ListingSyncTableService","imports","CommonModule","TranslateModule","GalaxyAlertModule","MatButtonModule","MatCardModule","MatDialogModule","MatMenuModule","MatIconModule","GalaxyTooltipModule","MatProgressSpinnerModule","MatSlideToggleModule","MatSnackBarModule","MatTableModule","MatRadioModule","VaIconModule","Filter2TableModule","ReactiveFormsModule","FilterModule","MatTooltipModule","GalaxyFormFieldModule","GalaxyPageModule","NgxJsonViewerModule","MatExpansionModule","MatListModule","GalaxyBadgeModule","GalaxyLoadingSpinnerModule","MatSidenavModule","ClickOutsideModule","GalaxyPopoverModule","FormsModule","MatCheckboxModule","LexiconModule","forChild","componentName","baseTranslation","en","_LocalSEOListingsManagementModule","init_lib","__esmMin","init_local_seo_table_module","init_local_seo_keywords_stats_cards_module","init_keyword_tracking_module","init_keyword_tracking_service","init_upgrade_cta_dialog_service","init_listings_management_module","init_local_seo","init_src","__esmMin","init_lib"],"x_google_ignoreList":[0,8,17,18,19,45,46,47,89]}