@kedem/okdb 1.0.1 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/okdb.js +1 -1
- package/keys/public.pem +3 -0
- package/okdb.js +1 -1
- package/package.json +2 -2
- package/public/admin-app.js +1 -1
- package/public/components/admin-route-host.ok.js +1 -1
- package/public/components/env-picker.ok.js +1 -1
- package/public/components/field-path-input.ok.js +1 -1
- package/public/components/geo-map.ok.js +1 -1
- package/public/components/ok-cron-input.ok.js +1 -1
- package/public/components/ok-dropzone.ok.js +1 -1
- package/public/components/ok-js-input.ok.js +1 -1
- package/public/components/ok-json-input.ok.js +1 -1
- package/public/components/ok-text-monaco-input.ok.js +1 -1
- package/public/components/theme-toggle.ok.js +1 -1
- package/public/login-app.js +1 -1
- package/public/modules/ok.js +1 -1
- package/public/sections/api/parts/api-endpoint.ok.js +1 -1
- package/public/sections/auth/modals/create-token-modal.ok.js +1 -1
- package/public/sections/auth/modals/edit-token-modal.ok.js +1 -1
- package/public/sections/auth/modals/perm-info-popover.ok.js +1 -1
- package/public/sections/auth/parts/token-detail.ok.js +1 -1
- package/public/sections/auth/parts/token-list.ok.js +1 -1
- package/public/sections/db/modals/add-item-modal.ok.js +1 -1
- package/public/sections/db/modals/create-env-modal.ok.js +1 -1
- package/public/sections/db/modals/create-fts-modal.ok.js +1 -1
- package/public/sections/db/modals/create-index-modal.ok.js +1 -1
- package/public/sections/db/modals/create-pipeline-modal.ok.js +1 -1
- package/public/sections/db/modals/demo-env-modal.ok.js +1 -1
- package/public/sections/db/modals/remove-env-modal.ok.js +1 -1
- package/public/sections/db/modals/schema-edit-modal.ok.js +1 -1
- package/public/sections/db/parts/db-overview.ok.js +1 -1
- package/public/sections/db/parts/db-pipelines-panel.ok.js +1 -1
- package/public/sections/db/parts/edit-row.ok.js +1 -1
- package/public/sections/db/parts/tm-timeline.ok.js +1 -1
- package/public/sections/db/parts/type-changelog.ok.js +1 -1
- package/public/sections/db/parts/type-list.ok.js +1 -1
- package/public/sections/db/parts/type-pipelines-tab.ok.js +1 -1
- package/public/sections/db/parts/type-schema-tab.ok.js +1 -1
- package/public/sections/db/parts/type-viewer.ok.js +1 -1
- package/public/sections/db/parts/type-violations-tab.ok.js +1 -1
- package/public/sections/embeddings/modals/register-model-modal.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-create-panel.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-embedder-panel.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-engine-declaration-editor.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-engine-list.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-indexer-panel.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-lifecycle-bar.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-model-catalog.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-overview.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-search-panel.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-worker-panel.ok.js +1 -1
- package/public/sections/embeddings/parts/embeddings-engine-panel.ok.js +1 -1
- package/public/sections/embeddings/parts/engines-overview.ok.js +1 -1
- package/public/sections/embeddings/parts/pipeline-create-panel.ok.js +1 -1
- package/public/sections/engines/engine-panel-shared-style.js +1 -1
- package/public/sections/engines/engine-ui-utils.js +1 -1
- package/public/sections/engines/modals/engine-modal.ok.js +1 -1
- package/public/sections/engines/parts/engine-declaration-editor.ok.js +1 -1
- package/public/sections/engines/parts/engine-lifecycle-actions.ok.js +1 -1
- package/public/sections/engines/parts/engine-panel-shell.ok.js +1 -1
- package/public/sections/engines/parts/engine-resource-card.ok.js +1 -1
- package/public/sections/engines/parts/engine-row-item.ok.js +1 -1
- package/public/sections/engines/parts/generic-engine-panel.ok.js +1 -1
- package/public/sections/files/parts/files-blob-status.ok.js +1 -1
- package/public/sections/files/parts/files-collection-list.ok.js +1 -1
- package/public/sections/files/parts/files-collection-panel.ok.js +1 -1
- package/public/sections/files/parts/files-file-list.ok.js +1 -1
- package/public/sections/files/parts/files-overview.ok.js +1 -1
- package/public/sections/files/parts/files-path-browser.ok.js +1 -1
- package/public/sections/files/parts/files-upload-panel.ok.js +1 -1
- package/public/sections/functions/modals/function-modal.ok.js +1 -1
- package/public/sections/functions/parts/function-detail.ok.js +1 -1
- package/public/sections/functions/parts/function-logs.ok.js +1 -1
- package/public/sections/functions/parts/function-runner.ok.js +1 -1
- package/public/sections/functions/parts/functions-list.ok.js +1 -1
- package/public/sections/license/parts/license-panel.ok.js +1 -1
- package/public/sections/queue/modals/create-bucket-modal.ok.js +1 -1
- package/public/sections/queue/modals/edit-bucket-modal.ok.js +1 -1
- package/public/sections/queue/modals/edit-job-modal.ok.js +1 -1
- package/public/sections/queue/modals/enqueue-job-modal.ok.js +1 -1
- package/public/sections/queue/modals/job-type-modal.ok.js +1 -1
- package/public/sections/queue/parts/ok-job-form.ok.js +1 -1
- package/public/sections/queue/parts/queue-buckets.ok.js +1 -1
- package/public/sections/queue/parts/queue-job-types.ok.js +1 -1
- package/public/sections/queue/parts/queue-jobs.ok.js +1 -1
- package/public/sections/queue/parts/queue-types.ok.js +1 -1
- package/public/sections/queue/parts/queue-workers.ok.js +1 -1
- package/public/sections/sync/parts/sync-node-detail.ok.js +1 -1
- package/public/sections/sync/parts/sync-retention.ok.js +1 -1
- package/public/sections/sync/parts/sync-topology.ok.js +1 -1
- package/public/sections/system/modals/data-ops-modal.ok.js +1 -1
- package/public/sections/system/parts/system-api-panel.ok.js +1 -1
- package/public/sections/system/parts/system-auth-panel.ok.js +1 -1
- package/public/sections/system/parts/system-log-history.ok.js +1 -1
- package/public/sections/system/parts/system-log.ok.js +1 -1
- package/public/sections/system/parts/system-status.ok.js +1 -1
- package/public/sections/system/parts/system-sync-panel.ok.js +1 -1
- package/public/sections/views/modals/create-view-modal.ok.js +1 -1
- package/public/sections/views/parts/view-detail.ok.js +1 -1
- package/public/sections/views/parts/views-list.ok.js +1 -1
- package/public/sections/views/parts/views-overview.ok.js +1 -1
- package/public/setup-app.js +1 -1
- package/public/stores/auth-store.js +1 -1
- package/public/stores/events-store.js +1 -1
- package/public/stores/functions-store.js +1 -1
- package/public/stores/okdb-store.js +1 -1
- package/public/stores/theme-store.js +1 -1
- package/public/util/permissions.js +1 -1
- package/public/util/sift-schema.js +1 -1
- package/public/vendor/okjs/ok.esm.min.js +1 -2
- package/public/vendor/okjs/toolkit/behavior/async.ok.js +1 -1
- package/public/vendor/okjs/toolkit/components/ok-chart.ok.js +1 -1
- package/public/vendor/okjs/toolkit/components/ok-doc-viewer.ok.js +1 -1
- package/public/vendor/okjs/toolkit/components/ok-marked.ok.js +1 -1
- package/public/vendor/okjs/toolkit/components/ok-monaco.ok.js +1 -1
- package/public/vendor/okjs/toolkit/core/ok-layer-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/core/ok-layer.ok.js +1 -1
- package/public/vendor/okjs/toolkit/core/ok-overlay.ok.js +1 -1
- package/public/vendor/okjs/toolkit/core/ok-sandbox.ok.js +1 -1
- package/public/vendor/okjs/toolkit/core/transition.ok.js +1 -1
- package/public/vendor/okjs/toolkit/core/virtualized.ok.js +1 -1
- package/public/vendor/okjs/toolkit/devtools/ok-console-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/devtools/ok-console.ok.js +1 -1
- package/public/vendor/okjs/toolkit/devtools/ok-fps-monitor-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/devtools/ok-fps-monitor.ok.js +1 -1
- package/public/vendor/okjs/toolkit/devtools/ok-inspector-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/devtools/ok-inspector.ok.js +1 -1
- package/public/vendor/okjs/toolkit/devtools/ok-js-tree.ok.js +1 -1
- package/public/vendor/okjs/toolkit/devtools/ok-timeline-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/devtools/ok-timeline.ok.js +1 -1
- package/public/vendor/okjs/toolkit/docs/doc-viewer.ok.js +1 -1
- package/public/vendor/okjs/toolkit/editor/ok-live-component.ok.js +1 -1
- package/public/vendor/okjs/toolkit/editor/ok-live-example.ok.js +1 -1
- package/public/vendor/okjs/toolkit/editor/ok-live-shell.ok.js +1 -1
- package/public/vendor/okjs/toolkit/elements/ok-dropdown.ok.js +1 -1
- package/public/vendor/okjs/toolkit/elements/ok-icon.ok.js +1 -1
- package/public/vendor/okjs/toolkit/elements/ok-select.ok.js +1 -1
- package/public/vendor/okjs/toolkit/elements/ok-table.ok.js +1 -1
- package/public/vendor/okjs/toolkit/errors/ok-crash-boundary.ok.js +1 -1
- package/public/vendor/okjs/toolkit/errors/ok-crash-info.ok.js +1 -1
- package/public/vendor/okjs/toolkit/i18n/i18n-editor-examples.ok.js +1 -1
- package/public/vendor/okjs/toolkit/i18n/i18n-editor.ok.js +1 -1
- package/public/vendor/okjs/toolkit/i18n/i18n-key-editor-tips.ok.js +1 -1
- package/public/vendor/okjs/toolkit/i18n/i18n-key-editor.ok.js +1 -1
- package/public/vendor/okjs/toolkit/i18n/i18n-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/i18n/ok-i18n.js +1 -1
- package/public/vendor/okjs/toolkit/interaction/ok-contextmenu.ok.js +1 -1
- package/public/vendor/okjs/toolkit/interaction/ok-dismiss-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/interaction/ok-draggable.ok.js +1 -1
- package/public/vendor/okjs/toolkit/interaction/ok-flyover-panel.ok.js +1 -1
- package/public/vendor/okjs/toolkit/interaction/ok-flyover.ok.js +1 -1
- package/public/vendor/okjs/toolkit/interaction/ok-highlight-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/interaction/ok-highlight.ok.js +1 -1
- package/public/vendor/okjs/toolkit/interaction/ok-hotkeys-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/interaction/ok-picker-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/interaction/ok-popout-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/interaction/ok-popout.ok.js +1 -1
- package/public/vendor/okjs/toolkit/interaction/ok-portal-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/interaction/ok-submenu.ok.js +1 -1
- package/public/vendor/okjs/toolkit/layout/ok-resizer.ok.js +1 -1
- package/public/vendor/okjs/toolkit/manifest.js +1 -1
- package/public/vendor/okjs/toolkit/modals/ok-modal-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/modals/ok-modal.ok.js +1 -1
- package/public/vendor/okjs/toolkit/modals/ok-toast-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/modals/ok-window.ok.js +1 -1
- package/public/vendor/okjs/toolkit/navigation/hash-router.ok.js +1 -1
- package/public/vendor/okjs/toolkit/navigation/history-router.ok.js +1 -1
- package/public/vendor/okjs/toolkit/navigation/router.ok.js +1 -1
- package/public/vendor/okjs/toolkit/sync/reactive-sync-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/sync/reactive-sync.js +1 -1
- package/public/vendor/okjs/toolkit/theming/blocks/ok-design-button.css.js +1 -1
- package/public/vendor/okjs/toolkit/theming/blocks/ok-design-input.css.js +1 -1
- package/public/vendor/okjs/toolkit/theming/ok-design-style.js +1 -1
- package/public/vendor/okjs/toolkit/theming/ok-design-vars.js +1 -1
- package/public/vendor/okjs/toolkit/theming/ok-design.ok.js +1 -1
- package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-input.ok.js +1 -1
- package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-style.js +1 -1
- package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-utils.js +1 -1
- package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-variable.ok.js +1 -1
- package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-vm.js +1 -1
- package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor.ok.js +1 -1
- package/public/vendor/okjs/toolkit/theming/ok-theme.ok.js +1 -1
- package/public/view-models/type-query-vm.js +1 -1
- package/okdb-data/default/data.mdb +0 -0
- package/okdb-data/default/lock.mdb +0 -0
- package/okdb-data/~log/data.mdb +0 -0
- package/okdb-data/~log/lock.mdb +0 -0
- package/okdb-data/~system/data.mdb +0 -0
- package/okdb-data/~system/lock.mdb +0 -0
- package/public/images/logo.png +0 -0
- package/public/images/logo.svg +0 -333
|
@@ -1 +1 @@
|
|
|
1
|
-
const _0x2e63d4=_0x392c;(function(_0x5e6644,_0x3bfe7d){const _0x35c17f=_0x392c,_0x9f7f0b=_0x5e6644();while(!![]){try{const _0x3098ab=parseInt(_0x35c17f(0x2ff))/0x1+parseInt(_0x35c17f(0x2c8))/0x2*(-parseInt(_0x35c17f(0x260))/0x3)+-parseInt(_0x35c17f(0x2e0))/0x4*(parseInt(_0x35c17f(0x30d))/0x5)+parseInt(_0x35c17f(0x2a7))/0x6+-parseInt(_0x35c17f(0x273))/0x7+-parseInt(_0x35c17f(0x2d5))/0x8+parseInt(_0x35c17f(0x1f7))/0x9*(parseInt(_0x35c17f(0x2b5))/0xa);if(_0x3098ab===_0x3bfe7d)break;else _0x9f7f0b['push'](_0x9f7f0b['shift']());}catch(_0x4c2861){_0x9f7f0b['push'](_0x9f7f0b['shift']());}}}(_0x5acc,0xbb1e3));import _0x5f1520 from'@toolkit/elements/ok-icon.ok.js';import _0x18869b from'@toolkit/elements/ok-table.ok.js';function _0x392c(_0x417599,_0x442d07){_0x417599=_0x417599-0x1ef;const _0x5acca5=_0x5acc();let _0x392c38=_0x5acca5[_0x417599];return _0x392c38;}import _0x2acb56 from'@toolkit/core/ok-overlay.ok.js';function _0x5acc(){const _0x4193af=['Default\x20TTL\x20cleared','_path','$router','vectorChunkMetaMap','embeddings:pipeline:ready','row','/ref-violations/','application/json','\x22?\x20This\x20cannot\x20be\x20undone.','defaultTTLBusy','unshift','indexStatuses','_unsubs','numTerms','$ok','\x20expired\x20item(s)\x20removed','target','distance','Drop\x20FTS\x20index\x20\x22','paths','details','openCreateIndex','detail','reloadTypes','Geo\x20query\x20error','hasDirectValueRows','selectedIndexEnd','time','__key','/deep-properties','code','resolve','index:reset','catch','geoLon','geoSortAsc','<create-fts-modal\x20:modal=\x22modal\x22\x20:type=\x22type\x22\x20:api-base=\x22apiBase\x22\x20:deep-paths=\x22deepPaths\x22\x20:on-done=\x22onDone\x22\x20/>','typeFields','queryMode','ftsScoreMap','result','splice','has','defaultTTL','rowValueOf','dropped','Fields\x20recomputed','searchMode','default','Error\x20fetching\x20FTS\x20indexes','openEnginesCreatePipeline','toFixed','clearSelection','querySelector','loadVectorEngines','violations','isRunning','Drop\x20FTS\x20error','loadTypeEnginesCount','okdb','ttlSweepBusy','<create-pipeline-modal\x20:modal=\x22modal\x22\x20:type=\x22type\x22\x20:env=\x22envName\x22\x20:on-done=\x22onDone\x22\x20/>','types','object','modal','violationCount','selectedFtsIndex','loadTTLStats','Drop\x20FTS\x20failed','table','$vars','geoConfig','__create_fts__','round','meta','string','\x22?\x20This\x20will\x20re-index\x20all\x20records.','status','Rebuilding\x20index\x20\x22','recomputeFields\x20error','Drop\x20type\x20error','Create\x20Index','lat','defaultTTLInput','engines','\x0a<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:0;\x20height:100%;\x22>\x0a\x0a\x20\x20<!--\x20Tab\x20bar\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:2px;\x20border-bottom:1px\x20solid\x20var(--okdb-app-border);\x20margin-bottom:12px;\x20flex-shrink:0;\x22>\x0a\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20@click=\x22setTab(\x27data\x27)\x22\x0a\x20\x20\x20\x20\x20\x20:style=\x22tab===\x27data\x27\x20?\x20\x27border-color:var(--okdb-accent);\x20color:var(--okdb-accent);\x20background:color-mix(in\x20srgb,\x20var(--okdb-accent)\x207%,\x20transparent);\x20border-bottom-color:transparent;\x27\x20:\x20\x27border-color:transparent;\x20background:transparent;\x27\x22\x0a\x20\x20\x20\x20\x20\x20style=\x22padding:6px\x2016px;\x20border-radius:6px\x206px\x200\x200;\x20font-size:13px;\x20cursor:pointer;\x22>\x0a\x20\x20\x20\x20\x20\x20Data\x0a\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20@click=\x22setTab(\x27changelog\x27)\x22\x0a\x20\x20\x20\x20\x20\x20:style=\x22tab===\x27changelog\x27\x20?\x20\x27border-color:var(--okdb-accent);\x20color:var(--okdb-accent);\x20background:color-mix(in\x20srgb,\x20var(--okdb-accent)\x207%,\x20transparent);\x20border-bottom-color:transparent;\x27\x20:\x20\x27border-color:transparent;\x20background:transparent;\x27\x22\x0a\x20\x20\x20\x20\x20\x20style=\x22padding:6px\x2016px;\x20border-radius:6px\x206px\x200\x200;\x20font-size:13px;\x20cursor:pointer;\x22>\x0a\x20\x20\x20\x20\x20\x20Changelog\x0a\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20@click=\x22setTab(\x27manage\x27)\x22\x0a\x20\x20\x20\x20\x20\x20:style=\x22tab===\x27manage\x27\x20?\x20\x27border-color:var(--okdb-accent);\x20color:var(--okdb-accent);\x20background:color-mix(in\x20srgb,\x20var(--okdb-accent)\x207%,\x20transparent);\x20border-bottom-color:transparent;\x27\x20:\x20\x27border-color:transparent;\x20background:transparent;\x27\x22\x0a\x20\x20\x20\x20\x20\x20style=\x22padding:6px\x2016px;\x20border-radius:6px\x206px\x200\x200;\x20font-size:13px;\x20cursor:pointer;\x22>\x0a\x20\x20\x20\x20\x20\x20Manage\x0a\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20@click=\x22setTab(\x27schema\x27)\x22\x0a\x20\x20\x20\x20\x20\x20:style=\x22tab===\x27schema\x27\x20?\x20(\x27border-color:\x27\x20+\x20(violationCount\x20>\x200\x20?\x20\x27var(--okdb-danger)\x27\x20:\x20\x27var(--okdb-success)\x27)\x20+\x20\x27;\x20color:\x27\x20+\x20(violationCount\x20>\x200\x20?\x20\x27var(--okdb-danger)\x27\x20:\x20\x27var(--okdb-success)\x27)\x20+\x20\x27;\x20background:\x27\x20+\x20(violationCount\x20>\x200\x20?\x20\x27#f8717111\x27\x20:\x20\x27color-mix(in\x20srgb,\x20var(--okdb-success)\x207%,\x20transparent)\x27)\x20+\x20\x27;\x20border-bottom-color:transparent;\x27)\x20:\x20(violationCount\x20>\x200\x20?\x20\x27border-color:transparent;\x20background:transparent;\x20color:var(--okdb-danger);\x27\x20:\x20\x27border-color:transparent;\x20background:transparent;\x27)\x22\x0a\x20\x20\x20\x20\x20\x20style=\x22padding:6px\x2016px;\x20border-radius:6px\x206px\x200\x200;\x20font-size:13px;\x20cursor:pointer;\x22>\x0a\x20\x20\x20\x20\x20\x20Schema<if\x20:=\x22violationCount\x20>\x200\x22><span\x20style=\x22margin-left:6px;\x20font-size:10px;\x20padding:2px\x207px;\x20border-radius:999px;\x20background:color-mix(in\x20srgb,\x20var(--okdb-danger)\x2013%,\x20transparent);\x20color:var(--okdb-danger);\x20font-weight:600;\x22>{{\x20violationCount\x20}}</span></if>\x0a\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20@click=\x22switchToEngines()\x22\x0a\x20\x20\x20\x20\x20\x20:style=\x22tab===\x27engines\x27\x20?\x20\x27border-color:var(--okdb-purple);\x20color:var(--okdb-purple);\x20background:color-mix(in\x20srgb,\x20var(--okdb-purple)\x207%,\x20transparent);\x20border-bottom-color:transparent;\x27\x20:\x20\x27border-color:transparent;\x20background:transparent;\x27\x22\x0a\x20\x20\x20\x20\x20\x20style=\x22padding:6px\x2016px;\x20border-radius:6px\x206px\x200\x200;\x20font-size:13px;\x20cursor:pointer;\x22>\x0a\x20\x20\x20\x20\x20\x20Engines<if\x20:=\x22typeEngineCount\x20>\x200\x22><span\x20class=\x22mode-count\x22>{{\x20typeEngineCount\x20}}</span></if>\x0a\x20\x20\x20\x20</button>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Data\x20tab\x20-->\x0a\x20\x20<if\x20:=\x22tab\x20===\x20\x27data\x27\x22>\x0a\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:16px;\x20flex:1;\x20min-height:0;\x22>\x0a\x0a\x20\x20<div\x20class=\x22card\x22\x20style=\x22display:flex;\x20gap:16px;\x22>\x0a\x0a\x20\x20\x20\x20<!--\x20──\x20Left\x20column:\x20query\x20controls\x20──\x20-->\x0a\x20\x20\x20\x20<div\x20style=\x22flex:1;\x20display:flex;\x20flex-direction:column;\x20gap:10px;\x20min-width:0;\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20Row\x201:\x20filter\x20label\x20+\x20accordion\x20+\x20JSON\x20input\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:6px;\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Label\x20row\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20color:#6a8a9a;\x20user-select:none;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20searchMode\x20===\x20\x27vector\x27\x20?\x20\x27Post-filter\x20vector\x20results\x20with\x20sift\x27\x20:\x20searchMode\x20===\x20\x27fts\x27\x20?\x20\x27Post-filter\x20FTS\x20results\x20with\x20sift\x27\x20:\x20searchMode\x20===\x20\x27geo\x27\x20?\x20\x27Post-filter\x20geo\x20results\x20with\x20sift\x27\x20:\x20\x27Filter\x20with\x20sift\x20query\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22help-toggle\x22\x20@click=\x22helpOpen\x20=\x20!helpOpen\x22\x20:class=\x22helpOpen\x20?\x20\x27help-toggle--open\x27\x20:\x20\x27\x27\x22>i</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Accordion:\x20query\x20reference\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22helpOpen\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22help-accordion\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ht-row\x22><code>{}</code><span>match\x20all\x20records</span></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ht-row\x22><code>{\x22field\x22:\x20\x22value\x22}</code><span>exact\x20match</span></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ht-row\x22><code>{\x22n\x22:\x20{\x22$gt\x22:\x205,\x20\x22$lt\x22:\x2050}}</code><span>numeric\x20comparison</span></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ht-row\x22><code>{\x22x\x22:\x20{\x22$in\x22:\x20[\x22a\x22,\x22b\x22]}}</code><span>set\x20membership</span></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ht-row\x22><code>{\x22x\x22:\x20{\x22$exists\x22:\x20true}}</code><span>field\x20presence</span></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ht-row\x20ht-row--note\x22>Nested\x20fields\x20use\x20dot\x20notation:\x20<code>\x22a.b\x22</code></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<ok-json-input\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22query.query\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@change=\x22query.query\x20=\x20$event.detail\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:schema=\x22siftSchema\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22min-width:220px;\x20min-height:60px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</ok-json-input>\x0a\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20Mode\x20bar:\x20Scan\x20/\x20Index\x20/\x20FTS\x20/\x20Vector\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:4px;\x20align-items:center;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22seg-toggle\x22\x20style=\x22flex-shrink:0;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22searchMode\x20===\x20\x27scan\x27\x20\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22setSearchMode(\x27scan\x27)\x22>Scan</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22searchMode\x20===\x20\x27index\x27\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22setSearchMode(\x27index\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Index<if\x20:=\x22possibleIndexes.length\x20>\x200\x22><span\x20class=\x22mode-count\x22>{{\x20possibleIndexes.length\x20}}</span></if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22searchMode\x20===\x20\x27fts\x27\x20\x20\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22setSearchMode(\x27fts\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20FTS<if\x20:=\x22ftsList.length\x20>\x200\x22><span\x20class=\x22mode-count\x22>{{\x20ftsList.length\x20}}</span></if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22searchMode\x20===\x20\x27vector\x27\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22setSearchMode(\x27vector\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Vector<if\x20:=\x22vectorEngines.length\x20>\x200\x22><span\x20class=\x22mode-count\x22>{{\x20vectorEngines.length\x20}}</span></if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22searchMode\x20===\x20\x27geo\x27\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22setSearchMode(\x27geo\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Geo<if\x20:=\x22geoIndexes.length\x20>\x200\x22><span\x20class=\x22mode-count\x22>{{\x20geoIndexes.length\x20}}</span></if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20──\x20Scan\x20panel\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27scan\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22query.selectedDirection\x20=\x20query.selectedDirection\x20===\x20\x27desc\x27\x20?\x20\x27asc\x27\x20:\x20\x27desc\x27\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22min-width:78px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Toggle\x20key\x20scan\x20direction\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20query.selectedDirection\x20===\x20\x27desc\x27\x20?\x20\x27↓\x20Desc\x27\x20:\x20\x27↑\x20Asc\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.4;\x20user-select:none;\x22>Full\x20key-ordered\x20scan\x20·\x20sift\x20applied\x20as\x20filter</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20──\x20Index\x20panel\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27index\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:8px;\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20@change=\x22selectIndex($event.target.value)\x22\x20style=\x22min-width:160px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22\x22>—\x20none\x20—</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22possibleIndexes\x22\x20let:item=\x22idx\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20:value=\x22idx\x22\x20:selected=\x22query.selectedIndex\x20===\x20idx\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20idx\x20}}{{\x20indexStatuses[idx]?.unique\x20?\x20\x27\x20◆\x27\x20:\x20\x27\x27\x20}}{{\x20indexStatusBadge(idx)\x20?\x20\x27\x20⚠\x20\x27\x20+\x20indexStatusBadge(idx)\x20:\x20\x27\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22__create_index__\x22\x20style=\x22color:var(--okdb-accent);\x22>+\x20Create\x20index…</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedIndex\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22__remove_index__\x22\x20style=\x22color:var(--okdb-danger);\x22>×\x20Remove\x20\x22{{\x20query.selectedIndex\x20}}\x22</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22query.selectedDirection\x20=\x20query.selectedDirection\x20===\x20\x27desc\x27\x20?\x20\x27asc\x27\x20:\x20\x27desc\x27\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22min-width:78px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Toggle\x20sort\x20direction\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20query.selectedDirection\x20===\x20\x27desc\x27\x20?\x20\x27↓\x20Desc\x27\x20:\x20\x27↑\x20Asc\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedIndex\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22seg-toggle\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22query.queryMode\x20===\x20\x27prefix\x27\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22query.queryMode\x20=\x20\x27prefix\x27,\x20query.selectedIndexStart\x20=\x20undefined,\x20query.selectedIndexEnd\x20=\x20undefined\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Prefix\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22query.queryMode\x20===\x20\x27range\x27\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22query.queryMode\x20=\x20\x27range\x27,\x20query.selectedPrefix\x20=\x20undefined\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Range\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20──\x20Index\x20detail\x20strip\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedIndex\x20&&\x20selectedIndexInfo\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22idx-info-strip\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22idx-info-label\x22>Fields:</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22selectedIndexInfo.fields\x22\x20let:item=\x22f\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<code\x20class=\x22idx-info-field\x22>{{\x20f\x20}}</code>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22selectedIndexInfo.isUnique\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22idx-info-badge\x20idx-info-badge--unique\x22>◆\x20unique</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22selectedIndexInfo.isGeo\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22idx-info-badge\x20idx-info-badge--geo\x22>◎\x20geo\x20·\x20precision\x20{{\x20selectedIndexInfo.geoPrecision\x20??\x207\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!selectedIndexInfo.isUnique\x20&&\x20!selectedIndexInfo.isGeo\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22idx-info-badge\x20idx-info-badge--regular\x22>regular</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedIndex\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.queryMode\x20===\x20\x27prefix\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.6;\x20font-size:12px;\x22>Prefix:</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-json-input\x20mode=\x22input\x22\x20:value=\x22query.selectedPrefix\x22\x20@change=\x22query.selectedPrefix\x20=\x20$event.detail\x22\x20style=\x22width:220px;\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.35;\x20font-size:11px;\x22>scalar\x20or\x20array\x20for\x20composite\x20indexes</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.queryMode\x20===\x20\x27range\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.6;\x20font-size:12px;\x22>Start:</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-json-input\x20mode=\x22input\x22\x20:value=\x22query.selectedIndexStart\x22\x20@change=\x22query.selectedIndexStart\x20=\x20$event.detail\x22\x20style=\x22width:180px;\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.6;\x20font-size:12px;\x22>End:</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-json-input\x20mode=\x22input\x22\x20:value=\x22query.selectedIndexEnd\x22\x20@change=\x22query.selectedIndexEnd\x20=\x20$event.detail\x22\x20style=\x22width:180px;\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20──\x20FTS\x20panel\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27fts\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x20flex-wrap:wrap;\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20@change=\x22selectFtsIndex($event.target.value,\x20$event)\x22\x20style=\x22min-width:160px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22\x22>—\x20none\x20—</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22ftsList\x22\x20let:item=\x22fts\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20:value=\x22fts.name\x22\x20:selected=\x22query.selectedFtsIndex\x20===\x20fts.name\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20fts.name\x20}}{{\x20ftsStatusBadge(fts)\x20?\x20\x27\x20⚠\x20\x27\x20+\x20ftsStatusBadge(fts)\x20:\x20\x27\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22__create_fts__\x22\x20style=\x22color:var(--okdb-accent);\x22>+\x20Create\x20FTS\x20index…</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedFtsIndex\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22__drop_fts__\x22\x20style=\x22color:var(--okdb-danger);\x22>×\x20Drop\x20\x22{{\x20query.selectedFtsIndex\x20}}\x22</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedFtsIndex\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type=\x22text\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20placeholder=\x22Search…\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22query.ftsText\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input=\x22query.ftsText\x20=\x20$event.target.value\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22flex:1;\x20min-width:140px;\x20max-width:300px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22seg-toggle\x22\x20title=\x22AND:\x20all\x20terms\x20required\x20·\x20OR:\x20any\x20term\x20matches,\x20ranked\x20by\x20hit\x20count\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22query.ftsMode\x20===\x20\x27and\x27\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22query.ftsMode\x20=\x20\x27and\x27\x22>AND</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22query.ftsMode\x20===\x20\x27or\x27\x20\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22query.ftsMode\x20=\x20\x27or\x27\x22>OR</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20style=\x22font-size:12px;\x20display:flex;\x20align-items:center;\x20gap:4px;\x20cursor:pointer;\x20white-space:nowrap;\x20user-select:none;\x22\x20title=\x22Prefix:\x20\x27sta\x27\x20matches\x20\x27start\x27,\x20\x27stack\x27,\x20etc.\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20:checked=\x22query.ftsPrefix\x22\x20@change=\x22query.ftsPrefix\x20=\x20$event.target.checked\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Prefix\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20──\x20Vector\x20panel\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27vector\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22vectorEngines.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.7;\x20display:flex;\x20align-items:center;\x20gap:8px;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22cpu\x22\x20style=\x22width:13px;height:13px;opacity:.5;\x22></ok-icon>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>No\x20vector\x20search\x20engines\x20for\x20<b>{{\x20type\x20}}</b>\x20yet.</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22openEnginesCreatePipeline()\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:2px\x2010px;\x20border-radius:999px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-indigo)\x2033%,\x20transparent);\x20color:var(--okdb-indigo);\x20background:color-mix(in\x20srgb,\x20var(--okdb-indigo)\x206%,\x20transparent);\x20cursor:pointer;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>⛓\x20Create\x20Pipeline…</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22vectorEngines.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x20flex-wrap:wrap;\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20@change=\x22selectVectorEngine($event.target.value,\x20$event)\x22\x20style=\x22min-width:160px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22\x22>—\x20none\x20—</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22vectorEngines\x22\x20let:item=\x22ve\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20:value=\x22displayVectorName(ve.name)\x22\x20:selected=\x22query.selectedVectorEngine\x20===\x20displayVectorName(ve.name)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20displayVectorName(ve.name)\x20}}{{\x20ve.isRunning\x20?\x20\x27\x27\x20:\x20\x27\x20(stopped)\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22__create_pipeline__\x22\x20style=\x22color:var(--okdb-indigo);\x22>+\x20Create\x20pipeline…</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedVectorEngine\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type=\x22text\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20placeholder=\x22Semantic\x20query…\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22query.vectorText\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input:debounce.500=\x22query.vectorText\x20=\x20$event.target.value\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22flex:1;\x20min-width:160px;\x20max-width:340px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.55;\x20white-space:nowrap;\x20user-select:none;\x22>top</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type=\x22number\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22query.vectorLimit\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@change=\x22query.vectorLimit\x20=\x20Math.max(1,\x20Math.min(200,\x20Number($event.target.value)\x20||\x2020))\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20min=\x221\x22\x20max=\x22200\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22width:56px;\x20text-align:center;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Max\x20results\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Pipeline\x20badge\x20—\x20clickable,\x20navigates\x20to\x20local\x20Engines\x20tab\x20in\x20pipeline\x20mode\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22selectedVectorEngineMeta\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22selectedVectorEngineMeta.meta\x20&&\x20selectedVectorEngineMeta.meta.pipeline\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22openEnginesPipeline(selectedVectorEngineMeta.meta.pipeline)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:2px\x209px;\x20border-radius:999px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-indigo)\x2033%,\x20transparent);\x20color:var(--okdb-indigo);\x20background:color-mix(in\x20srgb,\x20var(--okdb-indigo)\x206%,\x20transparent);\x20cursor:pointer;\x20white-space:nowrap;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22\x27Open\x20the\x20type\x20pipeline\x20view\x20focused\x20on:\x20\x27\x20+\x20selectedVectorEngineMeta.meta.pipeline\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>⛓\x20{{\x20selectedVectorEngineMeta.meta.pipeline\x20}}\x20→</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Link\x20to\x20local\x20type\x20engines\x20workspace\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22openTypePipelinesForSelectedVector()\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:2px\x209px;\x20border-radius:999px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-indigo)\x2020%,\x20transparent);\x20color:color-mix(in\x20srgb,\x20var(--okdb-indigo)\x2060%,\x20transparent);\x20background:transparent;\x20cursor:pointer;\x20white-space:nowrap;\x20margin-left:auto;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Open\x20the\x20type-scoped\x20engines\x20view\x20for\x20this\x20vector\x20search\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>⛓\x20Type\x20Engines\x20→</button>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20──\x20Geo\x20panel\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27geo\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22geoIndexes.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.7;\x20display:flex;\x20align-items:center;\x20gap:8px;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>◎</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>No\x20geo\x20indexes\x20for\x20<b>{{\x20type\x20}}</b>\x20yet.\x20Create\x20one\x20from\x20the\x20Manage\x20tab.</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22geoIndexes.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:8px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20@change=\x22geoField\x20=\x20$event.target.value\x22\x20style=\x22min-width:140px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22geoIndexes\x22\x20let:item=\x22gf\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20:value=\x22gf\x22\x20:selected=\x22geoField\x20===\x20gf\x22>{{\x20gf\x20}}</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.5;\x22>Lat</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type=\x22number\x22\x20step=\x22any\x22\x20placeholder=\x2240.7484\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22geoLat\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input:debounce.100=\x22geoLat\x20=\x20$event.target.value\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22width:110px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.5;\x22>Lon</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type=\x22number\x22\x20step=\x22any\x22\x20placeholder=\x22-73.9856\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22geoLon\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input:debounce.100=\x22geoLon\x20=\x20$event.target.value\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22width:110px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.5;\x22>Radius\x20(m)</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type=\x22number\x22\x20step=\x22any\x22\x20placeholder=\x22∞\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22geoRadius\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input:debounce.100=\x22geoRadius\x20=\x20$event.target.value\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22width:90px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Leave\x20empty\x20for\x20unlimited\x20radius\x20(sorted\x20by\x20distance)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22geoSortAsc\x20=\x20!geoSortAsc\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22min-width:78px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Toggle\x20sort\x20direction\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20geoSortAsc\x20?\x20\x27↑\x20Nearest\x27\x20:\x20\x27↓\x20Farthest\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.35;\x20user-select:none;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Results\x20sorted\x20by\x20distance\x20·\x20sift\x20filter\x20applied\x20as\x20post-filter\x20·\x20leave\x20radius\x20empty\x20for\x20no\x20cutoff\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20──\x20Geo\x20view\x20toggle\x20(only\x20in\x20geo\x20mode)\x20──\x20-->\x0a\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27geo\x27\x20&&\x20geoIndexes.length\x20>\x200\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:4px;\x20flex-shrink:0;\x20padding:2px\x200;\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22seg-toggle\x22\x20style=\x22flex-shrink:0;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22geoViewMode\x20===\x20\x27table\x27\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22geoViewMode\x20=\x20\x27table\x27\x22\x20title=\x22Table\x20only\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22table-2\x22\x20style=\x22width:13px;height:13px;vertical-align:middle;\x22></ok-icon>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22geoViewMode\x20===\x20\x27map\x27\x20\x20\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22geoViewMode\x20=\x20\x27map\x27\x22\x20\x20\x20title=\x22Map\x20only\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22map-pin\x22\x20style=\x22width:13px;height:13px;vertical-align:middle;\x22></ok-icon>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22geoViewMode\x20===\x20\x27split\x27\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22geoViewMode\x20=\x20\x27split\x27\x22\x20title=\x22Table\x20+\x20Map\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22columns\x22\x20style=\x22width:13px;height:13px;vertical-align:middle;\x22></ok-icon>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20opacity:.3;\x20user-select:none;\x22>view</span>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20──\x20Results\x20area\x20──\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20position:relative;\x20flex:1;\x20min-height:0;\x22>\x0a\x20\x20\x20\x20<if\x20:=\x22query.busy\x22>\x0a\x20\x20\x20\x20\x20\x20<ok-overlay>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22loader-center\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22loader\x22\x20class=\x22spin\x22></ok-icon>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</ok-overlay>\x0a\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20<!--\x20Results\x20bar:\x20timing\x20+\x20Add\x20item\x20-->\x0a\x20\x20\x20\x20<div\x20style=\x22margin-bottom:8px;\x20display:flex;\x20align-items:center;\x20gap:8px;\x20flex-shrink:0;\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.45;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20{{\x20query.time\x20!=\x20null\x20?\x20query.time\x20+\x20\x27ms\x27\x20:\x20\x27\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20<b\x20style=\x22opacity:.7;\x22>{{\x20type\x20}}</b>\x0a\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22margin-left:auto;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22openAddModal\x22\x20class=\x22btn-primary\x20btn-icon\x22\x20style=\x22font-size:12px;\x20padding:3px\x2012px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!$ok.stores.auth.can(\x27data:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27data:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.permTooltip(\x27data:write\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22plus\x22></ok-icon>Add\x20item\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<!--\x20Content\x20row\x20—\x20table\x20+\x20map\x20as\x20siblings,\x20shown/hidden\x20via\x20display:none\x20-->\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex:1;\x20min-height:0;\x20gap:10px;\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20TABLE\x20col\x20—\x20hidden\x20only\x20in\x20pure\x20map\x20mode\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x0a\x20\x20\x20\x20\x20\x20\x20\x20:style=\x22searchMode\x20===\x20\x27geo\x27\x20&&\x20geoViewMode\x20===\x20\x27map\x27\x20?\x20\x27display:none\x27\x20:\x20\x27flex:1;\x20min-width:0;\x20display:flex;\x20flex-direction:column;\x20min-height:0;\x27\x22\x0a\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22hasDirectValueRows\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-table\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ref=\x22table\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:data=\x22displayRows\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20select=\x22single\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20no-scroll\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22flex:1;\x20min-height:0;\x20overflow:auto;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@select-change=\x22onGeoTableSelect($event)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<columns>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<column\x20width=\x22min-content\x22\x20no-resize>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<header>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22key__header\x22>key</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedFtsIndex\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20color:var(--okdb-accent);\x20opacity:.6;\x20margin-left:6px;\x20font-weight:normal;\x22>score</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedVectorEngine\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20color:var(--okdb-indigo);\x20opacity:.6;\x20margin-left:6px;\x20font-weight:normal;\x22>sim</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27geo\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20color:var(--okdb-success);\x20opacity:.6;\x20margin-left:6px;\x20font-weight:normal;\x22>dist</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</header>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<cell\x20let:row>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22key__cell\x22>{{\x20keyOf(row)\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22directValueKindOf(row)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:class=\x22\x27direct-value-badge\x20direct-value-badge--\x27\x20+\x20directValueKindOf(row)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20directValueKindOf(row)\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedFtsIndex\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22fts-score-badge\x22>{{\x20matchOf(row)\x20??\x20\x27—\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedVectorEngine\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22vec-score-badge\x22>{{\x20vectorScoreOf(row)\x20??\x20\x27—\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22vectorChunkMetaOf(row)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20color:var(--okdb-orange);\x20opacity:.8;\x20margin-left:4px;\x20white-space:nowrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20chunk\x20{{\x20vectorChunkMetaOf(row).start\x20}}–{{\x20vectorChunkMetaOf(row).end\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27geo\x27\x20&&\x20distanceOf(row)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22geo-dist-badge\x22>{{\x20distanceOf(row)\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</cell>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</column>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<column>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<header>value</header>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<cell\x20let:row>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<code\x20:title=\x22prettyValueOf(row)\x22\x20style=\x22display:block;\x20white-space:pre-wrap;\x20word-break:break-word;\x20font-size:12px;\x22>{{\x20inlineValueOf(row)\x20}}</code>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</cell>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</column>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</columns>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<expanded\x20let:row>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Chunk\x20info\x20panel\x20—\x20shown\x20only\x20in\x20vector\x20mode\x20for\x20chunked\x20pipeline\x20results\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedVectorEngine\x20&&\x20vectorChunkMetaOf(row)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:8px\x2010px\x200;\x20display:flex;\x20flex-direction:column;\x20gap:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22vectorChunkMetaOf(row).text\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.5;\x20margin-bottom:2px;\x22>Matched\x20chunk\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22color:var(--okdb-orange);\x20margin-left:6px;\x22>chars\x20{{\x20vectorChunkMetaOf(row).start\x20}}–{{\x20vectorChunkMetaOf(row).end\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22background:var(--okdb-app-bg-deep);\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:6px;\x20padding:8px;\x20font-size:11px;\x20max-height:140px;\x20overflow:auto;\x20white-space:pre-wrap;\x20word-break:break-word;\x20line-height:1.5;\x22>{{\x20vectorChunkMetaOf(row).text\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!vectorChunkMetaOf(row).text\x20&&\x20vectorChunkMetaOf(row).start\x20!=\x20null\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.5;\x20margin-bottom:2px;\x22>Matched\x20chunk\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22color:var(--okdb-orange);\x20margin-left:6px;\x22>chars\x20{{\x20vectorChunkMetaOf(row).start\x20}}–{{\x20vectorChunkMetaOf(row).end\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.55;\x20margin-left:4px;\x22>(highlighted\x20in\x20document\x20below)</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22height:1px;\x20background:var(--okdb-app-border);\x20margin:2px\x200;\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<edit-row\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:row=\x22rowValueOf(row)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:key=\x22keyOf(row)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:type=\x22type\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@remove=\x22onRemoveRow(keyOf(row))\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@change=\x22onRowChanged($event)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</edit-row>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</expanded>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</ok-table>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!hasDirectValueRows\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-table\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ref=\x22table\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:data=\x22displayRows\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20select=\x22single\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20no-scroll\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22flex:1;\x20min-height:0;\x20overflow:auto;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@select-change=\x22onGeoTableSelect($event)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<columns>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<column\x20width=\x22min-content\x22\x20no-resize>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<header>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22key__header\x22>key</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedFtsIndex\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20color:var(--okdb-accent);\x20opacity:.6;\x20margin-left:6px;\x20font-weight:normal;\x22>score</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedVectorEngine\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20color:var(--okdb-indigo);\x20opacity:.6;\x20margin-left:6px;\x20font-weight:normal;\x22>sim</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27geo\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20color:var(--okdb-success);\x20opacity:.6;\x20margin-left:6px;\x20font-weight:normal;\x22>dist</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</header>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<cell\x20let:row>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22key__cell\x22>{{\x20keyOf(row)\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedFtsIndex\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22fts-score-badge\x22>{{\x20matchOf(row)\x20??\x20\x27—\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedVectorEngine\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22vec-score-badge\x22>{{\x20vectorScoreOf(row)\x20??\x20\x27—\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22vectorChunkMetaOf(row)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20color:var(--okdb-orange);\x20opacity:.8;\x20margin-left:4px;\x20white-space:nowrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20chunk\x20{{\x20vectorChunkMetaOf(row).start\x20}}–{{\x20vectorChunkMetaOf(row).end\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27geo\x27\x20&&\x20distanceOf(row)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22geo-dist-badge\x22>{{\x20distanceOf(row)\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</cell>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</column>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<auto\x20max=\x2210\x22\x20:show-more-content=\x22(n)\x20=>\x20\x27+\x27\x20+\x20n\x20+\x20\x27\x20cols\x27\x22\x20show-more-title=\x22Click\x20to\x20show\x20all\x20columns\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<cell\x20let:row\x20let:value>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:class=\x22[typeof\x20value,\x20value\x20===\x20null\x20?\x20\x27null\x27\x20:\x20\x27\x27]\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20value\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</cell>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</auto>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</columns>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<expanded\x20let:row>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Chunk\x20info\x20panel\x20—\x20shown\x20only\x20in\x20vector\x20mode\x20for\x20chunked\x20pipeline\x20results\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedVectorEngine\x20&&\x20vectorChunkMetaOf(row)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:8px\x2010px\x200;\x20display:flex;\x20flex-direction:column;\x20gap:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22vectorChunkMetaOf(row).text\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.5;\x20margin-bottom:2px;\x22>Matched\x20chunk\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22color:var(--okdb-orange);\x20margin-left:6px;\x22>chars\x20{{\x20vectorChunkMetaOf(row).start\x20}}–{{\x20vectorChunkMetaOf(row).end\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22background:var(--okdb-app-bg-deep);\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:6px;\x20padding:8px;\x20font-size:11px;\x20max-height:140px;\x20overflow:auto;\x20white-space:pre-wrap;\x20word-break:break-word;\x20line-height:1.5;\x22>{{\x20vectorChunkMetaOf(row).text\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!vectorChunkMetaOf(row).text\x20&&\x20vectorChunkMetaOf(row).start\x20!=\x20null\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.5;\x20margin-bottom:2px;\x22>Matched\x20chunk\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22color:var(--okdb-orange);\x20margin-left:6px;\x22>chars\x20{{\x20vectorChunkMetaOf(row).start\x20}}–{{\x20vectorChunkMetaOf(row).end\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.55;\x20margin-left:4px;\x22>(highlighted\x20in\x20document\x20below)</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22height:1px;\x20background:var(--okdb-app-border);\x20margin:2px\x200;\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<edit-row\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:row=\x22rowValueOf(row)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:key=\x22keyOf(row)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:type=\x22type\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@remove=\x22onRemoveRow(keyOf(row))\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@change=\x22onRowChanged($event)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</edit-row>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</expanded>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</ok-table>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ok-pager\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22query.prevPage()\x22\x20:disabled=\x22!query.hasPrev\x20||\x20query.busy\x22>‹\x20Prev</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>{{\x20query.total\x20}}\x20result{{\x20query.total\x20===\x201\x20?\x20\x27\x27\x20:\x20\x27s\x27\x20}}\x20·\x20{{\x20query.pageSize\x20}}/page</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22query.nextPage()\x22\x20:disabled=\x22!query.hasNext\x20||\x20query.busy\x22>Next\x20›</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27geo\x27\x22>\x0a\x20\x20\x20\x20\x20\x20<!--\x20MAP\x20col\x20—\x20always\x20mounted,\x20shown\x20only\x20in\x20geo\x20map/split\x20mode\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x0a\x20\x20\x20\x20\x20\x20\x20\x20style=\x22flex:1;\x20min-width:0;\x20min-height:0;\x20border-radius:8px;\x20overflow:hidden;\x20border:1px\x20solid\x20#23292e;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20:style=\x22{\x20\x27display\x27:\x20(geoViewMode\x20===\x20\x27map\x27\x20||\x20geoViewMode\x20===\x20\x27split\x27)?\x20\x27block\x27\x20:\x20\x27none\x27\x20}\x22\x0a\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<geo-map\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:points=\x22geoMapPoints\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:origin-lat=\x22geoLat\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:origin-lon=\x22geoLon\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:radius=\x22geoRadius\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:highlight-key=\x22geoHighlightedKey\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@move=\x22geoLat\x20=\x20String($event.detail.lat.toFixed(6)),\x20geoLon\x20=\x20String($event.detail.lon.toFixed(6))\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@select=\x22onGeoMapSelect($event)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22width:100%;\x20height:100%;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x0a</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Changelog\x20tab\x20-->\x0a\x20\x20<if\x20:=\x22tab\x20===\x20\x27changelog\x27\x22>\x0a\x20\x20\x20\x20<type-changelog\x20:type=\x22type\x22\x20style=\x22flex:1;\x20min-height:0;\x22\x20/>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Manage\x20tab\x20-->\x0a\x20\x20<if\x20:=\x22tab\x20===\x20\x27manage\x27\x22>\x0a\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:12px;\x20flex:1;\x20overflow:auto;\x20padding-right:4px;\x22>\x0a\x0a\x20\x20\x20\x20<!--\x20Overview\x20-->\x0a\x20\x20\x20\x20<div\x20class=\x22card\x22\x20style=\x22display:flex;\x20gap:24px;\x20align-items:center;\x22>\x0a\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:15px;\x20font-weight:600;\x22>{{\x20type\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.5;\x20margin-top:2px;\x22>type</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:22px;\x20font-weight:600;\x20color:var(--okdb-accent);\x22>{{\x20typeCount\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.5;\x20margin-top:2px;\x22>records</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<!--\x20Fields\x20-->\x0a\x20\x20\x20\x20<div\x20class=\x22card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-title\x22>Fields</div>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22typeFieldEntries.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.4;\x20font-size:13px;\x22>No\x20fields\x20tracked\x20yet\x20—\x20add\x20items\x20or\x20use\x20Recompute.</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22typeFieldEntries.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-grid\x20manage-grid--2\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Field</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Observed\x20types</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22typeFieldEntries\x22\x20let:item=\x22tf\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22><code>{{\x20tf.name\x20}}</code></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x20manage-cell--dim\x22>{{\x20tf.types.join(\x27,\x20\x27)\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<!--\x20Secondary\x20Indexes\x20-->\x0a\x20\x20\x20\x20<div\x20class=\x22card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-title\x22>Secondary\x20Indexes</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22openCreateIndex()\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:11px;\x20padding:3px\x2010px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!$ok.stores.auth.can(\x27schema:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27schema:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.permTooltip(\x27schema:write\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22plus\x22></ok-icon>Create\x20index\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22indexEntries.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.4;\x20font-size:13px;\x22>No\x20indexes\x20yet.</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22indexEntries.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-grid\x20manage-grid--idx\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Fields</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Kind</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Ownership</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Status</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22indexEntries\x22\x20let:item=\x22ix\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22\x20style=\x22gap:4px;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22ix.fields\x22\x20let:item=\x22f\x22\x20let:index=\x22fi\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<code\x20style=\x22font-size:12px;\x20color:var(--okdb-json-key);\x22>{{\x20f\x20}}</code><span\x20style=\x22opacity:.3;\x20font-size:11px;\x20margin-left:0;\x22\x20:style=\x22fi\x20<\x20ix.fields.length\x20-\x201\x20?\x20\x27\x27\x20:\x20\x27display:none\x27\x22>·</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22\x20style=\x22gap:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22ix.isGeo\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22idx-kind-badge\x20idx-kind-badge--geo\x22>◎\x20geo</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20opacity:.45;\x20white-space:nowrap;\x22>precision\x20{{\x20ix.geoPrecision\x20??\x207\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22ix.isUnique\x20&&\x20!ix.isGeo\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22idx-kind-badge\x20idx-kind-badge--unique\x22>◆\x20unique</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!ix.isGeo\x20&&\x20!ix.isUnique\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22idx-kind-badge\x20idx-kind-badge--regular\x22>regular</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22\x20style=\x22gap:3px;\x20flex-direction:column;\x20align-items:flex-start;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22ix.createdBy\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22idx-owned-badge\x22>{{\x20ix.createdBy.kind\x20}}:{{\x20ix.createdBy.name\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22ix.usedBy\x22\x20let:item=\x22consumer\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22idx-consumer-badge\x22>{{\x20consumer\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:class=\x22\x27manage-status\x20manage-status--\x27\x20+\x20ix.status\x22>{{\x20ix.status\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22\x20style=\x22justify-content:flex-end;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22rebuildIndex(ix.name)\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:11px;\x20padding:2px\x2010px;\x20opacity:.7;\x22\x20title=\x22Rebuild\x20this\x20index\x20from\x20all\x20current\x20records\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!$ok.stores.auth.can(\x27schema:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27schema:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.can(\x27schema:write\x27)\x20?\x20\x27Rebuild\x20this\x20index\x20from\x20all\x20current\x20records\x27\x20:\x20$ok.stores.auth.permTooltip(\x27schema:write\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22refresh-cw\x22></ok-icon>Rebuild\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22\x20style=\x22justify-content:flex-end;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22removeIndex(ix.name)\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:11px;\x20padding:2px\x2010px;\x20color:var(--okdb-danger);\x20opacity:.8;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!$ok.stores.auth.can(\x27schema:write\x27)\x20||\x20ix.usedBy.length\x20>\x200\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27schema:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22ix.usedBy.length\x20>\x200\x20?\x20\x27Used\x20by:\x20\x27\x20+\x20ix.usedBy.join(\x27,\x20\x27)\x20:\x20($ok.stores.auth.can(\x27schema:write\x27)\x20?\x20\x27Remove\x20this\x20index\x27\x20:\x20$ok.stores.auth.permTooltip(\x27schema:write\x27))\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22trash-2\x22></ok-icon>Remove\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<!--\x20FTS\x20Indexes\x20-->\x0a\x20\x20\x20\x20<div\x20class=\x22card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-title\x22>FTS\x20Indexes</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22openCreateFtsModal()\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:11px;\x20padding:3px\x2010px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!$ok.stores.auth.can(\x27schema:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27schema:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.permTooltip(\x27schema:write\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22plus\x22></ok-icon>Create\x20FTS\x20index\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22ftsEntries.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.4;\x20font-size:13px;\x22>No\x20FTS\x20indexes\x20yet.</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22ftsEntries.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-grid\x20manage-grid--fts\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Name</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Fields</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Status</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Size</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22ftsEntries\x22\x20let:item=\x22fe\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22><code>{{\x20fe.name\x20}}</code></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x20manage-cell--dim\x22>{{\x20fe.fields\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:class=\x22\x27manage-status\x20manage-status--\x27\x20+\x20fe.status\x22>{{\x20fe.status\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x20manage-cell--dim\x22\x20style=\x22font-size:11px;\x20font-family:monospace;\x22>{{\x20fmtBytes(fe.sizeBytes)\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22\x20style=\x22justify-content:flex-end;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22rebuildFts(fe.name)\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:11px;\x20padding:2px\x2010px;\x20opacity:.7;\x22\x20title=\x22Rebuild\x20this\x20FTS\x20index\x20from\x20all\x20current\x20records\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!$ok.stores.auth.can(\x27schema:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27schema:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.can(\x27schema:write\x27)\x20?\x20\x27Rebuild\x20this\x20FTS\x20index\x20from\x20all\x20current\x20records\x27\x20:\x20$ok.stores.auth.permTooltip(\x27schema:write\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22refresh-cw\x22></ok-icon>Rebuild\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22\x20style=\x22justify-content:flex-end;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22dropFtsIndex(fe.name)\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:11px;\x20padding:2px\x2010px;\x20color:var(--okdb-danger);\x20opacity:.8;\x22\x20title=\x22Drop\x20this\x20FTS\x20index\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!$ok.stores.auth.can(\x27schema:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27schema:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.can(\x27schema:write\x27)\x20?\x20\x27Drop\x20this\x20FTS\x20index\x27\x20:\x20$ok.stores.auth.permTooltip(\x27schema:write\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22trash-2\x22></ok-icon>Drop\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<!--\x20Vector\x20Search\x20Engines\x20-->\x0a\x20\x20\x20\x20<div\x20class=\x22card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-title\x22>Vector\x20Search\x20Engines</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22openEnginesWorkspace()\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20class=\x22btn-icon\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:3px\x2010px;\x20color:var(--okdb-indigo);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-indigo)\x2027%,\x20transparent);\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Open\x20the\x20type-scoped\x20engines\x20view\x20for\x20this\x20type\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20⛓\x20Type\x20Engines\x20→\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22vectorEntries.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.4;\x20font-size:13px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20No\x20vector\x20search\x20engines\x20for\x20this\x20type\x20yet.\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22openEnginesCreatePipeline()\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22margin-left:6px;\x20font-size:11px;\x20padding:1px\x208px;\x20border-radius:999px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-indigo)\x2027%,\x20transparent);\x20color:var(--okdb-indigo);\x20background:color-mix(in\x20srgb,\x20var(--okdb-indigo)\x205%,\x20transparent);\x20cursor:pointer;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>Create\x20Pipeline…</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22vectorEntries.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-grid\x20manage-grid--vec\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Engine</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Status</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Pipeline</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22vectorEntries\x22\x20let:item=\x22ve\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22><code>{{\x20ve.displayName\x20}}</code></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:class=\x22\x27manage-status\x20manage-status--\x27\x20+\x20(ve.running\x20?\x20\x27ready\x27\x20:\x20\x27creating\x27)\x22>{{\x20ve.status\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x20manage-cell--dim\x22>{{\x20ve.pipeline\x20??\x20\x27—\x27\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22\x20style=\x22justify-content:flex-end;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22openEnginesPipeline(ve.pipeline)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20class=\x22btn-icon\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:2px\x2010px;\x20color:var(--okdb-indigo);\x20opacity:.85;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Open\x20this\x20type-scoped\x20pipeline\x20view\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20⛓\x20View\x20local\x20→\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<!--\x20TTL\x20-->\x0a\x20\x20\x20\x20<div\x20class=\x22card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-title\x22>Time-to-Live\x20(TTL)</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22(loadTTLStats(),\x20loadDefaultTTL())\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:11px;\x20padding:3px\x2010px;\x20opacity:.6;\x22\x20:disabled=\x22ttlStatsLoading\x22\x20title=\x22Refresh\x20TTL\x20stats\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20↻\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20Default\x20TTL\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22margin-bottom:12px;\x20padding:10px;\x20background:var(--okdb-app-bg-deep);\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20font-weight:600;\x20opacity:.7;\x20margin-bottom:8px;\x22>Default\x20TTL\x20for\x20new\x20items</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22defaultTTL\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:13px;\x20color:var(--okdb-success);\x20margin-bottom:8px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Currently:\x20<span\x20style=\x22font-family:monospace;\x20font-weight:600;\x22>{{\x20fmtDuration(defaultTTL)\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.4;\x20font-size:11px;\x22>\x20({{\x20defaultTTL\x20}}ms)</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!defaultTTL\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.4;\x20margin-bottom:8px;\x22>No\x20default\x20—\x20items\x20don\x27t\x20expire\x20unless\x20TTL\x20is\x20set\x20explicitly.</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:6px;\x20align-items:center;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@change=\x22onDefaultTTLPresetChange($event.target.value)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:2px\x206px;\x20background:var(--okdb-app-bg-deep);\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:4px;\x20color:var(--okdb-app-fg);\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22\x22>Custom…</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x2260000\x22>1\x20min</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22300000\x22>5\x20min</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22900000\x22>15\x20min</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x223600000\x22>1\x20hr</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x2221600000\x22>6\x20hr</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x2286400000\x22>24\x20hr</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22604800000\x22>7\x20days</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x222592000000\x22>30\x20days</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type=\x22number\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20!value=\x22defaultTTLInput\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input=\x22(defaultTTLInput\x20=\x20$el.value,\x20defaultTTLPreset\x20=\x20\x27\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20placeholder=\x22ms\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22width:110px;\x20font-size:11px;\x20padding:2px\x206px;\x20background:var(--okdb-app-bg-deep);\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:4px;\x20color:var(--okdb-app-fg);\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22setDefaultTTLAction()\x22\x20:disabled=\x22defaultTTLBusy\x20||\x20!defaultTTLInput\x20||\x20!$ok.stores.auth.can(\x27data:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27data:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.permTooltip(\x27data:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:2px\x2010px;\x20color:var(--okdb-success);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-success)\x2033%,\x20transparent);\x22>Set</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22defaultTTL\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22clearDefaultTTLAction()\x22\x20:disabled=\x22defaultTTLBusy\x20||\x20!$ok.stores.auth.can(\x27data:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27data:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.permTooltip(\x27data:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:2px\x2010px;\x20color:var(--okdb-danger);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-danger)\x2033%,\x20transparent);\x22>Clear</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20TTL\x20stats\x20-->\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22!ttlStats\x20||\x20!ttlStats.enabled\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.4;\x20font-size:13px;\x22>No\x20TTL\x20entries\x20for\x20this\x20type\x20—\x20TTL\x20sub-databases\x20are\x20created\x20lazily\x20on\x20first\x20use.</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22ttlStats\x20&&\x20ttlStats.enabled\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:24px;\x20align-items:center;\x20margin-bottom:10px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:18px;\x20font-weight:600;\x20color:var(--okdb-success);\x22>{{\x20ttlStats.totalEntries\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.5;\x22>entries</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20:style=\x22\x27font-size:18px;\x20font-weight:600;\x20color:\x27\x20+\x20(ttlStats.expiredEntries\x20>\x200\x20?\x20\x27var(--okdb-danger)\x27\x20:\x20\x27var(--okdb-app-fg-muted)\x27)\x20+\x20\x27;\x27\x22>{{\x20ttlStats.expiredEntries\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.5;\x22>expired</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:13px;\x20font-family:monospace;\x20color:var(--okdb-app-fg);\x22>{{\x20ttlStats.nextExpiry\x20?\x20fmtDuration(ttlStats.nextExpiry\x20-\x20Date.now())\x20:\x20\x27—\x27\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.5;\x22>next\x20expiry</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22triggerSweep()\x22\x20:disabled=\x22ttlSweepBusy\x20||\x20!$ok.stores.auth.can(\x27data:write\x27)\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:11px;\x20padding:3px\x2010px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27data:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.permTooltip(\x27data:write\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22refresh-cw\x22></ok-icon>Sweep\x20expired\x20now\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22ttlSweepBusy\x22><span\x20style=\x22font-size:11px;\x20opacity:.5;\x22>Sweeping…</span></if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<!--\x20Danger\x20zone\x20-->\x0a\x20\x20\x20\x20<div\x20class=\x22card\x20card--danger\x22>\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-title\x22\x20style=\x22color:var(--okdb-danger);\x22>⚠\x20Danger\x20Zone</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20flex-wrap:wrap;\x20align-items:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22recomputeFields\x22\x20class=\x22btn-icon\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!$ok.stores.auth.can(\x27data:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27data:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.can(\x27data:write\x27)\x20?\x20\x27Rescan\x20all\x20records\x20to\x20rebuild\x20the\x20field\x20schema\x27\x20:\x20$ok.stores.auth.permTooltip(\x27data:write\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22refresh-cw\x22></ok-icon>Recompute\x20fields\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22dropType\x22\x20class=\x22btn-danger\x20btn-icon\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!$ok.stores.auth.can(\x27data:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27data:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.permTooltip(\x27data:write\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22trash-2\x22></ok-icon>Drop\x20type\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Schema\x20tab\x20-->\x0a\x20\x20<if\x20:=\x22tab\x20===\x20\x27schema\x27\x22>\x0a\x20\x20\x20\x20<type-schema-tab\x0a\x20\x20\x20\x20\x20\x20:type=\x22type\x22\x0a\x20\x20\x20\x20\x20\x20:on-view-key=\x22(key)\x20=>\x20setTab(\x27data\x27)\x22\x0a\x20\x20\x20\x20\x20\x20:on-schema-changed=\x22()\x20=>\x20loadViolations()\x22\x0a\x20\x20\x20\x20\x20\x20:on-violation-count-changed=\x22(count)\x20=>\x20onViolationCountChanged(count)\x22\x0a\x20\x20\x20\x20\x20\x20style=\x22flex:1;\x20min-height:0;\x22\x0a\x20\x20\x20\x20/>\x0a\x20\x20</if>\x0a\x0a\x20\x20<if\x20:=\x22tab\x20===\x20\x27engines\x27\x22>\x0a\x20\x20\x20\x20<type-pipelines-tab\x20:type=\x22type\x22\x20:focusedpipeline=\x22currentRoutePipeline\x22\x20:currentmode=\x22currentRouteMode\x22\x20style=\x22flex:1;\x20min-height:0;\x22\x20/>\x0a\x20\x20</if>\x0a\x0a</div>','currentRoutePipeline','replace','score','index','pageSize','loadViolations','split','ftsMode','engine:started','Sweep\x20done:\x20','Failed\x20to\x20set\x20default\x20TTL','push','search','3KPMDuz','$attr','selectedDirection','Recompute\x20failed','unique','usedBy','apiBase','value','null','Rebuilding\x20FTS\x20index\x20\x22','vectorEngines','dropFtsIndex','length','/indexes','/index/','then','total','Create\x20FTS\x20Index','ttlStats','459529bhOlVb','ok-table','success','engine:installed','loadIndexes','deselect','schema','Sweep\x20failed','sizeBytes','selectedIndexStart','typeEngineCount','geoRadius','select','/fts','statusText','/violations/','floor','Add\x20item','engine:error','load','createdBy','clearExpanded','action','selectedEnv','array','geoHighlightedKey','flatMap','Remove\x20index\x20\x22','Rebuild\x20index\x20error','Rebuild\x20failed','Remove\x20failed','$el','ttlStatsLoading','Rebuild\x20FTS\x20error','selectedVectorEngineMeta','/query','\x22?\x20This\x20will\x20re-scan\x20all\x20records.','precision','stores','scalar','startsWith','stringify','engine:uninstalled','open','Create\x20Pipeline\x20·\x20','geoIndexes','view','source_env','entries','DELETE','index:registered','fulfilled','5066964omJizp','/ttl/default','_search','busy','trim','title','shared','geo','isArray','kind','allSettled','loadDefaultTTL','Rebuild\x20FTS\x20index\x20\x22','config','3450MZPAbA','info','possibleIndexes','loadFtsIndexes','json','geoViewMode','__create_pipeline__','/type/','filter','openCreatePipelineModal','expand','resetPaging','radius','Default\x20TTL\x20set\x20(','reverse','__create_index__','envApiBase','confirm','type','3064678qHdmOg','Remove\x20index\x20error','map','/reset','_geoSelSource','engine:stopped','find','mode','type-viewer','index:ready','index:drop','includes','defineProperty','7860944wljGty','pipeline','error','data','keyOf','selectedPrefix','ftsText','openCreateFtsModal','API','ready','selectedIndex','3376rKYjSL','Error\x20fetching\x20indexes','__remove_index__','INDEX_HAS_CONSUMERS','$watch','Drop\x20type\x20\x22','/env/','add','loadGeoQuery','items','slice','fmtDuration','query','changelog','join','toast','/ttl/sweep','stopped','create','/recompute-fields','<add-item-modal\x20:modal=\x22modal\x22\x20:type=\x22type\x22\x20:on-done=\x22onDone\x22\x20/>','Item\x20updated','keys','source_type','manage','selectedVectorEngine','pipelines','findIndex','message','all','geoLat','1403994XGzKPA','lon','geoDistanceMap','hasPrev','POST','running','removeIndex','/fts/','openTypePipelines','displayRows','name','fts:registered','overview','values','7805lDFFqi','[tag]{display:flex;flex-direction:column;height:100%;min-width:0;min-height:0}.ok-table__cell__inner>span.object{color:#a6da95}.ok-table__cell__inner>span.number{color:var(--okdb-accent)}.ok-table__cell__inner>span.boolean{color:#ff6c6b}.ok-table__cell__inner>span.null,.ok-table__cell__inner>span.undefined{color:#c792ea}.ok-table__cell__inner>.key__header{font-weight:700;color:var(--okdb-json-key)}.ok-table__cell__inner>.key__cell{color:var(--okdb-json-key)}.fts-score-badge,.mode-count{display:inline-block;border-radius:999px;font-size:10px;vertical-align:middle}.mode-count{margin-left:4px;padding:0\x205px;background:#ffffff18;line-height:1.6}.fts-score-badge{margin-left:5px;padding:1px\x205px;border:1px\x20solid\x20color-mix(in\x20srgb,var(--okdb-accent)\x2033%,transparent);color:var(--okdb-accent);opacity:.8}.vec-score-badge{border:1px\x20solid\x20color-mix(in\x20srgb,var(--okdb-indigo)\x2033%,transparent);color:var(--okdb-indigo)}.direct-value-badge,.geo-dist-badge,.vec-score-badge{display:inline-block;margin-left:5px;padding:1px\x205px;border-radius:999px;font-size:10px;vertical-align:middle;opacity:.8}.geo-dist-badge{border:1px\x20solid\x20color-mix(in\x20srgb,var(--okdb-success)\x2033%,transparent);color:var(--okdb-success)}.direct-value-badge{border:1px\x20solid}.direct-value-badge--scalar{border-color:color-mix(in\x20srgb,var(--okdb-app-fg-muted)\x2033%,transparent);color:var(--okdb-app-fg-muted)}.direct-value-badge--array{border-color:#2dd4bf55;color:#2dd4bf}.direct-value-badge--null{border-color:color-mix(in\x20srgb,var(--okdb-purple)\x2033%,transparent);color:var(--okdb-purple)}.manage-section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.manage-section-title{font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.06em;opacity:.5;margin-bottom:0}.manage-grid{display:grid;gap:0}.manage-grid--2{grid-template-columns:1fr\x201fr}.manage-grid--3{grid-template-columns:1fr\x20auto\x20auto}.manage-grid--4{grid-template-columns:1fr\x20auto\x20auto\x20auto}.manage-grid--idx{grid-template-columns:minmax(80px,2fr)\x20minmax(90px,1fr)\x20minmax(80px,1fr)\x20auto\x20auto\x20auto}.idx-consumer-badge,.idx-owned-badge{display:inline-block;padding:1px\x206px;border-radius:3px;font-size:10px;white-space:nowrap}.idx-owned-badge{background:color-mix(in\x20srgb,var(--okdb-accent)\x2012%,transparent);color:var(--okdb-accent);border:1px\x20solid\x20color-mix(in\x20srgb,var(--okdb-accent)\x2025%,transparent)}.idx-consumer-badge{background:color-mix(in\x20srgb,var(--okdb-sky)\x2012%,transparent);color:var(--okdb-sky);border:1px\x20solid\x20color-mix(in\x20srgb,var(--okdb-sky)\x2025%,transparent)}.manage-grid--fts{grid-template-columns:minmax(80px,1fr)\x202fr\x20minmax(60px,auto)\x20minmax(50px,auto)\x20auto\x20auto}.manage-grid--vec{grid-template-columns:minmax(80px,1fr)\x20minmax(60px,auto)\x20minmax(80px,1fr)\x20auto}.idx-kind-badge{display:inline-block;padding:1px\x207px;border-radius:999px;font-size:10px;border:1px\x20solid;white-space:nowrap}.idx-kind-badge--geo{color:var(--okdb-success);border-color:color-mix(in\x20srgb,var(--okdb-success)\x2033%,transparent)}.idx-kind-badge--unique{color:var(--okdb-warning);border-color:color-mix(in\x20srgb,var(--okdb-warning)\x2033%,transparent)}.idx-kind-badge--regular{color:var(--okdb-app-fg-muted);border-color:color-mix(in\x20srgb,var(--okdb-app-fg-muted)\x2020%,transparent)}.idx-info-strip{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:5px\x208px;background:var(--okdb-app-bg-deep);border:1px\x20solid\x20var(--okdb-app-surface-2);border-radius:4px;font-size:11px}.idx-info-label{opacity:.4;white-space:nowrap}.idx-info-field{font-size:11px;color:var(--okdb-json-key)}.idx-info-badge{padding:1px\x207px;border-radius:999px;font-size:10px;border:1px\x20solid;white-space:nowrap}.idx-info-badge--geo{color:var(--okdb-success);border-color:color-mix(in\x20srgb,var(--okdb-success)\x2033%,transparent)}.idx-info-badge--unique{color:var(--okdb-warning);border-color:color-mix(in\x20srgb,var(--okdb-warning)\x2033%,transparent)}.idx-info-badge--regular{color:var(--okdb-app-fg-muted);border-color:color-mix(in\x20srgb,var(--okdb-app-fg-muted)\x2020%,transparent)}.manage-col-hd{font-size:11px;opacity:.4;padding:0\x2012px\x206px\x200;border-bottom:1px\x20solid\x20var(--okdb-app-border);font-weight:400}.manage-cell{padding:6px\x2012px\x206px\x200;border-bottom:1px\x20solid\x20var(--okdb-app-surface);font-size:13px;display:flex;align-items:center;min-width:0}.manage-cell--dim{opacity:.5;font-size:12px}.manage-status{display:inline-block;padding:1px\x207px;border-radius:999px;font-size:10px;border:1px\x20solid}.manage-status--ready{color:var(--okdb-success);border-color:color-mix(in\x20srgb,var(--okdb-success)\x2033%,transparent)}.manage-status--creating,.manage-status--resetting{color:var(--okdb-warning);border-color:color-mix(in\x20srgb,var(--okdb-warning)\x2033%,transparent)}.card--danger{border:1px\x20solid\x20color-mix(in\x20srgb,var(--okdb-danger)\x2013%,transparent)!important}','geoField','Index\x20rebuild\x20complete','indexer','vector-search','key','fields','defaultTTLPreset','63027qfeKVl','fts','/engines','displayVectorName','tab','Index\x20ready:\x20'];_0x5acc=function(){return _0x4193af;};return _0x5acc();}import _0x4cac4e from'../../../components/geo-map.ok.js';import _0x48d424 from'../../../components/ok-json-input.ok.js';import _0x3d17aa from'../../../view-models/type-query-vm.js';import{buildSiftSchema as _0x880d07}from'../../../util/sift-schema.js';import _0x2d1a39 from'../modals/add-item-modal.ok.js';import _0x3879ea from'../modals/create-fts-modal.ok.js';import _0x3e3f49 from'../modals/create-index-modal.ok.js';import _0x43f102 from'../modals/create-pipeline-modal.ok.js';import _0x4bd11c from'./edit-row.ok.js';import _0x12a3df from'../../../stores/events-store.js';import _0x2b9da9 from'./type-changelog.ok.js';import _0xef921d from'./type-pipelines-tab.ok.js';import _0x29c127 from'./type-schema-tab.ok.js';function y(_0x395039){const _0x463f41=_0x392c;return!!_0x395039&&_0x463f41(0x23c)==typeof _0x395039&&!Array[_0x463f41(0x2af)](_0x395039);}function x(_0x29fecf,_0x118a2e){const _0x21ae26=_0x392c;y(_0x29fecf)&&_0x29fecf[_0x21ae26(0x219)]!==_0x118a2e&&Object[_0x21ae26(0x2d4)](_0x29fecf,'__key',{'value':_0x118a2e,'enumerable':!0x1,'configurable':!0x1,'writable':!0x1});}function m(_0x4a2a7e,_0x47a008=0x0){const _0x4cef0f=_0x392c;try{return JSON[_0x4cef0f(0x29c)](_0x4a2a7e,null,_0x47a008)??String(_0x4a2a7e);}catch{return String(_0x4a2a7e);}}export default{'tag':_0x2e63d4(0x2d0),'dependencies':[_0x5f1520,_0x18869b,_0x2acb56,_0x4bd11c,_0x48d424,_0x2b9da9,_0xef921d,_0x29c127,_0x2d1a39,_0x3e3f49,_0x3879ea,_0x43f102,_0x4cac4e],'attr':{'type':{}},'context'(_0x3b4491){const _0x1c76f2=_0x2e63d4;let _0x94be6f=null,_0x223e19=null,_0x18ded9=null;const _0x1546fd=new _0x3d17aa({'type':_0x3b4491[_0x1c76f2(0x261)][_0x1c76f2(0x2c7)],'apiBase':()=>_0x3b4491['$ok'][_0x1c76f2(0x299)][_0x1c76f2(0x238)][_0x1c76f2(0x266)]});return{'tab':'data',get 'envApiBase'(){const _0x28447b=_0x1c76f2;return _0x3b4491[_0x28447b(0x20b)][_0x28447b(0x299)][_0x28447b(0x238)][_0x28447b(0x266)];},get 'type'(){const _0x25748b=_0x1c76f2;return _0x3b4491[_0x25748b(0x261)][_0x25748b(0x2c7)];},'violationCount':0x0,async 'loadViolations'(){const _0x121d18=_0x1c76f2;if(this[_0x121d18(0x2c7)])try{const [_0x5333e1,_0x9d295e]=await Promise[_0x121d18(0x2fd)]([fetch(this['envApiBase']+_0x121d18(0x282)+encodeURIComponent(this[_0x121d18(0x2c7)])),fetch(this[_0x121d18(0x2c5)]+_0x121d18(0x203)+encodeURIComponent(this['type']))]);let _0xc737d5=0x0;if(_0x5333e1['ok']){const _0x110e92=await _0x5333e1['json']();_0xc737d5+=(_0x110e92?.[_0x121d18(0x2d8)]?.['violations']??_0x110e92?.[_0x121d18(0x225)]?.[_0x121d18(0x234)]??[])['length'];}if(_0x9d295e['ok']){const _0x5408d9=await _0x9d295e[_0x121d18(0x2b9)]();_0xc737d5+=(_0x5408d9?.[_0x121d18(0x2d8)]?.[_0x121d18(0x234)]??_0x5408d9?.[_0x121d18(0x225)]?.[_0x121d18(0x234)]??[])[_0x121d18(0x26c)];}this[_0x121d18(0x23e)]=_0xc737d5;}catch{}},'onViolationCountChanged'(_0x3c66d5){const _0x311593=_0x1c76f2;this[_0x311593(0x23e)]=_0x3c66d5;},'query':_0x1546fd,'possibleIndexes':[],'indexStatuses':{},'createIdxPossible':[],'createIdxTypeLoaded':null,'ftsList':[],'vectorEngines':[],'typeEngineCount':0x0,'searchMode':'scan','geoIndexes':[],'geoField':'','geoLat':'','geoLon':'','geoRadius':'','geoSortAsc':!0x0,'geoDistanceMap':{},'mapOpen':!0x1,'geoViewMode':'table','geoHighlightedKey':null,'_geoSelSource':null,get 'geoMapPoints'(){const _0x1eb6fa=_0x1c76f2,_0x1b0b38=this[_0x1eb6fa(0x1f0)];return _0x1b0b38?(this['query'][_0x1eb6fa(0x2e9)]||[])['map'](_0x2fb45b=>{const _0x5ee571=_0x1eb6fa,_0xbab445=_0x2fb45b[_0x5ee571(0x267)]||{},_0x49a282=((_0x4f1f34,_0x3b2676)=>{let _0x3b2188=_0x4f1f34;for(const _0x375005 of _0x3b2676['split']('.')){if(null==_0x3b2188)return null;_0x3b2188=_0x3b2188[_0x375005];}return _0x3b2188;})(_0xbab445,_0x1b0b38);return{'key':_0x2fb45b[_0x5ee571(0x1f4)],'title':_0xbab445[_0x5ee571(0x309)]||_0xbab445[_0x5ee571(0x2ac)]||_0xbab445['label']||_0x2fb45b[_0x5ee571(0x1f4)],'lat':_0x49a282?.[_0x5ee571(0x24f)],'lon':_0x49a282?.[_0x5ee571(0x300)],'distance':_0x2fb45b[_0x5ee571(0x20e)]};})[_0x1eb6fa(0x2bd)](_0x589fe1=>null!=_0x589fe1[_0x1eb6fa(0x24f)]&&null!=_0x589fe1[_0x1eb6fa(0x300)]):[];},'setTab'(_0x268441){const _0x46aa40=_0x1c76f2;if(this[_0x46aa40(0x1fb)]=_0x268441,'engines'===_0x268441)return;const _0x4892fa=_0x3b4491[_0x46aa40(0x243)][_0x46aa40(0x1ff)];if(!_0x4892fa?.[_0x46aa40(0x2a9)]?.['tab'])return;const _0x583092={..._0x4892fa['_search']};delete _0x583092['tab'],delete _0x583092[_0x46aa40(0x2cf)],delete _0x583092[_0x46aa40(0x2d6)],_0x4892fa[_0x46aa40(0x254)](_0x4892fa[_0x46aa40(0x21c)](_0x4892fa[_0x46aa40(0x1fe)]||'',_0x583092,_0x4892fa['_anchor']||''));},'switchToPipelines'(){const _0xc06d50=_0x1c76f2;this[_0xc06d50(0x307)]({'mode':_0xc06d50(0x2fa),'pipeline':this[_0xc06d50(0x253)]||null});},get 'currentRoutePipeline'(){const _0x75185f=_0x1c76f2;return String(_0x3b4491[_0x75185f(0x243)]?.[_0x75185f(0x1ff)]?.[_0x75185f(0x2a9)]?.['pipeline']||'');},get 'currentRouteMode'(){const _0x40727b=_0x1c76f2;return _0x40727b(0x2fa)===String(_0x3b4491['$vars']?.[_0x40727b(0x1ff)]?.[_0x40727b(0x2a9)]?.[_0x40727b(0x2cf)]||'')[_0x40727b(0x2ab)]()?_0x40727b(0x2fa):_0x40727b(0x251);},'openTypePipelines'(_0x18a724={}){const _0x355d0d=_0x1c76f2,_0x3aa184=_0x3b4491[_0x355d0d(0x243)]?.['$router'];if(!_0x3aa184?.['resolve']||!_0x3aa184?.[_0x355d0d(0x25e)])return;const _0x6ca8a6=_0x3b4491['$ok'][_0x355d0d(0x299)][_0x355d0d(0x238)][_0x355d0d(0x28a)]||_0x355d0d(0x22d),_0x257cbb={..._0x3aa184[_0x355d0d(0x2a9)]||{},'env':_0x6ca8a6,'type':this[_0x355d0d(0x2c7)],'tab':_0x355d0d(0x251),'mode':_0x355d0d(0x2fa)===_0x18a724[_0x355d0d(0x2cf)]?_0x355d0d(0x2fa):_0x355d0d(0x251)};_0x18a724['pipeline']?_0x257cbb[_0x355d0d(0x2d6)]=_0x18a724['pipeline']:delete _0x257cbb[_0x355d0d(0x2d6)],_0x3aa184[_0x355d0d(0x25e)](_0x3aa184['resolve']('/db',_0x257cbb));},'openEnginesWorkspace'(_0x2a3bbc={}){const _0x343d0f=_0x1c76f2;if(_0x343d0f(0x2f2)===_0x2a3bbc[_0x343d0f(0x2a1)]){const _0x3873d9=_0x3b4491[_0x343d0f(0x243)]?.['$router'];if(!_0x3873d9?.[_0x343d0f(0x21c)]||!_0x3873d9?.[_0x343d0f(0x25e)])return;const _0x48c6d5={'env':_0x3b4491['$ok']['stores']['okdb'][_0x343d0f(0x28a)]||_0x343d0f(0x22d),'view':'create','sourceType':this[_0x343d0f(0x2c7)]};return _0x2a3bbc[_0x343d0f(0x2b0)]&&(_0x48c6d5[_0x343d0f(0x2b0)]=_0x2a3bbc[_0x343d0f(0x2b0)]),void _0x3873d9[_0x343d0f(0x25e)](_0x3873d9[_0x343d0f(0x21c)]('/engines',_0x48c6d5));}this['openTypePipelines']({'mode':_0x2a3bbc[_0x343d0f(0x2cf)]||_0x343d0f(0x251),'pipeline':_0x2a3bbc[_0x343d0f(0x2d6)]||null});},'openTypePipelinesForSelectedVector'(){const _0x5eb7a9=_0x1c76f2,_0x56e4b9=this[_0x5eb7a9(0x295)]?.['meta']?.[_0x5eb7a9(0x2d6)]||null;this[_0x5eb7a9(0x307)]({'mode':_0x5eb7a9(0x2fa),'pipeline':_0x56e4b9});},'openGlobalEnginesWorkspace'(_0x392107={}){const _0x43c31a=_0x1c76f2,_0x35fa76=_0x3b4491['$vars']?.[_0x43c31a(0x1ff)];if(!_0x35fa76?.[_0x43c31a(0x21c)]||!_0x35fa76?.[_0x43c31a(0x25e)])return;const _0x1c70df={'env':_0x3b4491['$ok'][_0x43c31a(0x299)][_0x43c31a(0x238)][_0x43c31a(0x28a)]||_0x43c31a(0x22d),'sourceType':this[_0x43c31a(0x2c7)]};_0x392107[_0x43c31a(0x2a1)]&&_0x43c31a(0x30b)!==_0x392107[_0x43c31a(0x2a1)]||(_0x1c70df[_0x43c31a(0x2cf)]=_0x43c31a(0x2fa)),_0x392107['view']&&'overview'!==_0x392107[_0x43c31a(0x2a1)]&&(_0x1c70df['view']=_0x392107[_0x43c31a(0x2a1)]),_0x392107[_0x43c31a(0x2b0)]&&(_0x1c70df['kind']=_0x392107[_0x43c31a(0x2b0)]),_0x392107[_0x43c31a(0x2d6)]&&(_0x1c70df[_0x43c31a(0x2d6)]=_0x392107[_0x43c31a(0x2d6)]),_0x35fa76[_0x43c31a(0x25e)](_0x35fa76[_0x43c31a(0x21c)]('/engines',_0x1c70df));},async 'openEnginesCreatePipeline'(){const _0x2800a0=_0x1c76f2;this[_0x2800a0(0x2c7)]&&await _0x3b4491[_0x2800a0(0x20b)][_0x2800a0(0x2ad)][_0x2800a0(0x23d)][_0x2800a0(0x29e)]({'owner':_0x3b4491,'title':_0x2800a0(0x29f)+this[_0x2800a0(0x2c7)],'canDrag':!0x0,'content':_0x2800a0(0x23a),'context':_0x3241a9=>({'modal':_0x3241a9,'type':this[_0x2800a0(0x2c7)],'envName':_0x3b4491[_0x2800a0(0x20b)]['stores'][_0x2800a0(0x238)][_0x2800a0(0x28a)]||_0x2800a0(0x22d),'onDone':async()=>{const _0x162673=_0x2800a0;await Promise[_0x162673(0x2fd)]([this['loadVectorEngines'](!0x0),this[_0x162673(0x237)]()]);}})});},'openEnginesPipeline'(_0x4c55fe=null){const _0x51af0b=_0x1c76f2;this[_0x51af0b(0x307)]({'mode':_0x51af0b(0x2fa),'pipeline':_0x4c55fe||null});},'switchToEngines'(){const _0x4ee091=_0x1c76f2;this[_0x4ee091(0x307)]({'mode':_0x4ee091(0x251),'pipeline':this[_0x4ee091(0x253)]||null});},'setSearchMode'(_0x46ed9c){const _0x176fe5=_0x1c76f2;if(this['searchMode']=_0x46ed9c,this['query']['selectedIndex']=null,this[_0x176fe5(0x2ec)]['selectedFtsIndex']=null,this[_0x176fe5(0x2ec)][_0x176fe5(0x2f9)]=null,this[_0x176fe5(0x2ec)]['selectedPrefix']=void 0x0,this[_0x176fe5(0x2ec)]['selectedIndexStart']=void 0x0,this[_0x176fe5(0x2ec)][_0x176fe5(0x217)]=void 0x0,this[_0x176fe5(0x301)]={},this[_0x176fe5(0x28c)]=null,'geo'!==_0x46ed9c){this[_0x176fe5(0x2ba)]=_0x176fe5(0x242);try{_0x3b4491[_0x176fe5(0x292)]?.['querySelector'](_0x176fe5(0x274))?.[_0x176fe5(0x231)]?.();}catch(_0x2f835e){}}},'_updateGeoIndexes'(){const _0x3b3c55=_0x1c76f2;this[_0x3b3c55(0x2a0)]=this[_0x3b3c55(0x2b7)][_0x3b3c55(0x2bd)](_0x19eb33=>this['indexStatuses'][_0x19eb33]?.[_0x3b3c55(0x244)]),this[_0x3b3c55(0x2a0)]['length']&&!this[_0x3b3c55(0x1f0)]&&(this['geoField']=this[_0x3b3c55(0x2a0)][0x0]);},async 'loadGeoQuery'(){const _0x3f3521=_0x1c76f2;if(!this['type']||!this[_0x3f3521(0x1f0)])return;const _0x5e02a8=parseFloat(this[_0x3f3521(0x2fe)]),_0x277545=parseFloat(this[_0x3f3521(0x21f)]);if(isNaN(_0x5e02a8)||isNaN(_0x277545))return;const _0x11febe=this[_0x3f3521(0x27e)]?parseFloat(this['geoRadius']):void 0x0;this['query'][_0x3f3521(0x2aa)]=!0x0,this['geoDistanceMap']={};try{const _0x2be871={...this['query'][_0x3f3521(0x2ec)]},_0x1b4b43={'lat':_0x5e02a8,'lon':_0x277545};_0x11febe&&!isNaN(_0x11febe)&&(_0x1b4b43[_0x3f3521(0x2c1)]=_0x11febe),_0x2be871[this['geoField']]={'$near':_0x1b4b43};const _0x15b347=await fetch(this['envApiBase']+_0x3f3521(0x2bc)+this['type']+_0x3f3521(0x296),{'method':_0x3f3521(0x303),'headers':{'Content-Type':_0x3f3521(0x204)},'body':JSON[_0x3f3521(0x29c)]({'filter':_0x2be871,'options':{'limit':this['query'][_0x3f3521(0x257)]}})});if(!_0x15b347['ok'])throw new Error(_0x15b347['statusText']);const {data:_0x210a24,meta:_0x51f6ac}=await _0x15b347[_0x3f3521(0x2b9)]();let _0x2f54c1=_0x210a24??[];this[_0x3f3521(0x220)]||(_0x2f54c1=_0x2f54c1[_0x3f3521(0x2ea)]()[_0x3f3521(0x2c3)]()),this['query'][_0x3f3521(0x2e9)]=_0x2f54c1;const _0x1e713e={};this[_0x3f3521(0x2ec)][_0x3f3521(0x30c)]=_0x2f54c1[_0x3f3521(0x2ca)](_0x34f80d=>(x(_0x34f80d[_0x3f3521(0x267)],_0x34f80d['key']),null!=_0x34f80d[_0x3f3521(0x20e)]&&(_0x1e713e[_0x34f80d['key']]=_0x34f80d['distance']),_0x34f80d['value'])),this[_0x3f3521(0x301)]=_0x1e713e,this[_0x3f3521(0x2ec)]['hasNext']=!0x1,this[_0x3f3521(0x2ec)][_0x3f3521(0x302)]=!0x1,this[_0x3f3521(0x2ec)]['_current']=null,this[_0x3f3521(0x2ec)]['_backStack']=[],this[_0x3f3521(0x2ec)][_0x3f3521(0x218)]=_0x51f6ac?.[_0x3f3521(0x218)]??null,this['query'][_0x3f3521(0x270)]=_0x2f54c1[_0x3f3521(0x26c)];}catch(_0xbfee42){console[_0x3f3521(0x2d7)](_0x3f3521(0x215),_0xbfee42);}finally{this[_0x3f3521(0x2ec)][_0x3f3521(0x2aa)]=!0x1;}},get 'selectedVectorEngineMeta'(){const _0x1eef6d=_0x1c76f2;return this[_0x1eef6d(0x2ec)][_0x1eef6d(0x2f9)]?this['vectorEngines']['find'](_0x14896a=>this[_0x1eef6d(0x1fa)](_0x14896a[_0x1eef6d(0x309)])===this['query'][_0x1eef6d(0x2f9)])??null:null;},'helpOpen':!0x1,get 'typeFields'(){const _0x1c629f=_0x1c76f2,_0x3a0b91=(_0x3b4491['$ok'][_0x1c629f(0x299)][_0x1c629f(0x238)][_0x1c629f(0x23b)]||[])[_0x1c629f(0x2ce)](_0x25b7b2=>_0x25b7b2[_0x1c629f(0x2c7)]===this[_0x1c629f(0x2c7)]);return _0x3a0b91?.['fields']||{};},get 'typeCount'(){const _0x2fa505=_0x1c76f2,_0xa06048=(_0x3b4491[_0x2fa505(0x20b)][_0x2fa505(0x299)][_0x2fa505(0x238)][_0x2fa505(0x23b)]||[])['find'](_0x5e25cc=>_0x5e25cc[_0x2fa505(0x2c7)]===this[_0x2fa505(0x2c7)]);return _0xa06048?.['count']??'?';},get 'typeFieldEntries'(){const _0x40d15d=_0x1c76f2;return Object[_0x40d15d(0x2a3)](this['typeFields'])[_0x40d15d(0x2ca)](([_0x16e223,_0x1660c3])=>({'name':_0x16e223,'types':_0x1660c3}));},get 'indexEntries'(){const _0x3cb97d=_0x1c76f2;return this[_0x3cb97d(0x2b7)]['map'](_0x8917fb=>({'name':_0x8917fb,'fields':_0x8917fb[_0x3cb97d(0x259)]('~'),'status':this['indexStatuses'][_0x8917fb]?.[_0x3cb97d(0x24a)]||'ready','isGeo':!!this['indexStatuses'][_0x8917fb]?.[_0x3cb97d(0x244)],'geoPrecision':this[_0x3cb97d(0x208)][_0x8917fb]?.[_0x3cb97d(0x244)]?.[_0x3cb97d(0x298)]??null,'isUnique':!!this['indexStatuses'][_0x8917fb]?.['unique'],'createdBy':this['indexStatuses'][_0x8917fb]?.[_0x3cb97d(0x287)]??null,'usedBy':this[_0x3cb97d(0x208)][_0x8917fb]?.['usedBy']??[]}));},get 'selectedIndexInfo'(){const _0x5789c8=_0x1c76f2,_0x4743f5=this[_0x5789c8(0x2ec)][_0x5789c8(0x2df)];if(!_0x4743f5)return null;const _0xaeef98=this[_0x5789c8(0x208)][_0x4743f5];return{'fields':_0x4743f5[_0x5789c8(0x259)]('~'),'isGeo':!!_0xaeef98?.['geoConfig'],'geoPrecision':_0xaeef98?.['geoConfig']?.['precision']??null,'isUnique':!!_0xaeef98?.[_0x5789c8(0x264)]};},get 'ftsEntries'(){const _0x2b380a=_0x1c76f2;return this['ftsList'][_0x2b380a(0x2ca)](_0x3e7084=>({'name':_0x3e7084[_0x2b380a(0x309)],'status':_0x3e7084['status']||'ready','fields':(_0x3e7084['config']&&_0x3e7084['config'][_0x2b380a(0x1f5)]?_0x3e7084[_0x2b380a(0x2b4)][_0x2b380a(0x1f5)]:[])['join'](',\x20'),'sizeBytes':_0x3e7084[_0x2b380a(0x27b)]??null}));},'fmtBytes'(_0x14d702){const _0x1e6b53=_0x1c76f2;if(null==_0x14d702||0x0===_0x14d702)return'—';const _0x5e1d4f=['B','KB','MB','GB'];let _0x4eb23c=_0x14d702,_0x5f536a=0x0;for(;_0x4eb23c>=0x400&&_0x5f536a<_0x5e1d4f[_0x1e6b53(0x26c)]-0x1;)_0x4eb23c/=0x400,_0x5f536a++;return _0x4eb23c[_0x1e6b53(0x230)](0x1)+'\u00a0'+_0x5e1d4f[_0x5f536a];},'ttlStats':null,'ttlStatsLoading':!0x1,'ttlSweepBusy':!0x1,'defaultTTL':null,'defaultTTLInput':'','defaultTTLPreset':'','defaultTTLBusy':!0x1,async 'loadTTLStats'(){const _0xb1b52c=_0x1c76f2;if(this[_0xb1b52c(0x2c7)]){this['ttlStatsLoading']=!0x0;try{const _0x5565fa=await fetch(this[_0xb1b52c(0x2c5)]+'/ttl/stats?type='+encodeURIComponent(this[_0xb1b52c(0x2c7)])),_0x4739c0=await _0x5565fa[_0xb1b52c(0x2b9)]();this['ttlStats']=_0x4739c0[_0xb1b52c(0x2d8)]??_0x4739c0[_0xb1b52c(0x225)]??null;}catch{this[_0xb1b52c(0x272)]=null;}finally{this[_0xb1b52c(0x293)]=!0x1;}}},async 'loadDefaultTTL'(){const _0x4f95ea=_0x1c76f2;if(this[_0x4f95ea(0x2c7)])try{const _0x2f4178=await fetch(this[_0x4f95ea(0x2c5)]+'/type/'+encodeURIComponent(this['type'])+_0x4f95ea(0x2a8)),_0x423152=await _0x2f4178[_0x4f95ea(0x2b9)](),_0x3da2f4=_0x423152[_0x4f95ea(0x2d8)]?.['defaultTTL']??_0x423152[_0x4f95ea(0x225)]?.['defaultTTL']??null;this[_0x4f95ea(0x228)]=_0x3da2f4,this['defaultTTLInput']=_0x3da2f4?String(_0x3da2f4):'',this[_0x4f95ea(0x1f6)]=_0x3da2f4?String(_0x3da2f4):'';}catch{this[_0x4f95ea(0x228)]=null;}},async 'setDefaultTTLAction'(){const _0x5538be=_0x1c76f2,_0x44aa72=parseInt(this['defaultTTLInput']);if(_0x44aa72&&!(_0x44aa72<=0x0)){this['defaultTTLBusy']=!0x0;try{const _0x1d4f87=await fetch(this[_0x5538be(0x2c5)]+_0x5538be(0x2bc)+encodeURIComponent(this[_0x5538be(0x2c7)])+_0x5538be(0x2a8),{'method':'PUT','headers':{'Content-Type':_0x5538be(0x204)},'body':JSON[_0x5538be(0x29c)]({'ttl':_0x44aa72})});if(!_0x1d4f87['ok']){const _0x4ea905=await _0x1d4f87[_0x5538be(0x2b9)]()[_0x5538be(0x21e)](()=>({}));throw new Error(_0x4ea905?.[_0x5538be(0x2d7)]?.[_0x5538be(0x2fc)]||_0x1d4f87[_0x5538be(0x281)]);}this[_0x5538be(0x228)]=_0x44aa72,_0x3b4491[_0x5538be(0x20b)][_0x5538be(0x2ad)]?.[_0x5538be(0x2ef)]?.[_0x5538be(0x2b6)]?.(_0x5538be(0x2c2)+this[_0x5538be(0x2eb)](_0x44aa72)+')');}catch(_0x53031e){_0x3b4491['$ok'][_0x5538be(0x2ad)]?.[_0x5538be(0x2ef)]?.[_0x5538be(0x2d7)]?.(_0x53031e['message']||_0x5538be(0x25d));}finally{this[_0x5538be(0x206)]=!0x1;}}},async 'clearDefaultTTLAction'(){const _0x17e9fb=_0x1c76f2;this[_0x17e9fb(0x206)]=!0x0;try{const _0x4ef85b=await fetch(this[_0x17e9fb(0x2c5)]+_0x17e9fb(0x2bc)+encodeURIComponent(this[_0x17e9fb(0x2c7)])+_0x17e9fb(0x2a8),{'method':_0x17e9fb(0x2a4)});if(!_0x4ef85b['ok'])throw new Error(_0x4ef85b[_0x17e9fb(0x281)]);this[_0x17e9fb(0x228)]=null,this[_0x17e9fb(0x250)]='',this['defaultTTLPreset']='',_0x3b4491[_0x17e9fb(0x20b)][_0x17e9fb(0x2ad)]?.['toast']?.[_0x17e9fb(0x2b6)]?.(_0x17e9fb(0x1fd));}catch(_0x35f47d){_0x3b4491[_0x17e9fb(0x20b)][_0x17e9fb(0x2ad)]?.[_0x17e9fb(0x2ef)]?.['error']?.(_0x35f47d['message']||'Failed\x20to\x20clear\x20default\x20TTL');}finally{this['defaultTTLBusy']=!0x1;}},'onDefaultTTLPresetChange'(_0x39b1fc){const _0x590589=_0x1c76f2;this[_0x590589(0x1f6)]=_0x39b1fc,_0x39b1fc&&(this[_0x590589(0x250)]=_0x39b1fc);},async 'triggerSweep'(){const _0x2bb5fd=_0x1c76f2;this[_0x2bb5fd(0x239)]=!0x0;try{const _0x437a0d=await fetch(this[_0x2bb5fd(0x2c5)]+_0x2bb5fd(0x2f0),{'method':'POST','headers':{'Content-Type':'application/json'},'body':JSON['stringify']({'batchSize':0x3e8})}),_0x436312=await _0x437a0d[_0x2bb5fd(0x2b9)](),_0xe31f4f=_0x2bb5fd(0x25c)+((_0x436312[_0x2bb5fd(0x2d8)]??_0x436312[_0x2bb5fd(0x225)]??{})['removed']??0x0)+_0x2bb5fd(0x20c);_0x3b4491['$ok'][_0x2bb5fd(0x2ad)]?.[_0x2bb5fd(0x2ef)]?.[_0x2bb5fd(0x2b6)]?.(_0xe31f4f),await this[_0x2bb5fd(0x240)](),await this[_0x2bb5fd(0x2ec)][_0x2bb5fd(0x286)]();}catch(_0x5a3833){_0x3b4491[_0x2bb5fd(0x20b)][_0x2bb5fd(0x2ad)]?.[_0x2bb5fd(0x2ef)]?.[_0x2bb5fd(0x2d7)]?.(_0x5a3833[_0x2bb5fd(0x2fc)]||_0x2bb5fd(0x27a));}finally{this[_0x2bb5fd(0x239)]=!0x1;}},'fmtDuration'(_0x288e06){const _0x261b84=_0x1c76f2;if(null==_0x288e06)return'—';const _0x35ae81=Math[_0x261b84(0x283)](_0x288e06/0x3e8);return _0x35ae81<0x3c?_0x35ae81+'s':_0x35ae81<0xe10?Math['floor'](_0x35ae81/0x3c)+'m\x20'+_0x35ae81%0x3c+'s':_0x35ae81<0x15180?Math[_0x261b84(0x283)](_0x35ae81/0xe10)+'h\x20'+Math[_0x261b84(0x283)](_0x35ae81%0xe10/0x3c)+'m':Math[_0x261b84(0x283)](_0x35ae81/0x15180)+'d\x20'+Math[_0x261b84(0x283)](_0x35ae81%0x15180/0xe10)+'h';},get 'vectorEntries'(){const _0x1ce2f4=_0x1c76f2;return this[_0x1ce2f4(0x26a)][_0x1ce2f4(0x2ca)](_0x252160=>({'name':_0x252160['name'],'displayName':this[_0x1ce2f4(0x1fa)](_0x252160[_0x1ce2f4(0x309)]),'status':_0x252160['isRunning']?_0x1ce2f4(0x304):_0x252160['status']||_0x1ce2f4(0x2f1),'running':_0x252160[_0x1ce2f4(0x235)],'pipeline':_0x252160['meta']&&_0x252160[_0x1ce2f4(0x247)][_0x1ce2f4(0x2d6)]?_0x252160[_0x1ce2f4(0x247)][_0x1ce2f4(0x2d6)]:null}));},get 'siftSchema'(){const _0x1a06b8=_0x1c76f2;return _0x880d07(this[_0x1a06b8(0x222)]);},async 'loadIndexes'(_0x46bff8=!0x1){const _0x560474=_0x1c76f2;if(this[_0x560474(0x2c7)]&&(_0x46bff8||_0x94be6f!==this[_0x560474(0x2c7)]))try{const _0x587d9e=await fetch(this[_0x560474(0x2c5)]+_0x560474(0x2bc)+this[_0x560474(0x2c7)]+_0x560474(0x26d)),_0x3c37f5=await _0x587d9e[_0x560474(0x2b9)](),_0x536087=_0x3c37f5['data']??_0x3c37f5[_0x560474(0x225)]??{};this[_0x560474(0x2b7)]=Object[_0x560474(0x2f6)](_0x536087),this['indexStatuses']=_0x536087,this['_updateGeoIndexes'](),_0x94be6f=this['type'];}catch(_0x41a80f){console[_0x560474(0x2d7)](_0x560474(0x2e1),_0x41a80f);}},async 'loadFtsIndexes'(_0x268a80=!0x1){const _0x1068b2=_0x1c76f2;if(this[_0x1068b2(0x2c7)]&&(_0x268a80||_0x223e19!==this[_0x1068b2(0x2c7)]))try{const _0x42bf64=await fetch(this[_0x1068b2(0x2c5)]+'/type/'+this[_0x1068b2(0x2c7)]+_0x1068b2(0x280)),{data:_0x5667fd}=await _0x42bf64[_0x1068b2(0x2b9)]();this['ftsList']=_0x5667fd||[],_0x223e19=this[_0x1068b2(0x2c7)];}catch(_0x552f68){console[_0x1068b2(0x2d7)](_0x1068b2(0x22e),_0x552f68);}},async 'loadVectorEngines'(_0x207821=!0x1){const _0x431987=_0x1c76f2;if(this[_0x431987(0x2c7)]&&(_0x207821||_0x18ded9!==this['type']))try{const _0x224815=_0x3b4491[_0x431987(0x20b)][_0x431987(0x299)][_0x431987(0x238)][_0x431987(0x28a)]||_0x431987(0x22d),[_0x2c0563,_0x480721]=await Promise[_0x431987(0x2b1)]([fetch(__ENV__['API']+_0x431987(0x2e6)+encodeURIComponent(_0x224815)+_0x431987(0x1f9))[_0x431987(0x26f)](_0x20dbe8=>_0x20dbe8['json']()),fetch(__ENV__[_0x431987(0x2dd)]+'/embeddings/embedders')['then'](_0x134e95=>_0x134e95[_0x431987(0x2b9)]())]),_0x17da5d='fulfilled'===_0x2c0563[_0x431987(0x24a)]?_0x2c0563[_0x431987(0x267)]?.['result']??_0x2c0563[_0x431987(0x267)]?.['data']??[]:[],_0x22d549=[..._0x431987(0x2a6)===_0x480721[_0x431987(0x24a)]?_0x480721[_0x431987(0x267)]?.['data']??[]:[],..._0x17da5d],_0x1d94da={};for(const _0xb1ade2 of _0x22d549)_0x431987(0x1f2)===_0xb1ade2['type']&&_0xb1ade2['config']&&(_0x1d94da[_0xb1ade2['name']]={'source_type':_0xb1ade2[_0x431987(0x2b4)][_0x431987(0x2f7)],'source_env':_0xb1ade2[_0x431987(0x2b4)][_0x431987(0x2a2)]??_0x431987(0x22d)});this[_0x431987(0x26a)]=_0x22d549[_0x431987(0x2bd)](_0x350022=>{const _0x2c1b06=_0x431987;if(_0x2c1b06(0x1f3)!==_0x350022[_0x2c1b06(0x2c7)])return!0x1;const _0xed7af0=_0x350022[_0x2c1b06(0x2b4)]?.[_0x2c1b06(0x2f7)],_0x5b8c48=_0x350022[_0x2c1b06(0x2b4)]?.[_0x2c1b06(0x2a2)]??_0x2c1b06(0x22d);if(_0xed7af0===this[_0x2c1b06(0x2c7)]&&_0x5b8c48===_0x224815)return!0x0;const _0x1e99dd=_0x1d94da[_0x350022['name']];return _0x1e99dd?.[_0x2c1b06(0x2f7)]===this[_0x2c1b06(0x2c7)]&&(_0x1e99dd?.[_0x2c1b06(0x2a2)]??_0x2c1b06(0x22d))===_0x224815;}),_0x18ded9=this[_0x431987(0x2c7)];}catch(_0x43a3be){this['vectorEngines']=[];}},async 'loadTypeEnginesCount'(){const _0x21aae9=_0x1c76f2;if(this[_0x21aae9(0x2c7)])try{const _0x5d4402=_0x3b4491[_0x21aae9(0x20b)]['stores'][_0x21aae9(0x238)][_0x21aae9(0x28a)]||_0x21aae9(0x22d),_0x39631a=await fetch(__ENV__[_0x21aae9(0x2dd)]+_0x21aae9(0x2e6)+encodeURIComponent(_0x5d4402)+_0x21aae9(0x2bc)+encodeURIComponent(this[_0x21aae9(0x2c7)])+'/pipelines'),_0x5b2ebf=await _0x39631a[_0x21aae9(0x2b9)]()[_0x21aae9(0x21e)](()=>({})),_0x516d26=_0x39631a['ok']?_0x5b2ebf?.[_0x21aae9(0x2d8)]??[]:[],_0x3531b3=new Set();for(const _0x5c0297 of _0x516d26[_0x21aae9(0x28d)](_0x331155=>_0x331155?.[_0x21aae9(0x251)]??[])){const _0x21a28c=_0x5c0297?.[_0x21aae9(0x1f4)]??(_0x5c0297?.['type']&&_0x5c0297?.[_0x21aae9(0x309)]?_0x5c0297[_0x21aae9(0x2c7)]+'@'+_0x5c0297[_0x21aae9(0x309)]:_0x5c0297?.[_0x21aae9(0x309)]??null);_0x21a28c&&_0x3531b3[_0x21aae9(0x2e7)](_0x21a28c);}this[_0x21aae9(0x27d)]=_0x3531b3['size'];}catch{this[_0x21aae9(0x27d)]=0x0;}else this[_0x21aae9(0x27d)]=0x0;},async 'recomputeFields'(){const _0x1fd329=_0x1c76f2;if(this['type'])try{await fetch(this[_0x1fd329(0x2c5)]+_0x1fd329(0x2bc)+this[_0x1fd329(0x2c7)]+_0x1fd329(0x2f3),{'method':_0x1fd329(0x303)}),await _0x3b4491['$ok']['stores'][_0x1fd329(0x238)][_0x1fd329(0x214)](),_0x3b4491['$ok'][_0x1fd329(0x2ad)]?.[_0x1fd329(0x2ef)]?.[_0x1fd329(0x275)]?.(_0x1fd329(0x22b));}catch(_0x426b25){console[_0x1fd329(0x2d7)](_0x1fd329(0x24c),_0x426b25),_0x3b4491['$ok'][_0x1fd329(0x2ad)]?.[_0x1fd329(0x2ef)]?.[_0x1fd329(0x2d7)]?.(_0x1fd329(0x263));}},'indexStatusBadge'(_0x327589){const _0x267914=_0x1c76f2,_0xe78478=this[_0x267914(0x208)]?.[_0x327589]?.['status'];return _0xe78478&&_0x267914(0x2de)!==_0xe78478?_0xe78478:null;},'ftsStatusBadge'(_0x369f80){const _0x544074=_0x1c76f2,_0x215da1=_0x369f80?.[_0x544074(0x24a)];return _0x215da1&&_0x544074(0x2de)!==_0x215da1?_0x215da1:null;},'keyOf':_0x521088=>_0x521088?.[_0x1c76f2(0x219)]??_0x521088?.[_0x1c76f2(0x1f4)]??null,get 'hasDirectValueRows'(){const _0x385b8d=_0x1c76f2;return(this[_0x385b8d(0x2ec)][_0x385b8d(0x2e9)]||[])['some'](_0x551e32=>!y(_0x551e32?.[_0x385b8d(0x267)]));},get 'displayRows'(){const _0x204d59=_0x1c76f2;return this[_0x204d59(0x216)]?this[_0x204d59(0x2ec)][_0x204d59(0x2e9)]:this[_0x204d59(0x2ec)][_0x204d59(0x30c)];},'rowValueOf':_0xc752fd=>_0xc752fd&&'object'==typeof _0xc752fd&&_0x1c76f2(0x1f4)in _0xc752fd&&_0x1c76f2(0x267)in _0xc752fd?_0xc752fd[_0x1c76f2(0x267)]:_0xc752fd,'directValueKindOf'(_0x47d09f){const _0xb7a2f=_0x1c76f2,_0x1e5827=this[_0xb7a2f(0x229)](_0x47d09f);return null===_0x1e5827?_0xb7a2f(0x268):Array['isArray'](_0x1e5827)?_0xb7a2f(0x28b):y(_0x1e5827)?null:_0xb7a2f(0x29a);},'inlineValueOf'(_0x4884be){const _0x40bf7b=_0x1c76f2;return m(this[_0x40bf7b(0x229)](_0x4884be));},'prettyValueOf'(_0x1ece79){const _0x2e9ec2=_0x1c76f2;return m(this[_0x2e9ec2(0x229)](_0x1ece79),0x2);},'scoreOf'(_0x31385f){const _0x2aa5b5=_0x1c76f2,_0x4f54ea=this[_0x2aa5b5(0x2d9)](_0x31385f);return _0x4f54ea?this['query']['ftsScoreMap']?.[_0x4f54ea]?.[_0x2aa5b5(0x255)]??null:null;},'matchOf'(_0x4bd317){const _0x330e59=_0x1c76f2,_0x25260a=this[_0x330e59(0x2d9)](_0x4bd317);if(!_0x25260a)return null;const _0x14df12=this[_0x330e59(0x2ec)][_0x330e59(0x224)]?.[_0x25260a];if(!_0x14df12||null==_0x14df12[_0x330e59(0x255)])return null;const _0x7f54af=_0x14df12['maxScore']??0x2*_0x14df12[_0x330e59(0x20a)];return _0x14df12['score']+'/'+_0x7f54af;},'vectorScoreOf'(_0xe01de7){const _0x31f07f=_0x1c76f2,_0x3dbd94=this['keyOf'](_0xe01de7);if(!_0x3dbd94)return null;const _0x1901d0=this[_0x31f07f(0x2ec)]['vectorScoreMap']?.[_0x3dbd94];return null==_0x1901d0?null:Math[_0x31f07f(0x246)](0x64*_0x1901d0)+'%';},'vectorChunkMetaOf'(_0x17e84f){const _0x25ae85=_0x1c76f2,_0x1737fc=this[_0x25ae85(0x2d9)](_0x17e84f);return _0x1737fc?this[_0x25ae85(0x2ec)][_0x25ae85(0x200)]?.[_0x1737fc]??null:null;},'distanceOf'(_0x23a259){const _0x55d04a=_0x1c76f2,_0x34da6a=this[_0x55d04a(0x2d9)](_0x23a259);if(!_0x34da6a)return null;const _0x92f55=this['geoDistanceMap']?.[_0x34da6a];return null==_0x92f55?null:_0x92f55<0x3e8?Math[_0x55d04a(0x246)](_0x92f55)+'\x20m':(_0x92f55/0x3e8)[_0x55d04a(0x230)](0x1)+'\x20km';},'displayVectorName'(_0x1657dc){const _0x5a3df3=_0x1c76f2,_0x104236=(_0x3b4491[_0x5a3df3(0x20b)][_0x5a3df3(0x299)][_0x5a3df3(0x238)][_0x5a3df3(0x28a)]||_0x5a3df3(0x22d))+':';return _0x1657dc[_0x5a3df3(0x29b)](_0x104236)?_0x1657dc[_0x5a3df3(0x2ea)](_0x104236['length']):_0x1657dc;},'selectVectorEngine'(_0x1b200b,_0x5c8e7a){const _0x2ab5ed=_0x1c76f2;if(_0x2ab5ed(0x2bb)===_0x1b200b)return _0x5c8e7a&&(_0x5c8e7a[_0x2ab5ed(0x20d)]['value']=this[_0x2ab5ed(0x2ec)][_0x2ab5ed(0x2f9)]||''),void this[_0x2ab5ed(0x2be)]();this['query'][_0x2ab5ed(0x2f9)]=_0x1b200b||null,this[_0x2ab5ed(0x2ec)][_0x2ab5ed(0x2f9)]&&(this[_0x2ab5ed(0x2ec)]['selectedIndex']=null,this[_0x2ab5ed(0x2ec)]['selectedFtsIndex']=null,this[_0x2ab5ed(0x2ec)][_0x2ab5ed(0x2da)]=void 0x0,this[_0x2ab5ed(0x2ec)][_0x2ab5ed(0x27c)]=void 0x0,this[_0x2ab5ed(0x2ec)][_0x2ab5ed(0x217)]=void 0x0);},'openCreatePipelineModal'(){const _0x5a640=_0x1c76f2;this[_0x5a640(0x22f)]();},'createMenuOpen':!0x1,'onRowChanged'(_0x2fde1b){const _0x487471=_0x1c76f2,_0x15fcca=_0x2fde1b?.[_0x487471(0x213)]??null,_0x3a2860=_0x15fcca?.[_0x487471(0x1f4)]??null;if(null!=_0x3a2860){const _0x2de7ae=this[_0x487471(0x2ec)]['items']['findIndex'](_0x4b6d57=>_0x4b6d57?.[_0x487471(0x1f4)]===_0x3a2860);if(_0x2de7ae>=0x0){const _0x30031e=_0x15fcca?.[_0x487471(0x267)];x(_0x30031e,_0x3a2860),this[_0x487471(0x2ec)][_0x487471(0x2e9)]['splice'](_0x2de7ae,0x1,{...this[_0x487471(0x2ec)][_0x487471(0x2e9)][_0x2de7ae],'value':_0x30031e}),_0x2de7ae<this['query'][_0x487471(0x30c)]['length']&&this[_0x487471(0x2ec)]['values'][_0x487471(0x226)](_0x2de7ae,0x1,_0x30031e);}}_0x3b4491['$ok'][_0x487471(0x2ad)][_0x487471(0x2ef)]['info'](_0x487471(0x2f5)),this[_0x487471(0x258)]();},'onRemoveRow'(_0x4c50ad){const _0x5095bc=_0x1c76f2,_0x316691=this['query']['items'][_0x5095bc(0x2fb)](_0x539f91=>_0x539f91?.[_0x5095bc(0x1f4)]===_0x4c50ad);_0x316691>=0x0&&(this[_0x5095bc(0x2ec)]['values']['splice'](_0x316691,0x1),this['query'][_0x5095bc(0x2e9)]['splice'](_0x316691,0x1));},async 'openAddModal'(){const _0x142164=_0x1c76f2;await _0x3b4491[_0x142164(0x20b)][_0x142164(0x2ad)][_0x142164(0x23d)][_0x142164(0x29e)]({'owner':_0x3b4491,'title':_0x142164(0x284),'content':_0x142164(0x2f4),'context':_0x9c93ba=>({'modal':_0x9c93ba,'type':this[_0x142164(0x2c7)],'onDone':async({key:_0x7c6354,value:_0x325b2e})=>{const _0x266339=_0x142164;x(_0x325b2e,_0x7c6354),this[_0x266339(0x2ec)]['values'][_0x266339(0x207)](_0x325b2e),this['query']['items'][_0x266339(0x207)]({'key':_0x7c6354,'value':_0x325b2e});}})});},async 'openCreateIndex'(){const _0x4a92a8=_0x1c76f2;let _0x219daf={},_0x33d12e=[];try{const _0x523753=await fetch(this[_0x4a92a8(0x2c5)]+_0x4a92a8(0x2bc)+this[_0x4a92a8(0x2c7)]+_0x4a92a8(0x21a)),_0x5c6967=await _0x523753[_0x4a92a8(0x2b9)]();_0x219daf=(_0x5c6967['data']??_0x5c6967[_0x4a92a8(0x225)])?.[_0x4a92a8(0x210)]??{},_0x33d12e=Object[_0x4a92a8(0x2f6)](_0x219daf)[_0x4a92a8(0x2bd)](_0x353d6b=>_0x219daf[_0x353d6b][_0x4a92a8(0x2d3)](_0x4a92a8(0x2ae)));}catch{const _0x2703d2=(_0x3b4491[_0x4a92a8(0x20b)][_0x4a92a8(0x299)]['okdb'][_0x4a92a8(0x23b)]||[])[_0x4a92a8(0x2ce)](_0x5ebea5=>_0x5ebea5[_0x4a92a8(0x2c7)]===this['type']);for(const _0x1b3eb4 of Object[_0x4a92a8(0x2f6)](_0x2703d2?.['fields']||{}))_0x219daf[_0x1b3eb4]=_0x2703d2['fields'][_0x1b3eb4];}await _0x3b4491['$ok'][_0x4a92a8(0x2ad)][_0x4a92a8(0x23d)]['open']({'owner':_0x3b4491,'title':_0x4a92a8(0x24e),'content':'<create-index-modal\x20:modal=\x22modal\x22\x20:type=\x22type\x22\x20:deep-paths=\x22deepPaths\x22\x20:geo-fields=\x22geoFields\x22\x20:on-done=\x22onDone\x22\x20/>','context':_0x384feb=>({'modal':_0x384feb,'type':this[_0x4a92a8(0x2c7)],'deepPaths':_0x219daf,'geoFields':_0x33d12e,'onDone':async()=>{const _0x40459c=_0x4a92a8;await this[_0x40459c(0x277)](!0x0);}})});},async 'dropType'(){const _0x1af53a=_0x1c76f2;if(this[_0x1af53a(0x2c7)]&&await _0x3b4491[_0x1af53a(0x20b)]['shared'][_0x1af53a(0x23d)][_0x1af53a(0x2c6)](_0x1af53a(0x2e5)+this[_0x1af53a(0x2c7)]+_0x1af53a(0x205)))try{await fetch(this['envApiBase']+_0x1af53a(0x2bc)+this[_0x1af53a(0x2c7)],{'method':_0x1af53a(0x2a4)}),await _0x3b4491[_0x1af53a(0x20b)][_0x1af53a(0x299)][_0x1af53a(0x238)][_0x1af53a(0x214)](),_0x3b4491['$el']['dispatchEvent'](new CustomEvent(_0x1af53a(0x22a),{'detail':this[_0x1af53a(0x2c7)]}));}catch(_0x103389){console['error'](_0x1af53a(0x24d),_0x103389);}},async 'removeIndex'(_0x48c54a){const _0x403732=_0x1c76f2,_0x44dfd=_0x48c54a||this[_0x403732(0x2ec)][_0x403732(0x2df)];if(_0x44dfd&&await _0x3b4491[_0x403732(0x20b)][_0x403732(0x2ad)]['modal']['confirm'](_0x403732(0x28e)+_0x44dfd+'\x22?')){try{const _0x485643=await fetch(this[_0x403732(0x2c5)]+_0x403732(0x2bc)+this[_0x403732(0x2c7)]+_0x403732(0x26e)+_0x44dfd,{'method':_0x403732(0x2a4)});if(!_0x485643['ok']){const _0x2d8be0=await _0x485643[_0x403732(0x2b9)]()[_0x403732(0x21e)](()=>({})),_0x3c6597=_0x2d8be0?.['error']?.[_0x403732(0x21b)];if(_0x403732(0x2e3)===_0x3c6597){const _0x2d2e0b=(_0x2d8be0?.[_0x403732(0x2d7)]?.[_0x403732(0x211)]?.[_0x403732(0x265)]??[])[_0x403732(0x2ca)](_0x3cb1f4=>_0x3cb1f4['kind']+':'+_0x3cb1f4[_0x403732(0x309)])[_0x403732(0x2ee)](',\x20');return void _0x3b4491[_0x403732(0x20b)]['shared']?.['toast']?.[_0x403732(0x2d7)]?.('Cannot\x20remove:\x20index\x20is\x20used\x20by\x20'+(_0x2d2e0b||'a\x20consumer'));}throw new Error(_0x2d8be0?.[_0x403732(0x2d7)]?.['message']??_0x403732(0x291));}}catch(_0x164103){return console[_0x403732(0x2d7)](_0x403732(0x2c9),_0x164103),void _0x3b4491[_0x403732(0x20b)]['shared']?.['toast']?.[_0x403732(0x2d7)]?.(_0x164103[_0x403732(0x2fc)]);}this[_0x403732(0x2ec)][_0x403732(0x2df)]===_0x44dfd&&(this['query'][_0x403732(0x2df)]=null),this['query'][_0x403732(0x2c0)](),await this[_0x403732(0x277)](!0x0),await this[_0x403732(0x2ec)][_0x403732(0x286)]();}},'selectIndex'(_0x119bdd){const _0x46f45f=_0x1c76f2;if(_0x46f45f(0x2c4)===_0x119bdd)return this[_0x46f45f(0x2ec)]['selectedIndex']=null,void this[_0x46f45f(0x212)]();_0x46f45f(0x2e2)!==_0x119bdd?(this['query'][_0x46f45f(0x2df)]=_0x119bdd||null,this[_0x46f45f(0x2ec)][_0x46f45f(0x2df)]&&(this[_0x46f45f(0x2ec)]['selectedFtsIndex']=null),this[_0x46f45f(0x2ec)][_0x46f45f(0x2df)]||(this['query'][_0x46f45f(0x2da)]=void 0x0,this[_0x46f45f(0x2ec)][_0x46f45f(0x27c)]=void 0x0,this[_0x46f45f(0x2ec)]['selectedIndexEnd']=void 0x0)):this[_0x46f45f(0x305)]();},'selectFtsIndex'(_0x392d99,_0x4ef42c){const _0x1e3b32=_0x1c76f2;if(_0x1e3b32(0x245)===_0x392d99)return _0x4ef42c&&(_0x4ef42c['target']['value']=this[_0x1e3b32(0x2ec)][_0x1e3b32(0x23f)]||''),void this[_0x1e3b32(0x2dc)]();'__drop_fts__'!==_0x392d99?(this['query'][_0x1e3b32(0x23f)]=_0x392d99||null,this[_0x1e3b32(0x2ec)]['selectedFtsIndex']&&(this[_0x1e3b32(0x2ec)][_0x1e3b32(0x2df)]=null,this['query'][_0x1e3b32(0x2da)]=void 0x0,this['query'][_0x1e3b32(0x27c)]=void 0x0,this[_0x1e3b32(0x2ec)][_0x1e3b32(0x217)]=void 0x0)):this[_0x1e3b32(0x26b)]();},async 'openCreateFtsModal'(){const _0x3d430b=_0x1c76f2;let _0x565dfe={};try{const _0x103e3d=await fetch(this[_0x3d430b(0x2c5)]+_0x3d430b(0x2bc)+this['type']+_0x3d430b(0x21a)),_0x1cf32f=await _0x103e3d[_0x3d430b(0x2b9)]();_0x565dfe=(_0x1cf32f['data']??_0x1cf32f[_0x3d430b(0x225)])?.[_0x3d430b(0x210)]??{};}catch{const _0x521229=(_0x3b4491[_0x3d430b(0x20b)][_0x3d430b(0x299)][_0x3d430b(0x238)][_0x3d430b(0x23b)]||[])['find'](_0x4c8cda=>_0x4c8cda['type']===this[_0x3d430b(0x2c7)]);for(const _0x9912e7 of Object['keys'](_0x521229?.[_0x3d430b(0x1f5)]||{}))_0x565dfe[_0x9912e7]=_0x521229['fields'][_0x9912e7];}await _0x3b4491[_0x3d430b(0x20b)][_0x3d430b(0x2ad)]['modal']['open']({'owner':_0x3b4491,'title':_0x3d430b(0x271),'content':_0x3d430b(0x221),'context':_0x4f896e=>({'modal':_0x4f896e,'type':this[_0x3d430b(0x2c7)],'apiBase':this[_0x3d430b(0x2c5)],'deepPaths':_0x565dfe,'onDone':async()=>{const _0x1f1afa=_0x3d430b;await this[_0x1f1afa(0x2b8)](!0x0);}})});},async 'dropFtsIndex'(_0x346ac2){const _0x24e3ab=_0x1c76f2,_0x24151b=_0x346ac2||this[_0x24e3ab(0x2ec)][_0x24e3ab(0x23f)];if(_0x24151b&&await _0x3b4491[_0x24e3ab(0x20b)][_0x24e3ab(0x2ad)][_0x24e3ab(0x23d)][_0x24e3ab(0x2c6)](_0x24e3ab(0x20f)+_0x24151b+'\x22?\x20This\x20cannot\x20be\x20undone.')){try{await fetch(this['envApiBase']+_0x24e3ab(0x2bc)+this[_0x24e3ab(0x2c7)]+_0x24e3ab(0x306)+encodeURIComponent(_0x24151b),{'method':_0x24e3ab(0x2a4)});}catch(_0xd3df37){return console[_0x24e3ab(0x2d7)](_0x24e3ab(0x236),_0xd3df37),void _0x3b4491[_0x24e3ab(0x20b)][_0x24e3ab(0x2ad)]?.[_0x24e3ab(0x2ef)]?.[_0x24e3ab(0x2d7)]?.(_0x24e3ab(0x241));}this[_0x24e3ab(0x2ec)]['selectedFtsIndex']===_0x24151b&&(this[_0x24e3ab(0x2ec)][_0x24e3ab(0x23f)]=null),await this['loadFtsIndexes'](!0x0),await this[_0x24e3ab(0x2ec)][_0x24e3ab(0x286)]();}},async 'rebuildIndex'(_0x590260){const _0xd96566=_0x1c76f2;if(_0x590260&&await _0x3b4491[_0xd96566(0x20b)][_0xd96566(0x2ad)]['modal'][_0xd96566(0x2c6)]('Rebuild\x20index\x20\x22'+_0x590260+_0xd96566(0x297)))try{await fetch(this[_0xd96566(0x2c5)]+_0xd96566(0x2bc)+this['type']+'/index/'+encodeURIComponent(_0x590260)+_0xd96566(0x2cb),{'method':_0xd96566(0x303)}),_0x3b4491['$ok'][_0xd96566(0x2ad)]?.[_0xd96566(0x2ef)]?.[_0xd96566(0x2b6)]?.(_0xd96566(0x24b)+_0x590260+'\x22…'),await this['loadIndexes'](!0x0);}catch(_0x6747c0){console[_0xd96566(0x2d7)](_0xd96566(0x28f),_0x6747c0),_0x3b4491[_0xd96566(0x20b)]['shared']?.[_0xd96566(0x2ef)]?.['error']?.(_0xd96566(0x290));}},async 'rebuildFts'(_0x28370a){const _0x4a8dc4=_0x1c76f2,_0x56ed8d=_0x28370a||this[_0x4a8dc4(0x2ec)][_0x4a8dc4(0x23f)];if(_0x56ed8d&&await _0x3b4491[_0x4a8dc4(0x20b)]['shared'][_0x4a8dc4(0x23d)]['confirm'](_0x4a8dc4(0x2b3)+_0x56ed8d+_0x4a8dc4(0x249)))try{await fetch(this[_0x4a8dc4(0x2c5)]+_0x4a8dc4(0x2bc)+this['type']+_0x4a8dc4(0x306)+encodeURIComponent(_0x56ed8d)+'/reset',{'method':_0x4a8dc4(0x303)}),_0x3b4491[_0x4a8dc4(0x20b)][_0x4a8dc4(0x2ad)]?.[_0x4a8dc4(0x2ef)]?.[_0x4a8dc4(0x2b6)]?.(_0x4a8dc4(0x269)+_0x56ed8d+'\x22…'),await this[_0x4a8dc4(0x2b8)](!0x0);}catch(_0x54416e){console[_0x4a8dc4(0x2d7)](_0x4a8dc4(0x294),_0x54416e),_0x3b4491[_0x4a8dc4(0x20b)][_0x4a8dc4(0x2ad)]?.[_0x4a8dc4(0x2ef)]?.[_0x4a8dc4(0x2d7)]?.(_0x4a8dc4(0x290));}},'onGeoTableSelect'(_0x19555a){const _0x6132d9=_0x1c76f2;if(_0x6132d9(0x2ae)!==this[_0x6132d9(0x22c)])return;this[_0x6132d9(0x2cc)]=_0x6132d9(0x242);const _0x32616d=_0x19555a['detail']?.[_0x6132d9(0x289)];this[_0x6132d9(0x28c)]=_0x6132d9(0x278)===_0x32616d?null:_0x19555a[_0x6132d9(0x213)]?.[_0x6132d9(0x202)]?.['__key']??null;},'onGeoMapSelect'(_0x3299c0){const _0x5b74b7=_0x1c76f2,_0x5404ad=_0x3299c0[_0x5b74b7(0x213)]?.[_0x5b74b7(0x1f4)]??null;this['_geoSelSource']=_0x5b74b7(0x2ca),this[_0x5b74b7(0x28c)]=this['geoHighlightedKey']===_0x5404ad?null:_0x5404ad;}};},'_unsubs':[],async 'init'(_0x335a66){const _0x18c70b=_0x2e63d4;if(_0x335a66['$watch'](()=>this[_0x18c70b(0x2c7)],async()=>{const _0xf8eae3=_0x18c70b;this[_0xf8eae3(0x2ec)]['type']=this[_0xf8eae3(0x2c7)],this[_0xf8eae3(0x2ec)][_0xf8eae3(0x23f)]=null,this[_0xf8eae3(0x2ec)]['selectedVectorEngine']=null,this[_0xf8eae3(0x22c)]='scan',this[_0xf8eae3(0x2ec)][_0xf8eae3(0x2c0)](),await this[_0xf8eae3(0x277)](!0x0),await this[_0xf8eae3(0x2b8)](!0x0),await this['loadVectorEngines'](!0x0),await this['loadTypeEnginesCount'](),await this['loadViolations'](),await this[_0xf8eae3(0x2ec)][_0xf8eae3(0x286)]();}),_0x335a66['$watch'](()=>[this[_0x18c70b(0x2ec)]['query'],this['query']['selectedIndex'],this['query'][_0x18c70b(0x27c)],this[_0x18c70b(0x2ec)][_0x18c70b(0x217)],this[_0x18c70b(0x2ec)][_0x18c70b(0x262)],this[_0x18c70b(0x2ec)][_0x18c70b(0x223)],this[_0x18c70b(0x2ec)][_0x18c70b(0x2da)],this[_0x18c70b(0x2ec)][_0x18c70b(0x23f)],this[_0x18c70b(0x2ec)][_0x18c70b(0x2db)],this[_0x18c70b(0x2ec)][_0x18c70b(0x25a)],this[_0x18c70b(0x2ec)]['ftsPrefix'],this['query'][_0x18c70b(0x2f9)],this[_0x18c70b(0x2ec)]['vectorText'],this['query']['vectorLimit']],async()=>{const _0x510b5b=_0x18c70b;this[_0x510b5b(0x2c7)]&&(this[_0x510b5b(0x2ec)][_0x510b5b(0x2c0)](),await this[_0x510b5b(0x2ec)][_0x510b5b(0x286)]());}),_0x335a66[_0x18c70b(0x2e4)](()=>[this['searchMode'],this[_0x18c70b(0x1f0)],this[_0x18c70b(0x2fe)],this[_0x18c70b(0x21f)],this[_0x18c70b(0x27e)],this[_0x18c70b(0x220)],this[_0x18c70b(0x2ec)][_0x18c70b(0x2ec)]],async()=>{const _0x26a9c4=_0x18c70b;'geo'===this[_0x26a9c4(0x22c)]&&this[_0x26a9c4(0x2c7)]&&this[_0x26a9c4(0x1f0)]&&this[_0x26a9c4(0x2fe)]&&this[_0x26a9c4(0x21f)]&&await this[_0x26a9c4(0x2e8)]();}),this['type']){const _0x27bef8=new Set([_0x18c70b(0x2d8),_0x18c70b(0x2ed),_0x18c70b(0x2f8),_0x18c70b(0x279),_0x18c70b(0x2fa),_0x18c70b(0x251)]),_0x13a53e=_0x335a66['$vars'][_0x18c70b(0x1ff)]?.[_0x18c70b(0x25f)]?.['tab'];_0x13a53e&&_0x27bef8[_0x18c70b(0x227)](_0x13a53e)&&(this['tab']=_0x18c70b(0x2fa)===_0x13a53e?_0x18c70b(0x251):_0x13a53e),await Promise[_0x18c70b(0x2fd)]([this[_0x18c70b(0x277)](),this[_0x18c70b(0x2b8)](),this[_0x18c70b(0x233)](),this['loadTypeEnginesCount'](),this[_0x18c70b(0x258)](),this[_0x18c70b(0x240)](),this[_0x18c70b(0x2b2)](),this['query'][_0x18c70b(0x286)]()]);}this[_0x18c70b(0x209)]=[_0x12a3df['on'](_0x18c70b(0x21d),()=>{const _0x364e2c=_0x18c70b;this[_0x364e2c(0x277)](!0x0),this[_0x364e2c(0x2b8)](!0x0);}),_0x12a3df['on'](_0x18c70b(0x2d1),_0x4b032a=>{const _0x4ab541=_0x18c70b;this[_0x4ab541(0x277)](!0x0),this[_0x4ab541(0x2b8)](!0x0);const _0x1c6c89=_0x4b032a?.[_0x4ab541(0x2c7)];if(!_0x1c6c89||_0x1c6c89===this[_0x4ab541(0x2c7)]){const _0x4e0b59=_0x4b032a?.[_0x4ab541(0x256)],_0x53792a=Array[_0x4ab541(0x2af)](_0x4e0b59)&&_0x4ab541(0x1f8)===_0x4e0b59[0x0],_0xfee97f=_0x53792a?_0x4e0b59[0x1]:_0x4ab541(0x248)==typeof _0x4e0b59?_0x4e0b59:'',_0x5964c6=_0x53792a?'FTS\x20index\x20ready:\x20'+_0xfee97f:_0xfee97f?_0x4ab541(0x1fc)+_0xfee97f:_0x4ab541(0x1f1);_0x335a66[_0x4ab541(0x20b)][_0x4ab541(0x2ad)]?.[_0x4ab541(0x2ef)]?.['success']?.(_0x5964c6);}}),_0x12a3df['on'](_0x18c70b(0x2a5),()=>this['loadIndexes'](!0x0)),_0x12a3df['on'](_0x18c70b(0x2d2),()=>this['loadIndexes'](!0x0)),_0x12a3df['on'](_0x18c70b(0x30a),()=>this['loadFtsIndexes'](!0x0)),_0x12a3df['on']('fts:drop',()=>this[_0x18c70b(0x2b8)](!0x0)),_0x12a3df['on'](_0x18c70b(0x25b),()=>this[_0x18c70b(0x233)](!0x0)),_0x12a3df['on']('engine:stopped',()=>this['loadVectorEngines'](!0x0)),_0x12a3df['on'](_0x18c70b(0x285),()=>this[_0x18c70b(0x233)](!0x0)),_0x12a3df['on'](_0x18c70b(0x276),()=>this[_0x18c70b(0x233)](!0x0)),_0x12a3df['on'](_0x18c70b(0x29d),()=>this[_0x18c70b(0x233)](!0x0)),_0x12a3df['on'](_0x18c70b(0x25b),()=>this[_0x18c70b(0x237)]()),_0x12a3df['on'](_0x18c70b(0x2cd),()=>this['loadTypeEnginesCount']()),_0x12a3df['on'](_0x18c70b(0x285),()=>this[_0x18c70b(0x237)]()),_0x12a3df['on']('engine:installed',()=>this[_0x18c70b(0x237)]()),_0x12a3df['on'](_0x18c70b(0x29d),()=>this[_0x18c70b(0x237)]()),_0x12a3df['on'](_0x18c70b(0x201),()=>this[_0x18c70b(0x233)](!0x0)),_0x12a3df['on'](_0x18c70b(0x201),()=>this[_0x18c70b(0x237)]())];const _0x2b560c=new Set([_0x18c70b(0x2d8),_0x18c70b(0x2ed),_0x18c70b(0x2f8),_0x18c70b(0x279),_0x18c70b(0x2fa),'engines']);_0x335a66[_0x18c70b(0x2e4)](()=>_0x335a66['$vars'][_0x18c70b(0x1ff)]?.[_0x18c70b(0x2a9)]?.[_0x18c70b(0x1fb)],()=>{const _0x36bd43=_0x18c70b,_0x493c68=_0x335a66['$vars'][_0x36bd43(0x1ff)]?.[_0x36bd43(0x2a9)]?.[_0x36bd43(0x1fb)];if(!_0x493c68)return;const _0x1a99c8=_0x2b560c[_0x36bd43(0x227)](_0x493c68)?'pipelines'===_0x493c68?_0x36bd43(0x251):_0x493c68:_0x36bd43(0x2d8);this['tab']!==_0x1a99c8&&(this[_0x36bd43(0x1fb)]=_0x1a99c8);}),_0x335a66[_0x18c70b(0x2e4)](()=>this['geoHighlightedKey'],_0x1cf1f5=>{const _0x5783d8=_0x18c70b,_0x38a7dc=this['_geoSelSource'];if(this[_0x5783d8(0x2cc)]=null,_0x5783d8(0x2ae)!==this[_0x5783d8(0x22c)])return;if('table'===_0x38a7dc)return;const _0x25ac7f=_0x335a66[_0x5783d8(0x292)]?.[_0x5783d8(0x232)](_0x5783d8(0x274));if(!_0x25ac7f)return;if(!_0x1cf1f5)return _0x25ac7f[_0x5783d8(0x231)]?.(),void _0x25ac7f[_0x5783d8(0x288)]?.();const _0x1b3825=this[_0x5783d8(0x308)]?.[_0x5783d8(0x2ce)](_0x14cd23=>this[_0x5783d8(0x2d9)](_0x14cd23)===_0x1cf1f5);_0x1b3825?(_0x25ac7f[_0x5783d8(0x27f)]?.(_0x1b3825),_0x25ac7f['clearExpanded']?.(),_0x25ac7f[_0x5783d8(0x2bf)]?.(_0x1b3825)):(_0x25ac7f[_0x5783d8(0x231)]?.(),_0x25ac7f[_0x5783d8(0x288)]?.());});},'unmount'(){const _0x4957ee=_0x2e63d4;for(const _0xcee0a7 of this[_0x4957ee(0x209)])_0xcee0a7();this[_0x4957ee(0x209)]=[];},'template':_0x2e63d4(0x252),'style':_0x2e63d4(0x1ef)};
|
|
1
|
+
function _0x2375(){const _0x13150b=['loadFtsIndexes','/ttl/default','queryMode','selectedEnv','selectedDirection','keyOf','loadTTLStats','\x0a<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:0;\x20height:100%;\x22>\x0a\x0a\x20\x20<!--\x20Tab\x20bar\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:2px;\x20border-bottom:1px\x20solid\x20var(--okdb-app-border);\x20margin-bottom:12px;\x20flex-shrink:0;\x22>\x0a\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20@click=\x22setTab(\x27data\x27)\x22\x0a\x20\x20\x20\x20\x20\x20:style=\x22tab===\x27data\x27\x20?\x20\x27border-color:var(--okdb-accent);\x20color:var(--okdb-accent);\x20background:color-mix(in\x20srgb,\x20var(--okdb-accent)\x207%,\x20transparent);\x20border-bottom-color:transparent;\x27\x20:\x20\x27border-color:transparent;\x20background:transparent;\x27\x22\x0a\x20\x20\x20\x20\x20\x20style=\x22padding:6px\x2016px;\x20border-radius:6px\x206px\x200\x200;\x20font-size:13px;\x20cursor:pointer;\x22>\x0a\x20\x20\x20\x20\x20\x20Data\x0a\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20@click=\x22setTab(\x27changelog\x27)\x22\x0a\x20\x20\x20\x20\x20\x20:style=\x22tab===\x27changelog\x27\x20?\x20\x27border-color:var(--okdb-accent);\x20color:var(--okdb-accent);\x20background:color-mix(in\x20srgb,\x20var(--okdb-accent)\x207%,\x20transparent);\x20border-bottom-color:transparent;\x27\x20:\x20\x27border-color:transparent;\x20background:transparent;\x27\x22\x0a\x20\x20\x20\x20\x20\x20style=\x22padding:6px\x2016px;\x20border-radius:6px\x206px\x200\x200;\x20font-size:13px;\x20cursor:pointer;\x22>\x0a\x20\x20\x20\x20\x20\x20Changelog\x0a\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20@click=\x22setTab(\x27manage\x27)\x22\x0a\x20\x20\x20\x20\x20\x20:style=\x22tab===\x27manage\x27\x20?\x20\x27border-color:var(--okdb-accent);\x20color:var(--okdb-accent);\x20background:color-mix(in\x20srgb,\x20var(--okdb-accent)\x207%,\x20transparent);\x20border-bottom-color:transparent;\x27\x20:\x20\x27border-color:transparent;\x20background:transparent;\x27\x22\x0a\x20\x20\x20\x20\x20\x20style=\x22padding:6px\x2016px;\x20border-radius:6px\x206px\x200\x200;\x20font-size:13px;\x20cursor:pointer;\x22>\x0a\x20\x20\x20\x20\x20\x20Manage\x0a\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20@click=\x22setTab(\x27schema\x27)\x22\x0a\x20\x20\x20\x20\x20\x20:style=\x22tab===\x27schema\x27\x20?\x20(\x27border-color:\x27\x20+\x20(violationCount\x20>\x200\x20?\x20\x27var(--okdb-danger)\x27\x20:\x20\x27var(--okdb-success)\x27)\x20+\x20\x27;\x20color:\x27\x20+\x20(violationCount\x20>\x200\x20?\x20\x27var(--okdb-danger)\x27\x20:\x20\x27var(--okdb-success)\x27)\x20+\x20\x27;\x20background:\x27\x20+\x20(violationCount\x20>\x200\x20?\x20\x27#f8717111\x27\x20:\x20\x27color-mix(in\x20srgb,\x20var(--okdb-success)\x207%,\x20transparent)\x27)\x20+\x20\x27;\x20border-bottom-color:transparent;\x27)\x20:\x20(violationCount\x20>\x200\x20?\x20\x27border-color:transparent;\x20background:transparent;\x20color:var(--okdb-danger);\x27\x20:\x20\x27border-color:transparent;\x20background:transparent;\x27)\x22\x0a\x20\x20\x20\x20\x20\x20style=\x22padding:6px\x2016px;\x20border-radius:6px\x206px\x200\x200;\x20font-size:13px;\x20cursor:pointer;\x22>\x0a\x20\x20\x20\x20\x20\x20Schema<if\x20:=\x22violationCount\x20>\x200\x22><span\x20style=\x22margin-left:6px;\x20font-size:10px;\x20padding:2px\x207px;\x20border-radius:999px;\x20background:color-mix(in\x20srgb,\x20var(--okdb-danger)\x2013%,\x20transparent);\x20color:var(--okdb-danger);\x20font-weight:600;\x22>{{\x20violationCount\x20}}</span></if>\x0a\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20@click=\x22switchToEngines()\x22\x0a\x20\x20\x20\x20\x20\x20:style=\x22tab===\x27engines\x27\x20?\x20\x27border-color:var(--okdb-purple);\x20color:var(--okdb-purple);\x20background:color-mix(in\x20srgb,\x20var(--okdb-purple)\x207%,\x20transparent);\x20border-bottom-color:transparent;\x27\x20:\x20\x27border-color:transparent;\x20background:transparent;\x27\x22\x0a\x20\x20\x20\x20\x20\x20style=\x22padding:6px\x2016px;\x20border-radius:6px\x206px\x200\x200;\x20font-size:13px;\x20cursor:pointer;\x22>\x0a\x20\x20\x20\x20\x20\x20Engines<if\x20:=\x22typeEngineCount\x20>\x200\x22><span\x20class=\x22mode-count\x22>{{\x20typeEngineCount\x20}}</span></if>\x0a\x20\x20\x20\x20</button>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Data\x20tab\x20-->\x0a\x20\x20<if\x20:=\x22tab\x20===\x20\x27data\x27\x22>\x0a\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:16px;\x20flex:1;\x20min-height:0;\x22>\x0a\x0a\x20\x20<div\x20class=\x22card\x22\x20style=\x22display:flex;\x20gap:16px;\x22>\x0a\x0a\x20\x20\x20\x20<!--\x20──\x20Left\x20column:\x20query\x20controls\x20──\x20-->\x0a\x20\x20\x20\x20<div\x20style=\x22flex:1;\x20display:flex;\x20flex-direction:column;\x20gap:10px;\x20min-width:0;\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20Row\x201:\x20filter\x20label\x20+\x20accordion\x20+\x20JSON\x20input\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:6px;\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Label\x20row\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20color:#6a8a9a;\x20user-select:none;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20searchMode\x20===\x20\x27vector\x27\x20?\x20\x27Post-filter\x20vector\x20results\x20with\x20sift\x27\x20:\x20searchMode\x20===\x20\x27fts\x27\x20?\x20\x27Post-filter\x20FTS\x20results\x20with\x20sift\x27\x20:\x20searchMode\x20===\x20\x27geo\x27\x20?\x20\x27Post-filter\x20geo\x20results\x20with\x20sift\x27\x20:\x20\x27Filter\x20with\x20sift\x20query\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22help-toggle\x22\x20@click=\x22helpOpen\x20=\x20!helpOpen\x22\x20:class=\x22helpOpen\x20?\x20\x27help-toggle--open\x27\x20:\x20\x27\x27\x22>i</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Accordion:\x20query\x20reference\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22helpOpen\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22help-accordion\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ht-row\x22><code>{}</code><span>match\x20all\x20records</span></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ht-row\x22><code>{\x22field\x22:\x20\x22value\x22}</code><span>exact\x20match</span></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ht-row\x22><code>{\x22n\x22:\x20{\x22$gt\x22:\x205,\x20\x22$lt\x22:\x2050}}</code><span>numeric\x20comparison</span></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ht-row\x22><code>{\x22x\x22:\x20{\x22$in\x22:\x20[\x22a\x22,\x22b\x22]}}</code><span>set\x20membership</span></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ht-row\x22><code>{\x22x\x22:\x20{\x22$exists\x22:\x20true}}</code><span>field\x20presence</span></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ht-row\x20ht-row--note\x22>Nested\x20fields\x20use\x20dot\x20notation:\x20<code>\x22a.b\x22</code></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<ok-json-input\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22query.query\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@change=\x22query.query\x20=\x20$event.detail\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:schema=\x22siftSchema\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22min-width:220px;\x20min-height:60px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</ok-json-input>\x0a\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20Mode\x20bar:\x20Scan\x20/\x20Index\x20/\x20FTS\x20/\x20Vector\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:4px;\x20align-items:center;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22seg-toggle\x22\x20style=\x22flex-shrink:0;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22searchMode\x20===\x20\x27scan\x27\x20\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22setSearchMode(\x27scan\x27)\x22>Scan</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22searchMode\x20===\x20\x27index\x27\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22setSearchMode(\x27index\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Index<if\x20:=\x22possibleIndexes.length\x20>\x200\x22><span\x20class=\x22mode-count\x22>{{\x20possibleIndexes.length\x20}}</span></if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22searchMode\x20===\x20\x27fts\x27\x20\x20\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22setSearchMode(\x27fts\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20FTS<if\x20:=\x22ftsList.length\x20>\x200\x22><span\x20class=\x22mode-count\x22>{{\x20ftsList.length\x20}}</span></if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22searchMode\x20===\x20\x27vector\x27\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22setSearchMode(\x27vector\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Vector<if\x20:=\x22vectorEngines.length\x20>\x200\x22><span\x20class=\x22mode-count\x22>{{\x20vectorEngines.length\x20}}</span></if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22searchMode\x20===\x20\x27geo\x27\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22setSearchMode(\x27geo\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Geo<if\x20:=\x22geoIndexes.length\x20>\x200\x22><span\x20class=\x22mode-count\x22>{{\x20geoIndexes.length\x20}}</span></if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20──\x20Scan\x20panel\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27scan\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22query.selectedDirection\x20=\x20query.selectedDirection\x20===\x20\x27desc\x27\x20?\x20\x27asc\x27\x20:\x20\x27desc\x27\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22min-width:78px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Toggle\x20key\x20scan\x20direction\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20query.selectedDirection\x20===\x20\x27desc\x27\x20?\x20\x27↓\x20Desc\x27\x20:\x20\x27↑\x20Asc\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.4;\x20user-select:none;\x22>Full\x20key-ordered\x20scan\x20·\x20sift\x20applied\x20as\x20filter</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20──\x20Index\x20panel\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27index\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:8px;\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20@change=\x22selectIndex($event.target.value)\x22\x20style=\x22min-width:160px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22\x22>—\x20none\x20—</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22possibleIndexes\x22\x20let:item=\x22idx\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20:value=\x22idx\x22\x20:selected=\x22query.selectedIndex\x20===\x20idx\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20idx\x20}}{{\x20indexStatuses[idx]?.unique\x20?\x20\x27\x20◆\x27\x20:\x20\x27\x27\x20}}{{\x20indexStatusBadge(idx)\x20?\x20\x27\x20⚠\x20\x27\x20+\x20indexStatusBadge(idx)\x20:\x20\x27\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22__create_index__\x22\x20style=\x22color:var(--okdb-accent);\x22>+\x20Create\x20index…</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedIndex\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22__remove_index__\x22\x20style=\x22color:var(--okdb-danger);\x22>×\x20Remove\x20\x22{{\x20query.selectedIndex\x20}}\x22</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22query.selectedDirection\x20=\x20query.selectedDirection\x20===\x20\x27desc\x27\x20?\x20\x27asc\x27\x20:\x20\x27desc\x27\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22min-width:78px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Toggle\x20sort\x20direction\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20query.selectedDirection\x20===\x20\x27desc\x27\x20?\x20\x27↓\x20Desc\x27\x20:\x20\x27↑\x20Asc\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedIndex\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22seg-toggle\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22query.queryMode\x20===\x20\x27prefix\x27\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22query.queryMode\x20=\x20\x27prefix\x27,\x20query.selectedIndexStart\x20=\x20undefined,\x20query.selectedIndexEnd\x20=\x20undefined\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Prefix\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22query.queryMode\x20===\x20\x27range\x27\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22query.queryMode\x20=\x20\x27range\x27,\x20query.selectedPrefix\x20=\x20undefined\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Range\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20──\x20Index\x20detail\x20strip\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedIndex\x20&&\x20selectedIndexInfo\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22idx-info-strip\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22idx-info-label\x22>Fields:</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22selectedIndexInfo.fields\x22\x20let:item=\x22f\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<code\x20class=\x22idx-info-field\x22>{{\x20f\x20}}</code>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22selectedIndexInfo.isUnique\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22idx-info-badge\x20idx-info-badge--unique\x22>◆\x20unique</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22selectedIndexInfo.isGeo\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22idx-info-badge\x20idx-info-badge--geo\x22>◎\x20geo\x20·\x20precision\x20{{\x20selectedIndexInfo.geoPrecision\x20??\x207\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!selectedIndexInfo.isUnique\x20&&\x20!selectedIndexInfo.isGeo\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22idx-info-badge\x20idx-info-badge--regular\x22>regular</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedIndex\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.queryMode\x20===\x20\x27prefix\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.6;\x20font-size:12px;\x22>Prefix:</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-json-input\x20mode=\x22input\x22\x20:value=\x22query.selectedPrefix\x22\x20@change=\x22query.selectedPrefix\x20=\x20$event.detail\x22\x20style=\x22width:220px;\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.35;\x20font-size:11px;\x22>scalar\x20or\x20array\x20for\x20composite\x20indexes</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.queryMode\x20===\x20\x27range\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.6;\x20font-size:12px;\x22>Start:</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-json-input\x20mode=\x22input\x22\x20:value=\x22query.selectedIndexStart\x22\x20@change=\x22query.selectedIndexStart\x20=\x20$event.detail\x22\x20style=\x22width:180px;\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.6;\x20font-size:12px;\x22>End:</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-json-input\x20mode=\x22input\x22\x20:value=\x22query.selectedIndexEnd\x22\x20@change=\x22query.selectedIndexEnd\x20=\x20$event.detail\x22\x20style=\x22width:180px;\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20──\x20FTS\x20panel\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27fts\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x20flex-wrap:wrap;\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20@change=\x22selectFtsIndex($event.target.value,\x20$event)\x22\x20style=\x22min-width:160px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22\x22>—\x20none\x20—</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22ftsList\x22\x20let:item=\x22fts\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20:value=\x22fts.name\x22\x20:selected=\x22query.selectedFtsIndex\x20===\x20fts.name\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20fts.name\x20}}{{\x20ftsStatusBadge(fts)\x20?\x20\x27\x20⚠\x20\x27\x20+\x20ftsStatusBadge(fts)\x20:\x20\x27\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22__create_fts__\x22\x20style=\x22color:var(--okdb-accent);\x22>+\x20Create\x20FTS\x20index…</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedFtsIndex\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22__drop_fts__\x22\x20style=\x22color:var(--okdb-danger);\x22>×\x20Drop\x20\x22{{\x20query.selectedFtsIndex\x20}}\x22</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedFtsIndex\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type=\x22text\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20placeholder=\x22Search…\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22query.ftsText\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input=\x22query.ftsText\x20=\x20$event.target.value\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22flex:1;\x20min-width:140px;\x20max-width:300px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22seg-toggle\x22\x20title=\x22AND:\x20all\x20terms\x20required\x20·\x20OR:\x20any\x20term\x20matches,\x20ranked\x20by\x20hit\x20count\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22query.ftsMode\x20===\x20\x27and\x27\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22query.ftsMode\x20=\x20\x27and\x27\x22>AND</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22query.ftsMode\x20===\x20\x27or\x27\x20\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22query.ftsMode\x20=\x20\x27or\x27\x22>OR</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20style=\x22font-size:12px;\x20display:flex;\x20align-items:center;\x20gap:4px;\x20cursor:pointer;\x20white-space:nowrap;\x20user-select:none;\x22\x20title=\x22Prefix:\x20\x27sta\x27\x20matches\x20\x27start\x27,\x20\x27stack\x27,\x20etc.\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20:checked=\x22query.ftsPrefix\x22\x20@change=\x22query.ftsPrefix\x20=\x20$event.target.checked\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Prefix\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20──\x20Vector\x20panel\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27vector\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22vectorEngines.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.7;\x20display:flex;\x20align-items:center;\x20gap:8px;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22cpu\x22\x20style=\x22width:13px;height:13px;opacity:.5;\x22></ok-icon>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>No\x20vector\x20search\x20engines\x20for\x20<b>{{\x20type\x20}}</b>\x20yet.</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22openEnginesCreatePipeline()\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:2px\x2010px;\x20border-radius:999px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-indigo)\x2033%,\x20transparent);\x20color:var(--okdb-indigo);\x20background:color-mix(in\x20srgb,\x20var(--okdb-indigo)\x206%,\x20transparent);\x20cursor:pointer;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>⛓\x20Create\x20Pipeline…</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22vectorEngines.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x20flex-wrap:wrap;\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20@change=\x22selectVectorEngine($event.target.value,\x20$event)\x22\x20style=\x22min-width:160px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22\x22>—\x20none\x20—</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22vectorEngines\x22\x20let:item=\x22ve\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20:value=\x22displayVectorName(ve.name)\x22\x20:selected=\x22query.selectedVectorEngine\x20===\x20displayVectorName(ve.name)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20displayVectorName(ve.name)\x20}}{{\x20ve.isRunning\x20?\x20\x27\x27\x20:\x20\x27\x20(stopped)\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22__create_pipeline__\x22\x20style=\x22color:var(--okdb-indigo);\x22>+\x20Create\x20pipeline…</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedVectorEngine\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type=\x22text\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20placeholder=\x22Semantic\x20query…\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22query.vectorText\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input:debounce.500=\x22query.vectorText\x20=\x20$event.target.value\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22flex:1;\x20min-width:160px;\x20max-width:340px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.55;\x20white-space:nowrap;\x20user-select:none;\x22>top</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type=\x22number\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22query.vectorLimit\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@change=\x22query.vectorLimit\x20=\x20Math.max(1,\x20Math.min(200,\x20Number($event.target.value)\x20||\x2020))\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20min=\x221\x22\x20max=\x22200\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22width:56px;\x20text-align:center;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Max\x20results\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Pipeline\x20badge\x20—\x20clickable,\x20navigates\x20to\x20local\x20Engines\x20tab\x20in\x20pipeline\x20mode\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22selectedVectorEngineMeta\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22selectedVectorEngineMeta.meta\x20&&\x20selectedVectorEngineMeta.meta.pipeline\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22openEnginesPipeline(selectedVectorEngineMeta.meta.pipeline)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:2px\x209px;\x20border-radius:999px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-indigo)\x2033%,\x20transparent);\x20color:var(--okdb-indigo);\x20background:color-mix(in\x20srgb,\x20var(--okdb-indigo)\x206%,\x20transparent);\x20cursor:pointer;\x20white-space:nowrap;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22\x27Open\x20the\x20type\x20pipeline\x20view\x20focused\x20on:\x20\x27\x20+\x20selectedVectorEngineMeta.meta.pipeline\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>⛓\x20{{\x20selectedVectorEngineMeta.meta.pipeline\x20}}\x20→</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Link\x20to\x20local\x20type\x20engines\x20workspace\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22openTypePipelinesForSelectedVector()\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:2px\x209px;\x20border-radius:999px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-indigo)\x2020%,\x20transparent);\x20color:color-mix(in\x20srgb,\x20var(--okdb-indigo)\x2060%,\x20transparent);\x20background:transparent;\x20cursor:pointer;\x20white-space:nowrap;\x20margin-left:auto;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Open\x20the\x20type-scoped\x20engines\x20view\x20for\x20this\x20vector\x20search\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>⛓\x20Type\x20Engines\x20→</button>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20──\x20Geo\x20panel\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27geo\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22geoIndexes.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.7;\x20display:flex;\x20align-items:center;\x20gap:8px;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>◎</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>No\x20geo\x20indexes\x20for\x20<b>{{\x20type\x20}}</b>\x20yet.\x20Create\x20one\x20from\x20the\x20Manage\x20tab.</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22geoIndexes.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:8px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20@change=\x22geoField\x20=\x20$event.target.value\x22\x20style=\x22min-width:140px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22geoIndexes\x22\x20let:item=\x22gf\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20:value=\x22gf\x22\x20:selected=\x22geoField\x20===\x20gf\x22>{{\x20gf\x20}}</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.5;\x22>Lat</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type=\x22number\x22\x20step=\x22any\x22\x20placeholder=\x2240.7484\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22geoLat\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input:debounce.100=\x22geoLat\x20=\x20$event.target.value\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22width:110px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.5;\x22>Lon</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type=\x22number\x22\x20step=\x22any\x22\x20placeholder=\x22-73.9856\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22geoLon\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input:debounce.100=\x22geoLon\x20=\x20$event.target.value\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22width:110px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.5;\x22>Radius\x20(m)</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type=\x22number\x22\x20step=\x22any\x22\x20placeholder=\x22∞\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22geoRadius\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input:debounce.100=\x22geoRadius\x20=\x20$event.target.value\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22width:90px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Leave\x20empty\x20for\x20unlimited\x20radius\x20(sorted\x20by\x20distance)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22geoSortAsc\x20=\x20!geoSortAsc\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22min-width:78px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Toggle\x20sort\x20direction\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20geoSortAsc\x20?\x20\x27↑\x20Nearest\x27\x20:\x20\x27↓\x20Farthest\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.35;\x20user-select:none;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Results\x20sorted\x20by\x20distance\x20·\x20sift\x20filter\x20applied\x20as\x20post-filter\x20·\x20leave\x20radius\x20empty\x20for\x20no\x20cutoff\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20──\x20Geo\x20view\x20toggle\x20(only\x20in\x20geo\x20mode)\x20──\x20-->\x0a\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27geo\x27\x20&&\x20geoIndexes.length\x20>\x200\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:4px;\x20flex-shrink:0;\x20padding:2px\x200;\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22seg-toggle\x22\x20style=\x22flex-shrink:0;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22geoViewMode\x20===\x20\x27table\x27\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22geoViewMode\x20=\x20\x27table\x27\x22\x20title=\x22Table\x20only\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22table-2\x22\x20style=\x22width:13px;height:13px;vertical-align:middle;\x22></ok-icon>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22geoViewMode\x20===\x20\x27map\x27\x20\x20\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22geoViewMode\x20=\x20\x27map\x27\x22\x20\x20\x20title=\x22Map\x20only\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22map-pin\x22\x20style=\x22width:13px;height:13px;vertical-align:middle;\x22></ok-icon>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20:class=\x22geoViewMode\x20===\x20\x27split\x27\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22geoViewMode\x20=\x20\x27split\x27\x22\x20title=\x22Table\x20+\x20Map\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22columns\x22\x20style=\x22width:13px;height:13px;vertical-align:middle;\x22></ok-icon>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20opacity:.3;\x20user-select:none;\x22>view</span>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20──\x20Results\x20area\x20──\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20position:relative;\x20flex:1;\x20min-height:0;\x22>\x0a\x20\x20\x20\x20<if\x20:=\x22query.busy\x22>\x0a\x20\x20\x20\x20\x20\x20<ok-overlay>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22loader-center\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22loader\x22\x20class=\x22spin\x22></ok-icon>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</ok-overlay>\x0a\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20<!--\x20Results\x20bar:\x20timing\x20+\x20Add\x20item\x20-->\x0a\x20\x20\x20\x20<div\x20style=\x22margin-bottom:8px;\x20display:flex;\x20align-items:center;\x20gap:8px;\x20flex-shrink:0;\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.45;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20{{\x20query.time\x20!=\x20null\x20?\x20query.time\x20+\x20\x27ms\x27\x20:\x20\x27\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20<b\x20style=\x22opacity:.7;\x22>{{\x20type\x20}}</b>\x0a\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22margin-left:auto;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22openAddModal\x22\x20class=\x22btn-primary\x20btn-icon\x22\x20style=\x22font-size:12px;\x20padding:3px\x2012px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!$ok.stores.auth.can(\x27data:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27data:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.permTooltip(\x27data:write\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22plus\x22></ok-icon>Add\x20item\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<!--\x20Content\x20row\x20—\x20table\x20+\x20map\x20as\x20siblings,\x20shown/hidden\x20via\x20display:none\x20-->\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex:1;\x20min-height:0;\x20gap:10px;\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20TABLE\x20col\x20—\x20hidden\x20only\x20in\x20pure\x20map\x20mode\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x0a\x20\x20\x20\x20\x20\x20\x20\x20:style=\x22searchMode\x20===\x20\x27geo\x27\x20&&\x20geoViewMode\x20===\x20\x27map\x27\x20?\x20\x27display:none\x27\x20:\x20\x27flex:1;\x20min-width:0;\x20display:flex;\x20flex-direction:column;\x20min-height:0;\x27\x22\x0a\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22hasDirectValueRows\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-table\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ref=\x22table\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:data=\x22displayRows\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20select=\x22single\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20no-scroll\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22flex:1;\x20min-height:0;\x20overflow:auto;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@select-change=\x22onGeoTableSelect($event)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<columns>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<column\x20width=\x22min-content\x22\x20no-resize>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<header>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22key__header\x22>key</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedFtsIndex\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20color:var(--okdb-accent);\x20opacity:.6;\x20margin-left:6px;\x20font-weight:normal;\x22>score</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedVectorEngine\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20color:var(--okdb-indigo);\x20opacity:.6;\x20margin-left:6px;\x20font-weight:normal;\x22>sim</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27geo\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20color:var(--okdb-success);\x20opacity:.6;\x20margin-left:6px;\x20font-weight:normal;\x22>dist</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</header>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<cell\x20let:row>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22key__cell\x22>{{\x20keyOf(row)\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22directValueKindOf(row)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:class=\x22\x27direct-value-badge\x20direct-value-badge--\x27\x20+\x20directValueKindOf(row)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20directValueKindOf(row)\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedFtsIndex\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22fts-score-badge\x22>{{\x20matchOf(row)\x20??\x20\x27—\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedVectorEngine\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22vec-score-badge\x22>{{\x20vectorScoreOf(row)\x20??\x20\x27—\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22vectorChunkMetaOf(row)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20color:var(--okdb-orange);\x20opacity:.8;\x20margin-left:4px;\x20white-space:nowrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20chunk\x20{{\x20vectorChunkMetaOf(row).start\x20}}–{{\x20vectorChunkMetaOf(row).end\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27geo\x27\x20&&\x20distanceOf(row)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22geo-dist-badge\x22>{{\x20distanceOf(row)\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</cell>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</column>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<column>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<header>value</header>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<cell\x20let:row>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<code\x20:title=\x22prettyValueOf(row)\x22\x20style=\x22display:block;\x20white-space:pre-wrap;\x20word-break:break-word;\x20font-size:12px;\x22>{{\x20inlineValueOf(row)\x20}}</code>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</cell>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</column>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</columns>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<expanded\x20let:row>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Chunk\x20info\x20panel\x20—\x20shown\x20only\x20in\x20vector\x20mode\x20for\x20chunked\x20pipeline\x20results\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedVectorEngine\x20&&\x20vectorChunkMetaOf(row)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:8px\x2010px\x200;\x20display:flex;\x20flex-direction:column;\x20gap:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22vectorChunkMetaOf(row).text\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.5;\x20margin-bottom:2px;\x22>Matched\x20chunk\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22color:var(--okdb-orange);\x20margin-left:6px;\x22>chars\x20{{\x20vectorChunkMetaOf(row).start\x20}}–{{\x20vectorChunkMetaOf(row).end\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22background:var(--okdb-app-bg-deep);\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:6px;\x20padding:8px;\x20font-size:11px;\x20max-height:140px;\x20overflow:auto;\x20white-space:pre-wrap;\x20word-break:break-word;\x20line-height:1.5;\x22>{{\x20vectorChunkMetaOf(row).text\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!vectorChunkMetaOf(row).text\x20&&\x20vectorChunkMetaOf(row).start\x20!=\x20null\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.5;\x20margin-bottom:2px;\x22>Matched\x20chunk\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22color:var(--okdb-orange);\x20margin-left:6px;\x22>chars\x20{{\x20vectorChunkMetaOf(row).start\x20}}–{{\x20vectorChunkMetaOf(row).end\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.55;\x20margin-left:4px;\x22>(highlighted\x20in\x20document\x20below)</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22height:1px;\x20background:var(--okdb-app-border);\x20margin:2px\x200;\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<edit-row\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:row=\x22rowValueOf(row)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:key=\x22keyOf(row)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:type=\x22type\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@remove=\x22onRemoveRow(keyOf(row))\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@change=\x22onRowChanged($event)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</edit-row>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</expanded>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</ok-table>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!hasDirectValueRows\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-table\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20ref=\x22table\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:data=\x22displayRows\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20select=\x22single\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20no-scroll\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22flex:1;\x20min-height:0;\x20overflow:auto;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@select-change=\x22onGeoTableSelect($event)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<columns>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<column\x20width=\x22min-content\x22\x20no-resize>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<header>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22key__header\x22>key</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedFtsIndex\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20color:var(--okdb-accent);\x20opacity:.6;\x20margin-left:6px;\x20font-weight:normal;\x22>score</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedVectorEngine\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20color:var(--okdb-indigo);\x20opacity:.6;\x20margin-left:6px;\x20font-weight:normal;\x22>sim</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27geo\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20color:var(--okdb-success);\x20opacity:.6;\x20margin-left:6px;\x20font-weight:normal;\x22>dist</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</header>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<cell\x20let:row>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22key__cell\x22>{{\x20keyOf(row)\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedFtsIndex\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22fts-score-badge\x22>{{\x20matchOf(row)\x20??\x20\x27—\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedVectorEngine\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22vec-score-badge\x22>{{\x20vectorScoreOf(row)\x20??\x20\x27—\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22vectorChunkMetaOf(row)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20color:var(--okdb-orange);\x20opacity:.8;\x20margin-left:4px;\x20white-space:nowrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20chunk\x20{{\x20vectorChunkMetaOf(row).start\x20}}–{{\x20vectorChunkMetaOf(row).end\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27geo\x27\x20&&\x20distanceOf(row)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22geo-dist-badge\x22>{{\x20distanceOf(row)\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</cell>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</column>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<auto\x20max=\x2210\x22\x20:show-more-content=\x22(n)\x20=>\x20\x27+\x27\x20+\x20n\x20+\x20\x27\x20cols\x27\x22\x20show-more-title=\x22Click\x20to\x20show\x20all\x20columns\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<cell\x20let:row\x20let:value>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:class=\x22[typeof\x20value,\x20value\x20===\x20null\x20?\x20\x27null\x27\x20:\x20\x27\x27]\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20value\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</cell>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</auto>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</columns>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<expanded\x20let:row>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Chunk\x20info\x20panel\x20—\x20shown\x20only\x20in\x20vector\x20mode\x20for\x20chunked\x20pipeline\x20results\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22query.selectedVectorEngine\x20&&\x20vectorChunkMetaOf(row)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:8px\x2010px\x200;\x20display:flex;\x20flex-direction:column;\x20gap:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22vectorChunkMetaOf(row).text\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.5;\x20margin-bottom:2px;\x22>Matched\x20chunk\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22color:var(--okdb-orange);\x20margin-left:6px;\x22>chars\x20{{\x20vectorChunkMetaOf(row).start\x20}}–{{\x20vectorChunkMetaOf(row).end\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22background:var(--okdb-app-bg-deep);\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:6px;\x20padding:8px;\x20font-size:11px;\x20max-height:140px;\x20overflow:auto;\x20white-space:pre-wrap;\x20word-break:break-word;\x20line-height:1.5;\x22>{{\x20vectorChunkMetaOf(row).text\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!vectorChunkMetaOf(row).text\x20&&\x20vectorChunkMetaOf(row).start\x20!=\x20null\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.5;\x20margin-bottom:2px;\x22>Matched\x20chunk\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22color:var(--okdb-orange);\x20margin-left:6px;\x22>chars\x20{{\x20vectorChunkMetaOf(row).start\x20}}–{{\x20vectorChunkMetaOf(row).end\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.55;\x20margin-left:4px;\x22>(highlighted\x20in\x20document\x20below)</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22height:1px;\x20background:var(--okdb-app-border);\x20margin:2px\x200;\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<edit-row\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:row=\x22rowValueOf(row)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:key=\x22keyOf(row)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:type=\x22type\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@remove=\x22onRemoveRow(keyOf(row))\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@change=\x22onRowChanged($event)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</edit-row>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</expanded>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</ok-table>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ok-pager\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22query.prevPage()\x22\x20:disabled=\x22!query.hasPrev\x20||\x20query.busy\x22>‹\x20Prev</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>{{\x20query.total\x20}}\x20result{{\x20query.total\x20===\x201\x20?\x20\x27\x27\x20:\x20\x27s\x27\x20}}\x20·\x20{{\x20query.pageSize\x20}}/page</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22query.nextPage()\x22\x20:disabled=\x22!query.hasNext\x20||\x20query.busy\x22>Next\x20›</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22searchMode\x20===\x20\x27geo\x27\x22>\x0a\x20\x20\x20\x20\x20\x20<!--\x20MAP\x20col\x20—\x20always\x20mounted,\x20shown\x20only\x20in\x20geo\x20map/split\x20mode\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x0a\x20\x20\x20\x20\x20\x20\x20\x20style=\x22flex:1;\x20min-width:0;\x20min-height:0;\x20border-radius:8px;\x20overflow:hidden;\x20border:1px\x20solid\x20#23292e;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20:style=\x22{\x20\x27display\x27:\x20(geoViewMode\x20===\x20\x27map\x27\x20||\x20geoViewMode\x20===\x20\x27split\x27)?\x20\x27block\x27\x20:\x20\x27none\x27\x20}\x22\x0a\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<geo-map\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:points=\x22geoMapPoints\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:origin-lat=\x22geoLat\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:origin-lon=\x22geoLon\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:radius=\x22geoRadius\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:highlight-key=\x22geoHighlightedKey\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@move=\x22geoLat\x20=\x20String($event.detail.lat.toFixed(6)),\x20geoLon\x20=\x20String($event.detail.lon.toFixed(6))\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@select=\x22onGeoMapSelect($event)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22width:100%;\x20height:100%;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x0a</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Changelog\x20tab\x20-->\x0a\x20\x20<if\x20:=\x22tab\x20===\x20\x27changelog\x27\x22>\x0a\x20\x20\x20\x20<type-changelog\x20:type=\x22type\x22\x20style=\x22flex:1;\x20min-height:0;\x22\x20/>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Manage\x20tab\x20-->\x0a\x20\x20<if\x20:=\x22tab\x20===\x20\x27manage\x27\x22>\x0a\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:12px;\x20flex:1;\x20overflow:auto;\x20padding-right:4px;\x22>\x0a\x0a\x20\x20\x20\x20<!--\x20Overview\x20-->\x0a\x20\x20\x20\x20<div\x20class=\x22card\x22\x20style=\x22display:flex;\x20gap:24px;\x20align-items:center;\x22>\x0a\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:15px;\x20font-weight:600;\x22>{{\x20type\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.5;\x20margin-top:2px;\x22>type</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:22px;\x20font-weight:600;\x20color:var(--okdb-accent);\x22>{{\x20typeCount\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.5;\x20margin-top:2px;\x22>records</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<!--\x20Fields\x20-->\x0a\x20\x20\x20\x20<div\x20class=\x22card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-title\x22>Fields</div>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22typeFieldEntries.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.4;\x20font-size:13px;\x22>No\x20fields\x20tracked\x20yet\x20—\x20add\x20items\x20or\x20use\x20Recompute.</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22typeFieldEntries.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-grid\x20manage-grid--2\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Field</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Observed\x20types</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22typeFieldEntries\x22\x20let:item=\x22tf\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22><code>{{\x20tf.name\x20}}</code></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x20manage-cell--dim\x22>{{\x20tf.types.join(\x27,\x20\x27)\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<!--\x20Secondary\x20Indexes\x20-->\x0a\x20\x20\x20\x20<div\x20class=\x22card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-title\x22>Secondary\x20Indexes</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22openCreateIndex()\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:11px;\x20padding:3px\x2010px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!$ok.stores.auth.can(\x27schema:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27schema:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.permTooltip(\x27schema:write\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22plus\x22></ok-icon>Create\x20index\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22indexEntries.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.4;\x20font-size:13px;\x22>No\x20indexes\x20yet.</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22indexEntries.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-grid\x20manage-grid--idx\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Fields</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Kind</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Ownership</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Status</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22indexEntries\x22\x20let:item=\x22ix\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22\x20style=\x22gap:4px;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22ix.fields\x22\x20let:item=\x22f\x22\x20let:index=\x22fi\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<code\x20style=\x22font-size:12px;\x20color:var(--okdb-json-key);\x22>{{\x20f\x20}}</code><span\x20style=\x22opacity:.3;\x20font-size:11px;\x20margin-left:0;\x22\x20:style=\x22fi\x20<\x20ix.fields.length\x20-\x201\x20?\x20\x27\x27\x20:\x20\x27display:none\x27\x22>·</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22\x20style=\x22gap:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22ix.isGeo\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22idx-kind-badge\x20idx-kind-badge--geo\x22>◎\x20geo</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20opacity:.45;\x20white-space:nowrap;\x22>precision\x20{{\x20ix.geoPrecision\x20??\x207\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22ix.isUnique\x20&&\x20!ix.isGeo\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22idx-kind-badge\x20idx-kind-badge--unique\x22>◆\x20unique</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!ix.isGeo\x20&&\x20!ix.isUnique\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22idx-kind-badge\x20idx-kind-badge--regular\x22>regular</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22\x20style=\x22gap:3px;\x20flex-direction:column;\x20align-items:flex-start;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22ix.createdBy\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22idx-owned-badge\x22>{{\x20ix.createdBy.kind\x20}}:{{\x20ix.createdBy.name\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22ix.usedBy\x22\x20let:item=\x22consumer\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22idx-consumer-badge\x22>{{\x20consumer\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:class=\x22\x27manage-status\x20manage-status--\x27\x20+\x20ix.status\x22>{{\x20ix.status\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22\x20style=\x22justify-content:flex-end;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22rebuildIndex(ix.name)\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:11px;\x20padding:2px\x2010px;\x20opacity:.7;\x22\x20title=\x22Rebuild\x20this\x20index\x20from\x20all\x20current\x20records\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!$ok.stores.auth.can(\x27schema:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27schema:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.can(\x27schema:write\x27)\x20?\x20\x27Rebuild\x20this\x20index\x20from\x20all\x20current\x20records\x27\x20:\x20$ok.stores.auth.permTooltip(\x27schema:write\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22refresh-cw\x22></ok-icon>Rebuild\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22\x20style=\x22justify-content:flex-end;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22removeIndex(ix.name)\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:11px;\x20padding:2px\x2010px;\x20color:var(--okdb-danger);\x20opacity:.8;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!$ok.stores.auth.can(\x27schema:write\x27)\x20||\x20ix.usedBy.length\x20>\x200\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27schema:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22ix.usedBy.length\x20>\x200\x20?\x20\x27Used\x20by:\x20\x27\x20+\x20ix.usedBy.join(\x27,\x20\x27)\x20:\x20($ok.stores.auth.can(\x27schema:write\x27)\x20?\x20\x27Remove\x20this\x20index\x27\x20:\x20$ok.stores.auth.permTooltip(\x27schema:write\x27))\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22trash-2\x22></ok-icon>Remove\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<!--\x20FTS\x20Indexes\x20-->\x0a\x20\x20\x20\x20<div\x20class=\x22card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-title\x22>FTS\x20Indexes</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22openCreateFtsModal()\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:11px;\x20padding:3px\x2010px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!$ok.stores.auth.can(\x27schema:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27schema:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.permTooltip(\x27schema:write\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22plus\x22></ok-icon>Create\x20FTS\x20index\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22ftsEntries.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.4;\x20font-size:13px;\x22>No\x20FTS\x20indexes\x20yet.</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22ftsEntries.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-grid\x20manage-grid--fts\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Name</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Fields</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Status</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Size</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22ftsEntries\x22\x20let:item=\x22fe\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22><code>{{\x20fe.name\x20}}</code></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x20manage-cell--dim\x22>{{\x20fe.fields\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:class=\x22\x27manage-status\x20manage-status--\x27\x20+\x20fe.status\x22>{{\x20fe.status\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x20manage-cell--dim\x22\x20style=\x22font-size:11px;\x20font-family:monospace;\x22>{{\x20fmtBytes(fe.sizeBytes)\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22\x20style=\x22justify-content:flex-end;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22rebuildFts(fe.name)\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:11px;\x20padding:2px\x2010px;\x20opacity:.7;\x22\x20title=\x22Rebuild\x20this\x20FTS\x20index\x20from\x20all\x20current\x20records\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!$ok.stores.auth.can(\x27schema:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27schema:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.can(\x27schema:write\x27)\x20?\x20\x27Rebuild\x20this\x20FTS\x20index\x20from\x20all\x20current\x20records\x27\x20:\x20$ok.stores.auth.permTooltip(\x27schema:write\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22refresh-cw\x22></ok-icon>Rebuild\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22\x20style=\x22justify-content:flex-end;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22dropFtsIndex(fe.name)\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:11px;\x20padding:2px\x2010px;\x20color:var(--okdb-danger);\x20opacity:.8;\x22\x20title=\x22Drop\x20this\x20FTS\x20index\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!$ok.stores.auth.can(\x27schema:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27schema:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.can(\x27schema:write\x27)\x20?\x20\x27Drop\x20this\x20FTS\x20index\x27\x20:\x20$ok.stores.auth.permTooltip(\x27schema:write\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22trash-2\x22></ok-icon>Drop\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<!--\x20Vector\x20Search\x20Engines\x20-->\x0a\x20\x20\x20\x20<div\x20class=\x22card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-title\x22>Vector\x20Search\x20Engines</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22openEnginesWorkspace()\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20class=\x22btn-icon\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:3px\x2010px;\x20color:var(--okdb-indigo);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-indigo)\x2027%,\x20transparent);\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Open\x20the\x20type-scoped\x20engines\x20view\x20for\x20this\x20type\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20⛓\x20Type\x20Engines\x20→\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22vectorEntries.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.4;\x20font-size:13px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20No\x20vector\x20search\x20engines\x20for\x20this\x20type\x20yet.\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22openEnginesCreatePipeline()\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22margin-left:6px;\x20font-size:11px;\x20padding:1px\x208px;\x20border-radius:999px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-indigo)\x2027%,\x20transparent);\x20color:var(--okdb-indigo);\x20background:color-mix(in\x20srgb,\x20var(--okdb-indigo)\x205%,\x20transparent);\x20cursor:pointer;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>Create\x20Pipeline…</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22vectorEntries.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-grid\x20manage-grid--vec\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Engine</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Status</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22>Pipeline</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-col-hd\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22vectorEntries\x22\x20let:item=\x22ve\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22><code>{{\x20ve.displayName\x20}}</code></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:class=\x22\x27manage-status\x20manage-status--\x27\x20+\x20(ve.running\x20?\x20\x27ready\x27\x20:\x20\x27creating\x27)\x22>{{\x20ve.status\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x20manage-cell--dim\x22>{{\x20ve.pipeline\x20??\x20\x27—\x27\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-cell\x22\x20style=\x22justify-content:flex-end;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22openEnginesPipeline(ve.pipeline)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20class=\x22btn-icon\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:2px\x2010px;\x20color:var(--okdb-indigo);\x20opacity:.85;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Open\x20this\x20type-scoped\x20pipeline\x20view\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20⛓\x20View\x20local\x20→\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<!--\x20TTL\x20-->\x0a\x20\x20\x20\x20<div\x20class=\x22card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-header\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-title\x22>Time-to-Live\x20(TTL)</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22(loadTTLStats(),\x20loadDefaultTTL())\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:11px;\x20padding:3px\x2010px;\x20opacity:.6;\x22\x20:disabled=\x22ttlStatsLoading\x22\x20title=\x22Refresh\x20TTL\x20stats\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20↻\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20Default\x20TTL\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22margin-bottom:12px;\x20padding:10px;\x20background:var(--okdb-app-bg-deep);\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20font-weight:600;\x20opacity:.7;\x20margin-bottom:8px;\x22>Default\x20TTL\x20for\x20new\x20items</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22defaultTTL\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:13px;\x20color:var(--okdb-success);\x20margin-bottom:8px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Currently:\x20<span\x20style=\x22font-family:monospace;\x20font-weight:600;\x22>{{\x20fmtDuration(defaultTTL)\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.4;\x20font-size:11px;\x22>\x20({{\x20defaultTTL\x20}}ms)</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!defaultTTL\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.4;\x20margin-bottom:8px;\x22>No\x20default\x20—\x20items\x20don\x27t\x20expire\x20unless\x20TTL\x20is\x20set\x20explicitly.</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:6px;\x20align-items:center;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@change=\x22onDefaultTTLPresetChange($event.target.value)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:2px\x206px;\x20background:var(--okdb-app-bg-deep);\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:4px;\x20color:var(--okdb-app-fg);\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22\x22>Custom…</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x2260000\x22>1\x20min</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22300000\x22>5\x20min</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22900000\x22>15\x20min</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x223600000\x22>1\x20hr</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x2221600000\x22>6\x20hr</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x2286400000\x22>24\x20hr</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22604800000\x22>7\x20days</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x222592000000\x22>30\x20days</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20type=\x22number\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20!value=\x22defaultTTLInput\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input=\x22(defaultTTLInput\x20=\x20$el.value,\x20defaultTTLPreset\x20=\x20\x27\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20placeholder=\x22ms\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22width:110px;\x20font-size:11px;\x20padding:2px\x206px;\x20background:var(--okdb-app-bg-deep);\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:4px;\x20color:var(--okdb-app-fg);\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22setDefaultTTLAction()\x22\x20:disabled=\x22defaultTTLBusy\x20||\x20!defaultTTLInput\x20||\x20!$ok.stores.auth.can(\x27data:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27data:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.permTooltip(\x27data:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:2px\x2010px;\x20color:var(--okdb-success);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-success)\x2033%,\x20transparent);\x22>Set</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22defaultTTL\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22clearDefaultTTLAction()\x22\x20:disabled=\x22defaultTTLBusy\x20||\x20!$ok.stores.auth.can(\x27data:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27data:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.permTooltip(\x27data:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:2px\x2010px;\x20color:var(--okdb-danger);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-danger)\x2033%,\x20transparent);\x22>Clear</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20TTL\x20stats\x20-->\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22!ttlStats\x20||\x20!ttlStats.enabled\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.4;\x20font-size:13px;\x22>No\x20TTL\x20entries\x20for\x20this\x20type\x20—\x20TTL\x20sub-databases\x20are\x20created\x20lazily\x20on\x20first\x20use.</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22ttlStats\x20&&\x20ttlStats.enabled\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:24px;\x20align-items:center;\x20margin-bottom:10px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:18px;\x20font-weight:600;\x20color:var(--okdb-success);\x22>{{\x20ttlStats.totalEntries\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.5;\x22>entries</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20:style=\x22\x27font-size:18px;\x20font-weight:600;\x20color:\x27\x20+\x20(ttlStats.expiredEntries\x20>\x200\x20?\x20\x27var(--okdb-danger)\x27\x20:\x20\x27var(--okdb-app-fg-muted)\x27)\x20+\x20\x27;\x27\x22>{{\x20ttlStats.expiredEntries\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.5;\x22>expired</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:13px;\x20font-family:monospace;\x20color:var(--okdb-app-fg);\x22>{{\x20ttlStats.nextExpiry\x20?\x20fmtDuration(ttlStats.nextExpiry\x20-\x20Date.now())\x20:\x20\x27—\x27\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.5;\x22>next\x20expiry</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22triggerSweep()\x22\x20:disabled=\x22ttlSweepBusy\x20||\x20!$ok.stores.auth.can(\x27data:write\x27)\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:11px;\x20padding:3px\x2010px;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27data:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.permTooltip(\x27data:write\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22refresh-cw\x22></ok-icon>Sweep\x20expired\x20now\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22ttlSweepBusy\x22><span\x20style=\x22font-size:11px;\x20opacity:.5;\x22>Sweeping…</span></if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<!--\x20Danger\x20zone\x20-->\x0a\x20\x20\x20\x20<div\x20class=\x22card\x20card--danger\x22>\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-title\x22\x20style=\x22color:var(--okdb-danger);\x22>⚠\x20Danger\x20Zone</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20flex-wrap:wrap;\x20align-items:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22recomputeFields\x22\x20class=\x22btn-icon\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!$ok.stores.auth.can(\x27data:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27data:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.can(\x27data:write\x27)\x20?\x20\x27Rescan\x20all\x20records\x20to\x20rebuild\x20the\x20field\x20schema\x27\x20:\x20$ok.stores.auth.permTooltip(\x27data:write\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22refresh-cw\x22></ok-icon>Recompute\x20fields\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22dropType\x22\x20class=\x22btn-danger\x20btn-icon\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!$ok.stores.auth.can(\x27data:write\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22{\x20\x27perm-denied\x27:\x20!$ok.stores.auth.can(\x27data:write\x27)\x20}\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22$ok.stores.auth.permTooltip(\x27data:write\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22trash-2\x22></ok-icon>Drop\x20type\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Schema\x20tab\x20-->\x0a\x20\x20<if\x20:=\x22tab\x20===\x20\x27schema\x27\x22>\x0a\x20\x20\x20\x20<type-schema-tab\x0a\x20\x20\x20\x20\x20\x20:type=\x22type\x22\x0a\x20\x20\x20\x20\x20\x20:on-view-key=\x22(key)\x20=>\x20setTab(\x27data\x27)\x22\x0a\x20\x20\x20\x20\x20\x20:on-schema-changed=\x22()\x20=>\x20loadViolations()\x22\x0a\x20\x20\x20\x20\x20\x20:on-violation-count-changed=\x22(count)\x20=>\x20onViolationCountChanged(count)\x22\x0a\x20\x20\x20\x20\x20\x20style=\x22flex:1;\x20min-height:0;\x22\x0a\x20\x20\x20\x20/>\x0a\x20\x20</if>\x0a\x0a\x20\x20<if\x20:=\x22tab\x20===\x20\x27engines\x27\x22>\x0a\x20\x20\x20\x20<type-pipelines-tab\x20:type=\x22type\x22\x20:focusedpipeline=\x22currentRoutePipeline\x22\x20:currentmode=\x22currentRouteMode\x22\x20style=\x22flex:1;\x20min-height:0;\x22\x20/>\x0a\x20\x20</if>\x0a\x0a</div>','name','types','join','Failed\x20to\x20set\x20default\x20TTL','possibleIndexes','status','has','selectedPrefix','/fts/','message','query','API','sizeBytes','defaultTTLBusy','reverse','engine:started','error','allSettled','kind','_unsubs','fulfilled','Cannot\x20remove:\x20index\x20is\x20used\x20by\x20','/indexes','source_type','usedBy','target','expand','search','data','113784SjGatu','openTypePipelines','size','result','okdb','vectorEngines','paths','loadVectorEngines','$router','dispatchEvent','unshift','Add\x20item','apiBase','1584276sCCFDE','resolve','FTS\x20index\x20ready:\x20','$ok','removed','deselect','engine:error','engine:stopped','string','round','open','defaultTTLPreset','ok-table','\x20expired\x20item(s)\x20removed','Drop\x20FTS\x20index\x20\x22','/pipelines','radius','/ref-violations/','stopped','Drop\x20type\x20error','hasDirectValueRows','default','<add-item-modal\x20:modal=\x22modal\x22\x20:type=\x22type\x22\x20:on-done=\x22onDone\x22\x20/>','stores','selectedIndexEnd','stringify','config','selectedIndex','a\x20consumer','ttlStats','engines','4965232JaMJky','609jdVEat','geoLat','array','geoConfig','object','items','geoHighlightedKey','ftsPrefix','Index\x20rebuild\x20complete','ftsList','embeddings:pipeline:ready','keys','createdBy','Rebuilding\x20FTS\x20index\x20\x22','displayRows','/deep-properties','key','find','create','<create-pipeline-modal\x20:modal=\x22modal\x22\x20:type=\x22type\x22\x20:env=\x22envName\x22\x20:on-done=\x22onDone\x22\x20/>','__drop_fts__','_geoSelSource','Remove\x20index\x20\x22','Rebuild\x20index\x20error','ready','unique','violationCount','Error\x20fetching\x20FTS\x20indexes','\x20km','defaultTTL','$attr','dropped','_updateGeoIndexes','label','vectorText','score','rowValueOf','splice','loadTypeEnginesCount','openCreateIndex','typeFields','title','null','_path','indexStatuses','busy','vectorLimit','lat','searchMode','Create\x20Index','openEnginesCreatePipeline','Rebuild\x20failed','selectedVectorEngineMeta','fts:drop','clearSelection','Drop\x20type\x20\x22','index','shared','select','statusText','table','Remove\x20failed','loadIndexes','currentRoutePipeline','numTerms','fmtDuration','__remove_index__','catch','scan','ttlSweepBusy','pageSize','scalar','resetPaging','push','type','maxScore','INDEX_HAS_CONSUMERS','157867eQtVLI','displayVectorName','fts:registered','toFixed','__create_fts__','$watch','/engines','2444920VCLkBD','index:reset','code','manage','openCreatePipelineModal','map','ftsText','filter','split','isRunning','isArray','loadDefaultTTL','/env/','Rebuild\x20FTS\x20error','value','1753749zWZRWA','Default\x20TTL\x20set\x20(','geoRadius','action','pipeline','engine:uninstalled','vectorChunkMetaMap','index:registered','Fields\x20recomputed','modal','detail','count','details','geoSortAsc','source_env','changelog','lon','overview','Drop\x20FTS\x20error','dropFtsIndex','floor','/index/','precision','Recompute\x20failed','json','/reset','defaultTTLInput','pipelines','ftsMode','engine:installed','selectedFtsIndex','_backStack','geoDistanceMap','<create-index-modal\x20:modal=\x22modal\x22\x20:type=\x22type\x22\x20:deep-paths=\x22deepPaths\x22\x20:geo-fields=\x22geoFields\x22\x20:on-done=\x22onDone\x22\x20/>','distance','_anchor','/db','DELETE','Sweep\x20done:\x20','loadViolations','hasPrev','tab','geo','_search','__create_index__','/embeddings/embedders','values','geoField','3538662iVTJKK','application/json','Rebuild\x20index\x20\x22','time','ttlStatsLoading','clearExpanded','Index\x20ready:\x20','/recompute-fields','\x22?\x20This\x20cannot\x20be\x20undone.','confirm','geoLon','/type/','view','Sweep\x20failed','load','length','Item\x20updated','Create\x20FTS\x20Index','envApiBase','selectedIndexStart','__key','$vars','mode','meta','toast','Geo\x20query\x20error','defineProperty','$el','geoViewMode','selectedVectorEngine','trim','[tag]{display:flex;flex-direction:column;height:100%;min-width:0;min-height:0}.ok-table__cell__inner>span.object{color:#a6da95}.ok-table__cell__inner>span.number{color:var(--okdb-accent)}.ok-table__cell__inner>span.boolean{color:#ff6c6b}.ok-table__cell__inner>span.null,.ok-table__cell__inner>span.undefined{color:#c792ea}.ok-table__cell__inner>.key__header{font-weight:700;color:var(--okdb-json-key)}.ok-table__cell__inner>.key__cell{color:var(--okdb-json-key)}.fts-score-badge,.mode-count{display:inline-block;border-radius:999px;font-size:10px;vertical-align:middle}.mode-count{margin-left:4px;padding:0\x205px;background:#ffffff18;line-height:1.6}.fts-score-badge{margin-left:5px;padding:1px\x205px;border:1px\x20solid\x20color-mix(in\x20srgb,var(--okdb-accent)\x2033%,transparent);color:var(--okdb-accent);opacity:.8}.vec-score-badge{border:1px\x20solid\x20color-mix(in\x20srgb,var(--okdb-indigo)\x2033%,transparent);color:var(--okdb-indigo)}.direct-value-badge,.geo-dist-badge,.vec-score-badge{display:inline-block;margin-left:5px;padding:1px\x205px;border-radius:999px;font-size:10px;vertical-align:middle;opacity:.8}.geo-dist-badge{border:1px\x20solid\x20color-mix(in\x20srgb,var(--okdb-success)\x2033%,transparent);color:var(--okdb-success)}.direct-value-badge{border:1px\x20solid}.direct-value-badge--scalar{border-color:color-mix(in\x20srgb,var(--okdb-app-fg-muted)\x2033%,transparent);color:var(--okdb-app-fg-muted)}.direct-value-badge--array{border-color:#2dd4bf55;color:#2dd4bf}.direct-value-badge--null{border-color:color-mix(in\x20srgb,var(--okdb-purple)\x2033%,transparent);color:var(--okdb-purple)}.manage-section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.manage-section-title{font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.06em;opacity:.5;margin-bottom:0}.manage-grid{display:grid;gap:0}.manage-grid--2{grid-template-columns:1fr\x201fr}.manage-grid--3{grid-template-columns:1fr\x20auto\x20auto}.manage-grid--4{grid-template-columns:1fr\x20auto\x20auto\x20auto}.manage-grid--idx{grid-template-columns:minmax(80px,2fr)\x20minmax(90px,1fr)\x20minmax(80px,1fr)\x20auto\x20auto\x20auto}.idx-consumer-badge,.idx-owned-badge{display:inline-block;padding:1px\x206px;border-radius:3px;font-size:10px;white-space:nowrap}.idx-owned-badge{background:color-mix(in\x20srgb,var(--okdb-accent)\x2012%,transparent);color:var(--okdb-accent);border:1px\x20solid\x20color-mix(in\x20srgb,var(--okdb-accent)\x2025%,transparent)}.idx-consumer-badge{background:color-mix(in\x20srgb,var(--okdb-sky)\x2012%,transparent);color:var(--okdb-sky);border:1px\x20solid\x20color-mix(in\x20srgb,var(--okdb-sky)\x2025%,transparent)}.manage-grid--fts{grid-template-columns:minmax(80px,1fr)\x202fr\x20minmax(60px,auto)\x20minmax(50px,auto)\x20auto\x20auto}.manage-grid--vec{grid-template-columns:minmax(80px,1fr)\x20minmax(60px,auto)\x20minmax(80px,1fr)\x20auto}.idx-kind-badge{display:inline-block;padding:1px\x207px;border-radius:999px;font-size:10px;border:1px\x20solid;white-space:nowrap}.idx-kind-badge--geo{color:var(--okdb-success);border-color:color-mix(in\x20srgb,var(--okdb-success)\x2033%,transparent)}.idx-kind-badge--unique{color:var(--okdb-warning);border-color:color-mix(in\x20srgb,var(--okdb-warning)\x2033%,transparent)}.idx-kind-badge--regular{color:var(--okdb-app-fg-muted);border-color:color-mix(in\x20srgb,var(--okdb-app-fg-muted)\x2020%,transparent)}.idx-info-strip{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:5px\x208px;background:var(--okdb-app-bg-deep);border:1px\x20solid\x20var(--okdb-app-surface-2);border-radius:4px;font-size:11px}.idx-info-label{opacity:.4;white-space:nowrap}.idx-info-field{font-size:11px;color:var(--okdb-json-key)}.idx-info-badge{padding:1px\x207px;border-radius:999px;font-size:10px;border:1px\x20solid;white-space:nowrap}.idx-info-badge--geo{color:var(--okdb-success);border-color:color-mix(in\x20srgb,var(--okdb-success)\x2033%,transparent)}.idx-info-badge--unique{color:var(--okdb-warning);border-color:color-mix(in\x20srgb,var(--okdb-warning)\x2033%,transparent)}.idx-info-badge--regular{color:var(--okdb-app-fg-muted);border-color:color-mix(in\x20srgb,var(--okdb-app-fg-muted)\x2020%,transparent)}.manage-col-hd{font-size:11px;opacity:.4;padding:0\x2012px\x206px\x200;border-bottom:1px\x20solid\x20var(--okdb-app-border);font-weight:400}.manage-cell{padding:6px\x2012px\x206px\x200;border-bottom:1px\x20solid\x20var(--okdb-app-surface);font-size:13px;display:flex;align-items:center;min-width:0}.manage-cell--dim{opacity:.5;font-size:12px}.manage-status{display:inline-block;padding:1px\x207px;border-radius:999px;font-size:10px;border:1px\x20solid}.manage-status--ready{color:var(--okdb-success);border-color:color-mix(in\x20srgb,var(--okdb-success)\x2033%,transparent)}.manage-status--creating,.manage-status--resetting{color:var(--okdb-warning);border-color:color-mix(in\x20srgb,var(--okdb-warning)\x2033%,transparent)}.card--danger{border:1px\x20solid\x20color-mix(in\x20srgb,var(--okdb-danger)\x2013%,transparent)!important}','fields','findIndex','geoIndexes','POST','violations','entries','ftsScoreMap','index:ready','typeEngineCount','all','querySelector','removeIndex','info','openCreateFtsModal','add','/violations/','then'];_0x2375=function(){return _0x13150b;};return _0x2375();}const _0x213c47=_0x28b9;(function(_0x35ee99,_0x4e13c4){const _0x321698=_0x28b9,_0x2b3acc=_0x35ee99();while(!![]){try{const _0x32eede=-parseInt(_0x321698(0x2ca))/0x1+-parseInt(_0x321698(0x25d))/0x2+parseInt(_0x321698(0x2e0))/0x3+parseInt(_0x321698(0x27c))/0x4+parseInt(_0x321698(0x2d1))/0x5+parseInt(_0x321698(0x1fa))/0x6+-parseInt(_0x321698(0x27d))/0x7*(parseInt(_0x321698(0x250))/0x8);if(_0x32eede===_0x4e13c4)break;else _0x2b3acc['push'](_0x2b3acc['shift']());}catch(_0x1fc2a3){_0x2b3acc['push'](_0x2b3acc['shift']());}}}(_0x2375,0xaf1be));import _0x31e557 from'@toolkit/elements/ok-icon.ok.js';import _0x388c39 from'@toolkit/elements/ok-table.ok.js';import _0x41e10e from'@toolkit/core/ok-overlay.ok.js';import _0x222aaf from'../../../components/geo-map.ok.js';import _0x47641c from'../../../components/ok-json-input.ok.js';import _0x16945e from'../../../view-models/type-query-vm.js';import{buildSiftSchema as _0x3cb5b7}from'../../../util/sift-schema.js';import _0x27b777 from'../modals/add-item-modal.ok.js';function _0x28b9(_0x3f4ada,_0x1c4347){_0x3f4ada=_0x3f4ada-0x1de;const _0x2375f=_0x2375();let _0x28b9a7=_0x2375f[_0x3f4ada];return _0x28b9a7;}import _0x3d055c from'../modals/create-fts-modal.ok.js';import _0x3bcf0e from'../modals/create-index-modal.ok.js';import _0x44fef3 from'../modals/create-pipeline-modal.ok.js';import _0x15cff from'./edit-row.ok.js';import _0x4dfb76 from'../../../stores/events-store.js';import _0x46fb0c from'./type-changelog.ok.js';import _0x30f4fa from'./type-pipelines-tab.ok.js';import _0x4435af from'./type-schema-tab.ok.js';function y(_0x81fb41){const _0x3a92e3=_0x28b9;return!!_0x81fb41&&_0x3a92e3(0x281)==typeof _0x81fb41&&!Array[_0x3a92e3(0x2db)](_0x81fb41);}function x(_0x5b48cb,_0x5907fe){const _0x33cd74=_0x28b9;y(_0x5b48cb)&&_0x5b48cb['__key']!==_0x5907fe&&Object[_0x33cd74(0x214)](_0x5b48cb,_0x33cd74(0x20e),{'value':_0x5907fe,'enumerable':!0x1,'configurable':!0x1,'writable':!0x1});}function m(_0x1e6f4c,_0x2873c4=0x0){const _0x2b7f53=_0x28b9;try{return JSON[_0x2b7f53(0x276)](_0x1e6f4c,null,_0x2873c4)??String(_0x1e6f4c);}catch{return String(_0x1e6f4c);}}export default{'tag':'type-viewer','dependencies':[_0x31e557,_0x388c39,_0x41e10e,_0x15cff,_0x47641c,_0x46fb0c,_0x30f4fa,_0x4435af,_0x27b777,_0x3bcf0e,_0x3d055c,_0x44fef3,_0x222aaf],'attr':{'type':{}},'context'(_0x3a8739){const _0x1740ed=_0x28b9;let _0x524b05=null,_0x7a4726=null,_0x51e175=null;const _0xcc9e70=new _0x16945e({'type':_0x3a8739[_0x1740ed(0x29b)][_0x1740ed(0x2c7)],'apiBase':()=>_0x3a8739[_0x1740ed(0x260)]['stores']['okdb'][_0x1740ed(0x25c)]});return{'tab':_0x1740ed(0x24f),get 'envApiBase'(){const _0x185cc0=_0x1740ed;return _0x3a8739['$ok']['stores'][_0x185cc0(0x254)]['apiBase'];},get 'type'(){const _0x2c3000=_0x1740ed;return _0x3a8739[_0x2c3000(0x29b)]['type'];},'violationCount':0x0,async 'loadViolations'(){const _0x5e391d=_0x1740ed;if(this['type'])try{const [_0x101e0d,_0x56064f]=await Promise[_0x5e391d(0x223)]([fetch(this['envApiBase']+_0x5e391d(0x229)+encodeURIComponent(this[_0x5e391d(0x2c7)])),fetch(this['envApiBase']+_0x5e391d(0x26e)+encodeURIComponent(this['type']))]);let _0x3b4649=0x0;if(_0x101e0d['ok']){const _0x5384e8=await _0x101e0d[_0x5e391d(0x1e2)]();_0x3b4649+=(_0x5384e8?.[_0x5e391d(0x24f)]?.['violations']??_0x5384e8?.['result']?.['violations']??[])[_0x5e391d(0x209)];}if(_0x56064f['ok']){const _0xe86a92=await _0x56064f[_0x5e391d(0x1e2)]();_0x3b4649+=(_0xe86a92?.[_0x5e391d(0x24f)]?.[_0x5e391d(0x21e)]??_0xe86a92?.['result']?.['violations']??[])[_0x5e391d(0x209)];}this['violationCount']=_0x3b4649;}catch{}},'onViolationCountChanged'(_0x523cbc){const _0x374ab7=_0x1740ed;this[_0x374ab7(0x297)]=_0x523cbc;},'query':_0xcc9e70,'possibleIndexes':[],'indexStatuses':{},'createIdxPossible':[],'createIdxTypeLoaded':null,'ftsList':[],'vectorEngines':[],'typeEngineCount':0x0,'searchMode':_0x1740ed(0x2c1),'geoIndexes':[],'geoField':'','geoLat':'','geoLon':'','geoRadius':'','geoSortAsc':!0x0,'geoDistanceMap':{},'mapOpen':!0x1,'geoViewMode':_0x1740ed(0x2b9),'geoHighlightedKey':null,'_geoSelSource':null,get 'geoMapPoints'(){const _0x91dc7a=_0x1740ed,_0x4589bb=this['geoField'];return _0x4589bb?(this['query'][_0x91dc7a(0x282)]||[])[_0x91dc7a(0x2d6)](_0x3ef77d=>{const _0xf47081=_0x91dc7a,_0x3fc002=_0x3ef77d['value']||{},_0x5af4c0=((_0x225de7,_0x1f26ed)=>{let _0x129173=_0x225de7;for(const _0x590885 of _0x1f26ed['split']('.')){if(null==_0x129173)return null;_0x129173=_0x129173[_0x590885];}return _0x129173;})(_0x3fc002,_0x4589bb);return{'key':_0x3ef77d[_0xf47081(0x28d)],'title':_0x3fc002[_0xf47081(0x233)]||_0x3fc002[_0xf47081(0x2a6)]||_0x3fc002[_0xf47081(0x29e)]||_0x3ef77d['key'],'lat':_0x5af4c0?.[_0xf47081(0x2ac)],'lon':_0x5af4c0?.[_0xf47081(0x2f0)],'distance':_0x3ef77d[_0xf47081(0x1ec)]};})['filter'](_0x28af65=>null!=_0x28af65[_0x91dc7a(0x2ac)]&&null!=_0x28af65[_0x91dc7a(0x2f0)]):[];},'setTab'(_0xf1eae2){const _0x1f0eb8=_0x1740ed;if(this['tab']=_0xf1eae2,_0x1f0eb8(0x27b)===_0xf1eae2)return;const _0x466e4b=_0x3a8739[_0x1f0eb8(0x20f)][_0x1f0eb8(0x258)];if(!_0x466e4b?.[_0x1f0eb8(0x1f5)]?.[_0x1f0eb8(0x1f3)])return;const _0x3dea25={..._0x466e4b[_0x1f0eb8(0x1f5)]};delete _0x3dea25[_0x1f0eb8(0x1f3)],delete _0x3dea25[_0x1f0eb8(0x210)],delete _0x3dea25[_0x1f0eb8(0x2e4)],_0x466e4b['replace'](_0x466e4b[_0x1f0eb8(0x25e)](_0x466e4b[_0x1f0eb8(0x2a8)]||'',_0x3dea25,_0x466e4b[_0x1f0eb8(0x1ed)]||''));},'switchToPipelines'(){this['openTypePipelines']({'mode':'pipelines','pipeline':this['currentRoutePipeline']||null});},get 'currentRoutePipeline'(){const _0x262ca9=_0x1740ed;return String(_0x3a8739[_0x262ca9(0x20f)]?.[_0x262ca9(0x258)]?.[_0x262ca9(0x1f5)]?.[_0x262ca9(0x2e4)]||'');},get 'currentRouteMode'(){const _0x2c8cab=_0x1740ed;return _0x2c8cab(0x1e5)===String(_0x3a8739['$vars']?.[_0x2c8cab(0x258)]?.[_0x2c8cab(0x1f5)]?.[_0x2c8cab(0x210)]||'')[_0x2c8cab(0x218)]()?_0x2c8cab(0x1e5):_0x2c8cab(0x27b);},'openTypePipelines'(_0x4cc6b8={}){const _0x394dfe=_0x1740ed,_0x80b091=_0x3a8739[_0x394dfe(0x20f)]?.[_0x394dfe(0x258)];if(!_0x80b091?.['resolve']||!_0x80b091?.['push'])return;const _0x48d01d=_0x3a8739[_0x394dfe(0x260)][_0x394dfe(0x274)][_0x394dfe(0x254)][_0x394dfe(0x22e)]||_0x394dfe(0x272),_0x514aa6={..._0x80b091[_0x394dfe(0x1f5)]||{},'env':_0x48d01d,'type':this['type'],'tab':_0x394dfe(0x27b),'mode':_0x394dfe(0x1e5)===_0x4cc6b8['mode']?_0x394dfe(0x1e5):_0x394dfe(0x27b)};_0x4cc6b8[_0x394dfe(0x2e4)]?_0x514aa6['pipeline']=_0x4cc6b8[_0x394dfe(0x2e4)]:delete _0x514aa6[_0x394dfe(0x2e4)],_0x80b091['push'](_0x80b091[_0x394dfe(0x25e)](_0x394dfe(0x1ee),_0x514aa6));},'openEnginesWorkspace'(_0x100fe9={}){const _0xb22c39=_0x1740ed;if(_0xb22c39(0x28f)===_0x100fe9['view']){const _0x2c490c=_0x3a8739[_0xb22c39(0x20f)]?.['$router'];if(!_0x2c490c?.['resolve']||!_0x2c490c?.['push'])return;const _0x271176={'env':_0x3a8739[_0xb22c39(0x260)]['stores'][_0xb22c39(0x254)][_0xb22c39(0x22e)]||_0xb22c39(0x272),'view':_0xb22c39(0x28f),'sourceType':this['type']};return _0x100fe9[_0xb22c39(0x245)]&&(_0x271176[_0xb22c39(0x245)]=_0x100fe9[_0xb22c39(0x245)]),void _0x2c490c[_0xb22c39(0x2c6)](_0x2c490c[_0xb22c39(0x25e)]('/engines',_0x271176));}this[_0xb22c39(0x251)]({'mode':_0x100fe9[_0xb22c39(0x210)]||_0xb22c39(0x27b),'pipeline':_0x100fe9[_0xb22c39(0x2e4)]||null});},'openTypePipelinesForSelectedVector'(){const _0x405e8d=_0x1740ed,_0xea4ceb=this[_0x405e8d(0x2b1)]?.[_0x405e8d(0x211)]?.[_0x405e8d(0x2e4)]||null;this['openTypePipelines']({'mode':_0x405e8d(0x1e5),'pipeline':_0xea4ceb});},'openGlobalEnginesWorkspace'(_0x4a3766={}){const _0x2b7f30=_0x1740ed,_0x196599=_0x3a8739['$vars']?.[_0x2b7f30(0x258)];if(!_0x196599?.[_0x2b7f30(0x25e)]||!_0x196599?.[_0x2b7f30(0x2c6)])return;const _0x1097da={'env':_0x3a8739[_0x2b7f30(0x260)][_0x2b7f30(0x274)][_0x2b7f30(0x254)][_0x2b7f30(0x22e)]||'default','sourceType':this['type']};_0x4a3766['view']&&_0x2b7f30(0x2f1)!==_0x4a3766['view']||(_0x1097da[_0x2b7f30(0x210)]='pipelines'),_0x4a3766['view']&&'overview'!==_0x4a3766['view']&&(_0x1097da[_0x2b7f30(0x206)]=_0x4a3766[_0x2b7f30(0x206)]),_0x4a3766[_0x2b7f30(0x245)]&&(_0x1097da['kind']=_0x4a3766['kind']),_0x4a3766[_0x2b7f30(0x2e4)]&&(_0x1097da['pipeline']=_0x4a3766[_0x2b7f30(0x2e4)]),_0x196599[_0x2b7f30(0x2c6)](_0x196599[_0x2b7f30(0x25e)](_0x2b7f30(0x2d0),_0x1097da));},async 'openEnginesCreatePipeline'(){const _0x4bba95=_0x1740ed;this[_0x4bba95(0x2c7)]&&await _0x3a8739[_0x4bba95(0x260)]['shared']['modal'][_0x4bba95(0x267)]({'owner':_0x3a8739,'title':'Create\x20Pipeline\x20·\x20'+this['type'],'canDrag':!0x0,'content':_0x4bba95(0x290),'context':_0x31fe8c=>({'modal':_0x31fe8c,'type':this[_0x4bba95(0x2c7)],'envName':_0x3a8739[_0x4bba95(0x260)][_0x4bba95(0x274)][_0x4bba95(0x254)][_0x4bba95(0x22e)]||_0x4bba95(0x272),'onDone':async()=>{const _0x219048=_0x4bba95;await Promise[_0x219048(0x223)]([this[_0x219048(0x257)](!0x0),this[_0x219048(0x2a3)]()]);}})});},'openEnginesPipeline'(_0x5414ba=null){const _0x3c1d5f=_0x1740ed;this[_0x3c1d5f(0x251)]({'mode':_0x3c1d5f(0x1e5),'pipeline':_0x5414ba||null});},'switchToEngines'(){const _0x579216=_0x1740ed;this[_0x579216(0x251)]({'mode':_0x579216(0x27b),'pipeline':this[_0x579216(0x2bc)]||null});},'setSearchMode'(_0xee817f){const _0x444324=_0x1740ed;if(this[_0x444324(0x2ad)]=_0xee817f,this[_0x444324(0x23d)][_0x444324(0x278)]=null,this[_0x444324(0x23d)][_0x444324(0x1e8)]=null,this[_0x444324(0x23d)]['selectedVectorEngine']=null,this['query'][_0x444324(0x23a)]=void 0x0,this[_0x444324(0x23d)]['selectedIndexStart']=void 0x0,this[_0x444324(0x23d)][_0x444324(0x275)]=void 0x0,this[_0x444324(0x1ea)]={},this[_0x444324(0x283)]=null,_0x444324(0x1f4)!==_0xee817f){this[_0x444324(0x216)]='table';try{_0x3a8739[_0x444324(0x215)]?.[_0x444324(0x224)]('ok-table')?.[_0x444324(0x2b3)]?.();}catch(_0x2f443c){}}},'_updateGeoIndexes'(){const _0x4d3376=_0x1740ed;this['geoIndexes']=this['possibleIndexes'][_0x4d3376(0x2d8)](_0x450184=>this[_0x4d3376(0x2a9)][_0x450184]?.[_0x4d3376(0x280)]),this[_0x4d3376(0x21c)][_0x4d3376(0x209)]&&!this[_0x4d3376(0x1f9)]&&(this[_0x4d3376(0x1f9)]=this[_0x4d3376(0x21c)][0x0]);},async 'loadGeoQuery'(){const _0x100854=_0x1740ed;if(!this[_0x100854(0x2c7)]||!this[_0x100854(0x1f9)])return;const _0x49f007=parseFloat(this[_0x100854(0x27e)]),_0x24aff2=parseFloat(this[_0x100854(0x204)]);if(isNaN(_0x49f007)||isNaN(_0x24aff2))return;const _0xa9520b=this[_0x100854(0x2e2)]?parseFloat(this[_0x100854(0x2e2)]):void 0x0;this[_0x100854(0x23d)][_0x100854(0x2aa)]=!0x0,this[_0x100854(0x1ea)]={};try{const _0x4d090c={...this[_0x100854(0x23d)][_0x100854(0x23d)]},_0x3c0b75={'lat':_0x49f007,'lon':_0x24aff2};_0xa9520b&&!isNaN(_0xa9520b)&&(_0x3c0b75[_0x100854(0x26d)]=_0xa9520b),_0x4d090c[this['geoField']]={'$near':_0x3c0b75};const _0x463968=await fetch(this[_0x100854(0x20c)]+_0x100854(0x205)+this[_0x100854(0x2c7)]+'/query',{'method':_0x100854(0x21d),'headers':{'Content-Type':_0x100854(0x1fb)},'body':JSON[_0x100854(0x276)]({'filter':_0x4d090c,'options':{'limit':this['query'][_0x100854(0x2c3)]}})});if(!_0x463968['ok'])throw new Error(_0x463968[_0x100854(0x2b8)]);const {data:_0x461021,meta:_0x42d0ab}=await _0x463968[_0x100854(0x1e2)]();let _0x74b716=_0x461021??[];this[_0x100854(0x2ed)]||(_0x74b716=_0x74b716['slice']()[_0x100854(0x241)]()),this[_0x100854(0x23d)]['items']=_0x74b716;const _0x45860a={};this['query'][_0x100854(0x1f8)]=_0x74b716[_0x100854(0x2d6)](_0x5bae39=>(x(_0x5bae39['value'],_0x5bae39['key']),null!=_0x5bae39['distance']&&(_0x45860a[_0x5bae39['key']]=_0x5bae39['distance']),_0x5bae39[_0x100854(0x2df)])),this[_0x100854(0x1ea)]=_0x45860a,this['query']['hasNext']=!0x1,this[_0x100854(0x23d)][_0x100854(0x1f2)]=!0x1,this[_0x100854(0x23d)]['_current']=null,this[_0x100854(0x23d)][_0x100854(0x1e9)]=[],this[_0x100854(0x23d)][_0x100854(0x1fd)]=_0x42d0ab?.[_0x100854(0x1fd)]??null,this[_0x100854(0x23d)]['total']=_0x74b716[_0x100854(0x209)];}catch(_0x325121){console[_0x100854(0x243)](_0x100854(0x213),_0x325121);}finally{this[_0x100854(0x23d)][_0x100854(0x2aa)]=!0x1;}},get 'selectedVectorEngineMeta'(){const _0x140cf5=_0x1740ed;return this[_0x140cf5(0x23d)][_0x140cf5(0x217)]?this[_0x140cf5(0x255)][_0x140cf5(0x28e)](_0x46b39f=>this['displayVectorName'](_0x46b39f[_0x140cf5(0x233)])===this[_0x140cf5(0x23d)][_0x140cf5(0x217)])??null:null;},'helpOpen':!0x1,get 'typeFields'(){const _0x56f577=_0x1740ed,_0x1976d5=(_0x3a8739['$ok'][_0x56f577(0x274)]['okdb'][_0x56f577(0x234)]||[])[_0x56f577(0x28e)](_0x2de484=>_0x2de484[_0x56f577(0x2c7)]===this[_0x56f577(0x2c7)]);return _0x1976d5?.[_0x56f577(0x21a)]||{};},get 'typeCount'(){const _0x161f57=_0x1740ed,_0x29ae9a=(_0x3a8739[_0x161f57(0x260)]['stores'][_0x161f57(0x254)][_0x161f57(0x234)]||[])['find'](_0x161027=>_0x161027['type']===this['type']);return _0x29ae9a?.[_0x161f57(0x2eb)]??'?';},get 'typeFieldEntries'(){const _0x364b0e=_0x1740ed;return Object[_0x364b0e(0x21f)](this['typeFields'])[_0x364b0e(0x2d6)](([_0x481cf8,_0x2209a2])=>({'name':_0x481cf8,'types':_0x2209a2}));},get 'indexEntries'(){const _0x4eb455=_0x1740ed;return this[_0x4eb455(0x237)][_0x4eb455(0x2d6)](_0x2ad164=>({'name':_0x2ad164,'fields':_0x2ad164[_0x4eb455(0x2d9)]('~'),'status':this[_0x4eb455(0x2a9)][_0x2ad164]?.[_0x4eb455(0x238)]||_0x4eb455(0x295),'isGeo':!!this[_0x4eb455(0x2a9)][_0x2ad164]?.[_0x4eb455(0x280)],'geoPrecision':this['indexStatuses'][_0x2ad164]?.['geoConfig']?.[_0x4eb455(0x1e0)]??null,'isUnique':!!this[_0x4eb455(0x2a9)][_0x2ad164]?.[_0x4eb455(0x296)],'createdBy':this['indexStatuses'][_0x2ad164]?.[_0x4eb455(0x289)]??null,'usedBy':this[_0x4eb455(0x2a9)][_0x2ad164]?.[_0x4eb455(0x24b)]??[]}));},get 'selectedIndexInfo'(){const _0x186a9c=_0x1740ed,_0x2141a3=this[_0x186a9c(0x23d)][_0x186a9c(0x278)];if(!_0x2141a3)return null;const _0x3beffe=this[_0x186a9c(0x2a9)][_0x2141a3];return{'fields':_0x2141a3[_0x186a9c(0x2d9)]('~'),'isGeo':!!_0x3beffe?.[_0x186a9c(0x280)],'geoPrecision':_0x3beffe?.[_0x186a9c(0x280)]?.[_0x186a9c(0x1e0)]??null,'isUnique':!!_0x3beffe?.['unique']};},get 'ftsEntries'(){const _0x59a7b0=_0x1740ed;return this[_0x59a7b0(0x286)][_0x59a7b0(0x2d6)](_0x2e3123=>({'name':_0x2e3123[_0x59a7b0(0x233)],'status':_0x2e3123[_0x59a7b0(0x238)]||'ready','fields':(_0x2e3123[_0x59a7b0(0x277)]&&_0x2e3123[_0x59a7b0(0x277)][_0x59a7b0(0x21a)]?_0x2e3123[_0x59a7b0(0x277)][_0x59a7b0(0x21a)]:[])[_0x59a7b0(0x235)](',\x20'),'sizeBytes':_0x2e3123[_0x59a7b0(0x23f)]??null}));},'fmtBytes'(_0x360a45){const _0x2abcd0=_0x1740ed;if(null==_0x360a45||0x0===_0x360a45)return'—';const _0x192978=['B','KB','MB','GB'];let _0x3074d7=_0x360a45,_0x195b5d=0x0;for(;_0x3074d7>=0x400&&_0x195b5d<_0x192978[_0x2abcd0(0x209)]-0x1;)_0x3074d7/=0x400,_0x195b5d++;return _0x3074d7[_0x2abcd0(0x2cd)](0x1)+'\u00a0'+_0x192978[_0x195b5d];},'ttlStats':null,'ttlStatsLoading':!0x1,'ttlSweepBusy':!0x1,'defaultTTL':null,'defaultTTLInput':'','defaultTTLPreset':'','defaultTTLBusy':!0x1,async 'loadTTLStats'(){const _0x194020=_0x1740ed;if(this['type']){this[_0x194020(0x1fe)]=!0x0;try{const _0x41d755=await fetch(this['envApiBase']+'/ttl/stats?type='+encodeURIComponent(this['type'])),_0x206b4a=await _0x41d755[_0x194020(0x1e2)]();this[_0x194020(0x27a)]=_0x206b4a['data']??_0x206b4a['result']??null;}catch{this[_0x194020(0x27a)]=null;}finally{this[_0x194020(0x1fe)]=!0x1;}}},async 'loadDefaultTTL'(){const _0x3979f9=_0x1740ed;if(this['type'])try{const _0x5b09f4=await fetch(this[_0x3979f9(0x20c)]+'/type/'+encodeURIComponent(this[_0x3979f9(0x2c7)])+_0x3979f9(0x22c)),_0x4f8ea3=await _0x5b09f4[_0x3979f9(0x1e2)](),_0x2e6b60=_0x4f8ea3[_0x3979f9(0x24f)]?.[_0x3979f9(0x29a)]??_0x4f8ea3[_0x3979f9(0x253)]?.['defaultTTL']??null;this[_0x3979f9(0x29a)]=_0x2e6b60,this['defaultTTLInput']=_0x2e6b60?String(_0x2e6b60):'',this[_0x3979f9(0x268)]=_0x2e6b60?String(_0x2e6b60):'';}catch{this[_0x3979f9(0x29a)]=null;}},async 'setDefaultTTLAction'(){const _0xa854c4=_0x1740ed,_0x131fdd=parseInt(this['defaultTTLInput']);if(_0x131fdd&&!(_0x131fdd<=0x0)){this[_0xa854c4(0x240)]=!0x0;try{const _0xa4c199=await fetch(this['envApiBase']+_0xa854c4(0x205)+encodeURIComponent(this[_0xa854c4(0x2c7)])+'/ttl/default',{'method':'PUT','headers':{'Content-Type':_0xa854c4(0x1fb)},'body':JSON[_0xa854c4(0x276)]({'ttl':_0x131fdd})});if(!_0xa4c199['ok']){const _0x571e4a=await _0xa4c199['json']()[_0xa854c4(0x2c0)](()=>({}));throw new Error(_0x571e4a?.[_0xa854c4(0x243)]?.['message']||_0xa4c199[_0xa854c4(0x2b8)]);}this['defaultTTL']=_0x131fdd,_0x3a8739[_0xa854c4(0x260)][_0xa854c4(0x2b6)]?.['toast']?.['info']?.(_0xa854c4(0x2e1)+this[_0xa854c4(0x2be)](_0x131fdd)+')');}catch(_0x2caf63){_0x3a8739['$ok']['shared']?.[_0xa854c4(0x212)]?.[_0xa854c4(0x243)]?.(_0x2caf63[_0xa854c4(0x23c)]||_0xa854c4(0x236));}finally{this['defaultTTLBusy']=!0x1;}}},async 'clearDefaultTTLAction'(){const _0x2723d9=_0x1740ed;this['defaultTTLBusy']=!0x0;try{const _0x1e69e0=await fetch(this[_0x2723d9(0x20c)]+_0x2723d9(0x205)+encodeURIComponent(this['type'])+_0x2723d9(0x22c),{'method':_0x2723d9(0x1ef)});if(!_0x1e69e0['ok'])throw new Error(_0x1e69e0['statusText']);this[_0x2723d9(0x29a)]=null,this[_0x2723d9(0x1e4)]='',this['defaultTTLPreset']='',_0x3a8739[_0x2723d9(0x260)][_0x2723d9(0x2b6)]?.[_0x2723d9(0x212)]?.['info']?.('Default\x20TTL\x20cleared');}catch(_0x4552d5){_0x3a8739[_0x2723d9(0x260)][_0x2723d9(0x2b6)]?.['toast']?.['error']?.(_0x4552d5[_0x2723d9(0x23c)]||'Failed\x20to\x20clear\x20default\x20TTL');}finally{this[_0x2723d9(0x240)]=!0x1;}},'onDefaultTTLPresetChange'(_0xca2287){const _0x59e805=_0x1740ed;this[_0x59e805(0x268)]=_0xca2287,_0xca2287&&(this[_0x59e805(0x1e4)]=_0xca2287);},async 'triggerSweep'(){const _0x1aebef=_0x1740ed;this[_0x1aebef(0x2c2)]=!0x0;try{const _0x418cdf=await fetch(this[_0x1aebef(0x20c)]+'/ttl/sweep',{'method':_0x1aebef(0x21d),'headers':{'Content-Type':_0x1aebef(0x1fb)},'body':JSON['stringify']({'batchSize':0x3e8})}),_0x3fb6a9=await _0x418cdf[_0x1aebef(0x1e2)](),_0x29fa25=_0x1aebef(0x1f0)+((_0x3fb6a9['data']??_0x3fb6a9[_0x1aebef(0x253)]??{})[_0x1aebef(0x261)]??0x0)+_0x1aebef(0x26a);_0x3a8739['$ok']['shared']?.['toast']?.[_0x1aebef(0x226)]?.(_0x29fa25),await this[_0x1aebef(0x231)](),await this[_0x1aebef(0x23d)][_0x1aebef(0x208)]();}catch(_0x1dacec){_0x3a8739[_0x1aebef(0x260)][_0x1aebef(0x2b6)]?.[_0x1aebef(0x212)]?.[_0x1aebef(0x243)]?.(_0x1dacec[_0x1aebef(0x23c)]||_0x1aebef(0x207));}finally{this[_0x1aebef(0x2c2)]=!0x1;}},'fmtDuration'(_0x202673){const _0x41b7e7=_0x1740ed;if(null==_0x202673)return'—';const _0xfad23c=Math['floor'](_0x202673/0x3e8);return _0xfad23c<0x3c?_0xfad23c+'s':_0xfad23c<0xe10?Math['floor'](_0xfad23c/0x3c)+'m\x20'+_0xfad23c%0x3c+'s':_0xfad23c<0x15180?Math[_0x41b7e7(0x1de)](_0xfad23c/0xe10)+'h\x20'+Math[_0x41b7e7(0x1de)](_0xfad23c%0xe10/0x3c)+'m':Math[_0x41b7e7(0x1de)](_0xfad23c/0x15180)+'d\x20'+Math[_0x41b7e7(0x1de)](_0xfad23c%0x15180/0xe10)+'h';},get 'vectorEntries'(){const _0x24d37a=_0x1740ed;return this[_0x24d37a(0x255)][_0x24d37a(0x2d6)](_0x1fec4f=>({'name':_0x1fec4f['name'],'displayName':this[_0x24d37a(0x2cb)](_0x1fec4f[_0x24d37a(0x233)]),'status':_0x1fec4f[_0x24d37a(0x2da)]?'running':_0x1fec4f['status']||_0x24d37a(0x26f),'running':_0x1fec4f[_0x24d37a(0x2da)],'pipeline':_0x1fec4f[_0x24d37a(0x211)]&&_0x1fec4f['meta'][_0x24d37a(0x2e4)]?_0x1fec4f[_0x24d37a(0x211)][_0x24d37a(0x2e4)]:null}));},get 'siftSchema'(){const _0x2f3a46=_0x1740ed;return _0x3cb5b7(this[_0x2f3a46(0x2a5)]);},async 'loadIndexes'(_0x185e5e=!0x1){const _0x56018a=_0x1740ed;if(this['type']&&(_0x185e5e||_0x524b05!==this[_0x56018a(0x2c7)]))try{const _0x3a51a6=await fetch(this[_0x56018a(0x20c)]+_0x56018a(0x205)+this['type']+_0x56018a(0x249)),_0x4b5681=await _0x3a51a6[_0x56018a(0x1e2)](),_0x1e9542=_0x4b5681[_0x56018a(0x24f)]??_0x4b5681[_0x56018a(0x253)]??{};this[_0x56018a(0x237)]=Object[_0x56018a(0x288)](_0x1e9542),this[_0x56018a(0x2a9)]=_0x1e9542,this[_0x56018a(0x29d)](),_0x524b05=this[_0x56018a(0x2c7)];}catch(_0x2c4c74){console[_0x56018a(0x243)]('Error\x20fetching\x20indexes',_0x2c4c74);}},async 'loadFtsIndexes'(_0x43af71=!0x1){const _0x5b9efc=_0x1740ed;if(this[_0x5b9efc(0x2c7)]&&(_0x43af71||_0x7a4726!==this[_0x5b9efc(0x2c7)]))try{const _0x57504b=await fetch(this[_0x5b9efc(0x20c)]+_0x5b9efc(0x205)+this['type']+'/fts'),{data:_0x320176}=await _0x57504b[_0x5b9efc(0x1e2)]();this[_0x5b9efc(0x286)]=_0x320176||[],_0x7a4726=this[_0x5b9efc(0x2c7)];}catch(_0xbfb2e6){console[_0x5b9efc(0x243)](_0x5b9efc(0x298),_0xbfb2e6);}},async 'loadVectorEngines'(_0x30127=!0x1){const _0x1fb9eb=_0x1740ed;if(this['type']&&(_0x30127||_0x51e175!==this[_0x1fb9eb(0x2c7)]))try{const _0xf9668a=_0x3a8739['$ok'][_0x1fb9eb(0x274)][_0x1fb9eb(0x254)][_0x1fb9eb(0x22e)]||'default',[_0x1e5de8,_0x5937f9]=await Promise[_0x1fb9eb(0x244)]([fetch(__ENV__[_0x1fb9eb(0x23e)]+'/env/'+encodeURIComponent(_0xf9668a)+_0x1fb9eb(0x2d0))[_0x1fb9eb(0x22a)](_0x1f497f=>_0x1f497f[_0x1fb9eb(0x1e2)]()),fetch(__ENV__[_0x1fb9eb(0x23e)]+_0x1fb9eb(0x1f7))[_0x1fb9eb(0x22a)](_0x1485bb=>_0x1485bb[_0x1fb9eb(0x1e2)]())]),_0x1f1586=_0x1fb9eb(0x247)===_0x1e5de8[_0x1fb9eb(0x238)]?_0x1e5de8[_0x1fb9eb(0x2df)]?.['result']??_0x1e5de8[_0x1fb9eb(0x2df)]?.['data']??[]:[],_0xae5951=[...'fulfilled'===_0x5937f9[_0x1fb9eb(0x238)]?_0x5937f9[_0x1fb9eb(0x2df)]?.[_0x1fb9eb(0x24f)]??[]:[],..._0x1f1586],_0x9de6eb={};for(const _0x5cab38 of _0xae5951)'indexer'===_0x5cab38[_0x1fb9eb(0x2c7)]&&_0x5cab38['config']&&(_0x9de6eb[_0x5cab38[_0x1fb9eb(0x233)]]={'source_type':_0x5cab38[_0x1fb9eb(0x277)][_0x1fb9eb(0x24a)],'source_env':_0x5cab38[_0x1fb9eb(0x277)][_0x1fb9eb(0x2ee)]??_0x1fb9eb(0x272)});this[_0x1fb9eb(0x255)]=_0xae5951[_0x1fb9eb(0x2d8)](_0x392715=>{const _0x27432a=_0x1fb9eb;if('vector-search'!==_0x392715[_0x27432a(0x2c7)])return!0x1;const _0x1109f9=_0x392715[_0x27432a(0x277)]?.[_0x27432a(0x24a)],_0x5c8a52=_0x392715[_0x27432a(0x277)]?.[_0x27432a(0x2ee)]??_0x27432a(0x272);if(_0x1109f9===this[_0x27432a(0x2c7)]&&_0x5c8a52===_0xf9668a)return!0x0;const _0x293bfd=_0x9de6eb[_0x392715['name']];return _0x293bfd?.[_0x27432a(0x24a)]===this['type']&&(_0x293bfd?.[_0x27432a(0x2ee)]??'default')===_0xf9668a;}),_0x51e175=this[_0x1fb9eb(0x2c7)];}catch(_0x7e06df){this[_0x1fb9eb(0x255)]=[];}},async 'loadTypeEnginesCount'(){const _0x44a393=_0x1740ed;if(this[_0x44a393(0x2c7)])try{const _0x49d229=_0x3a8739[_0x44a393(0x260)][_0x44a393(0x274)][_0x44a393(0x254)]['selectedEnv']||'default',_0x4de3c0=await fetch(__ENV__['API']+_0x44a393(0x2dd)+encodeURIComponent(_0x49d229)+_0x44a393(0x205)+encodeURIComponent(this[_0x44a393(0x2c7)])+_0x44a393(0x26c)),_0x28d7e9=await _0x4de3c0[_0x44a393(0x1e2)]()[_0x44a393(0x2c0)](()=>({})),_0x15a852=_0x4de3c0['ok']?_0x28d7e9?.[_0x44a393(0x24f)]??[]:[],_0x526e40=new Set();for(const _0xe77fe0 of _0x15a852['flatMap'](_0x4cf4a3=>_0x4cf4a3?.['engines']??[])){const _0xfa209a=_0xe77fe0?.[_0x44a393(0x28d)]??(_0xe77fe0?.['type']&&_0xe77fe0?.[_0x44a393(0x233)]?_0xe77fe0[_0x44a393(0x2c7)]+'@'+_0xe77fe0[_0x44a393(0x233)]:_0xe77fe0?.[_0x44a393(0x233)]??null);_0xfa209a&&_0x526e40[_0x44a393(0x228)](_0xfa209a);}this[_0x44a393(0x222)]=_0x526e40[_0x44a393(0x252)];}catch{this[_0x44a393(0x222)]=0x0;}else this[_0x44a393(0x222)]=0x0;},async 'recomputeFields'(){const _0x15b365=_0x1740ed;if(this[_0x15b365(0x2c7)])try{await fetch(this[_0x15b365(0x20c)]+_0x15b365(0x205)+this['type']+_0x15b365(0x201),{'method':_0x15b365(0x21d)}),await _0x3a8739[_0x15b365(0x260)][_0x15b365(0x274)][_0x15b365(0x254)]['reloadTypes'](),_0x3a8739[_0x15b365(0x260)][_0x15b365(0x2b6)]?.[_0x15b365(0x212)]?.['success']?.(_0x15b365(0x2e8));}catch(_0xe38718){console[_0x15b365(0x243)]('recomputeFields\x20error',_0xe38718),_0x3a8739[_0x15b365(0x260)][_0x15b365(0x2b6)]?.[_0x15b365(0x212)]?.[_0x15b365(0x243)]?.(_0x15b365(0x1e1));}},'indexStatusBadge'(_0x2350bb){const _0x4473f9=_0x1740ed,_0x1d9f66=this[_0x4473f9(0x2a9)]?.[_0x2350bb]?.[_0x4473f9(0x238)];return _0x1d9f66&&_0x4473f9(0x295)!==_0x1d9f66?_0x1d9f66:null;},'ftsStatusBadge'(_0x1ceffe){const _0x328be6=_0x1740ed,_0xa3a2b5=_0x1ceffe?.[_0x328be6(0x238)];return _0xa3a2b5&&_0x328be6(0x295)!==_0xa3a2b5?_0xa3a2b5:null;},'keyOf':_0x55be36=>_0x55be36?.[_0x1740ed(0x20e)]??_0x55be36?.[_0x1740ed(0x28d)]??null,get 'hasDirectValueRows'(){const _0x3fd2cc=_0x1740ed;return(this[_0x3fd2cc(0x23d)][_0x3fd2cc(0x282)]||[])['some'](_0x20510a=>!y(_0x20510a?.[_0x3fd2cc(0x2df)]));},get 'displayRows'(){const _0x93fa05=_0x1740ed;return this[_0x93fa05(0x271)]?this[_0x93fa05(0x23d)][_0x93fa05(0x282)]:this['query'][_0x93fa05(0x1f8)];},'rowValueOf':_0x33a391=>_0x33a391&&_0x1740ed(0x281)==typeof _0x33a391&&_0x1740ed(0x28d)in _0x33a391&&_0x1740ed(0x2df)in _0x33a391?_0x33a391['value']:_0x33a391,'directValueKindOf'(_0x5efaa9){const _0x3ea66a=_0x1740ed,_0x3822b7=this[_0x3ea66a(0x2a1)](_0x5efaa9);return null===_0x3822b7?_0x3ea66a(0x2a7):Array[_0x3ea66a(0x2db)](_0x3822b7)?_0x3ea66a(0x27f):y(_0x3822b7)?null:_0x3ea66a(0x2c4);},'inlineValueOf'(_0x507b4c){return m(this['rowValueOf'](_0x507b4c));},'prettyValueOf'(_0x145d66){return m(this['rowValueOf'](_0x145d66),0x2);},'scoreOf'(_0x55e542){const _0x5f08d5=_0x1740ed,_0x5771bd=this[_0x5f08d5(0x230)](_0x55e542);return _0x5771bd?this['query'][_0x5f08d5(0x220)]?.[_0x5771bd]?.[_0x5f08d5(0x2a0)]??null:null;},'matchOf'(_0x554f66){const _0x30507e=_0x1740ed,_0x3c0c1b=this[_0x30507e(0x230)](_0x554f66);if(!_0x3c0c1b)return null;const _0x5101b1=this[_0x30507e(0x23d)][_0x30507e(0x220)]?.[_0x3c0c1b];if(!_0x5101b1||null==_0x5101b1[_0x30507e(0x2a0)])return null;const _0x3e225d=_0x5101b1[_0x30507e(0x2c8)]??0x2*_0x5101b1[_0x30507e(0x2bd)];return _0x5101b1['score']+'/'+_0x3e225d;},'vectorScoreOf'(_0xd2ab4f){const _0x324197=_0x1740ed,_0x2bdc98=this[_0x324197(0x230)](_0xd2ab4f);if(!_0x2bdc98)return null;const _0x1300d0=this[_0x324197(0x23d)]['vectorScoreMap']?.[_0x2bdc98];return null==_0x1300d0?null:Math[_0x324197(0x266)](0x64*_0x1300d0)+'%';},'vectorChunkMetaOf'(_0x3a24f7){const _0x2ed277=_0x1740ed,_0x40c3ef=this['keyOf'](_0x3a24f7);return _0x40c3ef?this[_0x2ed277(0x23d)][_0x2ed277(0x2e6)]?.[_0x40c3ef]??null:null;},'distanceOf'(_0x54d9e7){const _0x37e9a0=_0x1740ed,_0x3a57f3=this[_0x37e9a0(0x230)](_0x54d9e7);if(!_0x3a57f3)return null;const _0x20c22e=this[_0x37e9a0(0x1ea)]?.[_0x3a57f3];return null==_0x20c22e?null:_0x20c22e<0x3e8?Math[_0x37e9a0(0x266)](_0x20c22e)+'\x20m':(_0x20c22e/0x3e8)['toFixed'](0x1)+_0x37e9a0(0x299);},'displayVectorName'(_0x2b9941){const _0x4f2905=_0x1740ed,_0x4bd70d=(_0x3a8739['$ok'][_0x4f2905(0x274)][_0x4f2905(0x254)][_0x4f2905(0x22e)]||_0x4f2905(0x272))+':';return _0x2b9941['startsWith'](_0x4bd70d)?_0x2b9941['slice'](_0x4bd70d[_0x4f2905(0x209)]):_0x2b9941;},'selectVectorEngine'(_0x3be5eb,_0x5a5be5){const _0x2715d3=_0x1740ed;if('__create_pipeline__'===_0x3be5eb)return _0x5a5be5&&(_0x5a5be5[_0x2715d3(0x24c)][_0x2715d3(0x2df)]=this[_0x2715d3(0x23d)][_0x2715d3(0x217)]||''),void this[_0x2715d3(0x2d5)]();this[_0x2715d3(0x23d)]['selectedVectorEngine']=_0x3be5eb||null,this['query']['selectedVectorEngine']&&(this[_0x2715d3(0x23d)]['selectedIndex']=null,this[_0x2715d3(0x23d)]['selectedFtsIndex']=null,this[_0x2715d3(0x23d)]['selectedPrefix']=void 0x0,this[_0x2715d3(0x23d)]['selectedIndexStart']=void 0x0,this[_0x2715d3(0x23d)][_0x2715d3(0x275)]=void 0x0);},'openCreatePipelineModal'(){const _0x1f3756=_0x1740ed;this[_0x1f3756(0x2af)]();},'createMenuOpen':!0x1,'onRowChanged'(_0x5f2323){const _0x3bde83=_0x1740ed,_0x340fd7=_0x5f2323?.[_0x3bde83(0x2ea)]??null,_0x1e2e55=_0x340fd7?.['key']??null;if(null!=_0x1e2e55){const _0x43e074=this[_0x3bde83(0x23d)][_0x3bde83(0x282)][_0x3bde83(0x21b)](_0x4111f7=>_0x4111f7?.['key']===_0x1e2e55);if(_0x43e074>=0x0){const _0x5d7dc=_0x340fd7?.['value'];x(_0x5d7dc,_0x1e2e55),this[_0x3bde83(0x23d)][_0x3bde83(0x282)]['splice'](_0x43e074,0x1,{...this['query'][_0x3bde83(0x282)][_0x43e074],'value':_0x5d7dc}),_0x43e074<this[_0x3bde83(0x23d)]['values'][_0x3bde83(0x209)]&&this['query'][_0x3bde83(0x1f8)]['splice'](_0x43e074,0x1,_0x5d7dc);}}_0x3a8739[_0x3bde83(0x260)][_0x3bde83(0x2b6)][_0x3bde83(0x212)]['info'](_0x3bde83(0x20a)),this['loadViolations']();},'onRemoveRow'(_0x19b96b){const _0x22c62e=_0x1740ed,_0x528089=this[_0x22c62e(0x23d)]['items']['findIndex'](_0x422cb3=>_0x422cb3?.[_0x22c62e(0x28d)]===_0x19b96b);_0x528089>=0x0&&(this[_0x22c62e(0x23d)]['values'][_0x22c62e(0x2a2)](_0x528089,0x1),this[_0x22c62e(0x23d)][_0x22c62e(0x282)][_0x22c62e(0x2a2)](_0x528089,0x1));},async 'openAddModal'(){const _0x4999dc=_0x1740ed;await _0x3a8739[_0x4999dc(0x260)][_0x4999dc(0x2b6)][_0x4999dc(0x2e9)][_0x4999dc(0x267)]({'owner':_0x3a8739,'title':_0x4999dc(0x25b),'content':_0x4999dc(0x273),'context':_0x39cb28=>({'modal':_0x39cb28,'type':this['type'],'onDone':async({key:_0x12415a,value:_0x210a9d})=>{const _0x455f26=_0x4999dc;x(_0x210a9d,_0x12415a),this[_0x455f26(0x23d)][_0x455f26(0x1f8)][_0x455f26(0x25a)](_0x210a9d),this[_0x455f26(0x23d)][_0x455f26(0x282)]['unshift']({'key':_0x12415a,'value':_0x210a9d});}})});},async 'openCreateIndex'(){const _0x34bf74=_0x1740ed;let _0x12bd56={},_0x230158=[];try{const _0x193426=await fetch(this[_0x34bf74(0x20c)]+_0x34bf74(0x205)+this[_0x34bf74(0x2c7)]+_0x34bf74(0x28c)),_0x345dbd=await _0x193426[_0x34bf74(0x1e2)]();_0x12bd56=(_0x345dbd['data']??_0x345dbd[_0x34bf74(0x253)])?.[_0x34bf74(0x256)]??{},_0x230158=Object[_0x34bf74(0x288)](_0x12bd56)['filter'](_0x18c227=>_0x12bd56[_0x18c227]['includes'](_0x34bf74(0x1f4)));}catch{const _0x2f63bf=(_0x3a8739[_0x34bf74(0x260)][_0x34bf74(0x274)][_0x34bf74(0x254)][_0x34bf74(0x234)]||[])[_0x34bf74(0x28e)](_0x42a7b0=>_0x42a7b0[_0x34bf74(0x2c7)]===this[_0x34bf74(0x2c7)]);for(const _0x21d567 of Object[_0x34bf74(0x288)](_0x2f63bf?.['fields']||{}))_0x12bd56[_0x21d567]=_0x2f63bf['fields'][_0x21d567];}await _0x3a8739[_0x34bf74(0x260)]['shared'][_0x34bf74(0x2e9)][_0x34bf74(0x267)]({'owner':_0x3a8739,'title':_0x34bf74(0x2ae),'content':_0x34bf74(0x1eb),'context':_0x2e5e30=>({'modal':_0x2e5e30,'type':this[_0x34bf74(0x2c7)],'deepPaths':_0x12bd56,'geoFields':_0x230158,'onDone':async()=>{await this['loadIndexes'](!0x0);}})});},async 'dropType'(){const _0x68abf8=_0x1740ed;if(this[_0x68abf8(0x2c7)]&&await _0x3a8739[_0x68abf8(0x260)][_0x68abf8(0x2b6)][_0x68abf8(0x2e9)]['confirm'](_0x68abf8(0x2b4)+this[_0x68abf8(0x2c7)]+_0x68abf8(0x202)))try{await fetch(this[_0x68abf8(0x20c)]+_0x68abf8(0x205)+this[_0x68abf8(0x2c7)],{'method':'DELETE'}),await _0x3a8739[_0x68abf8(0x260)][_0x68abf8(0x274)][_0x68abf8(0x254)]['reloadTypes'](),_0x3a8739[_0x68abf8(0x215)][_0x68abf8(0x259)](new CustomEvent(_0x68abf8(0x29c),{'detail':this[_0x68abf8(0x2c7)]}));}catch(_0x3c17ac){console[_0x68abf8(0x243)](_0x68abf8(0x270),_0x3c17ac);}},async 'removeIndex'(_0x832ee1){const _0x576712=_0x1740ed,_0x896400=_0x832ee1||this[_0x576712(0x23d)][_0x576712(0x278)];if(_0x896400&&await _0x3a8739['$ok']['shared'][_0x576712(0x2e9)][_0x576712(0x203)](_0x576712(0x293)+_0x896400+'\x22?')){try{const _0x277c27=await fetch(this[_0x576712(0x20c)]+_0x576712(0x205)+this[_0x576712(0x2c7)]+'/index/'+_0x896400,{'method':_0x576712(0x1ef)});if(!_0x277c27['ok']){const _0x399c87=await _0x277c27[_0x576712(0x1e2)]()[_0x576712(0x2c0)](()=>({})),_0x511591=_0x399c87?.[_0x576712(0x243)]?.[_0x576712(0x2d3)];if(_0x576712(0x2c9)===_0x511591){const _0x16c86f=(_0x399c87?.['error']?.[_0x576712(0x2ec)]?.[_0x576712(0x24b)]??[])[_0x576712(0x2d6)](_0x522c95=>_0x522c95[_0x576712(0x245)]+':'+_0x522c95['name'])[_0x576712(0x235)](',\x20');return void _0x3a8739[_0x576712(0x260)][_0x576712(0x2b6)]?.[_0x576712(0x212)]?.[_0x576712(0x243)]?.(_0x576712(0x248)+(_0x16c86f||_0x576712(0x279)));}throw new Error(_0x399c87?.[_0x576712(0x243)]?.[_0x576712(0x23c)]??_0x576712(0x2ba));}}catch(_0x2820c0){return console['error']('Remove\x20index\x20error',_0x2820c0),void _0x3a8739[_0x576712(0x260)][_0x576712(0x2b6)]?.[_0x576712(0x212)]?.['error']?.(_0x2820c0['message']);}this['query'][_0x576712(0x278)]===_0x896400&&(this[_0x576712(0x23d)][_0x576712(0x278)]=null),this[_0x576712(0x23d)][_0x576712(0x2c5)](),await this[_0x576712(0x2bb)](!0x0),await this[_0x576712(0x23d)][_0x576712(0x208)]();}},'selectIndex'(_0x728812){const _0x589f4e=_0x1740ed;if(_0x589f4e(0x1f6)===_0x728812)return this['query']['selectedIndex']=null,void this[_0x589f4e(0x2a4)]();_0x589f4e(0x2bf)!==_0x728812?(this['query']['selectedIndex']=_0x728812||null,this[_0x589f4e(0x23d)]['selectedIndex']&&(this['query'][_0x589f4e(0x1e8)]=null),this[_0x589f4e(0x23d)]['selectedIndex']||(this[_0x589f4e(0x23d)][_0x589f4e(0x23a)]=void 0x0,this[_0x589f4e(0x23d)][_0x589f4e(0x20d)]=void 0x0,this[_0x589f4e(0x23d)][_0x589f4e(0x275)]=void 0x0)):this[_0x589f4e(0x225)]();},'selectFtsIndex'(_0x5c2693,_0x3d4e17){const _0x200f23=_0x1740ed;if(_0x200f23(0x2ce)===_0x5c2693)return _0x3d4e17&&(_0x3d4e17[_0x200f23(0x24c)][_0x200f23(0x2df)]=this[_0x200f23(0x23d)][_0x200f23(0x1e8)]||''),void this[_0x200f23(0x227)]();_0x200f23(0x291)!==_0x5c2693?(this[_0x200f23(0x23d)][_0x200f23(0x1e8)]=_0x5c2693||null,this[_0x200f23(0x23d)][_0x200f23(0x1e8)]&&(this['query']['selectedIndex']=null,this[_0x200f23(0x23d)]['selectedPrefix']=void 0x0,this[_0x200f23(0x23d)]['selectedIndexStart']=void 0x0,this[_0x200f23(0x23d)][_0x200f23(0x275)]=void 0x0)):this[_0x200f23(0x2f3)]();},async 'openCreateFtsModal'(){const _0x2cbe18=_0x1740ed;let _0x1b5c82={};try{const _0x37394f=await fetch(this[_0x2cbe18(0x20c)]+_0x2cbe18(0x205)+this['type']+_0x2cbe18(0x28c)),_0x5ca52b=await _0x37394f[_0x2cbe18(0x1e2)]();_0x1b5c82=(_0x5ca52b['data']??_0x5ca52b['result'])?.[_0x2cbe18(0x256)]??{};}catch{const _0x3e7a2d=(_0x3a8739[_0x2cbe18(0x260)][_0x2cbe18(0x274)][_0x2cbe18(0x254)][_0x2cbe18(0x234)]||[])[_0x2cbe18(0x28e)](_0x3621a1=>_0x3621a1['type']===this[_0x2cbe18(0x2c7)]);for(const _0x4fafc5 of Object[_0x2cbe18(0x288)](_0x3e7a2d?.['fields']||{}))_0x1b5c82[_0x4fafc5]=_0x3e7a2d[_0x2cbe18(0x21a)][_0x4fafc5];}await _0x3a8739[_0x2cbe18(0x260)][_0x2cbe18(0x2b6)][_0x2cbe18(0x2e9)][_0x2cbe18(0x267)]({'owner':_0x3a8739,'title':_0x2cbe18(0x20b),'content':'<create-fts-modal\x20:modal=\x22modal\x22\x20:type=\x22type\x22\x20:api-base=\x22apiBase\x22\x20:deep-paths=\x22deepPaths\x22\x20:on-done=\x22onDone\x22\x20/>','context':_0x4f1ada=>({'modal':_0x4f1ada,'type':this[_0x2cbe18(0x2c7)],'apiBase':this[_0x2cbe18(0x20c)],'deepPaths':_0x1b5c82,'onDone':async()=>{const _0x2333bc=_0x2cbe18;await this[_0x2333bc(0x22b)](!0x0);}})});},async 'dropFtsIndex'(_0xccb160){const _0x5c645b=_0x1740ed,_0x16f387=_0xccb160||this[_0x5c645b(0x23d)][_0x5c645b(0x1e8)];if(_0x16f387&&await _0x3a8739[_0x5c645b(0x260)][_0x5c645b(0x2b6)][_0x5c645b(0x2e9)]['confirm'](_0x5c645b(0x26b)+_0x16f387+_0x5c645b(0x202))){try{await fetch(this['envApiBase']+_0x5c645b(0x205)+this[_0x5c645b(0x2c7)]+_0x5c645b(0x23b)+encodeURIComponent(_0x16f387),{'method':_0x5c645b(0x1ef)});}catch(_0x561a17){return console[_0x5c645b(0x243)](_0x5c645b(0x2f2),_0x561a17),void _0x3a8739[_0x5c645b(0x260)]['shared']?.[_0x5c645b(0x212)]?.[_0x5c645b(0x243)]?.('Drop\x20FTS\x20failed');}this[_0x5c645b(0x23d)][_0x5c645b(0x1e8)]===_0x16f387&&(this[_0x5c645b(0x23d)][_0x5c645b(0x1e8)]=null),await this[_0x5c645b(0x22b)](!0x0),await this[_0x5c645b(0x23d)][_0x5c645b(0x208)]();}},async 'rebuildIndex'(_0x23c8c1){const _0x18debc=_0x1740ed;if(_0x23c8c1&&await _0x3a8739[_0x18debc(0x260)]['shared'][_0x18debc(0x2e9)]['confirm'](_0x18debc(0x1fc)+_0x23c8c1+'\x22?\x20This\x20will\x20re-scan\x20all\x20records.'))try{await fetch(this[_0x18debc(0x20c)]+'/type/'+this[_0x18debc(0x2c7)]+_0x18debc(0x1df)+encodeURIComponent(_0x23c8c1)+_0x18debc(0x1e3),{'method':_0x18debc(0x21d)}),_0x3a8739[_0x18debc(0x260)][_0x18debc(0x2b6)]?.[_0x18debc(0x212)]?.['info']?.('Rebuilding\x20index\x20\x22'+_0x23c8c1+'\x22…'),await this['loadIndexes'](!0x0);}catch(_0x2ad71d){console[_0x18debc(0x243)](_0x18debc(0x294),_0x2ad71d),_0x3a8739['$ok'][_0x18debc(0x2b6)]?.[_0x18debc(0x212)]?.[_0x18debc(0x243)]?.(_0x18debc(0x2b0));}},async 'rebuildFts'(_0x29c03a){const _0x3bff65=_0x1740ed,_0x191d71=_0x29c03a||this['query'][_0x3bff65(0x1e8)];if(_0x191d71&&await _0x3a8739[_0x3bff65(0x260)][_0x3bff65(0x2b6)][_0x3bff65(0x2e9)]['confirm']('Rebuild\x20FTS\x20index\x20\x22'+_0x191d71+'\x22?\x20This\x20will\x20re-index\x20all\x20records.'))try{await fetch(this[_0x3bff65(0x20c)]+_0x3bff65(0x205)+this[_0x3bff65(0x2c7)]+_0x3bff65(0x23b)+encodeURIComponent(_0x191d71)+_0x3bff65(0x1e3),{'method':_0x3bff65(0x21d)}),_0x3a8739['$ok'][_0x3bff65(0x2b6)]?.[_0x3bff65(0x212)]?.[_0x3bff65(0x226)]?.(_0x3bff65(0x28a)+_0x191d71+'\x22…'),await this['loadFtsIndexes'](!0x0);}catch(_0xfd7782){console[_0x3bff65(0x243)](_0x3bff65(0x2de),_0xfd7782),_0x3a8739['$ok'][_0x3bff65(0x2b6)]?.[_0x3bff65(0x212)]?.[_0x3bff65(0x243)]?.(_0x3bff65(0x2b0));}},'onGeoTableSelect'(_0x3bd1b7){const _0x30ea0b=_0x1740ed;if('geo'!==this[_0x30ea0b(0x2ad)])return;this[_0x30ea0b(0x292)]=_0x30ea0b(0x2b9);const _0xd98cd8=_0x3bd1b7[_0x30ea0b(0x2ea)]?.[_0x30ea0b(0x2e3)];this['geoHighlightedKey']=_0x30ea0b(0x262)===_0xd98cd8?null:_0x3bd1b7[_0x30ea0b(0x2ea)]?.['row']?.[_0x30ea0b(0x20e)]??null;},'onGeoMapSelect'(_0x87e470){const _0x3d7442=_0x1740ed,_0x49b5e2=_0x87e470[_0x3d7442(0x2ea)]?.[_0x3d7442(0x28d)]??null;this[_0x3d7442(0x292)]=_0x3d7442(0x2d6),this[_0x3d7442(0x283)]=this[_0x3d7442(0x283)]===_0x49b5e2?null:_0x49b5e2;}};},'_unsubs':[],async 'init'(_0x372076){const _0x1933f9=_0x28b9;if(_0x372076[_0x1933f9(0x2cf)](()=>this[_0x1933f9(0x2c7)],async()=>{const _0x2d60c2=_0x1933f9;this['query']['type']=this['type'],this[_0x2d60c2(0x23d)][_0x2d60c2(0x1e8)]=null,this[_0x2d60c2(0x23d)]['selectedVectorEngine']=null,this[_0x2d60c2(0x2ad)]='scan',this[_0x2d60c2(0x23d)][_0x2d60c2(0x2c5)](),await this['loadIndexes'](!0x0),await this['loadFtsIndexes'](!0x0),await this['loadVectorEngines'](!0x0),await this[_0x2d60c2(0x2a3)](),await this[_0x2d60c2(0x1f1)](),await this[_0x2d60c2(0x23d)][_0x2d60c2(0x208)]();}),_0x372076[_0x1933f9(0x2cf)](()=>[this['query'][_0x1933f9(0x23d)],this[_0x1933f9(0x23d)][_0x1933f9(0x278)],this['query'][_0x1933f9(0x20d)],this[_0x1933f9(0x23d)][_0x1933f9(0x275)],this['query'][_0x1933f9(0x22f)],this[_0x1933f9(0x23d)][_0x1933f9(0x22d)],this[_0x1933f9(0x23d)]['selectedPrefix'],this[_0x1933f9(0x23d)][_0x1933f9(0x1e8)],this[_0x1933f9(0x23d)][_0x1933f9(0x2d7)],this[_0x1933f9(0x23d)][_0x1933f9(0x1e6)],this[_0x1933f9(0x23d)][_0x1933f9(0x284)],this['query'][_0x1933f9(0x217)],this[_0x1933f9(0x23d)][_0x1933f9(0x29f)],this[_0x1933f9(0x23d)][_0x1933f9(0x2ab)]],async()=>{const _0x27767c=_0x1933f9;this[_0x27767c(0x2c7)]&&(this[_0x27767c(0x23d)][_0x27767c(0x2c5)](),await this['query']['load']());}),_0x372076[_0x1933f9(0x2cf)](()=>[this[_0x1933f9(0x2ad)],this[_0x1933f9(0x1f9)],this[_0x1933f9(0x27e)],this[_0x1933f9(0x204)],this[_0x1933f9(0x2e2)],this['geoSortAsc'],this['query'][_0x1933f9(0x23d)]],async()=>{const _0x5194be=_0x1933f9;'geo'===this['searchMode']&&this[_0x5194be(0x2c7)]&&this['geoField']&&this[_0x5194be(0x27e)]&&this[_0x5194be(0x204)]&&await this['loadGeoQuery']();}),this[_0x1933f9(0x2c7)]){const _0x5baca9=new Set([_0x1933f9(0x24f),_0x1933f9(0x2ef),'manage','schema',_0x1933f9(0x1e5),_0x1933f9(0x27b)]),_0x57adcd=_0x372076[_0x1933f9(0x20f)][_0x1933f9(0x258)]?.[_0x1933f9(0x24e)]?.[_0x1933f9(0x1f3)];_0x57adcd&&_0x5baca9[_0x1933f9(0x239)](_0x57adcd)&&(this[_0x1933f9(0x1f3)]=_0x1933f9(0x1e5)===_0x57adcd?_0x1933f9(0x27b):_0x57adcd),await Promise[_0x1933f9(0x223)]([this['loadIndexes'](),this[_0x1933f9(0x22b)](),this['loadVectorEngines'](),this[_0x1933f9(0x2a3)](),this[_0x1933f9(0x1f1)](),this['loadTTLStats'](),this[_0x1933f9(0x2dc)](),this[_0x1933f9(0x23d)][_0x1933f9(0x208)]()]);}this[_0x1933f9(0x246)]=[_0x4dfb76['on'](_0x1933f9(0x2d2),()=>{const _0x338345=_0x1933f9;this['loadIndexes'](!0x0),this[_0x338345(0x22b)](!0x0);}),_0x4dfb76['on'](_0x1933f9(0x221),_0x3e5218=>{const _0x36cf86=_0x1933f9;this[_0x36cf86(0x2bb)](!0x0),this['loadFtsIndexes'](!0x0);const _0xde94f9=_0x3e5218?.[_0x36cf86(0x2c7)];if(!_0xde94f9||_0xde94f9===this[_0x36cf86(0x2c7)]){const _0x5670ee=_0x3e5218?.[_0x36cf86(0x2b5)],_0x26488a=Array[_0x36cf86(0x2db)](_0x5670ee)&&'fts'===_0x5670ee[0x0],_0x557525=_0x26488a?_0x5670ee[0x1]:_0x36cf86(0x265)==typeof _0x5670ee?_0x5670ee:'',_0x1e1289=_0x26488a?_0x36cf86(0x25f)+_0x557525:_0x557525?_0x36cf86(0x200)+_0x557525:_0x36cf86(0x285);_0x372076[_0x36cf86(0x260)][_0x36cf86(0x2b6)]?.[_0x36cf86(0x212)]?.['success']?.(_0x1e1289);}}),_0x4dfb76['on'](_0x1933f9(0x2e7),()=>this['loadIndexes'](!0x0)),_0x4dfb76['on']('index:drop',()=>this[_0x1933f9(0x2bb)](!0x0)),_0x4dfb76['on'](_0x1933f9(0x2cc),()=>this[_0x1933f9(0x22b)](!0x0)),_0x4dfb76['on'](_0x1933f9(0x2b2),()=>this[_0x1933f9(0x22b)](!0x0)),_0x4dfb76['on'](_0x1933f9(0x242),()=>this[_0x1933f9(0x257)](!0x0)),_0x4dfb76['on'](_0x1933f9(0x264),()=>this[_0x1933f9(0x257)](!0x0)),_0x4dfb76['on']('engine:error',()=>this[_0x1933f9(0x257)](!0x0)),_0x4dfb76['on'](_0x1933f9(0x1e7),()=>this[_0x1933f9(0x257)](!0x0)),_0x4dfb76['on'](_0x1933f9(0x2e5),()=>this[_0x1933f9(0x257)](!0x0)),_0x4dfb76['on']('engine:started',()=>this[_0x1933f9(0x2a3)]()),_0x4dfb76['on'](_0x1933f9(0x264),()=>this['loadTypeEnginesCount']()),_0x4dfb76['on'](_0x1933f9(0x263),()=>this[_0x1933f9(0x2a3)]()),_0x4dfb76['on'](_0x1933f9(0x1e7),()=>this[_0x1933f9(0x2a3)]()),_0x4dfb76['on'](_0x1933f9(0x2e5),()=>this['loadTypeEnginesCount']()),_0x4dfb76['on'](_0x1933f9(0x287),()=>this[_0x1933f9(0x257)](!0x0)),_0x4dfb76['on']('embeddings:pipeline:ready',()=>this[_0x1933f9(0x2a3)]())];const _0x2d6ca0=new Set([_0x1933f9(0x24f),_0x1933f9(0x2ef),_0x1933f9(0x2d4),'schema',_0x1933f9(0x1e5),_0x1933f9(0x27b)]);_0x372076[_0x1933f9(0x2cf)](()=>_0x372076[_0x1933f9(0x20f)]['$router']?.[_0x1933f9(0x1f5)]?.[_0x1933f9(0x1f3)],()=>{const _0x3f5849=_0x1933f9,_0x41b910=_0x372076[_0x3f5849(0x20f)]['$router']?.[_0x3f5849(0x1f5)]?.[_0x3f5849(0x1f3)];if(!_0x41b910)return;const _0x352ee1=_0x2d6ca0[_0x3f5849(0x239)](_0x41b910)?_0x3f5849(0x1e5)===_0x41b910?'engines':_0x41b910:'data';this['tab']!==_0x352ee1&&(this[_0x3f5849(0x1f3)]=_0x352ee1);}),_0x372076[_0x1933f9(0x2cf)](()=>this[_0x1933f9(0x283)],_0x45cf43=>{const _0x16af7d=_0x1933f9,_0x2f8e67=this[_0x16af7d(0x292)];if(this[_0x16af7d(0x292)]=null,'geo'!==this[_0x16af7d(0x2ad)])return;if(_0x16af7d(0x2b9)===_0x2f8e67)return;const _0x4af53f=_0x372076[_0x16af7d(0x215)]?.[_0x16af7d(0x224)](_0x16af7d(0x269));if(!_0x4af53f)return;if(!_0x45cf43)return _0x4af53f[_0x16af7d(0x2b3)]?.(),void _0x4af53f[_0x16af7d(0x1ff)]?.();const _0xad4296=this[_0x16af7d(0x28b)]?.[_0x16af7d(0x28e)](_0x2813e8=>this['keyOf'](_0x2813e8)===_0x45cf43);_0xad4296?(_0x4af53f[_0x16af7d(0x2b7)]?.(_0xad4296),_0x4af53f['clearExpanded']?.(),_0x4af53f[_0x16af7d(0x24d)]?.(_0xad4296)):(_0x4af53f[_0x16af7d(0x2b3)]?.(),_0x4af53f[_0x16af7d(0x1ff)]?.());});},'unmount'(){const _0x158cac=_0x28b9;for(const _0x548660 of this['_unsubs'])_0x548660();this[_0x158cac(0x246)]=[];},'template':_0x213c47(0x232),'style':_0x213c47(0x219)};
|