dsh-web-annotator 0.2.0-alpha.11 → 0.2.0-alpha.12
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/CHANGELOG.md +13 -0
- package/docs/distribution.md +9 -9
- package/docs/marketplace/cslkkl__dsh-web-annotator.yml +1 -1
- package/docs/publishing.md +54 -14
- package/lib/host/browser-provider/lib/client.css +1 -1
- package/lib/host/browser-provider/lib/client.css.map +1 -1
- package/lib/host/browser-provider/lib/client.js +28 -28
- package/lib/host/browser-provider/lib/client.js.map +1 -1
- package/lib/host/browser-provider/lib/index.js +1 -1
- package/lib/host/browser-provider/lib/index.js.map +1 -1
- package/lib/host/bundle.json +19 -19
- package/lib/host/chat-provider/lib/client.css +18 -18
- package/lib/host/chat-provider/lib/client.css.map +1 -1
- package/lib/host/chat-provider/lib/client.js +137 -137
- package/lib/host/chat-provider/lib/client.js.map +1 -1
- package/lib/host/chat-provider/lib/index.js +4 -4
- package/lib/host/chat-provider/lib/index.js.map +1 -1
- package/lib/host/layout-provider/lib/client.css +1 -1
- package/lib/host/layout-provider/lib/client.css.map +1 -1
- package/lib/host/layout-provider/lib/client.js +12 -12
- package/lib/host/layout-provider/lib/client.js.map +1 -1
- package/lib/host/layout-provider/lib/index.js +1 -1
- package/lib/host/layout-provider/lib/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
//
|
|
1
|
+
// node_modules/@deepseek-ai/cosmokit/lib/index.js
|
|
2
2
|
function isNullable(value) {
|
|
3
3
|
return value === null || value === void 0;
|
|
4
4
|
}
|
|
@@ -223,7 +223,7 @@ var Time;
|
|
|
223
223
|
Time2.template = template;
|
|
224
224
|
})(Time || (Time = {}));
|
|
225
225
|
|
|
226
|
-
//
|
|
226
|
+
// node_modules/@deepseek-ai/schemastery/lib/index.mjs
|
|
227
227
|
var kSchema = /* @__PURE__ */ Symbol.for("schemastery");
|
|
228
228
|
var kValidationError = /* @__PURE__ */ Symbol.for("ValidationError");
|
|
229
229
|
globalThis.__schemastery_index__ ??= 0;
|
|
@@ -864,7 +864,7 @@ defineMethod("transform", [
|
|
|
864
864
|
"preserve"
|
|
865
865
|
], ({ inner }, isInner) => inner.toString(isInner));
|
|
866
866
|
|
|
867
|
-
//
|
|
867
|
+
// .host-source/packages/client/ui-chat/src/chat-settings.ts
|
|
868
868
|
var CHAT_SETTINGS_NAMESPACE = "ui-chat";
|
|
869
869
|
var TRANSCRIPT_VIEW_FIELD = "transcriptView";
|
|
870
870
|
var TRANSCRIPT_VIEW_MODES = ["compact", "standard", "detailed", "verbose"];
|
|
@@ -887,7 +887,7 @@ var ChatSettingsFields = {
|
|
|
887
887
|
};
|
|
888
888
|
var ChatSettingsSchema = Schema.object(ChatSettingsFields);
|
|
889
889
|
|
|
890
|
-
//
|
|
890
|
+
// .host-source/packages/client/ui-chat/src/index.ts
|
|
891
891
|
var Config = Schema.object({
|
|
892
892
|
[TRANSCRIPT_VIEW_FIELD]: ChatSettingsFields[TRANSCRIPT_VIEW_FIELD].volatile(),
|
|
893
893
|
performanceUsage: ChatSettingsFields["performanceUsage"].volatile(),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../../node_modules/@deepseek-ai/cosmokit/lib/index.js", "../../../node_modules/@deepseek-ai/schemastery/lib/index.mjs", "../../../.host-source/packages/client/ui-chat/src/chat-settings.ts", "../../../.host-source/packages/client/ui-chat/src/index.ts"],
|
|
4
4
|
"sourcesContent": ["//#region lib/types/misc.js\n/** No-op callback returning `undefined` at runtime and `any` at type level. */\nfunction noop() {}\n/** Return true when a value is `null` or `undefined`. */\nfunction isNullable(value) {\n\treturn value === null || value === void 0;\n}\n/** Return true when a value is neither `null` nor `undefined`. */\nfunction isNonNullable(value) {\n\treturn !isNullable(value);\n}\n/** Return true for non-array object values. */\nfunction isPlainObject(data) {\n\treturn data && typeof data === \"object\" && !Array.isArray(data);\n}\n/** Filter object entries and return a new object. */\nfunction filterKeys(object, filter) {\n\treturn Object.fromEntries(Object.entries(object).filter(([key, value]) => filter(key, value)));\n}\n/** Map object values while preserving the original key set. */\nfunction mapValues(object, transform) {\n\treturn Object.fromEntries(Object.entries(object).map(([key, value]) => [key, transform(value, key)]));\n}\n/** Pick selected keys from an object, optionally including `undefined` values. */\nfunction pick(source, keys, forced) {\n\tif (!keys) return { ...source };\n\tconst result = {};\n\tfor (const key of keys) if (forced || source[key] !== void 0) result[key] = source[key];\n\treturn result;\n}\n/** Omit selected keys from a shallow object copy. */\nfunction omit(source, keys) {\n\tif (!keys) return { ...source };\n\tconst result = { ...source };\n\tfor (const key of keys) Reflect.deleteProperty(result, key);\n\treturn result;\n}\n/** Define a non-enumerable writable property and return the object. */\nfunction defineProperty(object, key, value) {\n\treturn Object.defineProperty(object, key, {\n\t\twritable: true,\n\t\tvalue,\n\t\tenumerable: false\n\t});\n}\n//#endregion\n//#region lib/types/array.js\n/** Return true when every item in `array2` is present in `array1`. */\nfunction contain(array1, array2) {\n\treturn array2.every((item) => array1.includes(item));\n}\n/** Return items that appear in both arrays. */\nfunction intersection(array1, array2) {\n\treturn array1.filter((item) => array2.includes(item));\n}\n/** Return items from `array1` that do not appear in `array2`. */\nfunction difference(array1, array2) {\n\treturn array1.filter((item) => !array2.includes(item));\n}\n/** Return the set-union of two arrays while preserving first occurrence order. */\nfunction union(array1, array2) {\n\treturn Array.from(new Set([...array1, ...array2]));\n}\n/** Remove duplicate values while preserving first occurrence order. */\nfunction deduplicate(array) {\n\treturn [...new Set(array)];\n}\n/** Remove one item from an array and report whether it was found. */\nfunction remove(list, item) {\n\tconst index = list?.indexOf(item);\n\tif (index >= 0) {\n\t\tlist.splice(index, 1);\n\t\treturn true;\n\t} else return false;\n}\n/** Normalize nullish, scalar, or array input to an array. */\nfunction makeArray(source) {\n\treturn Array.isArray(source) ? source : isNullable(source) ? [] : [source];\n}\n//#endregion\n//#region lib/types/volatile.js\n/** Shared config references used by schema validators and plugin runtimes. */\nconst write = Symbol.for(\"cosmokit.volatile.write\");\nfunction snapshot(value, ancestors = /* @__PURE__ */ new Set()) {\n\tif (typeof value === \"function\") throw new TypeError(\"volatile config cannot contain functions\");\n\tif (value === null || typeof value !== \"object\") return value;\n\tif (ancestors.has(value)) throw new TypeError(\"volatile config cannot contain cycles\");\n\tancestors.add(value);\n\ttry {\n\t\tif (Array.isArray(value)) return Object.freeze(value.map((item) => snapshot(item, ancestors)));\n\t\tif (Object.getPrototypeOf(value) !== Object.prototype && Object.getPrototypeOf(value) !== null) throw new TypeError(\"volatile config objects must be plain objects or arrays\");\n\t\treturn Object.freeze(Object.fromEntries(Object.entries(value).map(([key, item]) => [key, snapshot(item, ancestors)])));\n\t} finally {\n\t\tancestors.delete(value);\n\t}\n}\n/**\n* Create a detached reference containing an immutable copy of the supplied data.\n* @param value - validated config data; class instances and functions are unsupported.\n* @returns a reference whose value is updated only by its owning runtime.\n*/\nfunction createVolatile(value) {\n\tlet current = snapshot(value);\n\treturn Object.freeze({\n\t\tget: () => current,\n\t\t[write]: (value) => {\n\t\t\tcurrent = value;\n\t\t}\n\t});\n}\n/**\n* Identify references across ESM/CJS copies of the shared library.\n* @param value - a parsed config value.\n* @returns whether the value implements the shared reference protocol.\n*/\nfunction isVolatile(value) {\n\treturn typeof value === \"object\" && value !== null && write in value;\n}\n/**\n* Collect config references without descending into their snapshots or opaque objects.\n* @internal\n* @param value - parsed config; cyclic ordinary fields are visited once per path.\n* @returns references and their object-key paths, including an empty path for a root reference.\n*/\nfunction volatileEntries(value) {\n\tconst ancestors = /* @__PURE__ */ new Set();\n\tfunction visit(value, path) {\n\t\tif (isVolatile(value)) return [{\n\t\t\tpath,\n\t\t\tref: value\n\t\t}];\n\t\tif (!value || typeof value !== \"object\" || ancestors.has(value)) return [];\n\t\tif (!Array.isArray(value) && Object.getPrototypeOf(value) !== Object.prototype && Object.getPrototypeOf(value) !== null) return [];\n\t\tancestors.add(value);\n\t\ttry {\n\t\t\treturn Object.entries(value).flatMap(([key, child]) => visit(child, [...path, key]));\n\t\t} finally {\n\t\t\tancestors.delete(value);\n\t\t}\n\t}\n\treturn visit(value, []);\n}\n/**\n* Commit an already validated immutable snapshot from another reference.\n* @internal\n* @param target - the owning plugin's stable reference.\n* @param source - a newly parsed candidate reference.\n*/\nfunction updateVolatile(target, source) {\n\ttarget[write](source.get());\n}\n//#endregion\n//#region lib/types/types.js\n/** Test values using `instanceof` with a `toStringTag` fallback. */\nfunction is(type, value) {\n\tif (arguments.length === 1) return (value) => is(type, value);\n\treturn type in globalThis && value instanceof globalThis[type] || Object.prototype.toString.call(value).slice(8, -1) === type;\n}\nfunction isArrayBufferLike(value) {\n\treturn is(\"ArrayBuffer\", value) || is(\"SharedArrayBuffer\", value);\n}\nfunction isArrayBufferSource(value) {\n\treturn isArrayBufferLike(value) || ArrayBuffer.isView(value);\n}\n/** Binary source detection and base64/hex conversion helpers. */\nvar Binary;\n(function(Binary) {\n\tBinary.is = isArrayBufferLike;\n\tBinary.isSource = isArrayBufferSource;\n\tfunction fromSource(source) {\n\t\tif (ArrayBuffer.isView(source)) return source.buffer.slice(source.byteOffset, source.byteOffset + source.byteLength);\n\t\telse return source;\n\t}\n\tBinary.fromSource = fromSource;\n\tfunction toBase64(source) {\n\t\tsource = fromSource(source);\n\t\tif (typeof Buffer !== \"undefined\") return Buffer.from(source).toString(\"base64\");\n\t\tlet binary = \"\";\n\t\tconst bytes = new Uint8Array(source);\n\t\tfor (let i = 0; i < bytes.byteLength; i++) binary += String.fromCharCode(bytes[i]);\n\t\treturn btoa(binary);\n\t}\n\tBinary.toBase64 = toBase64;\n\tfunction fromBase64(source) {\n\t\tif (typeof Buffer !== \"undefined\") return fromSource(Buffer.from(source, \"base64\"));\n\t\treturn Uint8Array.from(atob(source), (c) => c.charCodeAt(0));\n\t}\n\tBinary.fromBase64 = fromBase64;\n\tfunction toHex(source) {\n\t\tsource = fromSource(source);\n\t\tif (typeof Buffer !== \"undefined\") return Buffer.from(source).toString(\"hex\");\n\t\treturn Array.from(new Uint8Array(source), (byte) => byte.toString(16).padStart(2, \"0\")).join(\"\");\n\t}\n\tBinary.toHex = toHex;\n\tfunction fromHex(source) {\n\t\tif (typeof Buffer !== \"undefined\") return fromSource(Buffer.from(source, \"hex\"));\n\t\tconst hex = source.length % 2 === 0 ? source : source.slice(0, source.length - 1);\n\t\tconst buffer = [];\n\t\tfor (let i = 0; i < hex.length; i += 2) buffer.push(parseInt(`${hex[i]}${hex[i + 1]}`, 16));\n\t\treturn Uint8Array.from(buffer).buffer;\n\t}\n\tBinary.fromHex = fromHex;\n})(Binary || (Binary = {}));\n/** Decode a base64 string into binary data. */\nconst base64ToArrayBuffer = Binary.fromBase64;\n/** Encode binary data as base64. */\nconst arrayBufferToBase64 = Binary.toBase64;\n/** Decode a hex string into binary data. */\nconst hexToArrayBuffer = Binary.fromHex;\n/** Encode binary data as hex. */\nconst arrayBufferToHex = Binary.toHex;\n/** Deep-clone common JavaScript values while preserving prototypes and cycles. */\nfunction clone(source, refs = /* @__PURE__ */ new Map()) {\n\tif (!source || typeof source !== \"object\") return source;\n\tif (is(\"Date\", source)) return new Date(source.valueOf());\n\tif (is(\"RegExp\", source)) return new RegExp(source.source, source.flags);\n\tif (isArrayBufferLike(source)) return source.slice(0);\n\tif (ArrayBuffer.isView(source)) return source.buffer.slice(source.byteOffset, source.byteOffset + source.byteLength);\n\tconst cached = refs.get(source);\n\tif (cached) return cached;\n\tif (Array.isArray(source)) {\n\t\tconst result = [];\n\t\trefs.set(source, result);\n\t\tsource.forEach((value, index) => {\n\t\t\tresult[index] = Reflect.apply(clone, null, [value, refs]);\n\t\t});\n\t\treturn result;\n\t}\n\tconst result = Object.create(Object.getPrototypeOf(source));\n\trefs.set(source, result);\n\tfor (const key of Reflect.ownKeys(source)) {\n\t\tconst descriptor = { ...Reflect.getOwnPropertyDescriptor(source, key) };\n\t\tif (\"value\" in descriptor) descriptor.value = Reflect.apply(clone, null, [descriptor.value, refs]);\n\t\tReflect.defineProperty(result, key, descriptor);\n\t}\n\treturn result;\n}\n/**\n* Compare values recursively, treating two volatile references as equal regardless of value.\n* Strict comparison distinguishes null/undefined, treats opaque objects by identity,\n* compares URLs by normalized href, treats array holes as undefined, and considers distinct cyclic structures unequal.\n* @param a - first value.\n* @param b - second value.\n* @param strict - whether to require strict data equality outside volatile references.\n* @returns whether the values compare equal.\n*/\nfunction deepEqual(a, b, strict) {\n\tconst ancestors = /* @__PURE__ */ new Set();\n\tfunction compare(a, b) {\n\t\tif (a === b) return true;\n\t\tif (isVolatile(a) || isVolatile(b)) return isVolatile(a) && isVolatile(b);\n\t\tif (!strict && isNullable(a) && isNullable(b)) return true;\n\t\tif (typeof a !== typeof b || typeof a !== \"object\" || !a || !b) return false;\n\t\tif (ancestors.has(a)) return false;\n\t\tfunction check(test, then) {\n\t\t\treturn test(a) ? test(b) ? then(a, b) : false : test(b) ? false : void 0;\n\t\t}\n\t\tancestors.add(a);\n\t\ttry {\n\t\t\treturn check(Array.isArray, (a, b) => {\n\t\t\t\tif (a.length !== b.length) return false;\n\t\t\t\tfor (let index = 0; index < a.length; index++) if (!compare(a[index], b[index])) return false;\n\t\t\t\treturn true;\n\t\t\t}) ?? check(is(\"Date\"), (a, b) => a.valueOf() === b.valueOf()) ?? check(is(\"URL\"), (a, b) => a.href === b.href) ?? check(is(\"RegExp\"), (a, b) => a.source === b.source && a.flags === b.flags) ?? check(isArrayBufferLike, (a, b) => {\n\t\t\t\tif (a.byteLength !== b.byteLength) return false;\n\t\t\t\tconst viewA = new Uint8Array(a);\n\t\t\t\tconst viewB = new Uint8Array(b);\n\t\t\t\tfor (let i = 0; i < viewA.length; i++) if (viewA[i] !== viewB[i]) return false;\n\t\t\t\treturn true;\n\t\t\t}) ?? ((!strict || [a, b].every((value) => Object.getPrototypeOf(value) === Object.prototype || Object.getPrototypeOf(value) === null)) && Object.keys({\n\t\t\t\t...a,\n\t\t\t\t...b\n\t\t\t}).every((key) => compare(a[key], b[key])));\n\t\t} finally {\n\t\t\tancestors.delete(a);\n\t\t}\n\t}\n\treturn compare(a, b);\n}\n//#endregion\n//#region lib/types/string.js\n/** Uppercase the first character of a string. */\nfunction capitalize(source) {\n\treturn source.charAt(0).toUpperCase() + source.slice(1);\n}\n/** Lowercase the first character of a string. */\nfunction uncapitalize(source) {\n\treturn source.charAt(0).toLowerCase() + source.slice(1);\n}\n/** Convert dash or underscore delimited text to camelCase. */\nfunction camelCase(source) {\n\treturn source.replace(/[_-][a-z]/g, (str) => str.slice(1).toUpperCase());\n}\nfunction tokenize(source, delimiters, delimiter) {\n\tconst output = [];\n\tlet state = 0;\n\tfor (let i = 0; i < source.length; i++) {\n\t\tconst code = source.charCodeAt(i);\n\t\tif (code >= 65 && code <= 90) {\n\t\t\tif (state === 1) {\n\t\t\t\tconst next = source.charCodeAt(i + 1);\n\t\t\t\tif (next >= 97 && next <= 122) output.push(delimiter);\n\t\t\t\toutput.push(code + 32);\n\t\t\t} else {\n\t\t\t\tif (state !== 0) output.push(delimiter);\n\t\t\t\toutput.push(code + 32);\n\t\t\t}\n\t\t\tstate = 1;\n\t\t} else if (code >= 97 && code <= 122) {\n\t\t\toutput.push(code);\n\t\t\tstate = 2;\n\t\t} else if (delimiters.includes(code)) {\n\t\t\tif (state !== 0) output.push(delimiter);\n\t\t\tstate = 0;\n\t\t} else output.push(code);\n\t}\n\treturn String.fromCharCode(...output);\n}\n/** Convert text to dash-delimited parameter case. */\nfunction paramCase(source) {\n\treturn tokenize(source, [45, 95], 45);\n}\n/** Convert text to underscore-delimited snake case. */\nfunction snakeCase(source) {\n\treturn tokenize(source, [45, 95], 95);\n}\n/** Runtime alias for `camelCase`. */\nconst camelize = camelCase;\n/** Runtime alias for `paramCase`. */\nconst hyphenate = paramCase;\n/** Format a property key as a JavaScript member access suffix. */\nfunction formatProperty(key) {\n\tif (typeof key !== \"string\") return `[${key.toString()}]`;\n\treturn /^[a-z_$][\\w$]*$/i.test(key) ? `.${key}` : `[${JSON.stringify(key)}]`;\n}\n/** Remove one trailing slash from a path string. */\nfunction trimSlash(source) {\n\treturn source.replace(/\\/$/, \"\");\n}\n/** Ensure a path starts with `/` and has no trailing slash. */\nfunction sanitize(source) {\n\tif (!source.startsWith(\"/\")) source = \"/\" + source;\n\treturn trimSlash(source);\n}\n//#endregion\n//#region lib/types/time.js\n/** Time constants plus parsing and formatting helpers. */\nvar Time;\n(function(Time) {\n\tTime.millisecond = 1;\n\tTime.second = 1e3;\n\tTime.minute = Time.second * 60;\n\tTime.hour = Time.minute * 60;\n\tTime.day = Time.hour * 24;\n\tTime.week = Time.day * 7;\n\tlet timezoneOffset = (/* @__PURE__ */ new Date()).getTimezoneOffset();\n\tfunction setTimezoneOffset(offset) {\n\t\ttimezoneOffset = offset;\n\t}\n\tTime.setTimezoneOffset = setTimezoneOffset;\n\tfunction getTimezoneOffset() {\n\t\treturn timezoneOffset;\n\t}\n\tTime.getTimezoneOffset = getTimezoneOffset;\n\tfunction getDateNumber(date = /* @__PURE__ */ new Date(), offset) {\n\t\tif (typeof date === \"number\") date = new Date(date);\n\t\tif (offset === void 0) offset = timezoneOffset;\n\t\treturn Math.floor((date.valueOf() / Time.minute - offset) / 1440);\n\t}\n\tTime.getDateNumber = getDateNumber;\n\tfunction fromDateNumber(value, offset) {\n\t\tconst date = new Date(value * Time.day);\n\t\tif (offset === void 0) offset = timezoneOffset;\n\t\treturn new Date(+date + offset * Time.minute);\n\t}\n\tTime.fromDateNumber = fromDateNumber;\n\tconst numeric = /\\d+(?:\\.\\d+)?/.source;\n\tconst timeRegExp = new RegExp(`^${[\n\t\t\"w(?:eek(?:s)?)?\",\n\t\t\"d(?:ay(?:s)?)?\",\n\t\t\"h(?:our(?:s)?)?\",\n\t\t\"m(?:in(?:ute)?(?:s)?)?\",\n\t\t\"s(?:ec(?:ond)?(?:s)?)?\"\n\t].map((unit) => `(${numeric}${unit})?`).join(\"\")}$`);\n\tfunction parseTime(source) {\n\t\tconst capture = timeRegExp.exec(source);\n\t\tif (!capture) return 0;\n\t\treturn (parseFloat(capture[1]) * Time.week || 0) + (parseFloat(capture[2]) * Time.day || 0) + (parseFloat(capture[3]) * Time.hour || 0) + (parseFloat(capture[4]) * Time.minute || 0) + (parseFloat(capture[5]) * Time.second || 0);\n\t}\n\tTime.parseTime = parseTime;\n\tfunction parseDate(date) {\n\t\tconst parsed = parseTime(date);\n\t\tif (parsed) date = Date.now() + parsed;\n\t\telse if (/^\\d{1,2}(:\\d{1,2}){1,2}$/.test(date)) date = `${(/* @__PURE__ */ new Date()).toLocaleDateString()}-${date}`;\n\t\telse if (/^\\d{1,2}-\\d{1,2}-\\d{1,2}(:\\d{1,2}){1,2}$/.test(date)) date = `${(/* @__PURE__ */ new Date()).getFullYear()}-${date}`;\n\t\treturn date ? new Date(date) : /* @__PURE__ */ new Date();\n\t}\n\tTime.parseDate = parseDate;\n\tfunction format(ms) {\n\t\tconst abs = Math.abs(ms);\n\t\tif (abs >= Time.day - Time.hour / 2) return Math.round(ms / Time.day) + \"d\";\n\t\telse if (abs >= Time.hour - Time.minute / 2) return Math.round(ms / Time.hour) + \"h\";\n\t\telse if (abs >= Time.minute - Time.second / 2) return Math.round(ms / Time.minute) + \"m\";\n\t\telse if (abs >= Time.second) return Math.round(ms / Time.second) + \"s\";\n\t\treturn ms + \"ms\";\n\t}\n\tTime.format = format;\n\tfunction toDigits(source, length = 2) {\n\t\treturn source.toString().padStart(length, \"0\");\n\t}\n\tTime.toDigits = toDigits;\n\tfunction template(template, time = /* @__PURE__ */ new Date()) {\n\t\treturn template.replace(\"yyyy\", time.getFullYear().toString()).replace(\"yy\", time.getFullYear().toString().slice(2)).replace(\"MM\", toDigits(time.getMonth() + 1)).replace(\"dd\", toDigits(time.getDate())).replace(\"hh\", toDigits(time.getHours())).replace(\"mm\", toDigits(time.getMinutes())).replace(\"ss\", toDigits(time.getSeconds())).replace(\"SSS\", toDigits(time.getMilliseconds(), 3));\n\t}\n\tTime.template = template;\n})(Time || (Time = {}));\n//#endregion\nexport { Binary, Time, arrayBufferToBase64, arrayBufferToHex, base64ToArrayBuffer, camelCase, camelize, capitalize, clone, contain, createVolatile, deduplicate, deepEqual, defineProperty, difference, filterKeys, formatProperty, hexToArrayBuffer, hyphenate, intersection, is, isNonNullable, isNullable, isPlainObject, isVolatile, makeArray, mapValues, mapValues as valueMap, noop, omit, paramCase, pick, remove, sanitize, snakeCase, trimSlash, uncapitalize, union, updateVolatile, volatileEntries };\n", "import { Binary, clone, createVolatile, deepEqual, filterKeys, isNullable, isPlainObject, isVolatile, pick, valueMap } from \"@deepseek-ai/cosmokit\";\n//#region lib/types/index.js\nconst kSchema = Symbol.for(\"schemastery\");\nconst kValidationError = Symbol.for(\"ValidationError\");\nglobalThis.__schemastery_index__ ??= 0;\nglobalThis.__schemastery_refs__ = void 0;\nvar ValidationError = class extends TypeError {\n\toptions;\n\tname = \"ValidationError\";\n\tconstructor(message, options) {\n\t\tlet prefix = \"$\";\n\t\tfor (const segment of options.path || []) if (typeof segment === \"string\") prefix += \".\" + segment;\n\t\telse if (typeof segment === \"number\") prefix += \"[\" + segment + \"]\";\n\t\telse if (typeof segment === \"symbol\") prefix += `[Symbol(${segment.toString()})]`;\n\t\tif (prefix.startsWith(\".\")) prefix = prefix.slice(1);\n\t\tsuper((prefix === \"$\" ? \"\" : `${prefix} `) + message);\n\t\tthis.options = options;\n\t}\n\tstatic is(error) {\n\t\treturn !!error?.[kValidationError];\n\t}\n};\nObject.defineProperty(ValidationError.prototype, kValidationError, { value: true });\nconst Schema = function(options) {\n\tconst schema = function(data, options = {}) {\n\t\treturn Schema.resolve(data, schema, options)[0];\n\t};\n\tif (options.refs) {\n\t\tconst refs = valueMap(options.refs, (options) => new Schema(options));\n\t\tconst getRef = (uid) => refs[uid];\n\t\tfor (const key in refs) {\n\t\t\tconst options = refs[key];\n\t\t\toptions.sKey = getRef(options.sKey);\n\t\t\toptions.inner = getRef(options.inner);\n\t\t\toptions.list = options.list && options.list.map(getRef);\n\t\t\toptions.dict = options.dict && valueMap(options.dict, getRef);\n\t\t}\n\t\treturn refs[options.uid];\n\t}\n\tObject.assign(schema, options);\n\tif (typeof schema.callback === \"string\") try {\n\t\tschema.callback = new Function(\"return \" + schema.callback)();\n\t} catch {}\n\tObject.defineProperty(schema, \"uid\", { value: globalThis.__schemastery_index__++ });\n\tObject.setPrototypeOf(schema, Schema.prototype);\n\tschema.meta ||= {};\n\tschema.toString = schema.toString.bind(schema);\n\treturn schema;\n};\nSchema.prototype = Object.create(Function.prototype);\nSchema.prototype[kSchema] = true;\nObject.defineProperty(Schema.prototype, \"~standard\", { get() {\n\treturn {\n\t\tversion: 1,\n\t\tvendor: \"schemastery\",\n\t\tvalidate: (value) => {\n\t\t\ttry {\n\t\t\t\treturn { value: Schema.resolve(value, this, {})[0] };\n\t\t\t} catch (error) {\n\t\t\t\tif (ValidationError.is(error)) return { issues: [{\n\t\t\t\t\tmessage: error.message,\n\t\t\t\t\tpath: error.options.path\n\t\t\t\t}] };\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\t};\n} });\nSchema.ValidationError = ValidationError;\nSchema.prototype.toJSON = function toJSON() {\n\tif (globalThis.__schemastery_refs__) {\n\t\tglobalThis.__schemastery_refs__[this.uid] ??= JSON.parse(JSON.stringify({ ...this }));\n\t\treturn this.uid;\n\t}\n\tglobalThis.__schemastery_refs__ = { [this.uid]: { ...this } };\n\tglobalThis.__schemastery_refs__[this.uid] = JSON.parse(JSON.stringify({ ...this }));\n\tconst result = {\n\t\tuid: this.uid,\n\t\trefs: globalThis.__schemastery_refs__\n\t};\n\tglobalThis.__schemastery_refs__ = void 0;\n\treturn result;\n};\nSchema.prototype.set = function set(key, value) {\n\tthis.dict[key] = value;\n\treturn this;\n};\nSchema.prototype.push = function push(value) {\n\tthis.list.push(value);\n\treturn this;\n};\nfunction mergeDesc(original, messages) {\n\tconst result = typeof original === \"string\" ? { \"\": original } : { ...original };\n\tfor (const locale in messages) {\n\t\tconst value = messages[locale];\n\t\tif (value?.$description || value?.$desc) result[locale] = value.$description || value.$desc;\n\t\telse if (typeof value === \"string\") result[locale] = value;\n\t}\n\treturn result;\n}\nfunction getInner(value) {\n\treturn value?.$value ?? value?.$inner;\n}\nfunction extractKeys(data) {\n\treturn filterKeys(data ?? {}, (key) => !key.startsWith(\"$\"));\n}\nSchema.prototype.i18n = function i18n(messages) {\n\tconst schema = Schema(this);\n\tconst desc = mergeDesc(schema.meta.description, messages);\n\tif (Object.keys(desc).length) schema.meta.description = desc;\n\tif (schema.dict) schema.dict = valueMap(schema.dict, (inner, key) => {\n\t\treturn inner.i18n(valueMap(messages, (data) => getInner(data)?.[key] ?? data?.[key]));\n\t});\n\tif (schema.list) schema.list = schema.list.map((inner, index) => {\n\t\treturn inner.i18n(valueMap(messages, (data = {}) => {\n\t\t\tif (Array.isArray(getInner(data))) return getInner(data)[index];\n\t\t\tif (Array.isArray(data)) return data[index];\n\t\t\treturn extractKeys(data);\n\t\t}));\n\t});\n\tif (schema.inner) schema.inner = schema.inner.i18n(valueMap(messages, (data) => {\n\t\tif (getInner(data)) return getInner(data);\n\t\treturn extractKeys(data);\n\t}));\n\tif (schema.sKey) schema.sKey = schema.sKey.i18n(valueMap(messages, (data) => data?.$key));\n\treturn schema;\n};\nSchema.prototype.extra = function extra(key, value) {\n\tconst schema = Schema(this);\n\tschema.meta = {\n\t\t...schema.meta,\n\t\t[key]: value\n\t};\n\treturn schema;\n};\nfor (const key of [\n\t\"required\",\n\t\"disabled\",\n\t\"collapse\",\n\t\"hidden\",\n\t\"loose\"\n]) Object.assign(Schema.prototype, { [key](value = true) {\n\tconst schema = Schema(this);\n\tschema.meta = {\n\t\t...schema.meta,\n\t\t[key]: value\n\t};\n\treturn schema;\n} });\nSchema.prototype.deprecated = function deprecated() {\n\tconst schema = Schema(this);\n\tschema.meta.badges ||= [];\n\tschema.meta.badges.push({\n\t\ttext: \"deprecated\",\n\t\ttype: \"danger\"\n\t});\n\treturn schema;\n};\nSchema.prototype.experimental = function experimental() {\n\tconst schema = Schema(this);\n\tschema.meta.badges ||= [];\n\tschema.meta.badges.push({\n\t\ttext: \"experimental\",\n\t\ttype: \"warning\"\n\t});\n\treturn schema;\n};\nSchema.prototype.pattern = function pattern(regexp) {\n\tconst schema = Schema(this);\n\tconst pattern = pick(regexp, [\"source\", \"flags\"]);\n\tschema.meta = {\n\t\t...schema.meta,\n\t\tpattern\n\t};\n\treturn schema;\n};\nSchema.prototype.simplify = function simplify(value) {\n\tif (isVolatile(value)) value = value.get();\n\tif (deepEqual(value, this.meta.default, this.type === \"dict\")) return null;\n\tif (isNullable(value)) return value;\n\tif (this.type === \"object\" || this.type === \"dict\") {\n\t\tconst result = {};\n\t\tfor (const key in value) {\n\t\t\tconst item = (this.type === \"object\" ? this.dict[key] : this.inner)?.simplify(value[key]);\n\t\t\tif (this.type === \"dict\" || !isNullable(item)) result[key] = item;\n\t\t}\n\t\tif (deepEqual(result, this.meta.default, this.type === \"dict\")) return null;\n\t\treturn result;\n\t} else if (this.type === \"array\" || this.type === \"tuple\") {\n\t\tconst result = [];\n\t\tvalue.forEach((value, index) => {\n\t\t\tconst schema = this.type === \"array\" ? this.inner : this.list[index];\n\t\t\tconst item = schema ? schema.simplify(value) : value;\n\t\t\tresult.push(item);\n\t\t});\n\t\treturn result;\n\t} else if (this.type === \"intersect\") {\n\t\tconst result = {};\n\t\tfor (const item of this.list) Object.assign(result, item.simplify(value));\n\t\treturn result;\n\t} else if (this.type === \"union\") for (const schema of this.list) try {\n\t\tSchema.resolve(value, schema, {});\n\t\treturn schema.simplify(value);\n\t} catch {}\n\treturn value;\n};\nSchema.prototype.toString = function toString(inline) {\n\treturn formatters[this.type]?.(this, inline) ?? `Schema<${this.type}>`;\n};\nSchema.prototype.role = function role(role, extra) {\n\tconst schema = Schema(this);\n\tschema.meta = {\n\t\t...schema.meta,\n\t\trole,\n\t\textra\n\t};\n\treturn schema;\n};\nfor (const key of [\n\t\"default\",\n\t\"link\",\n\t\"comment\",\n\t\"description\",\n\t\"max\",\n\t\"min\",\n\t\"step\"\n]) Object.assign(Schema.prototype, { [key](value) {\n\tconst schema = Schema(this);\n\tschema.meta = {\n\t\t...schema.meta,\n\t\t[key]: value\n\t};\n\treturn schema;\n} });\nSchema.prototype.volatile = function volatile() {\n\tif (this.meta.volatile) throw new TypeError(\"volatile schema is already wrapped\");\n\treturn this.extra(\"volatile\", true);\n};\nconst resolvers = {};\nconst checkedVolatile = Symbol(\"checked-volatile-schema\");\nfunction validateVolatileSchema(schema, path = [], blocked = false, seen = /* @__PURE__ */ new Map()) {\n\tconst states = seen.get(schema) ?? /* @__PURE__ */ new Set();\n\tif (states.has(blocked)) return;\n\tstates.add(blocked);\n\tseen.set(schema, states);\n\tif (schema.meta?.volatile && blocked) throw new ValidationError(\"volatile fields require a fixed object path without an enclosing volatile field\", { path });\n\tconst nested = blocked || !!schema.meta?.volatile;\n\tif (schema.dict) for (const [key, child] of Object.entries(schema.dict)) validateVolatileSchema(child, [...path, key], nested, seen);\n\tif (schema.sKey) validateVolatileSchema(schema.sKey, [...path, \"<key>\"], true, seen);\n\tif (schema.inner && (schema.type !== \"lazy\" || schema.inner[kSchema])) validateVolatileSchema(schema.inner, [...path, \"*\"], true, seen);\n\tif (schema.list) for (let index = 0; index < schema.list.length; index++) validateVolatileSchema(schema.list[index], [...path, String(index)], true, seen);\n}\nSchema.extend = function extend(type, resolve) {\n\tresolvers[type] = resolve;\n};\nSchema.resolve = function resolve(data, schema, options = {}, strict = false) {\n\tif (!schema) return [data];\n\tif (!options[checkedVolatile]) {\n\t\tvalidateVolatileSchema(schema, options.path);\n\t\toptions = {\n\t\t\t...options,\n\t\t\t[checkedVolatile]: true\n\t\t};\n\t}\n\tif (schema.meta?.volatile) {\n\t\tconst inner = Schema(schema);\n\t\tinner.meta = {\n\t\t\t...schema.meta,\n\t\t\tvolatile: false\n\t\t};\n\t\tconst [value, adapted] = Schema.resolve(data, inner, options, strict);\n\t\ttry {\n\t\t\treturn [createVolatile(value), adapted];\n\t\t} catch (error) {\n\t\t\tthrow new ValidationError(error instanceof Error ? error.message : String(error), options);\n\t\t}\n\t}\n\tif (options.ignore?.(data, schema)) return [data];\n\tif (isNullable(data) && schema.type !== \"lazy\") {\n\t\tif (schema.meta.required) throw new ValidationError(`missing required value`, options);\n\t\tlet current = schema;\n\t\tlet fallback = schema.meta.default;\n\t\twhile (current?.type === \"intersect\" && isNullable(fallback)) {\n\t\t\tcurrent = current.list[0];\n\t\t\tfallback = current?.meta.default;\n\t\t}\n\t\tif (isNullable(fallback)) return [data];\n\t\tdata = clone(fallback);\n\t}\n\tconst callback = resolvers[schema.type];\n\tif (!callback) throw new ValidationError(`unsupported type \"${schema.type}\"`, options);\n\ttry {\n\t\treturn callback(data, schema, options, strict);\n\t} catch (error) {\n\t\tif (!schema.meta.loose) throw error;\n\t\treturn [schema.meta.default];\n\t}\n};\nSchema.from = function from(source) {\n\tif (isNullable(source)) return Schema.any();\n\telse if ([\n\t\t\"string\",\n\t\t\"number\",\n\t\t\"boolean\"\n\t].includes(typeof source)) return Schema.const(source).required();\n\telse if (source[kSchema]) return source;\n\telse if (typeof source === \"function\") switch (source) {\n\t\tcase String: return Schema.string().required();\n\t\tcase Number: return Schema.number().required();\n\t\tcase Boolean: return Schema.boolean().required();\n\t\tcase Function: return Schema.function().required();\n\t\tdefault: return Schema.is(source).required();\n\t}\n\telse throw new TypeError(`cannot infer schema from ${source}`);\n};\nSchema.lazy = function lazy(builder) {\n\tconst toJSON = () => {\n\t\tif (!schema.inner[kSchema]) {\n\t\t\tschema.inner = schema.builder();\n\t\t\tschema.inner.meta = {\n\t\t\t\t...schema.meta,\n\t\t\t\t...schema.inner.meta\n\t\t\t};\n\t\t}\n\t\treturn schema.inner.toJSON();\n\t};\n\tconst schema = new Schema({\n\t\ttype: \"lazy\",\n\t\tbuilder,\n\t\tinner: { toJSON }\n\t});\n\treturn schema;\n};\nSchema.natural = function natural() {\n\treturn Schema.number().step(1).min(0);\n};\nSchema.percent = function percent() {\n\treturn Schema.number().step(.01).min(0).max(1).role(\"slider\");\n};\nSchema.date = function date() {\n\treturn Schema.union([Schema.is(Date), Schema.transform(Schema.string().role(\"datetime\"), (value, options) => {\n\t\tconst date = new Date(value);\n\t\tif (isNaN(+date)) throw new ValidationError(`invalid date \"${value}\"`, options);\n\t\treturn date;\n\t}, true)]);\n};\nSchema.regExp = function regExp(flag = \"\") {\n\treturn Schema.union([Schema.is(RegExp), Schema.transform(Schema.string().role(\"regexp\", { flag }), (value, options) => {\n\t\ttry {\n\t\t\treturn new RegExp(value, flag);\n\t\t} catch (e) {\n\t\t\tthrow new ValidationError(e.message, options);\n\t\t}\n\t}, true)]);\n};\nSchema.arrayBuffer = function arrayBuffer(encoding) {\n\treturn Schema.union([\n\t\tSchema.is(ArrayBuffer),\n\t\tSchema.is(SharedArrayBuffer),\n\t\tSchema.transform(Schema.any(), (value, options) => {\n\t\t\tif (Binary.isSource(value)) return Binary.fromSource(value);\n\t\t\tthrow new ValidationError(`expected ArrayBufferSource but got ${value}`, options);\n\t\t}, true),\n\t\t...encoding ? [Schema.transform(Schema.string(), (value, options) => {\n\t\t\ttry {\n\t\t\t\treturn encoding === \"base64\" ? Binary.fromBase64(value) : Binary.fromHex(value);\n\t\t\t} catch (e) {\n\t\t\t\tthrow new ValidationError(e.message, options);\n\t\t\t}\n\t\t}, true)] : []\n\t]);\n};\nSchema.extend(\"lazy\", (data, schema, options, strict) => {\n\tif (!schema.inner[kSchema]) {\n\t\tschema.inner = schema.builder();\n\t\tschema.inner.meta = {\n\t\t\t...schema.meta,\n\t\t\t...schema.inner.meta\n\t\t};\n\t\tvalidateVolatileSchema(schema.inner, options.path, true);\n\t}\n\treturn Schema.resolve(data, schema.inner, options, strict);\n});\nSchema.extend(\"any\", (data) => {\n\treturn [data];\n});\nSchema.extend(\"never\", (data, _, options) => {\n\tthrow new ValidationError(`expected nullable but got ${data}`, options);\n});\nSchema.extend(\"const\", (data, { value }, options) => {\n\tif (deepEqual(data, value)) return [value];\n\tthrow new ValidationError(`expected ${value} but got ${data}`, options);\n});\nfunction checkWithinRange(data, meta, description, options, skipMin = false) {\n\tconst { max = Infinity, min = -Infinity } = meta;\n\tif (data > max) throw new ValidationError(`expected ${description} <= ${max} but got ${data}`, options);\n\tif (data < min && !skipMin) throw new ValidationError(`expected ${description} >= ${min} but got ${data}`, options);\n}\nSchema.extend(\"string\", (data, { meta }, options) => {\n\tif (typeof data !== \"string\") throw new ValidationError(`expected string but got ${data}`, options);\n\tif (meta.pattern) {\n\t\tconst regexp = new RegExp(meta.pattern.source, meta.pattern.flags);\n\t\tif (!regexp.test(data)) throw new ValidationError(`expect string to match regexp ${regexp}`, options);\n\t}\n\tcheckWithinRange(data.length, meta, \"string length\", options);\n\treturn [data];\n});\nfunction decimalShift(data, digits) {\n\tconst str = data.toString();\n\tif (str.includes(\"e\")) return data * Math.pow(10, digits);\n\tconst index = str.indexOf(\".\");\n\tif (index === -1) return data * Math.pow(10, digits);\n\tconst frac = str.slice(index + 1);\n\tconst integer = str.slice(0, index);\n\tif (frac.length <= digits) return +(integer + frac.padEnd(digits, \"0\"));\n\treturn +(integer + frac.slice(0, digits) + \".\" + frac.slice(digits));\n}\nfunction isMultipleOf(data, min, step) {\n\tstep = Math.abs(step);\n\tif (!/^\\d+\\.\\d+$/.test(step.toString())) return (data - min) % step === 0;\n\tconst index = step.toString().indexOf(\".\");\n\tconst digits = step.toString().slice(index + 1).length;\n\treturn Math.abs(decimalShift(data, digits) - decimalShift(min, digits)) % decimalShift(step, digits) === 0;\n}\nSchema.extend(\"number\", (data, { meta }, options) => {\n\tif (typeof data !== \"number\") throw new ValidationError(`expected number but got ${data}`, options);\n\tcheckWithinRange(data, meta, \"number\", options);\n\tconst { step } = meta;\n\tif (step && !isMultipleOf(data, meta.min ?? 0, step)) throw new ValidationError(`expected number multiple of ${step} but got ${data}`, options);\n\treturn [data];\n});\nSchema.extend(\"boolean\", (data, _, options) => {\n\tif (typeof data === \"boolean\") return [data];\n\tthrow new ValidationError(`expected boolean but got ${data}`, options);\n});\nSchema.extend(\"bitset\", (data, { bits, meta }, options) => {\n\tlet value = 0, keys = [];\n\tif (typeof data === \"number\") {\n\t\tvalue = data;\n\t\tfor (const key in bits) if (data & bits[key]) keys.push(key);\n\t} else if (Array.isArray(data)) {\n\t\tkeys = data;\n\t\tfor (const key of keys) {\n\t\t\tif (typeof key !== \"string\") throw new ValidationError(`expected string but got ${key}`, options);\n\t\t\tif (key in bits) value |= bits[key];\n\t\t}\n\t} else throw new ValidationError(`expected number or array but got ${data}`, options);\n\tif (value === meta.default) return [value];\n\treturn [value, keys];\n});\nSchema.extend(\"function\", (data, _, options) => {\n\tif (typeof data === \"function\") return [data];\n\tthrow new ValidationError(`expected function but got ${data}`, options);\n});\nSchema.extend(\"is\", (data, { constructor }, options) => {\n\tif (typeof constructor === \"function\") {\n\t\tif (data instanceof constructor) return [data];\n\t\tthrow new ValidationError(`expected ${constructor.name} but got ${data}`, options);\n\t} else {\n\t\tif (isNullable(data)) throw new ValidationError(`expected ${constructor} but got ${data}`, options);\n\t\tlet prototype = Object.getPrototypeOf(data);\n\t\twhile (prototype) {\n\t\t\tif (prototype.constructor?.name === constructor) return [data];\n\t\t\tprototype = Object.getPrototypeOf(prototype);\n\t\t}\n\t\tthrow new ValidationError(`expected ${constructor} but got ${data}`, options);\n\t}\n});\nfunction property(data, key, schema, options) {\n\ttry {\n\t\tconst [value, adapted] = Schema.resolve(data[key], schema, {\n\t\t\t...options,\n\t\t\tpath: [...options.path || [], key]\n\t\t});\n\t\tif (adapted !== void 0) data[key] = adapted;\n\t\treturn value;\n\t} catch (e) {\n\t\tif (!options?.autofix) throw e;\n\t\tdelete data[key];\n\t\treturn schema.meta.volatile ? createVolatile(schema.meta.default) : schema.meta.default;\n\t}\n}\nSchema.extend(\"array\", (data, { inner, meta }, options) => {\n\tif (!Array.isArray(data)) throw new ValidationError(`expected array but got ${data}`, options);\n\tcheckWithinRange(data.length, meta, \"array length\", options, !isNullable(inner.meta.default));\n\treturn [data.map((_, index) => property(data, index, inner, options))];\n});\nSchema.extend(\"dict\", (data, { inner, sKey }, options, strict) => {\n\tif (!isPlainObject(data)) throw new ValidationError(`expected object but got ${data}`, options);\n\tconst result = {};\n\tfor (const key in data) {\n\t\tlet rKey;\n\t\ttry {\n\t\t\trKey = Schema.resolve(key, sKey, options)[0];\n\t\t} catch (error) {\n\t\t\tif (strict) continue;\n\t\t\tthrow error;\n\t\t}\n\t\tresult[rKey] = property(data, key, inner, options);\n\t\tdata[rKey] = data[key];\n\t\tif (key !== rKey) delete data[key];\n\t}\n\treturn [result];\n});\nSchema.extend(\"tuple\", (data, { list }, options, strict) => {\n\tif (!Array.isArray(data)) throw new ValidationError(`expected array but got ${data}`, options);\n\tconst result = list.map((inner, index) => property(data, index, inner, options));\n\tif (strict) return [result];\n\tresult.push(...data.slice(list.length));\n\treturn [result];\n});\nfunction merge(result, data) {\n\tfor (const key in data) {\n\t\tif (key in result) continue;\n\t\tresult[key] = data[key];\n\t}\n}\nSchema.extend(\"object\", (data, { dict }, options, strict) => {\n\tif (!isPlainObject(data)) throw new ValidationError(`expected object but got ${data}`, options);\n\tconst result = {};\n\tfor (const key in dict) {\n\t\tconst value = property(data, key, dict[key], options);\n\t\tif (!isNullable(value) || key in data) result[key] = value;\n\t}\n\tif (!strict) merge(result, data);\n\treturn [result];\n});\nSchema.extend(\"union\", (data, { list, toString }, options, strict) => {\n\tconst messages = [];\n\tfor (const inner of list) try {\n\t\treturn Schema.resolve(data, inner, options, strict);\n\t} catch (error) {\n\t\tmessages.push(error);\n\t}\n\tthrow new ValidationError(`expected ${toString()} but got ${JSON.stringify(data)}`, options);\n});\nSchema.extend(\"intersect\", (data, { list, toString }, options, strict) => {\n\tif (!list.length) return [data];\n\tlet result;\n\tfor (const inner of list) {\n\t\tconst value = Schema.resolve(data, inner, options, true)[0];\n\t\tif (isNullable(value)) continue;\n\t\tif (isNullable(result)) result = value;\n\t\telse if (typeof result !== typeof value) throw new ValidationError(`expected ${toString()} but got ${JSON.stringify(data)}`, options);\n\t\telse if (typeof value === \"object\") merge(result ??= {}, value);\n\t\telse if (result !== value) throw new ValidationError(`expected ${toString()} but got ${JSON.stringify(data)}`, options);\n\t}\n\tif (!strict && isPlainObject(data)) merge(result, data);\n\treturn [result];\n});\nSchema.extend(\"transform\", (data, { inner, callback, preserve }, options) => {\n\tconst [result, adapted = data] = Schema.resolve(data, inner, options, true);\n\tif (preserve) return [callback(result)];\n\telse return [callback(result), callback(adapted)];\n});\nconst formatters = {};\nfunction defineMethod(name, keys, format) {\n\tformatters[name] = format;\n\tObject.assign(Schema, { [name](...args) {\n\t\tconst schema = new Schema({ type: name });\n\t\tkeys.forEach((key, index) => {\n\t\t\tswitch (key) {\n\t\t\t\tcase \"sKey\":\n\t\t\t\t\tschema.sKey = args[index] ?? Schema.string();\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"inner\":\n\t\t\t\t\tschema.inner = Schema.from(args[index]);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"list\":\n\t\t\t\t\tschema.list = args[index].map(Schema.from);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"dict\":\n\t\t\t\t\tschema.dict = valueMap(args[index], Schema.from);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"bits\":\n\t\t\t\t\tschema.bits = {};\n\t\t\t\t\tfor (const key in args[index]) {\n\t\t\t\t\t\tif (typeof args[index][key] !== \"number\") continue;\n\t\t\t\t\t\tschema.bits[key] = args[index][key];\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"callback\": {\n\t\t\t\t\tconst callback = schema.callback = args[index];\n\t\t\t\t\tcallback[\"toJSON\"] ||= () => callback.toString();\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"constructor\": {\n\t\t\t\t\tconst constructor = schema.constructor = args[index];\n\t\t\t\t\tif (typeof constructor === \"function\") constructor[\"toJSON\"] ||= () => constructor[\"name\"];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tdefault: schema[key] = args[index];\n\t\t\t}\n\t\t});\n\t\tif (name === \"object\" || name === \"dict\") schema.meta.default = {};\n\t\telse if (name === \"array\" || name === \"tuple\") schema.meta.default = [];\n\t\telse if (name === \"bitset\") schema.meta.default = 0;\n\t\treturn schema;\n\t} });\n}\ndefineMethod(\"is\", [\"constructor\"], ({ constructor }) => {\n\tif (typeof constructor === \"function\") return constructor.name;\n\telse return constructor;\n});\ndefineMethod(\"any\", [], () => \"any\");\ndefineMethod(\"never\", [], () => \"never\");\ndefineMethod(\"const\", [\"value\"], ({ value }) => typeof value === \"string\" ? JSON.stringify(value) : value);\ndefineMethod(\"string\", [], () => \"string\");\ndefineMethod(\"number\", [], () => \"number\");\ndefineMethod(\"boolean\", [], () => \"boolean\");\ndefineMethod(\"bitset\", [\"bits\"], () => \"bitset\");\ndefineMethod(\"function\", [], () => \"function\");\ndefineMethod(\"array\", [\"inner\"], ({ inner }) => `${inner.toString(true)}[]`);\ndefineMethod(\"dict\", [\"inner\", \"sKey\"], ({ inner, sKey }) => `{ [key: ${sKey.toString()}]: ${inner.toString()} }`);\ndefineMethod(\"tuple\", [\"list\"], ({ list }) => `[${list.map((inner) => inner.toString()).join(\", \")}]`);\ndefineMethod(\"object\", [\"dict\"], ({ dict }) => {\n\tif (Object.keys(dict).length === 0) return \"{}\";\n\treturn `{ ${Object.entries(dict).map(([key, inner]) => {\n\t\treturn `${key}${inner.meta.required ? \"\" : \"?\"}: ${inner.toString()}`;\n\t}).join(\", \")} }`;\n});\ndefineMethod(\"union\", [\"list\"], ({ list }, inline) => {\n\tconst result = list.map(({ toString: format }) => format()).join(\" | \");\n\treturn inline ? `(${result})` : result;\n});\ndefineMethod(\"intersect\", [\"list\"], ({ list }) => {\n\treturn `${list.map((inner) => inner.toString(true)).join(\" & \")}`;\n});\ndefineMethod(\"transform\", [\n\t\"inner\",\n\t\"callback\",\n\t\"preserve\"\n], ({ inner }, isInner) => inner.toString(isInner));\n//#endregion\nexport { Schema as default };\n", "/** Chat display preferences stored in the Host user-settings document. */\n\nimport z from '@deepseek-ai/schemastery'\n\n/** Settings namespace owned by the Chat target. */\nexport const CHAT_SETTINGS_NAMESPACE = 'ui-chat'\n\n/** Field carrying the work-details presentation mode. */\nexport const TRANSCRIPT_VIEW_FIELD = 'transcriptView'\n\n/** Work-details presentation modes a user can choose. */\nexport const TRANSCRIPT_VIEW_MODES = ['compact', 'standard', 'detailed', 'verbose'] as const\n\n/** Work-details presentation mode. */\nexport type TranscriptViewMode = typeof TRANSCRIPT_VIEW_MODES[number]\n\n/**\n * Saved value from the two-mode generation of this setting. Read as `detailed`;\n * never offered as a choice and never written back.\n */\nexport const LEGACY_TRANSCRIPT_VIEW_MODE = 'normal'\n\n/** Saved `expanded` values read as `detailed`, without being offered or written back. */\nexport const LEGACY_EXPANDED_TRANSCRIPT_VIEW_MODE = 'expanded'\n\n/** Every value the durable field accepts: current modes plus legacy saved values. */\nconst TRANSCRIPT_VIEW_SETTING_VALUES = [\n ...TRANSCRIPT_VIEW_MODES, LEGACY_TRANSCRIPT_VIEW_MODE, LEGACY_EXPANDED_TRANSCRIPT_VIEW_MODE,\n] as const\n\n/** Default work details for non-Desktop Web clients. */\nexport const DEFAULT_TRANSCRIPT_VIEW_MODE: TranscriptViewMode = 'detailed'\n\n/** Performance and usage detail levels accepted by user settings. */\nexport const PERFORMANCE_USAGE_MODES = ['compact', 'detailed'] as const\n\n/** Performance and usage presentation. */\nexport type PerformanceUsageMode = typeof PERFORMANCE_USAGE_MODES[number]\n\n/** Preserve detailed accounting for users without an explicit preference. */\nexport const DEFAULT_PERFORMANCE_USAGE: PerformanceUsageMode = 'detailed'\n\n/** Destinations for ordinary clicks on Chat HTTP(S) links. */\nexport type LinkOpening = 'sidebar' | 'new-tab'\n\n/** Preserve the built-in browser for users without an explicit preference. */\nexport const DEFAULT_LINK_OPENING: LinkOpening = 'sidebar'\n\n/** Durable Chat section shared by the Host schema and browser scope. */\nexport interface ChatSettings {\n /** Work-details preference; absence uses the client default, and legacy saved values remain accepted. */\n transcriptView?: TranscriptViewMode | typeof LEGACY_TRANSCRIPT_VIEW_MODE | typeof LEGACY_EXPANDED_TRANSCRIPT_VIEW_MODE | null\n /** Detail level for composer statistics and completed-Turn usage. */\n performanceUsage: PerformanceUsageMode\n /** Default destination for Chat HTTP(S) links. */\n linkOpening: LinkOpening\n}\n\n/** Durable Chat schema; also the wire envelope the browser scope validates against. */\nexport const ChatSettingsFields = {\n linkOpening: z.union(['sidebar', 'new-tab']).default(DEFAULT_LINK_OPENING),\n performanceUsage: z.union([...PERFORMANCE_USAGE_MODES]).default(DEFAULT_PERFORMANCE_USAGE),\n // Missing and unrecognized modes defer to the client's default.\n [TRANSCRIPT_VIEW_FIELD]: z.union([...TRANSCRIPT_VIEW_SETTING_VALUES]).loose(),\n}\n\n/** Schema for shared configuration values. */\nexport const ChatSettingsSchema = z.object(ChatSettingsFields)\n", "/** Host registration for browser Chat preferences. */\nimport type {} from '@deepseek-ai/dsh-settings'\n\nimport type { Volatile, Context } from '@deepseek-ai/cordis'\nimport type { ChatSettings, LinkOpening, PerformanceUsageMode } from './chat-settings.ts'\nimport z from '@deepseek-ai/schemastery'\nimport { TRANSCRIPT_VIEW_FIELD } from './chat-settings.ts'\n\nimport { ChatSettingsFields } from './chat-settings.ts'\n\nexport {\n CHAT_SETTINGS_NAMESPACE, DEFAULT_TRANSCRIPT_VIEW_MODE, LEGACY_TRANSCRIPT_VIEW_MODE,\n LEGACY_EXPANDED_TRANSCRIPT_VIEW_MODE, TRANSCRIPT_VIEW_FIELD,\n TRANSCRIPT_VIEW_MODES, type ChatSettings, type TranscriptViewMode,\n} from './chat-settings.ts'\n\n/** Runtime preferences projected to the browser. */\nexport interface Config {\n /** Completed turn transcript presentation. */\n transcriptView: Volatile<ChatSettings['transcriptView']>\n /** Performance and usage detail level. */\n performanceUsage: Volatile<PerformanceUsageMode>\n /** Default destination for Chat HTTP(S) links. */\n linkOpening: Volatile<LinkOpening>\n}\n\n/** Live preferences projected to the browser. */\nexport const Config = z.object({\n [TRANSCRIPT_VIEW_FIELD]: ChatSettingsFields[TRANSCRIPT_VIEW_FIELD].volatile(),\n performanceUsage: ChatSettingsFields['performanceUsage'].volatile(),\n linkOpening: ChatSettingsFields.linkOpening.volatile(),\n})\n\n/** Host preferences are consumed through the configuration form projection.\n * @param ctx Plugin context used for optional settings presentation.\n */\nexport function apply(ctx: Context): void {\n ctx.inject(['settings'], (child) => { child.effect(() => child.settings.configure({ auto: false }, ctx.fiber)) })\n}\n"],
|
|
5
5
|
"mappings": "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",
|
|
6
6
|
"names": ["value", "value", "Binary", "result", "a", "b", "Time", "date", "template", "options", "pattern", "value", "extra", "resolve", "toJSON", "date", "toString", "key"]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../../.host-source/packages/client/ui-layout/src/client/AppFrame.module.css"],
|
|
4
4
|
"sourcesContent": [".frame {\n position: relative; /* anchors the drag handles, which straddle column borders */\n display: grid;\n grid-template-rows: 100%;\n height: 100%;\n overflow: hidden;\n background: var(--dsw-alias-bg-base);\n}\n\n/* Only a discrete collapse/expand toggle eases the tracks (the TSX holds\n data-animating across the toggle on the deepsuite sider curve). Steady-state\n tracks move only with the viewport, and those updates must land instantly:\n an eased track chases the live window edge and the centre column visibly\n rubber-bands while the user resizes the window. */\n.frame[data-animating] {\n transition: grid-template-columns var(--ds-transition-duration-slow) var(--ds-ease-in-out);\n}\n\n/* Dragging writes widths at pointer cadence; easing them would detach the\n column from the handle. */\n.frame[data-dragging] {\n transition: none;\n}\n\n/* The Windows caption row remains outside every conversation and file panel. */\n:global([data-windows-titlebar]) .frame {\n --dsh-windows-content-radius: 16px;\n box-sizing: border-box;\n padding-top: var(--dsh-windows-titlebar-height);\n grid-template-rows: minmax(0, 1fr);\n background: var(--dsw-specific-sidebar-fill);\n}\n\n:global([data-windows-titlebar]) .centerCol {\n background: var(--dsw-alias-bg-base);\n border-radius: var(--dsh-windows-content-radius) 0 0 0;\n corner-shape: round;\n}\n\n:global([data-windows-titlebar]) .frame::before {\n content: '';\n position: absolute;\n inset: 0 0 auto;\n height: var(--dsh-windows-titlebar-height);\n background: var(--dsw-specific-sidebar-fill);\n -webkit-app-region: drag;\n}\n\n:global([data-windows-titlebar]) .sidebarCol {\n border-right: none;\n}\n\n:global([data-windows-titlebar]) .handle {\n top: var(--dsh-windows-titlebar-height);\n}\n\n@media (prefers-reduced-motion: reduce) {\n .frame[data-animating] {\n transition: none;\n }\n}\n\n.sidebarCol {\n min-width: 0;\n overflow: hidden;\n background: var(--dsw-specific-sidebar-fill);\n border-right: 0.5px solid var(--dsw-alias-border-l3);\n}\n\n.centerCol {\n min-width: 0;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n/* Keep the covered main tree mounted and measured, but out of paint and focus.\n A glass theme can create a stacking context on the right panel, trapping its\n dock layer below main content. Fullscreen owns the visible center regardless\n of that theme; restoring it preserves the same composer and draft. */\n.frame[data-rightbar-fullscreen] .centerCol {\n visibility: hidden;\n}\n\n/* macOS desktop: the frame goes transparent so window vibrancy reaches the\n sidebar column, which keeps only a translucent tint; the centre paints the\n base background itself to stay opaque. The sidebar/centre separator moves\n to the opaque centre: on the translucent sidebar the alpha border mixes\n with the wallpaper and reads as a dark seam. */\n:global([data-platform='darwin']) .frame {\n background: transparent;\n}\n\n/* The constant step below the window's top strip (traffic lights, sidebar\n toggle, shell.leading controls), the same in both sidebar states. Entry\n pages in the main panel (plugin manager, settings-like pages \u2014 not the\n conversation, which owns its header) pad their top by it so their leading\n content clears the strip, and overlay primitives add their own safe inset.\n Declared on the root element rather than the frame so\n overlays portalled to document.body inherit it too. */\n:global(html[data-platform='darwin']) {\n --dsh-frame-top-clearance: 48px;\n}\n\n/* In-frame Windows content already clears the caption through .frame padding. */\n:global(html[data-windows-titlebar]) {\n --dsh-frame-top-clearance: var(--dsh-windows-titlebar-height);\n --dsh-frame-chrome-top: var(--dsh-windows-titlebar-height);\n}\n\n/* Portalled overlays share a viewport inset without adding space to entry pages. */\n:global(html[data-platform='darwin']),\n:global(html[data-windows-titlebar]) {\n --dsh-frame-overlay-top: calc(var(--dsh-frame-top-clearance) + 20px);\n}\n\n:global(html[data-platform='darwin'][data-fullscreen]),\n:global(html[data-windows-titlebar][data-fullscreen]) {\n --dsh-frame-overlay-top: 20px;\n --dsh-frame-chrome-top: 0px;\n}\n\n:global([data-platform='darwin']) .sidebarCol {\n /* A blue wash over the top of the translucent tint, gone by a third of the\n column; a faint blue-grey-violet rises through the bottom third; and a\n faint blue cast is mixed into the tint itself. Every layer stays\n transparent so vibrancy shows. */\n background:\n linear-gradient(\n to bottom,\n rgb(122 155 240 / 0.1),\n rgb(122 155 240 / 0) 35%,\n rgb(143 137 184 / 0) 68%,\n rgb(143 137 184 / 0.09)\n ),\n color-mix(in srgb, color-mix(in srgb, var(--dsw-specific-sidebar-fill) 97%, rgb(122 155 240)) 40%, transparent);\n border-right: none;\n}\n\n/* Dark drops the blue cast (the light-mode wash reads purple over dark fills)\n and thins the fill so more wallpaper shows; the washes stay. */\n:global([data-platform='darwin']) :global([data-ds-dark-theme]) .sidebarCol {\n background:\n linear-gradient(\n to bottom,\n rgb(122 155 240 / 0.08),\n rgb(122 155 240 / 0) 35%,\n rgb(143 137 184 / 0) 68%,\n rgb(143 137 184 / 0.07)\n ),\n color-mix(in srgb, var(--dsw-specific-sidebar-fill) 50%, transparent);\n}\n\n/* macOS Reduce Transparency: the OS flattens the window's vibrancy layer to a\n solid grey, so the thin tint and washes read washed-out over it. Replace\n them with a 90%-opaque fill of the same token in both themes (the dark\n selector repeats so this outranks its thinner fill). */\n@media (prefers-reduced-transparency: reduce) {\n :global([data-platform='darwin']) .sidebarCol,\n :global([data-platform='darwin']) :global([data-ds-dark-theme]) .sidebarCol {\n background: color-mix(in srgb, var(--dsw-specific-sidebar-fill) 90%, transparent);\n }\n}\n\n:global([data-platform='darwin']) .centerCol {\n background: var(--dsw-alias-bg-base);\n border-left: 0.5px solid var(--dsw-alias-border-l3);\n}\n\n/* The right track paints the base ground on the transparent frame: while the\n track and the occupant's translateX slide ride the same curve, the grid\n eases in layout and the transform on the compositor, so frames where they\n diverge would otherwise show vibrancy glass between the centre's right edge\n and the incoming panel. The occupant's opaque panel covers this at rest. */\n:global([data-platform='darwin']) .rightbarCol {\n background: var(--dsw-alias-bg-base);\n}\n\n/* The darwin closed sidebar has no rail: the centre reaches the window edge,\n where a separator would draw a seam against nothing. */\n:global([data-platform='darwin']) [data-sidebar-collapsed] .centerCol {\n border-left: none;\n}\n\n/* Published while the shell.leading seat is mounted (same condition as the\n TSX mount: darwin with the sidebar collapsed \u2014 the collapse that hides the\n column entirely): the inline band the window chrome occupies, measured from\n the frame's left edge \u2014 traffic lights to x 68, controls at x 88\n (28 + 8 + 28), then 8px of air. Main panels whose content reaches the\n top-left corner pad by this. */\n:global([data-platform='darwin']) .frame[data-sidebar-collapsed] {\n --dsh-frame-leading-clearance: 160px;\n}\n\n/* Fullscreen hides the traffic lights (preload mirrors the window state onto\n html[data-fullscreen]): the seat takes their band and the clearance keeps\n only the controls (12 + 28 + 8 + 28 + 8). The 12px start matches the\n expanded sidebar strip's inline padding (ui-sidebar .topStrip), so\n collapsing never shifts the toggle. */\n:global([data-platform='darwin'][data-fullscreen]) .frame[data-sidebar-collapsed] {\n --dsh-frame-leading-clearance: 84px;\n}\n\n:global([data-platform='darwin'][data-fullscreen]) .leadingSeat {\n left: 12px;\n}\n\n/* The frame declares no window drag of its own: every chrome row owns the drag\n over its own box (ui-web base.css holds the one rule; the ui-theme app-region\n gate lists the rows). The ordering rule that replaces the old \"band first\"\n invariant: a surface that covers the window and must stay clickable portals\n beside #root, which puts it after every drag row in document order. The Windows\n caption row above is the other platform's chrome and stays. */\n\n/* The seat itself: the two 28px controls centered on the conversation title\n row (10px header inset + 30px row \u2192 centre y 25) and level with the traffic\n lights (centre y \u2248 24). Sits above column content, below frame overlays\n (20) and the fullscreen right panel (40). The box subtracts itself from any\n window drag row beneath (Electron app-regions are geometry, not stacking). */\n.leadingSeat {\n position: absolute;\n top: 11px;\n left: 88px;\n z-index: 15;\n display: flex;\n align-items: center;\n -webkit-app-region: no-drag;\n}\n\n/* Drag handles are frame children (columns clip overflow): an 8px hit strip\n centered on the column border via inline left, above column content. No\n handle draws a visible pill: the details column was the only one that did,\n and the right column never had one. The right handle sits above the right\n panel (which states z-index 10) so it stays grabbable when the panel hangs\n over the centre. */\n.handle {\n position: absolute;\n top: 0;\n bottom: 0;\n width: 8px;\n margin-left: -4px;\n cursor: col-resize;\n z-index: 11;\n touch-action: none;\n}\n\n/* Rides the same curve as the tracks so the pill stays on the moving border\n during collapse/expand; instant at steady state (viewport-driven moves)\n and while dragging. */\n.frame[data-animating] .handle {\n transition: left var(--ds-transition-duration-slow) var(--ds-ease-in-out);\n}\n\n.frame[data-dragging] .handle {\n transition: none;\n}\n\n/* Fullscreen covers the frame while its underlying columns enter or exit. */\n.frame[data-rightbar-fullscreen],\n.frame[data-rightbar-fullscreen] .handle,\n.frame[data-rightbar-instant],\n.frame[data-rightbar-instant] .handle {\n transition: none;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .frame[data-animating] .handle {\n transition: none;\n }\n}\n\n/*\n * The right column never clips: its occupant anchors a fixed-width panel to the\n * column's right edge (the frame's edge, which never moves) and lets the track\n * decide whether the centre makes room. With no track the panel hangs over the\n * centre from a zero-width column, and while the track animates the panel stays\n * where it is. The occupant draws its own left border.\n */\n.rightbarCol {\n position: relative;\n min-width: 0;\n overflow: visible;\n}\n\n.overlayLayer {\n position: absolute;\n inset: 0;\n z-index: 20;\n pointer-events: none;\n}\n\n.overlayLayer > * {\n pointer-events: auto;\n}\n"],
|
|
5
5
|
"mappings": ";AAAA,CAACA;AACC,YAAU;AACV,WAAS;AACT,sBAAoB;AACpB,UAAQ;AACR,YAAU;AACV,cAAY,IAAI;AAClB;AAOA,CAdCA,cAcK,CAAC;AACL,cAAY,sBAAsB,IAAI,+BAA+B,IAAI;AAC3E;AAIA,CApBCA,cAoBK,CAAC;AACL,cAAY;AACd;AAGQ,CAAC,uBAAwB,CAzBhCA;AA0BC,gCAA8B;AAC9B,cAAY;AACZ,eAAa,IAAI;AACjB,sBAAoB,OAAO,CAAC,EAAE;AAC9B,cAAY,IAAI;AAClB;AAEQ,CAAC,uBAAwB,CAACC;AAChC,cAAY,IAAI;AAChB,iBAAe,IAAI,8BAA8B,EAAE,EAAE;AACrD,gBAAc;AAChB;AAEQ,CAAC,uBAAwB,CAvChCD,cAuCsC;AACrC,WAAS;AACT,YAAU;AACV,SAAO,EAAE,EAAE;AACX,UAAQ,IAAI;AACZ,cAAY,IAAI;AAChB,sBAAoB;AACtB;AAEQ,CAAC,uBAAwB,CAACE;AAChC,gBAAc;AAChB;AAEQ,CAAC,uBAAwB,CAACC;AAChC,OAAK,IAAI;AACX;AAEA,QAAO,wBAAyB;AAC9B,GAzDDH,cAyDO,CAAC;AACL,gBAAY;AACd;AACF;AAEA,CAdkCE;AAehC,aAAW;AACX,YAAU;AACV,cAAY,IAAI;AAChB,gBAAc,MAAM,MAAM,IAAI;AAChC;AAEA,CApCkCD;AAqChC,aAAW;AACX,WAAS;AACT,kBAAgB;AAChB,YAAU;AACZ;AAMA,CAhFCD,cAgFK,CAAC,0BAA0B,CA/CCC;AAgDhC,cAAY;AACd;AAOQ,CAAC,sBAAyB,CAzFjCD;AA0FC,cAAY;AACd;AASQ,IAAI,CAAC;AACX,6BAA2B;AAC7B;AAGQ,IAAI,CAAC;AACX,6BAA2B,IAAI;AAC/B,0BAAwB,IAAI;AAC9B;AAGQ,IAAI,CAAC;AACL,IAAI,CAAC;AACX,2BAAyB,KAAK,IAAI,2BAA2B,EAAE;AACjE;AAEQ,IAAI,CAAC,qBAAuB,CAAC;AAC7B,IAAI,CAAC,sBAAsB,CAAC;AAClC,2BAAyB;AACzB,0BAAwB;AAC1B;AAEQ,CAAC,sBAAyB,CA1EAE;AA+EhC;AAAA,IACE;AAAA,MACE,GAAG,MADL;AAAA,MAEE,IAAI,IAAI,IAAI,IAAI,EAAE,IAFpB;AAAA,MAGE,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,GAHvB;AAAA,MAIE,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,GAJvB;AAAA,MAKE,IAAI,IAAI,IAAI,IAAI,EAAE,MACnB;AAAA,IACD,UAAU,GAAG,IAAI,EAAE,UAAU,GAAG,IAAI,EAAE,IAAI,6BAA6B,GAAG,EAAE,IAAI,IAAI,IAAI,MAAM,GAAG,EAAE;AACrG,gBAAc;AAChB;AAIQ,CAAC,sBAAiC,CAAC,oBAAqB,CA7F9BA;AA8FhC;AAAA,IACE;AAAA,MACE,GAAG,MADL;AAAA,MAEE,IAAI,IAAI,IAAI,IAAI,EAAE,KAFpB;AAAA,MAGE,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,GAHvB;AAAA,MAIE,IAAI,IAAI,IAAI,IAAI,EAAE,GAAG,GAJvB;AAAA,MAKE,IAAI,IAAI,IAAI,IAAI,EAAE,MACnB;AAAA,IACD,UAAU,GAAG,IAAI,EAAE,IAAI,6BAA6B,GAAG,EAAE;AAC7D;AAMA,QAAO,8BAA+B;AACpC,EAAQ,CAAC,sBAAyB,CA9GFA;AAAA,EA+GxB,CAAC,sBAAiC,CAAC,oBAAqB,CA/GhCA;AAgH9B,gBAAY,UAAU,GAAG,IAAI,EAAE,IAAI,6BAA6B,GAAG,EAAE;AACvE;AACF;AAEQ,CAAC,sBAAyB,CAnIAD;AAoIhC,cAAY,IAAI;AAChB,eAAa,MAAM,MAAM,IAAI;AAC/B;AAOQ,CAAC,sBAAyB,CAACG;AACjC,cAAY,IAAI;AAClB;AAIQ,CAAC,sBAAyB,CAAC,wBAAwB,CAnJzBH;AAoJhC,eAAa;AACf;AAQQ,CAAC,sBAAyB,CA9LjCD,cA8LuC,CAAC;AACvC,iCAA+B;AACjC;AAOQ,CAAC,qBAAuB,CAAC,iBAAkB,CAvMlDA,cAuMwD,CAAC;AACxD,iCAA+B;AACjC;AAEQ,CAAC,qBAAuB,CAAC,iBAAkB,CAACK;AAClD,QAAM;AACR;AAcA,CAhBoDA;AAiBlD,YAAU;AACV,OAAK;AACL,QAAM;AACN,WAAS;AACT,WAAS;AACT,eAAa;AACb,sBAAoB;AACtB;AAQA,CAvLkCF;AAwLhC,YAAU;AACV,OAAK;AACL,UAAQ;AACR,SAAO;AACP,eAAa;AACb,UAAQ;AACR,WAAS;AACT,gBAAc;AAChB;AAKA,CAzPCH,cAyPK,CAAC,gBAAgB,CArMWG;AAsMhC,cAAY,KAAK,IAAI,+BAA+B,IAAI;AAC1D;AAEA,CA7PCH,cA6PK,CAAC,eAAe,CAzMYG;AA0MhC,cAAY;AACd;AAGA,CAlQCH,cAkQK,CAAC;AACP,CAnQCA,cAmQK,CAAC,0BAA0B,CA/MCG;AAgNlC,CApQCH,cAoQK,CAAC;AACP,CArQCA,cAqQK,CAAC,uBAAuB,CAjNIG;AAkNhC,cAAY;AACd;AAEA,QAAO,wBAAyB;AAC9B,GA1QDH,cA0QO,CAAC,gBAAgB,CAtNSG;AAuN9B,gBAAY;AACd;AACF;AASA,CAxGmCC;AAyGjC,YAAU;AACV,aAAW;AACX,YAAU;AACZ;AAEA,CAACE;AACC,YAAU;AACV,SAAO;AACP,WAAS;AACT,kBAAgB;AAClB;AAEA,CAPCA,sBAOa,EAAE;AACd,kBAAgB;AAClB;",
|
|
6
6
|
"names": ["frame", "centerCol", "sidebarCol", "handle", "rightbarCol", "leadingSeat", "overlayLayer"]
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
window.__ModuleLoader__.load({ id: '@deepseek-ai/dsh-client-ui-layout', factory: function(require) { var module = { exports: {} }; var exports = module.exports;
|
|
2
|
-
const cssDispose = () => { const style = document.createElement('style'); style.textContent = "/*
|
|
2
|
+
const cssDispose = () => { const style = document.createElement('style'); style.textContent = "/* .host-source/packages/client/ui-layout/src/client/AppFrame.module.css */\n.AppFrame_frame {\n position: relative;\n display: grid;\n grid-template-rows: 100%;\n height: 100%;\n overflow: hidden;\n background: var(--dsw-alias-bg-base);\n}\n.AppFrame_frame[data-animating] {\n transition: grid-template-columns var(--ds-transition-duration-slow) var(--ds-ease-in-out);\n}\n.AppFrame_frame[data-dragging] {\n transition: none;\n}\n[data-windows-titlebar] .AppFrame_frame {\n --dsh-windows-content-radius: 16px;\n box-sizing: border-box;\n padding-top: var(--dsh-windows-titlebar-height);\n grid-template-rows: minmax(0, 1fr);\n background: var(--dsw-specific-sidebar-fill);\n}\n[data-windows-titlebar] .AppFrame_centerCol {\n background: var(--dsw-alias-bg-base);\n border-radius: var(--dsh-windows-content-radius) 0 0 0;\n corner-shape: round;\n}\n[data-windows-titlebar] .AppFrame_frame::before {\n content: \"\";\n position: absolute;\n inset: 0 0 auto;\n height: var(--dsh-windows-titlebar-height);\n background: var(--dsw-specific-sidebar-fill);\n -webkit-app-region: drag;\n}\n[data-windows-titlebar] .AppFrame_sidebarCol {\n border-right: none;\n}\n[data-windows-titlebar] .AppFrame_handle {\n top: var(--dsh-windows-titlebar-height);\n}\n@media (prefers-reduced-motion: reduce) {\n .AppFrame_frame[data-animating] {\n transition: none;\n }\n}\n.AppFrame_sidebarCol {\n min-width: 0;\n overflow: hidden;\n background: var(--dsw-specific-sidebar-fill);\n border-right: 0.5px solid var(--dsw-alias-border-l3);\n}\n.AppFrame_centerCol {\n min-width: 0;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n.AppFrame_frame[data-rightbar-fullscreen] .AppFrame_centerCol {\n visibility: hidden;\n}\n[data-platform=darwin] .AppFrame_frame {\n background: transparent;\n}\nhtml[data-platform=darwin] {\n --dsh-frame-top-clearance: 48px;\n}\nhtml[data-windows-titlebar] {\n --dsh-frame-top-clearance: var(--dsh-windows-titlebar-height);\n --dsh-frame-chrome-top: var(--dsh-windows-titlebar-height);\n}\nhtml[data-platform=darwin],\nhtml[data-windows-titlebar] {\n --dsh-frame-overlay-top: calc(var(--dsh-frame-top-clearance) + 20px);\n}\nhtml[data-platform=darwin][data-fullscreen],\nhtml[data-windows-titlebar][data-fullscreen] {\n --dsh-frame-overlay-top: 20px;\n --dsh-frame-chrome-top: 0px;\n}\n[data-platform=darwin] .AppFrame_sidebarCol {\n background:\n linear-gradient(\n to bottom,\n rgb(122 155 240 / 0.1),\n rgb(122 155 240 / 0) 35%,\n rgb(143 137 184 / 0) 68%,\n rgb(143 137 184 / 0.09)),\n color-mix(in srgb, color-mix(in srgb, var(--dsw-specific-sidebar-fill) 97%, rgb(122 155 240)) 40%, transparent);\n border-right: none;\n}\n[data-platform=darwin] [data-ds-dark-theme] .AppFrame_sidebarCol {\n background:\n linear-gradient(\n to bottom,\n rgb(122 155 240 / 0.08),\n rgb(122 155 240 / 0) 35%,\n rgb(143 137 184 / 0) 68%,\n rgb(143 137 184 / 0.07)),\n color-mix(in srgb, var(--dsw-specific-sidebar-fill) 50%, transparent);\n}\n@media (prefers-reduced-transparency: reduce) {\n [data-platform=darwin] .AppFrame_sidebarCol,\n [data-platform=darwin] [data-ds-dark-theme] .AppFrame_sidebarCol {\n background: color-mix(in srgb, var(--dsw-specific-sidebar-fill) 90%, transparent);\n }\n}\n[data-platform=darwin] .AppFrame_centerCol {\n background: var(--dsw-alias-bg-base);\n border-left: 0.5px solid var(--dsw-alias-border-l3);\n}\n[data-platform=darwin] .AppFrame_rightbarCol {\n background: var(--dsw-alias-bg-base);\n}\n[data-platform=darwin] [data-sidebar-collapsed] .AppFrame_centerCol {\n border-left: none;\n}\n[data-platform=darwin] .AppFrame_frame[data-sidebar-collapsed] {\n --dsh-frame-leading-clearance: 160px;\n}\n[data-platform=darwin][data-fullscreen] .AppFrame_frame[data-sidebar-collapsed] {\n --dsh-frame-leading-clearance: 84px;\n}\n[data-platform=darwin][data-fullscreen] .AppFrame_leadingSeat {\n left: 12px;\n}\n.AppFrame_leadingSeat {\n position: absolute;\n top: 11px;\n left: 88px;\n z-index: 15;\n display: flex;\n align-items: center;\n -webkit-app-region: no-drag;\n}\n.AppFrame_handle {\n position: absolute;\n top: 0;\n bottom: 0;\n width: 8px;\n margin-left: -4px;\n cursor: col-resize;\n z-index: 11;\n touch-action: none;\n}\n.AppFrame_frame[data-animating] .AppFrame_handle {\n transition: left var(--ds-transition-duration-slow) var(--ds-ease-in-out);\n}\n.AppFrame_frame[data-dragging] .AppFrame_handle {\n transition: none;\n}\n.AppFrame_frame[data-rightbar-fullscreen],\n.AppFrame_frame[data-rightbar-fullscreen] .AppFrame_handle,\n.AppFrame_frame[data-rightbar-instant],\n.AppFrame_frame[data-rightbar-instant] .AppFrame_handle {\n transition: none;\n}\n@media (prefers-reduced-motion: reduce) {\n .AppFrame_frame[data-animating] .AppFrame_handle {\n transition: none;\n }\n}\n.AppFrame_rightbarCol {\n position: relative;\n min-width: 0;\n overflow: visible;\n}\n.AppFrame_overlayLayer {\n position: absolute;\n inset: 0;\n z-index: 20;\n pointer-events: none;\n}\n.AppFrame_overlayLayer > * {\n pointer-events: auto;\n}\n/*# sourceMappingURL=client.css.map */\n"; document.head.append(style); return () => style.remove(); };
|
|
3
3
|
|
|
4
4
|
"use strict";
|
|
5
5
|
var __defProp = Object.defineProperty;
|
|
@@ -20,7 +20,7 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
20
20
|
};
|
|
21
21
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
22
22
|
|
|
23
|
-
//
|
|
23
|
+
// .host-source/packages/client/ui-layout/src/client/index.ts
|
|
24
24
|
var index_exports = {};
|
|
25
25
|
__export(index_exports, {
|
|
26
26
|
LayoutController: () => LayoutController,
|
|
@@ -29,10 +29,10 @@ __export(index_exports, {
|
|
|
29
29
|
});
|
|
30
30
|
module.exports = __toCommonJS(index_exports);
|
|
31
31
|
|
|
32
|
-
//
|
|
32
|
+
// .host-source/packages/client/ui-layout/src/client/AppFrame.tsx
|
|
33
33
|
var import_react2 = require("react");
|
|
34
34
|
|
|
35
|
-
//
|
|
35
|
+
// .host-source/packages/client/ui-layout/src/client/columns.ts
|
|
36
36
|
var CENTER_MIN = 400;
|
|
37
37
|
var SIDEBAR_MIN = 264;
|
|
38
38
|
var SIDEBAR_MAX = 420;
|
|
@@ -52,7 +52,7 @@ function computeColumns(viewport, sidebar, rightbar, collapsedWidth = SIDEBAR_CO
|
|
|
52
52
|
return { sidebar: s, center: Math.max(0, viewport - s - r), rightbar: r };
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
-
//
|
|
55
|
+
// .host-source/packages/client/ui-layout/src/client/DocumentTitle.tsx
|
|
56
56
|
var import_react = require("react");
|
|
57
57
|
function DocumentTitle({ useSessions, usePanelInfo, productTitle }) {
|
|
58
58
|
const showSessionTitle = usePanelInfo((info) => info.activePanelId === null);
|
|
@@ -69,7 +69,7 @@ function DocumentTitle({ useSessions, usePanelInfo, productTitle }) {
|
|
|
69
69
|
return null;
|
|
70
70
|
}
|
|
71
71
|
|
|
72
|
-
//
|
|
72
|
+
// .host-source/packages/client/ui-layout/src/client/AppFrame.module.css
|
|
73
73
|
var AppFrame_default = {
|
|
74
74
|
frame: "AppFrame_frame",
|
|
75
75
|
centerCol: "AppFrame_centerCol",
|
|
@@ -80,7 +80,7 @@ var AppFrame_default = {
|
|
|
80
80
|
overlayLayer: "AppFrame_overlayLayer"
|
|
81
81
|
};
|
|
82
82
|
|
|
83
|
-
//
|
|
83
|
+
// .host-source/packages/client/ui-layout/src/client/AppFrame.tsx
|
|
84
84
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
85
85
|
function CenterColumn(props) {
|
|
86
86
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
@@ -306,7 +306,7 @@ function AppFrame({
|
|
|
306
306
|
);
|
|
307
307
|
}
|
|
308
308
|
|
|
309
|
-
//
|
|
309
|
+
// .host-source/packages/client/ui-layout/src/client/stores.ts
|
|
310
310
|
var import_dsh_client_store = require("@deepseek-ai/dsh-client-store");
|
|
311
311
|
function createLayoutStore() {
|
|
312
312
|
const handle = (0, import_dsh_client_store.defineStore)({
|
|
@@ -378,7 +378,7 @@ function createLayoutStore() {
|
|
|
378
378
|
return handle;
|
|
379
379
|
}
|
|
380
380
|
|
|
381
|
-
//
|
|
381
|
+
// .host-source/packages/client/ui-layout/src/client/service.ts
|
|
382
382
|
var LayoutController = class {
|
|
383
383
|
/**
|
|
384
384
|
* @param panels - actions of the instance shared with the root entry.
|
|
@@ -426,11 +426,11 @@ var LayoutController = class {
|
|
|
426
426
|
}
|
|
427
427
|
};
|
|
428
428
|
|
|
429
|
-
//
|
|
429
|
+
// .host-source/packages/client/ui-layout/src/client/shortcut-locales.ts
|
|
430
430
|
var zh = { toggle: "\u5C55\u5F00\uFF0F\u6536\u8D77\u5DE6\u4FA7\u680F" };
|
|
431
431
|
var en = { toggle: "Toggle left sidebar" };
|
|
432
432
|
|
|
433
|
-
//
|
|
433
|
+
// .host-source/packages/client/ui-layout/src/client/theme-presenter.ts
|
|
434
434
|
var DARK_ATTRIBUTE = "data-ds-dark-theme";
|
|
435
435
|
var THEME_SOURCE_ATTRIBUTE = "data-ds-theme-source";
|
|
436
436
|
var CONTENT_FONT_SIZE_VARIABLE = "--dsh-content-font-size";
|
|
@@ -489,7 +489,7 @@ var ThemePresenter = class {
|
|
|
489
489
|
}
|
|
490
490
|
};
|
|
491
491
|
|
|
492
|
-
//
|
|
492
|
+
// .host-source/packages/client/ui-layout/src/client/index.ts
|
|
493
493
|
var inject = ["slots", "theme", "locale", "shortcuts"];
|
|
494
494
|
function apply(ctx) {
|
|
495
495
|
ctx.effect(cssDispose);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../../.host-source/packages/client/ui-layout/src/client/index.ts", "../../../.host-source/packages/client/ui-layout/src/client/AppFrame.tsx", "../../../.host-source/packages/client/ui-layout/src/client/columns.ts", "../../../.host-source/packages/client/ui-layout/src/client/DocumentTitle.tsx", "../../../.host-source/packages/client/ui-layout/src/client/AppFrame.module.css", "../../../.host-source/packages/client/ui-layout/src/client/stores.ts", "../../../.host-source/packages/client/ui-layout/src/client/service.ts", "../../../.host-source/packages/client/ui-layout/src/client/shortcut-locales.ts", "../../../.host-source/packages/client/ui-layout/src/client/theme-presenter.ts"],
|
|
4
4
|
"sourcesContent": ["/**\n * Layout plugin, browser half: one register() call contributes AppFrame into\n * the runtime's built-in 'root' slot and, in the same breath, declares the\n * five child slots (declaration = exclusive render authority), seats the\n * layout store (panel geometry), and wires the panel-action service face.\n * ctx.layout selects the main panel and controls column geometry; Session\n * selection belongs to the Session Controller. A second effect seats the theme\n * presenter, which projects ctx.theme snapshots onto document.body.\n */\nimport type { Context as ClientContext } from '@deepseek-ai/cordis'\nimport type {} from '@deepseek-ai/dsh-client-locale/client'\nimport type {} from '@deepseek-ai/dsh-client-ui-renderer/client'\nimport type {} from '@deepseek-ai/dsh-client-ui-session/client'\nimport type {} from '@deepseek-ai/dsh-client-ui-theme/client'\nimport type { HostObservable, SnapshotSelectorHook } from '@deepseek-ai/dsh-client-ui-slots'\nimport type { PanelInfo } from './service.ts'\nimport { AppFrame } from './AppFrame.tsx'\nimport { createLayoutStore } from './stores.ts'\nimport { LayoutController } from './service.ts'\nimport type { ShortcutCommandId } from '@deepseek-ai/dsh-client-shortcuts/client'\nimport { en, zh } from './shortcut-locales.ts'\nimport { ThemePresenter } from './theme-presenter.ts'\n\n// Contract exports only (export-convergence rule: cross-package consumers\n// keep a symbol exported; test-only/package-internal symbols live off /src).\n// ILayout: the ctx.layout face consumers and test fakes type against.\n// OwnerShare contracts below are the render-side halves registrants compose\n// against; the frame components and the store factory are package-internal.\nexport { LayoutController } from './service.ts'\nexport type { ILayout, MainPanelId, PanelInfo } from './service.ts'\n\n/** Selector hook over root-scoped panel selection. */\nexport type UsePanelInfo = SnapshotSelectorHook<PanelInfo>\n\ndeclare module '@deepseek-ai/cordis' {\n interface Context {\n /** The outward face only; the concrete service stays inside this plugin. */\n layout: import('./service.ts').ILayout\n }\n}\n\ndeclare module '@deepseek-ai/dsh-client-ui-slots' {\n interface LocaleNamespaceMap {\n /** Layout keyboard command labels. */\n 'shortcuts.layout': keyof typeof zh\n }\n\n interface GlobalStandardProps {\n /** Subscribe to the selected main panel independently of parent renders. */\n usePanelInfo: UsePanelInfo\n }\n\n interface SlotMap {\n // The 'root' entry itself is the runtime's built-in slot (declared\n // there); these five are the frame's children, declared by the same\n // register() call that contributes AppFrame. Session owners never pass\n // sessionId: the framework injects it as a standard prop.\n /**\n * The whole left column. OCCUPIED by ui-sidebar's SidebarRoot, which\n * declares the workspace and settings seats inside it \u2014 registering here\n * replaces the navigation column outright rather than adding to it, and\n * the seats it declares disappear with it. To add something to the\n * sidebar, register into one of those inner seats instead.\n *\n * The occupant receives the frame's live column state (collapsed, width)\n * and is expected to render the compact control rail while collapsed.\n */\n 'sidebar': { kind: 'single'; scope: 'root'; owner: SidebarOwnerProps }\n /**\n * Central panel selected by sidebar entry id. The reserved `conversation`\n * key hosts the Conversation; other keys receive no Session binding.\n */\n 'main': { kind: 'keyed'; scope: 'root' }\n /**\n * The right column: a track the centre makes room for, or nothing. OCCUPIED\n * by the right Sidebar, which uses the resolved column width in normal\n * mode and covers the viewport in fullscreen, retaining the wide-screen\n * column reservation underneath.\n *\n * Whether the panel is shown, and whether it takes a track, is the\n * occupant's own recorded business \u2014 it reports the composition of its\n * expanded and presentation state through `ctx.layout`, and the frame sizes\n * the track and places the resize handle from that. The expand control is\n * not this column's: it is a button in the conversation header. The root\n * occupant decides when to render its Session-bound content.\n */\n 'rightbar': { kind: 'single'; scope: 'root'; owner: RightbarOwnerProps }\n /**\n * Frame-wide floating layer, above every column and outside their scroll\n * containers. Deliberately generic and unowned by any feature: a badge, a\n * toast stack or a status pill all belong here, and entries order among\n * themselves. The layer itself is click-through \u2014 entries opt back into\n * pointer events \u2014 so an occupant never blocks the app underneath.\n *\n * This is the additive seat for a frame-wide surface of your own: a fresh\n * `id` is added beside the shipped entries instead of replacing them.\n */\n 'shell.overlay': { kind: 'list'; scope: 'root' }\n /**\n * Window-chrome seat at the frame's top-left, over every main panel.\n * Mounted only while the sidebar column is fully hidden (macOS desktop\n * collapse; other platforms keep the rail), so the occupant can assume the\n * frame edge is the window edge and the macOS traffic lights sit before it.\n * OCCUPIED by ui-sidebar's reopen/New Session controls.\n *\n * While the seat is mounted the frame publishes\n * `--dsh-frame-leading-clearance` (the inline inset the seat's band\n * occupies, measured from the frame's left edge); a main panel whose\n * content reaches the top-left corner pads by it so nothing lands under\n * the lights or the controls.\n */\n 'shell.leading': { kind: 'single'; scope: 'root' }\n }\n}\n\n// OwnerShare contracts \u2014 the render-side share the slot owner supplies at\n// renderSlot. Registrants IMPORT these and compose their full component props\n// from the framework-derived shares. Conversation business state and actions arrive through\n// framework-standard hooks and each registrant's inject face, not owner props.\n\n/** Sidebar owner share: live column state from the frame's concession solve. */\nexport interface SidebarOwnerProps {\n /** True when the sidebar is closed (the column renders the compact control rail). */\n collapsed: boolean\n /** Rendered column width in px (SIDEBAR_COLLAPSED when collapsed). */\n width: number\n}\n\n/** Right column owner share: resolved normal geometry and opening eligibility. */\nexport interface RightbarOwnerProps {\n /** Resolved normal panel width in px, not the saved preference; zero if it cannot fit. */\n width: number\n /** Current frame width in px. */\n viewportWidth: number\n /**\n * Whether a normal right panel can retain 300px beside a 400px center.\n * Before a narrow opening, includes the space from collapsing the left sidebar.\n */\n canShow: boolean\n}\n\n/** Required services (cordis fiber inject \u2014 the loader passes all module exports as an object plugin). */\nexport const inject = ['slots', 'theme', 'locale', 'shortcuts']\n\n/**\n * Client plugin body: provide ctx.layout, then one register() call \u2014 AppFrame\n * into 'root' with the five child-slot declarations, the layout store seat,\n * and the shared root instance supplying commands and the panel-info source.\n * @param ctx - client root context.\n */\nexport function apply(ctx: ClientContext): void {\n ctx.effect(() => ctx.locale.register('shortcuts.layout', { zh, en }), 'layout: command labels')\n const t = ctx.locale.bind('shortcuts.layout')\n\n ctx.effect(() => {\n const handle = createLayoutStore()\n const instance = handle.create()\n const store: typeof handle = { ...handle, create: () => instance }\n const retainMainPanels = (): void => {\n instance.actions.retainMainPanels(ctx.slots.entries('main').flatMap(entry =>\n entry.options.key === undefined ? [] : [entry.options.key]))\n }\n const panelInfo: HostObservable<PanelInfo> = {\n getSnapshot: () => instance.getSnapshot().panelInfo,\n subscribe: listener => instance.subscribe(listener),\n }\n const layout = new LayoutController(instance.actions, id =>\n ctx.slots.entries('main').some(entry => entry.options.key === id), panelInfo)\n const disposePanelInfo = ctx.slots.provideRoot({ hooks: { panelInfo: layout.panelInfo } })\n const disposeService = ctx.reflect.provide('layout', layout)\n const disposeRegistration = ctx.slots.register({\n name: 'root',\n locale: 'common',\n children: {\n 'sidebar': { kind: 'single', scope: 'root' },\n 'main': { kind: 'keyed', scope: 'root' },\n 'rightbar': { kind: 'single', scope: 'root' },\n 'shell.overlay': { kind: 'list', scope: 'root' },\n 'shell.leading': { kind: 'single', scope: 'root' },\n },\n store,\n }, AppFrame)\n const disposeShortcut = ctx.shortcuts.register({\n id: 'sidebar.left.toggle' as ShortcutCommandId, label: () => t('toggle'), aliases: ['sidebar', 'toggle left sidebar'],\n defaults: {\n 'desktop:macos': { code: 'KeyB', modifiers: ['primary'] },\n 'desktop:windows': { code: 'KeyB', modifiers: ['primary'] },\n 'desktop:linux': { code: 'KeyB', modifiers: ['primary'] },\n 'web:macos': { code: 'KeyB', modifiers: ['primary', 'alt'] },\n 'web:windows': { code: 'KeyB', modifiers: ['primary', 'alt'] },\n },\n regions: ['page', 'editable'], modals: [],\n resolve: () => ({ status: 'handled', run: () => { layout.toggleSidebar() } }),\n })\n const disposePanels = ctx.slots.subscribe('main', retainMainPanels)\n retainMainPanels()\n return () => {\n disposeShortcut()\n layout.dispose()\n disposePanels()\n disposeRegistration()\n disposePanelInfo()\n // provide()'s disposer settles asynchronously; teardown is synchronous fire-and-forget.\n void disposeService()\n }\n }, 'ui-layout: service + root registration')\n\n // Theme presentation: pure DOM writes from resolved snapshots \u2014 initial\n // state through the getter once, then event-driven only; no React path.\n ctx.effect(() => {\n const presenter = new ThemePresenter()\n presenter.apply(ctx.theme.getTheme())\n const off = ctx.on('theme/change', (snapshot) => { presenter.apply(snapshot) })\n return () => {\n off()\n presenter.dispose()\n }\n }, 'ui-layout: theme presenter')\n}\n", "/**\n * Three-column shell frame, registered into the built-in 'root' slot (the web\n * shell renders only 'root'). Owns the grid tracks (sidebar | center |\n * rightbar), the drag handles (pointer capture + rAF throttle), the column\n * solve (columns.ts), and the child-slot render decisions: the sidebar slot\n * receives live parameters from that solve. The root-scoped main slot selects\n * the Conversation or a global panel. Each column occupant owns its Session\n * binding and reports the geometry it needs.\n *\n * The right column is a track, not a box: its occupant draws its panel anchored\n * to the frame's right edge at the resolved normal width, and the\n * track only decides whether the centre makes room for it. The occupant reports\n * shown/track/fullscreen through `ctx.layout`; fullscreen keeps the reported\n * track but hides the outer resize handle. Everything arrives through the framework\n * shares \u2014 zero cordis or framework imports, zero self-made hooks.\n */\nimport { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react'\nimport type { ReactNode } from 'react'\nimport type {\n PropsLocale, PropsRenderSlots, PropsRuntime, PropsStore,\n} from '@deepseek-ai/dsh-client-ui-slots'\nimport { CENTER_MIN, clampWidth, computeColumns, RIGHTBAR_DEFAULT_RATIO, RIGHTBAR_MAX_RATIO, RIGHTBAR_MIN, SIDEBAR_AUTO_COLLAPSE, SIDEBAR_COLLAPSED, SIDEBAR_DEFAULT } from './columns.ts'\nimport { DocumentTitle } from './DocumentTitle.tsx'\nimport type { createLayoutStore } from './stores.ts'\nimport css from './AppFrame.module.css'\n\n/** Full composed props: runtime share + child-slot render share + store share. */\nexport type AppFrameProps =\n & PropsRuntime<'root'>\n & PropsRenderSlots<'sidebar' | 'main' | 'rightbar' | 'shell.overlay' | 'shell.leading'>\n & PropsStore<ReturnType<typeof createLayoutStore>>\n & PropsLocale<'common'>\n\n/** Center column grid item (session-body building block). */\nfunction CenterColumn(props: { children?: ReactNode; covered: boolean }) {\n return <div className={css.centerCol} aria-hidden={props.covered || undefined}\n {...(props.covered ? { inert: '' } : {})}>{props.children}</div>\n}\n\n/** Subscribe to the main key without subscribing the column frame to each panel id. */\nfunction MainPanel({ usePanelInfo, renderSlot }: Pick<PropsRuntime<'root'>, 'usePanelInfo'> & PropsRenderSlots<'main'>) {\n const panelId = usePanelInfo(info => info.activePanelId)\n return renderSlot('main', {}, { entryKey: panelId ?? 'conversation' })\n}\n\n/**\n * Right column grid item. Zero-width unless the occupant asked for a track; the\n * occupant's panel is positioned against the column's right edge, which never\n * moves, so it can hang over the centre when there is no track.\n */\nfunction RightbarColumn(props: { children?: ReactNode }) {\n return <div className={css.rightbarCol} data-rightbar-col>{props.children}</div>\n}\n\n/**\n * One drag handle: pointer capture, rAF-throttled dx reports against the drag-start origin.\n * `side` keys the hover-reveal CSS to the owning column.\n */\nfunction DragHandle(props: { side: 'sidebar' | 'rightbar'; left: number; onStart: () => void; onDrag: (dx: number) => void; onEnd: () => void }) {\n const [dragging, setDragging] = useState(false)\n const origin = useRef(0)\n const latest = useRef(0)\n const frame = useRef<number | null>(null)\n const capture = useRef<{ element: HTMLDivElement; id: number } | null>(null)\n const callbacks = useRef({ onStart: props.onStart, onDrag: props.onDrag, onEnd: props.onEnd })\n callbacks.current = { onStart: props.onStart, onDrag: props.onDrag, onEnd: props.onEnd }\n\n const endDrag = useCallback(() => {\n const active = capture.current\n if (active === null) return\n capture.current = null\n if (frame.current !== null) { cancelAnimationFrame(frame.current); frame.current = null }\n if (active.element.hasPointerCapture(active.id)) active.element.releasePointerCapture(active.id)\n setDragging(false)\n callbacks.current.onEnd()\n }, [])\n useEffect(() => endDrag, [endDrag])\n\n const onPointerDown = useCallback((e: React.PointerEvent<HTMLDivElement>) => {\n if (e.button !== 0 || capture.current !== null) return\n e.preventDefault()\n e.currentTarget.setPointerCapture(e.pointerId)\n capture.current = { element: e.currentTarget, id: e.pointerId }\n origin.current = e.clientX\n latest.current = e.clientX\n callbacks.current.onStart()\n setDragging(true)\n }, [])\n const onPointerMove = useCallback((e: React.PointerEvent<HTMLDivElement>) => {\n if (capture.current?.id !== e.pointerId) return\n latest.current = e.clientX\n frame.current ??= requestAnimationFrame(() => {\n frame.current = null\n callbacks.current.onDrag(latest.current - origin.current)\n })\n }, [])\n const onPointerUp = useCallback((e: React.PointerEvent<HTMLDivElement>) => {\n if (capture.current?.id !== e.pointerId) return\n callbacks.current.onDrag(e.clientX - origin.current)\n endDrag()\n }, [endDrag])\n const onPointerCancel = useCallback((e: React.PointerEvent<HTMLDivElement>) => {\n if (capture.current?.id === e.pointerId) endDrag()\n }, [endDrag])\n\n return (\n <div\n className={css.handle}\n style={{ left: props.left }}\n data-side={props.side}\n data-dragging={dragging || undefined}\n onPointerDown={onPointerDown}\n onPointerMove={onPointerMove}\n onPointerUp={onPointerUp}\n onPointerCancel={onPointerCancel}\n onLostPointerCapture={onPointerCancel}\n />\n )\n}\n\n/** The three-column frame (see module doc). */\nexport function AppFrame({\n useStore,\n useSessions,\n usePanelInfo,\n actions,\n renderSlot,\n t,\n}: AppFrameProps) {\n const layoutInfo = useStore(state => state.layoutInfo)\n const frameRef = useRef<HTMLDivElement | null>(null)\n const viewport = layoutInfo.viewportWidth\n\n // Track the frame's own box (not the window): rAF-throttled ResizeObserver.\n useLayoutEffect(() => {\n const el = frameRef.current\n /* v8 ignore next -- the ref is always attached by effect time: the frame div renders unconditionally. */\n if (el === null) return\n let raf: number | null = null\n let disposed = false\n const measure = () => {\n const width = el.getBoundingClientRect().width\n if (width > 0) actions.setViewportWidth(width)\n }\n measure()\n const observer = new ResizeObserver(() => {\n if (disposed) return\n raf ??= requestAnimationFrame(() => {\n raf = null\n measure()\n })\n })\n observer.observe(el)\n return () => {\n disposed = true\n observer.disconnect()\n if (raf !== null) cancelAnimationFrame(raf)\n }\n }, [actions])\n\n const narrow = viewport < SIDEBAR_AUTO_COLLAPSE\n const sidebarCollapsed = narrow ? !layoutInfo.narrowExpanded : layoutInfo.sidebar === 0\n const sidebarPreference = sidebarCollapsed\n ? 0\n : layoutInfo.sidebar === 0 ? SIDEBAR_DEFAULT : layoutInfo.sidebar\n const rightbarPreference = layoutInfo.rightbar ?? viewport * RIGHTBAR_DEFAULT_RATIO\n // Desktop reopen controls occupy the frame's shell.leading seat (macOS) or\n // the Windows caption row; neither platform keeps an icon rail.\n const darwin = document.documentElement.dataset.platform === 'darwin'\n const collapsedWidth = darwin\n || document.documentElement.hasAttribute('data-windows-titlebar') ? 0 : SIDEBAR_COLLAPSED\n // Opening on a narrow frame collapses the left sidebar. Eligibility must\n // include that space before the occupant's first shown report arrives.\n const normal = computeColumns(viewport, !layoutInfo.rightbarShown && narrow ? 0 : sidebarPreference, rightbarPreference, collapsedWidth)\n const cols = computeColumns(viewport, sidebarPreference, layoutInfo.rightbarTrack ? rightbarPreference : 0, collapsedWidth)\n const colsRef = useRef(cols)\n colsRef.current = cols\n const rightbarWidth = useRef(normal.rightbar)\n rightbarWidth.current = normal.rightbar\n\n // The drag base is the rendered width captured at drag start (grabbing a\n // concession-clamped panel must not jump back to the stored preference);\n // it stays frozen for the whole gesture so dx deltas do not compound.\n const sidebarBase = useRef(0)\n const rightbarBase = useRef(0)\n // Track-level transitions pause for the whole gesture: eased tracks would\n // detach the column edge from the pointer (AppFrame.module.css).\n const [dragging, setDragging] = useState(false)\n // Track easing is scoped to a discrete open/close toggle: data-animating\n // goes up when the collapse state or the rightbar track flips and comes down\n // at transition end (timeout as the reduced-motion/covered-frame fallback).\n // Steady-state viewport updates stay instant (AppFrame.module.css), and so\n // does a toggle arriving together with a viewport change \u2014 that is the\n // responsive auto-collapse firing mid window-resize, where easing would\n // chase the live window edge. The counter restarts the settle window when a\n // re-toggle interrupts a running transition.\n const [animating, setAnimating] = useState(0)\n const trackToggle = `${sidebarCollapsed}:${layoutInfo.rightbarTrack}`\n const previousToggle = useRef(trackToggle)\n const previousViewport = useRef(viewport)\n useLayoutEffect(() => {\n const viewportChanged = previousViewport.current !== viewport\n previousViewport.current = viewport\n if (previousToggle.current === trackToggle) return\n previousToggle.current = trackToggle\n if (viewportChanged) return\n setAnimating(token => token + 1)\n }, [trackToggle, viewport])\n useEffect(() => {\n if (animating === 0) return\n const frame = frameRef.current\n /* v8 ignore next -- the ref is always attached by effect time: the frame div renders unconditionally. */\n if (frame === null) return\n const settle = () => { setAnimating(0) }\n const onTransitionEnd = (event: TransitionEvent) => {\n if (event.target === frame && event.propertyName === 'grid-template-columns') settle()\n }\n frame.addEventListener('transitionend', onTransitionEnd)\n const timer = setTimeout(settle, 600)\n return () => {\n frame.removeEventListener('transitionend', onTransitionEnd)\n clearTimeout(timer)\n }\n }, [animating])\n const onDragEnd = useCallback(() => { setDragging(false) }, [])\n const onSidebarStart = useCallback(() => { sidebarBase.current = colsRef.current.sidebar; setDragging(true) }, [])\n const onSidebarDrag = useCallback((dx: number) => {\n actions.setSidebar(sidebarBase.current + dx)\n }, [actions])\n const onRightbarStart = useCallback(() => { rightbarBase.current = rightbarWidth.current; setDragging(true) }, [])\n const onRightbarDrag = useCallback((dx: number) => {\n actions.setRightbar(rightbarBase.current - dx)\n }, [actions])\n const productTitle = process.env.DSH_CLIENT_TITLE ?? t('brand.localBuild')\n // The rendered template lets the grid solve the squeeze natively: the centre\n // declares its protected minimum and the right column bids up to the clamped\n // preference, so a window resize lands in the same layout pass as the frame\n // edge. The JS solve lags the viewport by a ResizeObserver + rAF frame; when\n // it priced the squeeze itself, the centre column absorbed each width change\n // whole and was corrected two frames later \u2014 visible jitter. cols keeps only\n // the discrete decisions (track present, collapse state) and the drag base.\n const rightbarMax = cols.rightbar === 0 ? 0 : clampWidth(rightbarPreference, RIGHTBAR_MIN, viewport * RIGHTBAR_MAX_RATIO)\n const sidebar = useMemo(() => renderSlot('sidebar', {\n collapsed: sidebarCollapsed,\n width: cols.sidebar,\n }), [renderSlot, sidebarCollapsed, cols.sidebar])\n const main = useMemo(() => (\n <MainPanel usePanelInfo={usePanelInfo} renderSlot={renderSlot} />\n ), [usePanelInfo, renderSlot])\n const overlays = useMemo(() => renderSlot('shell.overlay', {}), [renderSlot])\n // Window-chrome seat over the main panels' top-left corner: only a fully\n // hidden sidebar column on macOS desktop leaves window chrome without a\n // home \u2014 the Windows zero-width collapse keeps its controls in the caption\n // row (ui-sidebar). AppFrame.module.css publishes the matching\n // --dsh-frame-leading-clearance under the same collapsed condition.\n const leading = useMemo(() => renderSlot('shell.leading', {}), [renderSlot])\n const leadingMounted = darwin && sidebarCollapsed\n\n return (\n <div\n ref={frameRef}\n className={css.frame}\n style={{\n ...(document.documentElement.hasAttribute('data-windows-titlebar')\n ? { '--dsh-windows-sidebar-width': `${cols.sidebar}px` } : {}),\n gridTemplateColumns:\n `${cols.sidebar}px minmax(${cols.rightbar === 0 ? 0 : CENTER_MIN}px, 1fr) minmax(0px, ${rightbarMax}px)`,\n }}\n data-sidebar-collapsed={sidebarCollapsed || undefined}\n data-rightbar-collapsed={cols.rightbar === 0 || undefined}\n data-rightbar-fullscreen={layoutInfo.rightbarFullscreen || undefined}\n data-rightbar-instant={layoutInfo.rightbarInstant || undefined}\n data-dragging={dragging || undefined}\n data-animating={animating > 0 || undefined}\n >\n <DocumentTitle\n productTitle={productTitle}\n useSessions={useSessions}\n usePanelInfo={usePanelInfo}\n />\n <div className={css.sidebarCol}>\n {sidebar}\n </div>\n <>\n <CenterColumn covered={layoutInfo.rightbarFullscreen}>{main}</CenterColumn>\n <RightbarColumn>\n {renderSlot('rightbar', { width: normal.rightbar, viewportWidth: viewport, canShow: normal.rightbar > 0 })}\n </RightbarColumn>\n </>\n <div className={css.overlayLayer} data-shell-overlay>\n {overlays}\n </div>\n {leadingMounted && (\n <div className={css.leadingSeat} data-shell-leading>\n {leading}\n </div>\n )}\n {/* The collapsed rail is fixed-width: no resize handle while closed. */}\n {!sidebarCollapsed && <DragHandle side=\"sidebar\" left={cols.sidebar} onStart={onSidebarStart} onDrag={onSidebarDrag} onEnd={onDragEnd} />}\n {layoutInfo.rightbarShown && !layoutInfo.rightbarFullscreen && normal.rightbar > 0 && (\n <DragHandle side=\"rightbar\" left={viewport - normal.rightbar} onStart={onRightbarStart} onDrag={onRightbarDrag} onEnd={onDragEnd} />\n )}\n </div>\n )\n}\n", "/**\n * Normal column geometry: the right column shrinks, then loses its track,\n * before the center drops below its minimum. The sidebar never concedes here;\n * AppFrame supplies its effective preference after responsive collapse.\n */\n\n/** Resolved widths for one frame. */\nexport interface Columns { sidebar: number; center: number; rightbar: number }\n\n/** Center width protected while the normal right column is open. */\nexport const CENTER_MIN = 400\n/** Sidebar drag clamp floor. */\nexport const SIDEBAR_MIN = 264\n/** Sidebar drag clamp ceiling. */\nexport const SIDEBAR_MAX = 420\n/** Sidebar width before any user drag. */\nexport const SIDEBAR_DEFAULT = 280\n/** Closed-sidebar rail: a 24px icon column between 16px horizontal paddings. */\nexport const SIDEBAR_COLLAPSED = 56\n/** Viewport width below which the sidebar auto-collapses to the rail (deepsuite\n * LG breakpoint); a manual toggle below it re-expands over the squeezed center\n * (stores.ts narrowExpanded). */\nexport const SIDEBAR_AUTO_COLLAPSE = 1024\n/** Right column drag clamp floor. */\nexport const RIGHTBAR_MIN = 300\n/** Maximum normal right panel width as a fraction of the frame. */\nexport const RIGHTBAR_MAX_RATIO = 0.7\n/** First-open right panel preference as a fraction of the frame. */\nexport const RIGHTBAR_DEFAULT_RATIO = 0.45\n\n/**\n * Clamp a panel width into its contract range.\n * @param px - requested width.\n * @param min - range lower bound.\n * @param max - range upper bound.\n * @returns the clamped width.\n */\nexport function clampWidth(px: number, min: number, max: number): number {\n return Math.min(max, Math.max(min, Math.round(px)))\n}\n\n/**\n * Solve the three column widths for one viewport frame.\n * @param viewport - available frame width in px.\n * @param sidebar - sidebar width preference in px (0 = closed).\n * @param rightbar - requested right panel width in px (0 = no track).\n * @param collapsedWidth - track width of the closed sidebar; the default keeps\n * the icon rail, 0 hides the column entirely (macOS desktop).\n * @returns actual widths after shrinking or removing the right track; only\n * without that track may the center fall below its minimum, down to zero.\n */\nexport function computeColumns(viewport: number, sidebar: number, rightbar: number, collapsedWidth = SIDEBAR_COLLAPSED): Columns {\n const s = sidebar === 0 ? collapsedWidth : clampWidth(sidebar, SIDEBAR_MIN, SIDEBAR_MAX)\n const available = viewport - s - CENTER_MIN\n const r = rightbar === 0 || available < RIGHTBAR_MIN\n ? 0\n : Math.min(available, clampWidth(rightbar, RIGHTBAR_MIN, viewport * RIGHTBAR_MAX_RATIO))\n return { sidebar: s, center: Math.max(0, viewport - s - r), rightbar: r }\n}\n", "/** Browser title selection follows the active main panel without subscribing the frame. */\nimport { useEffect } from 'react'\nimport type { PropsRuntime } from '@deepseek-ai/dsh-client-ui-slots'\n\n/** Props for the browser title projection. */\nexport type DocumentTitleProps = Pick<PropsRuntime<'root'>, 'useSessions' | 'usePanelInfo'> & {\n /** Build-configured or localized product title. */\n productTitle: string\n}\n\n/**\n * Project the selected durable session title into the browser title and\n * restore the build-selected product title when unmounted.\n * @param props - Selected session title projection.\n * @returns No rendered content.\n */\nexport function DocumentTitle({ useSessions, usePanelInfo, productTitle }: DocumentTitleProps): null {\n const showSessionTitle = usePanelInfo(info => info.activePanelId === null)\n const title = useSessions((state) => {\n const current = Object.values(state.byId)\n .find(session => (session.retainedBy.mainView ?? 0) > 0)?.id\n return !showSessionTitle || current === undefined ? undefined : state.byId[current]?.title\n })\n useEffect(() => {\n document.title = title === undefined ? productTitle : `${title} \u2014 ${productTitle}`\n return () => { document.title = productTitle }\n }, [productTitle, title])\n return null\n}\n", ".frame {\n position: relative; /* anchors the drag handles, which straddle column borders */\n display: grid;\n grid-template-rows: 100%;\n height: 100%;\n overflow: hidden;\n background: var(--dsw-alias-bg-base);\n}\n\n/* Only a discrete collapse/expand toggle eases the tracks (the TSX holds\n data-animating across the toggle on the deepsuite sider curve). Steady-state\n tracks move only with the viewport, and those updates must land instantly:\n an eased track chases the live window edge and the centre column visibly\n rubber-bands while the user resizes the window. */\n.frame[data-animating] {\n transition: grid-template-columns var(--ds-transition-duration-slow) var(--ds-ease-in-out);\n}\n\n/* Dragging writes widths at pointer cadence; easing them would detach the\n column from the handle. */\n.frame[data-dragging] {\n transition: none;\n}\n\n/* The Windows caption row remains outside every conversation and file panel. */\n:global([data-windows-titlebar]) .frame {\n --dsh-windows-content-radius: 16px;\n box-sizing: border-box;\n padding-top: var(--dsh-windows-titlebar-height);\n grid-template-rows: minmax(0, 1fr);\n background: var(--dsw-specific-sidebar-fill);\n}\n\n:global([data-windows-titlebar]) .centerCol {\n background: var(--dsw-alias-bg-base);\n border-radius: var(--dsh-windows-content-radius) 0 0 0;\n corner-shape: round;\n}\n\n:global([data-windows-titlebar]) .frame::before {\n content: '';\n position: absolute;\n inset: 0 0 auto;\n height: var(--dsh-windows-titlebar-height);\n background: var(--dsw-specific-sidebar-fill);\n -webkit-app-region: drag;\n}\n\n:global([data-windows-titlebar]) .sidebarCol {\n border-right: none;\n}\n\n:global([data-windows-titlebar]) .handle {\n top: var(--dsh-windows-titlebar-height);\n}\n\n@media (prefers-reduced-motion: reduce) {\n .frame[data-animating] {\n transition: none;\n }\n}\n\n.sidebarCol {\n min-width: 0;\n overflow: hidden;\n background: var(--dsw-specific-sidebar-fill);\n border-right: 0.5px solid var(--dsw-alias-border-l3);\n}\n\n.centerCol {\n min-width: 0;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n/* Keep the covered main tree mounted and measured, but out of paint and focus.\n A glass theme can create a stacking context on the right panel, trapping its\n dock layer below main content. Fullscreen owns the visible center regardless\n of that theme; restoring it preserves the same composer and draft. */\n.frame[data-rightbar-fullscreen] .centerCol {\n visibility: hidden;\n}\n\n/* macOS desktop: the frame goes transparent so window vibrancy reaches the\n sidebar column, which keeps only a translucent tint; the centre paints the\n base background itself to stay opaque. The sidebar/centre separator moves\n to the opaque centre: on the translucent sidebar the alpha border mixes\n with the wallpaper and reads as a dark seam. */\n:global([data-platform='darwin']) .frame {\n background: transparent;\n}\n\n/* The constant step below the window's top strip (traffic lights, sidebar\n toggle, shell.leading controls), the same in both sidebar states. Entry\n pages in the main panel (plugin manager, settings-like pages \u2014 not the\n conversation, which owns its header) pad their top by it so their leading\n content clears the strip, and overlay primitives add their own safe inset.\n Declared on the root element rather than the frame so\n overlays portalled to document.body inherit it too. */\n:global(html[data-platform='darwin']) {\n --dsh-frame-top-clearance: 48px;\n}\n\n/* In-frame Windows content already clears the caption through .frame padding. */\n:global(html[data-windows-titlebar]) {\n --dsh-frame-top-clearance: var(--dsh-windows-titlebar-height);\n --dsh-frame-chrome-top: var(--dsh-windows-titlebar-height);\n}\n\n/* Portalled overlays share a viewport inset without adding space to entry pages. */\n:global(html[data-platform='darwin']),\n:global(html[data-windows-titlebar]) {\n --dsh-frame-overlay-top: calc(var(--dsh-frame-top-clearance) + 20px);\n}\n\n:global(html[data-platform='darwin'][data-fullscreen]),\n:global(html[data-windows-titlebar][data-fullscreen]) {\n --dsh-frame-overlay-top: 20px;\n --dsh-frame-chrome-top: 0px;\n}\n\n:global([data-platform='darwin']) .sidebarCol {\n /* A blue wash over the top of the translucent tint, gone by a third of the\n column; a faint blue-grey-violet rises through the bottom third; and a\n faint blue cast is mixed into the tint itself. Every layer stays\n transparent so vibrancy shows. */\n background:\n linear-gradient(\n to bottom,\n rgb(122 155 240 / 0.1),\n rgb(122 155 240 / 0) 35%,\n rgb(143 137 184 / 0) 68%,\n rgb(143 137 184 / 0.09)\n ),\n color-mix(in srgb, color-mix(in srgb, var(--dsw-specific-sidebar-fill) 97%, rgb(122 155 240)) 40%, transparent);\n border-right: none;\n}\n\n/* Dark drops the blue cast (the light-mode wash reads purple over dark fills)\n and thins the fill so more wallpaper shows; the washes stay. */\n:global([data-platform='darwin']) :global([data-ds-dark-theme]) .sidebarCol {\n background:\n linear-gradient(\n to bottom,\n rgb(122 155 240 / 0.08),\n rgb(122 155 240 / 0) 35%,\n rgb(143 137 184 / 0) 68%,\n rgb(143 137 184 / 0.07)\n ),\n color-mix(in srgb, var(--dsw-specific-sidebar-fill) 50%, transparent);\n}\n\n/* macOS Reduce Transparency: the OS flattens the window's vibrancy layer to a\n solid grey, so the thin tint and washes read washed-out over it. Replace\n them with a 90%-opaque fill of the same token in both themes (the dark\n selector repeats so this outranks its thinner fill). */\n@media (prefers-reduced-transparency: reduce) {\n :global([data-platform='darwin']) .sidebarCol,\n :global([data-platform='darwin']) :global([data-ds-dark-theme]) .sidebarCol {\n background: color-mix(in srgb, var(--dsw-specific-sidebar-fill) 90%, transparent);\n }\n}\n\n:global([data-platform='darwin']) .centerCol {\n background: var(--dsw-alias-bg-base);\n border-left: 0.5px solid var(--dsw-alias-border-l3);\n}\n\n/* The right track paints the base ground on the transparent frame: while the\n track and the occupant's translateX slide ride the same curve, the grid\n eases in layout and the transform on the compositor, so frames where they\n diverge would otherwise show vibrancy glass between the centre's right edge\n and the incoming panel. The occupant's opaque panel covers this at rest. */\n:global([data-platform='darwin']) .rightbarCol {\n background: var(--dsw-alias-bg-base);\n}\n\n/* The darwin closed sidebar has no rail: the centre reaches the window edge,\n where a separator would draw a seam against nothing. */\n:global([data-platform='darwin']) [data-sidebar-collapsed] .centerCol {\n border-left: none;\n}\n\n/* Published while the shell.leading seat is mounted (same condition as the\n TSX mount: darwin with the sidebar collapsed \u2014 the collapse that hides the\n column entirely): the inline band the window chrome occupies, measured from\n the frame's left edge \u2014 traffic lights to x 68, controls at x 88\n (28 + 8 + 28), then 8px of air. Main panels whose content reaches the\n top-left corner pad by this. */\n:global([data-platform='darwin']) .frame[data-sidebar-collapsed] {\n --dsh-frame-leading-clearance: 160px;\n}\n\n/* Fullscreen hides the traffic lights (preload mirrors the window state onto\n html[data-fullscreen]): the seat takes their band and the clearance keeps\n only the controls (12 + 28 + 8 + 28 + 8). The 12px start matches the\n expanded sidebar strip's inline padding (ui-sidebar .topStrip), so\n collapsing never shifts the toggle. */\n:global([data-platform='darwin'][data-fullscreen]) .frame[data-sidebar-collapsed] {\n --dsh-frame-leading-clearance: 84px;\n}\n\n:global([data-platform='darwin'][data-fullscreen]) .leadingSeat {\n left: 12px;\n}\n\n/* The frame declares no window drag of its own: every chrome row owns the drag\n over its own box (ui-web base.css holds the one rule; the ui-theme app-region\n gate lists the rows). The ordering rule that replaces the old \"band first\"\n invariant: a surface that covers the window and must stay clickable portals\n beside #root, which puts it after every drag row in document order. The Windows\n caption row above is the other platform's chrome and stays. */\n\n/* The seat itself: the two 28px controls centered on the conversation title\n row (10px header inset + 30px row \u2192 centre y 25) and level with the traffic\n lights (centre y \u2248 24). Sits above column content, below frame overlays\n (20) and the fullscreen right panel (40). The box subtracts itself from any\n window drag row beneath (Electron app-regions are geometry, not stacking). */\n.leadingSeat {\n position: absolute;\n top: 11px;\n left: 88px;\n z-index: 15;\n display: flex;\n align-items: center;\n -webkit-app-region: no-drag;\n}\n\n/* Drag handles are frame children (columns clip overflow): an 8px hit strip\n centered on the column border via inline left, above column content. No\n handle draws a visible pill: the details column was the only one that did,\n and the right column never had one. The right handle sits above the right\n panel (which states z-index 10) so it stays grabbable when the panel hangs\n over the centre. */\n.handle {\n position: absolute;\n top: 0;\n bottom: 0;\n width: 8px;\n margin-left: -4px;\n cursor: col-resize;\n z-index: 11;\n touch-action: none;\n}\n\n/* Rides the same curve as the tracks so the pill stays on the moving border\n during collapse/expand; instant at steady state (viewport-driven moves)\n and while dragging. */\n.frame[data-animating] .handle {\n transition: left var(--ds-transition-duration-slow) var(--ds-ease-in-out);\n}\n\n.frame[data-dragging] .handle {\n transition: none;\n}\n\n/* Fullscreen covers the frame while its underlying columns enter or exit. */\n.frame[data-rightbar-fullscreen],\n.frame[data-rightbar-fullscreen] .handle,\n.frame[data-rightbar-instant],\n.frame[data-rightbar-instant] .handle {\n transition: none;\n}\n\n@media (prefers-reduced-motion: reduce) {\n .frame[data-animating] .handle {\n transition: none;\n }\n}\n\n/*\n * The right column never clips: its occupant anchors a fixed-width panel to the\n * column's right edge (the frame's edge, which never moves) and lets the track\n * decide whether the centre makes room. With no track the panel hangs over the\n * centre from a zero-width column, and while the track animates the panel stays\n * where it is. The occupant draws its own left border.\n */\n.rightbarCol {\n position: relative;\n min-width: 0;\n overflow: visible;\n}\n\n.overlayLayer {\n position: absolute;\n inset: 0;\n z-index: 20;\n pointer-events: none;\n}\n\n.overlayLayer > * {\n pointer-events: auto;\n}\n", "/**\n * Root-owned frame measurement, panel preferences, and presentation reports.\n * The registration supplies a fresh store and binds its actions to ctx.layout.\n */\nimport { defineStore, type EngineStoreHandle } from '@deepseek-ai/dsh-client-store'\nimport type { MainPanelId } from './service.ts'\nimport {\n clampWidth, RIGHTBAR_DEFAULT_RATIO, RIGHTBAR_MAX_RATIO, RIGHTBAR_MIN,\n SIDEBAR_AUTO_COLLAPSE, SIDEBAR_DEFAULT, SIDEBAR_MAX, SIDEBAR_MIN,\n} from './columns.ts'\n\n/**\n * Transient layout preferences. Responsive concessions never rewrite widths;\n * the right panel's expanded state belongs to its occupant.\n */\ntype LayoutState = {\n panelInfo: {\n /** Null selects the Conversation; global panels keep the current Session intact. */\n activePanelId: MainPanelId | null\n }\n layoutInfo: LayoutInfo\n}\n\ntype LayoutInfo = {\n sidebar: number\n /** Last positive frame measurement; window width bootstraps the first render. */\n viewportWidth: number\n narrowExpanded: boolean\n /**\n * Saved right panel width in px, or null before its first opening. Resizing\n * the frame and closing the panel preserve this preference.\n */\n rightbar: number | null\n /**\n * Whether the right panel is drawn at all, in either presentation.\n *\n * Derived chrome, not a source of truth: whether the right surface is\n * expanded is a recorded fact owned by that surface, reported here so the\n * frame can place the panel's resize handle. The occupant reports it; nothing\n * else writes it.\n */\n rightbarShown: boolean\n /**\n * Whether the normal panel width reserves a grid track, including beneath\n * fullscreen. Reported by the occupant; always false while hidden.\n */\n rightbarTrack: boolean\n /** Reported fullscreen presentation; hides the outer resize handle. */\n rightbarFullscreen: boolean\n /** Suppress transitions for a fullscreen exit until another geometry action. */\n rightbarInstant: boolean\n}\n\n/**\n * Annotation twin of the actions literal below (the export needs a declared\n * return type); drift fails assignability at the defineStore call.\n */\ntype LayoutActions = {\n selectPanel: (draft: LayoutState, panelId: MainPanelId | null) => void\n retainMainPanels: (draft: LayoutState, panelIds: readonly string[]) => void\n setSidebar: (draft: LayoutState, px: number) => void\n toggleSidebar: (draft: LayoutState) => void\n setViewportWidth: (draft: LayoutState, width: number) => void\n setRightbar: (draft: LayoutState, px: number) => void\n openRightbar: (draft: LayoutState, track: boolean, fullscreen: boolean) => void\n closeRightbar: (draft: LayoutState) => void\n}\n\n/**\n * Create the layout panel store handle. For the sidebar the preference IS the\n * width, so closing it forgets its drag width \u2014 reopening restores the contract\n * default. The right panel initializes at 45% of the frame on first opening\n * and keeps that px preference across resizes and close. Drag writes clamp to\n * the current frame's range. Narrow sidebar toggles change only the expansion\n * override; opening the right panel clears that override.\n * @returns the store handle (spec + type + identity + factory in one).\n */\nexport function createLayoutStore(): EngineStoreHandle<LayoutState, LayoutActions> {\n const handle = defineStore({\n init: (): LayoutState => ({\n panelInfo: { activePanelId: null },\n layoutInfo: {\n sidebar: SIDEBAR_DEFAULT,\n viewportWidth: window.innerWidth,\n narrowExpanded: false,\n rightbar: null,\n rightbarShown: false,\n rightbarTrack: false,\n rightbarFullscreen: false,\n rightbarInstant: false,\n },\n }),\n actions: {\n selectPanel: (d, panelId: MainPanelId | null) => {\n d.panelInfo.activePanelId = panelId\n },\n retainMainPanels: (d, panelIds: readonly string[]) => {\n if (d.panelInfo.activePanelId !== null && !panelIds.includes(d.panelInfo.activePanelId)) {\n d.panelInfo.activePanelId = null\n }\n },\n setSidebar: (d, px: number) => {\n d.layoutInfo.rightbarInstant = false\n d.layoutInfo.sidebar = clampWidth(px, SIDEBAR_MIN, SIDEBAR_MAX)\n },\n // Narrow toggles flip only the override: the width preference survives\n // untouched, so re-widening restores the pre-squeeze layout.\n toggleSidebar: (d) => {\n d.layoutInfo.rightbarInstant = false\n if (d.layoutInfo.viewportWidth < SIDEBAR_AUTO_COLLAPSE) d.layoutInfo.narrowExpanded = !d.layoutInfo.narrowExpanded\n else d.layoutInfo.sidebar = d.layoutInfo.sidebar === 0 ? SIDEBAR_DEFAULT : 0\n },\n // Crossing the breakpoint in either direction drops the override: the\n // narrow default is auto-collapsed, the wide state is the preference.\n setViewportWidth: (d, width: number) => {\n if (d.layoutInfo.viewportWidth === width) return\n d.layoutInfo.rightbarInstant = false\n if ((d.layoutInfo.viewportWidth < SIDEBAR_AUTO_COLLAPSE) !== (width < SIDEBAR_AUTO_COLLAPSE)) {\n d.layoutInfo.narrowExpanded = false\n }\n d.layoutInfo.viewportWidth = width\n },\n setRightbar: (d, px: number) => {\n d.layoutInfo.rightbarInstant = false\n d.layoutInfo.rightbar = clampWidth(px, RIGHTBAR_MIN, Math.max(RIGHTBAR_MIN, d.layoutInfo.viewportWidth * RIGHTBAR_MAX_RATIO))\n },\n openRightbar: (d, track: boolean, fullscreen: boolean) => {\n if (!d.layoutInfo.rightbarShown || d.layoutInfo.rightbarTrack !== track || d.layoutInfo.rightbarFullscreen !== fullscreen) {\n d.layoutInfo.rightbarInstant = d.layoutInfo.rightbarFullscreen && !fullscreen\n }\n if (!d.layoutInfo.rightbarShown && d.layoutInfo.viewportWidth < SIDEBAR_AUTO_COLLAPSE) d.layoutInfo.narrowExpanded = false\n d.layoutInfo.rightbar ??= Math.max(RIGHTBAR_MIN, Math.round(d.layoutInfo.viewportWidth * RIGHTBAR_DEFAULT_RATIO))\n d.layoutInfo.rightbarShown = true\n d.layoutInfo.rightbarTrack = track\n d.layoutInfo.rightbarFullscreen = fullscreen\n },\n closeRightbar: (d) => {\n if (d.layoutInfo.rightbarShown) d.layoutInfo.rightbarInstant = d.layoutInfo.rightbarFullscreen\n d.layoutInfo.rightbarShown = false\n d.layoutInfo.rightbarTrack = false\n d.layoutInfo.rightbarFullscreen = false\n },\n },\n })\n return handle\n}\n", "/**\n * LayoutController: the cross-plugin panel-action face behind ctx.layout.\n * Panel geometry and main-panel selection live in the root layout store;\n * the current-session selection lives with the runtime sessions service, and\n * the per-session active view dissolved into ui-conversation's session store\n * (its only consumer). What remains here is the contract other plugins'\n * apply worlds reach for panel transitions (main-panel selection and sidebar toggle,\n * right-panel show/hide from ui-sidebar-right) \u2014 writes stay inside the\n * store's declared action set, shared with the root registration.\n */\nimport type { BoundActions, HostObservable } from '@deepseek-ai/dsh-client-ui-slots'\nimport type { Branded } from '@deepseek-ai/dsh-brand'\nimport type { createLayoutStore } from './stores.ts'\n\n/** Identity shared by a sidebar panel entry and its main-slot occupant. */\nexport type MainPanelId = Branded<'MainPanelId'>\n\n/** Root-scoped navigation state exposed to panel-aware components. */\nexport interface PanelInfo {\n /** Selected global panel; null displays the current Conversation. */\n readonly activePanelId: MainPanelId | null\n}\n\n/** The layout store's bound action set (framework-baked, draft params peeled). */\nexport type PanelActions = BoundActions<ReturnType<typeof createLayoutStore>>\n\n/** Panel navigation and geometry actions exposed through ctx.layout. */\nexport interface ILayout {\n /** Selected central panel from the same root store used by `usePanelInfo`. */\n readonly panelInfo: HostObservable<PanelInfo>\n /**\n * Select a global central panel without changing the current Session.\n * @param panelId - registered main key, or null to show the Conversation.\n * @throws if the selected main key is not registered; preserves the current selection.\n */\n selectPanel(panelId: MainPanelId | null): void\n /**\n * Start an asynchronous navigation, superseding any earlier pending navigation.\n * @returns a signal aborted by the next navigation or layout disposal; check it before committing UI state.\n */\n beginNavigation(): AbortSignal\n /** Toggle the sidebar panel (closed \u27F7 contract default width). */\n toggleSidebar(): void\n /**\n * Report the right panel's presentation without changing its expanded state.\n * @param track - whether the normal panel width reserves a grid track,\n * including beneath a fullscreen overlay.\n * @param fullscreen - whether the panel covers the frame and hides its outer\n * resize handle; independent of the underlying grid track.\n */\n openRightbar(track: boolean, fullscreen: boolean): void\n /** Report the right panel as hidden: no track, no handle. */\n closeRightbar(): void\n}\n\n/** Cross-plugin panel-action face (ctx.layout). */\nexport class LayoutController implements ILayout {\n private navigation = new AbortController()\n\n /**\n * @param panels - actions of the instance shared with the root entry.\n * @param hasMainPanel - checks the live main-slot registry for a panel id.\n * @param panelInfo - root store's shared central-panel selection source.\n */\n constructor(\n private readonly panels: PanelActions,\n private readonly hasMainPanel: (id: MainPanelId) => boolean,\n readonly panelInfo: HostObservable<PanelInfo>,\n ) {}\n\n /** Select a global panel or return to the Conversation. */\n selectPanel(panelId: MainPanelId | null): void {\n if (panelId !== null && !this.hasMainPanel(panelId)) {\n throw new Error(`layout.selectPanel: main panel \"${panelId}\" is not registered`)\n }\n this.navigation.abort()\n this.panels.selectPanel(panelId)\n }\n\n /** @returns the new pending navigation's cancellation signal. */\n beginNavigation(): AbortSignal {\n this.navigation.abort()\n this.navigation = new AbortController()\n return this.navigation.signal\n }\n\n /** Invalidate pending navigations when the layout owner is unloaded. */\n dispose(): void {\n this.navigation.abort()\n }\n\n /** Toggle the sidebar panel (closed \u27F7 contract default width). */\n toggleSidebar(): void {\n this.panels.toggleSidebar()\n }\n\n /** Report the right panel's track and fullscreen presentation. */\n openRightbar(track: boolean, fullscreen: boolean): void {\n this.panels.openRightbar(track, fullscreen)\n }\n\n /** Report the right panel as hidden: no track, no handle. */\n closeRightbar(): void {\n this.panels.closeRightbar()\n }\n}\n", "/** Layout command labels. */\nexport const zh = { toggle: '\u5C55\u5F00\uFF0F\u6536\u8D77\u5DE6\u4FA7\u680F' }\n/** English labels for the same layout commands. */\nexport const en: Record<keyof typeof zh, string> = { toggle: 'Toggle left sidebar' }\n", "/**\n * Global theme DOM applier: projects the resolved ThemeSnapshot onto the\n * document \u2014 `html { color-scheme }` for native UA chrome (scrollbars, form\n * controls), `body[data-ds-dark-theme]` for the token palette, the active\n * theme's alias-token overrides as inline CSS variables on body, the content\n * font-size axis (`--dsh-content-font-size`), `html[data-ds-theme-source]`\n * for native-chrome mirroring, and one presenter-owned\n * `meta[name=\"theme-color\"]` for surrounding browser UI. Pure DOM writes, no\n * React involvement; the presenter only ever retracts what it wrote itself,\n * so foreign attributes, metadata, and inline styles survive.\n */\nimport type { ThemeSnapshot } from '@deepseek-ai/dsh-client-ui-theme/client'\n\n/** Body attribute selecting the dark base palette in the token stylesheets. */\nexport const DARK_ATTRIBUTE = 'data-ds-dark-theme'\n\n/**\n * Root attribute publishing the theme source (`light`, `dark`, or `system`)\n * for host shells that mirror it into the native theme (the Electron preload\n * forwards it to `nativeTheme.themeSource`, so native chrome, renderer\n * `prefers-color-scheme` queries, and Platform login links follow the app\n * palette on every platform). `system` only when the preference is `system`;\n * a fixed preference (including registered theme ids) publishes its resolved\n * scheme.\n */\nexport const THEME_SOURCE_ATTRIBUTE = 'data-ds-theme-source'\n\n/** Body variable carrying the user's content font size in px. */\nexport const CONTENT_FONT_SIZE_VARIABLE = '--dsh-content-font-size'\n\n/** Applies theme snapshots to the document; one instance per plugin fiber. */\nexport class ThemePresenter {\n /** Token names this presenter wrote in the last apply (its retraction set). */\n private appliedTokens: string[] = []\n /** The single metadata node this presenter inserts and removes. */\n private readonly themeColorMeta: HTMLMetaElement\n\n /** Create the presenter-owned metadata node before the first snapshot arrives. */\n constructor() {\n this.themeColorMeta = document.createElement('meta')\n this.themeColorMeta.name = 'theme-color'\n }\n\n /**\n * Project a snapshot onto the document: set root `color-scheme` and the body\n * palette attribute from `active.colorScheme` (never the id \u2014 `system` is\n * resolved upstream), publish the content font-size axis, then replace the\n * previously applied token variables with `active.tokens`. Browser\n * theme-color metadata follows the computed body background after those\n * writes, so the rendered palette remains the color authority.\n * @param snapshot - resolved theme snapshot from ctx.theme.\n */\n apply(snapshot: ThemeSnapshot): void {\n const scheme = snapshot.active.colorScheme\n document.documentElement.style.colorScheme = scheme\n document.documentElement.setAttribute(THEME_SOURCE_ATTRIBUTE,\n snapshot.preference === 'system' ? 'system' : scheme)\n const body = document.body\n if (scheme === 'dark') body.setAttribute(DARK_ATTRIBUTE, '')\n else body.removeAttribute(DARK_ATTRIBUTE)\n body.style.setProperty(CONTENT_FONT_SIZE_VARIABLE, `${snapshot.fontSize}px`)\n for (const name of this.appliedTokens) body.style.removeProperty(name)\n this.appliedTokens = []\n for (const [name, value] of Object.entries(snapshot.active.tokens)) {\n body.style.setProperty(name, value)\n this.appliedTokens.push(name)\n }\n this.themeColorMeta.content = getComputedStyle(body).backgroundColor\n if (!this.themeColorMeta.isConnected) document.head.append(this.themeColorMeta)\n }\n\n /**\n * Retract root color-scheme, the theme-source attribute, the palette\n * attribute, token variables, the font-size axis, and the owned metadata node.\n */\n dispose(): void {\n document.documentElement.style.removeProperty('color-scheme')\n document.documentElement.removeAttribute(THEME_SOURCE_ATTRIBUTE)\n const body = document.body\n body.removeAttribute(DARK_ATTRIBUTE)\n body.style.removeProperty(CONTENT_FONT_SIZE_VARIABLE)\n for (const name of this.appliedTokens) body.style.removeProperty(name)\n this.appliedTokens = []\n this.themeColorMeta.remove()\n }\n}\n"],
|
|
5
5
|
"mappings": "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",
|
|
6
6
|
"names": ["import_react", "frame", "centerCol", "sidebarCol", "handle", "rightbarCol", "leadingSeat", "overlayLayer"]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["
|
|
3
|
+
"sources": ["../../../.host-source/packages/client/ui-layout/src/index.ts"],
|
|
4
4
|
"sourcesContent": ["/** Host loader entry for the browser-only layout plugin. */\n\n/** Provides no host-side behavior. */\nexport function apply(): void {}\n"],
|
|
5
5
|
"mappings": ";AAGO,SAAS,QAAc;AAAC;",
|
|
6
6
|
"names": []
|
package/package.json
CHANGED