@3deye-toolkit/react-camera 0.0.1-alpha.19 → 0.0.1-alpha.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,36 +1,13 @@
1
1
  /// <reference types="react" />
2
- import { AppContext } from '@3deye-toolkit/core';
2
+
3
3
  import { BehaviorSubject } from 'rxjs';
4
4
  import crossfilter from 'crossfilter2';
5
- import { IReactionDisposer } from 'mobx';
5
+ import type { IReactionDisposer } from 'mobx';
6
6
  import { Observable } from 'rxjs';
7
7
  import { default as React_2 } from 'react';
8
8
  import { Subject } from 'rxjs';
9
9
  import { Subscription } from 'rxjs';
10
10
 
11
- declare class AccountStore extends ApiStore {
12
- private notification?;
13
- user: User | null;
14
- camerasPermissions: Map<number, string[]>;
15
- auth: Auth;
16
- constructor(notification?: NotificationService | undefined);
17
- get userDisplayName(): string | null;
18
- protected afterInit(): void;
19
- setAuthStore(auth: Auth): void;
20
- updateUserPassword(passwordData: {
21
- previous: string;
22
- new: string;
23
- }): Promise<void>;
24
- fetchPermissions(): Promise<void>;
25
- updateUserSettings({ firstName, lastName }: {
26
- firstName: string;
27
- lastName: string;
28
- }): Observable<RawUser>;
29
- updateCustomPreferences: (preferences: Record<string, any>) => Observable<RawUser>;
30
- setDefaultGroup(groupId: number): Observable<RawUser> | undefined;
31
- getPreference: (key: string) => any;
32
- }
33
-
34
11
  declare class Api<T> {
35
12
  [key: string]: any;
36
13
  static create<T extends PartialApi>(apiConfig: T | null, authStore: Auth, createConnection: (accessToken: string) => Connection): Api<T> & ExtractHubs<IApi, T>;
@@ -53,6 +30,18 @@ declare class Api<T> {
53
30
  private subscribeToEvents;
54
31
  }
55
32
 
33
+ declare type ApiPageResult<T> = {
34
+ success: true;
35
+ resultItems: T[];
36
+ pageInfo: PageInfo;
37
+ } | {
38
+ success: false;
39
+ error: {
40
+ code: number;
41
+ message: string;
42
+ };
43
+ };
44
+
56
45
  declare type ApiResult<T> = {
57
46
  success: true;
58
47
  resultItems: T[];
@@ -72,7 +61,11 @@ declare abstract class ApiStore {
72
61
  dispose(): void;
73
62
  }
74
63
 
75
- declare class ArchiveChunk implements Chunk {
64
+ declare type ArchiveChunk = Chunk & {
65
+ isLive: false;
66
+ };
67
+
68
+ declare class ArchiveChunk_2 implements Chunk_2 {
76
69
  json?: string;
77
70
  startTime: Date;
78
71
  endTime: Date;
@@ -84,16 +77,12 @@ declare class ArchiveChunk implements Chunk {
84
77
  constructor(raw: any);
85
78
  }
86
79
 
87
- declare type ArchiveChunk_2 = Chunk_2 & {
88
- isLive: false;
89
- };
90
-
91
80
  declare class ArchivesStore extends ApiStore {
92
- data: crossfilter.Crossfilter<ArchiveChunk>;
93
- chunksByCameraId: crossfilter.Dimension<ArchiveChunk, number>;
94
- chunksByStart: crossfilter.Dimension<ArchiveChunk, number>;
95
- chunksByEnd: crossfilter.Dimension<ArchiveChunk, number>;
96
- chunksById: Map<number, ArchiveChunk>;
81
+ data: crossfilter.Crossfilter<ArchiveChunk_2>;
82
+ chunksByCameraId: crossfilter.Dimension<ArchiveChunk_2, number>;
83
+ chunksByStart: crossfilter.Dimension<ArchiveChunk_2, number>;
84
+ chunksByEnd: crossfilter.Dimension<ArchiveChunk_2, number>;
85
+ chunksById: Map<number, ArchiveChunk_2>;
97
86
  private pendingRequests;
98
87
  private pendingRequestsByEnd;
99
88
  private pendingRequestsByStart;
@@ -108,14 +97,14 @@ declare class ArchivesStore extends ApiStore {
108
97
  * @param endTime - end of the period
109
98
  * TODO: add support for null endTime in order to remove requestedArchivesSince logic from player controller
110
99
  */
111
- fetch(cameraId: number, startTime: Date, endTime: Date): Observable<ArchiveChunk[]>;
112
- extendKnownInterval(cameraId: number, chunks: ArchiveChunk[]): void;
113
- add(chunks: ArchiveChunk[]): void;
114
- getChunks({ cameraId, from, to }: ChunksQuery): ArchiveChunk[];
100
+ fetch(cameraId: number, startTime: Date, endTime: Date): Observable<ArchiveChunk_2[]>;
101
+ extendKnownInterval(cameraId: number, chunks: ArchiveChunk_2[]): void;
102
+ add(chunks: ArchiveChunk_2[]): void;
103
+ getChunks({ cameraId, from, to }: ChunksQuery): ArchiveChunk_2[];
115
104
  findClosestChunk({ cameraId, time }: {
116
105
  cameraId: number;
117
106
  time: Date;
118
- }): ArchiveChunk;
107
+ }): ArchiveChunk_2;
119
108
  protected afterInit(): void;
120
109
  }
121
110
 
@@ -128,6 +117,7 @@ declare class Auth {
128
117
  widgetTokenServiceUrl?: string;
129
118
  deviceInfo: string | null;
130
119
  clientId: string;
120
+ private pendingUpdateTokenRequest;
131
121
  get isAuthenticated(): boolean;
132
122
  constructor({ tokenServiceUrl, widgetTokenServiceUrl, storage, tokenStorageKey, deviceInfo, clientId }: AuthStoreOptions);
133
123
  signOut: () => void;
@@ -139,12 +129,11 @@ declare class Auth {
139
129
  }) => Promise<Token> | undefined;
140
130
  invalidateToken: () => void;
141
131
  getTokenFromStorage(): Promise<Token | null>;
142
- storeToken(token: Token | null): Promise<void | undefined>;
143
- getInitialToken(): Promise<Token | null>;
144
- fetchTokenBy(grantType: string, params: {
145
- [key: string]: string | boolean;
146
- }): Promise<Token>;
147
- fetchWidgetToken(token: Token): Promise<Token>;
132
+ private storeToken;
133
+ private getInitialToken;
134
+ private fetchTokenBy;
135
+ private updateToken;
136
+ private fetchWidgetToken;
148
137
  }
149
138
 
150
139
  declare interface AuthStoreOptions {
@@ -169,19 +158,7 @@ export declare const BoxSelector: (({ onSelect, onRequestCancel, onClose }: Prop
169
158
  displayName: string;
170
159
  };
171
160
 
172
- declare class Camera extends React_2.Component<Props> {
173
- static contextType: React_2.Context<ToolkitApp | null>;
174
- context: React_2.ContextType<typeof AppContext>;
175
- private playerRef;
176
- onFullscreenRequest: null | (() => void);
177
- componentDidMount(): void;
178
- componentDidUpdate(): void;
179
- initFullscreen(): void;
180
- render(): JSX.Element | null;
181
- }
182
- export default Camera;
183
-
184
- declare class Camera_2 {
161
+ export declare class Camera {
185
162
  id: number;
186
163
  name: string;
187
164
  imageUrl: string;
@@ -201,12 +178,18 @@ declare class Camera_2 {
201
178
  pin: string;
202
179
  webRtcUrl: string;
203
180
  isPtz: boolean;
181
+ permissions: number;
204
182
  get isOnline(): boolean;
205
183
  get supportsWebRTC(): boolean;
206
184
  constructor(raw: RawCamera);
207
185
  update: (raw: RawCamera) => void;
208
186
  }
209
187
 
188
+ declare const Camera_2: ((props: Props) => JSX.Element) & {
189
+ displayName: string;
190
+ };
191
+ export default Camera_2;
192
+
210
193
  declare interface Camera_3 {
211
194
  id: number;
212
195
  name: string;
@@ -224,36 +207,10 @@ declare interface Camera_3 {
224
207
  Lng: number;
225
208
  } | null;
226
209
  archiveDuration: number;
210
+ permissions: number;
227
211
  raw: RawCamera;
228
212
  }
229
213
 
230
- declare class CameraEvent {
231
- id: number;
232
- startTime: Date;
233
- endTime: Date;
234
- cameraId: number;
235
- type: EventType_2;
236
- thumbnailUrl: string;
237
- raw: RawEvent;
238
- foundObjects: FoundObject[];
239
- faces: Face[];
240
- get isLive(): boolean;
241
- constructor(raw: RawEvent);
242
- }
243
-
244
- declare class CamerasStore extends ApiStore {
245
- camerasById: Map<number, Camera_2>;
246
- data: Camera_2[];
247
- loading: boolean;
248
- loaded: boolean;
249
- constructor();
250
- fetch(): Observable<RawCamera[]>;
251
- add: (cameras: RawCamera[]) => void;
252
- sync: () => void;
253
- protected afterInit(): void;
254
- dispose(): void;
255
- }
256
-
257
214
  declare interface CameraStatistics {
258
215
  id: number;
259
216
  month: number;
@@ -268,19 +225,19 @@ declare interface CamgroupItem {
268
225
  }
269
226
 
270
227
  declare interface Chunk {
271
- json?: string;
272
228
  startTime: Date;
273
229
  endTime: Date;
274
230
  streamUrl: string;
275
231
  duration?: number;
232
+ cameraId: number;
276
233
  }
277
234
 
278
235
  declare interface Chunk_2 {
236
+ json?: string;
279
237
  startTime: Date;
280
238
  endTime: Date;
281
239
  streamUrl: string;
282
240
  duration?: number;
283
- cameraId: number;
284
241
  }
285
242
 
286
243
  declare interface ChunksQuery {
@@ -300,9 +257,10 @@ declare interface Clip {
300
257
  name: string;
301
258
  }
302
259
 
303
- export declare class CloseControl extends React_2.Component<Props_3> {
304
- render(): JSX.Element | null;
305
- }
260
+ export declare const CloseControl: {
261
+ ({ onClick }: Props_3): JSX.Element | null;
262
+ displayName: string;
263
+ };
306
264
 
307
265
  declare interface Connection {
308
266
  state: CONNECTION_STATE;
@@ -341,8 +299,8 @@ export declare class Controls extends React_2.Component<Props_5> {
341
299
  static contextType: React_2.Context<PlayerController>;
342
300
  static Spacer: React_2.FC;
343
301
  containerRef: React_2.RefObject<HTMLDivElement>;
344
- private mutationObserver;
345
- private resizeReactionDisposer;
302
+ mutationObserver: MutationObserver;
303
+ resizeReactionDisposer: IReactionDisposer;
346
304
  componentDidUpdate(): void;
347
305
  componentDidMount(): void;
348
306
  reflow: () => void;
@@ -354,52 +312,9 @@ declare type DeepPartial<T> = {
354
312
  [K in keyof T]?: DeepPartial<T[K]>;
355
313
  };
356
314
 
357
- export declare class DefaultControls extends React_2.Component<Props_7> {
358
- render(): JSX.Element;
359
- }
360
-
361
- declare class EventListlStore {
362
- private eventsStore;
363
- data: CameraEvent[];
364
- cameraFilters: Camera_2[];
365
- objectFilters: EventOption[];
366
- to: Date | null;
367
- from: Date;
368
- loading: boolean;
369
- probabilityThreshold: number;
370
- facesProbabilityThreshold: number;
371
- onlyFaces: boolean;
372
- totalCount: number;
373
- facesCount: number;
374
- title: string;
375
- pendingData: CameraEvent[];
376
- paused: boolean;
377
- updates: number;
378
- colors: Set<string>;
379
- get someAnalyticsFilterSelected(): boolean;
380
- get filters(): (Camera_2 | EventOption)[];
381
- constructor(eventsStore: EventsStore);
382
- flushUpdates: () => void;
383
- isAboveThreshold: (e: CameraEvent) => boolean;
384
- hasFacesAboveThreshold: (e: CameraEvent) => boolean;
385
- toggleFaces(): void;
386
- load(): void;
387
- setFilters(filters: (Camera_2 | EventOption)[] | null): void;
388
- getProbabilityTreshold: () => number;
389
- setProbabilityTreshold: (value: number) => void;
390
- getFacesProbabilityTreshold: () => number;
391
- setFacesProbabilityTreshold: (value: number) => void;
392
- toggleColor(color: string): void;
393
- clearColors(): void;
394
- }
395
-
396
- declare interface EventOption {
397
- id: string;
398
- name: string;
399
- color: string;
400
- highlightColor: string;
401
- isEventType: boolean;
402
- }
315
+ export declare const DefaultControls: (({ onRequestClose, onRequestToggleFullscreen }: Props_7) => JSX.Element) & {
316
+ displayName: string;
317
+ };
403
318
 
404
319
  declare const events: {
405
320
  [P in keyof PartialApi]: Array<{
@@ -408,104 +323,7 @@ declare const events: {
408
323
  }>;
409
324
  };
410
325
 
411
- declare class EventSchemaStore extends ApiStore {
412
- api: Api<IApi> & IApi;
413
- schemaDescription: SchemaDescriptionParameter[];
414
- get foundObjectTypes(): string[];
415
- get foundObjectTypesForSelect(): {
416
- id: EventType;
417
- name: string;
418
- color: string;
419
- highlightColor: any;
420
- isEventType: boolean;
421
- }[];
422
- get colorsByFoundObjectType(): Map<string, string>;
423
- fetchAnalyticEventSchema: () => void;
424
- protected afterInit(): void;
425
- dispose(): void;
426
- }
427
-
428
- declare interface EventsQuery {
429
- cameraIds?: number[];
430
- from: Date;
431
- to: Date | null;
432
- objectType?: string[];
433
- colors?: Set<string>;
434
- }
435
-
436
- declare class EventsStore extends ApiStore {
437
- private camerasStore;
438
- data: crossfilter.Crossfilter<CameraEvent>;
439
- eventsByCameraId: crossfilter.Dimension<CameraEvent, number>;
440
- eventsByStart: crossfilter.Dimension<CameraEvent, number>;
441
- eventsByEnd: crossfilter.Dimension<CameraEvent, number>;
442
- eventsByType: crossfilter.Dimension<CameraEvent, EventType_2>;
443
- eventsByFoundObjects: crossfilter.Dimension<CameraEvent, string>;
444
- eventsByColor: crossfilter.Dimension<CameraEvent, string>;
445
- eventsByLiveliness: crossfilter.Dimension<CameraEvent, boolean>;
446
- pendingRequests: crossfilter.Crossfilter<PendingRequest>;
447
- pendingRequestsByEnd: crossfilter.Dimension<PendingRequest, number>;
448
- pendingRequestsByStart: crossfilter.Dimension<PendingRequest, number>;
449
- pendingRequestsByCameraId: crossfilter.Dimension<PendingRequest, number>;
450
- knownIntervals: crossfilter.Crossfilter<Interval_2>;
451
- knownIntervalsByCameraId: crossfilter.Dimension<Interval_2, number>;
452
- knownIntervalsByStart: crossfilter.Dimension<Interval_2, number>;
453
- knownIntervalsByEnd: crossfilter.Dimension<Interval_2, number>;
454
- eventsById: Map<number, CameraEvent>;
455
- updates: number;
456
- /**
457
- * Contains recent additions to the store as list of event ids
458
- * NOTE: do not update several times in single action as we lose info about intermediate additions that way
459
- */
460
- recentAdditions: number[];
461
- constructor(camerasStore: CamerasStore);
462
- /**
463
- * Fetches events for given camera and period
464
- * @param cameraId - camera id or -1 to fetch all available events for given period
465
- * @param startTime - start of the period
466
- * @param endTime - end of the period
467
- */
468
- fetchEvents(cameraId: number, startTime: Date, endTime: Date | null): Observable<CameraEvent[]>;
469
- update: (data: CameraEvent[]) => void;
470
- add: (data: CameraEvent[]) => void;
471
- getEvents({ cameraIds, from, to, objectType, colors }: EventsQuery): CameraEvent[];
472
- getOverlappedEvents({ cameraId, from, to }: {
473
- cameraId: number;
474
- from: Date;
475
- to: Date;
476
- }): CameraEvent[];
477
- getLastBefore({ cameraId, date }: {
478
- cameraId: number;
479
- date: Date;
480
- }): CameraEvent;
481
- getFirstAfter({ cameraId, date }: {
482
- cameraId: number;
483
- date: Date;
484
- }): CameraEvent;
485
- protected afterInit(): void;
486
- processNewEvents: ({ data }: {
487
- data: RawEvent[];
488
- }) => void;
489
- dispose(): void;
490
- }
491
-
492
- declare enum EventType {
493
- Motion = "Motion",
494
- Tampering = "Tampering",
495
- PanTiltZoom = "PanTiltZoom",
496
- CrossLine = "CrossLine",
497
- Start = "Start",
498
- Stop = "Stop",
499
- Restart = "Restart",
500
- Audio = "Audio",
501
- Analytic = "Analytic",
502
- Unknown = "Unknown"
503
- }
504
-
505
- declare enum EventType_2 {
506
- Default = "Default",
507
- Analytic = "Analytic"
508
- }
326
+ declare type EventType = 'Motion' | 'Tampering' | 'PanTiltZoom' | 'CrossLine' | 'Intrusion' | 'LicensePlate' | 'FaceDetection' | 'Audio' | 'Analytic' | 'SpeedDetection' | 'PeopleCounter' | 'Temperature' | 'PoS' | 'GPS' | 'DigitalInput' | 'Normal' | 'Suspicious' | 'Loitering' | 'Vandalism' | 'Trespass' | 'Emergency' | 'LifeInDanger' | 'ErroneousAlert' | 'Misidentification' | 'Fire' | 'MedicalDuress' | 'HoldUp' | 'CheckIn' | 'CheckOut' | 'ClockIn' | 'ClockOut' | 'ParkingStart' | 'ParkingEnd' | 'ParkingViolation' | 'GateAccess' | 'DoorAccess' | 'TemperatureCheck' | 'IDCheck' | 'PPECheck' | 'WelfareCheck' | 'Uncategorized' | 'Unknown';
509
327
 
510
328
  declare type ExtractHubs<T, K> = {
511
329
  [P in keyof ExtractMethods<T, K>]: ExtractMethods<T[P], K[P]>;
@@ -513,47 +331,12 @@ declare type ExtractHubs<T, K> = {
513
331
 
514
332
  declare type ExtractMethods<T, K> = Pick<T, Extract<keyof T, keyof K>>;
515
333
 
516
- declare interface Face {
517
- PersonId: number;
518
- Name: string;
519
- Box: {
520
- Left: number;
521
- Top: number;
522
- Right: number;
523
- Bottom: number;
524
- };
525
- Probability: number;
526
- }
527
-
528
- declare interface FoundObject {
529
- Type: string;
530
- Box: {
531
- Left: number;
532
- Top: number;
533
- Right: number;
534
- Bottom: number;
535
- };
536
- Probability: number;
537
- Colors: {
538
- Color: string;
539
- }[];
540
- }
541
-
542
334
  declare const FULL_API_CONFIG: IApi;
543
335
 
544
- export declare class FullscreenControl extends React_2.Component<Props_6> {
545
- render(): JSX.Element | null;
546
- }
547
-
548
- declare interface GetThumbnailParams {
549
- cameraId: number;
550
- from: Date;
551
- to: Date;
552
- size?: {
553
- width: number;
554
- height: number;
555
- };
556
- }
336
+ export declare const FullscreenControl: {
337
+ ({ onClick }: Props_6): JSX.Element | null;
338
+ displayName: string;
339
+ };
557
340
 
558
341
  declare interface IApi {
559
342
  archives: {
@@ -579,6 +362,9 @@ declare interface IApi {
579
362
  GetCameras: (camera: {
580
363
  id?: number;
581
364
  } | null, since: Date | null) => Observable<ApiResult<RawCamera>>;
365
+ /**
366
+ * @deprecated
367
+ */
582
368
  GetMotionEvents: (params: {
583
369
  cameraId: number;
584
370
  endTime: Date | null;
@@ -586,9 +372,18 @@ declare interface IApi {
586
372
  }) => Observable<OBVIOUSLY_NEEDS_TO_BE_FIXED_EventsApiResult<RawEvent>>;
587
373
  GetSensorDataSchema: (eventType: EventType) => Observable<any>;
588
374
  GetSensorEvents: (params: SensorEventsParams, filter: string, box: Box) => Observable<ApiResult<RawSensorEvent>>;
375
+ GetSensorEventsPage: (request: SensorEventsRequest, filter: string | null, searchPolygons: string[]) => Observable<ApiPageResult<RawSensorEvent>>;
376
+ AddUserSensorEvent: (event: PartialExcept<RawSensorEvent, 'id' | 'eventType' | 'message'>) => Observable<ApiResult<RawSensorEvent>>;
377
+ AcknowledgeSensorEvent: (event: PartialExcept<RawSensorEvent, 'id' | 'ackEventType' | 'message'>) => Observable<ApiResult<RawSensorEvent>>;
589
378
  MoveCamera: (camera: {
590
379
  id: number;
591
380
  }, x: number, y: number, zoom: number, moveSpeed: number, zoomSpeed: number) => Observable<any>;
381
+ MoveCameraContinuousStart: ({ id }: {
382
+ id: number;
383
+ }, x: number, y: number, zoom: number, timeout: number) => Observable<any>;
384
+ MoveCameraContinuousStop: ({ id }: {
385
+ id: number;
386
+ }) => Observable<any>;
592
387
  GoHomePtzCamera: ({ id }: {
593
388
  id: number;
594
389
  }) => Observable<any>;
@@ -630,32 +425,6 @@ declare interface IApi {
630
425
  };
631
426
  }
632
427
 
633
- declare interface InitParams {
634
- token?: RawToken | {
635
- widgetId: string;
636
- widgetToken: string;
637
- };
638
- tokenStorage?: Storage_2;
639
- tokenStorageKey?: string;
640
- apiUrl?: string;
641
- tokenServiceUrl?: string;
642
- widgetTokenServiceUrl?: string;
643
- }
644
-
645
- declare interface Interval_2 {
646
- cameraId: number;
647
- from: Date;
648
- to: Date;
649
- }
650
-
651
- declare type IntervalState = {
652
- state: 'fullfilled';
653
- data: Thumbnail;
654
- } | {
655
- state: 'pending';
656
- request: Observable<any>;
657
- };
658
-
659
428
  declare class LiveChunk {
660
429
  cameraId: number;
661
430
  streamUrl: string;
@@ -679,24 +448,6 @@ declare class LiveChunk {
679
448
  setBounds: (range: [Date, Date]) => void;
680
449
  }
681
450
 
682
- declare interface NotificationOptions_2 {
683
- autoClose: number | false | undefined;
684
- }
685
-
686
- declare class NotificationService implements Notifier {
687
- private notifier;
688
- constructor(notifier: Notifier);
689
- error(message: string): void;
690
- success(message: string, options?: NotificationOptions_2): void;
691
- warn(message: string): void;
692
- }
693
-
694
- declare interface Notifier {
695
- success: (message: string, options?: NotificationOptions_2) => void;
696
- warn: (message: string) => void;
697
- error: (message: string) => void;
698
- }
699
-
700
451
  declare type OBVIOUSLY_NEEDS_TO_BE_FIXED_EventsApiResult<T> = {
701
452
  success: true;
702
453
  motionEventItems: T[];
@@ -708,32 +459,19 @@ declare type OBVIOUSLY_NEEDS_TO_BE_FIXED_EventsApiResult<T> = {
708
459
  };
709
460
  };
710
461
 
711
- declare type PartialApi = DeepPartial<IApi>;
712
-
713
- declare interface PendingRequest {
714
- cameraId: number;
715
- startTime: Date;
716
- endTime: Date;
717
- request: Observable<any>;
462
+ declare interface PageInfo {
463
+ isDescending: boolean;
464
+ nextPageToken: number;
465
+ haveMore: boolean;
718
466
  }
719
467
 
720
- declare interface PendingRequest_2 {
721
- cameraId: number;
722
- from: Date;
723
- to: Date;
724
- count: number;
725
- request: Observable<any>;
726
- }
468
+ declare type PartialApi = DeepPartial<IApi>;
727
469
 
728
- export declare class PlaybackRateControl extends React_2.Component {
729
- static contextType: React_2.Context<PlayerController>;
730
- opened: boolean;
731
- get player(): PlayerController;
732
- toggle: () => void;
733
- close: () => void;
734
- changePlaybackRate: (idx: number) => void;
735
- render(): JSX.Element | null;
736
- }
470
+ declare type PartialExcept<T, K extends keyof T> = Pick<T, K> & Partial<T>;
471
+
472
+ export declare const PlaybackRateControl: (() => JSX.Element | null) & {
473
+ displayName: string;
474
+ };
737
475
 
738
476
  declare interface PlayerBehavior {
739
477
  player: PlayerController;
@@ -753,7 +491,7 @@ declare class PlayerController {
753
491
  disposables: (IReactionDisposer | Subscription)[];
754
492
  liveChunk?: LiveChunk | null;
755
493
  currentTime: Date | null;
756
- chunk: ArchiveChunk_2 | LiveChunk | null;
494
+ chunk: ArchiveChunk | LiveChunk | null;
757
495
  paused: boolean;
758
496
  loading: boolean;
759
497
  error: any;
@@ -765,11 +503,12 @@ declare class PlayerController {
765
503
  stats: any;
766
504
  mode: 'archive' | 'DVR' | 'WebRTC' | null;
767
505
  behavior: PlayerBehavior | null;
506
+ transform: string | null;
768
507
  width: number;
769
508
  height: number;
770
509
  chunkRequestTime: Date | null;
771
510
  requestedArchivesSince: Date;
772
- archivesRequest: Observable<ArchiveChunk_2[]>;
511
+ archivesRequest: Observable<ArchiveChunk[]>;
773
512
  video: HTMLVideoElement;
774
513
  clip?: Clip;
775
514
  startTime: Date | null;
@@ -807,12 +546,12 @@ declare class PlayerController {
807
546
  replaceErrorMessageOnOffline(): void;
808
547
  changeMedia: ({ time, chunk }: {
809
548
  time?: Date | null | undefined;
810
- chunk?: LiveChunk | ArchiveChunk_2 | undefined;
549
+ chunk?: LiveChunk | ArchiveChunk | undefined;
811
550
  }) => void;
812
551
  initCurrentTime(): void;
813
552
  initLiveChunkUpdate(): void;
814
553
  initChunkRequest(): void;
815
- requestArchives: (time: Date) => Observable<ArchiveChunk_2[]>;
554
+ requestArchives: (time: Date) => Observable<ArchiveChunk[]>;
816
555
  setupLiveChunk(): void;
817
556
  /**
818
557
  * Inits correct behavior for current player mode
@@ -825,13 +564,15 @@ declare class PlayerController {
825
564
  toggleResizeMode: () => void;
826
565
  setVideoResizeMode: (mode: VideoResizeMode) => void;
827
566
  toggleMute: () => void;
567
+ setStartTime: (time: Date | null) => void;
828
568
  setVolume: (volume: number) => void;
829
569
  setPlaybackRate: (rate: number) => void;
830
570
  reactToVolumeChange(): void;
831
571
  togglePlayback: () => void;
572
+ setTransform(transform: string | null): void;
832
573
  play: () => void;
833
574
  pause: () => void;
834
- detach(): void;
575
+ detach: () => void;
835
576
  private initUpgradeToWebRtc;
836
577
  }
837
578
 
@@ -843,10 +584,9 @@ declare interface PlayerEventStreams {
843
584
  muted$: Observable<boolean>;
844
585
  }
845
586
 
846
- export declare class PlayPauseControl extends React_2.Component {
847
- static contextType: React_2.Context<PlayerController>;
848
- render(): JSX.Element;
849
- }
587
+ export declare const PlayPauseControl: (() => JSX.Element) & {
588
+ displayName: string;
589
+ };
850
590
 
851
591
  declare interface Props extends Omit<React_2.HTMLAttributes<HTMLDivElement>, 'onMouseDown'> {
852
592
  cameraId: number;
@@ -872,6 +612,7 @@ declare type Props_4 = React_2.HTMLAttributes<HTMLButtonElement> & {
872
612
 
873
613
  declare interface Props_5 {
874
614
  children: React_2.ReactNode;
615
+ style?: React_2.CSSProperties;
875
616
  }
876
617
 
877
618
  declare interface Props_6 {
@@ -883,6 +624,8 @@ declare interface Props_7 {
883
624
  onRequestToggleFullscreen: (() => void) | null;
884
625
  }
885
626
 
627
+ export declare const PtzControl: React_2.FC;
628
+
886
629
  declare interface RawCamera {
887
630
  id: number;
888
631
  customerId: number;
@@ -966,24 +709,24 @@ declare interface RawEvent {
966
709
  startTime: string;
967
710
  endTime?: string;
968
711
  cameraId: number;
969
- thumbnailUrl: string;
970
- data: string;
712
+ data: string | null;
971
713
  }
972
714
 
973
715
  declare interface RawSensorEvent {
974
716
  message: string;
975
- data: string;
976
- minEventDuration: number;
717
+ data: string | null;
977
718
  id: number;
978
719
  customerId: number;
979
720
  sensorId: number;
980
721
  sensorType: 'CameraSensor' | 'MotionSensor' | 'IntrusionSensor' | 'AudioSensor' | 'TemperatureSensor' | 'SpeedSensor' | 'Unknown';
981
- eventType: 'Motion' | 'Tampering' | 'PanTiltZoom' | 'CrossLine' | 'Start' | 'Stop' | 'Restart' | 'Audio' | 'Analytic' | 'Unknown';
722
+ eventType: EventType;
723
+ ackEventType: string;
982
724
  description?: any;
983
725
  tags?: any;
984
726
  customerData?: any;
985
727
  startTime: string;
986
728
  endTime: string;
729
+ userId: string;
987
730
  }
988
731
 
989
732
  declare interface RawSharedClip {
@@ -1048,22 +791,9 @@ declare interface RawUser {
1048
791
  version: string;
1049
792
  }
1050
793
 
1051
- export declare class ResizeModeControl extends React_2.Component {
1052
- static contextType: React_2.Context<PlayerController>;
1053
- context: React_2.ContextType<typeof PlayerContext>;
1054
- render(): JSX.Element;
1055
- }
1056
-
1057
- declare interface SchemaDescriptionParameter {
1058
- schemaId: number;
1059
- eventType: string;
1060
- description: string;
1061
- fieldName: string;
1062
- parameterType: string;
1063
- possibleValues: string;
1064
- valueSet: string;
1065
- values?: string[];
1066
- }
794
+ export declare const ResizeModeControl: (() => JSX.Element) & {
795
+ displayName: string;
796
+ };
1067
797
 
1068
798
  declare interface SensorEventsParams {
1069
799
  sensorId: number;
@@ -1073,6 +803,62 @@ declare interface SensorEventsParams {
1073
803
  eventType: EventType;
1074
804
  }
1075
805
 
806
+ declare interface SensorEventsRequest {
807
+ sensorIds: number[];
808
+ sensorType: string;
809
+ sensorEventTypes: SensorEventType[];
810
+ startTime?: Date;
811
+ endTime?: Date;
812
+ isDescending: boolean;
813
+ rowsLimit: number;
814
+ pageToken?: number;
815
+ }
816
+
817
+ declare enum SensorEventType {
818
+ Motion = 0,
819
+ Tampering = 1,
820
+ PanTiltZoom = 2,
821
+ CrossLine = 3,
822
+ Intrusion = 4,
823
+ LicensePlate = 5,
824
+ FaceDetection = 6,
825
+ Audio = 7,
826
+ Analytic = 8,
827
+ SpeedDetection = 9,
828
+ PeopleCounter = 10,
829
+ Temperature = 11,
830
+ PoS = 12,
831
+ GPS = 13,
832
+ DigitalInput = 14,
833
+ Normal = 15,
834
+ Suspicious = 16,
835
+ Loitering = 17,
836
+ Vandalism = 18,
837
+ Trespass = 19,
838
+ Emergency = 20,
839
+ LifeInDanger = 21,
840
+ ErroneousAlert = 22,
841
+ Misidentification = 23,
842
+ Fire = 24,
843
+ MedicalDuress = 25,
844
+ HoldUp = 26,
845
+ CheckIn = 27,
846
+ CheckOut = 28,
847
+ ClockIn = 29,
848
+ ClockOut = 30,
849
+ ParkingStart = 31,
850
+ ParkingEnd = 32,
851
+ ParkingViolation = 33,
852
+ GateAccess = 34,
853
+ DoorAccess = 35,
854
+ TemperatureCheck = 36,
855
+ IDCheck = 37,
856
+ PPECheck = 38,
857
+ WelfareCheck = 39,
858
+ Uncategorized = 40,
859
+ Unknown = 999
860
+ }
861
+
1076
862
  export declare class SnapshotControl extends React_2.Component {
1077
863
  static contextType: React_2.Context<PlayerController>;
1078
864
  get player(): PlayerController;
@@ -1086,53 +872,6 @@ declare interface Storage_2 {
1086
872
  removeItem: (key: string) => void | Promise<undefined>;
1087
873
  }
1088
874
 
1089
- declare interface Thumbnail {
1090
- cameraId: number;
1091
- timestamp: Date;
1092
- realTimestamp: Date;
1093
- url: string;
1094
- width: number;
1095
- height: number;
1096
- }
1097
-
1098
- declare class ThumbnailsStore extends ApiStore {
1099
- thumbnails: crossfilter.Crossfilter<Thumbnail>;
1100
- thumbnailsByCameraId: crossfilter.Dimension<Thumbnail, number>;
1101
- thumbnailsByDate: crossfilter.Dimension<Thumbnail, number>;
1102
- pendingRequests: crossfilter.Crossfilter<PendingRequest_2>;
1103
- pendingRequestsByEnd: crossfilter.Dimension<PendingRequest_2, number>;
1104
- pendingRequestsByStart: crossfilter.Dimension<PendingRequest_2, number>;
1105
- pendingRequestsByCameraId: crossfilter.Dimension<PendingRequest_2, number>;
1106
- pendingRequestsByCount: crossfilter.Dimension<PendingRequest_2, number>;
1107
- constructor();
1108
- /**
1109
- * Fetches thumbnails for given camera and period.
1110
- * Given period is evenly divided by number of smaller periods that equals to `count`.
1111
- * Server returns first available thumbnail in each period
1112
- * @param cameraId - camera id
1113
- * @param from - start of the period
1114
- * @param to - end of the period
1115
- * @param count - number of thumbnails
1116
- */
1117
- fetchThumbnails(cameraId: number, from: Date, to: Date, count: number): Observable<any>;
1118
- getIntervalState(cameraId: number, from: Date, to: Date): IntervalState | null;
1119
- fetchThumbnail(cameraId: number, from: Date, to: Date): Observable<Thumbnail>;
1120
- /**
1121
- * Returns first available thumbnail for given camera within period
1122
- */
1123
- getThumbnail({ cameraId, from, to }: GetThumbnailParams): Thumbnail;
1124
- /**
1125
- * Returns previously obtained thumbnails for given camera within period
1126
- */
1127
- getThumbnails({ cameraId, from, to }: GetThumbnailParams): Thumbnail[];
1128
- toThumbnail: (cameraId: number) => ({ realtimestamp, url, width, height }: {
1129
- realtimestamp: string;
1130
- url: string;
1131
- width: number;
1132
- height: number;
1133
- }) => Thumbnail;
1134
- }
1135
-
1136
875
  declare class Token {
1137
876
  accessToken: string;
1138
877
  accessTokenExpires: Date;
@@ -1151,49 +890,13 @@ declare class Token {
1151
890
  constructor(raw: RawToken);
1152
891
  }
1153
892
 
1154
- declare class ToolkitApp {
1155
- readonly name: string;
1156
- cameras: CamerasStore;
1157
- archives: ArchivesStore;
1158
- events: EventsStore;
1159
- eventSchema: EventSchemaStore;
1160
- thumbnails: ThumbnailsStore;
1161
- account: AccountStore;
1162
- eventList: EventListlStore;
1163
- notification: NotificationService;
1164
- auth: Auth;
1165
- api: Api<IApi> & IApi;
1166
- private disposables;
1167
- private tokenUpdateReactions;
1168
- constructor(name: string);
1169
- init({ token, tokenStorage: storage, tokenStorageKey, apiUrl, tokenServiceUrl, widgetTokenServiceUrl }: InitParams, name?: string): ToolkitApp;
1170
- dispose: () => void;
1171
- /**
1172
- * Adds a reaction to token changes
1173
- * If token passed to the callback is null, then the user is signed out
1174
- * and you should react accordingly
1175
- * @param cb
1176
- */
1177
- onTokenUpdate: (cb: (token: RawToken | null) => void) => () => void;
1178
- }
1179
-
1180
- declare type User = RawUser;
1181
-
1182
893
  declare enum VideoResizeMode {
1183
894
  Fit = "contain",
1184
895
  Stretch = "fill"
1185
896
  }
1186
897
 
1187
- export declare class VolumeControl extends React_2.Component {
1188
- static contextType: React_2.Context<PlayerController>;
1189
- opened: boolean;
1190
- get player(): PlayerController;
1191
- close: () => void;
1192
- toggle: () => void;
1193
- open: () => void;
1194
- changeVolume: (e: React_2.ChangeEvent<HTMLInputElement>) => void;
1195
- preventButtonClick: (e: React_2.MouseEvent<HTMLDivElement>) => void;
1196
- render(): JSX.Element;
1197
- }
898
+ export declare const VolumeControl: (() => JSX.Element) & {
899
+ displayName: string;
900
+ };
1198
901
 
1199
902
  export { }