{"version":3,"sources":["libs/platform-integrations/src/lib/const.ts","libs/platform-integrations/src/lib/model/connection-button-config.model.ts","libs/platform-integrations/src/lib/model/connection-integration-detail.ts","libs/platform-integrations/src/lib/model/index.ts","libs/platform-integrations/src/lib/feature-flag.service.ts","libs/platform-integrations/src/lib/common/util.service.ts","libs/platform-integrations/src/lib/card-data.service.ts","libs/platform-integrations/src/lib/connection-config/components/action-type/action-type.component.ts","libs/platform-integrations/src/lib/connection-config/components/action-type/action-type.component.html","libs/platform-integrations/src/lib/common/integration-util.service.ts","libs/platform-integrations/src/lib/connection-config/components/support-based/support-based-form/support-based-form.component.ts","libs/platform-integrations/src/lib/connection-config/components/support-based/support-based-form/support-based-form.component.html","libs/platform-integrations/src/lib/unlock-dialogue-box/unlock-dialogue-box.component.ts","libs/platform-integrations/src/lib/unlock-dialogue-box/unlock-dialogue-box.component.html","libs/platform-integrations/src/lib/connection-config/components/oauth2-based/oauth2-based-form/oauth2-based-form.component.ts","libs/platform-integrations/src/lib/connection-config/components/oauth2-based/oauth2-based-form/oauth2-based-form.component.html","libs/platform-integrations/src/lib/connection-config/components/apikey-based/apikey-based-form/apikey-based.component.ts","libs/platform-integrations/src/lib/connection-config/components/apikey-based/apikey-based-form/apikey-based.component.html","libs/platform-integrations/src/lib/connection-config/components/dynamic-form/dynamic-form.component.ts","libs/platform-integrations/src/lib/connection-config/components/dynamic-form/dynamic-form.component.html","libs/platform-integrations/src/lib/common/connection-button-action.service.ts","libs/platform-integrations/src/lib/common/index.ts","node_modules/ngx-color-picker/fesm2020/ngx-color-picker.mjs","libs/platform-integrations/src/lib/integration-card/integration-card.component.ts","libs/platform-integrations/src/lib/integration-card/integration-card.component.html","libs/platform-integrations/src/lib/model/social-connections.interface.ts","libs/platform-integrations/src/lib/common/legacy-domain.service.ts","libs/platform-integrations/src/lib/legacy-auth.service.ts","libs/platform-integrations/src/lib/marketing-page/button-config-pipe.ts","libs/platform-integrations/src/lib/marketing-page/button-template/button-template.component.ts","libs/platform-integrations/src/lib/marketing-page/button-template/button-template.component.html","libs/platform-integrations/src/lib/config-page/resources/resources.component.ts","libs/platform-integrations/src/lib/config-page/resources/resources.component.html","libs/platform-integrations/src/lib/marketing-page/works-with/works-with.component.ts","libs/platform-integrations/src/lib/marketing-page/works-with/works-with.component.html","libs/platform-integrations/src/lib/common/not-found/not-found.ts","libs/platform-integrations/src/lib/common/not-found/not-found.html","libs/platform-integrations/src/lib/marketing-page/marketing-page.component.ts","libs/platform-integrations/src/lib/marketing-page/marketing-page.component.html","libs/platform-integrations/src/lib/config-page/account-details/account-details.component.ts","libs/platform-integrations/src/lib/config-page/account-details/account-details.component.html","libs/platform-integrations/src/lib/config-page/instructions/fields/password/password.component.ts","libs/platform-integrations/src/lib/config-page/instructions/fields/password/password.component.html","libs/platform-integrations/src/lib/config-page/instructions/fields/label/label.component.ts","libs/platform-integrations/src/lib/config-page/instructions/fields/label/label.component.html","libs/platform-integrations/src/lib/config-page/sync-settings/fields/auto-complete/auto-complete.service.ts","libs/platform-integrations/src/lib/config-page/sync-settings/fields/auto-complete/auto-complete.component.ts","libs/platform-integrations/src/lib/config-page/sync-settings/fields/auto-complete/auto-complete.component.html","libs/platform-integrations/src/lib/config-page/sync-settings/sync-settings.component.ts","libs/platform-integrations/src/lib/config-page/sync-settings/sync-settings.component.html","libs/platform-integrations/src/lib/config-page/instructions/fields/url/url.component.ts","libs/platform-integrations/src/lib/config-page/instructions/fields/url/url.component.html","libs/platform-integrations/src/lib/config-page/instructions/instructions.component.ts","libs/platform-integrations/src/lib/config-page/instructions/instructions.component.html","libs/platform-integrations/src/lib/config-page/config-page.component.ts","libs/platform-integrations/src/lib/config-page/config-page.component.html","libs/platform-integrations/src/lib/custom-banner/preconnect-alert/preconnect-alert.component.ts","libs/platform-integrations/src/lib/custom-banner/preconnect-alert/preconnect-alert.component.html","libs/platform-integrations/src/lib/custom-banner/disconnect-alert/disconnect-alert.component.ts","libs/platform-integrations/src/lib/custom-banner/disconnect-alert/disconnect-alert.component.html","libs/platform-integrations/src/lib/integrations-banner/integrations-banner.component.ts","libs/platform-integrations/src/lib/integrations-banner/integrations-banner.component.html","libs/platform-integrations/src/lib/custom-banner/connection-message/connection-message.component.ts","libs/platform-integrations/src/lib/custom-banner/connection-message/connection-message.component.html","libs/platform-integrations/src/lib/platform-integrations.component.ts","libs/platform-integrations/src/lib/platform-integrations.component.html","libs/platform-integrations/src/lib/platform-integrations-lib.module.ts","libs/platform-integrations/src/lib/connection-button/connection-button.component.ts","libs/platform-integrations/src/lib/connection-button/connection-button.component.html","libs/platform-integrations/src/lib/index.ts","libs/platform-integrations/src/index.ts"],"sourcesContent":["export enum UserAction {\n BROWSE = 0,\n MANAGE = 1,\n}\n","export {};\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiY29ubmVjdGlvbi1idXR0b24tY29uZmlnLm1vZGVsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIEV4YW1wbGU6XG4vLyBpbXBvcnQge2Nvbm5lY3Rpb25BY3Rpb25TZXJ2aWNlfSBmcm9tICdsaWJzL3BsYXRmb3JtLWludGVncmF0aW9ucy9zcmMvbGliL2NvbW1vbi9jb25uZWN0aW9uLWJ1dHRvbi1hY3Rpb24uc2VydmljZSc7XG4vLyB0aGlzLmJ1dHRvbkNvbmZpZyA9IHtcbi8vICAgY29ubmVjdExhYmVsOiAnQmVnaW4gU2Vzc2lvbicsXG4vLyAgIHJlc3VtZUxhYmVsOiAnUmVzdW1lIFNlc3Npb24nLFxuLy8gICByZWNvbm5lY3RMYWJlbDogJ1JlY29ubmVjdCBTZXNzaW9uJyxcbi8vICAgY29ubmVjdEFjdGlvbjogKCkgPT4gdGhpcy5jb25uZWN0aW9uQWN0aW9uU2VydmljZS5vcGVuQ29ubmVjdE1vZGFsKHRydWUpLFxuLy8gICBkaXNjb25uZWN0QWN0aW9uOiAoKSA9PiB0aGlzLmRpc2Nvbm5lY3RTZXJ2aWNlKCksXG4vLyAgIHByZWNvbm5lY3RBY3Rpb246ICgpID0+IHRoaXMuY29ubmVjdGlvbkFjdGlvblNlcnZpY2Uub3BlbkNvbm5lY3RNb2RhbChmYWxzZSksXG4vLyAgIHN0eWxlQ2xhc3M6ICdtYXQtZmxhdC1idXR0b24nLFxuLy8gICBzdHlsZTogXCJ7ICdjb2xvcic6ICdwcmltYXJ5J31cIixcbi8vICAgaXNEaXNhYmxlZDogZmFsc2Vcbi8vIH07XG5leHBvcnQgaW50ZXJmYWNlIENvbm5lY3Rpb25CdXR0b25Db25maWdNb2RlbCB7XG4gIC8vIEZ1bmN0aW9ucyB0byBydW4gZm9yIHRoZSBidXR0b24gY2xpY2sgYWN0aW9ucyBiYXNlZCBvbiB0aGUgY29ubmVjdGlvbiBzdGF0ZS5cbiAgY29ubmVjdEFjdGlvbjogKCkgPT4gdm9pZDtcbiAgcHJlY29ubmVjdEFjdGlvbjogKCkgPT4gdm9pZDtcbiAgZGlzY29ubmVjdEFjdGlvbjogKCkgPT4gdm9pZDtcblxuICAvLyBPbmUgb2YgdGhlIGxhYmVscyB3aWxsIGJlIGRpc3BsYXllZCBiYXNlZCBvbiB0aGUgc3RhdGUgb2YgdGhlIGNvbm5lY3Rpb24uXG4gIGNvbm5lY3RMYWJlbDogc3RyaW5nO1xuICByZXN1bWVMYWJlbDogc3RyaW5nO1xuICByZWNvbm5lY3RMYWJlbDogc3RyaW5nO1xuICBkaXNjb25uZWN0TGFiZWw6IHN0cmluZztcblxuICAvLyBUaGUgY3NzIGNsYXNzIHRvIHVzZSBmb3Igc3R5bGluZy4gSXQgaXMgc3VnZ2VzdGVkIHRvIHVzZSB0aG9zZSBwcm92aWRlZCBieSBHYWxheHkgb3RoZXJ3aXNlIHlvdSB3aWxsIG5lZWQgdG9cbiAgLy8gYWRkIGEgY2xhc3MgdG8gdGhlIGxpYnJhcnkuXG4gIHN0eWxlQ2xhc3M6IHN0cmluZztcbiAgLy8gQWRkaXRpb25hbCBzdHlsZSBzZXR0aW5ncy4gRXg6IHsgJ2JhY2tncm91bmQtY29sb3InOiAnYmx1ZScsICdjb2xvcic6ICd3aGl0ZScgfVxuICBzdHlsZTogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICBpc0Rpc2FibGVkPzogYm9vbGVhbjtcbn1cbiJdLCJtYXBwaW5ncyI6IiIsImlnbm9yZUxpc3QiOltdfQ==","import { ConnectionStatus, IntegrationMarketingResponse } from '@vendasta/platform-integrations';\nimport { AppSettings } from '@vendasta/marketplace-apps/lib/_internal/objects/app-settings';\nimport { User } from '@vendasta/iamv2';\n\n// Single Connection tied to Single Integration\nexport declare class ConnectionIntegrationDetail {\n connectionId: string;\n namespace: string;\n integrationId: string;\n integration: IntegrationMarketingResponse;\n userId: string;\n userInfo: User;\n status: ConnectionStatus;\n label: string;\n created: Date;\n updated: Date;\n deleted: Date;\n}\nexport declare class CustomField {\n label: string;\n value: string;\n}\n\nexport enum ServiceType {\n SelfServeUpgrade = 'Self-serve upgrade',\n ContactSalesperson = 'Contact a salesperson',\n UpgradeToPro = 'Upgrade to Pro with a custom package',\n}\n\nexport interface RmAppDetail {\n hasRMPremiumActive: boolean;\n upgradeSetting: AppSettings;\n namespace?: string;\n partnerId?: string;\n}\n\nexport enum IntegrationType {\n QUICKBOOKS = 'QuickBooks',\n ZAPIER = 'Zapier',\n APPLEBUSINESSCONNECT = 'AppleBusinessConnect',\n PROTRACTOR = 'Protractor',\n\n // Legacy IntegrationTypes\n GOOGLEMYBUSINESS = 'GoogleMyBusiness',\n FACEBOOK = 'Facebook',\n GOOGLESEARCHCONSOLE = 'GoogleSearchConsole',\n GOOGLEANALYTICS = 'GoogleAnalytics',\n GOOGLEMEET = 'GoogleMeet',\n ZOOMMEET = 'ZoomMeet',\n QUICKBOOKSONLINEPERSONAL = 'QuickBooksOnlinePersonal',\n INSTAGRAM = 'Instagram',\n}\n\nexport interface VAPIResponse {\n data: any;\n requestId: string;\n responseTime: number;\n statusCode: number;\n version: string;\n}\n","export * from './connection-button-config.model';\nexport * from './connection-integration-detail';\n","import { inject, Injectable } from '@angular/core';\nimport { FeatureFlagService as FeatureFlagApiService, FeatureFlagStatusInterface } from '@galaxy/partner';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nexport class FeatureFlagMultiResponse {\n [key: string]: boolean;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class FeatureFlagService {\n private readonly featureFlagService = inject(FeatureFlagApiService);\n\n checkFeatureFlag(partnerId: string, marketId = '', ...featureIds: string[]): Observable {\n return this.featureFlagService.batchGetStatus(partnerId, marketId, featureIds).pipe(\n map((val: FeatureFlagStatusInterface): boolean[] => {\n return featureIds.map((featureId) => val[featureId] || false);\n }),\n );\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UtilService {\n getCurrentURL(): string {\n let url = location.href;\n const lastIndex = url.lastIndexOf('?');\n if (lastIndex !== -1) {\n url = url.substring(0, lastIndex);\n }\n return url;\n }\n\n getImageSrc(imageName: string): string {\n if (window.location.hostname === 'localhost' || window.location.hostname === '127.0.0.1') {\n return `/assets/platform-integrations/${imageName}`;\n }\n return `https://vstatic-prod.apigateway.co/business-center-client.9223372035111590735.prod/assets/platform-integrations/${imageName}`;\n }\n}\n","import { HttpClient, HttpResponse } from '@angular/common/http';\nimport { Inject, inject, Injectable } from '@angular/core';\nimport {\n ConnectionMethods,\n ConnectionResponse,\n ConnectionsApiService,\n ConnectionStatus,\n CreateConnectionRequest,\n CreateConnectionResponse,\n CustomFields,\n DeleteConnectionRequest,\n GetAuthorizationCodeRedirectURLRequest,\n GetConnectionRequest,\n GetConnectionResponse,\n GetIntegrationMarketingRequest,\n IntegrationMarketingApiService,\n IntegrationMarketingResponse,\n ListConnectionRequest,\n ListIntegrationMarketingRequest,\n OAuthApiService,\n RevokeAccessTokenAndDeleteRequest,\n SupportedContexts,\n UpdateConnectionRequest,\n UpdateConnectionRequestUpdateFields,\n} from '@vendasta/platform-integrations';\nimport { EMPTY, filter, map, mergeMap, Observable, of, shareReplay, switchMap, throwError } from 'rxjs';\n\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { IAMService, User, UserIdentifier } from '@vendasta/iamv2';\nimport { catchError, take } from 'rxjs/operators';\nimport { CustomField, IntegrationType, VAPIResponse } from './model/connection-integration-detail';\nimport { AccountsApiService, GetRequest } from '@vendasta/accounts/legacy';\nimport {\n GetAppSettingsRequest,\n GetMultiAppRequest,\n PartnerApiService,\n App,\n GetMultiAppResponse,\n} from '@vendasta/marketplace-apps';\nimport {\n PLATFORM_INTEGRATIONS_CONTEXT_INJECTION_TOKEN$,\n PLATFORM_INTEGRATIONS_MARKET_ID_INJECTION_TOKEN$,\n PLATFORM_INTEGRATIONS_NAMESPACE_INJECTION_TOKEN$,\n PLATFORM_INTEGRATIONS_PARTNER_ID_INJECTION_TOKEN$,\n PLATFORM_INTEGRATIONS_ORIGIN_INJECTION_TOKEN,\n} from '@galaxy/platform-integrations/shared';\nimport { FeatureFlagService } from './feature-flag.service';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { AppSettings } from '@vendasta/marketplace-apps/lib/_internal/objects/app-settings';\nimport { Environment, EnvironmentService } from '@galaxy/core';\nimport { WhitelabelApiService } from '@vendasta/partner';\nimport { UtilService } from './common/util.service';\nimport { FieldMask } from '@vendasta/platform-integrations';\nimport { GA4PropertiesApiService, Category, DeletePropertyRequest } from '@vendasta/google-analytics';\nimport { QuickBooksService } from '@vendasta/quickbooks';\nimport { IntegrationCard } from './model/Integration-connections-detail';\nimport {\n MeetingSource,\n MeetingSourceQuery,\n MeetingsService,\n MeetingSourceListResponse,\n MeetingSourceOrigin,\n} from '@vendasta/meetings';\nimport { InstagramApiService } from '@vendasta/instagram';\n\nconst NO_RM_PRODUCT_MESSAGE = 'no reputation management product';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CardDataService {\n private readonly integrationService = inject(IntegrationMarketingApiService);\n private readonly connectionService = inject(ConnectionsApiService);\n private readonly snackbarService = inject(SnackbarService);\n private readonly authService = inject(OAuthApiService);\n private readonly accountService = inject(AccountsApiService);\n private readonly whitelabelService = inject(WhitelabelApiService);\n private readonly marketplaceAppsService = inject(PartnerApiService);\n private readonly featureFlagService = inject(FeatureFlagService);\n private readonly iamService = inject(IAMService);\n private readonly environmentService = inject(EnvironmentService);\n private readonly ga = inject(GA4PropertiesApiService);\n private readonly http = inject(HttpClient);\n private readonly quickBooksService = inject(QuickBooksService);\n private readonly meetingsService = inject(MeetingsService);\n private readonly instagramService = inject(InstagramApiService);\n private readonly partnerApiService = inject(PartnerApiService);\n\n constructor(\n @Inject(PLATFORM_INTEGRATIONS_NAMESPACE_INJECTION_TOKEN$) public readonly namespace$: Observable,\n @Inject(PLATFORM_INTEGRATIONS_ORIGIN_INJECTION_TOKEN) public readonly origin: MeetingSourceOrigin,\n @Inject(PLATFORM_INTEGRATIONS_CONTEXT_INJECTION_TOKEN$)\n public readonly context: SupportedContexts,\n private readonly utilService: UtilService,\n @Inject(PLATFORM_INTEGRATIONS_PARTNER_ID_INJECTION_TOKEN$)\n public readonly partnerId$: Observable,\n @Inject(PLATFORM_INTEGRATIONS_MARKET_ID_INJECTION_TOKEN$)\n public readonly marketId$: Observable,\n ) {}\n\n protected readonly partnerID = toSignal(\n this.partnerId$.pipe(\n map((partnerID: string) => {\n return partnerID;\n }),\n ),\n );\n\n protected readonly marketID = toSignal(\n this.marketId$.pipe(\n map((marketID: string) => {\n return marketID;\n }),\n ),\n );\n\n getIntegrationsList(): Observable {\n return this.integrationService\n .list(\n new ListIntegrationMarketingRequest({\n pagingOptions: {\n pageSize: 500,\n },\n supportedContexts: this.context,\n }),\n )\n .pipe(\n mergeMap((resp) => {\n // Extract integration type from integrations\n const featureFlagIds = resp.integrations.map(\n (integration) => 'show_' + integration.integrationType.toLowerCase() + '_integration',\n );\n // Check feature flags for all extracted IDs in a single call and\n // determine whether card need to be displayed or not\n return this.featureFlagService\n .checkFeatureFlag(this.partnerID()!, '', ...featureFlagIds)\n .pipe(map((flags) => resp.integrations.filter((_, index) => flags[index])));\n }),\n catchError((err) => {\n if (err.status !== 403) {\n this.snackbarService.openErrorSnack('INTEGRATION_CARD.INTEGRATION_LIST_ERROR');\n }\n return throwError(err);\n }),\n shareReplay(),\n );\n }\n\n getIntegration(integrationId: string, namespace: string): Observable {\n return this.integrationService\n .get(\n new GetIntegrationMarketingRequest({\n integrationId: integrationId,\n namespace: namespace,\n }),\n )\n .pipe(\n map((resp) => resp),\n shareReplay(),\n catchError((err) => {\n this.snackbarService.openErrorSnack('INTEGRATION_CARD.INTEGRATION_ERROR');\n return throwError(err);\n }),\n );\n }\n\n getConnection(connectionId: string, namespace: string): Observable {\n return this.connectionService\n .get(\n new GetConnectionRequest({\n connectionId: connectionId,\n namespace: namespace,\n filters: {\n context: this.context,\n },\n }),\n )\n .pipe(\n map((resp) => resp),\n catchError((err) => {\n this.snackbarService.openErrorSnack('INTEGRATION_CARD.GET_CONNECTION_ERROR');\n return throwError(err);\n }),\n );\n }\n\n getIntegrationId(connectionId: string, namespace: string): Observable {\n return this.connectionService\n .get(\n new GetConnectionRequest({\n connectionId: connectionId,\n namespace: namespace,\n filters: {\n context: this.context,\n },\n }),\n )\n .pipe(\n map((resp) => resp.integrationId),\n catchError((err) => {\n this.snackbarService.openErrorSnack('INTEGRATION_CARD.GET_CONNECTION_ERROR');\n return throwError(err);\n }),\n );\n }\n\n deleteGA4Connection(partnerId: string, accountGroupId: string): Observable {\n return this.ga.deleteProperty(\n new DeletePropertyRequest({\n partnerId: partnerId,\n businessId: accountGroupId,\n category: Category.CATEGORY_WEBSITE,\n subcategory: 'CATEGORY_WEBSITE',\n }),\n );\n }\n\n disconnectInstagramConnection(connectionId: string, partnerId: string, accountGroupId: string) {\n return this.instagramService\n .listUsers({\n partnerId: partnerId,\n businessId: accountGroupId,\n })\n .pipe(\n switchMap((response) => {\n // connectionId format(Instagram--) eg: Instagram-AG-FF32LBZP2V-17841469008460862\n const connectionIDParts = connectionId.split('-');\n // instagramUserId will be the last part of the connectionIDParts list\n const instagramUserID = connectionIDParts[connectionIDParts.length - 1];\n if (response?.users?.length) {\n for (const user of response.users) {\n if (user.instagramUserId === instagramUserID) {\n return this.instagramService.deleteUser({\n partnerId: partnerId,\n businessId: accountGroupId,\n userId: user.userId,\n });\n }\n }\n }\n return EMPTY;\n }),\n );\n }\n\n listMeetConnection(): Observable {\n return this.namespace$.pipe(\n take(1),\n switchMap((namespace) => {\n return this.meetingsService.list(\n [\n new MeetingSourceQuery({\n source: MeetingSource.MEETING_SOURCE_ZOOM,\n connectNextUrl: window.location.href,\n disconnectNextUrl: window.location.href,\n }),\n new MeetingSourceQuery({\n source: MeetingSource.MEETING_SOURCE_GOOGLE_MEET,\n connectNextUrl: window.location.href,\n disconnectNextUrl: window.location.href,\n }),\n ],\n namespace,\n this.origin,\n );\n }),\n shareReplay({ bufferSize: 1, refCount: true }),\n );\n }\n\n deleteSocialConnections(deleteUrl: string): Observable {\n return this.http.post(deleteUrl, {});\n }\n\n deleteQuickBookPersonalConnection(namespace: string, userID: string): Observable {\n return this.quickBooksService.revokeAccessToken(namespace, userID);\n }\n\n getConnectionsList(namespace: string, integrationID?: string, cursor?: string): Observable {\n return this.connectionService.list(this.getConnectionListRequest(namespace, integrationID, cursor)).pipe(\n mergeMap((resp) => {\n if (resp.pagingMetadata && resp.pagingMetadata.hasMore) {\n // If there's a next cursor, recursively call getConnectionsList\n return this.getConnectionsList(namespace, integrationID, resp.pagingMetadata.nextCursor).pipe(\n map((nextPageConnections) => resp.connections.concat(nextPageConnections)),\n );\n } else {\n return of(resp.connections);\n }\n }),\n shareReplay(),\n catchError((err) => {\n this.snackbarService.openErrorSnack('INTEGRATION_CARD.GET_CONNECTIONS_LIST_ERROR');\n return throwError(err);\n }),\n );\n }\n\n getConnectionListRequest(namespace: string, integrationID?: string, cursor?: string) {\n const pageSize = 25;\n let requestParams: ListConnectionRequest;\n\n if (cursor) {\n requestParams = new ListConnectionRequest({\n namespace: namespace,\n filters: {\n context: this.context,\n integrationId: integrationID,\n },\n pagingOptions: {\n pageSize,\n cursor,\n },\n });\n } else {\n requestParams = new ListConnectionRequest({\n namespace: namespace,\n filters: {\n context: this.context,\n integrationId: integrationID,\n },\n pagingOptions: {\n pageSize,\n },\n });\n }\n return requestParams;\n }\n\n getRMAppDetail(namespace: string, partnerID: string): Observable {\n return this.accountService\n .get(\n new GetRequest({\n businessId: namespace,\n accountId: namespace,\n productId: 'RM',\n partnerId: partnerID,\n }),\n )\n .pipe(\n map((resp) => resp.account.editionId),\n shareReplay(1),\n catchError((err) => {\n console.log(err);\n return NO_RM_PRODUCT_MESSAGE;\n }),\n );\n }\n\n getRMAppSettings(partnerID: string, marketID: string): Observable {\n return this.marketplaceAppsService\n .getAppSettings(\n new GetAppSettingsRequest({\n partnerId: partnerID,\n marketId: marketID,\n appId: 'RM',\n disableFallback: true,\n }),\n )\n .pipe(map((resp) => resp.appSettings));\n }\n\n handleConnection(cards: IntegrationCard[]) {\n if (!cards || cards.length !== 1) return;\n const card = cards[0];\n if (card?.integration?.connectionMethod == ConnectionMethods.OAUTH2) {\n this.performSSO(\n String(card.namespace),\n card.integration.integrationId,\n String(card?.connection?.connectionId),\n this.utilService.getCurrentURL() + '?src=sso',\n ).subscribe();\n }\n }\n\n createConnection(\n namespace: string,\n integrationId: string,\n syncData: CustomField[],\n context: SupportedContexts,\n ): Observable {\n return this.connectionService.create(\n new CreateConnectionRequest({\n namespace: namespace,\n integrationId: integrationId,\n customFields: syncData,\n context: context,\n }),\n );\n }\n\n deleteConnectionAndRevokeAccessToken(namespace: string, connectionId: string): Observable> {\n return this.authService.revokeAccessTokenAndDelete(\n new RevokeAccessTokenAndDeleteRequest({\n connectionId: connectionId,\n namespace: namespace,\n }),\n );\n }\n\n deleteConnection(namespace: string, connectionId: string): Observable> {\n return this.connectionService.delete(\n new DeleteConnectionRequest({\n connectionId: connectionId,\n namespace: namespace,\n }),\n );\n }\n\n updateConnection(\n connectionId: string,\n namespace: string,\n customFieldUpdates: { label: string; value: string }[],\n connectionStatusUpdate?: ConnectionStatus, // Leave connectionStatus as unspecified if you don't want to change the connection status\n ): Observable> {\n const customFields = customFieldUpdates.map(\n (update) =>\n new CustomFields({\n label: update.label,\n value: update.value,\n }),\n );\n\n let fieldMask = new FieldMask({\n paths: ['customFields', 'status'],\n });\n let updateFields = new UpdateConnectionRequestUpdateFields({\n status: connectionStatusUpdate,\n customFields: customFields,\n });\n if (!connectionStatusUpdate) {\n fieldMask = new FieldMask({\n paths: ['customFields'],\n });\n updateFields = new UpdateConnectionRequestUpdateFields({\n customFields: customFields,\n });\n }\n\n return this.connectionService.update(\n new UpdateConnectionRequest({\n connectionId: connectionId,\n namespace: namespace,\n fieldMask: fieldMask,\n updateFields: updateFields,\n }),\n );\n }\n\n //Get Edition ID based on Environment\n getEditionId(): string {\n switch (this.environmentService.getEnvironment()) {\n case Environment.DEMO:\n return 'EDITION-BFXF8W8Q';\n case Environment.PROD:\n return 'EDITION-JFRPLQPN';\n }\n //default returning demo Edition ID\n return 'EDITION-BFXF8W8Q';\n }\n\n performSSO(namespace: string, integrationId: string, connectionId: string, baseURL: string): Observable {\n return this.authService\n .getAuthorizationCodeRedirectUrl(\n new GetAuthorizationCodeRedirectURLRequest({\n namespace: namespace,\n integrationId: integrationId,\n connectionId: connectionId,\n baseUrl: baseURL,\n }),\n )\n .pipe(\n filter((response) => !!response.url),\n switchMap((response): Observable => {\n // Redirect user to external authentication server\n window.location.href = response.url;\n return of(undefined);\n }),\n catchError(() => {\n this.snackbarService.openErrorSnack('INTEGRATION_CARD.PERFORM_SSO_ERROR');\n return EMPTY;\n }),\n );\n }\n\n getUserById(userId: string): Observable {\n return this.iamService.getUser(\n new UserIdentifier({\n userId: userId,\n }),\n );\n }\n\n getMultiByUserId(userIds: string[]): Observable {\n const userIdentifiers = userIds?.map((userId) => new UserIdentifier({ userId: userId }));\n return this.iamService.getMultiUsers(userIdentifiers);\n }\n\n getPlatformName(partnerID: string, marketID: string): Observable {\n return this.whitelabelService\n .getBranding({\n partnerId: partnerID,\n marketId: marketID,\n })\n .pipe(\n map((resp) => resp.branding.apps['VBC'].name),\n shareReplay(1),\n catchError((err) => {\n this.snackbarService.openErrorSnack('error in getting businessName');\n return throwError(err);\n }),\n );\n }\n\n getProductDetailsByProductIds(productIds: string[]): Observable {\n const appKeys = productIds.map((id) => ({\n appId: id,\n }));\n\n return this.partnerApiService\n .getMultiApp(\n new GetMultiAppRequest({\n appKeys: appKeys,\n partnerId: this.partnerID(),\n marketId: this.marketID(),\n includeNotEnabled: true,\n }),\n )\n .pipe(\n map((resp: GetMultiAppResponse) => {\n return resp?.apps || [];\n }),\n );\n }\n\n getIntegrationByIntegrationType(\n integrationType: IntegrationType,\n ): Observable {\n return this.getIntegrationsList().pipe(\n map((integrationList) => integrationList.find((integration) => integration.integrationType === integrationType)),\n );\n }\n\n // This will only work for integrations with a single connection per namespace. It will return a connection if\n // the connection is in the preconnected, connected, or disconnected state.\n getExistingConnectionByIntegrationType(\n integrationType: string,\n namespace: string,\n ): Observable {\n const integration$ = this.getIntegrationsList().pipe(\n map((integrationList) => integrationList.find((integration) => integration.integrationType === integrationType)),\n switchMap((integration) =>\n integration\n ? of(integration)\n : throwError(() => new Error(`Integration not found for type: ${integrationType}`)),\n ),\n );\n return integration$.pipe(\n switchMap((integration) => this.getConnectionsList(namespace, integration.integrationId)),\n map((connectionList) => {\n const connections = connectionList?.filter(\n (connect) =>\n connect.status === ConnectionStatus.CONNECTED ||\n connect.status === ConnectionStatus.DISCONNECTED ||\n connect.status === ConnectionStatus.PRECONNECTED,\n );\n return connections?.length ? connections[0] : undefined;\n }),\n );\n }\n\n // This function only works for Apple connections in the preconnected state. If used in other cases it will always\n // return true.\n // This is a special case since we only want to display these settings if we have a valid access token for Apple.\n // We can check this by looking for the connection information in the custom fields of the connection.\n // Long term we should have an additional state to handle this, then we can check the connection state.\n applePreconnectionHasToken(\n integrationType: string,\n connectionStatus: ConnectionStatus,\n customFields: CustomFields[],\n ): boolean {\n if (\n connectionStatus !== ConnectionStatus.PRECONNECTED ||\n integrationType !== IntegrationType.APPLEBUSINESSCONNECT\n ) {\n return true;\n }\n if (!customFields) {\n return false;\n }\n return customFields?.some((field) => field.label === 'companyID') || false;\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { MatDialogActions, MatDialogClose } from '@angular/material/dialog';\nimport { Actions, ActionType } from '@vendasta/platform-integrations';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { CommonModule } from '@angular/common';\nimport { GalaxyInputModule } from '@vendasta/galaxy/input';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { PlatformIntegrationsI18nModule } from '@galaxy/platform-integrations/shared';\n\n@Component({\n selector: 'platform-integration-action-type',\n imports: [\n MatDialogActions,\n MatIconModule,\n MatDialogClose,\n MatButtonModule,\n MatCardModule,\n MatSlideToggleModule,\n MatCheckboxModule,\n MatRadioModule,\n CommonModule,\n GalaxyInputModule,\n MatDividerModule,\n MatInputModule,\n MatFormFieldModule,\n GalaxyFormFieldModule,\n TranslateModule,\n MatDialogActions,\n MatIconModule,\n MatDialogClose,\n MatButtonModule,\n MatCardModule,\n MatSlideToggleModule,\n TranslateModule,\n ReactiveFormsModule,\n FormsModule,\n MatCheckboxModule,\n MatRadioModule,\n CommonModule,\n GalaxyInputModule,\n MatDividerModule,\n MatInputModule,\n MatFormFieldModule,\n GalaxyFormFieldModule,\n PlatformIntegrationsI18nModule,\n ],\n templateUrl: './action-type.component.html',\n})\nexport class ActionTypeComponent {\n @Input() actions: Actions[] = [];\n\n protected actionType = ActionType;\n\n @Output() actionClicked = new EventEmitter();\n\n onActionClick(action: ActionType) {\n this.actionClicked.emit(action);\n }\n}\n","\n \n \n @for (action of actions; track $index) {\n @if (\n action.actionType === actionType.ACTION_TYPE_SEND_REQUEST ||\n action.actionType === actionType.ACTION_TYPE_COPY ||\n action.actionType === actionType.ACTION_TYPE_SAVE ||\n action.actionType === actionType.ACTION_TYPE_EDIT ||\n action.actionType === actionType.ACTION_TYPE_ADD_CONNECTION ||\n action.actionType === actionType.ACTION_TYPE_CONTINUE\n ) {\n \n {{ action.label | translate }}\n \n } @else {\n \n {{ action.label | translate }}\n \n }\n }\n \n \n\n","import { FieldConfig } from '@vendasta/platform-integrations';\n\nimport { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class IntegrationUtilService {\n // Method to extract IDs from FIELD_CONFIG and its dependents\n getFieldIdsFromConfig(fieldConfig: FieldConfig[] | undefined): string[] {\n return fieldConfig\n ? fieldConfig.flatMap((field) => [\n field.id,\n ...(field.dependents ? this.getFieldIdsFromConfig(field.dependents) : []),\n ])\n : [];\n }\n\n getFieldConfigAsMap(fieldConfig: FieldConfig[] | undefined): Map {\n if (!fieldConfig) return new Map();\n\n return new Map(\n fieldConfig.flatMap((setting) => {\n const entries: [string, FieldConfig][] = [[setting.id, setting]];\n\n // Process dependents if they exist\n if (setting.dependents) {\n setting.dependents.forEach((dependent) => {\n if (dependent.id) {\n entries.push([dependent.id, setting]);\n }\n });\n }\n\n return entries;\n }),\n );\n }\n}\n","import { Component, EventEmitter, Inject, inject, Input, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogActions, MatDialogContent, MatDialogRef, MatDialogTitle } from '@angular/material/dialog';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { FormBuilder, FormGroup, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { ActionType, FieldType, FormConfig, SupportedContexts } from '@vendasta/platform-integrations';\nimport { PlatformIntegrationsI18nModule } from '@galaxy/platform-integrations/shared';\nimport { ActionTypeComponent } from '../../action-type/action-type.component';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { IntegrationUtilService } from '../../../../common/integration-util.service';\nimport { IntegrationType } from '../../../../model/connection-integration-detail';\n\nimport { PLATFORM_INTEGRATIONS_CONTEXT_INJECTION_TOKEN$ } from '@galaxy/platform-integrations/shared';\n@Component({\n selector: 'platform-integration-support-based-form',\n imports: [\n MatDialogActions,\n MatIconModule,\n MatDialogTitle,\n MatDialogContent,\n MatButtonModule,\n MatCardModule,\n MatSlideToggleModule,\n TranslateModule,\n ReactiveFormsModule,\n FormsModule,\n MatCheckboxModule,\n CommonModule,\n PlatformIntegrationsI18nModule,\n ActionTypeComponent,\n GalaxyFormFieldModule,\n ],\n templateUrl: './support-based-form.component.html',\n styleUrls: ['./support-based-form.component.scss'],\n})\nexport class SupportBasedFormComponent {\n syncSettingsForm!: FormGroup;\n @Input() preconnectFormFields!: FormConfig;\n @Input() integrationDisplayName!: string;\n @Input() dialogRef!: MatDialogRef;\n @Output() saveSyncSettingsEvent = new EventEmitter();\n private readonly integrationUtilService = inject(IntegrationUtilService);\n protected readonly integrationTypeEnums = IntegrationType;\n private formBuilder = inject(FormBuilder);\n\n constructor(\n @Inject(PLATFORM_INTEGRATIONS_CONTEXT_INJECTION_TOKEN$)\n public readonly context: SupportedContexts,\n ) {}\n\n ngOnInit(): void {\n this.initializeFormGroup();\n }\n\n initializeFormGroup() {\n this.syncSettingsForm = this.formBuilder.group({});\n const preconnectFormFields = this.preconnectFormFields?.fields;\n if (preconnectFormFields.length > 0) {\n preconnectFormFields.forEach((field) => {\n const control = this.formBuilder.control(field.defaultValue || '', field.required ? Validators.required : []);\n this.syncSettingsForm.addControl(field.id, control);\n });\n }\n }\n\n protected actionType = ActionType;\n protected fieldType = FieldType;\n\n handleAction(action: ActionType) {\n if (action === this.actionType.ACTION_TYPE_CANCEL) {\n this.close();\n } else if (action === this.actionType.ACTION_TYPE_SEND_REQUEST) {\n if (this.syncSettingsForm.valid) {\n this.send();\n } else {\n this.syncSettingsForm.markAllAsTouched();\n }\n }\n }\n\n close() {\n this.dialogRef.close();\n }\n\n send() {\n this.saveSyncSettingsEvent.emit(this.syncSettingsForm.getRawValue());\n this.dialogRef.close({ send: true });\n }\n}\n","
\n \n

\n {{ preconnectFormFields.title }}\n

\n
\n \n
\n {{ field.label }}\n Required \n
\n
\n \n \n
\n {{ field.hintText }}\n
\n
\n
\n
\n
\n \n \n \n \n \n \n \n \n
\n
\n","import { Component, inject, Inject, OnInit } from '@angular/core';\nimport { MAT_DIALOG_DATA } from '@angular/material/dialog';\nimport { Location } from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule, MatDialogActions, MatDialogClose, MatDialogContent } from '@angular/material/dialog';\n\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { EditionUpgradeAction } from '@galaxy/marketplace-apps';\nimport { Router } from '@angular/router';\nimport { CardDataService } from '../card-data.service';\nimport { PlatformIntegrationsI18nModule } from '@galaxy/platform-integrations/shared';\n\n@Component({\n selector: 'platform-integration-unlock-dialogue-box.component',\n templateUrl: './unlock-dialogue-box.component.html',\n styleUrls: ['./unlock-dialogue-box.component.scss'],\n imports: [\n CommonModule,\n MatDialogModule,\n MatDialogActions,\n MatDialogClose,\n MatDialogContent,\n MatButtonModule,\n TranslateModule,\n PlatformIntegrationsI18nModule,\n ],\n})\nexport class DialogBoxComponent implements OnInit {\n dialogueBoxDetails: any;\n private readonly translate = inject(TranslateService);\n private readonly cardService = inject(CardDataService);\n private readonly location = inject(Location);\n constructor(\n @Inject(MAT_DIALOG_DATA) public data: any,\n private router: Router,\n ) {}\n\n unlockModelLogoURL = 'https://storage.googleapis.com/galaxy-libs-public-images/reputation_management_logo.png';\n unlockModelSubtitle = 'Available on Reputation Management Premium';\n\n setUnlockBoxLogo() {\n if (this.data['rmAppSettings']?.branding?.iconUrl) {\n this.unlockModelLogoURL = this.data['rmAppSettings']?.branding?.iconUrl;\n }\n }\n setUnlockBoxSubtitle() {\n if (this.data['rmAppSettings']?.branding?.name) {\n this.unlockModelSubtitle = this.data['rmAppSettings']?.branding?.name;\n }\n }\n\n ngOnInit() {\n this.setUnlockBoxLogo();\n this.setUnlockBoxSubtitle();\n this.dialogueBoxDetails = {\n Description:\n this.data['rmAppSettings']?.editionChange?.editionUpgradeAction ===\n EditionUpgradeAction.EDITION_UPGRADE_ACTION_CONTACT_SALES\n ? this.translate.instant('CONNECTION_SYNC_SETTINGS.CONTACT_SALES_DESCRIPTION')\n : this.translate.instant('CONNECTION_SYNC_SETTINGS.BUY_DESCRIPTION'),\n ButtonText:\n this.data['rmAppSettings']?.editionChange?.editionUpgradeAction ===\n EditionUpgradeAction.EDITION_UPGRADE_ACTION_CONTACT_SALES\n ? this.translate.instant('CONNECTION_SYNC_SETTINGS.CONTACT_SALES')\n : this.translate.instant('CONNECTION_SYNC_SETTINGS.BUY'),\n };\n }\n\n redirectToSales() {\n const editionId = this.cardService.getEditionId();\n const upgradePath = 'edition-upgrades';\n const nextURL = encodeURIComponent(this.location.path());\n const itemsJSON = encodeURIComponent(\n JSON.stringify([{ appId: this.data['rmAppSettings'].appId, editionId: editionId }]),\n );\n const url = `/account/location/${this.data['namespace']}/${upgradePath}?items=${itemsJSON}&nextUrl=${nextURL}&trackingCode=integration-review-button:${this.data['integrationId']}:upgrade`;\n this.router.navigateByUrl(url);\n }\n}\n","
\n
\n
\n \"Logo\"\n
\n
\n
{{ 'CONNECTION_SYNC_SETTINGS.AUTOMATED_REVIEW_REQUESTS' | translate }}
\n
{{ unlockModelSubtitle }}
\n
\n
\n
\n \n
\n

{{ 'CONNECTION_SYNC_SETTINGS.PROMPT_CUSTOMERS' | translate }}

\n

{{ dialogueBoxDetails.Description | translate }}

\n
\n
\n
\n
\n \n \n {{ dialogueBoxDetails.ButtonText | translate }}\n \n \n
\n
\n","import { ChangeDetectorRef, Component, EventEmitter, Inject, inject, Input, OnInit, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormBuilder, FormGroup, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';\nimport {\n MAT_DIALOG_DATA,\n MatDialog,\n MatDialogActions,\n MatDialogClose,\n MatDialogContent,\n MatDialogRef,\n MatDialogTitle,\n} from '@angular/material/dialog';\nimport { CardDataService } from '../../../../card-data.service';\nimport {\n PLATFORM_INTEGRATIONS_CONTEXT_INJECTION_TOKEN$,\n PLATFORM_INTEGRATIONS_MARKET_ID_INJECTION_TOKEN$,\n PLATFORM_INTEGRATIONS_NAMESPACE_INJECTION_TOKEN$,\n PLATFORM_INTEGRATIONS_PARTNER_ID_INJECTION_TOKEN$,\n PlatformIntegrationsI18nModule,\n} from '@galaxy/platform-integrations/shared';\nimport { combineLatest, map, Observable, of, switchMap } from 'rxjs';\nimport { AppSettings } from '@vendasta/marketplace-apps/lib/_internal/objects/app-settings';\nimport { RmAppDetail } from '../../../../model/connection-integration-detail';\nimport { catchError } from 'rxjs/operators';\nimport { DialogBoxComponent } from '../../../../unlock-dialogue-box/unlock-dialogue-box.component';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { ActionType, FieldType, FormConfig, SupportedContexts } from '@vendasta/platform-integrations';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { ActionTypeComponent } from '../../action-type/action-type.component';\n\n@Component({\n selector: 'platform-integration-oauth2-based-form',\n imports: [\n MatDialogActions,\n MatIconModule,\n MatDialogClose,\n MatDialogTitle,\n MatDialogContent,\n MatButtonModule,\n MatCardModule,\n MatSlideToggleModule,\n TranslateModule,\n ReactiveFormsModule,\n FormsModule,\n MatCheckboxModule,\n MatRadioModule,\n CommonModule,\n PlatformIntegrationsI18nModule,\n ActionTypeComponent,\n ],\n templateUrl: './oauth2-based-form.component.html',\n styleUrl: './oauth2-based-form.component.scss',\n})\nexport class Oauth2BasedFormComponent implements OnInit {\n @Input() preconnectFormFields!: FormConfig;\n @Input() integrationDisplayName!: string;\n @Input() dialogRef!: MatDialogRef;\n\n @Output() saveSyncSettingsEvent = new EventEmitter();\n\n protected actionType = ActionType;\n protected fieldType = FieldType;\n\n syncSettingsForm!: FormGroup;\n private readonly cardService = inject(CardDataService);\n private readonly dialog = inject(MatDialog);\n private formBuilder = inject(FormBuilder);\n private cdRef = inject(ChangeDetectorRef);\n\n constructor(\n @Inject(PLATFORM_INTEGRATIONS_NAMESPACE_INJECTION_TOKEN$) public readonly namespace$: Observable,\n @Inject(PLATFORM_INTEGRATIONS_PARTNER_ID_INJECTION_TOKEN$)\n public readonly partnerId$: Observable,\n\n @Inject(PLATFORM_INTEGRATIONS_MARKET_ID_INJECTION_TOKEN$) public readonly marketId$: Observable,\n @Inject(MAT_DIALOG_DATA) public data: any,\n\n @Inject(PLATFORM_INTEGRATIONS_CONTEXT_INJECTION_TOKEN$)\n public readonly context: SupportedContexts,\n ) {}\n\n ngOnInit(): void {\n this.initializeFormGroup();\n }\n\n initializeFormGroup() {\n this.syncSettingsForm = this.formBuilder.group({});\n this.getSyncSettings()?.forEach((field) => {\n let control;\n if (field.fieldType === FieldType.FIELD_TYPE_SELECT || field.fieldType === FieldType.FIELD_TYPE_RADIO) {\n const values = field.defaultValue || (field.options ? field.options[0]?.value : '');\n control = this.formBuilder.control(values, field.required ? Validators.required : null);\n } else {\n control = this.formBuilder.control(field.defaultValue || '', field.required ? Validators.required : null);\n }\n this.syncSettingsForm.addControl(field.id, control);\n\n // Load the dependents input types.\n if (field.dependents) {\n field.dependents.forEach((dep) => {\n const depControl = this.formBuilder.control(\n { value: dep.defaultValue || '', disabled: !field.defaultValue },\n dep.required ? Validators.required : null,\n );\n this.syncSettingsForm.addControl(dep.id, depControl);\n });\n\n control.valueChanges.subscribe((value) => {\n field.dependents?.forEach((dep) => {\n const depControl = this.syncSettingsForm.get(dep.id);\n depControl?.setValue(dep.defaultValue);\n if (value) {\n depControl?.enable();\n } else {\n depControl?.disable();\n }\n });\n });\n }\n });\n\n if (this.preconnectFormFields?.fields) {\n this.initializeDependentControls();\n }\n }\n\n initializeDependentControls(): void {\n this.getSyncSettings().forEach((field) => {\n if (field.dependents) {\n const parentControl = this.syncSettingsForm.get(field.id);\n field.dependents.forEach((dep) => {\n const depControl = this.syncSettingsForm.get(dep.id);\n if (parentControl?.value) {\n depControl?.enable();\n depControl?.setValue(dep.defaultValue);\n } else {\n depControl?.disable();\n }\n });\n }\n });\n }\n\n getSyncSettings() {\n return this.preconnectFormFields?.fields?.filter((setting) => {\n return !(setting.id === 'reviewRequestData' && this.context === SupportedContexts.PI_CONTEXT_PARTNER);\n });\n }\n\n handleAction(action: ActionType) {\n if (action === this.actionType.ACTION_TYPE_CANCEL) {\n this.close();\n } else if (action === this.actionType.ACTION_TYPE_CONTINUE) {\n this.continue();\n }\n }\n close() {\n this.dialogRef.close();\n }\n continue() {\n this.saveSyncSettingsEvent.emit(this.syncSettingsForm.getRawValue());\n this.dialogRef.close();\n }\n\n protected readonly getAppDetailResponse$: Observable = combineLatest([this.namespace$, this.partnerId$]).pipe(\n switchMap(([namespace, partnerID]) => {\n return this.cardService.getRMAppDetail(namespace, partnerID);\n }),\n );\n\n protected readonly getAppSettings$: Observable = combineLatest([this.partnerId$, this.marketId$]).pipe(\n switchMap(([partnerID, marketID]) => {\n return this.cardService.getRMAppSettings(partnerID, marketID);\n }),\n );\n\n protected readonly getRMAppDetailsMarketingPage$ = combineLatest([\n this.getAppDetailResponse$,\n this.getAppSettings$,\n this.namespace$,\n this.partnerId$,\n ]).pipe(\n map(([rmAppDetails, rmAppSettings, namespace, partnerId]) => {\n const res = {\n hasRMPremiumActive: false,\n upgradeSetting: rmAppSettings,\n namespace: namespace,\n partnerId: partnerId,\n } as RmAppDetail;\n if (rmAppDetails === this.cardService.getEditionId()) {\n res.hasRMPremiumActive = true;\n return res;\n }\n this.syncSettingsForm.controls['reviewRequestData'].setValue(false);\n this.syncSettingsForm.controls['reviewRequestData'].disable();\n\n return res;\n }),\n catchError(() => {\n const defaultRes: RmAppDetail = {\n hasRMPremiumActive: false,\n upgradeSetting: {} as AppSettings,\n };\n return of(defaultRes);\n }),\n );\n\n handleButtonClick(rmAppDetails: RmAppDetail): void {\n this.dialog.open(DialogBoxComponent, {\n width: '463px',\n data: {\n namespace: rmAppDetails.namespace,\n partnerId: rmAppDetails.partnerId,\n rmAppSettings: rmAppDetails.upgradeSetting,\n integrationId: this.data['integrationID'],\n },\n });\n }\n}\n","
\n \n

{{ preconnectFormFields.title }}

\n \n
\n {{ preconnectFormFields.description }}\n
\n
\n
\n \n \n
\n \n
\n
\n \n {{ setting.label }}\n lock\n
\n
\n
\n {{ setting.hintText }}\n
\n\n \n
\n \n
\n \n
\n \n {{ option.label }}\n \n
\n
\n
\n
\n
\n \n \n \n {{ 'CONNECTION_SYNC_SETTINGS.UNLOCK_PREMIUM_SERVICE' | translate }}\n \n \n \n
\n \n \n
\n
\n \n \n \n \n \n \n\n","import { Component, Input } from '@angular/core';\nimport { MatDialogActions, MatDialogContent, MatDialogRef, MatDialogTitle } from '@angular/material/dialog';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { PlatformIntegrationsI18nModule } from '@galaxy/platform-integrations/shared';\nimport { ActionType, FieldType, FormConfig } from '@vendasta/platform-integrations';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { CommonModule } from '@angular/common';\nimport { GalaxyInputModule } from '@vendasta/galaxy/input';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { ActionTypeComponent } from '../../action-type/action-type.component';\n\n@Component({\n selector: 'platform-integration-api-key-based-form',\n imports: [\n MatDialogActions,\n MatIconModule,\n MatDialogTitle,\n MatDialogContent,\n MatButtonModule,\n MatCardModule,\n MatSlideToggleModule,\n TranslateModule,\n ReactiveFormsModule,\n FormsModule,\n MatCheckboxModule,\n MatRadioModule,\n CommonModule,\n GalaxyInputModule,\n MatDividerModule,\n MatInputModule,\n MatFormFieldModule,\n GalaxyFormFieldModule,\n PlatformIntegrationsI18nModule,\n ActionTypeComponent,\n ],\n templateUrl: './apikey-based.component.html',\n styleUrl: './apikey-based.component.scss',\n})\nexport class ApikeyBasedComponent {\n @Input() preconnectFormFields!: FormConfig;\n @Input() integrationDisplayName!: string;\n @Input() dialogRef!: MatDialogRef;\n\n protected actionType = ActionType;\n protected fieldType = FieldType;\n\n handleAction(action: ActionType) {\n if (action === this.actionType.ACTION_TYPE_CANCEL) {\n this.close();\n } else if (action === this.actionType.ACTION_TYPE_ADD_CONNECTION) {\n this.continue();\n }\n }\n\n close() {\n this.dialogRef.close();\n }\n\n continue() {\n this.dialogRef.close({ send: true });\n }\n}\n","
\n \n

{{ preconnectFormFields.title }}

\n \n \n \n \n \n
\n
\n","import {\n AfterViewInit,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n inject,\n Inject,\n Output,\n ViewChild,\n ViewContainerRef,\n DestroyRef,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { SupportBasedFormComponent } from '../support-based/support-based-form/support-based-form.component';\nimport { ConnectionMethods, IntegrationMarketingResponse } from '@vendasta/platform-integrations';\nimport { Oauth2BasedFormComponent } from '../oauth2-based/oauth2-based-form/oauth2-based-form.component';\nimport { ApikeyBasedComponent } from '../apikey-based/apikey-based-form/apikey-based.component';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { PlatformIntegrationsI18nModule } from '@galaxy/platform-integrations/shared';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n selector: 'platform-integration-dynamic-form',\n imports: [CommonModule, PlatformIntegrationsI18nModule, TranslateModule],\n templateUrl: './dynamic-form.component.html',\n styleUrl: './dynamic-form.component.scss',\n})\nexport class DynamicFormComponent implements AfterViewInit {\n @ViewChild('dynamicComponentContainer', { read: ViewContainerRef })\n dynamicComponentContainer!: ViewContainerRef;\n\n @Output() saveSyncSettingsEvent = new EventEmitter();\n\n private dialogRef = inject(MatDialogRef);\n private cdRef = inject(ChangeDetectorRef);\n private readonly destroyRef = inject(DestroyRef);\n\n constructor(\n @Inject(MAT_DIALOG_DATA) public data: { integration: IntegrationMarketingResponse; integrationDisplayName: string },\n ) {}\n\n ngAfterViewInit(): void {\n this.loadComponent();\n this.cdRef.detectChanges();\n }\n\n loadComponent() {\n const formType = this.data.integration.connectionMethod;\n // Create the component dynamically, then pass required config & data\n if (formType === ConnectionMethods.VENDOR_MANAGED) {\n const componentRef =\n this.dynamicComponentContainer.createComponent(SupportBasedFormComponent);\n componentRef.instance.preconnectFormFields = this.data.integration.preconnectFormFields;\n componentRef.instance.integrationDisplayName = this.data.integration.displayName;\n componentRef.instance.dialogRef = this.dialogRef;\n componentRef.instance.saveSyncSettingsEvent?.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((data: any) => {\n this.saveSyncSettingsEvent.emit(data);\n });\n } else if (formType === ConnectionMethods.OAUTH2) {\n const componentRef =\n this.dynamicComponentContainer.createComponent(Oauth2BasedFormComponent);\n componentRef.instance.preconnectFormFields = this.data.integration.preconnectFormFields;\n componentRef.instance.integrationDisplayName = this.data.integration.displayName;\n componentRef.instance.dialogRef = this.dialogRef;\n componentRef.instance.saveSyncSettingsEvent?.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((data: any) => {\n this.saveSyncSettingsEvent.emit(data);\n });\n } else if (formType === ConnectionMethods.APIKEY) {\n const componentRef = this.dynamicComponentContainer.createComponent(ApikeyBasedComponent);\n componentRef.instance.preconnectFormFields = this.data.integration.preconnectFormFields;\n componentRef.instance.integrationDisplayName = this.data.integration.displayName;\n componentRef.instance.dialogRef = this.dialogRef;\n }\n }\n}\n","
\n \n
\n","import { Inject, inject, Injectable, Injector, signal, WritableSignal } from '@angular/core';\nimport { map, Observable, of, switchMap } from 'rxjs';\nimport { IntegrationType } from '../model/connection-integration-detail';\nimport { CardDataService } from '../card-data.service';\nimport {\n ConnectionResponse,\n ConnectionStatus,\n CreateConnectionResponse,\n IntegrationMarketingResponse,\n SupportedContexts,\n} from '@vendasta/platform-integrations';\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\nimport { DynamicFormComponent } from '../connection-config/components/dynamic-form/dynamic-form.component';\nimport { PLATFORM_INTEGRATIONS_CONTEXT_INJECTION_TOKEN$ } from '@galaxy/platform-integrations/shared';\nimport { ActivatedRoute, Router } from '@angular/router';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ConnectionActionService {\n private readonly activatedRoute = inject(ActivatedRoute);\n private readonly router = inject(Router);\n private readonly cardService = inject(CardDataService);\n private injector = inject(Injector);\n private matDialog = inject(MatDialog);\n\n private integrationType: IntegrationType | undefined;\n private namespace = '';\n\n private integrationList$: Observable = of([]);\n private connectionList$: Observable = of([]);\n private connection$: Observable = of();\n private integration: WritableSignal = signal(\n new IntegrationMarketingResponse(),\n );\n connectionStatus: WritableSignal = signal(ConnectionStatus.UNSPECIFIED_STATUS);\n\n constructor(@Inject(PLATFORM_INTEGRATIONS_CONTEXT_INJECTION_TOKEN$) public readonly context: SupportedContexts) {}\n\n initialize(integrationType: IntegrationType, nameSpace: string): void {\n this.integrationType = integrationType;\n this.namespace = nameSpace;\n this.integrationList$ = this.cardService.getIntegrationsList();\n this.connectionList$ = this.integrationList$.pipe(\n switchMap((integrations) => {\n const integration = integrations.find((integration) => integration.integrationType === this.integrationType);\n if (!integration) {\n return of([]);\n }\n this.integration.set(integration);\n return this.cardService.getConnectionsList(this.namespace, integration.integrationId);\n }),\n );\n this.connection$ = this.connectionList$.pipe(\n map((connectionList) => {\n const connections = connectionList?.filter(\n (connect) =>\n connect.status === ConnectionStatus.CONNECTED ||\n connect.status === ConnectionStatus.DISCONNECTED ||\n connect.status === ConnectionStatus.PRECONNECTED,\n );\n return connections?.length ? connections[0] : undefined;\n }),\n );\n\n this.connection$.subscribe((connection) => {\n this.refreshStatus(connection, this.connectionStatus);\n });\n }\n refreshStatus(connection: ConnectionResponse | undefined, connectionStatus: WritableSignal): void {\n connectionStatus.set(connection?.status || ConnectionStatus.UNSPECIFIED_STATUS);\n }\n\n getNextURL(): string {\n const mutableQP = { ...this.activatedRoute.snapshot.queryParams };\n mutableQP['src'] = 'sso';\n const urlWithoutQueryParams = this.router.url.split('?')[0];\n return (\n window.location.origin + this.router.createUrlTree([urlWithoutQueryParams], { queryParams: mutableQP }).toString()\n );\n }\n\n createConnection(): void {\n this.cardService\n .createConnection(this.namespace, this.integration().integrationId, [], this.context)\n .pipe(\n switchMap((resp: CreateConnectionResponse) => {\n return this.cardService.performSSO(\n this.namespace,\n this.integration().integrationId,\n resp.connectionId,\n this.getNextURL(),\n );\n }),\n )\n .subscribe();\n }\n\n continueConnection(): void {\n this.connection$\n .pipe(\n switchMap((connection) => {\n return this.cardService.performSSO(\n this.namespace,\n this.integration().integrationId,\n connection?.connectionId || '',\n this.getNextURL(),\n );\n }),\n )\n .subscribe();\n }\n\n openConnectModal(newConnection: boolean): void {\n const dialogConfig = new MatDialogConfig();\n dialogConfig.width = '660px';\n dialogConfig.data = {\n integration: this.integration(),\n };\n const dialogRef = this.matDialog.open(DynamicFormComponent, dialogConfig);\n dialogRef.componentInstance.saveSyncSettingsEvent.subscribe((_data) => {\n if (newConnection) {\n return this.createConnection();\n } else {\n return this.continueConnection();\n }\n });\n }\n}\n","export * from './connection-button-action.service';\n","import * as i0 from '@angular/core';\nimport { EventEmitter, Directive, Input, Output, HostListener, Injectable, PLATFORM_ID, Component, ViewEncapsulation, Inject, ViewChild, Injector, NgModule } from '@angular/core';\nimport * as i2 from '@angular/common';\nimport { isPlatformBrowser, DOCUMENT, CommonModule } from '@angular/common';\nconst _c0 = [\"dialogPopup\"];\nconst _c1 = [\"hueSlider\"];\nconst _c2 = [\"alphaSlider\"];\nfunction ColorPickerComponent_div_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"div\");\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵclassMapInterpolate1(\"arrow arrow-\", ctx_r1.cpUsePosition, \"\");\n i0.ɵɵstyleProp(\"left\", ctx_r1.cpArrowPosition)(\"top\", ctx_r1.arrowTop, \"px\");\n }\n}\nfunction ColorPickerComponent_div_3_Template(rf, ctx) {\n if (rf & 1) {\n const _r3 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 28);\n i0.ɵɵlistener(\"newValue\", function ColorPickerComponent_div_3_Template_div_newValue_0_listener($event) {\n i0.ɵɵrestoreView(_r3);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onColorChange($event));\n })(\"dragStart\", function ColorPickerComponent_div_3_Template_div_dragStart_0_listener() {\n i0.ɵɵrestoreView(_r3);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onDragStart(\"saturation-lightness\"));\n })(\"dragEnd\", function ColorPickerComponent_div_3_Template_div_dragEnd_0_listener() {\n i0.ɵɵrestoreView(_r3);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onDragEnd(\"saturation-lightness\"));\n });\n i0.ɵɵelement(1, \"div\", 16);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵstyleProp(\"background-color\", ctx_r1.hueSliderColor);\n i0.ɵɵproperty(\"rgX\", 1)(\"rgY\", 1);\n i0.ɵɵadvance();\n i0.ɵɵstyleProp(\"top\", ctx_r1.slider == null ? null : ctx_r1.slider.v, \"px\")(\"left\", ctx_r1.slider == null ? null : ctx_r1.slider.s, \"px\");\n }\n}\nfunction ColorPickerComponent__svg_svg_8_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵnamespaceSVG();\n i0.ɵɵelementStart(0, \"svg\", 29);\n i0.ɵɵelement(1, \"path\", 30)(2, \"path\", 31);\n i0.ɵɵelementEnd();\n }\n}\nfunction ColorPickerComponent_button_9_Template(rf, ctx) {\n if (rf & 1) {\n const _r4 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"button\", 32);\n i0.ɵɵlistener(\"click\", function ColorPickerComponent_button_9_Template_button_click_0_listener($event) {\n i0.ɵɵrestoreView(_r4);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onAddPresetColor($event, ctx_r1.selectedColor));\n });\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵclassMap(ctx_r1.cpAddColorButtonClass);\n i0.ɵɵproperty(\"disabled\", ctx_r1.cpPresetColors && ctx_r1.cpPresetColors.length >= ctx_r1.cpMaxPresetColorsLength);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate1(\" \", ctx_r1.cpAddColorButtonText, \" \");\n }\n}\nfunction ColorPickerComponent_div_11_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelement(0, \"div\", 33);\n }\n}\nfunction ColorPickerComponent_div_21_input_6_Template(rf, ctx) {\n if (rf & 1) {\n const _r6 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"input\", 39);\n i0.ɵɵlistener(\"keyup.enter\", function ColorPickerComponent_div_21_input_6_Template_input_keyup_enter_0_listener($event) {\n i0.ɵɵrestoreView(_r6);\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.onAcceptColor($event));\n })(\"newValue\", function ColorPickerComponent_div_21_input_6_Template_input_newValue_0_listener($event) {\n i0.ɵɵrestoreView(_r6);\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.onAlphaInput($event));\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"rg\", 1)(\"value\", ctx_r1.cmykText == null ? null : ctx_r1.cmykText.a);\n }\n}\nfunction ColorPickerComponent_div_21_div_16_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\");\n i0.ɵɵtext(1, \"A\");\n i0.ɵɵelementEnd();\n }\n}\nfunction ColorPickerComponent_div_21_Template(rf, ctx) {\n if (rf & 1) {\n const _r5 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 34)(1, \"div\", 35)(2, \"input\", 36);\n i0.ɵɵlistener(\"keyup.enter\", function ColorPickerComponent_div_21_Template_input_keyup_enter_2_listener($event) {\n i0.ɵɵrestoreView(_r5);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onAcceptColor($event));\n })(\"newValue\", function ColorPickerComponent_div_21_Template_input_newValue_2_listener($event) {\n i0.ɵɵrestoreView(_r5);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onCyanInput($event));\n });\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(3, \"input\", 36);\n i0.ɵɵlistener(\"keyup.enter\", function ColorPickerComponent_div_21_Template_input_keyup_enter_3_listener($event) {\n i0.ɵɵrestoreView(_r5);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onAcceptColor($event));\n })(\"newValue\", function ColorPickerComponent_div_21_Template_input_newValue_3_listener($event) {\n i0.ɵɵrestoreView(_r5);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onMagentaInput($event));\n });\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(4, \"input\", 36);\n i0.ɵɵlistener(\"keyup.enter\", function ColorPickerComponent_div_21_Template_input_keyup_enter_4_listener($event) {\n i0.ɵɵrestoreView(_r5);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onAcceptColor($event));\n })(\"newValue\", function ColorPickerComponent_div_21_Template_input_newValue_4_listener($event) {\n i0.ɵɵrestoreView(_r5);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onYellowInput($event));\n });\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(5, \"input\", 36);\n i0.ɵɵlistener(\"keyup.enter\", function ColorPickerComponent_div_21_Template_input_keyup_enter_5_listener($event) {\n i0.ɵɵrestoreView(_r5);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onAcceptColor($event));\n })(\"newValue\", function ColorPickerComponent_div_21_Template_input_newValue_5_listener($event) {\n i0.ɵɵrestoreView(_r5);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onBlackInput($event));\n });\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(6, ColorPickerComponent_div_21_input_6_Template, 1, 2, \"input\", 37);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(7, \"div\", 35)(8, \"div\");\n i0.ɵɵtext(9, \"C\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(10, \"div\");\n i0.ɵɵtext(11, \"M\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(12, \"div\");\n i0.ɵɵtext(13, \"Y\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(14, \"div\");\n i0.ɵɵtext(15, \"K\");\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(16, ColorPickerComponent_div_21_div_16_Template, 2, 0, \"div\", 38);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵstyleProp(\"display\", ctx_r1.format !== 3 ? \"none\" : \"block\");\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"rg\", 100)(\"value\", ctx_r1.cmykText == null ? null : ctx_r1.cmykText.c);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"rg\", 100)(\"value\", ctx_r1.cmykText == null ? null : ctx_r1.cmykText.m);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"rg\", 100)(\"value\", ctx_r1.cmykText == null ? null : ctx_r1.cmykText.y);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"rg\", 100)(\"value\", ctx_r1.cmykText == null ? null : ctx_r1.cmykText.k);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.cpAlphaChannel !== \"disabled\");\n i0.ɵɵadvance(10);\n i0.ɵɵproperty(\"ngIf\", ctx_r1.cpAlphaChannel !== \"disabled\");\n }\n}\nfunction ColorPickerComponent_div_22_input_5_Template(rf, ctx) {\n if (rf & 1) {\n const _r8 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"input\", 39);\n i0.ɵɵlistener(\"keyup.enter\", function ColorPickerComponent_div_22_input_5_Template_input_keyup_enter_0_listener($event) {\n i0.ɵɵrestoreView(_r8);\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.onAcceptColor($event));\n })(\"newValue\", function ColorPickerComponent_div_22_input_5_Template_input_newValue_0_listener($event) {\n i0.ɵɵrestoreView(_r8);\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.onAlphaInput($event));\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"rg\", 1)(\"value\", ctx_r1.hslaText == null ? null : ctx_r1.hslaText.a);\n }\n}\nfunction ColorPickerComponent_div_22_div_13_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\");\n i0.ɵɵtext(1, \"A\");\n i0.ɵɵelementEnd();\n }\n}\nfunction ColorPickerComponent_div_22_Template(rf, ctx) {\n if (rf & 1) {\n const _r7 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 40)(1, \"div\", 35)(2, \"input\", 41);\n i0.ɵɵlistener(\"keyup.enter\", function ColorPickerComponent_div_22_Template_input_keyup_enter_2_listener($event) {\n i0.ɵɵrestoreView(_r7);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onAcceptColor($event));\n })(\"newValue\", function ColorPickerComponent_div_22_Template_input_newValue_2_listener($event) {\n i0.ɵɵrestoreView(_r7);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onHueInput($event));\n });\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(3, \"input\", 36);\n i0.ɵɵlistener(\"keyup.enter\", function ColorPickerComponent_div_22_Template_input_keyup_enter_3_listener($event) {\n i0.ɵɵrestoreView(_r7);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onAcceptColor($event));\n })(\"newValue\", function ColorPickerComponent_div_22_Template_input_newValue_3_listener($event) {\n i0.ɵɵrestoreView(_r7);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onSaturationInput($event));\n });\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(4, \"input\", 36);\n i0.ɵɵlistener(\"keyup.enter\", function ColorPickerComponent_div_22_Template_input_keyup_enter_4_listener($event) {\n i0.ɵɵrestoreView(_r7);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onAcceptColor($event));\n })(\"newValue\", function ColorPickerComponent_div_22_Template_input_newValue_4_listener($event) {\n i0.ɵɵrestoreView(_r7);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onLightnessInput($event));\n });\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(5, ColorPickerComponent_div_22_input_5_Template, 1, 2, \"input\", 37);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(6, \"div\", 35)(7, \"div\");\n i0.ɵɵtext(8, \"H\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(9, \"div\");\n i0.ɵɵtext(10, \"S\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(11, \"div\");\n i0.ɵɵtext(12, \"L\");\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(13, ColorPickerComponent_div_22_div_13_Template, 2, 0, \"div\", 38);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵstyleProp(\"display\", ctx_r1.format !== 2 ? \"none\" : \"block\");\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"rg\", 360)(\"value\", ctx_r1.hslaText == null ? null : ctx_r1.hslaText.h);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"rg\", 100)(\"value\", ctx_r1.hslaText == null ? null : ctx_r1.hslaText.s);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"rg\", 100)(\"value\", ctx_r1.hslaText == null ? null : ctx_r1.hslaText.l);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.cpAlphaChannel !== \"disabled\");\n i0.ɵɵadvance(8);\n i0.ɵɵproperty(\"ngIf\", ctx_r1.cpAlphaChannel !== \"disabled\");\n }\n}\nfunction ColorPickerComponent_div_23_input_5_Template(rf, ctx) {\n if (rf & 1) {\n const _r10 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"input\", 39);\n i0.ɵɵlistener(\"keyup.enter\", function ColorPickerComponent_div_23_input_5_Template_input_keyup_enter_0_listener($event) {\n i0.ɵɵrestoreView(_r10);\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.onAcceptColor($event));\n })(\"newValue\", function ColorPickerComponent_div_23_input_5_Template_input_newValue_0_listener($event) {\n i0.ɵɵrestoreView(_r10);\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.onAlphaInput($event));\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"rg\", 1)(\"value\", ctx_r1.rgbaText == null ? null : ctx_r1.rgbaText.a);\n }\n}\nfunction ColorPickerComponent_div_23_div_13_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\");\n i0.ɵɵtext(1, \"A\");\n i0.ɵɵelementEnd();\n }\n}\nfunction ColorPickerComponent_div_23_Template(rf, ctx) {\n if (rf & 1) {\n const _r9 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 42)(1, \"div\", 35)(2, \"input\", 43);\n i0.ɵɵlistener(\"keyup.enter\", function ColorPickerComponent_div_23_Template_input_keyup_enter_2_listener($event) {\n i0.ɵɵrestoreView(_r9);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onAcceptColor($event));\n })(\"newValue\", function ColorPickerComponent_div_23_Template_input_newValue_2_listener($event) {\n i0.ɵɵrestoreView(_r9);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onRedInput($event));\n });\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(3, \"input\", 43);\n i0.ɵɵlistener(\"keyup.enter\", function ColorPickerComponent_div_23_Template_input_keyup_enter_3_listener($event) {\n i0.ɵɵrestoreView(_r9);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onAcceptColor($event));\n })(\"newValue\", function ColorPickerComponent_div_23_Template_input_newValue_3_listener($event) {\n i0.ɵɵrestoreView(_r9);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onGreenInput($event));\n });\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(4, \"input\", 43);\n i0.ɵɵlistener(\"keyup.enter\", function ColorPickerComponent_div_23_Template_input_keyup_enter_4_listener($event) {\n i0.ɵɵrestoreView(_r9);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onAcceptColor($event));\n })(\"newValue\", function ColorPickerComponent_div_23_Template_input_newValue_4_listener($event) {\n i0.ɵɵrestoreView(_r9);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onBlueInput($event));\n });\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(5, ColorPickerComponent_div_23_input_5_Template, 1, 2, \"input\", 37);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(6, \"div\", 35)(7, \"div\");\n i0.ɵɵtext(8, \"R\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(9, \"div\");\n i0.ɵɵtext(10, \"G\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(11, \"div\");\n i0.ɵɵtext(12, \"B\");\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(13, ColorPickerComponent_div_23_div_13_Template, 2, 0, \"div\", 38);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵstyleProp(\"display\", ctx_r1.format !== 1 ? \"none\" : \"block\");\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"rg\", 255)(\"value\", ctx_r1.rgbaText == null ? null : ctx_r1.rgbaText.r);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"rg\", 255)(\"value\", ctx_r1.rgbaText == null ? null : ctx_r1.rgbaText.g);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"rg\", 255)(\"value\", ctx_r1.rgbaText == null ? null : ctx_r1.rgbaText.b);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.cpAlphaChannel !== \"disabled\");\n i0.ɵɵadvance(8);\n i0.ɵɵproperty(\"ngIf\", ctx_r1.cpAlphaChannel !== \"disabled\");\n }\n}\nfunction ColorPickerComponent_div_24_input_3_Template(rf, ctx) {\n if (rf & 1) {\n const _r12 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"input\", 39);\n i0.ɵɵlistener(\"keyup.enter\", function ColorPickerComponent_div_24_input_3_Template_input_keyup_enter_0_listener($event) {\n i0.ɵɵrestoreView(_r12);\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.onAcceptColor($event));\n })(\"newValue\", function ColorPickerComponent_div_24_input_3_Template_input_newValue_0_listener($event) {\n i0.ɵɵrestoreView(_r12);\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.onAlphaInput($event));\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"rg\", 1)(\"value\", ctx_r1.hexAlpha);\n }\n}\nfunction ColorPickerComponent_div_24_div_7_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\");\n i0.ɵɵtext(1, \"A\");\n i0.ɵɵelementEnd();\n }\n}\nfunction ColorPickerComponent_div_24_Template(rf, ctx) {\n if (rf & 1) {\n const _r11 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 44)(1, \"div\", 35)(2, \"input\", 45);\n i0.ɵɵlistener(\"blur\", function ColorPickerComponent_div_24_Template_input_blur_2_listener() {\n i0.ɵɵrestoreView(_r11);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onHexInput(null));\n })(\"keyup.enter\", function ColorPickerComponent_div_24_Template_input_keyup_enter_2_listener($event) {\n i0.ɵɵrestoreView(_r11);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onAcceptColor($event));\n })(\"newValue\", function ColorPickerComponent_div_24_Template_input_newValue_2_listener($event) {\n i0.ɵɵrestoreView(_r11);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onHexInput($event));\n });\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(3, ColorPickerComponent_div_24_input_3_Template, 1, 2, \"input\", 37);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(4, \"div\", 35)(5, \"div\");\n i0.ɵɵtext(6, \"Hex\");\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(7, ColorPickerComponent_div_24_div_7_Template, 2, 0, \"div\", 38);\n i0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵstyleProp(\"display\", ctx_r1.format !== 0 ? \"none\" : \"block\");\n i0.ɵɵclassProp(\"hex-alpha\", ctx_r1.cpAlphaChannel === \"forced\");\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"value\", ctx_r1.hexText);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.cpAlphaChannel === \"forced\");\n i0.ɵɵadvance(4);\n i0.ɵɵproperty(\"ngIf\", ctx_r1.cpAlphaChannel === \"forced\");\n }\n}\nfunction ColorPickerComponent_div_25_input_3_Template(rf, ctx) {\n if (rf & 1) {\n const _r14 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"input\", 39);\n i0.ɵɵlistener(\"keyup.enter\", function ColorPickerComponent_div_25_input_3_Template_input_keyup_enter_0_listener($event) {\n i0.ɵɵrestoreView(_r14);\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.onAcceptColor($event));\n })(\"newValue\", function ColorPickerComponent_div_25_input_3_Template_input_newValue_0_listener($event) {\n i0.ɵɵrestoreView(_r14);\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.onAlphaInput($event));\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"rg\", 1)(\"value\", ctx_r1.hslaText == null ? null : ctx_r1.hslaText.a);\n }\n}\nfunction ColorPickerComponent_div_25_Template(rf, ctx) {\n if (rf & 1) {\n const _r13 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 46)(1, \"div\", 35)(2, \"input\", 36);\n i0.ɵɵlistener(\"keyup.enter\", function ColorPickerComponent_div_25_Template_input_keyup_enter_2_listener($event) {\n i0.ɵɵrestoreView(_r13);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onAcceptColor($event));\n })(\"newValue\", function ColorPickerComponent_div_25_Template_input_newValue_2_listener($event) {\n i0.ɵɵrestoreView(_r13);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onValueInput($event));\n });\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(3, ColorPickerComponent_div_25_input_3_Template, 1, 2, \"input\", 37);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(4, \"div\", 35)(5, \"div\");\n i0.ɵɵtext(6, \"V\");\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(7, \"div\");\n i0.ɵɵtext(8, \"A\");\n i0.ɵɵelementEnd()()();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"rg\", 100)(\"value\", ctx_r1.hslaText == null ? null : ctx_r1.hslaText.l);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.cpAlphaChannel !== \"disabled\");\n }\n}\nfunction ColorPickerComponent_div_26_Template(rf, ctx) {\n if (rf & 1) {\n const _r15 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 47)(1, \"span\", 48);\n i0.ɵɵlistener(\"click\", function ColorPickerComponent_div_26_Template_span_click_1_listener() {\n i0.ɵɵrestoreView(_r15);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onFormatToggle(-1));\n });\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(2, \"span\", 48);\n i0.ɵɵlistener(\"click\", function ColorPickerComponent_div_26_Template_span_click_2_listener() {\n i0.ɵɵrestoreView(_r15);\n const ctx_r1 = i0.ɵɵnextContext();\n return i0.ɵɵresetView(ctx_r1.onFormatToggle(1));\n });\n i0.ɵɵelementEnd()();\n }\n}\nfunction ColorPickerComponent_div_27_div_4_div_1_span_1_Template(rf, ctx) {\n if (rf & 1) {\n const _r18 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"span\", 55);\n i0.ɵɵlistener(\"click\", function ColorPickerComponent_div_27_div_4_div_1_span_1_Template_span_click_0_listener($event) {\n i0.ɵɵrestoreView(_r18);\n const color_r17 = i0.ɵɵnextContext().$implicit;\n const ctx_r1 = i0.ɵɵnextContext(3);\n return i0.ɵɵresetView(ctx_r1.onRemovePresetColor($event, color_r17));\n });\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(4);\n i0.ɵɵclassMap(ctx_r1.cpRemoveColorButtonClass);\n }\n}\nfunction ColorPickerComponent_div_27_div_4_div_1_Template(rf, ctx) {\n if (rf & 1) {\n const _r16 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 53);\n i0.ɵɵlistener(\"click\", function ColorPickerComponent_div_27_div_4_div_1_Template_div_click_0_listener() {\n const color_r17 = i0.ɵɵrestoreView(_r16).$implicit;\n const ctx_r1 = i0.ɵɵnextContext(3);\n return i0.ɵɵresetView(ctx_r1.setColorFromString(color_r17));\n });\n i0.ɵɵtemplate(1, ColorPickerComponent_div_27_div_4_div_1_span_1_Template, 1, 3, \"span\", 54);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const color_r17 = ctx.$implicit;\n const ctx_r1 = i0.ɵɵnextContext(3);\n i0.ɵɵstyleProp(\"background-color\", color_r17);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.cpAddColorButton);\n }\n}\nfunction ColorPickerComponent_div_27_div_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\");\n i0.ɵɵtemplate(1, ColorPickerComponent_div_27_div_4_div_1_Template, 2, 3, \"div\", 52);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵclassMap(ctx_r1.cpPresetColorsClass);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngForOf\", ctx_r1.cpPresetColors);\n }\n}\nfunction ColorPickerComponent_div_27_div_5_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\");\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵclassMap(ctx_r1.cpPresetEmptyMessageClass);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r1.cpPresetEmptyMessage);\n }\n}\nfunction ColorPickerComponent_div_27_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 49);\n i0.ɵɵelement(1, \"hr\");\n i0.ɵɵelementStart(2, \"div\", 50);\n i0.ɵɵtext(3);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(4, ColorPickerComponent_div_27_div_4_Template, 2, 4, \"div\", 51)(5, ColorPickerComponent_div_27_div_5_Template, 2, 4, \"div\", 51);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance(3);\n i0.ɵɵtextInterpolate(ctx_r1.cpPresetLabel);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.cpPresetColors == null ? null : ctx_r1.cpPresetColors.length);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !(ctx_r1.cpPresetColors == null ? null : ctx_r1.cpPresetColors.length) && ctx_r1.cpAddColorButton);\n }\n}\nfunction ColorPickerComponent_div_28_button_1_Template(rf, ctx) {\n if (rf & 1) {\n const _r19 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"button\", 58);\n i0.ɵɵlistener(\"click\", function ColorPickerComponent_div_28_button_1_Template_button_click_0_listener($event) {\n i0.ɵɵrestoreView(_r19);\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.onCancelColor($event));\n });\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵclassMap(ctx_r1.cpCancelButtonClass);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r1.cpCancelButtonText);\n }\n}\nfunction ColorPickerComponent_div_28_button_2_Template(rf, ctx) {\n if (rf & 1) {\n const _r20 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"button\", 58);\n i0.ɵɵlistener(\"click\", function ColorPickerComponent_div_28_button_2_Template_button_click_0_listener($event) {\n i0.ɵɵrestoreView(_r20);\n const ctx_r1 = i0.ɵɵnextContext(2);\n return i0.ɵɵresetView(ctx_r1.onAcceptColor($event));\n });\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext(2);\n i0.ɵɵclassMap(ctx_r1.cpOKButtonClass);\n i0.ɵɵadvance();\n i0.ɵɵtextInterpolate(ctx_r1.cpOKButtonText);\n }\n}\nfunction ColorPickerComponent_div_28_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 56);\n i0.ɵɵtemplate(1, ColorPickerComponent_div_28_button_1_Template, 2, 4, \"button\", 57)(2, ColorPickerComponent_div_28_button_2_Template, 2, 4, \"button\", 57);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.cpCancelButton);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx_r1.cpOKButton);\n }\n}\nfunction ColorPickerComponent_div_29_ng_container_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainer(0);\n }\n}\nfunction ColorPickerComponent_div_29_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 59);\n i0.ɵɵtemplate(1, ColorPickerComponent_div_29_ng_container_1_Template, 1, 0, \"ng-container\", 60);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r1.cpExtraTemplate);\n }\n}\nvar ColorFormats = /*#__PURE__*/function (ColorFormats) {\n ColorFormats[ColorFormats[\"HEX\"] = 0] = \"HEX\";\n ColorFormats[ColorFormats[\"RGBA\"] = 1] = \"RGBA\";\n ColorFormats[ColorFormats[\"HSLA\"] = 2] = \"HSLA\";\n ColorFormats[ColorFormats[\"CMYK\"] = 3] = \"CMYK\";\n return ColorFormats;\n}(ColorFormats || {});\nclass Rgba {\n constructor(r, g, b, a) {\n this.r = r;\n this.g = g;\n this.b = b;\n this.a = a;\n }\n}\nclass Hsva {\n constructor(h, s, v, a) {\n this.h = h;\n this.s = s;\n this.v = v;\n this.a = a;\n }\n}\nclass Hsla {\n constructor(h, s, l, a) {\n this.h = h;\n this.s = s;\n this.l = l;\n this.a = a;\n }\n}\nclass Cmyk {\n constructor(c, m, y, k, a = 1) {\n this.c = c;\n this.m = m;\n this.y = y;\n this.k = k;\n this.a = a;\n }\n}\nfunction calculateAutoPositioning(elBounds, triggerElBounds) {\n // Defaults\n let usePositionX = 'right';\n let usePositionY = 'bottom';\n // Calculate collisions\n const {\n height,\n width\n } = elBounds;\n const {\n top,\n left\n } = triggerElBounds;\n const bottom = top + triggerElBounds.height;\n const right = left + triggerElBounds.width;\n const collisionTop = top - height < 0;\n const collisionBottom = bottom + height > (window.innerHeight || document.documentElement.clientHeight);\n const collisionLeft = left - width < 0;\n const collisionRight = right + width > (window.innerWidth || document.documentElement.clientWidth);\n const collisionAll = collisionTop && collisionBottom && collisionLeft && collisionRight;\n // Generate X & Y position values\n if (collisionBottom) {\n usePositionY = 'top';\n }\n if (collisionTop) {\n usePositionY = 'bottom';\n }\n if (collisionLeft) {\n usePositionX = 'right';\n }\n if (collisionRight) {\n usePositionX = 'left';\n }\n // Choose the largest gap available\n if (collisionAll) {\n const postions = ['left', 'right', 'top', 'bottom'];\n return postions.reduce((prev, next) => elBounds[prev] > elBounds[next] ? prev : next);\n }\n if (collisionLeft && collisionRight) {\n if (collisionTop) {\n return 'bottom';\n }\n if (collisionBottom) {\n return 'top';\n }\n return top > bottom ? 'top' : 'bottom';\n }\n if (collisionTop && collisionBottom) {\n if (collisionLeft) {\n return 'right';\n }\n if (collisionRight) {\n return 'left';\n }\n return left > right ? 'left' : 'right';\n }\n return `${usePositionY}-${usePositionX}`;\n}\nfunction detectIE() {\n let ua = '';\n if (typeof navigator !== 'undefined') {\n ua = navigator.userAgent.toLowerCase();\n }\n const msie = ua.indexOf('msie ');\n if (msie > 0) {\n // IE 10 or older => return version number\n return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);\n }\n // Other browser\n return false;\n}\nlet TextDirective = /*#__PURE__*/(() => {\n class TextDirective {\n constructor() {\n this.newValue = new EventEmitter();\n }\n inputChange(event) {\n const value = event.target.value;\n if (this.rg === undefined) {\n this.newValue.emit(value);\n } else {\n const numeric = parseFloat(value);\n this.newValue.emit({\n v: numeric,\n rg: this.rg\n });\n }\n }\n }\n TextDirective.ɵfac = function TextDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || TextDirective)();\n };\n TextDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: TextDirective,\n selectors: [[\"\", \"text\", \"\"]],\n hostBindings: function TextDirective_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"input\", function TextDirective_input_HostBindingHandler($event) {\n return ctx.inputChange($event);\n });\n }\n },\n inputs: {\n rg: \"rg\",\n text: \"text\"\n },\n outputs: {\n newValue: \"newValue\"\n },\n standalone: false\n });\n return TextDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet SliderDirective = /*#__PURE__*/(() => {\n class SliderDirective {\n constructor(elRef) {\n this.elRef = elRef;\n this.dragEnd = new EventEmitter();\n this.dragStart = new EventEmitter();\n this.newValue = new EventEmitter();\n this.listenerMove = event => this.move(event);\n this.listenerStop = () => this.stop();\n }\n mouseDown(event) {\n this.start(event);\n }\n touchStart(event) {\n this.start(event);\n }\n move(event) {\n event.preventDefault();\n this.setCursor(event);\n }\n start(event) {\n this.setCursor(event);\n event.stopPropagation();\n document.addEventListener('mouseup', this.listenerStop);\n document.addEventListener('touchend', this.listenerStop);\n document.addEventListener('mousemove', this.listenerMove);\n document.addEventListener('touchmove', this.listenerMove);\n this.dragStart.emit();\n }\n stop() {\n document.removeEventListener('mouseup', this.listenerStop);\n document.removeEventListener('touchend', this.listenerStop);\n document.removeEventListener('mousemove', this.listenerMove);\n document.removeEventListener('touchmove', this.listenerMove);\n this.dragEnd.emit();\n }\n getX(event) {\n const position = this.elRef.nativeElement.getBoundingClientRect();\n const pageX = event.pageX !== undefined ? event.pageX : event.touches[0].pageX;\n return pageX - position.left - window.pageXOffset;\n }\n getY(event) {\n const position = this.elRef.nativeElement.getBoundingClientRect();\n const pageY = event.pageY !== undefined ? event.pageY : event.touches[0].pageY;\n return pageY - position.top - window.pageYOffset;\n }\n setCursor(event) {\n const width = this.elRef.nativeElement.offsetWidth;\n const height = this.elRef.nativeElement.offsetHeight;\n const x = Math.max(0, Math.min(this.getX(event), width));\n const y = Math.max(0, Math.min(this.getY(event), height));\n if (this.rgX !== undefined && this.rgY !== undefined) {\n this.newValue.emit({\n s: x / width,\n v: 1 - y / height,\n rgX: this.rgX,\n rgY: this.rgY\n });\n } else if (this.rgX === undefined && this.rgY !== undefined) {\n this.newValue.emit({\n v: y / height,\n rgY: this.rgY\n });\n } else if (this.rgX !== undefined && this.rgY === undefined) {\n this.newValue.emit({\n v: x / width,\n rgX: this.rgX\n });\n }\n }\n }\n SliderDirective.ɵfac = function SliderDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || SliderDirective)(i0.ɵɵdirectiveInject(i0.ElementRef));\n };\n SliderDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: SliderDirective,\n selectors: [[\"\", \"slider\", \"\"]],\n hostBindings: function SliderDirective_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"mousedown\", function SliderDirective_mousedown_HostBindingHandler($event) {\n return ctx.mouseDown($event);\n })(\"touchstart\", function SliderDirective_touchstart_HostBindingHandler($event) {\n return ctx.touchStart($event);\n });\n }\n },\n inputs: {\n rgX: \"rgX\",\n rgY: \"rgY\",\n slider: \"slider\"\n },\n outputs: {\n dragEnd: \"dragEnd\",\n dragStart: \"dragStart\",\n newValue: \"newValue\"\n },\n standalone: false\n });\n return SliderDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nclass SliderPosition {\n constructor(h, s, v, a) {\n this.h = h;\n this.s = s;\n this.v = v;\n this.a = a;\n }\n}\nclass SliderDimension {\n constructor(h, s, v, a) {\n this.h = h;\n this.s = s;\n this.v = v;\n this.a = a;\n }\n}\nlet ColorPickerService = /*#__PURE__*/(() => {\n class ColorPickerService {\n constructor() {\n this.active = null;\n }\n setActive(active) {\n if (this.active && this.active !== active && this.active.cpDialogDisplay !== 'inline') {\n this.active.closeDialog();\n }\n this.active = active;\n }\n hsva2hsla(hsva) {\n const h = hsva.h,\n s = hsva.s,\n v = hsva.v,\n a = hsva.a;\n if (v === 0) {\n return new Hsla(h, 0, 0, a);\n } else if (s === 0 && v === 1) {\n return new Hsla(h, 1, 1, a);\n } else {\n const l = v * (2 - s) / 2;\n return new Hsla(h, v * s / (1 - Math.abs(2 * l - 1)), l, a);\n }\n }\n hsla2hsva(hsla) {\n const h = Math.min(hsla.h, 1),\n s = Math.min(hsla.s, 1);\n const l = Math.min(hsla.l, 1),\n a = Math.min(hsla.a, 1);\n if (l === 0) {\n return new Hsva(h, 0, 0, a);\n } else {\n const v = l + s * (1 - Math.abs(2 * l - 1)) / 2;\n return new Hsva(h, 2 * (v - l) / v, v, a);\n }\n }\n hsvaToRgba(hsva) {\n let r, g, b;\n const h = hsva.h,\n s = hsva.s,\n v = hsva.v,\n a = hsva.a;\n const i = Math.floor(h * 6);\n const f = h * 6 - i;\n const p = v * (1 - s);\n const q = v * (1 - f * s);\n const t = v * (1 - (1 - f) * s);\n switch (i % 6) {\n case 0:\n r = v, g = t, b = p;\n break;\n case 1:\n r = q, g = v, b = p;\n break;\n case 2:\n r = p, g = v, b = t;\n break;\n case 3:\n r = p, g = q, b = v;\n break;\n case 4:\n r = t, g = p, b = v;\n break;\n case 5:\n r = v, g = p, b = q;\n break;\n default:\n r = 0, g = 0, b = 0;\n }\n return new Rgba(r, g, b, a);\n }\n cmykToRgb(cmyk) {\n const r = (1 - cmyk.c) * (1 - cmyk.k);\n const g = (1 - cmyk.m) * (1 - cmyk.k);\n const b = (1 - cmyk.y) * (1 - cmyk.k);\n return new Rgba(r, g, b, cmyk.a);\n }\n rgbaToCmyk(rgba) {\n const k = 1 - Math.max(rgba.r, rgba.g, rgba.b);\n if (k === 1) {\n return new Cmyk(0, 0, 0, 1, rgba.a);\n } else {\n const c = (1 - rgba.r - k) / (1 - k);\n const m = (1 - rgba.g - k) / (1 - k);\n const y = (1 - rgba.b - k) / (1 - k);\n return new Cmyk(c, m, y, k, rgba.a);\n }\n }\n rgbaToHsva(rgba) {\n let h, s;\n const r = Math.min(rgba.r, 1),\n g = Math.min(rgba.g, 1);\n const b = Math.min(rgba.b, 1),\n a = Math.min(rgba.a, 1);\n const max = Math.max(r, g, b),\n min = Math.min(r, g, b);\n const v = max,\n d = max - min;\n s = max === 0 ? 0 : d / max;\n if (max === min) {\n h = 0;\n } else {\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n default:\n h = 0;\n }\n h /= 6;\n }\n return new Hsva(h, s, v, a);\n }\n rgbaToHex(rgba, allowHex8) {\n /* eslint-disable no-bitwise */\n let hex = '#' + (1 << 24 | rgba.r << 16 | rgba.g << 8 | rgba.b).toString(16).substr(1);\n if (allowHex8) {\n hex += (1 << 8 | Math.round(rgba.a * 255)).toString(16).substr(1);\n }\n /* eslint-enable no-bitwise */\n return hex;\n }\n normalizeCMYK(cmyk) {\n return new Cmyk(cmyk.c / 100, cmyk.m / 100, cmyk.y / 100, cmyk.k / 100, cmyk.a);\n }\n denormalizeCMYK(cmyk) {\n return new Cmyk(Math.floor(cmyk.c * 100), Math.floor(cmyk.m * 100), Math.floor(cmyk.y * 100), Math.floor(cmyk.k * 100), cmyk.a);\n }\n denormalizeRGBA(rgba) {\n return new Rgba(Math.round(rgba.r * 255), Math.round(rgba.g * 255), Math.round(rgba.b * 255), rgba.a);\n }\n stringToHsva(colorString = '', allowHex8 = false) {\n let hsva = null;\n colorString = (colorString || '').toLowerCase();\n const stringParsers = [{\n re: /(rgb)a?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*%?,\\s*(\\d{1,3})\\s*%?(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,\n parse: function (execResult) {\n return new Rgba(parseInt(execResult[2], 10) / 255, parseInt(execResult[3], 10) / 255, parseInt(execResult[4], 10) / 255, isNaN(parseFloat(execResult[5])) ? 1 : parseFloat(execResult[5]));\n }\n }, {\n re: /(hsl)a?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})%\\s*,\\s*(\\d{1,3})%\\s*(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,\n parse: function (execResult) {\n return new Hsla(parseInt(execResult[2], 10) / 360, parseInt(execResult[3], 10) / 100, parseInt(execResult[4], 10) / 100, isNaN(parseFloat(execResult[5])) ? 1 : parseFloat(execResult[5]));\n }\n }];\n if (allowHex8) {\n stringParsers.push({\n re: /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})?$/,\n parse: function (execResult) {\n return new Rgba(parseInt(execResult[1], 16) / 255, parseInt(execResult[2], 16) / 255, parseInt(execResult[3], 16) / 255, parseInt(execResult[4] || 'FF', 16) / 255);\n }\n });\n } else {\n stringParsers.push({\n re: /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})$/,\n parse: function (execResult) {\n return new Rgba(parseInt(execResult[1], 16) / 255, parseInt(execResult[2], 16) / 255, parseInt(execResult[3], 16) / 255, 1);\n }\n });\n }\n stringParsers.push({\n re: /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])$/,\n parse: function (execResult) {\n return new Rgba(parseInt(execResult[1] + execResult[1], 16) / 255, parseInt(execResult[2] + execResult[2], 16) / 255, parseInt(execResult[3] + execResult[3], 16) / 255, 1);\n }\n });\n for (const key in stringParsers) {\n if (stringParsers.hasOwnProperty(key)) {\n const parser = stringParsers[key];\n const match = parser.re.exec(colorString),\n color = match && parser.parse(match);\n if (color) {\n if (color instanceof Rgba) {\n hsva = this.rgbaToHsva(color);\n } else if (color instanceof Hsla) {\n hsva = this.hsla2hsva(color);\n }\n return hsva;\n }\n }\n }\n return hsva;\n }\n outputFormat(hsva, outputFormat, alphaChannel) {\n if (outputFormat === 'auto') {\n outputFormat = hsva.a < 1 ? 'rgba' : 'hex';\n }\n switch (outputFormat) {\n case 'hsla':\n const hsla = this.hsva2hsla(hsva);\n const hslaText = new Hsla(Math.round(hsla.h * 360), Math.round(hsla.s * 100), Math.round(hsla.l * 100), Math.round(hsla.a * 100) / 100);\n if (hsva.a < 1 || alphaChannel === 'always') {\n return 'hsla(' + hslaText.h + ',' + hslaText.s + '%,' + hslaText.l + '%,' + hslaText.a + ')';\n } else {\n return 'hsl(' + hslaText.h + ',' + hslaText.s + '%,' + hslaText.l + '%)';\n }\n case 'rgba':\n const rgba = this.denormalizeRGBA(this.hsvaToRgba(hsva));\n if (hsva.a < 1 || alphaChannel === 'always') {\n return 'rgba(' + rgba.r + ',' + rgba.g + ',' + rgba.b + ',' + Math.round(rgba.a * 100) / 100 + ')';\n } else {\n return 'rgb(' + rgba.r + ',' + rgba.g + ',' + rgba.b + ')';\n }\n default:\n const allowHex8 = alphaChannel === 'always' || alphaChannel === 'forced';\n return this.rgbaToHex(this.denormalizeRGBA(this.hsvaToRgba(hsva)), allowHex8);\n }\n }\n }\n ColorPickerService.ɵfac = function ColorPickerService_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ColorPickerService)();\n };\n ColorPickerService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: ColorPickerService,\n factory: ColorPickerService.ɵfac\n });\n return ColorPickerService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// Do not store that on the class instance since the condition will be run\n// every time the class is created.\nconst SUPPORTS_TOUCH = typeof window !== 'undefined' && 'ontouchstart' in window;\nlet ColorPickerComponent = /*#__PURE__*/(() => {\n class ColorPickerComponent {\n constructor(ngZone, elRef, cdRef, document, platformId, service) {\n this.ngZone = ngZone;\n this.elRef = elRef;\n this.cdRef = cdRef;\n this.document = document;\n this.platformId = platformId;\n this.service = service;\n this.isIE10 = false;\n this.dialogArrowSize = 10;\n this.dialogArrowOffset = 15;\n this.dialogInputFields = [ColorFormats.HEX, ColorFormats.RGBA, ColorFormats.HSLA, ColorFormats.CMYK];\n this.useRootViewContainer = false;\n this.eyeDropperSupported = isPlatformBrowser(this.platformId) && 'EyeDropper' in this.document.defaultView;\n }\n handleEsc(event) {\n if (this.show && this.cpDialogDisplay === 'popup') {\n this.onCancelColor(event);\n }\n }\n handleEnter(event) {\n if (this.show && this.cpDialogDisplay === 'popup') {\n this.onAcceptColor(event);\n }\n }\n ngOnInit() {\n this.slider = new SliderPosition(0, 0, 0, 0);\n const hueWidth = this.hueSlider.nativeElement.offsetWidth || 140;\n const alphaWidth = this.alphaSlider.nativeElement.offsetWidth || 140;\n this.sliderDimMax = new SliderDimension(hueWidth, this.cpWidth, 130, alphaWidth);\n if (this.cpCmykEnabled) {\n this.format = ColorFormats.CMYK;\n } else if (this.cpOutputFormat === 'rgba') {\n this.format = ColorFormats.RGBA;\n } else if (this.cpOutputFormat === 'hsla') {\n this.format = ColorFormats.HSLA;\n } else {\n this.format = ColorFormats.HEX;\n }\n this.listenerMouseDown = event => {\n this.onMouseDown(event);\n };\n this.listenerResize = () => {\n this.onResize();\n };\n this.openDialog(this.initialColor, false);\n }\n ngOnDestroy() {\n this.closeDialog();\n }\n ngAfterViewInit() {\n if (this.cpWidth !== 230 || this.cpDialogDisplay === 'inline') {\n const hueWidth = this.hueSlider.nativeElement.offsetWidth || 140;\n const alphaWidth = this.alphaSlider.nativeElement.offsetWidth || 140;\n this.sliderDimMax = new SliderDimension(hueWidth, this.cpWidth, 130, alphaWidth);\n this.updateColorPicker(false);\n this.cdRef.detectChanges();\n }\n }\n openDialog(color, emit = true) {\n this.service.setActive(this);\n if (!this.width) {\n this.cpWidth = this.directiveElementRef.nativeElement.offsetWidth;\n }\n if (!this.height) {\n this.height = 320;\n }\n this.setInitialColor(color);\n this.setColorFromString(color, emit);\n this.openColorPicker();\n }\n closeDialog() {\n this.closeColorPicker();\n }\n setupDialog(instance, elementRef, color, cpWidth, cpHeight, cpDialogDisplay, cpFallbackColor, cpColorMode, cpCmykEnabled, cpAlphaChannel, cpOutputFormat, cpDisableInput, cpIgnoredElements, cpSaveClickOutside, cpCloseClickOutside, cpUseRootViewContainer, cpPosition, cpPositionOffset, cpPositionRelativeToArrow, cpPresetLabel, cpPresetColors, cpPresetColorsClass, cpMaxPresetColorsLength, cpPresetEmptyMessage, cpPresetEmptyMessageClass, cpOKButton, cpOKButtonClass, cpOKButtonText, cpCancelButton, cpCancelButtonClass, cpCancelButtonText, cpAddColorButton, cpAddColorButtonClass, cpAddColorButtonText, cpRemoveColorButtonClass, cpEyeDropper, cpTriggerElement, cpExtraTemplate) {\n this.setInitialColor(color);\n this.setColorMode(cpColorMode);\n this.isIE10 = detectIE() === 10;\n this.directiveInstance = instance;\n this.directiveElementRef = elementRef;\n this.cpDisableInput = cpDisableInput;\n this.cpCmykEnabled = cpCmykEnabled;\n this.cpAlphaChannel = cpAlphaChannel;\n this.cpOutputFormat = cpOutputFormat;\n this.cpDialogDisplay = cpDialogDisplay;\n this.cpIgnoredElements = cpIgnoredElements;\n this.cpSaveClickOutside = cpSaveClickOutside;\n this.cpCloseClickOutside = cpCloseClickOutside;\n this.useRootViewContainer = cpUseRootViewContainer;\n this.width = this.cpWidth = parseInt(cpWidth, 10);\n this.height = this.cpHeight = parseInt(cpHeight, 10);\n this.cpPosition = cpPosition;\n this.cpPositionOffset = parseInt(cpPositionOffset, 10);\n this.cpOKButton = cpOKButton;\n this.cpOKButtonText = cpOKButtonText;\n this.cpOKButtonClass = cpOKButtonClass;\n this.cpCancelButton = cpCancelButton;\n this.cpCancelButtonText = cpCancelButtonText;\n this.cpCancelButtonClass = cpCancelButtonClass;\n this.cpEyeDropper = cpEyeDropper;\n this.fallbackColor = cpFallbackColor || '#fff';\n this.setPresetConfig(cpPresetLabel, cpPresetColors);\n this.cpPresetColorsClass = cpPresetColorsClass;\n this.cpMaxPresetColorsLength = cpMaxPresetColorsLength;\n this.cpPresetEmptyMessage = cpPresetEmptyMessage;\n this.cpPresetEmptyMessageClass = cpPresetEmptyMessageClass;\n this.cpAddColorButton = cpAddColorButton;\n this.cpAddColorButtonText = cpAddColorButtonText;\n this.cpAddColorButtonClass = cpAddColorButtonClass;\n this.cpRemoveColorButtonClass = cpRemoveColorButtonClass;\n this.cpTriggerElement = cpTriggerElement;\n this.cpExtraTemplate = cpExtraTemplate;\n if (!cpPositionRelativeToArrow) {\n this.dialogArrowOffset = 0;\n }\n if (cpDialogDisplay === 'inline') {\n this.dialogArrowSize = 0;\n this.dialogArrowOffset = 0;\n }\n if (cpOutputFormat === 'hex' && cpAlphaChannel !== 'always' && cpAlphaChannel !== 'forced') {\n this.cpAlphaChannel = 'disabled';\n }\n }\n setColorMode(mode) {\n switch (mode.toString().toUpperCase()) {\n case '1':\n case 'C':\n case 'COLOR':\n this.cpColorMode = 1;\n break;\n case '2':\n case 'G':\n case 'GRAYSCALE':\n this.cpColorMode = 2;\n break;\n case '3':\n case 'P':\n case 'PRESETS':\n this.cpColorMode = 3;\n break;\n default:\n this.cpColorMode = 1;\n }\n }\n setInitialColor(color) {\n this.initialColor = color;\n }\n setPresetConfig(cpPresetLabel, cpPresetColors) {\n this.cpPresetLabel = cpPresetLabel;\n this.cpPresetColors = cpPresetColors;\n }\n setColorFromString(value, emit = true, update = true) {\n let hsva;\n if (this.cpAlphaChannel === 'always' || this.cpAlphaChannel === 'forced') {\n hsva = this.service.stringToHsva(value, true);\n if (!hsva && !this.hsva) {\n hsva = this.service.stringToHsva(value, false);\n }\n } else {\n hsva = this.service.stringToHsva(value, false);\n }\n if (!hsva && !this.hsva) {\n hsva = this.service.stringToHsva(this.fallbackColor, false);\n }\n if (hsva) {\n this.hsva = hsva;\n this.sliderH = this.hsva.h;\n if (this.cpOutputFormat === 'hex' && this.cpAlphaChannel === 'disabled') {\n this.hsva.a = 1;\n }\n this.updateColorPicker(emit, update);\n }\n }\n onResize() {\n if (this.position === 'fixed') {\n this.setDialogPosition();\n } else if (this.cpDialogDisplay !== 'inline') {\n this.closeColorPicker();\n }\n }\n onDragEnd(slider) {\n this.directiveInstance.sliderDragEnd({\n slider: slider,\n color: this.outputColor\n });\n }\n onDragStart(slider) {\n this.directiveInstance.sliderDragStart({\n slider: slider,\n color: this.outputColor\n });\n }\n onMouseDown(event) {\n if (this.show && !this.isIE10 && this.cpDialogDisplay === 'popup' && event.target !== this.directiveElementRef.nativeElement && !this.isDescendant(this.elRef.nativeElement, event.target) && !this.isDescendant(this.directiveElementRef.nativeElement, event.target) && this.cpIgnoredElements.filter(item => item === event.target).length === 0) {\n this.ngZone.run(() => {\n if (this.cpSaveClickOutside) {\n this.directiveInstance.colorSelected(this.outputColor);\n } else {\n this.hsva = null;\n this.setColorFromString(this.initialColor, false);\n if (this.cpCmykEnabled) {\n this.directiveInstance.cmykChanged(this.cmykColor);\n }\n this.directiveInstance.colorChanged(this.initialColor);\n this.directiveInstance.colorCanceled();\n }\n if (this.cpCloseClickOutside) {\n this.closeColorPicker();\n }\n });\n }\n }\n onAcceptColor(event) {\n event.stopPropagation();\n if (this.outputColor) {\n this.directiveInstance.colorSelected(this.outputColor);\n }\n if (this.cpDialogDisplay === 'popup') {\n this.closeColorPicker();\n }\n }\n onCancelColor(event) {\n this.hsva = null;\n event.stopPropagation();\n this.directiveInstance.colorCanceled();\n this.setColorFromString(this.initialColor, true);\n if (this.cpDialogDisplay === 'popup') {\n if (this.cpCmykEnabled) {\n this.directiveInstance.cmykChanged(this.cmykColor);\n }\n this.directiveInstance.colorChanged(this.initialColor, true);\n this.closeColorPicker();\n }\n }\n onEyeDropper() {\n if (!this.eyeDropperSupported) return;\n const eyeDropper = new window.EyeDropper();\n eyeDropper.open().then(eyeDropperResult => {\n this.setColorFromString(eyeDropperResult.sRGBHex, true);\n });\n }\n onFormatToggle(change) {\n const availableFormats = this.dialogInputFields.length - (this.cpCmykEnabled ? 0 : 1);\n const nextFormat = ((this.dialogInputFields.indexOf(this.format) + change) % availableFormats + availableFormats) % availableFormats;\n this.format = this.dialogInputFields[nextFormat];\n }\n onColorChange(value) {\n this.hsva.s = value.s / value.rgX;\n this.hsva.v = value.v / value.rgY;\n this.updateColorPicker();\n this.directiveInstance.sliderChanged({\n slider: 'lightness',\n value: this.hsva.v,\n color: this.outputColor\n });\n this.directiveInstance.sliderChanged({\n slider: 'saturation',\n value: this.hsva.s,\n color: this.outputColor\n });\n }\n onHueChange(value) {\n this.hsva.h = value.v / value.rgX;\n this.sliderH = this.hsva.h;\n this.updateColorPicker();\n this.directiveInstance.sliderChanged({\n slider: 'hue',\n value: this.hsva.h,\n color: this.outputColor\n });\n }\n onValueChange(value) {\n this.hsva.v = value.v / value.rgX;\n this.updateColorPicker();\n this.directiveInstance.sliderChanged({\n slider: 'value',\n value: this.hsva.v,\n color: this.outputColor\n });\n }\n onAlphaChange(value) {\n this.hsva.a = value.v / value.rgX;\n this.updateColorPicker();\n this.directiveInstance.sliderChanged({\n slider: 'alpha',\n value: this.hsva.a,\n color: this.outputColor\n });\n }\n onHexInput(value) {\n if (value === null) {\n this.updateColorPicker();\n } else {\n if (value && value[0] !== '#') {\n value = '#' + value;\n }\n let validHex = /^#([a-f0-9]{3}|[a-f0-9]{6})$/gi;\n if (this.cpAlphaChannel === 'always') {\n validHex = /^#([a-f0-9]{3}|[a-f0-9]{6}|[a-f0-9]{8})$/gi;\n }\n const valid = validHex.test(value);\n if (valid) {\n if (value.length < 5) {\n value = '#' + value.substring(1).split('').map(c => c + c).join('');\n }\n if (this.cpAlphaChannel === 'forced') {\n value += Math.round(this.hsva.a * 255).toString(16);\n }\n this.setColorFromString(value, true, false);\n }\n this.directiveInstance.inputChanged({\n input: 'hex',\n valid: valid,\n value: value,\n color: this.outputColor\n });\n }\n }\n onRedInput(value) {\n const rgba = this.service.hsvaToRgba(this.hsva);\n const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg;\n if (valid) {\n rgba.r = value.v / value.rg;\n this.hsva = this.service.rgbaToHsva(rgba);\n this.sliderH = this.hsva.h;\n this.updateColorPicker();\n }\n this.directiveInstance.inputChanged({\n input: 'red',\n valid: valid,\n value: rgba.r,\n color: this.outputColor\n });\n }\n onBlueInput(value) {\n const rgba = this.service.hsvaToRgba(this.hsva);\n const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg;\n if (valid) {\n rgba.b = value.v / value.rg;\n this.hsva = this.service.rgbaToHsva(rgba);\n this.sliderH = this.hsva.h;\n this.updateColorPicker();\n }\n this.directiveInstance.inputChanged({\n input: 'blue',\n valid: valid,\n value: rgba.b,\n color: this.outputColor\n });\n }\n onGreenInput(value) {\n const rgba = this.service.hsvaToRgba(this.hsva);\n const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg;\n if (valid) {\n rgba.g = value.v / value.rg;\n this.hsva = this.service.rgbaToHsva(rgba);\n this.sliderH = this.hsva.h;\n this.updateColorPicker();\n }\n this.directiveInstance.inputChanged({\n input: 'green',\n valid: valid,\n value: rgba.g,\n color: this.outputColor\n });\n }\n onHueInput(value) {\n const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg;\n if (valid) {\n this.hsva.h = value.v / value.rg;\n this.sliderH = this.hsva.h;\n this.updateColorPicker();\n }\n this.directiveInstance.inputChanged({\n input: 'hue',\n valid: valid,\n value: this.hsva.h,\n color: this.outputColor\n });\n }\n onValueInput(value) {\n const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg;\n if (valid) {\n this.hsva.v = value.v / value.rg;\n this.updateColorPicker();\n }\n this.directiveInstance.inputChanged({\n input: 'value',\n valid: valid,\n value: this.hsva.v,\n color: this.outputColor\n });\n }\n onAlphaInput(value) {\n const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg;\n if (valid) {\n this.hsva.a = value.v / value.rg;\n this.updateColorPicker();\n }\n this.directiveInstance.inputChanged({\n input: 'alpha',\n valid: valid,\n value: this.hsva.a,\n color: this.outputColor\n });\n }\n onLightnessInput(value) {\n const hsla = this.service.hsva2hsla(this.hsva);\n const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg;\n if (valid) {\n hsla.l = value.v / value.rg;\n this.hsva = this.service.hsla2hsva(hsla);\n this.sliderH = this.hsva.h;\n this.updateColorPicker();\n }\n this.directiveInstance.inputChanged({\n input: 'lightness',\n valid: valid,\n value: hsla.l,\n color: this.outputColor\n });\n }\n onSaturationInput(value) {\n const hsla = this.service.hsva2hsla(this.hsva);\n const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg;\n if (valid) {\n hsla.s = value.v / value.rg;\n this.hsva = this.service.hsla2hsva(hsla);\n this.sliderH = this.hsva.h;\n this.updateColorPicker();\n }\n this.directiveInstance.inputChanged({\n input: 'saturation',\n valid: valid,\n value: hsla.s,\n color: this.outputColor\n });\n }\n onCyanInput(value) {\n const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg;\n if (valid) {\n this.cmyk.c = value.v;\n this.updateColorPicker(false, true, true);\n }\n this.directiveInstance.inputChanged({\n input: 'cyan',\n valid: true,\n value: this.cmyk.c,\n color: this.outputColor\n });\n }\n onMagentaInput(value) {\n const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg;\n if (valid) {\n this.cmyk.m = value.v;\n this.updateColorPicker(false, true, true);\n }\n this.directiveInstance.inputChanged({\n input: 'magenta',\n valid: true,\n value: this.cmyk.m,\n color: this.outputColor\n });\n }\n onYellowInput(value) {\n const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg;\n if (valid) {\n this.cmyk.y = value.v;\n this.updateColorPicker(false, true, true);\n }\n this.directiveInstance.inputChanged({\n input: 'yellow',\n valid: true,\n value: this.cmyk.y,\n color: this.outputColor\n });\n }\n onBlackInput(value) {\n const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg;\n if (valid) {\n this.cmyk.k = value.v;\n this.updateColorPicker(false, true, true);\n }\n this.directiveInstance.inputChanged({\n input: 'black',\n valid: true,\n value: this.cmyk.k,\n color: this.outputColor\n });\n }\n onAddPresetColor(event, value) {\n event.stopPropagation();\n if (!this.cpPresetColors.filter(color => color === value).length) {\n this.cpPresetColors = this.cpPresetColors.concat(value);\n this.directiveInstance.presetColorsChanged(this.cpPresetColors);\n }\n }\n onRemovePresetColor(event, value) {\n event.stopPropagation();\n this.cpPresetColors = this.cpPresetColors.filter(color => color !== value);\n this.directiveInstance.presetColorsChanged(this.cpPresetColors);\n }\n // Private helper functions for the color picker dialog status\n openColorPicker() {\n if (!this.show) {\n this.show = true;\n this.hidden = true;\n setTimeout(() => {\n this.hidden = false;\n this.setDialogPosition();\n this.cdRef.detectChanges();\n }, 0);\n this.directiveInstance.stateChanged(true);\n if (!this.isIE10) {\n // The change detection should be run on `mousedown` event only when the condition\n // is met within the `onMouseDown` method.\n this.ngZone.runOutsideAngular(() => {\n // There's no sense to add both event listeners on touch devices since the `touchstart`\n // event is handled earlier than `mousedown`, so we'll get 2 change detections and the\n // second one will be unnecessary.\n if (SUPPORTS_TOUCH) {\n document.addEventListener('touchstart', this.listenerMouseDown);\n } else {\n document.addEventListener('mousedown', this.listenerMouseDown);\n }\n });\n }\n window.addEventListener('resize', this.listenerResize);\n }\n }\n closeColorPicker() {\n if (this.show) {\n this.show = false;\n this.directiveInstance.stateChanged(false);\n if (!this.isIE10) {\n if (SUPPORTS_TOUCH) {\n document.removeEventListener('touchstart', this.listenerMouseDown);\n } else {\n document.removeEventListener('mousedown', this.listenerMouseDown);\n }\n }\n window.removeEventListener('resize', this.listenerResize);\n if (!this.cdRef['destroyed']) {\n this.cdRef.detectChanges();\n }\n }\n }\n updateColorPicker(emit = true, update = true, cmykInput = false) {\n if (this.sliderDimMax) {\n if (this.cpColorMode === 2) {\n this.hsva.s = 0;\n }\n let hue, hsla, rgba;\n const lastOutput = this.outputColor;\n hsla = this.service.hsva2hsla(this.hsva);\n if (!this.cpCmykEnabled) {\n rgba = this.service.denormalizeRGBA(this.service.hsvaToRgba(this.hsva));\n } else {\n if (!cmykInput) {\n rgba = this.service.hsvaToRgba(this.hsva);\n this.cmyk = this.service.denormalizeCMYK(this.service.rgbaToCmyk(rgba));\n } else {\n rgba = this.service.cmykToRgb(this.service.normalizeCMYK(this.cmyk));\n this.hsva = this.service.rgbaToHsva(rgba);\n }\n rgba = this.service.denormalizeRGBA(rgba);\n this.sliderH = this.hsva.h;\n }\n hue = this.service.denormalizeRGBA(this.service.hsvaToRgba(new Hsva(this.sliderH || this.hsva.h, 1, 1, 1)));\n if (update) {\n this.hslaText = new Hsla(Math.round(hsla.h * 360), Math.round(hsla.s * 100), Math.round(hsla.l * 100), Math.round(hsla.a * 100) / 100);\n this.rgbaText = new Rgba(rgba.r, rgba.g, rgba.b, Math.round(rgba.a * 100) / 100);\n if (this.cpCmykEnabled) {\n this.cmykText = new Cmyk(this.cmyk.c, this.cmyk.m, this.cmyk.y, this.cmyk.k, Math.round(this.cmyk.a * 100) / 100);\n }\n const allowHex8 = this.cpAlphaChannel === 'always';\n this.hexText = this.service.rgbaToHex(rgba, allowHex8);\n this.hexAlpha = this.rgbaText.a;\n }\n if (this.cpOutputFormat === 'auto') {\n if (this.format !== ColorFormats.RGBA && this.format !== ColorFormats.CMYK && this.format !== ColorFormats.HSLA) {\n if (this.hsva.a < 1) {\n this.format = this.hsva.a < 1 ? ColorFormats.RGBA : ColorFormats.HEX;\n }\n }\n }\n this.hueSliderColor = 'rgb(' + hue.r + ',' + hue.g + ',' + hue.b + ')';\n this.alphaSliderColor = 'rgb(' + rgba.r + ',' + rgba.g + ',' + rgba.b + ')';\n this.outputColor = this.service.outputFormat(this.hsva, this.cpOutputFormat, this.cpAlphaChannel);\n this.selectedColor = this.service.outputFormat(this.hsva, 'rgba', null);\n if (this.format !== ColorFormats.CMYK) {\n this.cmykColor = '';\n } else {\n if (this.cpAlphaChannel === 'always' || this.cpAlphaChannel === 'enabled' || this.cpAlphaChannel === 'forced') {\n const alpha = Math.round(this.cmyk.a * 100) / 100;\n this.cmykColor = `cmyka(${this.cmyk.c},${this.cmyk.m},${this.cmyk.y},${this.cmyk.k},${alpha})`;\n } else {\n this.cmykColor = `cmyk(${this.cmyk.c},${this.cmyk.m},${this.cmyk.y},${this.cmyk.k})`;\n }\n }\n this.slider = new SliderPosition((this.sliderH || this.hsva.h) * this.sliderDimMax.h - 8, this.hsva.s * this.sliderDimMax.s - 8, (1 - this.hsva.v) * this.sliderDimMax.v - 8, this.hsva.a * this.sliderDimMax.a - 8);\n if (emit && lastOutput !== this.outputColor) {\n if (this.cpCmykEnabled) {\n this.directiveInstance.cmykChanged(this.cmykColor);\n }\n this.directiveInstance.colorChanged(this.outputColor);\n }\n }\n }\n // Private helper functions for the color picker dialog positioning\n setDialogPosition() {\n if (this.cpDialogDisplay === 'inline') {\n this.position = 'relative';\n } else {\n let position = 'static',\n transform = '',\n style;\n let parentNode = null,\n transformNode = null;\n let node = this.directiveElementRef.nativeElement.parentNode;\n const dialogHeight = this.dialogElement.nativeElement.offsetHeight;\n while (node !== null && node.tagName !== 'HTML') {\n style = window.getComputedStyle(node);\n position = style.getPropertyValue('position');\n transform = style.getPropertyValue('transform');\n if (position !== 'static' && parentNode === null) {\n parentNode = node;\n }\n if (transform && transform !== 'none' && transformNode === null) {\n transformNode = node;\n }\n if (position === 'fixed') {\n parentNode = transformNode;\n break;\n }\n node = node.parentNode;\n }\n const boxDirective = this.createDialogBox(this.directiveElementRef.nativeElement, position !== 'fixed');\n if (this.useRootViewContainer || position === 'fixed' && (!parentNode || parentNode instanceof HTMLUnknownElement)) {\n this.top = boxDirective.top;\n this.left = boxDirective.left;\n } else {\n if (parentNode === null) {\n parentNode = node;\n }\n const boxParent = this.createDialogBox(parentNode, position !== 'fixed');\n this.top = boxDirective.top - boxParent.top;\n this.left = boxDirective.left - boxParent.left;\n }\n if (position === 'fixed') {\n this.position = 'fixed';\n }\n let usePosition = this.cpPosition;\n if (this.cpPosition === 'auto') {\n const dialogBounds = this.dialogElement.nativeElement.getBoundingClientRect();\n const windowInnerHeight = window.innerHeight;\n const windowInnerWidth = window.innerWidth;\n const elRefClientRect = this.elRef.nativeElement.getBoundingClientRect();\n const bottom = this.top + dialogBounds.height;\n if (bottom > windowInnerHeight) {\n this.top = windowInnerHeight - dialogBounds.height;\n this.cpArrowPosition = elRefClientRect.x / 2 - 20;\n }\n const right = this.left + dialogBounds.width;\n if (right > windowInnerWidth) {\n this.left = windowInnerWidth - dialogBounds.width;\n this.cpArrowPosition = elRefClientRect.x / 2 - 20;\n }\n const triggerBounds = this.cpTriggerElement.nativeElement.getBoundingClientRect();\n usePosition = calculateAutoPositioning(dialogBounds, triggerBounds);\n }\n if (usePosition === 'top') {\n this.arrowTop = dialogHeight - 1;\n this.top -= dialogHeight + this.dialogArrowSize;\n this.left += this.cpPositionOffset / 100 * boxDirective.width - this.dialogArrowOffset;\n } else if (usePosition === 'bottom') {\n this.top += boxDirective.height + this.dialogArrowSize;\n this.left += this.cpPositionOffset / 100 * boxDirective.width - this.dialogArrowOffset;\n } else if (usePosition === 'top-left' || usePosition === 'left-top') {\n this.top -= dialogHeight - boxDirective.height + boxDirective.height * this.cpPositionOffset / 100;\n this.left -= this.cpWidth + this.dialogArrowSize - 2 - this.dialogArrowOffset;\n } else if (usePosition === 'top-right' || usePosition === 'right-top') {\n this.top -= dialogHeight - boxDirective.height + boxDirective.height * this.cpPositionOffset / 100;\n this.left += boxDirective.width + this.dialogArrowSize - 2 - this.dialogArrowOffset;\n } else if (usePosition === 'left' || usePosition === 'bottom-left' || usePosition === 'left-bottom') {\n this.top += boxDirective.height * this.cpPositionOffset / 100 - this.dialogArrowOffset;\n this.left -= this.cpWidth + this.dialogArrowSize - 2;\n } else {\n // usePosition === 'right' || usePosition === 'bottom-right' || usePosition === 'right-bottom'\n this.top += boxDirective.height * this.cpPositionOffset / 100 - this.dialogArrowOffset;\n this.left += boxDirective.width + this.dialogArrowSize - 2;\n }\n this.cpUsePosition = usePosition;\n }\n }\n // Private helper functions for the color picker dialog positioning and opening\n isDescendant(parent, child) {\n let node = child.parentNode;\n while (node !== null) {\n if (node === parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n }\n createDialogBox(element, offset) {\n const {\n top,\n left\n } = element.getBoundingClientRect();\n return {\n top: top + (offset ? window.pageYOffset : 0),\n left: left + (offset ? window.pageXOffset : 0),\n width: element.offsetWidth,\n height: element.offsetHeight\n };\n }\n }\n ColorPickerComponent.ɵfac = function ColorPickerComponent_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ColorPickerComponent)(i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(DOCUMENT), i0.ɵɵdirectiveInject(PLATFORM_ID), i0.ɵɵdirectiveInject(ColorPickerService));\n };\n ColorPickerComponent.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: ColorPickerComponent,\n selectors: [[\"color-picker\"]],\n viewQuery: function ColorPickerComponent_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c0, 7);\n i0.ɵɵviewQuery(_c1, 7);\n i0.ɵɵviewQuery(_c2, 7);\n }\n if (rf & 2) {\n let _t;\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.dialogElement = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.hueSlider = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.alphaSlider = _t.first);\n }\n },\n hostBindings: function ColorPickerComponent_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"keyup.esc\", function ColorPickerComponent_keyup_esc_HostBindingHandler($event) {\n return ctx.handleEsc($event);\n }, false, i0.ɵɵresolveDocument)(\"keyup.enter\", function ColorPickerComponent_keyup_enter_HostBindingHandler($event) {\n return ctx.handleEnter($event);\n }, false, i0.ɵɵresolveDocument);\n }\n },\n standalone: false,\n decls: 30,\n vars: 51,\n consts: [[\"dialogPopup\", \"\"], [\"hueSlider\", \"\"], [\"valueSlider\", \"\"], [\"alphaSlider\", \"\"], [1, \"color-picker\", 3, \"click\"], [3, \"left\", \"class\", \"top\", 4, \"ngIf\"], [\"class\", \"saturation-lightness\", 3, \"slider\", \"rgX\", \"rgY\", \"background-color\", \"newValue\", \"dragStart\", \"dragEnd\", 4, \"ngIf\"], [1, \"hue-alpha\", \"box\"], [1, \"left\"], [1, \"selected-color-background\"], [1, \"selected-color\", 3, \"click\"], [\"class\", \"eyedropper-icon\", \"xmlns\", \"http://www.w3.org/2000/svg\", \"height\", \"24px\", \"viewBox\", \"0 0 24 24\", \"width\", \"24px\", \"fill\", \"#000000\", 4, \"ngIf\"], [\"type\", \"button\", 3, \"class\", \"disabled\", \"click\", 4, \"ngIf\"], [1, \"right\"], [\"style\", \"height: 16px;\", 4, \"ngIf\"], [1, \"hue\", 3, \"newValue\", \"dragStart\", \"dragEnd\", \"slider\", \"rgX\"], [1, \"cursor\"], [1, \"value\", 3, \"newValue\", \"dragStart\", \"dragEnd\", \"slider\", \"rgX\"], [1, \"alpha\", 3, \"newValue\", \"dragStart\", \"dragEnd\", \"slider\", \"rgX\"], [\"class\", \"cmyk-text\", 3, \"display\", 4, \"ngIf\"], [\"class\", \"hsla-text\", 3, \"display\", 4, \"ngIf\"], [\"class\", \"rgba-text\", 3, \"display\", 4, \"ngIf\"], [\"class\", \"hex-text\", 3, \"hex-alpha\", \"display\", 4, \"ngIf\"], [\"class\", \"value-text\", 4, \"ngIf\"], [\"class\", \"type-policy\", 4, \"ngIf\"], [\"class\", \"preset-area\", 4, \"ngIf\"], [\"class\", \"button-area\", 4, \"ngIf\"], [\"class\", \"extra-template\", 4, \"ngIf\"], [1, \"saturation-lightness\", 3, \"newValue\", \"dragStart\", \"dragEnd\", \"slider\", \"rgX\", \"rgY\"], [\"xmlns\", \"http://www.w3.org/2000/svg\", \"height\", \"24px\", \"viewBox\", \"0 0 24 24\", \"width\", \"24px\", \"fill\", \"#000000\", 1, \"eyedropper-icon\"], [\"d\", \"M0 0h24v24H0V0z\", \"fill\", \"none\"], [\"d\", \"M17.66 5.41l.92.92-2.69 2.69-.92-.92 2.69-2.69M17.67 3c-.26 0-.51.1-.71.29l-3.12 3.12-1.93-1.91-1.41 1.41 1.42 1.42L3 16.25V21h4.75l8.92-8.92 1.42 1.42 1.41-1.41-1.92-1.92 3.12-3.12c.4-.4.4-1.03.01-1.42l-2.34-2.34c-.2-.19-.45-.29-.7-.29zM6.92 19L5 17.08l8.06-8.06 1.92 1.92L6.92 19z\"], [\"type\", \"button\", 3, \"click\", \"disabled\"], [2, \"height\", \"16px\"], [1, \"cmyk-text\"], [1, \"box\"], [\"type\", \"number\", \"pattern\", \"[0-9]*\", \"min\", \"0\", \"max\", \"100\", 3, \"keyup.enter\", \"newValue\", \"text\", \"rg\", \"value\"], [\"type\", \"number\", \"pattern\", \"[0-9]+([\\\\.,][0-9]{1,2})?\", \"min\", \"0\", \"max\", \"1\", \"step\", \"0.1\", 3, \"text\", \"rg\", \"value\", \"keyup.enter\", \"newValue\", 4, \"ngIf\"], [4, \"ngIf\"], [\"type\", \"number\", \"pattern\", \"[0-9]+([\\\\.,][0-9]{1,2})?\", \"min\", \"0\", \"max\", \"1\", \"step\", \"0.1\", 3, \"keyup.enter\", \"newValue\", \"text\", \"rg\", \"value\"], [1, \"hsla-text\"], [\"type\", \"number\", \"pattern\", \"[0-9]*\", \"min\", \"0\", \"max\", \"360\", 3, \"keyup.enter\", \"newValue\", \"text\", \"rg\", \"value\"], [1, \"rgba-text\"], [\"type\", \"number\", \"pattern\", \"[0-9]*\", \"min\", \"0\", \"max\", \"255\", 3, \"keyup.enter\", \"newValue\", \"text\", \"rg\", \"value\"], [1, \"hex-text\"], [3, \"blur\", \"keyup.enter\", \"newValue\", \"text\", \"value\"], [1, \"value-text\"], [1, \"type-policy\"], [1, \"type-policy-arrow\", 3, \"click\"], [1, \"preset-area\"], [1, \"preset-label\"], [3, \"class\", 4, \"ngIf\"], [\"class\", \"preset-color\", 3, \"backgroundColor\", \"click\", 4, \"ngFor\", \"ngForOf\"], [1, \"preset-color\", 3, \"click\"], [3, \"class\", \"click\", 4, \"ngIf\"], [3, \"click\"], [1, \"button-area\"], [\"type\", \"button\", 3, \"class\", \"click\", 4, \"ngIf\"], [\"type\", \"button\", 3, \"click\"], [1, \"extra-template\"], [4, \"ngTemplateOutlet\"]],\n template: function ColorPickerComponent_Template(rf, ctx) {\n if (rf & 1) {\n const _r1 = i0.ɵɵgetCurrentView();\n i0.ɵɵelementStart(0, \"div\", 4, 0);\n i0.ɵɵlistener(\"click\", function ColorPickerComponent_Template_div_click_0_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView($event.stopPropagation());\n });\n i0.ɵɵtemplate(2, ColorPickerComponent_div_2_Template, 1, 7, \"div\", 5)(3, ColorPickerComponent_div_3_Template, 2, 8, \"div\", 6);\n i0.ɵɵelementStart(4, \"div\", 7)(5, \"div\", 8);\n i0.ɵɵelement(6, \"div\", 9);\n i0.ɵɵelementStart(7, \"div\", 10);\n i0.ɵɵlistener(\"click\", function ColorPickerComponent_Template_div_click_7_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.eyeDropperSupported && ctx.cpEyeDropper && ctx.onEyeDropper());\n });\n i0.ɵɵtemplate(8, ColorPickerComponent__svg_svg_8_Template, 3, 0, \"svg\", 11);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(9, ColorPickerComponent_button_9_Template, 2, 5, \"button\", 12);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(10, \"div\", 13);\n i0.ɵɵtemplate(11, ColorPickerComponent_div_11_Template, 1, 0, \"div\", 14);\n i0.ɵɵelementStart(12, \"div\", 15, 1);\n i0.ɵɵlistener(\"newValue\", function ColorPickerComponent_Template_div_newValue_12_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.onHueChange($event));\n })(\"dragStart\", function ColorPickerComponent_Template_div_dragStart_12_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.onDragStart(\"hue\"));\n })(\"dragEnd\", function ColorPickerComponent_Template_div_dragEnd_12_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.onDragEnd(\"hue\"));\n });\n i0.ɵɵelement(14, \"div\", 16);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(15, \"div\", 17, 2);\n i0.ɵɵlistener(\"newValue\", function ColorPickerComponent_Template_div_newValue_15_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.onValueChange($event));\n })(\"dragStart\", function ColorPickerComponent_Template_div_dragStart_15_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.onDragStart(\"value\"));\n })(\"dragEnd\", function ColorPickerComponent_Template_div_dragEnd_15_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.onDragEnd(\"value\"));\n });\n i0.ɵɵelement(17, \"div\", 16);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(18, \"div\", 18, 3);\n i0.ɵɵlistener(\"newValue\", function ColorPickerComponent_Template_div_newValue_18_listener($event) {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.onAlphaChange($event));\n })(\"dragStart\", function ColorPickerComponent_Template_div_dragStart_18_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.onDragStart(\"alpha\"));\n })(\"dragEnd\", function ColorPickerComponent_Template_div_dragEnd_18_listener() {\n i0.ɵɵrestoreView(_r1);\n return i0.ɵɵresetView(ctx.onDragEnd(\"alpha\"));\n });\n i0.ɵɵelement(20, \"div\", 16);\n i0.ɵɵelementEnd()()();\n i0.ɵɵtemplate(21, ColorPickerComponent_div_21_Template, 17, 12, \"div\", 19)(22, ColorPickerComponent_div_22_Template, 14, 10, \"div\", 20)(23, ColorPickerComponent_div_23_Template, 14, 10, \"div\", 21)(24, ColorPickerComponent_div_24_Template, 8, 7, \"div\", 22)(25, ColorPickerComponent_div_25_Template, 9, 3, \"div\", 23)(26, ColorPickerComponent_div_26_Template, 3, 0, \"div\", 24)(27, ColorPickerComponent_div_27_Template, 6, 3, \"div\", 25)(28, ColorPickerComponent_div_28_Template, 3, 2, \"div\", 26)(29, ColorPickerComponent_div_29_Template, 2, 1, \"div\", 27);\n i0.ɵɵelementEnd();\n }\n if (rf & 2) {\n i0.ɵɵstyleProp(\"display\", !ctx.show ? \"none\" : \"block\")(\"visibility\", ctx.hidden ? \"hidden\" : \"visible\")(\"top\", ctx.top, \"px\")(\"left\", ctx.left, \"px\")(\"position\", ctx.position)(\"height\", ctx.cpHeight, \"px\")(\"width\", ctx.cpWidth, \"px\");\n i0.ɵɵclassProp(\"open\", ctx.show);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx.cpDialogDisplay === \"popup\");\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", (ctx.cpColorMode || 1) === 1);\n i0.ɵɵadvance(4);\n i0.ɵɵstyleProp(\"background-color\", ctx.selectedColor)(\"cursor\", ctx.eyeDropperSupported && ctx.cpEyeDropper ? \"pointer\" : null);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.eyeDropperSupported && ctx.cpEyeDropper);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.cpAddColorButton);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx.cpAlphaChannel === \"disabled\");\n i0.ɵɵadvance();\n i0.ɵɵstyleProp(\"display\", (ctx.cpColorMode || 1) === 1 ? \"block\" : \"none\");\n i0.ɵɵproperty(\"rgX\", 1);\n i0.ɵɵadvance(2);\n i0.ɵɵstyleProp(\"left\", ctx.slider == null ? null : ctx.slider.h, \"px\");\n i0.ɵɵadvance();\n i0.ɵɵstyleProp(\"display\", (ctx.cpColorMode || 1) === 2 ? \"block\" : \"none\");\n i0.ɵɵproperty(\"rgX\", 1);\n i0.ɵɵadvance(2);\n i0.ɵɵstyleProp(\"right\", ctx.slider == null ? null : ctx.slider.v, \"px\");\n i0.ɵɵadvance();\n i0.ɵɵstyleProp(\"display\", ctx.cpAlphaChannel === \"disabled\" ? \"none\" : \"block\")(\"background-color\", ctx.alphaSliderColor);\n i0.ɵɵproperty(\"rgX\", 1);\n i0.ɵɵadvance(2);\n i0.ɵɵstyleProp(\"left\", ctx.slider == null ? null : ctx.slider.a, \"px\");\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx.cpDisableInput && (ctx.cpColorMode || 1) === 1);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx.cpDisableInput && (ctx.cpColorMode || 1) === 1);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx.cpDisableInput && (ctx.cpColorMode || 1) === 1);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx.cpDisableInput && (ctx.cpColorMode || 1) === 1);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx.cpDisableInput && (ctx.cpColorMode || 1) === 2);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", !ctx.cpDisableInput && (ctx.cpColorMode || 1) === 1);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", (ctx.cpPresetColors == null ? null : ctx.cpPresetColors.length) || ctx.cpAddColorButton);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.cpOKButton || ctx.cpCancelButton);\n i0.ɵɵadvance();\n i0.ɵɵproperty(\"ngIf\", ctx.cpExtraTemplate);\n }\n },\n dependencies: [i2.NgForOf, i2.NgIf, i2.NgTemplateOutlet, TextDirective, SliderDirective],\n styles: [\".color-picker{position:absolute;z-index:1000;width:230px;height:auto;border:#777 solid 1px;cursor:default;-webkit-user-select:none;user-select:none;background-color:#fff}.color-picker *{box-sizing:border-box;margin:0;font-size:11px}.color-picker input{width:0;height:26px;min-width:0;font-size:13px;text-align:center;color:#000}.color-picker input:invalid,.color-picker input:-moz-ui-invalid,.color-picker input:-moz-submit-invalid{box-shadow:none}.color-picker input::-webkit-inner-spin-button,.color-picker input::-webkit-outer-spin-button{margin:0;-webkit-appearance:none}.color-picker .arrow{position:absolute;z-index:999999;width:0;height:0;border-style:solid}.color-picker .arrow.arrow-top{left:8px;border-width:10px 5px;border-color:#777 rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0)}.color-picker .arrow.arrow-bottom{top:-20px;left:8px;border-width:10px 5px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) #777 rgba(0,0,0,0)}.color-picker .arrow.arrow-top-left,.color-picker .arrow.arrow-left-top{right:-21px;bottom:8px;border-width:5px 10px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0) #777}.color-picker .arrow.arrow-top-right,.color-picker .arrow.arrow-right-top{bottom:8px;left:-20px;border-width:5px 10px;border-color:rgba(0,0,0,0) #777 rgba(0,0,0,0) rgba(0,0,0,0)}.color-picker .arrow.arrow-left,.color-picker .arrow.arrow-left-bottom,.color-picker .arrow.arrow-bottom-left{top:8px;right:-21px;border-width:5px 10px;border-color:rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0) #777}.color-picker .arrow.arrow-right,.color-picker .arrow.arrow-right-bottom,.color-picker .arrow.arrow-bottom-right{top:8px;left:-20px;border-width:5px 10px;border-color:rgba(0,0,0,0) #777 rgba(0,0,0,0) rgba(0,0,0,0)}.color-picker .cursor{position:relative;width:16px;height:16px;border:#222 solid 2px;border-radius:50%;cursor:default}.color-picker .box{display:flex;padding:4px 8px}.color-picker .left{position:relative;padding:16px 8px}.color-picker .right{flex:1 1 auto;padding:12px 8px}.color-picker .button-area{padding:0 16px 16px;text-align:right}.color-picker .button-area button{margin-left:8px}.color-picker .preset-area{padding:4px 15px}.color-picker .preset-area .preset-label{overflow:hidden;width:100%;padding:4px;font-size:11px;white-space:nowrap;text-align:left;text-overflow:ellipsis;color:#555}.color-picker .preset-area .preset-color{position:relative;display:inline-block;width:18px;height:18px;margin:4px 6px 8px;border:#a9a9a9 solid 1px;border-radius:25%;cursor:pointer}.color-picker .preset-area .preset-empty-message{min-height:18px;margin-top:4px;margin-bottom:8px;font-style:italic;text-align:center}.color-picker .hex-text{width:100%;padding:4px 8px;font-size:11px}.color-picker .hex-text .box{padding:0 24px 8px 8px}.color-picker .hex-text .box div{float:left;flex:1 1 auto;text-align:center;color:#555;clear:left}.color-picker .hex-text .box input{flex:1 1 auto;padding:1px;border:#a9a9a9 solid 1px}.color-picker .hex-alpha .box div:first-child,.color-picker .hex-alpha .box input:first-child{flex-grow:3;margin-right:8px}.color-picker .cmyk-text,.color-picker .hsla-text,.color-picker .rgba-text,.color-picker .value-text{width:100%;padding:4px 8px;font-size:11px}.color-picker .cmyk-text .box,.color-picker .hsla-text .box,.color-picker .rgba-text .box{padding:0 24px 8px 8px}.color-picker .value-text .box{padding:0 8px 8px}.color-picker .cmyk-text .box div,.color-picker .hsla-text .box div,.color-picker .rgba-text .box div,.color-picker .value-text .box div{flex:1 1 auto;margin-right:8px;text-align:center;color:#555}.color-picker .cmyk-text .box div:last-child,.color-picker .hsla-text .box div:last-child,.color-picker .rgba-text .box div:last-child,.color-picker .value-text .box div:last-child{margin-right:0}.color-picker .cmyk-text .box input,.color-picker .hsla-text .box input,.color-picker .rgba-text .box input,.color-picker .value-text .box input{float:left;flex:1;padding:1px;margin:0 8px 0 0;border:#a9a9a9 solid 1px}.color-picker .cmyk-text .box input:last-child,.color-picker .hsla-text .box input:last-child,.color-picker .rgba-text .box input:last-child,.color-picker .value-text .box input:last-child{margin-right:0}.color-picker .hue-alpha{align-items:center;margin-bottom:3px}.color-picker .hue{direction:ltr;width:100%;height:16px;margin-bottom:16px;border:none;cursor:pointer;background-size:100% 100%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAAAQCAYAAAD06IYnAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4AIWDwkUFWbCCAAAAFxJREFUaN7t0kEKg0AQAME2x83/n2qu5qCgD1iDhCoYdpnbQC9bbY1qVO/jvc6k3ad91s7/7F1/csgPrujuQ17BDYSFsBAWwgJhISyEBcJCWAgLhIWwEBYIi2f7Ar/1TCgFH2X9AAAAAElFTkSuQmCC)}.color-picker .value{direction:rtl;width:100%;height:16px;margin-bottom:16px;border:none;cursor:pointer;background-size:100% 100%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAAAQCAYAAAD06IYnAAACTklEQVR42u3SYUcrABhA4U2SkmRJMmWSJklKJiWZZpKUJJskKUmaTFImKZOUzMySpGRmliRNJilJSpKSJEtmSpIpmWmSdO736/6D+x7OP3gUCoWCv1cqlSQlJZGcnExKSgqpqamkpaWRnp5ORkYGmZmZqFQqsrKyyM7OJicnh9zcXNRqNXl5eeTn56PRaCgoKKCwsJCioiK0Wi3FxcWUlJRQWlpKWVkZ5eXlVFRUUFlZiU6no6qqiurqampqaqitraWurg69Xk99fT0GgwGj0UhDQwONjY00NTXR3NxMS0sLra2ttLW10d7ejslkwmw209HRQWdnJ11dXXR3d9PT00Nvby99fX309/czMDDA4OAgFouFoaEhrFYrw8PDjIyMMDo6ytjYGDabjfHxcSYmJpicnGRqagq73c709DQzMzPMzs4yNzfH/Pw8DocDp9OJy+XC7XazsLDA4uIiS0tLLC8vs7KywurqKmtra3g8HrxeLz6fD7/fz/r6OhsbG2xubrK1tcX29jaBQICdnR2CwSC7u7vs7e2xv7/PwcEBh4eHHB0dcXx8zMnJCaenp5ydnXF+fs7FxQWXl5dcXV1xfX3Nzc0Nt7e33N3dEQqFuL+/5+HhgXA4TCQS4fHxkaenJ56fn3l5eeH19ZVoNMrb2xvv7+98fHwQi8WIx+N8fn6SSCT4+vri+/ubn58ffn9/+VcKgSWwBJbAElgCS2AJLIElsASWwBJYAktgCSyBJbAElsASWAJLYAksgSWwBJbAElgCS2AJLIElsP4/WH8AmJ5Z6jHS4h8AAAAASUVORK5CYII=)}.color-picker .alpha{direction:ltr;width:100%;height:16px;border:none;cursor:pointer;background-size:100% 100%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAAAQCAYAAAD06IYnAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4AIWDwYQlZMa3gAAAWVJREFUaN7tmEGO6jAQRCsOArHgBpyAJYGjcGocxAm4A2IHpmoWE0eBH+ezmFlNvU06shJ3W6VEelWMUQAIIF9f6qZpimsA1LYtS2uF51/u27YVAFZVRUkEoGHdPV/sIcbIEIIkUdI/9Xa7neyv61+SWFUVAVCSct00TWn2fv6u3+Ecfd3tXzy/0+nEUu+SPjo/kqzrmiQpScN6v98XewfA8/lMkiLJ2WxGSUopcT6fM6U0NX9/frfbjev1WtfrlZfLhYfDQQHG/AIOlnGwjINlHCxjHCzjYJm/TJWdCwquJXseFFzGwDNNeiKMOJTO8xQdDQaeB29+K9efeLaBo9J7vdvtJj1RjFFjfiv7qv95tjx/7leSQgh93e1ffMeIp6O+YQjho/N791t1XVOSSI7N//K+4/GoxWLBx+PB5/Op5XLJ+/3OlJJWqxU3m83ovv5iGf8KjYNlHCxjHCzjYBkHy5gf5gusvQU7U37jTAAAAABJRU5ErkJggg==)}.color-picker .type-policy{position:absolute;top:218px;right:12px;width:16px;height:24px;background-size:8px 16px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAAgCAYAAAAffCjxAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAACewAAAnsB01CO3AAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAIASURBVEiJ7ZY9axRRFIafsxMStrLQJpAgpBFhi+C9w1YSo00I6RZ/g9vZpBf/QOr4GyRgkSKNSrAadsZqQGwCkuAWyRZJsySwvhZ7N/vhzrgbLH3Ld8597jlzz50zJokyxXH8DqDVar0qi6v8BbItqSGpEcfxdlmsFWXkvX8AfAVWg3UKPEnT9GKujMzsAFgZsVaCN1VTQd77XUnrgE1kv+6935268WRpzrnHZvYRWC7YvC3pRZZl3wozqtVqiyH9IgjAspkd1Gq1xUJQtVrdB9ZKIAOthdg/Qc65LUk7wNIMoCVJO865rYFhkqjX6/d7vV4GPJwBMqofURS5JEk6FYBer/eeYb/Mo9WwFnPOvQbeAvfuAAK4BN4sAJtAG/gJIElmNuiJyba3EGNmZiPeZuEVmVell/Y/6N+CzDn3AXhEOOo7Hv/3BeAz8IzQkMPnJbuPx1wC+yYJ7/0nYIP5S/0FHKdp+rwCEEXRS/rf5Hl1Gtb2M0iSpCOpCZzPATmX1EySpHMLAsiy7MjMDoHrGSDXZnaYZdnRwBh7J91utwmczAA6CbG3GgPleX4jqUH/a1CktqRGnuc3hSCAMB32gKspkCtgb3KCQMmkjeP4WNJThrNNZval1WptTIsv7JtQ4tmIdRa8qSoEpWl6YWZNoAN0zKxZNPehpLSBZv2t+Q0CJ9lLnARQLAAAAABJRU5ErkJggg==);background-repeat:no-repeat;background-position:center}.color-picker .type-policy .type-policy-arrow{display:block;width:100%;height:50%}.color-picker .selected-color{position:absolute;top:16px;left:8px;width:40px;height:40px;border:1px solid #a9a9a9;border-radius:50%}.color-picker .selected-color-background{width:40px;height:40px;border-radius:50%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAAh0lEQVRYR+2W0QlAMQgD60zdfwOdqa8TmI/wQMr5K0I5bZLIzLOa2nt37VVVbd+dDx5obgCC3KBLwJ2ff4PnVidkf+ucIhw80HQaCLo3DMH3CRK3iFsmAWVl6hPNDwt8EvNE5q+YuEXcMgkonVM6SdyCoEvAnZ8v1Hjx817MilmxSUB5rdLJDycZgUAZUch/AAAAAElFTkSuQmCC)}.color-picker .saturation-lightness{direction:ltr;width:100%;height:130px;border:none;cursor:pointer;touch-action:manipulation;background-size:100% 100%;background-image:url(data:image/png;base64,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)}.color-picker .cp-add-color-button-class{position:absolute;display:inline;padding:0;margin:3px -3px;border:0;cursor:pointer;background:transparent}.color-picker .cp-add-color-button-class:hover{text-decoration:underline}.color-picker .cp-add-color-button-class:disabled{cursor:not-allowed;color:#999}.color-picker .cp-add-color-button-class:disabled:hover{text-decoration:none}.color-picker .cp-remove-color-button-class{position:absolute;top:-5px;right:-5px;display:block;width:10px;height:10px;border-radius:50%;cursor:pointer;text-align:center;background:#fff;box-shadow:1px 1px 5px #333}.color-picker .cp-remove-color-button-class:before{content:\\\"x\\\";position:relative;bottom:3.5px;display:inline-block;font-size:10px}.color-picker .eyedropper-icon{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);fill:#fff;mix-blend-mode:exclusion}\\n\"],\n encapsulation: 2\n });\n return ColorPickerComponent;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// Caretaker note: we have still left the `typeof` condition in order to avoid\n// creating a breaking change for projects that still use the View Engine.\n// The `ngDevMode` is always available when Ivy is enabled.\n// This will be evaluated during compilation into `const NG_DEV_MODE = false`,\n// thus Terser will be able to tree-shake `console.warn` calls.\nconst NG_DEV_MODE = typeof ngDevMode === 'undefined' || !!ngDevMode;\nlet ColorPickerDirective = /*#__PURE__*/(() => {\n class ColorPickerDirective {\n constructor(injector, cfr, appRef, vcRef, elRef, _service) {\n this.injector = injector;\n this.cfr = cfr;\n this.appRef = appRef;\n this.vcRef = vcRef;\n this.elRef = elRef;\n this._service = _service;\n this.dialogCreated = false;\n this.ignoreChanges = false;\n this.viewAttachedToAppRef = false;\n this.cpWidth = '230px';\n this.cpHeight = 'auto';\n this.cpToggle = false;\n this.cpDisabled = false;\n this.cpIgnoredElements = [];\n this.cpFallbackColor = '';\n this.cpColorMode = 'color';\n this.cpCmykEnabled = false;\n this.cpOutputFormat = 'auto';\n this.cpAlphaChannel = 'enabled';\n this.cpDisableInput = false;\n this.cpDialogDisplay = 'popup';\n this.cpSaveClickOutside = true;\n this.cpCloseClickOutside = true;\n this.cpUseRootViewContainer = false;\n this.cpPosition = 'auto';\n this.cpPositionOffset = '0%';\n this.cpPositionRelativeToArrow = false;\n this.cpOKButton = false;\n this.cpOKButtonText = 'OK';\n this.cpOKButtonClass = 'cp-ok-button-class';\n this.cpCancelButton = false;\n this.cpCancelButtonText = 'Cancel';\n this.cpCancelButtonClass = 'cp-cancel-button-class';\n this.cpEyeDropper = false;\n this.cpPresetLabel = 'Preset colors';\n this.cpPresetColorsClass = 'cp-preset-colors-class';\n this.cpMaxPresetColorsLength = 6;\n this.cpPresetEmptyMessage = 'No colors added';\n this.cpPresetEmptyMessageClass = 'preset-empty-message';\n this.cpAddColorButton = false;\n this.cpAddColorButtonText = 'Add color';\n this.cpAddColorButtonClass = 'cp-add-color-button-class';\n this.cpRemoveColorButtonClass = 'cp-remove-color-button-class';\n this.cpArrowPosition = 0;\n this.cpInputChange = new EventEmitter(true);\n this.cpToggleChange = new EventEmitter(true);\n this.cpSliderChange = new EventEmitter(true);\n this.cpSliderDragEnd = new EventEmitter(true);\n this.cpSliderDragStart = new EventEmitter(true);\n this.colorPickerOpen = new EventEmitter(true);\n this.colorPickerClose = new EventEmitter(true);\n this.colorPickerCancel = new EventEmitter(true);\n this.colorPickerSelect = new EventEmitter(true);\n this.colorPickerChange = new EventEmitter(false);\n this.cpCmykColorChange = new EventEmitter(true);\n this.cpPresetColorsChange = new EventEmitter(true);\n }\n handleClick() {\n this.inputFocus();\n }\n handleFocus() {\n this.inputFocus();\n }\n handleInput(event) {\n this.inputChange(event);\n }\n ngOnDestroy() {\n if (this.cmpRef != null) {\n if (this.viewAttachedToAppRef) {\n this.appRef.detachView(this.cmpRef.hostView);\n }\n this.cmpRef.destroy();\n this.cmpRef = null;\n this.dialog = null;\n }\n }\n ngOnChanges(changes) {\n if (changes.cpToggle && !this.cpDisabled) {\n if (changes.cpToggle.currentValue) {\n this.openDialog();\n } else if (!changes.cpToggle.currentValue) {\n this.closeDialog();\n }\n }\n if (changes.colorPicker) {\n if (this.dialog && !this.ignoreChanges) {\n if (this.cpDialogDisplay === 'inline') {\n this.dialog.setInitialColor(changes.colorPicker.currentValue);\n }\n this.dialog.setColorFromString(changes.colorPicker.currentValue, false);\n if (this.cpUseRootViewContainer && this.cpDialogDisplay !== 'inline') {\n this.cmpRef.changeDetectorRef.detectChanges();\n }\n }\n this.ignoreChanges = false;\n }\n if (changes.cpPresetLabel || changes.cpPresetColors) {\n if (this.dialog) {\n this.dialog.setPresetConfig(this.cpPresetLabel, this.cpPresetColors);\n }\n }\n }\n openDialog() {\n if (!this.dialogCreated) {\n let vcRef = this.vcRef;\n this.dialogCreated = true;\n this.viewAttachedToAppRef = false;\n if (this.cpUseRootViewContainer && this.cpDialogDisplay !== 'inline') {\n const classOfRootComponent = this.appRef.componentTypes[0];\n const appInstance = this.injector.get(classOfRootComponent, Injector.NULL);\n if (appInstance !== Injector.NULL) {\n vcRef = appInstance.vcRef || appInstance.viewContainerRef || this.vcRef;\n if (NG_DEV_MODE && vcRef === this.vcRef) {\n console.warn('You are using cpUseRootViewContainer, ' + 'but the root component is not exposing viewContainerRef!' + 'Please expose it by adding \\'public vcRef: ViewContainerRef\\' to the constructor.');\n }\n } else {\n this.viewAttachedToAppRef = true;\n }\n }\n const compFactory = this.cfr.resolveComponentFactory(ColorPickerComponent);\n if (this.viewAttachedToAppRef) {\n this.cmpRef = compFactory.create(this.injector);\n this.appRef.attachView(this.cmpRef.hostView);\n document.body.appendChild(this.cmpRef.hostView.rootNodes[0]);\n } else {\n const injector = Injector.create({\n providers: [],\n // We shouldn't use `vcRef.parentInjector` since it's been deprecated long time ago and might be removed\n // in newer Angular versions: https://github.com/angular/angular/pull/25174.\n parent: vcRef.injector\n });\n this.cmpRef = vcRef.createComponent(compFactory, 0, injector, []);\n }\n this.cmpRef.instance.setupDialog(this, this.elRef, this.colorPicker, this.cpWidth, this.cpHeight, this.cpDialogDisplay, this.cpFallbackColor, this.cpColorMode, this.cpCmykEnabled, this.cpAlphaChannel, this.cpOutputFormat, this.cpDisableInput, this.cpIgnoredElements, this.cpSaveClickOutside, this.cpCloseClickOutside, this.cpUseRootViewContainer, this.cpPosition, this.cpPositionOffset, this.cpPositionRelativeToArrow, this.cpPresetLabel, this.cpPresetColors, this.cpPresetColorsClass, this.cpMaxPresetColorsLength, this.cpPresetEmptyMessage, this.cpPresetEmptyMessageClass, this.cpOKButton, this.cpOKButtonClass, this.cpOKButtonText, this.cpCancelButton, this.cpCancelButtonClass, this.cpCancelButtonText, this.cpAddColorButton, this.cpAddColorButtonClass, this.cpAddColorButtonText, this.cpRemoveColorButtonClass, this.cpEyeDropper, this.elRef, this.cpExtraTemplate);\n this.dialog = this.cmpRef.instance;\n if (this.vcRef !== vcRef) {\n this.cmpRef.changeDetectorRef.detectChanges();\n }\n } else if (this.dialog) {\n this.dialog.openDialog(this.colorPicker);\n }\n }\n closeDialog() {\n if (this.dialog && this.cpDialogDisplay === 'popup') {\n this.dialog.closeDialog();\n }\n }\n cmykChanged(value) {\n this.cpCmykColorChange.emit(value);\n }\n stateChanged(state) {\n this.cpToggleChange.emit(state);\n if (state) {\n this.colorPickerOpen.emit(this.colorPicker);\n } else {\n this.colorPickerClose.emit(this.colorPicker);\n }\n }\n colorChanged(value, ignore = true) {\n this.ignoreChanges = ignore;\n this.colorPickerChange.emit(value);\n }\n colorSelected(value) {\n this.colorPickerSelect.emit(value);\n }\n colorCanceled() {\n this.colorPickerCancel.emit();\n }\n inputFocus() {\n const element = this.elRef.nativeElement;\n const ignored = this.cpIgnoredElements.filter(item => item === element);\n if (!this.cpDisabled && !ignored.length) {\n if (typeof document !== 'undefined' && element === document.activeElement) {\n this.openDialog();\n } else if (!this.dialog || !this.dialog.show) {\n this.openDialog();\n } else {\n this.closeDialog();\n }\n }\n }\n inputChange(event) {\n if (this.dialog) {\n this.dialog.setColorFromString(event.target.value, true);\n } else {\n this.colorPicker = event.target.value;\n this.colorPickerChange.emit(this.colorPicker);\n }\n }\n inputChanged(event) {\n this.cpInputChange.emit(event);\n }\n sliderChanged(event) {\n this.cpSliderChange.emit(event);\n }\n sliderDragEnd(event) {\n this.cpSliderDragEnd.emit(event);\n }\n sliderDragStart(event) {\n this.cpSliderDragStart.emit(event);\n }\n presetColorsChanged(value) {\n this.cpPresetColorsChange.emit(value);\n }\n }\n ColorPickerDirective.ɵfac = function ColorPickerDirective_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ColorPickerDirective)(i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject(i0.ComponentFactoryResolver), i0.ɵɵdirectiveInject(i0.ApplicationRef), i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(ColorPickerService));\n };\n ColorPickerDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: ColorPickerDirective,\n selectors: [[\"\", \"colorPicker\", \"\"]],\n hostBindings: function ColorPickerDirective_HostBindings(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵlistener(\"click\", function ColorPickerDirective_click_HostBindingHandler() {\n return ctx.handleClick();\n })(\"focus\", function ColorPickerDirective_focus_HostBindingHandler() {\n return ctx.handleFocus();\n })(\"input\", function ColorPickerDirective_input_HostBindingHandler($event) {\n return ctx.handleInput($event);\n });\n }\n },\n inputs: {\n colorPicker: \"colorPicker\",\n cpWidth: \"cpWidth\",\n cpHeight: \"cpHeight\",\n cpToggle: \"cpToggle\",\n cpDisabled: \"cpDisabled\",\n cpIgnoredElements: \"cpIgnoredElements\",\n cpFallbackColor: \"cpFallbackColor\",\n cpColorMode: \"cpColorMode\",\n cpCmykEnabled: \"cpCmykEnabled\",\n cpOutputFormat: \"cpOutputFormat\",\n cpAlphaChannel: \"cpAlphaChannel\",\n cpDisableInput: \"cpDisableInput\",\n cpDialogDisplay: \"cpDialogDisplay\",\n cpSaveClickOutside: \"cpSaveClickOutside\",\n cpCloseClickOutside: \"cpCloseClickOutside\",\n cpUseRootViewContainer: \"cpUseRootViewContainer\",\n cpPosition: \"cpPosition\",\n cpPositionOffset: \"cpPositionOffset\",\n cpPositionRelativeToArrow: \"cpPositionRelativeToArrow\",\n cpOKButton: \"cpOKButton\",\n cpOKButtonText: \"cpOKButtonText\",\n cpOKButtonClass: \"cpOKButtonClass\",\n cpCancelButton: \"cpCancelButton\",\n cpCancelButtonText: \"cpCancelButtonText\",\n cpCancelButtonClass: \"cpCancelButtonClass\",\n cpEyeDropper: \"cpEyeDropper\",\n cpPresetLabel: \"cpPresetLabel\",\n cpPresetColors: \"cpPresetColors\",\n cpPresetColorsClass: \"cpPresetColorsClass\",\n cpMaxPresetColorsLength: \"cpMaxPresetColorsLength\",\n cpPresetEmptyMessage: \"cpPresetEmptyMessage\",\n cpPresetEmptyMessageClass: \"cpPresetEmptyMessageClass\",\n cpAddColorButton: \"cpAddColorButton\",\n cpAddColorButtonText: \"cpAddColorButtonText\",\n cpAddColorButtonClass: \"cpAddColorButtonClass\",\n cpRemoveColorButtonClass: \"cpRemoveColorButtonClass\",\n cpArrowPosition: \"cpArrowPosition\",\n cpExtraTemplate: \"cpExtraTemplate\"\n },\n outputs: {\n cpInputChange: \"cpInputChange\",\n cpToggleChange: \"cpToggleChange\",\n cpSliderChange: \"cpSliderChange\",\n cpSliderDragEnd: \"cpSliderDragEnd\",\n cpSliderDragStart: \"cpSliderDragStart\",\n colorPickerOpen: \"colorPickerOpen\",\n colorPickerClose: \"colorPickerClose\",\n colorPickerCancel: \"colorPickerCancel\",\n colorPickerSelect: \"colorPickerSelect\",\n colorPickerChange: \"colorPickerChange\",\n cpCmykColorChange: \"cpCmykColorChange\",\n cpPresetColorsChange: \"cpPresetColorsChange\"\n },\n exportAs: [\"ngxColorPicker\"],\n standalone: false,\n features: [i0.ɵɵNgOnChangesFeature]\n });\n return ColorPickerDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet ColorPickerModule = /*#__PURE__*/(() => {\n class ColorPickerModule {}\n ColorPickerModule.ɵfac = function ColorPickerModule_Factory(__ngFactoryType__) {\n return new (__ngFactoryType__ || ColorPickerModule)();\n };\n ColorPickerModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: ColorPickerModule\n });\n ColorPickerModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n providers: [ColorPickerService],\n imports: [CommonModule]\n });\n return ColorPickerModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { Cmyk, ColorPickerComponent, ColorPickerDirective, ColorPickerModule, ColorPickerService, Hsla, Hsva, Rgba, SliderDirective, TextDirective };\n","import { CommonModule } from '@angular/common';\nimport { Component, inject, Input } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatIconModule } from '@angular/material/icon';\nimport { Router, RouterModule } from '@angular/router';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { GalaxyBadgeModule } from '@vendasta/galaxy/badge';\nimport { GalaxySnackbarModule } from '@vendasta/galaxy/snackbar-service';\nimport { ConnectionResponse, ConnectionStatus, IntegrationMarketingResponse } from '@vendasta/platform-integrations';\nimport { User } from '@vendasta/iamv2';\nimport { PlatformIntegrationsI18nModule } from '@galaxy/platform-integrations/shared';\nimport { GalaxyAvatarModule } from '@vendasta/galaxy/avatar';\nimport { GalaxyPipesModule } from '@vendasta/galaxy/pipes';\nimport { UserAction } from '../const';\n\n@Component({\n selector: 'platform-integration-card',\n templateUrl: './integration-card.component.html',\n styleUrls: ['./integration-card.component.scss'],\n imports: [\n CommonModule,\n GalaxySnackbarModule,\n GalaxyBadgeModule,\n TranslateModule,\n MatCardModule,\n MatButtonModule,\n MatIconModule,\n PlatformIntegrationsI18nModule,\n RouterModule,\n GalaxyAvatarModule,\n GalaxyPipesModule,\n ],\n})\nexport class IntegrationCardComponent {\n @Input() tab: UserAction = UserAction.BROWSE;\n @Input() integration?: IntegrationMarketingResponse;\n @Input() connection?: ConnectionResponse;\n @Input() user?: User;\n private readonly router = inject(Router);\n protected readonly connectionStatus = ConnectionStatus;\n protected readonly userAction = UserAction;\n\n //Used to get path of URL to make it generic for Both PC and BusinessApp\n // Example, if URL is https://vendasta-university-dot-vbc-demo.appspot.com/account/location/AG-JP5VN52N7P/settings/integrations\n // we extract only account/location/AG-JP5VN52N7P/settings , which used to redirect.\n getCurrentPath(): string {\n let path = window.location.pathname;\n const lastIndex = path.indexOf('/integrations');\n path = path.substring(0, lastIndex);\n return path;\n }\n\n handleImageError(event: Event) {\n const element = event.target as HTMLInputElement;\n element.src = 'data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==';\n element.style.backgroundColor = '#9e9e9e';\n }\n\n getProfileImageUrl(connection?: ConnectionResponse) {\n return connection?.customFields?.find((field) => field.label === 'profileImageURL')?.value;\n }\n\n getStatusLastUpdatedDate(): Date | string | number {\n return this.connection?.statusLastUpdated ? new Date(this.connection.statusLastUpdated) : '';\n }\n\n redirect() {\n switch (this.tab) {\n case UserAction.BROWSE:\n this.openMarketingPage();\n break;\n case UserAction.MANAGE:\n this.openConfigPage();\n break;\n default:\n this.openMarketingPage();\n }\n }\n\n openMarketingPage() {\n const url = this.getCurrentPath() + '/integrations/' + this.integration?.integrationId;\n this.router.navigate([url]);\n }\n\n openConfigPage() {\n const url = this.getCurrentPath() + '/integrations/config/' + this.connection?.connectionId;\n this.router.navigate([url]);\n }\n}\n","\n \n
\n
\n \"avatar\"\n
\n {{ integration.displayName }}\n
\n \n {{ connection?.status === connectionStatus.DISCONNECTED ? 'warning' : 'info' }}\n \n check_circle \n
\n
\n
\n \n {{ integration.description }}\n \n \n
\n \n \n \n {{ user?.firstName + ' ' + user?.lastName }}\n \n\n \n \n {{\n connection?.label ||\n (user\n ? user?.firstName + ' ' + user?.lastName\n : connection?.statusLastUpdated\n ? ('INTEGRATION_CARD.CONNECTED_DATE' | translate: { date: (getStatusLastUpdatedDate() | glxyDate) })\n : '')\n }}\n \n \n
\n
\n\n","// Define the legacy integration types\nexport enum LegacyIntegrationType {\n FACEBOOK = 'facebook',\n GOOGLEPLUS = 'googleplus',\n GOOGLEMEET = 'GoogleMeet',\n ZOOMMEET = 'ZoomMeet',\n QUICKBOOKS = 'quickbooks',\n INSTAGRAM = 'instagram',\n}\n\n// Use the IntegrationType union to define the keys of the SocialConnectionLinks interface\nexport type SocialConnectionLinks = {\n [key in LegacyIntegrationType]: string;\n};\n","import { Environment, EnvironmentService } from '@galaxy/core';\nimport { inject, Injectable } from '@angular/core';\nimport { IntegrationType } from '../model/connection-integration-detail';\nimport { LegacyIntegrationType } from '../model/social-connections.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LegacyDomainService {\n private readonly environment = inject(EnvironmentService);\n\n // Below is legacy logic of building the google based product's auth endpoint\n //https://github.com/vendasta/galaxy/blob/2a06a62a0b79deab019117005f7c886b0e4b89ad/apps/business-center-client/src/app/social-connections/social-connections.service.ts#L391-L405\n buildGoogleAuthUrl(\n partnerId: string,\n accountGroupId: string,\n productType: string,\n nextUrl: URL,\n returnURL: string,\n ): string {\n // Determine if the first query parameter needs an '&' or a '?'\n const queryParamCharacter = nextUrl.search ? '&' : '?';\n\n // Replace AG-xxxx with the actual accountGroupId in the URL path\n const newUrl = nextUrl.href.replace(/\\/AG-\\w+/g, `/${accountGroupId}`);\n\n // Encode the return URL\n const returnUrl = encodeURIComponent(newUrl + queryParamCharacter + `type=${productType}&message=VBC`);\n\n // Construct the base URI for Google Search Console authentication\n let baseUri: string;\n if (productType === 'google-search-console') {\n baseUri = this.googleSearchConsoleHost() + '/oauth/v1/auth-user';\n } else if (productType === 'google-analyticsGA4') {\n baseUri = this.googleAnalyticsHost() + '/oauth/v1/auth-user';\n } else {\n throw new Error(`Unsupported productType: ${productType}`);\n }\n\n // Encode URI parameters\n const uriEncodedParams = `partner_id=${partnerId}&business_id=${accountGroupId}&return_url=${returnUrl}`;\n\n if (returnURL) {\n const encodedReturnUrl = encodeURIComponent(\n `${newUrl}${queryParamCharacter}type=${productType}&message=VBC&returnUrl=${returnURL}`,\n );\n return `${baseUri}?partner_id=${partnerId}&business_id=${accountGroupId}&return_url=${encodedReturnUrl}`;\n }\n\n // Construct and return the final URL\n return `${baseUri}?${uriEncodedParams}`;\n }\n\n private googleSearchConsoleHost(): string {\n switch (this.environment.getEnvironment()) {\n case Environment.LOCAL:\n return 'http://localhost:11001';\n case Environment.DEMO:\n return 'https://google-search-console-demo.apigateway.co';\n case Environment.PROD:\n return 'https://google-search-console-prod.apigateway.co';\n }\n return 'https://google-search-console-demo.apigateway.co';\n }\n\n private googleAnalyticsHost(): string {\n switch (this.environment.getEnvironment()) {\n case Environment.LOCAL:\n return 'http://localhost:11001';\n case Environment.DEMO:\n return 'https://google-analytics-api-demo.apigateway.co';\n case Environment.PROD:\n return 'https://google-analytics-api-prod.apigateway.co';\n }\n return 'https://google-analytics-api-demo.apigateway.co';\n }\n\n getLegacyIntegrationType(integrationType: IntegrationType): LegacyIntegrationType {\n switch (integrationType) {\n case IntegrationType.GOOGLEMYBUSINESS:\n case IntegrationType.GOOGLESEARCHCONSOLE:\n case IntegrationType.GOOGLEANALYTICS:\n return LegacyIntegrationType.GOOGLEPLUS;\n case IntegrationType.FACEBOOK:\n return LegacyIntegrationType.FACEBOOK;\n case IntegrationType.GOOGLEMEET:\n return LegacyIntegrationType.GOOGLEMEET;\n case IntegrationType.ZOOMMEET:\n return LegacyIntegrationType.ZOOMMEET;\n case IntegrationType.QUICKBOOKSONLINEPERSONAL:\n return LegacyIntegrationType.QUICKBOOKS;\n case IntegrationType.INSTAGRAM:\n return LegacyIntegrationType.INSTAGRAM;\n default:\n throw new Error('Unsupported integration type');\n }\n }\n\n getLegacyTypeAsDisplayName(integrationType: IntegrationType) {\n switch (integrationType) {\n case IntegrationType.GOOGLEMYBUSINESS:\n return 'Google My Business';\n case IntegrationType.FACEBOOK:\n return IntegrationType.FACEBOOK;\n default:\n throw new Error('Unsupported integration type');\n }\n }\n}\n","import { Inject, inject, Injectable } from '@angular/core';\nimport { QuickBooksService } from '@vendasta/quickbooks';\nimport { map, Observable, of, switchMap } from 'rxjs';\nimport { IntegrationType } from './model/connection-integration-detail';\nimport { MeetingSource } from '@vendasta/meetings';\nimport { CardDataService } from './card-data.service';\nimport {\n PLATFORM_INTEGRATIONS_NAMESPACE_INJECTION_TOKEN$,\n PLATFORM_INTEGRATIONS_PARTNER_ID_INJECTION_TOKEN$,\n} from '@galaxy/platform-integrations/shared';\nimport { SSOService } from '@vendasta/sso';\nimport { LegacyIntegrationType, SocialConnectionLinks } from './model/social-connections.interface';\nimport { HttpClient } from '@angular/common/http';\nimport { AccountGroupApiService } from '@vendasta/account-group';\nimport { LegacyDomainService } from './common/legacy-domain.service';\nimport { IntegrationConnectionsDetail } from './model/Integration-connections-detail';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { EnvironmentService } from '@galaxy/core';\nimport { DOCUMENT } from '@angular/common';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LegacyAuthService {\n private readonly quickBooksService = inject(QuickBooksService);\n private readonly cardService = inject(CardDataService);\n private readonly ssoService = inject(SSOService);\n private readonly httpClient = inject(HttpClient);\n private readonly accountGroupApiService = inject(AccountGroupApiService);\n private readonly legacyDomainService = inject(LegacyDomainService);\n private readonly userID = toSignal(this.userId$);\n private readonly partnerID = toSignal(this.partnerId$);\n private readonly environmentService = inject(EnvironmentService);\n\n constructor(\n @Inject(PLATFORM_INTEGRATIONS_NAMESPACE_INJECTION_TOKEN$) public readonly namespace$: Observable,\n @Inject(PLATFORM_INTEGRATIONS_PARTNER_ID_INJECTION_TOKEN$) public readonly partnerId$: Observable,\n @Inject('USER_ID') private userId$: Observable,\n @Inject(DOCUMENT) private document: Document,\n ) {}\n\n getAuthUrlByIntegrationType(\n accountGroupId: string,\n integrationType: LegacyIntegrationType,\n productType?: string,\n ): Observable {\n const domain = this.document.location.origin;\n console.log(domain);\n const nextUrl = new URL(`/account/location/${accountGroupId}/settings/connections`, domain);\n\n const url = this.document.location.href;\n const urlParams = new URLSearchParams(new URL(url).search);\n const returnUrl = urlParams.get('returnUrl');\n\n return this.accountGroupApiService\n .getMulti({\n accountGroupIds: [accountGroupId],\n projectionFilter: { accountGroupExternalIdentifiers: true },\n })\n .pipe(\n map((response) => response.accountGroups[0]?.accountGroup?.accountGroupExternalIdentifiers?.partnerId),\n switchMap((partnerId) => {\n return this.httpClient\n .get<{ data: SocialConnectionLinks }>('/ajax/v1/get-auth-urls/', {\n params: {\n accountGroupId,\n nextUrl: nextUrl.href,\n },\n })\n .pipe(\n map((response) => {\n const serviceAuthURL = response.data[integrationType];\n if (productType === IntegrationType.GOOGLEMYBUSINESS || productType === IntegrationType.FACEBOOK) {\n const typeAsDisplayName = this.legacyDomainService.getLegacyTypeAsDisplayName(productType);\n const url = new URL(serviceAuthURL);\n const nextUrl1 = new URLSearchParams(url.search).get('nextUrl');\n if (nextUrl1 !== null) {\n const nextUrl1Params = new URL(nextUrl1);\n nextUrl1Params.searchParams.set('type', typeAsDisplayName);\n url.searchParams.set('nextUrl', nextUrl1Params.toString());\n }\n return url.toString();\n } else if (productType === IntegrationType.GOOGLESEARCHCONSOLE) {\n return this.legacyDomainService.buildGoogleAuthUrl(\n partnerId,\n accountGroupId,\n 'google-search-console',\n nextUrl,\n returnUrl,\n );\n } else if (productType === IntegrationType.GOOGLEANALYTICS) {\n return this.legacyDomainService.buildGoogleAuthUrl(\n partnerId,\n accountGroupId,\n 'google-analyticsGA4',\n nextUrl,\n returnUrl,\n );\n }\n\n return serviceAuthURL;\n }),\n );\n }),\n );\n }\n\n getAuthUrlForMeetings(integrationType: IntegrationType): Observable {\n return this.cardService.listMeetConnection().pipe(\n map((data) => {\n const source = data.sourceInfo.find((source) => {\n return (\n (integrationType === IntegrationType.ZOOMMEET && source.source === MeetingSource.MEETING_SOURCE_ZOOM) ||\n (integrationType === IntegrationType.GOOGLEMEET &&\n source.source === MeetingSource.MEETING_SOURCE_GOOGLE_MEET)\n );\n });\n return source ? source.connectDisconnectUrl : '';\n }),\n );\n }\n\n getAuthUrlForQuickbooksPersonal(agID: string, userID: string): Observable {\n return this.quickBooksService.getAuthorizationCodeRedirectUrl(agID, userID);\n }\n\n getAuthUrlForInstagram(partnerId: string, agID: string): Observable {\n const env = this.environmentService.getEnvironmentString();\n const baseUrl = `${window.location.protocol}//${window.location.host}`;\n const nextURL = `${baseUrl}/account/location/${agID}/settings/connections`;\n const instaAuthUrl =\n `https://instagram-${env}.apigateway.co/v2/auth-user` +\n `?partnerID=${partnerId}` +\n `&businessID=${agID}` +\n `&nextURL=${encodeURIComponent(nextURL)}`;\n return of(instaAuthUrl);\n }\n\n HandleLegacyIntegration(data: { cardDetail: IntegrationConnectionsDetail; namespace: string }) {\n const integrationType = data.cardDetail.integration?.integrationType as IntegrationType;\n const legacyIntegrationType = this.legacyDomainService.getLegacyIntegrationType(\n integrationType,\n ) as LegacyIntegrationType;\n if (\n integrationType === IntegrationType.GOOGLEMYBUSINESS ||\n integrationType === IntegrationType.FACEBOOK ||\n integrationType === IntegrationType.GOOGLESEARCHCONSOLE ||\n integrationType === IntegrationType.GOOGLEANALYTICS\n ) {\n this.getAuthUrlByIntegrationType(data.namespace, legacyIntegrationType, integrationType).subscribe((finalUrl) => {\n window.location.href = finalUrl;\n });\n } else if (integrationType === IntegrationType.GOOGLEMEET || integrationType === IntegrationType.ZOOMMEET) {\n this.getAuthUrlForMeetings(integrationType).subscribe((finalUrl) => {\n window.location.href = finalUrl;\n });\n } else if (integrationType === IntegrationType.QUICKBOOKSONLINEPERSONAL) {\n this.getAuthUrlForQuickbooksPersonal(data.namespace, this.userID() ?? '').subscribe((finalUrl) => {\n window.location.href = finalUrl;\n });\n } else if (integrationType === IntegrationType.INSTAGRAM) {\n this.getAuthUrlForInstagram(this.partnerID(), data.namespace).subscribe((finalUrl) => {\n window.location.href = finalUrl;\n });\n }\n }\n}\n","import { Inject, Pipe, PipeTransform } from '@angular/core';\nimport { IntegrationConnectionsDetail } from '../model/Integration-connections-detail';\nimport { ButtonConfigModel } from './marketing-page.component';\nimport { ConnectionMethods, ConnectionStatus, SupportedContexts } from '@vendasta/platform-integrations';\nimport { IntegrationType } from '../model/connection-integration-detail';\nimport { PLATFORM_INTEGRATIONS_CONTEXT_INJECTION_TOKEN$ } from '@galaxy/platform-integrations/shared';\n\n@Pipe({\n name: 'buttonConfigPipe',\n standalone: true,\n})\nexport class ButtonConfigPipe implements PipeTransform {\n constructor(\n @Inject(PLATFORM_INTEGRATIONS_CONTEXT_INJECTION_TOKEN$)\n public readonly context: SupportedContexts,\n ) {}\n\n transform(data: {\n cardDetail: IntegrationConnectionsDetail;\n namespace: string;\n integrationId: string;\n isSMB: boolean;\n isImpersonatedUser: boolean;\n }): ButtonConfigModel[] {\n const buttonConfigs = [];\n const addButtonConfig = (title, buttonType, color, action = '', isdisabled = false, toolTipMessage = '') => {\n buttonConfigs.push({\n title: title,\n buttonType: buttonType,\n color: color,\n action: action,\n isDisabled: isdisabled,\n toolTipMessage: toolTipMessage,\n });\n };\n\n const connectionMethod = data.cardDetail.integration.connectionMethod;\n const maxConnections = data.cardDetail.integration.maxConnections;\n const connectionStatus = data.cardDetail.connections[0]?.status;\n const integrationType = data.cardDetail.integration.integrationType.toLowerCase();\n\n //special case\n if (data.cardDetail.integration.integrationType.toLowerCase() === IntegrationType.ZAPIER.toLowerCase()) {\n addButtonConfig('INTEGRATION_CARD.CONNECT_ZAPIER', 'raised', 'primary');\n return buttonConfigs;\n }\n\n if (data.cardDetail.connections.length >= maxConnections && connectionStatus !== ConnectionStatus.PRECONNECTED) {\n addButtonConfig('INTEGRATION_CARD.MANAGE_CONNECTION', 'raised', 'primary');\n } else if (connectionMethod == ConnectionMethods.OAUTH2) {\n if (connectionStatus == ConnectionStatus.PRECONNECTED) {\n addButtonConfig('INTEGRATION_CARD.CANCEL', 'stroked', 'basic', 'CANCEL');\n addButtonConfig('INTEGRATION_CARD.RESUME_CONNECTION', 'raised', 'primary', 'RESUME');\n } else {\n addButtonConfig('INTEGRATION_CARD.ADD_CONNECTION', 'raised', 'primary');\n }\n } else if (connectionMethod == ConnectionMethods.VENDOR_MANAGED) {\n if (connectionStatus == ConnectionStatus.PRECONNECTED) {\n addButtonConfig('INTEGRATION_CARD.CANCEL_CONNECTION_REQUEST', 'stroked', 'warn');\n } else {\n addButtonConfig('INTEGRATION_CARD.REQUEST_CONNECTION', 'raised', 'primary');\n }\n } else if (connectionMethod == ConnectionMethods.APIKEY) {\n if (connectionStatus == ConnectionStatus.PRECONNECTED) {\n addButtonConfig('INTEGRATION_CARD.DISCONNECT', 'stroked', 'warn', 'CANCEL');\n } else {\n addButtonConfig('INTEGRATION_CARD.CONNECT', 'raised', 'primary');\n }\n } else if (connectionMethod == ConnectionMethods.LEGACY_OAUTH) {\n addButtonConfig('INTEGRATION_CARD.ADD_CONNECTION', 'raised', 'primary');\n }\n\n const isQuickBooksRestricted =\n integrationType === IntegrationType.QUICKBOOKSONLINEPERSONAL.toLowerCase() &&\n !data.isSMB &&\n this.context === SupportedContexts.PI_CONTEXT_SMB;\n\n const isMeetRestricted =\n [IntegrationType.GOOGLEMEET.toLowerCase(), IntegrationType.ZOOMMEET.toLowerCase()].includes(integrationType) &&\n data.isImpersonatedUser;\n\n for (const button of buttonConfigs) {\n if (isQuickBooksRestricted) {\n button.isDisabled = true;\n button.toolTipMessage = 'INTEGRATION_CARD.SMB_USERS_ONLY_CONNECTION_TOOLTIP';\n } else if (isMeetRestricted) {\n button.isDisabled = true;\n button.toolTipMessage = 'INTEGRATION_CARD.IMPERSONATE_USERS_CANNOT_CONNECT_TOOLTIP';\n }\n }\n\n return buttonConfigs;\n }\n}\n","import { Component, Input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { ButtonConfigModel } from '../marketing-page.component';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n selector: 'platform-integration-button-template',\n imports: [CommonModule, MatButtonModule, TranslateModule],\n templateUrl: './button-template.component.html',\n styleUrl: './button-template.component.scss',\n})\nexport class ButtonTemplateComponent {\n @Input() buttonModel?: ButtonConfigModel;\n}\n","\n {{ buttonModel.title | translate }}\n\n\n {{ buttonModel.title | translate }}\n\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { ResourceInfo } from '@vendasta/platform-integrations';\n\n@Component({\n selector: 'platform-integration-resources',\n imports: [MatIconModule, CommonModule],\n templateUrl: './resources.component.html',\n styleUrls: ['./resources.component.scss'],\n})\nexport class ResourcesComponent {\n @Input() resources!: ResourceInfo[];\n}\n","\n","import { Component, Input } from '@angular/core';\n\nimport { FieldConfig } from '@vendasta/platform-integrations';\n\n@Component({\n selector: 'platform-integration-works-with',\n imports: [],\n templateUrl: './works-with.component.html',\n styleUrl: './works-with.component.scss',\n})\nexport class WorksWithComponent {\n @Input() worksWithData: FieldConfig[] = [];\n}\n","
Works with
\n@for (field of worksWithData; track $index) {\n
{{ field?.label }}
\n
{{ field.defaultValue }}
\n}\n","import { Component, Inject } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\nimport {\n PLATFORM_INTEGRATIONS_NAMESPACE_INJECTION_TOKEN$,\n PlatformIntegrationsI18nModule,\n} from '@galaxy/platform-integrations/shared';\nimport { GalaxyEmptyStateModule } from '@vendasta/galaxy/empty-state';\nimport { MatAnchor } from '@angular/material/button';\nimport { RouterLink } from '@angular/router';\nimport { map, Observable } from 'rxjs';\n\n@Component({\n selector: 'platform-integration-not-found',\n imports: [\n CommonModule,\n PlatformIntegrationsI18nModule,\n TranslateModule,\n GalaxyEmptyStateModule,\n MatAnchor,\n RouterLink,\n ],\n templateUrl: './not-found.html',\n styleUrl: './not-found.scss',\n})\nexport class NotFoundComponent {\n protected routeLink$ = this.namespace$.pipe(\n map((namespace) => {\n return `/account/location/${namespace}/administration/integrations`;\n }),\n );\n\n constructor(\n @Inject(PLATFORM_INTEGRATIONS_NAMESPACE_INJECTION_TOKEN$) public readonly namespace$: Observable,\n ) {}\n}\n","\n \n
\n {{ 'COMMON.PAGE_NOT_FOUND' | translate }} \n
\n

{{ 'COMMON.INTEGRATION_NOT_EXIST' | translate }}

\n \n \n
\n {{ 'COMMON.BACK_TO_INTEGRATIONS' | translate }}\n \n \n \n\n","import { CommonModule, Location as LocationService } from '@angular/common';\nimport { Component, Inject, inject, ViewEncapsulation, DestroyRef } from '@angular/core';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { Environment, EnvironmentService, SessionService } from '@galaxy/core';\nimport {\n PLATFORM_INTEGRATIONS_CONTEXT_INJECTION_TOKEN$,\n PLATFORM_INTEGRATIONS_MARKET_ID_INJECTION_TOKEN$,\n PLATFORM_INTEGRATIONS_NAMESPACE_INJECTION_TOKEN$,\n PLATFORM_INTEGRATIONS_PARTNER_ID_INJECTION_TOKEN$,\n PlatformIntegrationsI18nModule,\n} from '@galaxy/platform-integrations/shared';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { GalaxyAlertModule } from '@vendasta/galaxy/alert';\nimport { GalaxyBadgeModule } from '@vendasta/galaxy/badge';\nimport { OpenConfirmationModalService } from '@vendasta/galaxy/confirmation-modal';\nimport { GalaxyPageModule } from '@vendasta/galaxy/page';\nimport { GalaxyPipesModule } from '@vendasta/galaxy/pipes';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { User } from '@vendasta/iamv2';\nimport {\n ConnectionMethods,\n ConnectionStatus,\n CreateConnectionResponse,\n FieldConfig,\n FieldType,\n SupportedContexts,\n} from '@vendasta/platform-integrations';\nimport { ColorPickerModule } from 'ngx-color-picker';\nimport { BehaviorSubject, combineLatest, EMPTY, filter, map, Observable, of, switchMap, tap } from 'rxjs';\nimport { catchError, take } from 'rxjs/operators';\nimport { CardDataService } from '../card-data.service';\nimport { IntegrationUtilService } from '../common/integration-util.service';\nimport { DynamicFormComponent } from '../connection-config/components/dynamic-form/dynamic-form.component';\nimport { IntegrationCardComponent } from '../integration-card/integration-card.component';\nimport { LegacyAuthService } from '../legacy-auth.service';\nimport { ConnectionIntegrationDetail, CustomField, IntegrationType } from '../model/connection-integration-detail';\nimport { IntegrationConnectionsDetail } from '../model/Integration-connections-detail';\nimport { ButtonConfigPipe } from './button-config-pipe';\nimport { ButtonTemplateComponent } from './button-template/button-template.component';\nimport { GalaxyLoadingSpinnerModule } from '@vendasta/galaxy/loading-spinner';\nimport { App } from '@vendasta/marketplace-apps';\nimport { ResourcesComponent } from '../config-page/resources/resources.component';\nimport { GalaxyTooltipModule } from '@vendasta/galaxy/tooltip';\nimport { IAMService, PersonaType } from '@vendasta/iam';\nimport { WorksWithComponent } from './works-with/works-with.component';\nimport { UserAction } from '../const';\nimport { NotFoundComponent } from '../common/not-found/not-found';\n\nconst ZAPIER_BUSINESS_APP = 'https://zapier.com/apps/business-app/integrations';\nconst ZAPIER_PARTNER_APP = 'https://zapier.com/apps/vendasta/integrations';\nconst ZAPIER_DEMO_APP = 'https://zapier.com/developer/public-invite/192324/6793394683cc25ed38ca80f93c530f71/';\n\nexport interface ButtonConfigModel {\n title: string;\n buttonType: string;\n color: string;\n\n action?: string;\n isDisabled?: boolean;\n}\n\nexport interface ProductInfo {\n appId: string;\n iconUrl: string;\n name: string;\n}\n\n@Component({\n selector: 'platform-integration-marketing-page',\n imports: [\n CommonModule,\n MatButtonModule,\n MatChipsModule,\n MatDividerModule,\n MatIconModule,\n PlatformIntegrationsI18nModule,\n GalaxyPipesModule,\n TranslateModule,\n IntegrationCardComponent,\n GalaxyPageModule,\n GalaxyBadgeModule,\n ColorPickerModule,\n GalaxyAlertModule,\n ButtonTemplateComponent,\n ButtonConfigPipe,\n GalaxyLoadingSpinnerModule,\n ResourcesComponent,\n GalaxyTooltipModule,\n WorksWithComponent,\n NotFoundComponent,\n ],\n templateUrl: './marketing-page.component.html',\n styleUrls: ['./marketing-page.component.scss'],\n encapsulation: ViewEncapsulation.None,\n})\nexport class MarketingPageComponent {\n private readonly activatedRoute = inject(ActivatedRoute);\n private readonly cardService = inject(CardDataService);\n private readonly legacyAuthService = inject(LegacyAuthService);\n private readonly snackbarService = inject(SnackbarService);\n private readonly translate = inject(TranslateService);\n private readonly router = inject(Router);\n private readonly environmentService = inject(EnvironmentService);\n private readonly destroyRef = inject(DestroyRef);\n private model = inject(MatDialog);\n private readonly integrationUtilService = inject(IntegrationUtilService);\n protected readonly connectionMethods = ConnectionMethods;\n protected readonly userAction = UserAction;\n protected isLoading = true;\n protected readonly IntegrationType = IntegrationType;\n protected readonly SupportedContexts = SupportedContexts;\n\n constructor(\n @Inject(PLATFORM_INTEGRATIONS_NAMESPACE_INJECTION_TOKEN$) public readonly namespace$: Observable,\n @Inject(PLATFORM_INTEGRATIONS_PARTNER_ID_INJECTION_TOKEN$)\n public readonly partnerId$: Observable,\n @Inject(PLATFORM_INTEGRATIONS_PARTNER_ID_INJECTION_TOKEN$)\n @Inject(PLATFORM_INTEGRATIONS_MARKET_ID_INJECTION_TOKEN$)\n public readonly marketId$: Observable,\n @Inject(PLATFORM_INTEGRATIONS_CONTEXT_INJECTION_TOKEN$)\n public readonly context: SupportedContexts,\n @Inject('IS_IMPERSONATING')\n public readonly isImpersonating$: Observable,\n private readonly confirmationModal: OpenConfirmationModalService,\n private locationService: LocationService,\n private sessionService: SessionService,\n private iamService: IAMService,\n ) {}\n\n public connection_status: ConnectionStatus = ConnectionStatus.UNSPECIFIED_STATUS;\n protected readonly connectionStatus = ConnectionStatus;\n protected readonly connectionStatus$ = new BehaviorSubject(this.connection_status);\n private readonly integrationIdFromParam$ = this.activatedRoute.paramMap.pipe(\n map((params) => params.get('integrationId')),\n );\n private readonly integrationList$ = this.cardService.getIntegrationsList();\n\n private readonly integrationId$ = combineLatest([this.integrationIdFromParam$, this.integrationList$]).pipe(\n map(([integrationIdFromParam, integrationList]) => {\n const integration = integrationList.find(\n (integration) =>\n integration.integrationId === integrationIdFromParam ||\n integration.integrationType === integrationIdFromParam,\n );\n if (!integration) {\n const path = `${this.getCurrentPath()}/not-found`;\n this.router.navigate([path]);\n }\n return integration ? integration.integrationId : '';\n }),\n );\n\n private readonly connectionList$ = combineLatest([this.connectionStatus$, this.namespace$, this.integrationId$]).pipe(\n filter(([_, namespace, integrationId]) => !!namespace && !!integrationId),\n map(([_, namespace, integrationId]) => ({ namespace, integrationId })),\n switchMap(({ namespace, integrationId }) =>\n namespace && integrationId ? this.cardService.getConnectionsList(namespace, integrationId as string) : of([]),\n ),\n );\n private readonly cardDetail$ = combineLatest([this.integrationList$, this.connectionList$, this.integrationId$]).pipe(\n map(([integrationList, connectionList, integrationId]) => {\n connectionList = connectionList?.filter((connection) => {\n if (connection.integrationId === integrationId) {\n return true;\n }\n return false;\n });\n const integrationDetail = integrationList?.find(\n (integration) => integration.integrationId === integrationId || integration.integrationType === integrationId,\n );\n if (integrationDetail) {\n this.connection_status = connectionList?.[0]?.status || ConnectionStatus.UNSPECIFIED_STATUS;\n connectionList = connectionList?.filter(\n (connect) =>\n connect.integrationId === integrationId &&\n (connect.status === ConnectionStatus.CONNECTED ||\n connect.status === ConnectionStatus.DISCONNECTED ||\n connect.status === ConnectionStatus.PRECONNECTED),\n );\n return { integration: integrationDetail, connections: connectionList ? connectionList : [] };\n }\n return {};\n }),\n );\n\n protected readonly productInfo$: Observable = combineLatest([\n this.integrationList$,\n this.integrationId$,\n ]).pipe(\n switchMap(([integrationList, integrationId]) => {\n const integration = integrationList.find((integrations) => integrations.integrationId === integrationId);\n if (integration && integration.additionalInfo?.productIds) {\n const productIds = integration.additionalInfo.productIds;\n return this.cardService.getProductDetailsByProductIds(productIds).pipe(\n map((apps: App[]) => {\n const validApps = apps.filter((app) => app && app.key?.appId);\n return validApps.map((app) => ({\n appId: app.key.appId,\n iconUrl: app.sharedMarketingInformation.iconUrl || '',\n name: app.sharedMarketingInformation.name || '',\n })) as ProductInfo[];\n }),\n );\n }\n\n return of([]);\n }),\n );\n\n protected readonly isSMB$: Observable = combineLatest([\n this.partnerId$,\n this.sessionService.getSessionId(),\n ]).pipe(\n switchMap(([partnerID, sessionId]) => {\n if (!sessionId) return of(false);\n return this.iamService.getSubjectBySession(sessionId, PersonaType.smb, partnerID).pipe(\n map((persona) => !!persona?.userId),\n catchError(() => of(false)),\n );\n }),\n );\n\n protected readonly cards$: Observable = combineLatest([\n this.integrationList$,\n this.connectionList$,\n this.integrationId$,\n ]).pipe(\n switchMap(([integrationList, connectionList, integrationId]) => {\n connectionList = connectionList?.filter((connection) => {\n if (connection.integrationId === integrationId) {\n return true;\n }\n return false;\n });\n const userIds: string[] = connectionList\n ?.filter((connection) => connection?.userId)\n .map((connection) => connection.userId);\n return this.cardService.getMultiByUserId(userIds).pipe(\n map((usersInfo) => {\n const usersMap: Map = new Map(usersInfo.map((user) => [user.userId, user]));\n return connectionList?.reduce((result: ConnectionIntegrationDetail[], connection) => {\n const integrationDetails = integrationList?.find(\n (integration) => integration.integrationId === integrationId,\n );\n this.connection_status = connectionList?.[0]?.status || ConnectionStatus.UNSPECIFIED_STATUS;\n if (integrationDetails && connection.integrationId === integrationId) {\n const userInfo = usersMap.get(connection.userId) || null;\n result.push({ ...connection, integration: integrationDetails, userInfo: userInfo });\n }\n return result;\n }, []);\n }),\n );\n }),\n );\n\n private readonly getBusinessName$: Observable = combineLatest([this.partnerId$, this.marketId$]).pipe(\n switchMap(([partnerID, marketID]) => {\n return this.cardService.getPlatformName(partnerID, marketID);\n }),\n );\n\n private readonly getBusinessName = toSignal(this.getBusinessName$);\n protected pageData$ = combineLatest([\n this.cardDetail$,\n this.namespace$,\n this.integrationId$,\n this.isSMB$,\n this.isImpersonating$,\n ]).pipe(\n map(([cardDetail, namespace, integrationId, isSMB, isImpersonatedUser]) => {\n this.isLoading = false;\n let platformName = 'the platform';\n const businessName = this.getBusinessName();\n if (this.context === SupportedContexts.PI_CONTEXT_SMB && businessName) {\n platformName = businessName;\n }\n\n if (cardDetail.integration) {\n cardDetail.integration.longDescription = cardDetail.integration.longDescription\n .replace('{{agid}}', namespace || '')\n .replaceAll('{{platformName}}', platformName);\n }\n return {\n cardDetail: cardDetail,\n namespace: namespace,\n integrationId: integrationId,\n isSMB: isSMB,\n isImpersonatedUser: isImpersonatedUser,\n };\n }),\n );\n\n marketingPreconnectMessage(cardDetail: ConnectionIntegrationDetail): string {\n switch (cardDetail?.integration?.connectionMethod) {\n case this.connectionMethods.OAUTH2:\n return this.translate.instant('INTEGRATION_CARD.PRECONNECT_SSO_BASED_WARNING_PROBLEM', {\n title: cardDetail.integration.displayName,\n });\n default:\n return this.translate.instant('INTEGRATION_CARD.PRECONNECT_WARNING_PROBLEM', {\n title: cardDetail.integration.displayName,\n });\n }\n }\n\n //Used to get path of URL to make it generic for Both PC and BusinessApp\n // Example, if URL is https://vendasta-university-dot-vbc-demo.appspot.com/account/location/AG-JP5VN52N7P/settings/integrations/a085804b-e25f-4418-bfb0-56028916cf8d\n // we extract only account/location/AG-JP5VN52N7P/settings/integrations , which used to redirect.\n getCurrentPath(): string {\n let path = window.location.pathname.slice(1);\n const lastIndex = path.lastIndexOf('/');\n path = path.substring(0, lastIndex);\n return path;\n }\n\n manageConnection() {\n const path = this.getCurrentPath();\n this.router.navigate([path], {\n queryParams: { tab: UserAction.MANAGE },\n });\n }\n\n navigateBack(): string {\n const path = this.getCurrentPath() + `?tab=${UserAction.BROWSE}`;\n return path;\n }\n\n /**\n * Redirects to connection setting page for a provided connection id\n * Currently redirects to {server}/account/location/{CURRENT_AG}/settings/integrations/config/{CONNECTION_ID}\n *\n * @remarks Applicable Cases\n * - This is applicable for all integration where the number of connection is set to one. On clicking manage connection on Marketing page this will redirect to the individual connection setting page\n *\n * @param connectionId\n */\n manageIndividualConnection(connectionId: string) {\n const path = this.getCurrentPath();\n\n // redirect to {path}/config/{connectionId} which is the connection setting page\n this.router.navigate([`${path}/config/${connectionId}`]);\n }\n\n buttonAction(\n data: { cardDetail: IntegrationConnectionsDetail; namespace: string; integrationId: string },\n action: string,\n isDisabled: boolean,\n ) {\n if (isDisabled) {\n return;\n }\n const connectionMethod = data.cardDetail.integration?.connectionMethod;\n const maxConnections = data.cardDetail.integration?.maxConnections;\n const connectionStatus = data.cardDetail.connections[0]?.status;\n if (data.cardDetail.integration?.integrationType.toLowerCase() === IntegrationType.ZAPIER.toLowerCase()) {\n this.OpenFormBasedOnIntegrationType(data);\n }\n if (\n (data.cardDetail?.connections?.length ?? 0) >= maxConnections &&\n connectionStatus !== ConnectionStatus.PRECONNECTED\n ) {\n if ((data.cardDetail?.connections?.length ?? 0) > 1) {\n this.manageConnection();\n } else {\n this.manageIndividualConnection(data.cardDetail.connections[0]?.connectionId);\n }\n } else if (connectionMethod == ConnectionMethods.OAUTH2) {\n if (connectionStatus == ConnectionStatus.PRECONNECTED) {\n if (action === 'CANCEL') {\n this.cancelConnection(data);\n } else if (action === 'RESUME') {\n this.manageConnection();\n }\n } else {\n this.OpenFormBasedOnIntegrationType(data);\n }\n } else if (connectionMethod == ConnectionMethods.VENDOR_MANAGED) {\n if (connectionStatus == ConnectionStatus.PRECONNECTED) {\n const options = {\n title: this.translate.instant('INTEGRATION_CARD.CANCEL_VENDOR_MANAGED_CONNECTION_REQUEST?', {\n integrationDisplayName: data.cardDetail.integration?.displayName,\n }),\n message: this.translate.instant(\n 'INTEGRATION_CARD.THIS_WILL_STOP_CURRENT_CONNECTION_PROCESS_FOR_THIS_INTEGRATION',\n ),\n confirmButtonText: this.translate.instant('INTEGRATION_CARD.CANCEL_CONNECTION_REQUEST'),\n successMessage: this.translate.instant('INTEGRATION_CARD.CONNECTION_REQUEST_CANCELLED_SUCCESFULLY'),\n errorMessage: this.translate.instant('INTEGRATION_CARD.FAILED_TO_CANCEL_CONNECTION_REQUEST'),\n };\n this.cancelConnectionWithDialog(data, options);\n } else {\n this.OpenFormBasedOnIntegrationType(data);\n }\n } else if (connectionMethod == ConnectionMethods.APIKEY) {\n if (connectionStatus == ConnectionStatus.PRECONNECTED) {\n const options = {\n title: this.translate.instant('INTEGRATION_CARD.TITLE', {\n title: data.cardDetail.integration?.displayName,\n }),\n message: this.translate.instant('INTEGRATION_CARD.MESSAGE'),\n confirmButtonText: this.translate.instant('INTEGRATION_CARD.DISCONNECT'),\n successMessage: this.translate.instant('INTEGRATION_CARD.DELETE_SUCCESS_MESSAGE', {\n title: data.cardDetail.integration?.displayName,\n }),\n errorMessage: this.translate.instant('INTEGRATION_CARD.DELETE_ERROR_MESSAGE'),\n };\n this.cancelConnectionWithDialog(data, options);\n } else {\n this.OpenFormBasedOnIntegrationType(data);\n }\n } else if (data.cardDetail.integration?.connectionMethod === ConnectionMethods.LEGACY_OAUTH) {\n this.isLoading = true;\n this.legacyAuthService.HandleLegacyIntegration(data);\n }\n }\n\n OpenFormBasedOnIntegrationType(data: {\n cardDetail: IntegrationConnectionsDetail;\n namespace: string;\n integrationId: string;\n }) {\n const integrationType = data.cardDetail.integration?.integrationType;\n if (integrationType?.toLowerCase() === IntegrationType.ZAPIER.toLowerCase()) {\n this.openZapierSyncSettingModel();\n } else {\n this.openSyncSettingModel(data);\n }\n }\n\n openSyncSettingModel(cardDetail: {\n cardDetail: IntegrationConnectionsDetail;\n namespace: string;\n integrationId: string;\n }) {\n const dialogConfig = new MatDialogConfig();\n const integrationConnectionMethod = cardDetail.cardDetail.integration?.connectionMethod;\n const integrationDetails = cardDetail.cardDetail.integration;\n const syncSettingIds = this.integrationUtilService.getFieldIdsFromConfig(\n integrationDetails?.preconnectFormFields?.fields,\n );\n dialogConfig.width = '660px';\n dialogConfig.data = {\n integration: integrationDetails,\n };\n if (integrationConnectionMethod === ConnectionMethods.VENDOR_MANAGED) {\n const dialogRef = this.model.open(DynamicFormComponent, dialogConfig);\n dialogRef.componentInstance.saveSyncSettingsEvent.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((data) => {\n this.createNewConnection(cardDetail, this.mapToCustomFields(data, syncSettingIds));\n });\n } else if (integrationConnectionMethod === ConnectionMethods.OAUTH2) {\n const preConnectFormFields = cardDetail.cardDetail.integration?.preconnectFormFields;\n if (!preConnectFormFields || Object.keys(preConnectFormFields).length <= 0) {\n this.createNewConnection(cardDetail, []);\n } else {\n const dialogRef = this.model.open(DynamicFormComponent, dialogConfig);\n dialogRef.componentInstance.saveSyncSettingsEvent\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((data) => {\n this.createNewConnection(cardDetail, this.mapToCustomFields(data, syncSettingIds));\n });\n }\n } else if (integrationConnectionMethod === ConnectionMethods.APIKEY) {\n const dialogRef = this.model.open(DynamicFormComponent, dialogConfig);\n dialogRef.afterClosed().subscribe((result) => {\n if (result?.send === true) {\n this.createNewConnection(\n cardDetail,\n this.mapToCustomFieldsFromSyncSettings(\n syncSettingIds,\n integrationDetails?.preconnectFormFields?.fields || [],\n ),\n );\n }\n });\n }\n }\n\n // Zapier Sync Settings\n openZapierSyncSettingModel() {\n if (this.environmentService.getEnvironment() === Environment.DEMO) {\n window.open(ZAPIER_DEMO_APP, '_blank');\n } else if (this.context === SupportedContexts.PI_CONTEXT_SMB) {\n window.open(ZAPIER_BUSINESS_APP, '_blank');\n } else {\n window.open(ZAPIER_PARTNER_APP, '_blank');\n }\n }\n\n mapToCustomFields(data: any, settingIds: string[]): CustomField[] {\n const customFields: CustomField[] = [];\n settingIds.forEach((id) => {\n if (!(id === 'reviewRequestData' && this.context === SupportedContexts.PI_CONTEXT_PARTNER)) {\n customFields.push({\n label: id,\n value: data[id].toString(),\n });\n }\n });\n return customFields;\n }\n\n mapToCustomFieldsFromSyncSettings(settingIds: string[], fieldConfigs: FieldConfig[]): CustomField[] {\n const customFields: CustomField[] = [];\n settingIds.forEach((id) => {\n const fieldConfig = fieldConfigs.find((field) => field.id === id);\n if (!(id === 'reviewRequestData' && this.context === SupportedContexts.PI_CONTEXT_PARTNER)) {\n if (fieldConfig?.fieldType === FieldType.FIELD_TYPE_TEXT) {\n customFields.push({\n label: id,\n value: fieldConfig.defaultValue,\n });\n } else {\n customFields.push({\n label: id,\n value: 'true',\n });\n }\n }\n });\n return customFields;\n }\n\n // This function removes the active route from a URL path. Really it could be re-labeled as removing a sub-path.\n // The path and route must be passed without trailing slashes.\n removeActiveRouteFromPath(path: string, route: string) {\n if (route !== '') {\n // Remove the route from the end of the path\n return LocationService.stripTrailingSlash(path.slice(0, -route.length));\n }\n return path;\n }\n\n // getPathWithoutActiveRoute gets the current URL path, then removes the active route from it.\n getPathWithoutActiveRoute() {\n // Get entire path including the current route, then split to remove the query parameters\n const fullPath = this.locationService.path().split('?')[0];\n const activeRoute = decodeURIComponent(this.activatedRoute.snapshot.url.toString());\n\n return this.removeActiveRouteFromPath(\n LocationService.stripTrailingSlash(fullPath),\n LocationService.stripTrailingSlash(activeRoute),\n );\n }\n\n createNewConnection(\n cardDetail: { cardDetail: IntegrationConnectionsDetail; namespace: string; integrationId: string },\n syncData: CustomField[],\n ) {\n if (!cardDetail) return null;\n const { cardDetail: card, namespace, integrationId } = cardDetail;\n this.isLoading = true;\n\n const handleError = () => {\n this.isLoading = false;\n this.snackbarService.openErrorSnack('INTEGRATION_CARD.CREATE_ERROR_MESSAGE');\n return EMPTY;\n };\n\n const handleSuccess = (resp: CreateConnectionResponse) => {\n this.isLoading = false;\n return of(resp);\n };\n\n const createConnection = () => this.cardService.createConnection(namespace, integrationId, syncData, this.context);\n\n switch (card.integration.connectionMethod) {\n case ConnectionMethods.OAUTH2:\n return createConnection()\n .pipe(\n switchMap((resp: CreateConnectionResponse) => {\n const mutableQP = { ...this.activatedRoute.snapshot.queryParams };\n mutableQP['src'] = 'sso';\n const basePath = this.getPathWithoutActiveRoute().split('/');\n const nextURL =\n window.location.origin +\n this.router\n .createUrlTree([...basePath, 'config', resp.connectionId], { queryParams: mutableQP })\n .toString();\n return this.cardService.performSSO(namespace, integrationId, resp.connectionId, nextURL);\n }),\n catchError(handleError),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe();\n case ConnectionMethods.VENDOR_MANAGED:\n return createConnection()\n .pipe(\n switchMap((resp: CreateConnectionResponse) => {\n this.snackbarService.openSuccessSnack('INTEGRATION_CARD.CREATE_CONNECTION_SUCCESS');\n this.connectionStatus$.next(ConnectionStatus.PRECONNECTED);\n return handleSuccess(resp);\n }),\n tap((resp) => {\n this.router.navigate([\n `/account/location/${namespace}/administration/integrations/config/${resp.connectionId}`,\n ]);\n }),\n catchError(handleError),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe();\n\n case ConnectionMethods.APIKEY:\n return createConnection()\n .pipe(\n switchMap((resp: CreateConnectionResponse) => {\n this.snackbarService.openSuccessSnack('INTEGRATION_CARD.CREATE_CONNECTION_SUCCESS');\n this.manageIndividualConnection(resp.connectionId);\n return handleSuccess(resp);\n }),\n tap((resp) => {\n this.router.navigate([\n `/account/location/${namespace}/administration/integrations/config/${resp.connectionId}`,\n ]);\n }),\n catchError(handleError),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe();\n\n default:\n this.snackbarService.openErrorSnack('INTEGRATION_CARD.CONNECTION_NOT_CONFIGURED');\n return null;\n }\n }\n\n cancelConnectionWithDialog(\n data: {\n namespace: string;\n cardDetail: IntegrationConnectionsDetail;\n integrationId: string;\n },\n options: {\n title: string;\n message: string;\n confirmButtonText: string;\n successMessage: string;\n errorMessage: string;\n },\n ) {\n this.confirmationModal\n .openModal({\n type: 'warn',\n title: options.title,\n message: options.message,\n cancelButtonText: 'Close',\n confirmButtonText: options.confirmButtonText,\n })\n .pipe(take(1))\n .subscribe((confirm) => {\n if (confirm) {\n this.cardService\n .deleteConnection(data.namespace, data.cardDetail.connections[0].connectionId)\n .pipe(\n take(1),\n switchMap(() => {\n this.snackbarService.openSuccessSnack(options.successMessage);\n this.connectionStatus$.next(ConnectionStatus.PRECONNECTED);\n return EMPTY;\n }),\n catchError(() => {\n this.snackbarService.openErrorSnack(options.errorMessage);\n return EMPTY;\n }),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe();\n }\n });\n }\n\n cancelConnection(data: { namespace: string; cardDetail: IntegrationConnectionsDetail; integrationId: string }) {\n this.cardService\n .deleteConnection(data.namespace, data.cardDetail.connections[0].connectionId)\n .pipe(\n take(1),\n switchMap(() => {\n this.snackbarService.openSuccessSnack(\n this.translate.instant('INTEGRATION_CARD.CONNECTION_REQUEST_CANCELLED_SUCCESFULLY'),\n );\n this.connectionStatus$.next(ConnectionStatus.PRECONNECTED);\n return EMPTY;\n }),\n catchError(() => {\n this.snackbarService.openErrorSnack('INTEGRATION_CARD.FAILED_TO_CANCEL_CONNECTION_REQUEST');\n return EMPTY;\n }),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe();\n }\n}\n","@let data = pageData$ | async;\n\n \n \n \n \n \n {{ 'INTEGRATION_PAGE.PLATFORM_INTEGRATION' | translate }}\n \n \n
\n
\n
\n
\n
\n
\n
\n \"Logo\"\n
\n
\n
\n
\n
{{ data.cardDetail?.integration.displayName }}
\n
\n
\n {{\n 'INTEGRATION_CARD.CONNECTED' | translate\n }}\n
\n
\n
\n \n {{ 'INTEGRATION_CARD.CONNECTION_PENDING' | translate }}\n \n
\n
\n
{{ data.cardDetail?.integration.description }}
\n
\n\n
\n
\n {{\n 'INTEGRATION_CARD.CONNECTED' | translate\n }}\n
\n
\n \n
\n \n @if (button?.isDisabled && button?.toolTipMessage) {\n \n info_outline\n \n }\n
\n
\n\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
{{ 'INTEGRATION_CARD.CONNECTED_ACCOUNTS' | translate }}
\n
\n \n \n \n
\n
\n
\n \n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n\n
\n
Details
\n
Categories
\n
{{ data.cardDetail?.integration.additionalInfo.categories.join(', ') }}
\n
\n \n \n \n Website\n open_in_new\n \n \n \n
\n
\n \n
\n
Requirements
\n
\n You'll need:\n
    \n
  • \n \n {{ requirement }}\n \n
  • \n
\n
\n
\n \n
\n\n
\n Resources\n \n
\n
\n \n
0\">\n Products\n
\n
\n
\n \"{{\n {{ product.name }}\n
\n
\n
\n
\n
\n
\n \n
\n
\n \n \n \n \n \n \n
\n","import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { GalaxyPipesModule } from '@vendasta/galaxy/pipes';\n\n@Component({\n selector: 'platform-integration-account-details',\n imports: [MatCardModule, CommonModule, TranslateModule, GalaxyPipesModule],\n templateUrl: './account-details.component.html',\n styleUrls: ['./account-details.component.scss'],\n})\nexport class AccountDetailsComponent {\n @Input() accountDetails!: AccountDetails;\n\n constructor(private translate: TranslateService) {}\n}\n\nexport interface AccountDetails {\n accountName: string;\n requestedBy?: string;\n statusLastUpdated?: Date;\n connectionStatus: string;\n dataLastReceived?: Date;\n profileURL?: string;\n isLocationVerified?: string;\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
{{ 'ACCOUNT_DETAILS.ACCOUNT_NAME' | translate }}{{ accountDetails.accountName }}
\n {{ 'ACCOUNT_DETAILS.REQUESTED_BY' | translate }}\n \n {{ 'ACCOUNT_DETAILS.CONNECTED_BY' | translate }}\n {{ accountDetails.requestedBy }}
{{ 'ACCOUNT_DETAILS.ACCOUNT_URL' | translate }}\n {{ accountDetails.profileURL | truncateUrl }}\n
{{ 'ACCOUNT_DETAILS.LOCATION' | translate }}{{ accountDetails.isLocationVerified }}
\n {{ 'ACCOUNT_DETAILS.CONNECTED' | translate }}\n \n {{ 'ACCOUNT_DETAILS.PROBLEM_DETECTED' | translate }}\n \n {{ 'ACCOUNT_DETAILS.REQUESTED' | translate }}\n {{ accountDetails.statusLastUpdated | glxyDate }}
{{ 'ACCOUNT_DETAILS.DATA_LAST_RECEIVED' | translate }}{{ accountDetails.dataLastReceived | glxyDate }}
\n
\n
\n
\n","import { Component, inject, Input } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { CommonModule } from '@angular/common';\nimport { MatIcon } from '@angular/material/icon';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { CdkCopyToClipboard } from '@angular/cdk/clipboard';\nimport { ControlValueAccessor, FormsModule, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { ConnectionStatus } from '@vendasta/platform-integrations';\nimport { MatButton, MatIconButton } from '@angular/material/button';\n\n@Component({\n selector: 'platform-integration-passwordfield',\n imports: [\n TranslateModule,\n CommonModule,\n MatIcon,\n CdkCopyToClipboard,\n GalaxyFormFieldModule,\n MatIconButton,\n MatButton,\n FormsModule,\n ],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: PasswordFieldComponent,\n },\n ],\n templateUrl: './password.component.html',\n styleUrls: ['./password.component.scss'],\n})\nexport class PasswordFieldComponent implements ControlValueAccessor {\n @Input() value = '';\n @Input() disabled = false;\n @Input() placeholder = '';\n @Input() required = false;\n private snackbarService = inject(SnackbarService);\n protected readonly ConnectionStatus = ConnectionStatus;\n notifyCopy(): void {\n this.snackbarService.openSuccessSnack('COMMON.COPY_TO_CLIPBOARD', {\n action: 'close',\n duration: 3000,\n });\n }\n onChange = (_value: string) => {\n return;\n };\n onTouched = () => {\n return;\n };\n private touched = false;\n\n writeValue(value: string): void {\n this.value = value;\n }\n\n registerOnChange(onChangeFn: any): void {\n this.onChange = onChangeFn;\n }\n\n registerOnTouched(onTouchedFn: any): void {\n this.onTouched = onTouchedFn;\n }\n}\n","
\n \n \n \n {{ password.type === 'password' ? 'visibility' : 'visibility_off' }}\n \n \n \n {{ 'CONFIG_PAGE.COPY' | translate }}\n \n
\n","import { Component, input, model, OnInit } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { FieldConfig, FieldType, GetConnectionResponse } from '@vendasta/platform-integrations';\nimport { CommonModule } from '@angular/common';\n\n@Component({\n selector: 'platform-integration-labelfield',\n imports: [TranslateModule, CommonModule],\n templateUrl: './label.component.html',\n styleUrls: ['./label.component.scss'],\n})\nexport class LabelFieldComponent implements OnInit {\n connection = input.required();\n field = model();\n protected readonly fieldType = FieldType;\n ngOnInit(): void {\n if (this.field()?.hintText.includes('{connectionid}')) {\n const updatedHintText = this.field()?.hintText.replaceAll(\n '{connectionid}',\n this.connection().connectionId || 'connectionid',\n );\n const updatedField = { ...this.field(), hintText: String(updatedHintText) };\n this.field.set(new FieldConfig(updatedField));\n }\n }\n}\n","
\n
\n
\n
\n","import { Injectable } from '@angular/core';\nimport { CustomFields } from '@vendasta/platform-integrations';\nimport { AppleLocation } from './auto-complete.component';\n\n@Injectable({\n providedIn: 'root', // Makes it available globally\n})\n// We want to display the location name + business name as the \"location\". This isn't how we store the\n// fields in the backend, there is no \"location\" only location name and business name.\nexport class AppleAutoCompleteService {\n getLocationName(businessName: string, locationName: string): string {\n if (businessName) {\n return `${businessName} > ${locationName}`;\n }\n if (!locationName) {\n return '';\n }\n return locationName;\n }\n\n // Gets the location name from the connection custom fields.\n // This function will take the custom fields, figure out the current location label and return it.\n getLocationNameFromCustomFields(customFields: CustomFields[]): string {\n return customFields.find((field) => field.label === 'locationName')?.value || '';\n }\n\n getLocationFromCustomFields(customFields: CustomFields[]): AppleLocation | undefined {\n const lid = customFields.find((field) => field.label === 'locationId')?.value || '';\n const locName = customFields.find((field) => field.label === 'locationName')?.value || '';\n const state = customFields.find((field) => field.label === 'state')?.value || '';\n const partnersLocationId = customFields.find((field) => field.label === 'partnersLocationId')?.value || '';\n const partnersLocationVersion =\n customFields.find((field) => field.label === 'partnersLocationVersion')?.value || '';\n if (!lid || !locName || !state || !partnersLocationId) {\n return;\n }\n\n return {\n locationId: lid,\n businessId: customFields.find((field) => field.label === 'businessId')?.value || '',\n name: locName,\n state: state,\n placeCardUrl: customFields.find((field) => field.label === 'placeCardUrl')?.value || '',\n partnersLocationId: partnersLocationId,\n partnersLocationVersion: partnersLocationVersion,\n };\n }\n\n findLocation(customFields: CustomFields[], locations: AppleLocation[]): AppleLocation | undefined {\n const lid = customFields.find((field) => field.label === 'locationId')?.value || '';\n if (!lid) {\n return;\n }\n const bid = customFields.find((field) => field.label === 'businessId')?.value || '';\n\n return locations.find((field) => {\n return field.locationId === lid && field.businessId === bid;\n });\n }\n}\n","import { Component, DestroyRef, inject, Input, QueryList, ViewChildren } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { MatAutocomplete, MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { CustomFields, FieldConfig } from '@vendasta/platform-integrations';\nimport { combineLatest, EMPTY, map, Observable } from 'rxjs';\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\nimport { IntegrationConnectionDetail } from '../../../../model/Integration-connections-detail';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Environment, EnvironmentService } from '@galaxy/core';\nimport { HttpClient } from '@angular/common/http';\nimport { AppleAutoCompleteService } from './auto-complete.service';\n\nexport interface AppleLocation {\n name: string; // 'Business name > Location name' or 'Location name'\n businessId?: string;\n locationId: string;\n state: string;\n placeCardUrl?: string;\n partnersLocationId: string;\n partnersLocationVersion?: string;\n}\n\nexport interface AppleBusiness {\n name: string;\n businessId: string;\n}\n\n@Component({\n selector: 'platform-integration-auto-complete-field',\n imports: [CommonModule, GalaxyFormFieldModule, MatAutocompleteModule, ReactiveFormsModule],\n templateUrl: './auto-complete.component.html',\n styleUrl: './auto-complete.component.scss',\n})\nexport class AutoCompleteComponent {\n @Input() theFormControl!: FormControl;\n @Input() fieldConfig!: FieldConfig;\n @Input() pageData!: { cardDetail: IntegrationConnectionDetail; namespace: string; connectionId: string };\n\n @ViewChildren(MatAutocomplete)\n private accountAutocompleteWidgets: QueryList | undefined;\n\n originalOptions: AppleLocation[] = [];\n autocompleteOptions: AppleLocation[] = [];\n platformIntegrationsHost: string = this.getPlatformIntegrationsHost();\n\n private readonly destroyRef = inject(DestroyRef);\n private readonly httpClient = inject(HttpClient);\n private readonly autocompleteService = inject(AppleAutoCompleteService);\n constructor(private environmentService: EnvironmentService) {}\n\n ngOnInit(): void {\n this.fetchInitialAutocompleteOptions(this.pageData.connectionId, this.pageData.cardDetail.connection?.customFields)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((data) => {\n this.autocompleteOptions = [...data];\n this.originalOptions = [...data];\n\n this.theFormControl.setValue(\n this.autocompleteService.findLocation(\n this.pageData.cardDetail.connection?.customFields || [],\n this.autocompleteOptions,\n ),\n );\n });\n this.theFormControl.valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((inputValue) => {\n this.filterAutocompleteOptions(inputValue);\n this.setSelectorProgramatically(inputValue);\n });\n }\n\n private filterAutocompleteOptions(inputValue: string | AppleLocation): void {\n if (!inputValue || typeof inputValue !== 'string') {\n this.autocompleteOptions = [...this.originalOptions];\n return;\n }\n\n const lowerInput = inputValue.toLowerCase();\n this.autocompleteOptions = this.originalOptions.filter((option) => option.name.toLowerCase().includes(lowerInput));\n }\n\n private setSelectorProgramatically(inputValue?: string | AppleLocation): void {\n if (!inputValue || typeof inputValue === 'string') {\n return;\n }\n const matOptions = this.accountAutocompleteWidgets?.get(0)?.options;\n if (matOptions) {\n matOptions.forEach((opt) => {\n if (opt.value.name === inputValue.name) {\n opt.select();\n } else {\n opt.deselect();\n }\n });\n }\n }\n\n private getPlatformIntegrationsHost(): string {\n const env = this.environmentService.getEnvironment();\n switch (env) {\n case Environment.LOCAL:\n // TODO: set this to prod for now since only Apple is using it. This should be changed to demo once\n // DAT-1757 is complete.\n return 'https://platform-integrations-prod.apigateway.co';\n case Environment.DEMO:\n return 'https://platform-integrations-demo.apigateway.co';\n case Environment.PROD:\n return 'https://platform-integrations-prod.apigateway.co';\n default:\n return 'https://platform-integrations-demo.apigateway.co';\n }\n }\n\n fetchInitialAutocompleteOptions(\n connectionId: string | undefined,\n customFields: CustomFields[] | undefined,\n ): Observable {\n if (!connectionId || !customFields) {\n return EMPTY;\n }\n const companyId = customFields.find((f) => f.label === 'companyID');\n if (!companyId) {\n return EMPTY;\n }\n\n return combineLatest([\n this.getAppleLocationData(this.pageData.connectionId, companyId.value),\n this.getAppleBusinessData(this.pageData.connectionId, companyId.value),\n ]).pipe(\n map(([locations, businesses]) => {\n return locations.map((loc) => {\n const business = businesses.find((b) => b.businessId === loc.businessId);\n if (!business || !business.name || business.name === '') {\n return {\n name: loc.name,\n businessId: '',\n locationId: loc.locationId,\n state: loc.state,\n placeCardUrl: loc.placeCardUrl,\n partnersLocationId: loc.partnersLocationId,\n partnersLocationVersion: loc.partnersLocationVersion,\n };\n }\n return {\n name: `${business.name} > ${loc.name}`,\n businessId: loc.businessId,\n locationId: loc.locationId,\n state: loc.state,\n placeCardUrl: loc.placeCardUrl,\n partnersLocationId: loc.partnersLocationId,\n partnersLocationVersion: loc.partnersLocationVersion,\n };\n });\n }),\n );\n }\n\n getAppleLocationData(connectionId: string, companyId: string): Observable {\n interface InternalNickname {\n name: string;\n locale: string;\n }\n\n interface DisplayName {\n name: string;\n locale: string;\n primary: boolean;\n }\n\n interface LocationDetails {\n businessId: string;\n internalNicknames: InternalNickname[];\n displayNames: DisplayName[];\n partnersLocationId: string;\n partnersLocationVersion?: string;\n }\n\n interface DataItem {\n id: string;\n state: string;\n placeCardUrl?: string;\n locationDetails: LocationDetails;\n }\n\n interface LocationsResponse {\n data: DataItem[];\n total: number;\n pagination?: {\n cursors?: {\n after?: string;\n };\n next?: string;\n };\n }\n const url =\n this.platformIntegrationsHost +\n '/passthrough/' +\n connectionId +\n '/api/v2/companies/' +\n companyId +\n '/locations?ql=state==PUBLISHED,state==PROCESSING,state==SUBMITTED,state==REJECTED';\n\n return this.httpClient\n .get(url, {\n withCredentials: true,\n })\n .pipe(\n map((response: LocationsResponse): AppleLocation[] => {\n return response.data.map((item) => {\n const displayNames = item.locationDetails?.displayNames || [];\n const primaryDisplayName = displayNames.find((name) => name.primary)?.name;\n\n const internalNicknames = item.locationDetails?.internalNicknames || [];\n const firstInternalNickname = internalNicknames.length > 0 ? internalNicknames[0].name : '';\n\n // Use the primary display name if it exists, otherwise use the first internal nickname\n // TODO: we might want to use the nickname first, then fallback to display names. Alternatively we could\n // completely ignore nicknames since we don't syndicate them.\n return {\n name: primaryDisplayName || firstInternalNickname || '',\n businessId: item.locationDetails?.businessId || '',\n locationId: item.id,\n state: item.state,\n placeCardUrl: item.placeCardUrl,\n partnersLocationId: item.locationDetails?.partnersLocationId || '',\n partnersLocationVersion: item.locationDetails?.partnersLocationVersion || '',\n };\n });\n }),\n );\n }\n\n getAppleBusinessData(connectionId: string, companyId: string): Observable {\n interface DisplayName {\n name: string;\n locale: string;\n primary: boolean;\n }\n interface BusinessDetails {\n displayNames: DisplayName[];\n }\n interface DataItem {\n id: string;\n businessDetails: BusinessDetails;\n }\n interface BusinessResponse {\n data: DataItem[];\n total: number;\n pagination?: {\n cursors?: {\n after?: string;\n };\n next?: string;\n };\n }\n const url =\n this.platformIntegrationsHost +\n '/passthrough/' +\n connectionId +\n '/api/v2/companies/' +\n companyId +\n '/businesses?ql=state==PUBLISHED';\n return this.httpClient\n .get(url, {\n withCredentials: true,\n })\n .pipe(\n map((response) => {\n const businesses = response.data.map((item) => {\n const displayNames = item.businessDetails?.displayNames || [];\n const primaryDisplayName = displayNames.find((name) => name.primary)?.name;\n if (!primaryDisplayName) {\n return {\n name: displayNames?.[0]?.name || '',\n businessId: item.id,\n };\n }\n return {\n name: primaryDisplayName,\n businessId: item.id,\n };\n });\n return businesses;\n }),\n );\n }\n\n autocompleteDisplayFn(option: AppleLocation): string {\n return option?.name || '';\n }\n}\n","\n \n \n \n {{ option.name }}\n \n \n\n","import {\n Component,\n Inject,\n inject,\n Input,\n Output,\n OnInit,\n EventEmitter,\n DestroyRef,\n ChangeDetectorRef,\n} from '@angular/core';\nimport { IntegrationType, RmAppDetail } from '../../model';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { CommonModule } from '@angular/common';\nimport { FormBuilder, FormControl, FormGroup, FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport {\n PLATFORM_INTEGRATIONS_CONTEXT_INJECTION_TOKEN$,\n PLATFORM_INTEGRATIONS_MARKET_ID_INJECTION_TOKEN$,\n PLATFORM_INTEGRATIONS_NAMESPACE_INJECTION_TOKEN$,\n PLATFORM_INTEGRATIONS_PARTNER_ID_INJECTION_TOKEN$,\n} from '@galaxy/platform-integrations/shared';\nimport { MatSlideToggle, MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { IntegrationConnectionDetail } from '../../model/Integration-connections-detail';\nimport { combineLatest, EMPTY, map, Observable, switchMap, take, tap } from 'rxjs';\nimport { catchError, combineLatestWith } from 'rxjs/operators';\nimport { CardDataService } from '../../card-data.service';\nimport { OpenConfirmationModalService } from '@vendasta/galaxy/confirmation-modal';\nimport { DialogBoxComponent } from '../../unlock-dialogue-box/unlock-dialogue-box.component';\nimport { MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog';\nimport { AppSettings } from '@vendasta/marketplace-apps/lib/_internal/objects/app-settings';\nimport { MatRadioModule } from '@angular/material/radio';\nimport {\n ActionType,\n ConnectionStatus,\n CustomFields,\n FieldConfig,\n FieldType,\n FormConfig,\n GetConnectionResponse,\n IntegrationMarketingResponse,\n SupportedContexts,\n} from '@vendasta/platform-integrations';\nimport { IntegrationUtilService } from '../../common/integration-util.service';\nimport { MatButtonModule } from '@angular/material/button';\n\nimport { RecordService } from '@vendasta/google-search-console';\nimport { PasswordFieldComponent } from '../instructions/fields/password/password.component';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { GalaxyTagsModule } from '@vendasta/galaxy/tags';\nimport { LabelFieldComponent } from '../instructions/fields/label/label.component';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { AppleLocation, AutoCompleteComponent } from './fields/auto-complete/auto-complete.component';\nimport { AppleAutoCompleteService } from './fields/auto-complete/auto-complete.service';\n\nconst invalidPartnerCodeError = 'Value passed in the Partner code is not a valid integration name ';\n\n@Component({\n selector: 'platform-integration-sync-settings',\n imports: [\n TranslateModule,\n MatCardModule,\n MatCheckboxModule,\n MatCardModule,\n MatSlideToggleModule,\n TranslateModule,\n ReactiveFormsModule,\n FormsModule,\n MatCheckboxModule,\n CommonModule,\n MatIconModule,\n MatRadioModule,\n MatDividerModule,\n MatInputModule,\n MatFormFieldModule,\n GalaxyFormFieldModule,\n MatButtonModule,\n MatAutocompleteModule,\n PasswordFieldComponent,\n GalaxyTagsModule,\n LabelFieldComponent,\n AutoCompleteComponent,\n ],\n templateUrl: './sync-settings.component.html',\n styleUrl: './sync-settings.component.scss',\n})\nexport class SyncSettingsComponent implements OnInit {\n syncSettingsForm!: FormGroup;\n isEdited = false;\n isSaved = false;\n syncSettings!: FieldConfig[];\n private formBuilder = inject(FormBuilder);\n appleAutocompleteFormControlId = '';\n appleAutocompleteFormControl: FormControl = new FormControl([]);\n @Input() integrationType!: string;\n @Input() pageData!: { cardDetail: IntegrationConnectionDetail; namespace: string; connectionId: string };\n @Output() locationSaved = new EventEmitter();\n configPageFields: FormConfig[] = [];\n private readonly snackbarService = inject(SnackbarService);\n private readonly cardService = inject(CardDataService);\n private readonly confirmationModal = inject(OpenConfirmationModalService);\n private readonly translate = inject(TranslateService);\n private readonly dialog = inject(MatDialog);\n protected readonly fieldType = FieldType;\n protected readonly integrationTypeEnums = IntegrationType;\n protected readonly actionType = ActionType;\n private readonly integrationUtilService = inject(IntegrationUtilService);\n private readonly recordService = inject(RecordService);\n private readonly destroyRef = inject(DestroyRef);\n protected readonly ConnectionStatus = ConnectionStatus;\n private readonly autoCompleteService = inject(AppleAutoCompleteService);\n constructor(\n @Inject(PLATFORM_INTEGRATIONS_NAMESPACE_INJECTION_TOKEN$) public readonly namespace$: Observable,\n @Inject(PLATFORM_INTEGRATIONS_PARTNER_ID_INJECTION_TOKEN$)\n public readonly partnerId$: Observable,\n @Inject(PLATFORM_INTEGRATIONS_MARKET_ID_INJECTION_TOKEN$) public readonly marketId$: Observable,\n @Inject(MAT_DIALOG_DATA) public data: any,\n @Inject(PLATFORM_INTEGRATIONS_CONTEXT_INJECTION_TOKEN$)\n public readonly context: SupportedContexts,\n private cdr: ChangeDetectorRef,\n ) {}\n\n stringToBooleanConversion(value: string): boolean {\n if (value === 'true') {\n return true;\n }\n return false;\n }\n\n ngOnInit(): void {\n this.configPageFields = this.pageData.cardDetail.integration?.configPageFields ?? [];\n this.syncSettings = this.getSyncSettings(this.configPageFields.flatMap((config) => config.fields));\n this.initializeFormGroup(\n this.pageData.cardDetail?.connection,\n this.pageData.cardDetail?.integration,\n this.syncSettings,\n );\n\n this.syncSettings.forEach((field) => {\n if (this.isInputField(field.fieldType)) {\n const customField = this.pageData.cardDetail?.connection?.customFields?.find((cf) => cf.label === field.id);\n if (customField && customField?.value) {\n this.syncSettingsForm.controls[field.id].disable();\n }\n }\n });\n const atLeastOneFieldFilled =\n this.syncSettings.some((field) => this.isInputField(field.fieldType)) &&\n this.syncSettings\n .filter((field) => this.isInputField(field.fieldType))\n .some((field) => {\n const customField = this.pageData.cardDetail?.connection?.customFields?.find((cf) => cf.label === field.id);\n return customField?.value && customField?.value !== '[]';\n });\n this.isSaved = atLeastOneFieldFilled;\n }\n\n private reloadPage() {\n window.location.reload();\n }\n\n parseValue(value: any, fieldType: FieldType): any {\n if (fieldType === FieldType.FIELD_TYPE_CHIPLIST) {\n return value.split(',');\n }\n return value;\n }\n\n initializeFormGroup(\n connection: GetConnectionResponse | undefined,\n integration: IntegrationMarketingResponse | undefined,\n syncSettings: FieldConfig[],\n ) {\n this.syncSettingsForm = this.formBuilder.group({});\n const syncSettingIds = this.integrationUtilService.getFieldIdsFromConfig(syncSettings);\n const syncSettingsMap = this.integrationUtilService.getFieldConfigAsMap(syncSettings);\n const customFieldsMap: Map = new Map(\n connection?.customFields?.map((item) => [item.label, item]),\n );\n const pageConfigFields = new Map();\n\n syncSettingIds.forEach((syncSettingId) => {\n integration?.configPageFields.forEach((configPage) => {\n configPage.fields.forEach((field) => {\n if (syncSettingId === field.id) {\n pageConfigFields.set(field.id, field);\n }\n });\n });\n });\n\n syncSettingIds.forEach((id) => {\n const pageConfigFieldInfo = pageConfigFields.get(id);\n const customFieldInfo = customFieldsMap.get(id);\n const syncSettingFieldInfo = syncSettingsMap.get(id);\n\n if (syncSettingFieldInfo) {\n switch (this.integrationType) {\n case IntegrationType.GOOGLESEARCHCONSOLE:\n this.syncSettingsForm.addControl(id, new FormControl([]));\n this.getGSCKeywords()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((keywords) => {\n this.syncSettingsForm.get(id)?.setValue(keywords);\n if (keywords !== undefined && keywords.length > 0) {\n this.syncSettingsForm.get(id)?.disable();\n this.isSaved = true;\n }\n });\n break;\n case IntegrationType.APPLEBUSINESSCONNECT:\n this.appleAutocompleteFormControlId = id;\n this.syncSettingsForm.addControl(id, this.appleAutocompleteFormControl);\n break;\n default:\n if (pageConfigFieldInfo) {\n switch (syncSettingFieldInfo.fieldType) {\n case FieldType.FIELD_TYPE_TOGGLE:\n this.syncSettingsForm.addControl(\n pageConfigFieldInfo.id,\n new FormControl(this.stringToBooleanConversion(customFieldInfo?.value ?? 'false')),\n );\n break;\n case FieldType.FIELD_TYPE_PASSWORD:\n this.syncSettingsForm.addControl(pageConfigFieldInfo.id, new FormControl(customFieldInfo?.value));\n break;\n case FieldType.FIELD_TYPE_TEXT:\n this.syncSettingsForm.addControl(pageConfigFieldInfo.id, new FormControl(customFieldInfo?.value));\n break;\n case FieldType.FIELD_TYPE_CHIPLIST: {\n this.syncSettingsForm.addControl(id, new FormControl([]));\n const customField = this.pageData.cardDetail?.connection?.customFields?.find((cf) => cf.label === id);\n if (customField?.value) {\n this.syncSettingsForm\n .get(id)\n ?.setValue(this.parseValue(customField.value, syncSettingFieldInfo.fieldType));\n }\n break;\n }\n }\n }\n }\n if (syncSettingFieldInfo.dependents) {\n syncSettingFieldInfo.dependents.forEach((dep) => {\n const dependentCustomField = customFieldsMap.get(dep.id);\n if (dependentCustomField) {\n const depControl = new FormControl(\n {\n value: this.stringToBooleanConversion(dependentCustomField.value),\n disabled: !syncSettingFieldInfo.defaultValue,\n },\n dep.required ? Validators.required : null,\n );\n this.syncSettingsForm.addControl(dependentCustomField.label, depControl);\n if (customFieldsMap.get(syncSettingFieldInfo.id)?.value === 'true') {\n depControl.enable();\n } else {\n depControl.disable();\n }\n }\n });\n }\n }\n });\n }\n\n updateToggleSetting(\n setting: FieldConfig,\n card: { cardDetail: IntegrationConnectionDetail; namespace: string; connectionId: string },\n event: MatSlideToggle,\n ) {\n const config = this.configPageFields?.[0]?.fields ?? []; //TODO:PHNX assuming sync setting is first for now\n if (config?.some((field) => field.dependents?.length > 0)) {\n setting.defaultValue = this.syncSettingsForm.controls[setting.id].value;\n config.forEach((field) => {\n if (field.dependents?.length > 0 && field.id === setting.id) {\n field.dependents.forEach((depField) => {\n if (setting.defaultValue === true) {\n this.syncSettingsForm.controls[depField.id].enable();\n } else {\n this.syncSettingsForm.controls[depField.id].disable();\n }\n });\n }\n });\n }\n if (this.syncSettingsForm.controls[setting?.id]?.value === false) {\n this.openSyncSettingWarnModal(setting, card);\n } else {\n const updates = [{ label: setting.id, value: event.checked.toString() }];\n this.updateConnectionSetting(\n card,\n updates,\n ConnectionStatus.UNSPECIFIED_STATUS,\n { key: 'CONNECTION_SYNC_SETTINGS.UPDATE_SETTINGS', params: { label: setting.label } },\n { key: 'CONNECTION_SYNC_SETTINGS.UPDATE_SYNC_ID_SETTINGS_ERROR', params: { label: setting.label } },\n );\n }\n }\n\n openSyncSettingWarnModal(\n setting: FieldConfig,\n card: { cardDetail: IntegrationConnectionDetail; namespace: string; connectionId: string },\n ) {\n this.confirmationModal\n .openModal({\n type: 'warn',\n title: this.translate.instant('INTEGRATION_CARD.SYNC_SETTING_TITLE', {\n title: setting.label,\n }),\n message: this.translate.instant('INTEGRATION_CARD.SYNC_SETTING_MESSAGE', {\n title: setting.label,\n }),\n confirmButtonText: this.translate.instant('INTEGRATION_CARD.TURN_OFF'),\n cancelButtonText: this.translate.instant('INTEGRATION_CARD.CANCEL'),\n })\n .pipe(take(1))\n .subscribe((userDidAction) => {\n if (userDidAction) {\n const updates = [{ label: setting.id, value: 'false' }];\n this.updateConnectionSetting(\n card,\n updates,\n ConnectionStatus.UNSPECIFIED_STATUS,\n { key: 'CONNECTION_SYNC_SETTINGS.UPDATE_SETTINGS', params: { label: setting.label } },\n { key: 'CONNECTION_SYNC_SETTINGS.UPDATE_SYNC_ID_SETTINGS_ERROR', params: { label: setting.label } },\n );\n } else {\n this.syncSettingsForm.controls[setting.id].setValue(true);\n const config = this.configPageFields?.[0]?.fields ?? []; //TODO:PHNX assuming sync setting is first for now\n if (config?.some((field) => field.dependents?.length > 0)) {\n setting.defaultValue = true;\n }\n }\n });\n }\n\n getSyncSettings(configPageFields: FieldConfig[]): FieldConfig[] {\n return configPageFields?.filter((setting) => {\n return !(setting.id === 'reviewRequestData' && this.context === SupportedContexts.PI_CONTEXT_PARTNER);\n });\n }\n\n handleButtonClick(rmAppDetails: RmAppDetail): void {\n this.dialog.open(DialogBoxComponent, {\n width: '463px',\n data: {\n namespace: rmAppDetails.namespace,\n partnerId: rmAppDetails.partnerId,\n rmAppSettings: rmAppDetails.upgradeSetting,\n integrationId: this.data['integrationID'],\n },\n });\n }\n\n isInputField(fieldType: FieldType): boolean {\n if (\n fieldType === FieldType.FIELD_TYPE_TEXT ||\n fieldType === FieldType.FIELD_TYPE_PASSWORD ||\n fieldType === FieldType.FIELD_TYPE_CHIPLIST\n ) {\n return true;\n }\n return false;\n }\n\n protected readonly getAppDetailResponse$: Observable = combineLatest([this.namespace$, this.partnerId$]).pipe(\n switchMap(([namespace, partnerID]) => {\n return this.cardService.getRMAppDetail(namespace, partnerID);\n }),\n );\n\n protected readonly getAppSettings$: Observable = combineLatest([this.partnerId$, this.marketId$]).pipe(\n switchMap(([partnerID, marketID]) => {\n return this.cardService.getRMAppSettings(partnerID, marketID);\n }),\n );\n\n protected readonly getRMAppDetailsConfigPage$ = combineLatest([\n this.getAppDetailResponse$,\n this.getAppSettings$,\n ]).pipe(\n map(([rmAppDetails, rmAppSettings]) => {\n const res = {\n hasRMPremiumActive: false,\n upgradeSetting: rmAppSettings,\n } as RmAppDetail;\n if (rmAppDetails === this.cardService.getEditionId()) {\n res.hasRMPremiumActive = true;\n return res;\n }\n return res;\n }),\n );\n\n updateRadioButton(\n setting: FieldConfig,\n card: { cardDetail: IntegrationConnectionDetail; namespace: string; connectionId: string },\n ) {\n const updates = [{ label: setting.id, value: this.syncSettingsForm.controls[setting.id].value.toString() }];\n const selectedOption = setting.options?.find((option) => option?.value === true);\n this.updateConnectionSetting(\n card,\n updates,\n ConnectionStatus.UNSPECIFIED_STATUS,\n { key: 'CONNECTION_SYNC_SETTINGS.UPDATE_SETTINGS', params: { label: selectedOption?.label } },\n { key: 'CONNECTION_SYNC_SETTINGS.UPDATE_SYNC_ID_SETTINGS_ERROR', params: { label: selectedOption?.label } },\n );\n }\n\n onSave(\n card: { cardDetail: IntegrationConnectionDetail; namespace: string; connectionId: string },\n fields: FieldConfig[],\n ) {\n const configPageFields = card.cardDetail?.integration?.configPageFields;\n const integrationType = card.cardDetail.integration?.integrationType;\n const title = configPageFields?.map((field) => field?.title).filter(Boolean)?.[0];\n\n if (!this.syncSettingsForm.valid) {\n this.snackbarService.openErrorSnack('CONNECTION_SYNC_SETTINGS.REQUIRED_FIELD_ERROR');\n return;\n }\n\n // Leave connectionStatus as unspecified if you don't want to change the connection status\n let connectionStatus = ConnectionStatus.UNSPECIFIED_STATUS;\n const updates = fields.flatMap((field) => {\n const control = this.syncSettingsForm.controls[field.id];\n control?.disable();\n if (field.id === this.appleAutocompleteFormControlId) {\n const l: AppleLocation = control?.getRawValue();\n if (!l) {\n return [];\n }\n\n connectionStatus = ConnectionStatus.CONNECTED;\n return [\n { label: 'businessId', value: l.businessId },\n { label: 'locationId', value: l.locationId },\n { label: 'state', value: l.state },\n { label: 'placeCardUrl', value: l.placeCardUrl || '' },\n { label: 'locationName', value: l.name },\n { label: 'partnersLocationId', value: l.partnersLocationId },\n { label: 'partnersLocationVersion', value: l.partnersLocationVersion || '' },\n ];\n }\n let value = control?.getRawValue();\n // Handle different field types\n if (field.fieldType === FieldType.FIELD_TYPE_CHIPLIST) {\n value = Array.isArray(value) ? value.join(',') : (value || '').toString();\n }\n return [{ label: field.id, value: value?.toString() || '' }];\n });\n\n // Append locationId with data_connectionId:data_apiKey for \"protractor\" integration alone for now\n // TODO - Create a locationID in config and hide it. Just update over here\n if (integrationType === IntegrationType.PROTRACTOR) {\n const connectionId = updates.find((f) => f.label === 'data_connectionId')?.value;\n const apiKey = updates.find((f) => f.label === 'data_apiKey')?.value;\n if (connectionId && apiKey) {\n const locationIdEntry = updates.find((f) => f.label === 'locationID');\n const locationValue = `${connectionId}:${apiKey}`;\n if (locationIdEntry) {\n locationIdEntry.value = locationValue;\n } else {\n updates.push({ label: 'locationID', value: locationValue });\n }\n }\n }\n\n const successMessageKey =\n integrationType === IntegrationType.APPLEBUSINESSCONNECT\n ? 'CONNECTION_SYNC_SETTINGS.SINGLE_VALUE_SAVE_SUCCESS'\n : 'CONNECTION_SYNC_SETTINGS.MULTIPLE_VALUES_SAVE_SUCCESS';\n\n const errorMessageKey = 'CONNECTION_SYNC_SETTINGS.UPDATE_SETTINGS_ERROR';\n this.isSaved = true;\n this.isEdited = false;\n\n this.updateConnectionSetting(\n card,\n updates,\n connectionStatus,\n { key: successMessageKey, params: { title } },\n { key: errorMessageKey },\n );\n }\n\n onEdit(fields: FieldConfig[]) {\n fields.forEach((field) => {\n this.syncSettingsForm.controls[field.id]?.enable();\n });\n this.isSaved = false;\n this.isEdited = true;\n }\n\n onCancel(\n card: { cardDetail: IntegrationConnectionDetail; namespace: string; connectionId: string },\n fields: FieldConfig[],\n ) {\n const syncSettingIds = this.integrationUtilService.getFieldIdsFromConfig(this.syncSettings);\n\n this.cardService\n .getConnection(card.connectionId, card.namespace)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((updatedConnection) => {\n const updatedCustomFields = updatedConnection?.customFields;\n if (Array.isArray(updatedCustomFields)) {\n updatedCustomFields.forEach((con) => {\n if (syncSettingIds.includes(con.label)) {\n fields.forEach((field) => {\n if (\n (field.fieldType === FieldType.FIELD_TYPE_TEXT ||\n field.fieldType === FieldType.FIELD_TYPE_CHIPLIST) &&\n field.id === con.label\n ) {\n if (card.cardDetail.integration?.integrationType === IntegrationType.APPLEBUSINESSCONNECT) {\n this.syncSettingsForm.controls[field.id].setValue(\n this.autoCompleteService.getLocationFromCustomFields(updatedCustomFields),\n );\n } else {\n this.syncSettingsForm.controls[field.id].setValue(this.parseValue(con.value, field.fieldType));\n }\n this.syncSettingsForm.controls[field.id].disable();\n }\n });\n }\n });\n }\n this.isSaved = true;\n this.isEdited = false;\n });\n }\n\n updateConnectionSetting(\n card: { cardDetail: IntegrationConnectionDetail; namespace: string; connectionId: string },\n updates: Array<{ label: string; value: string }>,\n connectionStatus: ConnectionStatus = ConnectionStatus.UNSPECIFIED_STATUS,\n successMessageDetails?: { key: string; params?: any },\n errorMessageDetails?: { key: string; params?: any },\n ) {\n const configPageFields = card.cardDetail?.integration?.configPageFields;\n\n switch (this.integrationType) {\n case IntegrationType.GOOGLESEARCHCONSOLE: {\n const setting = configPageFields\n ?.find((field) => field.fields?.find((f) => f.id === updates[0].label))\n ?.fields?.find((f) => f.id === updates[0].label);\n if (setting) {\n this.setGSCKeywords(this.syncSettingsForm.get(setting.id)?.getRawValue() || [], setting)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe();\n }\n break;\n }\n default:\n this.cardService\n .updateConnection(card.connectionId, card.namespace, updates, connectionStatus)\n .pipe(\n tap(() => {\n if (successMessageDetails) {\n this.snackbarService.openSuccessSnack(\n this.translate.instant(successMessageDetails.key, successMessageDetails?.params),\n );\n }\n\n // Special case: Emit event on success for Apple Integration\n if (card.cardDetail.integration?.integrationType === IntegrationType.APPLEBUSINESSCONNECT) {\n this.locationSaved.emit();\n }\n }),\n catchError((error) => {\n if (error?.error?.message === invalidPartnerCodeError) {\n this.snackbarService.openErrorSnack('CONNECTION_SYNC_SETTINGS.INVALID_PARTNER_CODE_ERROR');\n } else if (errorMessageDetails) {\n this.snackbarService.openErrorSnack(\n this.translate.instant(errorMessageDetails.key, errorMessageDetails?.params),\n );\n } else {\n this.snackbarService.openErrorSnack('CONNECTION_SYNC_SETTINGS.UPDATE_SYNC_SETTING_ERROR');\n }\n return EMPTY;\n }),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe();\n }\n }\n\n // getGSCKeywords method will fetch the list of keyword for the namespace from google search console\n getGSCKeywords(): Observable {\n return this.partnerId$.pipe(\n combineLatestWith(this.namespace$),\n switchMap(([partnerId, namespace]) => {\n return this.recordService.getKeywords(partnerId, namespace);\n }),\n );\n }\n\n // getGSCKeywords method will set the list of keyword for the namespace in google search console\n setGSCKeywords(keywords: string[], setting: FieldConfig): Observable {\n return this.partnerId$.pipe(\n combineLatestWith(this.namespace$),\n switchMap(([partnerId, namespace]) => {\n return this.recordService.setKeywords(partnerId, namespace, keywords);\n }),\n tap((updated) => {\n if (updated) {\n this.snackbarService.openSuccessSnack(\n this.translate.instant('CONNECTION_SYNC_SETTINGS.UPDATE_SETTINGS', { label: setting.label }),\n );\n } else {\n this.translate.instant('CONNECTION_SYNC_SETTINGS.UPDATE_SYNC_ID_SETTINGS_ERROR', {\n label: setting.label,\n });\n }\n }),\n catchError((_err) => {\n this.snackbarService.openErrorSnack('CONNECTION_SYNC_SETTINGS.UPDATE_SYNC_SETTING_ERROR');\n return EMPTY;\n }),\n );\n }\n}\n","
\n @for (config of configPageFields; track $index) {\n \n \n \n
{{ config.title | translate }}
\n \n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n @switch (field.fieldType) {\n @case (fieldType.FIELD_TYPE_PASSWORD) {\n
\n
\n
\n {{ field.label | translate }}\n
\n
\n
\n {{ field.hintText | translate }}\n
\n
\n \n
\n
\n }\n @case (fieldType.FIELD_TYPE_CHIPLIST) {\n
\n
\n
\n {{ field.label | translate }}\n
\n
\n
\n {{ field.hintText | translate }}\n
\n
\n \n \n \n
\n
\n }\n @case (fieldType.FIELD_TYPE_LABEL) {\n \n }\n @default {\n
\n
\n
\n {{ field.label }}\n \n \n lock\n \n \n \n \n \n \n \n lock\n \n \n \n \n \n \n \n \n \n
\n
\n
\n {{ field.hintText }}\n
\n
\n \n
\n \n
\n
\n \n
\n \n \n \n
\n
\n
\n
\n \n
\n \n
\n {{ option.label }}\n
\n \n
\n
\n
\n }\n }\n \n
\n @for (action of config.actions; track $index) {\n @switch (action.actionType) {\n @case (actionType.ACTION_TYPE_SAVE) {\n \n {{ 'CONNECTION_SYNC_SETTINGS.SAVE' | translate }}\n \n \n \n }\n }\n }\n
\n \n }\n\n","import { Component, input } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { FieldConfig } from '@vendasta/platform-integrations';\nimport { CommonModule } from '@angular/common';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'platform-integration-urlfield',\n imports: [TranslateModule, CommonModule, MatIcon, MatButtonModule],\n templateUrl: './url.component.html',\n styleUrls: ['./url.component.scss'],\n})\nexport class URLFieldComponent {\n field = input.required();\n}\n","\n","import { Component, inject, input, OnInit } from '@angular/core';\nimport { GalaxyAlertModule } from '@vendasta/galaxy/alert';\nimport { TranslateModule } from '@ngx-translate/core';\nimport {\n FieldConfig,\n FieldType,\n FormConfig,\n ConnectionMethods,\n GetConnectionResponse,\n GetIntegrationResponse,\n} from '@vendasta/platform-integrations';\nimport { CommonModule } from '@angular/common';\n\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { MatButtonModule } from '@angular/material/button';\nimport { GalaxyInputModule } from '@vendasta/galaxy/input/src/input.module';\nimport { PasswordFieldComponent } from './fields/password/password.component';\nimport { LabelFieldComponent } from './fields/label/label.component';\nimport { URLFieldComponent } from './fields/url/url.component';\nimport { CookieService } from 'ngx-cookie-service';\n\n@Component({\n selector: 'platform-integration-instructions',\n imports: [\n GalaxyAlertModule,\n TranslateModule,\n CommonModule,\n MatFormFieldModule,\n GalaxyFormFieldModule,\n MatButtonModule,\n GalaxyInputModule,\n PasswordFieldComponent,\n LabelFieldComponent,\n URLFieldComponent,\n ],\n templateUrl: './instructions.component.html',\n styleUrls: ['./instructions.component.scss'],\n})\nexport class InstructionsComponent implements OnInit {\n private readonly cookieService = inject(CookieService);\n instructions = input.required();\n connection = input.required();\n integration = input.required();\n protected readonly connectionMethods = ConnectionMethods;\n protected readonly fieldType = FieldType;\n dismissed = false;\n cookieKey = '';\n ngOnInit(): void {\n this.cookieKey = `dismissedInstruction_${this.integration()?.integrationType}_${this.connection()?.status}`;\n this.dismissed = Boolean(this.cookieService.get(this.cookieKey));\n }\n\n dismissInstruction(): void {\n this.cookieService.set(this.cookieKey, 'true', 0, '/', '');\n this.dismissed = true;\n }\n getFieldValue(field: FieldConfig) {\n switch (field.fieldType) {\n case FieldType.FIELD_TYPE_PASSWORD:\n return (\n this.connection().customFields.find((customField) => {\n return customField.label === field.id;\n })?.value || field.placeHolder\n );\n default:\n return field.placeHolder;\n }\n }\n}\n","\n\n {{ instructions().title }}\n \n @for (instruction of instructions().fields; track $index) {\n @switch (instruction.fieldType) {\n @case (fieldType.FIELD_TYPE_PASSWORD) {\n
\n
\n \n
\n }\n @case (fieldType.FIELD_TYPE_LABEL) {\n \n }\n @case (fieldType.FIELD_TYPE_URL) {\n \n }\n }\n }\n
\n\n","import { CommonModule, DOCUMENT } from '@angular/common';\nimport { Component, DestroyRef, Inject, inject, OnInit } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { GalaxyBadgeModule } from '@vendasta/galaxy/badge';\nimport { OpenConfirmationModalService } from '@vendasta/galaxy/confirmation-modal';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport {\n ConnectionMethods,\n ConnectionStatus,\n FieldConfig,\n FormConfig,\n GetConnectionResponse,\n IntegrationMarketingResponse,\n SupportedContexts,\n} from '@vendasta/platform-integrations';\nimport { BehaviorSubject, combineLatest, EMPTY, filter, map, Observable, of, switchMap, take, tap } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\nimport { CardDataService } from '../card-data.service';\nimport { IntegrationConnectionDetail } from '../model/Integration-connections-detail';\nimport { GalaxyPageModule } from '@vendasta/galaxy/page';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatCardModule } from '@angular/material/card';\nimport { GalaxyAlertModule } from '@vendasta/galaxy/alert';\nimport { ConnectionIntegrationDetail, IntegrationType, RmAppDetail } from '../model/connection-integration-detail';\nimport { GalaxyCheckboxModule } from '@vendasta/galaxy/checkbox';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport {\n PLATFORM_INTEGRATIONS_CONTEXT_INJECTION_TOKEN$,\n PLATFORM_INTEGRATIONS_MARKET_ID_INJECTION_TOKEN$,\n PLATFORM_INTEGRATIONS_NAMESPACE_INJECTION_TOKEN$,\n PLATFORM_INTEGRATIONS_PARTNER_ID_INJECTION_TOKEN$,\n PlatformIntegrationsI18nModule,\n} from '@galaxy/platform-integrations/shared';\nimport { MatDialog, MatDialogModule } from '@angular/material/dialog';\nimport { DialogBoxComponent } from '../unlock-dialogue-box/unlock-dialogue-box.component';\nimport { AccountDetails, AccountDetailsComponent } from './account-details/account-details.component';\nimport { AppSettings } from '@vendasta/marketplace-apps';\nimport { ResourcesComponent } from './resources/resources.component';\nimport { SyncSettingsComponent } from './sync-settings/sync-settings.component';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { IntegrationUtilService } from '../common/integration-util.service';\nimport { HttpResponse } from '@angular/common/http';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { LegacyAuthService } from '../legacy-auth.service';\nimport { CookieService } from 'ngx-cookie-service';\nimport { InstructionsComponent } from './instructions/instructions.component';\nimport { GalaxyLoadingSpinnerModule } from '@vendasta/galaxy/loading-spinner';\nimport { UserAction } from '../const';\n\n@Component({\n selector: 'platform-integration-config-page',\n imports: [\n CommonModule,\n MatButtonModule,\n MatChipsModule,\n MatDividerModule,\n MatIconModule,\n GalaxyBadgeModule,\n TranslateModule,\n GalaxyPageModule,\n MatSlideToggleModule,\n MatCardModule,\n GalaxyCheckboxModule,\n ReactiveFormsModule,\n FormsModule,\n MatCheckboxModule,\n MatDialogModule,\n AccountDetailsComponent,\n ResourcesComponent,\n MatRadioModule,\n GalaxyAlertModule,\n PlatformIntegrationsI18nModule,\n SyncSettingsComponent,\n InstructionsComponent,\n GalaxyLoadingSpinnerModule,\n ],\n templateUrl: './config-page.component.html',\n styleUrls: ['./config-page.component.scss'],\n})\nexport class ConfigPageComponent implements OnInit {\n syncSettingsForm!: FormGroup;\n private formBuilder = inject(FormBuilder);\n private readonly router = inject(Router);\n private readonly cardService = inject(CardDataService);\n private readonly snackbarService = inject(SnackbarService);\n private readonly translate = inject(TranslateService);\n private readonly activatedRoute = inject(ActivatedRoute);\n private readonly confirmationModal = inject(OpenConfirmationModalService);\n private readonly dialog = inject(MatDialog);\n private readonly integrationUtilService = inject(IntegrationUtilService);\n protected readonly connectionId$ = this.activatedRoute.paramMap.pipe(map((params) => params.get('connectionId')));\n protected readonly connectionMethods = ConnectionMethods;\n protected readonly connectionStatus = ConnectionStatus;\n private readonly legacyAuthService = inject(LegacyAuthService);\n private readonly cookieService = inject(CookieService);\n private readonly destroyRef = inject(DestroyRef);\n private readonly refreshTrigger$ = new BehaviorSubject(undefined);\n protected displaySettings = true;\n\n constructor(\n @Inject(PLATFORM_INTEGRATIONS_NAMESPACE_INJECTION_TOKEN$) public readonly namespace$: Observable,\n @Inject(PLATFORM_INTEGRATIONS_PARTNER_ID_INJECTION_TOKEN$)\n public readonly partnerId$: Observable,\n @Inject(PLATFORM_INTEGRATIONS_MARKET_ID_INJECTION_TOKEN$) public readonly marketId$: Observable,\n @Inject(DOCUMENT) private document: Document,\n @Inject(PLATFORM_INTEGRATIONS_CONTEXT_INJECTION_TOKEN$)\n public readonly context: SupportedContexts,\n ) {}\n\n ngOnInit(): void {\n this.activatedRoute.queryParams\n .pipe(\n map((param) => {\n const isSSO = param['src'] ? param['src'] : '';\n const errorCode = param['error'] ? param['error'] : '';\n if (errorCode) {\n const errorDescription = param['error_description']\n ? param['error_description']\n : 'INTEGRATION_CARD.CONNECTION_ERROR_SSO';\n this.snackbarService.openErrorSnack(errorDescription);\n } else if (isSSO === 'sso') {\n // TODO: change this so that if the connection is still in pre-connect state it tells you that you need\n // to do to complete the connection\n this.snackbarService.openSuccessSnack('INTEGRATION_CARD.CREATE_CONNECTION_SUCCESS');\n }\n }),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe();\n }\n\n protected readonly connection$ = this.refreshTrigger$.pipe(\n switchMap(() =>\n this.connectionId$.pipe(\n filter((connectionId) => !!connectionId),\n switchMap((connectionId) => this.cardService.getConnection(connectionId, this.namespace())),\n ),\n ),\n );\n\n protected readonly namespace = toSignal(\n this.namespace$.pipe(\n map((namespace: string) => {\n return namespace;\n }),\n ),\n );\n\n protected readonly partnerId = toSignal(\n this.partnerId$.pipe(\n map((partnerId: string) => {\n return partnerId;\n }),\n ),\n );\n private readonly integrationId$ = this.connectionId$.pipe(\n filter((connectionId) => !!connectionId),\n switchMap((connectionId) => this.cardService.getIntegrationId(connectionId, this.namespace())),\n );\n\n protected readonly integration$ = this.integrationId$.pipe(\n filter((integrationId) => !!integrationId),\n switchMap((integrationId) =>\n integrationId\n ? this.cardService.getIntegration(integrationId, this.namespace())\n : of({} as IntegrationMarketingResponse),\n ),\n );\n\n configPreconnectMessage(cardDetail: ConnectionIntegrationDetail): string {\n switch (cardDetail?.integration?.connectionMethod) {\n case this.connectionMethods.OAUTH2:\n return this.translate.instant('INTEGRATION_CARD.PRECONNECT_SSO_BASED_WARNING_PROBLEM', {\n title: cardDetail.integration.displayName,\n });\n default:\n return this.translate.instant('INTEGRATION_CARD.PRECONNECT_WARNING_PROBLEM', {\n title: cardDetail.integration.displayName,\n });\n }\n }\n\n protected integrationType$: Observable = this.integration$.pipe(\n take(1),\n switchMap((integration: any) => {\n return of(integration.integrationType);\n }),\n );\n\n protected readonly getAppDetailResponse$: Observable = combineLatest([this.namespace$, this.partnerId$]).pipe(\n switchMap(([namespace, partnerID]) => {\n return this.cardService.getRMAppDetail(namespace, partnerID);\n }),\n );\n\n protected readonly getAppSettings$: Observable = combineLatest([this.partnerId$, this.marketId$]).pipe(\n switchMap(([partnerID, marketID]) => {\n return this.cardService.getRMAppSettings(partnerID, marketID);\n }),\n );\n\n protected readonly getRMAppDetailsConfigPage$ = combineLatest([\n this.getAppDetailResponse$,\n this.getAppSettings$,\n ]).pipe(\n map(([rmAppDetails, rmAppSettings]) => {\n const res = {\n hasRMPremiumActive: false,\n upgradeSetting: rmAppSettings,\n } as RmAppDetail;\n if (rmAppDetails === this.cardService.getEditionId()) {\n res.hasRMPremiumActive = true;\n return res;\n }\n return res;\n }),\n );\n\n protected readonly cardDetail$ = combineLatest([this.connection$, this.integration$]).pipe(\n map(([connection, integration]) => {\n if (integration && connection) {\n this.displaySettings = this.cardService.applePreconnectionHasToken(\n integration.integrationType,\n connection.status,\n connection.customFields,\n );\n if (this.displaySettings) {\n this.initializeFormGrop(connection, integration);\n }\n return {\n connection: connection,\n integration: integration,\n };\n }\n return {};\n }),\n );\n\n private readonly getBusinessName$: Observable = combineLatest([this.partnerId$, this.marketId$]).pipe(\n switchMap(([partnerID, marketID]) => {\n return this.cardService.getPlatformName(partnerID, marketID);\n }),\n );\n\n private readonly getBusinessName = toSignal(this.getBusinessName$);\n protected readonly pageData$ = combineLatest([this.cardDetail$, this.namespace$, this.connectionId$]).pipe(\n map(([cardDetail, namespace, connectionId]) => {\n let platformName = 'the platform';\n const businessName = this.getBusinessName();\n if (this.context === SupportedContexts.PI_CONTEXT_SMB && businessName) {\n platformName = businessName;\n }\n\n if (cardDetail?.integration?.configPageFields) {\n cardDetail.integration.configPageFields.forEach((formConfig: FormConfig) => {\n if (formConfig.fields) {\n formConfig.fields.forEach((field: FieldConfig) => {\n if (field.hintText) {\n field.hintText = field.hintText\n .replace('{{agid}}', namespace || '')\n .replaceAll('{{platformName}}', platformName);\n }\n });\n }\n });\n }\n return {\n cardDetail: cardDetail,\n namespace: namespace,\n connectionId: connectionId,\n };\n }),\n );\n\n protected accountDetails$: Observable = this.pageData$.pipe(\n take(1),\n map((data) => {\n const integration: any = data.cardDetail.integration;\n const connection: any = data.cardDetail.connection;\n return {\n integration,\n connection,\n };\n }),\n switchMap((data) => {\n if (data.connection.userId) {\n return this.cardService.getUserById(data.connection.userId).pipe(\n map((user) => ({\n user: user.firstName || user.lastName ? user : null,\n integration: data.integration,\n connection: data.connection,\n })),\n );\n } else {\n return of({\n user: null,\n integration: data.integration,\n connection: data.connection,\n });\n }\n }),\n map((data) => {\n const accountDetails: AccountDetails = {\n accountName: data.connection.label,\n connectionStatus: this.statusConversion(data.connection.status),\n };\n if (data.user) {\n accountDetails.requestedBy = `${data.user.firstName} ${data.user.lastName}`;\n }\n if (data.connection.statusLastUpdated) {\n accountDetails.statusLastUpdated = new Date(data.connection.statusLastUpdated);\n }\n if (data.connection.dataLastReceived) {\n accountDetails.dataLastReceived = new Date(data.connection.dataLastReceived);\n }\n\n if (data.integration.integrationType == IntegrationType.APPLEBUSINESSCONNECT) {\n const profileField = data.connection.customFields?.find((field) => field.label === 'placeCardUrl');\n accountDetails.profileURL = profileField ? profileField.value : null;\n } else {\n const profileField = data.connection.customFields?.find((field) => field.label === 'profileUrl');\n accountDetails.profileURL = profileField ? profileField.value : null;\n }\n\n const profileVerified = data.connection.customFields?.find((field) => field.label === 'isLocationVerified');\n accountDetails.isLocationVerified = profileVerified ? profileVerified.value : null;\n\n return accountDetails;\n }),\n );\n\n refreshConnection() {\n this.refreshTrigger$.next();\n }\n\n statusConversion(s: ConnectionStatus) {\n switch (s) {\n case ConnectionStatus.CONNECTED:\n return 'CONNECTED';\n case ConnectionStatus.DISCONNECTED:\n return 'DISCONNECTED';\n case ConnectionStatus.PRECONNECTED:\n return 'PRECONNECTED';\n }\n return '';\n }\n\n openWarnModal(card: { cardDetail: IntegrationConnectionDetail; namespace: string; connectionId: string }) {\n let warningMesssage;\n let dialogBoxtitle = this.translate.instant('INTEGRATION_CARD.TITLE', {\n title: card?.cardDetail?.integration?.displayName,\n });\n let confirmButtonMsg = this.translate.instant('INTEGRATION_CARD.DISCONNECT');\n let cancelBtnMsg = this.translate.instant('INTEGRATION_CARD.CANCEL');\n\n switch (card.cardDetail.integration?.integrationType) {\n case IntegrationType.FACEBOOK:\n warningMesssage = this.translate.instant('INTEGRATION_CARD.FACEBOOK_DISCONNECT_WARNING_MESSAGE');\n break;\n case IntegrationType.GOOGLEMYBUSINESS:\n warningMesssage = this.translate.instant('INTEGRATION_CARD.GOOGLE_BUSINESS_PROFILE_DISCONNECT_WARNING_MESSAGE');\n break;\n default:\n warningMesssage = this.translate.instant('INTEGRATION_CARD.MESSAGE');\n }\n\n if (card.cardDetail.connection?.status === ConnectionStatus.DISCONNECTED) {\n warningMesssage = this.translate.instant('INTEGRATION_CARD.CANCEL_CONNECTION_MSG');\n dialogBoxtitle = this.translate.instant('INTEGRATION_CARD.CANCEL_CONNECTION_TITLE', {\n title: card?.cardDetail?.integration?.displayName,\n });\n confirmButtonMsg = this.translate.instant('INTEGRATION_CARD.CANCEL_CONNECTION');\n cancelBtnMsg = this.translate.instant('INTEGRATION_CARD.KEEP_CONNECTION');\n }\n\n this.confirmationModal\n .openModal({\n type: 'warn',\n title: dialogBoxtitle,\n message: warningMesssage,\n confirmButtonText: confirmButtonMsg,\n cancelButtonText: cancelBtnMsg,\n })\n .pipe(take(1))\n .subscribe((userDidAction) => {\n if (userDidAction) {\n const integrationType = card.cardDetail.integration?.integrationType;\n const connectionStatus = card.cardDetail.connection?.status;\n const cookieKey = `dismissedInstruction_${integrationType}_${connectionStatus}`;\n if (this.cookieService.get(cookieKey)) {\n this.cookieService.delete(cookieKey, '/');\n }\n this.disconnectConnection(card);\n }\n });\n }\n\n //Used to get path of URL to make it generic for Both PC and BusinessApp\n // Example, if URL is https://vendasta-university-dot-vbc-demo.appspot.com/account/location/AG-JP5VN52N7P/settings/integrations/config/705947aa-21bc-4bfb-9484-bdbb85219b9b\n // we extract only account/location/AG-JP5VN52N7P/settings/integrations , which used to redirect.\n getCurrentPath(): string {\n let path = window.location.pathname.slice(1);\n const index = path.indexOf('config');\n path = path.substring(0, index - 1);\n return path;\n }\n\n navigateBack(): string {\n const path = this.getCurrentPath() + `?tab=${UserAction.MANAGE}`;\n return path;\n }\n\n protected disconnectConnection(card: {\n cardDetail: IntegrationConnectionDetail;\n namespace: string;\n connectionId: string;\n }) {\n if (!card) {\n console.warn('No card provided; cannot disconnect');\n return;\n }\n\n const connectionMethod = card.cardDetail.integration.connectionMethod;\n if (connectionMethod === ConnectionMethods.LEGACY_OAUTH) {\n this.disconnectLegacy(card);\n return EMPTY;\n }\n const integrationType = card.cardDetail.integration.integrationType;\n let deleteConnection$: Observable>;\n // Special case since we revoke the token, then delete connection for QBO\n if (\n integrationType.toLowerCase() === IntegrationType.QUICKBOOKS.toLowerCase() &&\n card.cardDetail.connection.status === ConnectionStatus.CONNECTED\n ) {\n deleteConnection$ = this.cardService.deleteConnectionAndRevokeAccessToken(card.namespace, card.connectionId);\n } else {\n deleteConnection$ = this.cardService.deleteConnection(card.namespace, card.connectionId);\n }\n\n deleteConnection$\n .pipe(\n tap(() => {\n this.snackbarService.openSuccessSnack('INTEGRATION_CARD.DELETE_SUCCESS_MESSAGE', {\n interpolateTranslateParams: { title: card.cardDetail.integration.displayName },\n });\n this.navigateToManageTab();\n return EMPTY;\n }),\n catchError(() => {\n this.snackbarService.openErrorSnack('INTEGRATION_CARD.DELETE_ERROR_MESSAGE');\n return EMPTY;\n }),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe();\n }\n\n protected disconnectLegacy(card: {\n cardDetail: IntegrationConnectionDetail;\n namespace: string;\n connectionId: string;\n }) {\n const integrationType = card.cardDetail.integration.integrationType;\n let disconnectURL = '';\n switch (integrationType) {\n case IntegrationType.GOOGLEANALYTICS:\n this.cardService\n .deleteGA4Connection(this.partnerId(), card.namespace)\n .pipe(\n tap(() => {\n this.navigateToManageTab();\n }),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe();\n break;\n case IntegrationType.GOOGLEMYBUSINESS:\n case IntegrationType.FACEBOOK:\n case IntegrationType.GOOGLESEARCHCONSOLE:\n card.cardDetail.connection.customFields.forEach((customField) => {\n if (customField.label === 'disconnectUrl') {\n disconnectURL = customField.value;\n }\n });\n this.cardService\n .deleteSocialConnections(disconnectURL)\n .pipe(\n tap(() => {\n this.navigateToManageTab();\n }),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe();\n break;\n case IntegrationType.GOOGLEMEET:\n case IntegrationType.ZOOMMEET:\n card.cardDetail.connection.customFields.forEach((customField) => {\n if (customField.label === 'disconnectUrl') {\n disconnectURL = customField.value;\n }\n });\n window.location.href = disconnectURL;\n break;\n case IntegrationType.QUICKBOOKSONLINEPERSONAL:\n // set the cookie TTL for 15 seconds.\n this.cookieService.set('qbopersonal-disconnect', card.cardDetail?.connection?.connectionId, 15 / 86400, '/');\n this.cardService\n .deleteQuickBookPersonalConnection(card.namespace, card.cardDetail?.connection?.userId)\n .pipe(\n tap(() => {\n this.navigateToManageTab();\n }),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe();\n\n // Optionally clear the cookie manually after 15 seconds (as a backup)\n setTimeout(() => {\n this.clearDisconnectCookie('qbopersonal-disconnect');\n }, 15000);\n break;\n case IntegrationType.INSTAGRAM:\n // set the cookie TTL for 10 seconds.\n this.cookieService.set(\n 'instagram-disconnect',\n String(card.cardDetail?.connection?.connectionId),\n 10 / 86400,\n '/',\n );\n // Deleting the cookie after 10 seconds.\n setTimeout(() => {\n this.clearDisconnectCookie('instagram-disconnect');\n }, 10000);\n this.cardService\n .disconnectInstagramConnection(card.connectionId, this.partnerId() || '', this.namespace() || '')\n .pipe(\n tap(() => {\n this.snackbarService.openSuccessSnack('INTEGRATION_CARD.DELETE_SUCCESS_MESSAGE', {\n interpolateTranslateParams: { title: IntegrationType.INSTAGRAM },\n });\n this.navigateToManageTab();\n }),\n catchError(() => {\n this.snackbarService.openErrorSnack('INTEGRATION_CARD.DELETE_ERROR_MESSAGE');\n return EMPTY;\n }),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe();\n break;\n }\n }\n\n // Clear the disconnect cookie\n private clearDisconnectCookie(name: string) {\n this.cookieService.delete(name, '/');\n }\n\n initializeFormGrop(connection: GetConnectionResponse, integration: IntegrationMarketingResponse) {\n this.syncSettingsForm = this.formBuilder.group({});\n const syncSettingIds = this.integrationUtilService.getFieldIdsFromConfig(\n integration?.configPageFields?.[0]?.fields ?? [],\n ); //TODO:PHNX assuming sync setting is first index for now\n connection.customFields?.forEach((con) => {\n if (syncSettingIds.includes(con.label)) {\n const control = new FormControl(this.stringToBooleanConversion(con.value));\n this.syncSettingsForm.addControl(con.label, control);\n }\n });\n }\n\n stringToBooleanConversion(value: string): boolean {\n if (value === 'true') {\n return true;\n }\n return false;\n }\n\n getCurrentURL(): string {\n let url = window.location.href;\n const configIndex = url.indexOf('config');\n url = url.substring(0, configIndex - 1);\n return url;\n }\n\n navigateToManageTab() {\n const path = this.getCurrentPath();\n this.router.navigate([path], {\n queryParams: { tab: UserAction.MANAGE },\n });\n }\n\n reconnectConnection(card: { cardDetail: IntegrationConnectionDetail; namespace: string; connectionId: string }) {\n if (card.cardDetail.integration.connectionMethod == ConnectionMethods.OAUTH2) {\n return this.cardService\n .performSSO(\n card.namespace,\n card.cardDetail.integration.integrationId,\n card.connectionId,\n this.getCurrentURL() + '?src=sso',\n )\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe();\n } else if (card.cardDetail.integration.connectionMethod == ConnectionMethods.LEGACY_OAUTH) {\n return this.legacyAuthService.HandleLegacyIntegration({\n cardDetail: card.cardDetail,\n namespace: card.namespace,\n });\n }\n\n return null;\n }\n\n handleButtonClick(rmAppDetails: RmAppDetail): void {\n this.dialog.open(DialogBoxComponent, {\n width: '463px',\n data: {\n rmAppDetails: rmAppDetails.hasRMPremiumActive,\n rmAppSettings: rmAppDetails.upgradeSetting,\n },\n });\n }\n\n navigateToAction(ctaUrl: string) {\n if (ctaUrl) {\n this.document.location.href = ctaUrl;\n }\n }\n}\n","@let integration = integration$ | async;\n@let connection = connection$ | async;\n\n \n \n \n \n \n \n \n \n {{ 'INTEGRATION_PAGE.PLATFORM_INTEGRATION' | translate }}\n \n
\n
\n
\n
\n
\n
\n
\n
\n \"Logo\"\n
\n
\n\n
\n
\n
{{ data.cardDetail?.integration?.displayName }}
\n
\n \n {{ 'INTEGRATION_CARD.CONNECTED' | translate }}\n \n \n {{ 'INTEGRATION_CARD.DISCONNECTED' | translate }}\n \n \n {{ 'INTEGRATION_CARD.CONNECTION_PENDING' | translate }}\n \n
\n
\n
{{ data.cardDetail?.integration.description }}
\n
\n
\n
\n
\n \n {{ 'INTEGRATION_CARD.CONNECTED' | translate }}\n \n \n {{ 'INTEGRATION_CARD.DISCONNECTED' | translate }}\n \n \n {{ 'INTEGRATION_CARD.CONNECTION_PENDING' | translate }}\n \n
\n
\n \n {{ 'INTEGRATION_CARD.CANCEL_CONNECTION' | translate }}\n \n \n {{ 'INTEGRATION_CARD.RECONNECT' | translate }}\n \n \n {{ 'INTEGRATION_CARD.DISCONNECT' | translate }}\n \n
\n \n \n {{ 'INTEGRATION_CARD.CANCEL_CONNECTION_REQUEST' | translate }}\n \n \n \n @if (data.cardDetail?.integration?.connectionMethod === connectionMethods.APIKEY) {\n \n {{ 'INTEGRATION_CARD.DISCONNECT' | translate }}\n \n } @else {\n \n {{ 'INTEGRATION_CARD.CANCEL' | translate }}\n \n \n {{ 'INTEGRATION_CARD.RESUME_CONNECTION' | translate }}\n \n }\n \n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n \n \n \n \n \n \n 0\n \"\n type=\"warning\"\n [showAction]=\"true\"\n actionTitle=\"{{ 'INTEGRATION_CARD.VERIFY_YOUR_BUSINESS' | translate }}\"\n (actionClick)=\"navigateToAction(data.cardDetail?.connection?.connectionMessages[0]?.ctaUrl)\"\n >\n
\n \n \n \n \n
\n @if (\n (integration?.instructions && connection?.status === connectionStatus.PRECONNECTED) ||\n (integration?.instructions &&\n data.cardDetail?.integration?.connectionMethod === connectionMethods.OAUTH2 &&\n connection?.status === connectionStatus.CONNECTED)\n ) {\n \n }\n

{{ 'CONFIG_PAGE.ACCOUNT_DETAILS' | translate }}

\n
\n \n
\n\n
\n \n
\n \n
\n

Settings

\n
\n \n
\n \n
\n \n
\n

{{ 'CONFIG_PAGE.RESOURCES' | translate }}

\n \n
\n
\n\n
\n
\n
\n
\n
\n
\n","import { Component, inject, Input, Signal } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { GalaxyAlertModule } from '@vendasta/galaxy/alert';\nimport { ConnectionMethods } from '@vendasta/platform-integrations';\nimport { CommonModule } from '@angular/common';\nimport { CardDataService } from '../../card-data.service';\nimport { IntegrationCard } from '../../model/Integration-connections-detail';\n\n@Component({\n selector: 'platform-integration-preconnect-alert',\n imports: [TranslateModule, GalaxyAlertModule, CommonModule],\n templateUrl: './preconnect-alert.component.html',\n styleUrl: './preconnect-alert.component.scss',\n})\nexport class PreconnectAlertComponent {\n @Input() preConnectedCards?: Signal;\n protected readonly connectionMethods = ConnectionMethods;\n private readonly cardService = inject(CardDataService);\n preConnectConnection() {\n if (this.preConnectedCards) {\n const cards = this.preConnectedCards();\n this.cardService.handleConnection(cards);\n }\n }\n}\n","
0\">\n \n \n \n \n \n \n \n \n \n \n
\n","import { Component, inject, Input, Signal } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { GalaxyAlertModule } from '@vendasta/galaxy/alert';\nimport { ConnectionMethods } from '@vendasta/platform-integrations';\nimport { CommonModule } from '@angular/common';\nimport { CardDataService } from '../../card-data.service';\nimport { IntegrationCard } from '../../model/Integration-connections-detail';\n\n@Component({\n selector: 'platform-integration-disconnect-alert',\n imports: [TranslateModule, GalaxyAlertModule, CommonModule],\n templateUrl: './disconnect-alert.component.html',\n styleUrl: './disconnect-alert.component.scss',\n})\nexport class DisconnectAlertComponent {\n @Input() disconnectedCards?: Signal;\n protected readonly connectionMethods = ConnectionMethods;\n private readonly cardService = inject(CardDataService);\n reconnectConnection() {\n if (this.disconnectedCards) {\n const cards = this.disconnectedCards();\n this.cardService.handleConnection(cards);\n }\n }\n}\n","
0\">\n \n \n \n \n \n 1\">\n \n \n \n \n
\n","import { Component, EventEmitter, inject, OnInit, Output } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { UtilService } from '../common/util.service';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { CookieService } from 'ngx-cookie-service';\n\n@Component({\n selector: 'platform-integration-banner',\n imports: [CommonModule, TranslateModule, MatButtonModule, MatIconModule],\n templateUrl: './integrations-banner.component.html',\n styleUrl: './integrations-banner.component.scss',\n})\nexport class IntegrationsBannerComponent implements OnInit {\n private readonly cookieService = inject(CookieService);\n private readonly utilService = inject(UtilService);\n\n protected readonly jobberLogo = this.utilService.getImageSrc('jobber_logo.png');\n protected readonly housecallproLogo = this.utilService.getImageSrc('house_call_pro.png');\n protected readonly petResortProLogo = this.utilService.getImageSrc('pet_resort_pro_logo.png');\n isIntegrationsBannerDismissed = false;\n\n @Output() navigateToBrowse = new EventEmitter();\n\n ngOnInit(): void {\n this.isIntegrationsBannerDismissed = Boolean(this.cookieService.get('integrations-banner-dismissed'));\n }\n\n dismissBanner() {\n this.cookieService.set('integrations-banner-dismissed', 'true', 0, '/');\n this.isIntegrationsBannerDismissed = true;\n }\n\n navigateToBrowseButton() {\n this.navigateToBrowse.emit(true);\n }\n}\n","
\n
\n close\n
\n
\n
\n {{ 'INTEGRATION_BANNER.BANNER_HEADER' | translate }}\n
\n
\n {{ 'INTEGRATION_BANNER.BANNER_DESCRIPTION' | translate }}\n
\n
\n
\n \"Jobber\n \"Housecall\n \"PetResort\n
\n
\n
\n \n \n {{ 'INTEGRATION_BANNER.NAVIGATE_TO_BROWSE' | translate }}\n \n
\n
\n
\n","import { Component, Inject, Input } from '@angular/core';\nimport { ConnectionMessage, Severity } from '@vendasta/platform-integrations';\nimport { AlertTypes, GalaxyAlertModule } from '@vendasta/galaxy/alert';\nimport { DOCUMENT } from '@angular/common';\nimport { TranslateModule } from '@ngx-translate/core';\n\n@Component({\n selector: 'platform-integration-connection-message',\n imports: [GalaxyAlertModule, TranslateModule],\n templateUrl: './connection-message.component.html',\n styleUrl: './connection-message.component.scss',\n})\nexport class ConnectionMessageComponent {\n @Input() messages!: ConnectionMessage[];\n constructor(@Inject(DOCUMENT) private document: Document) {}\n\n getAlertType(severity: Severity): AlertTypes {\n switch (severity) {\n case Severity.INFO:\n return 'info';\n case Severity.ERROR:\n return 'error';\n case Severity.WARNING:\n return 'warning';\n default:\n return 'info';\n }\n }\n\n navigateToAction(ctaUrl: string) {\n if (ctaUrl) {\n this.document.location.href = ctaUrl;\n }\n }\n}\n","@for (message of messages; track message) {\n \n
\n \n}\n","import { CommonModule } from '@angular/common';\nimport { Component, computed, DestroyRef, Inject, inject, OnInit, Optional, signal, Signal } from '@angular/core';\nimport { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport {\n PLATFORM_INTEGRATIONS_CONTEXT_INJECTION_TOKEN$,\n PLATFORM_INTEGRATIONS_NAMESPACE_INJECTION_TOKEN$,\n PLATFORM_INTEGRATIONS_PARTNER_ID_INJECTION_TOKEN$,\n PlatformIntegrationsI18nModule,\n} from '@galaxy/platform-integrations/shared';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { GalaxyAlertModule } from '@vendasta/galaxy/alert';\nimport { GalaxyEmptyStateModule } from '@vendasta/galaxy/empty-state';\nimport { GalaxyLoadingSpinnerModule } from '@vendasta/galaxy/loading-spinner';\nimport { GalaxyPageModule } from '@vendasta/galaxy/page';\nimport {\n ConnectionMessage,\n ConnectionResponse,\n ConnectionStatus,\n IntegrationMarketingResponse,\n SupportedContexts,\n} from '@vendasta/platform-integrations';\nimport { EMPTY, Observable, of } from 'rxjs';\nimport { catchError, map, switchMap } from 'rxjs/operators';\nimport { CardDataService } from './card-data.service';\nimport { IntegrationCardComponent } from './integration-card/integration-card.component';\nimport { PreconnectAlertComponent } from './custom-banner/preconnect-alert/preconnect-alert.component';\nimport { DisconnectAlertComponent } from './custom-banner/disconnect-alert/disconnect-alert.component';\nimport { User } from '@vendasta/iamv2';\nimport { UtilService } from './common/util.service';\nimport { IntegrationsBannerComponent } from './integrations-banner/integrations-banner.component';\nimport { IntegrationCard } from './model/Integration-connections-detail';\nimport { CookieService } from 'ngx-cookie-service';\nimport { GalaxyI18NModule } from '@vendasta/galaxy/i18n';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { GalaxyPageNoAccessUnauthorizedModule } from '@vendasta/galaxy/page-no-access-unauthorized';\nimport { ConnectionMessageComponent } from './custom-banner/connection-message/connection-message.component';\nimport { UserAction } from './const';\n\n@Component({\n selector: 'platform-integration',\n templateUrl: './platform-integrations.component.html',\n styleUrls: ['./platform-integrations.component.scss'],\n imports: [\n CommonModule,\n MatTabsModule,\n IntegrationCardComponent,\n PlatformIntegrationsI18nModule,\n PreconnectAlertComponent,\n DisconnectAlertComponent,\n GalaxyEmptyStateModule,\n MatIconModule,\n MatButtonModule,\n GalaxyAlertModule,\n TranslateModule,\n GalaxyLoadingSpinnerModule,\n GalaxyPageModule,\n GalaxyI18NModule,\n GalaxyPageNoAccessUnauthorizedModule,\n IntegrationsBannerComponent,\n ConnectionMessageComponent,\n ],\n})\nexport class PlatformIntegrationsComponent implements OnInit {\n protected tab = UserAction.BROWSE;\n protected isLoading = false;\n protected readonly userAction = UserAction;\n protected readonly route = inject(Router);\n protected readonly SupportedContexts = SupportedContexts;\n\n private readonly activeRoute = inject(ActivatedRoute);\n private readonly destroyRef = inject(DestroyRef);\n private readonly cardService = inject(CardDataService);\n private readonly utilService = inject(UtilService);\n private readonly cookieService = inject(CookieService);\n private readonly router = inject(Router);\n\n private readonly integrationCards$ = this.cardService.getIntegrationsList();\n protected readonly noAccess$ = this.integrationCards$.pipe(\n map(() => false),\n catchError((err) => (err.status === 403 ? of(true) : of(false))),\n );\n\n protected readonly emptyPageLogo = this.utilService.getImageSrc('empty_page.png');\n private readonly snackbarService = inject(SnackbarService);\n private readonly connectionList = signal([]);\n protected readonly integrationCards = toSignal(this.integrationCards$.pipe(catchError(() => EMPTY)));\n protected readonly userDetails = signal>(new Map());\n protected readonly manageTabCards: Signal = computed(() => {\n const integrationList = this.integrationCards();\n const connectionList = this.connectionList();\n const userDetails = this.userDetails();\n const result: IntegrationCard[] = [];\n const qboPersonalPendingDisconnectConnectionID = this.cookieService.get('qbopersonal-disconnect');\n const instagramPendingDisconnectConnectionID = this.cookieService.get('instagram-disconnect');\n\n try {\n const integrations = new Map();\n integrationList?.forEach((integration) => {\n integrations.set(integration.integrationId, integration);\n });\n connectionList.forEach((connection) => {\n if (\n qboPersonalPendingDisconnectConnectionID !== connection.connectionId &&\n instagramPendingDisconnectConnectionID !== connection.connectionId\n ) {\n result.push({\n namespace: this.namespace(),\n connection,\n integration: integrations.get(connection.integrationId),\n user: userDetails.get(connection.userId),\n });\n }\n });\n } catch (error) {\n return result;\n }\n const sortedIntegrationList = result.sort((a, b) => {\n if (!a.integration || !b.integration) {\n return 0;\n }\n return a.integration.displayName.localeCompare(b.integration.displayName);\n });\n\n return sortedIntegrationList;\n });\n\n protected readonly browseTabCards: Signal = computed(() => {\n const integrationList = this.integrationCards();\n const connectionList = this.connectionList();\n const qboPersonalPendingDisconnectConnectionID = this.cookieService.get('qbopersonal-disconnect');\n const instagramPendingDisconnectConnectionID = this.cookieService.get('instagram-disconnect');\n\n const connections = new Map();\n connectionList?.forEach((connection) => {\n if (\n qboPersonalPendingDisconnectConnectionID !== connection.connectionId &&\n instagramPendingDisconnectConnectionID !== connection.connectionId\n ) {\n connections.set(connection.integrationId, connection);\n }\n });\n\n const result: IntegrationCard[] = [];\n integrationList?.forEach((integration) => {\n result.push({\n namespace: this.namespace(),\n integration,\n connection: connections.get(integration.integrationId),\n });\n });\n\n const sortedIntegrationList = result.sort((a, b) => {\n if (!a.integration || !b.integration) {\n return 0;\n }\n return a.integration.displayName.localeCompare(b.integration.displayName);\n });\n\n return sortedIntegrationList;\n });\n\n constructor(\n @Optional()\n @Inject(PLATFORM_INTEGRATIONS_PARTNER_ID_INJECTION_TOKEN$)\n public readonly partnerId$: Observable | null,\n @Inject(PLATFORM_INTEGRATIONS_NAMESPACE_INJECTION_TOKEN$)\n public readonly namespace$: Observable,\n @Inject(PLATFORM_INTEGRATIONS_CONTEXT_INJECTION_TOKEN$)\n public readonly context: SupportedContexts,\n ) {}\n\n protected readonly disconnectedCards: Signal = computed(() => {\n return this.manageTabCards()?.filter((card) => card?.connection?.status === ConnectionStatus.DISCONNECTED);\n });\n\n protected readonly preConnectedCards: Signal = computed(() => {\n return this.manageTabCards()?.filter((card) => card?.connection?.status === ConnectionStatus.PRECONNECTED);\n });\n\n protected readonly connectedMessages: Signal = computed(() => {\n return this.manageTabCards()\n ?.flatMap((card) => card?.connection?.connectionMessages || [])\n .filter((message): message is ConnectionMessage => !!message);\n });\n\n protected readonly namespace = toSignal(this.namespace$);\n\n private setConnections(queryTab: number) {\n this.isLoading = true;\n const namespace = this.namespace();\n if (!namespace) {\n this.isLoading = false;\n return;\n }\n this.cardService\n .getConnectionsList(namespace)\n .pipe(\n map((connections) => {\n this.connectionList.set(connections);\n const userIds: string[] = connections\n ?.filter((connection) => connection?.userId)\n .map((connection) => connection.userId);\n const isConnectionPresent = connections?.some(\n (connection) =>\n connection.status === ConnectionStatus.CONNECTED ||\n connection.status === ConnectionStatus.DISCONNECTED ||\n connection.status === ConnectionStatus.PRECONNECTED,\n );\n\n switch (queryTab) {\n case UserAction.MANAGE:\n this.tab = UserAction.MANAGE;\n break;\n case UserAction.BROWSE:\n this.tab = UserAction.BROWSE;\n break;\n default:\n if (isConnectionPresent) {\n this.tab = UserAction.MANAGE;\n } else {\n this.tab = UserAction.BROWSE;\n }\n }\n\n if (!isConnectionPresent) {\n this.isLoading = false;\n }\n return userIds;\n }),\n switchMap((userIds) => {\n this.isLoading = false;\n return this.setUserDetails(userIds);\n }),\n catchError((err) => {\n console.log('error while fetching connections: ', err);\n return EMPTY;\n }),\n )\n\n .subscribe();\n }\n\n private setUserDetails(userIds: string[]) {\n return this.cardService.getMultiByUserId(userIds).pipe(\n map((users) => {\n const usersMap: Map = new Map(\n users\n .filter((user) => user?.userId)\n .map((user) => [user.userId, user.firstName || user.lastName ? user : null]),\n );\n this.userDetails.set(usersMap);\n }),\n catchError((err) => {\n console.error('error in setting user details: ', err);\n return EMPTY;\n }),\n );\n }\n\n changeTab(tab: UserAction) {\n this.route.navigate(['.'], {\n relativeTo: this.activeRoute,\n queryParams: { tab: tab },\n });\n }\n\n previousPageUrl(): string {\n if (this.context === SupportedContexts.PI_CONTEXT_PARTNER) {\n return `/settings`;\n } else if (this.context === SupportedContexts.PI_CONTEXT_SMB) {\n return `/account/location/${this.namespace()}/administration`;\n }\n return '';\n }\n\n ngOnInit(): void {\n const source = 'sso';\n this.activeRoute.queryParams\n .pipe(\n map((param) => {\n const queryTab = Number(param['tab']);\n this.setConnections(queryTab);\n const isSSO = param['src'] ? param['src'] : '';\n const errorCode = param['error'] ? param['error'] : '';\n if (errorCode) {\n const errorDescription = param['error_description']\n ? param['error_description']\n : 'INTEGRATION_CARD.CONNECTION_ERROR_SSO';\n this.snackbarService.openErrorSnack(errorDescription);\n this.route.navigate(['.'], { relativeTo: this.activeRoute, queryParams: { tab: UserAction.BROWSE } });\n } else if (isSSO === source) {\n this.snackbarService.openSuccessSnack('INTEGRATION_CARD.CREATE_CONNECTION_SUCCESS');\n this.route.navigate(['.'], { relativeTo: this.activeRoute, queryParams: { tab: UserAction.MANAGE } });\n }\n }),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe();\n }\n}\n","\n @if (isLoading) {\n \n } @else {\n @if ((noAccess$ | async) === true) {\n \n } @else {\n
\n \n \n
\n
\n
\n \n
\n
\n \n
\n \n \n
\n @for (card of browseTabCards(); track card) {\n @if (card.integration) {\n
\n \n
\n }\n }\n
\n
\n
\n
\n \n
\n
\n @if (context === SupportedContexts.PI_CONTEXT_SMB) {\n \n }\n
\n \n
\n
\n \n
\n \n \n
\n @for (card of manageTabCards(); track card) {\n @if (card.integration) {\n
\n \n
\n }\n }\n
\n @if (!manageTabCards()?.length) {\n \n \n \"emptypage\"\n \n {{\n 'INTEGRATION_CARD.EMPTY_PAGE_HEADING' | translate\n }}\n

{{ 'INTEGRATION_CARD.EMPTY_PAGE_DESCRIPTION' | translate }}

\n \n \n \n
\n }\n
\n
\n
\n
\n
\n
\n }\n }\n \n \n \n \n \n {{ 'INTEGRATION_PAGE.PLATFORM_INTEGRATION' | translate }}\n \n
\n","import { RouterModule, Routes } from '@angular/router';\nimport { NgModule } from '@angular/core';\nimport { MarketingPageComponent } from './marketing-page/marketing-page.component';\nimport { ConfigPageComponent } from './config-page/config-page.component';\nimport { PlatformIntegrationsComponent } from './platform-integrations.component';\nimport { NotFoundComponent } from './common/not-found/not-found';\n\nconst routes: Routes = [\n {\n path: 'not-found',\n component: NotFoundComponent,\n },\n {\n path: `:integrationId`,\n component: MarketingPageComponent,\n },\n {\n path: `config/:connectionId`,\n component: ConfigPageComponent,\n },\n {\n path: '',\n component: PlatformIntegrationsComponent,\n },\n];\n\n@NgModule({\n declarations: [],\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class PlatformIntegrationsLibModule {}\n","import { Component, computed, inject, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ConnectionButtonConfigModel } from '../model/connection-button-config.model';\nimport { ConnectionActionService } from '../common';\nimport { ConnectionStatus } from '@vendasta/platform-integrations';\nimport { MatButtonModule } from '@angular/material/button';\n\n@Component({\n selector: 'platform-integration-connection-button',\n imports: [CommonModule, MatButtonModule],\n templateUrl: './connection-button.component.html',\n styleUrl: './connection-button.component.scss',\n})\nexport class ConnectionButtonComponent {\n private readonly connectionActionService = inject(ConnectionActionService);\n\n config = input.required();\n label = computed(() => this.updateLabel(this.connectionActionService.connectionStatus()));\n\n ngOnInit() {\n this.label();\n }\n\n private updateLabel(status: ConnectionStatus): string {\n switch (status) {\n case ConnectionStatus.CONNECTED:\n return this.config().disconnectLabel;\n case ConnectionStatus.DISCONNECTED:\n return this.config().reconnectLabel;\n case ConnectionStatus.PRECONNECTED:\n return this.config().resumeLabel;\n default:\n return this.config().connectLabel;\n }\n }\n\n onClick() {\n if (this.config().isDisabled) {\n return;\n }\n switch (this.connectionActionService.connectionStatus()) {\n case ConnectionStatus.CONNECTED:\n return this.config().disconnectAction();\n case ConnectionStatus.DISCONNECTED:\n return this.config().connectAction();\n case ConnectionStatus.PRECONNECTED:\n return this.config().preconnectAction();\n default:\n // this should cater for ConnectionStatus.UNSPECIFIED_STATUS as well,\n // Unspecified means there is no past connection\n return this.config().connectAction();\n }\n }\n}\n","\n {{ label() }}\n\n","export * from './const';\nexport * from './model';\nexport * from './common';\n\nexport * from './platform-integrations-lib.module';\n\nexport * from './platform-integrations.component';\nexport * from './marketing-page/marketing-page.component';\nexport * from './config-page/config-page.component';\nexport * from './config-page/sync-settings/sync-settings.component';\nexport * from './connection-button/connection-button.component';\n\nexport * from './card-data.service';\n","export * from './lib/index';\n"],"mappings":"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","names":["UserAction","init_const","__esmMin","init_connection_button_config_model","__esmMin","ServiceType","IntegrationType","init_connection_integration_detail","__esmMin","init_model","__esmMin","init_connection_button_config_model","init_connection_integration_detail","FeatureFlagService","init_feature_flag_service","__esmMin","init_core","init_src","init_operators","constructor","featureFlagService","inject","FeatureFlagApiService","checkFeatureFlag","partnerId","marketId","featureIds","batchGetStatus","pipe","map","val","featureId","factory","ɵfac","providedIn","UtilService","init_util_service","__esmMin","getCurrentURL","url","location","href","lastIndex","lastIndexOf","substring","getImageSrc","imageName","window","hostname","factory","ɵfac","providedIn","NO_RM_PRODUCT_MESSAGE","CardDataService","init_card_data_service","__esmMin","init_http","init_core","init_vendasta_platform_integrations","init_esm","init_snackbar_service","init_vendasta_iamv2","init_operators","init_connection_integration_detail","init_vendasta_accounts_legacy","init_vendasta_marketplace_apps","init_src","init_feature_flag_service","init_rxjs_interop","init_vendasta_partner","init_vendasta_google_analytics","init_vendasta_quickbooks","init_vendasta_meetings","init_vendasta_instagram","constructor","namespace$","origin","context","utilService","partnerId$","marketId$","integrationService","inject","IntegrationMarketingApiService","connectionService","ConnectionsApiService","snackbarService","SnackbarService","authService","OAuthApiService","accountService","AccountsApiService","whitelabelService","WhitelabelApiService","marketplaceAppsService","PartnerApiService","featureFlagService","FeatureFlagService","iamService","IAMService","environmentService","EnvironmentService","ga","GA4PropertiesApiService","http","HttpClient","quickBooksService","QuickBooksService","meetingsService","MeetingsService","instagramService","InstagramApiService","partnerApiService","partnerID","toSignal","pipe","map","marketID","getIntegrationsList","list","ListIntegrationMarketingRequest","pagingOptions","pageSize","supportedContexts","mergeMap","resp","featureFlagIds","integrations","integration","integrationType","toLowerCase","checkFeatureFlag","flags","filter","_","index","catchError","err","status","openErrorSnack","throwError","shareReplay","getIntegration","integrationId","namespace","get","GetIntegrationMarketingRequest","getConnection","connectionId","GetConnectionRequest","filters","getIntegrationId","deleteGA4Connection","partnerId","accountGroupId","deleteProperty","DeletePropertyRequest","businessId","category","Category","CATEGORY_WEBSITE","subcategory","disconnectInstagramConnection","listUsers","switchMap","response","connectionIDParts","split","instagramUserID","length","users","user","instagramUserId","deleteUser","userId","EMPTY","listMeetConnection","take","MeetingSourceQuery","source","MeetingSource","MEETING_SOURCE_ZOOM","connectNextUrl","window","location","href","disconnectNextUrl","MEETING_SOURCE_GOOGLE_MEET","bufferSize","refCount","deleteSocialConnections","deleteUrl","post","deleteQuickBookPersonalConnection","userID","revokeAccessToken","getConnectionsList","integrationID","cursor","getConnectionListRequest","pagingMetadata","hasMore","nextCursor","nextPageConnections","connections","concat","of","requestParams","ListConnectionRequest","getRMAppDetail","GetRequest","accountId","productId","account","editionId","console","log","getRMAppSettings","getAppSettings","GetAppSettingsRequest","marketId","appId","disableFallback","appSettings","handleConnection","cards","card","connectionMethod","ConnectionMethods","OAUTH2","performSSO","String","connection","getCurrentURL","subscribe","createConnection","syncData","create","CreateConnectionRequest","customFields","deleteConnectionAndRevokeAccessToken","revokeAccessTokenAndDelete","RevokeAccessTokenAndDeleteRequest","deleteConnection","delete","DeleteConnectionRequest","updateConnection","customFieldUpdates","connectionStatusUpdate","update","CustomFields","label","value","fieldMask","FieldMask","paths","updateFields","UpdateConnectionRequestUpdateFields","UpdateConnectionRequest","getEditionId","getEnvironment","Environment","DEMO","PROD","baseURL","getAuthorizationCodeRedirectUrl","GetAuthorizationCodeRedirectURLRequest","baseUrl","url","undefined","getUserById","getUser","UserIdentifier","getMultiByUserId","userIds","userIdentifiers","getMultiUsers","getPlatformName","getBranding","branding","apps","name","getProductDetailsByProductIds","productIds","appKeys","id","getMultiApp","GetMultiAppRequest","includeNotEnabled","getIntegrationByIntegrationType","integrationList","find","getExistingConnectionByIntegrationType","Error","connectionList","connect","ConnectionStatus","CONNECTED","DISCONNECTED","PRECONNECTED","applePreconnectionHasToken","connectionStatus","IntegrationType","APPLEBUSINESSCONNECT","some","field","ɵɵinject","PLATFORM_INTEGRATIONS_NAMESPACE_INJECTION_TOKEN$","PLATFORM_INTEGRATIONS_ORIGIN_INJECTION_TOKEN","PLATFORM_INTEGRATIONS_CONTEXT_INJECTION_TOKEN$","UtilService","PLATFORM_INTEGRATIONS_PARTNER_ID_INJECTION_TOKEN$","PLATFORM_INTEGRATIONS_MARKET_ID_INJECTION_TOKEN$","factory","ɵfac","providedIn","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","_r1","action_r2","ɵɵnextContext","$implicit","ctx_r2","ɵɵresetView","onActionClick","actionType","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","label","_r4","ɵɵtemplate","ActionTypeComponent_For_4_Conditional_0_Template","ActionTypeComponent_For_4_Conditional_1_Template","ɵɵconditional","ACTION_TYPE_SEND_REQUEST","ACTION_TYPE_COPY","ACTION_TYPE_SAVE","ACTION_TYPE_EDIT","ACTION_TYPE_ADD_CONNECTION","ACTION_TYPE_CONTINUE","ActionTypeComponent","init_action_type_component","__esmMin","init_core","init_dialog","init_vendasta_platform_integrations","init_icon","init_button","init_card","init_slide_toggle","init_checkbox","init_radio","init_common","init_input","init_divider","init_form_field","init_ngx_translate_core","init_forms","init_src","constructor","actions","ActionType","actionClicked","EventEmitter","action","emit","selectors","inputs","outputs","decls","vars","consts","template","rf","ctx","ɵɵelementContainerStart","ɵɵrepeaterCreate","ActionTypeComponent_For_4_Template","ɵɵrepeaterTrackByIndex","ɵɵrepeater","MatDialogActions","MatIconModule","MatDialogClose","MatButtonModule","MatButton","MatCardModule","MatSlideToggleModule","MatCheckboxModule","MatRadioModule","CommonModule","GalaxyInputModule","MatDividerModule","MatInputModule","MatFormFieldModule","GalaxyFormFieldModule","TranslateModule","TranslatePipe","ReactiveFormsModule","FormsModule","PlatformIntegrationsI18nModule","encapsulation","IntegrationUtilService","init_integration_util_service","__esmMin","getFieldIdsFromConfig","fieldConfig","flatMap","field","id","dependents","getFieldConfigAsMap","Map","setting","entries","forEach","dependent","push","factory","ɵfac","providedIn","ɵɵelementContainerStart","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵelement","ɵɵadvance","ɵɵtextInterpolate1","field_r1","label","ɵɵproperty","ctx_r1","syncSettingsForm","fieldType","placeHolder","id","defaultValue","required","ɵɵpureFunction1","_c0","tmp_10_0","get","hasError","touched","hintText","ɵɵtemplate","SupportBasedFormComponent_div_4_ng_container_1_Template","FIELD_TYPE_TEXT","SupportBasedFormComponent","init_support_based_form_component","__esmMin","init_core","init_common","init_button","init_dialog","init_ngx_translate_core","init_forms","init_icon","init_card","init_slide_toggle","init_checkbox","init_vendasta_platform_integrations","init_src","init_action_type_component","init_form_field","init_integration_util_service","init_connection_integration_detail","constructor","context","saveSyncSettingsEvent","EventEmitter","integrationUtilService","inject","IntegrationUtilService","integrationTypeEnums","IntegrationType","formBuilder","FormBuilder","actionType","ActionType","FieldType","ngOnInit","initializeFormGroup","group","preconnectFormFields","fields","length","forEach","field","control","Validators","addControl","handleAction","action","ACTION_TYPE_CANCEL","close","ACTION_TYPE_SEND_REQUEST","valid","send","markAllAsTouched","dialogRef","emit","getRawValue","ɵɵdirectiveInject","PLATFORM_INTEGRATIONS_CONTEXT_INJECTION_TOKEN$","selectors","inputs","integrationDisplayName","outputs","decls","vars","consts","template","rf","ctx","SupportBasedFormComponent_div_4_Template","ɵɵlistener","$event","title","description","ɵɵsanitizeHtml","actions","MatDialogActions","MatIconModule","MatDialogTitle","MatDialogContent","MatButtonModule","MatCardModule","MatCard","MatSlideToggleModule","TranslateModule","ReactiveFormsModule","DefaultValueAccessor","NgControlStatus","NgControlStatusGroup","RequiredValidator","FormGroupDirective","FormControlName","FormsModule","MatCheckboxModule","CommonModule","NgClass","NgForOf","NgIf","PlatformIntegrationsI18nModule","ActionTypeComponent","GalaxyFormFieldModule","FormFieldComponent","styles","DialogBoxComponent","init_unlock_dialogue_box_component","__esmMin","init_core","init_dialog","init_common","init_button","init_ngx_translate_core","init_src","init_card_data_service","constructor","data","router","translate","inject","TranslateService","cardService","CardDataService","location","Location","unlockModelLogoURL","unlockModelSubtitle","setUnlockBoxLogo","branding","iconUrl","setUnlockBoxSubtitle","name","ngOnInit","dialogueBoxDetails","Description","editionChange","editionUpgradeAction","EditionUpgradeAction","EDITION_UPGRADE_ACTION_CONTACT_SALES","instant","ButtonText","redirectToSales","editionId","getEditionId","upgradePath","nextURL","encodeURIComponent","path","itemsJSON","JSON","stringify","appId","url","navigateByUrl","ɵɵdirectiveInject","MAT_DIALOG_DATA","Router","selectors","attrs","_c0","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵtext","ɵɵlistener","ɵɵadvance","ɵɵproperty","ɵɵsanitizeUrl","ɵɵtextInterpolate","ɵɵpipeBind1","ɵɵtextInterpolate1","CommonModule","MatDialogModule","MatDialogClose","MatDialogActions","MatDialogContent","MatButtonModule","MatButton","TranslateModule","TranslatePipe","PlatformIntegrationsI18nModule","styles","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","option_r2","value","ɵɵadvance","ɵɵtextInterpolate1","label","ɵɵtemplate","Oauth2BasedFormComponent_ng_container_1_div_7_mat_card_1_div_11_mat_radio_group_4_mat_radio_button_2_Template","dep_r3","id","options","Oauth2BasedFormComponent_ng_container_1_div_7_mat_card_1_div_11_mat_radio_group_4_Template","ɵɵtextInterpolate","fieldType","ctx_r3","FIELD_TYPE_RADIO","ɵɵelementContainerStart","ɵɵlistener","ɵɵrestoreView","_r5","rmAppDetails_r6","ɵɵnextContext","ngIf","ɵɵresetView","handleButtonClick","ɵɵpipeBind1","ɵɵelement","Oauth2BasedFormComponent_ng_container_1_div_7_mat_card_1_mat_icon_8_Template","Oauth2BasedFormComponent_ng_container_1_div_7_mat_card_1_div_11_Template","Oauth2BasedFormComponent_ng_container_1_div_7_mat_card_1_ng_container_12_Template","setting_r7","ɵɵpureFunction1","_c0","hasRMPremiumActive","hintText","dependents","ɵɵpureFunction0","_c1","Oauth2BasedFormComponent_ng_container_1_div_7_mat_card_1_Template","hidden","Oauth2BasedFormComponent_ng_container_1_div_7_Template","$event","_r1","handleAction","preconnectFormFields","title","description","syncSettingsForm","getSyncSettings","actions","Oauth2BasedFormComponent","init_oauth2_based_form_component","__esmMin","init_core","init_common","init_forms","init_dialog","init_card_data_service","init_src","init_esm","init_operators","init_unlock_dialogue_box_component","init_icon","init_button","init_card","init_slide_toggle","init_ngx_translate_core","init_checkbox","init_vendasta_platform_integrations","init_radio","init_action_type_component","constructor","namespace$","partnerId$","marketId$","data","context","saveSyncSettingsEvent","EventEmitter","actionType","ActionType","FieldType","cardService","inject","CardDataService","dialog","MatDialog","formBuilder","FormBuilder","cdRef","ChangeDetectorRef","getAppDetailResponse$","combineLatest","pipe","switchMap","namespace","partnerID","getRMAppDetail","getAppSettings$","marketID","getRMAppSettings","getRMAppDetailsMarketingPage$","map","rmAppDetails","rmAppSettings","partnerId","res","upgradeSetting","getEditionId","controls","setValue","disable","catchError","of","ngOnInit","initializeFormGroup","group","forEach","field","control","FIELD_TYPE_SELECT","values","defaultValue","required","Validators","addControl","dep","depControl","disabled","valueChanges","subscribe","get","enable","fields","initializeDependentControls","parentControl","filter","setting","SupportedContexts","PI_CONTEXT_PARTNER","action","ACTION_TYPE_CANCEL","close","ACTION_TYPE_CONTINUE","continue","dialogRef","emit","getRawValue","open","DialogBoxComponent","width","integrationId","ɵɵdirectiveInject","PLATFORM_INTEGRATIONS_NAMESPACE_INJECTION_TOKEN$","PLATFORM_INTEGRATIONS_PARTNER_ID_INJECTION_TOKEN$","PLATFORM_INTEGRATIONS_MARKET_ID_INJECTION_TOKEN$","MAT_DIALOG_DATA","PLATFORM_INTEGRATIONS_CONTEXT_INJECTION_TOKEN$","selectors","inputs","integrationDisplayName","outputs","decls","vars","consts","template","rf","ctx","Oauth2BasedFormComponent_ng_container_1_Template","MatDialogActions","MatIconModule","MatIcon","MatDialogClose","MatDialogTitle","MatDialogContent","MatButtonModule","MatButton","MatCardModule","MatCard","MatCardContent","MatSlideToggleModule","TranslateModule","TranslatePipe","ReactiveFormsModule","NgControlStatus","NgControlStatusGroup","FormGroupDirective","FormControlName","FormsModule","MatCheckboxModule","MatCheckbox","MatRadioModule","MatRadioGroup","MatRadioButton","CommonModule","NgClass","NgForOf","NgIf","NgSwitch","NgSwitchCase","AsyncPipe","PlatformIntegrationsI18nModule","ActionTypeComponent","styles","ApikeyBasedComponent","init_apikey_based_component","__esmMin","init_dialog","init_forms","init_src","init_vendasta_platform_integrations","init_icon","init_button","init_card","init_slide_toggle","init_ngx_translate_core","init_checkbox","init_radio","init_common","init_input","init_divider","init_form_field","init_action_type_component","constructor","actionType","ActionType","fieldType","FieldType","handleAction","action","ACTION_TYPE_CANCEL","close","ACTION_TYPE_ADD_CONNECTION","continue","dialogRef","send","selectors","inputs","preconnectFormFields","integrationDisplayName","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵelementContainerStart","ɵɵtext","ɵɵelementEnd","ɵɵelement","ɵɵlistener","$event","ɵɵadvance","ɵɵtextInterpolate","title","ɵɵproperty","description","ɵɵsanitizeHtml","actions","MatDialogActions","MatIconModule","MatDialogTitle","MatDialogContent","MatButtonModule","MatCardModule","MatSlideToggleModule","TranslateModule","ReactiveFormsModule","FormsModule","MatCheckboxModule","MatRadioModule","CommonModule","GalaxyInputModule","MatDividerModule","MatInputModule","MatFormFieldModule","GalaxyFormFieldModule","PlatformIntegrationsI18nModule","ActionTypeComponent","styles","DynamicFormComponent","init_dynamic_form_component","__esmMin","init_core","init_common","init_dialog","init_support_based_form_component","init_vendasta_platform_integrations","init_oauth2_based_form_component","init_apikey_based_component","init_ngx_translate_core","init_src","init_rxjs_interop","constructor","data","saveSyncSettingsEvent","EventEmitter","dialogRef","inject","MatDialogRef","cdRef","ChangeDetectorRef","destroyRef","DestroyRef","ngAfterViewInit","loadComponent","detectChanges","formType","integration","connectionMethod","ConnectionMethods","VENDOR_MANAGED","componentRef","dynamicComponentContainer","createComponent","SupportBasedFormComponent","instance","preconnectFormFields","integrationDisplayName","displayName","pipe","takeUntilDestroyed","subscribe","emit","OAUTH2","Oauth2BasedFormComponent","APIKEY","ApikeyBasedComponent","ɵɵdirectiveInject","MAT_DIALOG_DATA","selectors","viewQuery","rf","ctx","ViewContainerRef","ɵɵelementStart","ɵɵelementContainer","ɵɵelementEnd","CommonModule","PlatformIntegrationsI18nModule","TranslateModule","encapsulation","ConnectionActionService","init_connection_button_action_service","__esmMin","init_core","init_esm","init_card_data_service","init_vendasta_platform_integrations","init_dialog","init_dynamic_form_component","init_src","init_router","constructor","context","activatedRoute","inject","ActivatedRoute","router","Router","cardService","CardDataService","injector","Injector","matDialog","MatDialog","namespace","integrationList$","of","connectionList$","connection$","integration","signal","IntegrationMarketingResponse","connectionStatus","ConnectionStatus","UNSPECIFIED_STATUS","initialize","integrationType","nameSpace","getIntegrationsList","pipe","switchMap","integrations","find","set","getConnectionsList","integrationId","map","connectionList","connections","filter","connect","status","CONNECTED","DISCONNECTED","PRECONNECTED","length","undefined","subscribe","connection","refreshStatus","getNextURL","mutableQP","__spreadValues","snapshot","queryParams","urlWithoutQueryParams","url","split","window","location","origin","createUrlTree","toString","createConnection","resp","performSSO","connectionId","continueConnection","openConnectModal","newConnection","dialogConfig","MatDialogConfig","width","data","open","DynamicFormComponent","componentInstance","saveSyncSettingsEvent","_data","ɵɵinject","PLATFORM_INTEGRATIONS_CONTEXT_INJECTION_TOKEN$","factory","ɵfac","providedIn","init_common","__esmMin","init_connection_button_action_service","Rgba","Hsva","Hsla","Cmyk","ColorPickerService","SUPPORTS_TOUCH","ColorPickerModule","init_ngx_color_picker","__esmMin","init_core","init_common","r","g","b","a","h","s","v","l","m","y","k","active","hsva","hsla","i","f","p","q","t","cmyk","rgba","c","max","min","d","allowHex8","hex","colorString","stringParsers","execResult","key","parser","match","color","outputFormat","alphaChannel","hslaText","__ngFactoryType__","ɵɵdefineInjectable","ɵɵdefineNgModule","ɵɵdefineInjector","CommonModule","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","ɵɵpureFunction2","_c1","ctx_r1","connection","status","connectionStatus","DISCONNECTED","PRECONNECTED","ɵɵadvance","ɵɵtextInterpolate1","integration","description","ɵɵelement","getProfileImageUrl","user","profileImageUrl","label","firstName","lastName","ɵɵelementContainerStart","ɵɵtextInterpolate","statusLastUpdated","ɵɵpipeBind2","ɵɵpureFunction1","_c2","ɵɵpipeBind1","getStatusLastUpdatedDate","ɵɵtemplate","IntegrationCardComponent_mat_card_0_mat_card_content_11_glxy_avatar_2_Template","IntegrationCardComponent_mat_card_0_mat_card_content_11_ng_container_3_Template","IntegrationCardComponent_mat_card_0_mat_card_content_11_ng_template_4_Template","ɵɵtemplateRefExtractor","connectedCardContent_r3","ɵɵlistener","ɵɵrestoreView","_r1","ɵɵnextContext","ɵɵresetView","redirect","$event","handleImageError","IntegrationCardComponent_mat_card_0_mat_icon_8_Template","IntegrationCardComponent_mat_card_0_mat_icon_9_Template","IntegrationCardComponent_mat_card_0_mat_card_content_10_Template","IntegrationCardComponent_mat_card_0_mat_card_content_11_Template","_c0","logo","ɵɵsanitizeUrl","displayName","CONNECTED","tab","userAction","BROWSE","MANAGE","IntegrationCardComponent","init_integration_card_component","__esmMin","init_common","init_core","init_button","init_card","init_icon","init_router","init_ngx_translate_core","init_badge","init_snackbar_service","init_vendasta_platform_integrations","init_src","init_avatar","init_pipes","init_const","constructor","UserAction","router","inject","Router","ConnectionStatus","getCurrentPath","path","window","location","pathname","lastIndex","indexOf","substring","event","element","target","src","style","backgroundColor","customFields","find","field","value","Date","openMarketingPage","openConfigPage","url","integrationId","navigate","connectionId","selectors","inputs","decls","vars","consts","template","rf","ctx","IntegrationCardComponent_mat_card_0_Template","CommonModule","NgClass","NgIf","GalaxySnackbarModule","GalaxyBadgeModule","TranslateModule","TranslatePipe","MatCardModule","MatCard","MatCardAvatar","MatCardContent","MatCardHeader","MatCardTitle","MatButtonModule","MatIconModule","MatIcon","PlatformIntegrationsI18nModule","RouterModule","GalaxyAvatarModule","AvatarComponent","GalaxyPipesModule","GalaxyDatePipe","styles","LegacyIntegrationType","init_social_connections_interface","__esmMin","LegacyDomainService","init_legacy_domain_service","__esmMin","init_src","init_core","init_connection_integration_detail","init_social_connections_interface","constructor","environment","inject","EnvironmentService","buildGoogleAuthUrl","partnerId","accountGroupId","productType","nextUrl","returnURL","queryParamCharacter","search","newUrl","href","replace","returnUrl","encodeURIComponent","baseUri","googleSearchConsoleHost","googleAnalyticsHost","Error","uriEncodedParams","encodedReturnUrl","getEnvironment","Environment","LOCAL","DEMO","PROD","getLegacyIntegrationType","integrationType","IntegrationType","GOOGLEMYBUSINESS","GOOGLESEARCHCONSOLE","GOOGLEANALYTICS","LegacyIntegrationType","GOOGLEPLUS","FACEBOOK","GOOGLEMEET","ZOOMMEET","QUICKBOOKSONLINEPERSONAL","QUICKBOOKS","INSTAGRAM","getLegacyTypeAsDisplayName","factory","ɵfac","providedIn","LegacyAuthService","init_legacy_auth_service","__esmMin","init_core","init_vendasta_quickbooks","init_esm","init_connection_integration_detail","init_vendasta_meetings","init_card_data_service","init_src","init_vendasta_sso","init_http","init_vendasta_account_group","init_legacy_domain_service","init_rxjs_interop","init_common","constructor","namespace$","partnerId$","userId$","document","quickBooksService","inject","QuickBooksService","cardService","CardDataService","ssoService","SSOService","httpClient","HttpClient","accountGroupApiService","AccountGroupApiService","legacyDomainService","LegacyDomainService","userID","toSignal","partnerID","environmentService","EnvironmentService","getAuthUrlByIntegrationType","accountGroupId","integrationType","productType","domain","location","origin","console","log","nextUrl","URL","url","href","returnUrl","URLSearchParams","search","get","getMulti","accountGroupIds","projectionFilter","accountGroupExternalIdentifiers","pipe","map","response","accountGroups","accountGroup","partnerId","switchMap","params","serviceAuthURL","data","IntegrationType","GOOGLEMYBUSINESS","FACEBOOK","typeAsDisplayName","getLegacyTypeAsDisplayName","nextUrl1","nextUrl1Params","searchParams","set","toString","GOOGLESEARCHCONSOLE","buildGoogleAuthUrl","GOOGLEANALYTICS","getAuthUrlForMeetings","listMeetConnection","source","sourceInfo","find","ZOOMMEET","MeetingSource","MEETING_SOURCE_ZOOM","GOOGLEMEET","MEETING_SOURCE_GOOGLE_MEET","connectDisconnectUrl","getAuthUrlForQuickbooksPersonal","agID","getAuthorizationCodeRedirectUrl","getAuthUrlForInstagram","env","getEnvironmentString","nextURL","window","protocol","host","instaAuthUrl","encodeURIComponent","of","HandleLegacyIntegration","cardDetail","integration","legacyIntegrationType","getLegacyIntegrationType","namespace","subscribe","finalUrl","QUICKBOOKSONLINEPERSONAL","INSTAGRAM","ɵɵinject","PLATFORM_INTEGRATIONS_NAMESPACE_INJECTION_TOKEN$","PLATFORM_INTEGRATIONS_PARTNER_ID_INJECTION_TOKEN$","DOCUMENT","factory","ɵfac","providedIn","ButtonConfigPipe","init_button_config_pipe","__esmMin","init_vendasta_platform_integrations","init_connection_integration_detail","init_src","constructor","context","transform","data","buttonConfigs","addButtonConfig","title","buttonType","color","action","isdisabled","toolTipMessage","push","isDisabled","connectionMethod","cardDetail","integration","maxConnections","connectionStatus","connections","status","integrationType","toLowerCase","IntegrationType","ZAPIER","length","ConnectionStatus","PRECONNECTED","ConnectionMethods","OAUTH2","VENDOR_MANAGED","APIKEY","LEGACY_OAUTH","isQuickBooksRestricted","QUICKBOOKSONLINEPERSONAL","isSMB","SupportedContexts","PI_CONTEXT_SMB","isMeetRestricted","GOOGLEMEET","ZOOMMEET","includes","isImpersonatedUser","button","ɵɵdirectiveInject","PLATFORM_INTEGRATIONS_CONTEXT_INJECTION_TOKEN$","pure","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵpropertyInterpolate","ctx_r0","buttonModel","color","ɵɵproperty","isDisabled","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","title","ButtonTemplateComponent","init_button_template_component","__esmMin","init_common","init_button","init_ngx_translate_core","selectors","inputs","decls","vars","consts","template","rf","ctx","ɵɵtemplate","ButtonTemplateComponent_button_0_Template","ButtonTemplateComponent_button_1_Template","buttonType","CommonModule","NgIf","MatButtonModule","MatButton","TranslateModule","TranslatePipe","encapsulation","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","resource_r1","resourceUrl","ɵɵsanitizeUrl","ɵɵtextInterpolate","resourceName","ResourcesComponent","init_resources_component","__esmMin","init_common","init_icon","selectors","inputs","resources","decls","vars","consts","template","rf","ctx","ɵɵtemplate","ResourcesComponent_div_0_Template","MatIconModule","MatIcon","CommonModule","NgForOf","styles","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate","field_r1","label","defaultValue","WorksWithComponent","init_works_with_component","__esmMin","constructor","worksWithData","selectors","inputs","decls","vars","consts","template","rf","ctx","ɵɵrepeaterCreate","WorksWithComponent_For_3_Template","ɵɵrepeaterTrackByIndex","ɵɵrepeater","NotFoundComponent","init_not_found","__esmMin","init_common","init_ngx_translate_core","init_src","init_empty_state","init_button","init_router","init_esm","constructor","namespace$","routeLink$","pipe","map","namespace","ɵɵdirectiveInject","PLATFORM_INTEGRATIONS_NAMESPACE_INJECTION_TOKEN$","selectors","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵelement","ɵɵtext","ɵɵelementEnd","ɵɵelementContainerStart","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","ɵɵtextInterpolate","ɵɵproperty","ɵɵpureFunction0","_c0","CommonModule","AsyncPipe","PlatformIntegrationsI18nModule","TranslateModule","TranslatePipe","GalaxyEmptyStateModule","EmptyStateComponent","EmptyStateTitleDirective","EmptyStateActionsDirective","MatAnchor","RouterLink","encapsulation","ɵɵelement","ɵɵproperty","ɵɵpipeBind1","ctx_r0","navigateBack","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate","ɵɵtemplate","MarketingPageComponent_ng_container_3_ng_container_8_div_3_div_10_div_1_Template","cards_r2","length","status","connectionStatus","CONNECTED","ɵɵtextInterpolate1","MarketingPageComponent_ng_container_3_ng_container_8_div_3_div_16_div_1_Template","cards_r3","ɵɵpipeBind2","button_r5","toolTipMessage","ɵɵpureFunction1","_c0","data_r6","cardDetail","integration","displayName","ɵɵlistener","ɵɵrestoreView","_r4","$implicit","ɵɵnextContext","ngIf","ɵɵresetView","buttonAction","action","isDisabled","MarketingPageComponent_ng_container_3_ng_container_8_div_3_div_19_Conditional_2_Template","ɵɵconditional","MarketingPageComponent_ng_container_3_ng_container_8_div_3_div_10_Template","MarketingPageComponent_ng_container_3_ng_container_8_div_3_glxy_badge_13_Template","MarketingPageComponent_ng_container_3_ng_container_8_div_3_div_16_Template","ɵɵelementContainerStart","MarketingPageComponent_ng_container_3_ng_container_8_div_3_div_19_Template","logo","ɵɵsanitizeUrl","cards$","connection_status","PRECONNECTED","description","marketingPreconnectMessage","data_r7","ɵɵsanitizeHtml","card_r8","userInfo","userAction","MANAGE","MarketingPageComponent_ng_container_3_ng_container_8_div_10_div_1_div_1_div_5_Template","MarketingPageComponent_ng_container_3_ng_container_8_div_10_div_1_div_1_div_7_Template","cards_r9","MarketingPageComponent_ng_container_3_ng_container_8_div_10_div_1_div_1_Template","website_r10","siteUrl","MarketingPageComponent_ng_container_3_ng_container_8_div_10_div_13_ng_container_1_ng_container_1_Template","additionalInfo","websites","MarketingPageComponent_ng_container_3_ng_container_8_div_10_div_13_ng_container_1_Template","requirement_r11","MarketingPageComponent_ng_container_3_ng_container_8_div_10_li_21_span_1_Template","requirements","resources","ɵɵpropertyInterpolate","product_r12","name","iconUrl","MarketingPageComponent_ng_container_3_ng_container_8_div_10_div_27_div_1_Template","productInfo_r13","MarketingPageComponent_ng_container_3_ng_container_8_div_10_div_1_Template","MarketingPageComponent_ng_container_3_ng_container_8_div_10_div_13_Template","MarketingPageComponent_ng_container_3_ng_container_8_div_10_li_21_Template","MarketingPageComponent_ng_container_3_ng_container_8_div_10_div_24_Template","MarketingPageComponent_ng_container_3_ng_container_8_div_10_div_26_Template","MarketingPageComponent_ng_container_3_ng_container_8_div_10_div_27_Template","longDescription","categories","join","worksWith","productIds","productInfo$","MarketingPageComponent_ng_container_3_ng_container_8_div_3_Template","MarketingPageComponent_ng_container_3_ng_container_8_div_10_Template","pageData$","MarketingPageComponent_ng_container_3_glxy_page_nav_button_3_Template","MarketingPageComponent_ng_container_3_ng_container_8_Template","namespace$","data_r15","pageNotFound_r14","ZAPIER_BUSINESS_APP","ZAPIER_PARTNER_APP","ZAPIER_DEMO_APP","MarketingPageComponent","init_marketing_page_component","__esmMin","init_common","init_core","init_rxjs_interop","init_button","init_chips","init_dialog","init_divider","init_icon","init_router","init_src","init_ngx_translate_core","init_alert","init_badge","init_page","init_pipes","init_snackbar_service","init_vendasta_platform_integrations","init_ngx_color_picker","init_esm","init_operators","init_card_data_service","init_integration_util_service","init_dynamic_form_component","init_integration_card_component","init_legacy_auth_service","init_connection_integration_detail","init_button_config_pipe","init_button_template_component","init_loading_spinner","init_resources_component","init_tooltip","init_vendasta_iam","init_works_with_component","init_const","init_not_found","constructor","partnerId$","marketId$","context","isImpersonating$","confirmationModal","locationService","sessionService","iamService","activatedRoute","inject","ActivatedRoute","cardService","CardDataService","legacyAuthService","LegacyAuthService","snackbarService","SnackbarService","translate","TranslateService","router","Router","environmentService","EnvironmentService","destroyRef","DestroyRef","model","MatDialog","integrationUtilService","IntegrationUtilService","connectionMethods","ConnectionMethods","UserAction","isLoading","IntegrationType","SupportedContexts","ConnectionStatus","UNSPECIFIED_STATUS","connectionStatus$","BehaviorSubject","integrationIdFromParam$","paramMap","pipe","map","params","get","integrationList$","getIntegrationsList","integrationId$","combineLatest","integrationIdFromParam","integrationList","find","integrationId","integrationType","path","getCurrentPath","navigate","connectionList$","filter","_","namespace","switchMap","getConnectionsList","of","cardDetail$","connectionList","connection","integrationDetail","connect","DISCONNECTED","connections","integrations","getProductDetailsByProductIds","apps","app","key","appId","sharedMarketingInformation","isSMB$","getSessionId","partnerID","sessionId","getSubjectBySession","PersonaType","smb","persona","userId","catchError","userIds","getMultiByUserId","usersInfo","usersMap","Map","user","reduce","result","integrationDetails","push","__spreadProps","__spreadValues","getBusinessName$","marketID","getPlatformName","getBusinessName","toSignal","isSMB","isImpersonatedUser","platformName","businessName","PI_CONTEXT_SMB","replace","replaceAll","connectionMethod","OAUTH2","instant","title","window","location","pathname","slice","lastIndex","lastIndexOf","substring","manageConnection","queryParams","tab","BROWSE","manageIndividualConnection","connectionId","data","maxConnections","toLowerCase","ZAPIER","OpenFormBasedOnIntegrationType","cancelConnection","VENDOR_MANAGED","options","integrationDisplayName","message","confirmButtonText","successMessage","errorMessage","cancelConnectionWithDialog","APIKEY","LEGACY_OAUTH","HandleLegacyIntegration","openZapierSyncSettingModel","openSyncSettingModel","dialogConfig","MatDialogConfig","integrationConnectionMethod","syncSettingIds","getFieldIdsFromConfig","preconnectFormFields","fields","width","open","DynamicFormComponent","componentInstance","saveSyncSettingsEvent","takeUntilDestroyed","subscribe","createNewConnection","mapToCustomFields","preConnectFormFields","Object","keys","afterClosed","send","mapToCustomFieldsFromSyncSettings","getEnvironment","Environment","DEMO","settingIds","customFields","forEach","id","PI_CONTEXT_PARTNER","label","value","toString","fieldConfigs","fieldConfig","field","fieldType","FieldType","FIELD_TYPE_TEXT","defaultValue","removeActiveRouteFromPath","route","LocationService","stripTrailingSlash","getPathWithoutActiveRoute","fullPath","split","activeRoute","decodeURIComponent","snapshot","url","syncData","card","handleError","openErrorSnack","EMPTY","handleSuccess","resp","createConnection","mutableQP","basePath","nextURL","origin","createUrlTree","performSSO","openSuccessSnack","next","tap","openModal","type","cancelButtonText","take","confirm","deleteConnection","ɵɵdirectiveInject","PLATFORM_INTEGRATIONS_NAMESPACE_INJECTION_TOKEN$","PLATFORM_INTEGRATIONS_PARTNER_ID_INJECTION_TOKEN$","PLATFORM_INTEGRATIONS_MARKET_ID_INJECTION_TOKEN$","PLATFORM_INTEGRATIONS_CONTEXT_INJECTION_TOKEN$","OpenConfirmationModalService","Location","SessionService","IAMService","selectors","decls","vars","consts","template","rf","ctx","ɵɵdeclareLet","MarketingPageComponent_ng_container_3_Template","MarketingPageComponent_ng_template_4_Template","ɵɵtemplateRefExtractor","MarketingPageComponent_ng_template_6_Template","ɵɵstoreLet","data_r17","loadingSpinner_r16","CommonModule","NgForOf","NgIf","AsyncPipe","MatButtonModule","MatChipsModule","MatDividerModule","MatDivider","MatIconModule","MatIcon","PlatformIntegrationsI18nModule","GalaxyPipesModule","GalaxyITrustThisHtmlPipe","TranslateModule","TranslatePipe","IntegrationCardComponent","GalaxyPageModule","PageComponent","PageToolbarComponent","PageTitleDirective","PageNavDirective","PageNavButtonComponent","GalaxyBadgeModule","BadgeComponent","ColorPickerModule","GalaxyAlertModule","AlertComponent","ButtonTemplateComponent","ButtonConfigPipe","GalaxyLoadingSpinnerModule","LoadingSpinnerComponent","ResourcesComponent","GalaxyTooltipModule","GalaxyTooltipDirective","WorksWithComponent","NotFoundComponent","styles","encapsulation","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate","ɵɵpipeBind1","ctx_r0","accountDetails","accountName","ɵɵelementContainerStart","ɵɵtextInterpolate1","ɵɵtemplate","AccountDetailsComponent_ng_container_0_tr_5_ng_container_1_Template","AccountDetailsComponent_ng_container_0_tr_5_ng_template_2_Template","ɵɵtemplateRefExtractor","ɵɵproperty","connectionStatus","otherStatus_r2","requestedBy","ɵɵpropertyInterpolate","profileURL","ɵɵsanitizeUrl","isLocationVerified","AccountDetailsComponent_ng_container_0_tr_8_td_1_Template","AccountDetailsComponent_ng_container_0_tr_8_td_2_Template","AccountDetailsComponent_ng_container_0_tr_8_td_3_Template","statusLastUpdated","dataLastReceived","AccountDetailsComponent_ng_container_0_tr_4_Template","AccountDetailsComponent_ng_container_0_tr_5_Template","AccountDetailsComponent_ng_container_0_tr_6_Template","AccountDetailsComponent_ng_container_0_tr_7_Template","AccountDetailsComponent_ng_container_0_tr_8_Template","AccountDetailsComponent_ng_container_0_tr_9_Template","AccountDetailsComponent","init_account_details_component","__esmMin","init_common","init_card","init_ngx_translate_core","init_pipes","constructor","translate","ɵɵdirectiveInject","TranslateService","selectors","inputs","decls","vars","consts","template","rf","ctx","AccountDetailsComponent_ng_container_0_Template","MatCardModule","MatCard","MatCardContent","CommonModule","NgIf","TranslateModule","TranslatePipe","GalaxyPipesModule","GalaxyDatePipe","TruncateUrlPipe","styles","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","_r3","ctx_r3","ɵɵnextContext","ɵɵresetView","notifyCopy","ɵɵtext","ɵɵelementEnd","ɵɵproperty","password_r2","value","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","PasswordFieldComponent","init_password_component","__esmMin","init_core","init_ngx_translate_core","init_common","init_icon","init_form_field","init_clipboard","init_forms","init_snackbar_service","init_vendasta_platform_integrations","init_button","constructor","disabled","placeholder","required","snackbarService","inject","SnackbarService","ConnectionStatus","onChange","_value","onTouched","touched","openSuccessSnack","action","duration","writeValue","registerOnChange","onChangeFn","registerOnTouched","onTouchedFn","selectors","inputs","features","ɵɵProvidersFeature","provide","NG_VALUE_ACCESSOR","multi","useExisting","decls","vars","consts","template","rf","ctx","$event","i0","_r1","ɵɵreference","type","ɵɵtemplate","PasswordFieldComponent_button_7_Template","ɵɵtextInterpolate","TranslateModule","TranslatePipe","CommonModule","NgIf","MatIcon","CdkCopyToClipboard","GalaxyFormFieldModule","FormFieldComponent","SuffixDirective","MatIconButton","MatButton","FormsModule","DefaultValueAccessor","NgControlStatus","RequiredValidator","NgModel","styles","LabelFieldComponent","init_label_component","__esmMin","init_core","init_ngx_translate_core","init_vendasta_platform_integrations","init_common","constructor","connection","input","required","field","model","fieldType","FieldType","ngOnInit","hintText","includes","updatedHintText","replaceAll","connectionId","updatedField","__spreadProps","__spreadValues","String","set","FieldConfig","selectors","inputs","outputs","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵelement","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","label","ɵɵsanitizeHtml","TranslateModule","CommonModule","styles","AppleAutoCompleteService","init_auto_complete_service","__esmMin","getLocationName","businessName","locationName","getLocationNameFromCustomFields","customFields","find","field","label","value","getLocationFromCustomFields","lid","locName","state","partnersLocationId","partnersLocationVersion","locationId","businessId","name","placeCardUrl","findLocation","locations","bid","factory","ɵfac","providedIn","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","option_r1","ɵɵadvance","ɵɵtextInterpolate1","name","AutoCompleteComponent","init_auto_complete_component","__esmMin","init_core","init_common","init_form_field","init_autocomplete","init_esm","init_forms","init_rxjs_interop","init_src","init_http","init_auto_complete_service","constructor","environmentService","originalOptions","autocompleteOptions","platformIntegrationsHost","getPlatformIntegrationsHost","destroyRef","inject","DestroyRef","httpClient","HttpClient","autocompleteService","AppleAutoCompleteService","ngOnInit","fetchInitialAutocompleteOptions","pageData","connectionId","cardDetail","connection","customFields","pipe","takeUntilDestroyed","subscribe","data","theFormControl","setValue","findLocation","valueChanges","inputValue","filterAutocompleteOptions","setSelectorProgramatically","lowerInput","toLowerCase","filter","option","includes","matOptions","accountAutocompleteWidgets","get","options","forEach","opt","value","select","deselect","getEnvironment","Environment","LOCAL","DEMO","PROD","EMPTY","companyId","find","f","label","combineLatest","getAppleLocationData","getAppleBusinessData","map","locations","businesses","loc","business","b","businessId","locationId","state","placeCardUrl","partnersLocationId","partnersLocationVersion","url","withCredentials","response","item","primaryDisplayName","locationDetails","displayNames","primary","internalNicknames","firstInternalNickname","length","id","businessDetails","autocompleteDisplayFn","ɵɵdirectiveInject","EnvironmentService","selectors","viewQuery","rf","ctx","MatAutocomplete","ɵɵelement","ɵɵtemplate","AutoCompleteComponent_mat_option_4_Template","fieldConfig","required","placeHolder","auto_r2","CommonModule","NgForOf","GalaxyFormFieldModule","FormFieldComponent","MatAutocompleteModule","MatOption","MatAutocompleteTrigger","ReactiveFormsModule","DefaultValueAccessor","NgControlStatus","FormControlDirective","styles","ɵɵelementContainer","ɵɵelementContainerStart","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵtemplate","SyncSettingsComponent_For_2_ng_container_0_ng_container_6_Template","ɵɵadvance","ɵɵtextInterpolate","ɵɵpipeBind1","config_r1","title","ɵɵproperty","fieldBlock_r2","ɵɵpureFunction1","_c0","fields","SyncSettingsComponent_For_2_ng_template_1_ng_container_0_mat_card_1_ng_container_2_Template","_c1","field_r3","SyncSettingsComponent_For_2_ng_template_1_ng_container_0_mat_card_1_Template","hidden","SyncSettingsComponent_For_2_ng_template_1_ng_container_0_Template","ɵɵelement","ɵɵtextInterpolate1","field_r4","label","hintText","id","ctx_r4","pageData","cardDetail","connection","status","ConnectionStatus","CONNECTED","readonly","placeHolder","required","SyncSettingsComponent_For_2_ng_template_3_ng_container_0_Case_1_div_0_Template","ɵɵlistener","ɵɵrestoreView","_r6","rmAppDetails_r7","ɵɵnextContext","ngIf","ɵɵresetView","handleButtonClick","SyncSettingsComponent_For_2_ng_template_3_ng_container_0_Case_4_ng_container_4_ng_container_1_Template","hasRMPremiumActive","toggleTemplate_r8","$event","_r9","$implicit","updateToggleSetting","SyncSettingsComponent_For_2_ng_template_3_ng_container_0_Case_4_ng_template_6_mat_slide_toggle_0_Template","isInputField","fieldType","_r10","rmAppDetails_r11","SyncSettingsComponent_For_2_ng_template_3_ng_container_0_Case_4_ng_template_8_ng_container_1_ng_container_1_Template","toggleTemplate_r12","_r13","data","SyncSettingsComponent_For_2_ng_template_3_ng_container_0_Case_4_ng_template_8_ng_template_3_mat_slide_toggle_0_Template","SyncSettingsComponent_For_2_ng_template_3_ng_container_0_Case_4_ng_template_8_mat_icon_0_Template","SyncSettingsComponent_For_2_ng_template_3_ng_container_0_Case_4_ng_template_8_ng_container_1_Template","SyncSettingsComponent_For_2_ng_template_3_ng_container_0_Case_4_ng_template_8_ng_template_3_Template","ɵɵtemplateRefExtractor","getAppSettings$","appleAutocompleteFormControl","defaultValue","SyncSettingsComponent_For_2_ng_template_3_ng_container_0_Case_4_div_12_ng_template_2_glxy_form_field_1_Template","SyncSettingsComponent_For_2_ng_template_3_ng_container_0_Case_4_div_12_div_1_Template","SyncSettingsComponent_For_2_ng_template_3_ng_container_0_Case_4_div_12_ng_template_2_Template","integrationType","integrationTypeEnums","APPLEBUSINESSCONNECT","defaultText_r14","option_r17","value","_r15","dep_r16","updateRadioButton","SyncSettingsComponent_For_2_ng_template_3_ng_container_0_Case_4_div_13_mat_radio_group_4_div_1_Template","options","SyncSettingsComponent_For_2_ng_template_3_ng_container_0_Case_4_div_13_mat_radio_group_4_Template","FIELD_TYPE_RADIO","SyncSettingsComponent_For_2_ng_template_3_ng_container_0_Case_4_ng_container_4_Template","SyncSettingsComponent_For_2_ng_template_3_ng_container_0_Case_4_ng_template_6_Template","SyncSettingsComponent_For_2_ng_template_3_ng_container_0_Case_4_ng_template_8_Template","SyncSettingsComponent_For_2_ng_template_3_ng_container_0_Case_4_div_12_Template","SyncSettingsComponent_For_2_ng_template_3_ng_container_0_Case_4_div_13_Template","getRMAppDetailsConfigPage$","checkTemplate_r18","FIELD_TYPE_TEXT","dependents","ɵɵpureFunction0","_c2","SyncSettingsComponent_For_2_ng_template_3_ng_container_0_Case_1_Template","SyncSettingsComponent_For_2_ng_template_3_ng_container_0_Case_2_Template","SyncSettingsComponent_For_2_ng_template_3_ng_container_0_Case_3_Template","SyncSettingsComponent_For_2_ng_template_3_ng_container_0_Case_4_Template","ɵɵconditional","tmp_16_0","FIELD_TYPE_PASSWORD","FIELD_TYPE_CHIPLIST","FIELD_TYPE_LABEL","_r19","onSave","_r20","onEdit","_r21","onCancel","SyncSettingsComponent_For_2_ng_template_3_For_3_Case_0_button_0_Template","SyncSettingsComponent_For_2_ng_template_3_For_3_Case_0_button_1_Template","SyncSettingsComponent_For_2_ng_template_3_For_3_Case_0_button_2_Template","isEdited","isSaved","SyncSettingsComponent_For_2_ng_template_3_For_3_Case_0_Template","tmp_24_0","action_r22","actionType","ACTION_TYPE_SAVE","SyncSettingsComponent_For_2_ng_template_3_ng_container_0_Template","ɵɵrepeaterCreate","SyncSettingsComponent_For_2_ng_template_3_For_3_Template","ɵɵrepeaterTrackByIndex","fields_r23","ɵɵrepeater","actions","SyncSettingsComponent_For_2_ng_container_0_Template","SyncSettingsComponent_For_2_ng_template_1_Template","SyncSettingsComponent_For_2_ng_template_3_Template","noTitleBlock_r24","invalidPartnerCodeError","SyncSettingsComponent","init_sync_settings_component","__esmMin","init_core","init_model","init_ngx_translate_core","init_card","init_checkbox","init_common","init_forms","init_snackbar_service","init_icon","init_divider","init_input","init_form_field","init_src","init_slide_toggle","init_esm","init_operators","init_card_data_service","init_confirmation_modal","init_unlock_dialogue_box_component","init_dialog","init_radio","init_vendasta_platform_integrations","init_integration_util_service","init_button","init_vendasta_google_search_console","init_password_component","init_autocomplete","init_tags","init_label_component","init_rxjs_interop","init_auto_complete_component","init_auto_complete_service","constructor","namespace$","partnerId$","marketId$","context","cdr","formBuilder","inject","FormBuilder","appleAutocompleteFormControlId","FormControl","locationSaved","EventEmitter","configPageFields","snackbarService","SnackbarService","cardService","CardDataService","confirmationModal","OpenConfirmationModalService","translate","TranslateService","dialog","MatDialog","FieldType","IntegrationType","ActionType","integrationUtilService","IntegrationUtilService","recordService","RecordService","destroyRef","DestroyRef","autoCompleteService","AppleAutoCompleteService","getAppDetailResponse$","combineLatest","pipe","switchMap","namespace","partnerID","getRMAppDetail","marketID","getRMAppSettings","map","rmAppDetails","rmAppSettings","res","upgradeSetting","getEditionId","stringToBooleanConversion","ngOnInit","integration","syncSettings","getSyncSettings","flatMap","config","initializeFormGroup","forEach","field","customField","customFields","find","cf","syncSettingsForm","controls","disable","atLeastOneFieldFilled","some","filter","reloadPage","window","location","reload","parseValue","split","group","syncSettingIds","getFieldIdsFromConfig","syncSettingsMap","getFieldConfigAsMap","customFieldsMap","Map","item","pageConfigFields","syncSettingId","configPage","set","pageConfigFieldInfo","get","customFieldInfo","syncSettingFieldInfo","GOOGLESEARCHCONSOLE","addControl","getGSCKeywords","takeUntilDestroyed","subscribe","keywords","setValue","undefined","length","FIELD_TYPE_TOGGLE","dep","dependentCustomField","depControl","disabled","Validators","enable","setting","card","event","depField","openSyncSettingWarnModal","updates","checked","toString","updateConnectionSetting","UNSPECIFIED_STATUS","key","params","openModal","type","instant","message","confirmButtonText","cancelButtonText","take","userDidAction","SupportedContexts","PI_CONTEXT_PARTNER","open","DialogBoxComponent","width","partnerId","integrationId","selectedOption","option","Boolean","valid","openErrorSnack","connectionStatus","control","l","getRawValue","businessId","locationId","state","placeCardUrl","name","partnersLocationId","partnersLocationVersion","Array","isArray","join","PROTRACTOR","connectionId","f","apiKey","locationIdEntry","locationValue","push","successMessageKey","errorMessageKey","getConnection","updatedConnection","updatedCustomFields","con","includes","getLocationFromCustomFields","successMessageDetails","errorMessageDetails","setGSCKeywords","updateConnection","tap","openSuccessSnack","emit","catchError","error","EMPTY","combineLatestWith","getKeywords","setKeywords","updated","_err","ɵɵdirectiveInject","PLATFORM_INTEGRATIONS_NAMESPACE_INJECTION_TOKEN$","PLATFORM_INTEGRATIONS_PARTNER_ID_INJECTION_TOKEN$","PLATFORM_INTEGRATIONS_MARKET_ID_INJECTION_TOKEN$","MAT_DIALOG_DATA","PLATFORM_INTEGRATIONS_CONTEXT_INJECTION_TOKEN$","ChangeDetectorRef","selectors","inputs","outputs","decls","vars","consts","template","rf","ctx","SyncSettingsComponent_For_2_Template","TranslateModule","TranslatePipe","MatCardModule","MatCard","MatCardContent","MatCheckboxModule","MatSlideToggleModule","MatSlideToggle","ReactiveFormsModule","DefaultValueAccessor","NgControlStatus","NgControlStatusGroup","RequiredValidator","FormGroupDirective","FormControlName","FormsModule","CommonModule","NgForOf","NgIf","NgTemplateOutlet","NgSwitch","NgSwitchCase","AsyncPipe","MatIconModule","MatIcon","MatRadioModule","MatRadioGroup","MatRadioButton","MatDividerModule","MatInputModule","MatInput","MatFormFieldModule","GalaxyFormFieldModule","FormFieldComponent","MatButtonModule","MatButton","MatAutocompleteModule","PasswordFieldComponent","GalaxyTagsModule","TagsComponent","LabelFieldComponent","AutoCompleteComponent","styles","URLFieldComponent","init_url_component","__esmMin","init_core","init_ngx_translate_core","init_common","init_icon","init_button","constructor","field","input","required","selectors","inputs","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵpropertyInterpolate","url","ɵɵsanitizeUrl","ɵɵtextInterpolate1","label","TranslateModule","CommonModule","MatIcon","MatButtonModule","MatAnchor","styles","ɵɵelement","ɵɵelementStart","ɵɵelementEnd","ɵɵproperty","instruction_r1","label","ɵɵsanitizeHtml","ɵɵadvance","readonly","ctx_r1","getFieldValue","placeHolder","connection","ɵɵtemplate","InstructionsComponent_For_6_Case_0_Template","InstructionsComponent_For_6_Case_1_Template","InstructionsComponent_For_6_Case_2_Template","ɵɵconditional","tmp_10_0","fieldType","FIELD_TYPE_PASSWORD","FIELD_TYPE_LABEL","FIELD_TYPE_URL","InstructionsComponent","init_instructions_component","__esmMin","init_core","init_alert","init_ngx_translate_core","init_vendasta_platform_integrations","init_common","init_form_field","init_button","init_input_module","init_password_component","init_label_component","init_url_component","init_ngx_cookie_service","constructor","cookieService","inject","CookieService","instructions","input","required","integration","connectionMethods","ConnectionMethods","FieldType","dismissed","cookieKey","ngOnInit","integrationType","status","Boolean","get","dismissInstruction","set","field","customFields","find","customField","id","value","selectors","inputs","decls","vars","consts","template","rf","ctx","ɵɵlistener","ɵɵtext","ɵɵelementContainerStart","ɵɵrepeaterCreate","InstructionsComponent_For_6_Template","ɵɵrepeaterTrackByIndex","tmp_0_0","connectionMethod","OAUTH2","ɵɵpureFunction1","_c0","ɵɵtextInterpolate","title","ɵɵrepeater","fields","GalaxyAlertModule","AlertComponent","TranslateModule","CommonModule","NgClass","MatFormFieldModule","GalaxyFormFieldModule","MatButtonModule","GalaxyInputModule","PasswordFieldComponent","LabelFieldComponent","URLFieldComponent","styles","ɵɵelement","ɵɵproperty","ɵɵpipeBind1","ctx_r0","navigateBack","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ɵɵlistener","ɵɵrestoreView","_r2","data_r3","ɵɵnextContext","ngIf","ɵɵresetView","openWarnModal","_r4","reconnectConnection","_r5","ɵɵelementContainerStart","_r6","disconnectConnection","_r7","_r9","_r8","ɵɵtemplate","ConfigPageComponent_ng_container_7_div_36_ng_template_2_Conditional_1_button_3_Template","cardDetail","integration","connectionMethod","connectionMethods","VENDOR_MANAGED","ConfigPageComponent_ng_container_7_div_36_ng_template_2_Conditional_0_Template","ConfigPageComponent_ng_container_7_div_36_ng_template_2_Conditional_1_Template","ɵɵconditional","APIKEY","ConfigPageComponent_ng_container_7_div_36_ng_container_1_Template","ConfigPageComponent_ng_container_7_div_36_ng_template_2_Template","ɵɵtemplateRefExtractor","CancelRequest_r10","ɵɵpipeBind2","ɵɵpureFunction1","_c0","displayName","ɵɵsanitizeHtml","_r11","navigateToAction","connection","connectionMessages","ctaUrl","ɵɵpropertyInterpolate","message","configPreconnectMessage","integration_r12","instructions","connection_r13","ConfigPageComponent_ng_container_7_div_55_ng_container_1_Template","_r14","refreshConnection","LEGACY_OAUTH","integrationType","ɵɵtextInterpolate","additionalInfo","resources","ConfigPageComponent_ng_container_7_glxy_page_nav_button_3_Template","ConfigPageComponent_ng_container_7_glxy_badge_22_Template","ConfigPageComponent_ng_container_7_glxy_badge_23_Template","ConfigPageComponent_ng_container_7_glxy_badge_24_Template","ConfigPageComponent_ng_container_7_glxy_badge_29_Template","ConfigPageComponent_ng_container_7_glxy_badge_30_Template","ConfigPageComponent_ng_container_7_glxy_badge_31_Template","ConfigPageComponent_ng_container_7_button_33_Template","ConfigPageComponent_ng_container_7_button_34_Template","ConfigPageComponent_ng_container_7_button_35_Template","ConfigPageComponent_ng_container_7_div_36_Template","ConfigPageComponent_ng_container_7_glxy_alert_44_Template","ConfigPageComponent_ng_container_7_glxy_alert_45_Template","ConfigPageComponent_ng_container_7_glxy_alert_46_Template","ConfigPageComponent_ng_container_7_glxy_alert_47_Template","ConfigPageComponent_ng_container_7_Conditional_48_Template","ConfigPageComponent_ng_container_7_div_55_Template","ConfigPageComponent_ng_container_7_ng_container_56_Template","namespace$","logo","ɵɵsanitizeUrl","statusConversion","status","description","length","fields","connectionStatus","PRECONNECTED","OAUTH2","CONNECTED","accountDetails$","displaySettings","ConfigPageComponent","init_config_page_component","__esmMin","init_common","init_core","init_forms","init_button","init_chips","init_divider","init_icon","init_router","init_ngx_translate_core","init_badge","init_confirmation_modal","init_snackbar_service","init_vendasta_platform_integrations","init_esm","init_operators","init_card_data_service","init_page","init_slide_toggle","init_card","init_alert","init_connection_integration_detail","init_checkbox","init_src","init_dialog","init_unlock_dialogue_box_component","init_account_details_component","init_resources_component","init_sync_settings_component","init_radio","init_integration_util_service","init_rxjs_interop","init_legacy_auth_service","init_ngx_cookie_service","init_instructions_component","init_loading_spinner","init_const","constructor","partnerId$","marketId$","document","context","formBuilder","inject","FormBuilder","router","Router","cardService","CardDataService","snackbarService","SnackbarService","translate","TranslateService","activatedRoute","ActivatedRoute","confirmationModal","OpenConfirmationModalService","dialog","MatDialog","integrationUtilService","IntegrationUtilService","connectionId$","paramMap","pipe","map","params","get","ConnectionMethods","ConnectionStatus","legacyAuthService","LegacyAuthService","cookieService","CookieService","destroyRef","DestroyRef","refreshTrigger$","BehaviorSubject","undefined","connection$","switchMap","filter","connectionId","getConnection","namespace","toSignal","partnerId","integrationId$","getIntegrationId","integration$","integrationId","getIntegration","of","integrationType$","take","getAppDetailResponse$","combineLatest","partnerID","getRMAppDetail","getAppSettings$","marketID","getRMAppSettings","getRMAppDetailsConfigPage$","rmAppDetails","rmAppSettings","res","hasRMPremiumActive","upgradeSetting","getEditionId","cardDetail$","applePreconnectionHasToken","customFields","initializeFormGrop","getBusinessName$","getPlatformName","getBusinessName","pageData$","platformName","businessName","SupportedContexts","PI_CONTEXT_SMB","configPageFields","forEach","formConfig","field","hintText","replace","replaceAll","data","userId","getUserById","user","firstName","lastName","accountDetails","accountName","label","requestedBy","statusLastUpdated","Date","dataLastReceived","IntegrationType","APPLEBUSINESSCONNECT","profileField","find","profileURL","value","profileVerified","isLocationVerified","ngOnInit","queryParams","param","isSSO","errorDescription","openErrorSnack","openSuccessSnack","takeUntilDestroyed","subscribe","instant","title","next","s","DISCONNECTED","card","warningMesssage","dialogBoxtitle","confirmButtonMsg","cancelBtnMsg","FACEBOOK","GOOGLEMYBUSINESS","openModal","type","confirmButtonText","cancelButtonText","userDidAction","cookieKey","delete","getCurrentPath","path","window","location","pathname","slice","index","indexOf","substring","UserAction","MANAGE","console","warn","disconnectLegacy","EMPTY","deleteConnection$","toLowerCase","QUICKBOOKS","deleteConnectionAndRevokeAccessToken","deleteConnection","tap","interpolateTranslateParams","navigateToManageTab","catchError","disconnectURL","GOOGLEANALYTICS","deleteGA4Connection","GOOGLESEARCHCONSOLE","customField","deleteSocialConnections","GOOGLEMEET","ZOOMMEET","href","QUICKBOOKSONLINEPERSONAL","set","deleteQuickBookPersonalConnection","setTimeout","clearDisconnectCookie","INSTAGRAM","String","disconnectInstagramConnection","name","syncSettingsForm","group","syncSettingIds","getFieldIdsFromConfig","con","includes","control","FormControl","stringToBooleanConversion","addControl","getCurrentURL","url","configIndex","navigate","tab","performSSO","HandleLegacyIntegration","handleButtonClick","open","DialogBoxComponent","width","ɵɵdirectiveInject","PLATFORM_INTEGRATIONS_NAMESPACE_INJECTION_TOKEN$","PLATFORM_INTEGRATIONS_PARTNER_ID_INJECTION_TOKEN$","PLATFORM_INTEGRATIONS_MARKET_ID_INJECTION_TOKEN$","DOCUMENT","PLATFORM_INTEGRATIONS_CONTEXT_INJECTION_TOKEN$","selectors","decls","vars","consts","template","rf","ctx","ɵɵdeclareLet","ConfigPageComponent_ng_template_5_Template","ConfigPageComponent_ng_container_7_Template","ɵɵstoreLet","loadingSpinner_r15","CommonModule","NgIf","AsyncPipe","MatButtonModule","MatButton","MatChipsModule","MatDividerModule","MatDivider","MatIconModule","GalaxyBadgeModule","BadgeComponent","TranslateModule","TranslatePipe","GalaxyPageModule","PageComponent","PageToolbarComponent","PageTitleDirective","PageNavDirective","PageNavButtonComponent","MatSlideToggleModule","MatCardModule","GalaxyCheckboxModule","ReactiveFormsModule","FormsModule","MatCheckboxModule","MatDialogModule","AccountDetailsComponent","ResourcesComponent","MatRadioModule","GalaxyAlertModule","AlertComponent","PlatformIntegrationsI18nModule","SyncSettingsComponent","InstructionsComponent","GalaxyLoadingSpinnerModule","LoadingSpinnerComponent","styles","ɵɵelementContainerStart","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","_r1","ctx_r1","ɵɵnextContext","ɵɵresetView","preConnectConnection","ɵɵelement","ɵɵelementEnd","ɵɵadvance","ɵɵpropertyInterpolate","ɵɵpipeBind1","ɵɵproperty","tmp_4_0","preConnectedCards","integration","connectionMethod","connectionMethods","OAUTH2","tmp_5_0","ɵɵpipeBind2","ɵɵpureFunction1","_c0","displayName","ɵɵsanitizeHtml","length","ɵɵpureFunction2","_c1","tmp_3_0","_c2","ɵɵtemplate","PreconnectAlertComponent_div_0_ng_container_1_Template","PreconnectAlertComponent_div_0_ng_template_2_Template","ɵɵtemplateRefExtractor","moreThanTwoCardsPreconnect_r3","PreconnectAlertComponent","init_preconnect_alert_component","__esmMin","init_core","init_ngx_translate_core","init_alert","init_vendasta_platform_integrations","init_common","init_card_data_service","constructor","ConnectionMethods","cardService","inject","CardDataService","cards","handleConnection","selectors","inputs","decls","vars","consts","template","rf","ctx","PreconnectAlertComponent_div_0_Template","tmp_0_0","TranslateModule","TranslatePipe","GalaxyAlertModule","AlertComponent","CommonModule","NgIf","encapsulation","ɵɵelementContainerStart","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","_r1","ctx_r1","ɵɵnextContext","ɵɵresetView","reconnectConnection","ɵɵelement","ɵɵelementEnd","ɵɵadvance","ɵɵpropertyInterpolate","ɵɵpipeBind1","ɵɵproperty","tmp_3_0","disconnectedCards","length","ɵɵpipeBind2","ɵɵpureFunction1","_c0","tmp_4_0","integration","displayName","ɵɵsanitizeHtml","tmp_2_0","ɵɵpureFunction2","_c1","_c2","ɵɵtemplate","DisconnectAlertComponent_div_0_ng_container_1_Template","DisconnectAlertComponent_div_0_ng_container_2_Template","tmp_1_0","connection","connectionMessages","DisconnectAlertComponent","init_disconnect_alert_component","__esmMin","init_core","init_ngx_translate_core","init_alert","init_vendasta_platform_integrations","init_common","init_card_data_service","constructor","connectionMethods","ConnectionMethods","cardService","inject","CardDataService","cards","handleConnection","selectors","inputs","decls","vars","consts","template","rf","ctx","DisconnectAlertComponent_div_0_Template","tmp_0_0","TranslateModule","TranslatePipe","GalaxyAlertModule","AlertComponent","CommonModule","NgIf","encapsulation","IntegrationsBannerComponent","init_integrations_banner_component","__esmMin","init_core","init_common","init_util_service","init_ngx_translate_core","init_button","init_icon","init_ngx_cookie_service","constructor","cookieService","inject","CookieService","utilService","UtilService","jobberLogo","getImageSrc","housecallproLogo","petResortProLogo","isIntegrationsBannerDismissed","navigateToBrowse","EventEmitter","ngOnInit","Boolean","get","dismissBanner","set","navigateToBrowseButton","emit","selectors","outputs","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵlistener","ɵɵtext","ɵɵelementEnd","ɵɵelement","ɵɵproperty","ɵɵpureFunction1","_c0","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","ɵɵsanitizeUrl","CommonModule","NgClass","TranslateModule","TranslatePipe","MatButtonModule","MatButton","MatIconModule","MatIcon","styles","ɵɵelementStart","ɵɵlistener","message_r2","ɵɵrestoreView","_r1","$implicit","ctx_r2","ɵɵnextContext","ɵɵresetView","navigateToAction","ctaUrl","ɵɵelement","ɵɵelementEnd","ɵɵpropertyInterpolate","ɵɵpipeBind1","ɵɵproperty","getAlertType","severity","ɵɵadvance","message","ɵɵsanitizeHtml","ConnectionMessageComponent","init_connection_message_component","__esmMin","init_vendasta_platform_integrations","init_alert","init_common","init_ngx_translate_core","constructor","document","Severity","INFO","ERROR","WARNING","location","href","ɵɵdirectiveInject","DOCUMENT","selectors","inputs","messages","decls","vars","consts","template","rf","ctx","ɵɵrepeaterCreate","ConnectionMessageComponent_For_1_Template","ɵɵrepeaterTrackByIdentity","ɵɵrepeater","GalaxyAlertModule","AlertComponent","TranslateModule","TranslatePipe","encapsulation","ɵɵelement","ɵɵelementStart","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","card_r3","integration","ctx_r1","tab","connection","ɵɵtemplate","PlatformIntegrationsComponent_Conditional_2_Conditional_2_For_13_Conditional_0_Template","ɵɵconditional","ɵɵlistener","ɵɵrestoreView","_r4","ɵɵnextContext","ɵɵresetView","changeTab","userAction","BROWSE","card_r5","user","PlatformIntegrationsComponent_Conditional_2_Conditional_2_For_26_Conditional_0_Template","ɵɵtext","_r6","emptyPageLogo","ɵɵsanitizeUrl","ɵɵtextInterpolate","ɵɵpipeBind1","ɵɵtwoWayListener","$event","_r1","i0","ɵɵtwoWayBindingSet","ɵɵrepeaterCreate","PlatformIntegrationsComponent_Conditional_2_Conditional_2_For_13_Template","ɵɵrepeaterTrackByIdentity","PlatformIntegrationsComponent_Conditional_2_Conditional_2_Conditional_18_Template","PlatformIntegrationsComponent_Conditional_2_Conditional_2_For_26_Template","PlatformIntegrationsComponent_Conditional_2_Conditional_2_Conditional_27_Template","ɵɵtwoWayProperty","ɵɵpropertyInterpolate","preConnectedCards","disconnectedCards","connectedMessages","ɵɵrepeater","browseTabCards","context","SupportedContexts","PI_CONTEXT_SMB","manageTabCards","tmp_14_0","length","PlatformIntegrationsComponent_Conditional_2_Conditional_0_Template","PlatformIntegrationsComponent_Conditional_2_Conditional_2_Template","noAccess$","PlatformIntegrationsComponent","init_platform_integrations_component","__esmMin","init_common","init_core","init_rxjs_interop","init_button","init_icon","init_tabs","init_router","init_src","init_ngx_translate_core","init_alert","init_empty_state","init_loading_spinner","init_page","init_vendasta_platform_integrations","init_esm","init_operators","init_card_data_service","init_integration_card_component","init_preconnect_alert_component","init_disconnect_alert_component","init_util_service","init_integrations_banner_component","init_ngx_cookie_service","init_i18n","init_snackbar_service","init_page_no_access_unauthorized","init_connection_message_component","init_const","constructor","partnerId$","namespace$","UserAction","isLoading","route","inject","Router","activeRoute","ActivatedRoute","destroyRef","DestroyRef","cardService","CardDataService","utilService","UtilService","cookieService","CookieService","router","integrationCards$","getIntegrationsList","pipe","map","catchError","err","status","of","getImageSrc","snackbarService","SnackbarService","connectionList","signal","integrationCards","toSignal","EMPTY","userDetails","Map","computed","integrationList","result","qboPersonalPendingDisconnectConnectionID","get","instagramPendingDisconnectConnectionID","integrations","forEach","set","integrationId","connectionId","push","namespace","userId","sort","a","b","displayName","localeCompare","connections","filter","card","ConnectionStatus","DISCONNECTED","PRECONNECTED","flatMap","connectionMessages","message","setConnections","queryTab","getConnectionsList","userIds","isConnectionPresent","some","CONNECTED","MANAGE","switchMap","setUserDetails","console","log","subscribe","getMultiByUserId","users","usersMap","firstName","lastName","error","navigate","relativeTo","queryParams","previousPageUrl","PI_CONTEXT_PARTNER","ngOnInit","source","param","Number","isSSO","errorDescription","openErrorSnack","openSuccessSnack","takeUntilDestroyed","ɵɵdirectiveInject","PLATFORM_INTEGRATIONS_PARTNER_ID_INJECTION_TOKEN$","PLATFORM_INTEGRATIONS_NAMESPACE_INJECTION_TOKEN$","PLATFORM_INTEGRATIONS_CONTEXT_INJECTION_TOKEN$","selectors","decls","vars","consts","template","rf","ctx","PlatformIntegrationsComponent_Conditional_1_Template","PlatformIntegrationsComponent_Conditional_2_Template","CommonModule","AsyncPipe","MatTabsModule","MatTab","MatTabGroup","IntegrationCardComponent","PlatformIntegrationsI18nModule","PreconnectAlertComponent","DisconnectAlertComponent","GalaxyEmptyStateModule","EmptyStateComponent","EmptyStateHeroDirective","EmptyStateTitleDirective","EmptyStateActionsDirective","MatIconModule","MatButtonModule","MatButton","GalaxyAlertModule","TranslateModule","TranslatePipe","GalaxyLoadingSpinnerModule","LoadingSpinnerComponent","GalaxyPageModule","PageComponent","PageToolbarComponent","PageTitleDirective","PageNavDirective","PageNavButtonComponent","GalaxyI18NModule","GalaxyPageNoAccessUnauthorizedModule","PageNoAccessUnauthorizedComponent","IntegrationsBannerComponent","ConnectionMessageComponent","styles","routes","PlatformIntegrationsLibModule","init_platform_integrations_lib_module","__esmMin","init_router","init_marketing_page_component","init_config_page_component","init_platform_integrations_component","init_not_found","path","component","NotFoundComponent","MarketingPageComponent","ConfigPageComponent","PlatformIntegrationsComponent","RouterModule","forChild","ConnectionButtonComponent","init_connection_button_component","__esmMin","init_core","init_common","init_vendasta_platform_integrations","init_button","constructor","connectionActionService","inject","ConnectionActionService","config","input","required","label","computed","updateLabel","connectionStatus","ngOnInit","status","ConnectionStatus","CONNECTED","disconnectLabel","DISCONNECTED","reconnectLabel","PRECONNECTED","resumeLabel","connectLabel","onClick","isDisabled","disconnectAction","connectAction","preconnectAction","selectors","inputs","decls","vars","consts","template","rf","ctx","ɵɵelementStart","ɵɵlistener","ɵɵtext","ɵɵelementEnd","ɵɵproperty","styleClass","style","ɵɵadvance","ɵɵtextInterpolate1","CommonModule","NgClass","NgStyle","MatButtonModule","MatButton","styles","init_lib","__esmMin","init_const","init_model","init_common","init_platform_integrations_lib_module","init_platform_integrations_component","init_marketing_page_component","init_config_page_component","init_sync_settings_component","init_connection_button_component","init_card_data_service","init_src","__esmMin","init_lib"],"x_google_ignoreList":[22]}