{"version":3,"sources":["node_modules/fast-deep-equal/index.js","node_modules/assert-never/index.js","libs/businesses/src/lib/feature-flag.service.ts","libs/listing-profile-common/src/lib/listing-profile.ts","libs/listing-profile-common/src/lib/update-operations.ts","libs/listing-profile-common/src/lib/listing-profile.service.ts","libs/businesses/src/lib/product-activation-prereq-form/product-activation-prereq-form.component.ts","libs/businesses/src/lib/product-activation-prereq-form/product-activation-prereq-form.component.html","libs/businesses/src/lib/product-activation-prereq-form/validators.ts","libs/businesses/src/lib/product-activation-prereq-form/product-activation-prereq-form.module.ts","libs/businesses/src/lib/business-selector-dialog/format-address.pipe.ts","libs/businesses/src/lib/business-selector-dialog/business-selector-dialog.component.ts","libs/businesses/src/lib/business-selector-dialog/business-selector-dialog.component.html","libs/businesses/src/lib/business-selector-dialog/business-selector-dialog.module.ts","libs/businesses/src/lib/media-tab/media-tab.interface.ts","libs/businesses/src/lib/media-tab/media-tab-gallery/media-tab-gallery.component.ts","libs/businesses/src/lib/media-tab/media-tab-gallery/media-tab-gallery.component.html","libs/business-category/src/lib/constants.ts","libs/business-category/src/lib/category-overview/category-overview.component.ts","libs/business-category/src/lib/category-overview/category-overview.component.html","libs/business-category/src/lib/business-category.service.ts","libs/business-category/src/lib/pipes/highlight-search.pipe.ts","libs/business-category/src/lib/category-select/category-select.service.ts","libs/business-category/src/lib/pipes/exclude-categories.pipe.ts","libs/business-category/src/lib/pipes/chip-color.pipe.ts","libs/business-category/src/lib/category-select/category-select.component.ts","libs/business-category/src/lib/category-select/category-select.component.html","libs/business-category/src/lib/business-category.module.ts","libs/business-category/src/lib/utils.ts","libs/businesses/src/lib/business-profile.interface.ts","libs/businesses/src/lib/format-phone-number.pipe.ts","node_modules/@vendasta/account-group-media/fesm2020/vendasta-account-group-media.mjs","node_modules/@vendasta/media/fesm2020/vendasta-media.mjs","libs/businesses/src/lib/media-tab/upload-image-dialog/upload-image-dialog.component.ts","libs/businesses/src/lib/media-tab/upload-image-dialog/upload-image-dialog.component.html","libs/businesses/src/lib/media-tab/media-tab.service.ts","libs/businesses/src/lib/media-tab/media-tab.component.ts","libs/businesses/src/lib/media-tab/media-tab.component.html","libs/businesses/src/lib/more-hours/more-hours.component.ts","libs/businesses/src/lib/more-hours/more-hours.component.html","libs/businesses/src/lib/business-profile.component.ts","libs/businesses/src/lib/business-profile.component.html","libs/taxonomy-i18n/src/lib/assets/i18n/en_devel.json","libs/taxonomy-i18n/src/lib/constants.ts","libs/taxonomy-i18n/src/lib/taxonomy-i18n.module.ts","libs/businesses/src/lib/competitors-tab/competitors-tab.service.ts","libs/businesses/src/lib/competitors-tab/competitors-tab.module.ts","libs/businesses/src/lib/media-tab/media-tab-gallery/media-tab-gallery.module.ts","libs/businesses/src/lib/media-tab/upload-image-dialog/upload-image-dialog.module.ts","libs/businesses/src/lib/media-tab/media-tab.module.ts","libs/businesses/src/lib/place-autocomplete/place-autocomplete.component.ts","libs/businesses/src/lib/place-autocomplete/place-autocomplete.component.html","libs/businesses/src/lib/business-profile.module.ts","libs/businesses/src/lib/account-lists-modal/account-lists-modal.component.ts","libs/businesses/src/lib/account-lists-modal/account-lists-modal.component.html","libs/businesses/src/lib/account-lists-modal/account-lists-service.module.ts","libs/businesses/src/lib/account-lists-modal/account-lists.service.ts"],"sourcesContent":["'use strict';\n\n// do not edit .js files directly - edit src/index.jst\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;) if (!equal(a[i], b[i])) return false;\n return true;\n }\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n for (i = length; i-- !== 0;) if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n if (!equal(a[key], b[key])) return false;\n }\n return true;\n }\n\n // true if both NaN, false otherwise\n return a !== a && b !== b;\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n/**\n * Helper function for exhaustive checks of discriminated unions.\n * https://basarat.gitbooks.io/typescript/docs/types/discriminated-unions.html\n *\n * @example\n *\n * type A = {type: 'a'};\n * type B = {type: 'b'};\n * type Union = A | B;\n *\n * function doSomething(arg: Union) {\n * if (arg.type === 'a') {\n * return something;\n * }\n *\n * if (arg.type === 'b') {\n * return somethingElse;\n * }\n *\n * // TS will error if there are other types in the union\n * // Will throw an Error when called at runtime.\n * // Use `assertNever(arg, true)` instead to fail silently.\n * return assertNever(arg);\n * }\n */\nfunction assertNever(value, noThrow) {\n if (noThrow) {\n return value;\n }\n throw new Error(\"Unhandled discriminated union member: \" + JSON.stringify(value));\n}\nexports.assertNever = assertNever;\nexports.default = assertNever;","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { FeatureFlagService as PartnerSDKFeatureFlagService } from '@galaxy/partner';\n\nexport class FeatureFlagMultiResponse {\n [key: string]: boolean;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class FeatureFlagService {\n constructor(private featureFlagService: PartnerSDKFeatureFlagService) {}\n\n checkFeatureFlagsMulti(partnerId: string, marketId = '', featureIds: string[]): Observable {\n return this.featureFlagService.batchGetStatus(partnerId, marketId, featureIds);\n }\n\n checkFeatureFlag(partnerId: string, marketId = '', featureId: string): Observable {\n return this.checkFeatureFlagsMulti(partnerId, marketId, [featureId]).pipe(\n map((val: FeatureFlagMultiResponse): boolean => {\n return featureId in val && val[featureId];\n }),\n );\n }\n}\n","import { DayOfWeek, RegularHoursPeriod, TimeOfDay } from '@vendasta/listing-products';\nexport { ListingProfile } from '@vendasta/listing-products';\n\nfunction is24Hours(hourPeriod: RegularHoursPeriod) {\n return timeIsMidnight(hourPeriod.openTime) && timeIsMidnight(hourPeriod.closeTime);\n}\n\nfunction timeIsMidnight(tod: TimeOfDay) {\n if ((tod.hours === 0 || tod.hours === 24) && tod.minutes === 0) {\n return true;\n }\n return false;\n}\n\nfunction transformUndefinedTimeObject(rhp: RegularHoursPeriod): RegularHoursPeriod {\n if (!rhp.openTime) {\n rhp.openTime = {\n hours: 0,\n minutes: 0,\n seconds: 0,\n nanos: 0,\n toApiJson: undefined,\n };\n }\n if (!rhp.openTime.hours) {\n rhp.openTime.hours = 0;\n }\n if (!rhp.openTime.minutes) {\n rhp.openTime.minutes = 0;\n }\n if (!rhp.closeTime) {\n rhp.closeTime = {\n hours: 0,\n minutes: 0,\n seconds: 0,\n nanos: 0,\n toApiJson: undefined,\n };\n }\n if (!rhp.closeTime.hours) {\n rhp.closeTime.hours = 0;\n }\n if (!rhp.closeTime.minutes) {\n rhp.closeTime.minutes = 0;\n }\n\n return rhp;\n}\n\nfunction bIsNextDayToA(a: DayOfWeek, b: DayOfWeek) {\n if (a + 1 === b) {\n return true;\n }\n if ((a + 1) % 8 === 0) {\n if (b === 1) {\n return true;\n }\n }\n return false;\n}\n\nexport function MergeHours(regularHours: RegularHoursPeriod[]): RegularHoursPeriod[] {\n const mergedHours: RegularHoursPeriod[] = [];\n for (let i = 0; i < regularHours.length; i++) {\n let combiningWrap = false;\n let curr = regularHours[i];\n let next = regularHours[i + 1];\n // If this is the last element in the week we need to check if it\n // should be combined with the first element in the week\n if (i === regularHours.length - 1) {\n if ((curr.closeDay + 1) % 8 === 0) {\n combiningWrap = true;\n next = regularHours[0];\n }\n }\n // Unfuck shitty typescript objects\n if (curr) {\n curr = transformUndefinedTimeObject(curr);\n }\n if (next) {\n next = transformUndefinedTimeObject(next);\n }\n\n if (\n next && // There must be a next entry to paste to\n !is24Hours(curr) && // Don't combine if either span is 24 hours\n !is24Hours(next) &&\n bIsNextDayToA(curr.openDay, next.openDay) && // Spans must be consecutive days\n timeIsMidnight(curr.closeTime) && // Span must end at midnight\n timeIsMidnight(next.openTime) && // Next span must start at midnight\n // Merged span must be less than or equal to 24 hours\n (curr.openTime.hours > next.closeTime.hours ||\n (curr.openTime.hours === next.closeTime.hours && curr.openTime.minutes >= next.closeTime.minutes))\n ) {\n const cs: RegularHoursPeriod = {\n openDay: curr.openDay,\n openTime: curr.openTime,\n closeDay: next.closeDay,\n closeTime: next.closeTime,\n toApiJson(): object {\n return undefined;\n },\n };\n mergedHours.push(cs);\n // For the special case of the last span combining with the first, we\n // also need to go back and remove the first\n if (combiningWrap) {\n mergedHours.shift();\n }\n i++; // skip the next span since it has been combined with the current span\n } else {\n mergedHours.push(curr);\n }\n }\n\n return mergedHours;\n}\n\nexport function SplitHours(timeSpanList: RegularHoursPeriod[]): RegularHoursPeriod[] {\n return timeSpanList.reduce((acc: RegularHoursPeriod[], curr: RegularHoursPeriod) => {\n if (curr.openTime.hours < curr.closeTime.hours) {\n acc.push(curr);\n return acc;\n }\n\n const preMidnightHoursPeriod = new RegularHoursPeriod({\n ...curr,\n closeTime: new TimeOfDay({ hours: 24, minutes: 0 }),\n });\n\n acc.push(preMidnightHoursPeriod);\n\n if (curr.closeTime.hours === 0) {\n return acc;\n }\n\n const nextDay = curr.closeDay + 1 > DayOfWeek.SUNDAY ? 1 : curr.closeDay + 1;\n\n const crossMidnightHoursPeriod = new RegularHoursPeriod({\n ...curr,\n openTime: new TimeOfDay({ hours: 0, minutes: 0 }),\n closeDay: nextDay,\n openDay: nextDay,\n });\n\n acc.push(crossMidnightHoursPeriod);\n return acc;\n }, []);\n}\n","import {\n BingAttributes,\n BusinessHours,\n GoogleAttributes,\n LocationInterface,\n ExternalIdentifiers,\n Geo,\n RichData,\n ServiceArea,\n SocialURLs,\n LegacyProductDetails,\n} from '@vendasta/listing-products';\n\n/**\n * @deprecated This method should not be used. It is a direct copy of the internal rxjs applyMixins function that is no longer exported.\n *\n * This is a copy of internal rxjs implementation details. This function used to be exported, but is now unexported as\n * it wasn't intended to be used outside the library itself. We copied this as a low effort way to migrate to rxjs 7.\n * We should remove this and use the public API.\n *\n * Ultimately, this is based off the alternative implementation of the `applyMixins` function from the TypeScript handbook:\n * https://www.typescriptlang.org/docs/handbook/mixins.html#alternative-pattern\n *\n * @param derivedCtor The class that will be extended\n * @param baseCtors The mixins that will be applied to the derived class\n * @returns void\n *\n * It may make sense to move this to a shared lib, or look at the current typescript handbook implementation to see if\n * there is a better way to do this. I.e. without using `any` types.\n */\n\nfunction applyMixins(derivedCtor: any, baseCtors: any[]): void {\n for (let i = 0, len = baseCtors.length; i < len; i++) {\n const baseCtor = baseCtors[i];\n const propertyKeys = Object.getOwnPropertyNames(baseCtor.prototype);\n for (let j = 0, len2 = propertyKeys.length; j < len2; j++) {\n const name = propertyKeys[j];\n derivedCtor.prototype[name] = baseCtor.prototype[name];\n }\n }\n}\n\nexport class UpdateOperations {\n private operations: AbstractUpdateOperation[] = [];\n\n addUpdateOperation(updateOperation: AbstractUpdateOperation): void {\n this.operations.push(updateOperation);\n }\n\n toApiJson(): object[] {\n if (this.operations.length === 0) {\n return null;\n }\n\n return this.operations\n .map((operation: AbstractUpdateOperation) => {\n const op: any = {};\n const json = operation.toApiJson();\n\n if (json === null) {\n return null;\n }\n\n const mask = operation.getMask();\n if (mask.length === 0) {\n return null;\n }\n\n op[operation.OPERATION_ID] = this.cleanNonFieldMaskProperties(json, mask);\n op.fieldMask = {\n paths: mask,\n };\n return op;\n })\n .filter((op) => !!op);\n }\n\n cleanNonFieldMaskProperties(json: object, paths: string[]): object {\n for (const key in json) {\n if (Object.prototype.hasOwnProperty.call(json, key) && paths.indexOf(key) === -1) {\n delete json[key];\n }\n }\n return json;\n }\n}\n\nexport abstract class AbstractUpdateOperation {\n OPERATION_ID: string;\n\n abstract toApiJson(): object;\n\n getMask(): string[] {\n const mask: string[] = [];\n for (const key in this) {\n if (\n Object.prototype.hasOwnProperty.call(this, key) &&\n typeof this[key] !== 'undefined' &&\n key !== 'OPERATION_ID'\n ) {\n mask.push(key);\n }\n }\n\n return mask;\n }\n}\n\nexport class NapUpdateOperation extends AbstractUpdateOperation implements LocationInterface {\n OPERATION_ID = 'nap';\n companyName: string;\n address: string;\n address2: string;\n city: string;\n state: string;\n zip: string;\n country: string;\n serviceAreaBusiness: boolean;\n website: string;\n workNumber: string[];\n callTrackingNumber: string[];\n location: Geo;\n timezone: string;\n serviceArea: ServiceArea;\n\n constructor(kwargs?: LocationInterface) {\n super();\n return Object.assign(this, kwargs);\n }\n\n toApiJson(): object {\n if (\n typeof this.companyName === 'undefined' &&\n typeof this.address === 'undefined' &&\n typeof this.address2 === 'undefined' &&\n typeof this.city === 'undefined' &&\n typeof this.state === 'undefined' &&\n typeof this.zip === 'undefined' &&\n typeof this.country === 'undefined' &&\n typeof this.website === 'undefined' &&\n typeof this.workNumber === 'undefined' &&\n typeof this.callTrackingNumber === 'undefined' &&\n typeof this.location === 'undefined' &&\n typeof this.timezone === 'undefined' &&\n typeof this.serviceAreaBusiness === 'undefined' &&\n typeof this.serviceArea === 'undefined'\n ) {\n return null;\n }\n return {\n companyName: typeof this.companyName !== 'undefined' ? this.companyName : null,\n address: typeof this.address !== 'undefined' ? this.address : null,\n address2: typeof this.address2 !== 'undefined' ? this.address2 : null,\n city: typeof this.city !== 'undefined' ? this.city : null,\n state: typeof this.state !== 'undefined' ? this.state : null,\n zip: typeof this.zip !== 'undefined' ? this.zip : null,\n country: typeof this.country !== 'undefined' ? this.country : null,\n serviceAreaBusiness: typeof this.serviceAreaBusiness !== 'undefined' ? this.serviceAreaBusiness : null,\n serviceArea: typeof this.serviceArea !== 'undefined' ? this.serviceArea?.toApiJson() : null,\n website: typeof this.website !== 'undefined' ? this.website : null,\n workNumber: typeof this.workNumber !== 'undefined' ? this.workNumber : null,\n callTrackingNumber: typeof this.callTrackingNumber !== 'undefined' ? this.callTrackingNumber : null,\n location: typeof this.location !== 'undefined' ? this.location.toApiJson() : null,\n timezone: typeof this.timezone !== 'undefined' ? this.timezone : null,\n };\n }\n}\n\nexport class ExternalIdentifiersUpdateOperation extends ExternalIdentifiers implements AbstractUpdateOperation {\n OPERATION_ID = 'externalIdentifiers';\n getMask: () => string[];\n toApiJsonWithMask: () => object;\n}\napplyMixins(ExternalIdentifiersUpdateOperation, [AbstractUpdateOperation]);\n\nexport class SocialURLsUpdateOperation extends SocialURLs implements AbstractUpdateOperation {\n OPERATION_ID = 'socialUrls';\n getMask: () => string[];\n toApiJsonWithMask: () => object;\n}\napplyMixins(SocialURLsUpdateOperation, [AbstractUpdateOperation]);\n\nexport class RichDataUpdateOperation extends RichData implements AbstractUpdateOperation {\n OPERATION_ID = 'richData';\n getMask: () => string[];\n toApiJsonWithMask: () => object;\n}\napplyMixins(RichDataUpdateOperation, [AbstractUpdateOperation]);\n\nexport class GoogleAttributesUpdateOperation extends GoogleAttributes implements AbstractUpdateOperation {\n OPERATION_ID = 'googleAttributes';\n getMask: () => string[];\n toApiJsonWithMask: () => object;\n}\napplyMixins(GoogleAttributesUpdateOperation, [AbstractUpdateOperation]);\n\nexport class BingAttributesUpdateOperation extends BingAttributes implements AbstractUpdateOperation {\n OPERATION_ID = 'bingAttributes';\n getMask: () => string[];\n toApiJsonWithMask: () => object;\n}\napplyMixins(BingAttributesUpdateOperation, [AbstractUpdateOperation]);\n\nexport class BusinessHoursUpdateOperation extends BusinessHours implements AbstractUpdateOperation {\n OPERATION_ID = 'businessHours';\n getMask: () => string[];\n toApiJsonWithMask: () => object;\n}\napplyMixins(BusinessHoursUpdateOperation, [AbstractUpdateOperation]);\n\nexport class MoreHoursUpdateOperation extends BusinessHours implements AbstractUpdateOperation {\n OPERATION_ID = 'moreHours';\n getMask: () => string[];\n toApiJsonWithMask: () => object;\n}\napplyMixins(MoreHoursUpdateOperation, [AbstractUpdateOperation]);\n\nexport class LegacyProductDetailsUpdateOperation extends LegacyProductDetails implements AbstractUpdateOperation {\n OPERATION_ID = 'legacyProductDetails';\n getMask: () => string[];\n toApiJsonWithMask: () => object;\n}\napplyMixins(LegacyProductDetailsUpdateOperation, [AbstractUpdateOperation]);\n","import { HttpErrorResponse, HttpResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable, throwError as observableThrowError } from 'rxjs';\nimport { catchError, map, share } from 'rxjs/operators';\nimport { UpdateOperations } from './update-operations';\nimport {\n ProjectionFilter,\n GetMultiListingProfileRequest,\n ListingProfileApiService as ApiService,\n UpdateListingProfileRequest,\n ListingProfile,\n} from '@vendasta/listing-products';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Injectable({ providedIn: 'root' })\nexport class ListingProfileService {\n constructor(\n private lp: ApiService,\n private translate: TranslateService,\n ) {}\n\n get(businessId: string, projectionFilter: ProjectionFilter): Observable {\n return this.lp\n .getMulti(\n new GetMultiListingProfileRequest({\n businessIds: [businessId],\n projectionFilter: projectionFilter,\n languageCode: this.translate.currentLang || this.translate.defaultLang,\n }),\n )\n .pipe(\n map((response) => {\n return response?.listingProfiles?.length > 0 ? response.listingProfiles[0].listingProfile : null;\n }),\n share(),\n );\n }\n\n bulkUpdate(businessId: string, updateOperations: UpdateOperations): Observable> {\n return this.lp\n .update(\n new UpdateListingProfileRequest({\n businessId: businessId,\n updateOperations: updateOperations.toApiJson(),\n }),\n )\n .pipe(\n catchError((err: HttpErrorResponse) => {\n let message;\n if (err.status === 401) {\n message = this.translate.instant('FRONTEND.BUSINESSES.INVALID_SESSION');\n } else if (err.status === 400) {\n message =\n (err.error && err.error.message) || this.translate.instant('FRONTEND.BUSINESSES.INVALID_SUBMISSION');\n } else {\n message = this.translate.instant('FRONTEND.BUSINESSES.FAILED_TO_UPDATE');\n }\n return observableThrowError({ message: message, retryable: err.status === 401 });\n }),\n share(),\n );\n }\n}\n","import { HttpResponse } from '@angular/common/http';\nimport { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport {\n UntypedFormArray,\n UntypedFormBuilder,\n UntypedFormControl,\n UntypedFormGroup,\n ValidatorFn,\n Validators,\n} from '@angular/forms';\nimport {\n AccountGroup,\n AccountGroupService,\n ProjectionFilter,\n RichDataUpdateOperation,\n UpdateOperations,\n} from '@galaxy/account-group';\nimport {\n BusinessHoursUpdateOperation,\n UpdateOperations as LPUpdateOperations,\n ListingProfileService,\n MergeHours,\n SplitHours,\n} from '@galaxy/listing-profile-common';\nimport { PartnerApiService } from '@galaxy/marketplace-apps';\nimport { TranslateService } from '@ngx-translate/core';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport {\n BusinessHours,\n ListingProfile,\n RegularHoursPeriod,\n ProjectionFilter as LPProjectionFilter,\n} from '@vendasta/listing-products';\nimport { OrderFormOptionsInterface } from '@vendasta/store';\nimport equal from 'fast-deep-equal';\nimport { BehaviorSubject, EMPTY, Observable, Subscription, combineLatest, of } from 'rxjs';\nimport { catchError, debounceTime, filter, map, startWith, switchMap, tap } from 'rxjs/operators';\nimport { arrayAllTruthyItemsRequired, totalLengthOfRepeatedFieldValidator } from './validators';\n\ninterface BusinessSectionConfig {\n showHoO: boolean;\n showServices: boolean;\n showBrands: boolean;\n showDescription: boolean;\n showLongDescription: boolean;\n}\n\n@Component({\n selector: 'business-product-activation-prereq-form',\n templateUrl: './product-activation-prereq-form.component.html',\n styleUrls: ['./product-activation-prereq-form.component.scss'],\n})\nexport class ProductActivationPrereqFormComponent implements OnInit, OnDestroy {\n @Input() businessId: string;\n @Input() expanded = false;\n @Input() orderFormOptions: OrderFormOptionsInterface = {};\n\n @Input()\n set productIds(productIds: string[]) {\n this.productIds$$.next(productIds);\n }\n\n @Output() hasBusinessProductActivationPrereqFormEvent: EventEmitter = new EventEmitter();\n\n private productIds$$: BehaviorSubject = new BehaviorSubject([]);\n private sectionConfig$$: BehaviorSubject = new BehaviorSubject(null);\n private submitting$$: BehaviorSubject = new BehaviorSubject(false);\n private loading$$: BehaviorSubject = new BehaviorSubject(true);\n private business$: Observable;\n private listingProfile$: Observable;\n readonly productIds$: Observable = this.productIds$$.asObservable();\n readonly sectionConfig$: Observable = this.sectionConfig$$.asObservable();\n readonly submitting$: Observable = this.submitting$$.asObservable();\n readonly loading$: Observable = this.loading$$.asObservable();\n hasRestrictions$: Observable;\n\n private subscriptions: Subscription[] = [];\n\n businessActivationForm: UntypedFormGroup;\n servicesPlaceholder: string;\n brandsPlaceholder: string;\n\n currentSubmittedFormValues: any;\n public hasUnsavedChanges$$: BehaviorSubject = new BehaviorSubject(false);\n public hasUnsavedChanges$ = this.hasUnsavedChanges$$.asObservable();\n public isValid$: Observable = of(true);\n\n public static checkChipFieldValidity(chipField: any): boolean {\n if (!chipField) {\n return false;\n }\n\n // the chips component's empty state is a list with one empty string\n if (chipField instanceof Array) {\n if (chipField.length === 1 && chipField[0] === '') {\n return false;\n }\n }\n return true;\n }\n\n constructor(\n private fb: UntypedFormBuilder,\n private accountGroupService: AccountGroupService,\n private listingProfileService: ListingProfileService,\n private partnerApiService: PartnerApiService,\n private translateService: TranslateService,\n private alertService: SnackbarService,\n ) {}\n\n ngOnInit(): void {\n this.servicesPlaceholder = this.orderFormOptions?.bypassRequiredQuestions\n ? this.translateService.instant('FRONTEND.BUSINESSES.SERVICES_OFFERED')\n : this.translateService.instant('FRONTEND.BUSINESSES.SERVICES_OFFERED') + ' *';\n this.brandsPlaceholder = this.orderFormOptions?.bypassRequiredQuestions\n ? this.translateService.instant('FRONTEND.BUSINESSES.BRANDS_CARRIED')\n : this.translateService.instant('FRONTEND.BUSINESSES.BRANDS_CARRIED') + ' *';\n\n this.business$ = this.accountGroupService\n .get(\n this.businessId,\n new ProjectionFilter({\n richData: true,\n accountGroupExternalIdentifiers: true,\n }),\n )\n .pipe(catchError(() => of(new AccountGroup())));\n\n this.listingProfile$ = this.listingProfileService\n .get(\n this.businessId,\n new LPProjectionFilter({\n businessHours: true,\n }),\n )\n .pipe(catchError(() => of(new ListingProfile())));\n\n this.getSectionConfig$();\n\n this.hasRestrictions$ = this.sectionConfig$.pipe(\n map((resp) => {\n if (\n resp &&\n (resp.showDescription || resp.showLongDescription || resp.showHoO || resp.showServices || resp.showBrands)\n ) {\n return true;\n } else {\n this.hasBusinessProductActivationPrereqFormEvent.emit(false);\n return false;\n }\n }),\n );\n\n this.subscriptions.push(\n combineLatest([this.business$, this.listingProfile$, this.sectionConfig$])\n .pipe(\n map(([business, listingProfile, sectionConfig]) => {\n const shortDescription = sectionConfig?.showDescription\n ? (business && business.richData && business.richData.shortDescription) || ''\n : null;\n const longDescription = sectionConfig?.showLongDescription\n ? (business && business.richData && business.richData.description) || ''\n : null;\n\n let businessHours: RegularHoursPeriod[] = null;\n if (sectionConfig?.showHoO) {\n const generalHours = listingProfile.businessHours?.find((hours) => hours.hoursTypeId === 'GENERAL');\n businessHours = MergeHours(generalHours?.regularHours || []);\n }\n\n let servicesOffered = null;\n if (sectionConfig?.showServices) {\n servicesOffered = [''];\n if (business?.richData?.servicesOffered && business.richData.servicesOffered.length) {\n servicesOffered = business.richData.servicesOffered;\n }\n }\n\n let brandsCarried = null;\n if (sectionConfig?.showBrands) {\n brandsCarried = [''];\n if (business?.richData?.brandsCarried && business.richData.brandsCarried.length) {\n brandsCarried = business.richData.brandsCarried;\n }\n }\n\n const validators: ValidatorFn[] = [];\n const arrayValidators: ValidatorFn[] = [];\n if (!this.orderFormOptions?.bypassRequiredQuestions) {\n validators.push(Validators.required);\n arrayValidators.push(arrayAllTruthyItemsRequired());\n }\n\n const businessProfileForm = new UntypedFormGroup({});\n if (shortDescription !== null) {\n businessProfileForm.addControl('shortDescription', this.fb.control(shortDescription, validators));\n }\n if (longDescription !== null) {\n businessProfileForm.addControl('description', this.fb.control(longDescription, validators));\n }\n if (businessHours !== null) {\n businessProfileForm.addControl('businessHours', this.fb.control(businessHours, []));\n }\n if (servicesOffered !== null) {\n businessProfileForm.addControl(\n 'servicesOffered',\n this.fb.array(servicesOffered, [\n Validators.compose([\n Validators.minLength(1),\n Validators.maxLength(15),\n ...arrayValidators,\n totalLengthOfRepeatedFieldValidator(\n 256,\n this.translateService.instant('FRONTEND.BUSINESSES.SERVICES_OFFERED'),\n ),\n ]),\n ]),\n );\n }\n if (brandsCarried !== null) {\n businessProfileForm.addControl(\n 'brandsCarried',\n this.fb.array(\n brandsCarried,\n Validators.compose([\n Validators.minLength(1),\n Validators.maxLength(15),\n ...arrayValidators,\n totalLengthOfRepeatedFieldValidator(\n 256,\n this.translateService.instant('FRONTEND.BUSINESSES.BRANDS_CARRIED'),\n ),\n ]),\n ),\n );\n }\n this.currentSubmittedFormValues = JSON.parse(JSON.stringify(businessProfileForm.value));\n return businessProfileForm;\n }),\n )\n .subscribe((form) => {\n this.businessActivationForm = form;\n if (this.orderFormOptions?.readOnly && this.businessActivationForm.controls.businessHours) {\n this.businessActivationForm.controls.businessHours.disable();\n }\n\n // Track changes\n Object.keys(this.businessActivationForm.controls).map((controlName) => {\n return this.subscriptions.push(\n this.businessActivationForm.controls[controlName].valueChanges\n .pipe(\n debounceTime(500),\n tap((changes) =>\n this.hasUnsavedChanges$$.next(!equal(this.currentSubmittedFormValues[controlName], changes)),\n ),\n )\n .subscribe(),\n );\n });\n\n this.isValid$ = this.businessActivationForm.valueChanges.pipe(\n startWith([null]),\n map(() => {\n let hasSubmittedRequiredValues = true;\n for (const key of Object.keys(this.currentSubmittedFormValues)) {\n const formValue = this.currentSubmittedFormValues[key];\n if (!ProductActivationPrereqFormComponent.checkChipFieldValidity(formValue)) {\n hasSubmittedRequiredValues = false;\n break;\n }\n }\n const isValid = this.businessActivationForm.valid && hasSubmittedRequiredValues;\n if (!isValid) {\n this.setAsTouched(this.businessActivationForm);\n }\n return isValid;\n }),\n );\n }),\n );\n }\n\n getSectionConfig$(): void {\n this.loading$$.next(true);\n combineLatest([this.productIds$, this.business$])\n .pipe(\n switchMap(([productIds, business]) => {\n if (!productIds || productIds.length === 0 || business?.deleted || !business.externalIdentifiers) {\n this.loading$$.next(false);\n return of(EMPTY);\n }\n return this.partnerApiService.getMultiApp({\n partnerId: business.externalIdentifiers.partnerId,\n marketId: business.externalIdentifiers.marketId,\n appKeys: productIds.map((appId) => {\n return { appId: appId };\n }),\n includeNotEnabled: true,\n });\n }),\n filter((resp: any) => Boolean(resp?.apps)),\n map((resp) => resp.apps.map((app) => app?.activationInformation?.requiredBusinessData)),\n map((configs) => configs.filter((config) => config)),\n map((configs) =>\n configs.reduce(\n (acc, appConfig) => {\n acc.showHoO = acc.showHoO || appConfig.hours;\n acc.showDescription = acc.showDescription || appConfig.descriptionShort;\n acc.showLongDescription = acc.showLongDescription || appConfig.descriptionLong;\n acc.showBrands = acc.showBrands || appConfig.brands;\n acc.showServices = acc.showServices || appConfig.services;\n return acc;\n },\n {\n showHoO: false,\n showServices: false,\n showBrands: false,\n showDescription: false,\n showLongDescription: false,\n } as BusinessSectionConfig,\n ),\n ),\n catchError((err) => {\n console.error('Error caught: ', err);\n this.loading$$.next(false);\n return EMPTY;\n }),\n )\n .subscribe((config) => {\n this.sectionConfig$$.next(config);\n this.loading$$.next(false);\n });\n }\n\n private setAsTouched(form: UntypedFormGroup): void {\n form.markAsTouched();\n const controls = form.controls;\n for (const i of Object.keys(controls)) {\n if (controls[i] instanceof UntypedFormControl) {\n controls[i].markAsTouched();\n } else if (controls[i] instanceof UntypedFormGroup) {\n this.setAsTouched(controls[i] as UntypedFormGroup);\n } else if (controls[i] instanceof UntypedFormArray) {\n (controls[i] as UntypedFormArray).controls.forEach((c) => c.markAsTouched());\n }\n controls[i].updateValueAndValidity({ emitEvent: false });\n }\n form.updateValueAndValidity({ emitEvent: false });\n }\n\n onSubmit(): void {\n if (this.businessActivationForm.pristine) {\n this.alertService.openErrorSnack('FRONTEND.BUSINESSES.NO_CHANGES_TO_SAVE');\n return;\n }\n\n if (!this.businessActivationForm.valid) {\n let errorMsg = this.translateService.instant('FRONTEND.BUSINESSES.INVALID_SUBMISSION') + ': ';\n if (this.businessActivationForm.get('servicesOffered')?.invalid) {\n errorMsg +=\n this.translateService.instant('FRONTEND.BUSINESSES.PRODUCT_ACTIVATION_FORM.INVALID_SERVICES_OFFERED_FIELD') +\n ' ';\n }\n if (this.businessActivationForm.get('brandsCarried')?.invalid) {\n if (this.businessActivationForm.get('servicesOffered')?.invalid) {\n errorMsg += '| ';\n }\n errorMsg += this.translateService.instant(\n 'FRONTEND.BUSINESSES.PRODUCT_ACTIVATION_FORM.INVALID_BRANDS_CARRIED_FIELD',\n );\n }\n this.alertService.openErrorSnack(errorMsg);\n return;\n }\n\n const data = this.businessActivationForm.value;\n const updateOperations = new UpdateOperations();\n let listingProfileUpdate$: Observable> = of(null);\n\n if (this.businessActivationForm.controls.businessHours?.dirty) {\n const lpUpdateOperations = new LPUpdateOperations();\n lpUpdateOperations.addUpdateOperation(\n new BusinessHoursUpdateOperation(\n new BusinessHours({\n regularHours: SplitHours(data.businessHours),\n hoursTypeId: 'GENERAL',\n }),\n ),\n );\n listingProfileUpdate$ = this.listingProfileService.bulkUpdate(this.businessId, lpUpdateOperations);\n }\n\n const richDataUpdateOperation: RichDataUpdateOperation = new RichDataUpdateOperation();\n if (this.businessActivationForm.controls.brandsCarried?.dirty) {\n richDataUpdateOperation.brandsCarried = data.brandsCarried;\n }\n if (this.businessActivationForm.controls.servicesOffered?.dirty) {\n richDataUpdateOperation.servicesOffered = data.servicesOffered;\n }\n if (this.businessActivationForm.controls.shortDescription?.dirty) {\n richDataUpdateOperation.shortDescription = data.shortDescription;\n }\n if (this.businessActivationForm.controls.description?.dirty) {\n richDataUpdateOperation.description = data.description;\n }\n\n updateOperations.addUpdateOperation(richDataUpdateOperation);\n\n this.submitting$$.next(true);\n const agUpdate$ = this.accountGroupService.bulkUpdate(this.businessId, updateOperations);\n this.subscriptions.push(\n combineLatest([agUpdate$, listingProfileUpdate$]).subscribe({\n next: () => {\n this.alertService.openSuccessSnack('FRONTEND.BUSINESSES.PRODUCT_ACTIVATION_FORM.SUCCESS_MESSAGE');\n this.currentSubmittedFormValues = JSON.parse(JSON.stringify(data));\n this.businessActivationForm.updateValueAndValidity();\n this.hasUnsavedChanges$$.next(false);\n },\n error: (err) => {\n console.error('Error saving to account group %s; error %s', this.businessId, err);\n this.alertService.openErrorSnack('FRONTEND.BUSINESSES.PRODUCT_ACTIVATION_FORM.ERROR_MESSAGE');\n this.submitting$$.next(false);\n },\n complete: () => {\n this.submitting$$.next(false);\n },\n }),\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach((subscription) => subscription.unsubscribe());\n }\n}\n","\n
\n
\n
\n\n \n \n \n \n \n {{ 'FRONTEND.BUSINESSES.PRODUCT_ACTIVATION_FORM.ACCOUNT_INFORMATION' | translate }}\n \n \n {{ 'FRONTEND.BUSINESSES.PRODUCT_ACTIVATION_FORM.ACCOUNT_INFORMATION_SUBTITLE' | translate }}\n \n \n \n \n \n \n\n\n\n
\n \n \n \n \n \n warning\n \n \n info_outline\n \n \n {{ 'FRONTEND.BUSINESSES.PRODUCT_ACTIVATION_FORM.FULL_BUSINESS_PROFILE' | translate }}\n \n \n \n \n \n \n {{ 'FRONTEND.BUSINESSES.PRODUCT_ACTIVATION_FORM.FULL_BUSINESS_PROFILE_DESCRIPTION' | translate }}\n \n \n \n \n {{\n 'FRONTEND.BUSINESSES.PRODUCT_ACTIVATION_FORM.FULL_BUSINESS_PROFILE_READ_ONLY_DESCRIPTION' | translate\n }}\n \n \n \n \n \n \n \n {{ 'FRONTEND.BUSINESSES.LONG_DESCRIPTION' | translate }}\n *\n \n \n {{ longDescription.value.length }} / 750\n \n
\n
\n {{ 'FRONTEND.BUSINESSES.LONG_DESCRIPTION' | translate }}\n
\n
\n {{ businessActivationForm.controls.description?.value }}\n
\n
\n \n \n {{ 'FRONTEND.BUSINESSES.SHORT_DESCRIPTION' | translate }}\n *\n \n \n {{ shortDescription.value.length }} / 200\n \n
\n
\n {{ 'FRONTEND.BUSINESSES.SHORT_DESCRIPTION' | translate }}\n
\n
\n {{ businessActivationForm.controls.shortDescription?.value }}\n
\n
\n \n \n
\n \n {{ 'FRONTEND.BUSINESSES.SAVE' | translate }}\n \n \n {{ 'FRONTEND.BUSINESSES.UNSAVED_CHANGES' | translate }}\n \n
\n
\n
\n
\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\n\nexport function totalLengthOfRepeatedFieldValidator(maxLength: number, friendlyName: string): ValidatorFn {\n return (control: AbstractControl): { [key: string]: any } => {\n if (!control.value) {\n return null;\n }\n if (control.value.length === 0) {\n return null;\n }\n\n const value = control.value.filter((val: string) => !!val).join(',');\n return value.length > maxLength\n ? {\n lengthOfRepeatedField: {\n maxLength: maxLength,\n friendlyName: friendlyName,\n },\n }\n : null;\n };\n}\n\n// Validation to ensure that all items in an array control have truthy values\nexport function arrayAllTruthyItemsRequired(): ValidatorFn {\n return (control: AbstractControl): { [key: string]: any } => {\n const values = (control.value || []).filter((v: any) => !!v);\n return values.length !== control.value.length ? { required: '' } : null;\n };\n}\n","import { MatExpansionModule } from '@angular/material/expansion';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatIconModule } from '@angular/material/icon';\nimport { VaFormsModule } from '@vendasta/forms';\nimport { ProductActivationPrereqFormComponent } from './product-activation-prereq-form.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatButtonModule } from '@angular/material/button';\nimport { LexiconModule } from '@galaxy/lexicon';\nimport baseTranslation from '../assets/i18n/en_devel.json';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\n\n@NgModule({\n declarations: [ProductActivationPrereqFormComponent],\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n TranslateModule,\n LexiconModule.forChild({\n componentName: 'common/businesses',\n baseTranslation: baseTranslation,\n }),\n MatExpansionModule,\n MatFormFieldModule,\n MatIconModule,\n VaFormsModule,\n MatInputModule,\n MatButtonModule,\n MatCardModule,\n GalaxyFormFieldModule,\n ],\n exports: [ProductActivationPrereqFormComponent],\n providers: [],\n})\nexport class ProductActivationPrereqFormModule {}\n","import { Pipe, PipeTransform } from '@angular/core';\n\ninterface Address {\n address: string;\n city: string;\n state: string;\n}\n// formatNAPDataToString formats address, city, and state into a comma separate string\n@Pipe({ name: 'formatAddressToString' })\nexport class FormatAddressToStringPipe implements PipeTransform {\n transform(address: Address): string {\n return [address.address?.trim(), address.city?.trim(), address.state?.trim()].filter((v) => !!v).join(', ');\n }\n}\n","import { Component, Inject, OnDestroy, OnInit } from '@angular/core';\nimport { UntypedFormControl } from '@angular/forms';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { Router } from '@angular/router';\nimport {\n AccountGroup,\n AccountGroupApiService,\n Constraint,\n LookupRequestInterface,\n ProjectionFilter,\n} from '@vendasta/account-group';\nimport { BehaviorSubject, Subscription, combineLatest } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, map, shareReplay, startWith, switchMap } from 'rxjs/operators';\n\nconst PAGE_SIZE = 20;\n\nexport interface DialogData {\n partnerId: string;\n marketId: string | string[];\n projectionFilterOverride?: ProjectionFilter;\n hideCreateBusiness?: boolean;\n}\n@Component({\n templateUrl: './business-selector-dialog.component.html',\n styleUrls: ['./business-selector-dialog.component.scss'],\n})\nexport class BusinessSelectorDialogComponent implements OnInit, OnDestroy {\n private readonly loadMore$$ = new BehaviorSubject(false);\n private readonly loadMoreTrigger$ = this.loadMore$$.asObservable().pipe(map(() => null));\n private readonly business$$ = new BehaviorSubject([]);\n protected readonly business$ = this.business$$.asObservable();\n private readonly nextCursor$$ = new BehaviorSubject('');\n private readonly hasMore$$ = new BehaviorSubject(false);\n protected readonly hasMore$ = this.hasMore$$.asObservable();\n private readonly loading$$ = new BehaviorSubject(true);\n protected readonly loading$ = this.loading$$.asObservable();\n private readonly subscriptions: Subscription[] = [];\n\n protected readonly searchFormField = new UntypedFormControl('');\n private previousSearchTerm = '';\n protected loadingFirstPage = true;\n\n constructor(\n private readonly dialogRef: MatDialogRef,\n private readonly router: Router,\n private readonly accountGroupService: AccountGroupApiService,\n @Inject(MAT_DIALOG_DATA) protected readonly data: DialogData,\n ) {}\n\n ngOnInit(): void {\n this.initBusinesses();\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach((s) => s.unsubscribe());\n }\n\n loadMoreAccounts(inViewportEvent: any): void {\n if (inViewportEvent.visible) {\n this.loadMore$$.next(true);\n }\n }\n\n // initBusinesses sets up the subscription to load in account groups, responding to changes in search, scroll, and partner ID\n private initBusinesses(): void {\n this.subscriptions.push(\n combineLatest([this.searchFormField.valueChanges.pipe(startWith('')), this.loadMoreTrigger$])\n .pipe(\n debounceTime(500),\n distinctUntilChanged(),\n shareReplay(1),\n switchMap(([searchTerm]) => {\n this.loading$$.next(true);\n let cursor = this.nextCursor$$.value;\n if (this.previousSearchTerm !== searchTerm) {\n // reset cursor and current results when new search terms entered\n cursor = '';\n this.loadingFirstPage = true;\n this.business$$.next([]);\n }\n this.previousSearchTerm = searchTerm;\n const projectionFilter =\n this.data.projectionFilterOverride ||\n new ProjectionFilter({\n napData: true,\n accountGroupExternalIdentifiers: true,\n constraints: this.data.partnerId === 'VMF',\n });\n const lookupRequest: LookupRequestInterface = {\n projectionFilter: projectionFilter,\n filters: {\n partnerId: this.data.partnerId,\n includeDeleted: false,\n },\n pageSize: PAGE_SIZE,\n searchTerm: searchTerm ? searchTerm : this.searchFormField.value,\n cursor: cursor,\n sortOptions: {\n direction: 1,\n field: 1,\n },\n };\n if (this.data.marketId) {\n if (Array.isArray(this.data.marketId)) {\n lookupRequest.filters.marketIds = this.data.marketId;\n } else {\n lookupRequest.filters.marketIds = [this.data.marketId];\n }\n }\n return this.accountGroupService.lookup(lookupRequest);\n }),\n )\n .subscribe({\n next: (pagedAccountGroupResponse) => {\n // append the results to the current list\n const businesses = pagedAccountGroupResponse.accountGroups ?? [];\n this.business$$.next(this.business$$.value.concat(businesses));\n this.hasMore$$.next(pagedAccountGroupResponse.hasMore);\n this.nextCursor$$.next(pagedAccountGroupResponse.nextCursor);\n this.loading$$.next(false);\n this.loadingFirstPage = false;\n },\n error: () => {\n this.loading$$.next(false);\n this.loadingFirstPage = false;\n },\n }),\n );\n }\n\n selectBusiness(accountGroup: AccountGroup): void {\n this.dialogRef.close(accountGroup);\n }\n\n createBusiness(): void {\n this.dialogRef.close();\n this.router.navigateByUrl(`/business/search`);\n }\n\n getPartnerIdfromConstraints(constraints: Constraint[]): string {\n return constraints.find((element) => element?.foreignKey?.kind === 'PartnerAccountGroup')?.foreignKey?.key;\n }\n\n close(): void {\n this.dialogRef.close();\n }\n}\n","

{{ 'FRONTEND.BUSINESSES.SELECTOR_DIALOG.CHOOSE_ACCOUNT' | translate }}

\n
\n \n \n \n
\n\n\n\n \n
0; else emptyState\" class=\"options-list\">\n
\n
\n \n {{ ag?.napData?.companyName }}\n \n \n {{ ag.napData | formatAddressToString }}\n \n

0\">\n PID: {{ getPartnerIdfromConstraints(ag.constraints) }}\n

\n
\n \n
\n
\n \n
\n
\n \n \n
\n \n
\n\n\n \n\n\n\n
\n {{ 'FRONTEND.BUSINESSES.SELECTOR_DIALOG.NOT_FOUND' | translate }}\n @if (!data.hideCreateBusiness) {\n
\n \n
\n }\n
\n
\n\n\n
\n
\n
\n
\n","import { NgModule } from '@angular/core';\nimport { BusinessSelectorDialogComponent } from './business-selector-dialog.component';\nimport { CommonModule } from '@angular/common';\nimport { MatListModule as MatListModule } from '@angular/material/list';\nimport { MatButtonModule as MatButtonModule } from '@angular/material/button';\nimport { MatFormFieldModule as MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule as MatInputModule } from '@angular/material/input';\nimport { MatProgressSpinnerModule as MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatDialogModule as MatDialogModule } from '@angular/material/dialog';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { InViewportModule } from 'ng-in-viewport';\nimport { FormatAddressToStringPipe } from './format-address.pipe';\nimport { LexiconModule } from '@galaxy/lexicon';\nimport baseTranslation from '../assets/i18n/en_devel.json';\nimport { MatLineModule } from '@angular/material/core';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\n\n@NgModule({\n declarations: [BusinessSelectorDialogComponent, FormatAddressToStringPipe],\n imports: [\n CommonModule,\n MatListModule,\n MatButtonModule,\n MatFormFieldModule,\n MatInputModule,\n MatProgressSpinnerModule,\n MatDialogModule,\n ReactiveFormsModule,\n InViewportModule,\n LexiconModule.forChild({\n componentName: 'common/businesses',\n baseTranslation: baseTranslation,\n }),\n MatLineModule,\n GalaxyFormFieldModule,\n ],\n exports: [BusinessSelectorDialogComponent],\n providers: [],\n})\nexport class BusinessSelectorDialogModule {}\n","export interface ClientImage {\n url: string;\n date: Date;\n type?: string;\n}\n\nexport enum MenuOption {\n Logo = 'Make Logo',\n Primary = 'Make Primary',\n Delete = 'Delete',\n}\n","import { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { ImageTransformation, ImageTransformationService } from '@vendasta/image-transformation';\nimport { Subscription, fromEvent as observableFromEvent } from 'rxjs';\n\nimport { ClientImage, MenuOption } from '../media-tab.interface';\nimport { ImageMenuClick } from './image-menu-click';\n\n@Component({\n styleUrls: ['./media-tab-gallery.component.scss'],\n selector: 'business-media-tab-gallery',\n templateUrl: './media-tab-gallery.component.html',\n})\nexport class MediaTabGalleryComponent implements OnInit, OnDestroy {\n @Input() images: ClientImage[];\n @Output() imageClicked = new EventEmitter();\n @Input() menuOptions: string[];\n @Output() menuOptionSelected = new EventEmitter();\n mobileColumns = 2;\n desktopColumns = 4;\n gridColumns = 4;\n private subscriptions: Subscription[] = [];\n\n constructor(private imageTransformationService: ImageTransformationService) {}\n\n ngOnInit(): void {\n this.updateColumnTotal();\n this.subscriptions.push(\n observableFromEvent(window, 'resize').subscribe(() => {\n this.updateColumnTotal();\n }),\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach((sub) => {\n sub.unsubscribe();\n });\n }\n\n onClick(image: ClientImage): void {\n this.imageClicked.emit(image);\n }\n\n menuOptionClicked(image: ClientImage, option: MenuOption): void {\n const menuClick: ImageMenuClick = {\n image: image,\n option: option,\n };\n this.menuOptionSelected.emit(menuClick);\n }\n\n getSrcsetImageUrls(imageUrl: string): string {\n const transformation = new ImageTransformation().crop().renderAsJpeg().setJpegQuality(80);\n return this.imageTransformationService.getSrcSetForImage(imageUrl, [256, 320, 512], transformation);\n }\n\n updateColumnTotal(): void {\n this.gridColumns = window.innerWidth < 800 ? this.mobileColumns : this.desktopColumns;\n }\n\n getMenuOptions(image: ClientImage): MenuOption[] {\n if (image.type) {\n return [MenuOption.Delete];\n }\n return [MenuOption.Logo, MenuOption.Primary, MenuOption.Delete];\n }\n}\n","\n @for (image of images; track image) {\n \n @if (image.type) {\n \n \n \n {{ image.type | uppercase | translate }}\n \n \n \n }\n \n {{ image.date | date }}\n \n \n \n
\n
\n }\n
\n","import { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nexport const CATEGORY_SEARCH_PAGE_SIZE = 10;\n\n/**\n * Provide the language to be used in Category Service (i.e. 'en')\n */\nexport const LANGUAGE_TOKEN = new InjectionToken>('Language Token to be used in Category Service');\n","import { Component, OnInit, Input, ChangeDetectionStrategy, Inject, Optional } from '@angular/core';\nimport { catchError, distinctUntilChanged, map, startWith, switchMap } from 'rxjs/operators';\nimport { EMPTY, iif, Observable, of, ReplaySubject } from 'rxjs';\nimport { CategoriesApiService, Category, CategoryRequest, CategoryType, CategoryUtils } from '@vendasta/category';\nimport { LANGUAGE_TOKEN } from '../constants';\nimport { AtlasLanguageService } from '@galaxy/atlas/core';\n\n@Component({\n selector: 'category-overview',\n templateUrl: './category-overview.component.html',\n styleUrls: ['./category-overview.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CategoryOverviewComponent implements OnInit {\n //#region Input/Output parameters\n @Input() placeholder: string;\n\n @Input()\n get categoryType(): CategoryType {\n return this._categoryType;\n }\n set categoryType(value: CategoryType) {\n this._categoryType = value;\n this.refreshCategories();\n }\n private _categoryType: CategoryType = CategoryType.CATEGORY_TYPE_V_CATEGORY;\n\n @Input()\n get categoryIds(): string[] {\n return this._categoryIds;\n }\n set categoryIds(value: string[]) {\n this._categoryIds = value;\n this.refreshCategories();\n }\n private _categoryIds: string[] = [];\n //#endregion\n\n categories$: Observable;\n private readonly request$$: ReplaySubject = new ReplaySubject(1);\n private language$: Observable;\n\n constructor(\n private readonly categoryService: CategoriesApiService,\n @Optional() @Inject(LANGUAGE_TOKEN) private readonly languageToken$: Observable,\n @Optional() private readonly atlasLanguageService: AtlasLanguageService,\n ) {\n this.language$ = this.languageToken$ ?? this.atlasLanguageService?.language$ ?? EMPTY;\n }\n\n ngOnInit(): void {\n this.initObservables();\n }\n\n private refreshCategories(): void {\n const categoryType = this.categoryType ?? CategoryType.CATEGORY_TYPE_V_CATEGORY;\n const ids = this.categoryIds ?? [];\n const req = ids.map((externalId) => { externalId, categoryType });\n this.request$$.next(req);\n }\n\n private compareRequests(a?: CategoryRequest[], b?: CategoryRequest[]): boolean {\n if (a?.length !== b?.length) {\n return false;\n }\n return !a?.find((elA) => !b?.find((elB) => elA.externalId === elB.externalId));\n }\n\n private initObservables(): void {\n // since the language is not required, we need to start with null to make sure that a value is emitted\n const language$ = this.language$.pipe(startWith(null), distinctUntilChanged());\n\n this.categories$ = this.request$$.pipe(\n distinctUntilChanged(this.compareRequests),\n switchMap((categories) =>\n iif(\n // only send the request if there are at least one category\n () => categories?.length > 0,\n language$.pipe(switchMap((language) => this.getCategories(categories, language))),\n of([]),\n ),\n ),\n catchError(() => []),\n );\n }\n\n private getCategories(categories: CategoryRequest[], language?: string): Observable {\n return this.categoryService\n .getCategoryByExternalIDsAndType({\n categories,\n languageAndLocale: CategoryUtils.localeFromLanguage(language),\n })\n .pipe(map((res) => res?.category));\n }\n}\n","\n 0; else noCategories\">\n {{ category.name }}{{ isLast ? '' : ', ' }}\n \n \n {{ placeholder }}\n \n\n","import { Injectable } from '@angular/core';\nimport {\n CategoriesApiService,\n Category,\n CategorySearchResponse,\n CategoryType,\n PagedRequestOptionsInterface,\n SortOptionsInterface,\n} from '@vendasta/category';\nimport { Observable } from 'rxjs';\nimport { CategoryRequest } from '@vendasta/category';\nimport { map } from 'rxjs/operators';\n\n@Injectable({ providedIn: 'root' })\nexport class BusinessCategoryService {\n constructor(private readonly categoryService: CategoriesApiService) {}\n\n getCategoryMapping(externalId: string, inputType: CategoryType, outputType: CategoryType): Observable {\n return this.categoryService\n .getCategoryMapping({ externalId, inputType, outputType })\n .pipe(map((res) => res?.category));\n }\n\n getCategoryByExternalIDsAndType(categories: CategoryRequest[], locale?: string): Observable {\n return this.categoryService\n .getCategoryByExternalIDsAndType({ categories, locale })\n .pipe(map((res) => res?.category));\n }\n\n getCategorySearchByTerm(\n searchTerm: string,\n type: CategoryType,\n pagingOptions?: PagedRequestOptionsInterface,\n sortOptions?: SortOptionsInterface[],\n ): Observable {\n return this.categoryService.getCategoryBySearchTerm({ searchTerm, type, pagingOptions, sortOptions });\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Pipe({ name: 'highlight' })\nexport class HighlightSearchPipe implements PipeTransform {\n constructor(private sanitizer: DomSanitizer) {}\n\n transform(value: string, searchTerm?: string): any {\n if (!searchTerm) {\n return value;\n }\n const options = searchTerm.split(' ').filter(Boolean).join('|');\n const re = new RegExp(`(${options})`, 'gi');\n const replacedValue = value.replace(re, '$1');\n return this.sanitizer.bypassSecurityTrustHtml(replacedValue);\n }\n}\n","import { EventEmitter, Injectable } from '@angular/core';\nimport {\n CategoriesApiService,\n Category,\n CategoryInterface,\n CategoryRequestInterface,\n CategoryType,\n CategoryUtils,\n PagedRequestOptionsInterface,\n SortDirection,\n SortField,\n SortOptionsInterface,\n} from '@vendasta/category';\nimport { BehaviorSubject, Observable, ReplaySubject, combineLatest } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, map, startWith, switchMap, tap, withLatestFrom } from 'rxjs/operators';\nimport { CATEGORY_SEARCH_PAGE_SIZE } from '../constants';\nimport { SearchResult } from '../interfaces';\n\n@Injectable()\nexport class CategorySelectService {\n private readonly defaultPagingOptions: PagedRequestOptionsInterface = { pageSize: CATEGORY_SEARCH_PAGE_SIZE };\n private readonly defaultSortOptions: SortOptionsInterface[] = [\n { field: SortField.SORT_FIELD_SCORE, direction: SortDirection.SORT_DIRECTION_DESCENDING },\n { field: SortField.SORT_FIELD_FULL_NAME, direction: SortDirection.SORT_DIRECTION_ASCENDING },\n ];\n\n private readonly categorySearchTerm$$ = new ReplaySubject(1);\n private readonly categorySearchTerm$ = this.categorySearchTerm$$.pipe(\n startWith(''),\n map((term) => term?.trim()),\n distinctUntilChanged(),\n debounceTime(200),\n tap(() => {\n this.aggregatedResult$$.next(null);\n this.categorySearchPage$$.next(this.defaultPagingOptions);\n this.isInitialFetch = true;\n }),\n );\n\n readonly language$$ = new BehaviorSubject(null);\n\n private readonly categorySearchPage$$ = new ReplaySubject(1);\n private readonly categorySearchPage$ = this.categorySearchPage$$.pipe(\n startWith(this.defaultPagingOptions),\n distinctUntilChanged(),\n );\n\n private readonly categoryType$$ = new BehaviorSubject(CategoryType.CATEGORY_TYPE_V_CATEGORY);\n private readonly categoryType$ = this.categoryType$$.pipe(\n distinctUntilChanged(),\n tap(() => this.aggregatedResult$$.next(null)),\n );\n private readonly aggregatedResult$$ = new ReplaySubject(1);\n\n private nextCategoriesPage: PagedRequestOptionsInterface;\n private isInitialFetch = false;\n\n readonly afterInitialFetch: EventEmitter = new EventEmitter();\n\n readonly categories$: Observable = combineLatest([\n this.categorySearchTerm$,\n this.categorySearchPage$,\n this.categoryType$,\n this.language$$,\n ]).pipe(\n tap(() => (this.nextCategoriesPage = null)),\n switchMap(([searchTerm, pagingOptions, type, language]) =>\n this.categoriesApiService\n .getCategoryBySearchTerm({\n searchTerm,\n type,\n pagingOptions,\n sortOptions: this.defaultSortOptions,\n onlyVisible: true,\n languageAndLocale: CategoryUtils.localeFromLanguage(language),\n })\n .pipe(\n tap((response) => {\n // set the paging for autocomplete infinite scroll\n if (response?.pagingMetadata?.hasMore) {\n this.nextCategoriesPage = {\n cursor: response.pagingMetadata.nextCursor,\n pageSize: CATEGORY_SEARCH_PAGE_SIZE,\n };\n }\n }),\n map((response) => {\n const categories = response?.category || [];\n // enforce the category type because the API will return null for vCategory\n categories.forEach((category) => (category.type = type));\n return { categories, searchTerm };\n }),\n ),\n ),\n withLatestFrom(this.aggregatedResult$$),\n map(([result, newCategories]) => {\n result.categories = (newCategories ?? []).concat(result.categories);\n this.aggregatedResult$$.next(result.categories);\n if (this.isInitialFetch) {\n this.afterInitialFetch.emit();\n }\n this.isInitialFetch = false;\n return result;\n }),\n );\n\n constructor(private readonly categoriesApiService: CategoriesApiService) {}\n\n get categoryType(): CategoryType {\n return this.categoryType$$.value;\n }\n\n set categoryType(value: CategoryType) {\n this.categoryType$$.next(value);\n }\n\n fetch(searchTerm: string): void {\n this.categorySearchTerm$$.next(searchTerm);\n }\n\n fetchNext(): void {\n if (this.nextCategoriesPage) {\n this.categorySearchPage$$.next(this.nextCategoriesPage);\n }\n }\n\n getCategoryByExternalIDsAndType(categories: CategoryRequestInterface[]): Observable {\n return this.language$$.pipe(\n switchMap((language) =>\n this.categoriesApiService.getCategoryByExternalIDsAndType({\n categories,\n languageAndLocale: CategoryUtils.localeFromLanguage(language),\n }),\n ),\n map((response) => response?.category || []),\n );\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { CategoryInterface } from '@vendasta/category';\n\n@Pipe({ name: 'excludeCategories' })\nexport class ExcludeCategoriesPipe implements PipeTransform {\n transform(value: CategoryInterface[], excludeIds?: string[]): CategoryInterface[] {\n if (excludeIds?.length > 0) {\n return value.filter((category) => !excludeIds.includes(category.externalId));\n }\n return value;\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { CategoryInterface } from '@vendasta/category';\n\n@Pipe({ name: 'chipColor' })\nexport class ChipColorPipe implements PipeTransform {\n transform(category: CategoryInterface): string {\n return this.getColor(category);\n }\n\n private isInvalid(category: CategoryInterface): boolean {\n return category.isHidden || !category.isActive;\n }\n\n private getColor(category: CategoryInterface): string {\n if (this.isInvalid(category)) {\n return 'red';\n }\n return '';\n }\n}\n","import { BooleanInput, NumberInput, coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';\nimport {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n HostBinding,\n Inject,\n Input,\n OnDestroy,\n Optional,\n Output,\n Self,\n ViewChild,\n} from '@angular/core';\nimport { ControlValueAccessor, FormControl, NgControl } from '@angular/forms';\nimport { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';\nimport { MatFormFieldControl } from '@angular/material/form-field';\nimport { AtlasLanguageService } from '@galaxy/atlas/core';\nimport { Category, CategoryInterface, CategoryRequest, CategoryType } from '@vendasta/category';\nimport { SubscriptionList } from '@vendasta/rx-utils';\nimport { BehaviorSubject, EMPTY, Observable, Subject, of } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, filter, map, switchMap, tap } from 'rxjs/operators';\nimport { LANGUAGE_TOKEN } from '../constants';\nimport { SearchResult } from '../interfaces';\nimport { CategorySelectService } from './category-select.service';\n\ninterface SetCategoriesRequest {\n type: CategoryType;\n externalIds: string[];\n}\n\ntype OnChangeFn = (value: string[]) => void;\ntype OnTouchedFn = () => void;\n\n@Component({\n selector: 'category-select',\n templateUrl: './category-select.component.html',\n styleUrls: ['./category-select.component.scss'],\n providers: [CategorySelectService, { provide: MatFormFieldControl, useExisting: CategorySelectComponent }],\n})\nexport class CategorySelectComponent\n implements ControlValueAccessor, MatFormFieldControl, OnDestroy, AfterViewInit\n{\n private static nextId = 0;\n //#region Input/Output parameters\n @Input()\n get maxCategories(): number {\n return this._maxCategories;\n }\n set maxCategories(value: NumberInput) {\n this.setMaxCategories(coerceNumberProperty(value, 0));\n }\n private _maxCategories = 0;\n\n @Input()\n get categoryType(): CategoryType {\n return this.categorySelectService.categoryType;\n }\n set categoryType(value: CategoryType) {\n this.setCategoryType(value);\n }\n\n @Input()\n get disabled(): boolean {\n return this._disabled;\n }\n set disabled(value: BooleanInput) {\n this._disabled = coerceBooleanProperty(value);\n this.stateChanges$$.next();\n this._disabled ? this.addCategoryControl.disable() : this.addCategoryControl.enable();\n }\n private _disabled = false;\n\n @Input()\n get required(): boolean {\n return this._required;\n }\n set required(value: BooleanInput) {\n this._required = coerceBooleanProperty(value);\n this.stateChanges$$.next();\n }\n private _required = false;\n\n @Input()\n get value(): string[] {\n return this._value;\n }\n set value(externalIds: string[]) {\n this._value = externalIds;\n this.stateChanges$$.next();\n this.refreshCategoryChipList();\n }\n private _value: string[] = [];\n\n @Input()\n get placeholder(): string {\n return this._placeholder;\n }\n set placeholder(plh: string) {\n this._placeholder = plh;\n this.stateChanges$$.next();\n }\n private _placeholder = 'Add category...';\n\n // eslint-disable-next-line @angular-eslint/no-output-on-prefix\n @Output() readonly onCategoriesChange = new EventEmitter();\n //#endregion\n\n //#region Template bindings\n @ViewChild('addCategoryCtrl') private readonly addCategoryCtrl: ElementRef;\n @ViewChild('categoryOptionsContainer') private readonly categoryOptionsContainer: ElementRef;\n\n @HostBinding('[id]') id = `category-select-${CategorySelectComponent.nextId++}`;\n @HostBinding('[class.floating]') get shouldLabelFloat(): boolean {\n return this.focused || !this.empty;\n }\n //#endregion\n\n private readonly subscriptions = SubscriptionList.new();\n private readonly stateChanges$$ = new Subject();\n private _categories: CategoryInterface[] = [];\n\n onChange: OnChangeFn;\n onTouched: OnTouchedFn;\n focused = false;\n\n readonly addCategoryControl = new FormControl({ value: '', disabled: true });\n readonly refreshCategories$$ = new Subject();\n readonly searchResult$: Observable = this.categorySelectService.categories$;\n readonly loading$$ = new BehaviorSubject(false);\n readonly stateChanges = this.stateChanges$$;\n readonly controlType = 'category-select';\n\n constructor(\n @Optional() @Self() public ngControl: NgControl,\n private readonly categorySelectService: CategorySelectService,\n @Optional() @Inject(LANGUAGE_TOKEN) private readonly languageToken$: Observable,\n @Optional() private readonly atlasLanguageService: AtlasLanguageService,\n ) {\n if (this.ngControl) {\n // required by MatFormFieldControl\n this.ngControl.valueAccessor = this;\n }\n this.setupSubscriptions();\n }\n\n //#region Angular lifecycle event\n ngOnDestroy(): void {\n this.subscriptions.destroy();\n }\n\n ngAfterViewInit(): void {\n this.addCategoryCtrl.nativeElement.addEventListener('focusin', () => this.onFocusIn());\n this.addCategoryCtrl.nativeElement.addEventListener('focusout', () => this.onFocusOut());\n }\n //#endregion\n\n get empty(): boolean {\n return !(this._value?.length > 0);\n }\n\n get errorState(): boolean {\n return !this.isNull(this.ngControl.errors) && !!this.ngControl.touched;\n }\n\n get categories(): CategoryInterface[] {\n return this._categories;\n }\n set categories(value: CategoryInterface[]) {\n this._categories = value;\n this.onCategoriesChange.emit(value);\n }\n\n get addDisabled(): boolean {\n return (\n this.disabled ||\n (this._maxCategories > 0 && this.value?.length >= this._maxCategories) ||\n this.isNull(this.categorySelectService.categoryType)\n );\n }\n\n private setMaxCategories(value: number): void {\n if (value !== this._maxCategories) {\n this._maxCategories = value;\n }\n }\n\n private setCategoryType(value: CategoryType): void {\n if (value !== this.categorySelectService.categoryType) {\n this.categorySelectService.categoryType = value;\n this.refreshCategoryChipList();\n }\n }\n\n private isNull(value?: unknown): boolean {\n return value === null || value === undefined;\n }\n\n private setupSubscriptions(): void {\n this.subscriptions.add(this.categorySelectService.afterInitialFetch, () =>\n this.categoryOptionsContainer?.nativeElement?.scrollIntoView?.(),\n );\n\n const language$ = this.languageToken$ ?? this.atlasLanguageService?.language$ ?? EMPTY;\n this.subscriptions.add(language$, (value) => this.categorySelectService.language$$.next(value));\n\n const refreshCategories$ = this.refreshCategories$$.pipe(\n debounceTime(100),\n filter((r) => this.validCategoryRequest(r)),\n distinctUntilChanged((prev, curr: SetCategoriesRequest) => this.sameCategoryRequest(prev, curr)),\n tap(() => this.loading$$.next(true)),\n map((r) => r.externalIds?.map((externalId) => { externalId, categoryType: r.type }) ?? []),\n switchMap((r) => (r.length > 0 ? this.categorySelectService.getCategoryByExternalIDsAndType(r) : of([]))),\n map((categories) => this.validateCategories(categories)),\n tap(() => this.loading$$.next(false)),\n );\n this.subscriptions.add(refreshCategories$, (categories) => (this.categories = categories));\n }\n\n private validateCategories(categories: CategoryInterface[]): CategoryInterface[] {\n // accepts only the specified quantity of categories\n if (this._maxCategories > 0 && categories?.length > this._maxCategories) {\n categories = categories.slice(0, this._maxCategories);\n this.value = categories.map((c) => c.externalId);\n this.onChange?.(this.value);\n this.markAsTouched();\n }\n return categories;\n }\n\n private refreshCategoryChipList(): void {\n this.refreshCategories$$.next({\n type: this.categorySelectService.categoryType,\n externalIds: this._value,\n });\n }\n\n private validCategoryRequest(req: SetCategoriesRequest): boolean {\n return !this.isNull(req.type) && req.externalIds?.join() !== this.categories.map((c) => c.externalId).join();\n }\n\n private sameCategoryRequest(prev: SetCategoriesRequest, curr: SetCategoriesRequest): boolean {\n return prev.externalIds?.join() === curr.externalIds?.join() && prev.type === curr.type;\n }\n\n addCategory(event: MatAutocompleteSelectedEvent): void {\n this.markAsTouched();\n this.categories = [...this.categories, event.option.value];\n this.value = this.categories.map((c) => c.externalId);\n this.onChange?.(this.value);\n event.option.deselect();\n this.addCategoryCtrl.nativeElement.value = '';\n this.addCategoryCtrl.nativeElement.focus();\n this.categorySelectService.fetch('');\n }\n\n removeCategory(category: Category): void {\n this.markAsTouched();\n this.categories = this.categories.filter((c) => c.externalId !== category.externalId);\n this.value = this.categories.map((c) => c.externalId);\n this.onChange?.(this.value);\n }\n\n updateCategorySearchTerm(value: string): void {\n this.categorySelectService.fetch(value);\n }\n\n fetchMoreCategories(): void {\n this.categorySelectService.fetchNext();\n }\n\n setDescribedByIds(ids: string[]): void {\n this.addCategoryCtrl?.nativeElement?.setAttribute('aria-describedby', ids.join(' '));\n }\n\n onContainerClick(event?: MouseEvent): void {\n if (event) {\n // no-op\n }\n this.addCategoryCtrl?.nativeElement?.focus();\n }\n\n onFocusIn(): void {\n this.focused = true;\n this.stateChanges$$.next();\n }\n\n onFocusOut(): void {\n this.focused = false;\n this.onTouched?.();\n this.stateChanges$$.next();\n }\n\n //#region ControlValueAccessor implementation\n writeValue(externalIds: string[]) {\n this.value = externalIds;\n }\n\n registerOnChange(onChange: OnChangeFn) {\n this.onChange = onChange;\n }\n\n registerOnTouched(onTouched: OnTouchedFn) {\n this.onTouched = onTouched;\n }\n\n markAsTouched() {\n if (!this.ngControl.touched) {\n this.ngControl.control?.markAsTouched();\n }\n this.onTouched?.();\n }\n\n setDisabledState(disabled: boolean) {\n this.disabled = disabled;\n }\n //#endregion\n}\n","\n\n\n\n \n \n {{ category.fullName }}\n cancel\n \n \n \n \n \n
\n 0; else noResults\">\n \n \n \n \n \n \n \n \n No results found\n \n
\n
\n \n
\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { VaBadgeModule } from '@vendasta/uikit';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatButtonModule } from '@angular/material/button';\nimport { CategoryOverviewComponent } from './category-overview/category-overview.component';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { BusinessCategoryService } from './business-category.service';\nimport { GalaxyInfiniteScrollTriggerModule } from '@vendasta/galaxy/infinite-scroll-trigger';\nimport { HighlightSearchPipe } from './pipes/highlight-search.pipe';\nimport { CategorySelectComponent } from './category-select/category-select.component';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { ExcludeCategoriesPipe } from './pipes/exclude-categories.pipe';\nimport { ChipColorPipe } from './pipes/chip-color.pipe';\nimport { GalaxyLoadingSpinnerModule } from '@vendasta/galaxy/loading-spinner';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\n\n@NgModule({\n declarations: [\n CategoryOverviewComponent,\n HighlightSearchPipe,\n CategorySelectComponent,\n ExcludeCategoriesPipe,\n ChipColorPipe,\n ],\n imports: [\n CommonModule,\n MatIconModule,\n MatButtonModule,\n MatInputModule,\n MatFormFieldModule,\n MatAutocompleteModule,\n MatTooltipModule,\n FormsModule,\n ReactiveFormsModule,\n VaBadgeModule,\n MatProgressSpinnerModule,\n GalaxyInfiniteScrollTriggerModule,\n MatChipsModule,\n GalaxyLoadingSpinnerModule,\n GalaxyFormFieldModule,\n ],\n providers: [BusinessCategoryService],\n exports: [CategoryOverviewComponent, CategorySelectComponent],\n})\nexport class BusinessCategoryModule {}\n","import { CategoryInterface, CategoryType, Locale } from '@vendasta/category';\n\n/** External IDs included in Health category which are not covered by the root name */\nconst healthCategoryExceptions = ['addiction_treatment_center'];\nconst healthCategoryRootName = 'health';\n\n/**\n * Health category determined by:\n * vTax externalId starting with `health`\n * vCategory under the `Health & Medical` root category\n * vCategory externalId equal to `addiction_treatment_center` (mapped from vTax health:physicians:addiction_specialist)\n */\nexport function isHealthCategory(category: CategoryInterface): boolean {\n const type = category?.type ?? CategoryType.CATEGORY_TYPE_V_CATEGORY;\n const englishTranslation = category?.translations?.find((t) => t.locale === Locale.LOCALE_ENGLISH);\n const fullName = (englishTranslation?.fullName || category?.fullName)?.toLowerCase();\n const externalId = category?.externalId?.toLocaleLowerCase();\n return (\n (type === CategoryType.CATEGORY_TYPE_V_TAX && externalId.startsWith(healthCategoryRootName)) ||\n (type === CategoryType.CATEGORY_TYPE_V_CATEGORY && fullName.startsWith(healthCategoryRootName)) ||\n healthCategoryExceptions.includes[externalId]\n );\n}\n\nexport function isInvalidForSelection(category: CategoryInterface): boolean {\n // when category is not active or hidden, it is invalid for selection\n return !category.isActive || category.isHidden;\n}\n","export interface Market {\n value: string;\n name: string;\n}\n\nexport enum BusinessProfileTab {\n Primary,\n Hours,\n Social,\n Descriptions,\n Images,\n Professional,\n Attributes,\n CustomFields,\n Administration,\n}\n\nexport enum HiddenField {\n Markets,\n Sales,\n SocialFourSquare,\n CustomerIdentifier,\n Map,\n}\n\nexport interface LightboxData {\n index: number;\n imageUrls: string[];\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { format, CountryCode, parsePhoneNumber } from 'libphonenumber-js';\n\n/** @deprecated Use FormatPhoneNumberPipe from uikit */\n@Pipe({ name: 'formatPhoneNumber' })\nexport class FormatPhoneNumberPipe implements PipeTransform {\n transform(phoneNumber: string, countryCode: string): string {\n if (countryCode as CountryCode) {\n const newCountryCode = countryCode;\n try {\n return format(phoneNumber, newCountryCode, 'NATIONAL');\n } catch {\n return phoneNumber;\n }\n } else {\n return phoneNumber;\n }\n }\n\n transformForBusinessProfile(phoneNumber: string, countryCode: string): string {\n if (countryCode as CountryCode) {\n const newCountryCode = countryCode;\n try {\n const parsedNumber = parsePhoneNumber(phoneNumber, newCountryCode);\n if (!parsedNumber || !parsedNumber.isValid()) {\n return phoneNumber;\n }\n return parsedNumber.formatInternational();\n } catch {\n return phoneNumber;\n }\n } else {\n return phoneNumber;\n }\n }\n}\n","import * as i0 from '@angular/core';\nimport { Injectable } from '@angular/core';\nimport * as i1 from '@angular/common/http';\nimport { HttpHeaders } from '@angular/common/http';\nimport { map } from 'rxjs/operators';\n\n// *********************************\n// Code generated by sdkgen\n// DO NOT EDIT!.\n//\n// Enums.\n// *********************************\nvar ImageType = /*#__PURE__*/function (ImageType) {\n ImageType[ImageType[\"NOT_SPECIFIED\"] = 0] = \"NOT_SPECIFIED\";\n ImageType[ImageType[\"PRIMARY\"] = 1] = \"PRIMARY\";\n ImageType[ImageType[\"LOGO\"] = 2] = \"LOGO\";\n return ImageType;\n}(ImageType || {});\n// *********************************\n\nfunction enumStringToValue(enumRef, value) {\n if (typeof value === 'number') {\n return value;\n }\n return enumRef[value];\n}\nclass AssociateImageRequest {\n static fromProto(proto) {\n let m = new AssociateImageRequest();\n m = Object.assign(m, proto);\n if (proto.imageType) {\n m.imageType = enumStringToValue(ImageType, proto.imageType);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.imageId !== 'undefined') {\n toReturn['imageId'] = this.imageId;\n }\n if (typeof this.imageType !== 'undefined') {\n toReturn['imageType'] = this.imageType;\n }\n return toReturn;\n }\n}\nclass DeleteImageRequest {\n static fromProto(proto) {\n let m = new DeleteImageRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.imageId !== 'undefined') {\n toReturn['imageId'] = this.imageId;\n }\n return toReturn;\n }\n}\nclass ListImagesRequestFilters {\n static fromProto(proto) {\n let m = new ListImagesRequestFilters();\n m = Object.assign(m, proto);\n if (proto.imageType) {\n m.imageType = proto.imageType.map(v => enumStringToValue(ImageType, v));\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.imageType !== 'undefined') {\n toReturn['imageType'] = this.imageType;\n }\n if (typeof this.includeDeleted !== 'undefined') {\n toReturn['includeDeleted'] = this.includeDeleted;\n }\n return toReturn;\n }\n}\nclass ImageAssociation {\n static fromProto(proto) {\n let m = new ImageAssociation();\n m = Object.assign(m, proto);\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.imageType) {\n m.imageType = enumStringToValue(ImageType, proto.imageType);\n }\n if (proto.deleted) {\n m.deleted = new Date(proto.deleted);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.imageId !== 'undefined') {\n toReturn['imageId'] = this.imageId;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.imageType !== 'undefined') {\n toReturn['imageType'] = this.imageType;\n }\n if (typeof this.deleted !== 'undefined' && this.deleted !== null) {\n toReturn['deleted'] = 'toApiJson' in this.deleted ? this.deleted.toApiJson() : this.deleted;\n }\n return toReturn;\n }\n}\nclass ListImagesPagedResponse {\n static fromProto(proto) {\n let m = new ListImagesPagedResponse();\n m = Object.assign(m, proto);\n if (proto.images) {\n m.images = proto.images.map(ImageAssociation.fromProto);\n }\n if (proto.totalResults) {\n m.totalResults = parseInt(proto.totalResults, 10);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.images !== 'undefined' && this.images !== null) {\n toReturn['images'] = 'toApiJson' in this.images ? this.images.toApiJson() : this.images;\n }\n if (typeof this.nextCursor !== 'undefined') {\n toReturn['nextCursor'] = this.nextCursor;\n }\n if (typeof this.hasMore !== 'undefined') {\n toReturn['hasMore'] = this.hasMore;\n }\n if (typeof this.totalResults !== 'undefined') {\n toReturn['totalResults'] = this.totalResults;\n }\n return toReturn;\n }\n}\nclass ListImagesRequest {\n static fromProto(proto) {\n let m = new ListImagesRequest();\n m = Object.assign(m, proto);\n if (proto.pageSize) {\n m.pageSize = parseInt(proto.pageSize, 10);\n }\n if (proto.filters) {\n m.filters = ListImagesRequestFilters.fromProto(proto.filters);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.cursor !== 'undefined') {\n toReturn['cursor'] = this.cursor;\n }\n if (typeof this.pageSize !== 'undefined') {\n toReturn['pageSize'] = this.pageSize;\n }\n if (typeof this.filters !== 'undefined' && this.filters !== null) {\n toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;\n }\n return toReturn;\n }\n}\n\n// *********************************\n\nconst environment = (window ? window['environment'] : 'prod') ?? 'prod';\nconst hostMap = {\n 'local': 'account-group-media-api.vendasta-local.com',\n 'test': '',\n 'demo': 'account-group-media-api-demo.apigateway.co',\n 'prod': 'account-group-media-api-prod.apigateway.co',\n 'production': 'account-group-media-api-prod.apigateway.co'\n};\nlet HostService = /*#__PURE__*/(() => {\n class HostService {\n get host() {\n return hostMap[environment.toLowerCase()];\n }\n get hostWithScheme() {\n return 'https://' + this.host;\n }\n }\n HostService.ɵfac = function HostService_Factory(t) {\n return new (t || HostService)();\n };\n HostService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: HostService,\n factory: HostService.ɵfac,\n providedIn: 'root'\n });\n return HostService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\nlet MediaApiService = /*#__PURE__*/(() => {\n class MediaApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n associateImage(r) {\n const request = r.toApiJson ? r : new AssociateImageRequest(r);\n return this.http.post(this._host + \"/accountgroupmedia.v1.MediaService/AssociateImage\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n listImages(r) {\n const request = r.toApiJson ? r : new ListImagesRequest(r);\n return this.http.post(this._host + \"/accountgroupmedia.v1.MediaService/ListImages\", request.toApiJson(), this.apiOptions()).pipe(map(resp => ListImagesPagedResponse.fromProto(resp)));\n }\n deleteImage(r) {\n const request = r.toApiJson ? r : new DeleteImageRequest(r);\n return this.http.post(this._host + \"/accountgroupmedia.v1.MediaService/DeleteImage\", request.toApiJson(), {\n ...this.apiOptions(),\n observe: 'response'\n });\n }\n }\n MediaApiService.ɵfac = function MediaApiService_Factory(t) {\n return new (t || MediaApiService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n };\n MediaApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: MediaApiService,\n factory: MediaApiService.ɵfac,\n providedIn: 'root'\n });\n return MediaApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { AssociateImageRequest, DeleteImageRequest, ImageAssociation, ImageType, ListImagesPagedResponse, ListImagesRequest, ListImagesRequestFilters, MediaApiService };\n","import * as i0 from '@angular/core';\nimport { Injectable } from '@angular/core';\nimport * as i1 from '@angular/common/http';\nimport { HttpHeaders } from '@angular/common/http';\nimport { map, catchError } from 'rxjs/operators';\nimport { throwError } from 'rxjs';\nconst environment = (window ? window['environment'] : 'prod') ?? 'prod';\nconst hostMap = {\n 'local': 'media-api.vendasta-local.com',\n 'test': '',\n 'demo': 'media-api-demo.apigateway.co',\n 'prod': 'media-api-prod.apigateway.co',\n 'production': 'media-api-prod.apigateway.co'\n};\nlet HostService = /*#__PURE__*/(() => {\n class HostService {\n get host() {\n return hostMap[environment.toLowerCase()];\n }\n get hostWithScheme() {\n return 'https://' + this.host;\n }\n }\n HostService.ɵfac = function HostService_Factory(t) {\n return new (t || HostService)();\n };\n HostService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: HostService,\n factory: HostService.ɵfac,\n providedIn: 'root'\n });\n return HostService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nclass Tag {\n static fromProto(proto) {\n let m = new Tag();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.key !== 'undefined') {\n toReturn['key'] = this.key;\n }\n if (typeof this.value !== 'undefined') {\n toReturn['value'] = this.value;\n }\n return toReturn;\n }\n}\nclass Video {\n static fromProto(proto) {\n let m = new Video();\n m = Object.assign(m, proto);\n if (proto.tags) {\n m.tags = proto.tags.map(Tag.fromProto);\n }\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.modified) {\n m.modified = new Date(proto.modified);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.url !== 'undefined') {\n toReturn['url'] = this.url;\n }\n if (typeof this.tags !== 'undefined' && this.tags !== null) {\n toReturn['tags'] = 'toApiJson' in this.tags ? this.tags.toApiJson() : this.tags;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.modified !== 'undefined' && this.modified !== null) {\n toReturn['modified'] = 'toApiJson' in this.modified ? this.modified.toApiJson() : this.modified;\n }\n return toReturn;\n }\n}\nclass Image {\n static fromProto(proto) {\n let m = new Image();\n m = Object.assign(m, proto);\n if (proto.tags) {\n m.tags = proto.tags.map(Tag.fromProto);\n }\n if (proto.created) {\n m.created = new Date(proto.created);\n }\n if (proto.modified) {\n m.modified = new Date(proto.modified);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.id !== 'undefined') {\n toReturn['id'] = this.id;\n }\n if (typeof this.url !== 'undefined') {\n toReturn['url'] = this.url;\n }\n if (typeof this.tags !== 'undefined' && this.tags !== null) {\n toReturn['tags'] = 'toApiJson' in this.tags ? this.tags.toApiJson() : this.tags;\n }\n if (typeof this.created !== 'undefined' && this.created !== null) {\n toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;\n }\n if (typeof this.modified !== 'undefined' && this.modified !== null) {\n toReturn['modified'] = 'toApiJson' in this.modified ? this.modified.toApiJson() : this.modified;\n }\n return toReturn;\n }\n}\nclass CreateImageRequest {\n static fromProto(proto) {\n let m = new CreateImageRequest();\n m = Object.assign(m, proto);\n if (proto.tags) {\n m.tags = proto.tags.map(Tag.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.servingUrl !== 'undefined') {\n toReturn['servingUrl'] = this.servingUrl;\n }\n if (typeof this.tags !== 'undefined' && this.tags !== null) {\n toReturn['tags'] = 'toApiJson' in this.tags ? this.tags.toApiJson() : this.tags;\n }\n return toReturn;\n }\n}\nclass CreateImageResponse {\n static fromProto(proto) {\n let m = new CreateImageResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.imageId !== 'undefined') {\n toReturn['imageId'] = this.imageId;\n }\n return toReturn;\n }\n}\nclass CreateVideoRequest {\n static fromProto(proto) {\n let m = new CreateVideoRequest();\n m = Object.assign(m, proto);\n if (proto.tags) {\n m.tags = proto.tags.map(Tag.fromProto);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.videoUrl !== 'undefined') {\n toReturn['videoUrl'] = this.videoUrl;\n }\n if (typeof this.tags !== 'undefined' && this.tags !== null) {\n toReturn['tags'] = 'toApiJson' in this.tags ? this.tags.toApiJson() : this.tags;\n }\n return toReturn;\n }\n}\nclass CreateVideoResponse {\n static fromProto(proto) {\n let m = new CreateVideoResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.videoId !== 'undefined') {\n toReturn['videoId'] = this.videoId;\n }\n return toReturn;\n }\n}\nclass GenerateUploadUrlRequest {\n static fromProto(proto) {\n let m = new GenerateUploadUrlRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.accountGroupId !== 'undefined') {\n toReturn['accountGroupId'] = this.accountGroupId;\n }\n if (typeof this.fileName !== 'undefined') {\n toReturn['fileName'] = this.fileName;\n }\n if (typeof this.contentType !== 'undefined') {\n toReturn['contentType'] = this.contentType;\n }\n return toReturn;\n }\n}\nclass GenerateUploadUrlResponse {\n static fromProto(proto) {\n let m = new GenerateUploadUrlResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.signedUrl !== 'undefined') {\n toReturn['signedUrl'] = this.signedUrl;\n }\n return toReturn;\n }\n}\nclass GetImageRequest {\n static fromProto(proto) {\n let m = new GetImageRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.imageId !== 'undefined') {\n toReturn['imageId'] = this.imageId;\n }\n return toReturn;\n }\n}\nclass GetImageResponse {\n static fromProto(proto) {\n let m = new GetImageResponse();\n m = Object.assign(m, proto);\n if (proto.image) {\n m.image = Image.fromProto(proto.image);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.image !== 'undefined' && this.image !== null) {\n toReturn['image'] = 'toApiJson' in this.image ? this.image.toApiJson() : this.image;\n }\n return toReturn;\n }\n}\nclass GetResumableUploadSessionRequest {\n static fromProto(proto) {\n let m = new GetResumableUploadSessionRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.mediaType !== 'undefined') {\n toReturn['mediaType'] = this.mediaType;\n }\n if (typeof this.origin !== 'undefined') {\n toReturn['origin'] = this.origin;\n }\n return toReturn;\n }\n}\nclass GetResumableUploadSessionResponse {\n static fromProto(proto) {\n let m = new GetResumableUploadSessionResponse();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.sessionUri !== 'undefined') {\n toReturn['sessionUri'] = this.sessionUri;\n }\n return toReturn;\n }\n}\nclass GetVideoRequest {\n static fromProto(proto) {\n let m = new GetVideoRequest();\n m = Object.assign(m, proto);\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.videoId !== 'undefined') {\n toReturn['videoId'] = this.videoId;\n }\n return toReturn;\n }\n}\nclass GetVideoResponse {\n static fromProto(proto) {\n let m = new GetVideoResponse();\n m = Object.assign(m, proto);\n if (proto.video) {\n m.video = Video.fromProto(proto.video);\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n Object.assign(this, kwargs);\n }\n toApiJson() {\n const toReturn = {};\n if (typeof this.video !== 'undefined' && this.video !== null) {\n toReturn['video'] = 'toApiJson' in this.video ? this.video.toApiJson() : this.video;\n }\n return toReturn;\n }\n}\n\n// *********************************\n\n// *********************************\nlet MediaApiService$1 = class MediaApiService {\n constructor(http, hostService) {\n this.http = http;\n this.hostService = hostService;\n this._host = this.hostService.hostWithScheme;\n }\n apiOptions() {\n return {\n headers: new HttpHeaders({\n 'Content-Type': 'application/json'\n }),\n withCredentials: true\n };\n }\n createImage(r) {\n const request = r.toApiJson ? r : new CreateImageRequest(r);\n return this.http.post(this._host + \"/media.v2.MediaService/CreateImage\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CreateImageResponse.fromProto(resp)));\n }\n getImage(r) {\n const request = r.toApiJson ? r : new GetImageRequest(r);\n return this.http.post(this._host + \"/media.v2.MediaService/GetImage\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetImageResponse.fromProto(resp)));\n }\n createVideo(r) {\n const request = r.toApiJson ? r : new CreateVideoRequest(r);\n return this.http.post(this._host + \"/media.v2.MediaService/CreateVideo\", request.toApiJson(), this.apiOptions()).pipe(map(resp => CreateVideoResponse.fromProto(resp)));\n }\n getVideo(r) {\n const request = r.toApiJson ? r : new GetVideoRequest(r);\n return this.http.post(this._host + \"/media.v2.MediaService/GetVideo\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetVideoResponse.fromProto(resp)));\n }\n generateUploadUrl(r) {\n const request = r.toApiJson ? r : new GenerateUploadUrlRequest(r);\n return this.http.post(this._host + \"/media.v2.MediaService/GenerateUploadUrl\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GenerateUploadUrlResponse.fromProto(resp)));\n }\n getResumableUploadSession(r) {\n const request = r.toApiJson ? r : new GetResumableUploadSessionRequest(r);\n return this.http.post(this._host + \"/media.v2.MediaService/GetResumableUploadSession\", request.toApiJson(), this.apiOptions()).pipe(map(resp => GetResumableUploadSessionResponse.fromProto(resp)));\n }\n};\nMediaApiService$1.ɵfac = function MediaApiService$1_Factory(t) {\n return new (t || MediaApiService$1)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(HostService));\n};\nMediaApiService$1.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: MediaApiService$1,\n factory: MediaApiService$1.ɵfac,\n providedIn: 'root'\n});\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n// *********************************\n\nclass UploadImageResponse {\n static fromProto(proto) {\n if (!proto) {\n return null;\n }\n const m = new UploadImageResponse();\n if (Object.prototype.hasOwnProperty.call(proto, 'data')) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n m.data = proto.data;\n }\n return m;\n }\n constructor(kwargs) {\n if (!kwargs) {\n return;\n }\n if (kwargs.hasOwnProperty('data')) {\n this.data = kwargs.data;\n }\n }\n toApiJson() {\n if (typeof this.data === 'undefined') {\n return null;\n }\n return {\n 'url': typeof this.data !== 'undefined' ? this.data : null\n };\n }\n}\n\n/**\n * This file is for the HTTP requests, since MSCLI only auto-generates lib/helper code for GRPC endpoints.\n */\nlet MediaUploadApi = /*#__PURE__*/(() => {\n class MediaUploadApi {\n constructor(hostService, http) {\n this.hostService = hostService;\n this.http = http;\n }\n upload(r) {\n return this.http.post(this.hostService.hostWithScheme + \"/image/upload\", r.form, this.apiOptions()).pipe(map(resp => UploadImageResponse.fromProto(resp)), catchError(err => this.handleError(err)));\n }\n get(imageId) {\n return this.hostService.hostWithScheme + \"/image/get/\" + imageId;\n }\n apiOptions() {\n return {\n withCredentials: true\n };\n }\n handleError(error) {\n if (error.error instanceof ErrorEvent) {\n console.error(`An error occurred:`, error.error.message);\n } else {\n console.error(error);\n }\n return throwError(() => \"Unable to upload photo. Please try again.\");\n }\n }\n MediaUploadApi.ɵfac = function MediaUploadApi_Factory(t) {\n return new (t || MediaUploadApi)(i0.ɵɵinject(HostService), i0.ɵɵinject(i1.HttpClient));\n };\n MediaUploadApi.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: MediaUploadApi,\n factory: MediaUploadApi.ɵfac,\n providedIn: \"root\"\n });\n return MediaUploadApi;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\nlet MediaApiService = /*#__PURE__*/(() => {\n class MediaApiService {\n constructor(grpcApi, mediaUploadApi) {\n this.grpcApi = grpcApi;\n this.mediaUploadApi = mediaUploadApi;\n }\n upload(file) {\n const formData = new FormData();\n formData.append('image', file, file.name);\n return this.mediaUploadApi.upload({\n form: formData\n }).pipe(map(resp => resp?.data || null));\n }\n create(servingUrl) {\n return this.grpcApi.createImage(new CreateImageRequest({\n servingUrl: servingUrl\n }));\n }\n get(imageId) {\n return this.mediaUploadApi.get(imageId);\n }\n getResumableUpload(mediaType, origin) {\n const request = new GetResumableUploadSessionRequest({\n mediaType: mediaType,\n origin: origin\n });\n return this.grpcApi.getResumableUploadSession(request);\n }\n }\n MediaApiService.ɵfac = function MediaApiService_Factory(t) {\n return new (t || MediaApiService)(i0.ɵɵinject(MediaApiService$1), i0.ɵɵinject(MediaUploadApi));\n };\n MediaApiService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: MediaApiService,\n factory: MediaApiService.ɵfac,\n providedIn: 'root'\n });\n return MediaApiService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CreateImageRequest, CreateImageResponse, CreateVideoRequest, CreateVideoResponse, GenerateUploadUrlRequest, GenerateUploadUrlResponse, GetImageRequest, GetImageResponse, GetResumableUploadSessionRequest, GetResumableUploadSessionResponse, GetVideoRequest, GetVideoResponse, HostService, Image, MediaApiService, Tag, Video };\n","import { Component, OnDestroy } from '@angular/core';\nimport { UntypedFormControl } from '@angular/forms';\nimport { MatDialogRef } from '@angular/material/dialog';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { Subscription } from 'rxjs';\nimport { ClientImage } from '../media-tab.interface';\nimport { MediaTabService } from '../media-tab.service';\n\n@Component({\n selector: 'business-upload-image-dialog',\n templateUrl: './upload-image-dialog.component.html',\n styleUrls: ['./upload-image-dialog.component.scss'],\n})\nexport class UploadImageDialogComponent implements OnDestroy {\n imageUrlControl = new UntypedFormControl();\n private subscriptions: Subscription[] = [];\n maxFileSizeBytes = 5242880; // MiB\n imageService: MediaTabService;\n uploading = false;\n\n constructor(public dialogRef: MatDialogRef, private alertService: SnackbarService) {}\n\n ngOnDestroy(): void {\n this.subscriptions.forEach((sub) => {\n sub.unsubscribe();\n });\n }\n\n uploadPhotos(): void {\n this.uploading = true;\n const imageUrl = this.imageUrlControl.value.url;\n this.subscriptions.push(\n this.imageService.createAndAssociate(imageUrl).subscribe(\n (imageId) => {\n this.onSuccess(imageId);\n },\n (err) => {\n this.uploadError(err);\n },\n ),\n );\n }\n\n private onSuccess(imageId: string): void {\n this.alertService.openSuccessSnack('FRONTEND.BUSINESSES.MEDIA_TAB.PHOTO_UPLOADED_SUCCESSFULLY');\n const image: ClientImage = { url: this.imageService.mediaApiService.get(imageId), date: new Date() };\n this.dialogRef.close(image);\n }\n\n uploadError(error: Error): void {\n console.error(error.message);\n this.alertService.openErrorSnack(error.message);\n this.dialogRef.close();\n }\n\n onCancel(): void {\n this.dialogRef.close();\n }\n}\n","

\n {{ 'FRONTEND.BUSINESSES.MEDIA_TAB.UPLOAD_PHOTO' | translate }}\n

\n\n\n\n@if (uploading) {\n \n}\n\n \n @if (imageUrlControl.value !== null) {\n \n }\n\n","import { Injectable } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport {\n MediaApiService as AccountGroupMediaApiService,\n AssociateImageRequest,\n DeleteImageRequest,\n ImageType,\n ListImagesRequest,\n} from '@vendasta/account-group-media';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { MediaApiService } from '@vendasta/media';\nimport { BehaviorSubject, EMPTY as empty, firstValueFrom, Observable } from 'rxjs';\nimport { map, switchMap, tap } from 'rxjs/operators';\nimport { ClientImage } from './media-tab.interface';\nimport { UploadImageDialogComponent } from './upload-image-dialog/upload-image-dialog.component';\n\n@Injectable()\nexport class MediaTabService {\n private accountGroupId: string;\n hasMore = new BehaviorSubject(false);\n totalImages$$ = new BehaviorSubject(0);\n loading$$ = new BehaviorSubject(false);\n pageFetchError$$ = new BehaviorSubject(false);\n imagesSubject$$ = new BehaviorSubject([]);\n private imageCursor: string;\n\n constructor(\n private accountGroupMediaApiService: AccountGroupMediaApiService,\n public mediaApiService: MediaApiService,\n private snackbarService: SnackbarService,\n ) {}\n\n setAccountGroupId(accountGroupId: string): void {\n this.clearConfig();\n this.accountGroupId = accountGroupId;\n this.addClientImages();\n }\n\n clearConfig(): void {\n this.accountGroupId = null;\n this.hasMore.next(false);\n this.totalImages$$.next(0);\n this.loading$$.next(false);\n this.pageFetchError$$.next(false);\n this.imageCursor = null;\n this.imagesSubject$$.next([]);\n }\n\n private addImageToSubject(image: ClientImage): void {\n const curImages = this.imagesSubject$$.getValue();\n\n if (!curImages.find((x) => x.url === image.url)) {\n if (image.type) {\n curImages.unshift(image);\n this.imagesSubject$$.next(curImages);\n } else {\n const index = curImages.findIndex((x) => x.date < image.date && x.type === image.type);\n if (index !== -1) {\n curImages.splice(index, 0, image);\n this.imagesSubject$$.next(curImages);\n } else {\n this.imagesSubject$$.next(curImages.concat(image));\n }\n }\n }\n }\n\n private removeImageUrlFromSubject(imageUrl: string): void {\n const curImages = this.imagesSubject$$.getValue();\n const index = curImages.findIndex((x) => x.url === imageUrl);\n\n if (index > -1) {\n curImages.splice(index, 1);\n this.imagesSubject$$.next(curImages);\n let total: number = this.totalImages$$.getValue();\n total--;\n this.totalImages$$.next(total);\n }\n }\n\n private removeImageTypeFromSubject(imageType: ImageType): boolean {\n const curImages = this.imagesSubject$$.getValue();\n const index = curImages.findIndex((x) => x.type === this.imageTypeToString(imageType));\n\n if (index > -1) {\n curImages.splice(index, 1);\n this.imagesSubject$$.next(curImages);\n return true;\n }\n return false;\n }\n\n openImageUploadDialog(dialog: MatDialog): void {\n const dialogRef = dialog.open(UploadImageDialogComponent, {\n width: '900px',\n minWidth: '80%',\n maxWidth: '100%',\n minHeight: '500px',\n });\n (dialogRef.componentInstance.imageService as MediaTabService) = this;\n firstValueFrom(dialogRef.beforeClosed()).then((result) => {\n if (result) {\n let total: number = this.totalImages$$.getValue();\n total++;\n this.totalImages$$.next(total);\n this.addImageToSubject(result);\n }\n });\n }\n\n createAndAssociate(servingUrl: string, imageType?: ImageType): Observable {\n return this.mediaApiService.create(servingUrl).pipe(\n switchMap((createResponse) => {\n const associateRequest = new AssociateImageRequest({\n accountGroupId: this.accountGroupId,\n imageId: createResponse.imageId,\n imageType: imageType,\n });\n return this.accountGroupMediaApiService\n .associateImage(associateRequest)\n .pipe(map(() => createResponse.imageId));\n }),\n );\n }\n\n addClientImages(): void {\n this.loading$$.next(true);\n const request = new ListImagesRequest({\n accountGroupId: this.accountGroupId,\n cursor: this.imageCursor,\n pageSize: 8,\n });\n firstValueFrom(this.accountGroupMediaApiService.listImages(request))\n .then((result) => {\n const imageAssociations = result.images;\n if (result.images) {\n this.imageCursor = result.nextCursor;\n if (this.totalImages$$.getValue() < result.totalResults) {\n this.totalImages$$.next(result.totalResults);\n }\n this.hasMore.next(result.hasMore);\n imageAssociations.forEach((element) => {\n const url = this.mediaApiService.get(element.imageId);\n const type = this.imageTypeToString(element.imageType);\n this.addImageToSubject({ url: url, date: element.created, type: type });\n });\n this.pageFetchError$$.next(false);\n }\n this.loading$$.next(false);\n })\n .catch((err) => {\n console.error(err);\n this.pageFetchError$$.next(true);\n this.loading$$.next(false);\n })\n .finally(() => {\n this.loading$$.next(false);\n });\n }\n\n markImageAsLogo(imageUrl: string, dialogRef: MatDialogRef): void {\n firstValueFrom(\n dialogRef.afterClosed().pipe(\n switchMap((result) => {\n if (result) {\n const logoUrl = imageUrl + '=c-rp'; // Make the image a square if it is a logo, png\n return this.createAndAssociate(logoUrl, ImageType.LOGO).pipe(\n tap({\n next: (imageId) => {\n const clientLogo = {\n url: this.mediaApiService.get(imageId),\n date: new Date(),\n type: this.imageTypeToString(ImageType.LOGO),\n };\n if (this.removeImageTypeFromSubject(ImageType.LOGO) === false) {\n let total: number = this.totalImages$$.getValue();\n total++;\n this.totalImages$$.next(total);\n }\n this.addImageToSubject(clientLogo);\n this.snackbarService.openSuccessSnack('FRONTEND.BUSINESSES.MEDIA_TAB.LOGO_SET_SUCCESSFULLY');\n },\n error: () => {\n this.snackbarService.openErrorSnack('FRONTEND.BUSINESSES.MEDIA_TAB.ERROR_SETTING_PHOTO_AS_LOGO');\n },\n }),\n );\n }\n return empty;\n }),\n ),\n );\n }\n\n markImageAsPrimary(imageUrl: string, dialogRef: MatDialogRef): void {\n firstValueFrom(\n dialogRef.afterClosed().pipe(\n switchMap((result) => {\n if (result) {\n const primaryUrl = imageUrl + '=rp'; // Make the image a png\n return this.createAndAssociate(primaryUrl, ImageType.PRIMARY).pipe(\n tap({\n next: (imageId) => {\n const clientPrimary = {\n url: this.mediaApiService.get(imageId),\n date: new Date(),\n type: this.imageTypeToString(ImageType.PRIMARY),\n };\n if (this.removeImageTypeFromSubject(ImageType.PRIMARY) === false) {\n let total: number = this.totalImages$$.getValue();\n total++;\n this.totalImages$$.next(total);\n }\n this.addImageToSubject(clientPrimary);\n this.snackbarService.openSuccessSnack('FRONTEND.BUSINESSES.MEDIA_TAB.PRIMARY_PHOTO_SET_SUCCESSFULLY');\n },\n error: () => {\n this.snackbarService.openErrorSnack('FRONTEND.BUSINESSES.MEDIA_TAB.ERROR_SETTING_PHOTO_AS_PRIMARY');\n },\n }),\n );\n }\n return empty;\n }),\n ),\n );\n }\n\n deleteImage(imageUrl: string, dialogRef: MatDialogRef): void {\n firstValueFrom(\n dialogRef.afterClosed().pipe(\n switchMap((result) => {\n if (result) {\n const imageId = imageUrl.split('/').pop();\n const deleteImageRequest = new DeleteImageRequest({\n accountGroupId: this.accountGroupId,\n imageId: imageId,\n });\n return this.accountGroupMediaApiService.deleteImage(deleteImageRequest).pipe(\n tap(\n () => {\n this.removeImageUrlFromSubject(imageUrl);\n this.snackbarService.openSuccessSnack('FRONTEND.BUSINESSES.MEDIA_TAB.PHOTO_DELETED');\n },\n () => {\n this.snackbarService.openErrorSnack('FRONTEND.BUSINESSES.MEDIA_TAB.ERROR_DELETING_PHOTO');\n },\n ),\n );\n }\n return empty;\n }),\n ),\n );\n }\n\n private imageTypeToString(type: number): string {\n if (type === ImageType.LOGO) {\n return 'Logo';\n }\n if (type === ImageType.PRIMARY) {\n return 'Primary';\n }\n if (type === ImageType.NOT_SPECIFIED) {\n return undefined;\n }\n }\n}\n","import { Component, effect, input, output } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { combineLatest, firstValueFrom, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { LightboxData } from '../business-profile.interface';\nimport { ImageMenuClick } from './media-tab-gallery/image-menu-click';\nimport { ClientImage, MenuOption } from './media-tab.interface';\nimport { MediaTabService } from './media-tab.service';\n\n@Component({\n selector: 'business-media-tab',\n templateUrl: './media-tab.component.html',\n styleUrls: ['./media-tab.component.scss'],\n})\nexport class MediaTabComponent {\n accountGroupId = input.required();\n editDisabled = input(false);\n imageClicked = output();\n\n protected readonly images$: Observable;\n\n constructor(\n public dialog: MatDialog,\n public tabService: MediaTabService,\n ) {\n this.images$ = this.tabService.imagesSubject$$.pipe(map((arr) => (arr.length > 0 ? arr : null)));\n effect(() => {\n this.tabService.setAccountGroupId(this.accountGroupId());\n });\n }\n\n public get galleryInfo$(): Observable {\n return combineLatest([\n this.tabService.totalImages$$,\n this.tabService.hasMore,\n this.tabService.loading$$,\n this.tabService.pageFetchError$$,\n ]).pipe(\n map(([totalImages, hasMore, loading, pageFetchError]) => ({ totalImages, hasMore, loading, pageFetchError })),\n );\n }\n\n loadMore(): void {\n this.tabService.addClientImages();\n }\n\n openImageUploadDialog(): void {\n this.tabService.openImageUploadDialog(this.dialog);\n }\n\n async openLightbox(clickedImage: ClientImage) {\n const imageUrls: string[] = await firstValueFrom(\n this.images$.pipe(map((images) => images.map((image) => image.url))),\n );\n this.imageClicked.emit({ imageUrls: imageUrls, index: imageUrls.indexOf(clickedImage.url) });\n }\n\n async imageMenuClicked(clickedOption: ImageMenuClick): Promise {\n const getMenuKey = (key) => `FRONTEND.BUSINESSES.MEDIA_TAB.IMAGE_MENU.${key}`;\n if (clickedOption.option === MenuOption.Logo) {\n const dialogRef = this.dialog.open(ConfirmationModalComponent);\n dialogRef.componentInstance.title = getMenuKey('SET_LOGO_QUESTION');\n dialogRef.componentInstance.body = getMenuKey('SET_LOGO_BODY');\n dialogRef.componentInstance.confirmButton = getMenuKey('SET_LOGO');\n this.tabService.markImageAsLogo(clickedOption.image.url, dialogRef);\n } else if (clickedOption.option === MenuOption.Primary) {\n const dialogRef = this.dialog.open(ConfirmationModalComponent);\n dialogRef.componentInstance.title = getMenuKey('SET_PRIMARY_PHOTO');\n dialogRef.componentInstance.body = getMenuKey('SET_PRIMARY_BODY');\n dialogRef.componentInstance.confirmButton = getMenuKey('SET_PRIMARY');\n this.tabService.markImageAsPrimary(clickedOption.image.url, dialogRef);\n } else if (clickedOption.option === MenuOption.Delete) {\n const dialogRef = this.dialog.open(ConfirmationModalComponent);\n dialogRef.componentInstance.title = getMenuKey('DELETE_PHOTO_QUESTION');\n dialogRef.componentInstance.body = getMenuKey('DELETE_PHOTO_BODY');\n dialogRef.componentInstance.confirmButton = getMenuKey('DELETE_PHOTO');\n this.tabService.deleteImage(clickedOption.image.url, dialogRef);\n }\n }\n}\n\n@Component({\n selector: 'business-confirmation-modal',\n template: `\n \n

{{ title | translate }}

\n

{{ body | translate }}

\n
\n \n \n \n \n `,\n})\nexport class ConfirmationModalComponent {\n // Translation key for modal title\n public title: string;\n // Translation key for modal body\n public body: string;\n // Translation key for modal confirm button\n public confirmButton: string;\n constructor(private dialogRef: MatDialogRef) {}\n\n onConfirm(): void {\n this.dialogRef.close(true);\n }\n\n onCancel(): void {\n this.dialogRef.close(false);\n }\n}\n","\n \n \n {{ 'FRONTEND.BUSINESSES.MEDIA_TAB.PHOTOS' | translate }}\n \n @if (!editDisabled()) {\n \n }\n \n \n
\n @if (images$ | async; as images) {\n @if (galleryInfo$ | async; as info) {\n \n @if (info.loading) {\n \n }\n @if (info.pageFetchError) {\n
\n \n {{ 'FRONTEND.BUSINESSES.MEDIA_TAB.UNABLE_TO_LOAD_IMAGES' | translate }}\n \n
\n }\n @if (info.hasMore) {\n
\n \n
\n }\n
\n \n {{\n 'FRONTEND.BUSINESSES.MEDIA_TAB.SHOWING_X_OF_Y'\n | translate: { count: images.length, total: info.totalImages }\n }}\n \n
\n }\n } @else {\n \n collections\n
\n \n
\n
\n {{ 'FRONTEND.BUSINESSES.MEDIA_TAB.ADDING_IMAGES_BOLSTERS' | translate }}\n
\n
\n }\n
\n
\n","import { Component, Input, Output, EventEmitter, OnInit, OnDestroy } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { TranslateService } from '@ngx-translate/core';\nimport { RegularHoursPeriod } from '@vendasta/listing-products';\nimport { EditRegularHoursDialogComponent } from '@vendasta/forms';\nimport { filter, Observable, Subscription } from 'rxjs';\n\nexport interface MoreHoursType {\n hoursTypeId: string;\n displayName: string;\n localizedDisplayName: string;\n}\n\n@Component({\n selector: 'business-profile-more-hours',\n templateUrl: './more-hours.component.html',\n styleUrls: ['./more-hours.component.scss'],\n})\nexport class MoreHoursComponent implements OnInit, OnDestroy {\n @Input() parentFormGroup: UntypedFormGroup;\n @Input() appearance: 'outline' | 'standard' = 'standard';\n @Input() markedAsRequired = false;\n @Input() moreHoursTypes: MoreHoursType[] = [];\n @Input() loading$: Observable;\n @Input() editDisabled = false;\n @Output() changed = new EventEmitter();\n\n subscriptions: Subscription[] = [];\n\n private editDialogRef: MatDialogRef;\n\n public setTypes: Map = new Map();\n public unsetTypes: Map = new Map();\n\n constructor(\n private dialog: MatDialog,\n private fb: UntypedFormBuilder,\n private translateService: TranslateService,\n ) {}\n\n ngOnInit(): void {\n this.subscriptions.push(\n this.loading$.pipe(filter((loading) => !loading)).subscribe(() => {\n this.moreHoursTypes.forEach((moreHoursType) => {\n const existingHours: RegularHoursPeriod[] = this.parentFormGroup.get(moreHoursType.hoursTypeId)?.value;\n if (existingHours?.length > 0) {\n this.setTypes.set(moreHoursType.hoursTypeId, moreHoursType);\n } else {\n const control = this.fb.control({ value: [] });\n this.unsetTypes.set(moreHoursType.hoursTypeId, moreHoursType);\n this.parentFormGroup.addControl(moreHoursType.hoursTypeId, control);\n const hoursTypeId = this.parentFormGroup.get(moreHoursType.hoursTypeId);\n if (hoursTypeId) {\n hoursTypeId.markAsPristine();\n }\n }\n });\n }),\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach((subscription) => subscription.unsubscribe());\n }\n\n openEditDialog(moreHoursType: MoreHoursType): void {\n const control = this.parentFormGroup.get(moreHoursType.hoursTypeId);\n if (control.disabled || this.editDisabled) {\n return;\n }\n\n control.markAsTouched();\n this.dialog.closeAll();\n this.editDialogRef = this.dialog.open(EditRegularHoursDialogComponent, {\n disableClose: true,\n width: '660px',\n maxWidth: '100vw',\n data: { hideHolidayHours: true },\n });\n this.editDialogRef.componentInstance.control = control as UntypedFormControl;\n this.editDialogRef.componentInstance.showRemoveButton = true;\n this.editDialogRef.componentInstance.customTitle = `${\n moreHoursType.localizedDisplayName\n } ${this.translateService.instant('FRONTEND.BUSINESSES.HOURS')}`;\n this.editDialogRef.afterClosed().subscribe((result) => {\n if (result) {\n control.markAsDirty();\n control.setValue(result);\n if (result.length) {\n this.unsetTypes.delete(moreHoursType.hoursTypeId);\n this.setTypes.set(moreHoursType.hoursTypeId, moreHoursType);\n } else {\n this.setTypes.delete(moreHoursType.hoursTypeId);\n this.unsetTypes.set(moreHoursType.hoursTypeId, moreHoursType);\n }\n this.changed.emit();\n }\n this.editDialogRef = null;\n });\n }\n}\n","\n \n \n {{ 'FRONTEND.FORMS.MORE_HOURS.TITLE' | translate }}\n \n \n \n \n 0; else empty\">\n 0\">\n

{{ 'FRONTEND.BUSINESSES.ACTIVE' | translate }}

\n \n \n \n {{ moreHourType.value.localizedDisplayName }}\n \n \n \n
\n\n 0\">\n

{{ 'FRONTEND.FORMS.INPUT.ADD' | translate }}

\n \n \n \n add\n {{ moreHourType.value.localizedDisplayName }}\n \n \n \n
\n
\n
\n
\n
\n\n\n \n\n\n\n
\n \n
\n {{ 'FRONTEND.FORMS.MORE_HOURS.EMPTY' | translate }}\n
\n
\n
\n","import { HttpClient, HttpErrorResponse } from '@angular/common/http';\nimport {\n Component,\n computed,\n DestroyRef,\n effect,\n EventEmitter,\n Inject,\n inject,\n input,\n Input,\n NgZone,\n OnInit,\n Output,\n Signal,\n ViewChild,\n} from '@angular/core';\nimport { takeUntilDestroyed, toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport {\n AbstractControl,\n FormArray,\n FormBuilder,\n FormControl,\n FormGroup,\n ValidatorFn,\n Validators,\n} from '@angular/forms';\nimport { MapGeocoder, MapGeocoderResponse } from '@angular/google-maps';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { MatTabChangeEvent } from '@angular/material/tabs';\nimport { isHealthCategory } from '@galaxy/business-category';\nimport { TranslateService } from '@ngx-translate/core';\nimport { RichDataPaymentMethods } from '@vendasta/account-group';\nimport { CountryOption } from '@vendasta/address';\nimport { AuxiliaryDataTableComponent, ObjectType } from '@vendasta/auxiliary-data-components';\nimport { CategoryInterface } from '@vendasta/category';\nimport {\n emailValidator,\n fixControlsForFormArray,\n getChangedValues,\n ItemFactory,\n nameCharacterValidator,\n Option,\n phoneValidator,\n urlValidator,\n whitespaceValidator,\n} from '@vendasta/forms';\nimport { buildTimezoneDisplay } from '@vendasta/galaxy/utility/timezone';\nimport {\n ValueType as AttributesValueType,\n BingAttribute,\n BingAttributeMetaData,\n BingAttributeMetaDataInterface,\n BusinessHours,\n ClosedStatus,\n DoctorDotComCategory,\n Geo,\n GetDoctorDotComCategoriesRequest,\n GetSuggestionRequest,\n GetSuggestionResponse,\n GoogleAttribute,\n GoogleAttributeMetaData,\n GoogleAttributeMetaDataInterface,\n HealthCareProfessionalInformation,\n HealthCareProfessionalInformationGender,\n HealthCareProfessionalInformationIsProvider,\n IsAvailable,\n LegacyProductDetails,\n ListingProductsApiService,\n ListingProfile,\n ListingProfileApiService,\n MoreHoursType,\n ProjectionFilter,\n RichData,\n ServiceArea,\n ServiceAvailability,\n SuggestFieldUpdateRequest,\n SuggestionApiService,\n UpdateOption,\n VendorAttributeMetaData,\n} from '@vendasta/listing-products';\nimport {\n BingAttributesUpdateOperation,\n BusinessHoursUpdateOperation,\n ExternalIdentifiersUpdateOperation,\n GoogleAttributesUpdateOperation,\n LegacyProductDetailsUpdateOperation,\n ListingProfileService,\n MergeHours,\n NapUpdateOperation,\n RichDataUpdateOperation,\n SocialURLsUpdateOperation,\n SplitHours,\n UpdateOperations,\n} from '@vendasta/listing-profile-common';\nimport { ProductAnalyticsService } from '@vendasta/product-analytics';\nimport { ListSalespersonsRequestListSalespersonsFiltersInterface, SalespersonService, SalesSdk } from '@vendasta/sales';\nimport { Salesperson as SalesSalesperson } from '@vendasta/sales/lib/_internal/objects/salesperson';\nimport { Salesperson } from '@vendasta/salesperson';\nimport { VaFullscreenLightboxService } from '@vendasta/uikit';\nimport {\n catchError,\n combineLatest,\n distinctUntilChanged,\n EMPTY,\n filter,\n map,\n Observable,\n of,\n ReplaySubject,\n shareReplay,\n startWith,\n switchMap,\n tap,\n} from 'rxjs';\nimport { retry } from 'rxjs/operators';\nimport { Address, COUNTRY_CONTROL_TOKEN } from './address';\nimport { BusinessProfileTab, HiddenField, LightboxData, Market } from './business-profile.interface';\nimport {\n primaryIsNotInAdditionalSalespeople,\n primaryIsSelectedWhenHavingAdditionalSalespeople,\n totalLengthOfRepeatedFieldValidator,\n} from './custom-validators';\nimport { FeatureFlagService } from './feature-flag.service';\nimport { FormatPhoneNumberPipe } from './format-phone-number.pipe';\n\ndeclare let google: any;\n\ninterface FormUpdateParameters {\n operations: UpdateOperations;\n onlyHoursSave?: boolean;\n onlyBusinessHoursSave?: boolean;\n}\n\ninterface AvailabilityOption {\n code: number;\n name: string;\n}\n\ninterface GenderOption {\n code: number;\n name: string;\n}\n\ninterface IsProviderOption {\n code: number;\n name: string;\n}\n\nexport enum GenderKeys {\n SELECT_OPTION = 0,\n FEMALE = 1,\n MALE = 2,\n OTHER = 3,\n}\n\nconst GenderSelection = [GenderKeys.SELECT_OPTION, GenderKeys.FEMALE, GenderKeys.MALE, GenderKeys.OTHER];\n\nconst CountryPaymentMethods = {\n DEFAULT: [\n RichDataPaymentMethods.AMERICAN_EXPRESS,\n RichDataPaymentMethods.ANDROID_PAY,\n RichDataPaymentMethods.APPLE_PAY,\n RichDataPaymentMethods.CASH,\n RichDataPaymentMethods.CHECK,\n RichDataPaymentMethods.DEBIT,\n RichDataPaymentMethods.DINERS_CLUB,\n RichDataPaymentMethods.DISCOVER,\n RichDataPaymentMethods.MASTERCARD,\n RichDataPaymentMethods.PAYPAL,\n RichDataPaymentMethods.SAMSUNG_PAY,\n RichDataPaymentMethods.STORE_CARD,\n RichDataPaymentMethods.TRAVELERS_CHECK,\n RichDataPaymentMethods.VISA,\n ],\n CZ: [\n RichDataPaymentMethods.AMERICAN_EXPRESS,\n RichDataPaymentMethods.ANDROID_PAY,\n RichDataPaymentMethods.CASH,\n RichDataPaymentMethods.CHECK,\n RichDataPaymentMethods.DINERS_CLUB,\n RichDataPaymentMethods.DISCOVER,\n RichDataPaymentMethods.MASTERCARD,\n RichDataPaymentMethods.PAYPAL,\n RichDataPaymentMethods.TRAVELERS_CHECK,\n RichDataPaymentMethods.VISA,\n RichDataPaymentMethods.CCS,\n RichDataPaymentMethods.SODEXO,\n RichDataPaymentMethods.GOPAY,\n RichDataPaymentMethods.V_PAY,\n RichDataPaymentMethods.FINANCING,\n RichDataPaymentMethods.INVOICE,\n RichDataPaymentMethods.PAYSEC,\n RichDataPaymentMethods.BITCOIN,\n ],\n};\n\nconst BusinessOperationMethods = [\n ClosedStatus.UNSPECIFIED,\n ClosedStatus.OPEN,\n ClosedStatus.LIMITED,\n ClosedStatus.TEMPORARY,\n ClosedStatus.PERMANENT,\n];\n\nconst SellingMethodsAvailability = [IsAvailable.UNSET, IsAvailable.YES, IsAvailable.NO];\n\nexport interface TimezoneOption {\n timezone: string;\n display: string;\n}\n\nconst formTabs: Record = {\n basicInfoForm: BusinessProfileTab.Primary,\n serviceAreaForm: BusinessProfileTab.Primary,\n phoneForm: BusinessProfileTab.Primary,\n serviceAvailabilityForm: BusinessProfileTab.Primary,\n geoControl: BusinessProfileTab.Primary,\n additionalInfoForm: BusinessProfileTab.Primary,\n hoursForm: BusinessProfileTab.Hours,\n businessHoursForm: BusinessProfileTab.Hours,\n businessPagesForm: BusinessProfileTab.Social,\n blogForm: BusinessProfileTab.Social,\n businessDescriptionsForm: BusinessProfileTab.Descriptions,\n personalInformationForm: BusinessProfileTab.Professional,\n practiceInformationForm: BusinessProfileTab.Professional,\n qualificationsAndExperienceForm: BusinessProfileTab.Professional,\n additionalProfessionalInfoForm: BusinessProfileTab.Professional,\n timeZoneControl: BusinessProfileTab.Primary,\n googleAttributesForm: BusinessProfileTab.Attributes,\n bingAttributesForm: BusinessProfileTab.Attributes,\n};\n\nconst isProviderOptions = {\n [HealthCareProfessionalInformationIsProvider.IsProviderTrue]: 'PRACTITIONER',\n [HealthCareProfessionalInformationIsProvider.IsProviderFalse]: 'CLINIC',\n};\n\n@Component({\n selector: 'business-profile',\n templateUrl: './business-profile.component.html',\n styleUrls: ['./business-profile.component.scss'],\n providers: [FormatPhoneNumberPipe],\n})\nexport class BusinessProfileComponent implements OnInit {\n accountGroupId = input.required();\n @Input() productNames: any;\n @Input() editDisabled = false;\n @Input() maxShareOfVoiceKeywords = 3;\n @Input() maxCompetitors = 3;\n @Input() enabledTabs: BusinessProfileTab[] = [\n BusinessProfileTab.Primary,\n BusinessProfileTab.Hours,\n BusinessProfileTab.Social,\n BusinessProfileTab.Professional,\n BusinessProfileTab.Descriptions,\n BusinessProfileTab.Images,\n BusinessProfileTab.Attributes,\n ];\n @Input() markets: Market[];\n @Input() tags: Option[];\n @Input() hiddenFields?: HiddenField[];\n @Input() auxiliaryDataAdminURL = '';\n @Input() tabBackground: 'default' | 'lighter-grey' = 'default';\n\n @Output() saved = new EventEmitter();\n\n @ViewChild('auxiliarydatatable')\n private auxiliaryDataTable: AuxiliaryDataTableComponent;\n auxiliaryDataObjectType: ObjectType = 'business';\n visibleConditionalFields: string[] = [];\n\n CUSTOM_ERROR_MESSAGES = {\n lengthOfRepeatedField: function (error: any): string {\n return this.translateService.instant('FRONTEND.BUSINESSES.LENGTH_OF_REPEATED_FIELD_ERROR', {\n maxLength: error.maxLength,\n fieldName: this.translateService.instant(error.friendlyName),\n });\n }.bind(this),\n };\n\n profileLoading$$ = new ReplaySubject();\n loading$ = this.profileLoading$$.asObservable();\n\n mapZoomLevel: number;\n inferredMapBounds: google.maps.LatLngBoundsLiteral;\n\n businessProfileTab = BusinessProfileTab;\n activeTab: BusinessProfileTab;\n AISuggestionFeature$: Observable;\n\n public salespeople: Salesperson[];\n public additionalSalespeople: Option[];\n public addressData: Address;\n public addressFormDirty = false;\n\n // TODO set up those method once backend update\n // !-- Service Availability\n public businessOperationMethods$: Observable;\n public ecommerceOnly$: Observable;\n\n // TODO: The following choices will result in eventual duplication of list between here and microservice\n // TODO: Perhaps these could be requested from the microservice, or be accessed from SDK?\n public genders$: Observable;\n public paymentMethods$: Observable;\n public standardizedTitles$: Observable;\n public professionalCredentials = [\n 'ACSW',\n 'AGNP-C',\n 'ANP',\n 'ANP-C',\n 'AP',\n 'APN',\n 'APR',\n 'APRN',\n 'ARNP',\n 'AUD',\n 'BCBA',\n 'CCC/SLP',\n 'CCSW',\n 'CERT MDT',\n 'CFNP',\n 'CLTC',\n 'CMP',\n 'CNA',\n 'CNM',\n 'CNP',\n 'CNS',\n 'CPNP',\n 'CRNA',\n 'CRNP',\n 'CSW',\n 'DC',\n 'DCSW',\n 'DDS',\n 'DMD',\n 'DNP',\n 'DO',\n 'DOT',\n 'DOM',\n 'DPM',\n 'DPT',\n 'FAAP',\n 'FACC',\n 'FACOG',\n 'FACOS',\n 'FACP',\n 'FACS',\n 'FCCP',\n 'FCOG',\n 'FCOS',\n 'FICS',\n 'FNP',\n 'FNPC',\n 'FNP-MC',\n 'FPN',\n 'FPNP',\n 'IBCLC',\n 'ITDS',\n 'LAC',\n 'LADC',\n 'LCS',\n 'LCSW',\n 'LGSW',\n 'LICSW',\n 'LISW',\n 'LMBT',\n 'LMFT',\n 'LMH',\n 'LMHC',\n 'LMHP',\n 'LMSW',\n 'LMT',\n 'LP',\n 'LPC',\n 'LPCC',\n 'LPN',\n 'LPT',\n 'LSW',\n 'LVN',\n 'MBBS',\n 'MBCHB',\n 'MD',\n 'MDT',\n 'MFT',\n 'MHP',\n 'MHS',\n 'MHSP',\n 'MMFT',\n 'MPH',\n 'MSN',\n 'MSW',\n 'MT',\n 'NCC',\n 'NCTM',\n 'NCTMB',\n 'ND',\n 'NNP',\n 'NP',\n 'NP-C',\n 'OD',\n 'OT',\n 'OTA',\n 'OTR',\n 'PA',\n 'PAC',\n 'PFNP',\n 'PHARMD',\n 'PHD',\n 'PMHN',\n 'PMHNP',\n 'PNP',\n 'PRN',\n 'PSY',\n 'PSYD',\n 'PT',\n 'RD',\n 'RDH',\n 'RDH/DH',\n 'RN',\n 'RNC',\n 'RNP',\n 'RPH',\n 'RPT',\n 'SLP',\n 'SPTH',\n 'SW',\n 'WHNP',\n ];\n public moreHoursTypes$: Observable;\n public isProviderOptions$: Observable;\n public isAdditionalSalespeopleInputVisible = false;\n\n public readonly attributesMetadata: Signal;\n private readonly attributesMetadata$: Observable;\n\n public readonly listingProfile: Signal;\n private readonly listingProfile$: Observable;\n\n googleAttributesMetadata: Signal;\n googleAttributes: Signal;\n bingAttributesMetadata: Signal;\n bingAttributes: Signal;\n partnerId: Signal;\n\n // the subset of operational statuses implying a closure or limitation of services\n public closedStatuses = [ClosedStatus.LIMITED, ClosedStatus.TEMPORARY, ClosedStatus.PERMANENT];\n\n public partnersLongDescriptionLength = {\n MTCZ: 5000,\n BLS: 1000,\n };\n public longDescriptionLength = 750;\n\n public basicInfoForm: FormGroup;\n public serviceAreaForm: FormGroup;\n public serviceAreaToggle: FormControl;\n public phoneForm: FormGroup;\n public additionalInfoForm: FormGroup;\n public hoursForm: FormControl;\n public businessHoursForm: FormControl;\n public specialHoursForm: FormControl;\n public moreHoursForm: FormGroup;\n public businessPagesForm: FormGroup;\n public blogForm: FormGroup;\n public businessDescriptionsForm: FormGroup;\n public personalInformationForm: FormGroup;\n public serviceAvailabilityForm: FormGroup;\n public qualificationsAndExperienceForm: FormGroup;\n public additionalProfessionalInfoForm: FormGroup;\n public practiceInformationForm: FormGroup;\n public geoControl: FormControl;\n public adminForm: FormGroup;\n public salesForm: FormGroup;\n public timezoneControl: FormControl;\n public googleAttributesForm: FormGroup;\n public bingAttributesForm: FormGroup;\n public accountGroupForm: FormGroup;\n public availableDoctorDotComCategories: Observable;\n public currentDoctorDotComCategories: DoctorDotComCategory[];\n\n public hasProfessionalCategory = false;\n public phoneNumberItemFactory: ItemFactory = (): FormControl =>\n this.fb.control(this.formStateWithDisabled(''), phoneValidator(this.getCountryCode.bind(this), false));\n\n private readonly countryChanges = inject(COUNTRY_CONTROL_TOKEN).valueChanges.pipe(\n filter((country): country is CountryOption => typeof country === 'object'),\n map((country) => country.code),\n );\n private mapsLoaded$: Observable;\n accountGroupId$: Observable;\n private readonly mapsURL =\n 'https://maps.googleapis.com/maps/api/js?key=AIzaSyDxrR1bk6d2TRa4orIDF05H3UlhvIXRRC0&libraries=places';\n\n constructor(\n private listingProfileService: ListingProfileService,\n private listingProfileApiService: ListingProfileApiService,\n private fb: FormBuilder,\n private snackbar: MatSnackBar,\n @Inject(SalespersonService) private readonly salespersonService: SalesSdk,\n private zone: NgZone,\n private formatPhoneNumber: FormatPhoneNumberPipe,\n private featureFlagService: FeatureFlagService,\n private translateService: TranslateService,\n private geocoder: MapGeocoder,\n private productAnalyticsService: ProductAnalyticsService,\n private lightbox: VaFullscreenLightboxService,\n private suggestionService: SuggestionApiService,\n private listingProductsApiService: ListingProductsApiService,\n private readonly destroyRef: DestroyRef,\n private readonly httpClient: HttpClient,\n ) {\n this.accountGroupId$ = toObservable(this.accountGroupId);\n\n effect(() => {\n this.accountGroupId();\n this.bingAttributesForm = null;\n this.googleAttributesForm = null;\n this.createForm();\n });\n\n this.moreHoursTypes$ = this.accountGroupId$.pipe(\n switchMap((accountGroupId: string) =>\n this.listingProfileApiService.getMoreHoursTypes({\n businessId: accountGroupId,\n languageCode: this.translateService.currentLang || this.translateService.defaultLang,\n }),\n ),\n map((response) => response.moreHoursTypes),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n this.attributesMetadata$ = this.accountGroupId$.pipe(\n switchMap((accountGroupId: string) =>\n this.listingProfileApiService.getAttributeMetadata({\n businessId: accountGroupId,\n languageCode: this.translateService.currentLang || this.translateService.defaultLang,\n }),\n ),\n map((response) => response.attributeMedata),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n\n this.attributesMetadata = toSignal(this.attributesMetadata$);\n\n this.listingProfile$ = this.accountGroupId$.pipe(\n tap(() => this.profileLoading$$.next(true)),\n switchMap((accountGroupId: string) =>\n this.listingProfileService.get(\n accountGroupId,\n new ProjectionFilter({\n externalIdentifiers: true,\n socialUrls: true,\n hoursOfOperation: true,\n richData: true,\n napData: true,\n businessHours: true,\n googleAttributes: true,\n googleAttributesMetadata: true,\n bingAttributes: true,\n bingAttributesMetadata: true,\n legacyProductDetails: true,\n }),\n ),\n ),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n this.listingProfile = toSignal(this.listingProfile$);\n\n this.googleAttributesMetadata = computed(() => {\n const am = this.attributesMetadata();\n if (am) {\n const gAttributeMetadata = am.find((b) => b.vendorId === 'google');\n return gAttributeMetadata?.googleAttributeMetadata?.googleAttributeMetadata || [];\n } else {\n return [];\n }\n });\n\n this.googleAttributes = computed(() => this.listingProfile()?.googleAttributes || []);\n\n this.bingAttributesMetadata = computed(() => {\n const am = this.attributesMetadata();\n if (am) {\n const bAttributeMetadata = am.find((a) => a.vendorId === 'bing');\n return bAttributeMetadata?.bingAttributeMetadata?.bingAttributeMetadata || [];\n } else {\n return [];\n }\n });\n this.bingAttributes = computed(() => this.listingProfile()?.bingAttributes || []);\n this.partnerId = computed(() => this.listingProfile()?.externalIdentifiers?.partnerId || '');\n\n this.mapsLoaded$ = this.httpClient?.jsonp(this.mapsURL, 'callback').pipe(\n map(() => true),\n retry(1),\n catchError(() => of(false)),\n shareReplay({ refCount: true, bufferSize: 1 }),\n );\n }\n\n get rmProductName(): string {\n return (this.productNames || {}).RM || 'Reputation Management';\n }\n\n private createForm(): void {\n this.geoControl = this.fb.control(this.formStateWithDisabled());\n this.serviceAreaForm = this.fb.group(\n {\n businessType: [this.formStateWithDisabled(0), Validators.min(1)],\n places: [this.formStateWithDisabled([]), Validators.required],\n },\n this.formStateWithDisabled(undefined),\n );\n this.serviceAreaToggle = this.fb.control(this.formStateWithDisabled());\n this.basicInfoForm = this.fb.group({\n businessName: [\n this.formStateWithDisabled(''),\n [Validators.required, whitespaceValidator(), nameCharacterValidator()],\n ],\n commonBusinessNames: this.fb.array([[this.formStateWithDisabled('')]], Validators.maxLength(3)),\n country: [this.formStateWithDisabled('')],\n website: [this.formStateWithDisabled(''), urlValidator],\n email: [this.formStateWithDisabled(''), emailValidator],\n primaryBusinessCategory: [this.formStateWithDisabled([]), Validators.required],\n businessCategories: [this.formStateWithDisabled([])],\n });\n\n this.phoneForm = this.fb.group({\n workNumbers: this.fb.array(\n [this.phoneNumberItemFactory()],\n // We don't require phone number on the apis so requiring a phone number on edit forces them to add\n // one after the fact which they can't do\n Validators.maxLength(6),\n ),\n faxNumber: [this.formStateWithDisabled('')],\n cellNumber: [this.formStateWithDisabled(''), phoneValidator(this.getCountryCode.bind(this), false)],\n callTrackingNumbers: this.fb.array([this.phoneNumberItemFactory()], Validators.maxLength(3)),\n tollFreeNumber: [this.formStateWithDisabled(''), phoneValidator(this.getCountryCode.bind(this), false)],\n });\n\n this.additionalInfoForm = this.fb.group({\n paymentMethods: [\n this.formStateWithDisabled([]),\n paymentMethodValidator(this.getCountryCode.bind(this), this.translateService),\n ],\n servicesOffered: this.fb.array(\n [[this.formStateWithDisabled('')]],\n Validators.compose([\n Validators.maxLength(15),\n totalLengthOfRepeatedFieldValidator(256, 'FRONTEND.BUSINESSES.SERVICES_OFFERED'),\n ]),\n ),\n brandsCarried: this.fb.array(\n [[this.formStateWithDisabled('')]],\n Validators.compose([\n Validators.maxLength(15),\n totalLengthOfRepeatedFieldValidator(256, 'FRONTEND.BUSINESSES.BRANDS_CARRIED'),\n ]),\n ),\n landmark: [this.formStateWithDisabled('')],\n bookingUrl: [this.formStateWithDisabled('')],\n ico: [this.formStateWithDisabled('')],\n });\n\n this.hoursForm = this.fb.control(this.formStateWithDisabled([]));\n this.businessHoursForm = this.fb.control(this.formStateWithDisabled([]));\n this.moreHoursForm = this.fb.group([]);\n this.specialHoursForm = this.fb.control(this.formStateWithDisabled());\n\n this.businessPagesForm = this.fb.group({\n facebookUrl: [this.formStateWithDisabled(''), urlValidator],\n foursquareUrl: [this.formStateWithDisabled(''), urlValidator],\n linkedInUrl: [this.formStateWithDisabled(''), urlValidator],\n twitterUrl: [this.formStateWithDisabled(''), urlValidator],\n pinterestUrl: [this.formStateWithDisabled(''), urlValidator],\n instagramUrl: [this.formStateWithDisabled(''), urlValidator],\n youTubeUrl: [this.formStateWithDisabled(''), urlValidator],\n });\n this.blogForm = this.fb.group({\n blogOrRssFeedUrl: [this.formStateWithDisabled('')],\n });\n\n this.businessDescriptionsForm = this.fb.group({\n shortDescription: [this.formStateWithDisabled(''), Validators.maxLength(200)],\n longDescription: [this.formStateWithDisabled(''), Validators.maxLength(this.longDescriptionLength)],\n });\n\n this.personalInformationForm = this.fb.group({\n standardizedTitle: [this.formStateWithDisabled()],\n firstName: [this.formStateWithDisabled('')],\n middleInitials: [this.formStateWithDisabled('')],\n lastName: [this.formStateWithDisabled('')],\n professionalCredentials: [this.formStateWithDisabled([])],\n gender: [this.formStateWithDisabled()],\n emailAddress: [this.formStateWithDisabled(''), emailValidator],\n });\n\n this.serviceAvailabilityForm = this.fb.group({\n ecommerceOnly: [this.formStateWithDisabled()],\n closedStatus: [this.formStateWithDisabled()],\n reopeningDate: [this.formStateWithDisabled()],\n });\n\n this.qualificationsAndExperienceForm = this.fb.group({\n doctorDotComCategories: [this.formStateWithDisabled([])],\n educations: this.fb.array(\n [[this.formStateWithDisabled('')]],\n Validators.compose([\n Validators.maxLength(15),\n totalLengthOfRepeatedFieldValidator(256, 'FRONTEND.BUSINESSES.QUALIFICATIONS_EXPERIENCE.EDUCATION'),\n ]),\n ),\n specialties: this.fb.array(\n [[this.formStateWithDisabled('')]],\n Validators.compose([\n Validators.maxLength(15),\n totalLengthOfRepeatedFieldValidator(256, 'FRONTEND.BUSINESSES.QUALIFICATIONS_EXPERIENCE.SPECIALTIES'),\n ]),\n ),\n residencies: this.fb.array(\n [[this.formStateWithDisabled('')]],\n Validators.compose([\n Validators.maxLength(15),\n totalLengthOfRepeatedFieldValidator(256, 'FRONTEND.BUSINESSES.QUALIFICATIONS_EXPERIENCE.RESIDENCIES'),\n ]),\n ),\n fellowships: this.fb.array(\n [[this.formStateWithDisabled('')]],\n Validators.compose([\n Validators.maxLength(15),\n totalLengthOfRepeatedFieldValidator(256, 'FRONTEND.BUSINESSES.QUALIFICATIONS_EXPERIENCE.FELLOWSHIPS'),\n ]),\n ),\n nationalProviderIdentifier: [this.formStateWithDisabled('')],\n medicalLicenseNumber: [this.formStateWithDisabled('')],\n stateLicense: [this.formStateWithDisabled('')],\n });\n\n this.additionalProfessionalInfoForm = this.fb.group({\n acceptingPatients: [this.formStateWithDisabled(null)],\n insurancesAccepted: this.fb.array(\n [[this.formStateWithDisabled('')]],\n Validators.compose([\n Validators.maxLength(15),\n totalLengthOfRepeatedFieldValidator(256, 'FRONTEND.BUSINESSES.INSURANCES_ACCEPTED'),\n ]),\n ),\n });\n this.practiceInformationForm = this.fb.group({\n firmClinicOfficeName: [this.formStateWithDisabled('')],\n isProvider: [this.formStateWithDisabled()],\n hospitalAffiliations: this.fb.array(\n [[this.formStateWithDisabled('')]],\n Validators.compose([\n Validators.maxLength(15),\n totalLengthOfRepeatedFieldValidator(256, 'FRONTEND.BUSINESSES.HOSPITAL_AFFILIATIONS'),\n ]),\n ),\n });\n\n this.googleAttributesForm = this.fb.group({});\n\n this.bingAttributesForm = this.fb.group({});\n\n this.salesForm = this.fb.group({});\n this.adminForm = this.fb.group({});\n\n if (this.isTabEnabled(BusinessProfileTab.Administration)) {\n this.salesForm = this.fb.group(\n {\n market: [this.formStateWithDisabled(''), Validators.required],\n salespersonId: [this.formStateWithDisabled('')],\n additionalSalespersonIds: [this.formStateWithDisabled([])],\n },\n {\n validators: Validators.compose([\n primaryIsNotInAdditionalSalespeople(\n (value) => this.salespeople?.find((salesperson) => salesperson.salespersonId === value).fullName,\n ),\n primaryIsSelectedWhenHavingAdditionalSalespeople(),\n ]),\n },\n );\n this.adminForm = this.fb.group({\n customerIdentifier: [{ value: '' }],\n tags: [this.formStateWithDisabled([])],\n notes: [this.formStateWithDisabled('')],\n });\n }\n\n this.timezoneControl = this.fb.control(this.formStateWithDisabled({}));\n\n this.accountGroupForm = this.fb.group({\n basicInfoForm: this.basicInfoForm,\n serviceAreaForm: this.serviceAreaForm,\n serviceAreaToggle: this.serviceAreaToggle,\n phoneForm: this.phoneForm,\n additionalInfoForm: this.additionalInfoForm,\n hoursForm: this.hoursForm,\n businessHoursForm: this.businessHoursForm,\n businessPagesForm: this.businessPagesForm,\n blogForm: this.blogForm,\n businessDescriptionsForm: this.businessDescriptionsForm,\n personalInformationForm: this.personalInformationForm,\n serviceAvailabilityForm: this.serviceAvailabilityForm,\n qualificationsAndExperienceForm: this.qualificationsAndExperienceForm,\n additionalProfessionalInfoForm: this.additionalProfessionalInfoForm,\n practiceInformationForm: this.practiceInformationForm,\n geoControl: this.geoControl,\n adminForm: this.adminForm,\n timeZoneControl: this.timezoneControl,\n googleAttributesForm: this.googleAttributesForm,\n bingAttributesForm: this.bingAttributesForm,\n salesForm: this.salesForm,\n });\n\n this.countryChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n const paymentMethodsField = this.additionalInfoForm.get('paymentMethods');\n paymentMethodsField.updateValueAndValidity();\n });\n }\n\n private loadFormValues(listingProfile: ListingProfile): void {\n if (!listingProfile.legacyProductDetails) {\n listingProfile.legacyProductDetails = createDefaultLegacyProductDetails();\n }\n\n const commonBusinessNames = listingProfile.legacyProductDetails.commonName || [''];\n this.setControlsForFormArray(\n this.basicInfoForm.get('commonBusinessNames') as FormArray,\n commonBusinessNames.length,\n );\n const ids = listingProfile.externalIdentifiers?.vCategoryIds || [];\n const primaryCategory = ids.length > 0 ? [ids[0]] : [];\n const businessCategories = ids.length > 0 ? ids.slice(1) : [];\n\n this.basicInfoForm.patchValue({\n businessName: listingProfile.napData.companyName,\n commonBusinessNames: commonBusinessNames,\n country: listingProfile.napData.country,\n website: listingProfile.napData.website,\n email: listingProfile.richData.email,\n businessCategories: businessCategories,\n primaryBusinessCategory: primaryCategory,\n });\n\n this.setControlsForFormArray(\n this.serviceAreaForm.get('places') as FormArray,\n listingProfile.napData.serviceArea?.places?.length || 0,\n );\n\n this.serviceAreaToggle.patchValue(listingProfile.napData.serviceAreaBusiness);\n this.serviceAreaToggle.markAsPristine();\n\n this.serviceAreaForm.setValue({\n businessType: listingProfile.napData.serviceArea?.businessType || 0,\n places: listingProfile.napData.serviceArea?.places || [],\n });\n if (!listingProfile.napData.serviceArea) {\n this.serviceAreaForm.disable();\n }\n\n this.addressData = {\n company: listingProfile.napData.companyName,\n address1: listingProfile.napData.address,\n address2: listingProfile.napData.address2,\n city: listingProfile.napData.city,\n country: listingProfile.napData.country,\n province: listingProfile.napData.state,\n zip: listingProfile.napData.zip,\n };\n this.geoControl.setValue(listingProfile.napData.location);\n let workNumbers: string[] = listingProfile.napData.workNumber || [''];\n workNumbers = workNumbers.map((number) =>\n this.formatPhoneNumber.transformForBusinessProfile(number, listingProfile.napData.country),\n );\n const callTrackingNumbers = listingProfile.napData.callTrackingNumber || [''];\n\n this.setControlsForFormArray(\n this.phoneForm.get('workNumbers') as FormArray,\n workNumbers.length,\n this.phoneNumberItemFactory.bind(this),\n );\n this.setControlsForFormArray(this.phoneForm.get('callTrackingNumbers') as FormArray, callTrackingNumbers.length);\n this.phoneForm.patchValue({\n workNumbers: workNumbers,\n faxNumber: listingProfile.richData.faxNumber,\n cellNumber: this.formatPhoneNumber.transformForBusinessProfile(\n listingProfile.richData.cellNumber || '',\n listingProfile.napData.country,\n ),\n callTrackingNumbers: callTrackingNumbers,\n tollFreeNumber: listingProfile.richData.tollFreeNumber,\n });\n\n const servicesOffered = listingProfile.richData.servicesOffered || [''];\n const brandsCarried = listingProfile.richData.brandsCarried || [''];\n\n this.setControlsForFormArray(this.additionalInfoForm.get('servicesOffered') as FormArray, servicesOffered.length);\n this.setControlsForFormArray(this.additionalInfoForm.get('brandsCarried') as FormArray, brandsCarried.length);\n this.additionalInfoForm.patchValue({\n paymentMethods: listingProfile.richData.paymentMethods,\n servicesOffered: servicesOffered,\n brandsCarried: brandsCarried,\n landmark: listingProfile.richData.landmark,\n bookingUrl: listingProfile.richData.bookingUrl,\n });\n\n if (!!listingProfile.richData.conditionalFields && listingProfile.richData.conditionalFields?.length > 0) {\n const richDataCf = listingProfile.richData.conditionalFields;\n const valuesToPatch = {};\n richDataCf.forEach((cf) => {\n valuesToPatch[cf.id] = cf.value;\n this.visibleConditionalFields.push(cf.id);\n });\n\n this.additionalInfoForm.patchValue(valuesToPatch);\n }\n\n this.hoursForm.setValue(listingProfile.hoursOfOperation.hoursOfOperation || []);\n\n const generalHours = listingProfile.businessHours?.find((hours) => hours.hoursTypeId === 'GENERAL');\n const mergedHours = MergeHours(generalHours?.regularHours || []);\n\n this.businessHoursForm.setValue(mergedHours);\n this.specialHoursForm.setValue(generalHours?.specialHours || []);\n\n listingProfile.businessHours\n ?.filter((hours) => hours.hoursTypeId !== 'GENERAL')\n .forEach((hours) => {\n this.moreHoursForm.addControl(\n hours.hoursTypeId,\n this.fb.control(this.formStateWithDisabled(hours.regularHours || [])),\n );\n });\n\n if (listingProfile.socialUrls) {\n this.businessPagesForm.patchValue({\n facebookUrl: listingProfile.socialUrls.facebookUrl,\n foursquareUrl: listingProfile.socialUrls.foursquareUrl,\n linkedInUrl: listingProfile.socialUrls.linkedinUrl,\n twitterUrl: listingProfile.socialUrls.twitterUrl,\n pinterestUrl: listingProfile.socialUrls.pinterestUrl,\n instagramUrl: listingProfile.socialUrls.instagramUrl,\n youTubeUrl: listingProfile.socialUrls.youtubeUrl,\n });\n this.blogForm.patchValue({\n blogOrRssFeedUrl: listingProfile.socialUrls.rssUrl,\n });\n }\n\n const partnerId = listingProfile.externalIdentifiers.partnerId;\n if (partnerId in this.partnersLongDescriptionLength) {\n this.longDescriptionLength = this.partnersLongDescriptionLength[partnerId];\n }\n this.businessDescriptionsForm.controls.longDescription.setValidators(\n Validators.maxLength(this.longDescriptionLength),\n );\n\n this.businessDescriptionsForm.patchValue({\n shortDescription: listingProfile.richData.shortDescription,\n longDescription: listingProfile.richData.description,\n });\n\n if (listingProfile.richData?.serviceAvailability) {\n this.serviceAvailabilityForm.patchValue({\n ecommerceOnly: listingProfile.richData?.serviceAvailability?.ecommerceOnly || null,\n closedStatus: listingProfile.richData?.serviceAvailability?.closedStatus || null,\n reopeningDate: listingProfile.richData?.serviceAvailability?.reopeningDate || null,\n });\n }\n\n if (listingProfile.richData.healthCareProfessionalInformation) {\n this.personalInformationForm.patchValue({\n standardizedTitle: listingProfile.richData?.healthCareProfessionalInformation?.standardizedTitle || '',\n firstName: listingProfile.richData?.healthCareProfessionalInformation?.firstName || '',\n middleInitials: listingProfile.richData?.healthCareProfessionalInformation?.initials || '',\n lastName: listingProfile.richData?.healthCareProfessionalInformation?.lastName || '',\n professionalCredentials: listingProfile.richData?.healthCareProfessionalInformation?.professionalCredential || [\n '',\n ],\n gender:\n listingProfile.richData?.healthCareProfessionalInformation?.gender ||\n HealthCareProfessionalInformationGender.NotSpecified,\n emailAddress: listingProfile.richData?.healthCareProfessionalInformation?.email || '',\n });\n\n const educations = listingProfile.richData?.healthCareProfessionalInformation?.school || [''];\n const specialties = listingProfile.richData?.healthCareProfessionalInformation?.specialty || [''];\n const residencies = listingProfile.richData?.healthCareProfessionalInformation?.residency || [''];\n const fellowships = listingProfile.richData?.healthCareProfessionalInformation?.fellowship || [''];\n\n this.setControlsForFormArray(\n this.qualificationsAndExperienceForm.get('educations') as FormArray,\n educations.length,\n );\n this.setControlsForFormArray(\n this.qualificationsAndExperienceForm.get('specialties') as FormArray,\n specialties.length,\n );\n this.setControlsForFormArray(\n this.qualificationsAndExperienceForm.get('residencies') as FormArray,\n residencies.length,\n );\n this.setControlsForFormArray(\n this.qualificationsAndExperienceForm.get('fellowships') as FormArray,\n fellowships.length,\n );\n this.setControlsForFormArray(\n this.practiceInformationForm.get('hospitalAffiliations') as FormArray,\n listingProfile.richData?.healthCareProfessionalInformation?.hospitalAffiliations?.length,\n );\n this.setControlsForFormArray(\n this.qualificationsAndExperienceForm.get('doctorDotComCategories') as FormArray,\n listingProfile.richData?.healthCareProfessionalInformation?.doctorDotComCategories?.length,\n );\n\n this.qualificationsAndExperienceForm.patchValue({\n educations: educations,\n specialties: specialties,\n residencies: residencies,\n fellowships: fellowships,\n nationalProviderIdentifier:\n listingProfile.richData?.healthCareProfessionalInformation?.nationalProviderIdentifier || '',\n medicalLicenseNumber: listingProfile.richData?.healthCareProfessionalInformation?.medicalLicenseNumber || '',\n stateLicense: listingProfile.richData?.healthCareProfessionalInformation?.stateLicense || '',\n doctorDotComCategories:\n listingProfile.richData?.healthCareProfessionalInformation?.doctorDotComCategories || [],\n });\n const insurancesAccepted = listingProfile.richData?.healthCareProfessionalInformation?.insurancesAccepted || [''];\n this.setControlsForFormArray(\n this.additionalProfessionalInfoForm.get('insurancesAccepted') as FormArray,\n insurancesAccepted.length,\n );\n this.additionalProfessionalInfoForm.patchValue({\n acceptingPatients: listingProfile.richData?.healthCareProfessionalInformation?.isTakingPatients,\n insurancesAccepted: insurancesAccepted,\n });\n this.practiceInformationForm.patchValue({\n firmClinicOfficeName: listingProfile.richData?.healthCareProfessionalInformation?.office || '',\n isProvider:\n listingProfile.richData?.healthCareProfessionalInformation?.isProvider ||\n HealthCareProfessionalInformationIsProvider.IsProviderNotSpecified,\n hospitalAffiliations: listingProfile.richData?.healthCareProfessionalInformation?.hospitalAffiliations || [''],\n });\n }\n if (this.isTabEnabled(BusinessProfileTab.Administration)) {\n this.salesForm.patchValue({\n market: listingProfile.externalIdentifiers.marketId,\n salespersonId: listingProfile.externalIdentifiers.salesPersonId,\n additionalSalespersonIds: listingProfile.externalIdentifiers.additionalSalesPersonIds,\n });\n if (\n listingProfile.externalIdentifiers.additionalSalesPersonIds &&\n listingProfile.externalIdentifiers.additionalSalesPersonIds.length > 0\n ) {\n this.isAdditionalSalespeopleInputVisible = true;\n }\n this.adminForm.patchValue({\n customerIdentifier: listingProfile.externalIdentifiers.customerIdentifier,\n tags: listingProfile.externalIdentifiers.tags,\n notes: listingProfile.legacyProductDetails.adminNotes,\n });\n }\n\n this.profileLoading$$.next(false);\n }\n\n getGoogleCheckboxValues(formGroup: FormGroup, metaAttribute: GoogleAttributeMetaDataInterface): string[] {\n const values: string[] = [];\n\n Object.keys(formGroup.controls).forEach((key) => {\n if (formGroup.controls[key].getRawValue() === true) {\n const indexOfKeyInValueDisplayName = metaAttribute?.valueDisplayNames.findIndex((d) => d === key);\n values.push(metaAttribute?.values[indexOfKeyInValueDisplayName]);\n }\n });\n\n return values;\n }\n\n getBingCheckboxValues(formGroup: FormGroup, metaAttribute: BingAttributeMetaDataInterface): string[] {\n const values: string[] = [];\n\n Object.keys(formGroup.controls).forEach((key) => {\n if (formGroup.controls[key].getRawValue() === true) {\n const indexOfKeyInValueDisplayName = metaAttribute?.valueDisplayNames.findIndex((d) => d === key);\n values.push(metaAttribute?.values[indexOfKeyInValueDisplayName]);\n }\n });\n\n return values;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n getDoctorDotComCategories(accountGroup: ListingProfile) {\n return this.listingProductsApiService.getDoctorDotComCategories(new GetDoctorDotComCategoriesRequest({}));\n }\n\n getValidCategoryLength(): number {\n return (\n this.accountGroupForm?.get('basicInfoForm.primaryBusinessCategory')?.value?.filter((c) => c !== 'not_found')\n ?.length || 0\n );\n }\n\n getBingAttributesToSubmit(\n duHastMe: FormGroup,\n bingAttributeMetaData: BingAttributeMetaDataInterface[],\n ): BingAttribute[] {\n if (!bingAttributeMetaData) {\n bingAttributeMetaData = [];\n }\n const attribs: BingAttribute[] = [];\n\n bingAttributeMetaData.sort((a, b) => a.displayName.localeCompare(b.displayName));\n const sortOrder = bingAttributeMetaData.map((md) => md.parent);\n\n Object.keys(duHastMe.controls).forEach((key) => {\n let value = duHastMe.controls[key].value;\n const metaAttribute = bingAttributeMetaData[bingAttributeMetaData.findIndex((d) => d.parent === key)];\n\n switch (metaAttribute.valueType) {\n case AttributesValueType.REPEATED_ENUM: {\n const form = duHastMe.controls[key] as FormGroup;\n value = this.getGoogleCheckboxValues(form, metaAttribute);\n break;\n }\n case AttributesValueType.ENUM: {\n const ctrl = duHastMe.controls[key] as FormControl;\n value = metaAttribute?.values[metaAttribute.valueDisplayNames.findIndex((v) => v === ctrl.value)];\n break;\n }\n }\n\n const ba: BingAttribute = {\n name: key,\n value: value,\n toApiJson: () => ({}) as object,\n };\n attribs.push(ba);\n });\n\n const sortedAttribs = sortOrder.map((i) => attribs.find((j) => j.name === i)).filter(Boolean);\n\n return sortedAttribs;\n }\n\n isConditionalFieldVisible(cfId: string): boolean {\n return this.visibleConditionalFields.includes(cfId);\n }\n\n getGoogleAttributesToSubmit(\n duHastMe: FormGroup,\n googleAttributeMetaData: GoogleAttributeMetaDataInterface[],\n ): GoogleAttribute[] {\n if (!googleAttributeMetaData) {\n googleAttributeMetaData = [];\n }\n const attribs: GoogleAttribute[] = [];\n\n googleAttributeMetaData.sort((a, b) => a.displayName.localeCompare(b.displayName));\n const sortOrder = googleAttributeMetaData.map((md) => md.parent);\n\n Object.keys(duHastMe.controls).forEach((key) => {\n let value = duHastMe.controls[key].value;\n const metaAttribute = googleAttributeMetaData[googleAttributeMetaData.findIndex((d) => d.parent === key)];\n\n switch (metaAttribute.valueType) {\n case AttributesValueType.REPEATED_ENUM: {\n const form = duHastMe.controls[key] as FormGroup;\n value = this.getGoogleCheckboxValues(form, metaAttribute);\n break;\n }\n case AttributesValueType.ENUM: {\n const ctrl = duHastMe.controls[key] as FormControl;\n value = metaAttribute?.values[metaAttribute.valueDisplayNames.findIndex((v) => v === ctrl.value)];\n break;\n }\n default:\n }\n\n const ga: GoogleAttribute = {\n name: key,\n value: value,\n toApiJson: () => ({}) as object,\n };\n attribs.push(ga);\n });\n\n const sortedAttribs = sortOrder.map((i) => attribs.find((j) => j.name === i)).filter(Boolean);\n\n return sortedAttribs;\n }\n\n compareDoctorDotComCategories(category1: DoctorDotComCategory, category2: DoctorDotComCategory): boolean {\n return category1 && category2 ? category1.id === category2.id : category1 === category2;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n async onSubmit(arg): Promise {\n if (this.accountGroupForm.pristine && !this.addressFormDirty && this.auxiliaryDataTable?.formGroup.pristine) {\n this.snackbar.open(this.translateService.instant('FRONTEND.BUSINESSES.NO_CHANGES_TO_SAVE'), null, {\n duration: 3000,\n });\n return;\n }\n\n if (!this.accountGroupForm.valid || this.editDisabled) {\n this.activeTab = this.getFirstInvalidTab();\n this.snackbar.open(this.translateService.instant('FRONTEND.BUSINESSES.INVALID_SUBMISSION'), null, {\n duration: 3000,\n });\n return;\n }\n const accountGroup: any = {};\n Object.keys(this.accountGroupForm.controls).forEach((controlKey) => {\n const c = this.accountGroupForm.controls[controlKey];\n accountGroup[controlKey] = getChangedValues(c);\n });\n this.trackChangedForms(accountGroup);\n\n const operations = new UpdateOperations();\n\n const googleAttributeMetaData = this.googleAttributesMetadata();\n operations.addUpdateOperation(\n new GoogleAttributesUpdateOperation({\n googleAttribute: this.getGoogleAttributesToSubmit(this.googleAttributesForm, googleAttributeMetaData),\n }),\n );\n\n const bingAttributeMetaData = this.bingAttributesMetadata();\n operations.addUpdateOperation(\n new BingAttributesUpdateOperation({\n bingAttribute: this.getBingAttributesToSubmit(this.bingAttributesForm, bingAttributeMetaData),\n }),\n );\n\n const phones = accountGroup.phoneForm || {};\n const basicInfo = accountGroup.basicInfoForm || {};\n const address = accountGroup.basicInfoForm?.addressForm;\n\n if (\n basicInfo ||\n address ||\n accountGroup.serviceAreaToggle !== undefined ||\n accountGroup.serviceAreaForm ||\n accountGroup.timeZoneControl ||\n phones\n ) {\n operations.addUpdateOperation(\n new NapUpdateOperation({\n companyName: basicInfo.businessName,\n address: address?.address1,\n address2: address?.address2,\n city: address?.city,\n state: address?.province?.code || undefined,\n zip: address?.zip,\n country: address?.country?.code,\n serviceAreaBusiness: accountGroup.serviceAreaToggle,\n serviceArea: accountGroup.serviceAreaForm ? new ServiceArea(accountGroup.serviceAreaForm) : undefined,\n website: basicInfo.website,\n workNumber: phones.workNumbers,\n callTrackingNumber: phones.callTrackingNumbers,\n location: accountGroup.geoControl ? new Geo(accountGroup.geoControl) : undefined,\n timezone: accountGroup.timeZoneControl ? this.listingProfile().napData.timezone : undefined,\n }),\n );\n }\n\n const businessDescriptions = accountGroup.businessDescriptionsForm || {};\n\n const businessPages = accountGroup.businessPagesForm || {};\n const blog = accountGroup.blogForm || {};\n operations.addUpdateOperation(\n new SocialURLsUpdateOperation({\n linkedinUrl: businessPages.linkedInUrl,\n foursquareUrl: businessPages.foursquareUrl,\n twitterUrl: businessPages.twitterUrl,\n facebookUrl: businessPages.facebookUrl,\n rssUrl: blog.blogOrRssFeedUrl,\n youtubeUrl: businessPages.youTubeUrl,\n instagramUrl: businessPages.instagramUrl,\n pinterestUrl: businessPages.pinterestUrl,\n }),\n );\n\n // Healthcare data is a bit different -- if any of the fields changed we need to send everything due to\n // current field mask limitations\n let healthCareProfessionalInfo;\n const healthCareHasChanges =\n accountGroup.practiceInformationForm ||\n accountGroup.additionalProfessionalInfoForm ||\n accountGroup.qualificationsAndExperienceForm ||\n accountGroup.personalInformationForm;\n if (this.hasProfessionalCategory && healthCareHasChanges) {\n const practiceInformation = this.practiceInformationForm.value;\n const additionalProfessionalInfo = this.additionalProfessionalInfoForm.value;\n const qualificationsAndExperience = this.qualificationsAndExperienceForm.value;\n const personalInformation = this.personalInformationForm.value;\n healthCareProfessionalInfo = new HealthCareProfessionalInformation({\n email: personalInformation.emailAddress,\n fellowship: qualificationsAndExperience.fellowships.filter((v: any) => !!v),\n firstName: personalInformation.firstName,\n gender: personalInformation.gender,\n initials: personalInformation.middleInitials,\n insurancesAccepted: additionalProfessionalInfo.insurancesAccepted,\n isTakingPatients: additionalProfessionalInfo.acceptingPatients,\n lastName: personalInformation.lastName,\n medicalLicenseNumber: qualificationsAndExperience.medicalLicenseNumber,\n nationalProviderIdentifier: qualificationsAndExperience.nationalProviderIdentifier,\n office: practiceInformation.firmClinicOfficeName,\n professionalCredential: personalInformation.professionalCredentials,\n residency: qualificationsAndExperience.residencies.filter((v: any) => !!v),\n school: qualificationsAndExperience.educations.filter((v: any) => !!v),\n specialty: qualificationsAndExperience.specialties.filter((v: any) => !!v),\n standardizedTitle: personalInformation.standardizedTitle,\n stateLicense: qualificationsAndExperience.stateLicense,\n doctorDotComCategories: qualificationsAndExperience.doctorDotComCategories.filter((v: any) => !!v),\n hospitalAffiliations: practiceInformation.hospitalAffiliations.filter((v: string | null | undefined) => !!v),\n isProvider: practiceInformation.isProvider,\n });\n } else if (!this.hasProfessionalCategory && (basicInfo.businessCategories || basicInfo.primaryBusinessCategory)) {\n // Categories changed and doesnt have professional category\n healthCareProfessionalInfo = new HealthCareProfessionalInformation({});\n }\n\n const serviceAvailabilityChanges = this.serviceAvailabilityForm.value || {};\n\n const serviceAvailabilityInfo = new ServiceAvailability({\n ecommerceOnly: serviceAvailabilityChanges.ecommerceOnly,\n closedStatus: serviceAvailabilityChanges.closedStatus,\n reopeningDate: serviceAvailabilityChanges.reopeningDate,\n });\n\n if (\n serviceAvailabilityChanges.closedStatus !== undefined &&\n this.closedStatuses.includes(serviceAvailabilityChanges.closedStatus)\n ) {\n serviceAvailabilityInfo.closedStatusDate = new Date();\n } else {\n serviceAvailabilityInfo.closedStatusDate = null;\n serviceAvailabilityInfo.reopeningDate = null;\n }\n\n const additionalInfo = accountGroup.additionalInfoForm || {};\n\n const richDataUpdateOperations = new RichData({\n tollFreeNumber: phones.tollFreeNumber,\n cellNumber: phones.cellNumber,\n faxNumber: phones.faxNumber,\n email: basicInfo.email,\n description: businessDescriptions.longDescription,\n shortDescription: businessDescriptions.shortDescription,\n servicesOffered: additionalInfo.servicesOffered,\n brandsCarried: additionalInfo.brandsCarried,\n landmark: additionalInfo.landmark,\n paymentMethods: additionalInfo.paymentMethods,\n serviceAvailability: serviceAvailabilityInfo,\n healthCareProfessionalInformation: healthCareProfessionalInfo,\n bookingUrl: additionalInfo.bookingUrl,\n });\n\n // only fetch values from visible conditional Fields\n if (this.visibleConditionalFields.length > 0) {\n const cfValues = [];\n this.visibleConditionalFields.forEach((field) => {\n const value = additionalInfo[field];\n if (value != undefined) {\n cfValues.push({\n id: field,\n value: value,\n });\n }\n });\n if (cfValues.length > 0) {\n richDataUpdateOperations.conditionalFields = cfValues;\n }\n }\n\n operations.addUpdateOperation(new RichDataUpdateOperation(richDataUpdateOperations));\n\n const externalIdentifiersUpdateOperation = new ExternalIdentifiersUpdateOperation({\n partnerId: this.listingProfile()?.externalIdentifiers.partnerId,\n updateOrigin: 'business-profile',\n });\n\n if (\n typeof basicInfo.businessCategories !== 'undefined' ||\n typeof basicInfo.primaryBusinessCategory !== 'undefined'\n ) {\n const primary = this.accountGroupForm.get('basicInfoForm.primaryBusinessCategory').value;\n const additional = this.accountGroupForm.get('basicInfoForm.businessCategories').value;\n externalIdentifiersUpdateOperation.vCategoryIds = Array.from(new Set([...primary, ...additional])).filter(\n (id) => !!id,\n );\n }\n\n if (this.isTabEnabled(BusinessProfileTab.Administration)) {\n if (accountGroup.adminForm) {\n externalIdentifiersUpdateOperation.tags = accountGroup.adminForm.tags;\n externalIdentifiersUpdateOperation.customerIdentifier = accountGroup.adminForm.customerIdentifier;\n }\n if (accountGroup.salesForm) {\n externalIdentifiersUpdateOperation.marketId = accountGroup.salesForm.market;\n externalIdentifiersUpdateOperation.salesPersonId = accountGroup.salesForm.salespersonId;\n externalIdentifiersUpdateOperation.additionalSalesPersonIds = accountGroup.salesForm.additionalSalespersonIds;\n }\n }\n operations.addUpdateOperation(externalIdentifiersUpdateOperation);\n\n if (\n (this.isTabEnabled(BusinessProfileTab.Administration) && accountGroup?.adminForm?.notes !== undefined) ||\n basicInfo.commonBusinessNames !== undefined\n ) {\n operations.addUpdateOperation(\n new LegacyProductDetailsUpdateOperation({\n adminNotes: accountGroup?.adminForm?.notes,\n commonName: basicInfo?.commonBusinessNames,\n }),\n );\n }\n\n this.doUpdate({ operations: operations }).pipe(takeUntilDestroyed(this.destroyRef)).subscribe();\n return;\n }\n\n getFirstInvalidTab(): BusinessProfileTab {\n const tabKeys = Object.keys(BusinessProfileTab);\n for (let i = 0; i < tabKeys.length; i++) {\n if (this.tabInvalid(BusinessProfileTab[tabKeys[i]])) {\n return BusinessProfileTab[tabKeys[i]];\n }\n }\n }\n\n onBusinessHoursChange(): void {\n if (this.businessHoursForm.pristine && this.specialHoursForm.pristine) {\n this.snackbar.open(this.translateService.instant('FRONTEND.BUSINESSES.NO_CHANGES_TO_SAVE'), null, {\n duration: 3000,\n });\n return;\n }\n if (!this.businessHoursForm.valid || !this.specialHoursForm.valid || this.editDisabled) {\n this.snackbar.open(this.translateService.instant('FRONTEND.BUSINESSES.INVALID_SUBMISSION'), null, {\n duration: 3000,\n });\n return;\n }\n\n const operations: UpdateOperations = new UpdateOperations();\n\n const sh = SplitHours(this.businessHoursForm.value || []);\n\n const businessHours = new BusinessHours({\n hoursTypeId: 'GENERAL',\n regularHours: sh,\n specialHours: this.specialHoursForm.value || [],\n });\n\n operations.addUpdateOperation(new BusinessHoursUpdateOperation(businessHours));\n this.doUpdate({ operations: operations, onlyBusinessHoursSave: true })\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe();\n }\n\n onMoreHoursChange(): void {\n if (this.moreHoursForm.pristine) {\n this.snackbar.open(this.translateService.instant('FRONTEND.BUSINESSES.NO_CHANGES_TO_SAVE'), null, {\n duration: 3000,\n });\n return;\n }\n if (!this.moreHoursForm.valid || this.editDisabled) {\n this.snackbar.open(this.translateService.instant('FRONTEND.BUSINESSES.INVALID_SUBMISSION'), null, {\n duration: 3000,\n });\n return;\n }\n\n const operations: UpdateOperations = new UpdateOperations();\n Object.keys(this.moreHoursForm.controls).forEach((key) => {\n const values = getChangedValues(this.moreHoursForm.controls[key]);\n if (values) {\n operations.addUpdateOperation(\n new BusinessHoursUpdateOperation(\n new BusinessHours({\n hoursTypeId: key,\n regularHours: values || [],\n }),\n ),\n );\n }\n });\n\n this.doUpdate({ operations: operations, onlyBusinessHoursSave: true })\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe();\n }\n\n private doUpdate(updateParams: FormUpdateParameters): Observable {\n return this.listingProfileService.bulkUpdate(this.accountGroupId(), updateParams.operations).pipe(\n // TODO: Use injectable alert service?\n catchError((err) => {\n const snackBarRef = this.snackbar.open(err.message, err.retryable ? 'retry' : null, { duration: 3000 });\n snackBarRef\n .onAction()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.doUpdate(updateParams));\n return EMPTY;\n }),\n switchMap(() => this.auxiliaryDataTable?.saveChanges() || of(false)),\n catchError(() => {\n const snackBarRef = this.snackbar.open(\n this.translateService.instant('FRONTEND.BUSINESSES.ACCOUNT_ATTRIBUTES_ERROR'),\n this.translateService.instant('FRONTEND.BUSINESSES.ACCOUNT_ATTRIBUTES_DISMISS'),\n { duration: 3000 },\n );\n this.productAnalyticsService.trackEvent(\n 'CustomFields:edit-custom-field-data-fail',\n 'CustomFields',\n 'edit-custom-field-data-fail',\n );\n snackBarRef.onAction().subscribe(() => snackBarRef.dismiss());\n return snackBarRef.afterDismissed().pipe(map(() => null));\n }),\n tap((auxiliaryDataSaved) => {\n if (updateParams.onlyBusinessHoursSave) {\n this.snackbar.open(this.translateService.instant('FRONTEND.BUSINESSES.BUSINESS_HOURS_SAVED'), null, {\n duration: 3000,\n });\n } else if (updateParams.onlyHoursSave) {\n this.snackbar.open(this.translateService.instant('FRONTEND.BUSINESSES.HOURS_OF_OPERATION_SAVED'), null, {\n duration: 3000,\n });\n } else {\n this.markFormsPristine();\n if (auxiliaryDataSaved) {\n const accountSaved = this.translateService.instant('FRONTEND.BUSINESSES.ACCOUNT_WAS_SAVED');\n const customFieldsSaved = this.translateService.instant('FRONTEND.BUSINESSES.CUSTOM_FIELDS_SAVED');\n this.snackbar.open(`${accountSaved}. ${customFieldsSaved}.`, null, {\n duration: 3000,\n });\n this.productAnalyticsService.trackEvent(\n 'CustomFields:edit-custom-field-data-success',\n 'CustomFields',\n 'edit-custom-field-data-success',\n );\n } else {\n this.snackbar.open(this.translateService.instant('FRONTEND.BUSINESSES.ACCOUNT_WAS_SAVED'), null, {\n duration: 3000,\n });\n }\n }\n }),\n tap(() => {\n this.saved.emit();\n }),\n );\n }\n\n ngOnInit(): void {\n this.activeTab = BusinessProfileTab.Primary;\n this.createForm();\n if (this.isTabEnabled(BusinessProfileTab.Administration)) {\n this.watchMarketForSalespeople();\n }\n\n this.availableDoctorDotComCategories = this.listingProfile$.pipe(\n switchMap((accountGroup) =>\n this.getDoctorDotComCategories(accountGroup).pipe(\n map((categories) => {\n const allCategories = categories.categories;\n if (accountGroup.richData?.healthCareProfessionalInformation?.doctorDotComCategories?.length > 0) {\n this.currentDoctorDotComCategories =\n accountGroup.richData.healthCareProfessionalInformation.doctorDotComCategories;\n }\n return allCategories;\n }),\n catchError((error) => {\n console.error('Error fetching doctor.com categories:', error);\n return of(null);\n }),\n ),\n ),\n );\n\n this.AISuggestionFeature$ = this.listingProfile$.pipe(\n map((accountGroup) => accountGroup?.externalIdentifiers?.partnerId),\n distinctUntilChanged(),\n switchMap((partnerId) => this.featureFlagService.checkFeatureFlag(partnerId, '', 'lb_ai_suggestions')),\n shareReplay(1),\n );\n\n this.listingProfile$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((listingProfile) => {\n this.loadFormValues(listingProfile);\n this.mapZoomLevel = this.getMapZoomLevel();\n if (!listingProfile.napData.location) {\n this.inferMapBounds();\n }\n this.timezoneControl.setValue(buildTimezoneDisplay(listingProfile?.napData?.timezone));\n return listingProfile;\n });\n\n const bomTranslateString = 'FRONTEND.BUSINESSES.BUSINESS_OPERATION_METHODS.';\n const bomTranslateKeys = Object.keys(ClosedStatus).filter((k) => isNaN(Number(k)));\n this.businessOperationMethods$ = combineLatest([\n this.translateService.stream(bomTranslateKeys.map((key) => bomTranslateString + key)),\n this.serviceAvailabilityForm.get('closedStatus').valueChanges.pipe(startWith(0)),\n ]).pipe(\n map(([translations]) => {\n const businessOperationMethods = BusinessOperationMethods.slice();\n return businessOperationMethods.map((method) => {\n return {\n code: method,\n name: translations[bomTranslateString + ClosedStatus[method]],\n };\n });\n }),\n );\n\n const ecommerceValueChanges$ = this.serviceAvailabilityForm.get('ecommerceOnly').valueChanges.pipe(startWith(0));\n this.ecommerceOnly$ = ecommerceValueChanges$.pipe(switchMap(() => this.availabilityOptions()));\n\n const paymentMethodKeys = Object.keys(RichDataPaymentMethods).filter((k) => isNaN(Number(k)));\n const paymentMethodsString = 'FRONTEND.BUSINESSES.PAYMENT_METHODS';\n this.paymentMethods$ = combineLatest([\n this.countryChanges,\n this.translateService.stream(paymentMethodKeys.map((key) => `${paymentMethodsString}.${key}`)),\n this.additionalInfoForm.get('paymentMethods').valueChanges.pipe(startWith([])),\n ]).pipe(\n map(([countryCode, paymentMethodsTranslations, valueChanges]) =>\n this.setPaymentMethods(countryCode, paymentMethodsTranslations, valueChanges),\n ),\n );\n\n const genderTranslateString = 'FRONTEND.BUSINESSES.GENDERS.';\n const genderTranslateKeys = Object.keys(GenderKeys).filter((k) => isNaN(Number(k)));\n this.genders$ = this.translateService.stream(genderTranslateKeys.map((key) => genderTranslateString + key)).pipe(\n map((genders) => {\n const selections = GenderSelection.slice();\n return selections.map((selection) => {\n return {\n code: selection,\n name: genders[`${genderTranslateString}${GenderKeys[selection]}`],\n };\n });\n }),\n );\n\n const isProviderTranslateString = 'FRONTEND.BUSINESSES.IS_PROVIDER_ENUM.';\n const isProviderTranslateKeys = Object.keys(HealthCareProfessionalInformationIsProvider).filter((k) =>\n isNaN(Number(k)),\n );\n this.isProviderOptions$ = this.translateService\n .stream(isProviderTranslateKeys.map((key) => isProviderTranslateString + key))\n .pipe(\n map((options) => {\n const selections = Object.keys(isProviderOptions).slice();\n return selections.map((selection) => {\n return {\n code: parseInt(selection),\n name: options[`${isProviderTranslateString}${isProviderOptions[selection]}`],\n };\n });\n }),\n );\n\n this.standardizedTitles$ = this.translateService.stream(getAllStandardizedTitles()).pipe(\n map((standardizedTitles) => {\n return [\n { code: null, name: null },\n ...Object.keys(standardizedTitles).map((key) => {\n return { code: key, name: standardizedTitles[key] };\n }),\n ];\n }),\n );\n }\n\n private async availabilityOptions(): Promise {\n const availabilities = SellingMethodsAvailability.slice();\n const availabilityTranslateKeys = Object.keys(IsAvailable).filter((k) => isNaN(Number(k)));\n const availabilityTranslateStrings = 'FRONTEND.BUSINESSES.SELLING_METHODS_AVAILABILITY';\n const availabilityStrings = availabilityTranslateKeys.map((key) => `${availabilityTranslateStrings}.${key}`);\n\n const translation = this.translateService.instant(availabilityStrings);\n\n return availabilities.map((method) => {\n return {\n code: method,\n name: translation[`${availabilityTranslateStrings}.${IsAvailable[method]}`],\n };\n });\n }\n\n isTabEnabled(tab: BusinessProfileTab): boolean {\n return this.enabledTabs.includes(tab);\n }\n\n isValidArray(array: any): any {\n return array === null || array === undefined || array.length === 0 ? false : array;\n }\n\n handleCategoriesChange(categories: CategoryInterface[]): void {\n this.hasProfessionalCategory = categories?.some((category) => isHealthCategory(category));\n }\n\n showAdditionalSalespeopleInput(): void {\n this.isAdditionalSalespeopleInputVisible = true;\n }\n\n getPrimarySalespersonInAdditionalSalespeopleErrorMsg(): string {\n const errors: { [key: string]: any } = this.salesForm.get('additionalSalespersonIds').errors;\n return this.translateService.instant('FRONTEND.BUSINESSES.ALREADY_THE_PRIMARY_SALESPERSON', {\n name: errors.primaryName,\n });\n }\n\n private watchMarketForSalespeople(): void {\n this.salesForm.get('market').valueChanges.forEach((marketId) => {\n if (this.listingProfile()) {\n const partnerId = this.listingProfile().externalIdentifiers.partnerId;\n const req: ListSalespersonsRequestListSalespersonsFiltersInterface = {\n partnerId: partnerId,\n marketId: marketId,\n };\n this.salespersonService\n .listSalespersons(req, '', 500)\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((result) => {\n this.salespeople = result.results.map((sp) => convertFromSales(partnerId, marketId, sp));\n this.additionalSalespeople = this.salespeople.map((sp) => ({ name: sp.fullName, value: sp.salespersonId }));\n }),\n this.salesForm.patchValue({ salespersonId: '' });\n this.salesForm.patchValue({ additionalSalespersonIds: [] });\n }\n });\n }\n\n private formStateWithDisabled(value?: T): object {\n return { value: value, disabled: this.editDisabled };\n }\n\n private setControlsForFormArray(formArray: FormArray, length: number, controlFactory?: ItemFactory): void {\n // Wrapping helper to provided default control to reduce duplication\n const defaultControlFactory = () => this.fb.control(this.formStateWithDisabled(''));\n fixControlsForFormArray(formArray, controlFactory || defaultControlFactory, length);\n }\n\n getCountryCode(): string {\n return this.basicInfoForm.get('country').value || 'US';\n }\n\n private getMapZoomLevel(): number {\n let zoom = 6;\n if (this.listingProfile().napData.state) {\n zoom = 7;\n }\n if (this.listingProfile().napData.city) {\n zoom = 13;\n }\n if (this.listingProfile().napData.address || this.listingProfile().napData.zip || this.geoControl.value) {\n zoom = 15;\n }\n return zoom;\n }\n\n get maxCompetitorsFields(): number {\n return this.maxCompetitors || 3;\n }\n\n get maxShareOfVoiceKeywordsFields(): number {\n return this.maxShareOfVoiceKeywords || 3;\n }\n\n // inferMapBounds uses the NAP data to infer the boundaries to use for the geolocation control\n private inferMapBounds(): void {\n this.mapsLoaded$.pipe(\n map((didLoad) => {\n if (didLoad) {\n const fullAddress = [\n this.listingProfile().napData.address || '',\n this.listingProfile().napData.city || '',\n this.listingProfile().napData.state || '',\n this.listingProfile().napData.zip || '',\n this.listingProfile().napData.country || '',\n ].join(',');\n\n this.geocoder.geocode({ address: fullAddress }).pipe(\n map((result: MapGeocoderResponse) => {\n if (result.status === google.maps.GeocoderStatus.OK && result.results.length > 0) {\n const viewport = result.results[0].geometry.viewport;\n this.zone.run(() => {\n this.inferredMapBounds = {\n east: viewport.getNorthEast().lng(),\n north: viewport.getNorthEast().lat(),\n west: viewport.getSouthWest().lng(),\n south: viewport.getSouthWest().lat(),\n };\n });\n }\n }),\n );\n }\n }),\n );\n }\n\n openLightbox(data: LightboxData): void {\n this.lightbox.open({ imageUrls: data.imageUrls, index: data.index });\n }\n\n onTabSwitch(event: MatTabChangeEvent): void {\n this.activeTab = event.index;\n }\n\n tabInvalid(tab: BusinessProfileTab): boolean {\n switch (tab) {\n case BusinessProfileTab.Primary:\n return (\n this.basicInfoForm.invalid ||\n this.additionalInfoForm.invalid ||\n this.phoneForm.invalid ||\n this.serviceAvailabilityForm.invalid ||\n this.serviceAreaToggle.invalid ||\n this.serviceAreaForm.invalid\n );\n case BusinessProfileTab.Social:\n return this.businessPagesForm.invalid || this.blogForm.invalid;\n case BusinessProfileTab.Professional:\n return (\n this.personalInformationForm.invalid ||\n this.practiceInformationForm.invalid ||\n this.qualificationsAndExperienceForm.invalid ||\n this.additionalProfessionalInfoForm.invalid\n );\n case BusinessProfileTab.Descriptions:\n return this.businessDescriptionsForm.invalid;\n case BusinessProfileTab.Administration:\n return this.salesForm.invalid || this.adminForm.invalid;\n }\n }\n\n tabChanged(tab: BusinessProfileTab): boolean {\n switch (tab) {\n case BusinessProfileTab.Primary:\n return (\n this.basicInfoForm.dirty ||\n this.additionalInfoForm.dirty ||\n this.phoneForm.dirty ||\n this.addressFormDirty ||\n this.serviceAvailabilityForm.dirty ||\n this.serviceAreaToggle.dirty ||\n this.serviceAreaForm.dirty\n );\n case BusinessProfileTab.Social:\n return this.businessPagesForm.dirty || this.blogForm.dirty;\n case BusinessProfileTab.Professional:\n return (\n this.personalInformationForm.dirty ||\n this.practiceInformationForm.dirty ||\n this.qualificationsAndExperienceForm.dirty ||\n this.additionalProfessionalInfoForm.dirty\n );\n case BusinessProfileTab.Descriptions:\n return this.businessDescriptionsForm.dirty;\n case BusinessProfileTab.Administration:\n return this.salesForm.dirty || this.adminForm.dirty;\n }\n }\n\n hideSaveButton(): boolean {\n const tabsToHideSaveButton = [];\n return tabsToHideSaveButton.indexOf(this.activeTab) > -1;\n }\n\n markFormsPristine(): void {\n this.serviceAreaToggle.markAsPristine();\n this.basicInfoForm.markAsPristine();\n this.additionalInfoForm.markAsPristine();\n this.serviceAvailabilityForm.markAsPristine();\n this.phoneForm.markAsPristine();\n this.businessPagesForm.markAsPristine();\n this.blogForm.markAsPristine();\n this.personalInformationForm.markAsPristine();\n this.practiceInformationForm.markAsPristine();\n this.qualificationsAndExperienceForm.markAsPristine();\n this.additionalProfessionalInfoForm.markAsPristine();\n this.businessDescriptionsForm.markAsPristine();\n this.googleAttributesForm.markAsPristine();\n this.bingAttributesForm.markAsPristine();\n this.serviceAreaForm.markAsPristine();\n this.auxiliaryDataTable?.formGroup.markAsPristine();\n this.salesForm.markAsPristine();\n this.adminForm.markAsPristine();\n }\n\n showFourSquare(): boolean {\n if (this.hiddenFields) {\n return this.hiddenFields.indexOf(HiddenField.SocialFourSquare) < 0;\n }\n return true;\n }\n\n showMap(): boolean {\n if (this.hiddenFields) {\n return this.hiddenFields.indexOf(HiddenField.Map) < 0;\n }\n return true;\n }\n\n hasAccessToMarkets(): boolean {\n if (this.hiddenFields) {\n return this.hiddenFields.indexOf(HiddenField.Markets) < 0;\n }\n return true;\n }\n\n hasAccessToSales(): boolean {\n if (this.hiddenFields) {\n return this.hiddenFields.indexOf(HiddenField.Sales) < 0;\n }\n return true;\n }\n\n showCustomerIdentifier(): boolean {\n if (this.hiddenFields) {\n return this.hiddenFields.indexOf(HiddenField.CustomerIdentifier) < 0;\n }\n return true;\n }\n\n get showDateTemporaryClose(): boolean {\n const closedValue = this.serviceAvailabilityForm.get('closedStatus').value;\n return (\n closedValue === ClosedStatus.TEMPORARY ||\n closedValue === ClosedStatus.LIMITED ||\n closedValue === ClosedStatus.PERMANENT\n );\n }\n\n handleTimeZoneChange(timeZone: string): void {\n this.listingProfile().napData.timezone = timeZone;\n }\n\n trackChangedForms(accountGroup: any): void {\n const changedForms = Object.keys(accountGroup)?.filter((key) => {\n return !!accountGroup[key];\n });\n const changedTabs = new Set(changedForms.map((form) => formTabs[form]));\n changedTabs.forEach((tab) => {\n this.productAnalyticsService.trackEvent(`listing-profile-tab-update`, 'listing-profile', 'change', 1, {\n tab: BusinessProfileTab[tab],\n });\n });\n changedForms.forEach((form) => {\n this.productAnalyticsService.trackEvent(`listing-profile-form-update`, 'listing-profile', 'change', 1, {\n form: form,\n });\n });\n }\n\n getSuggestion = (fieldType: string): Observable => {\n return this.suggestionService\n .getSuggestion(\n new GetSuggestionRequest({\n businessId: this.accountGroupId(),\n fieldType: fieldType,\n languageCode: this.translateService.currentLang || this.translateService.defaultLang,\n }),\n )\n .pipe(\n catchError((err: HttpErrorResponse) => {\n const message = err.error?.message ? err.error.message : 'Unknown error';\n this.snackbar.open(message, '', { politeness: 'assertive', duration: 5000 });\n return EMPTY;\n }),\n map((resp: GetSuggestionResponse) => resp?.suggestion),\n );\n };\n\n suggestFieldUpdate = (\n fieldType: string,\n existing: string,\n option: UpdateOption,\n tone?: string,\n ): Observable => {\n return this.suggestionService\n .suggestFieldUpdate(\n new SuggestFieldUpdateRequest({\n businessId: this.accountGroupId(),\n fieldType: fieldType,\n existingValue: existing,\n option: option,\n tone: tone,\n languageCode: this.translateService.currentLang || this.translateService.defaultLang,\n }),\n )\n .pipe(\n catchError((err: HttpErrorResponse) => {\n const message = err.error?.message ? err.error.message : 'Unknown error';\n this.snackbar.open(message, '', { politeness: 'assertive', duration: 5000 });\n return EMPTY;\n }),\n map((resp: GetSuggestionResponse) => resp?.suggestion),\n );\n };\n\n private setPaymentMethods(countryCode: string, paymentMethodsTranslations, valueChanges) {\n const paymentMethodsString = 'FRONTEND.BUSINESSES.PAYMENT_METHODS';\n let paymentMethods = CountryPaymentMethods['DEFAULT'].slice();\n if (countryCode && CountryPaymentMethods[countryCode]) {\n paymentMethods = CountryPaymentMethods[countryCode].slice();\n }\n if (valueChanges) {\n (valueChanges as number[]).forEach((selectedMethod) => {\n if (paymentMethods.indexOf(selectedMethod) < 0) {\n paymentMethods.push(selectedMethod);\n }\n });\n }\n return paymentMethods.map((method) => ({\n code: method,\n name: paymentMethodsTranslations[`${paymentMethodsString}.${RichDataPaymentMethods[method]}`],\n }));\n }\n}\n\nfunction convertFromSales(partnerId: string, marketId: string, sp: SalesSalesperson): Salesperson {\n return {\n partnerId: partnerId,\n marketId: marketId,\n salespersonId: sp.salespersonId,\n fullName: `${sp.firstName} ${sp.lastName}`,\n firstName: sp.firstName,\n lastName: sp.lastName,\n email: sp.email,\n };\n}\n\nfunction createDefaultLegacyProductDetails(): LegacyProductDetails {\n return new LegacyProductDetails({\n commonName: [],\n adminNotes: '',\n });\n}\n\nfunction paymentMethodValidator(getCountryCode: () => string | string, translateService: any): ValidatorFn {\n return (control: AbstractControl): { [key: string]: any } => {\n if (!control.value) {\n return null;\n }\n const countryCode = getCountryCode();\n let paymentMethods = CountryPaymentMethods['DEFAULT'].slice();\n if (countryCode && CountryPaymentMethods[countryCode]) {\n paymentMethods = CountryPaymentMethods[countryCode].slice();\n }\n const invalidPaymentMethods = (control.value as number[]).filter((selectedPaymentMethod) => {\n return paymentMethods.indexOf(selectedPaymentMethod) < 0;\n });\n if (invalidPaymentMethods.length) {\n const paymentMethodsTranslations = translateService.instant('FRONTEND.BUSINESSES.PAYMENT_METHODS');\n const paymentMethodsString = invalidPaymentMethods\n .map((method) => {\n return paymentMethodsTranslations[RichDataPaymentMethods[method]];\n })\n .join(', ');\n const message = translateService.instant('FRONTEND.BUSINESSES.PAYMENT_METHODS.INVALID_PAYMENT_METHODS', {\n paymentMethods: paymentMethodsString,\n });\n return { paymentMethods: message };\n }\n return null;\n };\n}\n\nfunction getAllStandardizedTitles(): string[] {\n return [\n 'FRONTEND.BUSINESSES.STANDARDIZED_TITLES.ACCOUNTING',\n 'FRONTEND.BUSINESSES.STANDARDIZED_TITLES.ADMINISTRATOR',\n 'FRONTEND.BUSINESSES.STANDARDIZED_TITLES.BOARD_MEMBER',\n 'FRONTEND.BUSINESSES.STANDARDIZED_TITLES.CHAIRMAN',\n 'FRONTEND.BUSINESSES.STANDARDIZED_TITLES.CEO',\n 'FRONTEND.BUSINESSES.STANDARDIZED_TITLES.CIO_CTO',\n 'FRONTEND.BUSINESSES.STANDARDIZED_TITLES.CONTROLLER',\n 'FRONTEND.BUSINESSES.STANDARDIZED_TITLES.CORPORATE_TAX',\n 'FRONTEND.BUSINESSES.STANDARDIZED_TITLES.DIRECTOR',\n 'FRONTEND.BUSINESSES.STANDARDIZED_TITLES.DIVISION_HEAD',\n 'FRONTEND.BUSINESSES.STANDARDIZED_TITLES.E_COMMERCE',\n 'FRONTEND.BUSINESSES.STANDARDIZED_TITLES.EDUCATOR',\n 'FRONTEND.BUSINESSES.STANDARDIZED_TITLES.ENGINEERING',\n 'FRONTEND.BUSINESSES.STANDARDIZED_TITLES.ENVIRONMENT',\n 'FRONTEND.BUSINESSES.STANDARDIZED_TITLES.EVP',\n 'FRONTEND.BUSINESSES.STANDARDIZED_TITLES.EXECUTIVE',\n 'FRONTEND.BUSINESSES.STANDARDIZED_TITLES.FACILITIES',\n 'FRONTEND.BUSINESSES.STANDARDIZED_TITLES.FINANCE',\n 'FRONTEND.BUSINESSES.STANDARDIZED_TITLES.INSURANCE',\n 'FRONTEND.BUSINESSES.STANDARDIZED_TITLES.INTERNAL_AUDIT',\n 'FRONTEND.BUSINESSES.STANDARDIZED_TITLES.INTERNATIONAL',\n 'FRONTEND.BUSINESSES.STANDARDIZED_TITLES.IT_EXECUTIVE',\n 'FRONTEND.BUSINESSES.STANDARDIZED_TITLES.LEGAL',\n 'FRONTEND.BUSINESSES.STANDARDIZED_TITLES.LEGAL_COUNSEL',\n 'FRONTEND.BUSINESSES.STANDARDIZED_TITLES.MANAGER',\n 'FRONTEND.BUSINESSES.STANDARDIZED_TITLES.MANUFACTURING',\n 'FRONTEND.BUSINESSES.STANDARDIZED_TITLES.MARKETING',\n 'FRONTEND.BUSINESSES.STANDARDIZED_TITLES.MINISTER',\n 'FRONTEND.BUSINESSES.STANDARDIZED_TITLES.OFFICE_MANAGER',\n 'FRONTEND.BUSINESSES.STANDARDIZED_TITLES.OPERATIONS',\n 'FRONTEND.BUSINESSES.STANDARDIZED_TITLES.OWNER',\n 'FRONTEND.BUSINESSES.STANDARDIZED_TITLES.PARTNER',\n 'FRONTEND.BUSINESSES.STANDARDIZED_TITLES.PRESIDENT',\n 'FRONTEND.BUSINESSES.STANDARDIZED_TITLES.PRINCIPAL',\n 'FRONTEND.BUSINESSES.STANDARDIZED_TITLES.PUBLISHER',\n 'FRONTEND.BUSINESSES.STANDARDIZED_TITLES.PURCHASING',\n 'FRONTEND.BUSINESSES.STANDARDIZED_TITLES.QUALITY',\n 'FRONTEND.BUSINESSES.STANDARDIZED_TITLES.REAL_ESTATE',\n 'FRONTEND.BUSINESSES.STANDARDIZED_TITLES.REGION_MANAGER',\n 'FRONTEND.BUSINESSES.STANDARDIZED_TITLES.SALES',\n 'FRONTEND.BUSINESSES.STANDARDIZED_TITLES.SITE_MANAGER',\n 'FRONTEND.BUSINESSES.STANDARDIZED_TITLES.SVP',\n 'FRONTEND.BUSINESSES.STANDARDIZED_TITLES.TRAINING',\n 'FRONTEND.BUSINESSES.STANDARDIZED_TITLES.VICE_CHAIRMAN',\n 'FRONTEND.BUSINESSES.STANDARDIZED_TITLES.VICE_PRESIDENT',\n 'FRONTEND.BUSINESSES.STANDARDIZED_TITLES.VP',\n 'FRONTEND.BUSINESSES.STANDARDIZED_TITLES.WEBMASTER',\n ];\n}\n","\n \n \n \n \n {{ 'FRONTEND.BUSINESSES.PRIMARY_INFO' | translate }}\n \n \n
\n
\n \n \n \n {{ 'FRONTEND.BUSINESSES.BASICS' | translate }}\n \n \n \n
\n \n\n \n\n \n\n \n {{ 'FRONTEND.BUSINESSES.PRIMARY_CATEGORY' | translate }}\n \n \n {{ 'FRONTEND.BUSINESSES.BUSINESS_CATEGORIES_HINT' | translate }}\n \n {{ primaryBusinessCategoryCtrl.value.length }}/1\n \n {{ 'FRONTEND.BUSINESSES.BUSINESS_CATEGORIES_ERROR' | translate }}\n \n \n\n \n {{ 'FRONTEND.BUSINESSES.ADDITIONAL_CATEGORIES' | translate }}\n \n {{ businessCategoriesCtrl.value.length }}/9\n \n
\n
\n \n \n \n \n {{ 'FRONTEND.BUSINESSES.PHONE' | translate }}\n \n \n {{ 'FRONTEND.BUSINESSES.PHONE_NUMBERS_ALLOWED_FORMATS' | translate }}\n \n \n \n \n \n \n \n \n \n \n \n
\n
\n \n \n \n {{ 'FRONTEND.BUSINESSES.LOCATION' | translate }}\n \n \n \n \n \n\n \n \n \n \n \n \n {{ 'FRONTEND.BUSINESSES.OPERATIONAL_INFORMATION' | translate }}\n \n \n \n \n \n \n {{ 'FRONTEND.BUSINESSES.BUSINESS_OPEN_CLOSE' | translate }}\n \n \n \n {{ businessOperation.name }}\n \n \n \n {{ businessOperationError }}\n \n \n\n \n \n {{ 'FRONTEND.BUSINESSES.REOPENING_DATE' | translate }}\n \n \n \n \n {{ reopeningDateError }}\n \n \n \n\n \n\n \n\n \n \n {{ 'FRONTEND.BUSINESSES.SERVICE_AVAILABILITY.ECOMMERCE_ONLY' | translate }}\n \n \n \n {{ ecommerce.name }}\n \n \n \n \n \n {{ 'FRONTEND.BUSINESSES.PAYMENT_METHODS.PAYMENT_METHODS' | translate }}\n \n \n \n {{ paymentMethod.name }}\n \n \n \n {{ paymentMethodError }}\n \n \n \n \n \n \n \n
\n
\n
\n \n \n \n {{ 'FRONTEND.BUSINESSES.HOURS' | translate }}\n \n \n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n \n
\n
\n
\n
\n\n \n \n \n {{ 'FRONTEND.BUSINESSES.DESCRIPTIONS' | translate }}\n \n \n
\n
\n \n \n \n {{ 'FRONTEND.BUSINESSES.BUSINESS_DESCRIPTIONS' | translate }}\n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n
\n \n \n \n {{ 'FRONTEND.BUSINESSES.IMAGES' | translate }}\n \n \n
\n
\n \n
\n
\n
\n\n \n \n \n {{ 'FRONTEND.BUSINESSES.SOCIAL' | translate }}\n \n \n
\n
\n \n \n \n {{ 'FRONTEND.BUSINESSES.BUSINESS_PAGES' | translate }}\n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n \n \n \n {{ 'FRONTEND.BUSINESSES.BLOG' | translate }}\n \n \n \n \n \n \n
\n
\n
\n\n \n \n \n {{ 'FRONTEND.BUSINESSES.PROFESSIONAL_RECORDS' | translate }}\n \n \n
\n
\n \n \n \n {{ 'FRONTEND.BUSINESSES.PERSONAL_INFORMATION' | translate }}\n \n \n \n \n Standardized Title\n \n \n {{ standardizedTitle.name }}\n \n \n \n \n \n \n \n {{ 'FRONTEND.BUSINESSES.PROFESSIONAL_CREDENTIALS' | translate }}\n \n \n {{ professionalCredential }}\n \n \n \n \n {{ 'FRONTEND.BUSINESSES.GENDER' | translate }}\n \n \n {{ gender.name }}\n \n \n \n \n \n \n \n \n \n {{ 'FRONTEND.BUSINESSES.OPERATIONAL_INFORMATION' | translate }}\n \n \n \n \n {{ 'FRONTEND.BUSINESSES.ACCEPTING_PATIENTS' | translate }}\n \n \n {{ 'FRONTEND.BUSINESSES.YES' | translate }}\n \n \n {{ 'FRONTEND.BUSINESSES.NO' | translate }}\n \n \n \n \n \n \n
\n
\n \n \n \n {{ 'FRONTEND.BUSINESSES.QUALIFICATIONS_EXPERIENCE.QUALIFICATIONS_EXPERIENCE' | translate }}\n \n \n \n
\n \n \n {{ 'FRONTEND.BUSINESSES.QUALIFICATIONS_EXPERIENCE.DOCTORDOTCOM_CATEGORIES' | translate }}\n \n \n \n {{ doctordotcomCategory.fullName }}\n \n \n \n
\n \n \n \n \n \n \n \n
\n \n \n \n \n {{ 'FRONTEND.BUSINESSES.PRACTICE_INFORMATION' | translate }}\n \n \n \n \n \n {{ 'FRONTEND.BUSINESSES.IS_PROVIDER' | translate }}\n \n \n {{ enumVal.name }}\n \n \n \n \n \n \n
\n
\n \n \n \n \n {{ 'FRONTEND.BUSINESSES.ATTRIBUTES_TAB' | translate }}\n \n \n
\n
\n \n
\n
\n \n
\n
\n
\n \n \n \n {{ 'FRONTEND.BUSINESSES.CUSTOM_FIELDS' | translate }}\n \n \n
\n
\n \n
\n
\n
\n \n \n \n {{ 'FRONTEND.BUSINESSES.ADMINISTRATION' | translate }}\n \n \n
\n
\n \n \n \n {{ 'FRONTEND.BUSINESSES.SALES' | translate }}\n \n \n \n \n {{ 'FRONTEND.BUSINESSES.MARKET' | translate }}\n \n \n {{ market.name }}\n \n \n \n \n {{ 'FRONTEND.BUSINESSES.PRIMARY_SALESPERSON' | translate }}\n \n \n \n {{ salesperson.fullName }}\n \n \n \n \n \n {{ 'FRONTEND.BUSINESSES.PRIMARY_SALESPERSON_MUST_BE_SELECTED' | translate }}\n \n 0\"\n [formControl]=\"accountGroupForm.get('salesForm.additionalSalespersonIds')\"\n [tooltip]=\"'FRONTEND.BUSINESSES.TOOLTIPS.ADDITIONAL_SALESPERSON_TOOLTIP' | translate\"\n [placeholder]=\"'FRONTEND.BUSINESSES.ADDITIONAL_SALESPEOPLE' | translate\"\n [options]=\"additionalSalespeople\"\n [allowCustomTags]=\"false\"\n [allowDuplicates]=\"false\"\n [maxFields]=\"5\"\n >\n \n {{ getPrimarySalespersonInAdditionalSalespeopleErrorMsg() }}\n \n \n \n
\n
\n \n \n \n {{ 'FRONTEND.BUSINESSES.ADMINISTRATION' | translate }}\n \n \n \n \n \n \n \n {{ 'FRONTEND.BUSINESSES.NOTES' | translate }}\n \n \n \n \n \n
\n
\n
\n \n \n \n \n \n \n\n\n\n \n\n","{\n \"FRONTEND\": {\n \"TAXONOMY\": {\n \"active\": \"Active Life\",\n \"amateursportsteams\": \"Amateur Sports Teams\",\n \"amusementparks\": \"Amusement Parks\",\n \"aquariums\": \"Aquariums\",\n \"archery\": \"Archery\",\n \"badminton\": \"Badminton\",\n \"basketballcourts\": \"Basketball Courts\",\n \"beaches\": \"Beaches\",\n \"bikerentals\": \"Bike Rentals\",\n \"boating\": \"Boating\",\n \"bowling\": \"Bowling\",\n \"climbing\": \"Climbing\",\n \"discgolf\": \"Disc Golf\",\n \"diving\": \"Diving\",\n \"freediving\": \"Free Diving\",\n \"scuba\": \"Scuba Diving\",\n \"fishing\": \"Fishing\",\n \"fitness\": \"Fitness & Instruction\",\n \"barreclasses\": \"Barre Classes\",\n \"bootcamps\": \"Boot Camps\",\n \"boxing\": \"Boxing\",\n \"dancestudio\": \"Dance Studios\",\n \"gyms\": \"Gyms\",\n \"healthtrainers\": \"Trainers\",\n \"martialarts\": \"Martial Arts\",\n \"pilates\": \"Pilates\",\n \"taichi\": \"Tai Chi\",\n \"yoga\": \"Yoga\",\n \"football\": \"Soccer\",\n \"gokarts\": \"Go Karts\",\n \"golf\": \"Golf\",\n \"gun_ranges\": \"Gun/Rifle Ranges\",\n \"gymnastics\": \"Gymnastics\",\n \"hanggliding\": \"Hang Gliding\",\n \"hiking\": \"Hiking\",\n \"horsebackriding\": \"Horseback Riding\",\n \"horseracing\": \"Horse Racing\",\n \"hot_air_balloons\": \"Hot Air Balloons\",\n \"kiteboarding\": \"Kiteboarding\",\n \"lakes\": \"Lakes\",\n \"lasertag\": \"Laser Tag\",\n \"leisure_centers\": \"Leisure Centers\",\n \"mini_golf\": \"Mini Golf\",\n \"mountainbiking\": \"Mountain Biking\",\n \"paddleboarding\": \"Paddleboarding\",\n \"paintball\": \"Paintball\",\n \"parks\": \"Parks\",\n \"dog_parks\": \"Dog Parks\",\n \"skate_parks\": \"Skate Parks\",\n \"playgrounds\": \"Playgrounds\",\n \"rafting\": \"Rafting/Kayaking\",\n \"recreation\": \"Recreation Centers\",\n \"rock_climbing\": \"Rock Climbing\",\n \"skatingrinks\": \"Skating Rinks\",\n \"skydiving\": \"Skydiving\",\n \"spinclasses\": \"Spin Classes\",\n \"sports_clubs\": \"Sports Clubs\",\n \"squash\": \"Squash\",\n \"summer_camps\": \"Summer Camps\",\n \"surfing\": \"Surfing\",\n \"swimmingpools\": \"Swimming Pools\",\n \"tennis\": \"Tennis\",\n \"trampoline\": \"Trampoline Parks\",\n \"tubing\": \"Tubing\",\n \"zoos\": \"Zoos\",\n \"arts\": \"Arts & Entertainment\",\n \"arcades\": \"Arcades\",\n \"casinos\": \"Casinos\",\n \"culturalcenter\": \"Cultural Center\",\n \"festivals\": \"Festivals\",\n \"galleries\": \"Art Galleries\",\n \"gardens\": \"Botanical Gardens\",\n \"jazzandblues\": \"Jazz & Blues\",\n \"movietheaters\": \"Cinema\",\n \"museums\": \"Museums\",\n \"musicvenues\": \"Music Venues\",\n \"opera\": \"Opera & Ballet\",\n \"psychic_astrology\": \"Psychics & Astrologers\",\n \"racetracks\": \"Race Tracks\",\n \"social_clubs\": \"Social Clubs\",\n \"sportsteams\": \"Professional Sports Teams\",\n \"stadiumsarenas\": \"Stadiums & Arenas\",\n \"theater\": \"Performing Arts\",\n \"ticketsales\": \"Ticket Sales\",\n \"wineries\": \"Wineries\",\n \"auto\": \"Automotive\",\n \"auto_detailing\": \"Auto Detailing\",\n \"autoglass\": \"Auto Glass Services\",\n \"autoloanproviders\": \"Auto Loan Providers\",\n \"autopartssupplies\": \"Auto Parts & Supplies\",\n \"autorepair\": \"Auto Repair\",\n \"boatdealers\": \"Boat Dealers\",\n \"bodyshops\": \"Body Shops\",\n \"car_dealers\": \"Car Dealers\",\n \"carwash\": \"Car Wash\",\n \"motorcycledealers\": \"Motorcycle Dealers\",\n \"motorcyclerepair\": \"Motorcycle Repair\",\n \"oilchange\": \"Oil Change Stations\",\n \"parking\": \"Parking\",\n \"rv_dealers\": \"RV Dealers\",\n \"servicestations\": \"Gas & Service Stations\",\n \"smog_check_stations\": \"Smog Check Stations\",\n \"stereo_installation\": \"Car Stereo Installation\",\n \"tires\": \"Tires\",\n \"towing\": \"Towing\",\n \"truck_rental\": \"Truck Rental\",\n \"windshieldinstallrepair\": \"Windshield Installation & Repair\",\n \"beautysvc\": \"Beauty & Spas\",\n \"barbers\": \"Barbers\",\n \"cosmetics\": \"Cosmetics & Beauty Supply\",\n \"eyelashservice\": \"Eyelash Service\",\n \"hair\": \"Hair Salons\",\n \"blowoutservices\": \"Blow Dry/Out Services\",\n \"hair_extensions\": \"Hair Extensions\",\n \"hairstylists\": \"Hair Stylists\",\n \"menshair\": \"Men's Hair Salons\",\n \"hairremoval\": \"Hair Removal\",\n \"laser_hair_removal\": \"Laser Hair Removal\",\n \"makeupartists\": \"Makeup Artists\",\n \"massage\": \"Massage\",\n \"othersalons\": \"Nail Salons\",\n \"permanentmakeup\": \"Permanent Makeup\",\n \"piercing\": \"Piercing\",\n \"rolfing\": \"Rolfing\",\n \"skincare\": \"Skin Care\",\n \"spas\": \"Day Spas\",\n \"tanning\": \"Tanning\",\n \"spraytanning\": \"Spray Tanning\",\n \"tanningbeds\": \"Tanning Beds\",\n \"tattoo\": \"Tattoo\",\n \"education\": \"Education\",\n \"adultedu\": \"Adult Education\",\n \"collegecounseling\": \"College Counseling\",\n \"collegeuniv\": \"Colleges & Universities\",\n \"educationservices\": \"Educational Services\",\n \"elementaryschools\": \"Elementary Schools\",\n \"highschools\": \"High Schools\",\n \"kindergarten\": \"Kindergarten\",\n \"middleschools\": \"Middle Schools\",\n \"preschools\": \"Preschools\",\n \"privateschools\": \"Private Schools\",\n \"privatetutors\": \"Private Tutors\",\n \"religiousschools\": \"Religious Schools\",\n \"specialed\": \"Special Education\",\n \"specialtyschools\": \"Specialty Schools\",\n \"artschools\": \"Art Schools\",\n \"cookingschools\": \"Cooking Schools\",\n \"cosmetology_schools\": \"Cosmetology Schools\",\n \"cprclasses\": \"CPR Classes\",\n \"dance_schools\": \"Dance Schools\",\n \"driving_schools\": \"Driving Schools\",\n \"firstaidclasses\": \"First Aid Classes\",\n \"flightinstruction\": \"Flight Instruction\",\n \"language_schools\": \"Language Schools\",\n \"massage_schools\": \"Massage Schools\",\n \"swimminglessons\": \"Swimming Lessons/Schools\",\n \"vocation\": \"Vocational & Technical School\",\n \"testprep\": \"Test Preparation\",\n \"tutoring\": \"Tutoring Centers\",\n \"eventservices\": \"Event Planning & Services\",\n \"bartenders\": \"Bartenders\",\n \"boatcharters\": \"Boat Charters\",\n \"catering\": \"Caterers\",\n \"clowns\": \"Clowns\",\n \"djs\": \"DJs\",\n \"eventplanning\": \"Party & Event Planning\",\n \"magicians\": \"Magicians\",\n \"musicians\": \"Musicians\",\n \"officiants\": \"Officiants\",\n \"partybusrentals\": \"Party Bus Rentals\",\n \"partyequipmentrentals\": \"Party Equipment Rentals\",\n \"partysupplies\": \"Party Supplies\",\n \"personalchefs\": \"Personal Chefs\",\n \"photographers\": \"Photographers\",\n \"eventphotography\": \"Event Photography\",\n \"sessionphotography\": \"Session Photography\",\n \"venues\": \"Venues & Event Spaces\",\n \"videographers\": \"Videographers\",\n \"wedding_planning\": \"Wedding Planning\",\n \"financialservices\": \"Financial Services\",\n \"banks\": \"Banks & Credit Unions\",\n \"financialadvising\": \"Financial Advising\",\n \"insurance\": \"Insurance\",\n \"investing\": \"Investing\",\n \"paydayloans\": \"Check Cashing/Pay-day Loans\",\n \"taxservices\": \"Tax Services\",\n \"food\": \"Food\",\n \"bagels\": \"Bagels\",\n \"bakeries\": \"Bakeries\",\n \"beer_and_wine\": \"Beer, Wine & Spirits\",\n \"breweries\": \"Breweries\",\n \"bubbletea\": \"Bubble Tea\",\n \"butcher\": \"Butcher\",\n \"coffee\": \"Coffee & Tea\",\n \"convenience\": \"Convenience Stores\",\n \"csa\": \"CSA\",\n \"desserts\": \"Desserts\",\n \"diyfood\": \"Do-It-Yourself Food\",\n \"donuts\": \"Donuts\",\n \"farmersmarket\": \"Farmers Market\",\n \"fooddeliveryservices\": \"Food Delivery Services\",\n \"foodtrucks\": \"Food Trucks\",\n \"gelato\": \"Gelato\",\n \"gourmet\": \"Specialty Food\",\n \"candy\": \"Candy Stores\",\n \"cheese\": \"Cheese Shops\",\n \"chocolate\": \"Chocolatiers & Shops\",\n \"ethnicmarkets\": \"Ethnic Food\",\n \"healthmarkets\": \"Health Markets\",\n \"herbsandspices\": \"Herbs & Spices\",\n \"markets\": \"Fruits & Veggies\",\n \"meats\": \"Meat Shops\",\n \"seafoodmarkets\": \"Seafood Markets\",\n \"grocery\": \"Grocery\",\n \"icecream\": \"Ice Cream & Frozen Yogurt\",\n \"internetcafe\": \"Internet Cafes\",\n \"juicebars\": \"Juice Bars & Smoothies\",\n \"pretzels\": \"Pretzels\",\n \"shavedice\": \"Shaved Ice\",\n \"streetvendors\": \"Street Vendors\",\n \"tea\": \"Tea Rooms\",\n \"health\": \"Health & Medical\",\n \"acupuncture\": \"Acupuncture\",\n \"assistance\": \"Assistance\",\n \"c_and_mh\": \"Counseling & Mental Health\",\n \"cannabis_clinics\": \"Cannabis Clinics\",\n \"chiropractors\": \"Chiropractors\",\n \"dentists\": \"Dentists\",\n \"cosmeticdentists\": \"Cosmetic Dentists\",\n \"endodontists\": \"Endodontists\",\n \"generaldentistry\": \"General Dentistry\",\n \"oralsurgeons\": \"Oral Surgeons\",\n \"orthodontists\": \"Orthodontists\",\n \"pediatric_dentists\": \"Pediatric Dentists\",\n \"periodontists\": \"Periodontists\",\n \"diagnosticservices\": \"Diagnostic Services\",\n \"diagnosticimaging\": \"Diagnostic Imaging\",\n \"laboratorytesting\": \"Laboratory Testing\",\n \"hearingaidproviders\": \"Hearing Aid Providers\",\n \"homehealthcare\": \"Home Health Care\",\n \"hospice\": \"Hospice\",\n \"hospitals\": \"Hospitals\",\n \"lactationservices\": \"Lactation Services\",\n \"laserlasikeyes\": \"Laser Eye Surgery/Lasik\",\n \"massage_therapy\": \"Massage Therapy\",\n \"medcenters\": \"Medical Centers\",\n \"medicalspa\": \"Medical Spas\",\n \"medicaltransportation\": \"Medical Transportation\",\n \"midwives\": \"Midwives\",\n \"nutritionists\": \"Nutritionists\",\n \"occupationaltherapy\": \"Occupational Therapy\",\n \"optometrists\": \"Optometrists\",\n \"pharmaceuticalsupplier\": \"Pharmaceutical Supplier\",\n \"pharmacy\": \"Pharmacy\",\n \"physicaltherapy\": \"Physical Therapy\",\n \"physicians\": \"Doctors\",\n \"addiction_specialist\": \"Addiction Specialist\",\n \"adolescent_medicine\": \"Adolescent Medicine Specialist\",\n \"allergist\": \"Allergists\",\n \"allergist_immunologist\": \"Allergist / Immunologist\",\n \"anesthesiologists\": \"Anesthesiologists\",\n \"audiologist\": \"Audiologist\",\n \"bariatric_surgeon\": \"Bariatric Surgeon\",\n \"behavioral_medicine\": \"Behavioral Medicine Specialist\",\n \"breast_surgeon\": \"Breast Surgeon\",\n \"cardiac_surgeon\": \"Cardiac Surgeon\",\n \"cardiology\": \"Cardiologists\",\n \"cardiothoracic_surgeon\": \"Cardiothoracic Surgeon\",\n \"colorectal_surgeon\": \"Colorectal Surgeon\",\n \"cosmeticsurgeons\": \"Cosmetic Surgeons\",\n \"dermatology\": \"Dermatologists\",\n \"earnosethroat\": \"Ear Nose & Throat\",\n \"familydr\": \"Family Practice\",\n \"fertility\": \"Fertility\",\n \"flight_surgeon\": \"Flight Surgeon\",\n \"gastroenterologist\": \"Gastroenterologist\",\n \"general_practioner\": \"General Practitioner\",\n \"general_surgeon\": \"General Surgeon\",\n \"geriatrics\": \"Geriatrics\",\n \"gerontologist\": \"Gerontologists\",\n \"hematologist\": \"Hematologist\",\n \"hepatologist\": \"Hepatologist\",\n \"immunologist\": \"Immunologist\",\n \"infectious_disease_specialist\": \"Infectious Disease Specialist\",\n \"internalmed\": \"Internal Medicine\",\n \"naturopathic\": \"Naturopathic/Holistic\",\n \"nephrologist\": \"Nephrologist\",\n \"neurologist\": \"Neurologist\",\n \"neurosurgeon\": \"Neurosurgeon\",\n \"nuclear_medicine_specialist\": \"Nuclear Medicine Specialist\",\n \"obgyn\": \"Obstetricians & Gynecologists\",\n \"oncologist\": \"Oncologist\",\n \"opthamalogists\": \"Ophthalmologists\",\n \"orthopedists\": \"Orthopedists\",\n \"osteopathicphysicians\": \"Osteopathic Physicians\",\n \"pain_management_specialist\": \"Pain Management Specialist\",\n \"pediatricians\": \"Pediatricians\",\n \"plastic_surgeon\": \"Plastic Surgeon\",\n \"podiatrists\": \"Podiatrists\",\n \"proctologist\": \"Proctologists\",\n \"psychiatrists\": \"Psychiatrists\",\n \"pulmonologist\": \"Pulmonologist\",\n \"sleep_medicine\": \"Sleep Medicine Doctor\",\n \"sportsmed\": \"Sports Medicine\",\n \"tattooremoval\": \"Tattoo Removal\",\n \"thoracic_surgeon\": \"Thoracic Surgeon\",\n \"transplan_surgeon\": \"Transplant Surgeon\",\n \"trauma_surgeon\": \"Trauma Surgeon\",\n \"urologists\": \"Urologists\",\n \"vascular_surgeon\": \"Vascular Surgeon\",\n \"reflexology\": \"Reflexology\",\n \"rehabilitation_center\": \"Rehabilitation Center\",\n \"retirement_homes\": \"Retirement Homes\",\n \"speech_therapists\": \"Speech Therapists\",\n \"tcm\": \"Traditional Chinese Medicine\",\n \"urgent_care\": \"Urgent Care\",\n \"weightlosscenters\": \"Weight Loss Centers\",\n \"homeservices\": \"Home Services\",\n \"blinds\": \"Shades & Blinds\",\n \"buildingsupplies\": \"Building Supplies\",\n \"carpeting\": \"Carpeting\",\n \"carpetinstallation\": \"Carpet Installation\",\n \"chimneyandfireplacecleaning\": \"Chimney & Fireplace Cleaning\",\n \"constructioncompany\": \"Construction Company\",\n \"contractors\": \"Contractors\",\n \"damagerestoration\": \"Damage Restoration\",\n \"electricians\": \"Electricians\",\n \"flooring\": \"Flooring\",\n \"garage_door_services\": \"Garage Door Services\",\n \"gardeners\": \"Gardeners\",\n \"handyman\": \"Handyman\",\n \"home_inspectors\": \"Home Inspectors\",\n \"home_organization\": \"Home Organization\",\n \"homecleaning\": \"Home Cleaning\",\n \"hometheatreinstallation\": \"Home Theatre Installation\",\n \"homewindowtinting\": \"Home Window Tinting\",\n \"hvac\": \"Heating & Air Conditioning/HVAC\",\n \"interiordesign\": \"Interior Design\",\n \"irrigation\": \"Irrigation\",\n \"isps\": \"Internet Service Providers\",\n \"landscapearchitects\": \"Landscape Architects\",\n \"landscaping\": \"Landscaping\",\n \"lighting\": \"Lighting Fixtures & Equipment\",\n \"locksmiths\": \"Keys & Locksmiths\",\n \"masonry_concrete\": \"Masonry/Concrete\",\n \"movers\": \"Movers\",\n \"painters\": \"Painters\",\n \"plumbing\": \"Plumbing\",\n \"poolcleaners\": \"Pool Cleaners\",\n \"realestate\": \"Real Estate\",\n \"commercialrealestate\": \"Commercial Real Estate\",\n \"mortgagebrokers\": \"Mortgage Brokers\",\n \"prefabricated\": \"Prefabricated\",\n \"propertymgmt\": \"Property Management\",\n \"realestateagents\": \"Real Estate Agents\",\n \"realestatesvcs\": \"Real Estate Services\",\n \"sharedofficespaces\": \"Shared Office Spaces\",\n \"roofing\": \"Roofing\",\n \"securitysystems\": \"Security Systems\",\n \"solarinstallation\": \"Solar Installation\",\n \"televisionserviceproviders\": \"Television Service Providers\",\n \"treeservices\": \"Tree Services\",\n \"utilities\": \"Utilities\",\n \"windowwashing\": \"Window Washing\",\n \"hotelstravel\": \"Hotels & Travel\",\n \"airports\": \"Airports\",\n \"bedbreakfast\": \"Bed & Breakfast\",\n \"campgrounds\": \"Campgrounds\",\n \"carrental\": \"Car Rental\",\n \"guesthouses\": \"Guest Houses\",\n \"hostels\": \"Hostels\",\n \"hotels\": \"Hotels\",\n \"motorcycle_rental\": \"Motorcycle Rental\",\n \"resorts\": \"Resorts\",\n \"rvparks\": \"RV Parks\",\n \"rvrental\": \"RV Rental\",\n \"skiresorts\": \"Ski Resorts\",\n \"tours\": \"Tours\",\n \"trainstations\": \"Train Stations\",\n \"transport\": \"Transportation\",\n \"airlines\": \"Airlines\",\n \"airport_shuttles\": \"Airport Shuttles\",\n \"limos\": \"Limos\",\n \"publictransport\": \"Public Transportation\",\n \"taxis\": \"Taxis\",\n \"travelservices\": \"Travel Services\",\n \"vacation_rentals\": \"Vacation Rentals\",\n \"vacationrentalagents\": \"Vacation Rental Agents\",\n \"industgoodsmanu\": \"Industrial Goods and Manufacturing\",\n \"manufacturer\": \"Manufacturer\",\n \"localservices\": \"Local Services\",\n \"bailbondsmen\": \"Bail Bondsmen\",\n \"bike_repair_maintenance\": \"Bike Repair/Maintenance\",\n \"carpet_cleaning\": \"Carpet Cleaning\",\n \"childcare\": \"Child Care & Day Care\",\n \"copyshops\": \"Printing Services\",\n \"couriers\": \"Couriers & Delivery Services\",\n \"drycleaninglaundry\": \"Dry Cleaning & Laundry\",\n \"electronicsrepair\": \"Electronics Repair\",\n \"equipmentrental\": \"Equipment Rental\",\n \"fireprotectionequipmentsupplier\": \"Fire Protection Equipment Supplier\",\n \"fireprotectionservice\": \"Fire Protection Service\",\n \"fireprotectionsystemsupplier\": \"Fire Protection System Supplier\",\n \"funeralservices\": \"Funeral Services & Cemeteries\",\n \"homeappliancerepair\": \"Appliances & Repair\",\n \"itservices\": \"IT Services & Computer Repair\",\n \"datarecovery\": \"Data Recovery\",\n \"mobilephonerepair\": \"Mobile Phone Repair\",\n \"jewelryrepair\": \"Jewelry Repair\",\n \"junkremovalandhauling\": \"Junk Removal & Hauling\",\n \"nannys\": \"Nanny Services\",\n \"nonprofit\": \"Community Service/Non-Profit\",\n \"notaries\": \"Notaries\",\n \"pest_control\": \"Pest Control\",\n \"recording_studios\": \"Recording & Rehearsal Studios\",\n \"recyclingcenter\": \"Recycling Center\",\n \"reupholstery\": \"Furniture Reupholstery\",\n \"screen_printing_tshirt_printing\": \"Screen Printing/T-Shirt Printing\",\n \"screenprinting\": \"Screen Printing\",\n \"selfstorage\": \"Self Storage\",\n \"sewingalterations\": \"Sewing & Alterations\",\n \"shipping_centers\": \"Shipping Centers\",\n \"shoerepair\": \"Shoe Repair\",\n \"shredding_service\": \"Shredding Service\",\n \"snowremoval\": \"Snow Removal\",\n \"software_development\": \"Software Development\",\n \"watch_repair\": \"Watch Repair\",\n \"massmedia\": \"Mass Media\",\n \"printmedia\": \"Print Media\",\n \"radiostations\": \"Radio Stations\",\n \"televisionstations\": \"Television Stations\",\n \"mineag\": \"Mining & Agriculture\",\n \"ag\": \"Agriculture\",\n \"farmequipmentseller\": \"Farm Equipment Seller\",\n \"horticulture\": \"Horticulture\",\n \"livestock\": \"Livestock\",\n \"mining\": \"Mining\",\n \"nightlife\": \"Nightlife\",\n \"adultentertainment\": \"Adult Entertainment\",\n \"bars\": \"Bars\",\n \"champagne_bars\": \"Champagne Bars\",\n \"cocktailbars\": \"Cocktail Bars\",\n \"divebars\": \"Dive Bars\",\n \"gaybars\": \"Gay Bars\",\n \"hookah_bars\": \"Hookah Bars\",\n \"lounges\": \"Lounges\",\n \"pubs\": \"Pubs\",\n \"sportsbars\": \"Sports Bars\",\n \"wine_bars\": \"Wine Bars\",\n \"comedyclubs\": \"Comedy Clubs\",\n \"countrydancehalls\": \"Country Dance Halls\",\n \"danceclubs\": \"Dance Clubs\",\n \"karaoke\": \"Karaoke\",\n \"pianobars\": \"Piano Bars\",\n \"poolhalls\": \"Pool Halls\",\n \"other\": \"Other\",\n \"pets\": \"Pets\",\n \"animalshelters\": \"Animal Shelters\",\n \"horse_boarding\": \"Horse Boarding\",\n \"petservices\": \"Pet Services\",\n \"dogwalkers\": \"Dog Walkers\",\n \"groomer\": \"Pet Groomers\",\n \"pet_sitting\": \"Pet Boarding/Pet Sitting\",\n \"pet_training\": \"Pet Training\",\n \"petstore\": \"Pet Stores\",\n \"vet\": \"Veterinarians\",\n \"professional\": \"Professional Services\",\n \"accountants\": \"Accountants\",\n \"advertising\": \"Advertising\",\n \"architects\": \"Architects\",\n \"audio_video_consulting\": \"Audio Visual Consultant\",\n \"boatrepair\": \"Boat Repair\",\n \"careercounseling\": \"Career Counseling\",\n \"editorialservices\": \"Editorial Services\",\n \"employmentagencies\": \"Employment Agencies\",\n \"graphicdesign\": \"Graphic Design\",\n \"lawyers\": \"Lawyers\",\n \"bankruptcy\": \"Bankruptcy Law\",\n \"businesslawyers\": \"Business Law\",\n \"criminaldefense\": \"Criminal Defense Law\",\n \"divorce\": \"Divorce & Family Law\",\n \"duilawyers\": \"DUI Law\",\n \"employmentlawyers\": \"Employment Law\",\n \"estateplanning\": \"Estate Planning Law\",\n \"general_litigation\": \"General Litigation\",\n \"immigrationlawyers\": \"Immigration Law\",\n \"personal_injury\": \"Personal Injury Law\",\n \"realestatelawyers\": \"Real Estate Law\",\n \"legalservices\": \"Legal Services\",\n \"lifecoach\": \"Life Coach\",\n \"marketing\": \"Marketing\",\n \"matchmakers\": \"Matchmakers\",\n \"officecleaning\": \"Office Cleaning\",\n \"payroll\": \"Payroll Services\",\n \"personalassistants\": \"Personal Assistants\",\n \"privateinvestigation\": \"Private Investigation\",\n \"publicrelations\": \"Public Relations\",\n \"talentagencies\": \"Talent Agencies\",\n \"taxidermy\": \"Taxidermy\",\n \"translationservices\": \"Translation Services\",\n \"videofilmproductions\": \"Video/Film Production\",\n \"web_design\": \"Web Design\",\n \"publicservicesgovt\": \"Public Services & Government\",\n \"courthouses\": \"Courthouses\",\n \"departmentsofmotorvehicles\": \"Departments of Motor Vehicles\",\n \"embassy\": \"Embassy\",\n \"firedepartments\": \"Fire Departments\",\n \"landmarks\": \"Landmarks & Historical Buildings\",\n \"libraries\": \"Libraries\",\n \"policedepartments\": \"Police Departments\",\n \"postoffices\": \"Post Offices\",\n \"apartments\": \"Apartments\",\n \"homestaging\": \"Home Staging\",\n \"university_housing\": \"University Housing\",\n \"religiousorgs\": \"Religious Organizations\",\n \"buddhist_temples\": \"Buddhist Temples\",\n \"churches\": \"Churches\",\n \"hindu_temples\": \"Hindu Temples\",\n \"mosques\": \"Mosques\",\n \"synagogues\": \"Synagogues\",\n \"restaurants\": \"Restaurants\",\n \"afghani\": \"Afghan\",\n \"african\": \"African\",\n \"senegalese\": \"Senegalese\",\n \"southafrican\": \"South African\",\n \"arabian\": \"Arabian\",\n \"argentine\": \"Argentine\",\n \"armenian\": \"Armenian\",\n \"asianfusion\": \"Asian Fusion\",\n \"australian\": \"Australian\",\n \"austrian\": \"Austrian\",\n \"bangladeshi\": \"Bangladeshi\",\n \"basque\": \"Basque\",\n \"bbq\": \"Barbeque\",\n \"belgian\": \"Belgian\",\n \"brasseries\": \"Brasseries\",\n \"brazilian\": \"Brazilian\",\n \"breakfast_brunch\": \"Breakfast & Brunch\",\n \"british\": \"British\",\n \"buffets\": \"Buffets\",\n \"burgers\": \"Burgers\",\n \"burmese\": \"Burmese\",\n \"cafes\": \"Cafes\",\n \"cafeteria\": \"Cafeteria\",\n \"cajun\": \"Cajun/Creole\",\n \"cambodian\": \"Cambodian\",\n \"caribbean\": \"Caribbean\",\n \"dominican\": \"Dominican\",\n \"haitian\": \"Haitian\",\n \"puertorican\": \"Puerto Rican\",\n \"trinidadian\": \"Trinidadian\",\n \"catalan\": \"Catalan\",\n \"cheesesteaks\": \"Cheesesteaks\",\n \"chicken_wings\": \"Chicken Wings\",\n \"chinese\": \"Chinese\",\n \"cantonese\": \"Cantonese\",\n \"dimsum\": \"Dim Sum\",\n \"shanghainese\": \"Shanghainese\",\n \"szechuan\": \"Szechuan\",\n \"comfortfood\": \"Comfort Food\",\n \"creperies\": \"Creperies\",\n \"cuban\": \"Cuban\",\n \"czech\": \"Czech\",\n \"delis\": \"Delis\",\n \"diners\": \"Diners\",\n \"ethiopian\": \"Ethiopian\",\n \"filipino\": \"Filipino\",\n \"fishnchips\": \"Fish & Chips\",\n \"fondue\": \"Fondue\",\n \"food_court\": \"Food Court\",\n \"foodstands\": \"Food Stands\",\n \"french\": \"French\",\n \"gastropubs\": \"Gastropubs\",\n \"german\": \"German\",\n \"gluten_free\": \"Gluten-Free\",\n \"greek\": \"Greek\",\n \"halal\": \"Halal\",\n \"hawaiian\": \"Hawaiian\",\n \"himalayan\": \"Himalayan/Nepalese\",\n \"hotdog\": \"Hot Dogs\",\n \"hotdogs\": \"Fast Food\",\n \"hotpot\": \"Hot Pot\",\n \"hungarian\": \"Hungarian\",\n \"iberian\": \"Iberian\",\n \"indonesian\": \"Indonesian\",\n \"indpak\": \"Indian\",\n \"irish\": \"Irish\",\n \"italian\": \"Italian\",\n \"japanese\": \"Japanese\",\n \"korean\": \"Korean\",\n \"kosher\": \"Kosher\",\n \"laotian\": \"Laotian\",\n \"latin\": \"Latin American\",\n \"colombian\": \"Colombian\",\n \"salvadoran\": \"Salvadoran\",\n \"venezuelan\": \"Venezuelan\",\n \"malaysian\": \"Malaysian\",\n \"mediterranean\": \"Mediterranean\",\n \"mexican\": \"Mexican\",\n \"mideastern\": \"Middle Eastern\",\n \"egyptian\": \"Egyptian\",\n \"lebanese\": \"Lebanese\",\n \"modern_european\": \"Modern European\",\n \"mongolian\": \"Mongolian\",\n \"moroccan\": \"Moroccan\",\n \"newamerican\": \"American (New)\",\n \"pakistani\": \"Pakistani\",\n \"persian\": \"Persian/Iranian\",\n \"peruvian\": \"Peruvian\",\n \"pizza\": \"Pizza\",\n \"polish\": \"Polish\",\n \"portuguese\": \"Portuguese\",\n \"raw_food\": \"Live/Raw Food\",\n \"russian\": \"Russian\",\n \"salad\": \"Salad\",\n \"sandwiches\": \"Sandwiches\",\n \"scandinavian\": \"Scandinavian\",\n \"scottish\": \"Scottish\",\n \"seafood\": \"Seafood\",\n \"singaporean\": \"Singaporean\",\n \"slovakian\": \"Slovakian\",\n \"soulfood\": \"Soul Food\",\n \"soup\": \"Soup\",\n \"southern\": \"Southern\",\n \"spanish\": \"Spanish\",\n \"steak\": \"Steakhouses\",\n \"sushi\": \"Sushi Bars\",\n \"taiwanese\": \"Taiwanese\",\n \"tapas\": \"Tapas Bars\",\n \"tapasmallplates\": \"Tapas/Small Plates\",\n \"tex_mex\": \"Tex-Mex\",\n \"thai\": \"Thai\",\n \"tradamerican\": \"American (Traditional)\",\n \"turkish\": \"Turkish\",\n \"ukrainian\": \"Ukrainian\",\n \"vegan\": \"Vegan\",\n \"vegetarian\": \"Vegetarian\",\n \"vietnamese\": \"Vietnamese\",\n \"shopping\": \"Shopping\",\n \"adult\": \"Adult\",\n \"antiques\": \"Antiques\",\n \"artsandcrafts\": \"Arts & Crafts\",\n \"artsupplies\": \"Art Supplies\",\n \"costumes\": \"Costumes\",\n \"fabricstores\": \"Fabric Stores\",\n \"framing\": \"Framing\",\n \"stationery\": \"Cards & Stationery\",\n \"auctionhouses\": \"Auction Houses\",\n \"baby_gear\": \"Baby Gear & Furniture\",\n \"bespoke\": \"Bespoke Clothing\",\n \"bridal\": \"Bridal\",\n \"cannabis_store\": \"Cannabis Store\",\n \"computers\": \"Computers\",\n \"deptstores\": \"Department Stores\",\n \"discountstore\": \"Discount Store\",\n \"drugstores\": \"Drugstores\",\n \"electronics\": \"Electronics\",\n \"fashion\": \"Fashion\",\n \"accessories\": \"Accessories\",\n \"childcloth\": \"Children's Clothing\",\n \"formalwear\": \"Formal Wear\",\n \"hats\": \"Hats\",\n \"leather\": \"Leather Goods\",\n \"lingerie\": \"Lingerie\",\n \"maternity\": \"Maternity Wear\",\n \"menscloth\": \"Men's Clothing\",\n \"plus_size_fashion\": \"Plus Size Fashion\",\n \"shoes\": \"Shoe Stores\",\n \"sportswear\": \"Sports Wear\",\n \"surfshop\": \"Surf Shop\",\n \"swimwear\": \"Swimwear\",\n \"vintage\": \"Used, Vintage & Consignment\",\n \"womenscloth\": \"Women's Clothing\",\n \"fireworks\": \"Fireworks\",\n \"fleamarkets\": \"Flea Markets\",\n \"flowers\": \"Flowers & Gifts\",\n \"florists\": \"Florists\",\n \"giftshops\": \"Gift Shops\",\n \"golfshops\": \"Golf Equipment Shops\",\n \"guns_and_ammo\": \"Guns & Ammo\",\n \"hobbyshops\": \"Hobby Shops\",\n \"homeandgarden\": \"Home & Garden\",\n \"appliances\": \"Appliances\",\n \"furniture\": \"Furniture Stores\",\n \"gardening\": \"Nurseries & Gardening\",\n \"hardware\": \"Hardware Stores\",\n \"homedecor\": \"Home Decor\",\n \"hottubandpool\": \"Hot Tub & Pool\",\n \"kitchenandbath\": \"Kitchen & Bath\",\n \"mattresses\": \"Mattresses\",\n \"jewelry\": \"Jewelry\",\n \"knittingsupplies\": \"Knitting Supplies\",\n \"luggage\": \"Luggage\",\n \"media\": \"Books, Mags, Music & Video\",\n \"bookstores\": \"Bookstores\",\n \"comicbooks\": \"Comic Books\",\n \"mags\": \"Newspapers & Magazines\",\n \"musicvideo\": \"Music & DVDs\",\n \"videoandgames\": \"Videos & Video Game Rental\",\n \"vinyl_records\": \"Vinyl Records\",\n \"medicalsupplies\": \"Medical Supplies\",\n \"mobilephones\": \"Mobile Phones\",\n \"motorcyclinggear\": \"Motorcycle Gear\",\n \"musicalinstrumentsandteachers\": \"Musical Instruments & Teachers\",\n \"officeequipment\": \"Office Equipment\",\n \"opticians\": \"Eyewear & Opticians\",\n \"outlet_stores\": \"Outlet Stores\",\n \"pawn\": \"Pawn Shops\",\n \"personal_shopping\": \"Personal Shopping\",\n \"photographystores\": \"Photography Stores & Services\",\n \"poolbilliards\": \"Pool & Billiards\",\n \"popupshops\": \"Pop-up Shops\",\n \"shoppingcenters\": \"Shopping Centers\",\n \"sportgoods\": \"Sporting Goods\",\n \"bikes\": \"Bikes\",\n \"golfequipment\": \"Golf Equipment\",\n \"outdoorgear\": \"Outdoor Gear\",\n \"thrift_stores\": \"Thrift Stores\",\n \"tobaccoshops\": \"Tobacco Shops\",\n \"toys\": \"Toy Stores\",\n \"trophyshops\": \"Trophy Shops\",\n \"uniforms\": \"Uniforms\",\n \"watches\": \"Watches\",\n \"wholesale_stores\": \"Wholesale Stores\",\n \"wigs\": \"Wigs\",\n \"transportation\": \"Transportation\",\n \"air\": \"Air\",\n \"railway\": \"Railway\",\n \"road\": \"Road\",\n \"water\": \"Water\",\n \"doormanufacturer\": \"Door Manufacturer\",\n \"doorsupplier\": \"Door Supplier\",\n \"excavatingcontractor\": \"Excavating Contractor\",\n \"railingcontractor\": \"Railing Contractor\",\n \"windowsinstallation\": \"Windows Installation\",\n \"doorshop\": \"Door Shop\",\n \"showerdoorshop\": \"Shower Door Shop\",\n \"linens_store\": \"Linens Store\",\n \"laundry_service\": \"Laundry Services\",\n \"janitorial_service\": \"Janitorial Services\",\n \"restaurant_supply_store\": \"Restaurant Supply Store\",\n \"ict\": \"Information and Communication Technology\",\n \"telecommunicationserviceprovider\": \"Telecommunications Service Provider\",\n \"managedserviceprovider\": \"Managed Service Provider\",\n \"valueaddedreseller\": \"Value Added Reseller\",\n \"cablecompany\": \"Cable Company\",\n \"internetserviceprovider\": \"Internet Service Provider\",\n \"signshop\": \"Sign Shop\"\n }\n }\n}\n","export const WEBLATE_COMPONENT_NAME = 'common/taxonomy-i18n';\n","import { TranslateModule } from '@ngx-translate/core';\nimport { NgModule } from '@angular/core';\nimport { LexiconModule } from '@galaxy/lexicon';\nimport { TaxonomyComponent } from './taxonomy.component';\nimport baseTranslation from './assets/i18n/en_devel.json';\nimport { WEBLATE_COMPONENT_NAME } from './constants';\n\n@NgModule({\n imports: [\n TranslateModule,\n LexiconModule.forChild({\n componentName: WEBLATE_COMPONENT_NAME,\n baseTranslation: baseTranslation,\n }),\n ],\n exports: [TaxonomyComponent],\n declarations: [TaxonomyComponent],\n providers: [],\n})\nexport class TaxonomyI18nModule {}\n","import { HttpResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Competitor, CompetitorApiService, CreateCompetitorResponse } from '@vendasta/account-group';\nimport { Observable, of } from 'rxjs';\nimport { catchError, map } from 'rxjs/operators';\n\n@Injectable()\nexport class CompetitorsTabService {\n constructor(private api: CompetitorApiService) {}\n\n public getCompetitors(businessId: string, cursor: string, pageSize: number): Observable {\n const req = { businessId: businessId, pagingOptions: { cursor: cursor, pageSize: pageSize } };\n return this.api.getCompetitors(req).pipe(\n map((res) => res.competitors),\n catchError(() => of([])),\n );\n }\n\n public create(businessId: string, competitor: any): Observable {\n const req = {\n businessId: businessId,\n location: {\n name: competitor.name,\n url: competitor.url,\n },\n };\n return this.api.create(req);\n }\n\n public update(businessId: string, competitor: any): Observable> {\n const req = {\n competitor: {\n businessId: businessId,\n competitorId: competitor.competitorId,\n location: {\n name: competitor.name,\n url: competitor.url,\n },\n },\n fieldMask: {\n paths: ['name', 'url'],\n },\n };\n return this.api.update(req);\n }\n\n public delete(businessId: string, competitorId: string): Observable> {\n const req = {\n businessId: businessId,\n competitorId: competitorId,\n };\n return this.api.delete(req);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { CompetitorsTabComponent } from './competitors-tab.component';\nimport { CompetitorsTabService } from './competitors-tab.service';\n\n@NgModule({\n declarations: [CompetitorsTabComponent],\n imports: [\n CommonModule,\n MatCardModule,\n MatButtonModule,\n MatIconModule,\n MatDialogModule,\n MatInputModule,\n MatProgressSpinnerModule,\n TranslateModule,\n ReactiveFormsModule,\n GalaxyFormFieldModule,\n ],\n providers: [CompetitorsTabService],\n exports: [CompetitorsTabComponent],\n})\nexport class CompetitorsTabModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatGridListModule } from '@angular/material/grid-list';\nimport { MediaTabGalleryComponent } from './media-tab-gallery.component';\nimport { VaActionMenuModule } from '@vendasta/uikit';\nimport { TranslateModule } from '@ngx-translate/core';\n@NgModule({\n declarations: [MediaTabGalleryComponent],\n imports: [CommonModule, MatGridListModule, MatChipsModule, VaActionMenuModule, TranslateModule],\n exports: [MediaTabGalleryComponent],\n})\nexport class MediaTabGalleryModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { VaFormsModule } from '@vendasta/forms';\nimport { UploadImageDialogComponent } from './upload-image-dialog.component';\n\n@NgModule({\n imports: [\n CommonModule,\n VaFormsModule,\n MatIconModule,\n MatButtonModule,\n MatProgressBarModule,\n ReactiveFormsModule,\n MatDialogModule,\n TranslateModule,\n ],\n declarations: [UploadImageDialogComponent],\n providers: [],\n exports: [UploadImageDialogComponent],\n})\nexport class UploadImageDialogModule {}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { MediaTabGalleryModule } from './media-tab-gallery/media-tab-gallery.module';\nimport { ConfirmationModalComponent, MediaTabComponent } from './media-tab.component';\nimport { MediaTabService } from './media-tab.service';\nimport { UploadImageDialogModule } from './upload-image-dialog/upload-image-dialog.module';\n\n@NgModule({\n declarations: [MediaTabComponent, ConfirmationModalComponent],\n imports: [\n CommonModule,\n MatCardModule,\n MatButtonModule,\n MediaTabGalleryModule,\n MatProgressBarModule,\n UploadImageDialogModule,\n MediaTabGalleryModule,\n MatIconModule,\n MatDialogModule,\n TranslateModule,\n ],\n providers: [MediaTabService, SnackbarService],\n exports: [MediaTabComponent],\n})\nexport class MediaTabModule {}\n","import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';\nimport { Geo, GooglePlace } from '@vendasta/account-group';\n\n@Component({\n selector: 'business-place-autocomplete',\n templateUrl: './place-autocomplete.component.html',\n styleUrls: ['./place-autocomplete.component.scss'],\n})\nexport class PlaceAutocompleteComponent {\n maxBounds: google.maps.LatLngBounds;\n autocompleteInput: string;\n @ViewChild('addresstext') addresstext: any;\n @Input() set geoLocation(b: Geo) {\n if (!!b && b?.latitude !== undefined && b?.longitude !== undefined) {\n const center = new google.maps.LatLng(b.latitude, b.longitude);\n // Set location bias for Google place search to a radius of 300 km from the business location because Google says\n // service areas should not extend farther than about a 2-hour drive away from the business location\n // https://support.google.com/business/answer/3038177#zippy=%2Caddress\n this.maxBounds = new google.maps.Circle({ radius: 300000, center: center }).getBounds();\n this.getPlaceAutocomplete();\n } else {\n this.getPlaceAutocomplete();\n }\n }\n @Input() editDisabled = false;\n @Output() selected: EventEmitter = new EventEmitter();\n\n private getPlaceAutocomplete(): void {\n const options: google.maps.places.AutocompleteOptions = {\n types: ['(regions)'],\n };\n options.bounds = this.maxBounds ? this.maxBounds : undefined;\n options.strictBounds = false;\n options.fields = ['place_id', 'address_components', 'name', 'types'];\n const autocomplete = new google.maps.places.Autocomplete(this.addresstext?.nativeElement, options);\n google.maps.event.addListener(autocomplete, 'place_changed', () => {\n const place = autocomplete.getPlace();\n this.invokeEvent(place);\n this.autocompleteInput = '';\n this.addresstext?.nativeElement.blur();\n this.addresstext?.nativeElement.focus();\n });\n }\n\n invokeEvent(place: google.maps.places.PlaceResult): void {\n this.selected.emit(\n new GooglePlace({\n placeId: place.place_id,\n placeName: this.formatName(place),\n city: place.address_components.find((component) => component.types.indexOf('locality') !== -1)?.long_name || '',\n }),\n );\n }\n\n formatName(place: google.maps.places.PlaceResult): string {\n const city =\n place.address_components.find((component) => component.types.indexOf('locality') !== -1)?.long_name || '';\n const province =\n place.address_components.find((component) => component.types.indexOf('administrative_area_level_1') !== -1)\n ?.short_name || '';\n const country =\n place.address_components.find((component) => component.types.indexOf('country') !== -1)?.short_name || '';\n switch (place.types[0]) {\n case 'administrative_area_level_2':\n case 'locality': {\n return joinFirstItems([place.name, province, country], ', ', 2);\n }\n case 'sublocality':\n case 'postal_code': {\n return joinFirstItems([place.name, city, province, country], ', ', 3);\n }\n case 'country': {\n return place.name;\n }\n case 'administrative_area_level_1': {\n return joinFirstItems([place.name, country], ', ', 2);\n }\n }\n return place.name;\n }\n}\n\nfunction joinFirstItems(items: string[], delimiter: string, max: number): string {\n return items.filter(Boolean).slice(0, max).join(delimiter);\n}\n","\n \n\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { GoogleMapsModule } from '@angular/google-maps';\nimport { MatDatepickerModule } from '@angular/material/datepicker';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatChipsModule } from '@angular/material/chips';\nimport { MatDialogModule } from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { BusinessCategoryModule } from '@galaxy/business-category';\nimport { LexiconModule } from '@galaxy/lexicon';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { AuxiliaryDataModule } from '@vendasta/auxiliary-data-components';\nimport { VaFormsModule } from '@vendasta/forms';\nimport { GalaxyAlertModule } from '@vendasta/galaxy/alert';\nimport { GalaxyCheckboxModule } from '@vendasta/galaxy/checkbox';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { GalaxyTimezoneSelectorModule } from '@vendasta/galaxy/timezone-selector';\nimport { ImageTransformationModule } from '@vendasta/image-transformation';\nimport { SalespersonServiceModule } from '@vendasta/salesperson';\nimport { TaxonomyServiceModule } from '@vendasta/taxonomy';\nimport { TaxonomyI18nModule } from '@vendasta/taxonomy-i18n';\nimport { VaFullscreenLightboxService } from '@vendasta/uikit';\nimport { AddressFormV2Module } from './address/v2/address-form-v2.module';\nimport baseTranslation from './assets/i18n/en_devel.json';\nimport { BusinessProfileComponent } from './business-profile.component';\nimport { CompetitorsTabModule } from './competitors-tab/competitors-tab.module';\nimport { FormatPhoneNumberPipe } from './format-phone-number.pipe';\nimport { MediaTabModule } from './media-tab/media-tab.module';\nimport { PlaceAutocompleteComponent } from './place-autocomplete/place-autocomplete.component';\nimport { ProductActivationPrereqFormModule } from './product-activation-prereq-form/product-activation-prereq-form.module';\nimport { GalaxyLoadingSpinnerModule } from '@vendasta/galaxy/loading-spinner';\nimport { MoreHoursComponent } from './more-hours/more-hours.component';\n\n@NgModule({\n imports: [\n CommonModule,\n ReactiveFormsModule,\n ImageTransformationModule,\n VaFormsModule,\n TaxonomyServiceModule,\n MatInputModule,\n MatCardModule,\n MatTabsModule,\n MatTooltipModule,\n MatSelectModule,\n MatButtonModule,\n MatIconModule,\n MatDialogModule,\n MatSnackBarModule,\n SalespersonServiceModule,\n MediaTabModule,\n MatCheckboxModule,\n MatDatepickerModule,\n AddressFormV2Module,\n TaxonomyI18nModule,\n GoogleMapsModule,\n TranslateModule,\n LexiconModule.forChild({\n componentName: 'common/businesses',\n baseTranslation: baseTranslation,\n }),\n ProductActivationPrereqFormModule,\n CompetitorsTabModule,\n GalaxyCheckboxModule,\n MatAutocompleteModule,\n GalaxyTimezoneSelectorModule,\n AuxiliaryDataModule,\n BusinessCategoryModule,\n GalaxyFormFieldModule,\n FormsModule,\n MatRadioModule,\n MatChipsModule,\n MatExpansionModule,\n MatFormFieldModule,\n GalaxyAlertModule,\n GalaxyLoadingSpinnerModule,\n ],\n declarations: [BusinessProfileComponent, FormatPhoneNumberPipe, PlaceAutocompleteComponent, MoreHoursComponent],\n exports: [BusinessProfileComponent, PlaceAutocompleteComponent],\n providers: [VaFullscreenLightboxService],\n})\nexport class BusinessProfileModule {}\n","import { CommonModule } from '@angular/common';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { Component, Inject, NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule, UntypedFormControl, UntypedFormGroup } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatSortModule } from '@angular/material/sort';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { GalaxyAlertModule } from '@vendasta/galaxy/alert';\nimport { GalaxyFormFieldModule } from '@vendasta/galaxy/form-field';\nimport { SelectInputOptionInterface } from '@vendasta/galaxy/input';\nimport { GalaxyPageModule } from '@vendasta/galaxy/page';\nimport { SnackbarService } from '@vendasta/galaxy/snackbar-service';\nimport { PartnerApiService } from '@vendasta/partner';\nimport { UIKitModule, VaMaterialTableModule, VaStencilsModule } from '@vendasta/uikit';\nimport {\n DataSourceSettings,\n LoadRequest,\n TableDataService,\n VaFilteredMatTableService,\n} from '@vendasta/va-filter2-table';\nimport assertNever from 'assert-never';\nimport { BehaviorSubject, EMPTY, Observable, Subject, combineLatest, of } from 'rxjs';\nimport { catchError, finalize, map, shareReplay, startWith, switchMap, take, tap } from 'rxjs/operators';\nimport { ActionListsInjectionToken } from './account-lists-service.module';\nimport { AccountListsService } from './account-lists.service';\nimport { ActionListsDependencies } from './interface';\n\nexport interface ModalTableDataService extends TableDataService {\n loadAllRowIDs(request: LoadRequest): Observable;\n}\n\nexport interface AccountListsDialogData {\n vaFilteredMatTableService: VaFilteredMatTableService;\n tableDataService: ModalTableDataService;\n currentTableDataSettings: DataSourceSettings;\n}\n\nenum WhichAccountsOption {\n visible = 'visible',\n selected = 'selected',\n all = 'all',\n}\n\nconst NewListText = 'Create a new list';\nconst newListSentinel = new Object();\n\n@Component({\n templateUrl: './account-lists-modal.component.html',\n styleUrls: ['./account-lists-modal.component.scss'],\n})\nexport class AccountListsModalComponent {\n selectedRowCount$: Observable = this.dialogData.vaFilteredMatTableService.selectedRows$.pipe(\n map((rows) => rows.length),\n );\n displayedRowCount$: Observable = this.dialogData.vaFilteredMatTableService.displayedRows$.pipe(\n map((rows) => rows.length),\n );\n totalResults$: Observable = this.dialogData.tableDataService.totalResults$;\n\n WhichAccountsOption = WhichAccountsOption;\n NewListSentinel = newListSentinel;\n NewListText = NewListText;\n\n existingLists$: Observable = of(null).pipe(\n tap(() => this.actionPending$$.next(true)),\n switchMap(() => this.accountListsService.listActionLists()),\n tap(() => this.actionPending$$.next(false)),\n map((resp): SelectInputOptionInterface[] =>\n [{ value: newListSentinel, label: NewListText }].concat(\n resp.actionLists.map(\n (l): SelectInputOptionInterface => ({\n label: l.name,\n value: l.name, // addAccountsToActionList() needs the name, not the ID\n description: `${l.accounts} accounts`,\n }),\n ),\n ),\n ),\n catchError((err: HttpErrorResponse) => {\n console.error(`error (${err.status}) when listing lists`);\n this.alertService.openErrorSnack('ERRORS.SOMETHING_WENT_WRONG');\n return EMPTY;\n }),\n );\n\n whichAccounts = new UntypedFormControl(WhichAccountsOption.visible);\n selectedList = new UntypedFormControl('');\n newListName = new UntypedFormControl('');\n formGroup = new UntypedFormGroup({\n whichAccounts: this.whichAccounts,\n selectedList: this.selectedList,\n newListName: this.newListName,\n });\n showNewListNameInput$ = this.selectedList.valueChanges.pipe(\n map((value) => value === newListSentinel),\n startWith(false),\n );\n\n private readonly actionPending$$: Subject = new BehaviorSubject(false);\n readonly actionPending$ = this.actionPending$$.asObservable().pipe(shareReplay(1));\n\n formInvalid$: Observable = combineLatest([this.actionPending$, this.formGroup.valueChanges]).pipe(\n map(([pending, { whichAccounts, selectedList, newListName }]) => {\n if (pending || !whichAccounts || !selectedList || (selectedList === newListSentinel && !newListName?.trim())) {\n return true;\n }\n return false;\n }),\n startWith(true),\n );\n\n constructor(\n public dialogRef: MatDialogRef,\n @Inject(MAT_DIALOG_DATA) public dialogData: AccountListsDialogData,\n private readonly accountListsService: AccountListsService,\n private readonly alertService: SnackbarService,\n @Inject(ActionListsInjectionToken) private readonly config: ActionListsDependencies,\n ) {}\n\n getAccounts(which: WhichAccountsOption): Observable {\n switch (which) {\n case WhichAccountsOption.all: {\n return this.dialogData.tableDataService.loadAllRowIDs({\n ...this.dialogData.currentTableDataSettings,\n pageIndex: 0,\n pageSize: this.config?.totalPageSize || 1000,\n });\n }\n case WhichAccountsOption.visible: {\n return this.dialogData.vaFilteredMatTableService.displayedRows$.pipe(\n map((rows) => rows.map((r) => r.businessId || r.accountGroupId)),\n );\n }\n case WhichAccountsOption.selected: {\n return this.dialogData.vaFilteredMatTableService.selectedRows$.pipe(\n map((rows) => rows.map((r) => r.businessId)),\n );\n }\n default: {\n return assertNever(which);\n }\n }\n }\n\n addToList(): void {\n this.actionPending$$.next(true);\n\n const agids$ = this.getAccounts(this.whichAccounts.value);\n\n let listName = this.selectedList.value;\n if (listName === newListSentinel) {\n listName = this.newListName.value;\n }\n\n agids$\n .pipe(\n switchMap((agids) => this.accountListsService.addAccountsToActionList(listName, agids).pipe(map(() => agids))),\n take(1),\n tap((agids) =>\n this.alertService.openSuccessSnack('FRONTEND.BUSINESSES.ADD_ACCOUNTS_TO_LISTS.SUCCESS', {\n interpolateTranslateParams: {\n accounts: agids.length.toString(),\n list: listName,\n },\n }),\n ),\n catchError((err: HttpErrorResponse) => {\n console.error(`error (${err.status}) when adding to list ${listName}`);\n this.alertService.openErrorSnack('ERRORS.SOMETHING_WENT_WRONG');\n return EMPTY;\n }),\n finalize(() => this.actionPending$$.next(false)),\n )\n .subscribe(() => {\n this.dialogRef.close();\n });\n }\n\n close(): void {\n this.dialogRef.close();\n }\n}\n\n@NgModule({\n declarations: [AccountListsModalComponent],\n imports: [\n CommonModule,\n MatDialogModule,\n MatDividerModule,\n MatRadioModule,\n MatSortModule,\n MatTableModule,\n VaMaterialTableModule,\n VaStencilsModule,\n MatIconModule,\n UIKitModule,\n MatToolbarModule,\n GalaxyAlertModule,\n GalaxyPageModule,\n MatButtonModule,\n MatMenuModule,\n MatTooltipModule,\n MatPaginatorModule,\n TranslateModule,\n MatCardModule,\n MatProgressBarModule,\n FormsModule,\n ReactiveFormsModule,\n GalaxyFormFieldModule,\n MatSelectModule,\n ],\n providers: [PartnerApiService],\n})\nexport class AccountListsModalModule {}\n","
\n {{ 'FRONTEND.BUSINESSES.ADD_ACCOUNTS_TO_LISTS.TITLE' | translate }}\n
\n\n
\n \n \n
\n {{ 'FRONTEND.BUSINESSES.ADD_ACCOUNTS_TO_LISTS.SELECT_ACCOUNTS.LABEL' | translate }}\n
\n\n \n 0\"\n >\n \n {{ 'FRONTEND.BUSINESSES.ADD_ACCOUNTS_TO_LISTS.SELECT_ACCOUNTS.OPTIONS.SELECTED_ACCOUNTS' | translate }}\n \n | {{ this.selectedRowCount$ | async }}\n {{ 'FRONTEND.BUSINESSES.ADD_ACCOUNTS_TO_LISTS.SELECT_ACCOUNTS.ACCOUNTS' | translate }}\n \n\n \n \n {{ 'FRONTEND.BUSINESSES.ADD_ACCOUNTS_TO_LISTS.SELECT_ACCOUNTS.OPTIONS.VISIBLE_ACCOUNTS' | translate }}\n \n | {{ this.displayedRowCount$ | async }}\n {{ 'FRONTEND.BUSINESSES.ADD_ACCOUNTS_TO_LISTS.SELECT_ACCOUNTS.ACCOUNTS' | translate }}\n \n\n \n \n {{ 'FRONTEND.BUSINESSES.ADD_ACCOUNTS_TO_LISTS.SELECT_ACCOUNTS.OPTIONS.ALL_ACCOUNTS' | translate }}\n \n | {{ this.totalResults$ | async }}\n {{ 'FRONTEND.BUSINESSES.ADD_ACCOUNTS_TO_LISTS.SELECT_ACCOUNTS.ACCOUNTS' | translate }}\n \n \n\n \n
\n {{ 'FRONTEND.BUSINESSES.ADD_ACCOUNTS_TO_LISTS.SELECT_LIST' | translate }}\n
\n \n \n \n \n {{ selectedList.value === NewListSentinel ? NewListText : selectedList.value }}\n \n \n \n {{ item.label }}\n
\n {{ item.description }}\n
\n
\n
\n
\n
\n\n \n
\n
\n\n \n {{ 'FRONTEND.BUSINESSES.ADD_ACCOUNTS_TO_LISTS.NAME_NEW_LIST' | translate }}\n \n \n
\n\n \n \n \n \n
\n","import { InjectionToken, ModuleWithProviders, NgModule } from '@angular/core';\nimport { ActionListsDependencies } from './interface';\n\nexport const ActionListsInjectionToken = new InjectionToken(\n 'dependencies for the action-lists',\n);\n\n@NgModule()\nexport class ActionListsServiceModule {\n static forRoot(config: InjectionToken): ModuleWithProviders {\n return {\n ngModule: ActionListsServiceModule,\n providers: [\n {\n provide: ActionListsInjectionToken,\n useExisting: config,\n },\n ],\n };\n }\n}\n","import { Inject, Injectable } from '@angular/core';\nimport { Observable, combineLatest } from 'rxjs';\nimport { map, switchMap } from 'rxjs/operators';\nimport { ActionListsInjectionToken, ActionListsServiceModule } from './account-lists-service.module';\nimport { ActionLists, ActionListsDependencies } from './interface';\n\n@Injectable({\n providedIn: ActionListsServiceModule,\n})\nexport class AccountListsService {\n constructor(\n @Inject('PARTNER_ID') readonly partnerId$: Observable,\n @Inject('MARKET_ID') readonly marketId$: Observable,\n @Inject(ActionListsInjectionToken) private readonly config: ActionListsDependencies,\n ) {}\n\n public addAccountsToActionList(listName: string, accounts: string[]): Observable {\n return combineLatest([this.partnerId$, this.marketId$]).pipe(\n switchMap(([pid, market]) => this.config.addAccountsToActionList(pid, market, listName, accounts)),\n );\n }\n\n public listActionLists(searchString?: string, pageIndex = 0, pageSize = 100): Observable {\n return combineLatest([this.partnerId$, this.marketId$]).pipe(\n switchMap(([pid, market]) => this.config.listActionLists(pid, market, searchString, pageIndex, pageSize)),\n map((resp) => {\n resp.actionLists = resp.actionLists.map((l) => {\n l.accounts = l.accounts || 0;\n return l;\n });\n return resp;\n }),\n );\n }\n}\n"],"mappings":"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A8C,KAAK,IAAI,EAIZ,MAAO,CAAEnT,eAHO7H,EAAiBmB,QAAQ,8DAA+D,CACtG0G,eAAgByQ,EACjB,CAC+B,CAClC,CACA,OAAO,IACT,CACF,CAEA,SAASY,IAAwB,CAC/B,MAAO,CACL,qDACA,wDACA,uDACA,mDACA,8CACA,kDACA,qDACA,wDACA,mDACA,wDACA,qDACA,mDACA,sDACA,sDACA,8CACA,oDACA,qDACA,kDACA,oDACA,yDACA,wDACA,uDACA,gDACA,wDACA,kDACA,wDACA,oDACA,mDACA,yDACA,qDACA,gDACA,kDACA,oDACA,oDACA,oDACA,qDACA,kDACA,sDACA,yDACA,gDACA,uDACA,8CACA,mDACA,wDACA,yDACA,6CACA,mDAAmD,CAEvD,CEhlEA,IAAAkH,GAAA,CACE,SAAY,CACV,SAAY,CACV,OAAU,cACV,mBAAsB,uBACtB,eAAkB,kBAClB,UAAa,YACb,QAAW,UACX,UAAa,YACb,iBAAoB,oBACpB,QAAW,UACX,YAAe,eACf,QAAW,UACX,QAAW,UACX,SAAY,WACZ,SAAY,YACZ,OAAU,SACV,WAAc,cACd,MAAS,eACT,QAAW,UACX,QAAW,wBACX,aAAgB,gBAChB,UAAa,aACb,OAAU,SACV,YAAe,gBACf,KAAQ,OACR,eAAkB,WAClB,YAAe,eACf,QAAW,UACX,OAAU,UACV,KAAQ,OACR,SAAY,SACZ,QAAW,WACX,KAAQ,OACR,WAAc,mBACd,WAAc,aACd,YAAe,eACf,OAAU,SACV,gBAAmB,mBACnB,YAAe,eACf,iBAAoB,mBACpB,aAAgB,eAChB,MAAS,QACT,SAAY,YACZ,gBAAmB,kBACnB,UAAa,YACb,eAAkB,kBAClB,eAAkB,iBAClB,UAAa,YACb,MAAS,QACT,UAAa,YACb,YAAe,cACf,YAAe,cACf,QAAW,mBACX,WAAc,qBACd,cAAiB,gBACjB,aAAgB,gBAChB,UAAa,YACb,YAAe,eACf,aAAgB,eAChB,OAAU,SACV,aAAgB,eAChB,QAAW,UACX,cAAiB,iBACjB,OAAU,SACV,WAAc,mBACd,OAAU,SACV,KAAQ,OACR,KAAQ,uBACR,QAAW,U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","names":["require_fast_deep_equal","__commonJSMin","exports","module","equal","a","b","length","i","keys","key","require_assert_never","__commonJSMin","exports","assertNever","value","noThrow","FeatureFlagService","constructor","featureFlagService","checkFeatureFlagsMulti","partnerId","marketId","featureIds","batchGetStatus","checkFeatureFlag","featureId","pipe","map","val","ɵɵinject","factory","ɵfac","providedIn","_FeatureFlagService","is24Hours","hourPeriod","timeIsMidnight","openTime","closeTime","tod","hours","minutes","transformUndefinedTimeObject","rhp","seconds","nanos","toApiJson","undefined","bIsNextDayToA","a","b","MergeHours","regularHours","mergedHours","i","length","combiningWrap","curr","next","closeDay","openDay","cs","push","shift","SplitHours","timeSpanList","reduce","acc","preMidnightHoursPeriod","RegularHoursPeriod","__spreadProps","__spreadValues","TimeOfDay","nextDay","DayOfWeek","SUNDAY","crossMidnightHoursPeriod","applyMixins","derivedCtor","baseCtors","i","len","length","baseCtor","propertyKeys","Object","getOwnPropertyNames","prototype","j","len2","name","UpdateOperations","constructor","operations","addUpdateOperation","updateOperation","push","toApiJson","map","operation","op","json","mask","getMask","OPERATION_ID","cleanNonFieldMaskProperties","fieldMask","paths","filter","key","hasOwnProperty","call","indexOf","AbstractUpdateOperation","NapUpdateOperation","kwargs","assign","companyName","address","address2","city","state","zip","country","website","workNumber","callTrackingNumber","location","timezone","serviceAreaBusiness","serviceArea","ExternalIdentifiersUpdateOperation","ExternalIdentifiers","SocialURLsUpdateOperation","SocialURLs","RichDataUpdateOperation","RichData","GoogleAttributesUpdateOperation","GoogleAttributes","BingAttributesUpdateOperation","BingAttributes","BusinessHoursUpdateOperation","BusinessHours","MoreHoursUpdateOperation","LegacyProductDetailsUpdateOperation","LegacyProductDetails","ListingProfileService","constructor","lp","translate","get","businessId","projectionFilter","getMulti","GetMultiListingProfileRequest","businessIds","languageCode","currentLang","defaultLang","pipe","map","response","listingProfiles","length","listingProfile","share","bulkUpdate","updateOperations","update","UpdateListingProfileRequest","toApiJson","catchError","err","message","status","instant","error","observableThrowError","retryable","ɵɵinject","ListingProfileApiService","TranslateService","factory","ɵfac","providedIn","_ListingProfileService","import_fast_deep_equal","totalLengthOfRepeatedFieldValidator","maxLength","friendlyName","control","value","length","filter","val","join","lengthOfRepeatedField","arrayAllTruthyItemsRequired","v","required","ɵɵelementContainerStart","ɵɵelement","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵtemplate","ProductActivationPrereqFormComponent_ng_template_2_ng_container_0_ng_container_1_ng_template_9_Template","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","ɵɵproperty","content_r2","ɵɵpureFunction1","_c0","sectionConfig_r1","ProductActivationPrereqFormComponent_ng_template_2_ng_container_0_ng_container_1_Template","ctx_r2","sectionConfig$","ProductActivationPrereqFormComponent_ng_template_2_ng_container_0_Template","hasRestrictions$","businessActivationForm","loading$","get","ProductActivationPrereqFormComponent_ng_template_4_glxy_form_field_16_span_4_Template","orderFormOptions","bypassRequiredQuestions","longDescription_r5","value","length","controls","description","ProductActivationPrereqFormComponent_ng_template_4_glxy_form_field_18_span_4_Template","shortDescription_r6","shortDescription","servicesPlaceholder","readOnly","brandsPlaceholder","submitting$","ɵɵlistener","ɵɵrestoreView","_r4","ɵɵnextContext","ɵɵresetView","onSubmit","$event","i0","preventDefault","ProductActivationPrereqFormComponent_ng_template_4_ng_container_5_Template","ProductActivationPrereqFormComponent_ng_template_4_ng_template_6_Template","ɵɵtemplateRefExtractor","ProductActivationPrereqFormComponent_ng_template_4_ng_container_12_Template","ProductActivationPrereqFormComponent_ng_template_4_ng_template_13_Template","ProductActivationPrereqFormComponent_ng_template_4_forms_business_hours_15_Template","ProductActivationPrereqFormComponent_ng_template_4_glxy_form_field_16_Template","ProductActivationPrereqFormComponent_ng_template_4_div_17_Template","ProductActivationPrereqFormComponent_ng_template_4_glxy_form_field_18_Template","ProductActivationPrereqFormComponent_ng_template_4_div_19_Template","ProductActivationPrereqFormComponent_ng_template_4_forms_va_input_repeated_20_Template","ProductActivationPrereqFormComponent_ng_template_4_forms_va_input_repeated_21_Template","ProductActivationPrereqFormComponent_ng_template_4_button_23_Template","ProductActivationPrereqFormComponent_ng_template_4_span_24_Template","expanded","infoIcon_r8","readOnlyPanelMessage_r9","sectionConfig_r7","showHoO","showLongDescription","showDescription","showServices","showBrands","hasUnsavedChanges$","ProductActivationPrereqFormComponent","productIds","productIds$$","next","checkChipFieldValidity","chipField","Array","constructor","fb","accountGroupService","listingProfileService","partnerApiService","translateService","alertService","hasBusinessProductActivationPrereqFormEvent","EventEmitter","BehaviorSubject","sectionConfig$$","submitting$$","loading$$","productIds$","asObservable","subscriptions","hasUnsavedChanges$$","isValid$","of","ngOnInit","instant","business$","businessId","ProjectionFilter","richData","accountGroupExternalIdentifiers","pipe","catchError","AccountGroup","listingProfile$","LPProjectionFilter","businessHours","ListingProfile","getSectionConfig$","map","resp","emit","push","combineLatest","business","listingProfile","sectionConfig","longDescription","generalHours","find","hours","hoursTypeId","MergeHours","regularHours","servicesOffered","brandsCarried","validators","arrayValidators","Validators","required","arrayAllTruthyItemsRequired","businessProfileForm","UntypedFormGroup","addControl","control","array","compose","minLength","maxLength","totalLengthOfRepeatedFieldValidator","currentSubmittedFormValues","JSON","parse","stringify","subscribe","form","disable","Object","keys","controlName","valueChanges","debounceTime","tap","changes","equal","startWith","hasSubmittedRequiredValues","key","formValue","isValid","valid","setAsTouched","switchMap","deleted","externalIdentifiers","EMPTY","getMultiApp","partnerId","marketId","appKeys","appId","includeNotEnabled","filter","Boolean","apps","app","activationInformation","requiredBusinessData","configs","config","reduce","acc","appConfig","descriptionShort","descriptionLong","brands","services","err","console","error","markAsTouched","i","UntypedFormControl","UntypedFormArray","forEach","c","updateValueAndValidity","emitEvent","pristine","openErrorSnack","errorMsg","invalid","data","updateOperations","UpdateOperations","listingProfileUpdate$","dirty","lpUpdateOperations","LPUpdateOperations","addUpdateOperation","BusinessHoursUpdateOperation","BusinessHours","SplitHours","bulkUpdate","richDataUpdateOperation","RichDataUpdateOperation","agUpdate$","openSuccessSnack","complete","ngOnDestroy","subscription","unsubscribe","ɵɵdirectiveInject","UntypedFormBuilder","AccountGroupService","ListingProfileService","PartnerApiService","TranslateService","SnackbarService","selectors","inputs","outputs","decls","vars","consts","template","rf","ctx","ProductActivationPrereqFormComponent_ng_container_0_Template","ProductActivationPrereqFormComponent_ng_template_2_Template","ProductActivationPrereqFormComponent_ng_template_4_Template","loaded_r10","_ProductActivationPrereqFormComponent","ProductActivationPrereqFormModule","CommonModule","FormsModule","ReactiveFormsModule","TranslateModule","LexiconModule","forChild","componentName","baseTranslation","MatExpansionModule","MatFormFieldModule","MatIconModule","VaFormsModule","MatInputModule","MatButtonModule","MatCardModule","GalaxyFormFieldModule","_ProductActivationPrereqFormModule","FormatAddressToStringPipe","transform","address","trim","city","state","filter","v","join","pure","_FormatAddressToStringPipe","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ctx_r3","getPartnerIdfromConstraints","ag_r3","constraints","ɵɵelement","ɵɵlistener","ɵɵrestoreView","_r2","$implicit","ɵɵnextContext","ɵɵresetView","selectBusiness","ɵɵtemplate","BusinessSelectorDialogComponent_ng_container_9_div_1_div_1_p_7_Template","BusinessSelectorDialogComponent_ng_container_9_div_1_div_1_mat_divider_8_Template","napData","companyName","ɵɵpipeBind1","ɵɵproperty","length","last_r5","BusinessSelectorDialogComponent_ng_container_9_div_1_div_1_Template","businesses_r6","$event","_r7","loadMoreAccounts","ɵɵpureFunction0","_c1","ɵɵelementContainerStart","BusinessSelectorDialogComponent_ng_container_9_ng_container_2_div_2_Template","BusinessSelectorDialogComponent_ng_container_9_ng_container_2_mat_spinner_3_Template","details_r8","loading","hasMore","BusinessSelectorDialogComponent_ng_container_9_div_1_Template","BusinessSelectorDialogComponent_ng_container_9_ng_container_2_Template","emptyState_r9","ɵɵpureFunction2","_c0","hasMore$","loading$","_r10","createBusiness","BusinessSelectorDialogComponent_ng_template_15_Conditional_3_Template","ɵɵconditional","data","hideCreateBusiness","BusinessSelectorDialogComponent_ng_template_17_div_1_Template","_c2","PAGE_SIZE","BusinessSelectorDialogComponent","constructor","dialogRef","router","accountGroupService","loadMore$$","BehaviorSubject","loadMoreTrigger$","asObservable","pipe","map","business$$","business$","nextCursor$$","hasMore$$","loading$$","subscriptions","searchFormField","UntypedFormControl","previousSearchTerm","loadingFirstPage","ngOnInit","initBusinesses","ngOnDestroy","forEach","s","unsubscribe","inViewportEvent","visible","next","push","combineLatest","valueChanges","startWith","debounceTime","distinctUntilChanged","shareReplay","switchMap","searchTerm","cursor","value","lookupRequest","projectionFilter","projectionFilterOverride","ProjectionFilter","accountGroupExternalIdentifiers","partnerId","filters","includeDeleted","pageSize","sortOptions","direction","field","marketId","Array","isArray","marketIds","lookup","subscribe","pagedAccountGroupResponse","businesses","accountGroups","concat","nextCursor","error","accountGroup","close","navigateByUrl","find","element","foreignKey","kind","key","ɵɵdirectiveInject","MatDialogRef","Router","AccountGroupApiService","MAT_DIALOG_DATA","selectors","decls","vars","consts","template","rf","ctx","BusinessSelectorDialogComponent_ng_container_9_Template","i0","_r1","BusinessSelectorDialogComponent_ng_template_15_Template","ɵɵtemplateRefExtractor","BusinessSelectorDialogComponent_ng_template_17_Template","ɵɵtextInterpolate","ɵɵpropertyInterpolate","loading_r11","_BusinessSelectorDialogComponent","BusinessSelectorDialogModule","CommonModule","MatListModule","MatButtonModule","MatFormFieldModule","MatInputModule","MatProgressSpinnerModule","MatDialogModule","ReactiveFormsModule","InViewportModule","LexiconModule","forChild","componentName","baseTranslation","MatLineModule","GalaxyFormFieldModule","_BusinessSelectorDialogModule","MenuOption","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","image_r2","type","ɵɵtemplate","MediaTabGalleryComponent_For_2_Conditional_1_Template","ɵɵlistener","$event","ɵɵrestoreView","_r1","$implicit","ctx_r2","ɵɵnextContext","ɵɵresetView","menuOptionClicked","onClick","ɵɵelement","ɵɵconditional","ɵɵtextInterpolate","date","ɵɵproperty","getMenuOptions","url","ɵɵsanitizeUrl","getSrcsetImageUrls","MediaTabGalleryComponent","constructor","imageTransformationService","imageClicked","EventEmitter","menuOptionSelected","mobileColumns","desktopColumns","gridColumns","subscriptions","ngOnInit","updateColumnTotal","push","observableFromEvent","window","subscribe","ngOnDestroy","forEach","sub","unsubscribe","image","emit","option","menuClick","imageUrl","transformation","ImageTransformation","crop","renderAsJpeg","setJpegQuality","getSrcSetForImage","innerWidth","MenuOption","Delete","Logo","Primary","ɵɵdirectiveInject","ImageTransformationService","selectors","inputs","images","menuOptions","outputs","decls","vars","consts","template","rf","ctx","ɵɵrepeaterCreate","MediaTabGalleryComponent_For_2_Template","ɵɵrepeaterTrackByIdentity","ɵɵpropertyInterpolate","ɵɵrepeater","_MediaTabGalleryComponent","CATEGORY_SEARCH_PAGE_SIZE","LANGUAGE_TOKEN","InjectionToken","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate2","category_r1","name","isLast_r2","ɵɵelementContainerStart","ɵɵtemplate","CategoryOverviewComponent_ng_container_0_ng_container_1_span_1_Template","ɵɵproperty","categories_r3","ɵɵtextInterpolate","ctx_r3","placeholder","CategoryOverviewComponent_ng_container_0_ng_template_2_span_0_Template","CategoryOverviewComponent_ng_container_0_ng_container_1_Template","CategoryOverviewComponent_ng_container_0_ng_template_2_Template","ɵɵtemplateRefExtractor","length","noCategories_r5","CategoryOverviewComponent","categoryType","_categoryType","value","refreshCategories","categoryIds","_categoryIds","constructor","categoryService","languageToken$","atlasLanguageService","CategoryType","CATEGORY_TYPE_V_CATEGORY","request$$","ReplaySubject","language$","EMPTY","ngOnInit","initObservables","req","map","externalId","next","compareRequests","a","b","find","elA","elB","pipe","startWith","distinctUntilChanged","categories$","switchMap","categories","iif","language","getCategories","of","catchError","getCategoryByExternalIDsAndType","languageAndLocale","CategoryUtils","localeFromLanguage","res","category","ɵɵdirectiveInject","CategoriesApiService","LANGUAGE_TOKEN","AtlasLanguageService","selectors","inputs","decls","vars","consts","template","rf","ctx","CategoryOverviewComponent_ng_container_0_Template","ɵɵpipeBind1","_CategoryOverviewComponent","BusinessCategoryService","constructor","categoryService","getCategoryMapping","externalId","inputType","outputType","pipe","map","res","category","getCategoryByExternalIDsAndType","categories","locale","getCategorySearchByTerm","searchTerm","type","pagingOptions","sortOptions","getCategoryBySearchTerm","ɵɵinject","CategoriesApiService","factory","ɵfac","providedIn","_BusinessCategoryService","HighlightSearchPipe","constructor","sanitizer","transform","value","searchTerm","options","split","filter","Boolean","join","re","RegExp","replacedValue","replace","bypassSecurityTrustHtml","ɵɵdirectiveInject","DomSanitizer","pure","_HighlightSearchPipe","CategorySelectService","constructor","categoriesApiService","defaultPagingOptions","pageSize","CATEGORY_SEARCH_PAGE_SIZE","defaultSortOptions","field","SortField","SORT_FIELD_SCORE","direction","SortDirection","SORT_DIRECTION_DESCENDING","SORT_FIELD_FULL_NAME","SORT_DIRECTION_ASCENDING","categorySearchTerm$$","ReplaySubject","categorySearchTerm$","pipe","startWith","map","term","trim","distinctUntilChanged","debounceTime","tap","aggregatedResult$$","next","categorySearchPage$$","isInitialFetch","language$$","BehaviorSubject","categorySearchPage$","categoryType$$","CategoryType","CATEGORY_TYPE_V_CATEGORY","categoryType$","afterInitialFetch","EventEmitter","categories$","combineLatest","nextCategoriesPage","switchMap","searchTerm","pagingOptions","type","language","getCategoryBySearchTerm","sortOptions","onlyVisible","languageAndLocale","CategoryUtils","localeFromLanguage","response","pagingMetadata","hasMore","cursor","nextCursor","categories","category","forEach","withLatestFrom","result","newCategories","concat","emit","categoryType","value","fetch","fetchNext","getCategoryByExternalIDsAndType","ɵɵinject","CategoriesApiService","factory","ɵfac","_CategorySelectService","ExcludeCategoriesPipe","transform","value","excludeIds","length","filter","category","includes","externalId","pure","_ExcludeCategoriesPipe","ChipColorPipe","transform","category","getColor","isInvalid","isHidden","isActive","pure","_ChipColorPipe","ɵɵelement","ɵɵproperty","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵclassMap","ɵɵpipeBind1","category_r3","ɵɵlistener","ɵɵrestoreView","_r2","$implicit","ctx_r3","ɵɵnextContext","ɵɵresetView","removeCategory","ɵɵtemplate","CategorySelectComponent_ng_template_2_mat_chip_row_2_mat_icon_3_Template","disabled","ɵɵadvance","ɵɵtextInterpolate1","fullName","_r5","fetchMoreCategories","ɵɵelementContainerStart","CategorySelectComponent_ng_template_2_ng_container_7_section_1_ng_container_2_ng_container_1_glxy_infinite_scroll_trigger_2_Template","option_r6","isLast_r7","ɵɵpipeBind2","searchResult_r8","searchTerm","ɵɵsanitizeHtml","CategorySelectComponent_ng_template_2_ng_container_7_section_1_ng_container_2_ng_container_1_Template","filteredResult_r9","CategorySelectComponent_ng_template_2_ng_container_7_section_1_ng_container_2_Template","CategorySelectComponent_ng_template_2_ng_container_7_section_1_ng_template_3_Template","ɵɵtemplateRefExtractor","length","noResults_r10","CategorySelectComponent_ng_template_2_ng_container_7_section_1_Template","categories","value","CategorySelectComponent_ng_template_2_mat_chip_row_2_Template","$event","_r1","updateCategorySearchTerm","target","addCategory","CategorySelectComponent_ng_template_2_ng_container_7_Template","addDisabled","placeholder","addCategoryControl","categoryAutocomplete_r12","chipList_r11","required","searchResult$","CategorySelectComponent","maxCategories","_maxCategories","setMaxCategories","coerceNumberProperty","categoryType","categorySelectService","setCategoryType","_disabled","coerceBooleanProperty","stateChanges$$","next","disable","enable","_required","_value","externalIds","refreshCategoryChipList","_placeholder","plh","shouldLabelFloat","focused","empty","constructor","ngControl","languageToken$","atlasLanguageService","onCategoriesChange","EventEmitter","id","nextId","subscriptions","SubscriptionList","new","Subject","_categories","FormControl","refreshCategories$$","categories$","loading$$","BehaviorSubject","stateChanges","controlType","valueAccessor","setupSubscriptions","ngOnDestroy","destroy","ngAfterViewInit","addCategoryCtrl","nativeElement","addEventListener","onFocusIn","onFocusOut","errorState","isNull","errors","touched","emit","add","afterInitialFetch","categoryOptionsContainer","scrollIntoView","language$","EMPTY","language$$","refreshCategories$","pipe","debounceTime","filter","r","validCategoryRequest","distinctUntilChanged","prev","curr","sameCategoryRequest","tap","map","externalId","type","switchMap","getCategoryByExternalIDsAndType","of","validateCategories","slice","c","onChange","markAsTouched","req","join","event","option","deselect","focus","fetch","category","fetchNext","setDescribedByIds","ids","setAttribute","onContainerClick","onTouched","writeValue","registerOnChange","registerOnTouched","control","setDisabledState","_CategorySelectComponent","ɵɵdirectiveInject","NgControl","CategorySelectService","LANGUAGE_TOKEN","AtlasLanguageService","selectors","viewQuery","rf","ctx","ɵɵhostProperty","provide","MatFormFieldControl","useExisting","decls","vars","consts","template","CategorySelectComponent_glxy_loading_spinner_0_Template","CategorySelectComponent_ng_template_2_Template","component_r13","BusinessCategoryModule","BusinessCategoryService","imports","CommonModule","MatIconModule","MatButtonModule","MatInputModule","MatFormFieldModule","MatAutocompleteModule","MatTooltipModule","FormsModule","ReactiveFormsModule","VaBadgeModule","MatProgressSpinnerModule","GalaxyInfiniteScrollTriggerModule","MatChipsModule","GalaxyLoadingSpinnerModule","GalaxyFormFieldModule","_BusinessCategoryModule","healthCategoryExceptions","healthCategoryRootName","isHealthCategory","category","type","CategoryType","CATEGORY_TYPE_V_CATEGORY","fullName","translations","find","t","locale","Locale","LOCALE_ENGLISH","toLowerCase","externalId","toLocaleLowerCase","CATEGORY_TYPE_V_TAX","startsWith","includes","BusinessProfileTab","HiddenField","FormatPhoneNumberPipe","transform","phoneNumber","countryCode","newCountryCode","format","transformForBusinessProfile","parsedNumber","parsePhoneNumber","isValid","formatInternational","pure","_FormatPhoneNumberPipe","ImageType","enumStringToValue","enumRef","value","AssociateImageRequest","_AssociateImageRequest","proto","m","kwargs","toReturn","DeleteImageRequest","_DeleteImageRequest","ListImagesRequestFilters","_ListImagesRequestFilters","v","ImageAssociation","_ImageAssociation","ListImagesPagedResponse","_ListImagesPagedResponse","ListImagesRequest","_ListImagesRequest","environment","hostMap","HostService","t","ɵɵdefineInjectable","MediaApiService","http","hostService","HttpHeaders","r","request","__spreadProps","__spreadValues","map","resp","ɵɵinject","HttpClient","environment","hostMap","HostService","t","ɵɵdefineInjectable","Tag","_Tag","proto","m","kwargs","toReturn","Video","_Video","Image","_Image","CreateImageRequest","_CreateImageRequest","CreateImageResponse","_CreateImageResponse","CreateVideoRequest","_CreateVideoRequest","CreateVideoResponse","_CreateVideoResponse","GenerateUploadUrlRequest","_GenerateUploadUrlRequest","GenerateUploadUrlResponse","_GenerateUploadUrlResponse","GetImageRequest","_GetImageRequest","GetImageResponse","_GetImageResponse","GetResumableUploadSessionRequest","_GetResumableUploadSessionRequest","GetResumableUploadSessionResponse","_GetResumableUploadSessionResponse","GetVideoRequest","_GetVideoRequest","GetVideoResponse","_GetVideoResponse","MediaApiService$1","http","hostService","HttpHeaders","r","request","map","resp","ɵɵinject","HttpClient","UploadImageResponse","_UploadImageResponse","MediaUploadApi","catchError","err","imageId","error","throwError","MediaApiService","grpcApi","mediaUploadApi","file","formData","servingUrl","mediaType","origin","ɵɵelement","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","_r1","ctx_r1","ɵɵnextContext","ɵɵresetView","uploadPhotos","ɵɵtext","ɵɵelementEnd","ɵɵproperty","uploading","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","UploadImageDialogComponent","constructor","dialogRef","alertService","imageUrlControl","UntypedFormControl","subscriptions","maxFileSizeBytes","ngOnDestroy","forEach","sub","unsubscribe","imageUrl","value","url","push","imageService","createAndAssociate","subscribe","imageId","onSuccess","err","uploadError","openSuccessSnack","image","mediaApiService","get","date","Date","close","error","console","message","openErrorSnack","onCancel","ɵɵdirectiveInject","MatDialogRef","SnackbarService","selectors","decls","vars","consts","template","rf","ctx","$event","ɵɵtemplate","UploadImageDialogComponent_Conditional_5_Template","UploadImageDialogComponent_Conditional_10_Template","ɵɵconditional","_UploadImageDialogComponent","MediaTabService","constructor","accountGroupMediaApiService","mediaApiService","snackbarService","hasMore","BehaviorSubject","totalImages$$","loading$$","pageFetchError$$","imagesSubject$$","setAccountGroupId","accountGroupId","clearConfig","addClientImages","next","imageCursor","addImageToSubject","image","curImages","getValue","find","x","url","type","unshift","index","findIndex","date","splice","concat","removeImageUrlFromSubject","imageUrl","total","removeImageTypeFromSubject","imageType","imageTypeToString","openImageUploadDialog","dialog","dialogRef","open","UploadImageDialogComponent","width","minWidth","maxWidth","minHeight","componentInstance","imageService","firstValueFrom","beforeClosed","then","result","createAndAssociate","servingUrl","create","pipe","switchMap","createResponse","associateRequest","AssociateImageRequest","imageId","associateImage","map","request","ListImagesRequest","cursor","pageSize","listImages","imageAssociations","images","nextCursor","totalResults","forEach","element","get","created","catch","err","console","error","finally","markImageAsLogo","afterClosed","logoUrl","ImageType","LOGO","tap","clientLogo","Date","openSuccessSnack","openErrorSnack","empty","markImageAsPrimary","primaryUrl","PRIMARY","clientPrimary","deleteImage","split","pop","deleteImageRequest","DeleteImageRequest","NOT_SPECIFIED","ɵɵinject","MediaApiService","SnackbarService","factory","ɵfac","_MediaTabService","ɵɵelementStart","ɵɵlistener","ɵɵrestoreView","_r1","ctx_r1","ɵɵnextContext","ɵɵresetView","openImageUploadDialog","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","ɵɵelement","_r4","loadMore","ɵɵproperty","info_r5","loading","$event","_r3","openLightbox","imageMenuClicked","ɵɵtemplate","MediaTabComponent_Conditional_8_Conditional_0_Conditional_1_Template","MediaTabComponent_Conditional_8_Conditional_0_Conditional_2_Template","MediaTabComponent_Conditional_8_Conditional_0_Conditional_3_Template","images_r6","ɵɵconditional","pageFetchError","hasMore","ɵɵpipeBind2","ɵɵpureFunction2","_c0","length","totalImages","MediaTabComponent_Conditional_8_Conditional_0_Template","tmp_2_0","galleryInfo$","MediaTabComponent","constructor","dialog","tabService","accountGroupId","input","required","editDisabled","imageClicked","output","images$","imagesSubject$$","pipe","map","arr","effect","setAccountGroupId","combineLatest","totalImages$$","loading$$","pageFetchError$$","addClientImages","clickedImage","__async","imageUrls","firstValueFrom","images","image","url","emit","index","indexOf","clickedOption","getMenuKey","key","option","MenuOption","Logo","dialogRef","open","ConfirmationModalComponent","componentInstance","title","body","confirmButton","markImageAsLogo","Primary","markImageAsPrimary","Delete","deleteImage","ɵɵdirectiveInject","MatDialog","MediaTabService","selectors","inputs","ɵɵInputFlags","SignalBased","outputs","decls","vars","consts","template","rf","ctx","MediaTabComponent_Conditional_5_Template","MediaTabComponent_Conditional_8_Template","MediaTabComponent_Conditional_10_Template","_MediaTabComponent","onConfirm","close","onCancel","MatDialogRef","ɵɵtextInterpolate","_ConfirmationModalComponent","ɵɵelementContainerStart","ɵɵelementStart","ɵɵlistener","moreHourType_r2","ɵɵrestoreView","_r1","$implicit","ctx_r2","ɵɵnextContext","ɵɵresetView","openEditDialog","value","ɵɵtext","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","editDisabled","ɵɵpureFunction1","_c1","ɵɵtextInterpolate1","localizedDisplayName","ɵɵtemplate","MoreHoursComponent_ng_container_6_ng_container_1_ng_container_1_ng_container_5_Template","ɵɵtextInterpolate","ɵɵpipeBind1","setTypes","moreHourType_r5","_r4","_c2","MoreHoursComponent_ng_container_6_ng_container_1_ng_container_2_ng_container_5_Template","unsetTypes","MoreHoursComponent_ng_container_6_ng_container_1_ng_container_1_Template","MoreHoursComponent_ng_container_6_ng_container_1_ng_container_2_Template","size","MoreHoursComponent_ng_container_6_ng_container_1_Template","moreHoursTypes","length","empty_r6","ɵɵelement","MoreHoursComponent","constructor","dialog","fb","translateService","appearance","markedAsRequired","changed","EventEmitter","subscriptions","Map","ngOnInit","push","loading$","pipe","filter","loading","subscribe","forEach","moreHoursType","parentFormGroup","get","hoursTypeId","set","control","addControl","markAsPristine","ngOnDestroy","subscription","unsubscribe","disabled","markAsTouched","closeAll","editDialogRef","open","EditRegularHoursDialogComponent","disableClose","width","maxWidth","data","hideHolidayHours","componentInstance","showRemoveButton","customTitle","instant","afterClosed","result","markAsDirty","setValue","delete","emit","ɵɵdirectiveInject","MatDialog","UntypedFormBuilder","TranslateService","selectors","inputs","outputs","decls","vars","consts","template","rf","ctx","MoreHoursComponent_ng_container_6_Template","MoreHoursComponent_ng_template_8_Template","ɵɵtemplateRefExtractor","MoreHoursComponent_ng_template_10_Template","_c0","loading_r7","_MoreHoursComponent","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","ɵɵpureFunction2","_c4","ctx_r2","tabInvalid","businessProfileTab","Primary","tabChanged","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","ɵɵlistener","$event","ɵɵrestoreView","_r4","ɵɵnextContext","ɵɵresetView","handleCategoriesChange","ɵɵtemplate","BusinessProfileComponent_mat_tab_4_glxy_form_field_21_glxy_error_10_Template","ɵɵtextInterpolate","primaryBusinessCategoryCtrl_r5","value","length","ɵɵelement","businessCategoriesCtrl_r6","geoControl","mapZoomLevel","inferredMapBounds","businessOperation_r7","code","name","businessOperationError_r8","reopeningDateError_r9","BusinessProfileComponent_mat_tab_4_ng_container_74_glxy_form_field_1_glxy_error_9_Template","ɵɵpropertyInterpolate","reopeningDate_r10","accountGroupForm","get","getError","ɵɵelementContainerStart","BusinessProfileComponent_mat_tab_4_ng_container_74_glxy_form_field_1_Template","closedStatus_r11","undefined","closedStatuses","includes","ecommerce_r12","paymentMethod_r13","paymentMethodError_r14","BusinessProfileComponent_mat_tab_4_ng_template_2_Template","BusinessProfileComponent_mat_tab_4_glxy_form_field_21_Template","BusinessProfileComponent_mat_tab_4_glxy_form_field_22_Template","BusinessProfileComponent_mat_tab_4_forms_geo_input_56_Template","_r2","handleTimeZoneChange","BusinessProfileComponent_mat_tab_4_mat_option_71_Template","BusinessProfileComponent_mat_tab_4_glxy_error_73_Template","BusinessProfileComponent_mat_tab_4_ng_container_74_Template","BusinessProfileComponent_mat_tab_4_forms_input_77_Template","BusinessProfileComponent_mat_tab_4_mat_option_84_Template","BusinessProfileComponent_mat_tab_4_mat_option_92_Template","BusinessProfileComponent_mat_tab_4_glxy_error_94_Template","loading$","ɵɵpureFunction1","_c2","accountGroupNgForm_r15","submitted","basicInfoForm","invalid","ɵɵpipeBind2","_c3","rmProductName","editDisabled","phoneForm","phoneNumberItemFactory","bind","showMap","addressData","serviceAreaForm","serviceAreaToggle","tmp_53_0","listingProfile","napData","timezone","additionalInfoForm","businessOperationMethods$","isConditionalFieldVisible","ecommerceOnly$","paymentMethods$","CUSTOM_ERROR_MESSAGES","Hours","_r17","onMoreHoursChange","moreHoursTypes_r18","moreHoursForm","BusinessProfileComponent_mat_tab_5_ng_template_2_Template","_r16","onBusinessHoursChange","BusinessProfileComponent_mat_tab_5_business_profile_more_hours_11_Template","businessHoursForm","specialHoursForm","moreHoursTypes$","Descriptions","longDescriptionLength","getSuggestion","suggestFieldUpdate","BusinessProfileComponent_mat_tab_6_ng_template_2_Template","BusinessProfileComponent_mat_tab_6_ng_container_11_Template","BusinessProfileComponent_mat_tab_6_ng_container_13_Template","businessDescriptionsForm","AISuggestionFeature$","_c5","Images","BusinessProfileComponent_mat_tab_7_ng_template_2_Template","_r19","openLightbox","accountGroupId","Social","BusinessProfileComponent_mat_tab_8_ng_template_2_Template","BusinessProfileComponent_mat_tab_8_forms_input_13_Template","businessPagesForm","showFourSquare","blogForm","Professional","standardizedTitle_r20","professionalCredential_r21","gender_r22","doctordotcomCategory_r23","fullName","enumVal_r24","BusinessProfileComponent_mat_tab_9_ng_template_2_Template","BusinessProfileComponent_mat_tab_9_mat_option_15_Template","BusinessProfileComponent_mat_tab_9_mat_option_29_Template","BusinessProfileComponent_mat_tab_9_mat_option_36_Template","BusinessProfileComponent_mat_tab_9_mat_option_76_Template","BusinessProfileComponent_mat_tab_9_mat_option_114_Template","personalInformationForm","standardizedTitles$","professionalCredentials","genders$","additionalProfessionalInfoForm","qualificationsAndExperienceForm","compareDoctorDotComCategories","availableDoctorDotComCategories","practiceInformationForm","isProviderOptions$","Attributes","BusinessProfileComponent_mat_tab_10_ng_template_2_Template","_r25","activeTab","googleAttributesForm","googleAttributesMetadata","googleAttributes","getValidCategoryLength","bingAttributesForm","bingAttributesMetadata","bingAttributes","CustomFields","partnerId","auxiliaryDataObjectType","auxiliaryDataAdminURL","BusinessProfileComponent_mat_tab_11_ng_template_2_Template","BusinessProfileComponent_mat_tab_11_aux_auxiliary_data_table_5_Template","Administration","market_r26","BusinessProfileComponent_mat_tab_12_div_4_glxy_form_field_7_mat_option_6_Template","markets","salesperson_r27","salespersonId","BusinessProfileComponent_mat_tab_12_div_4_glxy_form_field_8_mat_option_7_Template","salespeople","_r28","showAdditionalSalespeopleInput","additionalSalespeople","getPrimarySalespersonInAdditionalSalespeopleErrorMsg","BusinessProfileComponent_mat_tab_12_div_4_glxy_form_field_7_Template","BusinessProfileComponent_mat_tab_12_div_4_glxy_form_field_8_Template","BusinessProfileComponent_mat_tab_12_div_4_div_9_Template","BusinessProfileComponent_mat_tab_12_div_4_glxy_error_10_Template","BusinessProfileComponent_mat_tab_12_div_4_forms_va_input_tags_11_Template","BusinessProfileComponent_mat_tab_12_div_4_glxy_error_12_Template","salesForm","hasAccessToMarkets","hasAccessToSales","isAdditionalSalespeopleInputVisible","BusinessProfileComponent_mat_tab_12_ng_template_2_Template","BusinessProfileComponent_mat_tab_12_div_4_Template","BusinessProfileComponent_mat_tab_12_forms_input_12_Template","adminForm","showCustomerIdentifier","tags","GenderKeys","GenderSelection","SELECT_OPTION","FEMALE","MALE","OTHER","CountryPaymentMethods","DEFAULT","RichDataPaymentMethods","AMERICAN_EXPRESS","ANDROID_PAY","APPLE_PAY","CASH","CHECK","DEBIT","DINERS_CLUB","DISCOVER","MASTERCARD","PAYPAL","SAMSUNG_PAY","STORE_CARD","TRAVELERS_CHECK","VISA","CZ","CCS","SODEXO","GOPAY","V_PAY","FINANCING","INVOICE","PAYSEC","BITCOIN","BusinessOperationMethods","ClosedStatus","UNSPECIFIED","OPEN","LIMITED","TEMPORARY","PERMANENT","SellingMethodsAvailability","IsAvailable","UNSET","YES","NO","formTabs","BusinessProfileTab","serviceAvailabilityForm","hoursForm","timeZoneControl","isProviderOptions","HealthCareProfessionalInformationIsProvider","IsProviderTrue","IsProviderFalse","BusinessProfileComponent","constructor","listingProfileService","listingProfileApiService","fb","snackbar","salespersonService","zone","formatPhoneNumber","featureFlagService","translateService","geocoder","productAnalyticsService","lightbox","suggestionService","listingProductsApiService","destroyRef","httpClient","input","required","maxShareOfVoiceKeywords","maxCompetitors","enabledTabs","tabBackground","saved","EventEmitter","visibleConditionalFields","lengthOfRepeatedField","error","instant","maxLength","fieldName","friendlyName","profileLoading$$","ReplaySubject","asObservable","addressFormDirty","partnersLongDescriptionLength","MTCZ","BLS","hasProfessionalCategory","control","formStateWithDisabled","phoneValidator","getCountryCode","countryChanges","inject","COUNTRY_CONTROL_TOKEN","valueChanges","pipe","filter","country","map","mapsURL","fieldType","GetSuggestionRequest","businessId","languageCode","currentLang","defaultLang","catchError","err","message","open","politeness","duration","EMPTY","resp","suggestion","existing","option","tone","SuggestFieldUpdateRequest","existingValue","accountGroupId$","toObservable","effect","createForm","switchMap","getMoreHoursTypes","response","moreHoursTypes","shareReplay","refCount","bufferSize","attributesMetadata$","getAttributeMetadata","attributeMedata","attributesMetadata","toSignal","listingProfile$","tap","next","ProjectionFilter","externalIdentifiers","socialUrls","hoursOfOperation","richData","businessHours","legacyProductDetails","computed","am","find","b","vendorId","googleAttributeMetadata","a","bingAttributeMetadata","mapsLoaded$","jsonp","retry","of","productNames","RM","group","businessType","Validators","min","places","businessName","whitespaceValidator","nameCharacterValidator","commonBusinessNames","array","website","urlValidator","email","emailValidator","primaryBusinessCategory","businessCategories","workNumbers","faxNumber","cellNumber","callTrackingNumbers","tollFreeNumber","paymentMethods","paymentMethodValidator","servicesOffered","compose","totalLengthOfRepeatedFieldValidator","brandsCarried","landmark","bookingUrl","ico","facebookUrl","foursquareUrl","linkedInUrl","twitterUrl","pinterestUrl","instagramUrl","youTubeUrl","blogOrRssFeedUrl","shortDescription","longDescription","standardizedTitle","firstName","middleInitials","lastName","gender","emailAddress","ecommerceOnly","closedStatus","reopeningDate","doctorDotComCategories","educations","specialties","residencies","fellowships","nationalProviderIdentifier","medicalLicenseNumber","stateLicense","acceptingPatients","insurancesAccepted","firmClinicOfficeName","isProvider","hospitalAffiliations","isTabEnabled","market","additionalSalespersonIds","validators","primaryIsNotInAdditionalSalespeople","salesperson","primaryIsSelectedWhenHavingAdditionalSalespeople","customerIdentifier","notes","timezoneControl","takeUntilDestroyed","subscribe","updateValueAndValidity","loadFormValues","createDefaultLegacyProductDetails","commonName","setControlsForFormArray","ids","vCategoryIds","primaryCategory","slice","patchValue","companyName","serviceArea","serviceAreaBusiness","markAsPristine","setValue","disable","company","address1","address","address2","city","province","state","zip","location","workNumber","number","transformForBusinessProfile","callTrackingNumber","conditionalFields","richDataCf","valuesToPatch","forEach","cf","id","push","generalHours","hours","hoursTypeId","mergedHours","MergeHours","regularHours","specialHours","addControl","linkedinUrl","youtubeUrl","rssUrl","controls","setValidators","description","serviceAvailability","healthCareProfessionalInformation","initials","professionalCredential","HealthCareProfessionalInformationGender","NotSpecified","school","specialty","residency","fellowship","isTakingPatients","office","IsProviderNotSpecified","marketId","salesPersonId","additionalSalesPersonIds","adminNotes","getGoogleCheckboxValues","formGroup","metaAttribute","values","Object","keys","key","getRawValue","indexOfKeyInValueDisplayName","valueDisplayNames","findIndex","d","getBingCheckboxValues","getDoctorDotComCategories","accountGroup","GetDoctorDotComCategoriesRequest","c","getBingAttributesToSubmit","duHastMe","bingAttributeMetaData","attribs","sort","displayName","localeCompare","sortOrder","md","parent","valueType","AttributesValueType","REPEATED_ENUM","form","ENUM","ctrl","v","ba","toApiJson","i","j","Boolean","cfId","getGoogleAttributesToSubmit","googleAttributeMetaData","ga","category1","category2","onSubmit","arg","__async","pristine","auxiliaryDataTable","valid","getFirstInvalidTab","controlKey","getChangedValues","trackChangedForms","operations","UpdateOperations","addUpdateOperation","GoogleAttributesUpdateOperation","googleAttribute","BingAttributesUpdateOperation","bingAttribute","phones","basicInfo","addressForm","NapUpdateOperation","ServiceArea","Geo","businessDescriptions","businessPages","blog","SocialURLsUpdateOperation","healthCareProfessionalInfo","healthCareHasChanges","practiceInformation","additionalProfessionalInfo","qualificationsAndExperience","personalInformation","HealthCareProfessionalInformation","serviceAvailabilityChanges","serviceAvailabilityInfo","ServiceAvailability","closedStatusDate","Date","additionalInfo","richDataUpdateOperations","RichData","cfValues","field","RichDataUpdateOperation","externalIdentifiersUpdateOperation","ExternalIdentifiersUpdateOperation","updateOrigin","primary","additional","Array","from","Set","LegacyProductDetailsUpdateOperation","doUpdate","tabKeys","sh","SplitHours","BusinessHours","BusinessHoursUpdateOperation","onlyBusinessHoursSave","updateParams","bulkUpdate","retryable","onAction","saveChanges","snackBarRef","trackEvent","dismiss","afterDismissed","auxiliaryDataSaved","onlyHoursSave","markFormsPristine","accountSaved","customFieldsSaved","emit","ngOnInit","watchMarketForSalespeople","categories","allCategories","currentDoctorDotComCategories","console","distinctUntilChanged","checkFeatureFlag","getMapZoomLevel","inferMapBounds","buildTimezoneDisplay","bomTranslateString","bomTranslateKeys","k","isNaN","Number","combineLatest","stream","startWith","translations","method","ecommerceValueChanges$","availabilityOptions","paymentMethodKeys","paymentMethodsString","countryCode","paymentMethodsTranslations","setPaymentMethods","genderTranslateString","genderTranslateKeys","genders","selection","isProviderTranslateString","isProviderTranslateKeys","options","parseInt","getAllStandardizedTitles","standardizedTitles","availabilities","availabilityTranslateKeys","availabilityTranslateStrings","availabilityStrings","translation","tab","isValidArray","some","category","isHealthCategory","errors","primaryName","req","listSalespersons","result","results","sp","convertFromSales","disabled","formArray","controlFactory","fixControlsForFormArray","defaultControlFactory","zoom","maxCompetitorsFields","maxShareOfVoiceKeywordsFields","didLoad","fullAddress","join","geocode","status","google","maps","GeocoderStatus","OK","viewport","geometry","run","east","getNorthEast","lng","north","lat","west","getSouthWest","south","data","imageUrls","index","onTabSwitch","event","dirty","hideSaveButton","indexOf","hiddenFields","HiddenField","SocialFourSquare","Map","Markets","Sales","CustomerIdentifier","showDateTemporaryClose","closedValue","timeZone","changedForms","selectedMethod","ɵɵdirectiveInject","ListingProfileService","ListingProfileApiService","FormBuilder","MatSnackBar","SalespersonService","NgZone","FormatPhoneNumberPipe","FeatureFlagService","TranslateService","MapGeocoder","ProductAnalyticsService","VaFullscreenLightboxService","SuggestionApiService","ListingProductsApiService","DestroyRef","HttpClient","selectors","viewQuery","rf","ctx","decls","vars","consts","template","i0","_r1","preventDefault","BusinessProfileComponent_mat_tab_4_Template","BusinessProfileComponent_mat_tab_5_Template","BusinessProfileComponent_mat_tab_6_Template","BusinessProfileComponent_mat_tab_7_Template","BusinessProfileComponent_mat_tab_8_Template","BusinessProfileComponent_mat_tab_9_Template","BusinessProfileComponent_mat_tab_10_Template","BusinessProfileComponent_mat_tab_11_Template","BusinessProfileComponent_mat_tab_12_Template","BusinessProfileComponent_mat_card_13_Template","BusinessProfileComponent_ng_template_14_Template","ɵɵtemplateRefExtractor","ɵɵclassMap","_c1","_BusinessProfileComponent","LegacyProductDetails","invalidPaymentMethods","selectedPaymentMethod","en_devel_default","WEBLATE_COMPONENT_NAME","TaxonomyI18nModule","TranslateModule","LexiconModule","forChild","componentName","WEBLATE_COMPONENT_NAME","baseTranslation","_TaxonomyI18nModule","CompetitorsTabService","constructor","api","getCompetitors","businessId","cursor","pageSize","req","pagingOptions","pipe","map","res","competitors","catchError","of","create","competitor","location","name","url","update","competitorId","fieldMask","paths","delete","ɵɵinject","CompetitorApiService","factory","ɵfac","_CompetitorsTabService","CompetitorsTabModule","CompetitorsTabService","imports","CommonModule","MatCardModule","MatButtonModule","MatIconModule","MatDialogModule","MatInputModule","MatProgressSpinnerModule","TranslateModule","ReactiveFormsModule","GalaxyFormFieldModule","_CompetitorsTabModule","MediaTabGalleryModule","CommonModule","MatGridListModule","MatChipsModule","VaActionMenuModule","TranslateModule","_MediaTabGalleryModule","UploadImageDialogModule","CommonModule","VaFormsModule","MatIconModule","MatButtonModule","MatProgressBarModule","ReactiveFormsModule","MatDialogModule","TranslateModule","_UploadImageDialogModule","MediaTabModule","MediaTabService","SnackbarService","imports","CommonModule","MatCardModule","MatButtonModule","MediaTabGalleryModule","MatProgressBarModule","UploadImageDialogModule","MatIconModule","MatDialogModule","TranslateModule","_MediaTabModule","PlaceAutocompleteComponent","constructor","editDisabled","selected","EventEmitter","geoLocation","b","latitude","undefined","longitude","center","google","maps","LatLng","maxBounds","Circle","radius","getBounds","getPlaceAutocomplete","options","types","bounds","strictBounds","fields","autocomplete","places","Autocomplete","addresstext","nativeElement","event","addListener","place","getPlace","invokeEvent","autocompleteInput","blur","focus","emit","GooglePlace","placeId","place_id","placeName","formatName","city","address_components","find","component","indexOf","long_name","province","short_name","country","joinFirstItems","name","selectors","viewQuery","rf","ctx","ɵɵelementStart","ɵɵtwoWayListener","$event","i0","ɵɵrestoreView","_r1","ɵɵtwoWayBindingSet","ɵɵresetView","ɵɵelementEnd","ɵɵproperty","ɵɵadvance","ɵɵtwoWayProperty","_PlaceAutocompleteComponent","items","delimiter","max","filter","Boolean","slice","join","BusinessProfileModule","VaFullscreenLightboxService","imports","CommonModule","ReactiveFormsModule","ImageTransformationModule","VaFormsModule","TaxonomyServiceModule","MatInputModule","MatCardModule","MatTabsModule","MatTooltipModule","MatSelectModule","MatButtonModule","MatIconModule","MatDialogModule","MatSnackBarModule","SalespersonServiceModule","MediaTabModule","MatCheckboxModule","MatDatepickerModule","AddressFormV2Module","TaxonomyI18nModule","GoogleMapsModule","TranslateModule","LexiconModule","forChild","componentName","baseTranslation","ProductActivationPrereqFormModule","CompetitorsTabModule","GalaxyCheckboxModule","MatAutocompleteModule","GalaxyTimezoneSelectorModule","AuxiliaryDataModule","BusinessCategoryModule","GalaxyFormFieldModule","FormsModule","MatRadioModule","MatChipsModule","MatExpansionModule","MatFormFieldModule","GalaxyAlertModule","GalaxyLoadingSpinnerModule","_BusinessProfileModule","import_assert_never","ActionListsInjectionToken","InjectionToken","ActionListsServiceModule","forRoot","config","ngModule","providers","provide","useExisting","_ActionListsServiceModule","AccountListsService","constructor","partnerId$","marketId$","config","addAccountsToActionList","listName","accounts","combineLatest","pipe","switchMap","pid","market","listActionLists","searchString","pageIndex","pageSize","map","resp","actionLists","l","ɵɵinject","ActionListsInjectionToken","factory","ɵfac","providedIn","ActionListsServiceModule","_AccountListsService","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ɵɵproperty","ctx_r1","WhichAccountsOption","selected","ɵɵadvance","ɵɵtextInterpolate1","ɵɵpipeBind1","ɵɵtextInterpolate2","selectedRowCount$","ɵɵelementContainerStart","ɵɵelement","item_r3","value","label","ɵɵtextInterpolate","description","ɵɵtemplate","AccountListsModalComponent_ng_container_31_ng_container_5_Template","selectedList","NewListSentinel","NewListText","list_r4","newListName","newListSentinel","Object","AccountListsModalComponent","constructor","dialogRef","dialogData","accountListsService","alertService","config","vaFilteredMatTableService","selectedRows$","pipe","map","rows","length","displayedRowCount$","displayedRows$","totalResults$","tableDataService","existingLists$","of","tap","actionPending$$","next","switchMap","listActionLists","resp","concat","actionLists","l","name","accounts","catchError","err","console","error","status","openErrorSnack","EMPTY","whichAccounts","UntypedFormControl","visible","formGroup","UntypedFormGroup","showNewListNameInput$","valueChanges","startWith","BehaviorSubject","actionPending$","asObservable","shareReplay","formInvalid$","combineLatest","pending","trim","getAccounts","which","all","loadAllRowIDs","__spreadProps","__spreadValues","currentTableDataSettings","pageIndex","pageSize","totalPageSize","r","businessId","accountGroupId","assertNever","addToList","agids$","listName","agids","addAccountsToActionList","take","openSuccessSnack","interpolateTranslateParams","toString","list","finalize","subscribe","close","ɵɵdirectiveInject","MatDialogRef","MAT_DIALOG_DATA","AccountListsService","SnackbarService","ActionListsInjectionToken","selectors","decls","vars","consts","template","rf","ctx","AccountListsModalComponent_mat_radio_button_11_Template","AccountListsModalComponent_ng_container_31_Template","AccountListsModalComponent_ng_template_33_Template","ɵɵtemplateRefExtractor","AccountListsModalComponent_glxy_form_field_35_Template","ɵɵlistener","i0","ɵɵrestoreView","_r1","ɵɵresetView","AccountListsModalComponent_ng_container_43_Template","AccountListsModalComponent_ng_template_45_Template","loadingSpinner_r5","existingList_r6","_AccountListsModalComponent"],"x_google_ignoreList":[0,1,31,32]}