From cc8fe2814b2a82c0e2a266afdbf6150db88c8bec Mon Sep 17 00:00:00 2001 From: Darshan Date: Mon, 13 Oct 2025 14:40:23 +0530 Subject: [PATCH 001/209] feat: documents db [wip]. --- .../databases/(assets)/dark/mongo-db.svg | 27 ++ .../databases/(assets)/documents-db.svg | 103 ++++++ .../databases/(assets)/mongo-db.svg | 27 ++ .../databases/(assets)/tables-db.svg | 185 +++++++++++ .../databases/+page.svelte | 69 ++-- .../databases/create/+page.svelte | 296 ++++++++++++++++++ .../(entity)/helpers/init.ts | 2 +- .../(entity)/helpers/sdk.ts | 26 +- .../(suggestions)/input.svelte | 32 +- .../databases/database-[database]/+layout.ts | 8 +- .../database-[database]/+page.svelte | 17 +- .../database-[database]/breadcrumbs.svelte | 56 ++-- .../database-[database]/delete.svelte | 6 +- .../database-[database]/settings/+page.svelte | 6 +- .../table-[table]/rows/editRelated.svelte | 4 +- .../databases/empty.svelte | 129 ++++++++ .../databases/grid.svelte | 55 +++- .../databases/store.ts | 33 +- .../databases/table.svelte | 4 +- 19 files changed, 980 insertions(+), 105 deletions(-) create mode 100644 src/routes/(console)/project-[region]-[project]/databases/(assets)/dark/mongo-db.svg create mode 100644 src/routes/(console)/project-[region]-[project]/databases/(assets)/documents-db.svg create mode 100644 src/routes/(console)/project-[region]-[project]/databases/(assets)/mongo-db.svg create mode 100644 src/routes/(console)/project-[region]-[project]/databases/(assets)/tables-db.svg create mode 100644 src/routes/(console)/project-[region]-[project]/databases/create/+page.svelte create mode 100644 src/routes/(console)/project-[region]-[project]/databases/empty.svelte diff --git a/src/routes/(console)/project-[region]-[project]/databases/(assets)/dark/mongo-db.svg b/src/routes/(console)/project-[region]-[project]/databases/(assets)/dark/mongo-db.svg new file mode 100644 index 000000000..98239f728 --- /dev/null +++ b/src/routes/(console)/project-[region]-[project]/databases/(assets)/dark/mongo-db.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/routes/(console)/project-[region]-[project]/databases/(assets)/documents-db.svg b/src/routes/(console)/project-[region]-[project]/databases/(assets)/documents-db.svg new file mode 100644 index 000000000..0acf91cae --- /dev/null +++ b/src/routes/(console)/project-[region]-[project]/databases/(assets)/documents-db.svg @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/routes/(console)/project-[region]-[project]/databases/(assets)/mongo-db.svg b/src/routes/(console)/project-[region]-[project]/databases/(assets)/mongo-db.svg new file mode 100644 index 000000000..5f4f09c80 --- /dev/null +++ b/src/routes/(console)/project-[region]-[project]/databases/(assets)/mongo-db.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/routes/(console)/project-[region]-[project]/databases/(assets)/tables-db.svg b/src/routes/(console)/project-[region]-[project]/databases/(assets)/tables-db.svg new file mode 100644 index 000000000..59c64a58e --- /dev/null +++ b/src/routes/(console)/project-[region]-[project]/databases/(assets)/tables-db.svg @@ -0,0 +1,185 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/src/routes/(console)/project-[region]-[project]/databases/+page.svelte b/src/routes/(console)/project-[region]-[project]/databases/+page.svelte index 6044cf62f..a81fd1876 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/+page.svelte @@ -1,35 +1,29 @@ - - {#if $canWriteDatabases} - - {/if} - - {#if data.databases.total} + {@render containerHeader()} + {#if data.view === 'grid'} - + {:else} {/if} @@ -84,13 +67,33 @@ secondary>Clear Search {:else} - (showCreate = true)} /> + { + await goto( + withPath( + resolveRoute( + '/(console)/project-[region]-[project]/databases/create', + page.params + ), + `?type=${type}` + ) + ); + }} /> {/if} - +{#snippet containerHeader()} + + {#if $canWriteDatabases} + + {/if} + +{/snippet} diff --git a/src/routes/(console)/project-[region]-[project]/databases/create/+page.svelte b/src/routes/(console)/project-[region]-[project]/databases/create/+page.svelte new file mode 100644 index 000000000..76b7fa1e0 --- /dev/null +++ b/src/routes/(console)/project-[region]-[project]/databases/create/+page.svelte @@ -0,0 +1,296 @@ + + + +
+ +
+ + + + {#if !showCustomId} +
+ (showCustomId = true)}> + + Database ID + +
+ {/if} + + +
+
+ + {#if typeFromParams === null} +
+ {@render selectDatabaseType()} +
+ {/if} + +
+ {#if isCloud} + {@render cloudBackupOptions()} + {:else} + {@render selfHostedBackupOptions()} + {/if} +
+
+ + + + + + +
+ +{#snippet cloudBackupOptions()} + {#if $organization?.billingPlan === BillingPlan.FREE} + + {#each Array.from({ length: 3 }) as _} + + One backup every 24 hours, retained for 30 days + + {/each} + + {:else} + + Upgrade your plan to ensure your data stays safe and backed up. + + + + + {/if} +{/snippet} + +{#snippet selfHostedBackupOptions()} + + {@const length = $isTabletViewport ? 2 : 3} + {@const gridsColumn = $isSmallViewport ? 2 : 3} + + {#if $isSmallViewport} +
+ +
+ Mock Numbers Example +
+
+ {:else if $isTabletViewport} + +
+
+ Backups Example +
+
+ {:else} + {#each Array.from({ length }) as _} + + One backup every 24 hours, retained for 30 days + + {/each} + {/if} +
+ + + + + Database Backups are available on Appwrite Cloud + + + + Sign up now to access Appwrite's backups. Schedule automatic or manual backups + to protect your data and ensure quick recovery. + + + + + +
+{/snippet} + +{#snippet selectDatabaseType()} + + {#each databaseTypes as databaseType} + + {databaseType.subtitle} + + {/each} + +{/snippet} diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/init.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/init.ts index 739e07434..d152b8df6 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/init.ts +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/init.ts @@ -17,7 +17,7 @@ export type Terminologies = { analytics: AnalyticsResult; terminology: TerminologyResult; dependencies: DependenciesResult; - databaseSdk: DatabaseSdkResult; + databasesSdk: DatabaseSdkResult; }; export function getTerminologies(): Terminologies { diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/sdk.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/sdk.ts index 54220872a..5700e1938 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/sdk.ts +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/sdk.ts @@ -5,6 +5,14 @@ import { type DatabaseType, type Entity, type EntityList, toSupportiveEntity } f import type { Models } from '@appwrite.io/console'; export type DatabaseSdkResult = { + create: ( + type: DatabaseType, + params: { + databaseId: string; + name: string; + enabled?: boolean; + } + ) => Promise; list: (params: { queries?: string[]; search?: string }) => Promise; getEntity: (params: { databaseId: string; @@ -42,6 +50,22 @@ export function useDatabasesSdk( const baseSdk = sdk.forProject(region, project); return { + async create(type, params): Promise { + switch (type) { + case 'legacy': /* databases api */ + case 'tablesdb': { + return await baseSdk.tablesDB.create(params); + } + case 'documentsdb': { + return await baseSdk.documentsDB.create(params); + } + case 'vectordb': + throw new Error(`Database type not supported yet`); + default: + throw new Error('Unknown database type'); + } + }, + async list(params): Promise { const results = await Promise.all([ baseSdk.tablesDB.list(params) @@ -74,7 +98,7 @@ export function useDatabasesSdk( case 'vectordb': throw new Error(`Database type not supported yet`); default: - throw new Error(`Unknown database type`); + throw new Error('Unknown database type'); } }, diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/input.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/input.svelte index 16666a904..be98a0ee2 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/input.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/input.svelte @@ -16,19 +16,39 @@ const featureActive = $derived(isCloud); const { terminology } = getTerminologies(); + + const type = terminology.type; const field = terminology.field.lower; const entity = terminology.entity.lower.singular; const title = $derived.by(() => { - return featureActive - ? `Smart ${field.singular} suggestions` - : `Smart ${field.singular} suggestions available on Cloud`; + switch (type) { + default: + case 'legacy': + case 'tablesdb': + return featureActive + ? `Smart ${field.singular} suggestions` + : `Smart ${field.singular} suggestions available on Cloud`; + + case 'documentsdb': + return featureActive ? `Sample Data` : `Sample Data available on Cloud`; + } }); const subtitle = $derived.by(() => { - return featureActive - ? `Enable AI to suggest useful ${field.plural} based on your ${entity} name` - : `Sign up for Cloud to generate ${field.plural} based on your ${entity} name`; + switch (type) { + default: + case 'legacy': + case 'tablesdb': + return featureActive + ? `Enable AI to suggest useful ${field.plural} based on your ${entity} name` + : `Sign up for Cloud to generate ${field.plural} based on your ${entity} name`; + + case 'documentsdb': + return featureActive + ? `Enable AI to generate sample documents based on your ${entity} name` + : `Sign up for Cloud to generate sample documents based on your ${entity} name`; + } }); diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/+layout.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/+layout.ts index d469b86b3..2c097408d 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/+layout.ts +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/+layout.ts @@ -1,8 +1,8 @@ -import { sdk } from '$lib/stores/sdk'; -import { Dependencies } from '$lib/constants'; -import type { LayoutLoad } from './$types'; -import Breadcrumbs from './breadcrumbs.svelte'; import Header from './header.svelte'; +import { sdk } from '$lib/stores/sdk'; +import type { LayoutLoad } from './$types'; +import { Dependencies } from '$lib/constants'; +import Breadcrumbs from './breadcrumbs.svelte'; import SubNavigation from './subNavigation.svelte'; export const load: LayoutLoad = async ({ params, depends }) => { diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/+page.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/+page.svelte index 90066c9f9..e9bf52da2 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/+page.svelte @@ -34,6 +34,17 @@ function getImageRoute(type: 'light' | 'dark'): string { return withPath(resolveRoute('/'), `/images/empty-database-${type}.svg`); } + + const emptyPageText = $derived.by(() => { + switch (terminology.type) { + default: + case 'legacy': + case 'tablesdb': + return `Create, organize, and query structured data with ${entityTitle.plural}.`; + case 'documentsdb': + return `Create, organize, and query flexible data with ${entityTitle.plural}.`; + } + }); @@ -53,7 +64,7 @@ {#if $canWriteTables} {/if} @@ -86,9 +97,7 @@ - - Create, organize, and query structured data with {entityTitle.plural}. - + {emptyPageText} + + {/if} {/if} diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/backups/store.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/backups/store.ts index 43cc2552d..55a48f926 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/backups/store.ts +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/backups/store.ts @@ -5,8 +5,21 @@ import type { UserBackupPolicy } from '$lib/helpers/backups'; export const showCreatePolicy = writable(false); export const showCreateBackup = writable(false); +export const dailyPolicy: UserBackupPolicy = { + id: 'daily', + label: 'Daily', + retained: 7, + default: true, + checked: false, + schedule: '{time} * * *', + selectedTime: '00:00', + plainTextFrequency: 'daily', + description: 'Runs every day and is retained for 7 days' +}; + export const presetPolicies = writable([ { + id: 'hourly', label: 'Hourly', retained: 1, default: true, @@ -17,6 +30,7 @@ export const presetPolicies = writable([ description: 'Runs every hour and is retained for 24 hours' }, { + id: 'daily', label: 'Daily', retained: 7, default: true, @@ -25,6 +39,13 @@ export const presetPolicies = writable([ selectedTime: '00:00', plainTextFrequency: 'daily', description: 'Runs every day and is retained for 7 days' + }, + { + id: 'none', + label: 'No backup', + retained: null, + default: false, + description: 'Skip backups. You can change this later' } ]); diff --git a/src/routes/(console)/project-[region]-[project]/databases/grid.svelte b/src/routes/(console)/project-[region]-[project]/databases/grid.svelte index 99e3fc846..ca8f74592 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/grid.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/grid.svelte @@ -37,11 +37,7 @@ {database.name} - + @@ -66,9 +62,3 @@

Create a database

- - From 8c71fe34227b84b56b26e1b8e4dc69ee96d30cc6 Mon Sep 17 00:00:00 2001 From: Darshan Date: Mon, 13 Oct 2025 20:12:15 +0530 Subject: [PATCH 003/209] update: setup collections page, route. update: move things around. --- src/lib/actions/analytics.ts | 13 ++ src/lib/commandCenter/commands.ts | 2 + src/lib/constants.ts | 3 + .../databases/create.svelte | 154 ---------------- .../(entity)/helpers/sdk.ts | 39 ++++- .../(entity)/helpers/terminology.ts | 2 +- .../(entity)/views/header.svelte | 4 +- .../(entity)/views/indexes/view.svelte | 4 +- .../(entity)/views/layouts/empty.svelte | 3 +- .../(suggestions)/empty.svelte | 3 +- .../database-[database]/+layout.svelte | 30 ++-- .../collection-[collection]/+layout.svelte | 164 ++++++++++++++++++ .../collection-[collection]/+layout.ts | 22 +++ .../collection-[collection]/+page.svelte | 136 +++++++++++++++ .../collection-[collection]/+page.ts | 62 +++++++ .../activity/+page.svelte | 14 ++ .../collection-[collection]/activity/+page.ts | 21 +++ .../collection-[collection]/header.svelte | 54 ++++++ .../indexes/+page.svelte | 68 ++++++++ .../settings/+page.svelte | 65 +++++++ .../collection-[collection]/store.ts | 5 + .../usage/[[period]]/+page.svelte | 11 ++ .../usage/[[period]]/+page.ts | 16 ++ .../databases/database-[database]/store.ts | 54 ++++++ .../table-[table]/+layout.svelte | 15 +- .../table-[table]/+page.svelte | 4 +- .../table-[table]/+page.ts | 5 +- .../table-[table]/rows/edit.svelte | 7 +- .../table-[table]/rows/editRelated.svelte | 11 +- .../table-[table]/rows/store.ts | 19 +- .../table-[table]/spreadsheet.svelte | 10 +- .../table-[table]/store.ts | 38 +--- 32 files changed, 803 insertions(+), 255 deletions(-) delete mode 100644 src/routes/(console)/project-[region]-[project]/databases/create.svelte create mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+layout.svelte create mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+layout.ts create mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+page.svelte create mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+page.ts create mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/activity/+page.svelte create mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/activity/+page.ts create mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/header.svelte create mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/indexes/+page.svelte create mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/settings/+page.svelte create mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/store.ts create mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/usage/[[period]]/+page.svelte create mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/usage/[[period]]/+page.ts diff --git a/src/lib/actions/analytics.ts b/src/lib/actions/analytics.ts index 5e28ad881..28ce7f5b0 100644 --- a/src/lib/actions/analytics.ts +++ b/src/lib/actions/analytics.ts @@ -288,6 +288,11 @@ export enum Submit { RowUpdate = 'submit_row_update', RowUpdatePermissions = 'submit_row_update_permissions', + DocumentCreate = 'submit_document_create', + DocumentDelete = 'submit_document_delete', + DocumentUpdate = 'submit_document_update', + DocumentUpdatePermissions = 'submit_document_update_permissions', + IndexCreate = 'submit_index_create', IndexDelete = 'submit_index_delete', @@ -299,6 +304,14 @@ export enum Submit { TableUpdateEnabled = 'submit_table_update_enabled', TableUpdateDisplayNames = 'submit_table_update_display_names', + CollectionCreate = 'submit_collection_create', + CollectionDelete = 'submit_collection_delete', + CollectionUpdateName = 'submit_collection_update_name', + CollectionUpdatePermissions = 'submit_collection_update_permissions', + CollectionUpdateSecurity = 'submit_collection_update_security', + CollectionUpdateEnabled = 'submit_collection_update_enabled', + CollectionUpdateDisplayNames = 'submit_collection_update_display_names', + FunctionCreate = 'submit_function_create', FunctionDelete = 'submit_function_delete', FunctionUpdateName = 'submit_function_update_name', diff --git a/src/lib/commandCenter/commands.ts b/src/lib/commandCenter/commands.ts index fa8427d30..a2edb2f96 100644 --- a/src/lib/commandCenter/commands.ts +++ b/src/lib/commandCenter/commands.ts @@ -29,9 +29,11 @@ const groups = [ 'migrations', 'users', 'tables', + 'collections', 'columns', 'indexes', 'rows', + 'documents', 'teams', 'security', 'buckets', diff --git a/src/lib/constants.ts b/src/lib/constants.ts index 8fd03090e..962b685ac 100644 --- a/src/lib/constants.ts +++ b/src/lib/constants.ts @@ -46,6 +46,9 @@ export enum Dependencies { TABLE = 'dependency:table', ROW = 'dependency:row', ROWS = 'dependency:rows', + COLLECTION = 'dependency:collection', + DOCUMENT = 'dependency:document', + DOCUMENTS = 'dependency:documents', BUCKET = 'dependency:bucket', FILE = 'dependency:file', FILE_TOKENS = 'dependency:file_tokens', diff --git a/src/routes/(console)/project-[region]-[project]/databases/create.svelte b/src/routes/(console)/project-[region]-[project]/databases/create.svelte deleted file mode 100644 index 065daf650..000000000 --- a/src/routes/(console)/project-[region]-[project]/databases/create.svelte +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - {#if !showCustomId} -
- { - showCustomId = true; - }}> Database ID -
- {/if} - - - - {#if isCloud} - {#if $organization?.billingPlan === BillingPlan.FREE} - - Upgrade your plan to ensure your data stays safe and backed up. - - - - - {:else} - - {/if} - {/if} - - - - -
diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/sdk.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/sdk.ts index 5700e1938..dc4bdf05b 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/sdk.ts +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/sdk.ts @@ -14,6 +14,12 @@ export type DatabaseSdkResult = { } ) => Promise; list: (params: { queries?: string[]; search?: string }) => Promise; + createEntity: (params: { + databaseId: string; + entityId: string; + name: string; + databaseType?: DatabaseType; + }) => Promise; getEntity: (params: { databaseId: string; entityId: string; @@ -60,7 +66,7 @@ export function useDatabasesSdk( return await baseSdk.documentsDB.create(params); } case 'vectordb': - throw new Error(`Database type not supported yet`); + throw new Error('Database type not supported yet'); default: throw new Error('Unknown database type'); } @@ -83,6 +89,31 @@ export function useDatabasesSdk( ); }, + async createEntity(params) { + switch (type ?? params.databaseType) { + case 'legacy': /* databases api */ + case 'tablesdb': { + const table = await baseSdk.tablesDB.createTable({ + ...params, + tableId: params.entityId + }); + return toSupportiveEntity(table); + } + case 'documentsdb': { + const table = await baseSdk.documentsDB.createCollection({ + ...params, + collectionId: params.entityId + }); + + return toSupportiveEntity(table); + } + case 'vectordb': + throw new Error('Database type not supported yet'); + default: + throw new Error('Unknown database type'); + } + }, + async listEntities(params) { switch (type ?? params.databaseType) { case 'legacy': /* databases api */ @@ -96,7 +127,7 @@ export function useDatabasesSdk( return { total, entities: collections.map(toSupportiveEntity) }; } case 'vectordb': - throw new Error(`Database type not supported yet`); + throw new Error('Database type not supported yet'); default: throw new Error('Unknown database type'); } @@ -120,7 +151,7 @@ export function useDatabasesSdk( return toSupportiveEntity(table); } case 'vectordb': - throw new Error(`Database type not supported yet`); + throw new Error('Database type not supported yet'); default: throw new Error(`Unknown database type`); } @@ -134,7 +165,7 @@ export function useDatabasesSdk( case 'documentsdb': return await baseSdk.documentsDB.delete(params); case 'vectordb': - throw new Error(`Database type not supported yet`); + throw new Error('Database type not supported yet'); default: throw new Error(`Unknown database type`); } diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/terminology.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/terminology.ts index 6fff779c4..faac888aa 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/terminology.ts +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/terminology.ts @@ -1,8 +1,8 @@ import type { Page } from '@sveltejs/kit'; import { capitalize, plural } from '$lib/helpers/string'; +import type { Attributes, Columns, Table } from '$database/store'; import { AppwriteException, type Models } from '@appwrite.io/console'; -import type { Attributes, Columns, Table } from '$database/table-[table]/store'; import type { Term, TerminologyResult, TerminologyShape } from '$database/(entity)/helpers/types'; export type DatabaseType = 'legacy' | 'tablesdb' | 'documentsdb' | 'vectordb'; diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/header.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/header.svelte index c30dfece8..4ea12bc79 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/header.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/header.svelte @@ -8,8 +8,8 @@ import { type Entity, useTerminology } from '$database/(entity)'; import { resolveRoute, withPath } from '$lib/stores/navigation'; + import { expandTabs } from '$database/store'; import { preferences } from '$lib/stores/preferences'; - import { expandTabs } from '$database/table-[table]/store'; interface EntityTab { href: string; @@ -65,7 +65,7 @@ $effect(() => { if (nonSheetPages) expandTabs.set(true); else { - expandTabs.set(preferences.getKey('tableHeaderExpanded', true)); + expandTabs.set(preferences.getKey('entityHeaderExpanded', true)); } }); diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/indexes/view.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/indexes/view.svelte index 8f68ba2c6..9a7a3840e 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/indexes/view.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/indexes/view.svelte @@ -50,7 +50,7 @@ onCreateIndex: (index: CreateIndexesCallbackType) => Promise; onDeleteIndexes: (indexKeys: string[]) => Promise; emptyIndexesSheetView: Snippet<[() => void]>; - emptyEntitiesSheetView?: Snippet; + emptyEntitiesSheetView?: Snippet<[() => void]>; } = $props(); let showCreateIndex = $state(false); @@ -294,7 +294,7 @@ {@render emptyIndexesSheetView(() => (showCreateIndex = true))} {/if} {:else} - {@render emptyEntitiesSheetView?.()} + {@render emptyEntitiesSheetView?.(() => (showCreateIndex = true))} {/if} {#if selectedIndexes.length > 0} diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/layouts/empty.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/layouts/empty.svelte index f4bedb2e7..66e6d3a2a 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/layouts/empty.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/layouts/empty.svelte @@ -14,7 +14,8 @@ import { SpreadsheetContainer } from '$database/(entity)'; import { onDestroy, onMount } from 'svelte'; import { debounce } from '$lib/helpers/debounce'; - import { expandTabs, spreadsheetLoading } from '$database/table-[table]/store'; + import { expandTabs } from '$database/store'; + import { spreadsheetLoading } from '$database/table-[table]/store'; type Mode = 'rows' | 'rows-filtered' | 'indexes'; diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte index a6260fe60..2be6de4ce 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte @@ -13,7 +13,7 @@ import { IconFingerPrint, IconPlus } from '@appwrite.io/pink-icons-svelte'; import { isSmallViewport, isTabletViewport } from '$lib/stores/viewport'; import type { Column } from '$lib/helpers/types'; - import { expandTabs } from '../table-[table]/store'; + import { expandTabs, type Columns } from '../store'; import { SpreadsheetContainer } from '$database/(entity)'; import { onDestroy, onMount, tick } from 'svelte'; import { sdk } from '$lib/stores/sdk'; @@ -33,7 +33,6 @@ import { invalidate } from '$app/navigation'; import { Dependencies } from '$lib/constants'; import { isWithinSafeRange } from '$lib/helpers/numbers'; - import type { Columns } from '../table-[table]/store'; import { columnOptions } from '../table-[table]/columns/store'; import Options from './options.svelte'; import { InputSelect, InputText } from '$lib/elements/forms'; diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/+layout.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/+layout.svelte index b11e83f6e..c84cc4461 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/+layout.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/+layout.svelte @@ -18,8 +18,10 @@ import { currentPlan } from '$lib/stores/organization'; import { isCloud } from '$lib/system'; import { noWidthTransition } from '$lib/stores/sidebar'; - import { CreateEntity, setTerminologies } from '$database/(entity)'; - import { sdk } from '$lib/stores/sdk'; + import { CreateEntity, getTerminologies, setTerminologies } from '$database/(entity)'; + import { resolveRoute, withPath } from '$lib/stores/navigation'; + + setTerminologies(page); const project = page.params.project; const databaseId = page.params.database; @@ -137,22 +139,26 @@ $noWidthTransition = true; - async function createEntity(tableId: string, name: string) { - const table = await sdk - .forProject(page.params.region, page.params.project) - .tablesDB.createTable({ - databaseId, - tableId, - name - }); + async function createEntity(entityId: string, name: string) { + const entity = await databasesSdk.createEntity({ + databaseId, + entityId, + name + }); await invalidate(Dependencies.DATABASE); await goto( - `${base}/project-${page.params.region}-${project}/databases/database-${databaseId}/table-${table.$id}` + withPath( + resolveRoute( + '/(console)/project-[region]-[project]/databases/database-[database]', + page.params + ), + `/${terminology.entity.lower.singular}-${entity.$id}` + ) ); } - $: setTerminologies(page); + const { databasesSdk, terminology } = getTerminologies(); diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+layout.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+layout.svelte new file mode 100644 index 000000000..f49d3685f --- /dev/null +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+layout.svelte @@ -0,0 +1,164 @@ + + + + + + {collection?.name ?? 'Collection'} - Appwrite + + + diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+layout.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+layout.ts new file mode 100644 index 000000000..4ea0e31ea --- /dev/null +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+layout.ts @@ -0,0 +1,22 @@ +import Header from './header.svelte'; +import type { LayoutLoad } from './$types'; +import { Dependencies } from '$lib/constants'; +import { Breadcrumbs, useDatabasesSdk } from '$database/(entity)'; + +export const load: LayoutLoad = async ({ params, depends, parent }) => { + const { database } = await parent(); + depends(Dependencies.COLLECTION); + + const databasesSdk = useDatabasesSdk(params.region, params.project, database.type); + + const collection = await databasesSdk.getEntity({ + databaseId: params.database, + entityId: params.collection + }); + + return { + collection, + header: Header, + breadcrumbs: Breadcrumbs + }; +}; diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+page.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+page.svelte new file mode 100644 index 000000000..675ff6671 --- /dev/null +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+page.svelte @@ -0,0 +1,136 @@ + + +{#key page.params.collection} + + + + + + {#if !$isSmallViewport} + + + + {/if} + + + {#if $isSmallViewport} + + {/if} + + + +
+ {#if data.documents.total} + + + {JSON.stringify( + { + documents: data.documents + }, + 2, + null + )} + {:else if $hasPageQueries} + Nothing here, please go + {:else} + Nothing here, please go + {/if} +
+{/key} + +{#if showImportCSV} + + +{/if} + + diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+page.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+page.ts new file mode 100644 index 000000000..494e8c3ad --- /dev/null +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+page.ts @@ -0,0 +1,62 @@ +import { Dependencies, SPREADSHEET_PAGE_LIMIT } from '$lib/constants'; +import { getLimit, getPage, getQuery, getView, pageToOffset, View } from '$lib/helpers/load'; +import { sdk } from '$lib/stores/sdk'; +import { Query } from '@appwrite.io/console'; +import type { PageLoad } from './$types'; +import { queries, queryParamToMap } from '$lib/components/filters'; +import type { TagValue } from '$lib/components/filters/store'; +import type { Entity } from '$database/(entity)'; +import { buildWildcardEntitiesQuery } from '$database/store'; + +export const load: PageLoad = async ({ params, depends, url, route, parent }) => { + const { collection } = await parent(); + depends(Dependencies.DOCUMENTS); + + const page = getPage(url); + const limit = getLimit(url, route, SPREADSHEET_PAGE_LIMIT); + const view = getView(url, route, View.Grid); + const offset = pageToOffset(page, limit); + const query = getQuery(url); + + const paramQueries = url.searchParams.get('query'); + const parsedQueries = queryParamToMap(paramQueries || '[]'); + queries.set(parsedQueries); + + // const currentSort = extractSortFromQueries(parsedQueries); + + return { + offset, + limit, + view, + query, + // currentSort, + parsedQueries, + documents: await sdk.forProject(params.region, params.project).documentsDB.listDocuments({ + databaseId: params.database, + collectionId: params.collection, + queries: buildGridQueries(limit, offset, parsedQueries, collection) + }) + }; +}; + +function buildGridQueries( + limit: number, + offset: number, + parsedQueries: Map, + entity: Entity +) { + const hasOrderQuery = Array.from(parsedQueries.values()).some( + (q) => q.includes('orderAsc') || q.includes('orderDesc') + ); + + const queryArray = [Query.limit(limit), Query.offset(offset)]; + + // don't override if there's a user created sort! + if (!hasOrderQuery) { + queryArray.push(Query.orderDesc('')); + } + + queryArray.push(...parsedQueries.values(), ...buildWildcardEntitiesQuery(entity)); + + return queryArray; +} diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/activity/+page.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/activity/+page.svelte new file mode 100644 index 000000000..849d38953 --- /dev/null +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/activity/+page.svelte @@ -0,0 +1,14 @@ + + +
+ +
diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/activity/+page.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/activity/+page.ts new file mode 100644 index 000000000..c7187a963 --- /dev/null +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/activity/+page.ts @@ -0,0 +1,21 @@ +import { sdk } from '$lib/stores/sdk'; +import type { PageLoad } from './$types'; +import { PAGE_LIMIT } from '$lib/constants'; +import { Query } from '@appwrite.io/console'; +import { getLimit, getPage, pageToOffset } from '$lib/helpers/load'; + +export const load: PageLoad = async ({ params, url, route }) => { + const page = getPage(url); + const limit = getLimit(url, route, PAGE_LIMIT); + const offset = pageToOffset(page, limit); + + return { + offset, + limit, + logs: await sdk.forProject(params.region, params.project).documentsDB.listCollectionLogs({ + databaseId: params.database, + collectionId: params.collection, + queries: [Query.limit(limit), Query.offset(offset)] + }) + }; +}; diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/header.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/header.svelte new file mode 100644 index 000000000..bfeef0433 --- /dev/null +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/header.svelte @@ -0,0 +1,54 @@ + + +{#if collection} +
+{/if} diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/indexes/+page.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/indexes/+page.svelte new file mode 100644 index 000000000..586453515 --- /dev/null +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/indexes/+page.svelte @@ -0,0 +1,68 @@ + + + + {#snippet emptyIndexesSheetView(toggle)} + + {/snippet} + + {#snippet emptyEntitiesSheetView(toggle)} + + {/snippet} + diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/settings/+page.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/settings/+page.svelte new file mode 100644 index 000000000..71b22832c --- /dev/null +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/settings/+page.svelte @@ -0,0 +1,65 @@ + + +
+ + updateCollection({ enabled })} /> + + updateCollection({ name })} /> + + updateCollection({ permissions })} /> + + updateCollection({ documentSecurity })} /> + + + +
diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/store.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/store.ts new file mode 100644 index 000000000..9d3d04459 --- /dev/null +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/store.ts @@ -0,0 +1,5 @@ +import { page } from '$app/stores'; +import { derived } from 'svelte/store'; +import type { Models } from '@appwrite.io/console'; + +export const indexes = derived(page, ($page) => $page.data.collection.indexes as Models.Index[]); diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/usage/[[period]]/+page.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/usage/[[period]]/+page.svelte new file mode 100644 index 000000000..472f1e4f7 --- /dev/null +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/usage/[[period]]/+page.svelte @@ -0,0 +1,11 @@ + + + diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/usage/[[period]]/+page.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/usage/[[period]]/+page.ts new file mode 100644 index 000000000..6b9caf5ba --- /dev/null +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/usage/[[period]]/+page.ts @@ -0,0 +1,16 @@ +import { isValueOfStringEnum } from '$lib/helpers/types'; +import { sdk } from '$lib/stores/sdk'; +import { UsageRange } from '@appwrite.io/console'; +import type { PageLoad } from './$types'; + +export const load: PageLoad = async ({ params }) => { + const period = isValueOfStringEnum(UsageRange, params.period) + ? params.period + : UsageRange.ThirtyDays; + + return sdk.forProject(params.region, params.project).documentsDB.getCollectionUsage({ + databaseId: params.database, + collectionId: params.collection, + range: period + }); +}; diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/store.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/store.ts index d5e75fb54..52705eedc 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/store.ts +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/store.ts @@ -3,6 +3,47 @@ import type { Column } from '$lib/helpers/types'; import { IconChartBar, IconCloudUpload, IconCog } from '@appwrite.io/pink-icons-svelte'; import { resolveRoute, withPath } from '$lib/stores/navigation'; import type { Page } from '@sveltejs/kit'; +import { type Models, Query } from '@appwrite.io/console'; +import type { Entity, Field } from '$database/(entity)'; +import { isRelationship } from '$database/table-[table]/rows/store'; + +export type Columns = + | Models.ColumnBoolean + | Models.ColumnEmail + | Models.ColumnEnum + | Models.ColumnFloat + | Models.ColumnInteger + | Models.ColumnIp + | Models.ColumnString + | Models.ColumnUrl + | Models.ColumnPoint + | Models.ColumnLine + | Models.ColumnPolygon + | (Models.ColumnRelationship & { default?: never }); + +export type Attributes = + | Models.AttributeBoolean + | Models.AttributeEmail + | Models.AttributeEnum + | Models.AttributeFloat + | Models.AttributeInteger + | Models.AttributeIp + | Models.AttributeString + | Models.AttributeUrl + | Models.AttributePoint + | Models.AttributeLine + | Models.AttributePolygon + | (Models.AttributeRelationship & { default?: never }); + +export type Collection = Omit & { + attributes: Array; +}; + +export type Table = Omit & { + columns: Array; +}; + +export const expandTabs = writable(null); export const showCreateEntity = writable(false); @@ -45,3 +86,16 @@ export function buildEntityRoute(page: Page, entityType: string, entityId: strin `/${entityType}-${entityId}` ); } + +/** + * Returns select queries for all main and related fields in an `Entity`. + */ +export function buildWildcardEntitiesQuery(entity: Entity | null = null): string[] { + return [ + ...(entity?.fields + ?.filter((field: Field) => field.status === 'available' && isRelationship(field)) + ?.map((field: Field) => Query.select([`${field.key}.*`])) ?? []), + + Query.select(['*']) + ]; +} diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+layout.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+layout.svelte index a73441748..a901afaf4 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+layout.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+layout.svelte @@ -32,10 +32,9 @@ spreadsheetLoading, rowActivitySheet, spreadsheetRenderKey, - expandTabs, databaseRelatedRowSheetOptions, rowPermissionSheet, - type Columns + showRowCreateSheet } from './store'; import { addSubPanel, registerCommands, updateCommandGroupRanks } from '$lib/commandCenter'; import CreateColumn from './createColumn.svelte'; @@ -62,6 +61,8 @@ import { chunks } from '$lib/helpers/array'; import { Submit, trackEvent } from '$lib/actions/analytics'; + import { expandTabs, type Columns } from '../store'; + import type { LayoutData } from './$types'; import { CreateIndex } from '$database/(entity)'; @@ -93,7 +94,7 @@ ); onMount(() => { - expandTabs.set(preferences.getKey('tableHeaderExpanded', true)); + expandTabs.set(preferences.getKey('entityHeaderExpanded', true)); return realtime .forProject(page.params.region, page.params.project) @@ -121,8 +122,12 @@ $: $registerCommands([ { label: 'Create row', - keys: page.url.pathname.endsWith(table?.$id) ? ['t'] : ['t', 'd'], - callback: () => ($showCreateEntity = true), + keys: page.url.pathname.endsWith(table?.$id) ? ['r'] : ['r', 'd'], + callback: () => { + if (table.fields) { + $showRowCreateSheet.show = true; + } + }, icon: IconPlus, group: 'rows' }, diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.svelte index bec674be3..3f2db4fc1 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.svelte @@ -14,7 +14,6 @@ showRowCreateSheet, showCreateColumnSheet, randomDataModalState, - expandTabs, columnsOrder } from './store'; import SpreadSheet from './spreadsheet.svelte'; @@ -33,6 +32,7 @@ import { columnOptions } from './columns/store'; import { EmptySheet, type Field } from '$database/(entity)'; import { Empty as SuggestionsEmptySheet, tableColumnSuggestions } from '../(suggestions)'; + import { expandTabs } from '$database/store'; export let data: PageData; @@ -177,7 +177,7 @@ class="small-button-dimensions" on:click={() => { $expandTabs = !$expandTabs; - preferences.setKey('tableHeaderExpanded', $expandTabs); + preferences.setKey('entityHeaderExpanded', $expandTabs); }}> diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.ts index 0f954c47d..157abc17f 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.ts +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.ts @@ -4,13 +4,12 @@ import { sdk } from '$lib/stores/sdk'; import { Query } from '@appwrite.io/console'; import type { PageLoad } from './$types'; import { queries, queryParamToMap } from '$lib/components/filters'; -import { buildWildcardColumnsQuery } from './rows/store'; +import { buildWildcardEntitiesQuery } from '$database/store'; import type { TagValue } from '$lib/components/filters/store'; import type { Entity } from '$database/(entity)'; export const load: PageLoad = async ({ params, depends, url, route, parent }) => { const { table } = await parent(); - depends(Dependencies.ROW); /* TODO: we could just invalidate the rows maybe? */ depends(Dependencies.ROWS); const page = getPage(url); @@ -71,7 +70,7 @@ function buildGridQueries( queryArray.push(Query.orderDesc('')); } - queryArray.push(...parsedQueries.values(), ...buildWildcardColumnsQuery(table)); + queryArray.push(...parsedQueries.values(), ...buildWildcardEntitiesQuery(table)); return queryArray; } diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/edit.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/edit.svelte index aafd71bd1..b31b75b94 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/edit.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/edit.svelte @@ -8,12 +8,13 @@ import type { Models } from '@appwrite.io/console'; import { Dependencies } from '$lib/constants'; import { invalidate } from '$app/navigation'; - import { type Columns, PROHIBITED_ROW_KEYS } from '../store'; + import { PROHIBITED_ROW_KEYS } from '../store'; import ColumnItem from './columns/columnItem.svelte'; - import { buildWildcardColumnsQuery, isRelationship, isRelationshipToMany } from './store'; + import { isRelationship, isRelationshipToMany } from './store'; import { Layout, Skeleton } from '@appwrite.io/pink-svelte'; import { deepClone } from '$lib/helpers/object'; import { type Entity, toRelationalField } from '$database/(entity)'; + import { type Columns, buildWildcardEntitiesQuery } from '$database/store'; let { table, @@ -52,7 +53,7 @@ databaseId: table.databaseId, tableId: table.$id, rowId, - queries: buildWildcardColumnsQuery(table) + queries: buildWildcardEntitiesQuery(table) }); } catch (error) { addNotification({ diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/editRelated.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/editRelated.svelte index 72a473586..dbd895eb3 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/editRelated.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/editRelated.svelte @@ -8,9 +8,10 @@ import { type Models, Query } from '@appwrite.io/console'; import { Dependencies } from '$lib/constants'; import { invalidate } from '$app/navigation'; - import { type Columns, PROHIBITED_ROW_KEYS } from '../store'; + import { PROHIBITED_ROW_KEYS } from '../store'; + import { type Columns, buildWildcardEntitiesQuery } from '$database/store'; import ColumnItem from './columns/columnItem.svelte'; - import { buildWildcardColumnsQuery, isRelationship, isRelationshipToMany } from './store'; + import { isRelationship, isRelationshipToMany } from './store'; import { Accordion, Layout, Skeleton } from '@appwrite.io/pink-svelte'; import { deepClone } from '$lib/helpers/object'; import { preferences } from '$lib/stores/preferences'; @@ -66,11 +67,11 @@ databaseId, tableId: tableId, rowId: rows as string, - queries: buildWildcardColumnsQuery(relatedTable) + queries: buildWildcardEntitiesQuery(relatedTable) }); // cannot use page.data.entities! - relatedTable = await databaseSdk.getEntity({ + relatedTable = await databasesSdk.getEntity({ databaseId, entityId: tableId }); @@ -141,7 +142,7 @@ queries: [ Query.equal('$id', rowIds), Query.limit(rowIds.length), - ...buildWildcardColumnsQuery(rowTable) + ...buildWildcardEntitiesQuery(rowTable) ] }); return response.rows; diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/store.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/store.ts index a007c01fc..55b77aaeb 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/store.ts +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/store.ts @@ -1,8 +1,8 @@ import { page } from '$app/state'; +import type { Field } from '$database/(entity)'; import type { Column } from '$lib/helpers/types'; -import type { Attributes, Columns } from '../store'; -import { type Models, Query } from '@appwrite.io/console'; -import type { Entity, Field } from '$database/(entity)'; +import { type Models } from '@appwrite.io/console'; +import type { Attributes, Columns } from '../../store'; export function isRelationshipToMany(field: Field) { if (!field) return false; @@ -46,19 +46,6 @@ export function isSpatialType( return spatialTypes.includes(field.type.toLowerCase()); } -/** - * Returns select queries for all main and related fields in an `Entity`. - */ -export function buildWildcardColumnsQuery(entity: Entity | null = null): string[] { - return [ - ...(entity?.fields - ?.filter((field) => field.status === 'available' && isRelationship(field)) - ?.map((field) => Query.select([`${field.key}.*`])) ?? []), - - Query.select(['*']) - ]; -} - export function buildRowUrl(rowId: string) { return `${page.url}/row-${rowId}`; } diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/spreadsheet.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/spreadsheet.svelte index 95d946eee..c6528848b 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/spreadsheet.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/spreadsheet.svelte @@ -13,7 +13,6 @@ import type { PageData } from './$types'; import { buildRowUrl, - buildWildcardColumnsQuery, isRelationship, isRelationshipToMany, isSpatialType, @@ -38,10 +37,8 @@ paginatedRows, paginatedRowsLoading, spreadsheetRenderKey, - expandTabs, databaseRelatedRowSheetOptions, - rowPermissionSheet, - type Columns + rowPermissionSheet } from './store'; import type { Column, ColumnType } from '$lib/helpers/types'; import { @@ -92,6 +89,7 @@ import { formatNumberWithCommas } from '$lib/helpers/numbers'; import { chunks } from '$lib/helpers/array'; import { mapToQueryParams } from '$lib/components/filters/store'; + import { expandTabs, type Columns, buildWildcardEntitiesQuery } from '$database/store'; export let data: PageData; export let showRowCreateSheet: { @@ -655,7 +653,7 @@ Query.limit(SPREADSHEET_PAGE_LIMIT), Query.offset(pageToOffset(pageNumber, SPREADSHEET_PAGE_LIMIT)), ...filterQueries /* filter queries */, - ...buildWildcardColumnsQuery(table) + ...buildWildcardEntitiesQuery(table) ] }); @@ -682,7 +680,7 @@ getCorrectOrderQuery(), Query.limit(SPREADSHEET_PAGE_LIMIT), Query.offset(pageToOffset(targetPageNum, SPREADSHEET_PAGE_LIMIT)), - ...buildWildcardColumnsQuery(table) + ...buildWildcardEntitiesQuery(table) ] }); diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/store.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/store.ts index e7847d113..08da15587 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/store.ts +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/store.ts @@ -5,42 +5,7 @@ import { derived, writable } from 'svelte/store'; import type { SortDirection } from '$lib/components'; import { SPREADSHEET_PAGE_LIMIT } from '$lib/constants'; import { createSparsePagedDataStore } from '@appwrite.io/pink-svelte'; - -export type Columns = - | Models.ColumnBoolean - | Models.ColumnEmail - | Models.ColumnEnum - | Models.ColumnFloat - | Models.ColumnInteger - | Models.ColumnIp - | Models.ColumnString - | Models.ColumnUrl - | Models.ColumnPoint - | Models.ColumnLine - | Models.ColumnPolygon - | (Models.ColumnRelationship & { default?: never }); - -export type Attributes = - | Models.AttributeBoolean - | Models.AttributeEmail - | Models.AttributeEnum - | Models.AttributeFloat - | Models.AttributeInteger - | Models.AttributeIp - | Models.AttributeString - | Models.AttributeUrl - | Models.AttributePoint - | Models.AttributeLine - | Models.AttributePolygon - | (Models.AttributeRelationship & { default?: never }); - -export type Collection = Omit & { - attributes: Array; -}; - -export type Table = Omit & { - columns: Array; -}; +import type { Columns } from '$database/store'; export const columns = derived(page, ($page) => $page.data.table.columns as Columns[]); export const indexes = derived(page, ($page) => $page.data.table.indexes as Models.ColumnIndex[]); @@ -194,7 +159,6 @@ export const rowPermissionSheet = writable({ row: null as Models.Row }); -export const expandTabs = writable(null); export const spreadsheetRenderKey = writable('initial'); export const paginatedRowsLoading = writable(false); From 0410b5636d1ff3f9a9f16d11354f09be6a44ff61 Mon Sep 17 00:00:00 2001 From: Darshan Date: Thu, 16 Oct 2025 14:30:14 +0530 Subject: [PATCH 004/209] feat: improved editor. --- package.json | 13 +- pnpm-lock.yaml | 225 +++- src/lib/commandCenter/commandCenter.svelte | 10 +- src/lib/commandCenter/commands.ts | 9 +- src/lib/components/id.svelte | 34 +- src/lib/helpers/faker.ts | 112 +- src/lib/layout/footer.svelte | 8 +- .../(entity)/views/layouts/empty.svelte | 21 +- .../(entity)/views/layouts/sidesheet.svelte | 8 +- .../(entity)/views/layouts/spreadsheet.svelte | 44 +- .../database-[database]/+layout.svelte | 27 +- .../(components)/editor/helpers/constants.ts | 25 + .../(components)/editor/helpers/keymaps.ts | 25 + .../(components)/editor/helpers/theme.ts | 46 + .../(components)/editor/index.ts | 6 + .../(components)/editor/validators/json5.ts | 73 ++ .../(components)/editor/view.svelte | 1102 +++++++++++++++++ .../collection-[collection]/+layout.svelte | 60 +- .../collection-[collection]/+page.svelte | 55 +- .../collection-[collection]/+page.ts | 31 +- .../spreadsheet.svelte | 719 +++++++++++ .../collection-[collection]/store.ts | 21 +- .../databases/database-[database]/store.ts | 54 + .../table-[table]/+layout.svelte | 46 +- .../table-[table]/+page.svelte | 15 +- .../table-[table]/+page.ts | 41 +- .../table-[table]/columns/+page.svelte | 6 +- .../columns/createColumnDropdown.svelte | 4 +- .../table-[table]/spreadsheet.svelte | 10 +- .../table-[table]/store.ts | 15 +- 30 files changed, 2610 insertions(+), 255 deletions(-) create mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/helpers/constants.ts create mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/helpers/keymaps.ts create mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/helpers/theme.ts create mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/index.ts create mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/validators/json5.ts create mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/view.svelte create mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte diff --git a/package.json b/package.json index 67c75ed37..e82e2cbbd 100644 --- a/package.json +++ b/package.json @@ -22,12 +22,22 @@ }, "dependencies": { "@ai-sdk/svelte": "^1.1.24", - "@appwrite.io/console": "https://pkg.pr.new/appwrite-labs/cloud/@appwrite.io/console@2659", + "@appwrite.io/console": "https://pkg.pr.new/appwrite-labs/cloud/@appwrite.io/console@de078ac", "@appwrite.io/pink-icons": "0.25.0", "@appwrite.io/pink-icons-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@8f82877", "@appwrite.io/pink-legacy": "^1.0.3", "@appwrite.io/pink-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@8f82877", + "@codemirror/autocomplete": "^6.19.0", + "@codemirror/commands": "^6.9.0", + "@codemirror/lang-javascript": "^6.2.4", + "@codemirror/lang-json": "^6.0.2", + "@codemirror/language": "^6.11.3", + "@codemirror/lint": "^6.9.0", + "@codemirror/search": "^6.5.11", + "@codemirror/state": "^6.5.2", + "@codemirror/view": "^6.38.6", "@faker-js/faker": "^9.9.0", + "@lezer/highlight": "^1.2.1", "@popperjs/core": "^2.11.8", "@sentry/sveltekit": "^8.38.0", "@stripe/stripe-js": "^3.5.0", @@ -38,6 +48,7 @@ "deep-equal": "^2.2.3", "echarts": "^5.6.0", "ignore": "^6.0.2", + "json5": "^2.2.3", "nanoid": "^5.1.5", "nanotar": "^0.1.1", "plausible-tracker": "^0.3.9", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4755eb163..969279c14 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,8 +12,8 @@ importers: specifier: ^1.1.24 version: 1.1.24(svelte@5.25.3)(zod@3.24.3) '@appwrite.io/console': - specifier: https://pkg.pr.new/appwrite-labs/cloud/@appwrite.io/console@2659 - version: https://pkg.pr.new/appwrite-labs/cloud/@appwrite.io/console@2659 + specifier: https://pkg.pr.new/appwrite-labs/cloud/@appwrite.io/console@de078ac + version: https://pkg.pr.new/appwrite-labs/cloud/@appwrite.io/console@de078ac '@appwrite.io/pink-icons': specifier: 0.25.0 version: 0.25.0 @@ -26,9 +26,39 @@ importers: '@appwrite.io/pink-svelte': specifier: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@8f82877 version: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@8f82877(svelte@5.25.3) + '@codemirror/autocomplete': + specifier: ^6.19.0 + version: 6.19.0 + '@codemirror/commands': + specifier: ^6.9.0 + version: 6.9.0 + '@codemirror/lang-javascript': + specifier: ^6.2.4 + version: 6.2.4 + '@codemirror/lang-json': + specifier: ^6.0.2 + version: 6.0.2 + '@codemirror/language': + specifier: ^6.11.3 + version: 6.11.3 + '@codemirror/lint': + specifier: ^6.9.0 + version: 6.9.0 + '@codemirror/search': + specifier: ^6.5.11 + version: 6.5.11 + '@codemirror/state': + specifier: ^6.5.2 + version: 6.5.2 + '@codemirror/view': + specifier: ^6.38.6 + version: 6.38.6 '@faker-js/faker': specifier: ^9.9.0 version: 9.9.0 + '@lezer/highlight': + specifier: ^1.2.1 + version: 1.2.1 '@popperjs/core': specifier: ^2.11.8 version: 2.11.8 @@ -59,6 +89,9 @@ importers: ignore: specifier: ^6.0.2 version: 6.0.2 + json5: + specifier: ^2.2.3 + version: 2.2.3 nanoid: specifier: ^5.1.5 version: 5.1.5 @@ -260,8 +293,8 @@ packages: '@analytics/type-utils@0.6.2': resolution: {integrity: sha512-TD+xbmsBLyYy/IxFimW/YL/9L2IEnM7/EoV9Aeh56U64Ify8o27HJcKjo38XY9Tcn0uOq1AX3thkKgvtWvwFQg==} - '@appwrite.io/console@https://pkg.pr.new/appwrite-labs/cloud/@appwrite.io/console@2659': - resolution: {tarball: https://pkg.pr.new/appwrite-labs/cloud/@appwrite.io/console@2659} + '@appwrite.io/console@https://pkg.pr.new/appwrite-labs/cloud/@appwrite.io/console@de078ac': + resolution: {tarball: https://pkg.pr.new/appwrite-labs/cloud/@appwrite.io/console@de078ac} version: 1.10.0 '@appwrite.io/pink-icons-svelte@2.0.0-RC.1': @@ -377,6 +410,33 @@ packages: resolution: {integrity: sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==} engines: {node: '>=6.9.0'} + '@codemirror/autocomplete@6.19.0': + resolution: {integrity: sha512-61Hfv3cF07XvUxNeC3E7jhG8XNi1Yom1G0lRC936oLnlF+jrbrv8rc/J98XlYzcsAoTVupfsf5fLej1aI8kyIg==} + + '@codemirror/commands@6.9.0': + resolution: {integrity: sha512-454TVgjhO6cMufsyyGN70rGIfJxJEjcqjBG2x2Y03Y/+Fm99d3O/Kv1QDYWuG6hvxsgmjXmBuATikIIYvERX+w==} + + '@codemirror/lang-javascript@6.2.4': + resolution: {integrity: sha512-0WVmhp1QOqZ4Rt6GlVGwKJN3KW7Xh4H2q8ZZNGZaP6lRdxXJzmjm4FqvmOojVj6khWJHIb9sp7U/72W7xQgqAA==} + + '@codemirror/lang-json@6.0.2': + resolution: {integrity: sha512-x2OtO+AvwEHrEwR0FyyPtfDUiloG3rnVTSZV1W8UteaLL8/MajQd8DpvUb2YVzC+/T18aSDv0H9mu+xw0EStoQ==} + + '@codemirror/language@6.11.3': + resolution: {integrity: sha512-9HBM2XnwDj7fnu0551HkGdrUrrqmYq/WC5iv6nbY2WdicXdGbhR/gfbZOH73Aqj4351alY1+aoG9rCNfiwS1RA==} + + '@codemirror/lint@6.9.0': + resolution: {integrity: sha512-wZxW+9XDytH3SKvS8cQzMyQCaaazH8XL1EMHleHe00wVzsv7NBQKVW2yzEHrRhmM7ZOhVdItPbvlRBvMp9ej7A==} + + '@codemirror/search@6.5.11': + resolution: {integrity: sha512-KmWepDE6jUdL6n8cAAqIpRmLPBZ5ZKnicE8oGU/s3QrAVID+0VhLFrzUucVKHG5035/BSykhExDL/Xm7dHthiA==} + + '@codemirror/state@6.5.2': + resolution: {integrity: sha512-FVqsPqtPWKVVL3dPSxy8wEF/ymIEuVzF1PK3VbUgrxXpJUSHQWWZz4JMToquRxnkw+36LTamCZG2iua2Ptq0fA==} + + '@codemirror/view@6.38.6': + resolution: {integrity: sha512-qiS0z1bKs5WOvHIAC0Cybmv4AJSkAXgX5aD6Mqd2epSLlVJsQl8NG23jCVouIgkh4All/mrbdsf2UOLFnJw0tw==} + '@csstools/color-helpers@5.0.2': resolution: {integrity: sha512-JqWH1vsgdGcw2RR6VliXXdA0/59LttzlU8UlRT/iUUsEeWfYq8I+K0yhihEUTTHLRm1EXvpsCx3083EU15ecsA==} engines: {node: '>=18'} @@ -659,6 +719,24 @@ packages: '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + '@lezer/common@1.2.3': + resolution: {integrity: sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA==} + + '@lezer/highlight@1.2.1': + resolution: {integrity: sha512-Z5duk4RN/3zuVO7Jq0pGLJ3qynpxUVsh7IbUbGj88+uV2ApSAn6kWg2au3iJb+0Zi7kKtqffIESgNcRXWZWmSA==} + + '@lezer/javascript@1.5.4': + resolution: {integrity: sha512-vvYx3MhWqeZtGPwDStM2dwgljd5smolYD2lR2UyFcHfxbBQebqx8yjmFmxtJ/E6nN6u1D9srOiVWm3Rb4tmcUA==} + + '@lezer/json@1.0.3': + resolution: {integrity: sha512-BP9KzdF9Y35PDpv04r0VeSTKDeox5vVr3efE7eBbx3r4s3oNLfunchejZhjArmeieBH+nVOpgIiBJpEAv8ilqQ==} + + '@lezer/lr@1.4.2': + resolution: {integrity: sha512-pu0K1jCIdnQ12aWNaAVU5bzi7Bd1w54J3ECgANPmYLtQKP0HBj2cE/5coBD66MT10xbtIuUr7tg0Shbsvk0mDA==} + + '@marijn/find-cluster-break@1.0.2': + resolution: {integrity: sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==} + '@melt-ui/pp@0.3.2': resolution: {integrity: sha512-xKkPvaIAFinklLXcQOpwZ8YSpqAFxykjWf8Y/fSJQwsixV/0rcFs07hJ49hJjPy5vItvw5Qa0uOjzFUbXzBypQ==} peerDependencies: @@ -1569,11 +1647,6 @@ packages: peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - acorn@8.14.1: - resolution: {integrity: sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==} - engines: {node: '>=0.4.0'} - hasBin: true - acorn@8.15.0: resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} engines: {node: '>=0.4.0'} @@ -1799,6 +1872,9 @@ packages: resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} engines: {node: '>= 0.6'} + crelt@1.0.6: + resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==} + cron-parser@4.9.0: resolution: {integrity: sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==} engines: {node: '>=12.0.0'} @@ -3168,6 +3244,9 @@ packages: strip-literal@3.0.0: resolution: {integrity: sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==} + style-mod@4.1.2: + resolution: {integrity: sha512-wnD1HyVqpJUI2+eKZ+eo1UwghftP6yuFheBqqe+bWCotBjC2K1YnteJILRMs3SM4V/0dLEW1SC27MWP5y+mwmw==} + style-value-types@5.1.2: resolution: {integrity: sha512-Vs9fNreYF9j6W2VvuDTP7kepALi7sk0xtk2Tu8Yxi9UoajJdEVpNpCov0HsLTqXvNGKX+Uv09pkozVITi1jf3Q==} @@ -3520,6 +3599,9 @@ packages: typescript: optional: true + w3c-keyname@2.2.8: + resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==} + w3c-xmlserializer@5.0.0: resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} engines: {node: '>=18'} @@ -3703,7 +3785,7 @@ snapshots: '@analytics/type-utils@0.6.2': {} - '@appwrite.io/console@https://pkg.pr.new/appwrite-labs/cloud/@appwrite.io/console@2659': {} + '@appwrite.io/console@https://pkg.pr.new/appwrite-labs/cloud/@appwrite.io/console@de078ac': {} '@appwrite.io/pink-icons-svelte@2.0.0-RC.1(svelte@5.25.3)': dependencies: @@ -3861,6 +3943,67 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.27.1 + '@codemirror/autocomplete@6.19.0': + dependencies: + '@codemirror/language': 6.11.3 + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.6 + '@lezer/common': 1.2.3 + + '@codemirror/commands@6.9.0': + dependencies: + '@codemirror/language': 6.11.3 + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.6 + '@lezer/common': 1.2.3 + + '@codemirror/lang-javascript@6.2.4': + dependencies: + '@codemirror/autocomplete': 6.19.0 + '@codemirror/language': 6.11.3 + '@codemirror/lint': 6.9.0 + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.6 + '@lezer/common': 1.2.3 + '@lezer/javascript': 1.5.4 + + '@codemirror/lang-json@6.0.2': + dependencies: + '@codemirror/language': 6.11.3 + '@lezer/json': 1.0.3 + + '@codemirror/language@6.11.3': + dependencies: + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.6 + '@lezer/common': 1.2.3 + '@lezer/highlight': 1.2.1 + '@lezer/lr': 1.4.2 + style-mod: 4.1.2 + + '@codemirror/lint@6.9.0': + dependencies: + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.6 + crelt: 1.0.6 + + '@codemirror/search@6.5.11': + dependencies: + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.6 + crelt: 1.0.6 + + '@codemirror/state@6.5.2': + dependencies: + '@marijn/find-cluster-break': 1.0.2 + + '@codemirror/view@6.38.6': + dependencies: + '@codemirror/state': 6.5.2 + crelt: 1.0.6 + style-mod: 4.1.2 + w3c-keyname: 2.2.8 + '@csstools/color-helpers@5.0.2': {} '@csstools/css-calc@2.1.2(@csstools/css-parser-algorithms@3.0.4(@csstools/css-tokenizer@3.0.3))(@csstools/css-tokenizer@3.0.3)': @@ -4053,6 +4196,30 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 + '@lezer/common@1.2.3': {} + + '@lezer/highlight@1.2.1': + dependencies: + '@lezer/common': 1.2.3 + + '@lezer/javascript@1.5.4': + dependencies: + '@lezer/common': 1.2.3 + '@lezer/highlight': 1.2.1 + '@lezer/lr': 1.4.2 + + '@lezer/json@1.0.3': + dependencies: + '@lezer/common': 1.2.3 + '@lezer/highlight': 1.2.1 + '@lezer/lr': 1.4.2 + + '@lezer/lr@1.4.2': + dependencies: + '@lezer/common': 1.2.3 + + '@marijn/find-cluster-break@1.0.2': {} + '@melt-ui/pp@0.3.2(@melt-ui/svelte@0.86.5(svelte@5.25.3))(svelte@5.25.3)': dependencies: '@melt-ui/svelte': 0.86.5(svelte@5.25.3) @@ -4745,10 +4912,6 @@ snapshots: '@stripe/stripe-js@3.5.0': {} - '@sveltejs/acorn-typescript@1.0.5(acorn@8.14.1)': - dependencies: - acorn: 8.14.1 - '@sveltejs/acorn-typescript@1.0.5(acorn@8.15.0)': dependencies: acorn: 8.15.0 @@ -5176,20 +5339,14 @@ snapshots: '@vue/shared@3.5.13': {} - acorn-import-attributes@1.9.5(acorn@8.14.1): + acorn-import-attributes@1.9.5(acorn@8.15.0): dependencies: - acorn: 8.14.1 - - acorn-jsx@5.3.2(acorn@8.14.1): - dependencies: - acorn: 8.14.1 + acorn: 8.15.0 acorn-jsx@5.3.2(acorn@8.15.0): dependencies: acorn: 8.15.0 - acorn@8.14.1: {} - acorn@8.15.0: {} agent-base@6.0.2: @@ -5380,7 +5537,7 @@ snapshots: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 '@types/estree': 1.0.7 - acorn: 8.14.1 + acorn: 8.15.0 estree-walker: 3.0.3 periscopic: 3.1.0 @@ -5415,6 +5572,8 @@ snapshots: cookie@0.6.0: {} + crelt@1.0.6: {} + cron-parser@4.9.0: dependencies: luxon: 3.6.0 @@ -5830,8 +5989,8 @@ snapshots: espree@10.3.0: dependencies: - acorn: 8.14.1 - acorn-jsx: 5.3.2(acorn@8.14.1) + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) eslint-visitor-keys: 4.2.0 espree@10.4.0: @@ -6081,8 +6240,8 @@ snapshots: import-in-the-middle@1.13.1: dependencies: - acorn: 8.14.1 - acorn-import-attributes: 1.9.5(acorn@8.14.1) + acorn: 8.15.0 + acorn-import-attributes: 1.9.5(acorn@8.15.0) cjs-module-lexer: 1.4.3 module-details-from-path: 1.0.3 @@ -6843,6 +7002,8 @@ snapshots: dependencies: js-tokens: 9.0.1 + style-mod@4.1.2: {} + style-value-types@5.1.2: dependencies: hey-listen: 1.0.8 @@ -6915,7 +7076,7 @@ snapshots: '@jridgewell/sourcemap-codec': 1.5.0 '@jridgewell/trace-mapping': 0.3.25 '@types/estree': 1.0.7 - acorn: 8.14.1 + acorn: 8.15.0 aria-query: 5.3.2 axobject-query: 4.1.0 code-red: 1.0.4 @@ -6930,9 +7091,9 @@ snapshots: dependencies: '@ampproject/remapping': 2.3.0 '@jridgewell/sourcemap-codec': 1.5.0 - '@sveltejs/acorn-typescript': 1.0.5(acorn@8.14.1) + '@sveltejs/acorn-typescript': 1.0.5(acorn@8.15.0) '@types/estree': 1.0.7 - acorn: 8.14.1 + acorn: 8.15.0 aria-query: 5.3.2 axobject-query: 4.1.0 clsx: 2.1.1 @@ -7075,7 +7236,7 @@ snapshots: unplugin@1.0.1: dependencies: - acorn: 8.14.1 + acorn: 8.15.0 chokidar: 3.6.0 webpack-sources: 3.2.3 webpack-virtual-modules: 0.5.0 @@ -7197,6 +7358,8 @@ snapshots: optionalDependencies: typescript: 5.8.2 + w3c-keyname@2.2.8: {} + w3c-xmlserializer@5.0.0: dependencies: xml-name-validator: 5.0.0 diff --git a/src/lib/commandCenter/commandCenter.svelte b/src/lib/commandCenter/commandCenter.svelte index c82a5c035..5936ad2bb 100644 --- a/src/lib/commandCenter/commandCenter.svelte +++ b/src/lib/commandCenter/commandCenter.svelte @@ -96,7 +96,15 @@ }, 1000); function isInputEvent(event: KeyboardEvent) { - return ['INPUT', 'TEXTAREA', 'SELECT'].includes((event.target as HTMLElement).tagName); + const element = event.target as HTMLElement | null; + if (!element) return false; + + const tag = element.tagName; + if (['INPUT', 'TEXTAREA', 'SELECT'].includes(tag)) return true; + + // Treat contenteditable and CodeMirror editor as input contexts + if (element.isContentEditable) return true; + return !!element.closest?.('.cm-editor'); } const handleKeydown = (e: KeyboardEvent) => { diff --git a/src/lib/commandCenter/commands.ts b/src/lib/commandCenter/commands.ts index a2edb2f96..7fd9cfca6 100644 --- a/src/lib/commandCenter/commands.ts +++ b/src/lib/commandCenter/commands.ts @@ -103,7 +103,14 @@ const commandsEnabled = derived(disabledMap, ($disabledMap) => { }); function isInputEvent(event: KeyboardEvent) { - return ['INPUT', 'TEXTAREA', 'SELECT'].includes((event.target as HTMLElement).tagName); + const element = event.target as HTMLElement | null; + if (!element) return false; + + const tag = element.tagName; + if (['INPUT', 'TEXTAREA', 'SELECT'].includes(tag)) return true; + + if (element.isContentEditable) return true; + return !!element.closest?.('.cm-editor'); } function getCommandRank(command: KeyedCommand) { diff --git a/src/lib/components/id.svelte b/src/lib/components/id.svelte index 314e8fac2..8b31e0bd6 100644 --- a/src/lib/components/id.svelte +++ b/src/lib/components/id.svelte @@ -1,4 +1,4 @@ - {#key value} @@ -106,7 +122,7 @@ style:overflow="hidden" style:word-break="break-all" use:truncateText> - + {@render children()} diff --git a/src/lib/helpers/faker.ts b/src/lib/helpers/faker.ts index 421288bb3..8764f6289 100644 --- a/src/lib/helpers/faker.ts +++ b/src/lib/helpers/faker.ts @@ -1,9 +1,10 @@ import { faker } from '@faker-js/faker'; -import type { Columns } from '$routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/store'; import { ID, type Models } from '@appwrite.io/console'; import { sdk } from '$lib/stores/sdk'; import { isWithinSafeRange } from '$lib/helpers/numbers'; import type { NestedNumberArray } from './types'; +import type { Columns } from '$database/store'; +import type { DatabaseType, Field } from '$database/(entity)'; export async function generateColumns( project: Models.Project, @@ -64,58 +65,71 @@ export async function generateColumns( ]); } +function generateDefaultRecord( + id: string +): Record< + string, + string | number | boolean | Array +> { + return { + $id: id, + name: faker.person.fullName(), + email: faker.internet.email(), + age: faker.number.int({ min: 18, max: 80 }), + city: faker.location.city(), + description: faker.lorem.sentence(), + active: faker.datatype.boolean(), + location: [faker.location.longitude(), faker.location.latitude()], + route: Array.from({ length: 5 }, () => [ + faker.location.longitude(), + faker.location.latitude() + ]) + }; +} + export function generateFakeRecords( - columns: Columns[], - count: number + count: number, + type: DatabaseType = 'tablesdb', + field?: Field[] ): { ids: string[]; - rows: Models.Row[]; + records: (Models.Document | Models.Row)[]; } { - if (count <= 0) return { ids: [], rows: [] }; + if (count <= 0) return { ids: [], records: [] }; - const filteredColumns = columns.filter( - (col) => col.type !== 'relationship' && col.status === 'available' - ); - - const ids: string[] = []; - const rows: Models.Row[] = []; + const ids = []; + const records = []; for (let i = 0; i < count; i++) { const id = ID.unique(); ids.push(id); - let row: Record< + let record: Record< string, string | number | boolean | Array - > = { - $id: id - }; + >; - if (filteredColumns.length === 0) { - row = { - $id: id, - name: faker.person.fullName(), - email: faker.internet.email(), - age: faker.number.int({ min: 18, max: 80 }), - city: faker.location.city(), - description: faker.lorem.sentence(), - active: faker.datatype.boolean(), - location: [faker.location.longitude(), faker.location.latitude()], - route: Array.from({ length: 5 }, () => [ - faker.location.longitude(), - faker.location.latitude() - ]) - }; + if (type === 'documentsdb') { + record = generateDefaultRecord(id); } else { - for (const column of filteredColumns) { - row[column.key] = generateValueForColumn(column); + const filteredColumns = + field?.filter((col) => col.type !== 'relationship' && col.status === 'available') ?? + []; + + if (filteredColumns.length === 0) { + record = generateDefaultRecord(id); + } else { + record = { $id: id }; + for (const column of filteredColumns) { + record[column.key] = generateValueForColumn(column); + } } } - rows.push(row as unknown as Models.Row); + records.push(record); } - return { ids, rows }; + return { ids, records }; } function generateStringValue(key: string, maxLength: number): string { @@ -141,15 +155,15 @@ function generateStringValue(key: string, maxLength: number): string { } function generateValueForColumn( - column: Columns + field: Field ): string | number | boolean | null | Array { - if (column.array) { + if (field.array) { const arraySize = faker.number.int({ min: 1, max: 5 }); const items: Array = []; for (let i = 0; i < arraySize; i++) { - const itemAttribute = { ...column, array: false }; - const item = generateSingleValue(itemAttribute); + const itemField = { ...field, array: false }; + const item = generateSingleValue(itemField); if (item !== null) { items.push(item); } @@ -158,16 +172,14 @@ function generateValueForColumn( return items; } - return generateSingleValue(column); + return generateSingleValue(field); } -function generateSingleValue( - column: Columns -): string | number | boolean | NestedNumberArray | null { - switch (column.type) { +function generateSingleValue(field: Field): string | number | boolean | NestedNumberArray | null { + switch (field.type) { case 'string': { - if ('format' in column && column.format) { - switch (column.format) { + if ('format' in field && field.format) { + switch (field.format) { case 'email': { return faker.internet.email(); } @@ -181,7 +193,7 @@ function generateSingleValue( } case 'enum': { - const enumAttr = column as Models.ColumnEnum; + const enumAttr = field as Models.ColumnEnum; if (enumAttr.elements?.length > 0) { return faker.helpers.arrayElement(enumAttr.elements); } @@ -190,14 +202,14 @@ function generateSingleValue( } return ''; } else { - const stringAttr = column as Models.ColumnString; + const stringAttr = field as Models.ColumnString; const maxLength = Math.min(stringAttr.size ?? 255, 1000); - return generateStringValue(column.key, maxLength); + return generateStringValue(field.key, maxLength); } } case 'integer': { - const intAttr = column as Models.ColumnInteger; + const intAttr = field as Models.ColumnInteger; const min = isWithinSafeRange(intAttr.min) ? intAttr.min : 0; const fallbackMax = Math.max(min + 100, 100); const max = isWithinSafeRange(intAttr.max) @@ -207,7 +219,7 @@ function generateSingleValue( } case 'double': { - const floatAttr = column as Models.ColumnFloat; + const floatAttr = field as Models.ColumnFloat; const min = isWithinSafeRange(floatAttr.min) ? floatAttr.min : 0; const fallbackMax = Math.max(min + 100, 100); const max = isWithinSafeRange(floatAttr.max) diff --git a/src/lib/layout/footer.svelte b/src/lib/layout/footer.svelte index 54e8ec053..061720cd6 100644 --- a/src/lib/layout/footer.svelte +++ b/src/lib/layout/footer.svelte @@ -17,7 +17,13 @@ const currentYear = new Date().getFullYear(); const hideFooter = $derived.by(() => { - const endings = ['table-[table]', 'table-[table]/columns', 'table-[table]/indexes']; + const endings = [ + 'collection-[collection]', + 'collection-[collection]/indexes', + 'table-[table]', + 'table-[table]/columns', + 'table-[table]/indexes' + ]; return endings.some((end) => page.route.id?.endsWith(end)); }); diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/layouts/empty.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/layouts/empty.svelte index 66e6d3a2a..dcccad3b9 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/layouts/empty.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/layouts/empty.svelte @@ -11,13 +11,13 @@ import { isSmallViewport, isTabletViewport } from '$lib/stores/viewport'; import { SortButton } from '$lib/components'; import type { Column } from '$lib/helpers/types'; - import { SpreadsheetContainer } from '$database/(entity)'; + import { getTerminologies, SpreadsheetContainer } from '$database/(entity)'; import { onDestroy, onMount } from 'svelte'; import { debounce } from '$lib/helpers/debounce'; import { expandTabs } from '$database/store'; import { spreadsheetLoading } from '$database/table-[table]/store'; - type Mode = 'rows' | 'rows-filtered' | 'indexes'; + type Mode = 'records' | 'records-filtered' | 'indexes'; interface Action { text?: string; @@ -52,6 +52,8 @@ const baseColProps = { draggable: false, resizable: false }; + const { terminology } = getTerminologies(); + const updateOverlayHeight = () => { if (!spreadsheetContainer) return; @@ -151,11 +153,13 @@ } ] as Column[]; - const spreadsheetColumns = $derived(mode === 'rows' ? getRowColumns() : getIndexesColumns()); + const spreadsheetColumns = $derived(mode === 'records' ? getRowColumns() : getIndexesColumns()); const emptyCells = $derived( ($isSmallViewport ? 14 : $isTabletViewport ? 17 : 24) + (!$expandTabs ? 2 : 0) ); + + const modeTerminology = $derived(terminology.record.lower.plural);
{ - if (columnActionsById && mode === 'rows') { + if (columnActionsById && mode === 'records') { onOpenCreateColumn?.(); } }}> @@ -232,7 +236,8 @@ style:--dynamic-overlay-height={dynamicOverlayHeight}>
- {title ?? `You have no ${mode} yet`} + {title ?? `You have no ${modeTerminology} yet`} {#if showActions} - {#if mode !== 'rows-filtered'} + {#if mode !== 'records-filtered'} - {#if mode === 'rows'} + {#if mode === 'records'} (show = false)); -
+
@@ -178,6 +180,10 @@ padding-bottom: 15rem; } } + + &.noContentPadding :global(section) { + padding: unset !important; + } } .sheet-footer { diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/layouts/spreadsheet.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/layouts/spreadsheet.svelte index 30483eb68..3ea808667 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/layouts/spreadsheet.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/layouts/spreadsheet.svelte @@ -2,11 +2,17 @@ import { debounce } from '$lib/helpers/debounce'; import { scrollStore, sheetHeightStore } from './store'; import { onMount, onDestroy, type Snippet, tick } from 'svelte'; + import { isSmallViewport } from '$lib/stores/viewport'; + import { SideSheet } from '$database/(entity)'; let { - children + children, + noSqlEditor, + showEditorSideSheet = $bindable(false) }: { children: Snippet; + noSqlEditor?: Snippet; + showEditorSideSheet: boolean; } = $props(); let spreadsheetWrapper: HTMLDivElement; @@ -112,12 +118,44 @@ }); -
+
{@render children()} + + {#if !$isSmallViewport} + {@render noSqlEditor?.()} + {:else} + + {@render noSqlEditor?.()} + + {/if}
- diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/+layout.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/+layout.svelte index c84cc4461..fe319de02 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/+layout.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/+layout.svelte @@ -10,7 +10,7 @@ } from '$lib/commandCenter'; import { tablesSearcher } from '$lib/commandCenter/searchers'; import { Dependencies } from '$lib/constants'; - import { showCreateEntity } from './store'; + import { showCreateEntity, randomDataModalState } from './store'; import { TablesPanel } from '$lib/commandCenter/panels'; import { canWriteTables, canWriteDatabases } from '$lib/stores/roles'; import { showCreateBackup, showCreatePolicy } from './backups/store'; @@ -20,12 +20,16 @@ import { noWidthTransition } from '$lib/stores/sidebar'; import { CreateEntity, getTerminologies, setTerminologies } from '$database/(entity)'; import { resolveRoute, withPath } from '$lib/stores/navigation'; + import { Dialog, Layout, Typography } from '@appwrite.io/pink-svelte'; + import { Button, Seekbar } from '$lib/elements/forms'; setTerminologies(page); const project = page.params.project; const databaseId = page.params.database; + const { databasesSdk, terminology } = getTerminologies(); + $: $registerCommands([ { label: 'Create table', @@ -157,8 +161,6 @@ ) ); } - - const { databasesSdk, terminology } = getTerminologies(); @@ -171,3 +173,22 @@ + + + {@const records = terminology.record.lower.singular} + + + Select how many sample {records} to generate for testing. This won't delete or replace any + existing {records}. + + + + + + + + + + + + diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/helpers/constants.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/helpers/constants.ts new file mode 100644 index 000000000..c965ac9ce --- /dev/null +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/helpers/constants.ts @@ -0,0 +1,25 @@ +// system configuration constants +export const ALLOWED_DOLLAR_PROPS = ['$id', '$createdAt', '$updatedAt'] as const; +export const SYSTEM_KEYS = new Set(['$id:', '$createdAt:', '$updatedAt:']); + +// timing constants +export const DEBOUNCE_DELAY = 200; +export const LINTER_DELAY = 250; + +// regex patterns (compiled once for performance) +export const UNQUOTED_KEY_REGEX = /([{,]\s*)([a-zA-Z_$][a-zA-Z0-9_$]*)\s*:/g; +export const INDENT_REGEX = /^[\t ]*/; +export const SCALAR_VALUE_REGEX = + /:\s*(?:true|false|null|-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?|"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*')\s*$/; +export const TRAILING_COMMA_REGEX = /,\s*$/; +export const WHITESPACE_REGEX = /^\s*/; +export const WHITESPACE_ONLY_REGEX = /^\s+$/; +export const NESTED_KEY_REGEX = /^(\s{4,})([A-Za-z_$][A-Za-z0-9_$]*)\s*:/; + +// pre-computed indent strings for performance (0-20 levels of nesting) +export const INDENT_CACHE = Array.from({ length: 21 }, (_, i) => ' '.repeat(i)); + +// helper to get cached indent string +export function getIndent(level: number): string { + return level < INDENT_CACHE.length ? INDENT_CACHE[level] : ' '.repeat(level); +} diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/helpers/keymaps.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/helpers/keymaps.ts new file mode 100644 index 000000000..46d4e1d84 --- /dev/null +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/helpers/keymaps.ts @@ -0,0 +1,25 @@ +import { searchKeymap } from '@codemirror/search'; +import { closeBracketsKeymap } from '@codemirror/autocomplete'; +import type { EditorView, KeyBinding } from '@codemirror/view'; +import { defaultKeymap, historyKeymap, indentLess, indentMore } from '@codemirror/commands'; + +// main editor keymaps, +// these require functions from the component +export function createEditorKeymaps( + insertNewlineKeepIndent: (view: EditorView) => boolean +): KeyBinding[] { + return [ + { key: 'Tab', run: indentMore }, + { key: 'Enter', run: insertNewlineKeepIndent }, + { key: 'Shift-Enter', run: insertNewlineKeepIndent }, + { key: 'Shift-Tab', run: indentLess } + ]; +} + +// Secondary keymaps - these are standard CodeMirror keymaps +export const secondaryKeymaps = [ + ...closeBracketsKeymap, + ...defaultKeymap, + ...searchKeymap, + ...historyKeymap +]; diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/helpers/theme.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/helpers/theme.ts new file mode 100644 index 000000000..533dcca5a --- /dev/null +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/helpers/theme.ts @@ -0,0 +1,46 @@ +import { EditorView } from '@codemirror/view'; +import { HighlightStyle, syntaxHighlighting } from '@codemirror/language'; +import { tags } from '@lezer/highlight'; + +// custom theme for layout only (colors handled by SCSS) +export const customTheme = EditorView.theme({ + '&': { + height: '100%', + fontFamily: 'var(--font-family-code)', + fontSize: '14px', + lineHeight: '1.6' + }, + '.cm-content': { + fontFamily: 'var(--font-family-code)', + padding: 'var(--space-4) 0' + }, + '.cm-gutters': { + border: 'none', + minWidth: '40px' + }, + '.cm-lineNumbers .cm-gutterElement': { + textAlign: 'right', + minWidth: '40px', + paddingRight: 'var(--space-4)' + }, + '.cm-line': { + padding: '0', + lineHeight: '1.6' + } +}); + +// syntax highlighting style (colors applied via SCSS) +export const customHighlight = HighlightStyle.define([ + { tag: tags.propertyName, class: 'cm-propertyName' }, + { tag: tags.string, class: 'cm-string' }, + { tag: tags.special(tags.string), class: 'cm-string' }, + { tag: tags.escape, class: 'cm-string' }, + { tag: tags.number, class: 'cm-number' }, + { tag: tags.bool, class: 'cm-bool' }, + { tag: tags.null, class: 'cm-null' }, + { tag: tags.punctuation, class: 'cm-punctuation' }, + { tag: tags.bracket, class: 'cm-bracket' } +]); + +// pre-configured syntax highlighting extension +export const customSyntaxHighlighting = syntaxHighlighting(customHighlight); diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/index.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/index.ts new file mode 100644 index 000000000..488726fdb --- /dev/null +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/index.ts @@ -0,0 +1,6 @@ +export { + default as NoSqlEditor, + type JsonValue, + type JsonArray, + type JsonObject +} from './view.svelte'; diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/validators/json5.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/validators/json5.ts new file mode 100644 index 000000000..572e38ebb --- /dev/null +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/validators/json5.ts @@ -0,0 +1,73 @@ +import JSON5 from 'json5'; + +export interface Diagnostic { + from: number; + to: number; + message: string; +} + +export interface ValidatorResult { + ok: boolean; + diagnostics: Diagnostic[]; + parsed?: TParsed; + meta?: Record; +} + +async function validate(text: string): Promise { + try { + const parsed = JSON5.parse(text); + return { ok: true, diagnostics: [], parsed }; + } catch (err) { + const line: number | undefined = err?.lineNumber; + + if (!line) { + return { + ok: false, + diagnostics: [ + { + from: 0, + to: text.length, + message: err?.message || 'Syntax error' + } + ] + }; + } + + const lines = text.split('\n'); + + /** + * we highlight the previous line instead because sometimes, + * the reported line is the NEXT line as that's where the validator encounters an error! + */ + const targetLineIndex = Math.max(0, line - 2); + + // calculate line start position + let lineStartPos = 0; + for (let i = 0; i < targetLineIndex; i++) { + lineStartPos += lines[i].length + 1; + } + + // highlight the whole line (trimmed) + const targetLine = lines[targetLineIndex] || ''; + const trimmedStart = targetLine.trimStart(); + const leadingWhitespace = targetLine.length - trimmedStart.length; + const lineEndPos = lineStartPos + leadingWhitespace + trimmedStart.trimEnd().length; + + const diagnostic: Diagnostic = { + from: lineStartPos + leadingWhitespace, + to: lineEndPos, + message: (err?.message || 'Syntax error').replace(/^JSON5:\s*/i, '') + }; + + return { ok: false, diagnostics: [diagnostic] }; + } +} + +export async function parse(text: string): Promise { + const res = await validate(text); + if (!res.ok) + throw Object.assign(new Error(res.diagnostics[0]?.message || 'Invalid JSON5'), { + diagnostics: res.diagnostics + }); + return res.parsed as T; +} diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/view.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/view.svelte new file mode 100644 index 000000000..08f52ab50 --- /dev/null +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/view.svelte @@ -0,0 +1,1102 @@ + + + + +
+
+ + {#if documentId} +
+ {truncateId(documentId)} +
+ {/if} +
+ + {#if errorMessage && !$isSmallViewport} +
+ {errorMessage} +
+ {/if} + + {#if documentId} + + + + Copy object + + {/if} +
+ + {#if errorMessage && $isSmallViewport} +
+ {errorMessage} +
+ {/if} +
+
+ + diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+layout.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+layout.svelte index f49d3685f..60b356021 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+layout.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+layout.svelte @@ -10,7 +10,7 @@ diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+page.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+page.svelte index 675ff6671..4d2ee9a4c 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+page.svelte @@ -1,5 +1,5 @@ {#key page.params.collection} @@ -98,17 +100,40 @@ {#if data.documents.total} - {JSON.stringify( - { - documents: data.documents - }, - 2, - null - )} + {:else if $hasPageQueries} - Nothing here, please go + { + queries.clearAll(); + queries.apply(); + trackEvent(Submit.FilterClear, { + source: 'database_collections' + }); + } + } + }} /> {:else} - Nothing here, please go + { + // some side sheet with a json editor + } + }, + random: { + onClick: () => { + $randomDataModalState.show = true; + } + } + }} /> {/if}
{/key} diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+page.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+page.ts index 494e8c3ad..c51e11945 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+page.ts +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+page.ts @@ -1,12 +1,9 @@ import { Dependencies, SPREADSHEET_PAGE_LIMIT } from '$lib/constants'; import { getLimit, getPage, getQuery, getView, pageToOffset, View } from '$lib/helpers/load'; import { sdk } from '$lib/stores/sdk'; -import { Query } from '@appwrite.io/console'; import type { PageLoad } from './$types'; import { queries, queryParamToMap } from '$lib/components/filters'; -import type { TagValue } from '$lib/components/filters/store'; -import type { Entity } from '$database/(entity)'; -import { buildWildcardEntitiesQuery } from '$database/store'; +import { buildGridQueries, extractSortFromQueries } from '$database/store'; export const load: PageLoad = async ({ params, depends, url, route, parent }) => { const { collection } = await parent(); @@ -22,14 +19,14 @@ export const load: PageLoad = async ({ params, depends, url, route, parent }) => const parsedQueries = queryParamToMap(paramQueries || '[]'); queries.set(parsedQueries); - // const currentSort = extractSortFromQueries(parsedQueries); + const currentSort = extractSortFromQueries(parsedQueries); return { offset, limit, view, query, - // currentSort, + currentSort, parsedQueries, documents: await sdk.forProject(params.region, params.project).documentsDB.listDocuments({ databaseId: params.database, @@ -38,25 +35,3 @@ export const load: PageLoad = async ({ params, depends, url, route, parent }) => }) }; }; - -function buildGridQueries( - limit: number, - offset: number, - parsedQueries: Map, - entity: Entity -) { - const hasOrderQuery = Array.from(parsedQueries.values()).some( - (q) => q.includes('orderAsc') || q.includes('orderDesc') - ); - - const queryArray = [Query.limit(limit), Query.offset(offset)]; - - // don't override if there's a user created sort! - if (!hasOrderQuery) { - queryArray.push(Query.orderDesc('')); - } - - queryArray.push(...parsedQueries.values(), ...buildWildcardEntitiesQuery(entity)); - - return queryArray; -} diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte new file mode 100644 index 000000000..49e973e6f --- /dev/null +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte @@ -0,0 +1,719 @@ + + + + {#key $spreadsheetRenderKey} + { + // (showDocumentCreateSheet.show = true) + }} + bind:currentPage + nextPageTriggerOffset={2} + jumpToPageNumber={jumpToPageReactive} + loadingMore={$paginatedDocumentsLoading} + itemsPerPage={SPREADSHEET_PAGE_LIMIT} + loadNextPage={loadPage} + loadPreviousPage={loadPage} + goToPage={handleGoToPage} + bottomActionTooltip={{ + text: 'Create row', + placement: 'top-end' + }}> + + {#each $collectionColumns as column (column.id)} + + {#if !column.isAction} + + + {column.title} + + + {/if} + + {/each} + + + + {@const document = $paginatedDocuments.getItemAtVirtualIndex(index)} + {#if document === null} + + {#each $collectionColumns as col} + + {/each} + + {:else} + + {/if} + + + + + + + + {selectedDocuments.length + ? `${selectedDocuments.length} document${selectedDocuments.length === 1 ? '' : 's'} selected` + : `${formatNumberWithCommas($documents.total)} document${$documents.total === 1 ? '' : 's'}`} + + + +
+
+ + + Page + + ({ + label: `${i + 1}`, + value: i + 1 + }))} + on:change={(e) => (jumpToPageReactive = Number(e.detail))} /> + + + out of {totalPages} + + +
+ + {#if !$isSmallViewport} +
+ { + $randomDataModalState.show = true; + }}>Generate sample data +
+ {/if} +
+
+
+ {/key} + + {#snippet noSqlEditor()} + { + console.log(value); + }} /> + {/snippet} + + {#if selectedDocuments.length > 0} +
+ + +
+ + + + {selectedDocuments.length > 1 ? 'documents' : 'document'} + selected + + +
+
+ + (selectedDocuments = [])} + >Cancel + (showDelete = true)} + >Delete + +
+
+ {/if} +
+ + + {@const isSingle = selectedDocumentForDelete !== null} + +

+ {#if isSingle} + Are you sure you want to delete this row from {collection.name}? + {:else} + Are you sure you want to delete {selectedDocuments.length} + {selectedDocuments.length > 1 ? 'documents' : 'document'} from {collection.name}? + {/if} +

+ +

This action is irreversible.

+
+ + diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/store.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/store.ts index 9d3d04459..f92a02483 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/store.ts +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/store.ts @@ -1,5 +1,24 @@ import { page } from '$app/stores'; -import { derived } from 'svelte/store'; +import { derived, writable } from 'svelte/store'; import type { Models } from '@appwrite.io/console'; +import { SPREADSHEET_PAGE_LIMIT } from '$lib/constants'; +import { createSparsePagedDataStore } from '@appwrite.io/pink-svelte'; +import type { Column } from '$lib/helpers/types'; +import type { SortState } from '$database/store'; export const indexes = derived(page, ($page) => $page.data.collection.indexes as Models.Index[]); + +export const spreadsheetRenderKey = writable('initial'); + +export const collectionColumns = writable([]); +export const isCollectionsCsvImportInProgress = writable(false); + +export const spreadsheetLoading = writable(false); +export const paginatedDocumentsLoading = writable(false); +export const paginatedDocuments = + createSparsePagedDataStore(SPREADSHEET_PAGE_LIMIT); + +export const sortState = writable({ + column: null, + direction: 'default' +}); diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/store.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/store.ts index 52705eedc..de35ac8e9 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/store.ts +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/store.ts @@ -6,6 +6,8 @@ import type { Page } from '@sveltejs/kit'; import { type Models, Query } from '@appwrite.io/console'; import type { Entity, Field } from '$database/(entity)'; import { isRelationship } from '$database/table-[table]/rows/store'; +import type { TagValue } from '$lib/components/filters/store'; +import type { SortDirection } from '$lib/components'; export type Columns = | Models.ColumnBoolean @@ -43,6 +45,17 @@ export type Table = Omit & { columns: Array; }; +export type SortState = { + column?: string; + direction: SortDirection; +}; + +export type RandomDataSchema = { + show: boolean; + value: number; + onSubmit?: () => Promise | void; +}; + export const expandTabs = writable(null); export const showCreateEntity = writable(false); @@ -77,6 +90,11 @@ export const databaseSubNavigationItems = [ { title: 'Settings', href: 'settings', icon: IconCog } ]; +export const randomDataModalState = writable({ + show: false, + value: 25 // initial value! +}); + export function buildEntityRoute(page: Page, entityType: string, entityId: string): string { return withPath( resolveRoute( @@ -99,3 +117,39 @@ export function buildWildcardEntitiesQuery(entity: Entity | null = null): string Query.select(['*']) ]; } + +export function extractSortFromQueries(parsedQueries: Map) { + for (const [tagValue, queryString] of parsedQueries.entries()) { + if (queryString.includes('orderAsc') || queryString.includes('orderDesc')) { + const isAsc = queryString.includes('orderAsc'); + return { + column: tagValue.value, + direction: isAsc ? 'asc' : 'desc' + }; + } + } + + return { column: null, direction: 'default' }; +} + +export function buildGridQueries( + limit: number, + offset: number, + parsedQueries: Map, + table: Entity +) { + const hasOrderQuery = Array.from(parsedQueries.values()).some( + (q) => q.includes('orderAsc') || q.includes('orderDesc') + ); + + const queryArray = [Query.limit(limit), Query.offset(offset)]; + + // don't override if there's a user created sort! + if (!hasOrderQuery) { + queryArray.push(Query.orderDesc('')); + } + + queryArray.push(...parsedQueries.values(), ...buildWildcardEntitiesQuery(table)); + + return queryArray; +} diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+layout.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+layout.svelte index a901afaf4..d7a7c951b 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+layout.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+layout.svelte @@ -26,7 +26,6 @@ columnsOrder, databaseColumnSheetOptions, databaseRowSheetOptions, - randomDataModalState, showCreateColumnSheet, showCreateIndexSheet, spreadsheetLoading, @@ -39,7 +38,6 @@ import { addSubPanel, registerCommands, updateCommandGroupRanks } from '$lib/commandCenter'; import CreateColumn from './createColumn.svelte'; import { CreateColumnPanel } from '$lib/commandCenter/panels'; - import { showCreateEntity } from '../store'; import { project } from '../../../store'; import { page } from '$app/state'; import { canWriteTables } from '$lib/stores/roles'; @@ -50,8 +48,7 @@ import EditColumn from './columns/edit.svelte'; import RowActivity from './rows/activity.svelte'; import EditRowPermissions from './rows/editPermissions.svelte'; - import { Dialog, Layout, Typography, Selector } from '@appwrite.io/pink-svelte'; - import { Button, Seekbar } from '$lib/elements/forms'; + import { Layout, Selector } from '@appwrite.io/pink-svelte'; import { generateFakeRecords, generateColumns } from '$lib/helpers/faker'; import { addNotification } from '$lib/stores/notifications'; import { sleep } from '$lib/helpers/promises'; @@ -61,7 +58,7 @@ import { chunks } from '$lib/helpers/array'; import { Submit, trackEvent } from '$lib/actions/analytics'; - import { expandTabs, type Columns } from '../store'; + import { expandTabs, randomDataModalState } from '../store'; import type { LayoutData } from './$types'; @@ -96,6 +93,9 @@ onMount(() => { expandTabs.set(preferences.getKey('entityHeaderExpanded', true)); + // set faker method. + $randomDataModalState.onSubmit = async () => await createFakeData(); + return realtime .forProject(page.params.region, page.params.project) .subscribe(['project', 'console'], (response) => { @@ -256,14 +256,12 @@ $spreadsheetLoading = true; $randomDataModalState.show = false; - let columns: Columns[] = []; + let columns: Field[] = []; const currentFields = table.fields; const hasAnyRelationships = currentFields.some((field: Field) => isRelationship(field)); - const filteredColumns = currentFields.filter( - (field: Field) => field.type !== 'relationship' - ); + columns = currentFields.filter((field: Field) => field.type !== 'relationship'); - if (!filteredColumns.length) { + if (!columns.length) { try { columns = await generateColumns($project, page.params.database, page.params.table); @@ -284,13 +282,17 @@ let rowIds = []; try { - const { rows, ids } = generateFakeRecords(columns, $randomDataModalState.value); + const { records, ids } = generateFakeRecords( + $randomDataModalState.value, + 'tablesdb', + columns + ); rowIds = ids; const tablesSDK = sdk.forProject(page.params.region, page.params.project).tablesDB; if (hasAnyRelationships) { - for (const batch of chunks(rows)) { + for (const batch of chunks(records)) { try { await Promise.all( batch.map((row) => @@ -310,7 +312,7 @@ await tablesSDK.createRows({ databaseId: page.params.database, tableId: page.params.table, - rows + rows: records }); } @@ -479,22 +481,4 @@ - - - - Select how many sample rows to generate for testing. This won't delete or replace any - existing rows. - - - - - - - - - - - - - diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.svelte index 3f2db4fc1..7b5984c1e 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.svelte @@ -10,10 +10,9 @@ import type { PageData } from './$types'; import { tableColumns, - isCsvImportInProgress, + isTablesCsvImportInProgress, showRowCreateSheet, showCreateColumnSheet, - randomDataModalState, columnsOrder } from './store'; import SpreadSheet from './spreadsheet.svelte'; @@ -32,7 +31,7 @@ import { columnOptions } from './columns/store'; import { EmptySheet, type Field } from '$database/(entity)'; import { Empty as SuggestionsEmptySheet, tableColumnSuggestions } from '../(suggestions)'; - import { expandTabs } from '$database/store'; + import { expandTabs, randomDataModalState } from '$database/store'; export let data: PageData; @@ -89,7 +88,7 @@ $tableColumnSuggestions.table.id === page.params.table; async function onSelect(file: Models.File, localFile = false) { - $isCsvImportInProgress = true; + $isTablesCsvImportInProgress = true; try { await sdk @@ -114,7 +113,7 @@ message: e.message }); } finally { - $isCsvImportInProgress = false; + $isTablesCsvImportInProgress = false; } } @@ -204,7 +203,7 @@ {:else if $hasPageQueries} {:else} {:else} { diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.ts index 157abc17f..7ccffdf99 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.ts +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.ts @@ -1,12 +1,9 @@ import { Dependencies, SPREADSHEET_PAGE_LIMIT } from '$lib/constants'; import { getLimit, getPage, getQuery, getView, pageToOffset, View } from '$lib/helpers/load'; import { sdk } from '$lib/stores/sdk'; -import { Query } from '@appwrite.io/console'; import type { PageLoad } from './$types'; import { queries, queryParamToMap } from '$lib/components/filters'; -import { buildWildcardEntitiesQuery } from '$database/store'; -import type { TagValue } from '$lib/components/filters/store'; -import type { Entity } from '$database/(entity)'; +import { buildGridQueries, extractSortFromQueries } from '$database/store'; export const load: PageLoad = async ({ params, depends, url, route, parent }) => { const { table } = await parent(); @@ -38,39 +35,3 @@ export const load: PageLoad = async ({ params, depends, url, route, parent }) => }) }; }; - -function extractSortFromQueries(parsedQueries: Map) { - for (const [tagValue, queryString] of parsedQueries.entries()) { - if (queryString.includes('orderAsc') || queryString.includes('orderDesc')) { - const isAsc = queryString.includes('orderAsc'); - return { - column: tagValue.value, - direction: isAsc ? 'asc' : 'desc' - }; - } - } - - return { column: null, direction: 'default' }; -} - -function buildGridQueries( - limit: number, - offset: number, - parsedQueries: Map, - table: Entity -) { - const hasOrderQuery = Array.from(parsedQueries.values()).some( - (q) => q.includes('orderAsc') || q.includes('orderDesc') - ); - - const queryArray = [Query.limit(limit), Query.offset(offset)]; - - // don't override if there's a user created sort! - if (!hasOrderQuery) { - queryArray.push(Query.orderDesc('')); - } - - queryArray.push(...parsedQueries.values(), ...buildWildcardEntitiesQuery(table)); - - return queryArray; -} diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/+page.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/+page.svelte index 182dfb298..f50d013d7 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/+page.svelte @@ -21,7 +21,7 @@ type Columns, type ColumnsWidth, indexes, - isCsvImportInProgress, + isTablesCsvImportInProgress, reorderItems, showCreateIndexSheet } from '../store'; @@ -282,7 +282,7 @@ +
- - {/snippet} @@ -331,16 +277,42 @@ {#snippet selectDatabaseType()} {#each databaseTypes as databaseType} - - {databaseType.subtitle} - +
+ + {databaseType.subtitle} + +
{/each}
{/snippet} + + From 4076f5f1ae4be5c92bb01a668261a35904676fc6 Mon Sep 17 00:00:00 2001 From: Darshan Date: Fri, 17 Oct 2025 13:52:47 +0530 Subject: [PATCH 008/209] add: images. update: db page to svelte5. --- .../database-[database]/+page.svelte | 50 ++++++++----- .../collection-[collection]/+page.svelte | 8 +-- static/images/empty-documents-db-dark.svg | 71 +++++++++++++++++++ static/images/empty-documents-db-light.svg | 60 ++++++++++++++++ 4 files changed, 165 insertions(+), 24 deletions(-) create mode 100644 static/images/empty-documents-db-dark.svg create mode 100644 static/images/empty-documents-db-light.svg diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/+page.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/+page.svelte index e9bf52da2..9098ef271 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/+page.svelte @@ -31,8 +31,10 @@ return columns; }); + // TODO: get proper images for documentsDB function getImageRoute(type: 'light' | 'dark'): string { - return withPath(resolveRoute('/'), `/images/empty-database-${type}.svg`); + const base = terminology.type === 'documentsdb' ? 'empty-documents-db' : 'empty-database'; + return withPath(resolveRoute('/'), `/images/${base}-${type}.svg`); } const emptyPageText = $derived.by(() => { @@ -94,26 +96,36 @@ {:else} - - {emptyPageText} +
+ + {emptyPageText} - - + + - {#if $canWriteTables} - - {/if} - - + {#if $canWriteTables} + + {/if} + + +
{/if} + + diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+page.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+page.svelte index 4d2ee9a4c..32e703f02 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+page.svelte @@ -4,7 +4,7 @@ import { Container } from '$lib/layout'; import { preferences } from '$lib/stores/preferences'; import { Icon, Layout, Divider } from '@appwrite.io/pink-svelte'; - import type { PageData } from './$types'; + import type { PageProps } from './$types'; import FilePicker from '$lib/components/filePicker.svelte'; import { page } from '$app/state'; import { sdk } from '$lib/stores/sdk'; @@ -19,11 +19,9 @@ import { canWriteRows } from '$lib/stores/roles'; import SpreadSheet from './spreadsheet.svelte'; - export let data: PageData; + const { data }: PageProps = $props(); - $: collection = data.collection; - - let showImportCSV = false; + let showImportCSV = $state(false); async function onSelect(file: Models.File, localFile = false) { $isCollectionsCsvImportInProgress = true; diff --git a/static/images/empty-documents-db-dark.svg b/static/images/empty-documents-db-dark.svg new file mode 100644 index 000000000..22c529c9b --- /dev/null +++ b/static/images/empty-documents-db-dark.svg @@ -0,0 +1,71 @@ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/static/images/empty-documents-db-light.svg b/static/images/empty-documents-db-light.svg new file mode 100644 index 000000000..8eabf996e --- /dev/null +++ b/static/images/empty-documents-db-light.svg @@ -0,0 +1,60 @@ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
From 546f1cb1bf8f9e81e9d8c1704ef5655693d4d851 Mon Sep 17 00:00:00 2001 From: Darshan Date: Fri, 17 Oct 2025 16:08:51 +0530 Subject: [PATCH 009/209] =?UTF-8?q?feat:=20skeletons=20in=20json=20editor?= =?UTF-8?q?=20=F0=9F=92=AA=20optimize:=20imports,=20singular=20sources=20o?= =?UTF-8?q?f=20truth.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/lib/components/csvImportBox.svelte | 2 +- src/lib/components/sortButton.svelte | 4 +- .../(entity)/views/layouts/empty.svelte | 14 +- .../(entity)/views/layouts/spreadsheet.svelte | 30 +++-- .../(suggestions)/indexes.svelte | 2 +- .../(components)/editor/helpers/constants.ts | 12 ++ .../(components)/editor/view.svelte | 124 ++++++++++++++---- .../collection-[collection]/+layout.svelte | 8 +- .../collection-[collection]/+page.svelte | 1 + .../spreadsheet.svelte | 9 +- .../collection-[collection]/store.ts | 3 - .../databases/database-[database]/store.ts | 4 + .../table-[table]/+layout.svelte | 10 +- .../table-[table]/columns/+page.svelte | 2 +- .../table-[table]/columns/deleteColumn.svelte | 2 +- .../table-[table]/columns/edit.svelte | 3 +- .../table-[table]/columns/store.ts | 2 +- .../table-[table]/createColumn.svelte | 3 +- .../table-[table]/rows/cell/edit.svelte | 2 +- .../rows/columns/columnForm.svelte | 6 +- .../rows/columns/columnItem.svelte | 2 +- .../table-[table]/rows/create.svelte | 4 +- .../table-[table]/spreadsheet.svelte | 6 +- .../table-[table]/store.ts | 4 - 24 files changed, 181 insertions(+), 78 deletions(-) diff --git a/src/lib/components/csvImportBox.svelte b/src/lib/components/csvImportBox.svelte index ec7a2c9a3..9910e193f 100644 --- a/src/lib/components/csvImportBox.svelte +++ b/src/lib/components/csvImportBox.svelte @@ -13,7 +13,7 @@ // re-render the key for sheet UI. import { hash } from '$lib/helpers/string'; - import { spreadsheetRenderKey } from '$routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/store'; + import { spreadsheetRenderKey } from '$database/store'; type ImportItem = { status: string; diff --git a/src/lib/components/sortButton.svelte b/src/lib/components/sortButton.svelte index d202cf664..bb24a2bb2 100644 --- a/src/lib/components/sortButton.svelte +++ b/src/lib/components/sortButton.svelte @@ -5,10 +5,10 @@ @@ -40,8 +40,8 @@ import type { Text } from '@codemirror/state'; import { onMount, onDestroy } from 'svelte'; import Id, { truncateId } from '$lib/components/id.svelte'; - import { Icon, Layout, Skeleton, Tooltip, Typography } from '@appwrite.io/pink-svelte'; - import { IconDuplicate } from '@appwrite.io/pink-icons-svelte'; + import { Icon, Layout, Skeleton, Spinner, Tooltip, Typography } from '@appwrite.io/pink-svelte'; + import { IconCheck, IconDuplicate } from '@appwrite.io/pink-icons-svelte'; import { Button } from '$lib/elements/forms'; import { copy } from '$lib/helpers/copy'; import { isSmallViewport } from '$lib/stores/viewport'; @@ -55,7 +55,6 @@ SYSTEM_KEYS, DEBOUNCE_DELAY, LINTER_DELAY, - UNQUOTED_KEY_REGEX, INDENT_REGEX, SCALAR_VALUE_REGEX, TRAILING_COMMA_REGEX, @@ -66,19 +65,28 @@ getIndent } from './helpers/constants'; import { toLocaleDateTime } from '$lib/helpers/date'; + import { ID } from '@appwrite.io/console'; + import { areObjectsSame } from '$lib/helpers/object'; + import { sleep } from '$lib/helpers/promises'; interface Props { + isNew?: boolean; data?: JsonValue; + isSaving?: boolean; loading?: boolean; - onchange?: (newData: JsonValue) => void; + onChange?: (newData: JsonValue) => Promise | void; + onSave?: (newData: JsonValue) => Promise | void; readonly?: boolean; wrapLines?: boolean; errorInPlace?: boolean; } let { + isNew = false, data = $bindable(), - onchange, + onChange, + onSave, + isSaving = $bindable(false), loading = false, readonly = false, wrapLines = true, @@ -89,7 +97,7 @@ let editorView: EditorView | null = null; let errorMessage = $state(null); - let changeTimer: number | null = null; // debounce timer for parse + onchange + let changeTimer: ReturnType | null = null; // debounce timer for parse + onChange let pendingCanonicalize = false; // set when a full-document replace (paste-all) occurs let lastExpectedContent = ''; // track latest serialized data to avoid spurious rewrites let lastDocId: string | null = null; // track current document identity for history reset @@ -100,16 +108,24 @@ let tooltipMessage = $state('Copy document'); // Store the original data to preserve system values - let originalData = $state(data); + let originalData = $state($state.snapshot(data)); + + // Check for enable, disable save button. + const hasDataChanged = $derived(!areObjectsSame(data, originalData)); - // Track if we're currently updating from editor to prevent loops let isUpdatingFromEditor = false; + // Track previous isNew state to detect transitions + let wasNew = isNew; + + // Generate a stable ID once for new documents + const generatedId = ID.unique(); + // Get $id from data const documentId = $derived( - data && typeof data === 'object' && !Array.isArray(data) && '$id' in data + data && typeof data === 'object' && !Array.isArray(data) && '$id' in data && data.$id ? String(data.$id) - : null + : generatedId ); // Convert data to formatted JavaScript object notation (no quotes on keys) @@ -200,7 +216,11 @@ } // Find ranges of system keys (lines starting with $id, $createdAt, $updatedAt) + // When isNew=true, skip all readonly range detection since we don't have timestamps yet function findReadOnlyRanges(doc: Text): Array<{ from: number; to: number }> { + // When creating a new document, allow editing everything + if (isNew) return []; + const ranges: Array<{ from: number; to: number }> = []; let found = 0; @@ -234,12 +254,15 @@ const originalObj = originalData as JsonObject; // Restore only the editor-visible system fields from the original document - if (originalObj.$id !== undefined) { + // Skip $id preservation when creating a new document to allow user edits + if (!isNew && originalObj.$id !== undefined) { parsedObj.$id = originalObj.$id; } + if (originalObj.$createdAt !== undefined) { parsedObj.$createdAt = originalObj.$createdAt; } + if (originalObj.$updatedAt !== undefined) { parsedObj.$updatedAt = originalObj.$updatedAt; } @@ -635,27 +658,12 @@ ); // Safe parse variant that indicates success without mutating editor on failure - function tryParseEditorContent(content: string): { ok: boolean; value: JsonValue } { - // 1) Strict JSON + async function tryParseEditorContent( + content: string + ): Promise<{ ok: boolean; value: JsonValue }> { try { - return { ok: true, value: JSON.parse(content) }; - } catch { - /* empty */ - } - - // 2) JSON with unquoted keys - try { - const withQuotedKeys = content.replace(UNQUOTED_KEY_REGEX, '$1"$2":'); - return { ok: true, value: JSON.parse(withQuotedKeys) }; - } catch { - /* empty */ - } - - // 3) JSON with unquoted keys and trailing commas removed - try { - const withQuotedKeys = content.replace(UNQUOTED_KEY_REGEX, '$1"$2":'); - const noTrailingCommas = withQuotedKeys.replace(/,\s*([}\]])/g, '$1'); - return { ok: true, value: JSON.parse(noTrailingCommas) }; + const value = await parse(content); + return { ok: true, value }; } catch { /* empty */ } @@ -742,15 +750,16 @@ } }); - // Debounce parse + onchange work + // Debounce parse + onChange work if (changeTimer) { clearTimeout(changeTimer); changeTimer = null; } - changeTimer = window.setTimeout(() => { + + changeTimer = setTimeout(async () => { const state = update.view.state; const newContent = state.doc.toString(); - const res = tryParseEditorContent(newContent); + const res = await tryParseEditorContent(newContent); if (!res.ok) { return; // linter will surface the error } @@ -764,7 +773,7 @@ } data = parsed; - onchange?.(parsed); + onChange?.(parsed); lastExpectedContent = dataToString(parsed); }, DEBOUNCE_DELAY); }), @@ -791,28 +800,44 @@ editorView = null; }); + // Reset originalData when transitioning to new document mode + $effect(() => { + if (isNew && !wasNew) { + originalData = $state.snapshot(data); + } + wasNew = isNew; + }); + // Update originalData and editor when data or document changes externally $effect(() => { if (!editorView) return; - // Capture new system values from the external document - originalData = data; - - // Detect document switch and reset history/state entirely + // Detect document switch if (documentId !== lastDocId) { lastDocId = documentId; - const expected = dataToString(data); - lastExpectedContent = expected; - if (changeTimer) { - clearTimeout(changeTimer); - changeTimer = null; + + // For existing documents only: + // capture snapshot and reset editor state/history + if (!isNew) { + // Capture original data snapshot when switching documents + originalData = $state.snapshot(data); + const expected = dataToString(data); + + lastExpectedContent = expected; + + if (changeTimer) { + clearTimeout(changeTimer); + changeTimer = null; + } + + pendingCanonicalize = false; + isUpdatingFromEditor = true; + + const newState = EditorState.create({ doc: expected, extensions: baseExtensions }); + editorView.setState(newState); + queueMicrotask(() => (isUpdatingFromEditor = false)); + return; } - pendingCanonicalize = false; - isUpdatingFromEditor = true; - const newState = EditorState.create({ doc: expected, extensions: baseExtensions }); - editorView.setState(newState); - queueMicrotask(() => (isUpdatingFromEditor = false)); - return; } // Only react when the external data actually changed @@ -868,22 +893,62 @@ {/if} {#if documentId} - - + + + + + Save + + + + + + {tooltipMessage} + + {/if} {/if}
diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+page.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+page.svelte index 1803a53a3..255f33563 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+page.svelte @@ -15,7 +15,7 @@ import type { Models } from '@appwrite.io/console'; import { expandTabs, randomDataModalState } from '$database/store'; import { EmptySheet } from '$database/(entity)'; - import { isCollectionsCsvImportInProgress } from './store'; + import { isCollectionsCsvImportInProgress, noSqlDocument } from './store'; import { canWriteRows } from '$lib/stores/roles'; import SpreadSheet from './spreadsheet.svelte'; @@ -66,7 +66,20 @@ Import CSV {#if !$isSmallViewport} - diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte index bb8245951..106ce6486 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte @@ -40,6 +40,7 @@ import { expandTabs, buildWildcardEntitiesQuery } from '$database/store'; import { collectionColumns, + noSqlDocument, paginatedDocuments, paginatedDocumentsLoading, sortState @@ -50,7 +51,7 @@ spreadsheetRenderKey, spreadsheetLoading } from '$database/store'; - import { NoSqlEditor, type JsonValue } from './(components)/editor'; + import { type JsonValue, NoSqlEditor } from './(components)/editor'; export let data: PageData; @@ -64,14 +65,6 @@ const databaseId = page.params.database; const collectionId = page.params.collection; - let jsonEditorDocument = writable<{ - show: boolean; - document?: Models.Document; - }>({ - show: false, - document: null - }); - const emptyCellsLimit = $spreadsheetLoading ? 30 : $isSmallViewport @@ -104,7 +97,7 @@ const firstDocument = $documents?.documents?.[0]; if (firstDocument) { - $jsonEditorDocument.document = firstDocument; + $noSqlDocument.document = firstDocument; } }); @@ -325,32 +318,72 @@ } // possibly for auto-save! - async function updateDocumentContents(document: Models.Document) { + async function createOrUpdateDocument(jsonValue: JsonValue) { + const document = jsonValue as Models.Document; + const documentsDB = sdk.forProject(page.params.region, page.params.project).documentsDB; + + /** + * remove dates because + * console can override timestamps! + */ + const { $createdAt, $updatedAt, $id, ...documentWithoutDates } = document; + try { - await sdk - .forProject(page.params.region, page.params.project) - .documentsDB.updateDocument({ + if ($noSqlDocument.isNew) { + // create + await documentsDB.createDocument({ databaseId, collectionId, - documentId: document.$id, - data: document, - permissions: document.$permissions + documentId: $id, + data: documentWithoutDates ?? [] }); - invalidate(Dependencies.DOCUMENT); - trackEvent(Submit.DocumentUpdate); - addNotification({ - message: 'Document has been updated', - type: 'success' - }); - return true; + await invalidate(Dependencies.DOCUMENTS); + trackEvent(Submit.DocumentCreate); + addNotification({ + message: 'Document has been created', + type: 'success' + }); + + noSqlDocument.update(() => { + return { + isNew: false, + show: false, + document: {} + }; + }); + + spreadsheetRenderKey; + } else { + // update + await documentsDB.updateDocument({ + databaseId, + collectionId, + documentId: $id, + data: documentWithoutDates, + permissions: document.$permissions ?? [] + }); + + await invalidate(Dependencies.DOCUMENT); + trackEvent(Submit.DocumentUpdate); + addNotification({ + message: 'Document has been updated', + type: 'success' + }); + } + + // re-render spreadsheet! + spreadsheetRenderKey.set(hash($id)); + const firstDocument = $documents?.documents?.[0]; + if (firstDocument) { + $noSqlDocument.document = firstDocument; + } } catch (error) { addNotification({ message: error.message, type: 'error' }); trackError(error, Submit.DocumentUpdatePermissions); - return false; } } @@ -436,7 +469,7 @@ + bind:showEditorSideSheet={$noSqlDocument.show}> {#key $spreadsheetRenderKey} { - $jsonEditorDocument.show = true; - $jsonEditorDocument.document = document; + $noSqlDocument.show = true; + $noSqlDocument.isNew = false; + $noSqlDocument.document = document; }} style:cursor="pointer"> + isSelected={$noSqlDocument?.document?.$id === document.$id}> {#each $collectionColumns as { id: columnId } (columnId)} {#if columnId === '$id'} @@ -617,10 +651,9 @@ {#snippet noSqlEditor()} { - console.log(value); - }} /> + isNew={$noSqlDocument.isNew} + bind:data={$noSqlDocument.document} + onSave={async (document) => await createOrUpdateDocument(document)} /> {/snippet} {#if selectedDocuments.length > 0} diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/store.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/store.ts index 4055094b0..9f96cd489 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/store.ts +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/store.ts @@ -19,3 +19,13 @@ export const sortState = writable({ column: null, direction: 'default' }); + +export const noSqlDocument = writable<{ + show: boolean; + document?: Models.Document | object; + isNew?: boolean; +}>({ + show: false, + document: null, + isNew: false +}); From 5cdf6e55bbd58bb9bcdb4dc82447c8de2ba13944 Mon Sep 17 00:00:00 2001 From: Darshan Date: Sat, 18 Oct 2025 13:40:34 +0530 Subject: [PATCH 014/209] add: ctrl/cmd + s to save the document. --- .../(components)/editor/helpers/keymaps.ts | 19 ++++++- .../(components)/editor/view.svelte | 55 ++++++++++--------- .../spreadsheet.svelte | 1 + 3 files changed, 48 insertions(+), 27 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/helpers/keymaps.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/helpers/keymaps.ts index 46d4e1d84..5fa8123ed 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/helpers/keymaps.ts +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/helpers/keymaps.ts @@ -6,14 +6,29 @@ import { defaultKeymap, historyKeymap, indentLess, indentMore } from '@codemirro // main editor keymaps, // these require functions from the component export function createEditorKeymaps( - insertNewlineKeepIndent: (view: EditorView) => boolean + insertNewlineKeepIndent: (view: EditorView) => boolean, + onSave?: () => Promise | void ): KeyBinding[] { - return [ + const keymaps: KeyBinding[] = [ { key: 'Tab', run: indentMore }, { key: 'Enter', run: insertNewlineKeepIndent }, { key: 'Shift-Enter', run: insertNewlineKeepIndent }, { key: 'Shift-Tab', run: indentLess } ]; + + // Add Cmd/Ctrl+S save shortcut if save handler is provided + if (onSave) { + keymaps.push({ + key: 'Mod-s', + preventDefault: true, + run: () => { + onSave(); + return true; + } + }); + } + + return keymaps; } // Secondary keymaps - these are standard CodeMirror keymaps diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/view.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/view.svelte index fa20bf5d3..4b89132b1 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/view.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/view.svelte @@ -79,6 +79,7 @@ readonly?: boolean; wrapLines?: boolean; errorInPlace?: boolean; + ctrlSave?: boolean; } let { @@ -90,7 +91,8 @@ loading = false, readonly = false, wrapLines = true, - errorInPlace = true + errorInPlace = true, + ctrlSave = false }: Props = $props(); let editorContainer: HTMLDivElement = $state(null); @@ -119,7 +121,7 @@ let wasNew = isNew; // Generate a stable ID once for new documents - const generatedId = ID.unique(); + let generatedId = $state(ID.unique()); // Get $id from data const documentId = $derived( @@ -694,6 +696,25 @@ } } + // Handle save logic - called from both button and keyboard shortcut + async function handleSave(): Promise { + if (!hasDataChanged) return; + + isSaving = true; + + let dataToSave = data; + if (isNew && typeof data === 'object' && data !== null && !Array.isArray(data)) { + const dataObj = data; + if (!dataObj['$id']) { + dataToSave = { $id: generatedId, ...dataObj }; + } + } + + await sleep(2500); + await onSave?.(dataToSave); + isSaving = false; + } + onMount(() => { if (!editorContainer) return; @@ -729,7 +750,9 @@ } }), // Override Enter and Shift-Enter to keep current indent, no extra +indentUnit - keymap.of(createEditorKeymaps(insertNewlineKeepIndent)), + keymap.of( + createEditorKeymaps(insertNewlineKeepIndent, ctrlSave ? handleSave : undefined) + ), keymap.of(secondaryKeymaps), javascript(), customSyntaxHighlighting, @@ -804,6 +827,7 @@ $effect(() => { if (isNew && !wasNew) { originalData = $state.snapshot(data); + generatedId = ID.unique(); } wasNew = isNew; }); @@ -857,10 +881,11 @@ }); // React to read-only prop changes via Compartment reconfigure + // Also make editor read-only while saving to prevent concurrent edits $effect(() => { if (!editorView) return; editorView.dispatch({ - effects: readOnlyCompartment.reconfigure(EditorState.readOnly.of(readonly)) + effects: readOnlyCompartment.reconfigure(EditorState.readOnly.of(readonly || isSaving)) }); }); @@ -901,27 +926,7 @@ size="xs" disabled={!hasDataChanged} class="icon-button" - on:click={async () => { - isSaving = true; - - // For new documents, ensure $id is added to data before saving - let dataToSave = data; - if ( - isNew && - typeof data === 'object' && - data !== null && - !Array.isArray(data) - ) { - const dataObj = data; - if (!dataObj['$id']) { - dataToSave = { $id: generatedId, ...dataObj }; - } - } - - await sleep(2500); - await onSave?.(dataToSave); - isSaving = false; - }}> + on:click={handleSave}> {#if isSaving} {:else} diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte index 106ce6486..0ad75696c 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte @@ -651,6 +651,7 @@ {#snippet noSqlEditor()} await createOrUpdateDocument(document)} /> From dd2f8fa9af32d612eea8c9a39cc8dc09a2388a90 Mon Sep 17 00:00:00 2001 From: Darshan Date: Sat, 18 Oct 2025 13:56:12 +0530 Subject: [PATCH 015/209] add: partial options support. fix: height issues on mobile. --- .../(entity)/views/layouts/spreadsheet.svelte | 6 +- .../(components)/editor/view.svelte | 2 - .../spreadsheet.svelte | 61 ++++++++++++------- .../table-[table]/+layout.svelte | 7 ++- .../table-[table]/rows/store.ts | 4 +- .../table-[table]/sheetOptions.svelte | 2 +- .../table-[table]/spreadsheet.svelte | 4 +- 7 files changed, 52 insertions(+), 34 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/layouts/spreadsheet.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/layouts/spreadsheet.svelte index f2a32167a..89b385be6 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/layouts/spreadsheet.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/layouts/spreadsheet.svelte @@ -125,9 +125,11 @@ class:has-json-editor={typeof noSqlEditor !== 'undefined'}> {@render children()} -
+
{#if !$isSmallViewport} - {@render noSqlEditor?.()} +
+ {@render noSqlEditor?.()} +
{:else} {:else if columnId === 'actions'} - - - - - - - - - - - - - - + { + onSelectSheetOption(option, document); + }} + onVisibilityChanged={(visible) => { + canShowDatetimePopover = !visible; + }}> + + {#snippet children(toggle)} + + + + {/snippet} + {/if} {/each} diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+layout.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+layout.svelte index ec49443cd..f88e0d99f 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+layout.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+layout.svelte @@ -52,7 +52,7 @@ import { sleep } from '$lib/helpers/promises'; import { hash } from '$lib/helpers/string'; import { preferences } from '$lib/stores/preferences'; - import { buildRowUrl, isRelationship } from './rows/store'; + import { buildFieldUrl, isRelationship } from './rows/store'; import { chunks } from '$lib/helpers/array'; import { Submit, trackEvent } from '$lib/actions/analytics'; import { @@ -413,7 +413,10 @@ mode: 'copy-tag', text: 'Row URL', show: !!($databaseRowSheetOptions.rowId ?? $databaseRowSheetOptions.row?.$id), - value: buildRowUrl($databaseRowSheetOptions.rowId ?? $databaseRowSheetOptions.row?.$id) + value: buildFieldUrl( + 'row', + $databaseRowSheetOptions.rowId ?? $databaseRowSheetOptions.row?.$id + ) }}> void; diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/spreadsheet.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/spreadsheet.svelte index 11fc82d47..b3a436c3a 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/spreadsheet.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/spreadsheet.svelte @@ -12,7 +12,7 @@ import { type ComponentType, onDestroy, onMount } from 'svelte'; import type { PageData } from './$types'; import { - buildRowUrl, + buildFieldUrl, isRelationship, isRelationshipToMany, isSpatialType, @@ -562,7 +562,7 @@ if (action === 'copy-url') { try { - await copy(buildRowUrl(row.$id)); + await copy(buildFieldUrl('row', row.$id)); addNotification({ type: 'success', message: 'Row url copied' From abbc0ae76080819dd5659a7d7ad82880cd92e5cb Mon Sep 17 00:00:00 2001 From: Darshan Date: Sat, 18 Oct 2025 15:25:40 +0530 Subject: [PATCH 016/209] update: handle document/row direct url hits. --- .../database-[database]/[...rest]/+page.ts | 50 +++++++ .../(components)/editor/view.svelte | 131 ++++++++++-------- .../spreadsheet.svelte | 61 ++++++-- .../collection-[collection]/store.ts | 6 +- .../table-[table]/+layout.svelte | 2 +- 5 files changed, 175 insertions(+), 75 deletions(-) create mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/[...rest]/+page.ts diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/[...rest]/+page.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/[...rest]/+page.ts new file mode 100644 index 000000000..344f772e9 --- /dev/null +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/[...rest]/+page.ts @@ -0,0 +1,50 @@ +import type { PageLoad } from './$types'; +import { redirect } from '@sveltejs/kit'; +import { AppwriteException } from '@appwrite.io/console'; +import { databaseRowSheetOptions } from '../table-[table]/store'; +import { noSqlDocument } from '../collection-[collection]/store'; +import { resolveRoute } from '$lib/stores/navigation'; + +export const load: PageLoad = async ({ params, url }) => { + const restSegments = params.rest ? params.rest.split('/').filter(Boolean) : []; + const baseUrl = resolveRoute( + '/(console)/project-[region]-[project]/databases/database-[database]', + params + ); + + if (restSegments.length === 0) { + throw new AppwriteException('Not Found', 404); + } + + const lastSegment = restSegments[restSegments.length - 1]; + + const rowMatch = lastSegment.match(/^row-([^/]+)$/); + if (rowMatch) { + const rowId = rowMatch[1]; + databaseRowSheetOptions.update((options) => ({ + ...options, + rowId, + show: true, + title: 'Update row' + })); + + const parentSegments = restSegments.slice(0, -1); + const newPath = `${baseUrl}/${parentSegments.join('/')}`; + redirect(308, newPath + url.search); + } + + const documentMatch = lastSegment.match(/^document-([^/]+)$/); + if (documentMatch) { + const documentId = documentMatch[1]; + noSqlDocument.update((options) => ({ + ...options, + documentId + })); + + const parentSegments = restSegments.slice(0, -1); + const newPath = `${baseUrl}/${parentSegments.join('/')}`; + redirect(308, newPath + url.search); + } + + throw new AppwriteException('Not Found', 404); +}; diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/view.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/view.svelte index 2f39b7186..d664fbef2 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/view.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/view.svelte @@ -896,63 +896,64 @@ }); -
+
{#if loading} - {:else} - - {#if documentId} -
- {truncateId(documentId)} -
- {/if} -
+ {/if} - {#if errorMessage && !$isSmallViewport} -
- {errorMessage} + + {#if documentId && !loading} +
+ {truncateId(documentId)}
{/if} +
- {#if documentId} - - - + {#if errorMessage && !$isSmallViewport} +
+ {errorMessage} +
+ {/if} - Save -
+ {#if documentId} + + + - - + Save + - {tooltipMessage} - - - {/if} + + + + {tooltipMessage} + +
{/if}
@@ -966,7 +967,7 @@ {#if loading}
- {#each Array.from({ length: 16 }) as _, index (index)} + {#each Array.from({ length: $isSmallViewport ? 14 : 16 }) as _, index (index)}
{index + 1}
{/each}
@@ -984,33 +985,36 @@ {/each}
- {:else} -
{/if} + +
diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/field/editPermissions.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/field/editPermissions.svelte index aebe3c95a..5f42d2c86 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/field/editPermissions.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/field/editPermissions.svelte @@ -3,19 +3,23 @@ import { sdk } from '$lib/stores/sdk'; import { invalidate } from '$app/navigation'; import { Alert } from '@appwrite.io/pink-svelte'; - import type { Models } from '@appwrite.io/console'; import { Permissions } from '$lib/components/permissions'; import { addNotification } from '$lib/stores/notifications'; import { symmetricDifference } from '$lib/helpers/array'; import { trackEvent, trackError } from '$lib/actions/analytics'; - import { type Entity, getTerminologies } from '$database/(entity)'; + import { + type Entity, + type Record, + getTerminologies, + toSupportiveRecord + } from '$database/(entity)'; let { entity, record = $bindable(null) }: { entity: Entity; - record: Models.DefaultDocument | Models.Document | Models.DefaultRow | Models.Row; + record: Record; } = $props(); let permissions = $state(record.$permissions); @@ -36,23 +40,21 @@ export async function updatePermissions() { try { - const { $databaseId: databaseId, $id: recordId } = record; + const { $databaseId: databaseId, $id: recordId, entityId } = toSupportiveRecord(record); if (terminology.type === 'documentsdb') { - const collectionId = (record as Models.Document).$collectionId; await sdk .forProject(page.params.region, page.params.project) .documentsDB.updateDocument({ databaseId, - collectionId, + collectionId: entityId, documentId: recordId, permissions }); } else { - const tableId = (record as Models.Row).$tableId; await sdk.forProject(page.params.region, page.params.project).tablesDB.updateRow({ databaseId, - tableId, + tableId: entityId, rowId: recordId, permissions }); diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/field/index.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/field/index.ts index 5ad0a2729..640842e60 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/field/index.ts +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/field/index.ts @@ -1,2 +1,3 @@ +export { default as RecordActivity } from './activity.svelte'; export { default as CsvDisabled } from './csvDisabled.svelte'; export { default as EditRecordPermissions } from './editPermissions.svelte'; diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+layout.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+layout.svelte index 079c2efaa..72b98ebed 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+layout.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+layout.svelte @@ -30,8 +30,8 @@ import { addNotification } from '$lib/stores/notifications'; import { sleep } from '$lib/helpers/promises'; import { hash } from '$lib/helpers/string'; - import { documentPermissionSheet } from './store'; - import { SideSheet, EditRecordPermissions } from '$database/(entity)'; + import { documentActivitySheet, documentPermissionSheet } from './store'; + import { SideSheet, EditRecordPermissions, RecordActivity } from '$database/(entity)'; export let data: LayoutData; @@ -241,3 +241,7 @@ bind:this={editRecordPermissions} bind:record={$documentPermissionSheet.document} /> + + + + diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte index 222bd3e81..6b97a1e08 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte @@ -39,6 +39,7 @@ import { expandTabs, buildWildcardEntitiesQuery } from '$database/store'; import { collectionColumns, + documentActivitySheet, documentPermissionSheet, noSqlDocument, paginatedDocuments, @@ -358,8 +359,8 @@ } if (action === 'activity') { - // $rowActivitySheet.row = row; - // $rowActivitySheet.show = true; + $documentActivitySheet.show = true; + $documentActivitySheet.document = document; } } diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/store.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/store.ts index 68db665ce..c4057c018 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/store.ts +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/store.ts @@ -1,10 +1,10 @@ import { page } from '$app/stores'; +import type { Column } from '$lib/helpers/types'; +import type { SortState } from '$database/store'; import { derived, writable } from 'svelte/store'; import type { Models } from '@appwrite.io/console'; import { SPREADSHEET_PAGE_LIMIT } from '$lib/constants'; import { createSparsePagedDataStore } from '@appwrite.io/pink-svelte'; -import type { Column } from '$lib/helpers/types'; -import type { SortState } from '$database/store'; export const indexes = derived(page, ($page) => $page.data.collection.indexes as Models.Index[]); @@ -38,3 +38,8 @@ export const documentPermissionSheet = writable({ show: false, document: null as Models.Document }); + +export const documentActivitySheet = writable({ + show: false, + document: null as Models.Document +}); diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+layout.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+layout.svelte index 31e48b506..a72ed6f76 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+layout.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+layout.svelte @@ -43,7 +43,6 @@ import EditRow from './rows/edit.svelte'; import EditRelatedRow from './rows/editRelated.svelte'; import EditColumn from './columns/edit.svelte'; - import RowActivity from './rows/activity.svelte'; import { Layout, Selector } from '@appwrite.io/pink-svelte'; import { generateFakeRecords, generateColumns } from '$lib/helpers/faker'; import { addNotification } from '$lib/stores/notifications'; @@ -62,7 +61,13 @@ import type { LayoutData } from './$types'; - import { CreateIndex, EditRecordPermissions, type Field, SideSheet } from '$database/(entity)'; + import { + CreateIndex, + EditRecordPermissions, + type Field, + SideSheet, + RecordActivity + } from '$database/(entity)'; import { resolveRoute, withPath } from '$lib/stores/navigation'; import IndexesSuggestions from '../(suggestions)/indexes.svelte'; import { showIndexesSuggestions, tableColumnSuggestions } from '../(suggestions)'; @@ -484,7 +489,7 @@ - + diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/activity.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/activity.svelte deleted file mode 100644 index d7d37451f..000000000 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/activity.svelte +++ /dev/null @@ -1,68 +0,0 @@ - - -{#if loading} -
- - -
-{:else if rowActivityLogs} -
- -
-{/if} - - diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/store.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/store.ts index 9fbbf26a4..01c8c9d9b 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/store.ts +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/store.ts @@ -134,8 +134,6 @@ export enum Deletion { restrict = 'Row can not be deleted' } -export const scrollStore = writable(null); - export const rowActivitySheet = writable({ show: false, row: null as Models.Row From 83b60a0b7d16250669b0c6c98beccbf59dcce010 Mon Sep 17 00:00:00 2001 From: Darshan Date: Sat, 18 Oct 2025 18:02:58 +0530 Subject: [PATCH 021/209] fix: var name. --- .../database-[database]/(entity)/views/field/activity.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/field/activity.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/field/activity.svelte index 1bb6ab64f..a9fc19722 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/field/activity.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/field/activity.svelte @@ -47,7 +47,7 @@ .tablesDB.listRowLogs({ databaseId: databaseId, tableId: entityId, - rowId: $recordId, + rowId: recordId, queries: [Query.limit(limit), Query.offset(offset)] }); } From 623da44f9b910f2523890f8436a5f0657849e6b6 Mon Sep 17 00:00:00 2001 From: Darshan Date: Sat, 18 Oct 2025 18:05:47 +0530 Subject: [PATCH 022/209] add: sort to headers. --- .../collection-[collection]/spreadsheet.svelte | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte index 6b97a1e08..d13bf2068 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte @@ -2,7 +2,7 @@ import { page } from '$app/state'; import { goto, invalidate } from '$app/navigation'; import { Click, Submit, trackError, trackEvent } from '$lib/actions/analytics'; - import { Confirm, Id } from '$lib/components'; + import { Confirm, Id, SortButton } from '$lib/components'; import { Dependencies, SPREADSHEET_PAGE_LIMIT } from '$lib/constants'; import { Button as ConsoleButton, InputSelect } from '$lib/elements/forms'; import { addNotification } from '$lib/stores/notifications'; @@ -231,6 +231,7 @@ spreadsheetContainer.restoreGridSheetScroll(); $spreadsheetLoading = false; + markFirstDocumentSelected(); } async function handleDelete() { @@ -559,6 +560,8 @@ {column.title} + + {/if} From a6bce82fc6019b12140da84bd888b3cca4cb654a Mon Sep 17 00:00:00 2001 From: Darshan Date: Sat, 18 Oct 2025 18:08:39 +0530 Subject: [PATCH 023/209] fix: empty state on tablesdb. --- .../(entity)/views/layouts/spreadsheet.svelte | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/layouts/spreadsheet.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/layouts/spreadsheet.svelte index 89b385be6..aac0d131e 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/layouts/spreadsheet.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/layouts/spreadsheet.svelte @@ -127,7 +127,7 @@
{#if !$isSmallViewport} -
+
{@render noSqlEditor?.()}
{:else} @@ -161,7 +161,8 @@ grid-template-columns: 1fr; } - &:has(.no-sql-editor:empty) { + &:has(.no-sql-editor:empty), + &:has(.no-sql-editor.desktop:empty) { grid-template-columns: 1fr; } } From 0d74a899513eb89d33d4541241b80dd8c1795eca Mon Sep 17 00:00:00 2001 From: Darshan Date: Sat, 18 Oct 2025 18:12:46 +0530 Subject: [PATCH 024/209] fix: errors shown during loading mode. --- .../collection-[collection]/(components)/editor/view.svelte | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/view.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/view.svelte index d664fbef2..96a0e8b72 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/view.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/view.svelte @@ -910,7 +910,7 @@ {/if} - {#if errorMessage && !$isSmallViewport} + {#if errorMessage && !$isSmallViewport && !loading}
{errorMessage}
@@ -957,7 +957,7 @@ {/if}
- {#if errorMessage && $isSmallViewport} + {#if errorMessage && $isSmallViewport && !loading}
{errorMessage} From 4fd5f53bf29929b6ddb67cdbe7ad39726177e650 Mon Sep 17 00:00:00 2001 From: Darshan Date: Sat, 18 Oct 2025 18:17:22 +0530 Subject: [PATCH 025/209] fix: updates. --- .../spreadsheet.svelte | 25 ++++++++----------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte index d13bf2068..4620f326f 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte @@ -386,22 +386,11 @@ data: documentWithoutDates ?? [] }); - await invalidate(Dependencies.DOCUMENTS); trackEvent(Submit.DocumentCreate); addNotification({ message: 'Document has been created', type: 'success' }); - - noSqlDocument.update(() => { - return { - isNew: false, - show: false, - document: {} - }; - }); - - spreadsheetRenderKey; } else { // update await documentsDB.updateDocument({ @@ -412,7 +401,6 @@ permissions: document.$permissions ?? [] }); - await invalidate(Dependencies.DOCUMENT); trackEvent(Submit.DocumentUpdate); addNotification({ message: 'Document has been updated', @@ -420,8 +408,17 @@ }); } + await invalidate(Dependencies.DOCUMENTS); + noSqlDocument.update(() => { + return { + isNew: false, + show: false, + document: {} + }; + }); + // re-render spreadsheet! - spreadsheetRenderKey.set(hash($id)); + spreadsheetRenderKey.set(hash(Date.now().toString())); const firstDocument = $documents?.documents?.[0]; if (firstDocument) { $noSqlDocument.document = firstDocument; @@ -431,7 +428,7 @@ message: error.message, type: 'error' }); - trackError(error, Submit.DocumentUpdatePermissions); + trackError(error, Submit.DocumentUpdate); } } From 40704b87b00971e17791e16c281b31992110e647 Mon Sep 17 00:00:00 2001 From: Darshan Date: Sun, 19 Oct 2025 11:42:29 +0530 Subject: [PATCH 026/209] updates: better empty state. --- .../(entity)/views/layouts/empty.svelte | 72 +++++++++++++++++-- .../spreadsheet.svelte | 4 +- 2 files changed, 67 insertions(+), 9 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/layouts/empty.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/layouts/empty.svelte index e25730dc4..eb5732d14 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/layouts/empty.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/layouts/empty.svelte @@ -169,6 +169,51 @@ } ]; + const getDocumentsDbColumns = (): Column[] => [ + { + id: '$id', + title: '$id', + width: 225, + minimumWidth: 225, + draggable: false, + type: 'string', + icon: IconFingerPrint, + isEditable: false, + isPrimary: false + }, + { + id: '$createdAt', + title: '$createdAt', + width: 200, + minimumWidth: 200, + draggable: false, + type: 'datetime', + icon: IconCalendar, + isEditable: false + }, + { + id: '$updatedAt', + title: '$updatedAt', + width: 200, + minimumWidth: 200, + draggable: false, + type: 'datetime', + icon: IconCalendar, + isEditable: false + }, + { + id: 'actions', + title: '', + width: 40, + isAction: true, + draggable: false, + type: 'string', + resizable: false, + isEditable: false, + hide: false + } + ]; + const getIndexesColumns = (): Column[] => [ { id: 'key', title: 'Key', icon: null, isPrimary: false }, @@ -183,7 +228,13 @@ } ] as Column[]; - const spreadsheetColumns = $derived(mode === 'records' ? getRowColumns() : getIndexesColumns()); + const spreadsheetColumns = $derived.by(() => { + return mode === 'records' + ? type !== 'documentsdb' + ? getRowColumns() + : getDocumentsDbColumns() + : getIndexesColumns(); + }); const emptyCells = $derived( ($isSmallViewport ? 14 : $isTabletViewport ? 17 : 24) + (!$expandTabs ? 2 : 0) @@ -193,10 +244,12 @@
- + data-type={type} + data-loading={$spreadsheetLoading} + bind:this={spreadsheetContainer} + class="databases-spreadsheet spreadsheet-container-outer"> + {#snippet noSqlEditor()} - {#if type === 'documentsdb' && $spreadsheetLoading} - - {/if} + {/snippet} @@ -351,6 +402,13 @@ opacity: 0.85; pointer-events: none; } + + &[data-mode='records'][data-type='documentsdb'] { + position: unset; + &[data-loading='false'] :global(.skeleton) { + animation: none; + } + } } .spreadsheet-fade-bottom { diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte index 4620f326f..ef6c78731 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte @@ -163,7 +163,7 @@ title: '$createdAt', width: 200, minimumWidth: 200, - draggable: true, + draggable: false, type: 'datetime', icon: IconCalendar, isEditable: false, @@ -174,7 +174,7 @@ title: '$updatedAt', width: 200, minimumWidth: 200, - draggable: true, + draggable: false, type: 'datetime', icon: IconCalendar, isEditable: false, From 2e7ff2279ed515766ddb671f2386cff3beb43723 Mon Sep 17 00:00:00 2001 From: Darshan Date: Sun, 19 Oct 2025 11:48:41 +0530 Subject: [PATCH 027/209] fix: editor shown in other screens. --- .../(entity)/views/layouts/empty.svelte | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/layouts/empty.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/layouts/empty.svelte index eb5732d14..ca5751837 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/layouts/empty.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/layouts/empty.svelte @@ -249,7 +249,7 @@ data-loading={$spreadsheetLoading} bind:this={spreadsheetContainer} class="databases-spreadsheet spreadsheet-container-outer"> - + {#snippet noSqlEditor()} - + {#if type === 'documentsdb'} + + {/if} {/snippet} @@ -377,7 +379,7 @@ position: fixed; overflow: hidden; - &[data-mode='records'] { + &[data-mode='records'][data-type='tablesdb'] { & :global([role='rowheader'] :nth-last-child(2) [role='presentation']) { display: none; } @@ -393,6 +395,14 @@ } } + &[data-mode='records'][data-type='documentsdb'] { + position: unset; + // disable animation when not loading! + &[data-loading='false'] :global(.skeleton) { + animation: none; + } + } + & :global(.spreadsheet-container) { overflow-x: hidden; overflow-y: hidden; @@ -402,13 +412,6 @@ opacity: 0.85; pointer-events: none; } - - &[data-mode='records'][data-type='documentsdb'] { - position: unset; - &[data-loading='false'] :global(.skeleton) { - animation: none; - } - } } .spreadsheet-fade-bottom { From e2600d73bac79f9d4e30bd6d77196ac6de6d137a Mon Sep 17 00:00:00 2001 From: Darshan Date: Sun, 19 Oct 2025 13:18:46 +0530 Subject: [PATCH 028/209] add: editor support on mobile. --- .../(entity)/views/layouts/sidesheet.svelte | 4 + .../(entity)/views/layouts/spreadsheet.svelte | 23 +++- .../(components)/editor/view.svelte | 116 +++++++++--------- .../spreadsheet.svelte | 39 +++++- .../collection-[collection]/store.ts | 6 +- 5 files changed, 122 insertions(+), 66 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/layouts/sidesheet.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/layouts/sidesheet.svelte index 3f38779eb..1e7c3adb6 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/layouts/sidesheet.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/layouts/sidesheet.svelte @@ -11,6 +11,7 @@ let { show = $bindable(false), title, + headerEnd, closeOnBlur = false, submit, cancel, @@ -51,6 +52,7 @@ | undefined; children?: Snippet; footer?: Snippet | null; + headerEnd?: Snippet | null; } & HTMLAttributes = $props(); let form: Form; @@ -90,6 +92,8 @@ {/if} {/if} + + {@render headerEnd?.()}
diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/layouts/spreadsheet.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/layouts/spreadsheet.svelte index aac0d131e..7dfc29215 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/layouts/spreadsheet.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/layouts/spreadsheet.svelte @@ -8,11 +8,24 @@ let { children, noSqlEditor, + sideSheetHeaderAction, + sideSheetOptions = null, showEditorSideSheet = $bindable(false) }: { children: Snippet; noSqlEditor?: Snippet; + sideSheetHeaderAction?: Snippet; showEditorSideSheet?: boolean; + sideSheetOptions?: { + sideSheetTitle?: string; + submit?: + | { + text: string; + disabled?: boolean; + onClick?: () => boolean | void | Promise; + } + | undefined; + }; } = $props(); let spreadsheetWrapper: HTMLDivElement; @@ -133,12 +146,14 @@ {:else} + submit={sideSheetOptions?.submit} + title={sideSheetOptions?.sideSheetTitle ?? 'Edit document'}> {@render noSqlEditor?.()} + + {#snippet headerEnd()} + {@render sideSheetHeaderAction?.()} + {/snippet} {/if}
diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/view.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/view.svelte index 96a0e8b72..cd6f8de03 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/view.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/view.svelte @@ -73,12 +73,13 @@ data?: JsonValue; isSaving?: boolean; loading?: boolean; - onChange?: (newData: JsonValue) => Promise | void; + onChange?: (newData: JsonValue, hasChanged: boolean) => Promise | void; onSave?: (newData: JsonValue) => Promise | void; readonly?: boolean; wrapLines?: boolean; errorInPlace?: boolean; ctrlSave?: boolean; + showHeaderActions?: boolean; } let { @@ -91,7 +92,8 @@ readonly = false, wrapLines = true, errorInPlace = true, - ctrlSave = false + ctrlSave = false, + showHeaderActions = true }: Props = $props(); let editorContainer: HTMLDivElement = $state(null); @@ -794,7 +796,7 @@ } data = parsed; - onChange?.(parsed); + onChange?.(parsed, hasDataChanged); lastExpectedContent = dataToString(parsed); }, DEBOUNCE_DELAY); }), @@ -897,65 +899,67 @@
-
- {#if loading} - - {/if} + {#if showHeaderActions} +
+ {#if loading} + + {/if} - - {#if documentId && !loading} -
- {truncateId(documentId)} + + {#if documentId && !loading} +
+ {truncateId(documentId)} +
+ {/if} +
+ + {#if errorMessage && !$isSmallViewport && !loading} +
+ {errorMessage}
{/if} - - {#if errorMessage && !$isSmallViewport && !loading} -
- {errorMessage} -
- {/if} + {#if documentId} + + + - {#if documentId} - - - + Save + - Save - + + - - - - {tooltipMessage} - - - {/if} -
+ {tooltipMessage} + +
+ {/if} +
+ {/if} {#if errorMessage && $isSmallViewport && !loading}
@@ -1053,7 +1057,7 @@ border-bottom: 1px solid var(--border-neutral); &.mobile { - background: var(--bgcolor-error); + background: var(--bgcolor-error-weak); } .error-message { diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte index ef6c78731..a8e012210 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte @@ -25,6 +25,7 @@ import { IconCalendar, IconDotsHorizontal, + IconDuplicate, IconFingerPrint } from '@appwrite.io/pink-icons-svelte'; import { isSmallViewport, isTabletViewport } from '$lib/stores/viewport'; @@ -411,9 +412,10 @@ await invalidate(Dependencies.DOCUMENTS); noSqlDocument.update(() => { return { - isNew: false, show: false, - document: {} + isNew: false, + document: {}, + hasDataChanged: false }; }); @@ -514,7 +516,15 @@ + bind:showEditorSideSheet={$noSqlDocument.show} + sideSheetOptions={{ + sideSheetTitle: $noSqlDocument.document?.$id, + submit: { + text: 'Update', + disabled: !$noSqlDocument.hasDataChanged, + onClick: async () => await createOrUpdateDocument($noSqlDocument.document) + } + }}> {#key $spreadsheetRenderKey} + isSelected={$noSqlDocument?.document?.$id === document.$id}> {#each $collectionColumns as { id: columnId } (columnId)} {#if columnId === '$id'} @@ -705,9 +715,30 @@ isNew={$noSqlDocument.isNew} loading={$noSqlDocument.loading} bind:data={$noSqlDocument.document} + showHeaderActions={!$isSmallViewport} + onChange={(_, hasDataChanged) => { + $noSqlDocument.hasDataChanged = hasDataChanged; + }} onSave={async (document) => await createOrUpdateDocument(document)} /> {/snippet} + {#snippet sideSheetHeaderAction()} + { + await copy(JSON.stringify($noSqlDocument.document, null, 2)); + addNotification({ + type: 'success', + message: 'Document copied', + timeout: 1250 + }); + }}> + + + {/snippet} + {#if selectedDocuments.length > 0}
diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/store.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/store.ts index c4057c018..0b868b69e 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/store.ts +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/store.ts @@ -22,16 +22,18 @@ export const sortState = writable({ export const noSqlDocument = writable<{ show: boolean; - document?: Models.Document | object; + document?: Models.Document | (object & { $id?: string }); isNew?: boolean; loading?: boolean; documentId?: string /* for loading from a given id */; + hasDataChanged?: boolean; }>({ show: false, document: null, isNew: false, loading: false, - documentId: null + documentId: null, + hasDataChanged: false }); export const documentPermissionSheet = writable({ From 6e18d0a5e614c0f99a83e9f5f21e0b19d083671f Mon Sep 17 00:00:00 2001 From: Darshan Date: Fri, 9 Jan 2026 17:43:13 +0530 Subject: [PATCH 029/209] update: misc changes. --- .../(entity)/helpers/sdk.ts | 98 ++++++++++++++++++- .../views/field/editPermissions.svelte | 30 ++---- .../database-[database]/+page.svelte | 4 +- .../collection-[collection]/+layout.svelte | 2 +- .../indexes/+page.svelte | 4 - .../spreadsheet.svelte | 6 +- .../table-[table]/rows/editPermissions.svelte | 0 .../database-[database]/table.svelte | 25 ++--- 8 files changed, 126 insertions(+), 43 deletions(-) delete mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/editPermissions.svelte diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/sdk.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/sdk.ts index dc4bdf05b..916576632 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/sdk.ts +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/sdk.ts @@ -1,7 +1,13 @@ import { sdk } from '$lib/stores/sdk'; import type { Page } from '@sveltejs/kit'; import type { TerminologyResult } from './types'; -import { type DatabaseType, type Entity, type EntityList, toSupportiveEntity } from './terminology'; +import { + type DatabaseType, + type Entity, + type EntityList, + type Record, + toSupportiveEntity +} from './terminology'; import type { Models } from '@appwrite.io/console'; export type DatabaseSdkResult = { @@ -32,6 +38,26 @@ export type DatabaseSdkResult = { databaseType?: DatabaseType; }) => Promise; delete: (params: { databaseId: string; databaseType?: DatabaseType }) => Promise<{}>; + deleteEntity: (params: { + databaseId: string; + entityId: string; + databaseType?: DatabaseType; + }) => Promise<{}>; + updateRecord: (params: { + databaseId: string; + entityId: string; + recordId: string; + data?: object; + permissions?: string[]; + databaseType?: DatabaseType; + }) => Promise; + updateRecordPermissions: (params: { + databaseId: string; + entityId: string; + recordId: string; + permissions: string[]; + databaseType?: DatabaseType; + }) => Promise; }; export function useDatabasesSdk( @@ -169,6 +195,76 @@ export function useDatabasesSdk( default: throw new Error(`Unknown database type`); } + }, + + async deleteEntity(params) { + switch (type ?? params.databaseType) { + case 'legacy': /* databases api */ + case 'tablesdb': + return await baseSdk.tablesDB.deleteTable({ + databaseId: params.databaseId, + tableId: params.entityId + }); + case 'documentsdb': + return await baseSdk.documentsDB.deleteCollection({ + databaseId: params.databaseId, + collectionId: params.entityId + }); + case 'vectordb': + throw new Error('Database type not supported yet'); + default: + throw new Error(`Unknown database type`); + } + }, + + async updateRecord(params) { + switch (type ?? params.databaseType) { + case 'legacy': /* databases api */ + case 'tablesdb': + return await baseSdk.tablesDB.updateRow({ + databaseId: params.databaseId, + tableId: params.entityId, + rowId: params.recordId, + data: params.data, + permissions: params.permissions + }); + case 'documentsdb': + return await baseSdk.documentsDB.updateDocument({ + databaseId: params.databaseId, + collectionId: params.entityId, + documentId: params.recordId, + data: params.data, + permissions: params.permissions + }); + case 'vectordb': + throw new Error('Database type not supported yet'); + default: + throw new Error(`Unknown database type`); + } + }, + + async updateRecordPermissions(params) { + switch (type ?? params.databaseType) { + case 'legacy': /* databases api */ + case 'tablesdb': + return await baseSdk.tablesDB.updateRow({ + databaseId: params.databaseId, + tableId: params.entityId, + rowId: params.recordId, + permissions: params.permissions + }); + case 'documentsdb': + return await baseSdk.documentsDB.updateDocument({ + databaseId: params.databaseId, + collectionId: params.entityId, + documentId: params.recordId, + permissions: params.permissions + }); + case 'vectordb': + throw new Error('Database type not supported yet'); + default: + throw new Error(`Unknown database type`); + } } }; } diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/field/editPermissions.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/field/editPermissions.svelte index 1d3b6c983..95040da17 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/field/editPermissions.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/field/editPermissions.svelte @@ -1,6 +1,4 @@ diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte index 04f1d642d..ed3550a95 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte @@ -359,8 +359,8 @@ } if (action === 'delete') { - // showDelete = true; - // selectedRowForDelete = document.$id; + selectedDocumentForDelete = document.$id; + showDelete = true; } if (action === 'activity') { @@ -776,7 +776,7 @@

{#if isSingle} - Are you sure you want to delete this row from {collection.name}? + Are you sure you want to delete this document from {collection.name}? {:else} Are you sure you want to delete {selectedDocuments.length} {selectedDocuments.length > 1 ? 'documents' : 'document'} from {collection.name}? diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/editPermissions.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/editPermissions.svelte deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table.svelte index 3768e0543..bb3ce44df 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table.svelte @@ -11,28 +11,31 @@ import { Dependencies } from '$lib/constants'; import DualTimeView from '$lib/components/dualTimeView.svelte'; import { canWriteTables } from '$lib/stores/roles'; - import { sdk } from '$lib/stores/sdk'; - import type { PageData } from './$types'; import { Table } from '@appwrite.io/pink-svelte'; import { tableViewColumns, buildEntityRoute } from './store'; import { subNavigation } from '$lib/stores/database'; - import { type TerminologyResult } from '$database/(entity)'; + import { + type DatabaseSdkResult, + type EntityList, + type TerminologyResult + } from '$database/(entity)'; const { - data, - terminology + entities, + terminology, + databasesSdk }: { - data: PageData; + entities: EntityList; terminology: TerminologyResult; + databasesSdk: DatabaseSdkResult; } = $props(); const entitySingular = $derived(terminology.entity.lower.singular); - async function onDelete(batchDelete: DeleteOperation): Promise { - const result = await batchDelete((tableId) => - sdk.forProject(page.params.region, page.params.project).tablesDB.deleteTable({ + const result = await batchDelete((entityId) => + databasesSdk.deleteEntity({ databaseId: page.params.database, - tableId + entityId }) ); @@ -63,7 +66,7 @@ {/snippet} {#snippet children(root)} - {#each data.entities.entities as entity (entity.$id)} + {#each entities.entities as entity (entity.$id)} Date: Fri, 9 Jan 2026 18:32:11 +0530 Subject: [PATCH 030/209] update: proper navigation. --- .../database-[database]/(entity)/helpers/navigation.ts | 6 ++++++ .../database-[database]/(entity)/helpers/terminology.ts | 5 +++++ .../collection-[collection]/spreadsheet.svelte | 2 +- .../database-[database]/table-[table]/+layout.svelte | 3 ++- .../database-[database]/table-[table]/rows/store.ts | 5 ----- .../database-[database]/table-[table]/spreadsheet.svelte | 2 +- 6 files changed, 15 insertions(+), 8 deletions(-) create mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/navigation.ts diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/navigation.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/navigation.ts new file mode 100644 index 000000000..601e4999d --- /dev/null +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/navigation.ts @@ -0,0 +1,6 @@ +import { page } from '$app/state'; +import type { RecordType } from '$database/(entity)'; + +export function buildFieldUrl(recordType: RecordType, recordId: string) { + return `${page.url}/${recordType}-${recordId}`; +} diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/terminology.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/terminology.ts index cccb2405a..f950f1ef6 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/terminology.ts +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/terminology.ts @@ -5,8 +5,13 @@ import { AppwriteException, type Models } from '@appwrite.io/console'; import type { Attributes, Collection, Columns, Table } from '$database/store'; import type { Term, TerminologyResult, TerminologyShape } from '$database/(entity)/helpers/types'; +type BaseTerminology = typeof baseTerminology; +type ImplementedDBTypes = Omit; + export type DatabaseType = 'legacy' | 'tablesdb' | 'documentsdb' | 'vectordb'; +export type RecordType = ImplementedDBTypes[keyof ImplementedDBTypes]['record']; + export type Entity = Partial & { indexes?: Index[]; fields?: (Attributes | Columns)[]; diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte index ed3550a95..440c28d7a 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte @@ -58,7 +58,7 @@ NoSqlEditor } from '$database/collection-[collection]/(components)/editor'; - import { buildFieldUrl } from '$database/table-[table]/rows/store'; + import { buildFieldUrl } from '$database/(entity)/helpers/navigation'; import { SpreadsheetOptions, type HeaderCellAction, diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+layout.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+layout.svelte index e61e0a7d9..9df9a085c 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+layout.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+layout.svelte @@ -65,7 +65,8 @@ import { addNotification } from '$lib/stores/notifications'; import { hash } from '$lib/helpers/string'; import { preferences } from '$lib/stores/preferences'; - import { buildFieldUrl, isRelationship } from '$database/table-[table]/rows/store'; + import { buildFieldUrl } from '$database/(entity)/helpers/navigation'; + import { isRelationship } from '$database/table-[table]/rows/store'; import { chunks } from '$lib/helpers/array'; import { Submit, trackEvent } from '$lib/actions/analytics'; import { diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/store.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/store.ts index ce3249db2..46ff2519b 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/store.ts +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/rows/store.ts @@ -1,4 +1,3 @@ -import { page } from '$app/state'; import type { Field } from '$database/(entity)'; import type { Column } from '$lib/helpers/types'; import { type Models } from '@appwrite.io/console'; @@ -45,7 +44,3 @@ export function isSpatialType( return spatialTypes.includes(field.type.toLowerCase()); } - -export function buildFieldUrl(recordType: 'row' | 'document', recordId: string) { - return `${page.url}/${recordType}-${recordId}`; -} diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/spreadsheet.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/spreadsheet.svelte index da51a1281..0ae128a92 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/spreadsheet.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/spreadsheet.svelte @@ -12,7 +12,6 @@ import { type ComponentType, onDestroy, onMount } from 'svelte'; import type { PageData } from './$types'; import { - buildFieldUrl, isRelationship, isRelationshipToMany, isSpatialType, @@ -36,6 +35,7 @@ databaseRelatedRowSheetOptions, rowPermissionSheet } from '$database/table-[table]/store'; + import { buildFieldUrl } from '$database/(entity)/helpers/navigation'; import type { Column, ColumnType } from '$lib/helpers/types'; import { Alert, From 5e345072a434b2e12c2fbc1f545e7475935c7a57 Mon Sep 17 00:00:00 2001 From: Darshan Date: Fri, 9 Jan 2026 19:03:57 +0530 Subject: [PATCH 031/209] fix: ui inconsistencies. --- .../(entity)/views/layouts/empty.svelte | 11 +++-------- .../collection-[collection]/+page.svelte | 2 +- .../collection-[collection]/spreadsheet.svelte | 1 - 3 files changed, 4 insertions(+), 10 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/layouts/empty.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/layouts/empty.svelte index 59735748f..418c58cbd 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/layouts/empty.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/layouts/empty.svelte @@ -307,8 +307,8 @@

0} - class:no-custom-columns={customColumns.length <= 0} + class:custom-columns={spreadsheetColumns.length > 0} + class:no-custom-columns={spreadsheetColumns.length <= 0} data-loading={$spreadsheetLoading} bind:this={spreadsheetContainer} class="databases-spreadsheet spreadsheet-container-outer"> @@ -387,7 +387,7 @@ {#if !$spreadsheetLoading}
0} + class:custom-columns={spreadsheetColumns.length > 0} data-collapsed-tabs={!$expandTabs} style:--overlay-top={overlayTopOffset} style:--overlay-left={overlayLeftOffset} @@ -500,11 +500,6 @@ } } - & :global(.spreadsheet-container) { - overflow-x: hidden; - overflow-y: hidden; - } - & :global([data-select='true']) { opacity: 0.85; pointer-events: none; diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+page.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+page.svelte index b048786ef..8fb79126d 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+page.svelte @@ -46,7 +46,7 @@ addNotification({ type: 'success', - message: 'Rows import from csv has started' + message: 'Documents import from csv has started' }); trackEvent(Submit.DatabaseImportCsv); diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte index 440c28d7a..a606c5f33 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte @@ -57,7 +57,6 @@ type JsonValue, NoSqlEditor } from '$database/collection-[collection]/(components)/editor'; - import { buildFieldUrl } from '$database/(entity)/helpers/navigation'; import { SpreadsheetOptions, From 70b0a9b0a61c6b574ba710e651a81ce9f571b9cd Mon Sep 17 00:00:00 2001 From: Darshan Date: Fri, 9 Jan 2026 20:06:31 +0530 Subject: [PATCH 032/209] update: efficient parsing. --- .../(components)/editor/view.svelte | 70 ++++++++++++++----- 1 file changed, 51 insertions(+), 19 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/view.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/view.svelte index cd6f8de03..7900e1a71 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/view.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/view.svelte @@ -2,6 +2,8 @@ export type JsonValue = string | number | boolean | null | JsonObject | JsonArray | object; export type JsonObject = { [key: string]: JsonValue }; export type JsonArray = JsonValue[]; + + type ParseResult = { ok: true; value: JsonValue } | { ok: false; error: unknown };
From 0b1e340826fe06d3adb26e75257fca8db53c7587 Mon Sep 17 00:00:00 2001 From: Darshan Date: Sat, 10 Jan 2026 15:42:27 +0530 Subject: [PATCH 036/209] update: cleanup and improvements. --- .../(components)/editor/view.svelte | 421 +++++++++++++----- 1 file changed, 303 insertions(+), 118 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/view.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/view.svelte index 9df1a55ae..694d82d39 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/view.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/view.svelte @@ -3,7 +3,23 @@ export type JsonObject = { [key: string]: JsonValue }; export type JsonArray = JsonValue[]; - type ParseResult = { ok: true; value: JsonValue } | { ok: false; error: unknown }; + type ParseResult = + | { + ok: true; + value: JsonValue; + } + | { + ok: false; + error: unknown; + }; + + type Hit = { + key: string; + valueFrom: number; + valueTo: number; + lineFrom: number; + lineTo: number; + };
{ + // fires state callback. + showEditorSideSheet = false; + } + }} title={sideSheetOptions?.sideSheetTitle ?? 'Edit document'}> {@render noSqlEditor?.()} diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/[...rest]/+page.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/[...rest]/+page.ts index 344f772e9..0543bf4f1 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/[...rest]/+page.ts +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/[...rest]/+page.ts @@ -36,10 +36,7 @@ export const load: PageLoad = async ({ params, url }) => { const documentMatch = lastSegment.match(/^document-([^/]+)$/); if (documentMatch) { const documentId = documentMatch[1]; - noSqlDocument.update((options) => ({ - ...options, - documentId - })); + noSqlDocument.update({ documentId }); const parentSegments = restSegments.slice(0, -1); const newPath = `${baseUrl}/${parentSegments.join('/')}`; diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/view.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/view.svelte index 694d82d39..a65b82606 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/view.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/view.svelte @@ -59,7 +59,7 @@ import { onMount, onDestroy } from 'svelte'; import Id, { truncateId } from '$lib/components/id.svelte'; import { Icon, Layout, Skeleton, Spinner, Tooltip, Typography } from '@appwrite.io/pink-svelte'; - import { IconCheck, IconDuplicate } from '@appwrite.io/pink-icons-svelte'; + import { IconCheck, IconDuplicate, IconX } from '@appwrite.io/pink-icons-svelte'; import { Button } from '$lib/elements/forms'; import { copy } from '$lib/helpers/copy'; import { isSmallViewport } from '$lib/stores/viewport'; @@ -92,6 +92,7 @@ loading?: boolean; onChange?: (newData: JsonValue, hasChanged: boolean) => Promise | void; onSave?: (newData: JsonValue) => Promise | void; + onCancel?: () => void; readonly?: boolean; wrapLines?: boolean; errorInPlace?: boolean; @@ -104,6 +105,7 @@ data = $bindable(), onChange, onSave, + onCancel, isSaving = $bindable(false), loading = false, readonly = false, @@ -145,8 +147,8 @@ let lastParsePromise: Promise | null = null; // Serialized data cache - let originalSerialized = ''; let lastSerializedText = ''; + let originalSerialized = $state(''); let lastSerializedData: JsonValue | null = null; // Get $id from data @@ -1164,6 +1166,22 @@ {#if documentId} + {#if isNew && onCancel} + + + + Cancel + + {/if} + @@ -116,7 +127,7 @@
- {#if data.documents.total} + {#if data.documents.total || $noSqlDocument.isDirty} @@ -147,13 +158,7 @@ title="Create documents" subtitle="Create documents manually" onClick={() => { - if (!$noSqlDocument.isNew) { - noSqlDocument.update(() => ({ - show: true, - isNew: true, - document: {} - })); - } + noSqlDocument.create(buildInitDoc()); }} /> { - return { - show: false, - isNew: false, - document: {}, - hasDataChanged: false - }; - }); + noSqlDocument.reset(); // re-render spreadsheet! spreadsheetRenderKey.set(hash(Date.now().toString())); const firstDocument = $documents?.documents?.[0]; if (firstDocument) { - $noSqlDocument.document = firstDocument; + noSqlDocument.update({ document: firstDocument }); } } catch (error) { addNotification({ @@ -526,6 +525,11 @@ disabled: !$noSqlDocument.hasDataChanged, onClick: async () => await createOrUpdateDocument($noSqlDocument.document) } + }} + sideSheetStateCallbacks={{ + onClose() { + noSqlDocument.reset(); + } }}> {#key $spreadsheetRenderKey} {:else} + {@const selection = + $noSqlDocument.isDirty && document.$id === $noSqlDocument.document?.$id + ? 'disabled' + : rowSelection} + + + diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte index e7ae7b3de..9c2da79e2 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte @@ -24,6 +24,7 @@ import DualTimeView from '$lib/components/dualTimeView.svelte'; import { IconCalendar, + IconCode, IconDotsHorizontal, IconDuplicate, IconFingerPrint @@ -144,6 +145,8 @@ paginatedDocuments.setPage(1, data.documents.documents); } + makeCollectionColumns(); + // documentId exists! if ($noSqlDocument.documentId) { await loadRemoteDocument(); @@ -154,6 +157,23 @@ function makeCollectionColumns() { const selectedColumnsToHide = preferences.getCustomTableColumns(collectionId); + + const customKeys = ( + preferences.getDisplayNames(collectionId, data.database.type) ?? [] + ).filter((name) => !name.startsWith('$')); + + const customColumns: Column[] = customKeys.map((key) => ({ + id: key, + title: key, + width: 225, + minimumWidth: 225, + draggable: false, + type: 'dynamic', + icon: IconCode /* fuzzy search based Icon later */, + isEditable: false, + hide: false + })); + const staticColumns: Column[] = [ { id: '$id', @@ -167,6 +187,7 @@ isPrimary: false, hide: !!selectedColumnsToHide?.includes('$id') }, + ...customColumns, { id: '$createdAt', title: '$createdAt', @@ -505,10 +526,6 @@ $: canShowDatetimePopover = true; - $: if ($documents.documents) { - makeCollectionColumns(); - } - $: totalPages = Math.ceil($documents.total / SPREADSHEET_PAGE_LIMIT) || 1; $: rowSelection = @@ -645,6 +662,13 @@ {/snippet} + {:else} + {@const value = document[columnId]} + {#if value} + {value} + {:else} + + {/if} {/if} {/each} From d28a5e6795cf8be718d09f028cd4704fad7d691e Mon Sep 17 00:00:00 2001 From: Darshan Date: Thu, 15 Jan 2026 16:54:48 +0530 Subject: [PATCH 040/209] Merge branch '8.x' into 'feat-documentsdb'. --- src/lib/components/columnSelector.svelte | 39 +++++- src/lib/components/viewSelector.svelte | 5 +- src/lib/helpers/types.ts | 1 + .../(components)/customColumnsEditor.svelte | 76 +++++++++++ .../collection-[collection]/+page.svelte | 128 ++++++++++++++---- .../settings/displayName.svelte | 88 ++++-------- .../spreadsheet.svelte | 11 +- 7 files changed, 246 insertions(+), 102 deletions(-) create mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/customColumnsEditor.svelte diff --git a/src/lib/components/columnSelector.svelte b/src/lib/components/columnSelector.svelte index 506735df3..9bb6c23c0 100644 --- a/src/lib/components/columnSelector.svelte +++ b/src/lib/components/columnSelector.svelte @@ -10,8 +10,10 @@ Layout, Popover, Selector, - Typography + Typography, + Icon } from '@appwrite.io/pink-svelte'; + import { IconPlus } from '@appwrite.io/pink-icons-svelte'; import { Button } from '$lib/elements/forms'; let { @@ -21,7 +23,8 @@ allowNoColumns = false, showAnyway = false, children, - onPreferencesUpdated = null + onPreferencesUpdated = null, + onCustomOptionClick = null }: { columns: Writable; isCustomTable?: boolean; @@ -30,6 +33,7 @@ showAnyway?: boolean; children: Snippet<[toggle: () => void, selectedColumnsNumber: number]>; onPreferencesUpdated?: () => void; + onCustomOptionClick?: () => void; } = $props(); let search = $state(''); @@ -115,7 +119,7 @@ cols.map((col) => col.exclude ? col - : filteredColumns.some((fc) => fc.id === col.id) + : filteredColumns.some((fc) => fc.id === col.id && !col.disable) ? { ...col, hide: false } : col ) @@ -126,7 +130,9 @@ function deselectAll() { columns.update((cols) => { const realColumns = cols.filter((col) => !col.exclude && !col.isAction); - const filtered = filteredColumns.filter((col) => !col.exclude && !col.isAction); + const filtered = filteredColumns.filter( + (col) => !col.exclude && !col.isAction && !col.disable + ); if (filtered.length === 0) return cols; @@ -187,7 +193,7 @@ {@const placement = isNewStyle ? 'bottom-start' : 'bottom-end'} {@render children(toggle, selectedColumnsNumber)} - +
{#if isNewStyle && showActions} @@ -231,7 +237,8 @@ on:click={() => toggleColumn(column)} disabled={allowNoColumns ? false - : visibleRealColumns.length <= 1 && !column.hide}> + : (visibleRealColumns.length <= 1 && !column.hide) || + column.disable}> + + {#if onCustomOptionClick && isCustomTable} + + + + + {/if}
diff --git a/src/lib/components/viewSelector.svelte b/src/lib/components/viewSelector.svelte index e20b8ca1f..ec2be986f 100644 --- a/src/lib/components/viewSelector.svelte +++ b/src/lib/components/viewSelector.svelte @@ -22,6 +22,7 @@ allowNoColumns?: boolean; showAnyway?: boolean; disableButton?: boolean; + onCustomOptionClick?: () => void; } let { @@ -34,7 +35,8 @@ hideColumns = false, allowNoColumns = false, showAnyway = false, - disableButton = false + disableButton = false, + onCustomOptionClick = null }: Props = $props(); let showCountBadge = $state(false); @@ -65,6 +67,7 @@ {showAnyway} {isCustomTable} {allowNoColumns} + {onCustomOptionClick} onPreferencesUpdated={updateBadgeState}> {#snippet children(toggle, selectedColumnsNumber)} + import { InputTags } from '$lib/elements/forms'; + import { symmetricDifference } from '$lib/helpers/array'; + import { preferences } from '$lib/stores/preferences'; + import { Input, Layout } from '@appwrite.io/pink-svelte'; + import { organization } from '$lib/stores/organization'; + + let { + collectionId, + databaseType, + inModal = false, + onSuccess = null, + onFailure = null + }: { + collectionId: string; + databaseType: string; + inModal?: boolean; + onSuccess?: () => Promise | void; + onFailure?: (error: Error) => Promise | void; + } = $props(); + + let names = $state(getDisplayNames()); + + const isDisabled = $derived( + !symmetricDifference(names, getDisplayNames()).length || names.length > 5 + ); + + function getDisplayNames() { + const displayNames = preferences.getDisplayNames(collectionId, databaseType) ?? []; + return displayNames.filter((name) => !name.startsWith('$')); + } + + export function hasChanged() { + return isDisabled; + } + + export async function updateDisplayNames() { + try { + const regularArray = [...names]; + + await preferences.setDisplayNames( + $organization.$id, + collectionId, + regularArray, + databaseType + ); + + await onSuccess?.(); + + // reset with new values! + names = getDisplayNames(); + } catch (error) { + await onFailure?.(error); + } + } + + $effect(() => { + names = getDisplayNames(); + }); + + + + + {#key names.length} + + {/key} + + + ID, createdAt, and updatedAt are always included and cannot be modified + + + diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+page.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+page.svelte index 6ca6d18a6..9514fc1ad 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+page.svelte @@ -1,9 +1,10 @@ -
+ { + await customColumnsEditor?.updateDisplayNames(); + }}> Display name Add up to 5 document fields to display as columns in the collection view. - - {#key names.length} - - {/key} - - ID, createdAt, and updatedAt are always included and cannot be modified - - + { + await invalidate(Dependencies.TEAM); + addNotification({ + message: 'Display names have been updated', + type: 'success' + }); + trackEvent(Submit.CollectionUpdateDisplayNames); + }} + onFailure={(error) => { + addNotification({ + message: error.message, + type: 'error' + }); + trackError(error, Submit.CollectionUpdateDisplayNames); + }} /> - + diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte index 9c2da79e2..e0b3b6903 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte @@ -171,7 +171,7 @@ type: 'dynamic', icon: IconCode /* fuzzy search based Icon later */, isEditable: false, - hide: false + hide: !!selectedColumnsToHide?.includes(key) })); const staticColumns: Column[] = [ @@ -185,7 +185,8 @@ icon: IconFingerPrint, isEditable: false, isPrimary: false, - hide: !!selectedColumnsToHide?.includes('$id') + hide: false, + disable: true }, ...customColumns, { @@ -197,7 +198,8 @@ type: 'datetime', icon: IconCalendar, isEditable: false, - hide: !!selectedColumnsToHide?.includes('$createdAt') + hide: false, + disable: true }, { id: '$updatedAt', @@ -208,7 +210,8 @@ type: 'datetime', icon: IconCalendar, isEditable: false, - hide: !!selectedColumnsToHide?.includes('$updatedAt') + hide: false, + disable: true }, { id: 'actions', From d3277744c6193c71a1bb419bd365dfb6c29983e4 Mon Sep 17 00:00:00 2001 From: Darshan Date: Thu, 15 Jan 2026 18:29:30 +0530 Subject: [PATCH 041/209] add: sdk methods; add: view selector for custom columns; update; organize the filters for code-mirror; update: disable search/find for now on the editor; --- .../(entity)/helpers/sdk.ts | 106 ++++++++++- .../(entity)/helpers/terminology.ts | 5 + .../editor/extensions/highlighting.ts | 47 +++++ .../(components)/editor/extensions/index.ts | 8 + .../editor/extensions/readonly.ts | 123 +++++++++++++ .../(components)/editor/helpers/constants.ts | 4 +- .../(components)/editor/helpers/keymaps.ts | 11 +- .../(components)/editor/view.svelte | 172 ++---------------- .../spreadsheet.svelte | 39 ++-- 9 files changed, 325 insertions(+), 190 deletions(-) create mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/extensions/highlighting.ts create mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/extensions/index.ts create mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/extensions/readonly.ts diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/sdk.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/sdk.ts index 9f611625a..13f8da3bc 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/sdk.ts +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/sdk.ts @@ -6,7 +6,9 @@ import { type Entity, type EntityList, type Record, - toSupportiveEntity + type RecordList, + toSupportiveEntity, + toSupportiveRecord } from './terminology'; import type { Models } from '@appwrite.io/console'; @@ -43,6 +45,14 @@ export type DatabaseSdkResult = { entityId: string; databaseType?: DatabaseType; }) => Promise<{}>; + createRecord: (params: { + databaseId: string; + entityId: string; + recordId: string; + data?: object; + permissions?: string[]; + databaseType?: DatabaseType; + }) => Promise; updateRecord: (params: { databaseId: string; entityId: string; @@ -58,6 +68,18 @@ export type DatabaseSdkResult = { permissions: string[]; databaseType?: DatabaseType; }) => Promise; + deleteRecord: (params: { + databaseId: string; + entityId: string; + recordId?: string; + databaseType?: DatabaseType; + }) => Promise; + deleteRecords: (params: { + databaseId: string; + entityId: string; + queries?: string[]; + databaseType?: DatabaseType; + }) => Promise; }; export function useDatabaseSdk( @@ -217,6 +239,32 @@ export function useDatabaseSdk( } }, + async createRecord(params) { + switch (type ?? params.databaseType) { + case 'legacy': /* databases api */ + case 'tablesdb': + return await baseSdk.tablesDB.createRow({ + databaseId: params.databaseId, + tableId: params.entityId, + rowId: params.recordId, + data: params.data, + permissions: params.permissions + }); + case 'documentsdb': + return await baseSdk.documentsDB.createDocument({ + databaseId: params.databaseId, + collectionId: params.entityId, + documentId: params.recordId, + data: params.data, + permissions: params.permissions + }); + case 'vectordb': + throw new Error('Database type not supported yet'); + default: + throw new Error(`Unknown database type`); + } + }, + async updateRecord(params) { switch (type ?? params.databaseType) { case 'legacy': /* databases api */ @@ -229,7 +277,7 @@ export function useDatabaseSdk( permissions: params.permissions }); case 'documentsdb': - return await baseSdk.documentsDB.updateDocument({ + return await baseSdk.documentsDB.upsertDocument({ databaseId: params.databaseId, collectionId: params.entityId, documentId: params.recordId, @@ -254,7 +302,7 @@ export function useDatabaseSdk( permissions: params.permissions }); case 'documentsdb': - return await baseSdk.documentsDB.updateDocument({ + return await baseSdk.documentsDB.upsertDocument({ databaseId: params.databaseId, collectionId: params.entityId, documentId: params.recordId, @@ -265,6 +313,58 @@ export function useDatabaseSdk( default: throw new Error(`Unknown database type`); } + }, + + async deleteRecord(params) { + switch (type ?? params.databaseType) { + case 'legacy': /* databases api */ + case 'tablesdb': { + const row = await baseSdk.tablesDB.deleteRow({ + databaseId: params.databaseId, + tableId: params.entityId, + rowId: params.recordId + }); + return toSupportiveRecord(row); + } + case 'documentsdb': { + const document = await baseSdk.documentsDB.deleteDocument({ + databaseId: params.databaseId, + collectionId: params.entityId, + documentId: params.recordId + }); + return toSupportiveRecord(document); + } + case 'vectordb': + throw new Error('Database type not supported yet'); + default: + throw new Error(`Unknown database type`); + } + }, + + async deleteRecords(params) { + switch (type ?? params.databaseType) { + case 'legacy': /* databases api */ + case 'tablesdb': { + const { total, rows } = await baseSdk.tablesDB.deleteRows({ + databaseId: params.databaseId, + tableId: params.entityId, + queries: params.queries + }); + return { total, records: rows.map(toSupportiveRecord) }; + } + case 'documentsdb': { + const { total, documents } = await baseSdk.documentsDB.deleteDocuments({ + databaseId: params.databaseId, + collectionId: params.entityId, + queries: params.queries + }); + return { total, records: documents.map(toSupportiveRecord) }; + } + case 'vectordb': + throw new Error('Database type not supported yet'); + default: + throw new Error(`Unknown database type`); + } } }; } diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/terminology.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/terminology.ts index b4f04906f..005a4ca69 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/terminology.ts +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/terminology.ts @@ -34,6 +34,11 @@ export type EntityList = { entities: Entity[]; }; +export type RecordList = { + total: number; + records: Record[]; +}; + export const baseTerminology = { /** * this is no longer used on console so diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/extensions/highlighting.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/extensions/highlighting.ts new file mode 100644 index 000000000..05dc49ab6 --- /dev/null +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/extensions/highlighting.ts @@ -0,0 +1,47 @@ +import { + Decoration, + type DecorationSet, + EditorView, + type ViewUpdate, + ViewPlugin +} from '@codemirror/view'; +import { Range } from '@codemirror/state'; +import { NESTED_KEY_REGEX } from '../helpers/constants'; + +// ViewPlugin to highlight nested keys (4+ spaces) only in visible ranges +export const nestedKeyPlugin = ViewPlugin.fromClass( + class { + decorations: DecorationSet; + constructor(view: EditorView) { + this.decorations = this.compute(view); + } + update(update: ViewUpdate) { + if (update.docChanged || update.viewportChanged) { + this.decorations = this.compute(update.view); + } + } + compute(view: EditorView): DecorationSet { + const decos: Range[] = []; + for (const { from, to } of view.visibleRanges) { + let line = view.state.doc.lineAt(from); + while (line.from <= to) { + const text = line.text; + const m = text.match(NESTED_KEY_REGEX); + if (m) { + const leading = m[1]; + const key = m[2]; + const start = line.from + leading.length; + const end = start + key.length; + decos.push( + Decoration.mark({ class: 'cm-nestedPropertyName' }).range(start, end) + ); + } + if (line.to >= to) break; + line = view.state.doc.line(line.number + 1); + } + } + return Decoration.set(decos); + } + }, + { decorations: (v) => v.decorations } +); diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/extensions/index.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/extensions/index.ts new file mode 100644 index 000000000..d9030871a --- /dev/null +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/extensions/index.ts @@ -0,0 +1,8 @@ +export { + findReadOnlyRanges, + createReadOnlyRangesField, + createReadOnlyLineField, + createReadOnlyRangesFilter +} from './readonly'; + +export { nestedKeyPlugin } from './highlighting'; diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/extensions/readonly.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/extensions/readonly.ts new file mode 100644 index 000000000..3ddb717bd --- /dev/null +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/extensions/readonly.ts @@ -0,0 +1,123 @@ +import { Decoration, type DecorationSet, EditorView } from '@codemirror/view'; +import { StateField, Transaction, Range } from '@codemirror/state'; +import type { Text } from '@codemirror/state'; +import { SYSTEM_KEYS } from '../helpers/constants'; + +// Find ranges of system keys (lines starting with $id, $createdAt, $updatedAt) +// When isNew=true, skip all readonly range detection since we don't have timestamps yet +export function findReadOnlyRanges(doc: Text, isNew: boolean): Array<{ from: number; to: number }> { + // When creating a new document, allow editing everything + if (isNew) return []; + + const ranges: Array<{ from: number; to: number }> = []; + let found = 0; + + for (let i = 1; i <= doc.lines; i++) { + const line = doc.line(i); + const lineText = line.text.trim(); + for (const key of SYSTEM_KEYS) { + if (lineText.startsWith(key)) { + ranges.push({ from: line.from, to: line.to }); + found++; + break; + } + } + if (found === SYSTEM_KEYS.size) break; + } + + return ranges; +} + +// Ranges field for read-only system lines (single source of truth) +export const createReadOnlyRangesField = (isNew: boolean) => + StateField.define>({ + create(state) { + return findReadOnlyRanges(state.doc, isNew); + }, + update(value, tr) { + if (!tr.docChanged) return value; + return findReadOnlyRanges(tr.state.doc, isNew); + } + }); + +// State field to add decorations to read-only lines +export const createReadOnlyLineField = ( + readOnlyRangesField: StateField> +) => + StateField.define({ + create(state) { + const decorations: Range[] = []; + const readOnlyRanges = state.field(readOnlyRangesField); + + for (const range of readOnlyRanges) { + decorations.push( + Decoration.line({ + class: 'cm-readOnlyLine' + }).range(range.from) + ); + } + + return Decoration.set(decorations); + }, + update(decorations, tr) { + if (!tr.docChanged) return decorations; + + const newDecorations: Range[] = []; + const readOnlyRanges = tr.state.field(readOnlyRangesField); + + for (const range of readOnlyRanges) { + newDecorations.push( + Decoration.line({ + class: 'cm-readOnlyLine' + }).range(range.from) + ); + } + + return Decoration.set(newDecorations); + }, + provide: (f) => EditorView.decorations.from(f) + }); + +// Transaction filter to prevent edits on system key lines +export const createReadOnlyRangesFilter = ( + readOnlyRangesField: StateField>, + readonly: boolean +) => { + return (tr: Transaction) => { + if (readonly || !tr.docChanged) return tr; + const ue = tr.annotation(Transaction.userEvent); + if (typeof ue === 'string' && ue.startsWith('appwrite:')) { + return tr; + } + + const startDoc = tr.startState.doc; + const readOnlyRanges = tr.startState.field(readOnlyRangesField); + let blocked = false; + let fullReplace = false; + + tr.changes.iterChanges((fromA: number, toA: number) => { + // Allow full-document replacement (Select All → Paste) + if (fromA === 0 && toA === startDoc.length) { + fullReplace = true; + return; + } + + // Check if change overlaps with any read-only range + for (const range of readOnlyRanges) { + if ( + // treat line ranges as half-open [from, to) + (fromA >= range.from && fromA < range.to) || + (toA > range.from && toA < range.to) || + (fromA < range.from && toA > range.to) + ) { + blocked = true; + break; + } + } + }); + + if (fullReplace) return tr; + // Block the transaction if it tries to edit a read-only range + return blocked ? [] : tr; + }; +}; diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/helpers/constants.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/helpers/constants.ts index 800c0b763..91730b637 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/helpers/constants.ts +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/helpers/constants.ts @@ -6,8 +6,8 @@ export const SYSTEM_KEYS = new Set(['$id:', '$createdAt:', '$updatedAt:']); export const DEBOUNCE_DELAY = 200; export const LINTER_DELAY = 250; -// regex patterns (compiled once for performance) -export const UNQUOTED_KEY_REGEX = /([{,]\s*)([a-zA-Z_$][a-zA-Z0-9_$]*)\s*:/g; +// regex patterns +/* export const UNQUOTED_KEY_REGEX = /([{,]\s*)([a-zA-Z_$][a-zA-Z0-9_$]*)\s*:/g; */ export const INDENT_REGEX = /^[\t ]*/; export const SCALAR_VALUE_REGEX = /:\s*(?:true|false|null|-?(?:0|[1-9]\d*)(?:\.\d+)?(?:[eE][+-]?\d+)?|"(?:[^"\\]|\\.)*"|'(?:[^'\\]|\\.)*')\s*$/; diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/helpers/keymaps.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/helpers/keymaps.ts index 5fa8123ed..dcbfa5176 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/helpers/keymaps.ts +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/helpers/keymaps.ts @@ -1,4 +1,4 @@ -import { searchKeymap } from '@codemirror/search'; +/*import { searchKeymap } from '@codemirror/search';*/ import { closeBracketsKeymap } from '@codemirror/autocomplete'; import type { EditorView, KeyBinding } from '@codemirror/view'; import { defaultKeymap, historyKeymap, indentLess, indentMore } from '@codemirror/commands'; @@ -28,6 +28,13 @@ export function createEditorKeymaps( }); } + // Disable search/replace for now! + keymaps.push({ + key: 'Mod-f', + preventDefault: true, + run: () => true + }); + return keymaps; } @@ -35,6 +42,6 @@ export function createEditorKeymaps( export const secondaryKeymaps = [ ...closeBracketsKeymap, ...defaultKeymap, - ...searchKeymap, + /*...searchKeymap,*/ ...historyKeymap ]; diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/view.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/view.svelte index a65b82606..b253e3c88 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/view.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/view.svelte @@ -29,10 +29,7 @@ lineNumbers, highlightActiveLine, highlightActiveLineGutter, - Decoration, - type DecorationSet, - type ViewUpdate, - ViewPlugin + type ViewUpdate } from '@codemirror/view'; import { history } from '@codemirror/commands'; import { @@ -49,8 +46,6 @@ import { EditorState, EditorSelection, - Range, - StateField, Transaction, Compartment, type Extension @@ -68,9 +63,14 @@ import { parse } from './validators/json5'; import { customTheme, customSyntaxHighlighting } from './helpers/theme'; import { createEditorKeymaps, secondaryKeymaps } from './helpers/keymaps'; + import { + createReadOnlyRangesField, + createReadOnlyLineField, + createReadOnlyRangesFilter, + nestedKeyPlugin + } from './extensions'; import { ALLOWED_DOLLAR_PROPS, - SYSTEM_KEYS, DEBOUNCE_DELAY, LINTER_DELAY, INDENT_REGEX, @@ -78,7 +78,6 @@ TRAILING_COMMA_REGEX, WHITESPACE_REGEX, WHITESPACE_ONLY_REGEX, - NESTED_KEY_REGEX, SKELETON_LINES, getIndent } from './helpers/constants'; @@ -265,31 +264,6 @@ return serialized; } - // Find ranges of system keys (lines starting with $id, $createdAt, $updatedAt) - // When isNew=true, skip all readonly range detection since we don't have timestamps yet - function findReadOnlyRanges(doc: Text): Array<{ from: number; to: number }> { - // When creating a new document, allow editing everything - if (isNew) return []; - - const ranges: Array<{ from: number; to: number }> = []; - let found = 0; - - for (let i = 1; i <= doc.lines; i++) { - const line = doc.line(i); - const lineText = line.text.trim(); - for (const key of SYSTEM_KEYS) { - if (lineText.startsWith(key)) { - ranges.push({ from: line.from, to: line.to }); - found++; - break; - } - } - if (found === SYSTEM_KEYS.size) break; - } - - return ranges; - } - // Preserve system key values when content changes function preserveSystemValues(parsed: JsonValue): JsonValue { if ( @@ -740,131 +714,9 @@ return true; } - // Transaction filter to prevent edits on system key lines - function readOnlyRangesFilter(tr: Transaction) { - if (readonly || !tr.docChanged) return tr; - const ue = tr.annotation(Transaction.userEvent); - if (typeof ue === 'string' && ue.startsWith('appwrite:')) { - return tr; - } - - const startDoc = tr.startState.doc; - const readOnlyRanges = tr.startState.field(readOnlyRangesField); - let blocked = false; - let fullReplace = false; - - tr.changes.iterChanges((fromA: number, toA: number) => { - // Allow full-document replacement (Select All → Paste) - if (fromA === 0 && toA === startDoc.length) { - fullReplace = true; - return; - } - - // Check if change overlaps with any read-only range - for (const range of readOnlyRanges) { - if ( - // treat line ranges as half-open [from, to) - (fromA >= range.from && fromA < range.to) || - (toA > range.from && toA < range.to) || - (fromA < range.from && toA > range.to) - ) { - blocked = true; - break; - } - } - }); - - if (fullReplace) return tr; - // Block the transaction if it tries to edit a read-only range - return blocked ? [] : tr; - } - - // Ranges field for read-only system lines (single source of truth) - const readOnlyRangesField = StateField.define>({ - create(state) { - return findReadOnlyRanges(state.doc); - }, - update(value, tr) { - if (!tr.docChanged) return value; - return findReadOnlyRanges(tr.state.doc); - } - }); - - // State field to add decorations to read-only lines - const readOnlyLineField = StateField.define({ - create(state) { - const decorations: Range[] = []; - const readOnlyRanges = state.field(readOnlyRangesField); - - for (const range of readOnlyRanges) { - decorations.push( - Decoration.line({ - class: 'cm-readOnlyLine' - }).range(range.from) - ); - } - - return Decoration.set(decorations); - }, - update(decorations, tr) { - if (!tr.docChanged) return decorations; - - const newDecorations: Range[] = []; - const readOnlyRanges = tr.state.field(readOnlyRangesField); - - for (const range of readOnlyRanges) { - newDecorations.push( - Decoration.line({ - class: 'cm-readOnlyLine' - }).range(range.from) - ); - } - - return Decoration.set(newDecorations); - }, - provide: (f) => EditorView.decorations.from(f) - }); - - // ViewPlugin to highlight nested keys (4+ spaces) only in visible ranges - const nestedKeyPlugin = ViewPlugin.fromClass( - class { - decorations: DecorationSet; - constructor(view: EditorView) { - this.decorations = this.compute(view); - } - update(update: ViewUpdate) { - if (update.docChanged || update.viewportChanged) { - this.decorations = this.compute(update.view); - } - } - compute(view: EditorView): DecorationSet { - const decos: Range[] = []; - for (const { from, to } of view.visibleRanges) { - let line = view.state.doc.lineAt(from); - while (line.from <= to) { - const text = line.text; - const m = text.match(NESTED_KEY_REGEX); - if (m) { - const leading = m[1]; - const key = m[2]; - const start = line.from + leading.length; - const end = start + key.length; - decos.push( - Decoration.mark({ class: 'cm-nestedPropertyName' }).range( - start, - end - ) - ); - } - if (line.to >= to) break; - line = view.state.doc.line(line.number + 1); - } - } - return Decoration.set(decos); - } - }, - { decorations: (v) => v.decorations } - ); + // Create extension instances + const readOnlyRangesField = createReadOnlyRangesField(isNew); + const readOnlyLineField = createReadOnlyLineField(readOnlyRangesField); function parseWithCache(content: string): Promise { if (lastParsePromise && content === lastParseContent) { @@ -962,7 +814,9 @@ closeBrackets(), linter(javascriptLinter, { delay: LINTER_DELAY }), readOnlyRangesField, - EditorState.transactionFilter.of(readOnlyRangesFilter), + EditorState.transactionFilter.of( + createReadOnlyRangesFilter(readOnlyRangesField, readonly) + ), readOnlyLineField, nestedKeyPlugin, highlightSelectionMatches(), diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte index e0b3b6903..e53b262b2 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte @@ -24,13 +24,12 @@ import DualTimeView from '$lib/components/dualTimeView.svelte'; import { IconCalendar, - IconCode, IconDotsHorizontal, IconDuplicate, IconFingerPrint } from '@appwrite.io/pink-icons-svelte'; import { isSmallViewport, isTabletViewport } from '$lib/stores/viewport'; - import { SpreadsheetContainer } from '$database/(entity)'; + import { SpreadsheetContainer, useDatabaseSdk } from '$database/(entity)'; import { copy } from '$lib/helpers/copy'; import { writable } from 'svelte/store'; import { pageToOffset } from '$lib/helpers/load'; @@ -84,6 +83,7 @@ const databaseId = page.params.database; const collectionId = page.params.collection; + const databaseSdk = useDatabaseSdk(page.params.region, page.params.project, data.database.type); const emptyCellsLimit = $spreadsheetLoading ? 30 @@ -169,7 +169,6 @@ minimumWidth: 225, draggable: false, type: 'dynamic', - icon: IconCode /* fuzzy search based Icon later */, isEditable: false, hide: !!selectedColumnsToHide?.includes(key) })); @@ -273,24 +272,17 @@ try { if (selectedDocumentForDelete) { - await sdk - .forProject(page.params.region, page.params.project) - .documentsDB.deleteDocument({ - databaseId, - collectionId, - documentId: selectedDocumentForDelete - }); + await databaseSdk.deleteRecord({ + databaseId, + entityId: collectionId, + recordId: selectedDocumentForDelete + }); } else { if (selectedDocuments.length) { - const documentsSDK = sdk.forProject( - page.params.region, - page.params.project - ).documentsDB; - for (const batch of chunks(selectedDocuments, 100)) { - await documentsSDK.deleteDocuments({ + await databaseSdk.deleteRecords({ databaseId, - collectionId, + entityId: collectionId, queries: [Query.equal('$id', batch)] }); } @@ -401,7 +393,6 @@ // possibly for auto-save! async function createOrUpdateDocument(jsonValue: JsonValue) { const document = jsonValue as Models.Document; - const documentsDB = sdk.forProject(page.params.region, page.params.project).documentsDB; /** * remove dates because @@ -412,10 +403,10 @@ try { if ($noSqlDocument.isNew) { // create - await documentsDB.createDocument({ + await databaseSdk.createRecord({ databaseId, - collectionId, - documentId: $id, + entityId: collectionId, + recordId: $id, data: documentWithoutDates ?? {} }); @@ -426,10 +417,10 @@ }); } else { // update - await documentsDB.updateDocument({ + await databaseSdk.updateRecord({ databaseId, - collectionId, - documentId: $id, + entityId: collectionId, + recordId: $id, data: documentWithoutDates, permissions: document.$permissions ?? [] }); From 42332cb096bfca6972ac6a276d98f76618f01323 Mon Sep 17 00:00:00 2001 From: Darshan Date: Sun, 18 Jan 2026 15:45:25 +0530 Subject: [PATCH 042/209] add: auto-save. add: display names to view selector. add: new sonners for error and save. add: fuzzy search helper. --- package.json | 4 +- pnpm-lock.yaml | 20 +-- src/lib/helpers/search.ts | 52 +++++++ .../(components)/editor/helpers/constants.ts | 1 + .../(components)/editor/view.svelte | 129 ++++++++++-------- .../displayName.svelte} | 2 +- .../(components)/sonners/error.svelte | 59 ++++++++ .../sonners/icons/CheckCircleDuotone.svelte | 19 +++ .../(components)/sonners/index.ts | 2 + .../(components)/sonners/save.svelte | 96 +++++++++++++ .../collection-[collection]/+page.svelte | 12 +- .../settings/displayName.svelte | 14 +- .../spreadsheet.svelte | 21 +-- .../collection-[collection]/store.ts | 15 +- 14 files changed, 351 insertions(+), 95 deletions(-) create mode 100644 src/lib/helpers/search.ts rename src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/{customColumnsEditor.svelte => inputs/displayName.svelte} (97%) create mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/sonners/error.svelte create mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/sonners/icons/CheckCircleDuotone.svelte create mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/sonners/index.ts create mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/sonners/save.svelte diff --git a/package.json b/package.json index 28adefd62..9cb8f4a2c 100644 --- a/package.json +++ b/package.json @@ -24,9 +24,9 @@ "@ai-sdk/svelte": "^1.1.24", "@appwrite.io/console": "https://pkg.vc/-/@appwrite/@appwrite.io/console@3ec199d", "@appwrite.io/pink-icons": "0.25.0", - "@appwrite.io/pink-icons-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@bbad65f", + "@appwrite.io/pink-icons-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@b92a389", "@appwrite.io/pink-legacy": "^1.0.3", - "@appwrite.io/pink-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@bbad65f", + "@appwrite.io/pink-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@b92a389", "@codemirror/autocomplete": "^6.19.0", "@codemirror/commands": "^6.9.0", "@codemirror/lang-javascript": "^6.2.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index efc1a9658..9fddf82dc 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,14 +18,14 @@ importers: specifier: 0.25.0 version: 0.25.0 '@appwrite.io/pink-icons-svelte': - specifier: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@bbad65f - version: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@bbad65f(svelte@5.25.3) + specifier: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@b92a389 + version: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@b92a389(svelte@5.25.3) '@appwrite.io/pink-legacy': specifier: ^1.0.3 version: 1.0.3 '@appwrite.io/pink-svelte': - specifier: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@bbad65f - version: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@bbad65f(svelte@5.25.3) + specifier: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@b92a389 + version: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@b92a389(svelte@5.25.3) '@codemirror/autocomplete': specifier: ^6.19.0 version: 6.19.0 @@ -314,8 +314,8 @@ packages: peerDependencies: svelte: ^4.0.0 - '@appwrite.io/pink-icons-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@bbad65f': - resolution: {tarball: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@bbad65f} + '@appwrite.io/pink-icons-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@b92a389': + resolution: {tarball: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@b92a389} version: 2.0.0-RC.1 peerDependencies: svelte: ^4.0.0 @@ -329,8 +329,8 @@ packages: '@appwrite.io/pink-legacy@1.0.3': resolution: {integrity: sha512-GGde5fmPhs+s6/3aFeMPc/kKADG/gTFkYQSy6oBN8pK0y0XNCLrZZgBv+EBbdhwdtqVEWXa0X85Mv9w7jcIlwQ==} - '@appwrite.io/pink-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@bbad65f': - resolution: {tarball: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@bbad65f} + '@appwrite.io/pink-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@b92a389': + resolution: {tarball: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@b92a389} version: 2.0.0-RC.2 peerDependencies: svelte: ^4.0.0 @@ -3910,7 +3910,7 @@ snapshots: dependencies: svelte: 5.25.3 - '@appwrite.io/pink-icons-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@bbad65f(svelte@5.25.3)': + '@appwrite.io/pink-icons-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@b92a389(svelte@5.25.3)': dependencies: svelte: 5.25.3 @@ -3923,7 +3923,7 @@ snapshots: '@appwrite.io/pink-icons': 1.0.0 the-new-css-reset: 1.11.3 - '@appwrite.io/pink-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@bbad65f(svelte@5.25.3)': + '@appwrite.io/pink-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@b92a389(svelte@5.25.3)': dependencies: '@appwrite.io/pink-icons-svelte': 2.0.0-RC.1(svelte@5.25.3) '@floating-ui/dom': 1.6.13 diff --git a/src/lib/helpers/search.ts b/src/lib/helpers/search.ts new file mode 100644 index 000000000..66f662bf3 --- /dev/null +++ b/src/lib/helpers/search.ts @@ -0,0 +1,52 @@ +import type { Models } from '@appwrite.io/console'; + +type FuzzySearchOptions = { + limit?: number; + minOccurrences?: number | null; +}; + +/** + * Finds common attribute keys across documents by analyzing their frequency. + */ +export function fuzzySearchKeys( + documents: Models.Document[], + options: FuzzySearchOptions = {} +): string[] | null { + if (!documents || documents.length < 5) { + return null; + } + + const { minOccurrences = 2, limit } = options; + + const attributeCount = new Map(); + const threshold = minOccurrences === null ? 5 : Math.max(2, Math.min(minOccurrences, 5)); + + // Process only first 5 documents + const docLimit = Math.min(5, documents.length); + + for (let docIndex = 0; docIndex < docLimit; docIndex++) { + const document = documents[docIndex]; + if (!document || typeof document !== 'object') continue; + + // track per-document keys + const seenInDoc = new Map(); + + for (const key in document) { + if (key[0] === '$' || seenInDoc.has(key)) continue; + + seenInDoc.set(key, true); + attributeCount.set(key, (attributeCount.get(key) || 0) + 1); + } + } + + const result: string[] = []; + for (const [key, count] of attributeCount) { + if (count >= threshold) { + result.push(key); + } + } + + result.sort(); + + return limit && limit > 0 ? result.slice(0, limit) : result; +} diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/helpers/constants.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/helpers/constants.ts index 91730b637..05b210f4c 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/helpers/constants.ts +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/helpers/constants.ts @@ -5,6 +5,7 @@ export const SYSTEM_KEYS = new Set(['$id:', '$createdAt:', '$updatedAt:']); // timing constants export const DEBOUNCE_DELAY = 200; export const LINTER_DELAY = 250; +export const AUTOSAVE_DELAY = 2000; // regex patterns /* export const UNQUOTED_KEY_REGEX = /([{,]\s*)([a-zA-Z_$][a-zA-Z0-9_$]*)\s*:/g; */ diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/view.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/view.svelte index b253e3c88..54a214a16 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/view.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/view.svelte @@ -53,12 +53,11 @@ import type { Text } from '@codemirror/state'; import { onMount, onDestroy } from 'svelte'; import Id, { truncateId } from '$lib/components/id.svelte'; - import { Icon, Layout, Skeleton, Spinner, Tooltip, Typography } from '@appwrite.io/pink-svelte'; - import { IconCheck, IconDuplicate, IconX } from '@appwrite.io/pink-icons-svelte'; + import { Icon, Layout, Skeleton, Tooltip } from '@appwrite.io/pink-svelte'; + import { IconDuplicate, IconX } from '@appwrite.io/pink-icons-svelte'; import { Button } from '$lib/elements/forms'; import { copy } from '$lib/helpers/copy'; import { isSmallViewport } from '$lib/stores/viewport'; - import { slide } from 'svelte/transition'; import { parse } from './validators/json5'; import { customTheme, customSyntaxHighlighting } from './helpers/theme'; @@ -73,6 +72,7 @@ ALLOWED_DOLLAR_PROPS, DEBOUNCE_DELAY, LINTER_DELAY, + AUTOSAVE_DELAY, INDENT_REGEX, SCALAR_VALUE_REGEX, TRAILING_COMMA_REGEX, @@ -83,6 +83,8 @@ } from './helpers/constants'; import { toLocaleDateTime } from '$lib/helpers/date'; import { ID } from '@appwrite.io/console'; + import { Error as ErrorSonner, Save as SavingSonner } from '../sonners'; + import { sleep } from '$lib/helpers/promises'; interface Props { isNew?: boolean; @@ -119,13 +121,17 @@ let editorView: EditorView | null = null; let errorMessage = $state(null); let changeTimer: ReturnType | null = null; // debounce timer for parse + onChange + let autoSaveTimer: ReturnType | null = null; // debounce timer for auto-save let tooltipTimer: ReturnType | null = null; // timer for tooltip message reset let pendingCanonicalize = false; // set when a full-document replace (paste-all) occurs let lastExpectedContent = ''; // track latest serialized data to avoid spurious rewrites let lastDocId: string | null = null; // track current document identity for history reset let baseExtensions: Extension[] = []; // cached extension set to rebuild state on doc switch - const readOnlyCompartment = new Compartment(); + + let saveSonnerState: 'saving' | 'saved' | null = $state(null); + const wrapCompartment = new Compartment(); + const readOnlyCompartment = new Compartment(); let tooltipMessage = $state('Copy document'); @@ -792,6 +798,10 @@ } await onSave?.(dataToSave); + + // update after save completes + originalData = $state.snapshot(data); + isSaving = false; } @@ -861,6 +871,12 @@ changeTimer = null; } + // Clear auto-save timer when user starts typing again + if (autoSaveTimer) { + clearTimeout(autoSaveTimer); + autoSaveTimer = null; + } + changeTimer = setTimeout(async () => { const state = update.view.state; const newContent = state.doc.toString(); @@ -880,6 +896,27 @@ data = parsed; onChange?.(parsed, hasDataChanged); lastExpectedContent = serializeData(parsed); + + // Check if this was a manual edit (not undo) and trigger auto-save + const isUndoOrRedo = update.transactions.some( + (tr) => + tr.annotation(Transaction.userEvent) === 'undo' || + tr.annotation(Transaction.userEvent) === 'redo' + ); + + if (!isUndoOrRedo && !$isSmallViewport && hasDataChanged && onSave) { + // Clear existing auto-save timer + if (autoSaveTimer) { + clearTimeout(autoSaveTimer); + autoSaveTimer = null; + } + + // Set new auto-save timer + autoSaveTimer = setTimeout(() => { + handleSave(); + autoSaveTimer = null; + }, AUTOSAVE_DELAY); + } }, DEBOUNCE_DELAY); }), readOnlyCompartment.of(EditorState.readOnly.of(readonly)) @@ -901,6 +938,10 @@ clearTimeout(changeTimer); changeTimer = null; } + if (autoSaveTimer) { + clearTimeout(autoSaveTimer); + autoSaveTimer = null; + } if (tooltipTimer) { clearTimeout(tooltipTimer); tooltipTimer = null; @@ -926,7 +967,8 @@ $effect(() => { if (!editorView) return; - // Detect document switch + const expectedContent = serializeData(data); + if (documentId !== lastDocId) { lastDocId = documentId; lastParseContent = ''; @@ -939,9 +981,8 @@ if (!isNew) { // Capture original data snapshot when switching documents originalData = $state.snapshot(data); - const expected = serializeData(data); - lastExpectedContent = expected; + lastExpectedContent = expectedContent; if (changeTimer) { clearTimeout(changeTimer); @@ -951,7 +992,10 @@ pendingCanonicalize = false; isUpdatingFromEditor = true; - const newState = EditorState.create({ doc: expected, extensions: baseExtensions }); + const newState = EditorState.create({ + doc: expectedContent, + extensions: baseExtensions + }); editorView.setState(newState); queueMicrotask(() => (isUpdatingFromEditor = false)); return; @@ -959,12 +1003,15 @@ } // Only react when the external data actually changed - const expectedContent = serializeData(data); if (expectedContent === lastExpectedContent) return; lastExpectedContent = expectedContent; const currentContent = editorView.state.doc.toString(); if (currentContent !== expectedContent) { + if (!isUpdatingFromEditor && hasDataChanged) { + return; + } + isUpdatingFromEditor = true; editorView.dispatch({ changes: { from: 0, to: currentContent.length, insert: expectedContent }, @@ -995,6 +1042,19 @@ $effect(() => { originalSerialized = serializeData(originalData); }); + + $effect(() => { + if (isSaving) { + saveSonnerState = 'saving'; + } else if (saveSonnerState === 'saving') { + saveSonnerState = 'saved'; + sleep(AUTOSAVE_DELAY).then(() => { + if (saveSonnerState === 'saved') { + saveSonnerState = null; + } + }); + } + });
@@ -1012,12 +1072,6 @@ {/if} - {#if errorMessage && !$isSmallViewport && !loading} -
- {errorMessage} -
- {/if} - {#if documentId} {#if isNew && onCancel} @@ -1036,24 +1090,6 @@ {/if} - - - - Save - - + {/if} + + +
+{/if} + + diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+page.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+page.svelte index 9514fc1ad..27df7291a 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+page.svelte @@ -29,7 +29,7 @@ import { canWriteRows } from '$lib/stores/roles'; import SpreadSheet from '$database/collection-[collection]/spreadsheet.svelte'; import { toLocaleDateTime } from '$lib/helpers/date'; - import CustomColumnsEditor from '$database/collection-[collection]/(components)/customColumnsEditor.svelte'; + import ColumnDisplayNameInput from '$database/collection-[collection]/(components)/inputs/displayName.svelte'; import { Modal } from '$lib/components'; const { data }: PageProps = $props(); @@ -38,7 +38,7 @@ let showCustomColumnsModal = $state(false); let columnsError: string = $state(null); - let customColumnEditor: CustomColumnsEditor | null = $state(null); + let columnDisplayNameInput: ColumnDisplayNameInput | null = $state(null); function buildInitDoc() { const now = new Date().toISOString(); @@ -231,15 +231,15 @@ bind:error={columnsError} bind:show={showCustomColumnsModal} onSubmit={async () => { - await customColumnEditor?.updateDisplayNames(); + await columnDisplayNameInput?.updateDisplayNames(); }}> Add up to 5 document fields to display as columns in the table view for easy identification. - { @@ -253,7 +253,7 @@ - + diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/settings/displayName.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/settings/displayName.svelte index 46c684f39..d6a66baaa 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/settings/displayName.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/settings/displayName.svelte @@ -7,27 +7,27 @@ import { addNotification } from '$lib/stores/notifications'; import { page } from '$app/state'; import { getTerminologies } from '$database/(entity)'; - import CustomColumnsEditor from '../(components)/customColumnsEditor.svelte'; + import ColumnDisplayNameInput from '../(components)/inputs/displayName.svelte'; const collectionId = page.params.collection; const { terminology } = getTerminologies(); - let customColumnsEditor: CustomColumnsEditor | null = $state(null); + let columnDisplayNameInput: ColumnDisplayNameInput | null = $state(null);
{ - await customColumnsEditor?.updateDisplayNames(); + await columnDisplayNameInput?.updateDisplayNames(); }}> - Display name + Custom columns Add up to 5 document fields to display as columns in the collection view. - { await invalidate(Dependencies.TEAM); addNotification({ @@ -46,7 +46,7 @@ - + diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte index e53b262b2..5058dc4c0 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte @@ -400,6 +400,9 @@ */ const { $createdAt, $updatedAt, $id, ...documentWithoutDates } = document; + // Set isSaving to trigger the sonner in the editor + noSqlDocument.update({ isSaving: true }); + try { if ($noSqlDocument.isNew) { // create @@ -411,10 +414,6 @@ }); trackEvent(Submit.DocumentCreate); - addNotification({ - message: 'Document has been created', - type: 'success' - }); } else { // update await databaseSdk.updateRecord({ @@ -426,14 +425,10 @@ }); trackEvent(Submit.DocumentUpdate); - addNotification({ - message: 'Document has been updated', - type: 'success' - }); } await invalidate(Dependencies.DOCUMENTS); - noSqlDocument.reset(); + noSqlDocument.reset({ show: true }); // re-render spreadsheet! spreadsheetRenderKey.set(hash(Date.now().toString())); @@ -447,6 +442,8 @@ type: 'error' }); trackError(error, Submit.DocumentUpdate); + } finally { + noSqlDocument.update({ isSaving: false }); } } @@ -534,7 +531,10 @@ submit: { text: 'Update', disabled: !$noSqlDocument.hasDataChanged, - onClick: async () => await createOrUpdateDocument($noSqlDocument.document) + onClick: async () => { + await createOrUpdateDocument($noSqlDocument.document); + return true; + } } }} sideSheetStateCallbacks={{ @@ -741,6 +741,7 @@ isNew={$noSqlDocument.isNew} loading={$noSqlDocument.loading} bind:data={$noSqlDocument.document} + bind:isSaving={$noSqlDocument.isSaving} showHeaderActions={!$isSmallViewport} onCancel={() => noSqlDocument.reset()} onSave={async (document) => await createOrUpdateDocument(document)} diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/store.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/store.ts index 8354c93ed..5f58732e9 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/store.ts +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/store.ts @@ -28,6 +28,7 @@ export type NoSqlDocumentState = { documentId?: string /* for loading from a given id */; hasDataChanged?: boolean; isDirty?: boolean; + isSaving?: boolean; }; const createNoSqlDocumentStore = () => { @@ -42,21 +43,23 @@ const createNoSqlDocumentStore = () => { loading: false, documentId: null, hasDataChanged: false, - isDirty: false + isDirty: false, + isSaving: false }); return { subscribe, set, - reset: () => + reset: (config?: { show?: boolean }) => set({ - show: false, + show: config?.show ?? false, document: null, isNew: false, loading: false, documentId: null, hasDataChanged: false, isDirty: false + // isSaving: false }), create: (document: Models.Document | (object & { $id?: string })) => set({ @@ -66,7 +69,8 @@ const createNoSqlDocumentStore = () => { loading: false, documentId: null, hasDataChanged: false, - isDirty: true + isDirty: true, + isSaving: false }), edit: (document: Models.Document, documentId?: string) => set({ @@ -76,7 +80,8 @@ const createNoSqlDocumentStore = () => { loading: false, documentId: documentId ?? null, hasDataChanged: false, - isDirty: false + isDirty: false, + isSaving: false }), update: (partial: Partial) => baseUpdate((state) => ({ ...state, ...partial })) From b7970e7d5d0c69738a6d1f1922444f70ee2c8c44 Mon Sep 17 00:00:00 2001 From: Darshan Date: Mon, 19 Jan 2026 11:57:21 +0530 Subject: [PATCH 043/209] add: fuzzy search based suggestions. add: json5 parser, linter and remove custom one. update: improve code editor's behaviour. add: apply fuzzy suggestions. update: faker for documentsDB. --- package.json | 4 +- pnpm-lock.yaml | 26 +- src/lib/helpers/faker.ts | 3 +- .../(entity)/views/create.svelte | 14 +- .../(suggestions)/columns.svelte | 18 +- .../(suggestions)/empty.svelte | 28 +- .../(suggestions)/input.svelte | 19 +- .../(suggestions)/store.ts | 8 +- .../editor/extensions/highlighting.ts | 132 ++++++--- .../(components)/editor/extensions/index.ts | 2 +- .../(components)/editor/validators/json5.ts | 73 ----- .../(components)/editor/view.svelte | 260 +++++++++++------- .../(components)/sonners/index.ts | 1 + .../(components)/sonners/suggestions.svelte | 53 ++++ .../collection-[collection]/+layout.svelte | 118 +++++++- .../spreadsheet.svelte | 10 + .../table-[table]/+layout.svelte | 6 +- .../table-[table]/+page.svelte | 10 +- 18 files changed, 504 insertions(+), 281 deletions(-) delete mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/validators/json5.ts create mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/sonners/suggestions.svelte diff --git a/package.json b/package.json index 9cb8f4a2c..e63db1f15 100644 --- a/package.json +++ b/package.json @@ -37,8 +37,8 @@ "@codemirror/state": "^6.5.2", "@codemirror/view": "^6.38.6", "@faker-js/faker": "^9.9.0", - "@plausible-analytics/tracker": "^0.4.4", "@lezer/highlight": "^1.2.1", + "@plausible-analytics/tracker": "^0.4.4", "@popperjs/core": "^2.11.8", "@sentry/sveltekit": "^8.38.0", "@stripe/stripe-js": "^3.5.0", @@ -46,12 +46,12 @@ "@threlte/extras": "^9.7.1", "ai": "^2.2.37", "analytics": "^0.8.16", + "codemirror-json5": "^1.0.3", "cron-parser": "^4.9.0", "dayjs": "^1.11.13", "deep-equal": "^2.2.3", "echarts": "^5.6.0", "ignore": "^6.0.2", - "json5": "^2.2.3", "nanoid": "^5.1.5", "nanotar": "^0.1.1", "pretty-bytes": "^6.1.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9fddf82dc..94b8a0f5f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -83,6 +83,9 @@ importers: analytics: specifier: ^0.8.16 version: 0.8.16(@types/dlv@1.1.5) + codemirror-json5: + specifier: ^1.0.3 + version: 1.0.3 cron-parser: specifier: ^4.9.0 version: 4.9.0 @@ -98,9 +101,6 @@ importers: ignore: specifier: ^6.0.2 version: 6.0.2 - json5: - specifier: ^2.2.3 - version: 2.2.3 nanoid: specifier: ^5.1.5 version: 5.1.5 @@ -1891,6 +1891,9 @@ packages: code-red@1.0.4: resolution: {integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==} + codemirror-json5@1.0.3: + resolution: {integrity: sha512-HmmoYO2huQxoaoG5ARKjqQc9mz7/qmNPvMbISVfIE2Gk1+4vZQg9X3G6g49MYM5IK00Ol3aijd7OKrySuOkA7Q==} + color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} @@ -2704,6 +2707,9 @@ packages: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} engines: {node: '>= 0.8.0'} + lezer-json5@2.0.2: + resolution: {integrity: sha512-NRmtBlKW/f8mA7xatKq8IUOq045t8GVHI4kZXrUtYYUdiVeGiO6zKGAV7/nUAnf5q+rYTY+SWX/gvQdFXMjNxQ==} + lilconfig@2.1.0: resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} engines: {node: '>=10'} @@ -5720,6 +5726,16 @@ snapshots: estree-walker: 3.0.3 periscopic: 3.1.0 + codemirror-json5@1.0.3: + dependencies: + '@codemirror/language': 6.11.3 + '@codemirror/state': 6.5.2 + '@codemirror/view': 6.38.6 + '@lezer/common': 1.2.3 + '@lezer/highlight': 1.2.1 + json5: 2.2.3 + lezer-json5: 2.0.2 + color-convert@2.0.1: dependencies: color-name: 1.1.4 @@ -6591,6 +6607,10 @@ snapshots: prelude-ls: 1.2.1 type-check: 0.4.0 + lezer-json5@2.0.2: + dependencies: + '@lezer/lr': 1.4.2 + lilconfig@2.1.0: {} locate-character@3.0.0: {} diff --git a/src/lib/helpers/faker.ts b/src/lib/helpers/faker.ts index f6fe4b0d1..07d9ade07 100644 --- a/src/lib/helpers/faker.ts +++ b/src/lib/helpers/faker.ts @@ -105,7 +105,6 @@ function generateDefaultRecord( export function generateFakeRecords( count: number, - type: DatabaseType = 'tablesdb', field?: Field[] ): { ids: string[]; @@ -130,7 +129,7 @@ export function generateFakeRecords( string | number | boolean | Array >; - if (type === 'documentsdb' || filteredColumns.length === 0) { + if (filteredColumns.length === 0) { record = generateDefaultRecord(id); } else { record = { $id: id }; diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/create.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/create.svelte index c8830a36e..06b158919 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/create.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/create.svelte @@ -8,7 +8,7 @@ import { addNotification } from '$lib/stores/notifications'; import { Input as SuggestionsInput, - tableColumnSuggestions + entityColumnSuggestions } from '$database/(suggestions)/index'; import { getTerminologies } from '../helpers'; @@ -41,12 +41,12 @@ function enableThinkingModeForSuggestions(id: string, name: string) { if (!useSuggestions) return; - if ($tableColumnSuggestions.enabled) { + if ($entityColumnSuggestions.enabled) { // if enabled, trigger thinking mode! - tableColumnSuggestions.update((store) => ({ + entityColumnSuggestions.update((store) => ({ ...store, thinking: true, - table: { + entity: { id, name } @@ -116,10 +116,10 @@ $effect(() => { // reset is OK here, we don't have to check for entity type! - if (show && isOnEntitiesPage && $tableColumnSuggestions.table) { - tableColumnSuggestions.update((store) => ({ + if (show && isOnEntitiesPage && $entityColumnSuggestions.entity) { + entityColumnSuggestions.update((store) => ({ ...store, - table: null + entity: null })); } }); diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/columns.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/columns.svelte index 69cc26bcb..8baafc9c6 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/columns.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/columns.svelte @@ -6,7 +6,7 @@ import Input from './input.svelte'; import { Modal } from '$lib/components'; import { Button } from '$lib/elements/forms'; - import { tableColumnSuggestions } from './store'; + import { entityColumnSuggestions } from './store'; let { show = $bindable(false) @@ -19,17 +19,17 @@ function resetSuggestionsStore() { show = false; - $tableColumnSuggestions.table = null; - $tableColumnSuggestions.context = null; + $entityColumnSuggestions.entity = null; + $entityColumnSuggestions.context = null; - $tableColumnSuggestions.force = false; - $tableColumnSuggestions.enabled = false; - $tableColumnSuggestions.thinking = false; + $entityColumnSuggestions.force = false; + $entityColumnSuggestions.enabled = false; + $entityColumnSuggestions.thinking = false; } async function triggerColumnSuggestions() { // set table info. first! - $tableColumnSuggestions.table = { + $entityColumnSuggestions.entity = { id: page.params.table, name: page.data.table?.name ?? 'Table' }; @@ -48,8 +48,8 @@ ); } - $tableColumnSuggestions.force = true; - $tableColumnSuggestions.enabled = true; + $entityColumnSuggestions.force = true; + $entityColumnSuggestions.enabled = true; show = false; } diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte index fb2c98e6d..2e97333c0 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/empty.svelte @@ -27,7 +27,7 @@ type ColumnInput, mapSuggestedColumns, type SuggestedColumnSchema, - tableColumnSuggestions, + entityColumnSuggestions, basicColumnOptions, mockSuggestions, showIndexesSuggestions @@ -607,27 +607,27 @@ }); function resetSuggestionsStore(fullReset: boolean = true) { - if ($tableColumnSuggestions.table?.id !== page.params.table) { + if ($entityColumnSuggestions.entity?.id !== page.params.table) { return; } if (fullReset) { // these are referenced in // `table-[table]/+page.svelte` - $tableColumnSuggestions.table = null; - $tableColumnSuggestions.force = false; - $tableColumnSuggestions.enabled = false; + $entityColumnSuggestions.entity = null; + $entityColumnSuggestions.force = false; + $entityColumnSuggestions.enabled = false; } - $tableColumnSuggestions.context = null; - $tableColumnSuggestions.thinking = false; + $entityColumnSuggestions.context = null; + $entityColumnSuggestions.thinking = false; // reset selection! resetSelectedColumn(); } async function suggestColumns() { - $tableColumnSuggestions.thinking = true; + $entityColumnSuggestions.thinking = true; await tick(); scrollToFirstCustomColumn(); @@ -651,7 +651,7 @@ .console.suggestColumns({ databaseId: page.params.database, tableId: page.params.table, - context: $tableColumnSuggestions.context ?? undefined, + context: $entityColumnSuggestions.context ?? undefined, min: 6 })) as unknown as { total: number; @@ -659,7 +659,7 @@ }; } - const tableName = $tableColumnSuggestions.table?.name ?? undefined; + const tableName = $entityColumnSuggestions.entity?.name ?? undefined; trackEvent(Submit.ColumnSuggestions, { tableName, total: suggestedColumns.total @@ -1298,7 +1298,7 @@ role="none" bind:this={spreadsheetContainer} class:custom-columns={customColumns.length > 0} - class:thinking={$tableColumnSuggestions.thinking} + class:thinking={$entityColumnSuggestions.thinking} class="databases-spreadsheet spreadsheet-container-outer" style:--overlay-icon-color="#fd366e99" style:--non-overlay-icon-color="--fgcolor-neutral-weak" @@ -1309,7 +1309,7 @@ bind:this={rangeOverlayEl} class="columns-range-overlay" class:no-transition={hasTransitioned && customColumns.length > 0} - class:thinking={$tableColumnSuggestions.thinking || creatingColumns}> + class:thinking={$entityColumnSuggestions.thinking || creatingColumns}>
{@render edgeGradients('left')} {@render edgeGradients('right')} @@ -1599,7 +1599,7 @@ data-collapsed-tabs={!$expandTabs}>
- {#if $tableColumnSuggestions.thinking} + {#if $entityColumnSuggestions.thinking}
@@ -1775,7 +1775,7 @@ !isInlineEditing && !$isTabletViewport && !$isSmallViewport && - !$tableColumnSuggestions.thinking && + !$entityColumnSuggestions.thinking && !creatingColumns && hoveredColumnId !== column.id ) { diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/input.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/input.svelte index ea5f9ce20..92e9d03fb 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/input.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/input.svelte @@ -3,7 +3,7 @@ import { isCloud } from '$lib/system'; import IconAI from './icon/ai.svelte'; import { slide } from 'svelte/transition'; - import { tableColumnSuggestions } from './store'; + import { entityColumnSuggestions } from './store'; import { getTerminologies } from '$database/(entity)'; import { Button, InputTextarea } from '$lib/elements/forms'; import { Card, Layout, Selector, Typography } from '@appwrite.io/pink-svelte'; @@ -16,7 +16,7 @@ onMount(() => { if (featureActive) { - $tableColumnSuggestions.enabled = true; + $entityColumnSuggestions.enabled = true; } }); @@ -25,6 +25,7 @@ const type = terminology.type; const field = terminology.field.lower; + const record = terminology.record.lower; const entity = terminology.entity.lower.singular; const title = $derived.by(() => { @@ -45,14 +46,8 @@ const isDocs = type === 'documentsdb'; if (featureActive) { - if (isModal) { - return isDocs - ? `Use AI to generate sample documents` - : `Use AI to suggest useful ${field.plural}`; - } - return isDocs - ? `Enable AI to generate sample documents based on your ${entity} name` + ? `Enable AI to generate sample ${record.plural} based on your ${entity} name` : `Enable AI to suggest useful ${field.plural} based on your ${entity} name`; } @@ -81,7 +76,7 @@ + bind:checked={$entityColumnSuggestions.enabled} />
{/if} @@ -95,13 +90,13 @@ {/if} - {#if $tableColumnSuggestions.enabled && featureActive} + {#if $entityColumnSuggestions.enabled && featureActive}
{/if} diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/store.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/store.ts index 0e8daa036..15185bd24 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/store.ts +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(suggestions)/store.ts @@ -2,14 +2,14 @@ import { writable } from 'svelte/store'; import { IndexType } from '@appwrite.io/console'; import { columnOptions } from '../table-[table]/columns/store'; -export type TableColumnSuggestions = { +export type EntityColumnSuggestions = { force: boolean; enabled: boolean; thinking: boolean; context?: string | undefined; /* for safety when in tables page */ - table?: { + entity?: { id: string; name: string; }; @@ -44,11 +44,11 @@ export type SuggestedIndexSchema = { lengths?: number[] | undefined; }; -export const tableColumnSuggestions = writable({ +export const entityColumnSuggestions = writable({ enabled: false, context: null, thinking: false, - table: null, + entity: null, force: false }); diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/extensions/highlighting.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/extensions/highlighting.ts index 05dc49ab6..b0ae5e32e 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/extensions/highlighting.ts +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/extensions/highlighting.ts @@ -5,43 +5,107 @@ import { type ViewUpdate, ViewPlugin } from '@codemirror/view'; -import { Range } from '@codemirror/state'; +import { Range, type Extension } from '@codemirror/state'; import { NESTED_KEY_REGEX } from '../helpers/constants'; // ViewPlugin to highlight nested keys (4+ spaces) only in visible ranges -export const nestedKeyPlugin = ViewPlugin.fromClass( - class { - decorations: DecorationSet; - constructor(view: EditorView) { - this.decorations = this.compute(view); - } - update(update: ViewUpdate) { - if (update.docChanged || update.viewportChanged) { - this.decorations = this.compute(update.view); +export function createNestedKeyPlugin(): Extension { + return ViewPlugin.fromClass( + class { + decorations: DecorationSet; + constructor(view: EditorView) { + this.decorations = this.compute(view); } - } - compute(view: EditorView): DecorationSet { - const decos: Range[] = []; - for (const { from, to } of view.visibleRanges) { - let line = view.state.doc.lineAt(from); - while (line.from <= to) { - const text = line.text; - const m = text.match(NESTED_KEY_REGEX); - if (m) { - const leading = m[1]; - const key = m[2]; - const start = line.from + leading.length; - const end = start + key.length; - decos.push( - Decoration.mark({ class: 'cm-nestedPropertyName' }).range(start, end) - ); - } - if (line.to >= to) break; - line = view.state.doc.line(line.number + 1); + update(update: ViewUpdate) { + if (update.docChanged || update.viewportChanged) { + this.decorations = this.compute(update.view); } } - return Decoration.set(decos); - } - }, - { decorations: (v) => v.decorations } -); + compute(view: EditorView): DecorationSet { + const decos: Range[] = []; + for (const { from, to } of view.visibleRanges) { + let line = view.state.doc.lineAt(from); + while (line.from <= to) { + const text = line.text; + const m = text.match(NESTED_KEY_REGEX); + if (m) { + const leading = m[1]; + const key = m[2]; + const start = line.from + leading.length; + const end = start + key.length; + decos.push( + Decoration.mark({ class: 'cm-nestedPropertyName' }).range( + start, + end + ) + ); + } + if (line.to >= to) break; + line = view.state.doc.line(line.number + 1); + } + } + return Decoration.set(decos); + } + }, + { decorations: (v) => v.decorations } + ); +} + +// ViewPlugin to apply muted styling to system fields ($id, $createdAt, $updatedAt) +export function createSystemFieldStylePlugin(getShouldStyle: () => boolean): Extension { + return ViewPlugin.fromClass( + class { + decorations: DecorationSet; + constructor(view: EditorView) { + this.decorations = this.compute(view); + } + update(update: ViewUpdate) { + // Only recompute when document changes + if (update.docChanged) { + this.decorations = this.compute(update.view); + } + } + compute(view: EditorView): DecorationSet { + const shouldStyle = getShouldStyle(); + + if (!shouldStyle) { + return Decoration.none; + } + + const doc = view.state.doc; + const text = doc.toString(); + const systemFields = ['$id', '$createdAt', '$updatedAt']; + const decos: Range[] = []; + + // Find all occurrences of system field keys + for (const field of systemFields) { + // Match the key in format: "$id": or $id: (with or without quotes) + const quotedPattern = new RegExp(`"${field.replace('$', '\\$')}"\\s*:`, 'g'); + const unquotedPattern = new RegExp(`${field.replace('$', '\\$')}\\s*:`, 'g'); + + let match: RegExpExecArray; + // Check quoted format + while ((match = quotedPattern.exec(text)) !== null) { + const from = match.index; + const to = from + field.length + 2; // +2 for quotes + decos.push( + Decoration.mark({ class: 'cm-system-field-muted' }).range(from, to) + ); + } + + // Check unquoted format + while ((match = unquotedPattern.exec(text)) !== null) { + const from = match.index; + const to = from + field.length; + decos.push( + Decoration.mark({ class: 'cm-system-field-muted' }).range(from, to) + ); + } + } + + return Decoration.set(decos); + } + }, + { decorations: (v) => v.decorations } + ); +} diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/extensions/index.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/extensions/index.ts index d9030871a..c992339b0 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/extensions/index.ts +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/extensions/index.ts @@ -5,4 +5,4 @@ export { createReadOnlyRangesFilter } from './readonly'; -export { nestedKeyPlugin } from './highlighting'; +export { createNestedKeyPlugin, createSystemFieldStylePlugin } from './highlighting'; diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/validators/json5.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/validators/json5.ts deleted file mode 100644 index 572e38ebb..000000000 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/validators/json5.ts +++ /dev/null @@ -1,73 +0,0 @@ -import JSON5 from 'json5'; - -export interface Diagnostic { - from: number; - to: number; - message: string; -} - -export interface ValidatorResult { - ok: boolean; - diagnostics: Diagnostic[]; - parsed?: TParsed; - meta?: Record; -} - -async function validate(text: string): Promise { - try { - const parsed = JSON5.parse(text); - return { ok: true, diagnostics: [], parsed }; - } catch (err) { - const line: number | undefined = err?.lineNumber; - - if (!line) { - return { - ok: false, - diagnostics: [ - { - from: 0, - to: text.length, - message: err?.message || 'Syntax error' - } - ] - }; - } - - const lines = text.split('\n'); - - /** - * we highlight the previous line instead because sometimes, - * the reported line is the NEXT line as that's where the validator encounters an error! - */ - const targetLineIndex = Math.max(0, line - 2); - - // calculate line start position - let lineStartPos = 0; - for (let i = 0; i < targetLineIndex; i++) { - lineStartPos += lines[i].length + 1; - } - - // highlight the whole line (trimmed) - const targetLine = lines[targetLineIndex] || ''; - const trimmedStart = targetLine.trimStart(); - const leadingWhitespace = targetLine.length - trimmedStart.length; - const lineEndPos = lineStartPos + leadingWhitespace + trimmedStart.trimEnd().length; - - const diagnostic: Diagnostic = { - from: lineStartPos + leadingWhitespace, - to: lineEndPos, - message: (err?.message || 'Syntax error').replace(/^JSON5:\s*/i, '') - }; - - return { ok: false, diagnostics: [diagnostic] }; - } -} - -export async function parse(text: string): Promise { - const res = await validate(text); - if (!res.ok) - throw Object.assign(new Error(res.diagnostics[0]?.message || 'Invalid JSON5'), { - diagnostics: res.diagnostics - }); - return res.parsed as T; -} diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/view.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/view.svelte index 54a214a16..9dc475ad9 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/view.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/view.svelte @@ -3,16 +3,6 @@ export type JsonObject = { [key: string]: JsonValue }; export type JsonArray = JsonValue[]; - type ParseResult = - | { - ok: true; - value: JsonValue; - } - | { - ok: false; - error: unknown; - }; - type Hit = { key: string; valueFrom: number; @@ -36,12 +26,13 @@ bracketMatching, foldGutter, foldEffect, + foldAll, + unfoldAll, indentOnInput, indentUnit } from '@codemirror/language'; import { highlightSelectionMatches } from '@codemirror/search'; import { closeBrackets } from '@codemirror/autocomplete'; - import { javascript } from '@codemirror/lang-javascript'; import { type Diagnostic, linter } from '@codemirror/lint'; import { EditorState, @@ -59,14 +50,14 @@ import { copy } from '$lib/helpers/copy'; import { isSmallViewport } from '$lib/stores/viewport'; - import { parse } from './validators/json5'; import { customTheme, customSyntaxHighlighting } from './helpers/theme'; import { createEditorKeymaps, secondaryKeymaps } from './helpers/keymaps'; import { createReadOnlyRangesField, createReadOnlyLineField, createReadOnlyRangesFilter, - nestedKeyPlugin + createNestedKeyPlugin, + createSystemFieldStylePlugin } from './extensions'; import { ALLOWED_DOLLAR_PROPS, @@ -83,8 +74,9 @@ } from './helpers/constants'; import { toLocaleDateTime } from '$lib/helpers/date'; import { ID } from '@appwrite.io/console'; - import { Error as ErrorSonner, Save as SavingSonner } from '../sonners'; + import { Suggestions, Error as ErrorSonner, Save as SavingSonner } from '../sonners'; import { sleep } from '$lib/helpers/promises'; + import { json5, json5ParseCache, json5ParseLinter } from 'codemirror-json5'; interface Props { isNew?: boolean; @@ -99,6 +91,8 @@ errorInPlace?: boolean; ctrlSave?: boolean; showHeaderActions?: boolean; + showSuggestions?: boolean; + suggestedAttributes?: string[]; } let { @@ -113,7 +107,9 @@ wrapLines = true, errorInPlace = true, ctrlSave = false, - showHeaderActions = true + showHeaderActions = true, + showSuggestions = false, + suggestedAttributes = [] }: Props = $props(); let editorContainer: HTMLDivElement = $state(null); @@ -130,6 +126,9 @@ let saveSonnerState: 'saving' | 'saved' | null = $state(null); + let hasUserContent = $state(false); + let hasStartedEditing = $state(false); + const wrapCompartment = new Compartment(); const readOnlyCompartment = new Compartment(); @@ -147,10 +146,6 @@ // Generate a stable ID once for new documents let generatedId = $state(ID.unique()); - // Content cache - let lastParseContent = ''; - let lastParsePromise: Promise | null = null; - // Serialized data cache let lastSerializedText = ''; let originalSerialized = $state(''); @@ -724,63 +719,77 @@ const readOnlyRangesField = createReadOnlyRangesField(isNew); const readOnlyLineField = createReadOnlyLineField(readOnlyRangesField); - function parseWithCache(content: string): Promise { - if (lastParsePromise && content === lastParseContent) { - return lastParsePromise; - } - - lastParseContent = content; - lastParsePromise = (async () => { - try { - const value = await parse(content); - return { ok: true, value }; - } catch (error) { - return { ok: false, error }; - } - })(); - - return lastParsePromise; + // Check if document has user-added content beyond system fields + function hasCustomContent(parsed: JsonValue): boolean { + if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) return false; + const keys = Object.keys(parsed as JsonObject); + const systemKeys = new Set([ + '$id', + '$createdAt', + '$updatedAt', + '$collectionId', + '$databaseId', + '$permissions' + ]); + return keys.some((key) => !systemKeys.has(key)); } - function isParseError(result: ParseResult): result is { ok: false; error: unknown } { - return !result.ok; - } + const baseJson5Linter = json5ParseLinter(); - // Safe parse variant that indicates success without mutating editor on failure - async function tryParseEditorContent( - content: string - ): Promise<{ ok: boolean; value: JsonValue }> { - const result = await parseWithCache(content); - if (!isParseError(result)) { - return result; - } - - return { ok: false, value: data }; - } - - // JavaScript linter to validate syntax (JSON5-based; precise squiggle when errorInPlace) - async function javascriptLinter(view: { state: { doc: Text } }): Promise { + // JSON5 linter using the parse cache; preserves errorInPlace behavior. + async function json5Linter(view: EditorView): Promise { if (isUpdatingFromEditor) return []; - const content = view.state.doc.toString(); - const result = await parseWithCache(content); - if (!isParseError(result)) { + const result = await baseJson5Linter(view); + if (!result.length) { errorMessage = null; return []; } - const errorMsg = - result.error instanceof Error ? result.error.message : String(result.error); + const errorMsg = (result[0]?.message || 'Syntax error').replace(/^JSON5:\s*/i, ''); errorMessage = errorMsg; - const diags = ( - result.error && typeof result.error === 'object' && 'diagnostics' in result.error - ? (result.error as { diagnostics?: { from: number; to: number }[] }).diagnostics - : undefined - ) as { from: number; to: number }[] | undefined; - if (diags && diags.length && errorInPlace) { - const { from, to } = diags[0]; - return [{ from, to, severity: 'error', message: errorMsg }]; + if (errorInPlace) { + return result; } // Fallback to full-doc underline - return [{ from: 0, to: content.length, severity: 'error', message: errorMsg }]; + return [{ from: 0, to: view.state.doc.length, severity: 'error', message: errorMsg }]; + } + + // Apply suggested attributes to the document + function applySuggestedAttributes() { + if (!editorView || !isNew || suggestedAttributes.length === 0) { + return; + } + + // Create an object with suggested attributes as empty strings + const suggestedObject: Record = {}; + for (const attr of suggestedAttributes) { + suggestedObject[attr] = ''; + } + + // Merge with existing data (keeping system fields) + const updatedData = { + ...(typeof data === 'object' && data !== null && !Array.isArray(data) ? data : {}), + ...suggestedObject + }; + + // Update the data + data = updatedData; + + // Manually update the editor content + const newContent = serializeData(updatedData); + + if (editorView) { + // Save current cursor position + const currentSelection = editorView.state.selection.main; + const currentContent = editorView.state.doc.toString(); + + editorView.dispatch({ + changes: { from: 0, to: currentContent.length, insert: newContent }, + selection: { anchor: currentSelection.anchor, head: currentSelection.head } + }); + } + + // Hide the suggestions bar after applying + hasStartedEditing = false; } // Handle save logic - called from both button and keyboard shortcut @@ -822,13 +831,14 @@ history(), bracketMatching(), closeBrackets(), - linter(javascriptLinter, { delay: LINTER_DELAY }), + linter(json5Linter, { delay: LINTER_DELAY }), readOnlyRangesField, EditorState.transactionFilter.of( createReadOnlyRangesFilter(readOnlyRangesField, readonly) ), readOnlyLineField, - nestedKeyPlugin, + createNestedKeyPlugin(), + createSystemFieldStylePlugin(() => isNew && !hasUserContent), highlightSelectionMatches(), // Clear selection after fold/unfold to prevent split highlighting EditorView.updateListener.of((update) => { @@ -845,13 +855,52 @@ keymap.of( createEditorKeymaps(insertNewlineKeepIndent, ctrlSave ? handleSave : undefined) ), + // Add Cmd+K for applying suggestions + keymap.of([ + { + key: 'Mod-=', + preventDefault: true, + run: unfoldAll + }, + { + key: 'Mod-+', + preventDefault: true, + run: unfoldAll + }, + { + key: 'Mod--', + preventDefault: true, + run: foldAll + }, + { + key: 'Mod-k', + preventDefault: true, + run: () => { + if (showSuggestions && hasStartedEditing) { + applySuggestedAttributes(); + return true; + } + return false; + } + } + ]), keymap.of(secondaryKeymaps), - javascript(), + json5(), customSyntaxHighlighting, customTheme, wrapCompartment.of(wrapLines ? EditorView.lineWrapping : []), EditorView.updateListener.of((update) => { if (!update.docChanged || readonly) return; + + if (isNew && !isUpdatingFromEditor) { + hasStartedEditing = true; + + const parseCache = update.state.field(json5ParseCache, false); + if (!parseCache?.err && parseCache?.obj !== undefined) { + hasUserContent = hasCustomContent(parseCache.obj as JsonValue); + } + } + // First, expand `: {}` / `: []` patterns when they appear if (!isUpdatingFromEditor && maybeExpandEmptyLiteral(update)) { return; @@ -879,13 +928,13 @@ changeTimer = setTimeout(async () => { const state = update.view.state; - const newContent = state.doc.toString(); - const res = await tryParseEditorContent(newContent); - if (!res.ok) { + const parseCache = state.field(json5ParseCache, false); + + if (!parseCache || parseCache.err || parseCache.obj === undefined) { return; // linter will surface the error } - const parsed = preserveSystemValues(res.value); + const parsed = preserveSystemValues(parseCache.obj as JsonValue); if (pendingCanonicalize) { // Patch only top-level $ system fields in-place to avoid reflow @@ -913,7 +962,7 @@ // Set new auto-save timer autoSaveTimer = setTimeout(() => { - handleSave(); + // handleSave(); autoSaveTimer = null; }, AUTOSAVE_DELAY); } @@ -946,8 +995,6 @@ clearTimeout(tooltipTimer); tooltipTimer = null; } - lastParseContent = ''; - lastParsePromise = null; lastSerializedData = null; lastSerializedText = ''; editorView?.destroy(); @@ -959,6 +1006,8 @@ if (isNew && !wasNew) { originalData = $state.snapshot(data); generatedId = ID.unique(); + hasStartedEditing = false; // Reset editing flag for new document + hasUserContent = false; } wasNew = isNew; }); @@ -971,35 +1020,31 @@ if (documentId !== lastDocId) { lastDocId = documentId; - lastParseContent = ''; - lastParsePromise = null; lastSerializedData = null; lastSerializedText = ''; + hasUserContent = false; - // For existing documents only: - // capture snapshot and reset editor state/history - if (!isNew) { - // Capture original data snapshot when switching documents - originalData = $state.snapshot(data); + // Capture original data snapshot when switching documents + originalData = $state.snapshot(data); - lastExpectedContent = expectedContent; + lastExpectedContent = expectedContent; - if (changeTimer) { - clearTimeout(changeTimer); - changeTimer = null; - } - - pendingCanonicalize = false; - isUpdatingFromEditor = true; - - const newState = EditorState.create({ - doc: expectedContent, - extensions: baseExtensions - }); - editorView.setState(newState); - queueMicrotask(() => (isUpdatingFromEditor = false)); - return; + if (changeTimer) { + clearTimeout(changeTimer); + changeTimer = null; } + + pendingCanonicalize = false; + isUpdatingFromEditor = true; + + // Reset editor state and history for both new and existing documents + const newState = EditorState.create({ + doc: expectedContent, + extensions: baseExtensions + }); + editorView.setState(newState); + queueMicrotask(() => (isUpdatingFromEditor = false)); + return; } // Only react when the external data actually changed @@ -1143,6 +1188,14 @@ {/if}
+ + {#if showSuggestions && hasStartedEditing} +
+ +
+ {/if}
{#if errorMessage && !loading} @@ -1157,6 +1210,7 @@ height: 100%; overflow: hidden; flex-direction: column; + position: relative; &.loading { overflow: visible; @@ -1313,6 +1367,14 @@ font-weight: 500; } + // System fields muted styling (when suggestions are showing) + // Must come after .cm-propertyName to override + :global(.cm-system-field-muted), + :global(.cm-system-field-muted.cm-propertyName), + :global(.cm-system-field-muted .cm-propertyName) { + color: var(--fgcolor-neutral-tertiary, #97979b) !important; + } + // All value-level tokens use mint color (strings, numbers, etc.) :global(.cm-string) { color: var(--brand-mint-600); diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/sonners/index.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/sonners/index.ts index 67017765e..cc1daf60a 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/sonners/index.ts +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/sonners/index.ts @@ -1,2 +1,3 @@ export { default as Save } from './save.svelte'; export { default as Error } from './error.svelte'; +export { default as Suggestions } from './suggestions.svelte'; diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/sonners/suggestions.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/sonners/suggestions.svelte new file mode 100644 index 000000000..e5f6723c0 --- /dev/null +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/sonners/suggestions.svelte @@ -0,0 +1,53 @@ + + +{#if show} +
+ + + + Press + + + + + + + + for suggestions + + + +
+{/if} + + diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+layout.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+layout.svelte index 3054fc7c0..3d06a2052 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+layout.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+layout.svelte @@ -34,7 +34,20 @@ documentActivitySheet, documentPermissionSheet } from '$database/collection-[collection]/store'; - import { SideSheet, EditRecordPermissions, RecordActivity } from '$database/(entity)'; + import { + SideSheet, + EditRecordPermissions, + RecordActivity, + type Field + } from '$database/(entity)'; + import { + entityColumnSuggestions, + type ColumnInput, + mapSuggestedColumns, + mockSuggestions + } from '$database/(suggestions)'; + import { VARS } from '$lib/system'; + import { Submit, trackEvent, trackError } from '$lib/actions/analytics'; export let data: LayoutData; @@ -58,17 +71,17 @@ // set faker method. $randomDataModalState.onSubmit = async () => await createFakeData(); + if ( + $entityColumnSuggestions.enabled && + $entityColumnSuggestions.thinking && + $entityColumnSuggestions.entity?.id === collection.$id + ) { + createSampleDocuments(); + } + return realtime.forProject(page.params.region, ['project', 'console'], (response) => { if (response.events.includes('documentsdb.*.collections.*.indexes.*')) { - // don't invalidate when - - // 1. from faker - // 2. ai indexes creation - // 3. ai columns creation - if ( - !isWaterfallFromFaker /*&& - !$showIndexesSuggestions && - !$tableColumnSuggestions.table*/ - ) { + if (!isWaterfallFromFaker && !$entityColumnSuggestions.entity) { invalidate(Dependencies.COLLECTION); } } @@ -173,6 +186,89 @@ indexes: 700 }); + async function createSampleDocuments() { + $spreadsheetLoading = true; + isWaterfallFromFaker = true; + + let suggestedColumns: { total: number; columns: ColumnInput[] } = { + total: 0, + columns: [] + }; + + try { + if (VARS.MOCK_AI_SUGGESTIONS) { + await sleep(1250); + suggestedColumns = mockSuggestions; + } else { + suggestedColumns = (await sdk + .forProject(page.params.region, page.params.project) + .console.suggestColumns({ + databaseId: page.params.database, + tableId: page.params.collection, + context: $entityColumnSuggestions.context ?? undefined, + min: 6 + })) as unknown as { + total: number; + columns: ColumnInput[]; + }; + } + + const collectionName = $entityColumnSuggestions.entity?.name ?? undefined; + trackEvent(Submit.ColumnSuggestions, { + collectionName, + total: suggestedColumns.total + }); + + const mappedColumns = mapSuggestedColumns(suggestedColumns.columns); + const fields = mappedColumns.map((col) => ({ + key: col.key, + type: col.type, + required: col.required, + array: col.array, + size: col.size, + min: col.min, + max: col.max, + format: col.format, + elements: col.elements, + status: 'available' + })) as Field[]; + + // TODO: @itznotabug - maybe we should show a seekbar + const { rows } = generateFakeRecords(100, fields); + + await sdk + .forProject(page.params.region, page.params.project) + .documentsDB.createDocuments({ + databaseId: page.params.database, + collectionId: page.params.collection, + documents: rows + }); + + addNotification({ + type: 'success', + message: 'Sample data added successfully with AI-suggested attributes' + }); + + await invalidate(Dependencies.DOCUMENTS); + } catch (e) { + addNotification({ + type: 'error', + message: e.message + }); + trackError(e, Submit.ColumnSuggestions); + } finally { + // Reset suggestion state + entityColumnSuggestions.update((store) => ({ + ...store, + thinking: false, + entity: null + })); + + $spreadsheetLoading = false; + isWaterfallFromFaker = false; + } + } + async function createFakeData() { isWaterfallFromFaker = true; @@ -184,7 +280,7 @@ let documentIds = []; try { - const { rows, ids } = generateFakeRecords($randomDataModalState.value, 'documentsdb'); + const { rows, ids } = generateFakeRecords($randomDataModalState.value); documentIds = ids; diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte index 5058dc4c0..f56ea88aa 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte @@ -63,6 +63,7 @@ type HeaderCellAction, type RowCellAction } from '$database/(entity)'; + import { fuzzySearchKeys } from '$lib/helpers/search'; export let data: PageData; @@ -521,6 +522,13 @@ $: rowSelection = !$spreadsheetLoading && !$paginatedDocumentsLoading ? true : ('disabled' as const); + + $: suggestedAttributes = + $noSqlDocument.isNew && $documents?.documents + ? (fuzzySearchKeys($documents.documents, { minOccurrences: 2 }) ?? []) + : []; + + $: showSuggestions = $noSqlDocument.isNew && suggestedAttributes.length > 0; noSqlDocument.reset()} onSave={async (document) => await createOrUpdateDocument(document)} onChange={(_, hasDataChanged) => noSqlDocument.update({ hasDataChanged })} /> diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+layout.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+layout.svelte index 9df9a085c..52e5533ec 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+layout.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+layout.svelte @@ -338,11 +338,7 @@ let rowIds = []; try { - const { rows, ids } = generateFakeRecords( - $randomDataModalState.value, - 'tablesdb', - columns - ); + const { rows, ids } = generateFakeRecords($randomDataModalState.value, columns); rowIds = ids; const tablesSDK = sdk.forProject(page.params.region, page.params.project).tablesDB; diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.svelte index ee279fedf..fc0f0172f 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+page.svelte @@ -38,7 +38,7 @@ import { EmptySheet, EmptySheetCards, type Field } from '$database/(entity)'; import { Empty as SuggestionsEmptySheet, - tableColumnSuggestions, + entityColumnSuggestions, showColumnsSuggestionsModal } from '$database/(suggestions)'; import { expandTabs, randomDataModalState } from '$database/store'; @@ -97,9 +97,9 @@ $: canShowSuggestionsSheet = // enabled, has table details // and it matches current table - $tableColumnSuggestions.enabled && - $tableColumnSuggestions.table && - $tableColumnSuggestions.table.id === page.params.table; + $entityColumnSuggestions.enabled && + $entityColumnSuggestions.entity && + $entityColumnSuggestions.entity.id === page.params.table; $: disableButton = canShowSuggestionsSheet; @@ -249,7 +249,7 @@
- {#if hasColumns && hasValidColumns && $tableColumnSuggestions.force !== true} + {#if hasColumns && hasValidColumns && $entityColumnSuggestions.force !== true} {#if data.rows.total} From fa9d6bef2114dbac932a1a78488a6932621c6c1c Mon Sep 17 00:00:00 2001 From: Darshan Date: Mon, 19 Jan 2026 14:54:58 +0530 Subject: [PATCH 044/209] add: duplicate linter. fix: a bug on autocomplete + backspace adding excess commas. add: duplicate content shortcut. --- package.json | 2 + pnpm-lock.yaml | 30 ++-- .../editor/extensions/duplicates.ts | 100 +++++++++++ .../(components)/editor/extensions/index.ts | 1 + .../(components)/editor/helpers/constants.ts | 3 +- .../(components)/editor/helpers/keymaps.ts | 46 +++++ .../(components)/editor/view.svelte | 167 +++++++++++++++++- .../(components)/sonners/error.svelte | 18 +- .../(components)/sonners/suggestions.svelte | 2 +- 9 files changed, 340 insertions(+), 29 deletions(-) create mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/extensions/duplicates.ts diff --git a/package.json b/package.json index e63db1f15..11c3cf3d1 100644 --- a/package.json +++ b/package.json @@ -52,6 +52,7 @@ "deep-equal": "^2.2.3", "echarts": "^5.6.0", "ignore": "^6.0.2", + "json5": "^2.2.3", "nanoid": "^5.1.5", "nanotar": "^0.1.1", "pretty-bytes": "^6.1.1", @@ -64,6 +65,7 @@ "devDependencies": { "@eslint/compat": "^1.3.1", "@eslint/js": "^9.31.0", + "@lezer/common": "^1.5.0", "@melt-ui/pp": "^0.3.2", "@melt-ui/svelte": "^0.86.5", "@playwright/test": "^1.55.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 94b8a0f5f..9bbebe40d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -101,6 +101,9 @@ importers: ignore: specifier: ^6.0.2 version: 6.0.2 + json5: + specifier: ^2.2.3 + version: 2.2.3 nanoid: specifier: ^5.1.5 version: 5.1.5 @@ -132,6 +135,9 @@ importers: '@eslint/js': specifier: ^9.31.0 version: 9.31.0 + '@lezer/common': + specifier: ^1.5.0 + version: 1.5.0 '@melt-ui/pp': specifier: ^0.3.2 version: 0.3.2(@melt-ui/svelte@0.86.5(svelte@5.25.3))(svelte@5.25.3) @@ -734,8 +740,8 @@ packages: '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} - '@lezer/common@1.2.3': - resolution: {integrity: sha512-w7ojc8ejBqr2REPsWxJjrMFsA/ysDCFICn8zEOR9mrqzOu2amhITYuLD8ag6XZf0CFXDrhKqw7+tW8cX66NaDA==} + '@lezer/common@1.5.0': + resolution: {integrity: sha512-PNGcolp9hr4PJdXR4ix7XtixDrClScvtSCYW3rQG106oVMOOI+jFb+0+J3mbeL/53g1Zd6s0kJzaw6Ri68GmAA==} '@lezer/highlight@1.2.1': resolution: {integrity: sha512-Z5duk4RN/3zuVO7Jq0pGLJ3qynpxUVsh7IbUbGj88+uV2ApSAn6kWg2au3iJb+0Zi7kKtqffIESgNcRXWZWmSA==} @@ -4073,14 +4079,14 @@ snapshots: '@codemirror/language': 6.11.3 '@codemirror/state': 6.5.2 '@codemirror/view': 6.38.6 - '@lezer/common': 1.2.3 + '@lezer/common': 1.5.0 '@codemirror/commands@6.9.0': dependencies: '@codemirror/language': 6.11.3 '@codemirror/state': 6.5.2 '@codemirror/view': 6.38.6 - '@lezer/common': 1.2.3 + '@lezer/common': 1.5.0 '@codemirror/lang-javascript@6.2.4': dependencies: @@ -4089,7 +4095,7 @@ snapshots: '@codemirror/lint': 6.9.0 '@codemirror/state': 6.5.2 '@codemirror/view': 6.38.6 - '@lezer/common': 1.2.3 + '@lezer/common': 1.5.0 '@lezer/javascript': 1.5.4 '@codemirror/lang-json@6.0.2': @@ -4101,7 +4107,7 @@ snapshots: dependencies: '@codemirror/state': 6.5.2 '@codemirror/view': 6.38.6 - '@lezer/common': 1.2.3 + '@lezer/common': 1.5.0 '@lezer/highlight': 1.2.1 '@lezer/lr': 1.4.2 style-mod: 4.1.2 @@ -4323,27 +4329,27 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 - '@lezer/common@1.2.3': {} + '@lezer/common@1.5.0': {} '@lezer/highlight@1.2.1': dependencies: - '@lezer/common': 1.2.3 + '@lezer/common': 1.5.0 '@lezer/javascript@1.5.4': dependencies: - '@lezer/common': 1.2.3 + '@lezer/common': 1.5.0 '@lezer/highlight': 1.2.1 '@lezer/lr': 1.4.2 '@lezer/json@1.0.3': dependencies: - '@lezer/common': 1.2.3 + '@lezer/common': 1.5.0 '@lezer/highlight': 1.2.1 '@lezer/lr': 1.4.2 '@lezer/lr@1.4.2': dependencies: - '@lezer/common': 1.2.3 + '@lezer/common': 1.5.0 '@marijn/find-cluster-break@1.0.2': {} @@ -5731,7 +5737,7 @@ snapshots: '@codemirror/language': 6.11.3 '@codemirror/state': 6.5.2 '@codemirror/view': 6.38.6 - '@lezer/common': 1.2.3 + '@lezer/common': 1.5.0 '@lezer/highlight': 1.2.1 json5: 2.2.3 lezer-json5: 2.0.2 diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/extensions/duplicates.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/extensions/duplicates.ts new file mode 100644 index 000000000..996b00b0d --- /dev/null +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/extensions/duplicates.ts @@ -0,0 +1,100 @@ +import { json5ParseCache } from 'codemirror-json5'; +import { ensureSyntaxTree } from '@codemirror/language'; +import { linter, type Diagnostic } from '@codemirror/lint'; +import type { SyntaxNode, TreeCursor } from '@lezer/common'; +import type { EditorState, Extension } from '@codemirror/state'; + +type Options = { + delay?: number; + timeBudgetMs?: number; + maxDocLength?: number; +}; + +const DEFAULT_TIME_BUDGET_MS = 200; +const CHECK_BUDGET_EVERY = 200; + +function normalizeKey(raw: string): string { + const trimmed = raw.trim(); + if (trimmed.length < 2) return trimmed; + const first = trimmed[0]; + const last = trimmed[trimmed.length - 1]; + if ((first === '"' && last === '"') || (first === "'" && last === "'")) { + return trimmed.slice(1, -1); + } + return trimmed; +} + +function nowMs(): number { + return typeof performance !== 'undefined' ? performance.now() : Date.now(); +} + +function readPropertyName( + node: SyntaxNode, + state: EditorState +): { key: string; from: number; to: number } | null { + const propName = node.getChild('PropertyName'); + if (!propName) return null; + const raw = state.doc.sliceString(propName.from, propName.to); + return { key: normalizeKey(raw), from: propName.from, to: propName.to }; +} + +function collectDuplicateKeys( + state: EditorState, + cursor: TreeCursor, + deadlineMs: number +): Diagnostic[] { + const diagnostics: Diagnostic[] = []; + const walker = cursor; + let visited = 0; + + do { + if (visited % CHECK_BUDGET_EVERY === 0 && nowMs() > deadlineMs) { + break; + } + visited += 1; + if (walker.name === 'Object') { + const objectNode = walker.node; + const objectCursor = objectNode.cursor(); + const seen = new Map(); + if (objectCursor.firstChild()) { + do { + if (objectCursor.name === 'Property') { + const keyInfo = readPropertyName(objectCursor.node, state); + if (!keyInfo || !keyInfo.key) continue; + const previous = seen.get(keyInfo.key); + if (previous) { + diagnostics.push({ + from: keyInfo.from, + to: keyInfo.to, + severity: 'warning', + message: `Duplicate key "${keyInfo.key}"` + }); + } else { + seen.set(keyInfo.key, { from: keyInfo.from, to: keyInfo.to }); + } + } + } while (objectCursor.nextSibling()); + } + } + } while (walker.next()); + + return diagnostics; +} + +export function createDuplicateKeyLinter(options: Options = {}): Extension { + const timeBudgetMs = options.timeBudgetMs ?? DEFAULT_TIME_BUDGET_MS; + return linter( + (view) => { + if (options.maxDocLength && view.state.doc.length > options.maxDocLength) { + return []; + } + const parseCache = view.state.field(json5ParseCache, false); + if (parseCache?.err) return []; + const tree = ensureSyntaxTree(view.state, view.state.doc.length, timeBudgetMs); + if (!tree) return []; + const deadlineMs = nowMs() + timeBudgetMs; + return collectDuplicateKeys(view.state, tree.cursor(), deadlineMs); + }, + { delay: options.delay } + ); +} diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/extensions/index.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/extensions/index.ts index c992339b0..f92fe28e5 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/extensions/index.ts +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/extensions/index.ts @@ -5,4 +5,5 @@ export { createReadOnlyRangesFilter } from './readonly'; +export { createDuplicateKeyLinter } from './duplicates'; export { createNestedKeyPlugin, createSystemFieldStylePlugin } from './highlighting'; diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/helpers/constants.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/helpers/constants.ts index 05b210f4c..2d38cf3b6 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/helpers/constants.ts +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/helpers/constants.ts @@ -3,9 +3,10 @@ export const ALLOWED_DOLLAR_PROPS = ['$id', '$createdAt', '$updatedAt'] as const export const SYSTEM_KEYS = new Set(['$id:', '$createdAt:', '$updatedAt:']); // timing constants -export const DEBOUNCE_DELAY = 200; export const LINTER_DELAY = 250; +export const DEBOUNCE_DELAY = 200; export const AUTOSAVE_DELAY = 2000; +export const SUGGESTIONS_HIDE_DELAY = 3000; // regex patterns /* export const UNQUOTED_KEY_REGEX = /([{,]\s*)([a-zA-Z_$][a-zA-Z0-9_$]*)\s*:/g; */ diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/helpers/keymaps.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/helpers/keymaps.ts index dcbfa5176..8cc7695ae 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/helpers/keymaps.ts +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/helpers/keymaps.ts @@ -1,8 +1,52 @@ /*import { searchKeymap } from '@codemirror/search';*/ import { closeBracketsKeymap } from '@codemirror/autocomplete'; import type { EditorView, KeyBinding } from '@codemirror/view'; +import { EditorSelection, Transaction } from '@codemirror/state'; import { defaultKeymap, historyKeymap, indentLess, indentMore } from '@codemirror/commands'; +function duplicateSelectionOrLine(view: EditorView): boolean { + const state = view.state; + + const transaction = state.changeByRange((range) => { + if (range.empty) { + const line = state.doc.lineAt(range.head); + const column = range.head - line.from; + const insertText = `\n${line.text}`; + const insertPos = line.to; + const newPos = insertPos + 1 + column; + + return { + changes: { from: insertPos, insert: insertText }, + range: EditorSelection.cursor(newPos) + }; + } + + const insertText = state.doc.sliceString(range.from, range.to); + const insertPos = range.to; + const newFrom = range.from + insertText.length; + const newTo = range.to + insertText.length; + + return { + changes: { from: insertPos, insert: insertText }, + range: EditorSelection.range(newFrom, newTo) + }; + }); + + view.dispatch({ + ...transaction, + annotations: Transaction.userEvent.of('input') + }); + return true; +} + +function createDuplicateLineKeymap(): KeyBinding { + return { + key: 'Mod-d', + preventDefault: true, + run: duplicateSelectionOrLine + }; +} + // main editor keymaps, // these require functions from the component export function createEditorKeymaps( @@ -35,6 +79,8 @@ export function createEditorKeymaps( run: () => true }); + keymaps.push(createDuplicateLineKeymap()); + return keymaps; } diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/view.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/view.svelte index 9dc475ad9..cd78a6a82 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/view.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/view.svelte @@ -33,7 +33,7 @@ } from '@codemirror/language'; import { highlightSelectionMatches } from '@codemirror/search'; import { closeBrackets } from '@codemirror/autocomplete'; - import { type Diagnostic, linter } from '@codemirror/lint'; + import { forEachDiagnostic, type Diagnostic, linter } from '@codemirror/lint'; import { EditorState, EditorSelection, @@ -57,6 +57,7 @@ createReadOnlyLineField, createReadOnlyRangesFilter, createNestedKeyPlugin, + createDuplicateKeyLinter, createSystemFieldStylePlugin } from './extensions'; import { @@ -64,6 +65,7 @@ DEBOUNCE_DELAY, LINTER_DELAY, AUTOSAVE_DELAY, + SUGGESTIONS_HIDE_DELAY, INDENT_REGEX, SCALAR_VALUE_REGEX, TRAILING_COMMA_REGEX, @@ -116,9 +118,11 @@ let editorView: EditorView | null = null; let errorMessage = $state(null); + let warningMessage = $state(null); let changeTimer: ReturnType | null = null; // debounce timer for parse + onChange let autoSaveTimer: ReturnType | null = null; // debounce timer for auto-save let tooltipTimer: ReturnType | null = null; // timer for tooltip message reset + let suggestionsHideTimer: ReturnType | null = null; // timer to auto-hide suggestions let pendingCanonicalize = false; // set when a full-document replace (paste-all) occurs let lastExpectedContent = ''; // track latest serialized data to avoid spurious rewrites let lastDocId: string | null = null; // track current document identity for history reset @@ -128,6 +132,7 @@ let hasUserContent = $state(false); let hasStartedEditing = $state(false); + let hasSuggestionsBeenShown = $state(false); // Track if suggestions were already shown for this document const wrapCompartment = new Compartment(); const readOnlyCompartment = new Compartment(); @@ -376,6 +381,62 @@ return did; } + // Check if line is a valid key for auto-completion + function isValidKeyForAutoComplete(lineText: string, cursorOffset: number): boolean { + // skip system fields (starting with $) + if (lineText.trimStart().startsWith('$')) return false; + + // pattern: key name followed by colon at end + const beforeCursor = lineText.slice(0, cursorOffset); + const match = /([A-Za-z_$][A-Za-z0-9_$]*)\s*:\s*$/.exec(beforeCursor); + return match !== null; + } + + // Check if line already has completion artifacts + function lineHasCompletion(lineText: string, cursorOffset: number): boolean { + const afterCursor = lineText.slice(cursorOffset); + return afterCursor.includes('"') || afterCursor.includes(','); + } + + // Auto-complete key with empty string: `key:` -> `key: "",` with cursor between quotes + function maybeAutoCompleteKeyValue(update: ViewUpdate): boolean { + const doc = update.state.doc; + let did = false; + + update.changes.iterChanges( + (fromA: number, toA: number, fromB: number, toB: number, inserted: Text) => { + if (did) return; + + // Only trigger on insertion (not deletion) + if (toA >= fromA && toB <= fromB) return; + + // Check if `:` was just typed + const insertedText = inserted.toString(); + if (!insertedText.endsWith(':')) return; + + const line = doc.lineAt(toB); + const lineText = line.text; + const cursorOffset = toB - line.from; + + // Validate line is suitable for auto-completion + if (!isValidKeyForAutoComplete(lineText, cursorOffset)) return; + if (lineHasCompletion(lineText, cursorOffset)) return; + + // Insert space, empty quotes, and comma + const replacement = ' "",'; + const cursorPos = toB + 2; // Position cursor between the quotes + + update.view.dispatch({ + changes: { from: toB, to: toB, insert: replacement }, + selection: EditorSelection.cursor(cursorPos), + userEvent: 'input' + }); + did = true; + } + ); + return did; + } + // Detect indentation from first line after opening brace function detectIndentation(content: string, openIdx: number, closeIdx: number): string { const afterOpenNL = content.indexOf('\n', openIdx); @@ -734,6 +795,25 @@ return keys.some((key) => !systemKeys.has(key)); } + function getLintWarningSummary(state: EditorState): { + message: string | null; + hasWarning: boolean; + } { + let message: string | null = null; + let count = 0; + forEachDiagnostic(state, (diagnostic) => { + if (diagnostic.severity === 'warning') { + count += 1; + if (!message) { + message = diagnostic.message; + } + } + }); + if (count === 0) return { message: null, hasWarning: false }; + if (count === 1) return { message, hasWarning: true }; + return { message: 'Duplicate keys detected', hasWarning: true }; + } + const baseJson5Linter = json5ParseLinter(); // JSON5 linter using the parse cache; preserves errorInPlace behavior. @@ -790,11 +870,21 @@ // Hide the suggestions bar after applying hasStartedEditing = false; + hasSuggestionsBeenShown = true; + + // Clear the auto-hide timer + if (suggestionsHideTimer) { + clearTimeout(suggestionsHideTimer); + suggestionsHideTimer = null; + } } // Handle save logic - called from both button and keyboard shortcut async function handleSave(): Promise { if (!hasDataChanged) return; + const parseCache = editorView?.state.field(json5ParseCache, false); + if (parseCache?.err || errorMessage) return; + if (editorView && getLintWarningSummary(editorView.state).hasWarning) return; isSaving = true; @@ -838,6 +928,7 @@ ), readOnlyLineField, createNestedKeyPlugin(), + createDuplicateKeyLinter({ delay: LINTER_DELAY }), createSystemFieldStylePlugin(() => isNew && !hasUserContent), highlightSelectionMatches(), // Clear selection after fold/unfold to prevent split highlighting @@ -855,7 +946,7 @@ keymap.of( createEditorKeymaps(insertNewlineKeepIndent, ctrlSave ? handleSave : undefined) ), - // Add Cmd+K for applying suggestions + // Add Cmd+A for applying suggestions and Esc to hide keymap.of([ { key: 'Mod-=', @@ -873,7 +964,7 @@ run: foldAll }, { - key: 'Mod-k', + key: 'Mod-a', preventDefault: true, run: () => { if (showSuggestions && hasStartedEditing) { @@ -882,6 +973,21 @@ } return false; } + }, + { + key: 'Escape', + run: () => { + if (showSuggestions && hasStartedEditing) { + hasStartedEditing = false; + hasSuggestionsBeenShown = true; + if (suggestionsHideTimer) { + clearTimeout(suggestionsHideTimer); + suggestionsHideTimer = null; + } + return true; + } + return false; + } } ]), keymap.of(secondaryKeymaps), @@ -890,18 +996,45 @@ customTheme, wrapCompartment.of(wrapLines ? EditorView.lineWrapping : []), EditorView.updateListener.of((update) => { + if (update.docChanged || update.transactions.some((tr) => tr.effects.length > 0)) { + const summary = getLintWarningSummary(update.state); + warningMessage = summary.message; + } if (!update.docChanged || readonly) return; - if (isNew && !isUpdatingFromEditor) { + // Check if this is manual typing (not paste, undo, or programmatic) + const isPaste = update.transactions.some((tr) => + tr.annotation(Transaction.userEvent)?.startsWith('input.paste') + ); + const isManualInput = !isPaste && !isUpdatingFromEditor; + + if (isNew && isManualInput && !hasSuggestionsBeenShown) { hasStartedEditing = true; + if (showSuggestions) { + if (suggestionsHideTimer) { + clearTimeout(suggestionsHideTimer); + } + + suggestionsHideTimer = setTimeout(() => { + hasStartedEditing = false; + hasSuggestionsBeenShown = true; + suggestionsHideTimer = null; + }, SUGGESTIONS_HIDE_DELAY); + } + const parseCache = update.state.field(json5ParseCache, false); if (!parseCache?.err && parseCache?.obj !== undefined) { hasUserContent = hasCustomContent(parseCache.obj as JsonValue); } } - // First, expand `: {}` / `: []` patterns when they appear + // First, auto-complete `key:` to `key: "",` + if (!isUpdatingFromEditor && maybeAutoCompleteKeyValue(update)) { + return; + } + + // Then, expand `: {}` / `: []` patterns when they appear if (!isUpdatingFromEditor && maybeExpandEmptyLiteral(update)) { return; } @@ -962,7 +1095,17 @@ // Set new auto-save timer autoSaveTimer = setTimeout(() => { - // handleSave(); + const parseCache = editorView?.state.field(json5ParseCache, false); + if (parseCache?.err || errorMessage) { + autoSaveTimer = null; + return; + } + if (editorView && getLintWarningSummary(editorView.state).hasWarning) { + autoSaveTimer = null; + return; + } + + handleSave(); autoSaveTimer = null; }, AUTOSAVE_DELAY); } @@ -995,6 +1138,10 @@ clearTimeout(tooltipTimer); tooltipTimer = null; } + if (suggestionsHideTimer) { + clearTimeout(suggestionsHideTimer); + suggestionsHideTimer = null; + } lastSerializedData = null; lastSerializedText = ''; editorView?.destroy(); @@ -1008,6 +1155,7 @@ generatedId = ID.unique(); hasStartedEditing = false; // Reset editing flag for new document hasUserContent = false; + hasSuggestionsBeenShown = false; // Reset suggestions shown flag for new document } wasNew = isNew; }); @@ -1023,6 +1171,7 @@ lastSerializedData = null; lastSerializedText = ''; hasUserContent = false; + hasSuggestionsBeenShown = false; // Reset suggestions shown flag when switching documents // Capture original data snapshot when switching documents originalData = $state.snapshot(data); @@ -1198,8 +1347,10 @@ {/if}
-{#if errorMessage && !loading} - +{#if !loading && (errorMessage || warningMessage)} + {/if} diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/sonners/error.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/sonners/error.svelte index 702028ed9..fee93e586 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/sonners/error.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/sonners/error.svelte @@ -3,13 +3,17 @@ import { IconExclamationCircle } from '@appwrite.io/pink-icons-svelte'; let { - error + message, + severity = 'error' }: { - error: string; + message: string; + severity?: 'error' | 'warning'; } = $props(); + + const iconColor = $derived(severity === 'warning' ? '--fgcolor-warning' : '--fgcolor-error'); -{#if error} +{#if message}
@@ -19,10 +23,10 @@ direction="row" alignItems="center" style="width: max-content;"> - + -
- {error} +
+ {message}
@@ -48,7 +52,7 @@ } } - .error-message { + .sonner-message { flex: 1; font-size: 13px; overflow: hidden; diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/sonners/suggestions.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/sonners/suggestions.svelte index e5f6723c0..db2ecadc3 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/sonners/suggestions.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/sonners/suggestions.svelte @@ -23,7 +23,7 @@ - + for suggestions From b197ab6c5463202dfcdb8a035684f636e1b26f20 Mon Sep 17 00:00:00 2001 From: Darshan Date: Mon, 19 Jan 2026 16:45:13 +0530 Subject: [PATCH 045/209] fix: bug with overlay height computation. update: unsaved changes warning. --- src/lib/helpers/unsavedChanges.ts | 39 +++++++++ .../(entity)/views/layouts/empty.svelte | 2 + .../(components)/editor/view.svelte | 15 +++- .../spreadsheet.svelte | 81 ++++++++++++++----- 4 files changed, 113 insertions(+), 24 deletions(-) create mode 100644 src/lib/helpers/unsavedChanges.ts diff --git a/src/lib/helpers/unsavedChanges.ts b/src/lib/helpers/unsavedChanges.ts new file mode 100644 index 000000000..481b423a1 --- /dev/null +++ b/src/lib/helpers/unsavedChanges.ts @@ -0,0 +1,39 @@ +import { beforeNavigate } from '$app/navigation'; +import type { BeforeNavigate } from '@sveltejs/kit'; + +type UnsavedChangesGuardOptions = { + message?: string; + hasUnsavedChanges: () => boolean; + onConfirmNavigate?: () => void; + shouldBlockNavigation?: (navigation: BeforeNavigate) => boolean; +}; + +export const setupUnsavedChangesGuard = ({ + message, + hasUnsavedChanges, + onConfirmNavigate, + shouldBlockNavigation +}: UnsavedChangesGuardOptions) => { + message = message ?? 'You have unsaved changes. Are you sure you want to leave?'; + + const beforeUnload = (event: BeforeUnloadEvent) => { + if (!hasUnsavedChanges()) return; + event.preventDefault(); + event.returnValue = message; + return message; + }; + + beforeNavigate((navigation: BeforeNavigate) => { + if (!hasUnsavedChanges()) return; + if (shouldBlockNavigation && !shouldBlockNavigation(navigation)) return; + + if (!confirm(message)) { + navigation.cancel(); + return; + } + + onConfirmNavigate?.(); + }); + + return { beforeUnload }; +}; diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/layouts/empty.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/layouts/empty.svelte index 5952613ee..b00e5696d 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/layouts/empty.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/layouts/empty.svelte @@ -94,6 +94,8 @@ onMount(async () => { if (spreadsheetContainer) { + requestAnimationFrame(updateOverlayHeight); + resizeObserver = new ResizeObserver(debouncedUpdateOverlayHeight); resizeObserver.observe(spreadsheetContainer); diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/view.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/view.svelte index cd78a6a82..528ad0311 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/view.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/view.svelte @@ -398,11 +398,22 @@ return afterCursor.includes('"') || afterCursor.includes(','); } + function isPasteTransaction(tr: Transaction): boolean { + return tr.annotation(Transaction.userEvent)?.startsWith('input.paste') ?? false; + } + + function isPasteUpdate(update: ViewUpdate): boolean { + return update.transactions.some(isPasteTransaction); + } + // Auto-complete key with empty string: `key:` -> `key: "",` with cursor between quotes function maybeAutoCompleteKeyValue(update: ViewUpdate): boolean { const doc = update.state.doc; let did = false; + const isPaste = isPasteUpdate(update); + if (isPaste) return false; + update.changes.iterChanges( (fromA: number, toA: number, fromB: number, toB: number, inserted: Text) => { if (did) return; @@ -1003,9 +1014,7 @@ if (!update.docChanged || readonly) return; // Check if this is manual typing (not paste, undo, or programmatic) - const isPaste = update.transactions.some((tr) => - tr.annotation(Transaction.userEvent)?.startsWith('input.paste') - ); + const isPaste = isPasteUpdate(update); const isManualInput = !isPaste && !isUpdatingFromEditor; if (isNew && isManualInput && !hasSuggestionsBeenShown) { diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte index f56ea88aa..3f701c0ab 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte @@ -38,6 +38,7 @@ import { chunks } from '$lib/helpers/array'; import { mapToQueryParams } from '$lib/components/filters/store'; import { expandTabs, buildWildcardEntitiesQuery } from '$database/store'; + import { setupUnsavedChangesGuard } from '$lib/helpers/unsavedChanges'; import { collectionColumns, documentActivitySheet, @@ -529,8 +530,26 @@ : []; $: showSuggestions = $noSqlDocument.isNew && suggestedAttributes.length > 0; + + const hasUnsavedChanges = () => + Boolean( + $noSqlDocument?.show && + ($noSqlDocument?.hasDataChanged || + ($noSqlDocument?.isNew && $noSqlDocument?.isDirty)) + ); + + const { beforeUnload } = setupUnsavedChangesGuard({ + hasUnsavedChanges, + onConfirmNavigate: () => noSqlDocument.reset({ show: false }), + shouldBlockNavigation: (navigation) => { + const nextPath = navigation.to?.url?.pathname; + return Boolean(nextPath && nextPath !== page.url.pathname); + } + }); + + { + if (isUnsavedRow) return; noSqlDocument.edit(document); }} - style:cursor="pointer"> + style:cursor={isUnsavedRow ? 'default' : 'pointer'}> {:else if columnId === 'actions'} - { - onSelectSheetOption(option, document); - }} - onVisibilityChanged={(visible) => { - canShowDatetimePopover = !visible; - }}> - {#snippet children(toggle)} - - - - {/snippet} - + {#if isUnsavedRow} + + + + {:else} + { + onSelectSheetOption(option, document); + }} + onVisibilityChanged={(visible) => { + canShowDatetimePopover = !visible; + }}> + {#snippet children(toggle)} + + + + {/snippet} + + {/if} {:else} {@const value = document[columnId]} {#if value} @@ -753,7 +785,14 @@ showHeaderActions={!$isSmallViewport} {showSuggestions} {suggestedAttributes} - onCancel={() => noSqlDocument.reset()} + onCancel={() => { + const firstDocument = $documents?.documents?.[0]; + if (firstDocument) { + noSqlDocument.edit(firstDocument); + } else { + noSqlDocument.reset({ show: false }); + } + }} onSave={async (document) => await createOrUpdateDocument(document)} onChange={(_, hasDataChanged) => noSqlDocument.update({ hasDataChanged })} /> {/snippet} From 10c2d864cdd5722e526f871f78e9d8f457515447 Mon Sep 17 00:00:00 2001 From: Darshan Date: Mon, 19 Jan 2026 16:49:30 +0530 Subject: [PATCH 046/209] update: don't use incorrect flag based gating. `show` is only for mobile. --- .../collection-[collection]/spreadsheet.svelte | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte index 3f701c0ab..6dbad7883 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte @@ -533,9 +533,7 @@ const hasUnsavedChanges = () => Boolean( - $noSqlDocument?.show && - ($noSqlDocument?.hasDataChanged || - ($noSqlDocument?.isNew && $noSqlDocument?.isDirty)) + $noSqlDocument?.hasDataChanged || ($noSqlDocument?.isNew && $noSqlDocument?.isDirty) ); const { beforeUnload } = setupUnsavedChangesGuard({ From 42a4353472df816bd3d0b185948de0a5a7787d16 Mon Sep 17 00:00:00 2001 From: Darshan Date: Mon, 19 Jan 2026 17:33:43 +0530 Subject: [PATCH 047/209] update: csv to json import. fix: responsive side spacing for header. --- src/lib/actions/analytics.ts | 2 + .../collection-[collection]/+page.svelte | 44 ++++++++++--------- .../collection-[collection]/store.ts | 2 +- .../database-[database]/header.svelte | 5 ++- .../table-[table]/+page.svelte | 2 +- 5 files changed, 31 insertions(+), 24 deletions(-) diff --git a/src/lib/actions/analytics.ts b/src/lib/actions/analytics.ts index 32613790d..5cdd78262 100644 --- a/src/lib/actions/analytics.ts +++ b/src/lib/actions/analytics.ts @@ -155,6 +155,7 @@ export enum Click { DatabaseRowDelete = 'click_row_delete', DatabaseDatabaseDelete = 'click_database_delete', DatabaseImportCsv = 'click_database_import_csv', + DatabaseImportJson = 'click_database_import_json', DomainCreateClick = 'click_domain_create', DomainDeleteClick = 'click_domain_delete', @@ -281,6 +282,7 @@ export enum Submit { DatabaseDelete = 'submit_database_delete', DatabaseUpdateName = 'submit_database_update_name', DatabaseImportCsv = 'submit_database_import_csv', + DatabaseImportJSON = 'submit_database_import_json', DatabaseBackupDelete = 'submit_database_backup_delete', DatabaseBackupPolicyCreate = 'submit_database_backup_policy_create', diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+page.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+page.svelte index 27df7291a..6dd438599 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+page.svelte @@ -8,7 +8,6 @@ import type { PageProps } from './$types'; import FilePicker from '$lib/components/filePicker.svelte'; import { page } from '$app/state'; - import { sdk } from '$lib/stores/sdk'; import { addNotification } from '$lib/stores/notifications'; import { Click, Submit, trackError, trackEvent } from '$lib/actions/analytics'; import { isSmallViewport } from '$lib/stores/viewport'; @@ -22,7 +21,7 @@ import { expandTabs, randomDataModalState } from '$database/store'; import { EmptySheet, EmptySheetCards } from '$database/(entity)'; import { - isCollectionsCsvImportInProgress, + isCollectionsJsonImportInProgress, noSqlDocument, collectionColumns } from '$database/collection-[collection]/store'; @@ -34,7 +33,7 @@ const { data }: PageProps = $props(); - let showImportCSV = $state(false); + let showImportJson = $state(false); let showCustomColumnsModal = $state(false); let columnsError: string = $state(null); @@ -50,32 +49,34 @@ } async function onSelect(file: Models.File, localFile = false) { - $isCollectionsCsvImportInProgress = true; + $isCollectionsJsonImportInProgress = true; + + console.log(file, localFile); try { - await sdk + /*await sdk .forProject(page.params.region, page.params.project) - .migrations.createCSVImport({ + .migrations.createJSONImport({ bucketId: file.bucketId, fileId: file.$id, resourceId: `${page.params.database}:${page.params.collection}`, internalFile: localFile - }); + });*/ addNotification({ type: 'success', - message: 'Documents import from csv has started' + message: 'Documents import from JSON has started' }); - trackEvent(Submit.DatabaseImportCsv); + trackEvent(Submit.DatabaseImportJSON); } catch (e) { - trackError(e, Submit.DatabaseImportCsv); + trackError(e, Submit.DatabaseImportJSON); addNotification({ type: 'error', message: e.message }); } finally { - $isCollectionsCsvImportInProgress = false; + $isCollectionsJsonImportInProgress = false; } } @@ -95,6 +96,7 @@ isCustomTable view={data.view} columns={collectionColumns} + disableButton={data.documents.total === 0} onCustomOptionClick={() => (showCustomColumnsModal = true)} />
@@ -105,7 +107,7 @@ direction="row" alignItems="center" justifyContent="flex-end" - style="padding-right: 40px;"> + style="padding-right: {$isSmallViewport ? '0' : '40px'};"> {#if !$isSmallViewport}
{/snippet} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/store.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/store.ts index 5c5a31cc1..9d57ecf08 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/store.ts +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/store.ts @@ -8,6 +8,7 @@ import type { Entity, Field } from '$database/(entity)'; import { isRelationship } from '$database/table-[table]/rows/store'; import type { TagValue } from '$lib/components/filters/store'; import type { SortDirection } from '$lib/components'; +import { entityColumnSuggestions } from '$database/(suggestions)'; export type Columns = | Models.ColumnBoolean @@ -56,6 +57,12 @@ export type RandomDataSchema = { onSubmit?: () => Promise | void; }; +/** + * adding a lot of fake data will trigger the realtime below + * and will keep invalidating the `Dependencies.ENTITY` making a lot of API noise! + */ +export const isWaterfallFromFaker = writable(false); + export const expandTabs = writable(null); export const showCreateEntity = writable(false); @@ -99,6 +106,25 @@ export const spreadsheetLoading = writable(false); export const spreadsheetRenderKey = writable('initial'); +export function resetSampleFieldsConfig() { + spreadsheetLoading.set(false); + isWaterfallFromFaker.set(false); + + randomDataModalState.set({ + value: 25, + show: false, + }); + + // Reset suggestion state + entityColumnSuggestions.set({ + thinking: false, + entity: null, + enabled: false, + context: null, + force: false + }); +} + export function buildEntityRoute(page: Page, entityType: string, entityId: string): string { return withPath( resolveRoute( diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+layout.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+layout.svelte index 52e5533ec..68ef3aa8d 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+layout.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/+layout.svelte @@ -31,7 +31,6 @@ rowActivitySheet, databaseRelatedRowSheetOptions, rowPermissionSheet, - isWaterfallFromFaker, showRowCreateSheet } from '$database/table-[table]/store'; import { addSubPanel, registerCommands, updateCommandGroupRanks } from '$lib/commandCenter'; @@ -73,7 +72,7 @@ expandTabs, spreadsheetLoading, randomDataModalState, - spreadsheetRenderKey + spreadsheetRenderKey, isWaterfallFromFaker, resetSampleFieldsConfig } from '$database/store'; import type { LayoutData } from './$types'; @@ -380,8 +379,7 @@ message: e.message }); } finally { - // reset value to 25 default! - $randomDataModalState.value = 25; + resetSampleFieldsConfig(); } $spreadsheetLoading = false; diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/store.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/store.ts index 07324f38d..f24ba21d9 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/store.ts +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/store.ts @@ -9,12 +9,6 @@ import type { Columns, SortState } from '$database/store'; export const columns = derived(page, ($page) => $page.data.table.columns as Columns[]); export const indexes = derived(page, ($page) => $page.data.table.indexes as Models.ColumnIndex[]); -/** - * adding a lot of fake data will trigger the realtime below - * and will keep invalidating the `Dependencies.TABLE` making a lot of API noise! - */ -export const isWaterfallFromFaker = writable(false); - export const tableColumns = writable([]); export const isTablesCsvImportInProgress = writable(false); diff --git a/src/routes/(console)/verify-email/+page.svelte b/src/routes/(console)/verify-email/+page.svelte index c70b0e2d3..2ae1ac034 100644 --- a/src/routes/(console)/verify-email/+page.svelte +++ b/src/routes/(console)/verify-email/+page.svelte @@ -12,7 +12,7 @@ const project = { region: 'fra', $id: 'appwrite', - name: 'Appwrite Project' + name: 'New Project' } as Models.Project; const progressCard = { title: 'Get started', percentage: 33 }; From 929b2104a769025ec8266d25379509e2dc3fd204 Mon Sep 17 00:00:00 2001 From: Darshan Date: Tue, 27 Jan 2026 16:12:14 +0530 Subject: [PATCH 052/209] add: filters. updates: misc. state fixes. --- package.json | 4 +- pnpm-lock.yaml | 35 +++--- src/lib/components/filters/content.svelte | 108 ++++++++++++++---- src/lib/components/filters/filters.svelte | 3 + .../collection-[collection]/+page.svelte | 5 +- .../spreadsheet.svelte | 9 ++ .../databases/database-[database]/store.ts | 2 +- .../table-[table]/+layout.svelte | 4 +- 8 files changed, 123 insertions(+), 47 deletions(-) diff --git a/package.json b/package.json index 6ea2d6195..1476b5b05 100644 --- a/package.json +++ b/package.json @@ -24,9 +24,9 @@ "@ai-sdk/svelte": "^1.1.24", "@appwrite.io/console": "https://pkg.vc/-/@appwrite/@appwrite.io/console@3ec199d", "@appwrite.io/pink-icons": "0.25.0", - "@appwrite.io/pink-icons-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@b92a389", + "@appwrite.io/pink-icons-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@8d6c666", "@appwrite.io/pink-legacy": "^1.0.3", - "@appwrite.io/pink-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@b92a389", + "@appwrite.io/pink-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@8d6c666", "@codemirror/autocomplete": "^6.19.0", "@codemirror/commands": "^6.9.0", "@codemirror/lang-javascript": "^6.2.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 03fdafea0..ab35dc9c4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,14 +18,14 @@ importers: specifier: 0.25.0 version: 0.25.0 '@appwrite.io/pink-icons-svelte': - specifier: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@b92a389 - version: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@b92a389(svelte@5.25.3) + specifier: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@8d6c666 + version: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@8d6c666(svelte@5.25.3) '@appwrite.io/pink-legacy': specifier: ^1.0.3 version: 1.0.3 '@appwrite.io/pink-svelte': - specifier: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@b92a389 - version: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@b92a389(svelte@5.25.3) + specifier: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@8d6c666 + version: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@8d6c666(svelte@5.25.3) '@codemirror/autocomplete': specifier: ^6.19.0 version: 6.19.0 @@ -320,8 +320,8 @@ packages: peerDependencies: svelte: ^4.0.0 - '@appwrite.io/pink-icons-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@b92a389': - resolution: {tarball: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@b92a389} + '@appwrite.io/pink-icons-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@8d6c666': + resolution: {tarball: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@8d6c666} version: 2.0.0-RC.1 peerDependencies: svelte: ^4.0.0 @@ -335,8 +335,8 @@ packages: '@appwrite.io/pink-legacy@1.0.3': resolution: {integrity: sha512-GGde5fmPhs+s6/3aFeMPc/kKADG/gTFkYQSy6oBN8pK0y0XNCLrZZgBv+EBbdhwdtqVEWXa0X85Mv9w7jcIlwQ==} - '@appwrite.io/pink-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@b92a389': - resolution: {tarball: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@b92a389} + '@appwrite.io/pink-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@8d6c666': + resolution: {tarball: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@8d6c666} version: 2.0.0-RC.2 peerDependencies: svelte: ^4.0.0 @@ -386,8 +386,8 @@ packages: resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.27.1': - resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==} + '@babel/helper-validator-identifier@7.28.5': + resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} engines: {node: '>=6.9.0'} '@babel/helper-validator-option@7.25.9': @@ -1970,9 +1970,6 @@ packages: resolution: {integrity: sha512-6r0NiY0xizYqfBvWp1G7WXJ06/bZyrk7Dc6PHql82C/pKGUTKu4yAX4Y8JPamb1ob9nBKuxWzCGTRuGwU3yxJQ==} engines: {node: '>=18'} - csstype@3.1.3: - resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} - csstype@3.2.3: resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} @@ -3928,7 +3925,7 @@ snapshots: dependencies: svelte: 5.25.3 - '@appwrite.io/pink-icons-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@b92a389(svelte@5.25.3)': + '@appwrite.io/pink-icons-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@8d6c666(svelte@5.25.3)': dependencies: svelte: 5.25.3 @@ -3941,7 +3938,7 @@ snapshots: '@appwrite.io/pink-icons': 1.0.0 the-new-css-reset: 1.11.3 - '@appwrite.io/pink-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@b92a389(svelte@5.25.3)': + '@appwrite.io/pink-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@8d6c666(svelte@5.25.3)': dependencies: '@appwrite.io/pink-icons-svelte': 2.0.0-RC.1(svelte@5.25.3) '@floating-ui/dom': 1.6.13 @@ -4031,7 +4028,7 @@ snapshots: '@babel/helper-validator-identifier@7.25.9': {} - '@babel/helper-validator-identifier@7.27.1': {} + '@babel/helper-validator-identifier@7.28.5': {} '@babel/helper-validator-option@7.25.9': {} @@ -4078,7 +4075,7 @@ snapshots: '@babel/types@7.28.6': dependencies: '@babel/helper-string-parser': 7.27.1 - '@babel/helper-validator-identifier': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 '@codemirror/autocomplete@6.19.0': dependencies: @@ -5238,7 +5235,7 @@ snapshots: '@types/react@18.3.23': dependencies: '@types/prop-types': 15.7.15 - csstype: 3.1.3 + csstype: 3.2.3 '@types/remarkable@2.0.8': {} @@ -5806,8 +5803,6 @@ snapshots: '@asamuzakjp/css-color': 3.1.1 rrweb-cssom: 0.8.0 - csstype@3.1.3: {} - csstype@3.2.3: {} d3-array@3.2.4: diff --git a/src/lib/components/filters/content.svelte b/src/lib/components/filters/content.svelte index c4a83c821..20f50a417 100644 --- a/src/lib/components/filters/content.svelte +++ b/src/lib/components/filters/content.svelte @@ -25,7 +25,8 @@ columnId = $bindable(null), arrayValues = $bindable([]), operatorKey = $bindable(null), - singleCondition = false + singleCondition = false, + schema = true }: { // We cast to any to not cause type errors in the input components /* eslint @typescript-eslint/no-explicit-any: 'off' */ @@ -36,11 +37,40 @@ arrayValues?: string[]; operatorKey?: string | null; singleCondition?: boolean; + schema?: boolean; } = $props(); - let columnsArray = $derived($columns); - let column = $derived(columnsArray.find((c) => c.id === columnId)); - let operatorsForColumn = $derived.by(() => { + const systemFieldColumns: Record = { + $id: { id: '$id', title: '$id', type: 'string' }, + $createdAt: { id: '$createdAt', title: '$createdAt', type: 'datetime' }, + $updatedAt: { id: '$updatedAt', title: '$updatedAt', type: 'datetime' } + }; + + const columnsArray = $derived($columns); + const isCustomAttribute = $derived( + !schema && + columnId && + !systemFieldColumns[columnId] && + !columnsArray.find((c) => c.id === columnId) + ); + const column = $derived.by(() => { + if (!schema && columnId) { + if (systemFieldColumns[columnId]) { + return systemFieldColumns[columnId]; + } + const existingColumn = columnsArray.find((c) => c.id === columnId); + if (!existingColumn) { + return { id: columnId, title: columnId, type: 'string' } as Column; + } + return existingColumn; + } + return columnsArray.find((c) => c.id === columnId); + }); + + const operatorsForColumn = $derived.by(() => { + if (!schema && (!column || isCustomAttribute)) { + return Object.entries(operators).map(([k]) => ({ label: k, value: k })); + } if (!column?.type) return []; return Object.entries(operators) .filter(([, v]) => v.types.includes(column.type)) @@ -104,16 +134,46 @@ const dispatch = createEventDispatcher<{ clear: void; apply: { applied: number } }>(); + function coerceValueByOperatorType(value: any, operatorTypes: string[]): any { + if (typeof value !== 'string' || !value) return value; + + if (operatorTypes.includes('integer') || operatorTypes.includes('double')) { + const numValue = Number(value); + if (!isNaN(numValue) && value.trim() !== '') { + return numValue; + } + } else if (operatorTypes.includes('boolean')) { + const lowerValue = value.toLowerCase().trim(); + if (lowerValue === 'true' || lowerValue === '1') { + return true; + } else if (lowerValue === 'false' || lowerValue === '0') { + return false; + } + } + + return value; + } + function addFilterAndReset() { + const columnsWithVirtual = + column && !columnsArray.find((c) => c.id === columnId) + ? [...columnsArray, column] + : columnsArray; + // For distance operators, pass the distance as a separate parameter if (isDistanceOperator && distanceValue !== null && value !== null) { - addFilter(columnsArray, columnId, operatorKey, value, arrayValues, distanceValue); + addFilter(columnsWithVirtual, columnId, operatorKey, value, arrayValues, distanceValue); } else { - const preparedValue = - column?.type === 'datetime' && typeof value === 'string' && value - ? new Date(value).toISOString() - : value; - addFilter(columnsArray, columnId, operatorKey, preparedValue, arrayValues); + let preparedValue = value; + + if (column?.type === 'datetime' && typeof value === 'string' && value) { + preparedValue = new Date(value).toISOString(); + } else if (!schema) { + const operatorTypes = operator?.types || []; + preparedValue = coerceValueByOperatorType(value, operatorTypes); + } + + addFilter(columnsWithVirtual, columnId, operatorKey, preparedValue, arrayValues); } columnId = null; @@ -135,19 +195,23 @@ addFilterAndReset(); }}> - + {#if schema} + + {:else} + + {/if} - {#if column && operator && !operator?.hideInput} + {#if (column || (!schema && columnId)) && operator && !operator?.hideInput} {#if column?.array} {#if column.format === 'enum'} - {#if column.format === 'enum'} + {#if column?.format === 'enum'} - {:else if column.type === 'integer' || column.type === 'double'} + {:else if column?.type === 'integer' || column?.type === 'double'} - {:else if column.type === 'boolean'} + {:else if column?.type === 'boolean'} - {:else if column.type === 'datetime'} + {:else if column?.type === 'datetime'} {#key value} {/key} - {:else if column.type === 'point' || column.type === 'linestring' || column.type === 'polygon'} + {:else if column?.type === 'point' || column?.type === 'linestring' || column?.type === 'polygon'} { diff --git a/src/lib/components/filters/filters.svelte b/src/lib/components/filters/filters.svelte index 4b504a705..6a9e7d359 100644 --- a/src/lib/components/filters/filters.svelte +++ b/src/lib/components/filters/filters.svelte @@ -28,6 +28,7 @@ export let enableApply = false; export let quickFilters = false; export let analyticsSource = ''; + export let schema = true; let displayQuickFilters = quickFilters; const dispatch = createEventDispatcher(); @@ -186,6 +187,7 @@ bind:distanceValue bind:arrayValues {columns} + {schema} {singleCondition} on:apply={afterApply} on:clear={() => (filtersAppliedCount = 0)} /> @@ -243,6 +245,7 @@ {:else} Filters @@ -169,7 +170,9 @@ size="s" /> - +
{/if} - + diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/+page.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/+page.svelte index 865cdbeff..47776029f 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/+page.svelte @@ -44,7 +44,7 @@ case 'tablesdb': return `Create, organize, and query structured data with ${entityTitle.plural}.`; case 'documentsdb': - return `Create, organize, and query flexible data with ${entityTitle.plural}.`; + return `Store, manage, and query unstructured data with ${entityTitle.plural}.`; } }); From 72e488943dc9fc2e3844ba94b39817e67f45634a Mon Sep 17 00:00:00 2001 From: Darshan Date: Wed, 28 Jan 2026 19:01:02 +0530 Subject: [PATCH 057/209] Merge branch 'main' into 'feat-documentsdb'. --- package.json | 2 +- pnpm-lock.yaml | 25 +++++++++++++++---- src/lib/stores/sdk.ts | 4 +-- .../databases/create/+page.svelte | 8 ++++-- .../(entity)/helpers/sdk.ts | 22 ++++++++++++---- .../table-[table]/columns/+page.svelte | 3 +-- .../databases/empty.svelte | 6 ++--- 7 files changed, 50 insertions(+), 20 deletions(-) diff --git a/package.json b/package.json index 1476b5b05..35305e793 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ }, "dependencies": { "@ai-sdk/svelte": "^1.1.24", - "@appwrite.io/console": "https://pkg.vc/-/@appwrite/@appwrite.io/console@3ec199d", + "@appwrite.io/console": "https://pkg.vc/-/@appwrite/@appwrite.io/console@726b5cd", "@appwrite.io/pink-icons": "0.25.0", "@appwrite.io/pink-icons-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@8d6c666", "@appwrite.io/pink-legacy": "^1.0.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ab35dc9c4..a16c6df6f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,8 +12,8 @@ importers: specifier: ^1.1.24 version: 1.1.24(svelte@5.25.3)(zod@3.24.3) '@appwrite.io/console': - specifier: https://pkg.vc/-/@appwrite/@appwrite.io/console@3ec199d - version: https://pkg.vc/-/@appwrite/@appwrite.io/console@3ec199d + specifier: https://pkg.vc/-/@appwrite/@appwrite.io/console@726b5cd + version: https://pkg.vc/-/@appwrite/@appwrite.io/console@726b5cd '@appwrite.io/pink-icons': specifier: 0.25.0 version: 0.25.0 @@ -311,8 +311,8 @@ packages: '@analytics/type-utils@0.6.2': resolution: {integrity: sha512-TD+xbmsBLyYy/IxFimW/YL/9L2IEnM7/EoV9Aeh56U64Ify8o27HJcKjo38XY9Tcn0uOq1AX3thkKgvtWvwFQg==} - '@appwrite.io/console@https://pkg.vc/-/@appwrite/@appwrite.io/console@3ec199d': - resolution: {tarball: https://pkg.vc/-/@appwrite/@appwrite.io/console@3ec199d} + '@appwrite.io/console@https://pkg.vc/-/@appwrite/@appwrite.io/console@726b5cd': + resolution: {tarball: https://pkg.vc/-/@appwrite/@appwrite.io/console@726b5cd} version: 2.1.0 '@appwrite.io/pink-icons-svelte@2.0.0-RC.1': @@ -1809,6 +1809,9 @@ packages: bidi-js@1.0.3: resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==} + bignumber.js@9.0.0: + resolution: {integrity: sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A==} + binary-extensions@2.3.0: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} @@ -2685,6 +2688,9 @@ packages: engines: {node: '>=6'} hasBin: true + json-bigint@1.0.0: + resolution: {integrity: sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==} + json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} @@ -3919,7 +3925,10 @@ snapshots: '@analytics/type-utils@0.6.2': {} - '@appwrite.io/console@https://pkg.vc/-/@appwrite/@appwrite.io/console@3ec199d': {} + '@appwrite.io/console@https://pkg.vc/-/@appwrite/@appwrite.io/console@726b5cd': + dependencies: + bignumber.js: 9.0.0 + json-bigint: 1.0.0 '@appwrite.io/pink-icons-svelte@2.0.0-RC.1(svelte@5.25.3)': dependencies: @@ -5633,6 +5642,8 @@ snapshots: dependencies: require-from-string: 2.0.2 + bignumber.js@9.0.0: {} + binary-extensions@2.3.0: {} brace-expansion@1.1.11: @@ -6594,6 +6605,10 @@ snapshots: jsesc@3.1.0: {} + json-bigint@1.0.0: + dependencies: + bignumber.js: 9.0.0 + json-buffer@3.0.1: {} json-schema-traverse@0.4.1: {} diff --git a/src/lib/stores/sdk.ts b/src/lib/stores/sdk.ts index c2ff97c85..ff72486fd 100644 --- a/src/lib/stores/sdk.ts +++ b/src/lib/stores/sdk.ts @@ -23,7 +23,7 @@ import { Tokens, TablesDB, Domains, - /*DocumentsDB,*/ + DocumentsDB, Realtime, Organizations } from '@appwrite.io/console'; @@ -136,7 +136,7 @@ const sdkForProject = { migrations: new Migrations(clientProject), sites: new Sites(clientProject), tablesDB: new TablesDB(clientProject), - /*documentsDB: new DocumentsDB(clientProject),*/ + documentsDB: new DocumentsDB(clientProject), console: new Console(clientProject) // for suggestions API }; diff --git a/src/routes/(console)/project-[region]-[project]/databases/create/+page.svelte b/src/routes/(console)/project-[region]-[project]/databases/create/+page.svelte index f24c4dbe2..1445c38a9 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/create/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/create/+page.svelte @@ -12,7 +12,7 @@ import { ID, type Models } from '@appwrite.io/console'; import { type DatabaseType, useDatabaseSdk } from '$database/(entity)'; import { isCloud } from '$lib/system'; - import { upgradeURL } from '$lib/stores/billing'; + import { getChangePlanUrl } from '$lib/stores/billing'; import { currentPlan } from '$lib/stores/organization'; import EmptyDarkMobile from '$lib/images/backups/upgrade/backups-mobile-dark.png'; import EmptyLightMobile from '$lib/images/backups/upgrade/backups-mobile-light.png'; @@ -24,6 +24,9 @@ import Mongo from '../(assets)/mongo.svelte'; import { isTabletViewport } from '$lib/stores/viewport'; + import type { PageProps } from './$types'; + + const { data }: PageProps = $props(); let formComponent: Form; @@ -231,6 +234,7 @@
@@ -238,7 +242,7 @@ Upgrade your plan to ensure your data stays safe and backed up. - + {/if} diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/sdk.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/sdk.ts index 11d4c9d04..6a15d28e5 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/sdk.ts +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/sdk.ts @@ -169,11 +169,15 @@ export function useDatabaseSdk( const { total, tables } = await baseSdk.tablesDB.listTables(params); return { total, entities: tables.map(toSupportiveEntity) }; } + case 'documentsdb': { + const { total, collections } = + await baseSdk.documentsDB.listCollections(params); + return { total, entities: collections.map(toSupportiveEntity) }; + } case 'vectordb': - case 'documentsdb': - throw new Error('Database type not supported yet'); + throw new Error(`Database type not supported yet`); default: - throw new Error('Unknown database type'); + throw new Error(`Unknown database type`); } }, @@ -187,9 +191,16 @@ export function useDatabaseSdk( }); return toSupportiveEntity(table); } - case 'documentsdb': + case 'documentsdb': { + const collection = await baseSdk.documentsDB.getCollection({ + databaseId: params.databaseId, + collectionId: params.entityId + }); + + return toSupportiveEntity(collection); + } case 'vectordb': - throw new Error('Database type not supported yet'); + throw new Error(`Database type not supported yet`); default: throw new Error(`Unknown database type`); } @@ -201,6 +212,7 @@ export function useDatabaseSdk( case 'tablesdb': return await baseSdk.tablesDB.delete(params); case 'documentsdb': + return await baseSdk.documentsDB.delete(params); case 'vectordb': throw new Error('Database type not supported yet'); default: diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/+page.svelte b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/+page.svelte index 0c27a3c39..9def212f9 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/+page.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/columns/+page.svelte @@ -21,7 +21,6 @@ type ColumnsWidth, indexes, isTablesCsvImportInProgress, - isWaterfallFromFaker, reorderItems, showCreateIndexSheet } from '../store'; @@ -60,7 +59,7 @@ import { realtime } from '$lib/stores/sdk'; import { invalidate } from '$app/navigation'; import { Dependencies } from '$lib/constants'; - import { type Columns } from '$database/store'; + import { type Columns, isWaterfallFromFaker } from '$database/store'; const { data diff --git a/src/routes/(console)/project-[region]-[project]/databases/empty.svelte b/src/routes/(console)/project-[region]-[project]/databases/empty.svelte index 24318cbc3..da31219fc 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/empty.svelte +++ b/src/routes/(console)/project-[region]-[project]/databases/empty.svelte @@ -5,8 +5,8 @@ import { IconArrowRight } from '@appwrite.io/pink-icons-svelte'; import { Layout, Typography, Icon, Divider } from '@appwrite.io/pink-svelte'; - import MongoDB from './(assets)/mongo-db.svg'; - import MongoDBDark from './(assets)/dark/mongo-db.svg'; + /*import MongoDB from './(assets)/mongo-db.svg'; + import MongoDBDark from './(assets)/dark/mongo-db.svg';*/ import TablesDB from './(assets)/tables-db.svg'; import TablesDBDark from './(assets)/dark/tables-db.svg'; @@ -26,7 +26,7 @@ } = $props(); const isDark = $derived($app.themeInUse === 'dark'); - const mongoDbImage = $derived(isDark ? MongoDBDark : MongoDB); + /*const mongoDbImage = $derived(isDark ? MongoDBDark : MongoDB);*/ const tablesDbImage = $derived(isDark ? TablesDBDark : TablesDB); const documentsDbImage = $derived(isDark ? DocumentsDBDark : DocumentsDB); From 4d89a5ce9b31e100df163db54521ead2aaafa9e2 Mon Sep 17 00:00:00 2001 From: Darshan Date: Wed, 28 Jan 2026 19:59:26 +0530 Subject: [PATCH 058/209] fix: terminology and hmr bug, errrr. --- .../(entity)/helpers/index.ts | 4 +++- .../helpers/{init.ts => init.svelte.ts} | 19 ++++++------------- 2 files changed, 9 insertions(+), 14 deletions(-) rename src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/{init.ts => init.svelte.ts} (65%) diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/index.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/index.ts index b930cd9b8..6c29e7166 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/index.ts +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/index.ts @@ -1,6 +1,8 @@ export * from './sdk'; -export * from './init'; export * from './types'; export * from './analytics'; export * from './terminology'; export * from './dependencies'; + +/* `.svelte.ts` for runes */ +export * from './init.svelte'; diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/init.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/init.svelte.ts similarity index 65% rename from src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/init.ts rename to src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/init.svelte.ts index bae5ea68f..61d1d70e8 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/init.ts +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/init.svelte.ts @@ -1,5 +1,4 @@ -import type { Page } from '@sveltejs/kit'; -import { getContext, setContext } from 'svelte'; +import { page } from '$app/state'; import { type AnalyticsResult, type DatabaseSdkResult, @@ -11,8 +10,6 @@ import { useDatabaseSdk } from '$database/(entity)'; -const TERMINOLOGIES_KEY = Symbol('terminologies'); - export type Terminologies = { analytics: AnalyticsResult; terminology: TerminologyResult; @@ -20,15 +17,7 @@ export type Terminologies = { databaseSdk: DatabaseSdkResult; }; -export function getTerminologies(): Terminologies { - return getContext(TERMINOLOGIES_KEY); -} - -export function setTerminologies(page: Page) { - setContext(TERMINOLOGIES_KEY, buildTerminologies(page)); -} - -function buildTerminologies(page: Page): Terminologies { +const terminologies = $derived.by((): Terminologies => { const terminology = useTerminology(page); return { terminology, @@ -36,4 +25,8 @@ function buildTerminologies(page: Page): Terminologies { dependencies: useDependencies(terminology), databaseSdk: useDatabaseSdk(page, terminology) }; +}); + +export function getTerminologies(): Terminologies { + return terminologies; } From 8a8c2b07797776e0ec02083397fd4218fec7e43b Mon Sep 17 00:00:00 2001 From: Darshan Date: Fri, 30 Jan 2026 14:16:44 +0530 Subject: [PATCH 059/209] update: address design comments. fix: hmr bug!!! --- package.json | 6 +- pnpm-lock.yaml | 30 +++---- src/lib/elements/forms/Seekbar.svelte | 13 ++- src/lib/elements/forms/inputTags.svelte | 8 ++ .../(entity)/views/layouts/empty.svelte | 11 ++- .../(suggestions)/input.svelte | 11 +-- .../database-[database]/+layout.svelte | 4 +- .../database-[database]/+page.svelte | 9 +- .../databases/empty-documentsdb-dark.svg | 82 +++++++++++++++++++ .../databases/empty-documentsdb-light.svg | 82 +++++++++++++++++++ .../empty-tablesdb-dark.svg} | 0 .../empty-tablesdb-light.svg} | 0 static/images/empty-documents-db-dark.svg | 71 ---------------- static/images/empty-documents-db-light.svg | 60 -------------- 14 files changed, 221 insertions(+), 166 deletions(-) create mode 100644 static/images/databases/empty-documentsdb-dark.svg create mode 100644 static/images/databases/empty-documentsdb-light.svg rename static/images/{empty-database-dark.svg => databases/empty-tablesdb-dark.svg} (100%) rename static/images/{empty-database-light.svg => databases/empty-tablesdb-light.svg} (100%) delete mode 100644 static/images/empty-documents-db-dark.svg delete mode 100644 static/images/empty-documents-db-light.svg diff --git a/package.json b/package.json index 35305e793..905be349e 100644 --- a/package.json +++ b/package.json @@ -22,11 +22,11 @@ }, "dependencies": { "@ai-sdk/svelte": "^1.1.24", - "@appwrite.io/console": "https://pkg.vc/-/@appwrite/@appwrite.io/console@726b5cd", + "@appwrite.io/console": "https://pkg.vc/-/@appwrite/@appwrite.io/console@ab459aa", "@appwrite.io/pink-icons": "0.25.0", - "@appwrite.io/pink-icons-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@8d6c666", + "@appwrite.io/pink-icons-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@f5ea3d0", "@appwrite.io/pink-legacy": "^1.0.3", - "@appwrite.io/pink-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@8d6c666", + "@appwrite.io/pink-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@f5ea3d0", "@codemirror/autocomplete": "^6.19.0", "@codemirror/commands": "^6.9.0", "@codemirror/lang-javascript": "^6.2.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a16c6df6f..3e9b29741 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -12,20 +12,20 @@ importers: specifier: ^1.1.24 version: 1.1.24(svelte@5.25.3)(zod@3.24.3) '@appwrite.io/console': - specifier: https://pkg.vc/-/@appwrite/@appwrite.io/console@726b5cd - version: https://pkg.vc/-/@appwrite/@appwrite.io/console@726b5cd + specifier: https://pkg.vc/-/@appwrite/@appwrite.io/console@ab459aa + version: https://pkg.vc/-/@appwrite/@appwrite.io/console@ab459aa '@appwrite.io/pink-icons': specifier: 0.25.0 version: 0.25.0 '@appwrite.io/pink-icons-svelte': - specifier: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@8d6c666 - version: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@8d6c666(svelte@5.25.3) + specifier: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@f5ea3d0 + version: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@f5ea3d0(svelte@5.25.3) '@appwrite.io/pink-legacy': specifier: ^1.0.3 version: 1.0.3 '@appwrite.io/pink-svelte': - specifier: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@8d6c666 - version: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@8d6c666(svelte@5.25.3) + specifier: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@f5ea3d0 + version: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@f5ea3d0(svelte@5.25.3) '@codemirror/autocomplete': specifier: ^6.19.0 version: 6.19.0 @@ -311,8 +311,8 @@ packages: '@analytics/type-utils@0.6.2': resolution: {integrity: sha512-TD+xbmsBLyYy/IxFimW/YL/9L2IEnM7/EoV9Aeh56U64Ify8o27HJcKjo38XY9Tcn0uOq1AX3thkKgvtWvwFQg==} - '@appwrite.io/console@https://pkg.vc/-/@appwrite/@appwrite.io/console@726b5cd': - resolution: {tarball: https://pkg.vc/-/@appwrite/@appwrite.io/console@726b5cd} + '@appwrite.io/console@https://pkg.vc/-/@appwrite/@appwrite.io/console@ab459aa': + resolution: {tarball: https://pkg.vc/-/@appwrite/@appwrite.io/console@ab459aa} version: 2.1.0 '@appwrite.io/pink-icons-svelte@2.0.0-RC.1': @@ -320,8 +320,8 @@ packages: peerDependencies: svelte: ^4.0.0 - '@appwrite.io/pink-icons-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@8d6c666': - resolution: {tarball: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@8d6c666} + '@appwrite.io/pink-icons-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@f5ea3d0': + resolution: {tarball: https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@f5ea3d0} version: 2.0.0-RC.1 peerDependencies: svelte: ^4.0.0 @@ -335,8 +335,8 @@ packages: '@appwrite.io/pink-legacy@1.0.3': resolution: {integrity: sha512-GGde5fmPhs+s6/3aFeMPc/kKADG/gTFkYQSy6oBN8pK0y0XNCLrZZgBv+EBbdhwdtqVEWXa0X85Mv9w7jcIlwQ==} - '@appwrite.io/pink-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@8d6c666': - resolution: {tarball: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@8d6c666} + '@appwrite.io/pink-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@f5ea3d0': + resolution: {tarball: https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@f5ea3d0} version: 2.0.0-RC.2 peerDependencies: svelte: ^4.0.0 @@ -3925,7 +3925,7 @@ snapshots: '@analytics/type-utils@0.6.2': {} - '@appwrite.io/console@https://pkg.vc/-/@appwrite/@appwrite.io/console@726b5cd': + '@appwrite.io/console@https://pkg.vc/-/@appwrite/@appwrite.io/console@ab459aa': dependencies: bignumber.js: 9.0.0 json-bigint: 1.0.0 @@ -3934,7 +3934,7 @@ snapshots: dependencies: svelte: 5.25.3 - '@appwrite.io/pink-icons-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@8d6c666(svelte@5.25.3)': + '@appwrite.io/pink-icons-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@f5ea3d0(svelte@5.25.3)': dependencies: svelte: 5.25.3 @@ -3947,7 +3947,7 @@ snapshots: '@appwrite.io/pink-icons': 1.0.0 the-new-css-reset: 1.11.3 - '@appwrite.io/pink-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@8d6c666(svelte@5.25.3)': + '@appwrite.io/pink-svelte@https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@f5ea3d0(svelte@5.25.3)': dependencies: '@appwrite.io/pink-icons-svelte': 2.0.0-RC.1(svelte@5.25.3) '@floating-ui/dom': 1.6.13 diff --git a/src/lib/elements/forms/Seekbar.svelte b/src/lib/elements/forms/Seekbar.svelte index 7fa184e8e..3105055ef 100644 --- a/src/lib/elements/forms/Seekbar.svelte +++ b/src/lib/elements/forms/Seekbar.svelte @@ -16,6 +16,7 @@ snapThreshold = 3, disabled = false, id = ID.unique(), + extraBlockStart = false, onchange }: { min?: number; @@ -29,6 +30,7 @@ snapThreshold?: number; disabled?: boolean; id?: string; + extraBlockStart?: boolean; onchange?: (value: number) => void; } = $props(); @@ -164,7 +166,12 @@
-
(&dtL85yVc#CIavKfATqH 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 NqhjbC=_%_@L$}0Ev_4r2u3atyWpqgxjX= z-iut1G2oWB9sw&ioP61_6OMmmI=`IoQv8SfG{z-ZxiG{!rY#d+WlQ0I<^L3Yhrf}2 z<056uP>uv+qvE%1>by-`QwCr9gz!o5^XF^+Pv^#f_|Z3?OJhD6MBcBQklgQ+vt32dw{;yI$7audJA7Uu0uGW#PD~OtKFLovvI*;Y0J)g z^j=u*fZ96(wJ`z52&*x}K3Cx0_N05FJ@9M9~qdk|^s=mdEXIc9RtvLul8A=u-V~;Q;F8HXf=Ze`$Z8ZsI@Z zCXmlp*;2zf{>g_ma2AQG4MzsYueoQPv2lHi+gz_R=RNY8+ZU<2FA2E8u4T<~_jH#p>UhO6DG~k+?CRhLwr?(zWE; z&BN{k#%Z8=BrE?LH&2-mVX*uk7PWFcD5M|KIT&J2h#@?eEDS!Z*Tyqacy;#Ka(vF* zK;=47zinba$lBxBVi6aI)07zI8u$6|^Sb^YM^eV*(u99IqwA4y(bFaqpZnSc{?NUh zTi@-k=r~~wK!I+L3>Q0lQLj5s*xp!qWQNAdVK4jw-Omyui(3_+*F3^?jp4uIMmoj+ z{BQqH7C~ZU6YiW-xcg@JLGm$szT#r260oKn0XbW*BGEQ6V4RHF5HwALV^Ur~?+)~) zSp^)}w(Oii<3W}6Kjxhs)nRzzZpZaFZSnVGsB_76KfA=$(Fk9g;1CtJV!yH)wGOam{u zMxtY2=UvLaar&D75m*1*`cM4N!}?tDf9D0CyL@f;xBj|`@S0<9x&rrlxdm)o zz8zaG_4r% zH!ziDsj)xWo*Lw3mWB=)Yu(bTc<3ej$?(BIlw>pgC{yGY`@2FLBjz6ydT0mA_kLa~8^n zniu9A%<&38GP6RqB@=cYBFiyFy-Rv@{$ZToH?!4G!xs}{fMb$lo&z#Fe zTNsFMC_{J}W8&;OV-2GSbSxeV(y@7qPwf@bmpMk~S#SjAhHBO~k?Z%D+9*4+H`>xk zPR`f7==ia6DxX$YeDvrcvD@>JS54^S8~#60XZ8K!l{1y^kUZ6SKf zjs94DmyQph4M(cMEB>+P@{zY?s~@Y47us0(c;?Dw>!KirT=M$|&#%&|_yE+ivmRtk z3e>OQ(sA1O=C6_eq4H?o=BhEf5jNHnUofBKg$H#!<^mtT+s^Qjcrep0N5!fkP!#Y# zCJ6F+Q`g9=0n59Fn-xZTBaY(}>(KiDoU8i7I?51w-J5;G69oTZ-1pE)TK?Bs!`C@G z|Ih1H6NF9f;CW2W8kkj|%lR058YQr~hV&jd7P%KFWdr%DYF9^^1SRzncH4f#NOym%alFEB~i+y67O@c&Y!B zen~|UhtwDfFo0O2YTQdtNjG7+CC>SY|2?l~p@ER&%sMO9eDc*i>4R{-$0}_C4_!xa29$rPsCz4IlF6j|5*>9cH$s%8#o*Sf2)o zp=RpjX5Q?@km*mDYCdeaZ-yhwM$}yy2plCkGW&ii%#{I`lxil z3qgra7C~ID%uQpK6qQ&4dy_KwYJeA)#&CGaQ;$M>mwT6zAl6VBi-gc6b_#^3s zkpBw)rL$rq!9*IL;xLKbApaBx%|$oga|1}{HW&QUT`boE9+wk0Dg7>WOA9G3P=40p z;AX=G{*8%8=X}SUc7otP+Y9WH5(j-QTLqIg^wl`0j9jXO#BN%#rFxc6PeEY0rs60a zGl!cNhKiL>4!Gif;`{SqY@sQT*N2@6&2u$bJKxyYf{7gYe||HgKX;zF5D-bGloNe& zjGx2)JU1q^b|J=|^zT@A{1@kL-xB}blk*vHTLcHqRmop%p*Q?i{%ia4EB@VZfBy~t ztDnTb_KR=$2k~lhRo;=67Xt7?n*%WS<*L!@)ww1I&uIStv{I}kRTcz`#Bk_%5oWXL z5;yKpTlD8a-o#Y3;|3>vF!Qt51bY!yvPx}TWVc<}A`os0=N*E#;JI2b9*_E$+vJK&Oek!~|pdGx9$d zieaDU`l0@PIQ8f}YP;!+eL9V+q4}wGGK;|p;sjHzapM<*axU1|xe0@EISVJCu_~s3Omt4vE|Ct9HQ*zY3{txPwz_de=*A57FQ)U{!6n~JUAy2xbT?And1%}cemr$zK_@rf&UpSLiK^zIPveJ z>~)3L{}8&FIuf^vf7&~1I@Xhlu{1b_k*AJ!^4-xU2131; z8I-~inzuC1!0c2VJ~Bx4<9c<@tqs#_l0FxE{m=KDSZ>z3{5S}ULja75S2RzBcs6&l z@|5NOZg67E)?Iv!%W(4u(c|$UYc}Oj%|Yxdyq+UoPJfM2t^a+Vg?mDHD*N=RKVsDh zVYRYyg{9n({l5t5Cr8b_)GBH3fm>~?`e@$!=%!;`w6V--6iCpe0kDgy6=W5(X>wY4 za-o{TF)N|xAQJ-+9Z`i|f&ZTTU;O`7ro1#VJ#bomXJKPECp0D!q&P`dI<~ZESw`rGL?3;G zh?=lOy&*@k>0uH!>EEmEQ-qMayH^Yf1Q?rWJ$*hzZl5DAl+HUo6cv~2XMSp)n`C3!aRU~e8Y5OiNSj+nTZSeSe%9-OK}jfy zESh0@dh*ysFy|BW{0X_pJ0k~GU6#iJHl4+c5sMHi6R?l>GA|6|3JXj^|I&1_Fo zG(=%F`7Jh$WHcvQzhK_fZp&HEx$?K>m?}&xe) z)2yVF-#@JQ^s88R{KN3STo}TUihnR3?ru-PVByNd(&rHTcY^{a$5Q!KgXqRHTF%YK z_iwRSY+qm7^JiYsva7GkZ+S8~p@F1vQSv!4FkJVTGnT^a)Fboe2k$=@Fx7^+B9^_n z`P&=&re|r+NjB}`#G+WJu{|+V_-Fjc28r0QN&?6tGVDzEVNUyA|NqV%Alx0TGl~;B zAgDj}cAVses4e$g55{8Q_$^-N`&#tXoLWA$_yl>jIs%uv2FLEBkJ=J<`#6;Hyyk%u zOPzOWw4;0JIK---JvAtPG)F<~mo|b8=D6s&Q+oFGUW!dmqo4j`c^kuz4RP_0#7AP| zIs&)QY<)-Ic5GVA=NNS6;OC#h#)kp#d^_ab;?6lom6d)F@i{g|L(YeARn;-dT^DmS zCN-DWNyk3~8`@HEAK~$SCaU7$355$%F8IfqNnIQJ`M!R*uVbbaL*zx!Q*RS^(oKGgK#vH|tX=MaC;xWh2y% zz|Q|wdz1yCyysRD2W8vO&LhF6yW6F3JuUrX?t`GpAgn+yedU_gbc4?O{22a;gM`&b zY`d{;`!WM##01ZkUDt2_XO8JAj^&;~gv{}!*tGZy^_AM8eYpN_J47C3X&k_5=hwd< zbOM?tNPtVmKtub%Pf?Rawm+(ht!^TeZ+|+R0Pc5@} zSF(P7G>?|dGyA9SqiDG^aEou<|8twF9{K%-)c^YL|D)72&{J9YnzUHpt(0Lrnas_K znz;7Dn0KEDe-gWi0OX^PaZ3jc43%*oz0^~LuRp6HhbSa4|8J@U*v4iN=!M@7C5S zKA8ze^%j{Nap*m9eUS^F@>M)vNN~?v;uhC`{*tp6=(y;4kL?^f=Tb)t5qGJ?>22Jg zK9jRGu3u%Y@qjg0x_-Aq6Qjo?Rzbxg$}y(rZ@TTzb)y0cfA4YcpEZBDaTZDIbQM(3 zAF+Al-g0Kyrd*bi5N7P(kDD$v?~g6@*WneHx`=qwZR-l$?t%w4N9uJR`4<~*?PK+e zrB@sqPp^E#jL3?K$1|R|^2Rkcj(FsJ@O_@X;0cP)^pi)C_^1B(GIn0@KXS*v%6#$f z%u};|`WyZ!BQAX*a}uxi+~nLpA46X7&o(>mJ(tGv8AkrI1s^!hIq9L_6Vorqe8US;he2p(xS0r z*sgc?S^vi!|0qA?U-6%Y1(&t)uh>(;5Cc4>zODb?@lR}6y(eobYbs=LtN;5UmDV|5 z{MB9sF7;mFdB#Q0NWQI?-{M%?@Y6oe_r8%0%-Cd{&#~v2z$Wdfi{5Y(YX%?8+}@%a zSO1#-sheX7uD!|Gn3#vI!4jTVeE;Bne9Qk3Y0U9rcJMbnWQu6e< ze#zo;%-D(R)$C7ZIdr~Q|9fqiuYL!(*3uEb9I@l;_gy~Uh&sQK?A|rb@0M?S=b`I8 z9pmj2zQpOi*7*cHe``PE<(7+egFA7FyDxfbZM2=>HLCKZa%;krqkYDQx$0cC@lz)W zG?(?Oha|U3S|z*$ae$KZSjP5{KFvIBq#8dbgm(_cU9@zfVG)XD@LD86g5s92jxM)i zzVB?Ewgf)qyBy9@c_ySt-*AWcZCo9}5)0HJV{X7tTXakgmqX6;#P|mN69;XZ%+IvP zKNn$)*o78o`O+673Dtl?v9ZT4UuWvLd~&B|ly{}ZuvyoAY~I9seab38-rs0~RQ6MTkX>aEJu(+3>iM$xbrN5^|_S`^uWS}v6&26QrV4|=y6SWngAa5j;=Awf>f}iCy zs+udF=e*3PEM$(8@uNPfJXLzKe^{Hab6FX%uMq2LcvOEWSNY*_>Wklintj{oZrrW> zKWz~lXup~N5tlLc{Hw3^DL)U`9CjAGH<_6*R-{cp@+&<L-T*WZx-F~50TyTCh^5_ zMy3hs?Vn-xYOXT5U|a>s9zsKPv9G!AM~b~?m$XZ6f8F&;jyQ|A$bH^ zv)9H#Yy}ZZX5UzVtSg~hAbO?Fneqorj~Xu}|2G$wF3GX1W`N4Vwj-FwcKweLcp|mp z84Slr$a?7Ui{V>smzta0E?gSJH(zp+gHyc&@P`E;t3_=4lsrtJhkR z`P}7HpN>oIIp$RJp5{sNv$rX`6)(PCpw2sIsjic=!{Zb5Vdp4}7%$!l@1sA{uGB_| zOa3RH?ISfaEc_NnsV@S|ul34Y%nN7M#&~gg$1$VF%$HVzjbra)J~0-SCx{_mYf+xc zS%+az#;ExlU1tqsHQ*BN^|Z%I;36KB5&&?#>U3zfm zGh!edPS=T2P#?N8t#pE8M2K0Da7P=PVi5X8{+~9V_a}jhP|F8aREZr8;PY={A9*_| zV^%V)g3b#vODBt5@`iK)MKmClm1ES(oy?54-)Ezw^F zzkX)i!1UJw%*lbhjl5Pta3^XbsIcba(8y-oA#3vvt#EG~s$DHyjl0jyYb;{SlgOX1 zUW_Cdxwy!9`rQ&g3ytt`LU@GcFu4zzKJLZ?ZF9aMx83o7GXC!((ypKLweg{a$ts)% zhq;;4?r}cueCV5<lv*;x3WwTt2t7diG#8ECG%w9kv@LKiwdce+8Pzjk0z zqMgf0VTc<<44>qrUwtHwm|x3ZfMKU~rSBcT1>UETvGm9(5(-X7nx_{OH`DjU%3o?r zVQ%6dxaRzc|FV+`;QBsun5eHuuMTO2yL`4^w{ePsxP({pj?6)HLZ~(g3(dlua4-_^ znh2P+HP;6ki(wdJ9aZG#+E%-k3C=TP>}Z|eUQ0#Ur~+|oN9sJL=x`=$#FvCDGSe}i zL$K*Ho&tr4&yD|2{mQMWbJCtaaqzj||6W@;7t$E>bbsdWCNKP37g2^M+uuDVC3brm zqioR4Vm-K-o8!E`BNys=Qu7tDRTe?oz_~f6Tp!;zSW~zu94o`l>65Bm?)jhY${s_W zh{TQ;#`lC(_|L%q3cfYZo5*hUe=IKc3Lz7#o}Klmo~ypaU%OozpZaSyl?sX2*c5cZ zKR7orbAaYSiK)qFIg8^x*@q!2208wp_aAA0t^ZH^xi15e?5A$YVap-W1-eB70<`r;CjWPoLKEP zX8GEF0@uOH$9~+`|JbbtUSoH#y$AQ9rLou+#Sr&a{|6MC#D5GmCa0>qeC%9M>6)p7 z67L*b_DCGuWYyrA9+&zQy$shHu65SP51w>H)^EQ#*U$0M5A%+x65HeEqhiQiG;zEq zHqp=s7p;^gznLRuk=6^SLpC?E*C%kZ+k7ZL2;L5pOJMmXgIu4HRsGYSH1zivI--l1 z+wn5L);`aFT*$;#HIAK^F$(Ah&gFAS2tzY@^=dztB zeQv*y*ywvZ$`5^~Oy@T7*CR)<>^Rjp!ieu!gj?Nee(ZPJ zLmPWK3@BD};1dhMuc3LBBP)kj!pX8&O&kICme%H+?gJy9{I)}ur zWP}IPIHWkf2j1|1v6l(8WYbUM8xz=Ugn|EdL-P8%bvU`I#z@8-b3$z8p$pjNgW~hHy@TveMtv(|Bn6u{gl~%P}7F8H^jefM(6@> zOpQ;OKYb$M2wO-fu}s}hj~ZPU4CLyme0`3VJ!^#O3&pr%Dg{5-)v3`z6&mMr=kn$~ zz>>4o3FshVot);1d;Nc_v1g2m!_RP^TTx~D$>}ks0`~J-55w!eBW*wv25Xx{>xPa0 zt#9^Rh3M+nr>f0MaxPoe#(PLCx_(O?!;0NJLV)>$Z8Tfh5NTeO*J$YyRjXz5Z>T<^ zUj%>`&Oud1|MlOGa913g0?i{fYF!6wGS1KB(^&I9^QG!TozZgo%HVv|xl=D`etr5L zj6sE9<eFM$IF?%umTX;9oCD3dFivV74BO%`SIH-+ zkF0^%qcH(oj1xu4HH~1QuBXY7$dm9QQ=4qI`e({#^jguoFdxDx%6==fs}26<1GVVMoH(V^p3W- zB=b^sHLhN`R0$xKpByXCnZq$gL~c<1O`9I;#%)xSd1~sIW6txg)3nM;uGE~eP0Q(T zqntQRx3zbfv<(}szpLyZ_XtEp~-Gs?_iM0tbv@g{myre z$R0Vga)V8!rST@rG@UANb)xADCG6Y_5hJi+ZOq_hzuRVvI?RciiLV#`5fY?fW8MN; z0Xgf8TA+90L=J-SK%nW$Oz33qi2;_xiG`=1x%>(`KW-%1_=xS-*>@&ZHA78RT-svW zNGkBgF^{M;vW!*qnRb{Pt|5hw7LQt%&Nv~y(fapIhPozxgUDi^IUpWi7=M!Ua{}NKbmSiyhna3{z|dQ za%aww=@YZ=;NvIzv!36F$1=|m11&Q(F8z4?ep~#J3xN^S;wN-wBF`x9Ta)Z;1kKre zRa^>Bbi4vu@M`|=HG}063^ctT*G(P4zb>xyr=+)!zzt&ebvk2Q7Dso*_|mo=A4CZN zLoY7)*W$HvX3}QjGB4PbSc+k_CM`K%GK_^Kzj!fBPE+Zz{spPxI8E_i=XvAz$j@{q zwnA`aN=F8E=X#yzibL(fnoAUwcMJa|cLi!3IXP60p7UxTh46fp}ccc$n#4%V(|w%rzyqFM7i-JL7{H$Ffmx;Bt8=@WJA-nf;frZd!5vy5ED zSCyj7?OD=lT}LOh2%q`&g#h}s^eA6EddHZ1A%KL`WI7ibVRByb=bx*e5#wFm$fo)V zaRFsw&;2Ie8mG8DJKkpfe+i{+ds17qt^AA#Ng&?%HI)7ctJr(XnPbn>#)L7hVm%BbIM!&Y_9 zF}9dHcxSg$9`J|9XdetGn*V`V+`TXmyZ#59>@~mDO>ArN5(lbJHDueAQSsOOKkdlH ze{45DKmPeKo2c6}&X;N0J~{K&k#OSRM1_o99HHYf&<-7Tn|4)=C;4+^SkdjohH`ET z@^%EW46+ z)VwGq(T*Rld4RzU<1l{Y{-XA~by2>|2}1Cu9A#JE7-MUUJ|`;{=lcKS9P9+BGnmLh zXcL~|+>&)6$qJa7Jc7iDZxbg3TXg0mmew}?9E(nVt^}EhK}2CgUUeyZR)*Uo#YK?< z5vy+sK*O=-b5VuXEdc6FXt2~dO&-#EB$a8S6Pg3F3nY*bT1QKyxag>x?s_cfe3bfiU{Q4I;j9+F{mUb-iNJYBSTBF>L4Iv7(#yQEvd@EcWUAk6gZh@Sx9ITK+G+>vQ=^ zYh7!bIs8IrYmCk4dU#i2EQj8v^BEVwsuxolrjM`o&-e(e0idU}E-;LA;SI}q+UK@u zZS|t$gtjg&woTP?>oq@Xo&HDWr;{QipQT}0In85Fbc_29`y19g6Jhx1vMGf*CgZx= z=nvcHm|ws&VEA@TctUvCqxyQoe40)wRm~WlK%W*5W49b^CMd zZ{?LvFtVES;dz_$;bXF|j;U>ZLuAT8_lxjzI`5SE^zZm?(^7P1`{t$Av#!NZCGADA zKR0+Oo3-J%+^)E-GpcXlrfaaa?jCV^O#DxsDe1@uEUp@h^#dxvbTsGsrT!nbY3`VF zt?O>RQBB;5KF~TpM!O(3dTgF&gs3NT>7l$bH>Zy!N5;Scc$0(jE^{K|-PmO2|Mp=x z2hZ4&S?qSo(Rt1P%_^eT=53wBX|w9!_PMNitvcMUU&5sI9cT2S*mC2Ox^}r4Yq$*W zf_=mC9_P_@%frtVE3SjvK)r0AWjNqw(LPkK>A>mh=krHNX2|gRBlbC<^J7Qfb_>e3 zWxvFj`dYbv&36>XU+VqUU#-w!u+Vrb-YNMxH~ex|G@6{Mhl1Adl5S%ai($zxEmr9l zFwQ#3pZZoqgvF=Ehc6OfiuwX$KAaKo+L*qTQP1?|8n1{gPQP1RYb@V# zj&3^a4LW$u0_8$j`4t95wy)fW;bT$pnXlq6zxf5pb0#~K^TMvD_^Cc8m4`mq zqbLwJFmF^Mk|V}@*Wq@9?tUo#D}KH21B$7`bhF7gPdpWGVZ=k>$@zCA>DCL@ zmt)q$4vfd1D|N2Dk^oY8?N-=iN)<=Qx_yr9~)je~L^5DhO(Uax9L6U@#5$bM!uUgFhpFWC zmBt~u24;Sy6ku}te06^c4#5~Md{rL6!YCG3RPMDW;4u%{1hZ8>CiUshAP;hG<~Yn} zS`+Dp^o+Y1Ur~*M__sVK7&Y0^2G7QK%pTL@j|MlPh-()c)odUQO zxfsMSlUNUun|Q4Vvt&t!upK-W+u5`DkEPR7-27?7rw2==I~n?uLeuJLgE>83=4hJu zpB&RoL$8!(ThG%bv;Q)AA17kN#+U)(cYpQ#ZPfU3&D#YN?`f)l-vui=S?+Up`H!EZ z=zCG8<%&P@(tOnjiBaUu4(McxK^jX=>6h>jj*DmuGD&peOV#1qp`xg(#03D}UH{Ky zAMIMkGe!so<0``o$wvwYH@ z7-Eh%^xYVkLsY+75dP%zN2RQgvw42u?iBxq$Q=t<+7cJumVoaBcT#N1Vs7x9g}~{o zoYv=XB>;{sy1yO9Jr<+XL2Z0KXMaWb&iShEd%WiLn#cOo_Dl?Yd<#|VOt_D4WaFQ2 zex3#68z19H+W6O4@voibB{yh{Mci?G9XsVKd=+Y!dLrRt-KI4LR+K-rc9;NPv#AvG zm-tj2ZHx;RAA4aw`OW{KU!P2w_FB+guyV!!i1)bIvvk?-0W7Y_(RaaMQL{9dp$z;B z0I1aDp54%dR83VPz8^P3{6k#;X1|O!)kIXHR))3(#vV z1T_D34G?j`>&y9Zl)fGRGN7&-Zg{!fSSYFe74Rm2*u3(88UI>`dmcB{T7McfH8RMLOzE~ z?l~UzIYp*pJbco#lPF|xyo4Y zElzI-@&8u;uRJ9-UhDrc5$@KpE)KvqrBA!5uf)W!{htr!X13m7)qM=rg!INd>l;n@ zOO#zE=yaOv{l8*+`RV)GFE5aM{XE~tkWrT<*In^{i7BJK#9IH)KDU}_o>N`$hV`3X zZp~6oXSR7g-UN80?tCfpnu3>ac-7cAeM*MiOt}_`_oMUqE9m(?2EK0k^{*2#-gUmd z_3NSVH_S-4z@<)huD|!weaypuGB}@`eg>Iqnw16#e~I^aaXo#Y>%F=6quiOVDB1*aZ=Hbwl-mEIA!1VKJ>ATO2F42XFr)4roS6b~_Q8f?SM^~VwCcf}mQ z+`d7kx>Wyu8g&HI+nxUzViE6L^43SMKhu#t%;bYP`V4vvY8y-S(f~!7dIG-5O#9D( z%R_(9weNf|?o=6JK~m(mXw{6cuRLVP!XalLj3+K+QLABWmxUyi=JmNnlY$vdwFnn(7I zg?;nm%lHv1(R}oG1S?m`MAF>iqI{BBpg+IOZTWH$K!{F|sTvd#Vp)pcoS$Tf@Bs|} z@ULedl#k?u#mf&zgu#CnE!F+cQw#US&*pH?V;<|BNb@h4>G3b|sCYbFaN|gq;eIPV zC{6ph5_w^K*ns`M68PK@RAv08N)y148U6FV@pwN16FFrkuytNUwD8|?HTdDN1+SyW z8C1Wr$6WOT=9z$(TXd?a6Vn%=chWJIpQDZg6 z={NlMn_O*N#W1~Vs2v+&{qMHmMG>!gBmUMW*86#bFxDvP=H`$!IW_amJ-luoJ^zyn zJWt|F%~5$QEd2CIzGntHRflg{8=K_Ln}I!Ve~v$#^E3SR(K_U6zUJBD-osTPYm>4k zx6Q@<|0(|6_4>4waA7tjnBjACNH;_&(c}4Uf9Vwm>x$B>E1VRKz&UY$0?>jD59 z5J8?gNi}D`y#JotXY*R0WAS1PGjQROKAp@BS~HPz@?JCOxO#pa701u@ z>}DLS^03`_`!D=_+yDF1Aa54%a|La=$x-`D=1 z`hVtsw4S%IeYANVuRWI}jxVQ1`p0emk9p+`buiuGdf|ozE5g5PkvgCKlij8+c9~Ui z8<&T0vIL{|Ra#MCtrxT|$SeV;8x*EM3@gJ1uk)3I`p(F4ME7XN?&&Ot zhFJZZkf2X?=myHr*YwG)YRd)nl2_~|i1Y8;Qzl;>i|HZ%wEK&5M*r#Q>v-XX(TkVQ zJm_8WH|hDR#cX|_1CH79elKfis*ZM`uIlIC}kumv=H^RVRY_~OQk_rDE5 zIj|zho5jtoiEErK;TnV3M})Ng?heD|5sgfJVpQ!R(Y(igmWEwi+?L^ZJ?B8xIDL=* zzv0Rcy8Nbtw_1GG{nFcnbW^DpUxodXm}dO#>4R$=TI}%JHST~bm+iqshH$1>A$oDc z?Nw$@9kwl1aCw538Eg1w&&wRY)cei`vBpHn8@BxX_!C9=%El^Zp5I*e{)+ux7J%Q5 z`x9jEZRbM7is!+z+ZI3Xh0hFnH|M(*QJ9*sW86P8ZWSkQ#~XeE-?=g_ zTyZWZ_LYm`HqW_v;WF{}Iew2z z#x1ZHPr1(B;{0~#+@GGf;d)(uiBFD~BQC(4h{+{*(d`BQv6<>C{&C@x3!n8S;Fodd zSl{u#eYrKeU=FbOtwzEUf06qbmp?gl&Kk?6NDdYTS`5&*Ct9)Me^ay#6o9scuc}dK8$N!x}+5XMbxA^^n z|4|Dp>6zYE?Rbj~Z~L5Ae>ETcMQ6N`;nV6ecG%V3_I}** zcKIYP<4*tMn*SL`{3gH>_4QDBDe@TKxAp(Fp@XUhUHSh$u5vjsvfHSP=E2Nsjn(bt zU%j?sM{H;}aRjcfLr+shxfA#P~ zl#w$2pW{Omof9EJ9*`uLGI-so;pZB#5?8bWAa9qAXK;Vgh;>6P#(sYvXt3kF12Oe^ z29i6h0ZXDKsbo&)D;YdZK5J5&h?BsqekHr$>{IG@Rvp~Wb?u{`opHpw$UW-SCuh|2 zFE^6k7XZ&3%WRBxN(t;kc^4w@*oi@83}73jgIvEJRd?>IO^+b@s;Bmo^bG>h^NHap z&*SX(4?`Z6YHp=zzsAsO#!3HZU%CM#@He9I7@d5vNNKRG`d-^U#aMP9zcEpRnjB6~Cv?=fqv#oRe`Z-iH1q zLgy-q*VJKo^qSDU9o)9Bg^ z&g7g$#E4nW#6x?sF&A`YKxf45d2}iM5aNg9U;i*vSnoQr&$=9s6U}27Tm?(@{v?no zy+AIPgY)8km2nyyA$GbR_J=S-v6{oC{pxrJ5FRTv87w9P_gM<8jVetPNqv1t)sZ$n zyz6$kSmD;x82zlc-RcN;%E)*8dn_AvT9)&J;?<{r@M&_c9!_E0DgN^d{xfl@OY$-{ z3@gQ`6aShsdJfWcUU6kb*v5bJsPcXILZS5HxT5eO2%)FJ%f5ID#6l?G^V_w7VqAP$ z`d1C(H77T-n|pPnREF`G^0C7viQINf4#7fDO+DZG6fac6THP8A!T_&lmjn*qq~6{L2}`WDfin7bY?7 ztxG`4+K0}7{ATr-3e z|3OjQ$blbjyIKu55j6Fa;guvam2bbOa?d7 zZtHQK-y^rlme)Q1dz??)3H(PsyluMT_-n?&@KO3V4Y*l9VlcE8myKT4IXO?&Z*!bt z?C=NV1|%lFsT(f*%KD$W>K;H`eB%BnH;~KF(#%mKfARQ)?oIfZwa1wldm!QZ$Q9!l z^@;1^^GZKajQW5v<>Tc|{^03~nO*;f<(?3|;}+jwyxM#vztIP{cWaMFvF`b2@BfvI z-d7$z`*VEE>a3utaCCw$vY}F?I3SH+o`yPu^WlqC7&dBihK8m)qC53j>d^r~P^k47OnhB3SKPEQW-hV|jtYV?tR_2_r@|^&RF3vV%TO@e zU8|&YUA$6HRZ)ZbmNX{;oU=`w+0E`GPXO+_mwS__Levt=)hA0lmQ%CH;GI-E#Cp6K z1e42VE$TYaP5Xt=ik#>(+C!om{fm$an1cwXA6KlMv6|dFfnqp|Ka-^WhFO|VDqaFg zcvB~*9-LS-99L{uQf9nNpHAM;vC4*Ddp{2j((Lf0!9(KyR5hKrFSb!!z~%;V<rJ&!0X&vROFi92#Ho`y~0sCuGd*xK3$fQ7Rl3hFP}W z+?&_;_XXsUw_=^Vsf)=$n5fND8!MTk`u*`=*+6Wn9w~W3;#2X{N|h84XNQPCK@Lnd z8AZFkKJOJnzqSF0Yun`}kA-8a@lJs!b~LmGqdqHruI=U&cSvQA=lD<4Gj(Elxm1)| zNfty6$5i+quFd7vF!e6R96fbz=_}j}KYE1m%I&BrkW#Ldi=#8j1wCZI@_*{Mlvy}> zc=ls@RGgJx7W!j6*(9>{Rb>n{JdX#!`j0Lmew90_mu}t>pMgQx=f@sENgEnBu3WrX zqmF!I8$NwL&Gu5V@}^u-%Fe{7s{L%6`QL08b={IM@z>Q|9(vTKZD-zZ!rYw z0Czx$zj<5#=VcsR?F!=+#_X9d&0S!QAjWTU*`N7M2Mso*1f3|od0k{lZT;lR0c-PHvHWEH9m6$6E`GvU8H{3`aFwQW7;DAg2%_(kybz8 z+TLswk(#dxuN)iihsH_zsI_MD8Y|>nctB@u2L8Zr_J-(@eIAhbHgm$1wp`A^h;5bI zQ4-Q620wWGUGeYX-0k9;sM7Pl#{7}>hX2yN>v`eR8ne|2AoNlLxT~V7cA-BXc{gqcqr~H}6D7`6yy2jCjGnXrRu5bnO;8iNv#xp{*;9Yrb2X z`t|Dv}A}oT4fm?mipW;&RH5UqR1kZQ41SH-R|6{Dd zTb-9*@;@Nc6mHur&~~n+z4gaNSM*w<6aB@P=C=;?6k8O(^G3ewG748B$L}WV~>o9h|VA9^XHPMYQ9zH8ceyRPG}s= z`aiDm&TG2J2gnJo&LfOkgsH>LvT=5UiAv`X8vmE_;%X#Wot9d-k zmv4cPbxg<@dk{@yDbt~R;Npc7pt41(=6}&4CYPOSS_k)yDbtd3ptVLCA6vL|zmgU% zkT0hDWQ@zCB)ZN{7ss&!b|!9#0Qdaw{Pz-zH`UIC)S$wwmC0dLQ8s8X`~>3s4c_I2 zkMc_RShK(7+rQ!ejI(nxW2)w3HA(uc=B0;gULnnD?Pco&$(dUJH!rC@91XV`Ue^wO zq$wX!ui^yEIT~0@sQV?p5{hT#_(r7>jN_xbotljghF}1+JHr_jU|EPx;RH)j7rBUFv_cqvV1T z?O$CJcIn(W3{|~zcMbm;IjwDI9enQVCFG;$lZl7HljB-FHy~pEUXvi6b9s~ z>Q5c)x{O=#*R!hvlk;}7nei%Iq+uf5_c0@(2_vz=q<2st$0qLTJ?ix48U{=3PMD7I zbGKrr;eUv-MZN@?+XY3BQez`4;Nrb9arDoA6hg$=$GCVOlae|;V~R1fa9hU z<0TE;xE_;eYPLP5&u~TV!xR`6Vk83gWd|&hJ=LZ8qx93)yBzG|Vzk30k*NK4hdfOZ z2FtW8+84A#u5rY?la^`|UqJz><(kJdfw2vXmAT>mBKahq^F9J|VO_GxLE|e|2T#eJzzW9~priyfKYA*UgtII#hoj@Rk$37`TB( zWl0eyeZs~77MGu3`T2Rr$V7klTZIm~2%3j)PH)*7FJb3#rkehoTsS{#{x{BvJ$AS0 zc)aBQ0)TL&kKw}o#*@r#M(3=?Lt(cx3Vt>8m(*Qn&5ZxG;6A@Xu1BtouoSx|o@k@` zCo~VsJckmN@q1fO|3vI~uXw4C@EAdOf927@tiwC;NNix?F>2gA<3$*KR_>emUm?@) zDiAv$W3|i^D81p6qHd;PdQ3aC{vTIRK1vzebe1}`Y)+IeB4+SX+1_!Q&TFL?Qhg-0 zVsH%P9OiZ5FV$hfAXIN6XXgL5H()=k4b;!Q)j*M^e>ld}_HodiXC6S@-740^B_ z)SIs{{8xm3>;okKLt-gfrf>X#qvmbAX$Rm)Rs8pWrZ4@Y=ZN2rPEvQ(paAqCB;U*( z=o=rEdl**HyqwTY5a+gvaXpwj2hWXzxdU#qj8piB;y)(8Y`oODa#38zSMHH>xZ|&M z?fN%x<((Ro^!u^7=)6+4`6ONsU3a7c5?D2z+1oC?3+^>{H9nXi-o`h=f>&KPUmIiO zIYNR}E5S0bs9*_5&ZKa*S9nZVKy9Ig=O3Wx2+lhjO#0;Q|J1-cR{uRHh~r zPg7r!-E5=&_q?)v&?^H*+cC~LS7X%*DrX%PL*?g>ygzy&X+zoj7E_uNJ9L1Rv%N=L`|FrEx@de(PL&dp z+-Gy)aW~~of2y9uRo$W~)cq~Tgygw6z@`TV0nea>A3#CWgHE#!t7GYcnJ z@%-A(_j!m-*c*;hx7Ja{?|{nPN3?=2STUxjHf0px zo=60^cD+I;2Y_RZ53w~)pY9uT-YK7(cljdkBr!P1NFGl+FMd>po5_V2lb-6LR;%Av zZml-pbzjWi?3!^rWTWPsZQIsK`Vb()<45Bx)#ea9{l>(Pn$nU-J=A?+F|ZQ`pSYZ_ zDkqk$F`AM%m4vupeP(;rLQa%*C^DQryQ*?4(9KLJC0BwhMr|L6y@!NsfUTi)WU{+!`l1JX#sW zLY+&b;RI0JVBUc8AOLYOZw01RKEPjM1XOw_1S%&=frU&1)zm`u4VN6;^mo0azh9uKYkZSGA^ z$RK>L5Z2h62gfG%b+cIeE8cv=Ih&M{AT!v)sV0{XX9Vv@A+5rm~7C6+ANDk z4M>#~)crUVUG6I>kNN3*QXCAQFRM2wLa>#Un=kKYBywP6FsOd2aN#i}qbtg+`u`Fj zYQM(8!8QcTH~g0`AT^5SEpmCuc*lR`j>=undAh*oe8gdDyy9xtq6a|giga;#*Rh&t z4Pf=}?q+^sY^Y8-bgI}1)API=`CD>}Ydd6U8@^V|DGz*I{|B(}h>`y-Z-wcjVy4Zt zMxC|(jJsU1;QrM3DcPDM-A?j-Af#sVHlWfTiRyKdE>kWf5|ASc)j30fllKy1+jw#g6&2_9;0{0vDszR@i+^9b3c%8Em zgDX~k*f;iW-*hmScK*k}<2(pkB>GeP3Oy;(y?e__7Cu|zX&P7xI*R=4BUW1&XIdD9 z#;NyFJ4|k2#CVYU=#40hcUq(t&#F&LC%)#$1-bZZ;<$3i#POuM&Iihg)3riz<*Smf zbN76{;U6N%_15ter{%$f<|UWs`HJ|O5y=G*FgFaHkN2jk<|Ex~XpAc+k4#AZPpKnp z<69%5eh0LWAn`A{)@+6QE;YAbVxiJy$*2V?El&ih)*B@(kK=Ng3n=h<5uQ*M?rRL{Z)2I$}(*uj2d9Le`9%u8@9Anmdl;iWp zv0Se6Che`}JvVK);~z47&Bv@C6+f{0-&%QlP&2ZPTY|t!(zII++(?3+{TqQ z9f{-pZF1x~^E!tJFy?0d|9Q#(Z@9Ok=h`Q|Q5w|C>yYgWud$C;^FFNQr;e5KC1kpD z@uJrWjv>u&$`8sr7KiE}rvo(k$ z!CbPi^Cw0$H!i~Lt{?UHZQUMYE~@|6^}pnOwpH$fwb!_C{j%TcuV1TQ^;GK$-`v8G z1H56FYj4-*Hut|9=$aQHaR5dv^T&*Hexpg(NXWX``?>0)mN>1Zx`#7R{YUIwYa?8I zCW*w6#4{D2R%bAQU~ZUlelPofP##Xo72UpZqsI5zqk>#B9B^*J#-~OCJbArL449vu zUwu;CASA-67W?9wkDqBx@$0w_l_d`!=GK{OcdW4#cOIj}nbtZt?9};^ubcKEZLFqJ zKmKX=DIPlWdoIsdjnMaWmg4L!M}K>=Aua#3=A&aP$59lbi*hPI<$r7eQ3V}8lM8GKjm}NmA23>+W^lL_*FEB<0oTT zf>KE8#=4x%t=A?2+S9EXjFay2VyQ1eD?Df-1HKCAl2_*HylC8*ps0UNiCZzCTtu_P z7W&NX3632X6B~Q6rh^3rZEP_~ynN)_2s<&OU#+--M}XM~NMWXPF$!%=`*9^!C6IdE zPlABSx&3jEOOg*sRzJ7206e)&Jp>1W@drN=t0T^yUyG1tOO7@<@m=6gE}r({T;}G( zx$lH=as2OC)hA#H#bpES(#{g98)Z^X`KMJk{<^@l$Eg7{K~24$Rzcp5Ay=kJZPO&A zeyG=8v~;Un@x-Bok)n)8rHqzm#dzE2!CrB=628d+=O0hBGHe_IpRl^>xGqbEF|w%A)+@J`X#7)`Ak&{4FU)*F!)vYWH7OYw4Y1% zQodDreNGme)H5Z9WkYwwwJ!2+aZKAj(0rnG(oy8-o{pCb{yYC4V-+hLU$9ZJjGQhV zoS|cg?&|jt+*lvUs}aLZ8ecVKM`ncAdFN_M2W}p#PDe#0%LEqpA?#XaaTJ<|H1gGF zrB2r;Z6BPElJQxp1b{KY`}avV0f*R`BaY<8yy*wxHkMa}*JQ53<0z~1A`x!p`9d)4 zwdN^wT;s|*AD7wz*c+alk8+ER4_xpsPXI#vKI$Btw)*iob^L2NRr3m;axZTbmWn5c ze^|}WA@j1Xi5VW`;#>|H^@xwh8kyHK=`qd!7DbAcfg3wCp2s|veKlTm`xv&(xsskVXPTbh#5$*37$@#oCk*^w zv31;X>`cv-5$1QVtB-9H{`y(f0D16+TgrI!DsE573yZ^*S355fCvBUIv-}FV(O4XZ zii^j3UH_Y*Ph+K82*Lbl&ip8ly(lTb6pV6 z`D?wuormR;p3lOR>RYYiHWnJ=8k>9F#6G_99s61m|0y$Xs>ghgW@V9Xx7RoK7@Rjc zeZc1*KbzPae`4S9!=KOJ*8i%9VlH~zsfV6tUM<bsV1CoF*1L<2DcAaA%F%XBU1vH;@A>EG!QU8y|kZU<|O$`e>mScjc&0?$_H9 zs)`ySM%Dt%`n~D#7a(~5y!yFmC9nz$*L=tv{qaSAmF1g?@zVcBiYJIr3!y}cn1GO3 z%%@|Hgz)#Oo-UwPK@@MX6fb^NU7Y-_03SN&m@}5RSWD~F1sNRyEh1Gv`UcnIEt333 zO}yx+adb<-Z+=Rw0zgCK*qLIJli;0z95Wjyo9HA45xBX?xT6#7RbjWsPNL)0Hi@eJ zM<-pzOI=KH0wUrcSU~%aSOyq2L*FY_roJWe$W#1I{5|Jb_$3C|vSRD_}^a&)#yt z_an}vFg^-Z310|5|IWDnI(Fi6p23k9U1r=}ac21CI|%hWgo}-!kIdVonnT3Sr%P%) zIP({T~2)1q$zt#+Up3I(ykWQ8V z-9jB~T0T8LG5&8Gmv4RddD^8nWPs_N5qsT!#P(nCPtLvdbK9MB+aV+L1T^1KY~x<4(zq6f=Q|8h9~^CCkZ z{CH!M{1Ug1tUotY_WFHeWAm*0Q~iBQFCFC_l3E|%^anPcDsH3}|0AREKb`9`-|Bz$ z$JBSrRN1lMe~XdTr{BYY6Tr9i|6S%*v*u~mpqCN_Hx4fQ4WEjU0_Czx_ISE22AAZ! z;wBHCUz90xJ_r!NCD-WMDlc&~U$q9!)s|=1q)*)^2;dm`cHFoo#h==4*Zl5T+tK;I=B>w%OIz~rhj-isqJ-GxZvizX76OXIwZP92H09?gM?B4XvfmS$Cy2jo zWXz;7W$|1A+ySj*M*Z1F7Yu%|kIumr*hBvBbTk>Nz4yD4<*yhzt;J15$J0_n=6~8U zlZ~oi;2fM5OGb=-xWIUtEUi|7&}QNbSJy@T;_btMGx%S9v{ft+)GDKhJoXF!0mn*T%lSmhxIRs~m`NLQ-~}D05gbczd@8OrH^>yX?&x^pvlV*d zH>;n>q+N`mN9I_dS_}%4YmR>eTRT1lCUZM*sTePx*ZY1a^~}cSe#?0a&mDOw;(MeN zyVTYeYVy5bnlJdC^V@SOx=2tyaTvposW;oh{(eUL*TgyQJwK!KKj$FC?om&i{7?5e zZ&ZDtHdp=uAd$pR2w1!q=oN>+4O? z>T9{f@_+I?Abxu}+O7h6;<^T@wyL@E1bN4KwsY^{+rBBI`DEh1=YPb3HO=u#d#B#& zgY9C+>a|u=;_PugB4OfP=QTy{9si1>h5sMoKb9^D;?Fm;wTAk98ho6G&bwUuWzKnK z5b@Wu#b_f~6ge}WGY9DgJIGU|d#XP<#;gh0U&evH_qnezzu`iCAeK@+x$+%TF5z$M z|Gl`tOTMZ0^PJa;Sh-34srJbRcy7I?4qlIid~+csAE)W{YJ(wMbkbOb&QT0qo^zWI zW}E8!|C9Dc36>+FvRF{-u>b7;=l$=k@tc-_hyc~hwKY?HbfioY$RHq7s_uIZJXObW zp1FO&b2{t)k;#2Qx^muqzU$h(;-OgZ@A^L>bu#A*u48pGoA}l7CxrM*{m&uZ`5M|r zEU)~jID1-XuJG8nX+K59h{S}uSC(V$z6P?KHS**^2BPRD|vE4@AFrHI@%^3N3se6zY)rPJf6S6 z(&B(FUewNK9+-?Lu)Y1$_RpUyNPi2sk;4nkXZ)}B+-(zRYj|*H=5?V6h8MTB7%Gyj zUmMYJ>$@hEwxD%UyrtUk66-3ikc7(+YE-RK^xBq#6_0qAbM~ciT>|+%S-~1LLn-@@ZJ2*&s zt~Ful!_d)z7ef{9vw?fW@}XOAmX<(_Ej72ag^$7i%twt;x~W0M!YRCkg?U}9@))e| z;{P`e(*b1tH(vbsx9dZEk58Vn9;0i32P{2j%Z?Gri$#25NU_Ne=yu^3M`v7?fQzc) zFfIbCGhf?<)YyI&^Y1u3+h>s)^WdKCWTgWW3xl)lI;We4ztuB*IdA=Bw`BrQ?{Uo8 zn-GnIv5!>6r2pdn7xifmECPr%XZrm!{)6Lx@K$j!HD+7i`WBZ~$b0-(yP>9>pG?Jc zPMhJTpvVu(;WJY~u~c+bJw;B8A5bdhI9}$ICV+9><3Mfnm>gTDebrM_vm`vH@7S3Q z-N9h2JkSsKm;gWz36o`_>zuYS1o>i%v@wW%*8hxa>fd^glTZt(o+IWHivOheU1QT2 z9{)~+LH2X}lS(ZMN8T=x&scxN_B!u&^#|FM?_5Z2Gp+mFeVaXpc*eE4i0gY2US-Z- zEHvkG{a-X(JW%@L*Mntm{xx=L$5fAy+9wFBW))Waw}c?uqis~~0LF)-%wUG%KOj0> z^~0{`RjwRWT+y63CtbNyo#09{R)Gue|(JPFHc2T2R*{zIb8E~FvE^p$XACATf%5W z%=)$u%b`B|eD72c6(>`}mX6#8o!=@$0KE1do8A(bY$e)_ClBW@JmlAcfWG~yIygsy zaGlAV<8hAleelHb9QfY<8$a;=^gqXsZb&@}aFFvtqmCXnUZbxz>6_e#CGU89d~T{w zun^(CddIuP*CY)=h3L~0mjjSVJeY-0*@S(3fq0vpE1*~xE}DSf{1kTe1%C3?z0hM? zM%xnvSWganQKLr^nTOe`?QnQ*FK}Y%>raOW22(sq0Lcgx^!!@@?EmNQLN(s|NCIWY zK`0&66VO-eh*t_@Z=n|Edsu?M3qOF#Mhh^29}Hn7O`L@1i{YJclz4ia^kg#F5uBcf z>Q<5YjL%KH_-D)j4unbw$a!m378i(j`Ui7^%lD^>Sy}w(V&yJ~Lo_LF`J%(@Vj@ir zx8IxSBPVBA!V_~@=`lPX(Ae1H{d4?8{95Gdy{|cj1ai-9Og>4|m(rU^e&#LYN;zd> z;Q3y2nwYl$3kCA`U>BZ}oCsJk!JP8Se$8rhbR66qK1Xrf#HmuYb7L+qOzfY5eDcq| zK|~w3<@MnB=g6M85T0QUBdT<~CvX-xocEZ=l3?BOpE&Z2`mgybA^D$eX3II(E^w0hTC!9 zHLw`UbDOP;#6HCZ&3=DY92d9C@D<8$A^c!Q#ozx z4y49GTc0|=$$U!O?QtMsnBBZsR@%|P?QhmaOf9t-#~hbop_VHGp36y__+Mj5{Ij0Z ze#e^DL^Ef^*$G=;K;!ap5`Nymjxp7B)nFcLk7u>2n{a^MQ`98+93pSYc9 zZs&TSHGStJ*S&YH5Fd3cj`|-Ww|L{9AO8(wmVx$5Y3=#HRq4FPpLOo?IX@4_?Y$+H zw=v(=^Fj%VvGtIkG>95|-JEz2XdN`BSM+p4jB;}6(E#+&?K_kWZ`E*E0HzeF`8JeF|*k(mb2 zlHd`(!L5aHx(3~!7Ym*!cmez*Z2}ZmcF^`Su6>7+S#$vB>R-0F98Mkzj4O1|Z55bG zPQkaJfY5%iWuzBLaRg?VE~e`OZ?-HBmLa*pRt1oVqwfrQ;oQG|{Zm#>)M1KP-o)j^ z#u#C}bfRz)1}BxTLah3~njfSx0X+UWHc$eK_}HHjms}d0?*t3I@O>m2Ci;U8!gQNX zAx3x$KJw$+iW%}}NL&7EaRztYuO%xXD#yL@l8T9w0BFLJyJc%cs=nRyZMwBtoSjFf z4}G$}SH4_DGzg27AOf+tdE_b|d4JZa;#EV|xf>F1>nQGi&#woiZjZ!&b4zxIyDe;Z_fFHj?vMTe}>)YA83_~{lK^KOl<=79VJvPY}Zf|3(jR)P(m=k z^ZS_!F!AqHD)SykKMWIToI`Y&>-zRr2TWZf90(&Bhm768=L5zVj1UwcQ%-FXmjB-$ zE_Mfl8gIg@MH~riN`J=r5nd&GkND5BF;nuzD^4QT7Y5e`Aqd~@If~{H9=!R~ioK1K z#?g8J@VW7~`lkNMSz&^!yNd55pUUD9R^znjBmUdRO~l~E?3fm(S7wg0$9}$L1EX-X z^M7sT(nZEcaP-Y)fh;^}?%8*&S7D&kdoX?5MQ&L6f9f3GpfH;lcs07aZiKz3G`r;w zs{d7Fs19qY#{b_qPAy?1{uLJ-|491*;q!=pE-?hF9F8&m_=ofdK zN8yZgac*Uq)b0M>@C;1er6bqi;0=|^iN)y`l}{d14jkc5vIEYc`3{nfLyc2H)mQw> zc?Xq*LL4#_%hSs1f8K~;9lN*1|L6;fQ7A7k$%p6n2`I^9CFw2v(%Z)s`|LhOUHLuqb*8YgGgyik$T(tAQ$4=wC@^XD6-nlrSu1{W? z!{?yZHEcu8`O}``Pks0$uW@zg1`t05@rudZSb5@rTJ`0hLoenJsiE8VY+rzBLh>yu z^$xs@X|~@$&4A z3|5kOeDs_3f08~kr@3P6M<>cBK4}mmGteZNvzQQacWom-7ne{VhvWJ0{Xa*0Xz=+_7Q#ZlkIsF@$$$4B4lNRoO% zq9k(j*Muc*k@Mwi%zz|KO(0wL%)^yr1DYH>J6Efid8%9a5kQ#aFfwup?TrUNQj{N} zHs3M%DL-+6pm8pnN=^U`*VoWkqz3RpDq_aT5ix~tQh~ksq^`@*$MH|hElvuGeS$$h zFl>n1+rLJPDSpA!%4G;rcubP0YANwO376wPw||4V?cpCCu) z#OyurdG7I(G!0q+s6KV+_8;lN{dQyPM8`Iszdsa<2YrlG-dV7UoeMD- z|A~6z7w`=+e_+-^DPPt-^)!=FU@(w&uKH?B>t>o1d=2#I?`ipJP?Jj+jkl!2mK^kg zkM&N{Oml*tzu)sW?qU0xJIY7Iw=63HaSiwKwZJNHw9WCM_3yNl^L=FTrcY9w(OlO( z%E46wji2Av3CbODxQf>XqK4w9#>QZp$6l~tS@rYgS=so@RKAt`4;t^i_Gk=yOaR53 z|8^+#m;C>G{NvTPzH|KVx^m(_SNsEE@gJ;P(uV&lc*as+u}#JCNswsRESOLn6h4Tb zSuXQ;bDGs4%>V7vmXDqeZa*8@HD;&`@OXNCw7ia7Up0@t`g2pW{cBTY45Dkv+GCwL zj<3&#oX0nGmIsJ7y1U8R`V?u|HS#We5pyTRQK370vEyd zbqhY&OJQ|2v>qF1nZc;dXF_DnLE9V*=0gX@#M3q%XY*m=YU**f`;uSS5hQB{L|_xc{#IF}cx%6mEoR87>!%LqMR6F2lor9N%!F|ioX4?`oBhHZV2t!`QNZ!^Vl4m zyiZ$uWP_zV!hdSK8t33hid)XH5*GoBnR&oi`xIJ7#?zkRyQSk9)`% zzx$<%xo_U$n0xeCi{W&6)$P@>^hllq2wr-IETPOegS*m!iy^*7(SCB=KkfJ*Akw0H z$5%b5dj4f|MHTDD$#`%zHq84eglWN3kPiIg_HQ5Y_vsZlh~elPl1D2~)nuk%tt07u zBS7b%WDQOf-;&db(>GsoTdc!t&*mLmN3Q%|GB(CWX5**Fm|TapDxkbIZLfp5c5#PI zRbWEC`qpQ9{0EN_D^``?HXkq-<>5s3kN6MlM_TMh$XFURu~^cVAjQ_S!9XK7ro4*zgp>KFXU z<8VHN)F_%Bio{v{v1ZM!C>nywdsG1yGfq5Koj z82VxkpR=-)?dAIe`+$R-ss_|%c2-=<6ft%o=M`J}CY9v{ihm`g)^d&1vGFz)ZBn^% zZ%T}`o~hz>5XYtYjAa7&Ew>5BwY(g7XA%~^=$&c1A2f5=U6sxxRdLExj$HMJ95ipb-58ah7}&pozOpCt7@d=bFTw=}}Zf$ST?!!&^vhOmkJG-HFeRSXC#_S$NkJut{Q0H| z`ZdP*>{$QU(s#9w5TEVQb-n-c63ohe72JGd$m4? zOjGW%&N%U|{&4axxmA?KTRjZ4_3gSLld!^V3fx$_+&XbV7oD6R8~bh7^81pLT0|B3 zP^;hG2DmxnwF}R$PSv+AUKa1@MiIYBKn{HF25;qTedf=7y~djG4;#0}I3%YRqrV@{ zwJdiPMOAYY2Q)?b!>_F$O&z{M#VIqTa8)j;;<6d*v~@O~Sqr9CWuk1mdebM_r;e{A zy+ib8G^B74=MRf-i!UB-tXFO>d&XzLr6cpe#>g9A2;o%rKNq;nPk)lz@)0fH-%^@< zPdM-228b0HL7X`z#gU(J9J#JHZ%}%bf;^O~>N2Q4sPQybMrJs`nNJ!Vx%6+?Wm2$~efX3O|T{~vn`UNyuQ@9M2oXk}a6@}Ag_B}ertp%=dd z`Rr|zbu$JM5rpTdEhcB8<@AVTep2EpS>Su1_;w}57W_;6L%9jcX^tDtQRxH`I)vc5 z0zdsm-vnX2pWsp=P?%UYr|_C!_=1i9~a?%9$`N^pyp)7KVK`3nb_bl@|eEV zJjTNq#($f~^6jk943C1TM|Q>j760Rfkl59SgcJXu`v2m-@AwbE=IuUwu78XFMj&?l z)3vA^15}MTBBOHw^Kj*q%p0$q<~aYeoNk9}({yUPfMNLKxS{>xAnQ%p5Zi)cR9zdt zerm2AFJJNh$e;YfBU(buN-#P@wV4R}mj? zu3H@A#4<2-Qjq?lDb@qIBSxow3-e1VM&2gT|Gn3RldssU2jAqES1WDrHC*YZFJk_e z_;>pbmE`0%UI`6%_(Kk^AFq1DuUFT6b5rLdFs5v5%Xe8{Qn`4>Ry;~VDS}I%ujjhg zx$=fK6LbaR+tdWz$B-WpKI*NApnJKTsenflcV0!07!NBnMI(+py?&g_;@_ePjy#i*1|u4jGnoUI+`D z4_0aMA_eMY_mlOwmj88;U6< zi&6MleEl@xu1)Kbof`8~;2udW8It?}D$nuDCiPxhN>`N>=V08W@DyWb05x&MF8(ee zRbT#B|Q% z2!pQi(`B}~^xF%kF|Mxt$k;aS!bI40NL+TT^PJJJDN!(UQ2J{A@7{wQ?ZQpaKB3EN zkqUiFe_GPUaZneIqav$=YXt>4bI5+mkM<7YXeWqzsN%Ttl^`KzY>?evClTBBH4pQ~ zU&RV>$oe!c)&+cE$G_$O_gYU$CT4NRIY!%ufuUoKoY3Fj`0MGOJh@C$MCLl)2Pxf zmvHPRB%X^an-|E`;?M*?oETqDO!#r-f?V~Kw;y-sJHECE{?;znmCj$Css0!3B33AM zuKp$ddq}R8ILuz6pqnoEL>l{`c{xxh9Q2B->E_$8cTDeY4QcqdB(Tjvlso<((i8 zsn0n65wYt3irwOG-UQ;~D<_R@9{(vgPgAqFYH(_t-|~Ymw=6%?KCLC;JP0#y-=r~s zy?&8vF+;v{_!B=?gUHF!ZP!4lvHb)$GToLios#qprw8zF^|I@fLxVnZd_w(aeDA+= z9*C$yMtE$R`s7+4h4hNHf**7{qcTq3`xP(AFT>4?U0nZyWJ>-AwPl$q zt~UG1Iyg>4^(pxwwGD(KI;Ken^+(0@Pum?AktTBmzz->Uu+m=?p7|QCv;a!xQ;+4r z-0c6Q@XT;S;*6_1)XW!STk|SLhi=&4$1zgVQyj*7;d}pY0UR@dKcfG5lJ*gVYjNlK zIIh1q$&bX!HJuSS`Q+*!+CP9elJw%=2&*5qe+aIqe5D)-@E(@)?d1OBo4QzA*9bRrl#8H+C8u88<*Gh`oASXOXL zB{|8=AMmg~y&+n7qW`dx$~}SY8vxlP?VPb6ZV+_ASl=u#39ypPU|o}u@YQ>}tnoHH z?@Y+s-dOfNSp-KBY*-^(AKIX$O_UzSQ8{`_4tlZM$vDs(>@ql*$3lv`_FDy4T4pP~ zES3P(N9SN4Ax2VQ97o50O#DARgZgKmCscK+~kMmbS;!2a(vqK;Q&q!g!wv19x$7;I6fzzs@+Mk z+E}+iGY1P*@R!arzG89Zvx*rC+USH5-J}a}?j0V>A-W~i1~UeRlM|i1V$3p2b+c$< zqWEbL%yaYnI~JV(RnHD>Pl8Q46#qnb`fvjl>$$I$ACpA3U5a_9*k05y5h7RoJ0f+% z;);KC-_ctaP~|7-QFsoH-M#TMTmiesHK-cP`3vNaUDUGPy9@u zE4L-{#?;h3Ht0IX|Eo8t-XnKi(9q{NEpq9u_#p2fL z=elR&h|Bsj8&cvAJDj&#Za{p-^Bz6W*3)z6wE^LAHMPggZ_waz$QdvLv#u>$%lzn; z$~!Jg`DnV|%zsLW?Rbi37zqpBC<3A~vr)fKSDV`ZK(}r`JHEUa219nq$#d9|* z_L6n$KSXzMGRnbWVSwv?#=!KiIB9QCK2z*^iq%{^HYhx^s7HJ@I*xwqrw2;!3pVdu zcApYW_H~Yx{1;PO<=ES?J4%v2qV1V$YFACw*dK>a6t7*gu6PP~eqy;Gd=;kOEn!5T zdHgFz?)(pl{n})nnTN~|pO^lEJ$Q^_)oSZ7nG^qm%bLqw`%-S;{QSDHat7y@TP*U%if8Wx#s>)+qWkLWCs!j9u2?MYFUh@J;&Xxh9bO`4wED{9va&%-+Uu}_C)TR?zQNH zz~&1ot01Vh677jf0Cxe+8*NuS!`f?nyB?hk@x~}-bA0+&Th_%fG5AZ;PWfnTjFlL! zf)vdiqr+vR8Rr6M% zKqUou^+?wR_|{k3JrHD4QYAQ#c9X!F*IFMQiRYYD4%0&y!yXU%utqmW>;CTN=7=oJ z`Lcjx05P4DWrf&OA;q!H)62!t&MAcFJ}Y0)8#kedyyAXrU}>S5xA>%$9E{3XTm(8W zh|gC1zuJv2bkkt?Bf1u8PJ8F`#CJZ1{zQDtX-ppbHU3F=i7V!J*%raS$3Haw|4d%; z2d4F@4>V|O{xh(6c*aT+$qyV|KS;jMWIcd+d4zm^+=pqXo7^5qd2lng)Aj|Mna>BG zs}{}T!!n8=RK4wrcV#hE_mn>*_5yt;ByT z)E9zq{PXi8Idsj}D=1lZsQ}0PclO)@QS~Ku{9646?+%HEwSK02Av1YvC`RMT={1w;;4Iyy9r{m^t z@$}+f^nZaVq5H~uH~~lgcmF(Xe)SbsVkjh1o{=M_#sKq69=5S>7Q&A6L1K!2-cI$MoEej2 zq1J(WhK`vwSND9(O9S*_?E-2G0Gp>JHL+?_#!{*3;WP4*`2L80lbJ{T@MXc%;b;>y zPyghcXH7ASu}pU|C)1ZSUf`%PqxAI8v*@Y8XX5nD?&6C{f~-7j;dKSEf+svPk!7CD zGMkGw?hhiHfE%a&`!Rz5oc|EVNPl8E&c3bxS`bvbDb({{6)Vv1s{thizB@(a^K(57 z4YGxk*u+^vGInyoPC3Km(t%7u6g2#tENV{0q(tcR}(@r-Z#?jXU ztbSUY+w#cI^Qm;+qLD@K}s!tIhCf_uQZ(vHMu@x=L`?XCNa1(%;2 z@Id>52FLKyJXi-6U8Bzv9~w)JvyPd<{yS%k6W6g!;G%EGf824l7AZlOvt`VjFqRm@ zvuI=LtS-K&0j80;la8Ppxf*#<>w0TDj(>VXr+5#F5zZOeJoeh0koqCa7c}xaFCNqM zpo9u>_ERl(LF1NfAzDV)9L$#xYk15YJCLON*s(VXYGY^mP3)U}EC0_tQKd#Y0a9PC z97nBVkL`1<*UK-_m*#YG{I35sP8%n{;ydp5_+AWOambqmqpRaQn$tt(Nss1~R|LoZ zv>`q)X!_`zODFz4Hd+6U|J_sD^A!&1W!v~#c^b;go&TRN!mGhKNHM=h%wM#?a9IFX z4JtJnxCTy_M37pAj&+@kfaSY+=-{QY?1M^Nhn=zq%lGd4A;|-^ULWB5yV)>1K z@y*CzCL84HueJ;acQ;PqG*4eLP8<&hF!4WgRt{#xf@FH^xbkDvUr9_qnbKbCmHSAV z~$OvUlRJhu9IS})qTom!yAWF<9$)f=06TzD82IHU~t@wh2Ea`-`L%i+e!{& z#r3Is95cfWkXUA$I{%ZN9>Y>`CC|jp&uf6!meGj&ZN3wX3YU#z=HWiusU!5as^L-} zc<93{=3?~`+p6)wF|{#p@3~nXW*x}i^~p63x8d>mt@!Kcd2c^}VXpGwTx9F;i_%hc zR@-W}zkJGk>-~sFR_ts0!uikKddc%g$&25VR)r@)%m(udnB<1~W@Gu4gJ<55*&w*) zXea4+YHPyY>meXx2Z4$kkYk`u;^ae&67qeT{P!a*A+k=?=GVTY|C?0D&UY>;@LhJM z6G`cy*JNI;KpP@d8=UY`ihyC|kUkn=k9+bmzb(YHlz{T5blvLp`3$4v_FVt5Ab)Vs zawTw|aXgV+!Ch8u(#aKDYks>WCx>XgORZxzrRS?tcO*Sf`lA}J)Rklvti#O;RgAfB;&d4qx=+aY#*>B zsUT8$Kako+DdqLc=!tQGoD*!{J~1&ObErDbAgcG|?#XYQgSCH(91;TEw0S<$^MCHx z8{4vTx9j^OCi%S1%#?iQ!)}we9YS@a(xdYq2p+IEjIM9NPJV~G>VIiKHq6!Rx$TD( zg-PL>>_`CfZ&cg|kD&S%zbu_%>2}?>%sBC1>Ok!*K3n;}aSY`^&IvsiHNIZwab5y_ zID{~M<>5T0g}FwDOW|0t-ehLtD4XKU9lzBxbDrZ{(jlnxRbLEm_-xH3u95yz{g3Hf zH3W|zRUhQuGiYuJm63Vi8GC*D=g+L|Kt8N_=X}*S^TG(*7l5&R{T=d+<&Hh9`X4r& zkLCHlV!Lby<+$$kOa8Czn8vlH#Enx%IP^hD$1dx}WYPMJ_~Ejezd+^cTc5%5Xb8+YdGLJi{}I0u7E6Za|2@9)=!*sF z_cae%yQt6Rdk7!NZ%H&65m635?O%16r$Pg|zrSW6c-@<2S20v_+wg#JV>nUdILw_A z!$>0gza8|}Udc!^i4_syy7{k1tb~b)@>}k7ZTYUrUhuz(2}NA{t=vgwJ`4pef&y5! z9}P%s%bx3|XChDd zlt+AY&xLs+CD!Ln4zI@QM+_N71o=8UvDCdQu6cgJ#eMrT1!IMYA6*eivSjQsk}GBu z%K=@On4gpEd3}@A_L^T8&`m59XTyaLj=RAK7dC8EUB9@h`U+;LNhg37HxK)2Zd9-N zESyJU?qd*+pv28tG4a2Mnm*g?*u1m~w1e)(pWR!0Hv09XBbL1St8eO}bDjh*Dt17e zmpsJMQys+E{H2b-fUJJ<#NzdxHU19H^DuX7mmkt72X$0DKRMl2mzWK#c`h7f*0<&2)2 zl=cks-Ux`JW}~@(u4w+R!}I@mgJVpw+=%X^1(JJA#z6p41n_>VTBTpbIOBh;nNN;? z^~s~#;J!yQjJxE+0L*6gkq<0hhsskiL0Hn*gK+b`(B=5$D6gUQ9+PX1ViL~Opgr)oHOKlOTwd|9&kI4> zI{F>wH=aX&5HYaL=2?yZwD>>jf7@WdivOwq#jlxgo_N}jH5_w&f5%j7bga*O-Nf7m zr5@_1e`P{l)3u1=x96DGSENTn=l)B0bvRMU(A0?>NQ@fQM?=ixnbjs(tgpp;Yk{t89*8KjTa|9Y^-$l25L{v0B# z0_!ySf28tUmh5=P@?)=EXD&SdKiBSj`OoE_#-{}Iqu~^TI5)k1-Bo`vD@hBxc=KRR zOBT~t+mlNNe1sLQ)Al;*jg&lF zG0;4DtCV>gn~S@9^F2-e(`$lW<2=q=RH}A{(yLu`Ny!R+RVI;;GWZJRsNw z`Perqxj?*%W|1@DJ_@u6DR_dJxHg=s55A9>W*Dx1g#3NOgD^FX3(Kyw=Zty7fahm6 z4ADhS&EZ7=QxMl@(5U;*uh^_Z=W`Q9(@^mJJY-x)ytLsqLEl|`dHS&Sw;aMLFR%QM_~)F$Z8LXF z1o0@_Ts7&$|BWqK6eX;MYV6+xp+|7WZ&z|ZgzOeyasFHUzcTxKe2gBZd&SQ!vGYG6 zv3V7o|LHsH!gWM(F1t#(gLt-a>UN}HJzHkZm=)wr2w_&e;}szk#%0Yyylg7S<~8(J zcxSBxixI+94xi0jUGcBuPHn;*^<1Mexh_HYia2YErb|AgmY6)MZKLo1>2V9Y$}gNJ zAbx6n@aBQ)TXNxio-?N#-YxIR1%D`K3@24SVBQ^9-2vvhg8EV`?Nc&Y*WhNkrYCxg z;nX0Bd8>Em&;cNQgs-dzR-G`dC;nd?Q~Y`}sIzoc*# zWQ?iPQ?KW|1?oC&FU(lg_n#mCt5u7O6jx?OS=jw`oq7eL)Ky-mNguvmUBdL=wkoev zi<)2J@V4PqcgG3mCv3eMOlT8_PhHlWcRck}2F1<9f3@Yj*Es?~>klBArxRrSg^N_5 zb?D5?3TorTMW?cbLtwBUln;46kGZ9KBx3i_e&dI~-wv(3GjO*Gv4``@jlS<0ib#KUoKoRVFPZ9tpBt3={I*49hMO-ohQdn0q zv0&o%Y%k*rBccgkOve@E8tluS2qKvKxQdr1&T;22$4y*r(<_#{wO~TspedA~Vaeet zmV6O+Xo|bwpE>b4n&d!6Bo*~WXcMPa_5#iYk(FeY24gP&R`CeAT2Re9s* zCl+>U%pXcdqX!iXSvf(zzJ)SGkXOH_cM~vI-zJsqk#xcJK?&)-0EdO$`t~CdZC4xkW`$or0 zkgoYs?0)F;dUT4hS2jPeDhv#_umt9b)Yxp5_9nshNj>lmTo1ReG4JWX z_2Gfi$KCkm{I3)g_LJIAYBJSh+Q*rnWh1xKi9LLVZouEXm2)q-)of7xd;LFHdjgu| z(>X7y7$cmY3I4-@6@d}p`rkQ9a`F4U)Z;kN{2%OA4xzR$fbaYd9+PToy5>3oX}T&$ z%y>Ts&a2(e=w99uy=z`WjN|$#362qE*IZ-0xqhHK?W1eszBxHzalzfg4f8=(m+}wr z-415=_w}Gid*ue(mcXk2Rc_h-W0N1}n6A%re@veE@6EB-mlF$sm3d&UxHxJZxpUp@ zH;k;L&@QIOKTSg6u#>J2UGC@fsQ`>c4+>Ol|x+@UQaMDwbcP!>wm5- zuY+GCnf&wC|HOBE{QSh?JD#AVbsE=i6E{AYSN+c%Qs0%U`g*45k}?OIRAl`|<9&sH zd|Y8U&Z&rJ=a?6<-s2R6~3T+`j7Aa`EA}B|$uMOW!og)5MjgcSVo5tVWAV+ErnH6?)qj6(kVzV~$^XMI5n zhJC#9Gif9R7UY`tW1r0(4p!HfS}96N$84RRtMne`Yv+uqc9ly!h`A82fbeAEpMKoQ zXY~Fp0bPsENgj{|(PWA(=qu5wWcnTy;1`rEsK-yQO<+t6z;D7*yDCBLVfjtGFxh_i z#`I%U(s&#DAC8+99DIwE?SA6(&kUK_)Rf(L54rI^T+`U8#x){ZB zO}qg(*Y=wo-@M0jGF$DVe_{Rmh^?=1d?OWKOa0;<)SZib2vW zAe1>)rZ^!ob2|7-X{5D`zTFX^7{+X-Ra^$LV`i`(ric2BwI96ArxcFh_|XSy6T@X6 z_j}_A!^s_?-7GFILKiym5fi|TTjz_Q>*LGE9-RHvcVln)fLe{~-iGfiVHT+4KcNZm zo0G3U|8V@Xej5Kz`{+41^{;QOH{W}-;u>o{^-vVVVGHMGuOZ%fwnGv+&>Q8NVdpR zyB;h)e^th)6oY@`in4cO4068@3;(|w9#bRvLt>lPf7u^A{$PG{di``RnGq>ZgX&OI zT9m|b1k-Hm@yI>m27Di**cyOkXwK#O;h)<-5r#P$6P|-!d4$=Bi(e_wJrsc_F+iA@?8I;kTHs-lB5@hC0wn=Iqx%3Ofmq!B~SrgFioiO&$v90I!SbU z`}>nW(r7t~`#&S(s2fFaTbMW%Uz;1bbX3B~PFNM7Q`iUGZ=Z+gcTI-+?K9wnP+4y$ zZ&*TcGRpqP)h;V|bGpc+zzqT|gLncZ={^lvBfLaVgL;5+vVhGQ^LfQdZ5T9t*mUe7 z*zPr9S?9Q7>w^HwCv+C? zxCvdTmmVwWwEP(+`#;hknbd!<;wEUb;FS}!;&WV25kSQ*eRd)ty`KL13Dc2Dxv@%x zHfU~wbreDR^?dupu$DB|=2h0EI{SbzeQ2J-3W=a1q!Ml%{4aQm`t`OT{D-zH**!n% zFey5@pnG$Il(E9=o=YxroVPB5Fb$WB;SCv!K+!x`k~8l)#>)jq{O`C4>Y?%(x|M5H z)^m5^HYw(qTR$+_Q+1l6^Z%~oUM$T#_F~?rpy?&4c5r+T2XS0KADc4)@@w%CIR2w? zDf0y^1XO#L%^ie|oAAqF^DqJk8DDh#^sS9eesDj|gC)(SpzHfcv5V`Zj_n*?3DSw< zUvc7g~zu1`jhBoj+k=P-(ay1)64xB&y=u$apuQ1|8z-ZYYb z|1s8($srD?L6%K!FV%m!`)J)1=l!-vZb0j6D3^`l8vhzCBk|`aR5-#uAG!bRA@GYa zye|E%{!elKaJ*asG;fO0As>a2Cucy8D6)cM4pin5*_n^ixXEi;))9o+u>s(9{XFp9 z7%Y9r!^J8q-|Kof=-zEEuif6BxCo#z@y1(UOm&rFA$9!Mk!ktA^N1u(=7nyJFfR4{ zKRUY|?U9;O}$6L9=E21YmGnpc>?#SXRsV{%Pe0=e=( zuya3jeU^sloc??Nk6zZ~SRexase~I;Rb+pfNu-%`MtmfrDU_1#{UIVi?517+E0Z#IS4R-}wy% zSf1hy&3rG$XLQBlF~*}7Afo{MznYwFc+%u6=Um#ge1Avw>a^BC{!-U#VPMhwi{*R z73oYPKb%kdF6BmJF8sInf6p9SL4Y6(UJr~wJhJQmxmZ?+h0%_l$>;blePiVM{sDhh z!=ElvU);FQ`KYeoD**swNe_Na5&u11=6<}2>{96arh3({a*c5dHeaOwyvo?JF za9o7Vf7Q%g`*n`5ULoUWI^K4Sn+9;BbiK)=QTy^EAT`jou`q?UWv?xUx4| z#}N6Va_Qtw->-0gnBCPfw4Mv>l~S!|AT`j~FuncZ|BnA7_~wxCS2TfYF4F9*y&g=m z&{szKHO4rpQCx*${sT^OnIFACHABl%mMe091 zvFhQ1NUbUV*Z=u{J^7uOb$|^kB6-xdPKT6_{v+c)Qu=a^ ztVmTjx~!z&GP#L!aWUUPFuipnM*H7*>{f`cxhA4*U0fCg=zlwOu57lTIE+(Y zpS?={Uz^66UwsW{pQgNsr9#B{$72rois+5JHKzG_^HkjZSS-o7Fezj$*QR@&uwSkX z$;|kWMadw{Lo05yj}&)Tu(pjUO7h}EasTSL_-Jz;7c+f_bZY);rAOAywZMfv*C0%f zZ$16kF%#1NyKfZ>(|vN`#?MUvHzsfvgMJmQuY2!>k;J?QI9`la>Q>$zUv|jr5 z5|;kz!O6W}FDm@E^5EtcoV;_jz1v@N9*^b-|~NMmEXR<*F*f4l&%#^Ce7o@VI2S8{O$Gs z<&pnixebbjE$cVj;`3hnR04Y5ES=o-6^GQ`?EcQRUwmfy6JOE)8y{>3du&|XddDNl ze#JYEJwLpS6sxWmtC%Ba=fY{k>n{!e9Q`mlx{ts2CTiYXA5xbw5gKpZEvM~;(|g^N zme;ut)u3(c*hAV$yOg%imG8LQKJj%Dzbv`;mR8_ExDl)qaN$#NceR=Cxo{t5Nq%iyrL{2$x^;P*?8|0Y;@o`+(n(@Cl&#_eVnmhc#`+L9T|8;y| znH${ue_Wa7?|QU54pHGVEue=l6?ExffcLhZkt%>asbxTyY#k7Q*5L2~QK zLIeLGvAOR@EIov1W@Kuwz!Y%w&-J!b(9az8ulD{UD1NR0m_7phmJ_CTT}kVMHTK_W zY_1No?`uOY`@-|2`E=}9T+THz^nPa|Uj%svP{eq_gL4?c?{IQM!ACrAKc$b72)Hdu=b67~i?@`TF?dR9GzuPlqEiZW50MF-}2^*wvX;}=-Bj|EyMekhkP+>tlHzOjn(?EV~}!4kPkZk{LQ(L zn2yT-%|Ea1;1~nNm-D&ivBG(hZZr0Ao;8kKf@7z625+v4FkbzPf4}a!K*lM*`0-WL z%G+bfBSo`r!NE>uq=z?nc-}T~*C0vi_@VcY8Y_4%Ze34}DZ~doUm}9Wz@yPQzZ!+bw zf^oXzAJ`9)iioP)i-f59PW5xYgT}_oo0SFYlVf%2La0l~eR~Z zL4RuP2C4r8U%Wy7G&T6}T4dFBB`eKtli?eMdJj&~uS|;nD}SFAqAPgwkOthO(% z_@6dAEBF-#gzNAan3OcR?(kd!lE32rovxMRa`#PBFE}w(j8lI4!b^*ZV>7!Hk{rMh zKAd~j_%X6U`jmdvX0ZKd)&C`v$Ks0|8#CW&cI9EOeu~Y)Ue7hb67e99!ywNi?tHE4 z%FOLJ;(-Y%l)_|We(^wc-0`dT^1wZFqhOAV%g-?ifC-Ibk8Sfe=b7y$ImGXUL-Qm1 z)$zjXTpeFkySY87{wEuM(>drjn16g8jTdbFp9c@9qJEwo`?ENk@G1$f8n(Id#=nA z*BTGm;a_8EyWxkmPnm!J$`MFm?46k~Y5^gEpXlTH@>n z$zSYak{u9%^($}-fk)3Y6R0czf;I(mM&~+ZC&|6syNJUk{pQL9%)iyXic&5fB$m7D zep7;rW?xA6{E;rjpTXBjqa-6Zj;PWHLhbI2?f`rPMK>F%_)b8TlZ%-7P5Z&{|0}bg zG!2=7a5~K1%&iz>TLWoW;GV}kwV2te!D40LLB4vT`Owa zZN}qzd*a&WJ1H)8!@vAK_65z4zNs_%edR6Yx*41C^V~n@D7w_`iv{EE*B#gg0rA0@ z1?Bk3Ych7suSnJ`K|V)bqb};NwcuYRrT)jTt1`dY=W*y8tw7ZbqL|BUnES(p!Q zeiE*LFd}#z5F~@+Z~8lDOx_sG`ld7F9>nejR@+Wedi-tzjsMXBhiv}xj@|K3^AZ=T zY(BkhP^^*C58QqMbMr#%4T(h*5GK6y_mk;y?c_{)K-N{y=ANN1U61f2;rb`h2qgUt^kP zbdNw^q?);wx*%Te;)buZzyJ2qi{V~()jifOK-hZjBQ!cr<^5nYzyUuujCeln)xgm3Je^m(Ha#N2Gy_ zr!}Kr8$VdE(rJ>t?1v;<#^1xKWmEa%_Xin=EW7Id>yKPKf(y!h#sI6G=c6F5X`acP_~zUenk!abi+An$O=D;rWBf;fTHGty;Cpe{a2SXtQA8B9>A`>i06#7P11^>z=0v{T0A0<0|2VCFlJ^Ij}rk2_$D6{4+UCSqEHc-4m;%N(FAr8W{av@lA12|j+00QYE+r8#t+p)W zN(wvH3M)7YboC{hw>QE^PNS6)WN>n5HPY~xv^NQuA19Xn=0FRcS@@=m?S&LoIX8dWc^<*Y{N5WY6DV(d zJU{m|bIcslm$ztZnKXkn1KerirMnr9L8Z;Q8Oo#`?KE5N^H zQu_3m?W_9Kg=5D*l&hMjBEX9Uj`f`zbfk&n_lme<;=lfzTFAM9=W|a;G{CfiSm>mmFiL z*vhUMs?S~1jP%Y&?_5va7pvy*vm-(PihrbS!W+jI7rnyzBi{}y{&SEJxb>Q!*@%l$ z02BXx?e*D+seIlVj=kXzCjR;U=eS4Pu|cs6nkUv(_-bTJA3)hE1`GJ8$w>w6h>&~j zC!0=}#r6Npwi8f z_oz<80ZF=3uT(5Z{ck*W*O+NK&0Y=nlLswPziFOUa{&t{?{o()oZ*;vikIN}U(s;o z|Ir~tX3J&0C|6AWueOEfCPU%w*$6KDzKuo;zO$Nk0M|IA0iHY%^WZyveuP;jN6gh3i|4pvxbRA`h%~0u7b=xsD&GY7MFz7D zysw}JkuG#O<-Q;KG8OB8ihe;LGKIX}tE^(v{N(=;I9>UgaMpVvjCk08TqEVdzpQT9 zn7+oF@p(_dtNf5PE;UhURx2%O_kt~XcFo8?Shn>brUI#}LN|PnW zgXj=Oill2|z>_?ASjC$j*$FSKx?mzqN@^d}uD8SAELie7Qb2pZD^DJWJQ zJS@9LW7M-W_FdY%y*<+sMY_VT{I`8H9_VQm0K`_U0+Mm;34X4Po|He{={y!y%vJ~~ z&_GyjnUe5)-gChyM#$?MI8A~ZaFHMGz&dOEc}ypqjK_hb3$^!{k-IAaUOI)1J$PIN zgUvf*oj0&Gex7j(&z`)0BA^>09uH3#Az8=Ks)t$%UXdg?b z8rtgvm#0NjG)(&;2oV71|Gw|qNd6zacwXCze0`CQ10X0CB6#~$M`S8ixaK^;G@d9SNTrEgH>V)EIHByks;r?1(IlFb+t-Bfxk zonBr&{O9#Q+ppZg*EGMYt~A?8@l!EWb4)mzIw_7=0T??|Z|+5Z7=9}L5nlg)$Nyzt z@!cz`bF6s=2(#g+6=E(6Use8pCH!sJd_T$R$z7D|i-tJw71y@A&$){s{G9m`U#2Z! zU;k>2^`~X}gO$m3Dw|*GxsS5p4~@gRjZ63~YF{|-JUIEQ&+%LS=R@Q6-{L>yGk=k@ z?_DEHT@YWb_K}B^HU72j#5`e_Yk=2hS@j6jFhds!&i@Z~FmWaT0@Vm%{Ovf=-;BI$ zVVb-+YBrGrLrb;i5pV+js?(IGXv4h}Q4?A}udVzTUeY|ZdF~NDE2e1}$GDXPx?kYP z{{W}r^jo5D&CUGg!5_*06GyWi@%dDz7T5Ru{mHE#D+zt@A-7oHPCbx3kBKiB3JMvSo>U)FJ{~2I> zKUkPK2=F?WW`LyquOL*d?Gqxp z$L!)RT)*d>Xotpou5^sVk$`AGQ7`#Tgpsusug;*tR}-vH9*@tut|Cn^tAWgRuS5fX z`-hVWD4BG19JZeqBhSY%?yLCBTM;kXH{u@;rhKVEh}g&{F{DK}`q~&N zSxV&Nz4w2bqY=7`&p6IX3=fV~*p3YpV-@aE3O|ZGvALf}mJfPf-gf^bqv-s85Ocip z(%W7>V7!CQ6Zsi4e$DUcTu+J!;(@dn;d!MmnB=9Lq#M2`KfUvrm}!|gRXcohbnZ(~ zbgWo>$G01ruv}y0qTRsCyndzABTUmPQ+SUFozBdCMZ&5X4jG9!8iVc zY%KdCG=gYeOD5Mk*XC2j2-jC2T^VEj;s=SDhk@u?%j?VLo=nLjEh=>m`Opnj{&Y^U zxv%q^0J{Iarm+HchFsOS{fhr-`*m%{e|^dt9;dRc8|N+O;NRol<18gV^7R>~@{99v zbUhM+k+;Vi1nNn9d8~da4rqR#HrAeJq^VHX?}P6!`_MA6IG!GMi|g~?N9MZGL0g11 z4;qVc?wq1;zgIl@+PN^K^~)d0{~g<+=jc-7k&>i)y`&Io%Q|=x0bX;6ZlJY<%;Apz z=X%+%W7Sq>VPUYB%Qn`qg~scT2XK@(AUb*N()L7gn8v@vg{hDzFwB!ahvMe_Q{f_^0QJV=>S1bnP;BG?IkB5;*dI+r%T%94|cq z>+kU_>Z~>`kNOmDp42!4c|E4_@w51~o0!g%lav!zjVf4)qG`Ft^XX$pg!lkw{(mha ztoGhw{$1C^A`6~`CddU)CWSlr3b$RHgmkAdumTPrWLJ(tlPYBFnkewtnD3(76U~*L z5R%kYE)Yhsqd!m74xZ@2*+0DC^8|DkUioUNN804*rjqvOU-Rluugot@*SDF^Sa)^2Eh8HjFsX_i8jWxr zEH7Xfcj8PNoBAd%a#Q49iJf&6EFPF}o_zZ3U%9^exatdwnX705&j-2vCt}Iz0wYsq zsQN~q(*juHCg>lynD`&RB-#BY#+9It`2cg9@yUzXSbcQvBFItDe_pA#YyqW2~M6s(kd$X^bt(AL16e7J3hw>-K_hVyxq` z;-CC9zs@)~i%`3nZg=k9I?j12mnF^3V?px;W0x#k@z3Vzv}k-yuAaBxaPmed%nAJOA@oj~_p|E`5`$d#>|)i-I2Z zNE`-n8vD|5HgZN^)*o_x<>DY5zL=DGeq&cQ5mUKxS2a8SHNQ+ehUiFY{fGFUd7H7X z{9n1d?4LSJ^FObRk~ntefo0n|D?(zI{mz?RdJn7qXKr)FR zBk+UCOE=Q8^+(^XZ;rc4_{Zml(u*MkF##; zHDQlU(H>m4JD!g*${_PCj~nay#7+AnfSv!bjywMk_g-U_{)|Ph$3-`Ae)+-0mGybm zPJPex7Pr0sHq?x(IZgV}=g46G4f@>c|AcRHrP;~;q_x%ZGn$*H-*a)eWjN+D{(HQ{ za5#?-%l{N})t|y{$Ms-W+)g5cMxDILam%vk8uM|)IX15&G;T*EZb%yt0j?vtv0y2HvgL^1P@Esm&%ba_w<_jELHhnr4IIfOy zM*e)O{lA0Wdk%ueVx2X=YL@!3+J^Z<|MA%emwCA=YcpEwHTKuo&Rk-A6=X~4nrXF- z`kGd`^swEiynK<1o9=_G4>+7SP7juorb{`GD9IiaTN0Cg=T{`c|8!RxsEcFDNn-(vpb z{Q3TGb;SPeb<60%oTL5jxTBb?ad3NJHe$Wib!^}5x+l+mnlHa<%a3`%AbHjf|9$#cn(<9u_*;TmUT29qlr zgBz=E2XD%_34i@ewIe=iS@+i!KM2B<yE9_WfD$ z{9j_s6nwvx9wAuqIc6?(oG5np)mw-EsBNmgzaE@tFAfgJ0_76Iu1D^LC*Oa|JN@+T!bm#m|JB}cd5n#XmXy3j zy{>tqyt`Zs{HOd6RBkacMK-@Uc1~R=cX!_IykC7j9^fph;PE%^Yy5XZKTiXn&wt3^ zDJzM%yudR+9AVCu(;JmXAq5!+%EYdNcWxRYHleoi#rksPA@d!Ba}Ph|Op z`Y8)BPXpsa6h+4E}dgJLGv3V zJHCn8GBIyG{U%fAxayM-oTE7`jz!po|GF1Y%!f5i4PgMO$Z?P+S(s@kg@rYbS5fkx z3+8v@RuR?tAZ7H5H-2lyi|Z~vVcpvjkJmW9XY&Ct`AHWIc@fbWpVv5E_G9zP0!7I_vepXl!Mm@gLvuPx*hDBxDBd{Te9{T#o^wGK-s@^YIr zzp-r1m%Q;NW5)>f`1hmdi{?K_z8{+FulOg~=hYqmB%R_?HxtX&?EX*tja^>%um(E^ zb-i484!*BCOZd~A#%^VJ7+ty6%28i`UdgrQ`Kol9(r!5k zarX_0RTi#z8Gr9slA6U`PV0p?EmJNkpR+Dc!{*B{1K&?K@9#YPKmX_doovkg7KRPN zmzHDnx@^SIwVn9UfuRM0-N#sYjko04_fdoc;rr-~zhBs>79(R@A0qWM*M$` z|DC&l-(!@IulRRN^*A!`@9Yu|vgLZ*I$qwZC%@9UBsRZ)eRmrm_xE^@0ss7?T<3i8 z{N&&4KXu#7WnyDXzLMLeN44eq-@Ki|pUgonJCFSTTl~{Je~zzn-uj%fr@hpYAZ#>d z-gfW#wQhl_%n|MfhyQF&KTAYOmx!Pj2p zyWX?Ge>-;E9r9oO=9=#fjV#Tj(~tYGA8z}jMm*Z);n%PHOYt8YudsT|^QcPCQ~oXU z!~5~UM<&N5d1x=R$HuB~9U#2pv3u{=8b%k-v7NdW=$T8vi;>NV%B}VnxgG(O^h1XK zO*Aji_{q%zc#aiuIA_Oeik!b~z?1U5;Pzt1zdw!o58xb|5)xhqyGssGU0`k-P%!gh z<4By;A~`g(dO#Jb@AH&=AN1x+L;cZLi<{P*uJL)1RZ81Un0WP>v6m#=#j6#RoBNF6ulOuq zIG$D-?(ue#Tf@n?UTkyRsC=7ynZu{eaB5n=dW$!ET+!aIbh^R{~Ht`V{)6y|46rE&y|ihB(d>J`3hM1AHn+Rw>=12b4*cqJK+nmW)!f1tk zJ(n7rCw>)wGiNDtQSKm1O=j$QAh{aHbI&cf;-K%O@}Slzfag+~OZXa=^by|9Rg=~E z_hvThoJRd058t-Rec$TfqTsDH+zXG8qv=<#78(snva5D zT;Wf1e&xz5{Y-xSv-&9>4lYdj0Pi6%9!l1%Pl$gGJvop4^Yc@UJy$`!*k z;(hSjzuebx#&~{lhpqEocq-xY_i|~YI?zcQU4)Pp;v)-s3~}y7s;y&p~!F)5Ss0JP^Df|0(Gv)3M>a^WutlC868`k?ZU_ zW3?{tAH8WnBRD(#Gv53I8==F+_77g$nfJGCY3GA{&>fOsBmG1#yI=| z^B4Q3bAntm9OYoJ-V!S;PLavZoSZceT8U#{j5Vs`={GK}hd~v)LA+CWWUik%2g*so z^Pi(vQjPKV^Jl!=STsnSQTxV%k9`E-dCV*WVUwtg!TM?4b;duBu`Yi-h%q3Emc%^i z?fxzPJzk>aXsu-ZNxZW?2tQ@h*s6S^i%hexa7nSLb28fSHj>x>ap||NavtGpTUX|J z=6=o%Wp7Aq5+7Q<{@qu>K5Acv@Bp{&VJOyOhd<$c*5I5MN;Y$N6LRLtwT$7Z zt90{6u=EfB*#(IojtkBeQ+NM{@1(YQ_y#Ng>s&y5PZS7Gh+(}g#+Fy3KYvv+_(39;1Qdko@4T-U10}cT6#O z!7qXv%O3w6hn~b~La_^lJvz&3-;ydnRCHVmBYpZDAO5k?%ojR0A+p=%ms4wDk7V6b zcq3u9VcuArhaG`ceSIAN6qB4_c{30Pt6AH>li;!-MjF#}#o`Z#oP?&^Z1OL*qXI;cv<)^DP%* z+Lju2AKK%IjWw~P{T$pi~1~!7f^Z#(|Cjpog(EN`+37B7Scmtb9!xumy zIW+$@{x>#uTgqEU{9o;_>-W7_r#&}BWW)U>Pd{f2i@T)wjf&G~a4G z@&h4lpQrAXM`A+*9sg9%`1)V^W@_EE@RV!b$L}ehZcoMI)JTKF@kdZ>@)&O0HK%@V z52|r+e~ewl54`zU>&l6LG>7Tt9;{Xz9iH!+|0{RMX5Ja!b**x~UB8334~|LRV19ZB z)iyfvj_2t`t@Zw9Od5#o}rF!iggWncU1c+b6SILMx2zesiP5fm9`TV3 zW`Kg1Bnnh8OySeuF*0%@)#wK$iTdimcct<&VwJn1n0<`@p)t0?-vpDqA_(I zc49t8V;>r*C6Ol+minjKH%_D&!ayl~e#gd=QMy*Z%%*e^>L@h09ZWVMh7uDKF?neE zp%RD@shD{caM`l-K@B=FgpB8tkf#64Y3q>O&T*)=U=il%FvNPv!g0Q@b(tNs&`zA# za#;^FLgIfXLFFaES+yr!nA96HvQXmlzXSBsSys#o&Eljj@AW~sFBrEN9?D5BEW6qQ zVx-tuerWwq-}2vCrkiQq!npbp#GB@A*DFYqZ=U_8bsHy(OdperChjet5rh7mdEQC4 zlJVDA(K5?N?C!llQ-91{@xpg6ZaC(zW5&axfMjkg{opdQ`?G$dFKq;3FvH{WWN>-xgzW#LLVVZ&;_~_I`+skGFGwiNnzmZS!z*$@7j zTQQI_e#)4v6W6L=MfVlQdL8HWyPw7v_gVRfbhO4IP8KWeV;!^bKN}g0MUH>gzyn**UM~qdyFAL<7k<+Z= zU!eC({Nt#PBn{`C3zXFmRP1K%v4m`c$sD13&C83%K(Vu^-_#{R|%uW=(>-k#m5ldlIC z7#{`6FuQ)_?d=Z)QNHhuerWvPQ|$66PZ8=auJc3qR^m1%PlWQl=f$z5>a`F@j}7^& zEn5G)`IPmC;~}B@7bCIer*OV_5sC+?69tRk{nU0dmZrbjR{cLb8_OQHwZ*+07nFZO z$ek^BS*BLdZ!m`DlEL6$$>r|z?9YG3{6qQOIVeufN|J*&b(0-^pWAx>eMCUwiLC7V z^|@4fdA9t%M;UHlzG9ttPq^tRhbLsl0wQcWfU2G)v1C5(UkWNm0Ctbwq6ER5NXAFP?dT7 z4pun9>vzJ>i>V(gjCg~?lMByhClJvorN|KN2=j#*N#Hc!E{~JH^2uE9F`#eo_(ETc zQkr*(E7obStklbXBb7l5dVFnGbN}2JOKl~a9TICiSBiV)FHYJ#h|Y%|QdieJRc3#O z?uT5dm}5>8Jfz7MZ;TFQC(9`NIp0=4&HorbRQ?An-{Y73?>>slJ5sdNdFTHqwwF3rqs&hzw57MFh#hS3_gV)6`gICt4 zYlWAKANWm8BX3gXA;WaMxSsih^S{@H7q{|H|Ir@xyBU1>%|hPesCT2dVl+j=N^di(0Keye({pWb8_6} z9k)8?>`%P&aadB=PR{E-N5i*XE0?~Ve-=JvG|a{hZ(?)&qw$+ALSz;u|IGNfCqvh= zH=+E*iUO3;Nk6FAiQy_BiMQiJ&+NP=dIr9^+Z`Y<<`)%aUFi7X%{Z1LHP?Ybedy!) zn)(n=7j{_o=%DR750^Y}UKl)l<$=a&46Yz~<7=){#?Uo{%f~N=&acZSN#MM3@=0pz z=aS3ehwr|jT#=Nfk?R=0*fDX)8-0(DKs?IvN+0d76in1T$AYd8U%$LR75}Q=o}cmq z*W(MDdGTW&m?xW3PybN<=k@=@+Fav9?Y;N^6d!tZe0lW)0M;es`^4Al(4$`Akw)J1 zoBS~Hc-&JX!E)vQ`#xVRcs=F@L2S>N*GJ5IBa(0^L(QHr=OSKbj&=Fz`L;1s7q#nY z;QP>Z{D`veC(BbZW6)_JrGOle8%v{X#ktQkCFCCjGUNY9zrvW<@J^z@C4O`15ZGUv zj(d;3Ohm6C}Ve&wUo$(k(KB04u{YK6^m?Za!gKw_D!8!AHr>8Acn006D zu!5oF{B~@@pD|u;H6GJ>UYKRsMNF@rSAkid!g19$)h6Fu?3t_BfB)mfFfuh+ABFPf zy3&4#l{aWdcjtpJ&eJ*9MbdQy^&9!aw6zKQBz-NwH>N@US;uSpPgEIV1b}0+#jtPT z54Cm1@EG=77@gRdQwIy^!VoLvsvIuVU~w=p!<(&Xav1AVe2y*U&%(yep<{TlaY3upPkWzX^Rclz{0y$x z^obWp{h{^5T$l6EvHElAFkCrfnE%R_e1zZY|H9Cmm-fTmY5wb;=)6#0`4(wXe5U?j z?xWV9c=iFpu7_ZE>L0B9FLg+=yh+5utt%E>AJubY4o?e?YT%y06#OaYg}PX7D}xCLE_O|C-M@ z+b&+Se4_ooaN^^*{a-Eby(IY?BZ6Kr$ikGz|Nd>k@Ad!F9&}b*7#8c^w)bNRd#%=C z$nW`oKpBR^e?I$n$u0nO{TdFikT&yavvABM2Mm)-C-%3|kWlv&8RcjR%A+V_yl?II z5jJUlx6eF_0anx}v5)(e?bq}A)8AsfG<6O8i9QtQkeGYu4ZP>kJ{#QgV0wMkI%XhgR zI(}=LyMHAPj;}@Pi(iQc)87~%9YW8aMz37KKSX$MAdtSpiSIn6^3BE<6;4E~A&u{Z zJIRxg95%OstKeqLACl`XKn0|7*7pMXJi@qK?6~{pW{%}HUUUgf+WgPGJawBp%DK#y z>~GfD^^eQv7|g0ZrV7&z*$2XBei^`Hp)*Mp0V4Aygf_h5KPYirMW!yA_}3jVF(dZq z_dIh@U~l}S$m@+`4_@I~0-153ZU(pqV`7;`MDa#Ti;<0rRQ~ZLDI#Mm5{I45=UnHX zIg|3gabr-E>bKWlXj@Zz!fCGOym2*L!TD>hX}*)=gt^b7*Z*4Mq`BdO-qd!Wb!>rDm)&7^Ixl)6e>xs>bCfMdgkt&7(sa?c;I$ud*@@jPmoZNz7v=u6b~Db% zF+#D}W$x4Z^RjvR1ZG~=g9WdBDki_|ZIx5TDNNPFO=&;c!*%@PyS6c=z7v}Q#xqL_ zglku;saF4fduMRK91Io~$pA#n+jyzuL{U(ZlPlsoYKK^tSlF zwDdV!dm_@1;;3nJ>*hmVdmB&BBmWE6rSd%Xd7%85GRDsTFQ&VtR@tLR*59H10HcVd zE-_FCU`fS65*gtrM8kYWZwEz4pET?Y31J;`JxT5>(=iBcNA`Ujt#0f)UMQC@iV(v4 zwV=SkT_i_33`GSo8`xI{L@RisgI9@Rf48}^YaMPhzYg#A?S8%D4v*DnZ4mI~0Z0pEbxbF6x}aZW~l?i=RU zIr|msQ*?JftcjZTwUOIoMa_FLi#WzoYVS=5=#fSiii114i`TzeunTEZ^PjBmgj(Lh4 z%~Mm@-gB3dKSmbgjkTJ40mjvLu}NK$qwyURYO^O?mcLR?W3v(8ZSjk(c~utoL`pwU ze*Sv$E)NV7!+AZ%e)y*w;yCj^I1Y2(Mg*<+f;jS_l{9*p+>`G>Q;3$ns@ufb*Kfg; z|BC=V8j-F(J)Wm!!wI^Gwvi#5{5CKC_i%s59>77L1cHeuvUAqZcJr+e{9wPg=2)=K3a=YzX0 z*6&{&vmV;K3iKw7-g&N7Bi6bT@7wnM{!{IPy###cfA*ByteY-%eXk8@Aum^%QFtuK zSYt2alkL^qqqR6>T@&CKq^4(zeG?h-B=zMAoZ#(niAF6+_X zIZY#gOy;8Zt_0GWy!lQs&ufV!y=6WV-Ik{&wBYIUdFaWThgj=|R&TpU?(-(r=tj5= zLYSHFg~4yN>Z9Wmi_JC02OWaYysQ`wZH$Rm+0@DTjjCr(RSpQtre&iJhi#6#nv1s) z*$FCdW-NUO$#&+-|2?j|^o^&&u*{9w0v)E;m{sfOwIlx9uk(<(uu^^3sDkgRi7_(C z4Bjiz+DtJmZfL(YVCdL6(bvSRK)Z+S@wvz(|BTOS@X7Hr|IF*tuFgb-ja`#ZilBjI z@p%L#l+hmC)XMf2n^l+h)(UYJeo^nT&>tFDV^Y|6b8>yTPrF&2%Z z;dc=K>HrbGUpO)2`%TF}MM$jNdA{^>-iwn{D_+a)*&ACD>2u@buKywVtHyJ^_`Zo< zazR|W>$j}YA1za_KjZuQpXSZlR(n6#7Pn{Te;iztX9>^^N^ann{Lgdu&Pl%5rM?el z2TMOyr0K@r=*-1MfpZnaD+$os38Bu@uGvlzIfgfRY8`;Sd4tojB%Xk-3(*MGyAoft z4k?26KLYvc2A%A{Z<|62L=VD(^hv1!O`v6iBtHH%;8+D~jB%%4Ew{<&0aB4269i)+ zpd{U!8Zj{VPQuhDW*jq(0?hHpf+5q^x(#IVsQOur{hcKFF$O zKlkMPN_4EtAgGF9EeM^kr{6`&m<)^*9bpNP6U=^sI&sT*eDTqdV`PiL6@syR&Cv%A zf|KK`Z(?!I;A8|yoA~GN{radktDQ^)P ztOebLz|H-TsT?>spldXmo)ey(bCcgN^3C;2j$)~Y2ack^^_x7y1skZ4E3WheF85g- zC|2go*x?G*_wH2;2w!RQ9*TX~w}WMb;OdJXnP+?94@l0K_z2OF1&aGg|4ijOv5EZH z8&`0XpY}hL_gxOpQRhZ6bT+zbqqVrEb74^4lekqJJ^BC8viJovJ}<5{j&;-R=jW&8 zj4yT^>_r^$>KQNkJw9;=l-LcNOE7*3{{Rj+wLfjb+SkohoLi<(9?r<$97H_7^Xp7@%;1m+ z%U@)ra^cEn>2hYs;xrmSsl|iDx>YF z@5%|r#i6?SoJ=F-K~?w)yny1IFcWPe(&{U%o7~kJpX%m~^}33%s*dKWI6tWfn>?Vo zMEDGP&bYbO|9ebqPKC}x#e&x&%;~UPHdx35D}e6*#Ros-Cr@|%pS+)?Ovt>|l9TdF z=x=-009;Rw9l!7Yjfhw7dDA)U)lo3!FL>SYmah*yAvMBM<#F7ux(1&y+v|M`1^CO|dejMUQ`@BoG+i{y? zmxIxxs@}Ls^Sx)>i6`!{{K?7xTW(8`>x>~Dn?EbT11X$$6^EQet|VAR0WX#ZvMIRV z$k=C3|D?|#onM&?H_yEOv?C4FU@Y65zSoKZDt=gx8e`<-vV=F7N@AY88e#+cl>h$4 z%0a#WD@8l!F#)Wx_T|RF(h054&AA|Mk5g`8L2h+%mFM*thThtj_~*kC%gbvsC40WI z@?H#vueg6cF@+X1SB#!~LRfmo-^Fcd!SR|T^8GIum-Rq;$AJ>aj>*EOY^0CDqfzDR zKl6st-Uy>{vo?>^s?t4P5G1f_iowMPF4r-359LnWUA4sDHa`R25TE>W@BPQXPd(ld zgp2dcY4NFX_E?=el1JEMK3p@`9e#d_ugU`^ig6%hb zd}CI}F2Vb}apgBozRS^{t`Fp2e{Cl$J^w{-UL3dTXM4x{vb{B?l)IIk&+#>m$b17*%I`r8g!H$x3#y{sdezB}D7u0NT=^CWLK49CPJF4H* zQSoB1V#wP-CYbAN9bxWIod%If^!7ih|DW?ze=sg14DZeZvGi1>^()I6P9&5C9H`Ls zKaO1YL)YU}f_*S}Xsx;(>+|*`4#m+&$637C;|JLvYusu&>#b*kxYi4@qx$itrf3q( zTdYsjCIA+0v+p^^n3uZjCLWWxxPpYnK#necc#Le$k=C@1)%chAdVg5Y_#o5m7oSg_ zD{Z4bKi^WdJt_l)i*CTD~EaO8ih)&I_=*j1RsI_g^en@)>o)*1l!5&H8^ zzhL$gJ0kz5`OgQ~ypT%;Rs|`rkd}idlJZ^*(vkfGKqp2?odaYxQQ2t<;GDqComhs* z!iZq5r&-SA!~Pvz%z+Y{`^l54r2yOHhW=ST(}_LG`Rm5#s&iy219I6Y&gM?cAUmu!h659 z@TYB>&e^)=N%V~I8nfQ=@27>daGWJ&wm$k6%l7xWX7KH&xKNwxd>5TOuk_FYL8J_e zsd@XY9|{EdSz_^>XCb8VUHlmKljn6l6_XSHf{WLb6TU5T?D2kRlB@zPdW;_V z++PXRiJQ6AWeTUQLkq9JMZyewe(nUk`DJ4C8l2)dw=RtNvg;1SJh2k= zW4weoHT>o~(p@i6QAxItbfK-qukS^JJ8w!1C;g$pAq7cT>^@i|JD1P#k;`J=Pr4xa zbOTF^o0xb8Z{E)4YQ=r$?yQ`aqEdq20>?-G|7m@FGiCC>&ZR#j5HYYF!}b== z*x5n(-@P?s%GKv5AOp`ozIZ%5d9Sm~!g$%#s!6ZyqmgAD)^W@|_<;a0I!zRg{3G`) zJn_pCz#T*}zLh+^M9IY(E{)_T#-?48FDH?})o2_Qm$5SHmr+Xb<0Du1e~q}W?#hv&wX{8 zg=KL#WSqtV^CO0f{_;1O{dAu?(yC}M=MA@)>J!%$3%mZ`80oyj@lC_-^+EI)Y@>uf z+ZxJET$l3UI{o#)KWiFRh~r=Brt@kKEJq#}byI~j>CdOv%*9}-=7xEF=54UxJf-oE zEMNH>+N^V^-^oAG|Iiz0y*O>>|IsDkyyzIoQG29@T%2LvegT+oColRz)Hc(akoCi^ z|6SiN`IL`CWlY>s>)g1k>n#7OBe!YhA6z+$1MZ!Vz&A%H_w$DgjPa2A6Ib$2GE1e{^v(YK+P6K8l=@a6%$0Y$t zF4)-Q8YS7SF*dIKzvgSzj~|A#p8@cTHPa`|CgyF3pGFdY9-Iv35x*aX-_eQXJ}>T+ z{THq|PR8L{2b2Ez(!r$CTm=0Iw(Rwn&i@6Lktvr`Ipf0F-1v%rirH76-@-qkxtwc| ziA8j*p>e!7&wtJUDE3ZB!gzM&)$r*X1Xuv^iyxri{IrakC#|r^82Zn47TsZyyVU>Z3$PaC_H`YoedkI4?3G8O3%>8SOr0zfxnw- zNto)qU2iwWh%r7(rXyIza8AOO|ITG`g<$Euh86#%R>E=o zN|XuZLDlWo&?&mlh$n>zufQ_f3Q{Zx9%`h!1P8T@*P%@He8 zgns3ouMQUk^l{hf+Se0o^yPo%z_KqSM#b75X~kjP%anGUXa9bS`5fp_pTbX%52+8f znU!CDY4e((>qqsk)+6J+gBn)-U!NmCwPYzB-XE^3r4972n_&6N9&o!bIdlz>7@qT7 zG9>;J(3&!p<9e8oYqQ4R^?z-??)sl~4tjAQuy9mkjA77B$1k0Yij#*q7V4o;D0E4$ zf35$^mbCPjqq*`7Po8|pndFWEGr3Fwm*-qe!NGX&z5{&Lg-LT{!4maeAmnEM_f+*>y3!%@ zo!Y01oYwVeTsF*x$@8O|6A4J+^9%WKu|NsflPDJ-j4i%iAzyFW{WS5iUTyu>=9N_m zCs1A@!%TQIn4sXEAxmyyjij> z{1cA<-A~E<9h2s~>|mY8mHT00lHR3@G@&r@&i!Yuo6$K^^Td6nJb5|AK1qplN&4hxN3vpd1*Pm zfBy*jEY5hRba*{;EP-DZZG3HoLM9-!Vl;LE9P>2z8^vPXZ@seK`mXz!lYhzoT4Rj7@k#j~ zYa@VT1yK*?s&<%%22)y%y%cz2mtt6Rpns0uKSEDwGOrlr_z&E330yUSZZdlQ=U9DO zzeE1#_%CnI7+{$}_j6u?;f+R?!jTptvt}m5UUbXp{X@S|`6JjPOadSF;b=enMGhJ* zKJtI-oBYu7onutp9yCIj%sBJEE6;6s&GBFA|N8X$fA#6FX-umOw!t?xyDga%$^h`p4_e=HZJ8hKSnsxbCAMiB<};A3v;I-ck$b=o z+Y^py?cn)I^tBj_SNV!hkCmwb#-_<%AWS|ln6WJ~4!NJAVaLGo51Jy%SLN&B57l|( zaSSFHx*A*04X=+k7kG`w9FD%v`CrBcs4m}F@G+}R!gH|m<8^&wBt`y5&_gfJ20U@> znlqJq-+%5+{>Lx*|B*K}xO1^djXj23kN3;Lo0`ktxm z8XJiT*sVv|nKL-XS~XAF`}9?>rT1P4OZ#`wo;N5#>H`J-OzdyA%4>mQk;>XW!1{dFk)s+-| zD2HQg`$>yL@e$)v_%xt6$Fwu~rJw%8(n<2!C+_f&x@^V>#m=jT|CJkCE^s=?4vE>U zT=qjcP0P0c(Ee1g>JYkM^f4=Uq347BT;pB#4F^8+wEgfuJ9vKd+UNM{G7x!x9z2IW zzWSIxGr^lSSASWA2u63#bzSuSp)J=t~35$e6#M!L`C(la};ysaCyA>Kc#Q^x?=;w2f;R(zj$NU z^Mm@4HVw%%e$Y4%7>CbW!`EHG{%ZSG-fws+z0&H-4nth=sl4b9r96PgrP+U-657H@slRtIrUjGA#&;0+$tD11QHjgpX zC)c5z7oSb@1y{uFlixXOum9(B^mT0Y%WBLYG^?Xc(|Ty3IKAsiww@nMv{xUuqK4&H1FU z$4~vF)DA7;>_{aV8WJ)HTz`E_ie|R$Vq2BiyQQ2<>DS~M8gD{Gv#C?+cM|-Q$c2X? zY}a6I?(ks1nMm~5@t-s<+kekQ*yoFHA-g;NH)n}jGA8>`33Sg7*1e6b-8giPV%}I; z_=oDd@Db4HC!oz@ZThB3m*mkRk^}`dnP^2 zlFqb}I4;@q>72xy7q4Yfc>VoeXL0c_&Z8D!^KcWySt+`@p1c{yQ*$jseKXbd>Wygf z=TC%SUh~+848my*chPCj|Eu$C$kbc)#nEP``!Sr8IIcYYCnt0fRlF#95yZ(VQ*Geu zqvNybl9!4He>k4;Oa31L%>QsPB#$2gB;{%K6=dAs4v&5wYXCS3dk(oC7B5Mipm@wj zM#PssuYB-Z85#pS{&iEZ=KIe7{~ps^-|X>j0$3X=xa0piuDBdox9#@^6}ooz1%!?j z);>+2FMGpVq8HZ3QJi?FxpW-eo&}l2q|{<54lC|Sd@V-vTmX5SD<9sAOH&rW^~PXr z@V3q+A!5nncvfy#y@$r;O{wBTR`tpcgG0`PVc+*dX5PS_dQ=~hIHz^*G~aWxm}vjz zkbtaD(5c1NG>aV_|i32 zJw$U9h@%GGaWM7KLOvcD^FSudubEaGH20fb zE4qh+bq=`3KLQTFan{wAxa-XSSl5#N)VLrWrT*8PlGZ%#pwlas8;=w&?dBolwBtH^ zYLO9o*UJ2xmQPdVIsq8&{Xct|5%ZAjrX+u1k-AeFFKTqXT(>}PthJrdpuyXQ{mH#yPM1A zjWHfKY|00FSo+pq;q#1>qVjX=-*U&68C=w*`ga}*%|IG|DGMl$F=TCe;LM-TcU?R^ z>$g#)7uXcfkfLpJcyVWMGG(?epHTQ|C9X~Gw}ct5P^>5MLOV-fr*Vc=v@?RPInvnW zTwM2>!z%7V$8B38C{F~7Kox(5GeDPB7X7Ao82=e(A*HW8TrsK79N5uhwEg1|J+*&SX zC5z&JY>U3-xKx}?G&ryL`0WFV!RF!a%eABWtj4CSEOOX(&#P`OW5sTqZQpOIP25=R zoBS;fu6T9sS~G2(I_c~Z`TCSrPm5nGFTQOTc3tl8@qfi|w3?~7_4wbCvEzoviDM-C zMmVT38Q_eky`F#W{j&ib5|^Vh=c}p(g0p?q|KS`pxh`K7`61Ci-zKKmuH5z{?P);s z-q|biUozmlArnJum(&pIq?xpdVj!m&F&^Z^w9U)J6*!E#+?5)95h z`sd67djD%H=Bu<25dl6~w|o3v-s59S2v86p*_mZBa*QiSrO7mni8NLQIHHT2e0^MT z)v>kAF{#%6dE5W9zCWG*vLLBn{tBLQejb91C5gjhZzI?ZUjT!UQb^%@ch#WM&H zdm+o@)H-M(0%=qInZ#OVZ-zhXo*+A5wyJF22mu-|Qq(0zf{8G=-7k+4zr_{fu{Ucx z0W*2_cfm^aBW0R+bM(^hc9HY@=29ec`PKx`L8>s^6h1QWnIOBq{d^7R*64Tk3srcNAjKbsH6i3A(H5Rfo zj=gra54t(U9ty8<>?VmPJ|I}YOa5<;EXL`LWHt`V5%F0T2K46d>fLyaf@EjCieLnFEF^)OGz!$fw8S6ghYNGuSvF3f| z`o5loZH@nJQ@7`0KUmiHBW29u_B}Ve#6OKGvGXMvJsat{)D$mT{x*Hq*8RKACENY9 zyw`6mZtbg$$Gx0=v)z=5&aHosKiP2+a{%r}=ez&j{np%3-|F-JoO%$a1_#AI=UvYG zTV2cb3C4(2DG+YDwrVc$4M^s`RKPCN;BOXcUaR_($HS&`E#S@G{;jL$qOOfNUeh~1 zz2(oUXf3hD|2T4fmwJ`c-x3>lz5}M)@A1#;BF0tm;HGiMe+~XI!P?X3&d2hjUwj~O zOHS$aO@JTZ`ljv`an3?&1edqZQ*v%7$&~-=r+&r0bpwqI(ITk^E}85FKV*YBIqsDK zw)!7bS9$&48)>R($MWCvy7t^Bnrq+KIz~bzmzpT2EnNsWe$qO(?InZjwn5V+H?7`D zn#ZJ=>cBs~GsRK9``hf#)%~wNANjW&JpMP#7mh%36)oD9;%XN?e@xr zp<)TQ-)hE3Hwo__A+?IDIal8;{qD6~bOZDc&t}8o)GJiPf(o)GCc!X)m-|hSEJTZ` zaFNky|45;zc8bD-V?K=$Pr zTZg`3$t=?vTs`z!2ii7|S3HpdCs__oc{+9E*V{GSHl!`<#^c^a)tS2M9a7Mr%+(lq zyJZt`$y>0fI;(UV;o6L)V5>fQ?@{V*Qmy!FqH=P$MIw^`B`@B1cFf5D1(E1pjgM$Uo zamzOdDMTLKiF1#Ln%`}49^{0U^R(}c(e9^Qwsn_l+a(bt{${zi~Nj^ItA{`No7|q~F%q`pVOG zF2uroak(1<_flv?zjYk|@$>iiXMMX>zT|&q+j=O71^>=j%5N0|bziWQt-tyU!*9Hx z-!`CCMB{X;WlHSK|FHb;GWnD5&^_YX%Y96YqIdJ(b__KV#v>3$5}cv+xYt;XoEx^D zx4KUVuZu#$nJfoZzxA)fF4On*@I_C&<$&1x^gWILIZn?@to531Y=Uwiw|CLL5y5_c zvjuDZ?>qY^#aeOuInNhg7f*Wrm+_9$Y5D%ShqevP7({293l_i5xnLi&qFel%LifuS z|G}dEC;mToobhm6dR3GKfQ@?^_p|oPg@YeF_`}SO8-76NIVEU#eHiB(KpVFf|FKNx z0cv{Zo*yV}hsVRszsWW;0fazXur=ZbBmZyVFZKZ=Fha) zqX$$Gf+#)ofyvcl)P^eI=J7`aVV7m}7J7)Y{Gaz)>s8Zw zF=T3gXv8Jryf)<0LWP5UsJ*4}$>ikFJ41=TiWJKz+YwZx^C-nm$`@!IfF{QpLsW zMw{LdqjmzvR?Q(;pPrMqd>b7ek~f_H3Xh}yZ(6x}yNztv$UW4d#;v->@zl-3bX;%= z=bFY(@Bj6Ew-s=Q@k@od+}})^L84rIG&}m#zaQduZ5!2d-7|UAYrDV4&u`SgJbKI_ z#LN6^4C+u^`dOCWypIUmPW{bO#(f?xCyv!mVDMRrQjOJLJ~JNEneSbJV~td>^BivhbhC7y^Qt9 ztL;HT)?I+K-2RP%E=({AvJk8?NkZ(u>MVh}7GPw;)e)kew11Pqn3cMF8Dp%ShOD?T zRIp4~+#N@GYRi{-&a2#Wucsjlo87&NE7dP<9BdnR)rKGXT{H<_q{(frgK4hu4{%KJ zn9A>!T2l)6Ys2|37cf#3T$pLm;F~|(y!9omLR-jum&$|%&s~!@^lvE|h!4aZkurGA@c#7pS>JoDhPfgqBXJb3cus6((U z1AYDu&U*7}w-MOmA7+tr7M2!17aafE79#CU_H8HmU)NNlrmcKPc)i@X=KtoOu0cEh zBWRhSr=V{IrsB+-4tZ=X(A}UeDSLn*SMJVj0y8 z1xv?!$Zz9${-?Hy%L%GuF8ocpMaM~rxHY0fXTnW5%hw58F5+6OW59f?@b5Yg+xU#Z zP)yxC9Si2`Gv(Uch{SP4kZsF6L@64Vo-Z%Zh@A_y{#Slf_6xF$+imf$@xbTjjaR|B z?mMu)d`SF8sJYh<9B*el%8}On;;Hjbl6!o^Tyq83!oXU044)FNgT`+iW9SDO1F6_( zs@4Z~IqLsUOE;NbpK1PA{&-5X6rVh;YTnF0SFS$}0dylBc&q;zJAMc2m0Yj?{q_l- zM@a5%JLi~v9@y;5;nPP}Zra2-FB}Bph4l!t>cP+5`!UXGdu+rcomgIK{9c_Ck~?|5 zS)}qI{fU?>sPiR(vrf4XSxDdegf`fK7-^Or=SL=96J{B`9~@*1?tJa%fq9d`n=h7t z(0en`L@#Uslh)QYJ)@FH(m6y&0pDRM*$^h#T|i^`EPbH1JXxeA5xGt`ns!;otu-Tj7Fp5X-b7Z=YLa(o_^C=b^cx=bEeJ@I%$-TF`hTk7G`tl=871PkZ7(rM|{!jh^rF+8r&g>nH3A zFTyf`Z8Q8j3scseI++uIV{!`*-mu&9e@l*Wwe?kmC?D0e_}L^Yj*)SPU4Eqbq&M;T zLDyXQJU?&ok7eBQVVcZa38cQHP&wgS{>M`P2if&4|EF+D&-Eb%2*$H*;GEaCDu??6 zoNFavmVdhDhULA^vmGNIln?%{J^4J43F1-TEc5*DH5|y!8b&dkvki2{Ij2kCXnd9K zm!nL6TX2oP@@{Tup@4C{VwY{Kd3w$x6c1|Gkzq9e`$mt0iR?J&S{J|I(M3Iqq~w2( ze~kPON;!Fj$148$WWNG$^?$j}u~D*`?`)HZT}K#C=omWQVWKq1qyHS5>%Xu6`7kcK z*sJ!6l^b-q<%!TP*vItxU;dYgnU54_$}=haq1evLqt8RvSo$+wjxC2vkLLsf7SV9~ z%7!aVZij+|i2|wl|8T;U>l6o{)8^7PEibl8JC@|1HN|DcO8FG!1}f#(FF-+>4`qf$ zk5D#3z64f}+hbP5Jbu=eT!^#{E+?k+#GN00r;`yVArKzaI&GYY{{uF+Lfp2QF z*7rNjWhaB{CSc%NlSbb>|H)m)!gJ%*lN#fNvF7AdiUsDPsAKc*uao%3gegmDC*(|$ zOt|l~Cs?Hmv1YBH`PITbr?@NY&Oqxml9=IWk)txT5C7cG)2!1+-OYHD z=CH#TsdBezs*P(7j}p{xqX7K?0=R*=9!u3KT_+UFLn}sxA#e$w4o|ZbIha1KZLtUbK5e#ap_0v3h;l9V>$p018%Y5BM3B}t_e9WZN@dvVx+&SZaB9A@V8-chrve&EP zx5^hhg_+|VRHuOF=VFcGKeUbLSBjZvu3LE#^8JXlPWbjvSikjr_eNEJj|D2t5x?tp z9gXHV&Hs%5qYu@wjrRpR`|L~nQ`C}_{}TTkld%skElY3G`qnOt@Kno^=YjfD?6n@P zK;@{4OVrh)2TVNBfeR9)g&OMwf z7_Wg!T+V)JIsJfh=bcS9qoebGfb(y^fbz)Djp-9}!T@38)m|Wv!y0IN-|*(Tem?jh zTVC_dyHBg#@9Td+>lB_pec+|gJH0sf(74a1?Jd&0O58<1T;p++Ux~*s>%&hC_<*>S zhaLX(jt1QP14t2d3z0({TyR%oUi@qUS3jOGst>pAYf9ujscF`2!M6byYd=_Vs5W?T z0A83ih>7^2px-tr3mCkR=DC`gu1gZW-9SH5<7HCYJQQFwX(`b&Y3E47*)~X@0B`tp zfrkz{!a{zHWu5yvKLev!d5SKmEpxD%JQc zpLgO-gazs_i*$P{{yAxAAx@v%GJBDv8`axnH0C$#bKFQbbF>$7JQqBdzVL!4^oyGf zyLvcIJIMM8e-}i!a{If-{i9EkCP|#4xrCB)0^c5*w0!-oo5o2erX>N;!9k!{){UN& z!fWR{48B%=&M~eQ3KozQ*pJH4cC6gu-PR+EevAL{;3idBWmax`(p4;+UbaTJ-K@FsA4+CN?ah8a*!_~-7tjCtx0Ls$ zQ_s6u@EZTT8LTfHvG0W-WYDB^sSJ5rCa%q#|AX)uaQ@-g$*W7(FOKt#t8&zn?RWZ9 zIEtl`_X;;Y4gr`Q~Nc} z{UKc@EF<{*I!AZkzTOynKaQ`_Z{>6RZu?`;!Zt3Cg7O9c~S zrN?A_Z{rKxG*C)j1xAh8HMS}fQd7Y4|5Xu%Bag|?bqZPmZp7ra(Hn4%sXKM zUL>4!-WMLCA8)gj#|c*Qs-$ZR&CJ z%GMyj)p^YIu%qXz5;AW{++yPVhwbBeXTLcvF8GAs1(Ut=0fv%j<9k3JkiKt42jhsbs_haJN>kS)yi}5CN@(oxSW`FW z1>WRqeyVF1%V@b>EVqg^XMN~Hg1LERN0##HXni09(s{>tKka8u;{G+CDKgWfZL!ZS zwa}u^AKgAG_26UV~Q`SUFCtx zeG3P7%p5$C!*di+A-a2USA65X<6O}3!cOAvjT_zsor_$?+0*Q9kA>lK0mk*e<N>SXBBKGmFM@t^(g3~0m$AgJjM(pke)aE?J+JYvUXXwU%TahsmWp6QTIDSPKX5 z5$^TBA5xA;v!`FrXSc7}>a|qkYR&`TxbqyyeYJg^vyF!@rMLTla}iyuT8DqIaSG5NxKS?s zZhOo9_aOlM=y>j2o1){a+gi%~H$p-&%JMljc>S+B#F9S}PCv{OrIXJ)OC5*g+s07& z+iO^l|4}wsu!V*{q_(u9^FO}if0g;UyXEGH8T9IiISH7F2kZy}XvZKFSlW+uxek0H z7V+ips!-rW5;drSeoy{PwlFore1R*6_27i^3|j-^c1->e?C}@HgBM3y zG|i*Y(*I>!c(KtxJ-2!O#|1{u!6aT?#I+W2uYJ%DFVttgxfE;!$lrhOebk4I`!qct z%sr08jekzQoE$bj;c>y<2}qKawy1GHHa4bWO(50o&&573+MXO*Z#M+CB98Sh8+cAi zkHB8UGMTT0UP+k7X8&!;ZOY)b+$OBApKIKgKJx*YO;}eRXw24JEHe=p1pv$3lA0fl zLT(e*K1b{3#%|MG)4s3o`4;#ayquQiR1p{bH2anJ0IHO zSKXPvz5iSB{&s9*a^3SyOwFs-SF?sx%xRw_tN;6a&Iz>smvze-#dBlO zpCrIy;A!`Uaa|8m%nK$#QuHVX|7M(VB9VUMz3U|Kc6Ho4%g!s_(Q$k1ao7>9e|u?Kt`WY>G%7AoV$#uR3Sp;uJAs*yCC^{A0-c z@WpBr2EZV+a_$PuAh}YO1R0obf8z!wE?78Vf}O!rAc2dkn&U5mBusy#XRZXA z*IpW!Z1f56r!2hrfNRr6s!UJ+C~Tkh=MOPp^`0{#B{#f z|7pp&b&=`JzE^?Ypbu!`Y*~d>PE-u=(p9dLOYRp7z&=9!$76f@?I89;|I|LmR4$5IpYE@JgN*)bunkf`ZiVZ7#v(r#hP(iUNsAd0M4TRv9sfP{ z)aNE)_?u3TjLTW;;5?pkmD|Db$QuL91z6@lilgAM8c+9=s{^zzb>lF^)?gW80OPOy zp#h_D-+Xo!loy}v4~#?}CbRin_y*YdgZc>vC2Mugyx@XQ|DzFPs-?`~v+bVlbU?LWuY^BisN0v3?i;)lS6nc94L z_@uEIWX~L@SW zcpvWVC_6nby>FUM_21;b$NwAW+_Pbm$_UAUoP$7h)YzOqKljgAgs>!B-GS9m9b9+j zgtqf7|MNIk1^FIj2jPJ0{}(AkKYj2g1|Cc$ilSBl^h*GVTwQNDMqNdB0=B{+E&W>2oUp0QGKS)xiOP`uu{ z%koi=1*-o_GA`$j4x%H#d06UzRIr~#{ zD~wZ!C$Ej*0m*h~oD6U(7ggVDa^N5HKU!|pO3}7M)w_Zfd)=P{FsR?;1a)2xX&MRo z$%7R}`Oen54BB%YqBrJ|8|v%jvK&oyy$j(IpF59TuVuPjoT2JBgc?7}70OT34q)#8 zHEz;uZ5%zHp9U~U7=OZib=sEjm`>iv?%K=ZD1h5pDZx^h43HBE@0=vv0U7}LJVju# ztYkQuyiIC$( zeSt2pQ7KOSI}eYL5KPYpNSsvPWWf61B)6bBV;nIq<{^nvvf$<|>P1)q#kwv&6ZtL# zT&RnWg)G^QR!$C57uf|TT9ulV}f!@YzX`~EC$obv(Qz$lIZ zicvuE@m#&CqZetmc_0|WlK<(!?a2SsCiWPVO((7ek|z1gdDTMXts##eoW12Nko{pw z{k7vyW``>KC}#XmZeNbnSnQrLa5thMX0O(va@FQjNCc>Hy?R%wfd;*`PVx@>hr2NO{xU z^MAz?;B%U$lj?OjJ6jt|``3OPU7aU7SGUf(iSe|nf53UOgX69Ep3Bb1h9es@t@6Bk zUgG$vn7!B9NWK8wsKChoH{QSGe?5MS{}xaw^wtOF2a&-#$6O;_jtby?b7vmR?Os@M zoeIhIA=i?|xqgS{idb^#$Zb(Ek~-9o_1OP6cDS~=FLy-SaPCk)kp9oPbNn-&^Ns4R z>Fi$>nv{ zY2}0`tTw)Dwch+jXxkk$_W z*@-t8A&L38%N1ivlV`c}MMIrkqG;9%#^8kc%iwu@M?3VdHoVo8X>V1kk$C%@`*7fI4? z#(&ML7vd?=7t{yqp+#I=zN&($Tmq5VzhcO9Amea9;x%s53E!{#hHWSC_eC5fdMA3Z z-QqtRBeO71^aemu-)=t_-V*}=Et-@2C)xiNgPaHAYIXG^|38b~Tx2D225*v{5td@f z59bZlL-`0IH)b0P$s2a)93r!jklfgB2{dV69xoZ854yNegtYTM^`=4tm?#ju@Q2=A z^PmEBhE?8f_UcAYCs(RC}e2O1*9)9ej zw=`VWSrA5p<{*+cUwEAF$MVqkhI@>N>;`W>eLFf|{eAH6`Tw>m4hC*L$r3^umYSbe zI~yylL-%`+|ISxS{1caL`O-I$yWZgb%pJg%r_$n1FxRb2=U8-|@vonX$BhfM&X`;^ zkJ@l$2Bxv0amOK?z`>(S^R^!J>Vy6{BQXmzs7%jiGPlvN2rh0;}e!f{Dbh|B1)EmE*2+uWRZbV{0D<>CkKC+Mh`AYj393T&s;eKfv6W zWFBS?2i30<+rxh)S8;b6ODuE)?K@*fa$71_aSi(P$z|+$Tud|GR4Q&kZ1um)XP(wk z`JdaJHdg=NxH~O)-e%6@c{c2yWEl5aT1}wyQf+u%nQ!fpJ^3oZvC-@Q-jiT{>2{=T zDjvnP&_2q?qz9OXOpYDQ;b~(dZdig}3Sx{m?_#a1ZtjUK|0`DTqN6Cw{Cab3P>h;0 zWnNzen+{62{4g9#{{NT#KdA>OUcHUvj1jNQaUMH<4FZ4VzxSAD6E**H{Ix9U7dOmZO^jKP*Pf?@^t_jkgf;dnB zod@zsa#BxA2p}xA{evVED_;m%3;B5gXP!87$OWwEju~7dl1Qp!g5JjgFz1g&Ru2&m z%;{S2UNNy@Qv1O4z}2Up;-7mIvrRm{NRK5Rr!D*z!Np_5N>t4whV2(}_Ic-pP9?|y zaY$lGh>$VELZQd{17FB+lH~%lbQ7EtiI1d?<}UfXxKDyl4xuZ6)0}ts%xEFnuB}p zI`{b|P?Eey*7Go1ABd_P$heA2y0`FJy{*;#waq9vb4Aq9UlugOm%LfGh`&9vFQ)T7 zkGpgAJm!X5Z7jq~57x_bn%L0xiY+f*yh@ke{uguPN`+}d_?eXuf_Pnvj zf4s*0e~W*`-Jbh{`l!C&;-5dgHr?j!O~g#L^*j1X0q~aJ9Lso(|2xmo4XX~+HPrX`uh|X1 zi0Rio{?%DkLV}tOtWp}``*+N;y3+PiCxAy%uc)ztLqTCj=k$A zEE+|uwQKd|&)Ww3xYHJQ3@8UUm!R`S@i=#Ui6>xg=6n6jHl=n2^C(ojf3x6H|MPs`2NC9T?ZcnMC$|avn0e1J zq%oh;R_){CJ^xRg*ZQC0o^La5uSV(lgYV6kJui>1wWp3l-R{kRVKRFi+CEf!{vPzN zxy+~HYG6o2=u>69k~@<~pFJkCVns?`RMhx?PdhP|E*(@(M*U+BkjdA8;syhFx8U3j zRo{gKzJO&E=}rnc$fjC7y=Gu2A=mx3R}xMFy_hMfO%Oj_qT6&~$B8D0pmig>baV1r zYIqRd%~A(F`S8lndH4;3Ndy>{VZvDa>P-6FBrVu_AFr+Hf>A2BZVk7Y9p%0~6KXo> zyz8d8BdNy-aVpEv2Pe0{i)d|=NiL;eV&8n6WXq577DqiYFNzA!0H@DTbit*~!OO9%E_KLk!mbSBAw-)hAjb>__wAxA<>NVA#Og?%3)0 z_Zg1=5dXw+$?`+|z`DQb+rPrS&kK+Jb~xX#?ab@qyAz&aV{9At``Gg#JL}SaKRraZ zoA>S*(At537Zj8G1GOGAmr&9y1mZ)8t{dmfgSpN+y&m00^J?jwU;4zYVV(!VyfLl3 z|6Bg&&Bj|3)7WYGzhpO_bc2NJCeb{V$m#fx$DZ!7rvk|xz=kx_5Etk8)K}i zVvhT&&Yf$kUEl9d=Fv1=Q~j7a-d_QYyhGs0^ULw+c@RteMtO#BadNutxV^`3-v9Z$ zx^61Z+x30*`NX)|GiA+utQtIgjw5SsY+mbIG~VieCaHq1Zt&_GxT>d)%MVV=#^z6J z3?83weUf{x|7Rby3(%BAFKCA9LQ-(KqwG%}W5ycyb^h-MR9l_l`0kwx5$xY|{0sKTMlzj>m_eWb%Oy#>QP> z$8?PM69Ua`VvaE2245wsn;-|Fni1)Q+D~El;Ki--PVQP|Pva!jt!;yVmD9j~WbPo_ z14KVz>ISrE3HzaNNxDLFtpMF^RCni~aEzj$bYmIE=@!F2zg$2vi5G?}w}^gQLKnhH z5XmPSupDWG8&?9fL}4h%i2QBe(tx=@ZusZ_k*6*pAkd$321=_kNULZsJeY zf#>?M)hT8!PCJ%@@WB4iw$J^mKk-ToUnKoQKrTanE%Dw7UB+~Q(^uz)ZQETBdpg7| zvNE9$-zb;RFj`c#f}X4T{*2jDZQD35+i;V4ip|`fN8tX2m6W{IHnLpa0G)B7Dz{Bx z?Ra5#Zbv_k(>Em`g^1|jbis2@H+aLX=BwqlJvE2Plw=Xq3Q_d zgyf0Wn5v%TZ-j7We25dyxQq$m7l87A%S_7z8Yvj@gq(V*-m1I$2Qv2@@62%8fBr37 zjCLtHNR4nYfICP~V1&Vuuf6C0gBFT2(JJRPV7A@zgn9pt-#7-%wc@k-YkSRGU1x>J zXWY*C=h`mp8ps#iruFf{pY7DS(ofc}bX;pGvU|_}#ED1WJ_oo4Wu25W)Q=p$e$>1Q zNBMowMlLPLtR;A!9oxZ0)H#1NJ~@fTx#EsKnYk-BY;pVY{+DC6HVJrho^dnX)HPuq z<8S{gZs7c{JX`af$$Ew9S--6Z_JY~Ooaqm%%gP#e#s=q-NA@FY)c=WFpKw0ga_Gc= z3Reg}o#FjqN6Ghj_WWNaYCiH9@VIULSvDWNdE(s3a;y)m+A@PY-m4dG-7@3T&gNQ$zB5+3NY`883}bCkDNb zq}t+3%k%Z4F+n<y+*1T#xlV2s?m_Ea;?cS8(a(x~9w%<>)pa5zbxiB zk=&O$Fz^5EITvd8-}C?dzy6<8!QDs})0rZO17Rj+J3q$4D8>)(&&AJZO_L8Ra+I)} zG~#+RF!jMAC!3f@TlW4;j=q?Y#36}Y3o=fw^%+EF>LVpv-Gr^i{Px1srS)jLuY8y& zz!G>2d)@as2rf@BIQMzSOza+Uks=gBv# zCSStZ#2YZhFu}B7v*%F@wFRHzpB;A_j)K9EZ$8>Kv|WCR&C1Ukei`Q}V>;gW+pnBW zV^;R^4W9S~lo}UP4?eb<={Nb``nwMQrO(^--*nsRhgqM-Dkm4rIJe>#-BN1gEx&Dg zcC1XDFs{GpImcH&>^5V~oy-xxLEt@?Z?*z!TEI6fe8=Itj(gt8e=6cSo?l~!xce@= zE&iL5wsAfFo!e;4lbDJ(3pUSU5n|uQMOT_&j&xXMVEJx578*;iBFS;USl?nrYZo1F z=BN<6N(Xtc6u1*1zbOfAuYEneQ9hhQe~mxUxTjI3C`bHbJ)h&zZyzmrchgU8CalT; znDze`Ow2sjHZ9We4Nu-DNB=F*Z9-xwW%Y65Eq}Yo-}uyPoNx7i>+p`*ZihK$Y%NAouM z!prabKe(Kgm^uqqOLFEqHurpRGdF%+ukj!vX>{Yq-||08-|7;s&vnM~m+-f}hL<_w z2L=4_Zy0CiV*fICAWb(6Bi?ml-M-d0XTCUB%znA{1h_t!nAzI5IL6_A48D<@xPcr{ z91QHn7a6D1tJ>E8;|1s6b1yi+v@)C$cFx4kOX&~Yk3}JULnmp#XFl_E%VXg$!JGX< zW`Le$qo3MuzxK__#TrbL0CCR+Y?V+kx5XP2+moEXKcBK#boC$@b0*2_^dsA9ep(*e z#qy(zIrv*3`s-XZR?F`3z9JHH-r1hpU7({0{kF}<@X`3`P5wYzNu0w^f+0oA19~0X zk67=eo-I(Vgg*U`L0Dl$iH|djs^?bRi~XAeJl4>u+V8i)c5Q`4#JIFe`I1!o&4!jy z#K>_SuRd*&KT$*>T=?K8ohbmL&Af}0eZ0oJJ3SgYWylW&rcq(f*(`1!#&~>@Xf%5g zES-5?7&~oaA^h^G-~lGH%wSFkwi5kod12#%+ByNeCt&W&e3+#Sm~H!BbC~)@i!WTh zf^c!1c>>Y(`)2lAQLuA>v{=tCR|SUdg?YZe#r|`@{Vj2R&vns$Ij-(sJkBvXJSZ4h z`NhtTsW*I0-r_>J+VvX<5Lt1u`Sfb6`JZbFNd9lSyQr|a?@zZk>2uEMBZ|?g#}G$( z7uQM~J2yR`@lSKG;d0CWT0U&rz8`U?Ga%H0Jzm~o=*oiH<25Jed;hFAceoz8{Kq!R zd=bxzKVs#RUGG@&$UoRVLuFvQPW(FJpK|+*h4NG7(~s3yM~ZQbkN?ePn6+w;eNs!N zrwwhH$_@2dwy<2)p@b*C=bfN9$wh|OyQJ-%)U@@<)a%bH*wbQjTikYH5>H2rj5+ha z+Tm)%H6>+U7{wD0ir$`!82Z;7b6x%P!8m*k^4OO{U-lQTLHJF_ivPQMuDo~GSliL{ zzvdwFMGrk<`q3}&{fI9)V8-10L)k}(nL0x1g)R3*=uC6^*K*+tLBG}i;t-EL?|UZ* zGiLd}9it&_SU%^y^WSru>j=+p7bjTWBDPuqR5P&7uk}B8?v5Qtw!(yKmF3}fw5hEx zOpj%QGkPBXzIpk%ldL+qU)VnnHw2jyBL=zs&wAzN7xs}4u&rO)XOC&|y3XO;-158* zBg|w)USnp@8!F@d;b)F><;MNk+IW7v_lb9PoOsvhP7clUAuIlkNX?y-V}GtD$05zo zz}fr!$Q0SZa^}Wt{llh&y8>bSjH#t`Nj$ZZ!cJS-j$CylSI|`W1meMt?Ep1xeiiX=hldFrw=Q?lffeXa@J%|08P_9HY$z;{x*Y~#x zK!vi}F_XO#OS!NTXUm{uD2eg3A$@Q0P#P1l@*5kH6tC{BBnNL7BRY>utp+VB%U2xo z9g8(YZ?tH-!YxW}%F$v+7CaGpO>f=4@H?3heUs*r?P)=ttDkF9sWzpE{Tnuz>(~5$#MXnjC|j;g z&spdHN49SyjGBbFrv~|+|4*-r5gzA}_qlO?-ijfgu@27D+9tPAv84kdhxRRf&RPPC z5W5^f7)lYjA3T@9Rv==t>$o7Gg?#pnD~EN+!F#d#EDf(LL;FJVhR5rJxwyYdDFv~_ z|8so)CvHCvVD}t!`f*C_`0x3;{?v}m($RD!K6t@yny&oLRvaZe{gaK%1r;?p-_ZJ2 z|Mxh3UpX(t2fxSPkp-YP;Btp~_<7v9ciG=!P;`**om=+$pTA?xp;vCEk%g-cVO?`9&<8#9wS$IHO zwKo$5b4kZ>%6&e{&Dw`;-}1lKyv1|Jl>WRp`Lp^`L$Y$8`mb$JE_vo}9X4lrHc zEcL(qXXdp>|0G>H-vq;K;ReC$`P}mL`}Z^2&z{)P??Q?6x8ufncwLo-laBkThsNxk z56l08Y1WulGDwQmlf`~c!bKE7SQ zLy!fj^Y<#x^M&XTSJ$6!GJopNnnUG~>fp-anuf0n>F)H$d{~TIdxNh;H{5$*SkgqxI=fClm|DiS5B42gTIhO|&uQ=NJVv*k#@qWZs|K}i& zH~F()#Ju;TK|H_V!5dTGxUcXx))b_gM9b2)WnsZ6{;94|-Zve_JkEYq_dI8@APQgl z_V*g@h%_wRmQYN#(}W8E<0U>eE>s65{rANJ0F?iO<{&TA;2W-Nu(z+RHO1f>{}*tr zoAy&#KV24D_;D$H?-P!B7TFh#~hu>9`&C4(|`M`c^xaqdwxjO9fjZL z9-sI4evm$r)9oHwPp`8YZOR>QGQMA5<`g>yyjYbryxF|RQSl;UQEQ-AoZ;tBjwBe& zr6f=4{sxIYz4oW=J$Q`vt2pp@E$>O|=Sf-M>dM4ilj$2y5(gASzCpQY(H&9?mOH+j z=R%Yms7c@1=%?TFGku@|Dn?)ua`lb=taAj|E(K!C)c{6kfoliPcj<>ciLj=zZGGjy zL&;nd=5Fr&!cSKjlWboXPdR3z=0FH4FbeUS7uNTCfYvxXBI5_c$iM$M4{yX4kaZsY zSR9m1or+=Axow*IN02;hPd#0y^|4|zHik*`A1$Y6OPUkXX4-%Kb1b6xztVzpRQZ|wbpk{2)Aza7Q}7+KnFpxoE8o;EWN@_pQ*Cdk=yq1k@v z#p9g#TNEZ;qdC#SIE{Bq9`i*NQ+k7R>skrTs$`4n+WN?sis#eMe-)ltyA6OrDWSXCzu|DTFJQO#$V>b5~BC^r@d_R0$Ja>DY&!{*00De&R?eHn#xZ}g~ zVR5mxp}YtQ3)DZtbnTUR#*1#^O&X(kZ2FJ?yQERFW5eaL$sOS$goYEk0Oq=rXSBZW z@gMe+q;L=T zlUTFsuF1D71EQDK6;-QuU!%?|xBIv1vG84CKdDghwHNbjxJyV^*L%}TH`3t{0g)r- z!Slm7yePRkJ6?NTJfctk5oU?hjib_P8ZxDr%$YT!Cm;`G65!fot_5K7&N#Nt z;d@;Fd%wcvTK~Tsiv6vD;;4KexWvx0j=}P^x9R)8=rRma9x1csr80ve`%~Aq9jC5a zW(k`3yF9${KAfkW8+I%MjU(2tY`j;`m-@$fXAKqXWSe~U|!^~Sw7AIIJ{ zbLv#F{%J6#8EF8eg;*CdOcEL}Q&EUK4unZMy21PSp&d2zDi?)RIG}Z_#KsN)wm`Z= zJ~n+EMj=IRT4aoZ2)t>;u9YTQ5^H}{DLo6nmRUbTHj>WjweBkkcfkT%gbh0vN5N37$ z_}JbV)TA81NSMI^a6hykz{Q^05@)VJ@)^TEZVGWJN$MQS7#me*B>}zGWY=ct_f#7% z@BF!mP{#(@ft6Pz{_c1=c%%Ar0;+lYP<*q#yy)DDvE=JFuLgQza^R=9xfeW#M@Y{Z zHyh71&e0_d%sp@n^k>UY7{*CwkKfXIVB#dho7^u4#M-ZMt}?Do$@Wo;8L(}~zz49= z=Ejp-2YF~hcX=Uu^H8WRtrPd9_YZF_{5i^a}P{koiFAuzOLu$m%pDMQ!b?AV3E*` zukt_Nm-bM-J!AQ2$$dMvTH{XU9czz&6`ND1vJ1`F!x93{%~j^p$)n$oS7x3~bO=39@lB1Ty8E~_5OZjtxNOE?*U24MDY-bLeWMjLwWS1OK<8fS zf3Te#Yfrzf6&8--aR6~Zj=$G~@fKtc#RN@`ZrZm_g%!tI`y%g)HFvbo_?;NB4KL{W zUg!UFb$r9&ybg*VVA~L5{C7NH$S)mtd=(04P8STi54IzbBiHN042@rK{sA<52v!4I zea7;nE4)v*bo-ue1*{^%p7S)fm8e)WVs7U=7Mc*H*DV=dc&>Gct2y((@WzS%iWlL8 zGer+wa-q@Vb}g6Sy_x>+VS`I2%_Bb7Z0^kejAzZ0>OqiB|&~< z3;X=r{$KqsNq5g8)1-e_;!r0`QxLCk&#v+49s z5cfFlCy(^?p3I+lDp_(rNTxqj$t4_9{I6p|ikiokpzENqT21vi-N5W4ye2}QE|rI7 zUeUQ~o@iTn@tA0i;aJ@sI9G(-*l-t$oX!bA8b&%=8#B{hj+OUC3Fm*2a=&j2Ye=ES zWRO?iI~P~eXN;LY0nd$WhuCx#cZ@%ue>cNpC6t&rpkX^lCm5Fv5VGep^_TdR>F9+6 z=LODZtZ)0-6tp?kvGce#6$|OO0FB+}e0UAS+^vOaV6O#P78c66#4Oi4{+Buy5FQ*0 zNU>4%=4&OB7Xcf_>Yhoa&lo=B_}?}SeBpONOHj2Z@SIReSGdxivc*-gMr#>uii~pIsH72wU@uTO&E*+H{%Qc#gHS2#dm2%IX zmv-&|>bJ7EZQHS~pL-N`eslDh=z!(}j%&vy>y-e!4()u+xvKltxLKVI zOU{u}ABB!}=kCN~+spWfq2Kf$oBI3uzrNe!4b#1OW8{R?nG8{)+U=NOpAzbb<9kh1 zbG;oS7uvPfzgn?j9!qV43# zbIAZD6@*-s_<+5rQZOr7DM7p)cT7&ETbCPLA$tAH=ar>Omd{pRTiPF~(#997O@1{O zj0>H^)>Da*6WqoGdH=g%t;gm0ee^4tAo-AjItkZWs5lk(xhD0JJLhUF-k^k*HV;Ck zq}RV5X>w{aHeN+gvb*0)haCPWQlBy3eY~*iVt$*yu(2D%NyS#-Oa0Y)_w|`z+b0{w zR0rMYeD2*hzE-LF{V^$&GQ+loKjHk==)JS^OhPz8>aExwl&0M0&+mRIt|Mb= z4r>4zd!93Y{T4^t_-_Bjb%9-7cldeEg~ts~h36}cf1QIFcUybam*u;>)^NUPvYzq(jS_O4 zORc*Fc)op6j>h7Tj-SqxJp{$~h48UiYN;OYjr$8nh4WLGb=4+j)m&i7|EFJ18M>Ck zjgMQGX4`t_%iZ^qA4=zIpvRg+bLEx(l+?BIhd+2!?vVB8V--2A$I_f{+@j}T1FmhXv494nP?VwmZeqgr@ zqaMB(YaPa}Tp((Kk9#&tvAvmp8^Y@^EOlQ}?DE6xiaBZ5-)?(wP96RUu_?)*;Cc<) zixD-hTpjgU$ED7l(_-g;?q9Ljag(nx+&okR)HM586~8R&qhv}#FLo?pkdduGE8c@~ zLg1d0RC>c!ZfTlHC8Tl>C$D)h40DW|1MyEg)ig~;jqG+?Fs4Kg6-7*B+XC(p-2~NR z>82;Z1YF5O3rtA6vWk73ZwQxOy6C!rp1`^Q2^FQqv~P~rJ@wCaF!6N~ZDLO&Ys&*9 zgTH$+dOmZ(iy!lv`n(n{VROcdLH4Ce3gK=gD&0`hgxnatZ`p``j*XVt^WtP%IHMlf z*SMJRc31kV|Lj4G@*dQ0+|Rkgp9-_7N$nvva3ao)Lg4yXoC791N%qDYL446kv*m<+ zx+1J+$`AW9?*Eef$n&Ed(inUj*AGrkx%h!(iO(3L)#fET7B|=}pF<#4e03W;58T4a zb+6BDW6|-$;lv!m+|~=2)>mX?3Olfj(*PCw%(cuRA107&J$o}i`$X*XS+kO-f+#!> zok8(>`Z5l>==XVM%#==N?98>8JKit{#TB>N@@@02o=KlxLqPkxjQB;>ZA>wQsMCdxtdYw5rT@-d-}U5Lpj4653(Uunak=p6$Qw!J zqg-V3IoB|(lRj*L=-~FNiEX6mLIj?9CaO2TlD8WkMFH`9=uh{p^dgtN6cUU)*2zO z$N$NLz|H*BLNwXJzr!b9h6(E*GPYvwXi*rgJaqF|$^bRb@kRim5YI-(lVhmlRt~H0 zw_dnL=iqP0H}k_5|3h8paN>s<|7&;hBUYcN9v|q&@v$bp)U?ZS{gup}%|9fXa=pw3 zN#mSBd1Z^U2&*SlrxxuT5~Ie>f!Uz5j*E!N8B?#8TVn)Q3hBDsi}05TI3`p#{|%zL zM)#5wqVJ5U$}=2?S8o01Vl5Y*QeCj{%)NX*XH5#q|1mkA6j2<^H%sMi8g3{yc&$o~ zqTInad~AnYP3c#5C>|gDPF@Z0JnHp>N9g)Lk>DDse4#da{_j(rujl*Uzqu{(7(D+e z;~?;*_Uaf)tN*nF`+e>OG3QBMsCly(Er0Wa#L^3($PD6bw4pqvbEMIO%wJ~9irDb3 zHFzSiL)2u#<6rIXVfX#N>MJ4$f0q3**J8U)byYXoNk44ZIGneKCgtwxe+_N_-|&AX z%5jm&@$d6M`6nIQfbaj^H?((c6#$wsrXE&apygRKSdZJ z_xQU~8o-N2wKoMY&twjb&_tPF;+9P;Q9dMDRq*Pj7s(F}o<_BjcYSV~6jOGOk7d4U z9M5vG5)9y=od8N$Al(4ogQxf;cnGwPu7?Hz%e(KTwjzeXN5)KIngrg0qUCsU`MKup z5Mo2mWw%L6^wq0~q~*T_x+hY?7)Uqj=On=T^RaEV+?WdP;~W4jM8!|~2H!@mYz`M* z^}}s-L8I5SxSwM%`3f-~ozqquiVsc(8vi}dFTVvLbI0*VEjX#QmePicM_2-@x1y~F z#cSiT_3TOG`0z;Jx&C|qv%Jxh7I)Q8{lT9&{CoOc`O9W1Kp57Wo}jVlj(ls^SeV>7 zB*_^UpeeXxKjW1vT_@#lT`bl8B3TKq0Ogmus5xZcIG(xAA8d7urC{i2DCe4k6F_h9 zl?|oO+gz0n^}p6Pul;kg4e*6($79^=fb_XK z=XIO3Slja6@A1FuU;X=f?Dk=f$+Z#d!1LvK%ynz~G{<}GbXpVVp6_TrODD;Z=R)k% z{GVbMS!(&eulu1s#hu%d`}g>hf8O)I*`?p}HFxxPiaqK(eXf3~5m>0iG0O{Je{)dz z64IM-u`M>K{=Yc@=={Iw9+0(G=G9GOY36_SeccDr=02|MJs0XmzUN}+nQFstCU-59 z(jUOyCPCPypS!NZKOL0{uZ1K21Mm5tHlj&a#<0gcpL3mc)7;PW{Xt`Bi6!7=-b6KU z>_kuDV@EJ!+*Vir87r~!0qgX3$Zs9cPtSFbtd#Fz%C}Eq)Bw!2&%eEKZ{1|bRYBRs zHQQGI>pF*RQ2$n6j)hjeCT_N$T-I7rsGfc?u!T`)q>K^Nq_Z$y;?iyG@zeN-ZLhhZ zfdHvBd7MAj79ODMQw*J2cgEAyrG4(15vH$PS$)atf8qL^{!WX3*DYyIAZsahAe~_KOXv8LPEI}VcJ7DP5v98*Co$*wpY^XCmbC8l*iZ6F z=TM+|tA@NW{unWF+HHezKQKWvDzQJ~pZ9Axru<>b)4qQIeOY0EA3ERf z`QKx&X|!UjK6$R^SV3(R-&%+K;Ihd=I=S);EMO$pt#If`94d|^t9P$t`V0uE9Yrr~ zE(GvwPA8OXAY)7MLk)5Tyo91^nhMS!;3wwhgeL-!_1i|KFCd6^?)Y3RI6wwDNPjIN zQGs-eaV7aqR{dSaJ(|ae{V@;XQdVgpcLqPGh-mxI^)X&t`8D1C0HDW#DV;)=bx5%T zCf7R@8KQIJMP7gQe4n5rYm(aSfv=>f?UZn0J#YEkR{JyQ&2hW`CF2{iv9wV<3_mBR zP=wghb8mA8x^M#PzOoU3DQD`}5}A}+M%?zyQJfTmjSA)tP~W4q7s^Q+ z#Ffr%?zH$ML1S&!!QKs#XLz0q@lIEM!pLax_a zo~nWxlw6fpL5bIM$5rDNT0F1Mn7xVYTs}5z?+xh zUmu9Ne>}I8|Cvi>8;t%zZF4o1b$Y&QT`}W;$MD7PJ_ZQ7@#680e~v-s(bh9Yo>717 zm~NftwT}6Gjq%^&zjSjQD<{3h2;=aL@2bDs7=hRPU-_o`-OV^s!0m{E=d$NB=DWr0 z`JaZ7^UnX4BaIXLp30a$YF>Jq^E-xjL%!q#yI%2sb)t<|`@yI;{Ih%UI%4v%)0K)DT7j56UULq*|H`6Mv_t>E6iaGwFTi~Vs=lIk$bc{Aw zaztO(JP}K--1tr9KDh2H$3x=R=i01G=lZ{l-=cG?|GDqyGxcAc4+xKOJ$SJ~gV$JG z2Uq*TI)(V{aKKdPBclzi%z6?aS(zq%ylWRJ2t$PRsmnz zmHc@mt`E`JuYYJ9wC>s;KGMC^0hxiAqbQQ$K78`CVqI#R`p>{tujP1?(sSIQopB8` z$DBt>-Nt;`@p@|Y&cd`J=f3fh*Jh%B3CpniYW-7NH?I`ql z+z@$wT+EYgszb_8=jE3Fyde!}>^9~ibPi$SnU6Tex4Ktw*|ck%iS<~+2*g2Emxl8H z-}6r=TPDLIP)LG$8+edZ4G#7BYa&jQFRblupa3h94~&G-)7Zdm0OjJ$C+Xy|wLs1j zrv+cgShr8s=1n&EMiKz&Bp09w7!tJmaRTLY^!xCnwO`xEDF7BgroELGJ&)|CJ2FKT z7b)c;j-Az1>ep{fc)OI(&He^CQx=2mxq?)=J&SS7wO?Dj{%NW4nh4?+p(>!0ugaM7 zI{oYs$gVypp2TmL3%T$m2dr}s=p^+UFZc7_ z*>nu}f=?G78jmr?>+ks|>HC({Sd(tsxhh@?kxg&+U4LpbN}8!M)R3_4poktO5ji%l>2Kj#}y#hDd{p37(agW?ui8-TGAl8a{i1l3`= ze)=)v|7{}`gM;ZVI)BXuZm({7cbn%kw9YN@rZWsbW8N{pdyaSgwtJlaORw#i__`97 zwsV~780UJt#@2%a*&xQ0vtK&cz_&KfT+a2t)Ax!0TJ%ni!l);?e`B#8PBZVRLL@on z<~7$m+93@$iLRMEwps@BY3Vf?FeLuFj#Z9#tPfoy7CmBc#(Vr(Z`v%o|LOZu|BL+CdA^)OUuP4m8SFlDB>SW8MY{_x)Maam z$=^D@&&$wA@-fTq@$=??+;$oTce*O>(Vwovta-MF%Tybj@3C@LiX9v;UDJj1;rVa9 z8mqqk|KSm+?BsO#&`9NCDg_7V#hA@MQj0%NXC zzSj>O>##LXpf}LV7dp2*-|d^W8%zDq^_=nn2Nq}?%m0!?6t|_59yxq4_6<8cwYB7- zz&!e;GS{19wDbQr-MDXJ`l03Zd0x)U#Av_ge-KWWi@@Oj&mchRlz=S)FbtYTvV=J} z8`!}^{dx2up9+=;3g{UWX@ma!N*!|Oz#~^cOrUTdk^5H)!DJ0fRk%kAH{4F@`w*Irl*6+BCu^999la5NX%-)6J%Hd(I>HiEp`)FaH;Xbeo5)0 zL=8El*v+fqTCl7nR({GH;m>w75n|<$7Pnl)^hr2*kd4*e_2%Xs|8aXI-Q{uToT{!} zT<5C2KbdyD-pHRvdOJL+Ymav>xf?ciD`*+Q{_w&rn9Tji%1t5ub$uj{gwE60;*a*( zj1LBJ*Dg}9)^#!1=laF>H>{NpT6bR@?e`l(x8@M-S=)aB&^-o&C2<(N^ zLIC$WOovAnbNltrD&Miw@uG3{v<*;kSGr67XE`x2`RD+%Es56*hncShnI8J~?cO3r zo%8MB7ZY9v{rw2d|8ncs{NFiFAN*+l8M%)aKZR##%*Gi^7Z-S~J$t->=eRC@JC~Q= z=0>5~7aspt#^!I1Yq}~i8cQ9(cIf7aFP3?;h3gW}X(dM%^u`t3{_V&lD{a2d$DyK* zC5|ti`z!BD-rl(LtIEleCoX(%#oS+_UpAmV>d{Si3wZ z`NGfNWU2l${|9t4N&U&S`6kb~xjvPHbLEw?q2jRRn!FpR-I@J7r!2~CyN^8%^H?&m#vQ)Lo=S_6d_5+e zJHljee)Bj6u*RbeCz#?qMeBbtN;!WmPo+U-`$^pnlak9RYSdAmT?~9@q_ZUs7&$CwHR|H`|Xpt2q`H!iH*;3L&J(88K=c(F97i}cAM2hgH6#XmeVPT+T9 zz?+kIV+FfU*mfa7GBu&`Uzi)xgom_PcCMjjLT(}>Yd-cqO`=^m^g|&X)5n&vC`(=9 zMj8Q+poEgT#cj@Cg{qrx8+`z6j>L(DwLkYcjnB_pVw!FFdnePn)I}HJUN~oC3Eccs zv|M~v(S>B6&0{O3OGa3~F2rNZb53d}6=M`~T+Dh=kjcCUAv)zcSo;u;W?dMo&Bv%I!%xsOM0bCo+%eec$9Yz{h&L3Aht6FFlzjTpQODP6!J@-;nk2gPP{A+FaE&jLT_xMk#d+I*(jm9m<|2EEV4-UGWAHQ+k zHdfd36`Qzuz2)k8*H)bWA1S}({|!TH{zvPx%X1Fl`2WBcpt~X~uxP4hB$0TF2=R=cU zn4LN=&JR@oTl~i&{>?q7!~nj=zdpR}^Yf@6oA2*BCWm<<6I@@R>rd1t@%(Q#P&S|| zQ7PFB2KkzKUjfftmwD<8gb7Uh!SxHbShS$Ax<6yBxs(O*ymLDZnBQIynIW1>?W7>O z>yb0jcfM_m;t%#iFdl;DIs3kI|CnpbG1V`E;|{M}7y^+TIzMd~1I}%ydnit>>~pR7 zk>ikg@!P|q#@^&9v*t&3|8}3+!|fV@M>pesjyjKj)r(&7A%61Q!L`Va`&0j?aV@Fh z`A_D~LNHTtP&)L3Rf=bF*BdwTT;R*beQ)X7`lj# zwcT7G>Srrk#1b3K<+BN5pUlBD*odNmBkYotM5}-Tw}~M{gV~ zGyzbt>UtEG{BIbC{a5EvNl>eq1SiU}-IJ61Vy!K14642lku|BaoPjsGC!&|{PR0be zJGL)~d;_KySzUw1I^J`SjI6U0{~;G)2{*u8sD`}F7hmW%_w+%=Ghr9&xjhic+h4Es zCvQ49rn?>6vBV52mRx3Ic8<>+e8F@6LAYI$*$=x<6KYZmeGyO9+g6(iubHBGP z%M@$=4!W)~TZZO3!6IOGf7@VdKk9d%Ge9?yIj%h}b<U{m{YtZ{vi;tNM7;gWL4?T-(KRZ9A{={?<*5 zUFFP;m+ftIlecda>$&3lv&;V$w*dAR88|PWIz)@u(ZBCKbF$S$dIXx^IRBRn9per| zYr;29o$=Xv@Vvy^Bv*__jP=)iumaMD@s*TYXZ-7T=7m`C#VTt2hnWzkP7$@mt;`49 zPxBaVoCc2)0KP+N99#z+^=NHXJ_l8Kjy1zkwjboB9~y7UFh6Mzy4tvJSqa9gV)wbf z=YM_RxalaWg0T@}E*?2Gbp6_YVJ7aH^x7CA-25`-ZuMcc@wN6=2yrZwoLN8icxinn z&+nKl1>WjJEcJiK&G`vxCE$j{tslI}ePg2{OTaNqN2XXUT@k@#J{O@>@927I>F$c4)xnQ&}h_%;dpWAO6 zyoJ%rYv^1vv6y3E-e=PB-jwZmAKVDFM=w{<_Wk$#&-N`f*^$JYG9RRL>}|T;Gt1L{ zpLt=cC0Wl|-$B}Y{-6BUy!~lHCc|K62uXH}a!dz*I^KdRD(}GpGm#g0Yl@QW%VwbM*Xwl27KubhWt{1cZ=y9M`k& z)BIn%Z<;barUtrDu0q@i!kn+>${oW7A1O!9j%K`Z`W{E=2cen~V`?kXZDK zPPn-f8QY+V5Vv^rk>-5r8%fv4V64qW%q_}O$+k9<;}%{aa;|OkIqU&>FgnTVrO8kF zKr+iZ!Q;e00E3eTaF#x-tzSDbl3T=x|GvwA(<=o-NqM7i-zxRSsO#eem2wHhJjb5P zbX?szy>s&!#USUj9-}{*6?6lE+x4~nu3Qkn&A0yGWp22!+Wl5gK=o^UvGa(Z(*N`W zVU3Nw_x0C!cmAZ$b51A#Uh>b8f_)>YV_6a2-zsK3ZdkuuI1yJzeG_oq%;MZ6nk<$i z{^8g$zZJ&cu&nL;%8s4ZGo|n3CzesyKco}oS8D6BH}3VZNB*aN+k%>7&GS|Bx?bz^ zIluZaNU^v*K;^!zYcBR^{C8cQ!$&jz=UZ%B9rHfF?kDXNN`co0+rlJX;a)MyToOZv z8I%0x5-=#|%i-;K?oJDEeEIlpn=)OjbrFqT4PC1tKS`!{(wOdiImfCubrZy_n8!OG z)k_ldq1zo@WYjvsH_Q9_^Co0U!a?`Vo?p!qZ}tD}1T8qyG(B+$EU`oL@=N?ban|SM z8+{neHtqR;;=IS|?fu)vsYIb@7M0~uxt=awBc3np_PP)=_?hnKgc{#YZKADFF>jy8o zj_H09OEzGyTOi}%m;6ua8pns#k74;K@%)|RmQTzE<}+a9xg~}eBWvuFvNnf>Kjz1| zA!#}PI_vqUf46|=8iTiAbV`nyO<$N@aoYy-g6AINOT{gZu;FNq-~9rd|EpO*^S{>& zGQP#8$9$bjiZDKv;}Ry%L5w=8Wp(8JmHVlq+45`&YIk*|2uG%I;(U z;%c>sb@xIm2T`9p5kiQXXxl?xbOZq2=+hv_AeLyZy}-q4=L`@bz)y(oo~UbKtOY`1 z<_byx<*(E?P^!PY-E4Ew7;PPT+%SI}V!QS-4ixXDa9DPjgje&Xu?6x^%R6I5j6|aH zXhhS86ONcIhy){o~g zDNb2-%Ee3O&^gf<&>|sJQRCj7S44{}-<`KXgya0^pk;2j7&v3@?7|1n^85<1HJ0zs zWX9*yI{e)%Mi(5{9@?mj<&voNEg$zSv zFh*K#@XVl;*f_fIrkKWU*ZG1n4CgQ5U4H8zuU%KK(uZ&kvw`jJ_|N;jTyr15SlZK^ z0^Al1$xz<7@gJ?TU-$SgeaB{``Cx7svt0d6ijwyRr=R>Ez?}JOHjw|4|EqCH;QSx| zmjAP8Xe#Tu!?|O}uJTZ&|H}vP_=m}0PKI#;&u{zeTm3)fL*(_HuK#1SXP&b^kAV50 zpJif^lul z{Hu4~^8bu~^5*?&UJjm@zP8PgV2LnWineX>ir2ULzajJZx1mk{D6{lqOr_R7ly_&` zL+xqJuH?G%&PUOD(jm2b9-T;**Z-mi^(#d>e`45ET-x*2{YW9`MaA08?K&S@j_*9& z95-l#RMxocTw7xfUCiei-|TzU$@5{}&W~Ns8Zy9q)P6rN#Fzq^^E=nGWm8>uU;RnO zq2{Kx@90=@3wj80+b%ex>!KGt{^#c&!<|Q}{;shkx0Ihasl*m%bB;Lwmk9RpwSz+& zC;yWT&OPP(>z4B~^S|r1um2y{G9I*_)+($=-nBtCDB8m#|2r?}OGU8!+&Vb_QBH7u z0>b@j53FsWPe{bZc*FD?52TF`%Pk%Ydeq#hzn^}^J+-!rQTsIid|vkdiaLKDhyn1L ztv>%=|L}wb`!aP8 z2PHsFYL5&i-#f*}_83|7F+>Zs=P3M;YOmOSKN{>(L{l;MR$$c;mbCg@Th*K=8+}#C zn`pIYZgQzP&<%srj@!b?`Dk!`l*0$9;FsR9+5su9*+m+2bIghb=Mo+GX~cz1_g5ba z_uUKHwv&%qa|@fe(FKfHHI8{HYFdR>sIbr1_@@?O{E4-&a2^P7(pH?eemi10{+IZ; zD&&$s3Tpwal2h!g1(5O?7hAD#YOL6)35rmNZW|afTp0>r=eDQeHqRU@yvekAw2L+^ zCTsW$=PC?JzhK3Z^y&HY0^oVGydGTEwQkEi(RoX;qs3c&q|9gI!=m4F-m$ATwYU6l z-nx1`{N4Q4aYQj_`CnrKqDyb;AHSTWQcK_V834(pLK#qOf6M_AAp#yqZl>Q9j5FTR21F~i6jcXGZ5h}M9bGfKaQzJla*e%)nJ z-$fhi^^*VBAOXj6tyk`Xt1y!(+#;Nwkofs~{;7GolN>)U#x!&~4(gLRtM$0u+hU5j zj;-CU!O4aj&i{DHJ&%4HCb#(4Sn!;^<%R^u*OITyCjJa>mIDdL-P}*Haq|uhoP#8E zzW6>rNG>ej`5$eccFKj5H%bnhRrP_Nj}0lCa~j>|#M)S{D&4mJ+G+B9V+ymbDs7Fs zCHzD4|I7iDA5A>_#C`91EDS)sQMKWv?VJxlH7WVtOv%PlbKV-)uGe^5o!hegny59} z7H(AUlTS>l3R1nbuIXOdxBV4|Q^!NIt7BfjRc%|c8MBSswnb{e+;n$5?3hB$L2#Uc z^1pIK$!EPPcj%m@_^Iugp5E4t99s&rAls;Js!`8NQIoS;+1^{zhccc29b2kT&pYkS zWXFs0+7@@O=tcQ|zZ;{*;`6N@t$rL!fsQ+_KiOA~yPL)XHIKUzTG7J^qN zKnh+4D1(rb^~$T@AWu?o7IaBIVf^AIA=O8QDlm^RwRnE+y(pS*U&3U%oHNoTo(_bs z8z(~Ku_k=>?Mz^)VxE?kOpO9#2090-S~S}g0qzAFOn(OABb^r-P99F;T--Vqaq)h^ zs{lfZJzgZ-#p)5E$zRYXI!OY#ZBCL%?!%*R$x`Eib;FY68}q618+eG3=t0*V4?Q3K zu0L--xL$ny+@-mERN?LUT;ff+L~uy%V4m^*e7_YTEQrl*w{q711R>x}&eQR9)oS07R$BQ$pVC(|t`=XqAx9e95-ocHjJO;cZP14wS zq4E*u2aRov;%)jP+g=GV-z18KH{y;VisE#8opG94E;vhHEy9YcDi8j- z9L0-m=jwfKmt01LRqGLh^S2^3U>l5sTX1c>HoX1wpZ7qZ-^_RfORXJ-%-+aeG~SVhotrY;B*- z;uh<{yjB}l?enyDng_e>COOSc*Hv}cYBP=h=7Ibr{`vdNligl9Ncs6`qqz_kZ<*U1 z{I{d#hjZ-c}ekF>lAMccJH&NY(<`QVn2 z(n#*CHJ98Z^u^qRnf(HV#5Qd4jy^FwK`{UulvTsgE?+r z4`A}9v1ma^i~pdTD|a@?@8S8sW4ZmZJ@iddT>B^{dHlxbNBF1P6z}~J{b)p%h>6p_ zmu95$NZ2P`54UT#2bez5wPrm4*FKCT?L&S(*!$GHn4FE9ul^WQjBRr)f35$Y>pZ6C z5Vs?4@WuJiIrh2Ut``??Fxt5{##wEIwyqN=n;hn*yDb;6{*PkLW4FYV6)N%CxyO9b z_SjsM)D!!Ki}&28HgXPu*ud=?r}J7MM~>n4SouZrKbhUN;lbBuUmHsPPg5@y_x!2r z63wT@n;iemMLl;?8$tJ5-tvF>nK@g>-hHfb&|_11_0AVkdl*p}^~Mu@s|gGN7dPW2r#);1j*Tb$us53^f2>CbJ;EPEH6 zaW4$rdtCPM(F;DF#@JqXQ8EoIoEO%g?}5H^a*3CA=&|g+#`!!L0|UAnyZ<=qiKXvv z?8ds7iqIhznjIW9uo4^%EKU1)(w}&#&%F35!IcZEPvr!bedjJZ{_FahD^uTuTQ^`S zSE#u`yr0IW+4e2m$efL(5FKyEJ*}Sm6)&MOH}2^;Al!;BchrGk-Y}Us4r#Z~{NMcF z|Gq@-A@b`{s_*%~M^tPMYpf5&KlAD#!o>8`uR3C4d#bGdTrr1v_%+5_`JWd znU)o+&V1evUYbL<4UDOy$A6fQ3^%FQJ3e^h9k+PzHvz9iYuEg&9P}3dtwj0K?eXu7 zx7~Nz=WWBE{lrEEt7;2+QPX{XaP%SQg_RURAK~(rVzK zx|L)1E&eBFPilA5$iBup#}((ozP4k6W18iHYe2UlI1Wd;D7_NyZ1zd>p8DhVPrb+TyQZ@|7QOz5@v3FlwFZ2x|AV}?0I;{e?6w|32^Pqey)GySn|JcTVG>(4jBuI6XH9m>n(h>4r%NNo;VBL zVuy3*nNgWb_1)F0PL>$$BbJ(FssF9}%+1Czwf_hFbMEVGdCtce8q0M}~Za6iPkGJcf?918)M(&$)jbYRV=F#+?ii_gYU9LmjkJZ~f$ISLmf&skiDa14Fh7{0~fl4Os?-#L?HA-!Mzyg4AK{=!GagX2w% zrJW|=e2wA%dfbO|R|}1M-Js<$!>${jp8sq)qBzU()`h#i=~8-VznL>-(@d?fm}1<; zr)M~FOb&u0GhY2!k3AjghlX5(<>YrW?AA7)GE|GvIq zV5@5nx?48!PRB2C%r(ekPdT|{>n0<{Ib}GyVENiOVta73%g^SEgXF>48GR{X#*;~2a3U~rocYR`BIpd%C)N4B* zpLJ+OpUyw=Kk|P+sCI5{4$CWMgcP(c{j>tpuz94lYh{%DI#3~myAf;`FWdNAQg9MC z?T4fM0q3F3a{i>KxFx^8*~U1P!z%wUP@HwCupo1kF4Kz!P6WYS4?76fXw zK6Fr`0_M|w9KlU&bxC!A_(YR_4t?vB@uI|g`iX8Wo5wBEW3mz%r4NO=23J~<=kwo~ ztN-cskg@vQZ7ydgjo}eI`}Y%Dal}i%qvx3aCO_VgW0C4J_E(6U{s$sjKPN4|cR#Z^ zV}BbdhORe`%;jDfmme$Pb^NJq*OP|5)?xBnW`F5ve8V)4+kW1BGm~8m+gM&oF~Ds) z$^TshGY<$q4ctyUG+FulKSso{jSyPGI&uPJwEK$AWh`y`<}d!Z*5$OVWR%Z1k3H0q zx3AMw4&G^5{IKQur@Ve&j_0O57@A-clCtvcvUQ3%V-FPMa7Tp{Z-*ijyXTIn^f4gRE@IbE@ zZq=8hPufMYivY+IO|)nP0m^lE5Wvd7+dh2alRG`Q+h)8;7?{*5moC`}+efZr8EtId9qiLHi z0P)d!p?vU^_@3h`7ssj~=ZC@oKcuMZ(^-r=NITi+bsm=SQ*uHad;|z^0m4=D=I{0Y z1mo47_(i#h_}uLPFl*c#KKsAT|3Uz0y&TsauPW=#K}itYcDvHQy+T3hHE?S}{sqb4 z_)yO7P-QGL_iHn*>RZl*oDAPMLmg?`@l@;zUM*y?{Qwp2Wv zm=Fqx_kL+tId@o`atF=B(d!R8iccmE`g?QEK~HFl!@`)nWcluuYv%r6=l;_#xj#$} z$8gKHn1m1i!Xr{eDb|un55CN!h%|fO~>RB zf9{9h?@!$f*0*RlU|aiG$Et)NW06nTKK4;1KTm4BNT|3g@NqGzfG7ExYXZA16D!HK zUmJ5z8zmlHSoPSKDEJcjipPZ&m0<+_ql1xX+siWjt-PYYvtf?y{e{-IKM4y^9sB6y z>R6b1VL6h1_?i+<5l6{aQgR|yUrgCav1~DthV#tM&%&hT71y=oCwMc*36Di7c2(Di z+3qnn1bf15i)E+jDKfFNsPAnP;BV3G3;A6Zx7T0e)H(6_>G)SY8($m)%)PrljIVw( zR4F1PX}@WH6d79LF!>P0_u3iA=s;gbUaOV~KNKsa}ES8{TtF%uXV zR9ogIkj8>;!mpbs$==@vYn)@)$nt}_QQk=CETt~yI96*s*7u1i|5H!;&{|`$-yq$J zGGoark8Sjr*kY9*LUf+|0|*!MoaJIGD5u%{7H1fq{`K(ooZFR4J^uZn9@gB^`ClJI zYTI7Gvs{uQ>~hM<#ST5+HsrYt<5M>ZAbFvEQno<&yxM#GC_l2|kFa)q5CuLbl`~^A zpzcL?1^I-jF+kY2YmZZti4x3T+t9#_NyW?+1h2c_WX|}@m+Q?%f`NqQf58~XScv@g zbKM`qiEEUjO%(RNdo8WG!?|GJY*(3Obk`-n$A5g$QCq~|xVD+%g7R)y{&yemn;U&3 z@!rbE3~FHTL+gBWh>jl36E3f_yUs29g2p?*n;SpGZyU)aN3+|=`TsrswVu{op!}yB zl(!wlf0dDQ9b)*tRnwCF6}C%F!}tFe8EX$W8UY@r78(iJjIh}du z;&>da6Jvz)INt+t@Xb`14IC_L)<%&&57%T?c&KZ*W zP_X*;Ie%*YPnm8WqwBHB#m>|1>D1e|{kBopLD2Z?-2Su)n6Kb`92TcV3vsdQ{ZtRl z0S8&`Q;<{1m?2k4mY<1QHtLDA{Zc=7Z0`pVop6u!<4RY1PL2 zUj`=yd2OwJ^c*znY>w5^q1Gu}6LTzcT>Q)=`F=jsPmy1JoLQBVb$)wKvBzNlDc4G% zVV~ie_{Qv9|6|GjwN8)gpZ?@y=9jmF>qzG9D}(aazz-m`Vd==9*G&iiDPwE?{}ecy zxKauUq&p?Yz_5a)7lY$A6#%efPWD{PZ-nKr>a(rjn*{r^(9K2aVy{^6WLdGLb<`lQ z_C3Kwwl_(pCEo*>7SuVJ0Lnqt{?ezlOpf8GyPpbBAykXE1V&JBVdll|x57;e7v0q9 zL|ZnouR%6G_mfz%sHNpJK{oBPuK`Xbt$Q!{f(Q$#K6>l#N1i$7Um@XnQ&QRGU0;$O zpkj+!UK^gz)|umu(hfXHv|1hyg}Hu1+v9iG;2{bS54qD6(<_(cyKlDR?>K+{%(%a4 z%d5$ayKa2M!fVzDo;aU-5+lLMZ<}vUuoT0ICDCu3weeyn>O0EH(eE7CPp-?RBiE9U z%G=IsgfzzHaeBeZ3H0Wu`U>bd<+jETFLrD$F2&CAI3Km!6*EaXY-nD`WFJ&MCcS%{ z)}Lcz=vO%@&_S0S+nxV|I2Yod#vCZuJfDKB2z=X+R2$eAiUsBSe3d=?Wm5HXj{4a5 z2hOpXv+I`smEV?4oqSg^&IEP-|Fh_}bk8ZAYch#L<^$4G`^+(z>vax96EGjU{j5j6 z6XWZV7PBmubHr9#lzyJK6x;fc1XyIIa?p(tc>FW(o=;N7<3H%YbXn*dUEPA`xAfB9J`Uxc zp)4*BC&fRnQ8KlT;%>3!M=!#WBM*7ab?(Rr{PF-K|L-|IsQJk{Cr{1{*Ld1xT`ANi zr7nl`@A_YJknmGOb{X!GaW zBq?t`syUXQ@AFTn^gXUA#`+(dG6=Ft~y;< zwB>~6v+13ddZ)#PKwj2Luy%$*i0I~`!{~MpLH?I8Ny&nUX^wL94BkcDy1pFraLbzI zJhiHHjgBs-2jyJnjucvrQH(c`sbEdP6knC0GmFtxXaPp^i1C++X4}ARt8PPr6gUmn zX!EJ@#7fG>n+0e(DZEWB1}sin35UdKDIeUXk0`+ z0X^De0VNY+U?LU0rFP+STwAbfdquL!e30CoD+AUtWgmGeTrV08W<`D8y4-oG(ltAK zuFlix+|y81?zR&PQPJsaDdv{Xf(U+ptSH+aNZBK{EYRt(tF59@kv@TO`)Y#$H zjkwZ=_G)vmKS)k4Y3u3nJs@(aN)GoTu+SQNLnt_}ckNo>}j zL~aU!M%;vwwRqdqf-3SEk=ZH3N-~mxYpzyXVBFVGB)xZi{>#zzBeIRH*g`=Af0TiV zJ^0qvd{C=qplO+%ThD?*T#oyMK(kPf<()XA&Th~)=i&`7v^#aiEn=>K=b}S~8w09O z7MD7}%vkyaD0_oC%*gu6XK0%0SCJ8XW*wlVx}ZIG1+>NGAHMii^IDv;LRi5U<@(Mk zkG~(FTW5=v%BS=h3g*)3H{wGT=_VxEZv#30Z$6e=tpYhw_yM82B>ONmRTpIY)>>SD z!%^#>93_rF4g3*9aj66{&V92W(YQL5pk83z`wF;A=yz)|Ok7tk5>wucne{-6c~~6= zhVy#%JxFqSMSLOrhO8OAcBJt&I!4xWY1Og=ec#pZQ~9j6bDQ>z%cE36$mwlbZD#eP zq)}^|eco>)gR0&p!E1)0Q5{Q<7M8@>pes&WnQG3q`nZ)gQr)Uoh#&D{Ydt3b zHJVkcitk&YWo5%G=@p(8zFi4Y#VgSu#{w>5wnjr zSC-0beNSQHs)2OhSY^id6=t-8@O=wr6hO24O0!^3-G(}}#~=4kP2%2fUk9Ud1~RwU zeco)JA?>{&nW9bI3Oe$qKj}s8D>pic*fDqJLq`25oQ}v185PRll#x{)ZRBs=;TL3s zUqK*d@zl5LnJ^Tc$Q?boL&ahPDh=m!`L^ZfRi;!qE+>|o8jUn$$OfG(t;A(t6D+OT zyLl31RA#sXD0V4?=Qf_2+kFh#{ZTwIZ%L{qQyK#A@Cc6|8<({3M+gaYS{He@B3q&D zo>ZU}jYL0zsk%0s?jqb`7tJ@nKJ?T4lH1GbBX~T+X3lA-iGNs8k%q7SMRf`I#K0`&1`Q8@%KeH%-`L5T8;agIfx|UvB8J^eKti&*pI4KKuYjBpg_h z?DLoS29-l`eO|&^btC3(z4Hx3#RsR-hl)~CwWsN}*(TRwV&H-sM~;@WfT)`#fJGv-tR7C23qmv=TC z-)U$^$*VEE1p%6m0N%kkiGT~zF5T_%CS*~M;J&(z3e*{$S!k@sJA5%A8 z5|XoBTl;Fgzm?Hf+pIr8;2I*lulvyWfk%=)5t?+KFx>POpy(~bYrwnzEQpH^Dj*zpp%aa z4Iqq8^39H11>fT)elsLwUqBWU+;x5Q`rI)<c#6>1YbEp_EcjjY z3y&OVBiYq`p|pSbJU7pPdVsw5&%z-8iC>2npXTWKX9!cuDEgm68B_Gb&Sz|ppXDG! z+-H>&$(MaxDZDWOyGTjvkF8C2MA?prd5KdIfd9}!tV$?(gi85($Z3hi>E-@M+w(ad z-hSkMMjJ7~f+aUw5YY5y?&jDiux zJ9$rY>X^iQ&?2iGvZ{K-?qM+I8^f|(-}kQ+UvB8Pz}N?)fvL5eS&4hkCOPiYe7&~* z+_F9imqw%`eZc1*(-2+B+?x4Qyz7f4h6ac~ZE^WR!0&xyndP#JnhiBlxkZsTDFY$e z0=1{P_JTv20);b0F^I-SNTBqN8BQ^%p=r6*+g?yR&*K7>5dQ&{eAZtSYz`oh-yKNdGP|-_2uT-+hc1& zdLwbu`=;={5Y`UsFY%_gS@Up7*A*KyMLyj;)8i5UX3WIL%A#W}^m*lklR~n%Rbh92 zdd~Y8y%`ERg^|yq_jeY_l4ce|JJs_`o1kL$s5gnoJ+erR_DSiZ(?=8e+%Cz+;NnD1 z;mbT53m3;)Tr(SY`Chk!j6S&(tqC|~o6fyihG#0vAn8sKA%X|MX?oYsP#|>X@b9qq zXmQy)M&QUIOFlP%>(lMLL=7hHaXWMwZwhnRbz_e$I{#Uo8+l6{al`8?`d!0vEHfcx zk1o%viB8%c6YPW7@6z#t9yyPjztDV`iRVYpj**Lo+^xwXuLgao0JZir|1T};X2+~M z=5G2yfa(g+!_`<*0se;edm2OUv2k1dArbfDAu%f9BkGo?$>Vb|kTH8joulvpz0#1t z*}eXX9jCVQ7Yd@1HOKE9ADj4Ubym=$m_y+`dKX#47WJ?nl^`g@dk>qGc1s)AsKEZa z`3hG)!fyyDB#EWo$uIuoJ)@fOQ89Cbz3J9?tLqd?-LvoO?QPdrLB1X4qp#`0b*}MG zj6en|pk^DV4w6|aRK5Nu{Y|^I2mOBgsblxL3UkUO-v!Ms|0o4Ar)R=-riA`OAjJ1+optTcu+4e z-UQf*qKbg-IneeVauziFv&C2ary``HsQfeEf#xB+ZuVhh5=0owlZ~#BIC@gZ{u@t} z{5x`*p*Go}qSt3Y_rRwh0Nj{7kr7K-@A^I-N&+5uY`g2DMkg*uac%YGH&P)dFMx

i(Kx3enW>I*5lI*C5zyZg<&#q%WTAOu>(ePaK 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 PojrpmCXdS>I(+yapBvW< diff --git a/src/lib/images/promos/webhooks-api.png b/src/lib/images/promos/webhooks-api.png new file mode 100644 index 0000000000000000000000000000000000000000..8656f16a44b507e50d24237801160bcf05be2865 GIT binary patch literal 726474 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⩔ zhjhGy!Z{;|aiYpk3jlZ$<2Spb0PxlXYw7;2tfR%=*_Kz|%lk^|=x;xK5a0Xp!zcVV z#m^rxxJUT+3 za>1%PoYHfbn&@fvZ{Fr^D`6c5WwM6i2( zn;N;e1oi6cg@vh?0cj{@1n36iDj5U>H9OrFElTAf08VLA7h?;kOMe7VR{(fg;{vI2 z=-V{uc+78^z4)T^@sfpSnkUy{V@c?!EDX1&7B4C;)cP+=-sF!3adP^YqK?nSRRLft z(O7)X9N=8)IBN&#O(B|F=-Ddw%b{xGPpyK~x$0EQxid?OQaE^xjerucPMf-J;OBI% zb_8*T0AKZpBa{HB^_Ab)ikYwJuFM8tDxd8s4akif2JNO8CsVro@$llfKYe@qG@vg5 z@Z0^+KYutqEdcn{?u7PWQNeF+AHKaEis=1r|KsC(*hfQ3{q?YUFZ63oIC)6zr~HaL z04~NAnAuIUm=aYfo5?wq>G*s=z5O~ zqN_7`0$_diHvWYdG~S8i8_PLf;Wn5cGNHw;%>po!VZEKPoF z>aPxPnacG&m-QM=9_zsd(@MwDj)S?x!~ zIwef@OKg3`mgc&flwMg`?G{wNeqI1LB~rQ-mB5tE-dUIz77`xo7m@fpd)m34aN;zr zr|axZ4R(Fwv%${*AT>=L0Wc~u*)^b3Ar z+Paxxf>jl+e8u{yICj8JpW6nN%?}45qi5Et{xDAKUMcmYqp&IqFgc%CW;SgcwLk`=v-a~PX7L)b5eL;*lM(beqiB_mS# z9z_sK^1#=-Q9(dgMIze;Cwm970Wxr4A?@Hllg&=bv3}Olxnmw3mnxW(-5RBV0-0Sg zZXfK>9=kI()!^HHU>OdF12cX|S<@niwm0(BT4VL5p<~M=o0gRDTTQ~fv|%S_GRezJ zU@~DmsQ4!O?K?jxbW*!2uZU|+Q|`u61_s{V6-~4iHEt^ix}~`p?=Y{%!%{iGbKjOj zv-Ln0GPd=g*vSNkRxa3l-qP{Bt1Ym%|3WoNJi8tm@*2dZ-B)u*quqUL*d24nms=LKbOEn~~KqBw<~TR{9(O_9CYXcC?srCvX;gp+1Y6 zuK=*|WG}eq&g9~!1h)a>$BWStn(49!M=vR`E(9jYCOSN{TAwXNcJ*Hc3$Z9*c7f&o z`fO)P)fjA`ON@H6J01`B5-m%!t)J!3EcLS1d#UVeM?}M_a@&qqh9Q|Ej_u3cN`SV& zo=mfV~f`8-?v49YjWpu+^KRVY;ujTxm#PH?J>#&P+x`5AJi)Ssk5a)4?Tn5|{X zw4~J12w~2-(*ZDO7tz+h!wieobCddTLD>++BK3*Vpqf$^Gx|oTD!f;Q3bO1X22Kt+ z(u2!`S0#fi9LT)Nl~EQxUH>O$CZw#^NlgbcU6`Aw5E-=iAUpP`8xJXW)d})x&6XKFAVk;kH+^dDz#`ekq_JH5f zW==OvF0|FO2br0eHm#%*YPwyvi@FUU(F1(rl0*al9k8XqIAP%h&nMb|QC!QwjzUIoK*(AShY+k2D;MwM{ub zOo3(1hFFkLk`qqUH6LlOT)ORb1PR+saUGD2_;sK!o#&=q==i1 zb3kPSX|9?QOo~cL;ok9Ze?OeAUO>|)ljMjR;(^dsDkecPt{aT4Z?BeJr8Ld{uVQq) zKklkC><^w6(i`kdiK4?*+n%hTa3#Z@U|7_yh<7D0u`Q0iVq}2PNb=3ieYX34b94Xt z=KS$6fGa>RUSfdp%dHDE8i1dsWE#*H7#P@iQo#pBB|%?ZfgK72jxJw`nae^s6wzgc zMb;EP+v@&pYGe|^5?2rU?e_fi`11X`_b*?*nmI|M))X5T85JyfEl{R%drHg5TrJn(JIY!lqqd^NINQX)&d3p~Il=1ja4%zOI{-1*rW#01pwpTFaQ?yYD>@NrPQR|pyFk&mY1OZx?cb=Npi0L!jDR)C_SPI zanXW1u3Z4pP-UmMR4c_MFHCP6g3Js{!>6W2&CnVw0cJu(MUEjwM#;UnKf^&cLG_{t zkoZ>K$ZbE_0h?f33s%g9TG?*_@Ro5kmla8DTLEwiRs{eES&e?%j&)MBMiqK=T?`gl zLSHXjo$gj`QaaZ3erH^WWFrBqOijmbL*l*yV6e()PbFt-miyTTjVq{ZbD5Uhpp|az zW>Es10ZPYny5*eni}HeAWY;fVsSB^z+qO%K6?PVYh7H@aQ4NHg)q&PF989kgiA8%R z5>^%@k_vP)H}0z zrY`X3S{Q`>MZypafRec9{a;lTApaPAB#2NueHJ})3%%vo5;?sm*@8yH#+!>FY<;}6 z{D@j}r9_{%OW;p zZC#B3Tpp|Uhk?V|v1G6dZ9=ZhWsC`4kk~qbO#0233|;PUu5wSW(Jzqm^Jbluk;v7n zOdzcQ;bO(5`eq7LrT$Lfgz5WwccX}-KR^BMo16P@ro;1RUQduie>gpTJY0xDdb=MV ze>w&aJkjs#n=>FWDB`Ex`M0N6fZV^l`suf)R~0oZ34jU*GMW z=lKxI+*NAig<%sy$mvID$4xQ{7Q$*ije=>cFG;ZQUK@+UrxDvc9H$9Z^Q85z+8JWD zHy7nTM^c5?E!4Di-6=_pZ_K)#?VUCZFiunf;GA@W#I8vzog~RN_wZQ1mKx!rc(2lO zOucnNZ0wxA8spy)gA~EM`iivl$mN168eLHww_LwoeUZ^B+%ll#z1iOP)+FBnb>?;BxNEhG`7Sx}4Qh!rIXX z!)6h4y6)13M@@F|;^8;H#>FVBv*HPjva{El3S(!CA!)+w6S(v>WGR97KsEhtzJ2jS zzD!nk-FVw_e0E0{=&d=nWY`z{uHz&(032U*Su_7d0Gu>z-GP`&!k0U%+cg3N_r6q! zmMgwAerIF(A_nQDx3#pCW0!)Ivk~Cp_?f@-@wOSnbnfDHpW}uf*xvNv!8ZO>V57f{ zmCbc}YFTdl$TCweR*r=^=b}X(REue)#m|vMCQ|z99bl6 zxnY1+zHb27ei>S&)GXO)VL&^R#x9h{_80Eg&La%~TTD0o_HWSMIZC30luIC`79OHZ zw(PX4{E{x$f~^5yy(f9;q-vlrS2M7M%GvsBn`qi@Q6uftr4Ws`kNZ;v)e8N>-)kbn zudYTx?T_d8h&cNB#ShXjPn1i_cVb#-nDdwT;hUR#0bqPw82Ht0$fv>jf=?Cz22uQU ze7N18{&fEEZ?FI1uiyR4&o6#>+MU4$59zP6i`6%q4YbNG4s)+Uq|sEor28Z*n=QxZ z`|9$2`SQ)j4G9?8=z_xB#B3>?-E7>qCcHi5#MQB^G-JP-&RIyc=NKh;mZJOC z{kOOHFOA2qt*z5G#wi3ClqUI<(gExMUSp2b##wzH~#N@OW=(tDAIQLe7;jk ztpzaA`AJq*wddx+AoqM>PNvL$7?f+}(vO{UwoE<>`qFXwbbj!R;wGgj&?3*=rr|K$4wK0a%#_8lRDx0O zS37H@7B{{3ykW4gMpdi;FgkugfOPeB-EYo;sD}&3j%IsT`hzgkiX>;#Ob`LvX+2(; zMMGeAxE(zLa&@W#!DQa_9I0V%D<)47pbGi2Z}oDPBI@w9ZUC6((tHos-w-T$y-U$S zlpbm)(}k`^Cpq`>0oQ`QU1fS=Yvo;BIykG|shDa^WJHbK3*VrOhbdiaS5M?(ec{Ph z(`j*5;_K2Ms7rZqI0o%VX_}9`In`(o%@)uK^4+G|vVwU5b9VZa!e*0r%W~f;-{-cx z5&*v36T7V-EG2`~52u=UlR4bf*V)vQ(Z{lKjNIK?r<#PffASKT)W91R0b9kj_E5XG z+HUhBCgh{myasg11WS?2sSXIdx&UBNyC?)WJ1W)n{a#9jHbnu#@Y^UaQ0M@_StXIH zSr!D{K^-Se?iITKQ~RJu#RUM%cT?(sv~Ww?s;g&LxBI~WV~ow}TO-?>INxbTtG!mn zBRO#@Sn-R!A)$0@wb%LIdO#L=kFb48!+G?e0j=!~JocWzMKs(Kp` zEG|0O%P^^)Uu1WyaS?&;^5fMD&350y!_ed_X;vm!_3h)$$Nd2jN58*&BLeov$M+A1 zyTZB?ou=%0wDO)dka)hK0C4XCe!CxVSDI%5V6+YEEAVZ6G4KH|OBb^Pr58uE7r z<)s*@a+uO1QPxn+!m3vmgVv@jDrTVaNv0s#sD5cN!dHwG*3*p1F|De+`<&`@dQtK( z{Fz}7;fz&tYDM<>t^YEOGj-Sf;0+_S#{uL1MN}s1 zn!<|FI42mK1*!C%YQ&D%Y#KN_-7Q+)XpX+14UeeLZ5?SBA>)v+0wGr^`roMQTfVO*}OV{bhpuRdn)DAN#a$^ zMz%Clf2)sA_iTSQ2~Q)XAYilIcMGbmK<-LucM*qP8iUe`U=xZ*{GN=Ivz0W};B7nI zlsmVX_%=P3^UMn~E5_D_Pm=wIRaJgPevwZgLxz(;R`ReobG>0HE}$Vf#n{+B*5&PR z;?dA^)Btdk=mU@&d!vb|KA6g3sdLF#=9YVVOB+m}5mO6*D#Epv2)p=&#mzCqvG6&b zEKMSG1lY>lY)i?BTZ;$4wmOg;>RpcSCB^8$P6pUcB2qYW34uNDNrzS#sYWbDmo_3* zN`?d)d~B@~)cwoW=$Pi}gG&goBOzu}mRp1vg;@GEnlOXmRBo-0DuF(Ug%F}E7 zclM(Sjw<3vdpN;xs+SG>AzTNQf-Pg?bd7En*|RD!wk%|bZde#TGxc|D=W2hv9u7&0 zI6}McpUxj1CsiwC3zS=Ub$0wF>sv8Mw+}$G34lKys@?b1?(}MR0vntd7}(eVct$1R zTOJN~9}h3G2^q_EFpw!-Hf}^$?Ic&NHPOh&f7&b zUB1(u(M?8LuGA^pE^J9uoV$ncr1EDT?5lOrz`%321)(S0o%@U(NNT#irEqeQy>Pk$ zt}Xz~Hvr#?e}>vwz#ae?I2izVNT6T7PRlF#UBTl@wpgF*{>?t&WP0WHoDA^y{Q1Lo zpXSfwZDN4!Sd&hYu}GSaE}O3)z)L@v)W&0eRS6T>a zW}V{*>i1)PFF$G}_|3mAlj3EeX=Zpv)ma!mgHJUdvnc4r%_8>3fqeaZxJ;?H#0OQA zdO0w;2x>sfW>?rRb$bk75z-MhG-5%WlTcGkHKaF*8ko_gDlGI-=4Ok1h30MkCIg&R z*DwGEE|RjH3g?7&z_+5xb*0=rK40haUGbdJBAZ>ZM6j_=A_l89eH3oAa%zo^8Nl05 zqeS~vozYj!_4-I-pLMd*i^jr2s7zIuTzNOA<$h(|?VNrs+!Lo?s%oB!z9@z007ptw zEE7$lhNq6!X9PUc7Z(q#R(rH`P8qGfx2d2BfNRml)@Z`80>IdU0dVkpMi;al-nMa; zw^O&bNi&}OR14|hqFf)*_$Dq?BO44qQ*OE?CllFP;+Pz%fWg9WhMsd-wd-3_I-AF6 z06cA$x2onm3K{=i(8~6Bp#=a7iESm{3;(%*YFTX+0M=i7|L_)hw)(;b1}|`Tp;em? z)OktFeDPY!*aWtLk`36Wb!ZH zr5Sup6X~`O+~EsnbvgMlvjfard|Q@aT)F79bN<|VxkKN+7{cfDmubVEzImtN+pWM? z81?*kdk}gX_99F(H()b`OC1(GoQnWBCkV|-0Km{7wD=(D%oq zTSRzFe-*oGih zXb%8P@>#m4T7%I*tF5d+SqEM{?9UJ9r^9|Uh02e*dvt}PN^C^#)8GISqN_TfgOvr^ z;tO4zFeu^xz}3?$ZSw@B1%MgGTZu$7A0B7S05}xaCM|+qUP=Iqj{3MieEt0TtE;Qz zT89pK2dAs2M88`AEFrXC7Z~8Nkv9|T0syB3TAoG*D0;RWzrGo=;oslA`Q_D5 z|Kq>?_g`N9gv8)U&sIRO4oc2m$+TCmb>TxAGJ`8-3-N%90G4dcozSsjmK10N59Gy? zDrwjyTqeQkJL1cSug3gSn9eSfvTn+EPW zYF4e-rcdPtG#(g9Ro3#e7p?p_*u2EyEWf(a*^NNgl;#9@_;2>7`^Tp^MeNp~ZGHVR zGxzXAw0SHCULR)|Kn34%v%Z<7qo8}d`NKdDe+qmEr1=cdL3QqrbbEym8MH3^Ne~3Sexc94IViG6A!u-blQF|?~sAE3&i2^Zz* z(^I=021^tPa}VX}w96~boyYrA<&*}Q^AeZeq{sO{6lqhGt(#+&GMC6L@Fom+mw4FB zq1AI*E35cO4fth#+4iA^#B>8z%1(YYKfBuvIVDC*-^|>r+`iaXu#0U`v<&GzMV3y& z6~lv-p2KGO&IVLShms$w4po$6uso=7mH)cCjVG{9CihTjL$~|W`TXML%QyG;FKexZ z1uX$#O}?C(u>!$lQKT_4hr9qNP*E+WoV#;Y%}Km11A0d;I68d09FMe!T9zoe-Zs0K zaEpe`{r!ibZJxeXM8E0tTyp5n1FI$2CRhZ( z)!#d#fRPCdLo6tw@j;274UEA9@9)P3=LgXkj9q)J zUdoIMTY_SR8hKo9^y1Fn*ZU9S+aXbwY4Z>vQ@Sj|_OL(ikLTlQcv)%LKR%BAIgY(O z9mb}3m~#s=)ECBA$N>gOJ|6CmhkN|Bc3_^3;gU61$O6C_Zlp%vt;us{|H=nTzmKM0 zeWbZw!3$cT_v43Z{oMfINj3&KQvxJamm#5q&U2ivdE_{!bwzPA%@c=Ld5F&h>F#1qN`9Bsx57<4?8Q_v8K^#%}YboF}k$pkE`L z;c033Vq7Mj!?Csd{jn_0$JXW&7MF5dzQZ^=?z67ce9axGohh-zIO_4UzI2|M7 z&&;6^4HX_5=DFqTcs`HAQ7r>Q31%Ig7F_g7RG$uh*a3-Kj@JiP3dbx11MzsFwF9>b9~pTq91rLF^TY9aK3oxV$8tki_OZxP;ugdnV9?im>5RDPEuo1# zYER>+ZFQ*BL6n*1IbnHa91AN5592l?GOtdRxwo2)T;j1CDN)>DD zi84PjFZaEqT&iVwJvVP)uYG%o$Egqec=JBtI=iZq+_IU0*d^{{uQJREQLA9GSm1La zQyd_Ka42o=EL9%~(WB}h3dv-T9C?pfyaUwlF`hoCdGec$O==FYajmukepC%5%xoIe ziTBjGVm``+H!D^I-@AC#9M3jB)Hz8QM!4c{1bbc zot<1$wma%iV-h*tdFOS=b=0mqYmBmXHw2vJxU1S|9w5um@z;IAzf!1@nb3tsim3|g zxif_lmoC=CoM~|si1c)Rczp5d@&48E^pI_knoY_K2}VJkkievaC|b<;>blH;)=bl> zMZ&dvM0FvymP?gk!+6-{W2ALUv5sXCtaMq?hGYF1U8yxug6g!})7;=(?WB%%v;gXMA|Nh~`7eJ9a6md$fTT|lFj z+~b8$)zZ4cfyb8dU0QD+2tBwI$KlVl`ut6<(gkRNwCneH8}|^45P%oG1hNo`YzZ_$ z@0*uzLH{no=C!%E1K{z3JM?7$tnOd`oW$?<@4o-|;nT+t>;YB-VdluMxkqxCP=W$= zHRbvvv0~^d%X5N4owO8M8+)cyxNLr>xU~AjLiMT=c*<@OGI==Oi7r@FKxu|#8;NLs zXx@O~pja&&Wi4BMzc#U0(hWVQoQ0Bq~UZl0k~<)Sj! zXwAJH|2>|@^(9kO7cm@zH<1Qq;_W0S`DzpiP|KRSj@kFCm%751EvKax?q}3Kpq?NR z)ORur(!}9Ny_W7)Iw#Ps$Ky5y z#(IqDM6i)f*#`a#m>C*p7_>j=p-p^r_es#>XAqiHHgBZL+Xw`-GXoMd&< zEWOKa;;@Xn=wlP*&b>$gSHlD)FJS@&wby){_gbOmR& zu*0aAX6Dg%I8Cs6ukU)8J(;Q6f6!P<{jl}+UDv&|ur3}~i%fmBF@H9$FM5FceaoxU zdxMuVrUxg@vHkvS*F#v=)hoK7v*kE_uy#A=ge~^ewV#WBnB43zhHD(=lb-Li71m-; z72~9=xtesDYn6cjmy{!#!@D0xxd4?w$;cc|xb~8uTtf3{_o*uPllEOT&a{cOxj@ex zxF$WQq{eD$Z9;4Q?3F|KEr+*OE`j{1il}hMY%|lch@-87O4uAt$jxG=rm!jWun-1S zq*@Y+EuXQlz)KBr6P6f4bd*mCr3;~v2 zNk6pa(xzIOhKi@fvP+H4EeUCkipTw7H@nA=`$M+-zP%lgb&)ZX1Rmzkk|nF-w|tws z3-tWRg8?vIpcBx_2TOc%89`5=D<0TXGe7&ye8bamWb?i|Jz@K53`YEzh__TAR~j%} zolqzN*L7_f?94rS^YZbV(_s|H!``_n`&GU{#Y*AB3=_6dGkvFu{;j_2Ue@n%!PqzT z_kyD;*|X)=;Hy~>p%mHl^)10X`g^_eb0>?uq@I~3(tzlb4=chMJRI<|+_QqPDa!hI zumoC`SHivZ3SD%XKW|WOBqU9~_mVYqHT`Y@@Q3dP`u+6jHw^&CVx6utGMG{0Uv@BR zSkVw4?i!dsY`RDQ9QH6k0+E7HJvKEyx(l@X>&PRDGuh4XqdT0#t~nBGWc3u@Q8GNp za(Dt@4NP62H3UxHLQHH80K;fuO3U=U$HTovj2V5jWbti8Xp34eCV)!-cp54ow>`55 z+Cg0cz_@+cIPDq%^kx?UaKTYRwG88Je$Jl(z_vA>sLTMEh?hHmy#Qc#O*{bqj?0Pc<{4weY%paHOYzjH3vp{WNr0dQSD0?wr`-KC|> z?Fay@_bdRI>CShg`20Wekx|1|)Px(RB3t2?x8oY@_n09Y5=O^oTB z|3v^io|g`Q$1NoIeF*?>O|W!UZ4|8gp?d;neyo}>6FOo$!e9x2TW=?iLTmj6XjN|W zB>-#;yzL*>nd}Xv34j+!_BjAt_mYrU7@l7Qz}a=Y^pxtm3^jQ^?f*moy!0@mN&d?K zcsYA{@-H-3ZyKAk(^Vn5@)BF#yhX?m`7Z!?LHl0@z^Z^`Jk{p_aHI!^o87i^INJUb z04E04Fqu8u70JxSbwQuxl`aA$m4D9yco|@Yi zR1^N;G@^L~JI1#O00TolzZ5@dZM@cdMLBRj)j9`lIAQdqewAs3MT4602 z*AJ&B09yP$+2D7lQZ;9LumJG4vxQgyc%atZdBMO5fB|mRUA#rV`BGx=!{P47$M;~c z|MKd`52vT`I8QxS2re9Y)Vg*7O=k__e7<{neEInJbbtR?LNLnU)%e<4EW>?TPRrR3 ztnOLK%34H|-N+1pmCc&~xYP=CejdM+lCiYViat6PqdVUN>@8g$)E4m@!`sF^9e50K3qa^VNAv4R?aKJ7uCK@aIHI1W=n_UZ$8zSA z+Jur5jx(u+&WJ%Gly#Y7o_4X&J%6tX5MC2-ic;Mgj*gl0T%ToEd{GS%{F8IMir>4d z8-$@X%m5c_E;1Y;(<(3ZS1j~B({pJk`zWohs`?Oq9`X^57%<*@%;Xq*I9;IIYsMYP z%pz+GB>Hm+5EY{BFdI^{Tq^`DXFCN9_mV{AMf^^H#!XI;QN+Cj-CCyR`7uLa!F z*2ETGjY{?ysg|goC8J1?yQQkiu3x-*tk*MWH;bF;O1Sk~Dh4|cj!bS>DAnn{g&ke6 z~qOv%V>Y`MkZX$5`dG0@u`Gomn_hh4T`{DT*?MM z-<*>qY<*ES#pug!TQs|J%_UthWiGYw!vREdvncPfbTX~!@*FCGsav~c5>=~cY|c!p z6GiQ&d20n|&l(f1#pr>@MZZ+Qa&d~K&&4RaA!q$JqUM?&hmjUJ{%Efj1q8M;2Ef@! zZ}%)3U&(-774R5%RbXA0F~-1>$E#?oT52|X_qOd77$e1Js>~KsfCVR;5RO2KRLdtp zoj%pJZe|+-y07gN6~0XZz)OUZS_uSzf&G>|q}=A!r2B67XSqiEZ8A#Gf9E_%k$-(1 zV5hKsHJ`Klz{bu?UkP@bpDoRoDDmF(tLtby+|z^G`_pP0?FLQ~_C9B)u^Keg7qFk9 ziC;gz{=@xSAjV%_{RE!YnMO0#D3X5J1582~RIT592>`=4>)YF>SJO~hF-XF(#=6|d z)3IKw@_D{7mdjN27qc1&Ipy&($8ii&2K?5~CWlJ~ug2iX`T~^Fm5N3}>QGZka3%eo0hoch ztBDnsS0$~l{yuTk%rtV?(&*YlGc(!}34oozq%#1tygR&k`S!zipO(0z1qN>=(A!@I z0RDc1jmz^HeZNA&_>Fkr_wU}19$>3?SgmY}bwb<(z)PU+w)DOL;2h|&K^gbu;yd6$ zL;WVnD>onCF6-pf_gtnR5xR5QK^4+a36HBNMtsk1=FuapLWIki`k@T86x8Fo#;^G;Ymwa$j&4|04%*?0pO`Y%{MQe&+?H@E-oozfoFLmJEE3xM`E;4Oj(GmhWcdH zJDybn~9=!m-rlwh<+A_)Qx^M1{?Jbe!%qwAzo3Ly3)7C^O zYxVrbnnWvv>O_!&Lw?$nid3yC{hWzK697AzN%D;jfHfd!NE{uxGc(Us!Z}-|z@#j= zV%YaYHdhN<0GyU}a{iCyRxKNBhMaSE6ElO%bOx^?b90Kc9!&sPUTz71HyC(XoKSVF z^H7TDM6+4kH#bhjZ=FL4gQq`PQ?bo;7n;K#AD`~d4;OS^Vpb7@z&<$%0>S|o@&9vimRhvFAHV6u%O@aec<-tjDVS)2GR9#gxs=kT(W95Y>)R3&GYr` zS65eW_xBklbhAHZ`fky@Zs?74-^K7*w$DVx34rzS&-DNc(m z-#;Ag9u9Y@=zhK%O-Vp>oBSa~^%gZs7&(Q$(E+ZWZKnze0LyQ=@aO4*B`x1ptZ$%e zy`iIDXZA97s7%X%t|Q#2T!+FM`ixhx!Q~_41YrFhfEJ7~nPhyhjKScGblX3UtqJy{ zdwIV*yng-b-+cP}1@1N#w1{6e{Vo7FN#OYJpmqg-Q}g_OT0k%MSNQo?XsWc<3)2kS zQ&qagEN-z7YJP!fEiANC|6UW4zz;s6(xaINQfCgK2}AiD_r(VL^=v%R!@EdCF@{%E z-@zGn$~R*u>}eClLq93P#M-n2DhC{4se>g}KYmv!<2_D&RFWTDkfpB+P>=+xTJW#v#WdENK_f zlR;H9#v5XwuM07e1LWnAs6=i2T!mDDgQ*ou+!Te=p~0TfN-S)*u5T;Gqkiw;C`evC zq1KL>)u(dXC+FEUhKZ#=YPq0^4;8WI;ibdfFymT_7_jw^8l7RRuG(SWlAw=B`VYurwLwXjN!PTom% z)#?UQa+2$J9dFmc&YNNQ2{HM0%PuCaQ-@32^G+QLAzP*!JLBCJpbC~%JDhk-yH^E> z-ibPq=hPyF=r?u3$y6_0sRsNRjT?+*W;+?11v89{98lPHd5)xleAq;^1{l+%jB=L1rDvaXG&RH{?4#0#5Q zWfJuwU&@IxjUG}tW&f1G?cP+x=Pn&LkUdkZ8)ocwJNMGd#|UtXchbn(YdPZi+x_uw z=CvLUKLM|n;j@~4$>=8KYm4cwf0l^a)>#t|BdPe?+lSNP?hp5G z0rG!&_0u2E??+S;nr5j$9uDmhJ0wrC2yLmxU82nrKZj#k^Bb%FZDP?v+J!Bfu2>(G zU8S9?75U2)n{rSiSv{#*AYs}SR}-=j>`C!Xg>MOWi|)3|n(V3PA=5!t9I}nFr$rXF zFBj;-!}I6e_3fLNZ~yMQ-wflcDS<}x(G~#9^=ircjYi)>x%ewY&iWzyeuw4N>r6

exEw940|1i{OEkWMpJ*dd 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

  • @?j(s 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

  • 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

    X$PbhWMdd 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

    y+WGv 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%0DDO846{qw0GPVh{WIDCFxH8(S`-F5 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%0D~LXwx5fP$+xNil9NmILNUP8s zI$9UqXMnB0HXgfM#Hw9=iUpj&byztQ$cD_@^~9S?yOQg66LuXz9 O0000 'https://appwrite.io/blog/post/announcing-appwrite-claude-code-plugin', + link: () => 'https://appwrite.io/blog/post/announcing-webhooks-api', external: true, hideOnClick: true, skipUpgradeRedirect: true }, show: true }; - listOfPromotions.push(claudePluginPromo); + listOfPromotions.push(webhooksApiPromo); } export function addBottomModalAlerts() { From 2ba0bcc8a35e7f7fc78b2ec168a43702723fcb76 Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Thu, 23 Apr 2026 12:12:54 +0530 Subject: [PATCH 151/209] Revert "fix: gate documentsdb/vectorsdb list calls behind multi-db flag" --- .../(entity)/helpers/sdk.ts | 20 +++++-------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/sdk.ts b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/sdk.ts index a9090f3fd..260b3b4ac 100644 --- a/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/sdk.ts +++ b/src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/sdk.ts @@ -1,8 +1,4 @@ import { sdk } from '$lib/stores/sdk'; -import { flags } from '$lib/flags'; -import { user } from '$lib/stores/user'; -import { organization } from '$lib/stores/organization'; -import { get } from 'svelte/store'; import type { Page } from '@sveltejs/kit'; import type { TerminologyResult } from './types'; import { @@ -177,17 +173,11 @@ export function useDatabaseSdk( }, async list(params): Promise { - const isMultiDb = flags.multiDb({ - account: get(user), - organization: get(organization) - }); - - const calls: Array> = [baseSdk.tablesDB.list(params)]; - if (isMultiDb) { - calls.push(baseSdk.documentsDB.list(params), baseSdk.vectorsDB.list(params)); - } - - const results = await Promise.all(calls); + const results = await Promise.all([ + baseSdk.tablesDB.list(params), + baseSdk.documentsDB.list(params), + baseSdk.vectorsDB.list(params) + ]); return results.reduce( (acc, curr) => ({ From 3cbfec7d44f67b74909ff2620c0ba697a70b443f Mon Sep 17 00:00:00 2001 From: Harsh Mahajan <127186841+HarshMN2345@users.noreply.github.com> Date: Thu, 23 Apr 2026 12:26:45 +0530 Subject: [PATCH 152/209] Revert "Feat `DocumentsDB`" --- bun.lock | 51 +- eslint.config.js | 2 +- package.json | 15 +- src/lib/actions/analytics.ts | 15 - src/lib/commandCenter/commands.ts | 15 +- src/lib/components/columnSelector.svelte | 39 +- src/lib/components/csvImportBox.svelte | 2 +- src/lib/components/customId.svelte | 44 +- src/lib/components/filters/content.svelte | 108 +- src/lib/components/filters/filters.svelte | 22 +- src/lib/components/id.svelte | 38 +- src/lib/components/modal.svelte | 50 +- src/lib/components/sortButton.svelte | 4 +- src/lib/components/viewSelector.svelte | 14 +- src/lib/constants.ts | 3 - src/lib/elements/forms/Seekbar.svelte | 18 +- src/lib/elements/forms/inputId.svelte | 2 - src/lib/elements/forms/inputProjectId.svelte | 2 - src/lib/elements/forms/inputTags.svelte | 27 +- src/lib/flags.ts | 5 +- src/lib/helpers/faker.ts | 63 +- src/lib/helpers/object.ts | 18 - src/lib/helpers/search.ts | 52 - src/lib/helpers/types.ts | 6 +- src/lib/helpers/unsavedChanges.ts | 57 - src/lib/layout/footer.svelte | 8 +- src/lib/layout/progress.svelte | 4 - src/lib/stores/migration.ts | 76 +- src/lib/stores/navigation.ts | 7 +- src/lib/stores/preferences.ts | 58 +- src/lib/stores/sdk.ts | 12 +- src/lib/stores/viewport.ts | 10 +- .../(migration-wizard)/resource-form.svelte | 19 +- .../(migration-wizard)/wizard.svelte | 6 +- .../onboarding/create-project/+page.svelte | 2 +- .../change-plan/+page.svelte | 6 +- .../project-[region]-[project]/+layout.svelte | 4 - .../auth/+layout.svelte | 4 +- .../auth/user-[user]/deleteUser.svelte | 6 +- .../databases/(assets)/dark/documents-db.svg | 79 - .../databases/(assets)/dark/mongo-db.svg | 27 - .../databases/(assets)/dark/tables-db.svg | 169 -- .../databases/(assets)/dark/vectors-db.svg | 65 - .../databases/(assets)/documents-db.svg | 75 - .../databases/(assets)/tables-db.svg | 172 -- .../databases/(assets)/vectors-db.svg | 70 - .../databases/+layout.svelte | 4 +- .../databases/+page.svelte | 93 +- .../databases/create/+page.svelte | 334 --- .../databases/create/store.ts | 11 - .../(entity)/helpers/index.ts | 4 +- .../(entity)/helpers/init.svelte.ts | 32 - .../(entity)/helpers/navigation.ts | 6 - .../(entity)/helpers/sdk.ts | 508 +---- .../(entity)/helpers/terminology.ts | 70 +- .../(entity)/helpers/types.ts | 3 +- .../(entity)/views/create.svelte | 74 +- .../(entity)/views/field/activity.svelte | 74 - .../views/field/editPermissions.svelte | 107 - .../(entity)/views/field/index.ts | 2 - .../(entity)/views/header.svelte | 4 +- .../(entity)/views/indexes/create.svelte | 2 +- .../(entity)/views/indexes/view.svelte | 29 +- .../(entity)/views/layouts/empty.svelte | 144 +- .../(entity)/views/layouts/index.ts | 3 - .../views/layouts/sheetOptions.svelte | 192 -- .../(entity)/views/layouts/sidesheet.svelte | 8 +- .../(entity)/views/layouts/spreadsheet.svelte | 115 +- .../(entity)/views/settings/danger.svelte | 2 +- .../(observer)/columnObserver.ts | 2 +- .../(suggestions)/columns.svelte | 18 +- .../(suggestions)/empty.svelte | 64 +- .../(suggestions)/indexes.svelte | 6 +- .../(suggestions)/input.svelte | 140 +- .../(suggestions)/store.ts | 10 +- .../database-[database]/+layout.svelte | 298 ++- .../databases/database-[database]/+layout.ts | 4 +- .../database-[database]/+page.svelte | 72 +- .../database-[database]/[...rest]/+page.ts | 88 +- .../backups/createPolicy.svelte | 135 +- .../database-[database]/backups/store.ts | 9 - .../database-[database]/breadcrumbs.svelte | 56 +- .../(components)/editor/embeddingModal.svelte | 84 - .../editor/extensions/duplicates.ts | 100 - .../editor/extensions/highlighting.ts | 236 -- .../(components)/editor/extensions/hover.ts | 102 - .../(components)/editor/extensions/index.ts | 19 - .../editor/extensions/readonly.ts | 123 -- .../(components)/editor/helpers/constants.ts | 38 - .../editor/helpers/errorMessages.ts | 638 ------ .../(components)/editor/helpers/keymaps.ts | 93 - .../(components)/editor/helpers/theme.ts | 46 - .../(components)/editor/index.ts | 6 - .../(components)/editor/view.svelte | 1915 ----------------- .../(components)/hintBadge.svelte | 27 - .../(components)/inputs/displayName.svelte | 67 - .../(components)/sonners/error.svelte | 66 - .../sonners/icons/CheckCircleDuotone.svelte | 19 - .../(components)/sonners/index.ts | 3 - .../(components)/sonners/save.svelte | 100 - .../(components)/sonners/suggestions.svelte | 83 - .../collection-[collection]/+layout.svelte | 376 ---- .../collection-[collection]/+layout.ts | 22 - .../collection-[collection]/+page.svelte | 396 ---- .../collection-[collection]/+page.ts | 38 - .../activity/+page.svelte | 14 - .../collection-[collection]/activity/+page.ts | 21 - .../export/+page.svelte | 148 -- .../collection-[collection]/header.svelte | 54 - .../indexes/+page.svelte | 66 - .../indexes/createIndex.svelte | 324 --- .../settings/+page.svelte | 67 - .../settings/displayName.svelte | 52 - .../spreadsheet.svelte | 1086 ---------- .../collection-[collection]/store.ts | 109 - .../usage/[[period]]/+page.svelte | 11 - .../usage/[[period]]/+page.ts | 18 - .../database-[database]/header.svelte | 5 +- .../database-[database]/settings/+page.svelte | 2 +- .../databases/database-[database]/store.ts | 150 -- .../table-[table]/+layout.svelte | 100 +- .../table-[table]/+page.svelte | 62 +- .../table-[table]/+page.ts | 42 +- .../table-[table]/columns/+page.svelte | 9 +- .../columns/createColumnDropdown.svelte | 4 +- .../table-[table]/columns/deleteColumn.svelte | 2 +- .../table-[table]/columns/edit.svelte | 3 +- .../table-[table]/columns/store.ts | 2 +- .../table-[table]/createColumn.svelte | 13 +- .../table-[table]/indexes/+page.svelte | 3 +- .../table-[table]/rows/cell/edit.svelte | 2 +- .../rows/columns/columnForm.svelte | 6 +- .../rows/columns/columnItem.svelte | 2 +- .../table-[table]/rows/create.svelte | 4 +- .../table-[table]/rows/edit.svelte | 12 +- .../table-[table]/rows/editRelated.svelte | 9 +- .../table-[table]/rows/store.ts | 24 +- .../table-[table]/sheetOptions.svelte | 10 +- .../table-[table]/spreadsheet.svelte | 238 +- .../table-[table]/store.ts | 67 +- .../database-[database]/table.svelte | 25 +- .../databases/empty.svelte | 150 -- .../databases/grid.svelte | 57 +- .../databases/store.ts | 33 +- .../databases/table.svelte | 4 +- .../functions/+page.svelte | 11 +- .../domains/add-domain/+page.svelte | 4 +- .../settings/executeFunction.svelte | 4 +- .../overview/platforms/llmBanner.svelte | 14 +- .../settings/+page.svelte | 2 +- .../migrations/(import)/wizard.svelte | 13 +- .../settings/updateLabels.svelte | 6 +- .../updateVariables.svelte | 8 +- .../(console)/verify-email/+page.svelte | 2 +- src/themes/dark-cloud.json | 1 - src/themes/dark.json | 1 - src/themes/light-cloud.json | 1 - src/themes/light.json | 1 - .../databases/empty-documentsdb-dark.svg | 82 - .../databases/empty-documentsdb-light.svg | 82 - .../images/databases/empty-tablesdb-dark.svg | 98 - .../images/databases/empty-tablesdb-light.svg | 98 - .../images/databases/empty-vectorsdb-dark.svg | 82 - .../databases/empty-vectorsdb-light.svg | 82 - 164 files changed, 1113 insertions(+), 11360 deletions(-) delete mode 100644 src/lib/helpers/search.ts delete mode 100644 src/lib/helpers/unsavedChanges.ts delete mode 100644 src/routes/(console)/project-[region]-[project]/databases/(assets)/dark/documents-db.svg delete mode 100644 src/routes/(console)/project-[region]-[project]/databases/(assets)/dark/mongo-db.svg delete mode 100644 src/routes/(console)/project-[region]-[project]/databases/(assets)/dark/tables-db.svg delete mode 100644 src/routes/(console)/project-[region]-[project]/databases/(assets)/dark/vectors-db.svg delete mode 100644 src/routes/(console)/project-[region]-[project]/databases/(assets)/documents-db.svg delete mode 100644 src/routes/(console)/project-[region]-[project]/databases/(assets)/tables-db.svg delete mode 100644 src/routes/(console)/project-[region]-[project]/databases/(assets)/vectors-db.svg delete mode 100644 src/routes/(console)/project-[region]-[project]/databases/create/+page.svelte delete mode 100644 src/routes/(console)/project-[region]-[project]/databases/create/store.ts delete mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/init.svelte.ts delete mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/helpers/navigation.ts delete mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/field/activity.svelte delete mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/field/editPermissions.svelte delete mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/(entity)/views/layouts/sheetOptions.svelte delete mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/embeddingModal.svelte delete mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/extensions/duplicates.ts delete mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/extensions/highlighting.ts delete mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/extensions/hover.ts delete mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/extensions/index.ts delete mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/extensions/readonly.ts delete mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/helpers/constants.ts delete mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/helpers/errorMessages.ts delete mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/helpers/keymaps.ts delete mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/helpers/theme.ts delete mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/index.ts delete mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/editor/view.svelte delete mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/hintBadge.svelte delete mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/inputs/displayName.svelte delete mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/sonners/error.svelte delete mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/sonners/icons/CheckCircleDuotone.svelte delete mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/sonners/index.ts delete mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/sonners/save.svelte delete mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/(components)/sonners/suggestions.svelte delete mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+layout.svelte delete mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+layout.ts delete mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+page.svelte delete mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/+page.ts delete mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/activity/+page.svelte delete mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/activity/+page.ts delete mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/export/+page.svelte delete mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/header.svelte delete mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/indexes/+page.svelte delete mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/indexes/createIndex.svelte delete mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/settings/+page.svelte delete mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/settings/displayName.svelte delete mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/spreadsheet.svelte delete mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/store.ts delete mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/usage/[[period]]/+page.svelte delete mode 100644 src/routes/(console)/project-[region]-[project]/databases/database-[database]/collection-[collection]/usage/[[period]]/+page.ts delete mode 100644 src/routes/(console)/project-[region]-[project]/databases/empty.svelte delete mode 100644 static/images/databases/empty-documentsdb-dark.svg delete mode 100644 static/images/databases/empty-documentsdb-light.svg delete mode 100644 static/images/databases/empty-tablesdb-dark.svg delete mode 100644 static/images/databases/empty-tablesdb-light.svg delete mode 100644 static/images/databases/empty-vectorsdb-dark.svg delete mode 100644 static/images/databases/empty-vectorsdb-light.svg diff --git a/bun.lock b/bun.lock index ba621b3c4..5e452c947 100644 --- a/bun.lock +++ b/bun.lock @@ -6,20 +6,12 @@ "name": "@appwrite/console", "dependencies": { "@ai-sdk/svelte": "^1.1.24", - "@appwrite.io/console": "https://pkg.vc/-/@appwrite/@appwrite.io/console@6d0c948", + "@appwrite.io/console": "https://pkg.vc/-/@appwrite/@appwrite.io/console@f063676", "@appwrite.io/pink-icons": "0.25.0", "@appwrite.io/pink-icons-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@bfe7ce3", "@appwrite.io/pink-legacy": "^1.0.3", "@appwrite.io/pink-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@8dcaa17", - "@codemirror/autocomplete": "^6.19.0", - "@codemirror/commands": "^6.9.0", - "@codemirror/language": "^6.11.3", - "@codemirror/lint": "^6.9.0", - "@codemirror/search": "^6.5.11", - "@codemirror/state": "^6.5.2", - "@codemirror/view": "^6.38.6", "@faker-js/faker": "^9.9.0", - "@lezer/highlight": "^1.2.1", "@plausible-analytics/tracker": "^0.4.4", "@popperjs/core": "^2.11.8", "@sentry/sveltekit": "^8.55.1", @@ -28,14 +20,12 @@ "@threlte/extras": "^9.13.0", "ai": "^6.0.138", "analytics": "^0.8.19", - "codemirror-json5": "^1.0.3", "cron-parser": "^4.9.0", "dayjs": "^1.11.20", "deep-equal": "^2.2.3", "echarts": "^5.6.0", "flatted": "^3.4.2", "ignore": "^6.0.2", - "json5": "^2.2.3", "nanoid": "^5.1.7", "nanotar": "^0.3.0", "pretty-bytes": "^6.1.1", @@ -47,7 +37,6 @@ "devDependencies": { "@eslint/compat": "^1.4.1", "@eslint/js": "^9.39.4", - "@lezer/common": "^1.5.0", "@melt-ui/pp": "^0.3.2", "@melt-ui/svelte": "^0.86.6", "@playwright/test": "^1.58.2", @@ -93,7 +82,7 @@ "flatted": "^3.4.2", "immutable": "^5.1.5", "minimatch": "10.2.3", - "picomatch": "^4.0.4", + "picomatch": "^2.3.2", "vite": "npm:rolldown-vite@latest", "yaml": "^1.10.3", }, @@ -124,7 +113,7 @@ "@analytics/type-utils": ["@analytics/type-utils@0.6.4", "", {}, "sha512-Ou1gQxFakOWLcPnbFVsrPb8g1wLLUZYYJXDPjHkG07+5mustGs5yqACx42UAu4A6NszNN6Z5gGxhyH45zPWRxw=="], - "@appwrite.io/console": ["@appwrite.io/console@https://pkg.vc/-/@appwrite/@appwrite.io/console@6d0c948", { "dependencies": { "json-bigint": "1.0.0" } }], + "@appwrite.io/console": ["@appwrite.io/console@https://pkg.vc/-/@appwrite/@appwrite.io/console@f063676", { "dependencies": { "json-bigint": "1.0.0" } }], "@appwrite.io/pink-icons": ["@appwrite.io/pink-icons@0.25.0", "", {}, "sha512-0O3i2oEuh5mWvjO80i+X6rbzrWLJ1m5wmv2/M3a1p2PyBJsFxN8xQMTEmTn3Wl/D26SsM7SpzbdW6gmfgoVU9Q=="], @@ -170,20 +159,6 @@ "@babel/types": ["@babel/types@7.29.0", "", { "dependencies": { "@babel/helper-string-parser": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5" } }, "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A=="], - "@codemirror/autocomplete": ["@codemirror/autocomplete@6.20.1", "", { "dependencies": { "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.17.0", "@lezer/common": "^1.0.0" } }, "sha512-1cvg3Vz1dSSToCNlJfRA2WSI4ht3K+WplO0UMOgmUYPivCyy2oueZY6Lx7M9wThm7SDUBViRmuT+OG/i8+ON9A=="], - - "@codemirror/commands": ["@codemirror/commands@6.10.3", "", { "dependencies": { "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.6.0", "@codemirror/view": "^6.27.0", "@lezer/common": "^1.1.0" } }, "sha512-JFRiqhKu+bvSkDLI+rUhJwSxQxYb759W5GBezE8Uc8mHLqC9aV/9aTC7yJSqCtB3F00pylrLCwnyS91Ap5ej4Q=="], - - "@codemirror/language": ["@codemirror/language@6.12.3", "", { "dependencies": { "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.23.0", "@lezer/common": "^1.5.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0", "style-mod": "^4.0.0" } }, "sha512-QwCZW6Tt1siP37Jet9Tb02Zs81TQt6qQrZR2H+eGMcFsL1zMrk2/b9CLC7/9ieP1fjIUMgviLWMmgiHoJrj+ZA=="], - - "@codemirror/lint": ["@codemirror/lint@6.9.5", "", { "dependencies": { "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.35.0", "crelt": "^1.0.5" } }, "sha512-GElsbU9G7QT9xXhpUg1zWGmftA/7jamh+7+ydKRuT0ORpWS3wOSP0yT1FOlIZa7mIJjpVPipErsyvVqB9cfTFA=="], - - "@codemirror/search": ["@codemirror/search@6.6.0", "", { "dependencies": { "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.37.0", "crelt": "^1.0.5" } }, "sha512-koFuNXcDvyyotWcgOnZGmY7LZqEOXZaaxD/j6n18TCLx2/9HieZJ5H6hs1g8FiRxBD0DNfs0nXn17g872RmYdw=="], - - "@codemirror/state": ["@codemirror/state@6.6.0", "", { "dependencies": { "@marijn/find-cluster-break": "^1.0.0" } }, "sha512-4nbvra5R5EtiCzr9BTHiTLc+MLXK2QGiAVYMyi8PkQd3SR+6ixar/Q/01Fa21TBIDOZXgeWV4WppsQolSreAPQ=="], - - "@codemirror/view": ["@codemirror/view@6.41.1", "", { "dependencies": { "@codemirror/state": "^6.6.0", "crelt": "^1.0.6", "style-mod": "^4.1.0", "w3c-keyname": "^2.2.4" } }, "sha512-ToDnWKbBnke+ZLrP6vgTTDScGi5H37YYuZGniQaBzxMVdtCxMrslsmtnOvbPZk4RX9bvkQqnWR/WS/35tJA0qg=="], - "@csstools/color-helpers": ["@csstools/color-helpers@5.1.0", "", {}, "sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA=="], "@csstools/css-calc": ["@csstools/css-calc@2.1.4", "", { "peerDependencies": { "@csstools/css-parser-algorithms": "^3.0.5", "@csstools/css-tokenizer": "^3.0.4" } }, "sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ=="], @@ -250,14 +225,6 @@ "@jridgewell/trace-mapping": ["@jridgewell/trace-mapping@0.3.31", "", { "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw=="], - "@lezer/common": ["@lezer/common@1.5.2", "", {}, "sha512-sxQE460fPZyU3sdc8lafxiPwJHBzZRy/udNFynGQky1SePYBdhkBl1kOagA9uT3pxR8K09bOrmTUqA9wb/PjSQ=="], - - "@lezer/highlight": ["@lezer/highlight@1.2.3", "", { "dependencies": { "@lezer/common": "^1.3.0" } }, "sha512-qXdH7UqTvGfdVBINrgKhDsVTJTxactNNxLk7+UMwZhU13lMHaOBlJe9Vqp907ya56Y3+ed2tlqzys7jDkTmW0g=="], - - "@lezer/lr": ["@lezer/lr@1.4.10", "", { "dependencies": { "@lezer/common": "^1.0.0" } }, "sha512-rnCpTIBafOx4mRp43xOxDJbFipJm/c0cia/V5TiGlhmMa+wsSdoGmUN3w5Bqrks/09Q/D4tNAmWaT8p6NRi77A=="], - - "@marijn/find-cluster-break": ["@marijn/find-cluster-break@1.0.2", "", {}, "sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g=="], - "@melt-ui/pp": ["@melt-ui/pp@0.3.2", "", { "dependencies": { "estree-walker": "^3.0.3", "magic-string": "^0.30.5" }, "peerDependencies": { "@melt-ui/svelte": ">= 0.29.0", "svelte": "^3.55.0 || ^4.0.0 || ^5.0.0-next.1" } }, "sha512-xKkPvaIAFinklLXcQOpwZ8YSpqAFxykjWf8Y/fSJQwsixV/0rcFs07hJ49hJjPy5vItvw5Qa0uOjzFUbXzBypQ=="], "@melt-ui/svelte": ["@melt-ui/svelte@0.86.6", "", { "dependencies": { "@floating-ui/core": "^1.3.1", "@floating-ui/dom": "^1.4.5", "@internationalized/date": "^3.5.0", "dequal": "^2.0.3", "focus-trap": "^7.5.2", "nanoid": "^5.0.4" }, "peerDependencies": { "svelte": "^3.0.0 || ^4.0.0 || ^5.0.0-next.118" } }, "sha512-Jer+M7DgIwT5IHfTayb4Iw/fkkxWNmC/mqn/nMh9JrbPbkxmyabfLQnhJ+JDn5HK77f84j34lubO3iqFtYAfMg=="], @@ -680,8 +647,6 @@ "clsx": ["clsx@2.1.1", "", {}, "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA=="], - "codemirror-json5": ["codemirror-json5@1.0.3", "", { "dependencies": { "@codemirror/language": "^6.0.0", "@codemirror/state": "^6.0.0", "@codemirror/view": "^6.0.0", "@lezer/common": "^1.0.0", "@lezer/highlight": "^1.0.0", "json5": "^2.2.1", "lezer-json5": "^2.0.2" } }, "sha512-HmmoYO2huQxoaoG5ARKjqQc9mz7/qmNPvMbISVfIE2Gk1+4vZQg9X3G6g49MYM5IK00Ol3aijd7OKrySuOkA7Q=="], - "color": ["color@5.0.3", "", { "dependencies": { "color-convert": "^3.1.3", "color-string": "^2.1.3" } }, "sha512-ezmVcLR3xAVp8kYOm4GS45ZLLgIE6SPAFoduLr6hTDajwb3KZ2F46gulK3XpcwRFb5KKGCSezCBAY4Dw4HsyXA=="], "color-convert": ["color-convert@3.1.3", "", { "dependencies": { "color-name": "^2.0.0" } }, "sha512-fasDH2ont2GqF5HpyO4w0+BcewlhHEZOFn9c1ckZdHpJ56Qb7MHhH/IcJZbBGgvdtwdwNbLvxiBEdg336iA9Sg=="], @@ -698,8 +663,6 @@ "cookie": ["cookie@0.7.2", "", {}, "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w=="], - "crelt": ["crelt@1.0.6", "", {}, "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g=="], - "cron-parser": ["cron-parser@4.9.0", "", { "dependencies": { "luxon": "^3.2.1" } }, "sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q=="], "cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="], @@ -1046,8 +1009,6 @@ "levn": ["levn@0.4.1", "", { "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" } }, "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ=="], - "lezer-json5": ["lezer-json5@2.0.2", "", { "dependencies": { "@lezer/lr": "^1.0.0" } }, "sha512-NRmtBlKW/f8mA7xatKq8IUOq045t8GVHI4kZXrUtYYUdiVeGiO6zKGAV7/nUAnf5q+rYTY+SWX/gvQdFXMjNxQ=="], - "lightningcss": ["lightningcss@1.32.0", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-android-arm64": "1.32.0", "lightningcss-darwin-arm64": "1.32.0", "lightningcss-darwin-x64": "1.32.0", "lightningcss-freebsd-x64": "1.32.0", "lightningcss-linux-arm-gnueabihf": "1.32.0", "lightningcss-linux-arm64-gnu": "1.32.0", "lightningcss-linux-arm64-musl": "1.32.0", "lightningcss-linux-x64-gnu": "1.32.0", "lightningcss-linux-x64-musl": "1.32.0", "lightningcss-win32-arm64-msvc": "1.32.0", "lightningcss-win32-x64-msvc": "1.32.0" } }, "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ=="], "lightningcss-android-arm64": ["lightningcss-android-arm64@1.32.0", "", { "os": "android", "cpu": "arm64" }, "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg=="], @@ -1184,7 +1145,7 @@ "picocolors": ["picocolors@1.1.1", "", {}, "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="], - "picomatch": ["picomatch@4.0.4", "", {}, "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A=="], + "picomatch": ["picomatch@2.3.2", "", {}, "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA=="], "playwright": ["playwright@1.58.2", "", { "dependencies": { "playwright-core": "1.58.2" }, "optionalDependencies": { "fsevents": "2.3.2" }, "bin": { "playwright": "cli.js" } }, "sha512-vA30H8Nvkq/cPBnNw4Q8TWz1EJyqgpuinBcHET0YVJVFldr8JDNiU9LaWAE1KqSkRYazuaBhTpB5ZzShOezQ6A=="], @@ -1328,8 +1289,6 @@ "strip-literal": ["strip-literal@3.1.0", "", { "dependencies": { "js-tokens": "^9.0.1" } }, "sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg=="], - "style-mod": ["style-mod@4.1.3", "", {}, "sha512-i/n8VsZydrugj3Iuzll8+x/00GH2vnYsk1eomD8QiRrSAeW6ItbCQDtfXCeJHd0iwiNagqjQkvpvREEPtW3IoQ=="], - "style-value-types": ["style-value-types@5.1.2", "", { "dependencies": { "hey-listen": "^1.0.8", "tslib": "2.4.0" } }, "sha512-Vs9fNreYF9j6W2VvuDTP7kepALi7sk0xtk2Tu8Yxi9UoajJdEVpNpCov0HsLTqXvNGKX+Uv09pkozVITi1jf3Q=="], "supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="], @@ -1450,8 +1409,6 @@ "vitest": ["vitest@3.2.4", "", { "dependencies": { "@types/chai": "^5.2.2", "@vitest/expect": "3.2.4", "@vitest/mocker": "3.2.4", "@vitest/pretty-format": "^3.2.4", "@vitest/runner": "3.2.4", "@vitest/snapshot": "3.2.4", "@vitest/spy": "3.2.4", "@vitest/utils": "3.2.4", "chai": "^5.2.0", "debug": "^4.4.1", "expect-type": "^1.2.1", "magic-string": "^0.30.17", "pathe": "^2.0.3", "picomatch": "^4.0.2", "std-env": "^3.9.0", "tinybench": "^2.9.0", "tinyexec": "^0.3.2", "tinyglobby": "^0.2.14", "tinypool": "^1.1.1", "tinyrainbow": "^2.0.0", "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0", "vite-node": "3.2.4", "why-is-node-running": "^2.3.0" }, "peerDependencies": { "@edge-runtime/vm": "*", "@types/debug": "^4.1.12", "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", "@vitest/browser": "3.2.4", "@vitest/ui": "3.2.4", "happy-dom": "*", "jsdom": "*" }, "optionalPeers": ["@edge-runtime/vm", "@types/debug", "@types/node", "@vitest/browser", "@vitest/ui", "happy-dom", "jsdom"], "bin": { "vitest": "vitest.mjs" } }, "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A=="], - "w3c-keyname": ["w3c-keyname@2.2.8", "", {}, "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ=="], - "w3c-xmlserializer": ["w3c-xmlserializer@5.0.0", "", { "dependencies": { "xml-name-validator": "^5.0.0" } }, "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA=="], "webgl-sdf-generator": ["webgl-sdf-generator@1.1.1", "", {}, "sha512-9Z0JcMTFxeE+b2x1LJTdnaT8rT8aEp7MVxkNwoycNmJWwPdzoXzMh0BjJSh/AEFP+KPYZUli814h8bJZFIZ2jA=="], diff --git a/eslint.config.js b/eslint.config.js index 8bf40b821..841ddf352 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -36,7 +36,7 @@ export default ts.config( // TODO: @itznotabug, this requires a big refactor! 'svelte/no-navigation-without-resolve': 'warn', 'svelte/prefer-svelte-reactivity': 'warn', - 'svelte/prefer-writable-derived': 'off' + 'svelte/prefer-writable-derived': 'warn' } }, { diff --git a/package.json b/package.json index 625a87e21..099ae9cb1 100644 --- a/package.json +++ b/package.json @@ -20,20 +20,12 @@ }, "dependencies": { "@ai-sdk/svelte": "^1.1.24", - "@appwrite.io/console": "https://pkg.vc/-/@appwrite/@appwrite.io/console@6d0c948", + "@appwrite.io/console": "https://pkg.vc/-/@appwrite/@appwrite.io/console@f063676", "@appwrite.io/pink-icons": "0.25.0", "@appwrite.io/pink-icons-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-icons-svelte@bfe7ce3", "@appwrite.io/pink-legacy": "^1.0.3", "@appwrite.io/pink-svelte": "https://pkg.vc/-/@appwrite/@appwrite.io/pink-svelte@8dcaa17", - "@codemirror/autocomplete": "^6.19.0", - "@codemirror/commands": "^6.9.0", - "@codemirror/language": "^6.11.3", - "@codemirror/lint": "^6.9.0", - "@codemirror/search": "^6.5.11", - "@codemirror/state": "^6.5.2", - "@codemirror/view": "^6.38.6", "@faker-js/faker": "^9.9.0", - "@lezer/highlight": "^1.2.1", "@plausible-analytics/tracker": "^0.4.4", "@popperjs/core": "^2.11.8", "@sentry/sveltekit": "^8.55.1", @@ -42,14 +34,12 @@ "@threlte/extras": "^9.13.0", "ai": "^6.0.138", "analytics": "^0.8.19", - "codemirror-json5": "^1.0.3", "cron-parser": "^4.9.0", "dayjs": "^1.11.20", "deep-equal": "^2.2.3", "echarts": "^5.6.0", "flatted": "^3.4.2", "ignore": "^6.0.2", - "json5": "^2.2.3", "nanoid": "^5.1.7", "nanotar": "^0.3.0", "pretty-bytes": "^6.1.1", @@ -61,7 +51,6 @@ "devDependencies": { "@eslint/compat": "^1.4.1", "@eslint/js": "^9.39.4", - "@lezer/common": "^1.5.0", "@melt-ui/pp": "^0.3.2", "@melt-ui/svelte": "^0.86.6", "@playwright/test": "^1.58.2", @@ -106,7 +95,7 @@ "immutable": "^5.1.5", "flatted": "^3.4.2", "yaml": "^1.10.3", - "picomatch": "^4.0.4", + "picomatch": "^2.3.2", "cookie": "^0.7.0" } } diff --git a/src/lib/actions/analytics.ts b/src/lib/actions/analytics.ts index c806945d0..e8502b5e7 100644 --- a/src/lib/actions/analytics.ts +++ b/src/lib/actions/analytics.ts @@ -156,7 +156,6 @@ export enum Click { DatabaseDatabaseDelete = 'click_database_delete', DatabaseImportCsv = 'click_database_import_csv', DatabaseExportCsv = 'click_database_export_csv', - DatabaseImportJson = 'click_database_import_json', DomainCreateClick = 'click_domain_create', DomainDeleteClick = 'click_domain_delete', DomainRetryDomainVerificationClick = 'click_domain_retry_domain_verification', @@ -285,7 +284,6 @@ export enum Submit { DatabaseUpdateName = 'submit_database_update_name', DatabaseImportCsv = 'submit_database_import_csv', DatabaseExportCsv = 'submit_database_export_csv', - DatabaseImportJSON = 'submit_database_import_json', DatabaseBackupDelete = 'submit_database_backup_delete', DatabaseBackupPolicyCreate = 'submit_database_backup_policy_create', @@ -299,11 +297,6 @@ export enum Submit { RowUpdate = 'submit_row_update', RowUpdatePermissions = 'submit_row_update_permissions', - DocumentCreate = 'submit_document_create', - DocumentDelete = 'submit_document_delete', - DocumentUpdate = 'submit_document_update', - DocumentUpdatePermissions = 'submit_document_update_permissions', - IndexCreate = 'submit_index_create', IndexDelete = 'submit_index_delete', @@ -315,14 +308,6 @@ export enum Submit { TableUpdateEnabled = 'submit_table_update_enabled', TableUpdateDisplayNames = 'submit_table_update_display_names', - CollectionCreate = 'submit_collection_create', - CollectionDelete = 'submit_collection_delete', - CollectionUpdateName = 'submit_collection_update_name', - CollectionUpdatePermissions = 'submit_collection_update_permissions', - CollectionUpdateSecurity = 'submit_collection_update_security', - CollectionUpdateEnabled = 'submit_collection_update_enabled', - CollectionUpdateDisplayNames = 'submit_collection_update_display_names', - FunctionCreate = 'submit_function_create', FunctionDelete = 'submit_function_delete', FunctionUpdateName = 'submit_function_update_name', diff --git a/src/lib/commandCenter/commands.ts b/src/lib/commandCenter/commands.ts index 7c8cfd15e..e4f383718 100644 --- a/src/lib/commandCenter/commands.ts +++ b/src/lib/commandCenter/commands.ts @@ -29,11 +29,9 @@ const groups = [ 'migrations', 'users', 'tables', - 'collections', 'columns', 'indexes', 'rows', - 'documents', 'teams', 'security', 'buckets', @@ -104,19 +102,8 @@ const commandsEnabled = derived(disabledMap, ($disabledMap) => { export function isTargetInputLike(element: EventTarget | null) { if (!(element instanceof HTMLElement)) return false; - return !!element.closest( - [ - 'input', - 'textarea', - 'select', - '[contenteditable]', - '[role="combobox"]', - '[role="textbox"]', - '[role="searchbox"]', - '[data-command-center-ignore]', - '.cm-editor' - ].join(',') + 'input,textarea,select,[contenteditable],[role="combobox"],[role="textbox"],[role="searchbox"],[data-command-center-ignore]' ); } diff --git a/src/lib/components/columnSelector.svelte b/src/lib/components/columnSelector.svelte index 9bb6c23c0..506735df3 100644 --- a/src/lib/components/columnSelector.svelte +++ b/src/lib/components/columnSelector.svelte @@ -10,10 +10,8 @@ Layout, Popover, Selector, - Typography, - Icon + Typography } from '@appwrite.io/pink-svelte'; - import { IconPlus } from '@appwrite.io/pink-icons-svelte'; import { Button } from '$lib/elements/forms'; let { @@ -23,8 +21,7 @@ allowNoColumns = false, showAnyway = false, children, - onPreferencesUpdated = null, - onCustomOptionClick = null + onPreferencesUpdated = null }: { columns: Writable; isCustomTable?: boolean; @@ -33,7 +30,6 @@ showAnyway?: boolean; children: Snippet<[toggle: () => void, selectedColumnsNumber: number]>; onPreferencesUpdated?: () => void; - onCustomOptionClick?: () => void; } = $props(); let search = $state(''); @@ -119,7 +115,7 @@ cols.map((col) => col.exclude ? col - : filteredColumns.some((fc) => fc.id === col.id && !col.disable) + : filteredColumns.some((fc) => fc.id === col.id) ? { ...col, hide: false } : col ) @@ -130,9 +126,7 @@ function deselectAll() { columns.update((cols) => { const realColumns = cols.filter((col) => !col.exclude && !col.isAction); - const filtered = filteredColumns.filter( - (col) => !col.exclude && !col.isAction && !col.disable - ); + const filtered = filteredColumns.filter((col) => !col.exclude && !col.isAction); if (filtered.length === 0) return cols; @@ -193,7 +187,7 @@ {@const placement = isNewStyle ? 'bottom-start' : 'bottom-end'} {@render children(toggle, selectedColumnsNumber)} - +

    diff --git a/src/lib/components/csvImportBox.svelte b/src/lib/components/csvImportBox.svelte index 6069ac4c4..e8a6e167e 100644 --- a/src/lib/components/csvImportBox.svelte +++ b/src/lib/components/csvImportBox.svelte @@ -14,7 +14,7 @@ // re-render the key for sheet UI. import { hash } from '$lib/helpers/string'; - import { spreadsheetRenderKey } from '$database/store'; + import { spreadsheetRenderKey } from '$routes/(console)/project-[region]-[project]/databases/database-[database]/table-[table]/store'; import { Link } from '$lib/elements'; type CsvImportError = { diff --git a/src/lib/components/customId.svelte b/src/lib/components/customId.svelte index 559f6a0fe..66a56c2d8 100644 --- a/src/lib/components/customId.svelte +++ b/src/lib/components/customId.svelte @@ -12,9 +12,7 @@ id = $bindable(null), autofocus = true, isProject = false, - required = true, - syncFrom = undefined, - disabled = false + required = true }: { show: boolean; name: string; @@ -22,29 +20,8 @@ autofocus?: boolean; isProject?: boolean; required?: boolean; - disabled?: boolean; - syncFrom?: string | undefined; } = $props(); - let touchedId = $state(false); - - function toIdFormat(str: string): string { - return str - .toLowerCase() - .replace(/[^a-z0-9\-_. ]+/g, '') - .replace(/ /g, '_') - .replace(/^-+/, '') - .replace(/\.+$/, '') - .replace(/_{2,}/g, '_') - .slice(0, 36); // max length - } - - function handleInput() { - if (!touchedId) { - touchedId = true; - } - } - $effect(() => { if (!show) { id = null; @@ -60,21 +37,6 @@ trackEvent(Click.ShowCustomIdClick); } }); - - $effect(() => { - if (syncFrom && !touchedId) { - const newId = toIdFormat(syncFrom); - if (id !== newId) { - id = newId; - } - } - }); - - $effect(() => { - if (!show) { - touchedId = false; - } - }); {#if show} @@ -99,9 +61,9 @@ {#if isProject} - + {:else} - + {/if} diff --git a/src/lib/components/filters/content.svelte b/src/lib/components/filters/content.svelte index 20f50a417..c4a83c821 100644 --- a/src/lib/components/filters/content.svelte +++ b/src/lib/components/filters/content.svelte @@ -25,8 +25,7 @@ columnId = $bindable(null), arrayValues = $bindable([]), operatorKey = $bindable(null), - singleCondition = false, - schema = true + singleCondition = false }: { // We cast to any to not cause type errors in the input components /* eslint @typescript-eslint/no-explicit-any: 'off' */ @@ -37,40 +36,11 @@ arrayValues?: string[]; operatorKey?: string | null; singleCondition?: boolean; - schema?: boolean; } = $props(); - const systemFieldColumns: Record = { - $id: { id: '$id', title: '$id', type: 'string' }, - $createdAt: { id: '$createdAt', title: '$createdAt', type: 'datetime' }, - $updatedAt: { id: '$updatedAt', title: '$updatedAt', type: 'datetime' } - }; - - const columnsArray = $derived($columns); - const isCustomAttribute = $derived( - !schema && - columnId && - !systemFieldColumns[columnId] && - !columnsArray.find((c) => c.id === columnId) - ); - const column = $derived.by(() => { - if (!schema && columnId) { - if (systemFieldColumns[columnId]) { - return systemFieldColumns[columnId]; - } - const existingColumn = columnsArray.find((c) => c.id === columnId); - if (!existingColumn) { - return { id: columnId, title: columnId, type: 'string' } as Column; - } - return existingColumn; - } - return columnsArray.find((c) => c.id === columnId); - }); - - const operatorsForColumn = $derived.by(() => { - if (!schema && (!column || isCustomAttribute)) { - return Object.entries(operators).map(([k]) => ({ label: k, value: k })); - } + let columnsArray = $derived($columns); + let column = $derived(columnsArray.find((c) => c.id === columnId)); + let operatorsForColumn = $derived.by(() => { if (!column?.type) return []; return Object.entries(operators) .filter(([, v]) => v.types.includes(column.type)) @@ -134,46 +104,16 @@ const dispatch = createEventDispatcher<{ clear: void; apply: { applied: number } }>(); - function coerceValueByOperatorType(value: any, operatorTypes: string[]): any { - if (typeof value !== 'string' || !value) return value; - - if (operatorTypes.includes('integer') || operatorTypes.includes('double')) { - const numValue = Number(value); - if (!isNaN(numValue) && value.trim() !== '') { - return numValue; - } - } else if (operatorTypes.includes('boolean')) { - const lowerValue = value.toLowerCase().trim(); - if (lowerValue === 'true' || lowerValue === '1') { - return true; - } else if (lowerValue === 'false' || lowerValue === '0') { - return false; - } - } - - return value; - } - function addFilterAndReset() { - const columnsWithVirtual = - column && !columnsArray.find((c) => c.id === columnId) - ? [...columnsArray, column] - : columnsArray; - // For distance operators, pass the distance as a separate parameter if (isDistanceOperator && distanceValue !== null && value !== null) { - addFilter(columnsWithVirtual, columnId, operatorKey, value, arrayValues, distanceValue); + addFilter(columnsArray, columnId, operatorKey, value, arrayValues, distanceValue); } else { - let preparedValue = value; - - if (column?.type === 'datetime' && typeof value === 'string' && value) { - preparedValue = new Date(value).toISOString(); - } else if (!schema) { - const operatorTypes = operator?.types || []; - preparedValue = coerceValueByOperatorType(value, operatorTypes); - } - - addFilter(columnsWithVirtual, columnId, operatorKey, preparedValue, arrayValues); + const preparedValue = + column?.type === 'datetime' && typeof value === 'string' && value + ? new Date(value).toISOString() + : value; + addFilter(columnsArray, columnId, operatorKey, preparedValue, arrayValues); } columnId = null; @@ -195,23 +135,19 @@ addFilterAndReset(); }}> - {#if schema} - - {:else} - - {/if} + - {#if (column || (!schema && columnId)) && operator && !operator?.hideInput} + {#if column && operator && !operator?.hideInput} {#if column?.array} {#if column.format === 'enum'} - {#if column?.format === 'enum'} + {#if column.format === 'enum'} - {:else if column?.type === 'integer' || column?.type === 'double'} + {:else if column.type === 'integer' || column.type === 'double'} - {:else if column?.type === 'boolean'} + {:else if column.type === 'boolean'} - {:else if column?.type === 'datetime'} + {:else if column.type === 'datetime'} {#key value} {/key} - {:else if column?.type === 'point' || column?.type === 'linestring' || column?.type === 'polygon'} + {:else if column.type === 'point' || column.type === 'linestring' || column.type === 'polygon'} { diff --git a/src/lib/components/filters/filters.svelte b/src/lib/components/filters/filters.svelte index 52eae51f7..4b504a705 100644 --- a/src/lib/components/filters/filters.svelte +++ b/src/lib/components/filters/filters.svelte @@ -28,7 +28,6 @@ export let enableApply = false; export let quickFilters = false; export let analyticsSource = ''; - export let schema = true; let displayQuickFilters = quickFilters; const dispatch = createEventDispatcher(); @@ -87,26 +86,11 @@ value || arrayValues.length) ) { - const columnsWithVirtual = - !schema && selectedColumn && !$columns.find((c) => c.id === selectedColumn) - ? [ - ...$columns, - { id: selectedColumn, title: selectedColumn, type: 'string' as const } - ] - : $columns; - // For distance operators, pass the distance as a separate parameter if (isDistanceOperator && distanceValue !== null && value !== null) { - addFilter( - columnsWithVirtual, - selectedColumn, - operatorKey, - value, - arrayValues, - distanceValue - ); + addFilter($columns, selectedColumn, operatorKey, value, arrayValues, distanceValue); } else { - addFilter(columnsWithVirtual, selectedColumn, operatorKey, value, arrayValues); + addFilter($columns, selectedColumn, operatorKey, value, arrayValues); } selectedColumn = null; value = null; @@ -202,7 +186,6 @@ bind:distanceValue bind:arrayValues {columns} - {schema} {singleCondition} on:apply={afterApply} on:clear={() => (filtersAppliedCount = 0)} /> @@ -260,7 +243,6 @@ {:else} + {#key value} @@ -125,7 +107,7 @@ style:overflow="hidden" style:word-break="break-all" use:truncateText> - {@render children()} + diff --git a/src/lib/components/modal.svelte b/src/lib/components/modal.svelte index 062639340..8181338f8 100644 --- a/src/lib/components/modal.svelte +++ b/src/lib/components/modal.svelte @@ -30,29 +30,27 @@ -
    - - - {#if error} -
    - { - error = null; - }}> - {error} - -
    - {/if} - - - - - - -
    -
    + + + {#if error} +
    + { + error = null; + }}> + {error} + +
    + {/if} + + + + + + +
    diff --git a/src/lib/components/sortButton.svelte b/src/lib/components/sortButton.svelte index bb24a2bb2..d202cf664 100644 --- a/src/lib/components/sortButton.svelte +++ b/src/lib/components/sortButton.svelte @@ -5,10 +5,10 @@
    -