{"version":3,"file":"assets/chunk.7fcca5ec988ae06ca1ac.js","mappings":"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","sources":["./visual-verification/live-view/template.hbs","./visual-verification/onboard-timeline/template.hbs","./visual-verification/responder/template.hbs","./visual-verification/svr-timeline/template.hbs","./components/visual-verification/hidden-devices-info/index.hbs","./components/visual-verification/hidden-devices-info/index.ts","./components/visual-verification/session-navigator/index.hbs","./components/visual-verification/session-navigator/index.ts","../rewritten-packages/ember-intl.4169306b/node_modules/ember-intl/helpers/format-date.js","./components/visual-verification/cdql-timeline/date-changed/index.hbs","./components/visual-verification/cdql-timeline/date-changed/index.ts","./components/modals/snapshot-viewer/snapshot-modal/index.hbs","./components/modals/snapshot-viewer/snapshot-modal/index.ts","./components/video/clips/clip-display/cdql-clip-display/cdql-tooltip/index.hbs","./components/video/clips/clip-display/cdql-clip-display/cdql-tooltip/index.ts","./components/snapshot-viewer/gallery-image/index.hbs","./components/snapshot-viewer/gallery-image/index.ts","./components/video/clips/clip-display/cdql-clip-display/index.hbs","./components/video/clips/clip-display/cdql-clip-display/index.ts","./components/visual-verification/cdql-timeline/cdql-icon/index.hbs","./components/visual-verification/cdql-timeline/cdql-icon/index.ts","./components/visual-verification/cdql-timeline/index.hbs","./components/visual-verification/cdql-timeline/index.ts","./visual-verification/v2/template.hbs","./assets/_route_/visual-verification.live-view.js","./components/image-sensor/gallery-image/index.hbs","./components/image-sensor/gallery-image/index.ts","./components/modals/image-sensor/image-modal/index.hbs","./components/modals/image-sensor/image-modal/index.ts","./components/video/clips/clip-display/person-detected-clip-display/index.hbs","./components/video/clips/clip-display/person-detected-clip-display/index.ts","./components/video/clips/clip-display/visual-verification-clip-display/index.hbs","./components/video/clips/clip-display/visual-verification-clip-display/index.ts","./components/video/clips/loading/index.hbs","./components/video/clips/loading/index.ts","./components/video/clips/playable-clip/visual-verification-clip/index.hbs","./components/video/clips/playable-clip/visual-verification-clip/index.ts","./visual-verification/live-view/controller.ts","./visual-verification/live-view/route.ts","./visual-verification/onboard-timeline/controller.ts","./visual-verification/onboard-timeline/route.ts","./visual-verification/responder/controller.ts","./visual-verification/responder/route.ts","./visual-verification/svr-timeline/controller.ts","./visual-verification/svr-timeline/route.ts","./components/modals/video/responder-url/index.hbs","./components/modals/video/responder-url/index.ts","./visual-verification/v2/controller.ts","./visual-verification/v2/route.ts"],"sourcesContent":["import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{!-- @glint-expect-error Please document signature for this component. --}}\\n\",{ moduleName: \"customer-site/visual-verification/live-view/template.hbs\" })","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{!-- @glint-expect-error Component name is incorrect, and component is not typed correctly. Please fix this. --}}\\n\\n\",{ moduleName: \"customer-site/visual-verification/onboard-timeline/template.hbs\" })","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"\\n \\n\\n \\n \\n \\n \\n\\n \\n
\\n
\\n

{{t \\'generic.visualVerification.eventsCapturedBetween\\' htmlSafe=true}}

\\n
\\n
\\n\\n {{!-- @glint-expect-error There are missing required arguments, please fix this. --}}\\n \\n\\n \\n
\\n\\n \\n\\n \\n \\n
\",{ moduleName: \"customer-site/visual-verification/responder/template.hbs\" })","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{!-- @glint-expect-error Component name is wrong, and component is not typed correctly. Please fix this. --}}\\n\\n\",{ moduleName: \"customer-site/visual-verification/svr-timeline/template.hbs\" })","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"
\\n \\n
\\n\\n
\\n {{tc this \\'omitCertainDevices\\'}}:\\n
    \\n {{#if @hiddenCameras.length}}\\n
  • \\n {{t \\'generic.camera\\'}}:\\n {{#each @hiddenCameras as |camera index|}}\\n {{#if (eq index 0)}}\\n {{camera.description}}\\n {{else}}\\n , {{camera.description}}\\n {{/if}}\\n {{/each}}\\n
  • \\n {{/if}}\\n {{#if @hiddenImageSensors.length}}\\n
  • \\n {{t \\'generic.devices.imageSensor\\'}}:\\n {{#each @hiddenImageSensors as |sensor index|}}\\n {{#if (eq index 0)}}\\n {{sensor.description}}\\n {{else}}\\n , {{sensor.description}}\\n {{/if}}\\n {{/each}}\\n
  • \\n {{/if}}\\n
\\n
\\n\",{ moduleName: \"customer-site/components/visual-verification/hidden-devices-info/index.hbs\" })","/* import __COLOCATED_TEMPLATE__ from './index.hbs'; */\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { intlPath } from '@adc/i18n/path';\n\nimport './_style.scss';\nimport type ImageSensor from 'customer-site/models/image-sensor/image-sensor';\nimport type Camera from 'customer-site/models/video/devices/camera';\n\ninterface VisualVerificationHiddenDevicesInfoSignature {\n Args: {\n hiddenCameras: Camera[];\n hiddenImageSensors: ImageSensor[];\n };\n}\n\n@intlPath({ path: 'visual-verification/hidden-devices-info' })\nexport default class HiddenDevicesInfo extends Component {\n @tracked toolTipOpen = false;\n\n /**\n * Action to handle the Hidden Devices Info tooltip.\n */\n @action\n toggleToolTip(): void {\n this.toolTipOpen = !this.toolTipOpen;\n }\n}\n\ndeclare module '@glint/environment-ember-loose/registry' {\n export default interface Registry {\n 'VisualVerification::HiddenDevicesInfo': typeof HiddenDevicesInfo;\n }\n}\n","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"
\\n \\n
\",{ moduleName: \"customer-site/components/visual-verification/session-navigator/index.hbs\" })","/* import __COLOCATED_TEMPLATE__ from './index.hbs'; */\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { intlPath } from '@adc/i18n/path';\n\nimport './_style.scss';\nimport type VisualVerification from 'customer-site/services/visual-verification';\n\ninterface SessionNavigatorSignature {\n Element: HTMLDivElement;\n Args: {\n forDate: string;\n go: 'back' | 'forward';\n };\n}\n\n@intlPath({ path: 'visual-verification/session-navigator' })\nexport default class SessionNavigator extends Component {\n @service declare visualVerification: VisualVerification;\n\n /**\n * Action which triggers a new /sessions call\n */\n @action\n callSession(): ReturnType {\n return this.visualVerification.loadSession(true, this.args.forDate);\n }\n}\n\ndeclare module '@glint/environment-ember-loose/registry' {\n export default interface Registry {\n 'VisualVerification::SessionNavigator': typeof SessionNavigator;\n }\n}\n","var _class, _descriptor;\nfunction _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == typeof i ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != typeof i) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\nfunction _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, (\"value\" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }\nfunction _initializerWarningHelper(r, e) { throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\"); }\nimport Helper from '@ember/component/helper';\nimport { inject as service } from '@ember/service';\nimport { isEmpty } from '@ember/utils';\nlet FormatDateHelper = (_class = class FormatDateHelper extends Helper {\n constructor() {\n // eslint-disable-next-line prefer-rest-params\n super(...arguments);\n\n // @ts-expect-error: Property 'onLocaleChanged' is private and only accessible within class 'IntlService'.\n _initializerDefineProperty(this, \"intl\", _descriptor, this);\n _defineProperty(this, \"allowEmpty\", true);\n this.intl.onLocaleChanged(this.recompute, this);\n }\n compute([value, positionalOptions], namedOptions) {\n const options = positionalOptions ? Object.assign({}, positionalOptions, namedOptions) : namedOptions;\n if (isEmpty(value)) {\n if (options?.allowEmpty ?? this.allowEmpty) {\n return '';\n }\n\n /*\n TODO: {{format-date}} is the only helper that always allows\n an undefined value. That is, it can never throw an error.\n For ember-intl@v7, unify the options of all helpers.\n */\n // if (typeof value === 'undefined') {\n // throw new Error('{{format-date}} helper requires a value.');\n // }\n }\n return this.intl.formatDate(value, options);\n }\n}, _descriptor = _applyDecoratedDescriptor(_class.prototype, \"intl\", [service], {\n configurable: true,\n enumerable: true,\n writable: true,\n initializer: null\n}), _class);\nexport { FormatDateHelper as default };","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"\\n

\\n {{format-date @middleOfTheNight day=\\\"numeric\\\" month=\\\"short\\\"}}\\n

\\n\",{ moduleName: \"customer-site/components/visual-verification/cdql-timeline/date-changed/index.hbs\" })","/* import __COLOCATED_TEMPLATE__ from './index.hbs'; */\nimport templateOnlyComponent from '@ember/component/template-only';\n\nimport './_style.scss';\n\nexport interface VVCdqlTimelineDateChangedSignature {\n Args: {\n middleOfTheNight: Date;\n left: number;\n };\n}\n\nconst VVCdqlTimelineDateChanged = templateOnlyComponent();\nexport default VVCdqlTimelineDateChanged;\n\ndeclare module '@glint/environment-ember-loose/registry' {\n export default interface Registry {\n 'VisualVerification::CdqlTimeline::DateChanged': typeof VVCdqlTimelineDateChanged;\n }\n}\n","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"
\\n \\n <:header as |DialogHeader|>\\n \\n
\\n \\n {{#if this.snapshotImageName}}\\n {{this.snapshotImageName}}\\n {{/if}}\\n
\\n
\\n \\n\\n <:default>\\n
\\n
\\n {{#if this.replacedByClip}}\\n {{!-- @glint-expect-error this.clip can be undefined, we should fix that. --}}\\n \\n {{else}}\\n \\n {{/if}}\\n {{#if this.thumbnail}}\\n {{#each this.snapshots as |item|}}\\n {{!-- @glint-expect-error media type is too broad, doesn\\'t have thumbnail (need to narrow it to correct type) --}}\\n {{#if (eq item.snapshot.model.media.thumbnail this.thumbnail)}}\\n
\\n {{#unless item.snapshot.replacedByClip}}\\n \\n {{/unless}}\\n \\n
\\n {{/if}}\\n {{/each}}\\n {{/if}}\\n
\\n
\\n
\\n {{#each this.snapshots as |item|}}\\n {{!-- @glint-expect-error media type is too broad, doesn\\'t have thumbnail (need to narrow it to correct type) --}}\\n
\\n \\n \\n \\n {{#if (and item.snapshot.replacedByClip (not item.snapshot.hasBeenViewed))}}\\n
\\n {{/if}}\\n
\\n {{/each}}\\n
\\n
\\n
\\n \\n \\n
\",{ moduleName: \"customer-site/components/modals/snapshot-viewer/snapshot-modal/index.hbs\" })","/* import __COLOCATED_TEMPLATE__ from './index.hbs'; */\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action, computed } from '@ember/object';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport { isPresent } from '@ember/utils';\nimport { task, timeout } from 'ember-concurrency';\nimport { MediaItem } from 'customer-site/classes/video/clips/helpers/clip-management';\nimport { VideoItem } from 'customer-site/components/video/clips/video-modal/index';\nimport { intlPath } from '@adc/i18n/path';\nimport { EmberVisualVerificationLiveView } from '../../../../enums/CustomerPageUrl';\n\nimport type VisualVerificationItem from 'customer-site/classes/visual-verification/visual-verification-item';\nimport type AnalyticsSnapshotEvent from 'customer-site/models/video/analytics-snapshot-event';\nimport type VideoEvent from 'customer-site/models/video/video-event';\nimport type VisualVerificationEvent from 'customer-site/models/visual-verification/event';\nimport './_style.scss';\nimport type ADCIntlService from '@adc/i18n/services/adc-intl';\nimport type Store from '@ember-data/store';\nimport type AjaxService from 'customer-site/services/ajax';\nimport type ContextManager from 'customer-site/services/context-manager';\nimport type NavigationService from 'customer-site/services/navigation';\n\ninterface Item {\n snapshot: VisualVerificationItem;\n}\ninterface SnapshotModalSignature {\n Args: {\n model: {\n clip: VideoItem | undefined;\n replacedByClip: boolean;\n image: AnalyticsSnapshotEvent;\n id: string;\n snapshots: Item[];\n };\n };\n}\n\nfunction shouldHideLiveView(this: SnapshotModal): Promise {\n return this.ajax\n .apiRequest<{ value: { timeRemaining: number } }>(\n 'visualverification/timeremaining',\n undefined,\n null,\n 'GET',\n false\n )\n .then((result) => {\n if (!result?.value.timeRemaining) {\n return true;\n }\n return result.value.timeRemaining <= 1000;\n });\n}\n\n/**\n * @classdesc\n * A modal for displaying an image\n */\n@intlPath({ path: 'modals/snapshot-viewer/snapshot-modal' })\nexport default class SnapshotModal extends Component {\n @service declare intl: ADCIntlService;\n @service declare navigation: NavigationService;\n @service declare ajax: AjaxService;\n @service declare contextManager: ContextManager;\n @service declare store: Store;\n\n constructor(owner: unknown, args: SnapshotModalSignature['Args']) {\n super(owner, args);\n this.pullCanAccessLiveView.perform();\n this.checkForClipsTask.perform();\n this.selectedImage = this.thumbnail;\n }\n @tracked selectedImage: string;\n @tracked disableLiveViewButton = true;\n @tracked checkForLiveViewAccess = true;\n\n /**\n * The URL for the image\n */\n @alias('args.model.image.thumbnail')\n declare thumbnail: string;\n\n /**\n * The image model\n */\n @alias('args.model.image')\n declare image: AnalyticsSnapshotEvent | VisualVerificationEvent;\n\n /**\n * The clip which renderes upon clicking update\n */\n @alias('args.model.clip')\n clip?: VideoItem;\n\n /**\n * States if the image has been previously replaced by a clip\n */\n @alias('args.model.replacedByClip')\n replacedByClip?: boolean;\n\n /**\n * Snapshot Event Id\n */\n @alias('args.model.id')\n declare snapshotEventId: string;\n\n /**\n * The image sensor name\n */\n @alias('args.model.image.camera.description')\n declare snapshotImageName: string;\n\n /**\n * Sibling images\n */\n @alias('args.model.snapshots')\n declare snapshots: Item[];\n\n @alias('args.model.image.camera.id')\n declare cameraId: string;\n\n /**\n * Indicates if the logged in user can access visual verification's live view.\n */\n @computed('canAccessLiveView', 'disableLiveViewButton')\n get hideLiveViewButton(): boolean {\n return !this.canAccessLiveView || this.disableLiveViewButton;\n }\n\n /**\n * Stop polling if all clips have been loaded.\n */\n get shouldCheckForNewClips(): boolean {\n return this.snapshots.every((snapshot) => snapshot.snapshot.replacedByClip);\n }\n\n /**\n * Check for assosciated clip task. Polling runs every 15 seconds.\n */\n checkForClipsTask = task(async () => {\n while (!this.shouldCheckForNewClips) {\n this.checkForClips();\n await timeout(15000);\n }\n });\n\n /**\n * Check for assosciated clips.\n */\n checkForClips(): void {\n const vvEvents = this.store.peekAll('visual-verification/event');\n this.snapshots.forEach((item: Item) => {\n const model = item.snapshot.model,\n snapshotId = model.eventId,\n hasClip = vvEvents.toArray().some((vvEvent) => vvEvent.previewId === snapshotId);\n if (hasClip) {\n item.snapshot.hasClip = hasClip;\n }\n });\n }\n\n /**\n * Function which will replace all the snapshots which have associated clips.\n */\n\n loadClips: VoidFunction = () => {\n for (let i = 0; i < this.snapshots.length; i++) {\n const item = this.snapshots[i];\n if (item.snapshot.hasClip) {\n const snapshotId = item.snapshot.model.eventId;\n const associatedClip = this.fetchClip(snapshotId);\n\n if (associatedClip) {\n this.clip = associatedClip;\n this.replacedByClip = true;\n item.snapshot.replacedByClip = true;\n }\n }\n }\n };\n\n /**\n * Multiplayer component will require its parameter to be of type VideoItem[].\n * This function takes in the id of an associated snapshot and if the associated clip is present it will return converted VideoItem object.\n */\n fetchClip(snapshotId: string): VideoItem {\n const vvEvents = this.store.peekAll('visual-verification/event');\n let clipIdToLoad = '0';\n vvEvents.forEach((vvItem: VisualVerificationEvent) => {\n if (vvItem.previewId === snapshotId) {\n clipIdToLoad = vvItem.eventId;\n }\n });\n const vvEvent = this.store.peekRecord('visual-verification/event', clipIdToLoad),\n mediaItem = new MediaItem(vvEvent, vvEvent?.media as VideoEvent);\n return new VideoItem(mediaItem, mediaItem, true, 0);\n }\n\n /**\n * Task to check if the user should have access to view Live View page\n */\n pullCanAccessLiveView = task({ drop: true }, async () => {\n while (this.checkForLiveViewAccess) {\n const hideLiveView = await shouldHideLiveView.call(this);\n if (hideLiveView) {\n this.checkForLiveViewAccess = false;\n }\n this.disableLiveViewButton = hideLiveView;\n await timeout(15000);\n }\n });\n\n /**\n * Indicates if the logged in user can access visual verification's live view.\n */\n @computed()\n get canAccessLiveView(): boolean {\n // Do not copy this deprecated usage. If you see this, please fix it\n // eslint-disable-next-line @adc/ember/no-context-manager-get-route\n return isPresent(this.contextManager.getRouteItem(EmberVisualVerificationLiveView));\n }\n\n /**\n * Transitions to the visual verification's live view route.\n */\n @action\n async transitionToLiveView(cameraId: string): Promise {\n (await shouldHideLiveView.call(this))\n ? (this.disableLiveViewButton = true)\n : this.navigation.transitionToRouteId(EmberVisualVerificationLiveView, { queryParams: { cameraId } });\n }\n\n /**\n * Select the thumbnail clicked on\n */\n @action\n handleClick(imageSrc: string, item: Item): void {\n this.selectedImage = imageSrc;\n this.image = item.snapshot.model;\n\n if (item.snapshot.replacedByClip) {\n this.replacedByClip = true;\n item.snapshot.hasBeenViewed = true;\n this.clip = this.fetchClip(item.snapshot.model.eventId);\n } else {\n this.clip = undefined;\n this.replacedByClip = false;\n }\n }\n}\n\ndeclare module '@glint/environment-ember-loose/registry' {\n export default interface Registry {\n 'Modals::SnapshotViewer::SnapshotModal': typeof SnapshotModal;\n }\n}\n","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"
\\n \\n
\\n\\n
\\n {{@tooltipText}}\\n
\\n\\n\",{ moduleName: \"customer-site/components/video/clips/clip-display/cdql-clip-display/cdql-tooltip/index.hbs\" })","/* import __COLOCATED_TEMPLATE__ from './index.hbs'; */\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { intlPath } from '@adc/i18n/path';\n\nimport './_style.scss';\n\ninterface CdqlClipDisplayTooltipSignature {\n Args: {\n tooltipText: string;\n };\n}\n\n@intlPath({ path: 'video/clips/clip-display/cdql-clip-display/cdql-tooltip' })\nexport default class CdqlClipDisplayTooltip extends Component {\n @tracked toolTipOpen = false;\n\n /**\n * Action to handle the Hidden Devices Info tooltip.\n */\n @action\n toggleToolTip(): void {\n this.toolTipOpen = !this.toolTipOpen;\n }\n}\n\ndeclare module '@glint/environment-ember-loose/registry' {\n export default interface Registry {\n 'Video::Clips::ClipDisplay::CdqlClipDisplay::CdqlTooltip': typeof CdqlClipDisplayTooltip;\n }\n}\n","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"
\\n
\\n \\n
\\n \\n
\\n\\n
\\n \\n \\n
\\n
\\n \\n\\n
\\n \\n\\n
\\n {{!-- @glint-expect-error camera is async, so this should be `(get @image.camera \\'description\\')`, please fix this. --}}\\n
{{await @image.camera.description}}
\\n {{!-- @glint-expect-error AnalyticsSnapshotEvent doesn\\'t have a description property, please fix this. --}}\\n
{{@image.description}}
\\n
\\n
\\n
\\n
\",{ moduleName: \"customer-site/components/snapshot-viewer/gallery-image/index.hbs\" })","/* import __COLOCATED_TEMPLATE__ from './index.hbs'; */\nimport Component from '@glimmer/component';\nimport { computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { EmberVisualVerificationFlagging, EmberVisualVerificationResponder } from 'customer-site/enums/CustomerPageUrl';\n\nimport './_style.scss';\nimport type ADCIntlService from '@adc/i18n/services/adc-intl';\nimport type { StateImageSignature } from 'customer-site/components/ui/images/state-image';\nimport type AnalyticsSnapshotEvent from 'customer-site/models/video/analytics-snapshot-event';\nimport type ContextManager from 'customer-site/services/context-manager';\n\ninterface SnapshotViewerGalleryImageSignature {\n Element: StateImageSignature['Element'];\n Args: {\n image: AnalyticsSnapshotEvent;\n viewImage: (image: AnalyticsSnapshotEvent) => unknown;\n };\n}\n\nexport default class Info extends Component {\n @service declare contextManager: ContextManager;\n @service declare intl: ADCIntlService;\n\n @computed('args.image.timestamp', 'contextManager.identityModel.preferredTimezone')\n get time(): string {\n const { contextManager, intl } = this;\n const timezone = contextManager.showPreferredTimezone\n ? contextManager.identityModel.preferredTimezone\n : intl.timeZone;\n const isOnVVorEE = contextManager.isCurrentRoute(\n EmberVisualVerificationFlagging,\n EmberVisualVerificationResponder\n );\n\n // Show date + time of day for VV, show just time of day for regular saved clips page.\n return intl.formatDateTz(\n this.args.image.timestamp,\n isOnVVorEE\n ? {\n format: 'shortDateTimeFormat',\n timeZone: timezone\n }\n : {\n hour: 'numeric',\n minute: '2-digit',\n timeZone: timezone\n }\n );\n }\n}\n\ndeclare module '@glint/environment-ember-loose/registry' {\n export default interface Registry {\n 'SnapshotViewer::GalleryImage': typeof Info;\n }\n}\n","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{#if this.cdqlItems}}\\n {{!-- @glint-expect-error: Convert to PageView and this will work. --}}\\n \\n {{#unless @isTimelineView}}\\n
\\n

\\n {{#if @titleIcon}}\\n \\n {{/if}}\\n {{@titleText}}\\n {{#if this.hasMultipleItems}}\\n {{this.dayTimeRange}}\\n {{/if}}\\n \\n

\\n \\n
\\n {{/unless}}\\n
\\n
\\n {{#each this.cdqlItemsWithImages as |cdqlItem|}}\\n {{#if cdqlItem.clipItem}}\\n \\n {{else if cdqlItem.model.isSnapshotEvent}}\\n \\n {{else}}\\n \\n {{/if}}\\n {{/each}}\\n
\\n
\\n
\\n{{/if}}\\n\",{ moduleName: \"customer-site/components/video/clips/clip-display/cdql-clip-display/index.hbs\" })","/* import __COLOCATED_TEMPLATE__ from './index.hbs'; */\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action, computed } from '@ember/object';\nimport { gt } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport ImageModal from 'customer-site/components/modals/image-sensor/image-modal/index';\nimport SnapshotModal from 'customer-site/components/modals/snapshot-viewer/snapshot-modal/index';\nimport { intlPath } from '@adc/i18n/path';\nimport { getTimeRange } from '../base-clip-display/index';\nimport { playVvVideo } from '../visual-verification-clip-display/index';\n\nimport './_style.scss';\nimport type { Registry as ServiceRegistry } from '@ember/service';\nimport type VisualVerificationItem from 'customer-site/classes/visual-verification/visual-verification-item';\nimport type { VisualVerificationClipSignature } from 'customer-site/components/video/clips/playable-clip/visual-verification-clip/index';\nimport type PageFeature from 'customer-site/models/visual-verification/page-feature';\nimport type VisualVerification from 'customer-site/services/visual-verification';\n\n/**\n * Plays the collection of videos, beginning with the passed clip (in place).\n * Passes in a Visual Verification true boolean, which is used to audit VV clip viewing.\n */\n\ninterface Item {\n eventId: string;\n clipItem?: VisualVerificationItem;\n model: {\n isVideoEvent: boolean;\n isSnapshotEvent: boolean;\n eventId: string;\n };\n siblings?: VisualVerificationItem[];\n snapshots?: MappedSnapshot[];\n}\n\nexport interface CDQLClipDisplaySignature {\n Element: HTMLDivElement;\n Args: Pick<\n VisualVerificationClipSignature['Args'],\n 'isTimelineView' | 'hasVideoEvents' | 'startFlagging' | 'supportedFeatures'\n > & {\n cdqlItems: Item[];\n isVisualVerification: boolean;\n supportedFeatures: PageFeature | undefined;\n titleIcon?: string;\n titleText?: string;\n tooltipText?: string;\n flaggingIsOn?: boolean;\n };\n}\n\ntype MappedSnapshot = {\n replacedByClip: boolean;\n snapshot: VisualVerificationItem;\n};\n\n/**\n * A collection of saved clips, grouped by the day they were captured.\n */\n@intlPath({ path: 'video/clips/clip-display/visual-verification-clip-display' })\nexport default class CDQLClipDisplayComponent extends Component {\n @service declare ajax: ServiceRegistry['ajax'];\n @service declare intl: ServiceRegistry['adc-intl'];\n @service declare modals: ServiceRegistry['modals'];\n @service declare visualVerification: ServiceRegistry['visual-verification'];\n @service declare cookieManager: ServiceRegistry['cookie-manager'];\n\n @tracked expandContent = true;\n /**\n * The sorted clips to display.\n */\n @computed('args.cdqlItems')\n get cdqlItems(): Item[] {\n return this.args.cdqlItems || [];\n }\n\n /**\n * The sorted clips to display.\n */\n @computed('cdqlItems')\n get clips(): VisualVerificationItem[] {\n return this.cdqlItems\n .mapBy('clipItem')\n .compact()\n .reject((item) => item.model.isDeleted);\n }\n\n /**\n * Visual verification items with images of the same sensor event grouped together.\n * Keeps the order of items intact but puts images of the same image sensor event into sibling field of the first image.\n */\n @computed('args.cdqlItems')\n get cdqlItemsWithImages(): Item[] {\n // Group images of the same event together. The middle part of the image Id is the event Id.\n // Do nothing with video clips and analytics snapshot events\n\n const groupedImages = this.args.cdqlItems.reduce((groups, item: Item) => {\n const eventId = item.model.eventId;\n\n if (!item.model.isVideoEvent || !item.model.isSnapshotEvent) {\n const imageGroupId = eventId.split('-')[1];\n if (groups.has(imageGroupId)) {\n groups.get(imageGroupId).push(item);\n } else {\n groups.set(imageGroupId, [item]);\n }\n }\n return groups;\n }, new Map());\n // Sort image frames by IDs in increasing order, e.g. i-111-1, i-111-2, i-111-3\n groupedImages.forEach((images: Item[]) => {\n images.sort((a: Item, b: Item) => {\n return a.model.eventId.localeCompare(b.model.eventId);\n });\n });\n\n // Process the list of cdqlItems. Clips and single images need no changes. Image groups must be added with siblings.\n const listWithImageGroups: Item[] = this.args.cdqlItems.reduce((newList: Item[], item: Item) => {\n if (item.model.isVideoEvent) {\n newList.push(item);\n } else if (item.model.isSnapshotEvent) {\n const filteredSnapshots: any[] = [];\n this.args.cdqlItems.forEach((snapshotItem: Item) => {\n if (snapshotItem.model.isSnapshotEvent) {\n filteredSnapshots.push(snapshotItem);\n }\n });\n // Create the mapped snapshot structure for each individual item\n const mappedSnapshots: MappedSnapshot[] = filteredSnapshots.map((filteredSnapshot) => {\n return {\n replacedByClip: false,\n snapshot: filteredSnapshot\n };\n });\n\n newList.push({\n model: item.model,\n eventId: item.eventId,\n snapshots: mappedSnapshots\n });\n } else {\n const eventId = item.model.eventId;\n const imageGroupId = eventId.split('-')[1];\n const groupImages = groupedImages.get(imageGroupId);\n if (eventId === groupImages[0].model.eventId) {\n // Replace the first image of the group with image and the list of siblings. If it is a single image, just add it.\n if (groupImages.length > 1) {\n newList.push({\n model: item.model,\n eventId: item.eventId,\n siblings: groupImages\n });\n } else {\n newList.push(item);\n }\n }\n }\n return newList;\n }, []);\n return listWithImageGroups;\n }\n\n /**\n * The textual representation of the time period these visual events were captured.\n */\n @computed('cdqlItems')\n get dayTimeRange(): string {\n // Do not copy this incorrect usage, please fix it.\n // @ts-expect-error The `timestamp` here is supposed to be a key of the items, but it's not. I don't know if the `getTimeRange` function is wrong, or the type of teh items is wrong, or this is a bug.\n return getTimeRange.call(this, this.cdqlItems, 'timestamp', true);\n }\n\n /**\n * Opens the video player modal for the passed clip.\n */\n @action playVideo(item: VisualVerificationItem): void {\n item.hasBeenViewed = true;\n const now = new Date();\n this.cookieManager.setEssentialCookie(\n item.model.eventId + 'hasBeenViewed',\n JSON.stringify(item.hasBeenViewed),\n new Date(now.getTime() + 24 * 60 * 60 * 1000)\n );\n return playVvVideo.call(\n this,\n this.args.isVisualVerification,\n item,\n this.clips,\n this.args.supportedFeatures,\n !this.visualVerification.nextSessionDate\n );\n }\n\n /**\n * Opens the image viewer modal for the passed image.\n */\n @action viewImage(vvItem: VisualVerificationItem, siblings?: Item[]): void {\n const model = vvItem.model,\n eventId = model.eventId;\n if (this.args.isVisualVerification) {\n model.markAsViewed();\n } else {\n this.ajax.apiRequest(`escalatedevents/escalatedEvents/auditEscalatedEventsImageViewed?eventId=${eventId}`);\n }\n this.modals.showModal(ImageModal, {\n image: model.media,\n id: eventId,\n siblings: siblings\n });\n }\n\n /**\n * Action which refreshes the current session\n */\n @action\n callSession(): ReturnType {\n return this.visualVerification.loadSession(true);\n }\n\n /**\n * Opens the snapshot viewer modal for the passed image.\n */\n @action viewSnapshot(vvItem: VisualVerificationItem, snapshots?: MappedSnapshot[]): void {\n const model = vvItem.model,\n eventId = model.eventId;\n this.modals.showModal(\n SnapshotModal,\n {\n image: model.media,\n id: eventId,\n snapshots: snapshots\n },\n () => {\n this.callSession();\n }\n );\n }\n\n /**\n * Action to trigger whether to expand component or not.\n */\n @action\n toggleExpand(): void {\n this.expandContent = !this.expandContent;\n }\n\n /**\n * Indicates if cdqlItems has more than 1 item so we show this.dayTimeRange in the template\n */\n @gt('args.cdqlItems.length', 1)\n declare hasMultipleItems: boolean;\n}\n\ndeclare module '@glint/environment-ember-loose/registry' {\n export default interface Registry {\n 'Video::Clips::ClipDisplay::CdqlClipDisplay': typeof CDQLClipDisplayComponent;\n }\n}\n","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{#if this.independentIcon}}\\n {{#each @icons as |icon|}}\\n \\n \\n \\n {{/each}}\\n{{else}}\\n \\n {{#if this.overlappingAlarmIcons}}\\n \\n {{this.overlappingAlarmIcons}}\\n \\n \\n |\\n {{/if}}\\n \\n {{this.overlappingTimelineEvents.length}}\\n \\n \\n \\n \\n \\n{{/if}}\",{ moduleName: \"customer-site/components/visual-verification/cdql-timeline/cdql-icon/index.hbs\" })","/* import __COLOCATED_TEMPLATE__ from './index.hbs'; */\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { A } from '@ember/array';\nimport { computed, action } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport ImageModal from 'customer-site/components/modals/image-sensor/image-modal/index';\nimport { playVvVideo } from '../../../video/clips/clip-display/visual-verification-clip-display/index';\n\nimport './_style.scss';\nimport type { Registry as ServiceRegistry } from '@ember/service';\nimport type VisualVerificationItem from 'customer-site/classes/visual-verification/visual-verification-item';\nimport type { CDQLClipDisplaySignature } from 'customer-site/components/video/clips/clip-display/cdql-clip-display/index';\n\ntype Icon = {\n icon?: string;\n left: number;\n vvEvent?: VisualVerificationItem;\n};\n\nexport interface EventTimelineIconSignature {\n Args: Pick & {\n icons: Icon[];\n };\n}\n\nexport default class EventTimeline extends Component {\n @service declare modals: ServiceRegistry['modals'];\n\n @tracked isTooltipOpen = false;\n\n /**\n * Check if we have an independent icon (not overlapping with other icons)\n */\n @computed('args.icons.{firstObject.vvEvent.model.eventCategory,length}')\n get independentIcon(): string | undefined {\n if (this.args.icons.length === 1) {\n const iconObject = this.args.icons.firstObject;\n\n return iconObject?.icon ?? iconObject?.vvEvent?.clipItem?.vaIcon ?? '';\n }\n\n return '';\n }\n\n /**\n * Calculate the average left for overlapping icons\n */\n @computed('args.icons.length')\n get averageLeft(): number {\n const lefts = this.args.icons.mapBy('left');\n\n return lefts.reduce((accumulator, currentValue) => accumulator + currentValue, 0) / this.args.icons.length;\n }\n\n /**\n * Play clip\n */\n @action\n playEvent(item: VisualVerificationItem): void {\n if (item) {\n if (item.clipItem) {\n return item && playVvVideo.call(this, true, item, [item.clipItem]);\n }\n const model = item.model,\n eventId = model.eventId;\n model.markAsViewed();\n this.modals.showModal(ImageModal, {\n image: model.media,\n id: eventId\n });\n }\n }\n\n /**\n * Toggle the icon tooltip\n */\n @action\n toggleToolTip(): void {\n this.isTooltipOpen = !this.isTooltipOpen;\n }\n\n /**\n * How many event icons are overlapping with other icons\n */\n @computed('args.icons')\n get overlappingTimelineEvents(): VisualVerificationItem[] {\n return A(this.args.icons.filterBy('vvEvent').mapBy('vvEvent')).compact();\n }\n\n /**\n * How many alarm icons are overlapping with other icons\n */\n @computed('args.icons.length', 'overlappingTimelineEvents.length')\n get overlappingAlarmIcons(): number {\n return this.args.icons.length - this.overlappingTimelineEvents.length;\n }\n}\n\ndeclare module '@glint/environment-ember-loose/registry' {\n export default interface Registry {\n 'VisualVerification::CdqlTimeline::CdqlIcon': typeof EventTimeline;\n }\n}\n","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"\\n

\\n {{tc this \\'eventTimeline\\'}}\\n

\\n
\\n

{{this.timelineHours.startHour}}

\\n

{{this.timelineHours.endHour}}

\\n
\\n
\\n
\\n
\\n {{#if this.timelineHours.middleOfTheNight}}\\n \\n {{/if}}\\n {{#each this.timelineIconsArray as |icons|}}\\n \\n {{/each}}\\n
\\n
\\n\\n\",{ moduleName: \"customer-site/components/visual-verification/cdql-timeline/index.hbs\" })","/* import __COLOCATED_TEMPLATE__ from './index.hbs'; */\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { task } from 'ember-concurrency';\nimport { intlPath } from '@adc/i18n/path';\nimport { startOfDay } from 'date-fns';\nimport { utcToZonedTime, zonedTimeToUtc } from 'date-fns-tz';\n\nimport './_style.scss';\nimport type VisualVerificationItem from 'customer-site/classes/visual-verification/visual-verification-item';\nimport type { CDQLClipDisplaySignature } from 'customer-site/components/video/clips/clip-display/cdql-clip-display/index';\nimport type VisualVerificationAlarm from 'customer-site/models/visual-verification/alarm';\nimport type IdentityManager from 'customer-site/services/identity-manager';\nimport type VisualVerification from 'customer-site/services/visual-verification';\nimport type { EventTimelineIconSignature } from './cdql-icon/index';\n\ninterface EventTimelineSignature {\n Args: Pick & {\n alarmEvents: VisualVerificationAlarm[];\n vvEvents: VisualVerificationItem[];\n };\n}\n\ntype TimelineHours = {\n startHour: string;\n endHour: string;\n middleOfTheNight: Date | undefined;\n};\n\ntype TimelineIcon = EventTimelineIconSignature['Args']['icons'][0];\n\n@intlPath({ path: 'visual-verification/cdql-timeline' })\nexport default class CDQLTimeline extends Component {\n @service declare IdentityManager: IdentityManager;\n @service declare visualVerification: VisualVerification;\n\n @tracked timelineHours?: TimelineHours;\n @tracked start?: Date;\n @tracked end?: Date;\n\n constructor(owner: unknown, args: EventTimelineSignature['Args']) {\n super(owner, args);\n this.pullTimelineHours.perform();\n }\n\n /**\n * Task that calculates the timeline beggining and end hours + calculate if we have the range spreaded over 2 days\n */\n pullTimelineHours = task({ drop: true }, async () => {\n const { IdentityManager } = this,\n { start, end } = this.visualVerification,\n timezone = IdentityManager.getTimezone(),\n formatDate = (format: string, date: Date | undefined) => {\n return date ? this.visualVerification.convertTime(date, format) : '';\n },\n middleOfTheNight = (): Date | undefined => {\n if (formatDate('shortDateFormat', start) === formatDate('shortDateFormat', end) || !start || !end) {\n return undefined;\n }\n if (timezone) {\n return zonedTimeToUtc(startOfDay(utcToZonedTime(new Date(end), timezone)), timezone);\n }\n return undefined;\n };\n if (start && end) {\n this.start = start;\n this.end = end;\n }\n this.timelineHours = {\n startHour: formatDate('shortTimeFormat', start),\n endHour: formatDate('shortTimeFormat', end),\n middleOfTheNight: middleOfTheNight()\n };\n });\n\n /**\n * Calculate the position of the icon\n */\n #calculatePosition(timestamp: Date): number {\n if (this.start && this.end) {\n return (\n ((timestamp.valueOf() - new Date(this.start).valueOf()) /\n (new Date(this.end).valueOf() - new Date(this.start).valueOf())) *\n 100\n );\n }\n return 0;\n }\n\n /**\n * Calculate the position of the date separator\n */\n get middleOfTheNightPosition(): number {\n if (!this.timelineHours?.middleOfTheNight) {\n return 0;\n }\n return this.#calculatePosition(this.timelineHours.middleOfTheNight);\n }\n\n /**\n * Icons to render on the timeline\n */\n @computed('args.vvEvents.length', 'start', 'end', 'visualVerification.alarms')\n get timelineIconsArray(): TimelineIcon[][] {\n const result: TimelineIcon[][] = [];\n const alarms: TimelineIcon[] = (\n this.visualVerification.alarms?.slice().sort((a, b) => (a.eventDateUtc < b.eventDateUtc ? -1 : 1)) ?? []\n ).map(({ icon, eventDateUtc }) => ({\n icon,\n left: this.#calculatePosition(new Date(eventDateUtc))\n }));\n const object: TimelineIcon[] = this.args.vvEvents\n .slice()\n .sort((a, b) => (a.timestamp < b.timestamp ? -1 : 1))\n .map((vvEvent) => {\n return {\n left: this.#calculatePosition(new Date(vvEvent.timestamp)),\n vvEvent\n };\n });\n object.push(...alarms);\n\n object\n .slice()\n .sort((a, b) => (a.left < b.left ? -1 : 1))\n .forEach((item: TimelineIcon) => {\n let itemAlreadyAddedToResult = false;\n if (result.length === 0) {\n result.push([item]);\n } else {\n // Function to check if there are overlapping icons\n const overlap = (element: TimelineIcon): boolean => {\n return item.left - element.left <= 1.5 && item.left - element.left > 0;\n };\n // Check if current icon (item) overlaps with any of the icons from the result\n result.forEach((resultItem: TimelineIcon[]) => {\n resultItem.some(overlap) && (itemAlreadyAddedToResult = true);\n });\n result.forEach((resultItem: TimelineIcon[], index: number) => {\n // If the icon (item) overlaps with one of the current array icons then\n // add it to the current array, otherwise add it to a new array\n if (resultItem.some(overlap)) {\n result[index].push(item);\n } else if (!itemAlreadyAddedToResult) {\n result.push([item]);\n itemAlreadyAddedToResult = true;\n }\n });\n }\n });\n\n return result;\n }\n}\n\ndeclare module '@glint/environment-ember-loose/registry' {\n export default interface Registry {\n 'VisualVerification::CdqlTimeline': typeof CDQLTimeline;\n }\n}\n","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"\\n <:toolbar>\\n
\\n
\\n
\\n \\n {{#if this.areDevicesExcluded}}\\n \\n {{/if}}\\n
\\n {{#if this.supportedFeatures.showResponderUrlButton}}\\n \\n {{/if}}\\n {{#if this.supportedFeatures.canDownloadClips}}\\n \\n {{/if}}\\n \\n {{#if (and this.supportedFeatures.enableSD (not this.visualVerification.nextSessionDate))}}\\n \\n {{/if}}\\n {{#if (and this.supportedFeatures.enableSVR (not this.visualVerification.nextSessionDate))}}\\n \\n {{/if}}\\n
\\n\\n {{#if this.supportedFeatures.canFlagItems}}\\n
\\n \\n \\n \\n
\\n {{/if}}\\n
\\n \\n\\n <:default as |PageViewContainer|>\\n \\n <:loading as |PageViewLoading|>\\n \\n \\n \\n \\n\\n <:default>\\n
\\n {{#unless this.supportedFeatures.enableCDQL}}\\n
\\n

{{t \\'generic.visualVerification.eventsCapturedBetween\\' htmlSafe=true}}

\\n
\\n {{/unless}}\\n
\\n {{#if this.supportedFeatures.enableCDQL}}\\n {{#if this.vvSnapshotItemIds}}\\n
\\n \\n

{{tc this \\'snapshotMessage\\'}}

\\n
\\n {{/if}}\\n
\\n {{#if this.visualVerification.previousSessionDate}}\\n \\n {{/if}}\\n
\\n {{this.navigationInfo}}\\n
\\n {{#if this.visualVerification.nextSessionDate}}\\n \\n {{/if}}\\n
\\n \\n \\n \\n \\n \\n {{#if (and (not this.priorityClips) (not this.peopleDetectedClips) (not this.vehicleDetectedClips) (not this.otherClips))}}\\n
\\n \\n {{tc this \\'noEventsDetected\\'}}\\n
\\n {{/if}}\\n {{else}}\\n \\n \\n {{/if}}\\n \\n\\n <:error as |PageViewError|>\\n \\n \\n\\n <:no-results as |PageViewNoResults|>\\n \\n {{t \\'generic.noResults\\'}}\\n \\n \\n \\n \\n
\\n\",{ moduleName: \"customer-site/visual-verification/v2/template.hbs\" })","\nimport { importSync as i } from '@embroider/macros';\nlet d = window.define;\nd(\"customer-site/visual-verification/live-view/template\", function(){ return i(\"customer-site/visual-verification/live-view/template.hbs\");});\nd(\"customer-site/visual-verification/live-view/controller\", function(){ return i(\"customer-site/visual-verification/live-view/controller.ts\");});\nd(\"customer-site/visual-verification/live-view/route\", function(){ return i(\"customer-site/visual-verification/live-view/route.ts\");});\nd(\"customer-site/visual-verification/onboard-timeline/template\", function(){ return i(\"customer-site/visual-verification/onboard-timeline/template.hbs\");});\nd(\"customer-site/visual-verification/onboard-timeline/controller\", function(){ return i(\"customer-site/visual-verification/onboard-timeline/controller.ts\");});\nd(\"customer-site/visual-verification/onboard-timeline/route\", function(){ return i(\"customer-site/visual-verification/onboard-timeline/route.ts\");});\nd(\"customer-site/visual-verification/responder/template\", function(){ return i(\"customer-site/visual-verification/responder/template.hbs\");});\nd(\"customer-site/visual-verification/responder/controller\", function(){ return i(\"customer-site/visual-verification/responder/controller.ts\");});\nd(\"customer-site/visual-verification/responder/route\", function(){ return i(\"customer-site/visual-verification/responder/route.ts\");});\nd(\"customer-site/visual-verification/svr-timeline/template\", function(){ return i(\"customer-site/visual-verification/svr-timeline/template.hbs\");});\nd(\"customer-site/visual-verification/svr-timeline/controller\", function(){ return i(\"customer-site/visual-verification/svr-timeline/controller.ts\");});\nd(\"customer-site/visual-verification/svr-timeline/route\", function(){ return i(\"customer-site/visual-verification/svr-timeline/route.ts\");});\nd(\"customer-site/visual-verification/v2/template\", function(){ return i(\"customer-site/visual-verification/v2/template.hbs\");});\nd(\"customer-site/visual-verification/v2/controller\", function(){ return i(\"customer-site/visual-verification/v2/controller.ts\");});\nd(\"customer-site/visual-verification/v2/route\", function(){ return i(\"customer-site/visual-verification/v2/route.ts\");});\n","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"
\\n
\\n \\n
\\n \\n
\\n\\n
\\n \\n \\n
\\n
\\n \\n\\n
\\n \\n\\n
\\n {{#let (await @image.imageSensor) as |imageSensor|}}\\n
{{imageSensor.description}}
\\n
{{@image.description}}
\\n {{/let}}\\n
\\n
\\n
\\n\",{ moduleName: \"customer-site/components/image-sensor/gallery-image/index.hbs\" })","/* import __COLOCATED_TEMPLATE__ from './index.hbs'; */\nimport Component from '@glimmer/component';\nimport { computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { EmberVisualVerificationFlagging, EmberVisualVerificationResponder } from 'customer-site/enums/CustomerPageUrl';\n\nimport './_style.scss';\nimport type ADCIntlService from '@adc/i18n/services/adc-intl';\nimport type { StateImageSignature } from 'customer-site/components/ui/images/state-image';\nimport type ImageSensorImageModel from 'customer-site/models/image-sensor/image-sensor-image';\nimport type ContextManager from 'customer-site/services/context-manager';\nimport type IdentityManager from 'customer-site/services/identity-manager';\n\ninterface ImageSensorGalleryImageSignature {\n Element: StateImageSignature['Element'];\n Args: {\n image: ImageSensorImageModel;\n viewImage: (image: ImageSensorImageModel) => unknown;\n };\n}\n\nexport default class GalleryImage extends Component {\n @service declare contextManager: ContextManager;\n @service declare identityManager: IdentityManager;\n @service declare intl: ADCIntlService;\n\n @computed('args.image.timestamp', 'contextManager.identityModel.preferredTimezone')\n get time(): string {\n const { contextManager, identityManager, intl } = this,\n timezone = contextManager.showPreferredTimezone\n ? identityManager.identityModel?.preferredTimezone\n : intl.timeZone,\n isOnVVorEE = contextManager.isCurrentRoute(\n EmberVisualVerificationFlagging,\n EmberVisualVerificationResponder\n );\n\n // Show date + time of day for VV, show just time of day for regular saved clips page.\n return intl.formatDateTz(\n this.args.image.timestamp,\n isOnVVorEE\n ? {\n format: 'shortDateTimeFormat',\n timeZone: timezone\n }\n : {\n hour: 'numeric',\n minute: '2-digit',\n timeZone: timezone\n }\n );\n }\n}\n\ndeclare module '@glint/environment-ember-loose/registry' {\n export default interface Registry {\n 'ImageSensor::GalleryImage': typeof GalleryImage;\n }\n}\n","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"
\\n \\n <:header as |DialogHeader|>\\n \\n
\\n \\n

{{await this.title}}

\\n
\\n
\\n \\n\\n <:default>\\n
\\n
\\n \\n {{#if this.imageSensorName}}\\n \\n {{/if}}\\n \\n
\\n
\\n
\\n {{#each this.siblings as |sibling|}}\\n {{!-- @glint-expect-error I suspect the type for sibling is incorrect. --}}\\n
\\n \\n \\n \\n
\\n {{/each}}\\n
\\n
\\n
\\n \\n
\\n
\",{ moduleName: \"customer-site/components/modals/image-sensor/image-modal/index.hbs\" })","/* import __COLOCATED_TEMPLATE__ from './index.hbs'; */\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { computed, action } from '@ember/object';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport { htmlSafe } from '@ember/template';\nimport { intlPath } from '@adc/i18n/path';\n\nimport './_style.scss';\nimport type ADCIntlService from '@adc/i18n/services/adc-intl';\nimport type ImageSensorImage from 'customer-site/models/image-sensor/image-sensor-image';\nimport type { SafeString } from 'handlebars';\n\ninterface ImageModalSignature {\n Args: {\n model: {\n image: ImageSensorImage;\n id: string;\n siblings: any[];\n };\n };\n}\n\n/**\n * @classdesc\n * A modal for displaying an image\n */\n@intlPath({ path: 'modals/image-sensor/image-modal' })\nexport default class ImageModal extends Component {\n @service declare intl: ADCIntlService;\n\n constructor(owner: unknown, args: ImageModalSignature['Args']) {\n super(owner, args);\n\n this.selectedImage = this.imageSource;\n }\n\n @tracked selectedImage: string;\n\n /**\n * The URL for the image\n */\n @alias('args.model.image.imageSrc')\n declare imageSource: string;\n\n /**\n * The image model\n */\n @alias('args.model.image')\n declare image: ImageSensorImage;\n\n /**\n * Sibling images\n */\n @alias('args.model.siblings')\n declare siblings: ImageSensorImage[];\n\n /**\n * The image sensor name\n */\n @alias('args.model.image.imageSensor.description')\n declare imageSensorName: string;\n\n /**\n * The title text for this video clip.\n */\n @computed('args.model.image.{imageSensor,description}')\n get title(): Promise {\n return (async () => {\n const { image } = this.args.model,\n imageSensor = await image.imageSensor;\n\n return htmlSafe(\n this.intl.tc(this, 'title', {\n sensorName: imageSensor.description,\n imageDescription: image.description\n })\n );\n })();\n }\n\n /**\n * Select the image clicked on\n */\n @action\n handleClick(imageSrc: string): void {\n this.selectedImage = imageSrc;\n }\n}\n\ndeclare module '@glint/environment-ember-loose/registry' {\n export default interface Registry {\n 'Modals::ImageSensor::ImageModal': typeof ImageModal;\n }\n}\n","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{!-- @glint-expect-error: Convert to PageView and this will start working. --}}\\n\\n

\\n \\n {{tc this \\'peopleDetected\\'}}\\n

\\n\\n {{#if @visualVerificationItems}}\\n
\\n {{#each @visualVerificationItems as |vvItem|}}\\n {{!-- @glint-expect-error: hasVideoEvents is a required parameter of this component, but is not passed here, please fix this. --}}\\n \\n {{/each}}\\n
\\n {{else}}\\n
\\n \\n {{tc this \\'noPersonDetected\\'}}\\n
\\n {{/if}}\\n
\",{ moduleName: \"customer-site/components/video/clips/clip-display/person-detected-clip-display/index.hbs\" })","/* import __COLOCATED_TEMPLATE__ from './index.hbs'; */\nimport { action, computed } from '@ember/object';\nimport { intlPath } from '@adc/i18n/path';\nimport BaseClipDisplay from '../base-clip-display/index';\nimport { playVvVideo } from '../visual-verification-clip-display/index';\n\nimport './_style.scss';\nimport type { VVClipItem } from 'customer-site/classes/video/clips/helpers/clip-management';\nimport type VisualVerificationItem from 'customer-site/classes/visual-verification/visual-verification-item';\nimport type { VisualVerificationClipSignature } from 'customer-site/components/video/clips/playable-clip/visual-verification-clip/index';\n\nexport interface PersonDetectedClipDisplaySignature {\n Args: Pick & {\n visualVerificationItems: VisualVerificationItem[];\n isVisualVerification: boolean;\n flaggingIsOn?: boolean;\n };\n}\n\n/**\n * A collection of person detected saved clips.\n */\n@intlPath({ path: 'video/clips/clip-display/person-detected-clip-display' })\nexport default class PersonDetectedClipDisplayComponent extends BaseClipDisplay {\n /**\n * The sorted clips to display.\n */\n @computed('args.visualVerificationItems')\n get visualVerificationItems(): VisualVerificationItem[] {\n return this.args.visualVerificationItems || [];\n }\n\n /**\n * The sorted clips to display.\n */\n @computed('visualVerificationItems')\n get clips(): VVClipItem[] {\n return this.visualVerificationItems\n .mapBy('clipItem')\n .compact()\n .reject((i) => i.model.isDeleted);\n }\n\n /**\n * Opens the video player modal for the passed clip.\n */\n @action playPersonVideo(item: VisualVerificationItem): void {\n return playVvVideo.call(\n this,\n this.args.isVisualVerification,\n item,\n this.clips,\n this.args.supportedFeatures,\n true\n );\n }\n}\n\ndeclare module '@glint/environment-ember-loose/registry' {\n export default interface Registry {\n 'Video::Clips::ClipDisplay::PersonDetectedClipDisplay': typeof PersonDetectedClipDisplayComponent;\n }\n}\n","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{!-- @glint-expect-error Convert to PageView and this will start working. --}}\\n\\n

{{t \\'generic.events.events\\'}}{{this.dayTimeRange}}

\\n\\n {{#if this.visualVerificationItems}}\\n
\\n {{#each this.visualVerificationItemsWithImages as |vvItem|}}\\n {{#if vvItem.clipItem}}\\n \\n {{else}}\\n \\n {{/if}}\\n {{/each}}\\n
\\n {{else}}\\n
\\n \\n {{tc this \\'noEventsDetected\\'}}\\n
\\n {{/if}}\\n
\\n\",{ moduleName: \"customer-site/components/video/clips/clip-display/visual-verification-clip-display/index.hbs\" })","/* import __COLOCATED_TEMPLATE__ from './index.hbs'; */\nimport Component from '@glimmer/component';\nimport { action, computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport ImageModal from 'customer-site/components/modals/image-sensor/image-modal/index';\nimport {\n EscalatedEventsOperatorSite,\n VisualVerificationOperatorSite\n} from 'customer-site/components/video/clips/video-modal/index';\nimport VideoClipsModal from 'customer-site/components/video/clips/video-modal/index';\nimport { intlPath } from '@adc/i18n/path';\nimport { getTimeRange } from '../base-clip-display/index';\n\nimport './_style.scss';\nimport type { Registry as ServiceRegistry } from '@ember/service';\nimport type { VVClipItem } from 'customer-site/classes/video/clips/helpers/clip-management';\nimport type VisualVerificationItem from 'customer-site/classes/visual-verification/visual-verification-item';\nimport type { VisualVerificationClipSignature } from 'customer-site/components/video/clips/playable-clip/visual-verification-clip/index';\nimport type PageFeature from 'customer-site/models/visual-verification/page-feature';\n\n/**\n * Plays the collection of videos, beginning with the passed clip (in place).\n * Passes in a Visual Verification true boolean, which is used to audit VV clip viewing.\n * operatorSiteEnum 0 = not operator site; 1 = Visual Verification site; 2 = Remote Video Monitoring Console site\n */\n\ninterface Item {\n eventId: string;\n clipItem?: VisualVerificationItem;\n model: {\n isVideoEvent: boolean;\n eventId: string;\n };\n siblings?: VisualVerificationItem[];\n}\n\ninterface VisualVerificationClipDisplaySignature {\n Args: Pick & {\n visualVerificationItems: Item[];\n isVisualVerification: boolean;\n };\n}\n\n/**\n * Function used to play and audit VV / EE clips\n */\nexport function playVvVideo(\n this: { modals: ServiceRegistry['modals'] },\n isVisualVerification: boolean,\n item: VisualVerificationItem,\n clips: (VVClipItem | VisualVerificationItem | undefined)[],\n supportedFeatures?: PageFeature,\n isOnLatestSession?: boolean\n): void {\n const { clipItem, model } = item,\n operatorSiteEnum = isVisualVerification ? VisualVerificationOperatorSite : EscalatedEventsOperatorSite;\n model.markAsViewed();\n this.modals.showModal(VideoClipsModal, {\n media: clips,\n selectedIndex: clips.indexOf(clipItem),\n operatorSiteEnum,\n isVisualVerification,\n supportedFeatures,\n isOnLatestSession\n });\n}\n\n/**\n * A collection of saved clips, grouped by the day they were captured.\n */\n@intlPath({ path: 'video/clips/clip-display/visual-verification-clip-display' })\nexport default class VisualVerificationClipDisplayComponent extends Component {\n @service declare intl: ServiceRegistry['intl'];\n @service declare modals: ServiceRegistry['modals'];\n\n /**\n * The sorted clips to display.\n */\n @computed('args.visualVerificationItems')\n get visualVerificationItems(): Item[] {\n return this.args.visualVerificationItems || [];\n }\n\n /**\n * The sorted clips to display.\n */\n @computed('visualVerificationItems')\n get clips(): VisualVerificationItem[] {\n return this.visualVerificationItems\n .mapBy('clipItem')\n .compact()\n .reject((item) => item.model.isDeleted);\n }\n\n /**\n * Visual verification items with images of the same sensor event grouped together.\n * Keeps the order of items intact but puts images of the same image sensor event into sibling field of the first image.\n */\n @computed('args.visualVerificationItems')\n get visualVerificationItemsWithImages(): Item[] {\n // Group images of the same event together. The middle part of the image Id is the event Id.\n // Do nothing with video clips\n const groupedImages = this.args.visualVerificationItems.reduce((groups, item: Item) => {\n if (!item.model.isVideoEvent) {\n const eventId = item.model.eventId;\n const imageGroupId = eventId.split('-')[1];\n if (groups.has(imageGroupId)) {\n groups.get(imageGroupId).push(item);\n } else {\n groups.set(imageGroupId, [item]);\n }\n }\n return groups;\n }, new Map());\n // Sort image frames by IDs in increasing order, e.g. i-111-1, i-111-2, i-111-3\n groupedImages.forEach((images: Item[]) => {\n images.sort((a: Item, b: Item) => {\n return a.model.eventId.localeCompare(b.model.eventId);\n });\n });\n // Process the list of visualVerificationItems. Clips and single images need no changes. Image groups must be added with siblings.\n const listWithImageGroups: Item[] = this.args.visualVerificationItems.reduce((newList: Item[], item: Item) => {\n if (item.model.isVideoEvent) {\n newList.push(item);\n } else {\n const eventId = item.model.eventId;\n const imageGroupId = eventId.split('-')[1];\n const groupImages = groupedImages.get(imageGroupId);\n if (eventId === groupImages[0].model.eventId) {\n // Replace the first image of the group with image and the list of siblings. If it is a single image, just add it.\n if (groupImages.length > 1) {\n newList.push({\n model: item.model,\n eventId: item.eventId,\n siblings: groupImages\n });\n } else {\n newList.push(item);\n }\n }\n }\n return newList;\n }, []);\n return listWithImageGroups;\n }\n\n /**\n * The textual representation of the time period these visual events were captured.\n */\n @computed('visualVerificationItems')\n get dayTimeRange(): string {\n // Do not copy this incorrect usage, please fix it.\n // @ts-expect-error The `timestamp` here is supposed to be a key of the items, but it's not. I don't know if the `getTimeRange` function is wrong, or the type of teh items is wrong, or this is a bug.\n return getTimeRange.call(this, this.visualVerificationItems, 'timestamp', true);\n }\n\n /**\n * Opens the video player modal for the passed clip.\n */\n @action playVideo(item: VisualVerificationItem): void {\n return playVvVideo.call(\n this,\n this.args.isVisualVerification,\n item,\n this.clips,\n this.args.supportedFeatures,\n true\n );\n }\n\n /**\n * Opens the image viewer modal for the passed image.\n */\n @action viewImage(vvItem: VisualVerificationItem, siblings: Item[]): void {\n const model = vvItem.model;\n const eventId = model.eventId;\n model.markAsViewed();\n\n this.modals.showModal(ImageModal, {\n image: model.media,\n id: eventId,\n siblings: siblings\n });\n }\n}\n\ndeclare module '@glint/environment-ember-loose/registry' {\n export default interface Registry {\n 'Video::Clips::ClipDisplay::VisualVerificationClipDisplay': typeof VisualVerificationClipDisplayComponent;\n }\n}\n","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"{{!-- @glint-expect-error model is a required property for view container, please convert to PageView --}}\\n\\n \\n

{{t \\'components.video.clips.loading.loadingClips\\'}}

\\n
\\n\",{ moduleName: \"customer-site/components/video/clips/loading/index.hbs\" })","/* import __COLOCATED_TEMPLATE__ from './index.hbs'; */\nimport templateOnlyComponent from '@ember/component/template-only';\n\nimport './_style.scss';\n\nconst VideoClipsLoading = templateOnlyComponent();\nexport default VideoClipsLoading;\n\ndeclare module '@glint/environment-ember-loose/registry' {\n export default interface Registry {\n 'Video::Clips::Loading': typeof VideoClipsLoading;\n }\n}\n","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"\\n
\\n {{#if (and @cdqlEnabled (not @vvItem.hasBeenViewed) this.clipWasSnapshot)}}\\n \\n \\n
\\n {{t \\'generic.visualVerification.blueDotLegend\\'}}\\n
\\n \\n {{/if}}\\n \\n {{#if @flaggingIsOn}}\\n \\n {{else}}\\n
\\n \\n {{#if @supportedFeatures.canFlagItems}}\\n
\\n \\n
\\n {{/if}}\\n
\\n {{/if}}\\n \\n\\n
\\n \\n
\\n
{{await @vvItem.clipItem.cameraName}}
\\n {{#if this.isPriority}}\\n
\\n {{#if this.multipleDeviceTriggered}}\\n {{tc this \\'multipleDevicesTriggered\\'}}\\n \\n \\n
    \\n {{#each this.processedDeviceNames as |deviceName|}}\\n
  • {{deviceName}}
  • \\n {{/each}}\\n
\\n \\n {{else}}\\n {{!-- @glint-expect-error This is an array of strings, not sure what actually renders here. --}}\\n {{this.processedDeviceNames}}\\n {{/if}}\\n
\\n {{else}}\\n
{{@vvItem.clipItem.model.description}}
\\n {{/if}}\\n
\\n
\\n
\\n {{#if (and @flaggingIsOn @vvItem.isSelected)}}\\n \\n {{/if}}\\n\\n\",{ moduleName: \"customer-site/components/video/clips/playable-clip/visual-verification-clip/index.hbs\" })","/* import __COLOCATED_TEMPLATE__ from './index.hbs'; */\nimport { tracked } from '@glimmer/tracking';\nimport { isEnterOrSpaceCode } from '@adc/ember-utils/utils/a11y';\nimport { action, computed } from '@ember/object';\nimport { equal } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport { task } from 'ember-concurrency';\nimport { Priority } from 'customer-site/enums/CDQLEventCategoryEnums';\nimport { VideoDevicePrimaryLink } from 'customer-site/enums/CDQLSessionDeviceLinkEnums';\nimport { intlPath } from '@adc/i18n/path';\nimport BasePlayableClipComponent from '../base-playable-clip';\n\nimport './_style.scss';\nimport type ADCIntlService from '@adc/i18n/services/adc-intl';\nimport type VisualVerificationItem from 'customer-site/classes/visual-verification/visual-verification-item';\nimport type VisualVerificationPageFeatures from 'customer-site/models/visual-verification/page-feature';\nimport type SessionDeviceLink from 'customer-site/models/visual-verification/session-device-link';\nimport type VisualVerification from 'customer-site/services/visual-verification';\n\nexport interface VisualVerificationClipSignature {\n Element: HTMLDivElement;\n Args: {\n vvItem: VisualVerificationItem;\n startFlagging: VoidFunction;\n hasVideoEvents: Record;\n cdqlEnabled?: boolean;\n playVideo: () => void;\n isTimelineView?: boolean;\n flaggingIsOn?: boolean;\n supportedFeatures: VisualVerificationPageFeatures;\n };\n Blocks: {\n default: [];\n };\n}\n\n@intlPath({ path: 'video/clips/playable-clip/visual-verification-clip' })\nexport default class VisualVerificationClipComponent extends BasePlayableClipComponent {\n @service declare intl: ADCIntlService;\n @service declare visualVerification: VisualVerification;\n\n @tracked showMultipleDevicesToolTip = false;\n @tracked primaryDeviceLink?: SessionDeviceLink;\n @tracked toolTipOpen = false;\n\n constructor(owner: unknown, args: VisualVerificationClipSignature['Args']) {\n super(owner, args);\n this.pullPrimaryDeviceLinkData.perform();\n }\n\n /**\n * Check if the clip should be highlighted\n */\n @computed('args.vvItem.model.isHighlighted')\n get highlightClip(): boolean {\n return this.args.vvItem.model.isHighlighted;\n }\n\n /**\n * Check if the clip was previously a snapshot.\n */\n get clipWasSnapshot(): boolean {\n const { vvItem, cdqlEnabled, hasVideoEvents } = this.args;\n\n if (cdqlEnabled && hasVideoEvents[vvItem.model.eventId] !== undefined) {\n return !vvItem.hasBeenViewed ? hasVideoEvents[vvItem.model.eventId] : false;\n }\n\n return false;\n }\n\n /**\n * Check if this clip is a priority event\n */\n @equal('args.vvItem.model.eventCategory', Priority)\n declare isPriority: boolean;\n\n /**\n * Pull Primary Device Linked Data.\n */\n pullPrimaryDeviceLinkData = task(async () => {\n const cameraName = await this.args.vvItem.clipItem?.cameraName;\n if (cameraName) {\n this.primaryDeviceLink = this.visualVerification.sessionDeviceLinks\n ?.filterBy('pairType', VideoDevicePrimaryLink)\n .findBy('cameraName', cameraName);\n }\n });\n\n /**\n * Processing device names.\n */\n @computed('primaryDeviceLink.deviceNames')\n get processedDeviceNames(): string[] {\n return (\n this.primaryDeviceLink?.deviceNames.split('|').map((deviceName) => {\n return this.intl.tc(this, 'deviceTriggered', { device: deviceName });\n }) ?? []\n );\n }\n\n /**\n * Action to handle the Hidden Devices Info tooltip.\n */\n @action\n toggleToolTip(): void {\n this.toolTipOpen = !this.toolTipOpen;\n }\n\n /**\n * Multiple devices triggered variable\n */\n @computed('primaryDeviceLink.multipleDeviceTrigger')\n get multipleDeviceTriggered(): boolean {\n return this.primaryDeviceLink?.multipleDeviceTrigger ?? false;\n }\n\n /**\n * Action that starts the flagging\n */\n @action\n startFlagging(): void {\n this.args.startFlagging();\n this.args.vvItem.isSelected = true;\n }\n\n /**\n * Toggle flagging\n */\n @action\n toggleSelection(evt: Event): void {\n if (evt instanceof KeyboardEvent && !isEnterOrSpaceCode(evt.code)) {\n return;\n }\n\n evt.stopPropagation();\n const { vvItem } = this.args;\n vvItem.isSelected = !vvItem.isSelected;\n }\n}\n\ndeclare module '@glint/environment-ember-loose/registry' {\n export default interface Registry {\n 'Video::Clips::PlayableClip::VisualVerificationClip': typeof VisualVerificationClipComponent;\n }\n}\n","import { tracked } from '@glimmer/tracking';\nimport { inject as service } from '@ember/service';\nimport { timeout, task } from 'ember-concurrency';\nimport { EmberVideoCameraGroupsEdit, EmberVideoCameraGroups } from '../../enums/CustomerPageUrl';\nimport BaseLiveViewController from '../../video/live-view/base-live-view-controller';\n\nimport type AjaxService from 'customer-site/services/ajax';\nimport type { ModelFrom } from 'customer-site/utils/type-utils';\nimport type Route from './route';\n\n/**\n * Returns the time, in milliseconds, remaining in the live view session after the most recent alarm.\n * This time window depends on the CentralStationLiveViewDuration dealer parameter.\n *\n * @returns {Promise}\n */\nfunction getRemainingSessionTimeMs(this: VisualVerificationLiveViewController): Promise {\n return this.ajax\n .apiRequest<{ value: { timeRemaining: number } }>(\n 'visualverification/timeremaining',\n undefined,\n null,\n 'GET',\n false\n )\n .then((result) => {\n if (!result?.value.timeRemaining) {\n return 0;\n }\n\n return result.value.timeRemaining;\n });\n}\n\n/**\n * @classdesc\n * Controller for visual verification live view page.\n */\nexport default class VisualVerificationLiveViewController extends BaseLiveViewController {\n @service declare ajax: AjaxService;\n\n declare model: ModelFrom;\n\n /** @override */\n get editGroupRouteId(): number {\n return EmberVideoCameraGroupsEdit;\n }\n\n /** @override */\n get manageGroupsRouteId(): number {\n return EmberVideoCameraGroups;\n }\n\n /** @override */\n isOperatorSite = true;\n\n /** @override */\n @tracked systemHasRecentOperatorEvent = true;\n\n /**\n * Waits until the end of the current visual verification session (15 minutes since the last alarm),\n * then hides the video players.\n */\n checkRemainingTime = task({ restartable: true }, async () => {\n const sessionTimeMs = await getRemainingSessionTimeMs.call(this);\n if (sessionTimeMs > 0) {\n await timeout(sessionTimeMs);\n this.checkRemainingTime.perform();\n } else {\n // Hide video player UI and show timeout message\n this.systemHasRecentOperatorEvent = false;\n }\n });\n\n /**\n * Initializes the controller.\n */\n constructor(host: VisualVerificationLiveViewController) {\n super(host);\n\n this.checkRemainingTime.perform();\n }\n}\n\n// DO NOT DELETE: this is how TypeScript knows how to look up your controllers.\ndeclare module '@ember/controller' {\n interface Registry {\n 'visual-verification/live-view': VisualVerificationLiveViewController;\n }\n}\n","import { EmberVisualVerificationLiveView } from '../../enums/CustomerPageUrl';\nimport BaseLiveViewRoute from '../../video/live-view/base-live-view-route';\n\n/**\n * @classdesc\n * Route for visual verification live view page.\n */\nexport default class VisualVerificationLiveViewRoute extends BaseLiveViewRoute {\n /** @override */\n ignoreCache = true;\n\n /** @override */\n routeId = EmberVisualVerificationLiveView;\n}\n","import { inject as service } from '@ember/service';\nimport OnboardController from '../../video/onboard/controller';\n\nimport type ScreenRecordingService from 'customer-site/services/screen-recording';\nimport type VisualVerification from 'customer-site/services/visual-verification';\nimport type { ModelFrom } from 'customer-site/utils/type-utils';\nimport type Route from './route';\n\nexport default class VVOnboardController extends OnboardController {\n @service declare visualVerification: VisualVerification;\n @service declare screenRecording: ScreenRecordingService;\n\n declare model: ModelFrom;\n\n /** @override */\n hideSidebar = false;\n}\n\n// DO NOT DELETE: this is how TypeScript knows how to look up your controllers.\ndeclare module '@ember/controller' {\n interface Registry {\n 'visual-verification/onboard-timeline': VVOnboardController;\n }\n}\n","import { EmberVisualVerificationSD } from '../../enums/CustomerPageUrl';\nimport SdCardRoute from '../../video/onboard/route';\n\n/**\n * @classdesc\n * Route for SD card playback page.\n */\nexport default class VVSdCardRoute extends SdCardRoute {\n /** @override */\n routeId = EmberVisualVerificationSD;\n}\n","import { computed } from '@ember/object';\nimport VisualVerificationItem from '../../classes/visual-verification/visual-verification-item';\nimport VVBaseController from '../base-controller';\nimport { filterEventsForPersonDetected } from '../base-controller';\n\nimport type VisualVerificationEvent from 'customer-site/models/visual-verification/event';\nimport type { ResolvedModelFrom, ModelFrom } from 'customer-site/utils/type-utils';\nimport type VVResponderRoute from './route';\n\n/**\n * A controller for displaying a list of visual verification events flagged by the Central Station on the Visual Verification page.\n */\nexport default class Controller extends VVBaseController {\n declare model: ModelFrom;\n\n /**\n * The resolved model used for this route.\n */\n resolvedModel?: ResolvedModelFrom;\n\n /**\n * The collection of events to render.\n */\n @computed('resolvedModel.events.[]', 'availableImageSensors', 'selectedDevices')\n get vvItems(): VisualVerificationItem[] {\n const { events = [], showPreferredTimezone } = this.resolvedModel || {},\n selectedDevices = this.getSelectedDevices();\n\n return (events as VisualVerificationEvent[])\n .filter((m) => selectedDevices.includes(m.deviceId))\n .map((model) => new VisualVerificationItem(model, { showPreferredTimezone }));\n }\n\n /**\n * The collection of visual verification items without people detected.ds\n */\n @computed('vvItems')\n get noPeopleDetectedEventItems(): VisualVerificationItem[] {\n return filterEventsForPersonDetected(this.vvItems, false);\n }\n\n /**\n * The collection of clips with people detected. Only clips will include person detected.\n */\n @computed('vvItems')\n get peopleDetectedClipItems(): VisualVerificationItem[] {\n return filterEventsForPersonDetected(this.vvItems, true);\n }\n}\n\n// DO NOT DELETE: this is how TypeScript knows how to look up your controllers.\ndeclare module '@ember/controller' {\n interface Registry {\n 'visual-verification/responder': Controller;\n }\n}\n","import { inject as service } from '@ember/service';\nimport { EmberVisualVerificationResponder } from 'customer-site/enums/CustomerPageUrl';\nimport VVBaseRoute from '../base-route';\n\nimport type Store from '@ember-data/store';\nimport type VisualVerificationEvent from 'customer-site/models/visual-verification/event';\nimport type { ModelFrom } from 'customer-site/utils/type-utils';\n\ntype VVResponderRouteModel = ModelFrom & {\n events: ADCAsyncStoreFindAll;\n};\n\n/**\n * The route for Visual Verification Responder page.\n */\nexport default class VVResponderRoute extends VVBaseRoute {\n @service declare store: Store;\n\n /** @override */\n routeId = EmberVisualVerificationResponder;\n\n /** @override */\n model(): VVResponderRouteModel {\n const { store } = this;\n\n return {\n ...super.model(),\n events: store.findAll('visual-verification/event')\n };\n }\n}\n","import { inject as service } from '@ember/service';\nimport SvrTimelineController from '../../video/svr-timeline/controller';\n\nimport type ScreenRecordingService from 'customer-site/services/screen-recording';\nimport type VisualVerification from 'customer-site/services/visual-verification';\nimport type { ModelFrom } from 'customer-site/utils/type-utils';\nimport type Route from './route';\n\n/**\n * @classdesc\n * Controller for the visual-verification/svr-timeline page.\n */\nexport default class VVSvrTimelineController extends SvrTimelineController {\n @service declare visualVerification: VisualVerification;\n @service declare screenRecording: ScreenRecordingService;\n\n /**\n * The model used for this route.\n */\n declare model: ModelFrom;\n\n /** @override */\n hideSidebar = false;\n}\n\n// DO NOT DELETE: this is how TypeScript knows how to look up your controllers.\ndeclare module '@ember/controller' {\n interface Registry {\n 'visual-verification/svr-timeline': VVSvrTimelineController;\n }\n}\n","import { EmberVisualVerificationSVR } from 'customer-site/enums/CustomerPageUrl';\nimport SvrTimelineRoute from '../../video/svr-timeline/route';\n\n/**\n * @classdesc\n * Route for VV SVR playback page.\n */\nexport default class VVSvrTimelineRoute extends SvrTimelineRoute {\n /** @override */\n routeId = EmberVisualVerificationSVR;\n}\n","import { precompileTemplate } from \"@ember/template-compilation\";\nexport default precompileTemplate(\"\\n
\\n

{{tc this \\'linkToShare\\'}}

\\n
\\n \\n \\n
\\n
\\n\",{ moduleName: \"customer-site/components/modals/video/responder-url/index.hbs\" })","/* import __COLOCATED_TEMPLATE__ from './index.hbs'; */\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { intlPath } from '@adc/i18n/path';\n\nimport './_style.scss';\nimport type ADCIntlService from '@adc/i18n/services/adc-intl';\nimport type NotificationManager from '@adc/ui-components/services/notification-manager';\n\ninterface VideoResponderUrlSignature {\n Args: {\n model: {\n url: string;\n };\n };\n}\n\n@intlPath({ path: 'modals/video/responder-url' })\nexport default class ResponderUrl extends Component {\n @service declare intl: ADCIntlService;\n @service declare notificationManager: NotificationManager;\n\n /**\n * Action which copies the Responder URL to the clipboard.\n */\n\n @action\n copyToClipboard(evt: Event): void {\n const input = (evt.target as HTMLButtonElement)\n .closest('.responder-url-ui-modal-content-actions')\n ?.querySelector('input[type=\"text\"]') as HTMLInputElement;\n input.select();\n input.setSelectionRange(0, 999);\n navigator.clipboard.writeText(input.value);\n\n this.notificationManager.addSuccess(this.intl.tc(this, 'urlCopied'));\n }\n}\n\ndeclare module '@glint/environment-ember-loose/registry' {\n export default interface Registry {\n 'Modals::Video::ResponderUrl': typeof ResponderUrl;\n }\n}\n","import { tracked } from '@glimmer/tracking';\nimport { action, computed, set } from '@ember/object';\nimport { alias, filterBy } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport { isPresent } from '@ember/utils';\nimport { getErrorText } from 'customer-site/utils/ember';\nimport { task, timeout } from 'ember-concurrency';\nimport ResponderUrl from 'customer-site/components/modals/video/responder-url/index';\nimport ENV from 'customer-site/config/environment';\nimport { JSON_REQUEST, POST } from '@adc/ajax/services/adc-ajax';\nimport { downloadFile } from '@adc/ui-components/utils/download-file';\nimport DropdownSelectItem, { UNSELECTED, SELECTED } from '@adc/ui-components/utils/dropdown-select-item';\nimport VisualVerificationItem from '../../classes/visual-verification/visual-verification-item';\nimport {\n EmberVisualVerificationLiveView,\n EmberVisualVerificationSD,\n EmberVisualVerificationSVR\n} from '../../enums/CustomerPageUrl';\nimport { InsufficientPermission, WrongTokenFormat } from '../../enums/VideoDownloadProgress';\nimport VVBaseController from '../base-controller';\nimport { filterEventsForPersonDetected } from '../base-controller';\n\nimport type ADCIntlService from '@adc/i18n/services/adc-intl';\nimport type ModalService from '@adc/ui-components/services/modals';\nimport type NotificationManager from '@adc/ui-components/services/notification-manager';\nimport type Store from '@ember-data/store';\nimport type VisualVerificationEvent from 'customer-site/models/visual-verification/event';\nimport type PageFeature from 'customer-site/models/visual-verification/page-feature';\nimport type AjaxService from 'customer-site/services/ajax';\nimport type ContextManager from 'customer-site/services/context-manager';\nimport type NavigationService from 'customer-site/services/navigation';\nimport type VisualVerification from 'customer-site/services/visual-verification';\nimport type { ResolvedModelFrom, ModelFrom } from 'customer-site/utils/type-utils';\nimport type VVV2RouteModel from './route';\n\nconst { sitePrefix } = ENV;\n\nconst MIXED_STATE = 'mixed';\n\ntype VVDownload = {\n clipIds: string;\n url: string;\n};\n\ntype newEventsCheckPayload = {\n data: Record;\n included: Record;\n meta: Record;\n};\n\nfunction shouldHideLiveView(this: VVV2Controller): Promise {\n return this.ajax\n .apiRequest<{ value: { timeRemaining: number } }>(\n 'visualverification/timeremaining',\n this.visualVerification.headerWithCID(),\n null,\n 'GET',\n false\n )\n .then((result) => {\n if (!result?.value.timeRemaining) {\n return true;\n }\n\n return result.value.timeRemaining <= 1000;\n });\n}\n\n/**\n * A controller for displaying a list of visual verification events for Central Station visual verification.\n */\nexport default class VVV2Controller extends VVBaseController {\n @service declare ajax: AjaxService;\n @service declare store: Store;\n @service declare contextManager: ContextManager;\n @service declare navigation: NavigationService;\n @service declare intl: ADCIntlService;\n @service declare notificationManager: NotificationManager;\n @service declare modals: ModalService;\n @service declare visualVerification: VisualVerification;\n\n declare model: ModelFrom;\n\n @tracked disableLiveViewButton?: boolean = true;\n @tracked checkForLiveViewAccess = true;\n @tracked newClipUploaded = false;\n @tracked hasVideoEvents: Record = {};\n @tracked viewedVideoEvents: Set = new Set();\n\n // region Component state\n\n /**\n * The resolved model used for this route.\n */\n resolvedModel?: Pick<\n ResolvedModelFrom,\n 'cameras' | 'imageSensors' | 'showPreferredTimezone' | 'supportedPageFeatures'\n >;\n\n /**\n * Supported page features enabled on the page.\n */\n @computed('resolvedModel.supportedPageFeatures.firstObject')\n get supportedFeatures(): PageFeature | undefined {\n return this.resolvedModel?.supportedPageFeatures.firstObject ?? undefined;\n }\n\n /**\n * The collection of CDQL/VV events to render at page load (latest session / batch).\n */\n @computed('visualVerification.events', 'resolvedModel', 'selectedDevices')\n get vvCdqlItems(): VisualVerificationItem[] {\n const { showPreferredTimezone } = this.resolvedModel || {},\n selectedDevices = this.getSelectedDevices(),\n events = this.visualVerification.events;\n return events\n ? (events as VisualVerificationEvent[])\n .filter((m) => selectedDevices.includes(m.deviceId))\n .map((model) => new VisualVerificationItem(model, { showPreferredTimezone }))\n : [];\n }\n\n /**\n * The ids of the items which are of type Snapshot Event.\n */\n @computed('vvCdqlItems.[]')\n get vvSnapshotItemIds(): string[] {\n return this.vvCdqlItems.filter((item) => item.model.isSnapshotEvent).map((item) => item.model.eventId);\n }\n\n /**\n * Task which checks if the displayed snapshots have proccessed assosciated clips.\n */\n checkForReplacedSnapshots = task({ drop: true }, async () => {\n while (this.vvCdqlItems.length > 0) {\n const hasVideoEvents: Record = {};\n for (const vvItem of this.vvCdqlItems) {\n if (vvItem.hasBeenViewed) {\n this.viewedVideoEvents.add(vvItem.model.eventId);\n }\n }\n for (const vvItem of this.vvCdqlItems) {\n if (vvItem.model.previewId && !this.viewedVideoEvents.has(vvItem.model.eventId)) {\n const videoEventId = vvItem.model.eventId;\n const videoEvent = this.store.peekRecord('visual-verification/event', videoEventId);\n const hasVideoEvent = !!videoEvent;\n hasVideoEvents[videoEventId] = hasVideoEvent;\n }\n this.hasVideoEvents = hasVideoEvents;\n this.newClipUploaded = Object.values(hasVideoEvents).some((value) => value);\n if (this.newClipUploaded) {\n this.notificationManager.addNotification(\n this.intl.tc(this, 'readyToBeViewed'),\n 'info',\n [\n {\n text: this.intl.t('generic.visualVerification.refresh'),\n icon: 'refresh',\n action: () => {\n // Hide all open notifications\n this.notificationManager.hideNotifications();\n this.visualVerification.loadSession(true);\n this.displayInformativeNotification();\n }\n }\n ],\n 10000\n );\n }\n }\n await timeout(15000);\n }\n });\n\n /**\n * Cancel tasks from this controller.\n */\n @action\n cancelTasks(): void {\n this.pullCanAccessLiveView.cancelAll();\n this.checkForReplacedSnapshots.cancelAll();\n }\n\n /**\n * Display a timed notification that informs the user that the blue dots represent replaced snapshots with clips.\n */\n displayInformativeNotification(): void {\n this.notificationManager.addNotification(\n this.intl.t('generic.visualVerification.blueDotLegend'),\n 'info',\n undefined,\n 6000\n );\n }\n\n /**\n * Return an array of clips of a specific type\n */\n clipsType(type: string): VisualVerificationItem[] {\n return this.vvCdqlItems.filter((item) => {\n return item.model.eventCategory === type;\n });\n }\n\n /**\n * Returns an array of the Priority Event clips\n */\n get priorityClips(): VisualVerificationItem[] {\n return this.clipsType('Priority');\n }\n\n /**\n * Returns an array of the People Detected clips\n */\n get peopleDetectedClips(): VisualVerificationItem[] {\n return this.clipsType('PeopleDetected');\n }\n\n /**\n * Returns an array of the Vehicle Detected clips\n */\n get vehicleDetectedClips(): VisualVerificationItem[] {\n return this.clipsType('VehicleDetected');\n }\n\n /**\n * Returns an array of the Other clips\n */\n get otherClips(): VisualVerificationItem[] {\n return this.clipsType('Other');\n }\n\n /**\n * The collection of visual verification items without people detected.ds\n */\n @computed('vvCdqlItems')\n get noPeopleDetectedEventItems(): VisualVerificationItem[] {\n return filterEventsForPersonDetected(this.vvCdqlItems, false);\n }\n\n /**\n * The collection of clips with people detected. Only clips will include person detected.\n */\n @computed('vvCdqlItems')\n get peopleDetectedClipItems(): VisualVerificationItem[] {\n return filterEventsForPersonDetected(this.vvCdqlItems, true);\n }\n\n /**\n * Generate session navigation information.\n */\n @computed('visualVerification.{sessionNumber,totalSessions}', 'vvCdqlItems')\n get navigationInfo(): string {\n return this.intl.tc(this, 'navigationInfo', {\n sessionNumber: this.visualVerification.sessionNumber,\n totalSessions: this.visualVerification.totalSessions\n });\n }\n\n /**\n * Boolean for determining if we should continue event polling.\n * Used when loading page (setting to true) or when leaving page (setting to false to prevent event calls once off page).\n */\n checkForEventsAndAlarms = true;\n\n lastRefreshTimeISO = new Date().toISOString();\n\n /**\n * Indicates the UI should be in a selected state because at least on of the managed clips is already protected.\n */\n @alias('supportedFeatures.canDownloadClips')\n declare canDownloadClips: boolean;\n\n /**\n * Ids of clips being downloaded.\n */\n downloadClipIds?: string;\n\n /**\n * Returns an array of the flagged items in the DB\n */\n @filterBy('visualVerification.events', 'flagged')\n declare flaggedEvents: VisualVerificationEvent[];\n\n /**\n * Indicates if the logged in user can access visual verification's live view.\n */\n @computed()\n get canAccessLiveView(): boolean {\n return isPresent(this.navigation.getRouteItem(EmberVisualVerificationLiveView));\n }\n\n /**\n * Task to check if the user should have access to view Live View page\n */\n pullCanAccessLiveView = task({ drop: true }, async () => {\n while (this.checkForLiveViewAccess) {\n const hideLiveView = await shouldHideLiveView.call(this);\n if (hideLiveView) {\n this.checkForLiveViewAccess = false;\n }\n this.disableLiveViewButton = hideLiveView;\n await timeout(15000);\n }\n });\n\n @computed('canAccessLiveView', 'disableLiveViewButton')\n get hideLiveViewButton(): boolean {\n return !this.canAccessLiveView || !!this.disableLiveViewButton;\n }\n\n /**\n * Cameras for visual verification clip display.\n */\n @computed('resolvedModel.{cameras,imageSensors}', 'availableImageSensors', 'selectedDevices')\n get dropdownDevices(): DropdownSelectItem[] {\n const { cameras = [], imageSensors = [] } = this.resolvedModel ?? {},\n selectedDevices = this.getSelectedDevices();\n\n return [...cameras.toArray(), ...imageSensors.toArray()].map((model) =>\n DropdownSelectItem.create({\n name: model.description,\n value: model.id,\n state: selectedDevices.includes(model.id) ? SELECTED : UNSELECTED,\n disabled: model.excludedFromVisualVerification\n })\n );\n }\n\n // endregion\n\n // region Actions\n\n /**\n * Device filter changed action.\n */\n @action\n onDeviceFilterChange(dropdownDevices: Array): void {\n set(\n this,\n 'selectedDevices',\n dropdownDevices.filter(({ disabled, state }) => !disabled && state === SELECTED).mapBy('value')\n );\n }\n\n /**\n * Transitions to the visual verification's live view route.\n */\n @action\n async transitionToLiveView(): Promise {\n (await shouldHideLiveView.call(this))\n ? (this.disableLiveViewButton = true)\n : this.navigation.transitionToRouteId(EmberVisualVerificationLiveView);\n }\n\n /**\n * Transitions to the visual verification's SD Timeline route.\n */\n @action\n transitionToSD(): void {\n this.navigation.transitionToRouteId(EmberVisualVerificationSD);\n }\n\n /**\n * Transitions to the visual verification's SVR Timeline route.\n */\n @action\n transitionToSVR(): void {\n this.navigation.transitionToRouteId(EmberVisualVerificationSVR);\n }\n\n /**\n * Download clips from backend URL.\n */\n downloadClips = task({ drop: true }, async () => {\n if (!this.canDownloadClips) {\n return Promise.reject();\n }\n\n // Token and clip ids for download tracking.\n const token = new Date().toUTCString();\n this.downloadClipIds = '';\n\n // Ajax request to initiate clips download.\n const value = await this.ajax.apiRequestForValue(\n `visualverification/events/download?token=${token}`,\n this.visualVerification.headerWithCID()\n );\n const url = value?.url;\n\n // The API call returned a value, download the file.\n // downloadFile starts download, but returns immediately.\n if (url !== undefined) {\n downloadFile(url);\n }\n\n this.downloadClipIds = value?.clipIds;\n\n if (this.downloadClipIds !== '') {\n // Status values:\n // 0: try again, processing hasn't started yet\n // 1-2: still in processing\n // 3: successfully downloaded\n // 4: user has insufficient permission\n // 5: Download token in wrong format\n const { success: status } = await this.ajax\n .request(\n `${sitePrefix}/WebServices/VideoWebService.asmx/GetDownloadProgressBarStatus`,\n JSON_REQUEST,\n {\n correlatedId: this.downloadClipIds,\n tokenDownloadTime: token\n },\n POST\n )\n .then(({ d }) => JSON.parse(d));\n\n if (!(status === InsufficientPermission || status === WrongTokenFormat)) {\n // Error with permission or token.\n return Promise.resolve();\n }\n }\n\n return Promise.reject();\n });\n\n /**\n * Polls the backend to check if new events or alarms have been uploaded.\n * If they have, displays a notification to refresh the page.\n */\n checkForNewEventsAndAlarms = task({ drop: true }, async () => {\n while (this.checkForEventsAndAlarms && ENV.environment !== 'test') {\n try {\n const newEvents = await this.ajax.apiRequest(\n `visualverification/events?afterDateUtc=${this.lastRefreshTimeISO}`,\n this.visualVerification.headerWithCID()\n );\n if (newEvents.data.length) {\n // display new toast refresh notification\n this.notificationManager.addNotification(\n this.intl.t('generic.visualVerification.newEventsUploaded'),\n 'info',\n [\n {\n text: this.intl.t('generic.visualVerification.refresh'),\n icon: 'refresh',\n action: () => {\n // Hide all open notifications\n this.notificationManager.hideNotifications();\n return this.visualVerification.loadSession(!!this.supportedFeatures?.enableCDQL);\n }\n }\n ],\n 10000\n );\n\n // Only prompt a new notification if an event has been uploaded since last notification.\n this.lastRefreshTimeISO = new Date().toISOString();\n }\n\n // If CDQL is enabled\n if (this.supportedFeatures?.enableCDQL && this.visualVerification.lastAlarmDate) {\n const newAlarms = await this.ajax.apiRequest(\n `visualverification/alarms/new?afterDate=${this.visualVerification.lastAlarmDate}`,\n this.visualVerification.headerWithCID()\n );\n if (newAlarms) {\n this.notificationManager.addNotification(\n this.intl.t('generic.visualVerification.newAlarmsAvailable'),\n 'info',\n [\n {\n text: this.intl.t('generic.visualVerification.refresh'),\n icon: 'refresh',\n action: () => {\n // Hide all open notifications\n this.notificationManager.hideNotifications();\n return this.visualVerification.loadSession(true);\n }\n }\n ],\n 10000\n );\n }\n }\n } catch (error) {\n const errorText = getErrorText(error)!;\n errorText && this.notificationManager.addError(errorText);\n }\n await timeout(15000);\n }\n });\n\n // endregion\n\n // Variables used by the VV flagging feature\n @tracked flaggingIsOn = false;\n\n get selectorCount(): number {\n return this.vvCdqlItems.filterBy('isSelected').length;\n }\n\n get selectorState(): boolean | typeof MIXED_STATE | undefined {\n const v = this.vvCdqlItems.mapBy('isSelected').uniq();\n return v.length === 1 ? v.firstObject : MIXED_STATE;\n }\n\n @action\n startFlagging(): void {\n this.flaggingIsOn = true;\n }\n\n /**\n * Action that updates flagged state for selected clips.\n */\n @action async toggleFlagItems(): Promise {\n const models = this.vvCdqlItems.filterBy('isSelected').mapBy('model'),\n states = models.mapBy('flagged').uniq(),\n newState = states.length === 1 ? !states[0] : false,\n { notificationManager, intl } = this;\n models.setEach('flagged', newState);\n try {\n await Promise.all(models.invoke('save'));\n notificationManager.addSuccess(\n intl.tc(this, newState ? 'successfullyFlaggedItems' : 'successfullyUnflaggedItems')\n );\n } catch (ex) {\n models.invoke('rollbackAttributes');\n notificationManager.addError(intl.tc(this, 'flaggedItemsError'));\n }\n }\n\n /**\n * Action which makes API call to retrieve the Responder URL.\n */\n @action\n async handleResponderUrl(): Promise {\n this.modals.showModal(ResponderUrl, {\n url: (await this.ajax.apiRequestForValue('visualverification/responderurl')) ?? ''\n });\n }\n\n /**\n * Action which cancels selection and exits edit mode.\n */\n @action\n closeItemSelection(): void {\n this.vvCdqlItems.setEach('isSelected', false);\n this.flaggingIsOn = false;\n }\n\n /**\n * Action to handle the 'select all / none' feature.\n */\n @action\n toggleFlagAll(): void {\n this.vvCdqlItems.setEach(\n 'isSelected',\n this.selectorState === MIXED_STATE ? true : !this.vvCdqlItems.firstObject?.isSelected\n );\n }\n}\n\n// DO NOT DELETE: this is how TypeScript knows how to look up your controllers.\ndeclare module '@ember/controller' {\n interface Registry {\n 'visual-verification/v2': Controller;\n }\n}\n","import { action, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { EmberVisualVerificationFlagging } from 'customer-site/enums/CustomerPageUrl';\nimport VVBaseRoute from '../base-route';\n\nimport type Store from '@ember-data/store';\nimport type Transition from '@ember/routing/transition';\nimport type PageFeature from 'customer-site/models/visual-verification/page-feature';\nimport type { ModelFrom } from 'customer-site/utils/type-utils';\nimport type VVV2Controller from 'customer-site/visual-verification/v2/controller';\n\ntype VVV2RouteModel = ModelFrom & {\n supportedPageFeatures: ADCAsyncStoreFindAll;\n};\n\n/**\n * The parent route controller for Visual Verification.\n */\nexport default class VVV2Route extends VVBaseRoute {\n @service declare store: Store;\n\n /** @override */\n routeId = EmberVisualVerificationFlagging;\n\n setupController(controller: VVV2Controller, model: VVV2RouteModel, transition: Transition): void {\n super.setupController(controller, model, transition);\n\n // Start new event polling.\n set(controller, 'checkForEventsAndAlarms', true);\n controller.checkForNewEventsAndAlarms.perform();\n }\n\n /** @override */\n model(): VVV2RouteModel {\n const { store } = this;\n\n return {\n ...super.model(),\n supportedPageFeatures: store.findAll('visual-verification/page-feature')\n };\n }\n\n declare controller: VVV2Controller;\n @action\n willTransition(): void {\n // End new event polling if user leaves the gallery page.\n this.controller.checkForNewEventsAndAlarms.cancelAll();\n\n // Get rid of notifications when moving to a different page.\n this.controller.notificationManager.hideNotifications();\n }\n}\n"],"names":["createTemplateFactory","scope","videoLiveVideo_","exists_","videoVideoPlayerPlaybackFeaturesSdPlaybackFeatures_","didInsert_","fn","willDestroy_","routeView_","promiseHashTracked_","videoClipsLoading_","t_","videoClipsClipDisplayPersonDetectedClipDisplay_","videoClipsClipDisplayVisualVerificationClipDisplay_","videoVideoPlayerPlaybackFeaturesSvrPlaybackFeatures_","buttonIcon_","tc_","popoverMenu_","tc_0","eq_","HiddenDevicesInfo","intlPath","path","_dec","_class2","Component","constructor","arguments","_initializerDefineProperty","_descriptor","toggleToolTip","this","toolTipOpen","_applyDecoratedDescriptor","prototype","tracked","configurable","enumerable","writable","initializer","action","Object","getOwnPropertyDescriptor","_class","setComponentTemplate","TEMPLATE","buttonAsync_","SessionNavigator","callSession","visualVerification","loadSession","args","forDate","service","FormatDateHelper","Helper","r","super","defineProperty","value","call","e","t","i","Symbol","toPrimitive","TypeError","String","_toPrimitive","_toPropertyKey","_defineProperty","intl","onLocaleChanged","recompute","compute","_ref","namedOptions","positionalOptions","options","assign","_options$allowEmpty","isEmpty","allowEmpty","formatDate","n","a","keys","forEach","slice","reverse","reduce","htmlSafe_","concat","formatDate_","VVCdqlTimelineDateChanged","templateOnlyComponent","modalsBaseBaseModal_","videoClipsAnalyticsIcon_","videoClipsMultiPlayer_","array","uiImagesStateImage_","not_","on","uiImagesStatelessImage_","formatDateTz_","and_","shouldHideLiveView","ajax","apiRequest","undefined","then","result","timeRemaining","SnapshotModal","_dec2","alias","_dec3","_dec4","_dec5","_dec6","_dec7","_dec8","_dec9","_dec10","computed","_dec11","owner","_descriptor2","_descriptor3","_descriptor4","_descriptor5","_descriptor6","_descriptor7","_descriptor8","_descriptor9","_descriptor10","_descriptor11","_descriptor12","_descriptor13","_descriptor14","_descriptor15","_descriptor16","_buildTask","context","generator","shouldCheckForNewClips","checkForClips","timeout","snapshots","length","item","snapshot","hasClip","snapshotId","model","eventId","associatedClip","fetchClip","clip","replacedByClip","checkForLiveViewAccess","hideLiveView","disableLiveViewButton","drop","pullCanAccessLiveView","perform","checkForClipsTask","selectedImage","thumbnail","hideLiveViewButton","canAccessLiveView","every","vvEvents","store","peekAll","toArray","some","vvEvent","previewId","clipIdToLoad","vvItem","peekRecord","mediaItem","MediaItem","media","VideoItem","isPresent","contextManager","getRouteItem","EmberVisualVerificationLiveView","transitionToLiveView","cameraId","navigation","transitionToRouteId","queryParams","handleClick","imageSrc","image","hasBeenViewed","guidFor_","CdqlClipDisplayTooltip","await_","svgSymbol_","Info","time","timezone","showPreferredTimezone","identityModel","preferredTimezone","timeZone","isOnVVorEE","isCurrentRoute","EmberVisualVerificationFlagging","EmberVisualVerificationResponder","formatDateTz","timestamp","format","hour","minute","routeViewViewContainer_","videoClipsClipDisplayCdqlClipDisplayCdqlTooltip_","expandButton_","videoClipsPlayableClipVisualVerificationClip_","snapshotViewerGalleryImage_","imageSensorGalleryImage_","CDQLClipDisplayComponent","gt","cdqlItems","clips","mapBy","compact","reject","isDeleted","cdqlItemsWithImages","groupedImages","groups","isVideoEvent","isSnapshotEvent","imageGroupId","split","has","get","push","set","Map","images","sort","b","localeCompare","newList","filteredSnapshots","snapshotItem","mappedSnapshots","map","filteredSnapshot","groupImages","siblings","dayTimeRange","getTimeRange","playVideo","now","Date","cookieManager","setEssentialCookie","JSON","stringify","getTime","playVvVideo","isVisualVerification","supportedFeatures","nextSessionDate","viewImage","markAsViewed","modals","showModal","ImageModal","id","viewSnapshot","toggleExpand","expandContent","guidFor_0","videoClipsClipDisplayCdqlClipDisplay_","EventTimeline","independentIcon","icons","_iconObject$icon","_iconObject$vvEvent","iconObject","firstObject","icon","clipItem","vaIcon","averageLeft","accumulator","currentValue","playEvent","isTooltipOpen","overlappingTimelineEvents","A","filterBy","overlappingAlarmIcons","didUpdate_","visualVerificationCdqlTimelineDateChanged_","visualVerificationCdqlTimelineCdqlIcon_","CDQLTimeline","_CDQLTimeline_brand","WeakSet","_classPrivateMethodInitSpec","IdentityManager","start","end","getTimezone","date","convertTime","timelineHours","startHour","endHour","middleOfTheNight","zonedTimeToUtc","startOfDay","utcToZonedTime","pullTimelineHours","middleOfTheNightPosition","_this$timelineHours","_assertClassBrand","_calculatePosition","timelineIconsArray","_this$visualVerificat","_this$visualVerificat2","alarms","eventDateUtc","left","object","itemAlreadyAddedToResult","overlap","element","resultItem","index","valueOf","pageView_","dropdownSelectMultiSelect_","visualVerificationHiddenDevicesInfo_","perform_","simpleBinary_","t_0","visualVerificationSessionNavigator_","visualVerificationCdqlTimeline_","d","window","define","esc","require","await_0","GalleryImage","_identityManager$iden","identityManager","imageSource","title","imageSensor","htmlSafe","tc","sensorName","description","imageDescription","PersonDetectedClipDisplayComponent","BaseClipDisplay","visualVerificationItems","playPersonVideo","isOnLatestSession","operatorSiteEnum","VisualVerificationOperatorSite","EscalatedEventsOperatorSite","VideoClipsModal","selectedIndex","indexOf","VisualVerificationClipDisplayComponent","visualVerificationItemsWithImages","spinnerSvg_","VideoClipsLoading","buttonSimple_","videoClipsSavedClip_","VisualVerificationClipComponent","equal","Priority","BasePlayableClipComponent","_this$args$vvItem$cli","cameraName","primaryDeviceLink","sessionDeviceLinks","VideoDevicePrimaryLink","findBy","pullPrimaryDeviceLinkData","highlightClip","isHighlighted","clipWasSnapshot","cdqlEnabled","hasVideoEvents","processedDeviceNames","_this$primaryDeviceLi","_this$primaryDeviceLi2","deviceNames","deviceName","device","multipleDeviceTriggered","_this$primaryDeviceLi3","_this$primaryDeviceLi4","multipleDeviceTrigger","startFlagging","isSelected","toggleSelection","evt","KeyboardEvent","isEnterOrSpaceCode","code","stopPropagation","getRemainingSessionTimeMs","VisualVerificationLiveViewController","BaseLiveViewController","editGroupRouteId","EmberVideoCameraGroupsEdit","manageGroupsRouteId","EmberVideoCameraGroups","host","sessionTimeMs","checkRemainingTime","systemHasRecentOperatorEvent","restartable","VisualVerificationLiveViewRoute","BaseLiveViewRoute","VVOnboardController","OnboardController","VVSdCardRoute","SdCardRoute","EmberVisualVerificationSD","Controller","VVBaseController","vvItems","events","resolvedModel","selectedDevices","getSelectedDevices","filter","m","includes","deviceId","VisualVerificationItem","noPeopleDetectedEventItems","filterEventsForPersonDetected","peopleDetectedClipItems","VVResponderRoute","VVBaseRoute","_objectSpread","findAll","VVSvrTimelineController","SvrTimelineController","VVSvrTimelineRoute","SvrTimelineRoute","EmberVisualVerificationSVR","modalsDialogModalsSimpleSimpleDialog_","textInput_","ResponderUrl","copyToClipboard","_closest","input","target","closest","querySelector","select","setSelectionRange","navigator","clipboard","writeText","notificationManager","addSuccess","sitePrefix","ENV","MIXED_STATE","headerWithCID","VVV2Controller","vvCdqlItems","viewedVideoEvents","add","videoEventId","hasVideoEvent","newClipUploaded","values","addNotification","text","hideNotifications","displayInformativeNotification","toISOString","canDownloadClips","Promise","token","toUTCString","downloadClipIds","apiRequestForValue","url","downloadFile","clipIds","success","status","request","JSON_REQUEST","correlatedId","tokenDownloadTime","POST","parse","InsufficientPermission","WrongTokenFormat","resolve","checkForEventsAndAlarms","environment","_this$supportedFeatur2","lastRefreshTimeISO","data","_this$supportedFeatur","enableCDQL","lastAlarmDate","error","errorText","getErrorText","addError","_this$resolvedModel$s","_this$resolvedModel","supportedPageFeatures","vvSnapshotItemIds","cancelTasks","cancelAll","checkForReplacedSnapshots","clipsType","type","eventCategory","priorityClips","peopleDetectedClips","vehicleDetectedClips","otherClips","navigationInfo","sessionNumber","totalSessions","dropdownDevices","_this$resolvedModel2","cameras","imageSensors","DropdownSelectItem","create","name","state","SELECTED","UNSELECTED","disabled","excludedFromVisualVerification","onDeviceFilterChange","_ref2","transitionToSD","transitionToSVR","selectorCount","selectorState","v","uniq","flaggingIsOn","toggleFlagItems","models","states","newState","setEach","all","invoke","ex","handleResponderUrl","_await$this$ajax$apiR","closeItemSelection","toggleFlagAll","_this$vvCdqlItems$fir","Set","VVV2Route","setupController","controller","transition","checkForNewEventsAndAlarms","willTransition"],"sourceRoot":""}