@openrails/contentkit-ui 0.103.2 → 0.104.0-rc.2
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/README.md +111 -49
- package/dist/client/beacons.d.ts +3 -13
- package/dist/client/beacons.js +8 -46
- package/dist/client/beacons.js.map +1 -1
- package/dist/client/client.d.ts +3 -0
- package/dist/client/client.js +45 -43
- package/dist/client/client.js.map +1 -1
- package/dist/client/content/favorites.d.ts +2 -0
- package/dist/client/content/favorites.js.map +1 -1
- package/dist/client/content/types.d.ts +3 -0
- package/dist/client/content/types.js.map +1 -1
- package/dist/client/contents.d.ts +7 -1
- package/dist/client/contents.js +8 -0
- package/dist/client/contents.js.map +1 -1
- package/dist/client/discovery.d.ts +34 -5
- package/dist/client/discovery.js +23 -2
- package/dist/client/discovery.js.map +1 -1
- package/dist/client/engagement.d.ts +70 -0
- package/dist/client/engagement.js +191 -0
- package/dist/client/engagement.js.map +1 -0
- package/dist/client/generated/routes.d.ts +74 -35
- package/dist/client/generated/routes.js +119 -60
- package/dist/client/generated/routes.js.map +1 -1
- package/dist/client/generated/wire.d.ts +88 -85
- package/dist/client/generated/wire.js.map +1 -1
- package/dist/client/guest-reading-history.d.ts +40 -0
- package/dist/client/guest-reading-history.js +144 -0
- package/dist/client/guest-reading-history.js.map +1 -0
- package/dist/client/index.d.ts +5 -3
- package/dist/client/media/windows.d.ts +2 -0
- package/dist/client/media/windows.js +4 -1
- package/dist/client/media/windows.js.map +1 -1
- package/dist/client/stats.d.ts +4 -20
- package/dist/client/stats.js +0 -11
- package/dist/client/stats.js.map +1 -1
- package/dist/client/versions.d.ts +8 -6
- package/dist/client/versions.js +15 -10
- package/dist/client/versions.js.map +1 -1
- package/dist/client.js +24 -22
- package/dist/components/admin/bulk-drafts.d.ts +17 -0
- package/dist/components/admin/bulk-drafts.js +41 -0
- package/dist/components/admin/bulk-drafts.js.map +1 -0
- package/dist/components/admin/content-admin.d.ts +1 -1
- package/dist/components/admin/content-admin.js.map +1 -1
- package/dist/components/admin/content-manager.d.ts +11 -3
- package/dist/components/admin/content-manager.js +751 -394
- package/dist/components/admin/content-manager.js.map +1 -1
- package/dist/components/admin/group-manager.d.ts +8 -3
- package/dist/components/admin/group-manager.js +218 -146
- package/dist/components/admin/group-manager.js.map +1 -1
- package/dist/components/admin/page-notices.d.ts +16 -0
- package/dist/components/admin/page-notices.js +113 -0
- package/dist/components/admin/page-notices.js.map +1 -0
- package/dist/components/admin/page-picker.d.ts +38 -0
- package/dist/components/admin/page-picker.js +159 -0
- package/dist/components/admin/page-picker.js.map +1 -0
- package/dist/components/admin/quick-search.d.ts +14 -0
- package/dist/components/admin/quick-search.js +60 -0
- package/dist/components/admin/quick-search.js.map +1 -0
- package/dist/components/admin/reader-content-editor.js +382 -321
- package/dist/components/admin/reader-content-editor.js.map +1 -1
- package/dist/components/admin/reader-manifest.js +181 -179
- package/dist/components/admin/reader-manifest.js.map +1 -1
- package/dist/components/admin/shell.d.ts +10 -2
- package/dist/components/admin/shell.js +114 -42
- package/dist/components/admin/shell.js.map +1 -1
- package/dist/components/admin/stats-dashboard.d.ts +4 -9
- package/dist/components/admin/stats-dashboard.js +303 -207
- package/dist/components/admin/stats-dashboard.js.map +1 -1
- package/dist/components/admin/upload-queue.d.ts +14 -0
- package/dist/components/admin/upload-queue.js +115 -98
- package/dist/components/admin/upload-queue.js.map +1 -1
- package/dist/components/content/card.d.ts +31 -3
- package/dist/components/content/card.js +324 -158
- package/dist/components/content/card.js.map +1 -1
- package/dist/components/content/daily-releases.js +144 -190
- package/dist/components/content/daily-releases.js.map +1 -1
- package/dist/components/content/editor-save.js +27 -25
- package/dist/components/content/editor-save.js.map +1 -1
- package/dist/components/content/editors.js +274 -253
- package/dist/components/content/editors.js.map +1 -1
- package/dist/components/content/favorites.d.ts +6 -0
- package/dist/components/content/favorites.js +47 -0
- package/dist/components/content/favorites.js.map +1 -0
- package/dist/components/content/filter-dialog.js +19 -15
- package/dist/components/content/filter-dialog.js.map +1 -1
- package/dist/components/content/filters.d.ts +2 -0
- package/dist/components/content/filters.js +5 -1
- package/dist/components/content/filters.js.map +1 -1
- package/dist/components/content/grid.d.ts +44 -16
- package/dist/components/content/grid.js +308 -270
- package/dist/components/content/grid.js.map +1 -1
- package/dist/components/content/history.d.ts +6 -0
- package/dist/components/content/history.js +111 -0
- package/dist/components/content/history.js.map +1 -0
- package/dist/components/content/index.d.ts +6 -3
- package/dist/components/content/listing.d.ts +14 -3
- package/dist/components/content/listing.js +65 -56
- package/dist/components/content/listing.js.map +1 -1
- package/dist/components/content/offer-fields.js +6 -6
- package/dist/components/content/paged-grid.d.ts +10 -0
- package/dist/components/content/paged-grid.js +116 -0
- package/dist/components/content/paged-grid.js.map +1 -0
- package/dist/components/content/pagination.d.ts +19 -0
- package/dist/components/content/pagination.js +97 -0
- package/dist/components/content/pagination.js.map +1 -0
- package/dist/components/content/paywall.d.ts +9 -0
- package/dist/components/content/paywall.js +27 -3
- package/dist/components/content/paywall.js.map +1 -1
- package/dist/components/content/post-list.d.ts +37 -0
- package/dist/components/content/post-list.js +203 -0
- package/dist/components/content/post-list.js.map +1 -0
- package/dist/components/content/reader-settings.d.ts +2 -0
- package/dist/components/content/reader-settings.js +1 -1
- package/dist/components/content/reader-settings.js.map +1 -1
- package/dist/components/content/search.d.ts +11 -4
- package/dist/components/content/search.js +22 -11
- package/dist/components/content/search.js.map +1 -1
- package/dist/components/content/summary-tile.d.ts +14 -0
- package/dist/components/content/summary-tile.js +63 -0
- package/dist/components/content/summary-tile.js.map +1 -0
- package/dist/components/groups/banner.d.ts +6 -2
- package/dist/components/groups/banner.js +79 -61
- package/dist/components/groups/banner.js.map +1 -1
- package/dist/components/groups/directory.d.ts +12 -2
- package/dist/components/groups/directory.js +168 -105
- package/dist/components/groups/directory.js.map +1 -1
- package/dist/components/groups/editor.js +10 -10
- package/dist/components/groups/editor.js.map +1 -1
- package/dist/components/groups/entity-chips.d.ts +61 -0
- package/dist/components/groups/entity-chips.js +382 -0
- package/dist/components/groups/entity-chips.js.map +1 -0
- package/dist/components/groups/group-members.d.ts +29 -0
- package/dist/components/groups/group-members.js +474 -0
- package/dist/components/groups/group-members.js.map +1 -0
- package/dist/components/groups/header.js +53 -45
- package/dist/components/groups/header.js.map +1 -1
- package/dist/components/groups/index.d.ts +3 -1
- package/dist/components/groups/memberships.d.ts +3 -36
- package/dist/components/groups/memberships.js +105 -480
- package/dist/components/groups/memberships.js.map +1 -1
- package/dist/components/groups/scoped.d.ts +23 -0
- package/dist/components/groups/scoped.js +92 -0
- package/dist/components/groups/scoped.js.map +1 -0
- package/dist/components/media-folder-editor.d.ts +5 -0
- package/dist/components/media-folder-editor.js +419 -231
- package/dist/components/media-folder-editor.js.map +1 -1
- package/dist/components/sortable-list.d.ts +5 -1
- package/dist/components/sortable-list.js +97 -81
- package/dist/components/sortable-list.js.map +1 -1
- package/dist/components/video-mini-player.d.ts +4 -1
- package/dist/components/video-mini-player.js +77 -71
- package/dist/components/video-mini-player.js.map +1 -1
- package/dist/components/video-player.d.ts +4 -1
- package/dist/components/video-player.js +280 -276
- package/dist/components/video-player.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +41 -34
- package/dist/locales/admin/de.js +80 -47
- package/dist/locales/admin/de.js.map +1 -1
- package/dist/locales/admin/en.d.ts +74 -41
- package/dist/locales/admin/en.js +80 -47
- package/dist/locales/admin/en.js.map +1 -1
- package/dist/locales/admin/es.js +80 -47
- package/dist/locales/admin/es.js.map +1 -1
- package/dist/locales/admin/ja.js +80 -47
- package/dist/locales/admin/ja.js.map +1 -1
- package/dist/locales/admin/ko.js +80 -47
- package/dist/locales/admin/ko.js.map +1 -1
- package/dist/locales/admin/zh.js +80 -47
- package/dist/locales/admin/zh.js.map +1 -1
- package/dist/locales/de.js +1 -0
- package/dist/locales/de.js.map +1 -1
- package/dist/locales/discovery/de.js +25 -2
- package/dist/locales/discovery/de.js.map +1 -1
- package/dist/locales/discovery/en.d.ts +24 -1
- package/dist/locales/discovery/en.js +25 -2
- package/dist/locales/discovery/en.js.map +1 -1
- package/dist/locales/discovery/es.js +25 -2
- package/dist/locales/discovery/es.js.map +1 -1
- package/dist/locales/discovery/ja.js +25 -2
- package/dist/locales/discovery/ja.js.map +1 -1
- package/dist/locales/discovery/ko.js +25 -2
- package/dist/locales/discovery/ko.js.map +1 -1
- package/dist/locales/discovery/zh.js +25 -2
- package/dist/locales/discovery/zh.js.map +1 -1
- package/dist/locales/en.d.ts +119 -44
- package/dist/locales/en.js +1 -0
- package/dist/locales/en.js.map +1 -1
- package/dist/locales/es.js +1 -0
- package/dist/locales/es.js.map +1 -1
- package/dist/locales/groups/de.js +22 -4
- package/dist/locales/groups/de.js.map +1 -1
- package/dist/locales/groups/en.d.ts +20 -2
- package/dist/locales/groups/en.js +22 -4
- package/dist/locales/groups/en.js.map +1 -1
- package/dist/locales/groups/es.js +22 -4
- package/dist/locales/groups/es.js.map +1 -1
- package/dist/locales/groups/ja.js +22 -4
- package/dist/locales/groups/ja.js.map +1 -1
- package/dist/locales/groups/ko.js +22 -4
- package/dist/locales/groups/ko.js.map +1 -1
- package/dist/locales/groups/zh.js +22 -4
- package/dist/locales/groups/zh.js.map +1 -1
- package/dist/locales/ja.js +1 -0
- package/dist/locales/ja.js.map +1 -1
- package/dist/locales/ko.js +1 -0
- package/dist/locales/ko.js.map +1 -1
- package/dist/locales/zh.js +1 -0
- package/dist/locales/zh.js.map +1 -1
- package/dist/react/discovery.d.ts +36 -17
- package/dist/react/discovery.js +305 -221
- package/dist/react/discovery.js.map +1 -1
- package/dist/react/groups.d.ts +19 -3
- package/dist/react/groups.js +49 -22
- package/dist/react/groups.js.map +1 -1
- package/dist/react/index.d.ts +7 -4
- package/dist/react/page-notices.d.ts +13 -0
- package/dist/react/page-notices.js +38 -0
- package/dist/react/page-notices.js.map +1 -0
- package/dist/react/post-reads.d.ts +23 -0
- package/dist/react/post-reads.js +90 -0
- package/dist/react/post-reads.js.map +1 -0
- package/dist/react/remembered-sort.d.ts +5 -0
- package/dist/react/remembered-sort.js +29 -0
- package/dist/react/remembered-sort.js.map +1 -0
- package/dist/react/resources.d.ts +3 -1
- package/dist/react/resources.js +6 -2
- package/dist/react/resources.js.map +1 -1
- package/dist/react/stats.d.ts +3 -7
- package/dist/react/stats.js +2 -6
- package/dist/react/stats.js.map +1 -1
- package/dist/react/use-engagement.d.ts +28 -0
- package/dist/react/use-engagement.js +226 -0
- package/dist/react/use-engagement.js.map +1 -0
- package/dist/react/use-resource.d.ts +4 -3
- package/dist/react/use-resource.js +2 -1
- package/dist/react/use-resource.js.map +1 -1
- package/dist/react.js +29 -26
- package/dist/styles.css +1 -1
- package/dist/ui/dialog.d.ts +2 -1
- package/dist/ui/dialog.js +23 -20
- package/dist/ui/dialog.js.map +1 -1
- package/dist/urls/index.d.ts +1 -1
- package/dist/urls.js +2 -2
- package/dist/urls.js.map +1 -1
- package/package.json +1 -1
- package/dist/components/admin/page-review.d.ts +0 -13
- package/dist/components/admin/page-review.js +0 -225
- package/dist/components/admin/page-review.js.map +0 -1
- package/dist/react/page-review.d.ts +0 -14
- package/dist/react/page-review.js +0 -37
- package/dist/react/page-review.js.map +0 -1
|
@@ -1,28 +1,29 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { ruleFor as e } from "../../client/media/rules.js";
|
|
2
|
+
import { isProcessing as t, pageRemoved as n } from "../../client/media/windows.js";
|
|
3
|
+
import { createContext as r, useCallback as i, useContext as a, useLayoutEffect as o, useRef as s, useState as c } from "react";
|
|
3
4
|
//#region src/components/content/editor-save.tsx
|
|
4
|
-
var
|
|
5
|
-
function
|
|
6
|
-
let n =
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
var l = r(null);
|
|
6
|
+
function u(e, t) {
|
|
7
|
+
let n = a(l), r = n?.register, i = n?.changed, c = s(t);
|
|
8
|
+
c.current = t, o(() => r?.(e, c), [r, e]), o(() => i?.(), [
|
|
9
|
+
i,
|
|
9
10
|
t.dirty,
|
|
10
11
|
t.pending,
|
|
11
12
|
t.valid
|
|
12
13
|
]);
|
|
13
14
|
}
|
|
14
|
-
function
|
|
15
|
-
let e =
|
|
16
|
-
e.current.delete(t),
|
|
17
|
-
}), [
|
|
15
|
+
function d() {
|
|
16
|
+
let e = s(/* @__PURE__ */ new Map()), [, t] = c(0), n = i(() => t((e) => e + 1), []), r = i((t, r) => (e.current.set(t, r), n(), () => {
|
|
17
|
+
e.current.delete(t), n();
|
|
18
|
+
}), [n]), a = () => [...e.current.values()].map((e) => e.current).find((e) => e.pending || e.dirty && !e.valid)?.label;
|
|
18
19
|
return {
|
|
19
20
|
context: {
|
|
20
|
-
register:
|
|
21
|
-
changed:
|
|
21
|
+
register: r,
|
|
22
|
+
changed: n
|
|
22
23
|
},
|
|
23
|
-
problem:
|
|
24
|
+
problem: a,
|
|
24
25
|
save: async (t) => {
|
|
25
|
-
let n =
|
|
26
|
+
let n = a();
|
|
26
27
|
if (n) return n;
|
|
27
28
|
let r = [...e.current.values()].sort((e, t) => (e.current.order ?? 0) - (t.current.order ?? 0));
|
|
28
29
|
for (let e of r) if (!t() || e.current.dirty && !await e.current.save()) return e.current.label;
|
|
@@ -31,21 +32,22 @@ function l() {
|
|
|
31
32
|
dirty: [...e.current.values()].some((e) => e.current.dirty)
|
|
32
33
|
};
|
|
33
34
|
}
|
|
34
|
-
async function
|
|
35
|
-
if (!
|
|
36
|
-
let
|
|
35
|
+
async function f(r, i) {
|
|
36
|
+
if (!i.version) return !1;
|
|
37
|
+
let a = 0, o, s = 0;
|
|
37
38
|
do {
|
|
38
|
-
let
|
|
39
|
+
let c = await r.media.read(i, {
|
|
39
40
|
editor: !0,
|
|
40
|
-
offset:
|
|
41
|
+
offset: a,
|
|
41
42
|
limit: 200
|
|
42
43
|
});
|
|
43
|
-
if (
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
44
|
+
if (c.files.some((e) => !!e.failed || t(e))) return !1;
|
|
45
|
+
let l = c.uploads ?? [];
|
|
46
|
+
s += c.files.filter((t) => t.upload && e(l, t.path)?.page && !n(t)).length, o = c.total, a += c.limit || 200;
|
|
47
|
+
} while (a < o);
|
|
48
|
+
return s > 0;
|
|
47
49
|
}
|
|
48
50
|
//#endregion
|
|
49
|
-
export {
|
|
51
|
+
export { l as EditorSaveContext, f as readerMediaReady, d as useEditorSaveCoordinator, u as useEditorSaveTask };
|
|
50
52
|
|
|
51
53
|
//# sourceMappingURL=editor-save.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor-save.js","names":[],"sources":["../../../src/components/content/editor-save.tsx"],"sourcesContent":["import { createContext, useCallback, useContext, useLayoutEffect, useRef, useState, type RefObject } from \"react\";\nimport type { ContentKitClient } from \"../../client/client.js\";\nimport type { RefBody } from \"../../client/generated/wire.js\";\nimport { isProcessing } from \"../../client/media/windows.js\";\n\ninterface EditorTask {\n label: string;\n dirty: boolean;\n pending: boolean;\n valid: boolean;\n save: () => Promise<boolean>;\n order?: number;\n}\n\ninterface EditorTasks {\n register: (id: string, task: RefObject<EditorTask>) => () => void;\n changed: () => void;\n}\n\n/** Optional coordination for an editor's existing independently usable tools. */\nexport const EditorSaveContext = createContext<EditorTasks | null>(null);\n\nexport function useEditorSaveTask(id: string, task: EditorTask) {\n const context = useContext(EditorSaveContext);\n const register = context?.register;\n const changed = context?.changed;\n const current = useRef(task);\n current.current = task;\n useLayoutEffect(() => register?.(id, current), [register, id]);\n useLayoutEffect(() => changed?.(), [changed, task.dirty, task.pending, task.valid]);\n}\n\n/** Save only dirty tools, before publication; a refused save never publishes. */\nexport function useEditorSaveCoordinator() {\n const tasks = useRef(new Map<string, RefObject<EditorTask>>());\n const [, refresh] = useState(0);\n const changed = useCallback(() => refresh((value) => value + 1), []);\n const register = useCallback(\n (id: string, task: RefObject<EditorTask>) => {\n tasks.current.set(id, task);\n changed();\n return () => {\n tasks.current.delete(id);\n changed();\n };\n },\n [changed],\n );\n const problem = () => [...tasks.current.values()].map((r) => r.current).find((t) => t.pending || (t.dirty && !t.valid))?.label;\n const save = async (current: () => boolean) => {\n const invalid = problem();\n if (invalid) return invalid;\n const ordered = [...tasks.current.values()].sort((a, b) => (a.current.order ?? 0) - (b.current.order ?? 0));\n for (const ref of ordered) {\n if (!current()) return ref.current.label;\n if (ref.current.dirty && !(await ref.current.save())) return ref.current.label;\n }\n return undefined;\n };\n return {\n context: { register, changed },\n problem,\n save,\n pending: [...tasks.current.values()].some((t) => t.current.pending),\n dirty: [...tasks.current.values()].some((t) => t.current.dirty),\n };\n}\n\n/** Check every metadata window, not only the first page of a long gallery. */\nexport async function readerMediaReady(client: ContentKitClient, ref: RefBody): Promise<boolean> {\n if (!ref.version) return false;\n
|
|
1
|
+
{"version":3,"file":"editor-save.js","names":[],"sources":["../../../src/components/content/editor-save.tsx"],"sourcesContent":["import { createContext, useCallback, useContext, useLayoutEffect, useRef, useState, type RefObject } from \"react\";\nimport type { ContentKitClient } from \"../../client/client.js\";\nimport type { RefBody } from \"../../client/generated/wire.js\";\nimport { ruleFor } from \"../../client/media/rules.js\";\nimport { isProcessing, pageRemoved } from \"../../client/media/windows.js\";\n\ninterface EditorTask {\n label: string;\n dirty: boolean;\n pending: boolean;\n valid: boolean;\n save: () => Promise<boolean>;\n order?: number;\n}\n\ninterface EditorTasks {\n register: (id: string, task: RefObject<EditorTask>) => () => void;\n changed: () => void;\n}\n\n/** Optional coordination for an editor's existing independently usable tools. */\nexport const EditorSaveContext = createContext<EditorTasks | null>(null);\n\nexport function useEditorSaveTask(id: string, task: EditorTask) {\n const context = useContext(EditorSaveContext);\n const register = context?.register;\n const changed = context?.changed;\n const current = useRef(task);\n current.current = task;\n useLayoutEffect(() => register?.(id, current), [register, id]);\n useLayoutEffect(() => changed?.(), [changed, task.dirty, task.pending, task.valid]);\n}\n\n/** Save only dirty tools, before publication; a refused save never publishes. */\nexport function useEditorSaveCoordinator() {\n const tasks = useRef(new Map<string, RefObject<EditorTask>>());\n const [, refresh] = useState(0);\n const changed = useCallback(() => refresh((value) => value + 1), []);\n const register = useCallback(\n (id: string, task: RefObject<EditorTask>) => {\n tasks.current.set(id, task);\n changed();\n return () => {\n tasks.current.delete(id);\n changed();\n };\n },\n [changed],\n );\n const problem = () => [...tasks.current.values()].map((r) => r.current).find((t) => t.pending || (t.dirty && !t.valid))?.label;\n const save = async (current: () => boolean) => {\n const invalid = problem();\n if (invalid) return invalid;\n const ordered = [...tasks.current.values()].sort((a, b) => (a.current.order ?? 0) - (b.current.order ?? 0));\n for (const ref of ordered) {\n if (!current()) return ref.current.label;\n if (ref.current.dirty && !(await ref.current.save())) return ref.current.label;\n }\n return undefined;\n };\n return {\n context: { register, changed },\n problem,\n save,\n pending: [...tasks.current.values()].some((t) => t.current.pending),\n dirty: [...tasks.current.values()].some((t) => t.current.dirty),\n };\n}\n\n/** Check every metadata window, not only the first page of a long gallery. */\nexport async function readerMediaReady(client: ContentKitClient, ref: RefBody): Promise<boolean> {\n if (!ref.version) return false;\n let offset = 0;\n let total: number;\n let pages = 0;\n do {\n const read = await client.media.read(ref, { editor: true, offset, limit: 200 });\n if (read.files.some((file) => !!file.failed || isProcessing(file))) return false;\n const rules = read.uploads ?? [];\n pages += read.files.filter((file) => file.upload && ruleFor(rules, file.path)?.page && !pageRemoved(file)).length;\n total = read.total;\n offset += read.limit || 200;\n } while (offset < total);\n return pages > 0;\n}\n"],"mappings":";;;;AAqBA,IAAa,IAAoB,EAAkC,IAAI;AAEvE,SAAgB,EAAkB,GAAY,GAAkB;CAC9D,IAAM,IAAU,EAAW,CAAiB,GACtC,IAAW,GAAS,UACpB,IAAU,GAAS,SACnB,IAAU,EAAO,CAAI;CAG3B,AAFA,EAAQ,UAAU,GAClB,QAAsB,IAAW,GAAI,CAAO,GAAG,CAAC,GAAU,CAAE,CAAC,GAC7D,QAAsB,IAAU,GAAG;EAAC;EAAS,EAAK;EAAO,EAAK;EAAS,EAAK;CAAK,CAAC;AACpF;AAGA,SAAgB,IAA2B;CACzC,IAAM,IAAQ,kBAAO,IAAI,IAAmC,CAAC,GACvD,GAAG,KAAW,EAAS,CAAC,GACxB,IAAU,QAAkB,GAAS,MAAU,IAAQ,CAAC,GAAG,CAAC,CAAC,GAC7D,IAAW,GACd,GAAY,OACX,EAAM,QAAQ,IAAI,GAAI,CAAI,GAC1B,EAAQ,SACK;EAEX,AADA,EAAM,QAAQ,OAAO,CAAE,GACvB,EAAQ;CACV,IAEF,CAAC,CAAO,CACV,GACM,UAAgB,CAAC,GAAG,EAAM,QAAQ,OAAO,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,OAAO,CAAC,CAAC,MAAM,MAAM,EAAE,WAAY,EAAE,SAAS,CAAC,EAAE,KAAM,CAAC,EAAE;CAWzH,OAAO;EACL,SAAS;GAAE;GAAU;EAAQ;EAC7B;EACA,aAbkB,MAA2B;GAC7C,IAAM,IAAU,EAAQ;GACxB,IAAI,GAAS,OAAO;GACpB,IAAM,IAAU,CAAC,GAAG,EAAM,QAAQ,OAAO,CAAC,CAAC,CAAC,MAAM,GAAG,OAAO,EAAE,QAAQ,SAAS,MAAM,EAAE,QAAQ,SAAS,EAAE;GAC1G,KAAK,IAAM,KAAO,GAEhB,IADI,CAAC,EAAQ,KACT,EAAI,QAAQ,SAAS,CAAE,MAAM,EAAI,QAAQ,KAAK,GAAI,OAAO,EAAI,QAAQ;EAG7E;EAKE,SAAS,CAAC,GAAG,EAAM,QAAQ,OAAO,CAAC,CAAC,CAAC,MAAM,MAAM,EAAE,QAAQ,OAAO;EAClE,OAAO,CAAC,GAAG,EAAM,QAAQ,OAAO,CAAC,CAAC,CAAC,MAAM,MAAM,EAAE,QAAQ,KAAK;CAChE;AACF;AAGA,eAAsB,EAAiB,GAA0B,GAAgC;CAC/F,IAAI,CAAC,EAAI,SAAS,OAAO;CACzB,IAAI,IAAS,GACT,GACA,IAAQ;CACZ,GAAG;EACD,IAAM,IAAO,MAAM,EAAO,MAAM,KAAK,GAAK;GAAE,QAAQ;GAAM;GAAQ,OAAO;EAAI,CAAC;EAC9E,IAAI,EAAK,MAAM,MAAM,MAAS,CAAC,CAAC,EAAK,UAAU,EAAa,CAAI,CAAC,GAAG,OAAO;EAC3E,IAAM,IAAQ,EAAK,WAAW,CAAC;EAG/B,AAFA,KAAS,EAAK,MAAM,QAAQ,MAAS,EAAK,UAAU,EAAQ,GAAO,EAAK,IAAI,CAAC,EAAE,QAAQ,CAAC,EAAY,CAAI,CAAC,CAAC,CAAC,QAC3G,IAAQ,EAAK,OACb,KAAU,EAAK,SAAS;CAC1B,SAAS,IAAS;CAClB,OAAO,IAAQ;AACjB"}
|