@terminalfour/terminalfour-js 1.0.0-rc.1
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.
- package/LICENSE.md +106 -0
- package/README.md +169 -0
- package/dist/cjs/element-resolver.d.ts +115 -0
- package/dist/cjs/element-resolver.d.ts.map +1 -0
- package/dist/cjs/element-resolver.js +391 -0
- package/dist/cjs/element-resolver.js.map +1 -0
- package/dist/cjs/errors.d.ts +21 -0
- package/dist/cjs/errors.d.ts.map +1 -0
- package/dist/cjs/errors.js +21 -0
- package/dist/cjs/errors.js.map +1 -0
- package/dist/cjs/handlebars.d.ts +123 -0
- package/dist/cjs/handlebars.d.ts.map +1 -0
- package/dist/cjs/handlebars.js +306 -0
- package/dist/cjs/handlebars.js.map +1 -0
- package/dist/cjs/http-client.d.ts +21 -0
- package/dist/cjs/http-client.d.ts.map +1 -0
- package/dist/cjs/http-client.js +126 -0
- package/dist/cjs/http-client.js.map +1 -0
- package/dist/cjs/index.d.ts +37 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +55 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/media-category-ref.d.ts +78 -0
- package/dist/cjs/media-category-ref.d.ts.map +1 -0
- package/dist/cjs/media-category-ref.js +184 -0
- package/dist/cjs/media-category-ref.js.map +1 -0
- package/dist/cjs/media-library.d.ts +30 -0
- package/dist/cjs/media-library.d.ts.map +1 -0
- package/dist/cjs/media-library.js +77 -0
- package/dist/cjs/media-library.js.map +1 -0
- package/dist/cjs/models/content-item.d.ts +80 -0
- package/dist/cjs/models/content-item.d.ts.map +1 -0
- package/dist/cjs/models/content-item.js +682 -0
- package/dist/cjs/models/content-item.js.map +1 -0
- package/dist/cjs/models/media-category-item.d.ts +29 -0
- package/dist/cjs/models/media-category-item.d.ts.map +1 -0
- package/dist/cjs/models/media-category-item.js +33 -0
- package/dist/cjs/models/media-category-item.js.map +1 -0
- package/dist/cjs/models/media-item.d.ts +74 -0
- package/dist/cjs/models/media-item.d.ts.map +1 -0
- package/dist/cjs/models/media-item.js +188 -0
- package/dist/cjs/models/media-item.js.map +1 -0
- package/dist/cjs/models/section-item.d.ts +58 -0
- package/dist/cjs/models/section-item.d.ts.map +1 -0
- package/dist/cjs/models/section-item.js +166 -0
- package/dist/cjs/models/section-item.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/resources/channel-resource.d.ts +112 -0
- package/dist/cjs/resources/channel-resource.d.ts.map +1 -0
- package/dist/cjs/resources/channel-resource.js +107 -0
- package/dist/cjs/resources/channel-resource.js.map +1 -0
- package/dist/cjs/resources/content-resource.d.ts +50 -0
- package/dist/cjs/resources/content-resource.d.ts.map +1 -0
- package/dist/cjs/resources/content-resource.js +286 -0
- package/dist/cjs/resources/content-resource.js.map +1 -0
- package/dist/cjs/resources/content-type-resource.d.ts +283 -0
- package/dist/cjs/resources/content-type-resource.d.ts.map +1 -0
- package/dist/cjs/resources/content-type-resource.js +970 -0
- package/dist/cjs/resources/content-type-resource.js.map +1 -0
- package/dist/cjs/resources/group-resource.d.ts +96 -0
- package/dist/cjs/resources/group-resource.d.ts.map +1 -0
- package/dist/cjs/resources/group-resource.js +213 -0
- package/dist/cjs/resources/group-resource.js.map +1 -0
- package/dist/cjs/resources/list-resource.d.ts +111 -0
- package/dist/cjs/resources/list-resource.d.ts.map +1 -0
- package/dist/cjs/resources/list-resource.js +179 -0
- package/dist/cjs/resources/list-resource.js.map +1 -0
- package/dist/cjs/resources/media-resource.d.ts +69 -0
- package/dist/cjs/resources/media-resource.d.ts.map +1 -0
- package/dist/cjs/resources/media-resource.js +210 -0
- package/dist/cjs/resources/media-resource.js.map +1 -0
- package/dist/cjs/resources/media-type-resource.d.ts +70 -0
- package/dist/cjs/resources/media-type-resource.d.ts.map +1 -0
- package/dist/cjs/resources/media-type-resource.js +195 -0
- package/dist/cjs/resources/media-type-resource.js.map +1 -0
- package/dist/cjs/resources/navigation-resource.d.ts +664 -0
- package/dist/cjs/resources/navigation-resource.d.ts.map +1 -0
- package/dist/cjs/resources/navigation-resource.js +2349 -0
- package/dist/cjs/resources/navigation-resource.js.map +1 -0
- package/dist/cjs/resources/page-layout-resource.d.ts +83 -0
- package/dist/cjs/resources/page-layout-resource.d.ts.map +1 -0
- package/dist/cjs/resources/page-layout-resource.js +214 -0
- package/dist/cjs/resources/page-layout-resource.js.map +1 -0
- package/dist/cjs/resources/user-resource.d.ts +126 -0
- package/dist/cjs/resources/user-resource.d.ts.map +1 -0
- package/dist/cjs/resources/user-resource.js +317 -0
- package/dist/cjs/resources/user-resource.js.map +1 -0
- package/dist/cjs/section-ref.d.ts +185 -0
- package/dist/cjs/section-ref.d.ts.map +1 -0
- package/dist/cjs/section-ref.js +813 -0
- package/dist/cjs/section-ref.js.map +1 -0
- package/dist/cjs/site-structure.d.ts +18 -0
- package/dist/cjs/site-structure.d.ts.map +1 -0
- package/dist/cjs/site-structure.js +57 -0
- package/dist/cjs/site-structure.js.map +1 -0
- package/dist/cjs/t4-client.d.ts +121 -0
- package/dist/cjs/t4-client.d.ts.map +1 -0
- package/dist/cjs/t4-client.js +190 -0
- package/dist/cjs/t4-client.js.map +1 -0
- package/dist/cjs/type-registry.d.ts +31 -0
- package/dist/cjs/type-registry.d.ts.map +1 -0
- package/dist/cjs/type-registry.js +76 -0
- package/dist/cjs/type-registry.js.map +1 -0
- package/dist/cjs/types.d.ts +211 -0
- package/dist/cjs/types.d.ts.map +1 -0
- package/dist/cjs/types.js +3 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/cjs/utils.d.ts +147 -0
- package/dist/cjs/utils.d.ts.map +1 -0
- package/dist/cjs/utils.js +408 -0
- package/dist/cjs/utils.js.map +1 -0
- package/dist/esm/element-resolver.d.ts +115 -0
- package/dist/esm/element-resolver.d.ts.map +1 -0
- package/dist/esm/element-resolver.js +387 -0
- package/dist/esm/element-resolver.js.map +1 -0
- package/dist/esm/errors.d.ts +21 -0
- package/dist/esm/errors.d.ts.map +1 -0
- package/dist/esm/errors.js +17 -0
- package/dist/esm/errors.js.map +1 -0
- package/dist/esm/handlebars.d.ts +123 -0
- package/dist/esm/handlebars.d.ts.map +1 -0
- package/dist/esm/handlebars.js +300 -0
- package/dist/esm/handlebars.js.map +1 -0
- package/dist/esm/http-client.d.ts +21 -0
- package/dist/esm/http-client.d.ts.map +1 -0
- package/dist/esm/http-client.js +122 -0
- package/dist/esm/http-client.js.map +1 -0
- package/dist/esm/index.d.ts +37 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +26 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/media-category-ref.d.ts +78 -0
- package/dist/esm/media-category-ref.d.ts.map +1 -0
- package/dist/esm/media-category-ref.js +180 -0
- package/dist/esm/media-category-ref.js.map +1 -0
- package/dist/esm/media-library.d.ts +30 -0
- package/dist/esm/media-library.d.ts.map +1 -0
- package/dist/esm/media-library.js +73 -0
- package/dist/esm/media-library.js.map +1 -0
- package/dist/esm/models/content-item.d.ts +80 -0
- package/dist/esm/models/content-item.d.ts.map +1 -0
- package/dist/esm/models/content-item.js +676 -0
- package/dist/esm/models/content-item.js.map +1 -0
- package/dist/esm/models/media-category-item.d.ts +29 -0
- package/dist/esm/models/media-category-item.d.ts.map +1 -0
- package/dist/esm/models/media-category-item.js +29 -0
- package/dist/esm/models/media-category-item.js.map +1 -0
- package/dist/esm/models/media-item.d.ts +74 -0
- package/dist/esm/models/media-item.d.ts.map +1 -0
- package/dist/esm/models/media-item.js +184 -0
- package/dist/esm/models/media-item.js.map +1 -0
- package/dist/esm/models/section-item.d.ts +58 -0
- package/dist/esm/models/section-item.d.ts.map +1 -0
- package/dist/esm/models/section-item.js +162 -0
- package/dist/esm/models/section-item.js.map +1 -0
- package/dist/esm/resources/channel-resource.d.ts +112 -0
- package/dist/esm/resources/channel-resource.d.ts.map +1 -0
- package/dist/esm/resources/channel-resource.js +102 -0
- package/dist/esm/resources/channel-resource.js.map +1 -0
- package/dist/esm/resources/content-resource.d.ts +50 -0
- package/dist/esm/resources/content-resource.d.ts.map +1 -0
- package/dist/esm/resources/content-resource.js +282 -0
- package/dist/esm/resources/content-resource.js.map +1 -0
- package/dist/esm/resources/content-type-resource.d.ts +283 -0
- package/dist/esm/resources/content-type-resource.d.ts.map +1 -0
- package/dist/esm/resources/content-type-resource.js +964 -0
- package/dist/esm/resources/content-type-resource.js.map +1 -0
- package/dist/esm/resources/group-resource.d.ts +96 -0
- package/dist/esm/resources/group-resource.d.ts.map +1 -0
- package/dist/esm/resources/group-resource.js +208 -0
- package/dist/esm/resources/group-resource.js.map +1 -0
- package/dist/esm/resources/list-resource.d.ts +111 -0
- package/dist/esm/resources/list-resource.d.ts.map +1 -0
- package/dist/esm/resources/list-resource.js +174 -0
- package/dist/esm/resources/list-resource.js.map +1 -0
- package/dist/esm/resources/media-resource.d.ts +69 -0
- package/dist/esm/resources/media-resource.d.ts.map +1 -0
- package/dist/esm/resources/media-resource.js +206 -0
- package/dist/esm/resources/media-resource.js.map +1 -0
- package/dist/esm/resources/media-type-resource.d.ts +70 -0
- package/dist/esm/resources/media-type-resource.d.ts.map +1 -0
- package/dist/esm/resources/media-type-resource.js +190 -0
- package/dist/esm/resources/media-type-resource.js.map +1 -0
- package/dist/esm/resources/navigation-resource.d.ts +664 -0
- package/dist/esm/resources/navigation-resource.d.ts.map +1 -0
- package/dist/esm/resources/navigation-resource.js +2344 -0
- package/dist/esm/resources/navigation-resource.js.map +1 -0
- package/dist/esm/resources/page-layout-resource.d.ts +83 -0
- package/dist/esm/resources/page-layout-resource.d.ts.map +1 -0
- package/dist/esm/resources/page-layout-resource.js +209 -0
- package/dist/esm/resources/page-layout-resource.js.map +1 -0
- package/dist/esm/resources/user-resource.d.ts +126 -0
- package/dist/esm/resources/user-resource.d.ts.map +1 -0
- package/dist/esm/resources/user-resource.js +312 -0
- package/dist/esm/resources/user-resource.js.map +1 -0
- package/dist/esm/section-ref.d.ts +185 -0
- package/dist/esm/section-ref.d.ts.map +1 -0
- package/dist/esm/section-ref.js +808 -0
- package/dist/esm/section-ref.js.map +1 -0
- package/dist/esm/site-structure.d.ts +18 -0
- package/dist/esm/site-structure.d.ts.map +1 -0
- package/dist/esm/site-structure.js +53 -0
- package/dist/esm/site-structure.js.map +1 -0
- package/dist/esm/t4-client.d.ts +121 -0
- package/dist/esm/t4-client.d.ts.map +1 -0
- package/dist/esm/t4-client.js +186 -0
- package/dist/esm/t4-client.js.map +1 -0
- package/dist/esm/type-registry.d.ts +31 -0
- package/dist/esm/type-registry.d.ts.map +1 -0
- package/dist/esm/type-registry.js +72 -0
- package/dist/esm/type-registry.js.map +1 -0
- package/dist/esm/types.d.ts +211 -0
- package/dist/esm/types.d.ts.map +1 -0
- package/dist/esm/types.js +2 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/utils.d.ts +147 -0
- package/dist/esm/utils.d.ts.map +1 -0
- package/dist/esm/utils.js +355 -0
- package/dist/esm/utils.js.map +1 -0
- package/docs/channels.md +62 -0
- package/docs/content-types.md +313 -0
- package/docs/content.md +199 -0
- package/docs/error-handling.md +86 -0
- package/docs/getting-started.md +146 -0
- package/docs/groups-and-users.md +167 -0
- package/docs/handlebars.md +145 -0
- package/docs/lists.md +98 -0
- package/docs/media-types.md +111 -0
- package/docs/media.md +169 -0
- package/docs/navigation/a-to-z.md +62 -0
- package/docs/navigation/breadcrumbs.md +67 -0
- package/docs/navigation/css-selector.md +53 -0
- package/docs/navigation/generate-file.md +48 -0
- package/docs/navigation/keyword-search.md +134 -0
- package/docs/navigation/language-switcher.md +37 -0
- package/docs/navigation/link-menu.md +105 -0
- package/docs/navigation/pagination.md +80 -0
- package/docs/navigation/previous-next-fulltext.md +43 -0
- package/docs/navigation/publish-to-one-file.md +93 -0
- package/docs/navigation/related-content.md +79 -0
- package/docs/navigation/related-section-branch.md +31 -0
- package/docs/navigation/return-to-index.md +35 -0
- package/docs/navigation/section-details.md +51 -0
- package/docs/navigation/section-iterator.md +33 -0
- package/docs/navigation/section-meta-info.md +39 -0
- package/docs/navigation/site-map.md +58 -0
- package/docs/navigation/top-content.md +80 -0
- package/docs/navigation/top-stories.md +47 -0
- package/docs/navigation.md +134 -0
- package/docs/page-layouts.md +71 -0
- package/docs/sections.md +224 -0
- package/docs/typescript.md +124 -0
- package/package.json +64 -0
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { HttpClient } from './http-client.js';
|
|
2
|
+
import { LanguageOption } from './types.js';
|
|
3
|
+
import { MediaCategoryItem } from './models/media-category-item.js';
|
|
4
|
+
/** A media item as returned from the category list endpoint */
|
|
5
|
+
export interface MediaListItem {
|
|
6
|
+
id: number;
|
|
7
|
+
name: string;
|
|
8
|
+
description: string;
|
|
9
|
+
fileName: string;
|
|
10
|
+
fileSize: string;
|
|
11
|
+
mediaType: string;
|
|
12
|
+
language: string;
|
|
13
|
+
version: string;
|
|
14
|
+
status: string;
|
|
15
|
+
lastModified: Date | null;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* A media category reference scoped to a specific category ID.
|
|
19
|
+
* Provides listing of media items within the category.
|
|
20
|
+
*
|
|
21
|
+
* Usage: `t4.mediaCategory(367).list()`
|
|
22
|
+
*/
|
|
23
|
+
export declare class MediaCategoryRef {
|
|
24
|
+
private readonly httpClient;
|
|
25
|
+
private readonly categoryId;
|
|
26
|
+
constructor(httpClient: HttpClient, categoryId: number);
|
|
27
|
+
/**
|
|
28
|
+
* Returns a mutable media category object. Modify properties and call save() to persist.
|
|
29
|
+
*/
|
|
30
|
+
get(options?: LanguageOption): Promise<MediaCategoryItem>;
|
|
31
|
+
/**
|
|
32
|
+
* Lists direct child categories (one level below).
|
|
33
|
+
*/
|
|
34
|
+
subcategories(options?: LanguageOption): Promise<Array<{
|
|
35
|
+
id: number;
|
|
36
|
+
name: string;
|
|
37
|
+
lastModified: Date | null;
|
|
38
|
+
}>>;
|
|
39
|
+
/**
|
|
40
|
+
* Updates this media category's name. Fetches the current category,
|
|
41
|
+
* merges the change, and PUTs the full body back.
|
|
42
|
+
* Returns the updated MediaCategoryItem.
|
|
43
|
+
*/
|
|
44
|
+
update(data: {
|
|
45
|
+
name: string;
|
|
46
|
+
}, options?: LanguageOption): Promise<MediaCategoryItem>;
|
|
47
|
+
/**
|
|
48
|
+
* Deletes this media category.
|
|
49
|
+
*/
|
|
50
|
+
delete(): Promise<void>;
|
|
51
|
+
/**
|
|
52
|
+
* Permanently removes this media category.
|
|
53
|
+
* Call delete() first to deactivate it, then purge() to remove it entirely.
|
|
54
|
+
*/
|
|
55
|
+
purge(options?: LanguageOption): Promise<void>;
|
|
56
|
+
/**
|
|
57
|
+
* Moves this media category under a new parent category.
|
|
58
|
+
*/
|
|
59
|
+
move(newParentId: number, options?: LanguageOption): Promise<void>;
|
|
60
|
+
/**
|
|
61
|
+
* Creates a child media category under this category.
|
|
62
|
+
* Returns the created child as a mutable MediaCategoryItem.
|
|
63
|
+
*/
|
|
64
|
+
addCategory(data: {
|
|
65
|
+
name: string;
|
|
66
|
+
}, options?: LanguageOption): Promise<MediaCategoryItem>;
|
|
67
|
+
/**
|
|
68
|
+
* Lists all media items in this category.
|
|
69
|
+
* Fetches all items in a single request (up to 10000).
|
|
70
|
+
*/
|
|
71
|
+
list(options?: LanguageOption): Promise<MediaListItem[]>;
|
|
72
|
+
/**
|
|
73
|
+
* Builds the DataTables form body for the list endpoint.
|
|
74
|
+
* Uses a minimal column definition and requests all items.
|
|
75
|
+
*/
|
|
76
|
+
private buildListFormBody;
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=media-category-ref.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media-category-ref.d.ts","sourceRoot":"","sources":["../../src/media-category-ref.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAapE,+DAA+D;AAC/D,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,IAAI,GAAG,IAAI,CAAC;CAC3B;AA4BD;;;;;GAKG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM;IAKtD;;OAEG;IACG,GAAG,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAS/D;;OAEG;IACG,aAAa,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,IAAI,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IAatH;;;;OAIG;IACG,MAAM,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAwB1F;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAO7B;;;OAGG;IACG,KAAK,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAYpD;;OAEG;IACG,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IASxE;;;OAGG;IACG,WAAW,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA2B/F;;;OAGG;IACG,IAAI,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IA4B9D;;;OAGG;IACH,OAAO,CAAC,iBAAiB;CAyB1B"}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MediaCategoryRef = void 0;
|
|
4
|
+
const utils_js_1 = require("./utils.js");
|
|
5
|
+
const media_category_item_js_1 = require("./models/media-category-item.js");
|
|
6
|
+
/**
|
|
7
|
+
* A media category reference scoped to a specific category ID.
|
|
8
|
+
* Provides listing of media items within the category.
|
|
9
|
+
*
|
|
10
|
+
* Usage: `t4.mediaCategory(367).list()`
|
|
11
|
+
*/
|
|
12
|
+
class MediaCategoryRef {
|
|
13
|
+
constructor(httpClient, categoryId) {
|
|
14
|
+
this.httpClient = httpClient;
|
|
15
|
+
this.categoryId = categoryId;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Returns a mutable media category object. Modify properties and call save() to persist.
|
|
19
|
+
*/
|
|
20
|
+
async get(options) {
|
|
21
|
+
const language = (0, utils_js_1.resolveLanguage)(options?.language, 'en');
|
|
22
|
+
const raw = await this.httpClient.request({
|
|
23
|
+
method: 'GET',
|
|
24
|
+
path: `/mediacategory/${this.categoryId}/${language}`,
|
|
25
|
+
});
|
|
26
|
+
return new media_category_item_js_1.MediaCategoryItem(raw, this.httpClient, language);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Lists direct child categories (one level below).
|
|
30
|
+
*/
|
|
31
|
+
async subcategories(options) {
|
|
32
|
+
const language = (0, utils_js_1.resolveLanguage)(options?.language, 'en');
|
|
33
|
+
const response = await this.httpClient.request({
|
|
34
|
+
method: 'GET',
|
|
35
|
+
path: `/hierarchy/${this.categoryId}/${language}/subsections?showAll=false&removeNonTranslated=false`,
|
|
36
|
+
});
|
|
37
|
+
return (response.children ?? []).map((child) => ({
|
|
38
|
+
id: child.id,
|
|
39
|
+
name: child.name,
|
|
40
|
+
lastModified: child.lastModified ? new Date(child.lastModified) : null,
|
|
41
|
+
}));
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Updates this media category's name. Fetches the current category,
|
|
45
|
+
* merges the change, and PUTs the full body back.
|
|
46
|
+
* Returns the updated MediaCategoryItem.
|
|
47
|
+
*/
|
|
48
|
+
async update(data, options) {
|
|
49
|
+
if (!data.name?.trim()) {
|
|
50
|
+
throw new Error('Media category name is required');
|
|
51
|
+
}
|
|
52
|
+
const language = (0, utils_js_1.resolveLanguage)(options?.language, 'en');
|
|
53
|
+
const category = await this.httpClient.request({
|
|
54
|
+
method: 'GET',
|
|
55
|
+
path: `/mediacategory/${this.categoryId}/${language}`,
|
|
56
|
+
});
|
|
57
|
+
await this.httpClient.request({
|
|
58
|
+
method: 'PUT',
|
|
59
|
+
path: `/mediacategory/${this.categoryId}/${language}`,
|
|
60
|
+
body: {
|
|
61
|
+
...category,
|
|
62
|
+
name: data.name,
|
|
63
|
+
},
|
|
64
|
+
});
|
|
65
|
+
return this.get(options);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Deletes this media category.
|
|
69
|
+
*/
|
|
70
|
+
async delete() {
|
|
71
|
+
await this.httpClient.request({
|
|
72
|
+
method: 'DELETE',
|
|
73
|
+
path: `/mediacategory/${this.categoryId}`,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Permanently removes this media category.
|
|
78
|
+
* Call delete() first to deactivate it, then purge() to remove it entirely.
|
|
79
|
+
*/
|
|
80
|
+
async purge(options) {
|
|
81
|
+
const language = (0, utils_js_1.resolveLanguage)(options?.language, 'en');
|
|
82
|
+
await this.httpClient.request({
|
|
83
|
+
method: 'POST',
|
|
84
|
+
path: '/hierarchy/purge',
|
|
85
|
+
body: {
|
|
86
|
+
languageCode: language,
|
|
87
|
+
contentIds: [String(this.categoryId)],
|
|
88
|
+
},
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Moves this media category under a new parent category.
|
|
93
|
+
*/
|
|
94
|
+
async move(newParentId, options) {
|
|
95
|
+
const language = (0, utils_js_1.resolveLanguage)(options?.language, 'en');
|
|
96
|
+
await this.httpClient.request({
|
|
97
|
+
method: 'MOVE',
|
|
98
|
+
path: `/mediacategory/${this.categoryId}/${newParentId}/${language}`,
|
|
99
|
+
body: {},
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Creates a child media category under this category.
|
|
104
|
+
* Returns the created child as a mutable MediaCategoryItem.
|
|
105
|
+
*/
|
|
106
|
+
async addCategory(data, options) {
|
|
107
|
+
if (!data.name?.trim()) {
|
|
108
|
+
throw new Error('Media category name is required');
|
|
109
|
+
}
|
|
110
|
+
const language = (0, utils_js_1.resolveLanguage)(options?.language, 'en');
|
|
111
|
+
const raw = await this.httpClient.request({
|
|
112
|
+
method: 'POST',
|
|
113
|
+
path: `/mediacategory/${language}`,
|
|
114
|
+
body: {
|
|
115
|
+
parent: String(this.categoryId),
|
|
116
|
+
name: data.name,
|
|
117
|
+
description: '',
|
|
118
|
+
status: '0',
|
|
119
|
+
workflow: '-2',
|
|
120
|
+
show: false,
|
|
121
|
+
eForm: false,
|
|
122
|
+
archive: false,
|
|
123
|
+
'output-uri': '',
|
|
124
|
+
},
|
|
125
|
+
});
|
|
126
|
+
const childRef = new MediaCategoryRef(this.httpClient, raw.id);
|
|
127
|
+
return childRef.get(options);
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Lists all media items in this category.
|
|
131
|
+
* Fetches all items in a single request (up to 10000).
|
|
132
|
+
*/
|
|
133
|
+
async list(options) {
|
|
134
|
+
const language = (0, utils_js_1.resolveLanguage)(options?.language, 'en');
|
|
135
|
+
const formBody = this.buildListFormBody();
|
|
136
|
+
const response = await this.httpClient.request({
|
|
137
|
+
method: 'POST',
|
|
138
|
+
path: `/media/category/${this.categoryId}/${language}/list?showPending=true&showUntranslated=true`,
|
|
139
|
+
body: formBody,
|
|
140
|
+
headers: {
|
|
141
|
+
'Content-Type': 'application/x-www-form-urlencoded',
|
|
142
|
+
},
|
|
143
|
+
});
|
|
144
|
+
return (response.mediaRows ?? []).map((row) => ({
|
|
145
|
+
id: row.id,
|
|
146
|
+
name: row.name,
|
|
147
|
+
description: row.description ?? '',
|
|
148
|
+
fileName: row.fileName,
|
|
149
|
+
fileSize: (0, utils_js_1.formatFileSize)(row.fileSize ?? 0),
|
|
150
|
+
mediaType: row.mediaTypeName,
|
|
151
|
+
language: row.binaryLanguage ?? row.language,
|
|
152
|
+
version: row.version,
|
|
153
|
+
status: utils_js_1.STATUS_MAP[row.status] ?? `unknown (${row.status})`,
|
|
154
|
+
lastModified: row.lastModified ? new Date(row.lastModified) : null,
|
|
155
|
+
}));
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Builds the DataTables form body for the list endpoint.
|
|
159
|
+
* Uses a minimal column definition and requests all items.
|
|
160
|
+
*/
|
|
161
|
+
buildListFormBody() {
|
|
162
|
+
const params = new URLSearchParams();
|
|
163
|
+
params.set('draw', '1');
|
|
164
|
+
params.set('start', '0');
|
|
165
|
+
params.set('length', '10000');
|
|
166
|
+
params.set('search[value]', '');
|
|
167
|
+
params.set('search[regex]', 'false');
|
|
168
|
+
// Define the 8 columns the API expects
|
|
169
|
+
for (let i = 0; i < 8; i++) {
|
|
170
|
+
params.set(`columns[${i}][data]`, String(i));
|
|
171
|
+
params.set(`columns[${i}][name]`, '');
|
|
172
|
+
params.set(`columns[${i}][searchable]`, 'true');
|
|
173
|
+
params.set(`columns[${i}][orderable]`, i >= 1 && i <= 5 ? 'true' : 'false');
|
|
174
|
+
params.set(`columns[${i}][search][value]`, '');
|
|
175
|
+
params.set(`columns[${i}][search][regex]`, 'false');
|
|
176
|
+
}
|
|
177
|
+
// Sort by lastModified (column 5) descending
|
|
178
|
+
params.set('order[0][column]', '5');
|
|
179
|
+
params.set('order[0][dir]', 'desc');
|
|
180
|
+
return params.toString();
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
exports.MediaCategoryRef = MediaCategoryRef;
|
|
184
|
+
//# sourceMappingURL=media-category-ref.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media-category-ref.js","sourceRoot":"","sources":["../../src/media-category-ref.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { HttpClient } from './http-client.js';
|
|
2
|
+
import { LanguageOption } from './types.js';
|
|
3
|
+
/** A node in the media category tree */
|
|
4
|
+
export interface MediaCategoryNode {
|
|
5
|
+
id: number;
|
|
6
|
+
name: string;
|
|
7
|
+
children?: MediaCategoryNode[];
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Provides operations on the media library as a whole.
|
|
11
|
+
*/
|
|
12
|
+
export declare class MediaLibrary {
|
|
13
|
+
private readonly httpClient;
|
|
14
|
+
private rootIdPromise;
|
|
15
|
+
private rootIdExpiresAt;
|
|
16
|
+
private rootIdEpoch;
|
|
17
|
+
constructor(httpClient: HttpClient);
|
|
18
|
+
/**
|
|
19
|
+
* Returns the full media category tree.
|
|
20
|
+
* Fetches the media library root, then retrieves the complete tree structure.
|
|
21
|
+
*/
|
|
22
|
+
tree(options?: LanguageOption & {
|
|
23
|
+
depth?: number;
|
|
24
|
+
}): Promise<MediaCategoryNode>;
|
|
25
|
+
/** Fetches and caches the media library root section ID */
|
|
26
|
+
private getRootId;
|
|
27
|
+
/** Recursively maps API tree nodes to clean MediaCategoryNode objects */
|
|
28
|
+
private mapNode;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=media-library.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media-library.d.ts","sourceRoot":"","sources":["../../src/media-library.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAG5C,wCAAwC;AACxC,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,iBAAiB,EAAE,CAAC;CAChC;AAoBD;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IACxC,OAAO,CAAC,aAAa,CAAgC;IACrD,OAAO,CAAC,eAAe,CAAK;IAC5B,OAAO,CAAC,WAAW,CAAM;gBAEb,UAAU,EAAE,UAAU;IAIlC;;;OAGG;IACG,IAAI,CAAC,OAAO,CAAC,EAAE,cAAc,GAAG;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAuCrF,2DAA2D;IAC3D,OAAO,CAAC,SAAS;IAYjB,yEAAyE;IACzE,OAAO,CAAC,OAAO;CAWhB"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MediaLibrary = void 0;
|
|
4
|
+
const utils_js_1 = require("./utils.js");
|
|
5
|
+
/**
|
|
6
|
+
* Provides operations on the media library as a whole.
|
|
7
|
+
*/
|
|
8
|
+
class MediaLibrary {
|
|
9
|
+
constructor(httpClient) {
|
|
10
|
+
this.rootIdPromise = null;
|
|
11
|
+
this.rootIdExpiresAt = 0;
|
|
12
|
+
this.rootIdEpoch = -1;
|
|
13
|
+
this.httpClient = httpClient;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Returns the full media category tree.
|
|
17
|
+
* Fetches the media library root, then retrieves the complete tree structure.
|
|
18
|
+
*/
|
|
19
|
+
async tree(options) {
|
|
20
|
+
const language = (0, utils_js_1.resolveLanguage)(options?.language, 'en');
|
|
21
|
+
const depth = options?.depth ?? 30;
|
|
22
|
+
const rootId = await this.getRootId();
|
|
23
|
+
// Get the single child of the root (the "Categorised" node)
|
|
24
|
+
const subsResponse = await this.httpClient.request({
|
|
25
|
+
method: 'GET',
|
|
26
|
+
path: `/hierarchy/${rootId}/${language}/subsections?showAll=false&removeNonTranslated=false`,
|
|
27
|
+
});
|
|
28
|
+
const topChild = (subsResponse.children ?? [])[0];
|
|
29
|
+
if (!topChild) {
|
|
30
|
+
return { id: rootId, name: 'Media Library' };
|
|
31
|
+
}
|
|
32
|
+
// Fetch the full tree from the top child
|
|
33
|
+
const treeResponse = await this.httpClient.request({
|
|
34
|
+
method: 'POST',
|
|
35
|
+
path: '/mediacategory',
|
|
36
|
+
body: {
|
|
37
|
+
category: { id: topChild.id, language },
|
|
38
|
+
recursionDepth: depth,
|
|
39
|
+
explode: false,
|
|
40
|
+
activeNode: -1,
|
|
41
|
+
showInactive: false,
|
|
42
|
+
showMyMedia: false,
|
|
43
|
+
},
|
|
44
|
+
});
|
|
45
|
+
const rootNode = treeResponse[0];
|
|
46
|
+
if (!rootNode) {
|
|
47
|
+
return { id: topChild.id, name: topChild.name };
|
|
48
|
+
}
|
|
49
|
+
return this.mapNode(rootNode);
|
|
50
|
+
}
|
|
51
|
+
/** Fetches and caches the media library root section ID */
|
|
52
|
+
getRootId() {
|
|
53
|
+
if (!this.rootIdPromise || Date.now() > this.rootIdExpiresAt || this.rootIdEpoch < (0, utils_js_1.getCacheEpoch)()) {
|
|
54
|
+
this.rootIdExpiresAt = Date.now() + utils_js_1.DEFAULT_CACHE_TTL;
|
|
55
|
+
this.rootIdEpoch = (0, utils_js_1.getCacheEpoch)();
|
|
56
|
+
this.rootIdPromise = this.httpClient.request({
|
|
57
|
+
method: 'GET',
|
|
58
|
+
path: '/config/mediaLibrary.section',
|
|
59
|
+
}).then((config) => Number(config.value));
|
|
60
|
+
}
|
|
61
|
+
return this.rootIdPromise;
|
|
62
|
+
}
|
|
63
|
+
/** Recursively maps API tree nodes to clean MediaCategoryNode objects */
|
|
64
|
+
mapNode(node) {
|
|
65
|
+
const children = (node.children ?? []).map((child) => this.mapNode(child));
|
|
66
|
+
const result = {
|
|
67
|
+
id: node.id,
|
|
68
|
+
name: (0, utils_js_1.decodeHtmlEntities)(node.name),
|
|
69
|
+
};
|
|
70
|
+
if (children.length > 0) {
|
|
71
|
+
result.children = children;
|
|
72
|
+
}
|
|
73
|
+
return result;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
exports.MediaLibrary = MediaLibrary;
|
|
77
|
+
//# sourceMappingURL=media-library.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media-library.js","sourceRoot":"","sources":["../../src/media-library.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { ContentDTO } from '../types.js';
|
|
2
|
+
import { HttpClient } from '../http-client.js';
|
|
3
|
+
import { ElementResolver, TemplateElement } from '../element-resolver.js';
|
|
4
|
+
import { TypeRegistry } from '../type-registry.js';
|
|
5
|
+
/** Symbol used to restrict _init() access to the factory function in this module */
|
|
6
|
+
declare const INIT: unique symbol;
|
|
7
|
+
/** Clears the group cache for a specific HttpClient instance */
|
|
8
|
+
export declare function clearGroupCache(httpClient: HttpClient): void;
|
|
9
|
+
/**
|
|
10
|
+
* A mutable content item that exposes read-only metadata and mutable fields.
|
|
11
|
+
* Fields use friendly names and human-readable list values.
|
|
12
|
+
* Call save() to persist field changes back to the server.
|
|
13
|
+
*
|
|
14
|
+
* When returned from `content.list()`, this is a summary object — only metadata
|
|
15
|
+
* properties are populated. The `fields` property is not present. Use
|
|
16
|
+
* `content.get(id)` to retrieve a full item with resolved fields.
|
|
17
|
+
*/
|
|
18
|
+
export declare class ContentItem {
|
|
19
|
+
readonly id: number;
|
|
20
|
+
name: string;
|
|
21
|
+
readonly contentTypeID: number;
|
|
22
|
+
readonly language: string;
|
|
23
|
+
readonly version: number;
|
|
24
|
+
readonly lastModified: Date | null;
|
|
25
|
+
publishDate: Date | null;
|
|
26
|
+
expiryDate: Date | null;
|
|
27
|
+
reviewDate: Date | null;
|
|
28
|
+
/** Section ID where expired content is archived. `null` if not set. */
|
|
29
|
+
archiveSection: number | null;
|
|
30
|
+
/** Resolved fields with friendly names. Not present on summary items from `content.list()`. */
|
|
31
|
+
fields: Record<string, unknown>;
|
|
32
|
+
private readonly _httpClient;
|
|
33
|
+
private readonly _sectionId;
|
|
34
|
+
private readonly _resolver;
|
|
35
|
+
private readonly _templateElements;
|
|
36
|
+
private readonly _typeRegistry;
|
|
37
|
+
private _keyMap;
|
|
38
|
+
private _rawDTO;
|
|
39
|
+
private _status;
|
|
40
|
+
private _statusDirty;
|
|
41
|
+
private _dirtyFields;
|
|
42
|
+
get status(): string;
|
|
43
|
+
set status(value: string);
|
|
44
|
+
constructor(data: ContentDTO, httpClient: HttpClient, sectionId: number, resolver?: ElementResolver | null, templateElements?: TemplateElement[] | null, typeRegistry?: TypeRegistry | null);
|
|
45
|
+
/** Includes getter-based properties (status) in JSON serialisation. */
|
|
46
|
+
toJSON(): Record<string, unknown>;
|
|
47
|
+
/** @internal Async initialization — resolves friendly field values. Only callable via the factory. */
|
|
48
|
+
[INIT](data: ContentDTO): Promise<void>;
|
|
49
|
+
/**
|
|
50
|
+
* Persists field and property changes back to the server.
|
|
51
|
+
*
|
|
52
|
+
* Status defaults to `'pending'` on save, matching T4's approval workflow
|
|
53
|
+
* where edits go back through review. To preserve the current status, set
|
|
54
|
+
* `item.status = 'approved'` before saving, or use `item.approve()` to
|
|
55
|
+
* save and approve in one step.
|
|
56
|
+
*/
|
|
57
|
+
save(): Promise<void>;
|
|
58
|
+
/**
|
|
59
|
+
* Saves the content item with an approved status.
|
|
60
|
+
* Shorthand for setting `status = 'approved'` and calling `save()`.
|
|
61
|
+
* Throws if the content is already approved.
|
|
62
|
+
*/
|
|
63
|
+
approve(): Promise<void>;
|
|
64
|
+
/**
|
|
65
|
+
* Duplicates this content item, optionally into a different section.
|
|
66
|
+
*
|
|
67
|
+
* - If `sectionId` is omitted, duplicates within the same section and automatically
|
|
68
|
+
* appends `(n)` to the name to avoid collisions.
|
|
69
|
+
* - If `sectionId` is provided, duplicates into that section with the original name.
|
|
70
|
+
*/
|
|
71
|
+
duplicate(sectionId?: number): Promise<void>;
|
|
72
|
+
/**
|
|
73
|
+
* Moves this content item to a different section.
|
|
74
|
+
*/
|
|
75
|
+
move(sectionId: number): Promise<void>;
|
|
76
|
+
}
|
|
77
|
+
/** Factory function to create a ContentItem with async field resolution */
|
|
78
|
+
export declare function createContentItem(data: ContentDTO, httpClient: HttpClient, sectionId: number, resolver?: ElementResolver | null, templateElements?: TemplateElement[] | null, typeRegistry?: TypeRegistry | null): Promise<ContentItem>;
|
|
79
|
+
export {};
|
|
80
|
+
//# sourceMappingURL=content-item.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-item.d.ts","sourceRoot":"","sources":["../../../src/models/content-item.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,eAAe,EAAkB,MAAM,wBAAwB,CAAC;AAC1F,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAGnD,oFAAoF;AACpF,QAAA,MAAM,IAAI,eAA6B,CAAC;AA6JxC,gEAAgE;AAChE,wBAAgB,eAAe,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI,CAE5D;AA0XD;;;;;;;;GAQG;AACH,qBAAa,WAAW;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,IAAI,GAAG,IAAI,CAAC;IACnC,WAAW,EAAE,IAAI,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;IACxB,uEAAuE;IACvE,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,+FAA+F;IAC/F,MAAM,EAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEjC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IACzC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyB;IACnD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA2B;IAC7D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAsB;IACpD,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,YAAY,CAAS;IAE7B,OAAO,CAAC,YAAY,CAA0B;IAE9C,IAAI,MAAM,IAAI,MAAM,CAAyB;IAC7C,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,EAGvB;gBAGC,IAAI,EAAE,UAAU,EAChB,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,eAAe,GAAG,IAAI,EACjC,gBAAgB,CAAC,EAAE,eAAe,EAAE,GAAG,IAAI,EAC3C,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI;IAqCpC,uEAAuE;IACvE,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IASjC,sGAAsG;IAChG,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAmC7C;;;;;;;OAOG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA0I3B;;;;OAIG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ9B;;;;;;OAMG;IACG,SAAS,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2ClD;;OAEG;IACG,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAW7C;AAED,2EAA2E;AAC3E,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,UAAU,EAChB,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,eAAe,GAAG,IAAI,EACjC,gBAAgB,CAAC,EAAE,eAAe,EAAE,GAAG,IAAI,EAC3C,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI,GACjC,OAAO,CAAC,WAAW,CAAC,CAItB"}
|