svedocs 0.1.0-beta.5 → 0.1.0-beta.6

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.
@@ -4,6 +4,7 @@ export declare function createMockAiProvider(): AiProvider;
4
4
  export declare function createCloudflareAiSearchAiProvider(input: {
5
5
  binding: AiSearchBinding;
6
6
  instanceName?: string;
7
+ namespace?: boolean;
7
8
  systemPrompt?: string;
8
9
  model?: string;
9
10
  maxResults?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../src/ai/providers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAItD,OAAO,KAAK,EACV,UAAU,EACV,eAAe,EACf,WAAW,EAGX,0BAA0B,EAC3B,MAAM,YAAY,CAAC;AAEpB,wBAAgB,oBAAoB,IAAI,UAAU,CAajD;AAED,wBAAgB,kCAAkC,CAAC,KAAK,EAAE;IACxD,OAAO,EAAE,eAAe,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,UAAU,CAuDb;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE;IAC7C,EAAE,EAAE,0BAA0B,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GAAG,UAAU,CA2Bb;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,mBAAmB,EAAE,EAC9B,QAAQ,EAAE,MAAM,EAChB,KAAK,SAAI,GACR,WAAW,EAAE,CAMf;AAED,eAAO,MAAM,cAAc,YAAyB,CAAC"}
1
+ {"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../src/ai/providers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAItD,OAAO,KAAK,EACV,UAAU,EACV,eAAe,EACf,WAAW,EAGX,0BAA0B,EAC3B,MAAM,YAAY,CAAC;AAEpB,wBAAgB,oBAAoB,IAAI,UAAU,CAajD;AAED,wBAAgB,kCAAkC,CAAC,KAAK,EAAE;IACxD,OAAO,EAAE,eAAe,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,UAAU,CAuDb;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE;IAC7C,EAAE,EAAE,0BAA0B,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GAAG,UAAU,CA2Bb;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,mBAAmB,EAAE,EAC9B,QAAQ,EAAE,MAAM,EAChB,KAAK,SAAI,GACR,WAAW,EAAE,CAMf;AAED,eAAO,MAAM,cAAc,YAAyB,CAAC"}
@@ -19,7 +19,7 @@ export function createCloudflareAiSearchAiProvider(input) {
19
19
  const systemPrompt = input.systemPrompt ?? 'Answer from the documentation. Cite the pages you used.';
20
20
  async function ask(question) {
21
21
  const conversation = buildChatMessages(systemPrompt, question);
22
- const instance = resolveAiChatInstance(input.binding, input.instanceName);
22
+ const instance = resolveAiChatInstance(input.binding, input.instanceName, input.namespace);
23
23
  if (!instance.chatCompletions) {
24
24
  const result = await instance.search({
25
25
  messages: conversation,
@@ -48,7 +48,7 @@ export function createCloudflareAiSearchAiProvider(input) {
48
48
  name: 'cloudflare-ai-search',
49
49
  ask,
50
50
  async stream(question) {
51
- const instance = resolveAiChatInstance(input.binding, input.instanceName);
51
+ const instance = resolveAiChatInstance(input.binding, input.instanceName, input.namespace);
52
52
  if (!instance.chatCompletions) {
53
53
  return createSvedocsAnswerStream(await ask(question));
54
54
  }
@@ -116,8 +116,10 @@ function createSvedocsAnswerStream(result) {
116
116
  }
117
117
  });
118
118
  }
119
- function resolveAiChatInstance(binding, instanceName = 'svedocs') {
120
- return ('get' in binding ? binding.get(instanceName) : binding);
119
+ function resolveAiChatInstance(binding, instanceName = 'svedocs', namespace = false) {
120
+ return namespace
121
+ ? binding.get(instanceName)
122
+ : binding;
121
123
  }
122
124
  function normalizeCitations(citations) {
123
125
  return (citations ?? []).map((citation) => ({
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/ai/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,KAAK,EAAE,0BAA0B,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAG5F,OAAO,KAAK,EAAE,UAAU,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAGnG,MAAM,WAAW,mBAAmB;IAClC,iBAAiB,CAAC,EAAE,0BAA0B,GAAG,2BAA2B,GAAG,SAAS,CAAC;IACzF,EAAE,CAAC,EAAE,0BAA0B,GAAG,SAAS,CAAC;IAC5C,yBAAyB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/C,0BAA0B,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChD,uBAAuB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7C,6BAA6B,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnD,iCAAiC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvD,kCAAkC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxD,+BAA+B,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrD,qCAAqC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3D,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,iCAAiC;IAChD,MAAM,EAAE,IAAI,CAAC,qBAAqB,EAAE,IAAI,GAAG,YAAY,CAAC,CAAC;IACzD,GAAG,CAAC,EAAE,mBAAmB,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AAED,MAAM,WAAW,kCAAmC,SAAQ,IAAI,CAAC,wBAAwB,EAAE,SAAS,CAAC;IACnG,GAAG,CAAC,EAAE,mBAAmB,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,iCAAiC,GAAG,UAAU,CA6CjG;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,IAAI,CAAC,qBAAqB,EAAE,IAAI,GAAG,YAAY,CAAC,EACxD,OAAO,EAAE,mBAAmB,EAAE,EAC9B,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE,kCAAuC,GAC/C,OAAO,CAAC,QAAQ,CAAC,CAkBnB"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/ai/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,KAAK,EAAE,0BAA0B,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAC;AAG5F,OAAO,KAAK,EAAE,UAAU,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAGnG,MAAM,WAAW,mBAAmB;IAClC,iBAAiB,CAAC,EAAE,0BAA0B,GAAG,2BAA2B,GAAG,SAAS,CAAC;IACzF,EAAE,CAAC,EAAE,0BAA0B,GAAG,SAAS,CAAC;IAC5C,yBAAyB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/C,0BAA0B,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChD,uBAAuB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7C,6BAA6B,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnD,iCAAiC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvD,kCAAkC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxD,+BAA+B,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrD,qCAAqC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3D,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,iCAAiC;IAChD,MAAM,EAAE,IAAI,CAAC,qBAAqB,EAAE,IAAI,GAAG,YAAY,CAAC,CAAC;IACzD,GAAG,CAAC,EAAE,mBAAmB,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AAED,MAAM,WAAW,kCAAmC,SAAQ,IAAI,CAAC,wBAAwB,EAAE,SAAS,CAAC;IACnG,GAAG,CAAC,EAAE,mBAAmB,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,iCAAiC,GAAG,UAAU,CA8CjG;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,IAAI,CAAC,qBAAqB,EAAE,IAAI,GAAG,YAAY,CAAC,EACxD,OAAO,EAAE,mBAAmB,EAAE,EAC9B,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE,kCAAuC,GAC/C,OAAO,CAAC,QAAQ,CAAC,CAkBnB"}
@@ -23,6 +23,7 @@ export function createConfiguredAiProvider(options) {
23
23
  return createCloudflareAiSearchAiProvider({
24
24
  binding,
25
25
  instanceName: options.config.cloudflare.aiSearch.instanceName,
26
+ namespace: Boolean(options.config.cloudflare.aiSearch.namespace),
26
27
  ...(systemPrompt ? { systemPrompt } : {}),
27
28
  ...(typeof maxResults === 'number' ? { maxResults } : {})
28
29
  });
@@ -2,9 +2,10 @@ import type { CloudflareAiSearchInput, CloudflareAiSearchInstance, CloudflareAiS
2
2
  export declare function createCloudflareAiSearchProvider(input: {
3
3
  binding: CloudflareAiSearchInstance | CloudflareAiSearchNamespace;
4
4
  instanceName?: string;
5
+ namespace?: boolean;
5
6
  }): SearchProvider;
6
- export declare function runCloudflareAiSearch(binding: CloudflareAiSearchInstance | CloudflareAiSearchNamespace, instanceName: string | undefined, input: CloudflareAiSearchInput): Promise<CloudflareAiSearchOutput>;
7
+ export declare function runCloudflareAiSearch(binding: CloudflareAiSearchInstance | CloudflareAiSearchNamespace, instanceName: string | undefined, input: CloudflareAiSearchInput, namespace?: boolean): Promise<CloudflareAiSearchOutput>;
7
8
  export declare function normalizeCloudflareAiSearchResults(result: CloudflareAiSearchOutput, query: string): SearchResult[];
8
- export declare function resolveAiSearchInstance(binding: CloudflareAiSearchInstance | CloudflareAiSearchNamespace, instanceName?: string): CloudflareAiSearchInstance;
9
+ export declare function resolveAiSearchInstance(binding: CloudflareAiSearchInstance | CloudflareAiSearchNamespace, instanceName?: string, namespace?: boolean): CloudflareAiSearchInstance;
9
10
  export declare function createCloudflareAiSearchScopeFilters(scope?: SearchScope): Record<string, unknown> | undefined;
10
11
  //# sourceMappingURL=cloudflare.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cloudflare.d.ts","sourceRoot":"","sources":["../../src/search/cloudflare.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,uBAAuB,EACvB,0BAA0B,EAE1B,wBAAwB,EACxB,2BAA2B,EAC3B,YAAY,EACZ,WAAW,EACX,cAAc,EACf,MAAM,YAAY,CAAC;AAIpB,wBAAgB,gCAAgC,CAAC,KAAK,EAAE;IACtD,OAAO,EAAE,0BAA0B,GAAG,2BAA2B,CAAC;IAClE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,cAAc,CA4BjB;AAED,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,0BAA0B,GAAG,2BAA2B,EACjE,YAAY,oBAAY,EACxB,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAAC,wBAAwB,CAAC,CASnC;AAED,wBAAgB,kCAAkC,CAAC,MAAM,EAAE,wBAAwB,EAAE,KAAK,EAAE,MAAM,GAAG,YAAY,EAAE,CAKlH;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,0BAA0B,GAAG,2BAA2B,EACjE,YAAY,SAAY,GACvB,0BAA0B,CAE5B;AAED,wBAAgB,oCAAoC,CAAC,KAAK,GAAE,WAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAMjH"}
1
+ {"version":3,"file":"cloudflare.d.ts","sourceRoot":"","sources":["../../src/search/cloudflare.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,uBAAuB,EACvB,0BAA0B,EAE1B,wBAAwB,EACxB,2BAA2B,EAC3B,YAAY,EACZ,WAAW,EACX,cAAc,EACf,MAAM,YAAY,CAAC;AAIpB,wBAAgB,gCAAgC,CAAC,KAAK,EAAE;IACtD,OAAO,EAAE,0BAA0B,GAAG,2BAA2B,CAAC;IAClE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,GAAG,cAAc,CA4BjB;AAED,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,0BAA0B,GAAG,2BAA2B,EACjE,YAAY,oBAAY,EACxB,KAAK,EAAE,uBAAuB,EAC9B,SAAS,UAAQ,GAChB,OAAO,CAAC,wBAAwB,CAAC,CASnC;AAED,wBAAgB,kCAAkC,CAAC,MAAM,EAAE,wBAAwB,EAAE,KAAK,EAAE,MAAM,GAAG,YAAY,EAAE,CAKlH;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,0BAA0B,GAAG,2BAA2B,EACjE,YAAY,SAAY,EACxB,SAAS,UAAQ,GAChB,0BAA0B,CAI5B;AAED,wBAAgB,oCAAoC,CAAC,KAAK,GAAE,WAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAMjH"}
@@ -23,14 +23,14 @@ export function createCloudflareAiSearchProvider(input) {
23
23
  ...(filters ? { filters } : {})
24
24
  }
25
25
  }
26
- });
26
+ }, input.namespace);
27
27
  return normalizeCloudflareAiSearchResults(result, query.query)
28
28
  .filter((record) => matchesSearchScope({ metadata: record.metadata }, query));
29
29
  }
30
30
  };
31
31
  }
32
- export async function runCloudflareAiSearch(binding, instanceName = 'svedocs', input) {
33
- const instance = resolveAiSearchInstance(binding, instanceName);
32
+ export async function runCloudflareAiSearch(binding, instanceName = 'svedocs', input, namespace = false) {
33
+ const instance = resolveAiSearchInstance(binding, instanceName, namespace);
34
34
  const aiSearchOptions = createAiSearchOptions(input);
35
35
  const messages = input.messages;
36
36
  return instance.search({
@@ -45,8 +45,10 @@ export function normalizeCloudflareAiSearchResults(result, query) {
45
45
  }
46
46
  return (result.chunks ?? []).map((chunk, index) => createResultFromChunk(chunk, index, query, result.response ?? result.answer));
47
47
  }
48
- export function resolveAiSearchInstance(binding, instanceName = 'svedocs') {
49
- return 'get' in binding ? binding.get(instanceName) : binding;
48
+ export function resolveAiSearchInstance(binding, instanceName = 'svedocs', namespace = false) {
49
+ return namespace
50
+ ? binding.get(instanceName)
51
+ : binding;
50
52
  }
51
53
  export function createCloudflareAiSearchScopeFilters(scope = {}) {
52
54
  const filters = {
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/search/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAK7E,OAAO,KAAK,EACV,0BAA0B,EAC1B,2BAA2B,EAC3B,cAAc,EACd,WAAW,EAEZ,MAAM,YAAY,CAAC;AAGpB,MAAM,WAAW,uBAAuB;IACtC,iBAAiB,CAAC,EAAE,0BAA0B,GAAG,2BAA2B,GAAG,SAAS,CAAC;IACzF,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,sBAAsB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,0BAA0B,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChD,uBAAuB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7C,0BAA0B,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChD,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,oBAAoB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,oBAAoB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,yBAAyB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/C,sBAAsB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,qBAAqB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,4BAA4B,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClD,yBAAyB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/C,4BAA4B,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClD,iCAAiC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvD,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,qCAAqC;IACpD,MAAM,EAAE,IAAI,CAAC,qBAAqB,EAAE,QAAQ,GAAG,YAAY,CAAC,CAAC;IAC7D,OAAO,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAChC,GAAG,CAAC,EAAE,uBAAuB,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AAED,MAAM,WAAW,qCAAsC,SAAQ,IAAI,CAAC,qCAAqC,EAAE,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;IAC3I,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,qCAAqC,GAAG,cAAc,CAkD7G;AAED,wBAAsB,8BAA8B,CAClD,MAAM,EAAE,IAAI,CAAC,qBAAqB,EAAE,QAAQ,GAAG,YAAY,CAAC,EAC5D,OAAO,EAAE,mBAAmB,EAAE,EAC9B,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE,qCAA0C,GAClD,OAAO,CAAC,QAAQ,CAAC,CAkBnB;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,WAAW,CAU7D;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAGtE"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/search/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAK7E,OAAO,KAAK,EACV,0BAA0B,EAC1B,2BAA2B,EAC3B,cAAc,EACd,WAAW,EAEZ,MAAM,YAAY,CAAC;AAGpB,MAAM,WAAW,uBAAuB;IACtC,iBAAiB,CAAC,EAAE,0BAA0B,GAAG,2BAA2B,GAAG,SAAS,CAAC;IACzF,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,sBAAsB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,0BAA0B,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChD,uBAAuB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7C,0BAA0B,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChD,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,oBAAoB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,iBAAiB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,oBAAoB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,yBAAyB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/C,sBAAsB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5C,qBAAqB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,4BAA4B,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClD,yBAAyB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/C,4BAA4B,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClD,iCAAiC,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvD,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,qCAAqC;IACpD,MAAM,EAAE,IAAI,CAAC,qBAAqB,EAAE,QAAQ,GAAG,YAAY,CAAC,CAAC;IAC7D,OAAO,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAChC,GAAG,CAAC,EAAE,uBAAuB,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AAED,MAAM,WAAW,qCAAsC,SAAQ,IAAI,CAAC,qCAAqC,EAAE,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;IAC3I,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,qCAAqC,GAAG,cAAc,CAmD7G;AAED,wBAAsB,8BAA8B,CAClD,MAAM,EAAE,IAAI,CAAC,qBAAqB,EAAE,QAAQ,GAAG,YAAY,CAAC,EAC5D,OAAO,EAAE,mBAAmB,EAAE,EAC9B,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE,qCAA0C,GAClD,OAAO,CAAC,QAAQ,CAAC,CAkBnB;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,WAAW,CAU7D;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAGtE"}
@@ -13,7 +13,8 @@ export function createConfiguredSearchProvider(options) {
13
13
  if (binding) {
14
14
  return createCloudflareAiSearchProvider({
15
15
  binding,
16
- instanceName: options.config.cloudflare.aiSearch.instanceName
16
+ instanceName: options.config.cloudflare.aiSearch.instanceName,
17
+ namespace: Boolean(options.config.cloudflare.aiSearch.namespace)
17
18
  });
18
19
  }
19
20
  return createLocalSearchProvider(records);
@@ -180,15 +180,17 @@
180
180
  {/if}
181
181
  {#each messages as message (message.id)}
182
182
  <div class="sd-chat-bubble" data-role={message.role}>
183
- <div class="sd-chat-bubble-body">
184
- {#if message.role === 'assistant' && !message.content && loading && message.id === messages[messages.length - 1]?.id}
185
- <span class="sd-chat-typing" aria-label={t('ask.thinking')}>
186
- <span></span><span></span><span></span>
187
- </span>
188
- {:else}
189
- {message.content}
190
- {/if}
191
- </div>
183
+ {#if message.content || (message.role === 'assistant' && loading && message.id === messages[messages.length - 1]?.id)}
184
+ <div class="sd-chat-bubble-body">
185
+ {#if !message.content}
186
+ <span class="sd-chat-typing" aria-label={t('ask.thinking')}>
187
+ <span></span><span></span><span></span>
188
+ </span>
189
+ {:else}
190
+ {message.content}
191
+ {/if}
192
+ </div>
193
+ {/if}
192
194
  {#if message.citations && message.citations.length > 0}
193
195
  <div class="sd-chat-citations">
194
196
  {#each message.citations as citation}
@@ -1 +1 @@
1
- {"version":3,"file":"AskAiPanel.svelte.d.ts","sourceRoot":"","sources":["../../src/theme/AskAiPanel.svelte.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACnF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGtD,OAAO,KAAK,EAAE,sBAAsB,EAAuB,mBAAmB,EAAE,MAAM,YAAY,CAAC;AA8NnG,UAAU,kCAAkC,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,GAAG,MAAM;IACpM,KAAK,OAAO,EAAE,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,GAAG;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IAC9G,YAAY,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAKD,QAAA,MAAM,UAAU;YAVkL,qBAAqB;cAAY,mBAAmB,EAAE;kBAAgB,CAAC,MAAM,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC,GAAG,SAAS;YAAU,WAAW;gBAAc,qBAAqB,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;;iBAA2C,sBAAsB,GAAG,SAAS;cAAY,mBAAmB,GAAG,SAAS;;;kBAU5Z,CAAC;AAC9E,KAAK,UAAU,GAAG,YAAY,CAAC,OAAO,UAAU,CAAC,CAAC;AACpD,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"AskAiPanel.svelte.d.ts","sourceRoot":"","sources":["../../src/theme/AskAiPanel.svelte.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACnF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGtD,OAAO,KAAK,EAAE,sBAAsB,EAAuB,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAgOnG,UAAU,kCAAkC,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,GAAG,MAAM;IACpM,KAAK,OAAO,EAAE,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,GAAG;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IAC9G,YAAY,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAKD,QAAA,MAAM,UAAU;YAVkL,qBAAqB;cAAY,mBAAmB,EAAE;kBAAgB,CAAC,MAAM,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC,GAAG,SAAS;YAAU,WAAW;gBAAc,qBAAqB,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;;iBAA2C,sBAAsB,GAAG,SAAS;cAAY,mBAAmB,GAAG,SAAS;;;kBAU5Z,CAAC;AAC9E,KAAK,UAAU,GAAG,YAAY,CAAC,OAAO,UAAU,CAAC,CAAC;AACpD,eAAe,UAAU,CAAC"}
@@ -4,7 +4,7 @@
4
4
  import type { SvedocsSearchRecord } from '../core/types.js';
5
5
  import type { SearchResult, SearchScope } from '../search/types.js';
6
6
  import { createSearchController, fallbackTranslate } from './headless.js';
7
- import { portal } from './portal.js';
7
+ import { lockDocumentScroll, portal } from './portal.js';
8
8
  import type { SvedocsSearchController, SvedocsThemeContext } from './types.js';
9
9
 
10
10
  export let records: SvedocsSearchRecord[] = [];
@@ -31,6 +31,7 @@
31
31
  let previousFocus: HTMLElement | undefined;
32
32
  let boundController: SvedocsSearchController | undefined;
33
33
  let unsubscribeController: (() => void) | undefined;
34
+ let releaseScrollLock: (() => void) | undefined;
34
35
 
35
36
  $: t = context?.t ?? fallbackTranslate;
36
37
  $: activeController = controller ?? internalController;
@@ -86,7 +87,14 @@
86
87
  unsubscribeController?.();
87
88
  boundController = nextController;
88
89
  const unsubscribers = [
89
- nextController.open.subscribe((value) => (open = value)),
90
+ nextController.open.subscribe((value) => {
91
+ open = value;
92
+ if (value && !releaseScrollLock) releaseScrollLock = lockDocumentScroll();
93
+ if (!value && releaseScrollLock) {
94
+ releaseScrollLock();
95
+ releaseScrollLock = undefined;
96
+ }
97
+ }),
90
98
  nextController.query.subscribe((value) => (query = value)),
91
99
  nextController.activeIndex.subscribe((value) => (activeIndex = value)),
92
100
  nextController.results.subscribe((value) => (results = value)),
@@ -110,6 +118,7 @@
110
118
 
111
119
  onDestroy(() => {
112
120
  unsubscribeController?.();
121
+ releaseScrollLock?.();
113
122
  });
114
123
 
115
124
  function trapFocus(event: KeyboardEvent, root: HTMLElement | undefined) {
@@ -1 +1 @@
1
- {"version":3,"file":"SearchDialog.svelte.d.ts","sourceRoot":"","sources":["../../src/theme/SearchDialog.svelte.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,KAAK,EAAgB,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGpE,OAAO,KAAK,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAoL/E,UAAU,kCAAkC,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,GAAG,MAAM;IACpM,KAAK,OAAO,EAAE,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,GAAG;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IAC9G,YAAY,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAKD,QAAA,MAAM,YAAY;cAVsL,mBAAmB,EAAE;kBAAgB,CAAC,MAAM,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC,GAAG,SAAS;YAAU,WAAW;;;;iBAAqG,uBAAuB,GAAG,SAAS;cAAY,mBAAmB,GAAG,SAAS;;;kBAUtY,CAAC;AAChF,KAAK,YAAY,GAAG,YAAY,CAAC,OAAO,YAAY,CAAC,CAAC;AACxD,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"SearchDialog.svelte.d.ts","sourceRoot":"","sources":["../../src/theme/SearchDialog.svelte.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,KAAK,EAAgB,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGpE,OAAO,KAAK,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AA6L/E,UAAU,kCAAkC,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,GAAG,MAAM;IACpM,KAAK,OAAO,EAAE,OAAO,QAAQ,EAAE,2BAA2B,CAAC,KAAK,CAAC,GAAG,OAAO,QAAQ,EAAE,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,GAAG;QAAE,UAAU,CAAC,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC;IACjK,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,GAAG;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,KAAK,CAAA;KAAC,GAAG,OAAO,GAAG;QAAE,IAAI,CAAC,EAAE,GAAG,CAAC;QAAC,GAAG,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC;IAC9G,YAAY,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAKD,QAAA,MAAM,YAAY;cAVsL,mBAAmB,EAAE;kBAAgB,CAAC,MAAM,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC,GAAG,SAAS;YAAU,WAAW;;;;iBAAqG,uBAAuB,GAAG,SAAS;cAAY,mBAAmB,GAAG,SAAS;;;kBAUtY,CAAC;AAChF,KAAK,YAAY,GAAG,YAAY,CAAC,OAAO,YAAY,CAAC,CAAC;AACxD,eAAe,YAAY,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"headless.d.ts","sourceRoot":"","sources":["../../src/theme/headless.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,WAAW,EAAE,qBAAqB,EAAE,mBAAmB,EAAoB,MAAM,kBAAkB,CAAC;AAEtJ,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,KAAK,EAEV,sBAAsB,EACtB,6BAA6B,EAE7B,0BAA0B,EAC1B,0BAA0B,EAC1B,uBAAuB,EACvB,8BAA8B,EAC9B,mBAAmB,EACnB,0BAA0B,EAC1B,oBAAoB,EACrB,MAAM,YAAY,CAAC;AAcpB,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IACxC,MAAM,EAAE,qBAAqB,CAAC;IAC9B,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;IACtB,IAAI,CAAC,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACnC,MAAM,CAAC,EAAE,mBAAmB,EAAE,CAAC;IAC/B,UAAU,CAAC,EAAE,mBAAmB,CAAC,YAAY,CAAC,CAAC;IAC/C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,mBAAmB,CAgCtB;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,qBAAqB,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,eAAe,CAKnG;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,eAAe,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAEnF;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,SAAS,GAAG,MAAM,CAM1G;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,iBAAiB,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,MAAM,CAE1G;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,SAAS,GAAG,KAAK,EAAE,IAAI,EAAE,WAAW,GAAG,SAAS,GAAG,WAAW,CAKtG;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,qBAAqB,GAAG,MAAM,CAStE;AAED,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,EAAE,WAAW,SAAO,EAAE,GAAG,GAAE,KAAK,GAAG,KAAa,GAAG,MAAM,CAEtI;AASD,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGpE;AAED,wBAAgB,OAAO,CAAC,IAAI,EAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,GAAG,SAAS,CAEtF;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,EAC5E,OAAO,EAAE,mBAAmB,GAC3B;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CAQxE;AAED,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,UAAU,GAAG,GAAG,CAAC,GACnD,MAAM,CAER;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,MAAM,CAEvF;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,qBAAqB,GAAG,MAAM,CAK7F;AA6BD,wBAAgB,eAAe,CAAC,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAE1G;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,IAAI,CAWhG;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAclH;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIlD;AAED,wBAAgB,sBAAsB,CAAC,OAAO,GAAE,8BAAmC,GAAG,uBAAuB,CAmL5G;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,6BAA6B,GAAG,sBAAsB,CAmRpG;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GAAG,oBAAoB,CAoHxF;AAED,wBAAgB,yBAAyB,CAAC,WAAW,GAAE,OAAO,GAAG,MAAM,GAAG,QAAmB,GAAG,0BAA0B,CAiEzH;AAED,wBAAgB,yBAAyB,IAAI,0BAA0B,CAqBtE;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,qBAAqB,GAAG,0BAA0B,CAoCnG;AAED,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEvE;AAED,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,SAAW,EAAE,SAAS,SAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAcnJ;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,mBAAmB,EAAE,EAAE,KAAK,EAAE,WAAW,GAAG,YAAY,EAAE,CAU7G;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAS9H"}
1
+ {"version":3,"file":"headless.d.ts","sourceRoot":"","sources":["../../src/theme/headless.ts"],"names":[],"mappings":"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"}
@@ -432,9 +432,12 @@ export function createAskAiController(initial) {
432
432
  });
433
433
  if (response.headers.get('content-type')?.includes('text/event-stream')) {
434
434
  await readAskStream(response, assistantMsg.id, currentOptions.t);
435
- if (!response.ok && !findMessage(assistantMsg.id)?.error) {
436
- throw new Error(currentOptions.t('ask.requestError', { status: response.status }));
435
+ const streamedMessage = findMessage(assistantMsg.id);
436
+ if (!response.ok) {
437
+ throw new Error(streamedMessage?.error ?? currentOptions.t('ask.requestError', { status: response.status }));
437
438
  }
439
+ if (streamedMessage?.error && !streamedMessage.content.trim())
440
+ throw new Error(streamedMessage.error);
438
441
  return;
439
442
  }
440
443
  if (!response.ok) {
@@ -2,4 +2,5 @@ export declare function portal(node: HTMLElement, target?: HTMLElement | string)
2
2
  update(next: HTMLElement | string): void;
3
3
  destroy(): void;
4
4
  };
5
+ export declare function lockDocumentScroll(): () => void;
5
6
  //# sourceMappingURL=portal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"portal.d.ts","sourceRoot":"","sources":["../../src/theme/portal.ts"],"names":[],"mappings":"AAAA,wBAAgB,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,GAAE,WAAW,GAAG,MAAe;iBAS9D,WAAW,GAAG,MAAM;;EAQpC"}
1
+ {"version":3,"file":"portal.d.ts","sourceRoot":"","sources":["../../src/theme/portal.ts"],"names":[],"mappings":"AAAA,wBAAgB,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,GAAE,WAAW,GAAG,MAAe;iBAS9D,WAAW,GAAG,MAAM;;EAQpC;AAaD,wBAAgB,kBAAkB,IAAI,MAAM,IAAI,CAqC/C"}
@@ -17,3 +17,43 @@ export function portal(node, target = 'body') {
17
17
  }
18
18
  };
19
19
  }
20
+ let documentScrollLocks = 0;
21
+ let documentScrollState;
22
+ export function lockDocumentScroll() {
23
+ if (typeof document === 'undefined' || typeof window === 'undefined' || !document.body)
24
+ return () => { };
25
+ documentScrollLocks += 1;
26
+ if (documentScrollLocks === 1) {
27
+ const root = document.documentElement;
28
+ const body = document.body;
29
+ const scrollbarWidth = Math.max(0, window.innerWidth - root.clientWidth);
30
+ documentScrollState = {
31
+ rootOverflow: root.style.overflow,
32
+ bodyOverflow: body.style.overflow,
33
+ bodyPaddingRight: body.style.paddingRight,
34
+ scrollX: window.scrollX,
35
+ scrollY: window.scrollY
36
+ };
37
+ root.style.overflow = 'hidden';
38
+ body.style.overflow = 'hidden';
39
+ if (scrollbarWidth > 0) {
40
+ const currentPadding = Number.parseFloat(window.getComputedStyle(body).paddingRight) || 0;
41
+ body.style.paddingRight = `${currentPadding + scrollbarWidth}px`;
42
+ }
43
+ }
44
+ let released = false;
45
+ return () => {
46
+ if (released)
47
+ return;
48
+ released = true;
49
+ documentScrollLocks = Math.max(0, documentScrollLocks - 1);
50
+ if (documentScrollLocks > 0 || !documentScrollState)
51
+ return;
52
+ const state = documentScrollState;
53
+ documentScrollState = undefined;
54
+ document.documentElement.style.overflow = state.rootOverflow;
55
+ document.body.style.overflow = state.bodyOverflow;
56
+ document.body.style.paddingRight = state.bodyPaddingRight;
57
+ window.scrollTo(state.scrollX, state.scrollY);
58
+ };
59
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "svedocs",
3
- "version": "0.1.0-beta.5",
3
+ "version": "0.1.0-beta.6",
4
4
  "description": "SvelteKit-native documentation framework.",
5
5
  "license": "MIT",
6
6
  "repository": {