@orangelogic/design-system 4.19.0 → 4.20.0

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.
Files changed (25) hide show
  1. package/library/chunks/{config-manager.DGW1KEBN.js → config-manager.Q6Uu3jTl.js} +7 -7
  2. package/library/chunks/{config-manager.utils.CpAKaNf4.js → config-manager.utils.BjTsUGLW.js} +9 -9
  3. package/library/chunks/{configs-controller.DX8-bPEZ.js → configs-controller.Dea3OymR.js} +1 -1
  4. package/library/chunks/{folder-select.CmyEyzfA.js → folder-select.DZ27acgw.js} +36 -19
  5. package/library/components/folder-select.js +1 -1
  6. package/library/components/molecules.js +4 -4
  7. package/library/components/types.js +12881 -12863
  8. package/library/package.json +1 -1
  9. package/library/packages/events/src/cx-video-active-subclip-change.d.ts +6 -0
  10. package/library/packages/events/src/events.d.ts +1 -0
  11. package/library/packages/hybrid/video-advanced/src/react/context.d.ts +1 -0
  12. package/library/packages/hybrid/video-advanced/src/react/hooks/useVideoEditorAnnotation.d.ts +26 -0
  13. package/library/packages/hybrid/video-advanced/src/react/type.d.ts +12 -0
  14. package/library/packages/molecules/src/faceted-filter/components/facet/facet.d.ts +2 -0
  15. package/library/packages/molecules/src/folder-select/components/folder-select-tree/folder-select-tree.d.ts +2 -0
  16. package/library/packages/molecules/src/folder-select/components/folder-select-tree-item/folder-select-tree-item.d.ts +3 -0
  17. package/library/packages/molecules/src/folder-select/folder-select.d.ts +2 -0
  18. package/library/packages/organisms/src/downloader/data/core/worker/app/DownloadManager.d.ts +4 -2
  19. package/library/packages/organisms/src/downloader/data/core/worker/app/utilities/index.d.ts +2 -1
  20. package/library/packages/organisms/src/downloader/data/core/worker/utilities/FilePathFixer.d.ts +10 -0
  21. package/library/packages/services/src/api/folder/folder.d.ts +1 -1
  22. package/library/packages/types/src/folder-select.d.ts +1 -0
  23. package/library/react-web-component.d.ts +5 -1
  24. package/package.json +1 -1
  25. package/library/packages/hybrid/video-advanced/src/react/@types/react-range-slider-input/index.d.ts +0 -1
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@orangelogic/design-system",
3
3
  "type": "module",
4
- "version": "4.19.0",
4
+ "version": "4.20.0",
5
5
  "license": "UNLICENSED",
6
6
  "types": "library/types.d.ts",
