@brass-build/client 0.2.0 → 0.4.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.
- package/AGENTS.md +26 -5
- package/CHANGELOG.md +61 -2
- package/README.md +247 -87
- package/dist/acting-organization.d.ts +131 -0
- package/dist/acting-organization.d.ts.map +1 -0
- package/dist/acting-organization.js +278 -0
- package/dist/acting-organization.js.map +1 -0
- package/dist/api-headers.js +7 -7
- package/dist/api-headers.js.map +1 -1
- package/dist/call-service.d.ts +74 -0
- package/dist/call-service.d.ts.map +1 -0
- package/dist/call-service.js +253 -0
- package/dist/call-service.js.map +1 -0
- package/dist/client.d.ts +29 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +583 -12
- package/dist/client.js.map +1 -1
- package/dist/document-checkpoints.d.ts +1 -0
- package/dist/document-checkpoints.d.ts.map +1 -1
- package/dist/document-checkpoints.js +27 -0
- package/dist/document-checkpoints.js.map +1 -1
- package/dist/document-contents.d.ts +15 -0
- package/dist/document-contents.d.ts.map +1 -0
- package/dist/document-contents.js +88 -0
- package/dist/document-contents.js.map +1 -0
- package/dist/document-signals.d.ts +31 -1
- package/dist/document-signals.d.ts.map +1 -1
- package/dist/document-signals.js +59 -0
- package/dist/document-signals.js.map +1 -1
- package/dist/document-streams.d.ts +4 -2
- package/dist/document-streams.d.ts.map +1 -1
- package/dist/document-streams.js +6 -0
- package/dist/document-streams.js.map +1 -1
- package/dist/document-thumbnail-capture.d.ts +20 -0
- package/dist/document-thumbnail-capture.d.ts.map +1 -1
- package/dist/document-thumbnail-capture.js +247 -9
- package/dist/document-thumbnail-capture.js.map +1 -1
- package/dist/documents-namespace.d.ts.map +1 -1
- package/dist/documents-namespace.js +3 -0
- package/dist/documents-namespace.js.map +1 -1
- package/dist/documents.d.ts +51 -3
- package/dist/documents.d.ts.map +1 -1
- package/dist/documents.js +415 -36
- package/dist/documents.js.map +1 -1
- package/dist/export-guest.d.ts.map +1 -1
- package/dist/export-guest.js +5 -0
- package/dist/export-guest.js.map +1 -1
- package/dist/handle-types.d.ts +23 -0
- package/dist/handle-types.d.ts.map +1 -1
- package/dist/handles.d.ts +1 -1
- package/dist/handles.d.ts.map +1 -1
- package/dist/handles.js +3 -3
- package/dist/handles.js.map +1 -1
- package/dist/hosted-ui.d.ts +10 -0
- package/dist/hosted-ui.d.ts.map +1 -1
- package/dist/hosted-ui.js +115 -30
- package/dist/hosted-ui.js.map +1 -1
- package/dist/importer.d.ts.map +1 -1
- package/dist/importer.js +28 -66
- package/dist/importer.js.map +1 -1
- package/dist/index.d.ts +8 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +25 -1
- package/dist/index.js.map +1 -1
- package/dist/internal.d.ts +2 -0
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +2 -0
- package/dist/internal.js.map +1 -1
- package/dist/mutate-batching.js +2 -2
- package/dist/mutate-batching.js.map +1 -1
- package/dist/open-document.d.ts +16 -1
- package/dist/open-document.d.ts.map +1 -1
- package/dist/open-document.js +123 -35
- package/dist/open-document.js.map +1 -1
- package/dist/presence.d.ts +10 -0
- package/dist/presence.d.ts.map +1 -1
- package/dist/presence.js.map +1 -1
- package/dist/record-paging.d.ts +13 -14
- package/dist/record-paging.d.ts.map +1 -1
- package/dist/record-paging.js +13 -14
- package/dist/record-paging.js.map +1 -1
- package/dist/serializer.d.ts +3 -3
- package/dist/session-toolbar.d.ts +9 -0
- package/dist/session-toolbar.d.ts.map +1 -1
- package/dist/session-toolbar.js +191 -21
- package/dist/session-toolbar.js.map +1 -1
- package/dist/tail-ops.js +2 -2
- package/dist/tail-ops.js.map +1 -1
- package/dist/types.d.ts +0 -42
- package/dist/types.d.ts.map +1 -1
- package/dist/undo.d.ts +1 -1
- package/dist/undo.d.ts.map +1 -1
- package/dist/undo.js +1 -1
- package/dist/undo.js.map +1 -1
- package/dist/version-bar.d.ts.map +1 -1
- package/dist/version-bar.js +75 -4
- package/dist/version-bar.js.map +1 -1
- package/dist/version.d.ts +2 -2
- package/dist/version.js +1 -1
- package/dist/wasm-ready-gate.d.ts +13 -0
- package/dist/wasm-ready-gate.d.ts.map +1 -0
- package/dist/wasm-ready-gate.js +28 -0
- package/dist/wasm-ready-gate.js.map +1 -0
- package/dist/wasm-runtime.browser.d.ts +11 -0
- package/dist/wasm-runtime.browser.d.ts.map +1 -0
- package/dist/wasm-runtime.browser.js +44 -0
- package/dist/wasm-runtime.browser.js.map +1 -0
- package/dist/wasm-runtime.d.ts +6 -0
- package/dist/wasm-runtime.d.ts.map +1 -0
- package/dist/wasm-runtime.js +20 -0
- package/dist/wasm-runtime.js.map +1 -0
- package/dist/when-saved.d.ts +2 -0
- package/dist/when-saved.d.ts.map +1 -0
- package/dist/when-saved.js +70 -0
- package/dist/when-saved.js.map +1 -0
- package/dist/ws-client.d.ts +4 -0
- package/dist/ws-client.d.ts.map +1 -1
- package/dist/ws-client.js +70 -1
- package/dist/ws-client.js.map +1 -1
- package/dist/ws-frame-limit.d.ts.map +1 -1
- package/dist/ws-frame-limit.js +9 -10
- package/dist/ws-frame-limit.js.map +1 -1
- package/docs/app-manifest.md +335 -5
- package/docs/custom-chrome.md +7 -2
- package/docs/presence.md +12 -0
- package/docs/services.md +265 -0
- package/docs/text-fields.md +191 -0
- package/package.json +4 -5
- package/src/acting-organization.ts +396 -0
- package/src/api-headers.ts +7 -7
- package/src/call-service.ts +354 -0
- package/src/client.ts +655 -15
- package/src/document-checkpoints.ts +30 -0
- package/src/document-contents.ts +104 -0
- package/src/document-signals.ts +113 -1
- package/src/document-streams.ts +15 -1
- package/src/document-thumbnail-capture.ts +253 -9
- package/src/documents-namespace.ts +20 -10
- package/src/documents.ts +460 -33
- package/src/export-guest.ts +5 -0
- package/src/handle-types.ts +35 -0
- package/src/handles.ts +7 -6
- package/src/hosted-ui.ts +155 -29
- package/src/importer.ts +28 -62
- package/src/index.ts +43 -4
- package/src/internal.ts +10 -0
- package/src/mutate-batching.ts +2 -2
- package/src/open-document.ts +179 -39
- package/src/presence.ts +6 -0
- package/src/record-paging.ts +13 -14
- package/src/serializer.ts +3 -3
- package/src/session-toolbar.ts +219 -22
- package/src/tail-ops.ts +2 -2
- package/src/types.ts +6 -4
- package/src/undo.ts +1 -1
- package/src/version-bar.ts +77 -7
- package/src/version.ts +1 -1
- package/src/wasm-ready-gate.ts +30 -0
- package/src/wasm-runtime.browser.ts +48 -0
- package/src/wasm-runtime.ts +21 -0
- package/src/when-saved.ts +66 -0
- package/src/ws-client.ts +70 -1
- package/src/ws-frame-limit.ts +9 -10
- package/dist/vite.d.ts +0 -31
- package/dist/vite.d.ts.map +0 -1
- package/dist/vite.js +0 -161
- package/dist/vite.js.map +0 -1
- package/src/vite.ts +0 -214
package/dist/record-paging.d.ts
CHANGED
|
@@ -86,29 +86,28 @@ export declare function assertUsableRecordKey(key: string): void;
|
|
|
86
86
|
export declare const OVERLAY_PREFIX = "brass:r:";
|
|
87
87
|
/** Pack one stored value into a page triple. A `null` tag is what says the
|
|
88
88
|
* body IS the record: an app's map holds whatever the app assigned, which has
|
|
89
|
-
* no tag to split off. A
|
|
90
|
-
*
|
|
91
|
-
* its records. */
|
|
89
|
+
* no tag to split off. A typed record arrives already split, and its tag is a
|
|
90
|
+
* string, so the two forms cannot be confused whatever the tag says. */
|
|
92
91
|
export declare function packWholeValue<B>(key: string, value: B): PackedRecord<B>;
|
|
93
92
|
/** Re-pack `value` in the same triple shape `packed` already uses, so a page
|
|
94
|
-
* rewritten in place keeps the form its readers expect: a
|
|
95
|
-
*
|
|
93
|
+
* rewritten in place keeps the form its readers expect: a typed record stays
|
|
94
|
+
* a tag beside a body, and an app's stays one whole value. A streaming
|
|
96
95
|
* read visits a page's triples without unpacking them, so a rewrite that
|
|
97
96
|
* changed the shape would hand it the wrong half of the record. */
|
|
98
97
|
export declare function repackRecord(packed: PackedRecord<unknown>, value: unknown): PackedRecord<unknown>;
|
|
99
98
|
/** The stored value a page triple carries: the value itself for a whole-value
|
|
100
|
-
* record, else the `{ type, params }` pair a
|
|
99
|
+
* record, else the `{ type, params }` pair a typed one was split into. */
|
|
101
100
|
export declare function unpackRecord(packed: PackedRecord<unknown>): unknown;
|
|
102
101
|
/** The tag + body a page triple names, for a reader that walks the two
|
|
103
102
|
* separately, or null when the triple packs a whole value that is not a
|
|
104
103
|
* record.
|
|
105
104
|
*
|
|
106
|
-
* A page holds both forms: a
|
|
107
|
-
*
|
|
108
|
-
* one whole value. Both forms occur in ONE store, because an
|
|
109
|
-
* to a
|
|
110
|
-
* `packed[1]` for the tag would report every record those pages
|
|
111
|
-
* having no type at all. */
|
|
105
|
+
* A page holds both forms: a typed record is packed as the tag and body it
|
|
106
|
+
* was already split into, and a map an app writes packs whatever the app
|
|
107
|
+
* assigned as one whole value. Both forms occur in ONE store, because an
|
|
108
|
+
* app's bulk add to a store of typed records seals its own pages, so a reader
|
|
109
|
+
* that took `packed[1]` for the tag would report every record those pages
|
|
110
|
+
* hold as having no type at all. */
|
|
112
111
|
export declare function unpackRecordPair(packed: PackedRecord<unknown>): {
|
|
113
112
|
tag: string;
|
|
114
113
|
body: unknown;
|
|
@@ -199,7 +198,7 @@ export declare function decodePageRecords(page: unknown): PackedRecord<unknown>[
|
|
|
199
198
|
/** Mean JSON bytes of a record body, over a stride sample of at most
|
|
200
199
|
* `WIDTH_SAMPLE` records, which is what `recordsPerPage` sizes a page
|
|
201
200
|
* against. `bodyOf` returns the value the caller will pack as the triple's
|
|
202
|
-
* body: a
|
|
201
|
+
* body: a typed record carries a tag beside a body, and an app's map packs
|
|
203
202
|
* its whole stored value (`packWholeValue`), so each caller weighs the bytes
|
|
204
203
|
* its own pages will hold.
|
|
205
204
|
*
|
|
@@ -324,7 +323,7 @@ export declare function applyRecordPatches(base: unknown, patches: RecordPatch[]
|
|
|
324
323
|
* value and as the `(tag, body)` pair split out of it, and return all three
|
|
325
324
|
* after the fold.
|
|
326
325
|
*
|
|
327
|
-
* A patch names the record's own fields, which for a
|
|
326
|
+
* A patch names the record's own fields, which for a typed record are
|
|
328
327
|
* `type` and `params` together, so a reader that walks tag and body
|
|
329
328
|
* separately has to re-split the result. Both readers of a paged store
|
|
330
329
|
* (the flattening one and the streaming one) resolve patches through this
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"record-paging.d.ts","sourceRoot":"","sources":["../src/record-paging.ts"],"names":[],"mappings":"AA4EA;wEACwE;AACxE,eAAO,MAAM,SAAS,SAAS,CAAC;AAChC,eAAO,MAAM,UAAU,WAAW,CAAC;AAEnC,mEAAmE;AACnE,eAAO,MAAM,QAAQ,SAAS,CAAC;AAC/B,eAAO,MAAM,WAAW,cAAc,CAAC;AACvC,eAAO,MAAM,SAAS,mBAAmB,CAAC;AAE1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qCA6BqC;AACrC,eAAO,MAAM,iBAAiB,WAAW,CAAC;AAE1C,8CAA8C;AAC9C,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED;;iFAEiF;AACjF,wBAAgB,aAAa,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAEtD;AAED;;;;;;;;6EAQ6E;AAC7E,eAAO,MAAM,mBAAmB,OAAQ,CAAC;AAiBzC;;;2DAG2D;AAC3D,eAAO,MAAM,QAAQ,aAAa,CAAC;AAEnC;;;;;;;;;aASa;AACb,eAAO,MAAM,mBAAmB,WAAW,CAAC;AAE5C,+EAA+E;AAC/E,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAElD;AAeD;;;;;;iDAMiD;AACjD,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAcvD;AAED;;;2CAG2C;AAC3C,eAAO,MAAM,cAAc,aAA6B,CAAC;AAazD
|
|
1
|
+
{"version":3,"file":"record-paging.d.ts","sourceRoot":"","sources":["../src/record-paging.ts"],"names":[],"mappings":"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"}
|
package/dist/record-paging.js
CHANGED
|
@@ -192,15 +192,14 @@ export const OVERLAY_PREFIX = `${RESERVED_KEY_PREFIX}r:`;
|
|
|
192
192
|
const TOMBSTONE_PREFIX = `${RESERVED_KEY_PREFIX}x:`;
|
|
193
193
|
/** Pack one stored value into a page triple. A `null` tag is what says the
|
|
194
194
|
* body IS the record: an app's map holds whatever the app assigned, which has
|
|
195
|
-
* no tag to split off. A
|
|
196
|
-
*
|
|
197
|
-
* its records. */
|
|
195
|
+
* no tag to split off. A typed record arrives already split, and its tag is a
|
|
196
|
+
* string, so the two forms cannot be confused whatever the tag says. */
|
|
198
197
|
export function packWholeValue(key, value) {
|
|
199
198
|
return [key, null, value];
|
|
200
199
|
}
|
|
201
200
|
/** Re-pack `value` in the same triple shape `packed` already uses, so a page
|
|
202
|
-
* rewritten in place keeps the form its readers expect: a
|
|
203
|
-
*
|
|
201
|
+
* rewritten in place keeps the form its readers expect: a typed record stays
|
|
202
|
+
* a tag beside a body, and an app's stays one whole value. A streaming
|
|
204
203
|
* read visits a page's triples without unpacking them, so a rewrite that
|
|
205
204
|
* changed the shape would hand it the wrong half of the record. */
|
|
206
205
|
export function repackRecord(packed, value) {
|
|
@@ -215,7 +214,7 @@ export function repackRecord(packed, value) {
|
|
|
215
214
|
];
|
|
216
215
|
}
|
|
217
216
|
/** The stored value a page triple carries: the value itself for a whole-value
|
|
218
|
-
* record, else the `{ type, params }` pair a
|
|
217
|
+
* record, else the `{ type, params }` pair a typed one was split into. */
|
|
219
218
|
export function unpackRecord(packed) {
|
|
220
219
|
if (packed[1] === null)
|
|
221
220
|
return packed[2];
|
|
@@ -225,12 +224,12 @@ export function unpackRecord(packed) {
|
|
|
225
224
|
* separately, or null when the triple packs a whole value that is not a
|
|
226
225
|
* record.
|
|
227
226
|
*
|
|
228
|
-
* A page holds both forms: a
|
|
229
|
-
*
|
|
230
|
-
* one whole value. Both forms occur in ONE store, because an
|
|
231
|
-
* to a
|
|
232
|
-
* `packed[1]` for the tag would report every record those pages
|
|
233
|
-
* having no type at all. */
|
|
227
|
+
* A page holds both forms: a typed record is packed as the tag and body it
|
|
228
|
+
* was already split into, and a map an app writes packs whatever the app
|
|
229
|
+
* assigned as one whole value. Both forms occur in ONE store, because an
|
|
230
|
+
* app's bulk add to a store of typed records seals its own pages, so a reader
|
|
231
|
+
* that took `packed[1]` for the tag would report every record those pages
|
|
232
|
+
* hold as having no type at all. */
|
|
234
233
|
export function unpackRecordPair(packed) {
|
|
235
234
|
if (packed[1] !== null)
|
|
236
235
|
return { tag: packed[1], body: packed[2] };
|
|
@@ -379,7 +378,7 @@ const WIDTH_SAMPLE = 256;
|
|
|
379
378
|
/** Mean JSON bytes of a record body, over a stride sample of at most
|
|
380
379
|
* `WIDTH_SAMPLE` records, which is what `recordsPerPage` sizes a page
|
|
381
380
|
* against. `bodyOf` returns the value the caller will pack as the triple's
|
|
382
|
-
* body: a
|
|
381
|
+
* body: a typed record carries a tag beside a body, and an app's map packs
|
|
383
382
|
* its whole stored value (`packWholeValue`), so each caller weighs the bytes
|
|
384
383
|
* its own pages will hold.
|
|
385
384
|
*
|
|
@@ -555,7 +554,7 @@ export function applyRecordPatches(base, patches) {
|
|
|
555
554
|
* value and as the `(tag, body)` pair split out of it, and return all three
|
|
556
555
|
* after the fold.
|
|
557
556
|
*
|
|
558
|
-
* A patch names the record's own fields, which for a
|
|
557
|
+
* A patch names the record's own fields, which for a typed record are
|
|
559
558
|
* `type` and `params` together, so a reader that walks tag and body
|
|
560
559
|
* separately has to re-split the result. Both readers of a paged store
|
|
561
560
|
* (the flattening one and the streaming one) resolve patches through this
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"record-paging.js","sourceRoot":"","sources":["../src/record-paging.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,4EAA4E;AAC5E,oCAAoC;AACpC,EAAE;AACF,4EAA4E;AAC5E,yEAAyE;AACzE,8EAA8E;AAC9E,8EAA8E;AAC9E,+EAA+E;AAC/E,oCAAoC;AACpC,EAAE;AACF,uBAAuB;AACvB,6EAA6E;AAC7E,qEAAqE;AACrE,4BAA4B;AAC5B,+EAA+E;AAC/E,+EAA+E;AAC/E,0EAA0E;AAC1E,uEAAuE;AACvE,+EAA+E;AAC/E,8EAA8E;AAC9E,iCAAiC;AACjC,EAAE;AACF,+EAA+E;AAC/E,8EAA8E;AAC9E,8EAA8E;AAC9E,8EAA8E;AAC9E,8EAA8E;AAC9E,6BAA6B;AAE7B,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAgBlE,IAAI,UAA0C,CAAC;AAE/C,SAAS,WAAW;IAClB,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,IAAI,GACR,UAGD,CAAC,OAAO,CAAC;YACV,UAAU;gBACP,IAAI,EAAE,gBAAgB,EAAE,CAAC,WAAW,CAA6B;oBAClE,IAAI,CAAC;QACT,CAAC;QAAC,MAAM,CAAC;YACP,UAAU,GAAG,IAAI,CAAC;QACpB,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,IAAI,CAAC,KAAiB;IAC7B,MAAM,IAAI,GAAG,WAAW,EAAE,CAAC;IAC3B,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,MAAM,CAAC,KAAiB;IAC/B,MAAM,IAAI,GAAG,WAAW,EAAE,CAAC;IAC3B,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAC3D,CAAC;AAED;wEACwE;AACxE,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC;AAChC,MAAM,CAAC,MAAM,UAAU,GAAG,QAAQ,CAAC;AAEnC,mEAAmE;AACnE,MAAM,CAAC,MAAM,QAAQ,GAAG,MAAM,CAAC;AAC/B,MAAM,CAAC,MAAM,WAAW,GAAG,WAAW,CAAC;AACvC,MAAM,CAAC,MAAM,SAAS,GAAG,gBAAgB,CAAC;AAE1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qCA6BqC;AACrC,MAAM,CAAC,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AAE1C,8CAA8C;AAC9C,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,OAAO,GAAG,iBAAiB,GAAG,OAAO,EAAE,CAAC;AAC1C,CAAC;AAED;;iFAEiF;AACjF,MAAM,UAAU,aAAa,CAAC,MAAe;IAC3C,OAAO,MAAM,KAAK,IAAI,CAAC;AACzB,CAAC;AAED;;;;;;;;6EAQ6E;AAC7E,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC;AAEzC,uEAAuE;AACvE,yEAAyE;AACzE,2EAA2E;AAC3E,6EAA6E;AAC7E,4EAA4E;AAC5E,4EAA4E;AAC5E,2EAA2E;AAC3E,yCAAyC;AACzC,EAAE;AACF,8EAA8E;AAC9E,8EAA8E;AAC9E,0DAA0D;AAC1D,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAC5B,MAAM,iBAAiB,GAAG,EAAE,GAAG,IAAI,CAAC;AAEpC;;;2DAG2D;AAC3D,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAAC;AAEnC;;;;;;;;;aASa;AACb,MAAM,CAAC,MAAM,mBAAmB,GAAG,QAAQ,CAAC;AAE5C,+EAA+E;AAC/E,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,OAAO,GAAG,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;;;;;;yCAUyC;AACzC,MAAM,sBAAsB,GAAG,WAAW,CAAC;AAE3C;;;;;;iDAMiD;AACjD,MAAM,UAAU,qBAAqB,CAAC,GAAW;IAC/C,IAAI,GAAG,KAAK,sBAAsB,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CACb,QAAQ,GAAG,wCAAwC;YACjD,IAAI,sBAAsB,uCAAuC;YACjE,iCAAiC,CACpC,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;QAAE,OAAO;IAChC,MAAM,IAAI,KAAK,CACb,QAAQ,GAAG,gDAAgD;QACzD,IAAI,mBAAmB,8CAA8C;QACrE,uBAAuB,CAC1B,CAAC;AACJ,CAAC;AAED;;;2CAG2C;AAC3C,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,mBAAmB,IAAI,CAAC;AAEzD;;;;;;;;mBAQmB;AACnB,MAAM,gBAAgB,GAAG,GAAG,mBAAmB,IAAI,CAAC;AAEpD;;;;mBAImB;AACnB,MAAM,UAAU,cAAc,CAAI,GAAW,EAAE,KAAQ;IACrD,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AAC5B,CAAC;AAED;;;;oEAIoE;AACpE,MAAM,UAAU,YAAY,CAC1B,MAA6B,EAC7B,KAAc;IAEd,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI;QAAE,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,CAAC,KAAK,IAAI,EAAE,CAA4B,CAAC;IACxD,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;IAC9B,OAAO;QACL,MAAM,CAAC,CAAC,CAAC;QACT,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,UAAU,CAAC;KACnB,CAAC;AACJ,CAAC;AAED;sEACsE;AACtE,MAAM,UAAU,YAAY,CAAC,MAA6B;IACxD,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;IACzC,OAAO,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;AAC7D,CAAC;AAED;;;;;;;;;6BAS6B;AAC7B,MAAM,UAAU,gBAAgB,CAC9B,MAA6B;IAE7B,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI;QAAE,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACnE,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,aAAa,CAAC,SAAiB;IAC7C,OAAO,GAAG,cAAc,GAAG,SAAS,EAAE,CAAC;AACzC,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,eAAe,CAAC,SAAiB;IAC/C,OAAO,GAAG,gBAAgB,GAAG,SAAS,EAAE,CAAC;AAC3C,CAAC;AAED;;;;;;;;;;;;;;;wDAewD;AACxD,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,mBAAmB,IAAI,CAAC;AAE9D,+EAA+E;AAC/E,MAAM,UAAU,cAAc,CAAC,KAAa,EAAE,KAAa;IACzD,OAAO,GAAG,mBAAmB,GAAG,KAAK,IAAI,KAAK,EAAE,CAAC;AACnD,CAAC;AAED;;0EAE0E;AAC1E,MAAM,UAAU,mBAAmB,CACjC,GAAW;IAEX,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,mBAAmB,CAAC;QAAE,OAAO,IAAI,CAAC;IACtD,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC;IAC5C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACvD,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC;AAChD,CAAC;AASD;;;;;;;;;;kBAUkB;AAClB,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC;AAatC;;;8EAG8E;AAC9E,MAAM,UAAU,UAAU,CAAI,OAA0B;IACtD,OAAO,qBAAqB,CAC1B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACnD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACzB,CAAC;AACJ,CAAC;AAED;;;;wEAIwE;AACxE,MAAM,UAAU,mBAAmB,CAAI,GAAkB,EAAE,IAAO;IAChE,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;AACrC,CAAC;AAED;;;aAGa;AACb,MAAM,UAAU,qBAAqB,CACnC,OAAiB,EACjB,IAAc;IAEd,MAAM,IAAI,GAAG,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IAC3C,OAAO;QACL,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;QACpB,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACpC,KAAK,EAAE,IAAI,CAAC,MAAM;KACnB,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY;IAC5B,OAAO,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAC9C,CAAC;AAED;;iCAEiC;AACjC,SAAS,eAAe,CAAC,KAAc;IACrC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACnE,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAE,MAAoB,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;0CAE0C;AAC1C,MAAM,UAAU,cAAc,CAAC,SAAkB;IAC/C,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;IAC1C,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IAC/B,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC;AAClE,CAAC;AAED;;;gEAGgE;AAChE,MAAM,UAAU,iBAAiB,CAAC,IAAa;IAC7C,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IACxE,MAAM,MAAM,GAAG,IAA+B,CAAC;IAC/C,MAAM,IAAI,GAAG,cAAc,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC;IACrD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;IAClD,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IAC9B,MAAM,GAAG,GAA4B,EAAE,CAAC;IACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,SAAS;QACnC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI;YAAE,SAAS;QAC9D,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAE,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,0EAA0E;AAC1E,2EAA2E;AAC3E,wEAAwE;AACxE,8EAA8E;AAC9E,0EAA0E;AAC1E,MAAM,YAAY,GAAG,GAAG,CAAC;AAEzB;;;;;;;;;;;;0DAY0D;AAC1D,MAAM,UAAU,eAAe,CAC7B,OAAqB,EACrB,MAA8B;IAE9B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC;IACtE,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,CAAC;QACH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,GAAG,YAAY,EAAE,CAAC,IAAI,MAAM,EAAE,CAAC;YACvE,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC;YAC5D,IAAI,IAAI,CAAC,CAAC;QACZ,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,CAAC;IACX,CAAC;IACD,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC;AACvC,CAAC;AAED;;8CAE8C;AAC9C,MAAM,UAAU,cAAc,CAAC,YAAqB;IAClD,IAAI,CAAC,YAAY,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;QACzE,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAAG,YAAY,CAAC,CAAC;IAC7D,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED;;;;;;;4CAO4C;AAC5C,MAAM,UAAU,YAAY,CAC1B,WAAmB,EACnB,YAAqB;IAErB,IAAI,WAAW,IAAI,mBAAmB;QAAE,OAAO,CAAC,CAAC;IACjD,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED;;kBAEkB;AAClB,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7E,MAAM,GAAG,GAAI,KAAiC,CAAC,SAAS,CAAC,CAAC;IAC1D,OAAO,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9C,CAAC;AAED;kDACkD;AAClD,MAAM,UAAU,iBAAiB,CAC/B,KAAc;IAEd,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7E,MAAM,CAAC,GAAG,KAAgC,CAAC;IAC3C,MAAM,GAAG,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;IACzB,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/D,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC;AACtC,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8CA6B8C;AAC9C,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,mBAAmB,IAAI,CAAC;AAEvD,6EAA6E;AAC7E,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAEhC,MAAM,UAAU,WAAW,CACzB,SAAiB,EACjB,IAAY,EACZ,OAAe;IAEf,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;IAC9D,OAAO,GAAG,YAAY,GAAG,IAAI,IAAI,CAAC,IAAI,SAAS,EAAE,CAAC;AACpD,CAAC;AAuBD;;wDAEwD;AACxD,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;IACnE,IAAI,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QACnC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;IAC1E,CAAC;IACD,IAAI,GAAG,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACrC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;IAC9E,CAAC;IACD,IAAI,GAAG,CAAC,UAAU,CAAC,mBAAmB,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IACjE,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IAClC,OAAO,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AAC3E,CAAC;AAED;;;;;;;uCAOuC;AACvC,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/C,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IACtD,IAAI,OAAO,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAChC,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;IACjD,IAAI,UAAU,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;IAC5C,OAAO;QACL,SAAS;QACT,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC;QAC7C,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,EAAE,UAAU,CAAC;KAC5C,CAAC;AACJ,CAAC;AASD;;;;8DAI8D;AAC9D,MAAM,UAAU,kBAAkB,CAChC,IAAa,EACb,OAAsB;IAEtB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACtC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1E,MAAM,OAAO,GACX,OAAO,CAAC,MAAM,KAAK,CAAC;QAClB,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACzB,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,OAAO;YACrB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC;YAC9B,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CACvC,CAAC;IACR,IAAI,GAAG,GAAG,IAA+B,CAAC;IAC1C,KAAK,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,OAAO,EAAE,CAAC;QACxC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,SAAS;QAC1E,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,GAAI,KAAiC,EAAE,CAAC;IAC1D,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,oBAAoB,CAClC,MAAe,EACf,GAAW,EACX,IAAa,EACb,OAAsB;IAEtB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IACvD,MAAM,OAAO,GAAG,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpD,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACtE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IACxC,CAAC;IACD,MAAM,MAAM,GAAG,OAAkC,CAAC;IAClD,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;IAClC,OAAO;QACL,GAAG,EAAE,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;QAChD,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC;QACxB,MAAM,EAAE,OAAO;KAChB,CAAC;AACJ,CAAC;AAeD;;;;;;;;;yBASyB;AACzB,MAAM,UAAU,kBAAkB,CAChC,MAA+B,EAC/B,KAAc,EACd,IAAyB;IAEzB,IAAI,CAAC,KAAK;QAAE,OAAO,MAAM,CAAC;IAE1B,MAAM,IAAI,GAA4B,EAAE,CAAC;IACzC,0EAA0E;IAC1E,2EAA2E;IAC3E,0EAA0E;IAC1E,4EAA4E;IAC5E,8CAA8C;IAC9C,EAAE;IACF,4EAA4E;IAC5E,6EAA6E;IAC7E,4EAA4E;IAC5E,wEAAwE;IACxE,sCAAsC;IACtC,MAAM,KAAK,GAAwB,EAAE,CAAC;IACtC,MAAM,OAAO,GAAwB,EAAE,CAAC;IACxC,0EAA0E;IAC1E,6CAA6C;IAC7C,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,2EAA2E;IAC3E,6EAA6E;IAC7E,2EAA2E;IAC3E,oDAAoD;IACpD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAyB,CAAC;IACjD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,MAAM,KAAK,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACpC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,QAAQ;gBACX,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;gBACzB,MAAM;YACR,KAAK,SAAS;gBACZ,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;gBACvC,MAAM;YACR,KAAK,WAAW;gBACd,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBAC9B,MAAM;YACR,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;gBACjD,MAAM,KAAK,GAAG;oBACZ,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI;oBACvB,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO;oBAC7B,MAAM,EAAE,KAAK;iBACd,CAAC;gBACF,IAAI,IAAI;oBAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;oBACtB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;gBAClD,MAAM;YACR,CAAC;YACD,KAAK,MAAM;gBACT,KAAK,MAAM,MAAM,IAAI,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC9C,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;oBACvC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBAC7B,CAAC;gBACD,MAAM;YACR,KAAK,SAAS;gBACZ,MAAM;QACV,CAAC;IACH,CAAC;IACD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,KAAK,EAAE,CAAC;QACjC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAClB,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IACD,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;QACzC,IAAI,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;QACxB,IAAI,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IAC7B,CAAC;IACD,6EAA6E;IAC7E,mEAAmE;IACnE,KAAK,MAAM,SAAS,IAAI,OAAO,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC;QACvB,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC3B,CAAC;IACD,2EAA2E;IAC3E,sEAAsE;IACtE,uEAAuE;IACvE,EAAE;IACF,yEAAyE;IACzE,oEAAoE;IACpE,2EAA2E;IAC3E,4EAA4E;IAC5E,4EAA4E;IAC5E,yEAAyE;IACzE,QAAQ;IACR,KAAK,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,OAAO,EAAE,CAAC;QACxC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC;YAAE,SAAS;QACrE,IAAI,CAAC,SAAS,CAAC,GAAG,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
1
|
+
{"version":3,"file":"record-paging.js","sourceRoot":"","sources":["../src/record-paging.ts"],"names":[],"mappings":"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"}
|
package/dist/serializer.d.ts
CHANGED
|
@@ -19,9 +19,9 @@ export interface StoredList<T = unknown> extends ListHandle<T> {
|
|
|
19
19
|
/**
|
|
20
20
|
* The document as a serializer sees it: the same containers, readable whole.
|
|
21
21
|
*
|
|
22
|
-
* A `Document` satisfies this, which is what keeps a
|
|
23
|
-
*
|
|
24
|
-
* run, not what they are allowed to reach.
|
|
22
|
+
* A `Document` satisfies this, which is what keeps a serializer the platform
|
|
23
|
+
* ships and one an app registers on one surface. The difference between them
|
|
24
|
+
* is where they run, not what they are allowed to reach.
|
|
25
25
|
*/
|
|
26
26
|
export interface StoredDocument {
|
|
27
27
|
readonly id: string | null;
|
|
@@ -29,6 +29,15 @@ export interface AccountMenuDeps {
|
|
|
29
29
|
signIn: () => void;
|
|
30
30
|
signOut: () => void;
|
|
31
31
|
dashboardBaseUrl: string;
|
|
32
|
+
getActingOrganization?: () => {
|
|
33
|
+
id: string;
|
|
34
|
+
name: string;
|
|
35
|
+
} | null;
|
|
36
|
+
subscribeActingOrganization?: (listener: (organization: {
|
|
37
|
+
id: string;
|
|
38
|
+
name: string;
|
|
39
|
+
} | null) => void) => () => void;
|
|
40
|
+
switchOrganization?: () => void;
|
|
32
41
|
}
|
|
33
42
|
export type SessionToolbarDeps = FileMenuDeps & DocumentTitleDeps & UndoRedoDeps & PresenceRosterDeps & AccountMenuDeps & VersionPreviewDeps;
|
|
34
43
|
export interface SessionToolbarOptions {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-toolbar.d.ts","sourceRoot":"","sources":["../src/session-toolbar.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"session-toolbar.d.ts","sourceRoot":"","sources":["../src/session-toolbar.ts"],"names":[],"mappings":"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"}
|
package/dist/session-toolbar.js
CHANGED
|
@@ -90,7 +90,8 @@ const CSS = `
|
|
|
90
90
|
margin:4px 2px; }
|
|
91
91
|
/* [hidden] must beat the block rule above (the account menu swaps its body
|
|
92
92
|
between signed-in actions and the guest's "Sign in"). */
|
|
93
|
-
.b-pop button[hidden], .b-pop a[hidden], .b-pop .b-email[hidden]
|
|
93
|
+
.b-pop button[hidden], .b-pop a[hidden], .b-pop .b-email[hidden],
|
|
94
|
+
.b-pop .b-account-org[hidden] { display:none; }
|
|
94
95
|
.b-identity { display:flex; flex-direction:column; align-items:flex-start;
|
|
95
96
|
gap:1px; min-width:0; }
|
|
96
97
|
/* Cancels the horizontal padding the title and location carry for their focus
|
|
@@ -157,9 +158,12 @@ const CSS = `
|
|
|
157
158
|
/* minmax(0,1fr) so a long name or email ellipsizes instead of widening the
|
|
158
159
|
menu: a grid item's default min-width is its content's intrinsic size. */
|
|
159
160
|
.b-account-id { display:grid; grid-template-columns:minmax(0,1fr); gap:1px; min-width:0; }
|
|
160
|
-
.b-account-name, .b-email
|
|
161
|
+
.b-account-name, .b-email, .b-account-org {
|
|
162
|
+
overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
|
|
161
163
|
.b-account-name { font-size:13px; font-weight:600; line-height:1.3; }
|
|
162
|
-
|
|
164
|
+
/* The organization line qualifies the identity rather than naming it, so it
|
|
165
|
+
sits at the address's quiet tier and never competes with the name above. */
|
|
166
|
+
.b-email, .b-account-org { color:var(--brass-fg-muted); font-size:12px; line-height:1.3; }
|
|
163
167
|
.b-account .b-pop button, .b-account .b-pop a {
|
|
164
168
|
display:flex; align-items:center; gap:10px; font-size:13px; }
|
|
165
169
|
.b-account .b-pop svg { flex:0 0 auto; color:var(--brass-fg-muted); }
|
|
@@ -202,6 +206,10 @@ const CSS = `
|
|
|
202
206
|
.b-drive-source { font-size:12px; color:var(--brass-accent); text-decoration:none; white-space:nowrap; }
|
|
203
207
|
.b-drive-source:hover { text-decoration:underline; }
|
|
204
208
|
.b-drive-detail { margin:0; padding:0 10px 6px; font-size:12px; color:var(--brass-fg-muted); }
|
|
209
|
+
/* The drive rejecting a published file is the one line in this panel that
|
|
210
|
+
reports a problem, so it carries the danger tone rather than the muted one
|
|
211
|
+
every other line uses. */
|
|
212
|
+
.b-drive-unreadable { margin:0; padding:0 10px 6px; font-size:12px; color:var(--brass-danger, #b3261e); }
|
|
205
213
|
/* Historical-version preview bar: a full-width strip the toolbar shows below
|
|
206
214
|
the bar whenever the active doc is previewing an earlier version. The strip
|
|
207
215
|
itself is the platform-served version-bar iframe (the SDK owns only this
|
|
@@ -784,6 +792,7 @@ function buildDriveSync(deps) {
|
|
|
784
792
|
// document that was closed.
|
|
785
793
|
let boundDoc = null;
|
|
786
794
|
let statusOff = null;
|
|
795
|
+
let publishOff = null;
|
|
787
796
|
// A publish runs on a server worker and reaches `synced` only after the
|
|
788
797
|
// worker (and, on a file-roundtrip, the drive's importer) confirms. In that
|
|
789
798
|
// gap the drive state still reads `ahead`, which would flash "unpublished
|
|
@@ -796,23 +805,105 @@ function buildDriveSync(deps) {
|
|
|
796
805
|
let publishing = false;
|
|
797
806
|
let publishError = false;
|
|
798
807
|
let publishTimer = null;
|
|
808
|
+
// Set on a click, cleared by the next publish-state frame. Between the two,
|
|
809
|
+
// the held state describes the PREVIOUS attempt, and rendering it would
|
|
810
|
+
// report the last failure over the publish just started.
|
|
811
|
+
let publishStateStale = false;
|
|
799
812
|
let currentStatus = null;
|
|
800
813
|
const clearPublishing = () => {
|
|
801
814
|
publishing = false;
|
|
815
|
+
// The stale mark is cleared with the hold it belongs to. It is otherwise
|
|
816
|
+
// cleared only by a publish-state frame, so a publish that draws none
|
|
817
|
+
// would leave the panel reading the target's resting sentence for the
|
|
818
|
+
// life of the document.
|
|
819
|
+
publishStateStale = false;
|
|
802
820
|
if (publishTimer !== null) {
|
|
803
821
|
clearTimeout(publishTimer);
|
|
804
822
|
publishTimer = null;
|
|
805
823
|
}
|
|
806
824
|
};
|
|
825
|
+
// The panel for a document with no source item: the server's sentence about
|
|
826
|
+
// where the file lands, and the publish that puts it there. The first
|
|
827
|
+
// publish creates the artifact and makes the document its mirror, at which
|
|
828
|
+
// point the drive status arrives and the mirror panel above replaces this
|
|
829
|
+
// one.
|
|
830
|
+
const renderPublishOffer = (target) => {
|
|
831
|
+
root.hidden = false;
|
|
832
|
+
// A document the drive has never received is as far out of sync as one
|
|
833
|
+
// whose edits have not been published, so the icon carries the same
|
|
834
|
+
// attention an `ahead` document's does. What separates them is what the
|
|
835
|
+
// panel offers, not how much the reader is told to look.
|
|
836
|
+
root.classList.add('has-changes');
|
|
837
|
+
root.classList.remove('is-broken');
|
|
838
|
+
const state = publishStateStale ? null : (boundDoc?._publishState ?? null);
|
|
839
|
+
const inFlight = publishing || state?.publishing === true || target.publishing;
|
|
840
|
+
button.title = inFlight
|
|
841
|
+
? 'Publishing...'
|
|
842
|
+
: state?.failed
|
|
843
|
+
? `Publish to ${target.driveName} failed`
|
|
844
|
+
: `Publish to ${target.driveName}`;
|
|
845
|
+
const failed = !inFlight && (state?.failed === true || target.publishFailed === true);
|
|
846
|
+
const rows = [];
|
|
847
|
+
// One line, server-authored either way: the worker's phase copy while it
|
|
848
|
+
// runs, its account of the failure when it stopped, and the resting
|
|
849
|
+
// sentence otherwise. Marked as a problem when it is one, since nothing
|
|
850
|
+
// else in this panel distinguishes a document whose publish failed from
|
|
851
|
+
// one that has simply never published.
|
|
852
|
+
const p = el('p', failed ? 'b-drive-unreadable' : 'b-drive-detail');
|
|
853
|
+
p.textContent = inFlight
|
|
854
|
+
? (state?.publishing === true ? (state.detail ?? 'Publishing...') : 'Publishing...')
|
|
855
|
+
: (state?.detail ?? target.detail);
|
|
856
|
+
rows.push(p);
|
|
857
|
+
const pub = el('button');
|
|
858
|
+
pub.type = 'button';
|
|
859
|
+
pub.disabled = inFlight;
|
|
860
|
+
pub.textContent = inFlight
|
|
861
|
+
? 'Publishing...'
|
|
862
|
+
: publishError || failed
|
|
863
|
+
? `Publish to ${target.driveName}, retry`
|
|
864
|
+
: `Publish to ${target.driveName}`;
|
|
865
|
+
pub.onclick = () => {
|
|
866
|
+
const doc = deps.session.document;
|
|
867
|
+
if (!doc)
|
|
868
|
+
return;
|
|
869
|
+
publishError = false;
|
|
870
|
+
publishing = true;
|
|
871
|
+
publishStateStale = true;
|
|
872
|
+
// The same safety net the mirror panel keeps: a publish that neither
|
|
873
|
+
// errors nor lands leaves the panel offering the action again rather
|
|
874
|
+
// than held forever.
|
|
875
|
+
publishTimer = setTimeout(() => {
|
|
876
|
+
clearPublishing();
|
|
877
|
+
render(currentStatus);
|
|
878
|
+
}, PUBLISH_HOLD_MS);
|
|
879
|
+
render(currentStatus);
|
|
880
|
+
void doc.pushToDrive().catch(() => {
|
|
881
|
+
clearPublishing();
|
|
882
|
+
publishError = true;
|
|
883
|
+
render(currentStatus);
|
|
884
|
+
});
|
|
885
|
+
};
|
|
886
|
+
rows.push(pub);
|
|
887
|
+
pop.replaceChildren(...rows);
|
|
888
|
+
};
|
|
807
889
|
const render = (status) => {
|
|
808
890
|
currentStatus = status;
|
|
809
|
-
//
|
|
891
|
+
// A document that mirrors nothing can still have somewhere to go: its
|
|
892
|
+
// project may be linked to a drive that takes it as a new file, which is
|
|
893
|
+
// what an upload into a linked project sits waiting for. Offer that
|
|
894
|
+
// publish here, so an app gets it by mounting this piece rather than by
|
|
895
|
+
// building a surface of its own.
|
|
810
896
|
if (status === null) {
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
897
|
+
const target = boundDoc?._publishTarget ?? null;
|
|
898
|
+
if (target === null) {
|
|
899
|
+
root.hidden = true;
|
|
900
|
+
menu.close();
|
|
901
|
+
clearPublishing();
|
|
902
|
+
root.classList.remove('has-changes', 'is-broken');
|
|
903
|
+
pop.replaceChildren();
|
|
904
|
+
return;
|
|
905
|
+
}
|
|
906
|
+
renderPublishOffer(target);
|
|
816
907
|
return;
|
|
817
908
|
}
|
|
818
909
|
// The publish settles once the doc actually reaches synced; drop the
|
|
@@ -874,6 +965,14 @@ function buildDriveSync(deps) {
|
|
|
874
965
|
p.textContent = description;
|
|
875
966
|
rows.push(p);
|
|
876
967
|
}
|
|
968
|
+
// The drive could not read what the last publish delivered. Shown in the
|
|
969
|
+
// drive's own words, above the commands: the publish succeeded, so
|
|
970
|
+
// nothing else in this panel says anything is wrong.
|
|
971
|
+
if (status.sourceUnreadable) {
|
|
972
|
+
const warn = el('p', 'b-drive-unreadable');
|
|
973
|
+
warn.textContent = status.sourceUnreadable;
|
|
974
|
+
rows.push(warn);
|
|
975
|
+
}
|
|
877
976
|
if (isPublishing) {
|
|
878
977
|
// Held while the publish is in flight (a local click hold, or the doc's
|
|
879
978
|
// pending work-status), until it reaches synced (see `isPublishing`).
|
|
@@ -884,8 +983,9 @@ function buildDriveSync(deps) {
|
|
|
884
983
|
rows.push(pub);
|
|
885
984
|
}
|
|
886
985
|
else if (status.canPush) {
|
|
887
|
-
// `canPush` already encodes two-way + not broken + local edits
|
|
888
|
-
// never offers a
|
|
986
|
+
// `canPush` already encodes two-way + not broken + local edits + a
|
|
987
|
+
// server-writable format, so this never offers a publish the server
|
|
988
|
+
// would refuse.
|
|
889
989
|
const pub = el('button');
|
|
890
990
|
pub.type = 'button';
|
|
891
991
|
pub.textContent = publishError ? 'Publish failed, retry' : 'Publish changes';
|
|
@@ -931,6 +1031,8 @@ function buildDriveSync(deps) {
|
|
|
931
1031
|
function bind() {
|
|
932
1032
|
statusOff?.();
|
|
933
1033
|
statusOff = null;
|
|
1034
|
+
publishOff?.();
|
|
1035
|
+
publishOff = null;
|
|
934
1036
|
const doc = deps.session.document;
|
|
935
1037
|
if (!doc) {
|
|
936
1038
|
render(null);
|
|
@@ -941,6 +1043,18 @@ function buildDriveSync(deps) {
|
|
|
941
1043
|
// started from any surface (the dashboard card, the app) flips it and the
|
|
942
1044
|
// indicator holds "Publishing..." without a local click.
|
|
943
1045
|
statusOff = doc.onDriveStatus(render);
|
|
1046
|
+
// The same signal for a document that mirrors nothing yet, which has no
|
|
1047
|
+
// drive status to carry it: its first publish is the one that creates the
|
|
1048
|
+
// artifact, and this is how its progress and its failure arrive.
|
|
1049
|
+
publishOff = doc._onPublishState(() => {
|
|
1050
|
+
publishStateStale = false;
|
|
1051
|
+
// A publish the server has finished with ends the local click hold:
|
|
1052
|
+
// holding "Publishing..." for the rest of it would report a push that
|
|
1053
|
+
// is over as one still running.
|
|
1054
|
+
if (!doc._publishState.publishing)
|
|
1055
|
+
clearPublishing();
|
|
1056
|
+
render(currentStatus);
|
|
1057
|
+
});
|
|
944
1058
|
}
|
|
945
1059
|
const onSession = () => {
|
|
946
1060
|
const doc = deps.session.document;
|
|
@@ -956,6 +1070,7 @@ function buildDriveSync(deps) {
|
|
|
956
1070
|
destroy() {
|
|
957
1071
|
unsub();
|
|
958
1072
|
statusOff?.();
|
|
1073
|
+
publishOff?.();
|
|
959
1074
|
clearPublishing();
|
|
960
1075
|
menu.destroy();
|
|
961
1076
|
},
|
|
@@ -970,28 +1085,40 @@ function buildAccountMenu(deps) {
|
|
|
970
1085
|
align: 'end',
|
|
971
1086
|
});
|
|
972
1087
|
// The menu opens on the identity it acts for: the avatar at reading size,
|
|
973
|
-
// the display name,
|
|
974
|
-
//
|
|
1088
|
+
// the display name, the email under it, and the organization the app acts in
|
|
1089
|
+
// under that. The name line drops out when the user has none, leaving the
|
|
1090
|
+
// email as the single identifying line.
|
|
975
1091
|
const head = el('div', 'b-account-head');
|
|
976
1092
|
const headFace = buildAvatarFace();
|
|
977
1093
|
const faceEl = el('span', 'b-account-face');
|
|
978
1094
|
faceEl.append(...headFace.nodes);
|
|
979
1095
|
const nameEl = el('div', 'b-account-name');
|
|
980
1096
|
const emailEl = el('div', 'b-email');
|
|
1097
|
+
const orgEl = el('div', 'b-account-org');
|
|
981
1098
|
const identity = el('div', 'b-account-id');
|
|
982
|
-
identity.append(nameEl, emailEl);
|
|
1099
|
+
identity.append(nameEl, emailEl, orgEl);
|
|
983
1100
|
head.append(faceEl, identity);
|
|
984
1101
|
const headSep = el('hr', 'b-sep');
|
|
985
1102
|
headSep.setAttribute('role', 'separator');
|
|
986
1103
|
// Opens the dashboard in a new tab, so the user keeps the app open in the
|
|
987
|
-
// current one
|
|
988
|
-
//
|
|
1104
|
+
// current one, and lands in the organization the app is working in rather
|
|
1105
|
+
// than wherever the dashboard was left. `/home` is the authenticated
|
|
1106
|
+
// landing and stands in when the app is working in none.
|
|
989
1107
|
const dashboardLink = el('a');
|
|
990
1108
|
dashboardLink.append(strokeIcon('M14 3h7v7', 'M10 14 21 3', 'M21 14v5a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5'), 'Open Brass dashboard');
|
|
991
1109
|
dashboardLink.href = `${deps.dashboardBaseUrl}/home`;
|
|
992
1110
|
dashboardLink.target = '_blank';
|
|
993
1111
|
dashboardLink.rel = 'noopener noreferrer';
|
|
994
1112
|
dashboardLink.onclick = () => menu.close();
|
|
1113
|
+
// Sits directly above the dashboard link, so the organization the header
|
|
1114
|
+
// names and the action that changes it read as one block.
|
|
1115
|
+
const switchOrgBtn = el('button');
|
|
1116
|
+
switchOrgBtn.type = 'button';
|
|
1117
|
+
switchOrgBtn.append(strokeIcon('m17 2 4 4-4 4', 'M3 11v-1a4 4 0 0 1 4-4h14', 'm7 22-4-4 4-4', 'M21 13v1a4 4 0 0 1-4 4H3'), 'Switch organization...');
|
|
1118
|
+
switchOrgBtn.onclick = () => {
|
|
1119
|
+
menu.close();
|
|
1120
|
+
deps.switchOrganization?.();
|
|
1121
|
+
};
|
|
995
1122
|
const signOutBtn = el('button');
|
|
996
1123
|
signOutBtn.append(strokeIcon('M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4', 'm16 17 5-5-5-5', 'M21 12H9'), 'Sign out');
|
|
997
1124
|
signOutBtn.onclick = () => {
|
|
@@ -1008,10 +1135,15 @@ function buildAccountMenu(deps) {
|
|
|
1008
1135
|
menu.close();
|
|
1009
1136
|
deps.signIn();
|
|
1010
1137
|
};
|
|
1011
|
-
menu.pop.append(head, headSep, dashboardLink, signOutBtn, signInBtn);
|
|
1138
|
+
menu.pop.append(head, headSep, switchOrgBtn, dashboardLink, signOutBtn, signInBtn);
|
|
1012
1139
|
const triggerFace = buildAvatarFace();
|
|
1013
1140
|
menu.trigger.append(...triggerFace.nodes);
|
|
1014
|
-
|
|
1141
|
+
// The menu acts for a (user, organization) pair, and each half arrives on
|
|
1142
|
+
// its own listener, so both are held here and one render draws them.
|
|
1143
|
+
let currentUser = deps.getUser();
|
|
1144
|
+
let organization = deps.getActingOrganization?.() ?? null;
|
|
1145
|
+
const render = () => {
|
|
1146
|
+
const user = currentUser;
|
|
1015
1147
|
triggerFace.render(user);
|
|
1016
1148
|
headFace.render(user);
|
|
1017
1149
|
nameEl.textContent = user?.display_name ?? '';
|
|
@@ -1029,13 +1161,40 @@ function buildAccountMenu(deps) {
|
|
|
1029
1161
|
dashboardLink.hidden = !signedIn;
|
|
1030
1162
|
signOutBtn.hidden = !signedIn;
|
|
1031
1163
|
signInBtn.hidden = signedIn;
|
|
1164
|
+
// The organization line names what the app is acting in, so it is drawn
|
|
1165
|
+
// only when there is something to name: an app that has not needed an
|
|
1166
|
+
// organization yet has not resolved one, and resolving one to fill this
|
|
1167
|
+
// line is the boot-time question the platform refuses.
|
|
1168
|
+
const organizationName = signedIn ? (organization?.name ?? '') : '';
|
|
1169
|
+
orgEl.textContent = organizationName;
|
|
1170
|
+
orgEl.title = organizationName;
|
|
1171
|
+
orgEl.hidden = organizationName === '';
|
|
1172
|
+
dashboardLink.href =
|
|
1173
|
+
signedIn && organization
|
|
1174
|
+
? `${deps.dashboardBaseUrl}/organizations/${encodeURIComponent(organization.id)}`
|
|
1175
|
+
: `${deps.dashboardBaseUrl}/home`;
|
|
1176
|
+
// Offered to every signed-in reader, including one the line has nothing
|
|
1177
|
+
// to name and one who belongs to a single organization. The surface
|
|
1178
|
+
// behind it both moves the app and creates an organization, so gating it
|
|
1179
|
+
// on already having somewhere else to go would withhold it from exactly
|
|
1180
|
+
// the person it is for; and an app reached by its own URL has resolved
|
|
1181
|
+
// nothing to name, which is the state a deliberate choice settles.
|
|
1182
|
+
switchOrgBtn.hidden = !signedIn || deps.switchOrganization === undefined;
|
|
1032
1183
|
};
|
|
1033
|
-
|
|
1034
|
-
const unsub = deps.onUserChange(
|
|
1184
|
+
render();
|
|
1185
|
+
const unsub = deps.onUserChange((user) => {
|
|
1186
|
+
currentUser = user;
|
|
1187
|
+
render();
|
|
1188
|
+
});
|
|
1189
|
+
const unsubOrganization = deps.subscribeActingOrganization?.((next) => {
|
|
1190
|
+
organization = next;
|
|
1191
|
+
render();
|
|
1192
|
+
});
|
|
1035
1193
|
return {
|
|
1036
1194
|
root: menu.root,
|
|
1037
1195
|
destroy() {
|
|
1038
1196
|
unsub();
|
|
1197
|
+
unsubOrganization?.();
|
|
1039
1198
|
menu.destroy();
|
|
1040
1199
|
},
|
|
1041
1200
|
};
|
|
@@ -1134,8 +1293,19 @@ function buildVersionPreview(deps) {
|
|
|
1134
1293
|
// left it checked out would leave an app read-only with nothing to
|
|
1135
1294
|
// clear it. A document pinned to its version has no head to return to
|
|
1136
1295
|
// and keeps showing it; `dismissedAt` is what keeps the bar dismissed.
|
|
1296
|
+
// Once the return lands, the dismissal has nothing left to hold
|
|
1297
|
+
// against: the doc is live, and a LATER pick of the same version in
|
|
1298
|
+
// the history dialog is a fresh preview that must latch the bar (its
|
|
1299
|
+
// pick sets only `version`, so a stale `dismissedAt` equal to it would
|
|
1300
|
+
// otherwise leave the reader checked out, read-only, with no bar and
|
|
1301
|
+
// no exit).
|
|
1137
1302
|
if (doc && doc.version !== null) {
|
|
1138
|
-
void attempt(doc, () => doc.returnToHead())
|
|
1303
|
+
void attempt(doc, () => doc.returnToHead())
|
|
1304
|
+
.then(() => {
|
|
1305
|
+
if (session.document === doc)
|
|
1306
|
+
dismissedAt = undefined;
|
|
1307
|
+
})
|
|
1308
|
+
.catch(() => { });
|
|
1139
1309
|
}
|
|
1140
1310
|
hideBar();
|
|
1141
1311
|
},
|