7
7
  "scripts": {
@@ -0,0 +1,6 @@
1
+ export type CxVideoActiveSubclipChangeEvent = CustomEvent<Record<PropertyKey, never>>;
2
+ declare global {
3
+ interface GlobalEventHandlersEventMap {
4
+ 'cx-video-active-subclip-change': CxVideoActiveSubclipChangeEvent;
5
+ }
6
+ }
@@ -239,6 +239,7 @@ export * from './cx-typeface-download';
239
239
  export * from './cx-unauthorized';
240
240
  export * from './cx-undo';
241
241
  export * from './cx-unmark-favorite';
242
+ export * from './cx-video-active-subclip-change';
242
243
  export * from './cx-video-annotation-layer-change';
243
244
  export * from './cx-video-click';
244
245
  export * from './cx-video-closed';
@@ -6,6 +6,7 @@ export declare const VideoReactContext: import('react').Context<{
6
6
  displayDurationTimecode: Timecode;
7
7
  displayTimecode: Timecode;
8
8
  frameRate: number;
9
+ isAnnotationEnabled: boolean;
9
10
  jumpBackward: () => void;
10
11
  jumpForward: () => void;
11
12
  players: Record<string, any>;
@@ -0,0 +1,26 @@
1
+ import { ExtendedSubClip, IComment, SubClip, TimelineMarker } from '../type';
2
+ /** The layer of one given player, since each publishes its own and the later mount wins. */
3
+ export declare const getAnnotationLayerInsidePlayer: (playerEl: HTMLElement | null | undefined) => HTMLElement | null;
4
+ /** Source time to timeline time; one comment raises any number of markers, or none. */
5
+ export declare const buildTimelineMarkers: ({ comments, subClips, }: {
6
+ comments: IComment[];
7
+ subClips: ExtendedSubClip[];
8
+ }) => TimelineMarker[];
9
+ /**
10
+ * Tells the annotator which clip is on screen and how it is shaped. On the layer rather than in
11
+ * the event, because Cortex rebuilds its annotator whenever the clips change.
12
+ */
13
+ export declare const useVideoEditorAnnotation: ({ comments, ctx, getMainVideoPlayer, isAnnotationEnabled, subClips, subClipsMap, }: {
14
+ comments: IComment[] | undefined;
15
+ ctx: any;
16
+ getMainVideoPlayer: () => any;
17
+ isAnnotationEnabled: boolean;
18
+ subClips: ExtendedSubClip[];
19
+ subClipsMap: Map<string, {
20
+ index: number;
21
+ subClip: SubClip;
22
+ }>;
23
+ }) => {
24
+ publishOnScreenClip: (player: any) => void;
25
+ timelineMarkers: TimelineMarker[];
26
+ };
@@ -13,8 +13,13 @@ export interface IComment {
13
13
  editTimestamp?: number;
14
14
  endTime?: number;
15
15
  id: string;
16
+ occurrenceId?: string;
16
17
  startTime: number;
18
+ subClipIds?: string[];
17
19
  }
20
+ export type TimelineMarker = IComment & {
21
+ occurrenceId: string;
22
+ };
18
23
  export type EnterPointRangeModePayload = {
19
24
  endTime?: number;
20
25
  startTime?: number;
@@ -206,6 +211,13 @@ export type Context = {
206
211
  fire: () => void;
207
212
  onFired: (handler: () => void) => () => void;
208
213
  };
214
+ /**
215
+ * What is on screen changed. Carries nothing - the values live on the annotation layer.
216
+ * Outbound only: listeners take the composed `cx-video-active-subclip-change` DOM event.
217
+ */
218
+ activeSubClipChangeEvent: {
219
+ fire: () => void;
220
+ };
209
221
  assetsSelected: {
210
222
  onFired: (handler: (args: any) => void) => () => void;
211
223
  };
@@ -1,6 +1,7 @@
1
1
  import { default as CxButton } from '../../../../../atoms/src/components/button/button.ts';
2
2
  import { default as CxDetails } from '../../../../../atoms/src/components/details/details.ts';
3
3
  import { default as CxIcon } from '../../../../../atoms/src/components/icon/icon.ts';
4
+ import { default as CxLineClamp } from '../../../../../atoms/src/components/line-clamp/line-clamp.ts';
4
5
  import { default as CxSpace } from '../../../../../atoms/src/components/space/space.ts';
5
6
  import { default as CxSpinner } from '../../../../../atoms/src/components/spinner/spinner.ts';
6
7
  import { default as CxTree } from '../../../../../atoms/src/components/tree/tree.ts';
@@ -20,6 +21,7 @@ export default class CxFacetedFilterFacet extends CortexElement {
20
21
  'cx-button': typeof CxButton;
21
22
  'cx-details': typeof CxDetails;
22
23
  'cx-icon': typeof CxIcon;
24
+ 'cx-line-clamp': typeof CxLineClamp;
23
25
  'cx-space': typeof CxSpace;
24
26
  'cx-spinner': typeof CxSpinner;
25
27
  'cx-tree': typeof CxTree;
@@ -34,6 +34,8 @@ export default class CxFolderSelectTree extends CortexElement {
34
34
  extraFolderData: Folder | null;
35
35
  api?: FolderSelectApi;
36
36
  excludeVirtualFolders: boolean;
37
+ /** Refetches a folder's children on every expand, not just the first. */
38
+ reloadOnExpand: boolean;
37
39
  firstFetchCallback: ((data: Folder[]) => void) | null;
38
40
  autoPageSize: boolean;
39
41
  data: Folder[];
@@ -63,6 +63,8 @@ export default class CxFolderSelectTreeItem extends CortexElement {
63
63
  searchTerm: string;
64
64
  api?: FolderSelectApi;
65
65
  excludeVirtualFolders: boolean;
66
+ /** Refetches the children on every expand, not just the first. */
67
+ reloadOnExpand: boolean;
66
68
  url: string;
67
69
  /** Overrides the default `folder` icon name when set. */
68
70
  icon: string;
@@ -100,6 +102,7 @@ export default class CxFolderSelectTreeItem extends CortexElement {
100
102
  }): Promise<GetFolderResponse>;
101
103
  loadMore(event: MouseEvent): Promise<void>;
102
104
  private handleLazyLoad;
105
+ private handleAfterCollapse;
103
106
  /**
104
107
  * Recompute this tree-item's selected/indeterminate state from the
105
108
  * top-level selection set, purely declaratively. This lets us:
@@ -41,6 +41,8 @@ export default class CxFolderSelect extends CortexElement {
41
41
  required: boolean;
42
42
  form: string | HTMLElement | undefined;
43
43
  excludeVirtualFolders: boolean;
44
+ /** Refetches a folder's children on every expand, not just the first. */
45
+ reloadOnExpand: boolean;
44
46
  extraFolderId: string;
45
47
  extraFolderTitle: string;
46
48
  extraFolderIcon: string;
@@ -6,7 +6,7 @@ import { FileProgressUpdatedEvent } from '../models';
6
6
  import { FileStateChangedEvent } from '../models/DownloadFile';
7
7
  import { IDownloadChunksRepository, IDownloadFilesRepository, IDownloadTransactionsRepository } from '../repositories';
8
8
  import { IStorage } from '../storage';
9
- import { ILocker, ILogger, IRetrier } from '../utilities';
9
+ import { ILocker, ILogger, IRetrier, IUserPromptService } from '../utilities';
10
10
  import { DownloadDatabase } from './db';
11
11
  import { GetFileQuery, ListAllFilesQuery } from './queries';
12
12
  export type Constructor<T> = new (...args: any[]) => T;
@@ -79,12 +79,13 @@ export declare class DownloadManager implements IDownloadManager {
79
79
  readonly logger: ILogger;
80
80
  readonly retrier: IRetrier;
81
81
  readonly locker: ILocker;
82
+ readonly userPromptService: IUserPromptService;
82
83
  private started;
83
84
  private backgroundJobs;
84
85
  private backgroundJobsStartTimeouts;
85
86
  private rocketModeEnabled;
86
87
  private databaseDiscarded;
87
- constructor(context: DownloadContext, downloadDatabase: DownloadDatabase, downloadTransactionsRepo: IDownloadTransactionsRepository, downloadFilesRepo: IDownloadFilesRepository, downloadChunksRepo: IDownloadChunksRepository, downloadApiClient: IDownloadApiClient, storage: IStorage, eventHub: IEventHub, logger: ILogger, retrier: IRetrier, locker: ILocker);
88
+ constructor(context: DownloadContext, downloadDatabase: DownloadDatabase, downloadTransactionsRepo: IDownloadTransactionsRepository, downloadFilesRepo: IDownloadFilesRepository, downloadChunksRepo: IDownloadChunksRepository, downloadApiClient: IDownloadApiClient, storage: IStorage, eventHub: IEventHub, logger: ILogger, retrier: IRetrier, locker: ILocker, userPromptService: IUserPromptService);
88
89
  handleCookiesRejected(): void;
89
90
  handleCookiesAccepted(): Promise<void>;
90
91
  private setupBackgroundJobs;
@@ -129,6 +130,7 @@ export declare class DownloadManagerBuilder {
129
130
  logger?: ILogger;
130
131
  retrier?: IRetrier;
131
132
  locker?: ILocker;
133
+ userPromptService?: IUserPromptService;
132
134
  database?: DownloadDatabase;
133
135
  constructor(context?: DownloadContext);
134
136
  build(): DownloadManager;
@@ -1,5 +1,6 @@
1
1
  import { DatabaseLocker } from './DatabaseLocker';
2
2
  import { ConsoleLogger } from './Logger';
3
3
  import { Retrier } from './Retrier';
4
+ import { UserPromptService } from './UserPromptService';
4
5
  import { WebLocker } from './WebLocker';
5
- export { Retrier, ConsoleLogger, DatabaseLocker, WebLocker };
6
+ export { ConsoleLogger, DatabaseLocker, Retrier, UserPromptService, WebLocker };
@@ -11,6 +11,16 @@ export declare class FilePathFixer {
11
11
  };
12
12
  constructor(storage: IStorage, userPromptService: IUserPromptService, logger: ILogger);
13
13
  shouldFixPath(file: DownloadFile): Promise<boolean>;
14
+ /**
15
+ * Checks if a file path contains any invalid characters
16
+ * across macOS, Linux, and Windows.
17
+ */
18
+ private hasInvalidPathChars;
19
+ /**
20
+ * Replaces all path-invalid characters from a file path string,
21
+ * supporting macOS, Linux, and Windows.
22
+ */
23
+ sanitizeFilePath(filePath: string, replacement?: string): string;
14
24
  private truncatePath;
15
25
  tryFixPath(file: DownloadFile, invalidPaths: string[]): Promise<void>;
16
26
  }
@@ -9,7 +9,7 @@ export type GetContentResponse = {
9
9
  }>;
10
10
  totalCount: number;
11
11
  };
12
- export declare function apiGetFolders({ allowedFolders, baseUrl, bearerToken, excludeVirtualFolders, folderId, includeDirectChild, limit, searchTerm, self, start, token, }: GetFolderRequest): Promise<GetFolderResponse>;
12
+ export declare function apiGetFolders({ allowedFolders, baseUrl, bearerToken, excludeVirtualFolders, folderId, includeDirectChild, limit, noCache, searchTerm, self, start, token, }: GetFolderRequest): Promise<GetFolderResponse>;
13
13
  export type GetCollectionsRequest = {
14
14
  baseUrl?: string;
15
15
  bearerToken?: string;
@@ -32,6 +32,7 @@ export type GetFolderRequest = {
32
32
  folderId: string;
33
33
  includeDirectChild?: boolean;
34
34
  limit?: number;
35
+ noCache?: boolean;
35
36
  searchTerm?: string;
36
37
  seeThru?: boolean;
37
38
  self?: boolean;
@@ -6638,6 +6638,10 @@
6638
6638
  *
6639
6639
  */
6640
6640
  excludeVirtualFolders?: boolean;
6641
+ /**
6642
+ * Refetches a folder's children on every expand, not just the first.
6643
+ */
6644
+ reloadOnExpand?: boolean;
6641
6645
  /**
6642
6646
  *
6643
6647
  */
@@ -11431,7 +11435,7 @@
11431
11435
  /**
11432
11436
  *
11433
11437
  */
11434
- comments?: { "createUserId": string; "editTimestamp": number; "endTime": number; "id": string; "startTime": number; }[];
11438
+ comments?: { "createUserId": string; "editTimestamp": number; "endTime": number; "id": string; "occurrenceId": string; "startTime": number; "subClipIds": string[]; }[];
11435
11439
  /**
11436
11440
  *
11437
11441
  */
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@orangelogic/design-system",
3
3
  "type": "module",
4
- "version": "4.19.0",
4
+ "version": "4.20.0",
5
5
  "license": "UNLICENSED",
6
6
  "types": "library/types.d.ts",
7
7
  "scripts": {
@@ -1 +0,0 @@
1
- declare module 'react-range-slider-input';