@kedem/okdb 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (260) hide show
  1. package/LICENSE +57 -0
  2. package/README.md +344 -0
  3. package/banner.jpg +0 -0
  4. package/bin/okdb.js +2 -0
  5. package/docs/OKDB-ARCHITECTURE.md +1036 -0
  6. package/docs/auth-and-sync.md +558 -0
  7. package/docs/auth-permissions.md +143 -0
  8. package/docs/change-log.md +169 -0
  9. package/docs/data-model.md +174 -0
  10. package/docs/embeddings.md +338 -0
  11. package/docs/files.md +131 -0
  12. package/docs/fts.md +139 -0
  13. package/docs/functions.md +514 -0
  14. package/docs/getting-started.md +233 -0
  15. package/docs/http-api.md +705 -0
  16. package/docs/index.md +115 -0
  17. package/docs/indexes.md +207 -0
  18. package/docs/logging.md +116 -0
  19. package/docs/manifest.json +38 -0
  20. package/docs/migration.md +154 -0
  21. package/docs/pipelines.md +598 -0
  22. package/docs/plugins.md +144 -0
  23. package/docs/querying.md +204 -0
  24. package/docs/queue.md +637 -0
  25. package/docs/sync.md +156 -0
  26. package/docs/transactions.md +140 -0
  27. package/docs/ttl.md +375 -0
  28. package/okdb.js +1 -0
  29. package/package.json +26 -0
  30. package/public/admin-app.js +1 -0
  31. package/public/android-chrome-192x192.png +0 -0
  32. package/public/android-chrome-512x512.png +0 -0
  33. package/public/apple-touch-icon.png +0 -0
  34. package/public/components/admin-route-host.ok.js +1 -0
  35. package/public/components/env-picker.ok.js +1 -0
  36. package/public/components/field-path-input.ok.js +1 -0
  37. package/public/components/field.html +6 -0
  38. package/public/components/geo-map.ok.js +1 -0
  39. package/public/components/ok-cron-input.ok.js +1 -0
  40. package/public/components/ok-dropzone.ok.js +1 -0
  41. package/public/components/ok-js-input.ok.js +1 -0
  42. package/public/components/ok-json-input.ok.js +1 -0
  43. package/public/components/ok-text-monaco-input.ok.js +1 -0
  44. package/public/components/theme-toggle.ok.js +1 -0
  45. package/public/favicon-16x16.png +0 -0
  46. package/public/favicon-32x32.png +0 -0
  47. package/public/favicon.ico +0 -0
  48. package/public/images/logo.png +0 -0
  49. package/public/images/logo.svg +333 -0
  50. package/public/index.html +6 -0
  51. package/public/layouts/_default.ok.html +1 -0
  52. package/public/layouts/okdb-cube.ok.html +1 -0
  53. package/public/login-app.js +1 -0
  54. package/public/login.html +1 -0
  55. package/public/modules/ok.js +1 -0
  56. package/public/sections/api/index.ok.html +1 -0
  57. package/public/sections/api/parts/api-endpoint.ok.js +1 -0
  58. package/public/sections/auth/index.ok.html +1 -0
  59. package/public/sections/auth/modals/create-token-modal.ok.js +1 -0
  60. package/public/sections/auth/modals/edit-token-modal.ok.js +1 -0
  61. package/public/sections/auth/modals/perm-info-popover.ok.js +1 -0
  62. package/public/sections/auth/parts/token-detail.ok.js +1 -0
  63. package/public/sections/auth/parts/token-list.ok.js +1 -0
  64. package/public/sections/db/index.ok.html +1 -0
  65. package/public/sections/db/modals/add-item-modal.ok.js +1 -0
  66. package/public/sections/db/modals/create-env-modal.ok.js +1 -0
  67. package/public/sections/db/modals/create-fts-modal.ok.js +1 -0
  68. package/public/sections/db/modals/create-index-modal.ok.js +1 -0
  69. package/public/sections/db/modals/create-pipeline-modal.ok.js +1 -0
  70. package/public/sections/db/modals/demo-env-modal.ok.js +1 -0
  71. package/public/sections/db/modals/remove-env-modal.ok.js +1 -0
  72. package/public/sections/db/modals/schema-edit-modal.ok.js +1 -0
  73. package/public/sections/db/parts/db-overview.ok.js +1 -0
  74. package/public/sections/db/parts/db-pipelines-panel.ok.js +1 -0
  75. package/public/sections/db/parts/edit-row.ok.js +1 -0
  76. package/public/sections/db/parts/tm-timeline.ok.js +1 -0
  77. package/public/sections/db/parts/type-changelog.ok.js +1 -0
  78. package/public/sections/db/parts/type-list.ok.js +1 -0
  79. package/public/sections/db/parts/type-pipelines-tab.ok.js +1 -0
  80. package/public/sections/db/parts/type-schema-tab.ok.js +1 -0
  81. package/public/sections/db/parts/type-viewer.ok.js +1 -0
  82. package/public/sections/db/parts/type-violations-tab.ok.js +1 -0
  83. package/public/sections/docs/index.ok.html +1 -0
  84. package/public/sections/embeddings/index.ok.html +1 -0
  85. package/public/sections/embeddings/modals/register-model-modal.ok.js +1 -0
  86. package/public/sections/embeddings/parts/embed-create-panel.ok.js +1 -0
  87. package/public/sections/embeddings/parts/embed-embedder-panel.ok.js +1 -0
  88. package/public/sections/embeddings/parts/embed-engine-declaration-editor.ok.js +1 -0
  89. package/public/sections/embeddings/parts/embed-engine-list.ok.js +1 -0
  90. package/public/sections/embeddings/parts/embed-indexer-panel.ok.js +1 -0
  91. package/public/sections/embeddings/parts/embed-lifecycle-bar.ok.js +1 -0
  92. package/public/sections/embeddings/parts/embed-model-catalog.ok.js +1 -0
  93. package/public/sections/embeddings/parts/embed-overview.ok.js +1 -0
  94. package/public/sections/embeddings/parts/embed-search-panel.ok.js +1 -0
  95. package/public/sections/embeddings/parts/embed-worker-panel.ok.js +1 -0
  96. package/public/sections/embeddings/parts/embeddings-engine-panel.ok.js +1 -0
  97. package/public/sections/embeddings/parts/engines-overview.ok.js +1 -0
  98. package/public/sections/embeddings/parts/pipeline-create-panel.ok.js +1 -0
  99. package/public/sections/engines/engine-panel-shared-style.js +1 -0
  100. package/public/sections/engines/engine-ui-utils.js +1 -0
  101. package/public/sections/engines/index.ok.html +1 -0
  102. package/public/sections/engines/modals/engine-modal.ok.js +1 -0
  103. package/public/sections/engines/parts/engine-declaration-editor.ok.js +1 -0
  104. package/public/sections/engines/parts/engine-lifecycle-actions.ok.js +1 -0
  105. package/public/sections/engines/parts/engine-panel-shell.ok.js +1 -0
  106. package/public/sections/engines/parts/engine-resource-card.ok.js +1 -0
  107. package/public/sections/engines/parts/engine-row-item.ok.js +1 -0
  108. package/public/sections/engines/parts/generic-engine-panel.ok.js +1 -0
  109. package/public/sections/files/index.ok.html +1 -0
  110. package/public/sections/files/parts/files-blob-status.ok.js +1 -0
  111. package/public/sections/files/parts/files-collection-list.ok.js +1 -0
  112. package/public/sections/files/parts/files-collection-panel.ok.js +1 -0
  113. package/public/sections/files/parts/files-file-list.ok.js +1 -0
  114. package/public/sections/files/parts/files-overview.ok.js +1 -0
  115. package/public/sections/files/parts/files-path-browser.ok.js +1 -0
  116. package/public/sections/files/parts/files-upload-panel.ok.js +1 -0
  117. package/public/sections/functions/index.ok.html +1 -0
  118. package/public/sections/functions/modals/function-modal.ok.js +1 -0
  119. package/public/sections/functions/parts/function-detail.ok.js +1 -0
  120. package/public/sections/functions/parts/function-logs.ok.js +1 -0
  121. package/public/sections/functions/parts/function-runner.ok.js +1 -0
  122. package/public/sections/functions/parts/functions-list.ok.js +1 -0
  123. package/public/sections/license/index.ok.html +1 -0
  124. package/public/sections/license/parts/license-panel.ok.js +1 -0
  125. package/public/sections/processors/index.ok.html +1 -0
  126. package/public/sections/queue/index.ok.html +1 -0
  127. package/public/sections/queue/modals/create-bucket-modal.ok.js +1 -0
  128. package/public/sections/queue/modals/edit-bucket-modal.ok.js +1 -0
  129. package/public/sections/queue/modals/edit-job-modal.ok.js +1 -0
  130. package/public/sections/queue/modals/enqueue-job-modal.ok.js +1 -0
  131. package/public/sections/queue/modals/job-type-modal.ok.js +1 -0
  132. package/public/sections/queue/parts/ok-job-form.ok.js +1 -0
  133. package/public/sections/queue/parts/queue-buckets.ok.js +1 -0
  134. package/public/sections/queue/parts/queue-job-types.ok.js +1 -0
  135. package/public/sections/queue/parts/queue-jobs.ok.js +1 -0
  136. package/public/sections/queue/parts/queue-types.ok.js +1 -0
  137. package/public/sections/queue/parts/queue-workers.ok.js +1 -0
  138. package/public/sections/sync/index.ok.html +5 -0
  139. package/public/sections/sync/parts/sync-node-detail.ok.js +1 -0
  140. package/public/sections/sync/parts/sync-retention.ok.js +1 -0
  141. package/public/sections/sync/parts/sync-topology.ok.js +1 -0
  142. package/public/sections/system/index.ok.html +1 -0
  143. package/public/sections/system/modals/data-ops-modal.ok.js +1 -0
  144. package/public/sections/system/parts/system-api-panel.ok.js +1 -0
  145. package/public/sections/system/parts/system-auth-panel.ok.js +1 -0
  146. package/public/sections/system/parts/system-log-history.ok.js +1 -0
  147. package/public/sections/system/parts/system-log.ok.js +1 -0
  148. package/public/sections/system/parts/system-status.ok.js +1 -0
  149. package/public/sections/system/parts/system-sync-panel.ok.js +1 -0
  150. package/public/sections/views/index.ok.html +1 -0
  151. package/public/sections/views/modals/create-view-modal.ok.js +1 -0
  152. package/public/sections/views/parts/view-detail.ok.js +1 -0
  153. package/public/sections/views/parts/views-list.ok.js +1 -0
  154. package/public/sections/views/parts/views-overview.ok.js +1 -0
  155. package/public/setup-app.js +1 -0
  156. package/public/setup.html +1 -0
  157. package/public/site.webmanifest +1 -0
  158. package/public/stores/auth-store.js +1 -0
  159. package/public/stores/events-store.js +1 -0
  160. package/public/stores/functions-store.js +1 -0
  161. package/public/stores/okdb-store.js +1 -0
  162. package/public/stores/theme-store.js +1 -0
  163. package/public/styles.css +1 -0
  164. package/public/test-cron-input.html +10 -0
  165. package/public/test-json-input.html +101 -0
  166. package/public/util/permissions.js +1 -0
  167. package/public/util/sift-schema.js +1 -0
  168. package/public/vendor/okjs/ok.esm.min.js +2 -0
  169. package/public/vendor/okjs/toolkit/behavior/async.ok.js +1 -0
  170. package/public/vendor/okjs/toolkit/components/ok-chart.ok.js +1 -0
  171. package/public/vendor/okjs/toolkit/components/ok-doc-viewer.ok.js +1 -0
  172. package/public/vendor/okjs/toolkit/components/ok-marked.ok.js +1 -0
  173. package/public/vendor/okjs/toolkit/components/ok-monaco.ok.js +1 -0
  174. package/public/vendor/okjs/toolkit/core/ok-layer-service.ok.js +1 -0
  175. package/public/vendor/okjs/toolkit/core/ok-layer.ok.js +1 -0
  176. package/public/vendor/okjs/toolkit/core/ok-overlay.ok.js +1 -0
  177. package/public/vendor/okjs/toolkit/core/ok-sandbox.ok.js +1 -0
  178. package/public/vendor/okjs/toolkit/core/transition.ok.js +1 -0
  179. package/public/vendor/okjs/toolkit/core/virtualized.ok.js +1 -0
  180. package/public/vendor/okjs/toolkit/devtools/ok-console-service.ok.js +1 -0
  181. package/public/vendor/okjs/toolkit/devtools/ok-console.ok.js +1 -0
  182. package/public/vendor/okjs/toolkit/devtools/ok-fps-monitor-service.ok.js +1 -0
  183. package/public/vendor/okjs/toolkit/devtools/ok-fps-monitor.ok.js +1 -0
  184. package/public/vendor/okjs/toolkit/devtools/ok-inspector-service.ok.js +1 -0
  185. package/public/vendor/okjs/toolkit/devtools/ok-inspector.ok.js +1 -0
  186. package/public/vendor/okjs/toolkit/devtools/ok-js-tree.ok.js +1 -0
  187. package/public/vendor/okjs/toolkit/devtools/ok-timeline-service.ok.js +1 -0
  188. package/public/vendor/okjs/toolkit/devtools/ok-timeline.ok.js +1 -0
  189. package/public/vendor/okjs/toolkit/docs/doc-viewer.ok.js +1 -0
  190. package/public/vendor/okjs/toolkit/editor/ok-live-component.ok.js +1 -0
  191. package/public/vendor/okjs/toolkit/editor/ok-live-example.ok.js +1 -0
  192. package/public/vendor/okjs/toolkit/editor/ok-live-shell.ok.js +1 -0
  193. package/public/vendor/okjs/toolkit/elements/ok-dropdown.ok.js +1 -0
  194. package/public/vendor/okjs/toolkit/elements/ok-icon.ok.js +1 -0
  195. package/public/vendor/okjs/toolkit/elements/ok-select.ok.js +1 -0
  196. package/public/vendor/okjs/toolkit/elements/ok-table.ok.js +1 -0
  197. package/public/vendor/okjs/toolkit/errors/ok-crash-boundary.ok.js +1 -0
  198. package/public/vendor/okjs/toolkit/errors/ok-crash-info.ok.js +1 -0
  199. package/public/vendor/okjs/toolkit/i18n/i18n-editor-examples.ok.js +1 -0
  200. package/public/vendor/okjs/toolkit/i18n/i18n-editor.ok.js +1 -0
  201. package/public/vendor/okjs/toolkit/i18n/i18n-key-editor-tips.ok.js +1 -0
  202. package/public/vendor/okjs/toolkit/i18n/i18n-key-editor.ok.js +1 -0
  203. package/public/vendor/okjs/toolkit/i18n/i18n-service.ok.js +1 -0
  204. package/public/vendor/okjs/toolkit/i18n/ok-i18n.js +1 -0
  205. package/public/vendor/okjs/toolkit/interaction/ok-contextmenu.ok.js +1 -0
  206. package/public/vendor/okjs/toolkit/interaction/ok-dismiss-service.ok.js +1 -0
  207. package/public/vendor/okjs/toolkit/interaction/ok-draggable.ok.js +1 -0
  208. package/public/vendor/okjs/toolkit/interaction/ok-flyover-panel.ok.js +1 -0
  209. package/public/vendor/okjs/toolkit/interaction/ok-flyover.ok.js +1 -0
  210. package/public/vendor/okjs/toolkit/interaction/ok-highlight-service.ok.js +1 -0
  211. package/public/vendor/okjs/toolkit/interaction/ok-highlight.ok.js +1 -0
  212. package/public/vendor/okjs/toolkit/interaction/ok-hotkeys-service.ok.js +1 -0
  213. package/public/vendor/okjs/toolkit/interaction/ok-picker-service.ok.js +1 -0
  214. package/public/vendor/okjs/toolkit/interaction/ok-popout-service.ok.js +1 -0
  215. package/public/vendor/okjs/toolkit/interaction/ok-popout.ok.js +1 -0
  216. package/public/vendor/okjs/toolkit/interaction/ok-portal-service.ok.js +1 -0
  217. package/public/vendor/okjs/toolkit/interaction/ok-submenu.ok.js +1 -0
  218. package/public/vendor/okjs/toolkit/layout/ok-resizer.ok.js +1 -0
  219. package/public/vendor/okjs/toolkit/manifest.js +1 -0
  220. package/public/vendor/okjs/toolkit/modals/ok-modal-service.ok.js +1 -0
  221. package/public/vendor/okjs/toolkit/modals/ok-modal.ok.js +1 -0
  222. package/public/vendor/okjs/toolkit/modals/ok-toast-service.ok.js +1 -0
  223. package/public/vendor/okjs/toolkit/modals/ok-window.ok.js +1 -0
  224. package/public/vendor/okjs/toolkit/navigation/hash-router.ok.js +1 -0
  225. package/public/vendor/okjs/toolkit/navigation/history-router.ok.js +1 -0
  226. package/public/vendor/okjs/toolkit/navigation/router.ok.js +1 -0
  227. package/public/vendor/okjs/toolkit/sync/reactive-sync-service.ok.js +1 -0
  228. package/public/vendor/okjs/toolkit/sync/reactive-sync.js +1 -0
  229. package/public/vendor/okjs/toolkit/theming/blocks/ok-design-button.css.js +1 -0
  230. package/public/vendor/okjs/toolkit/theming/blocks/ok-design-input.css.js +1 -0
  231. package/public/vendor/okjs/toolkit/theming/ok-design-style.js +1 -0
  232. package/public/vendor/okjs/toolkit/theming/ok-design-vars.js +1 -0
  233. package/public/vendor/okjs/toolkit/theming/ok-design.ok.js +1 -0
  234. package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-input.ok.js +1 -0
  235. package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-service.ok.js +1 -0
  236. package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-style.js +1 -0
  237. package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-utils.js +1 -0
  238. package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-variable.ok.js +1 -0
  239. package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-vm.js +1 -0
  240. package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor.ok.js +1 -0
  241. package/public/vendor/okjs/toolkit/theming/ok-theme.ok.js +1 -0
  242. package/public/view-models/type-query-vm.js +1 -0
  243. package/types/environment.d.ts +130 -0
  244. package/types/errors.d.ts +98 -0
  245. package/types/features/admin.d.ts +4 -0
  246. package/types/features/api.d.ts +18 -0
  247. package/types/features/auth.d.ts +31 -0
  248. package/types/features/embeddings.d.ts +39 -0
  249. package/types/features/engines.d.ts +23 -0
  250. package/types/features/files.d.ts +29 -0
  251. package/types/features/fts.d.ts +25 -0
  252. package/types/features/functions.d.ts +23 -0
  253. package/types/features/mcp.d.ts +17 -0
  254. package/types/features/pipelines.d.ts +19 -0
  255. package/types/features/queue.d.ts +189 -0
  256. package/types/features/sync.d.ts +34 -0
  257. package/types/features/time-machine.d.ts +32 -0
  258. package/types/features/views.d.ts +16 -0
  259. package/types/index.d.ts +153 -0
  260. package/types/options.d.ts +202 -0
@@ -0,0 +1 @@
1
+ const _0x31845a=_0x2c45;(function(_0x594d19,_0x28d6c3){const _0x4f4e4b=_0x2c45,_0x2d77cb=_0x594d19();while(!![]){try{const _0x1b8914=parseInt(_0x4f4e4b(0xf3))/0x1+parseInt(_0x4f4e4b(0x182))/0x2*(-parseInt(_0x4f4e4b(0x16a))/0x3)+-parseInt(_0x4f4e4b(0x17b))/0x4+parseInt(_0x4f4e4b(0x105))/0x5*(parseInt(_0x4f4e4b(0x154))/0x6)+parseInt(_0x4f4e4b(0x166))/0x7+parseInt(_0x4f4e4b(0x145))/0x8*(parseInt(_0x4f4e4b(0x11a))/0x9)+-parseInt(_0x4f4e4b(0x178))/0xa*(parseInt(_0x4f4e4b(0x116))/0xb);if(_0x1b8914===_0x28d6c3)break;else _0x2d77cb['push'](_0x2d77cb['shift']());}catch(_0x29a7e5){_0x2d77cb['push'](_0x2d77cb['shift']());}}}(_0x4114,0x93656));function _0x2c45(_0x489205,_0x411038){_0x489205=_0x489205-0xf3;const _0x41148f=_0x4114();let _0x2c4504=_0x41148f[_0x489205];return _0x2c4504;}function _0x4114(){const _0x37d992=['pipelines','30gLWcvd','/env/','var(--okdb-sky)','1840812gsWunI','envName','item:update','$watch','all','isArray','resolve','2nJpvTL','pageSize','has','recentChanges','degraded','meta','898545KRgVSI','success','_reloadTypes','now','loadViolations','Failed\x20to\x20load\x20pipelines','index:registered','engine:installed','\x20·\x20','engines','var(--okdb-warning)','label','pipelineLabel','_unsubs','apiBase','recentError','\x0a<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:20px;\x20max-width:860px;\x22>\x0a\x0a\x20\x20<!--\x20Header\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:10px;\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22font-weight:600;\x20font-size:18px;\x22>Database\x20Overview</div>\x0a\x20\x20\x20\x20<if\x20:=\x22recentBusy\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.4;\x22>updating…</span>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20<div\x20style=\x22margin-left:auto;\x22>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22loadRecent()\x22\x20:disabled=\x22recentBusy\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:12px;\x20padding:5px\x2012px;\x20opacity:.75;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20↻\x20Refresh\x0a\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Stat\x20cards\x20row\x20-->\x0a\x20\x20<div\x20class=\x22ov-stat-row\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22ov-stat-card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-stat-label\x22>DB\x20Size</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-stat-value\x22\x20style=\x22color:var(--accent);\x22>{{\x20approxSize\x20}}</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22ov-stat-card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-stat-label\x22>Clock</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-stat-value\x22\x20style=\x22font-family:monospace;\x20font-size:18px;\x22>{{\x20fmt(info?.clock)\x20}}</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22ov-stat-card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-stat-label\x22>User\x20Types</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-stat-value\x22\x20style=\x22color:var(--okdb-purple);\x22>{{\x20types.length\x20}}</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20class=\x22ov-stat-card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-stat-label\x22>Total\x20Records</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-stat-value\x22\x20style=\x22color:var(--okdb-success);\x22>{{\x20fmt(totalRecords)\x20}}</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Empty\x20state\x20-->\x0a\x20\x20<if\x20:=\x22types.length\x20===\x200\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:14px;\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20Standard\x20empty\x20hint\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-empty\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:30px;\x20margin-bottom:12px;\x22>🗄️</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-weight:600;\x20font-size:15px;\x20margin-bottom:5px;\x22>No\x20types\x20registered\x20yet</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:13px;\x20opacity:.6;\x20line-height:1.7;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Use\x20<b>Register\x20Type\x20+</b>\x20in\x20the\x20sidebar\x20to\x20create\x20your\x20first\x20collection.<br>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Types\x20are\x20strongly-typed\x20document\x20collections\x20stored\x20in\x20LMDB.\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<!--\x20Demo\x20data\x20card\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-demo-card\x22\x20@click=\x22openDemoModal()\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-demo-card__aurora\x22></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22position:relative;\x20z-index:1;\x20display:flex;\x20flex-direction:column;\x20align-items:center;\x20gap:10px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-demo-card__sparkle\x22>✦</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-demo-card__title\x22>Generate\x20Demo\x20Environment</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-demo-card__desc\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Instantly\x20populate\x20a\x20new\x20environment\x20with\x20realistic\x20data,\x20indexes,\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20and\x20full-text\x20search\x20—\x20ready\x20to\x20explore\x20in\x20seconds.\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-demo-card__badges\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22ov-demo-badge\x22\x20style=\x22color:var(--okdb-success);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-success)\x2020%,\x20transparent);\x20background:color-mix(in\x20srgb,\x20var(--okdb-success)\x207%,\x20transparent);\x22>🛒\x20E-Commerce</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22ov-demo-badge\x22\x20style=\x22color:var(--okdb-accent);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-accent)\x2020%,\x20transparent);\x20background:color-mix(in\x20srgb,\x20var(--okdb-accent)\x207%,\x20transparent);\x22>📊\x20Analytics</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22ov-demo-badge\x22\x20style=\x22color:var(--okdb-purple);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-purple)\x2020%,\x20transparent);\x20background:color-mix(in\x20srgb,\x20var(--okdb-purple)\x207%,\x20transparent);\x22>📝\x20Content\x20Hub</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22ov-demo-badge\x22\x20style=\x22color:var(--okdb-warning);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-warning)\x2020%,\x20transparent);\x20background:color-mix(in\x20srgb,\x20var(--okdb-warning)\x207%,\x20transparent);\x22>👥\x20Team\x20Directory</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22ov-demo-badge\x22\x20style=\x22color:var(--okdb-orange);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-orange)\x2020%,\x20transparent);\x20background:color-mix(in\x20srgb,\x20var(--okdb-orange)\x207%,\x20transparent);\x22>🗺️\x20City\x20Explorer</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-demo-card__cta\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>Choose\x20a\x20preset</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22margin-left:6px;\x20font-size:14px;\x22>→</span>\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</div>\x0a\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Types\x20table\x20-->\x0a\x20\x20<if\x20:=\x22types.length\x20>\x200\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22ov-card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-card-head\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-weight:600;\x20font-size:14px;\x22>Types</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.45;\x20margin-left:auto;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20types.length\x20}}\x20user&nbsp;·&nbsp;{{\x20systemTypes.length\x20}}\x20system\x0a\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<table\x20class=\x22ov-table\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<thead>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<tr>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th>Name</th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th\x20style=\x22text-align:right;\x22>Records</th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th\x20style=\x22text-align:right;\x22>Pages</th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th\x20style=\x22text-align:right;\x22>Indexes</th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th></th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</tr>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</thead>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<tbody>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<tr\x20as=\x22repeat\x22\x20:of=\x22types\x22\x20let:item=\x22t\x22\x20class=\x22ov-row\x22\x20@click=\x22select(t)\x22\x20title=\x22Open\x20in\x20type\x20viewer\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-family:monospace;\x20font-size:13px;\x22>{{\x20t.type\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20style=\x22text-align:right;\x20color:var(--accent);\x20font-weight:600;\x22>{{\x20fmt(t.count)\x20}}</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20style=\x22text-align:right;\x20opacity:.5;\x20font-size:12px;\x22>{{\x20fmt(typePages(t.type))\x20}}</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20style=\x22text-align:right;\x20font-size:12px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22typeIndexCount(t.type)\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20padding:1px\x207px;\x20border-radius:999px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-purple)\x2033%,\x20transparent);\x20color:var(--okdb-purple);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-size:11px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x22>{{\x20typeIndexCount(t.type)\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:=\x22typeIndexCount(t.type)\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.3;\x22>—</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</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20style=\x22text-align:right;\x20opacity:.3;\x20font-size:11px;\x20padding-right:16px;\x22>→</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</tr>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</tbody>\x0a\x20\x20\x20\x20\x20\x20</table>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Violations\x20summary\x20-->\x0a\x20\x20<if\x20:=\x22totalViolations\x20>\x200\x20||\x20violationsBusy\x20||\x20violationsError\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22ov-card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-card-head\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-weight:600;\x20font-size:14px;\x22>Schema\x20Violations</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22totalViolations\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:11px;\x20padding:2px\x2010px;\x20border-radius:999px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-danger)\x2033%,\x20transparent);\x20color:var(--okdb-danger);\x20background:color-mix(in\x20srgb,\x20var(--okdb-danger)\x205%,\x20transparent);\x20font-weight:600;\x22>{{\x20totalViolations\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.45;\x20margin-left:auto;\x22>across\x20all\x20types\x20in\x20{{\x20envName\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22loadViolations()\x22\x20:disabled=\x22violationsBusy\x22\x20style=\x22font-size:12px;\x20padding:5px\x2012px;\x20opacity:.75;\x22>↻</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22violationsBusy\x20&&\x20violations.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:14px\x2016px;\x20font-size:12px;\x20opacity:.45;\x22>Loading…</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22violationsError\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:10px\x2016px;\x20color:var(--okdb-danger);\x20font-size:12px;\x22>{{\x20violationsError\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22!violationsBusy\x20&&\x20!violationsError\x20&&\x20violationsByType.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:14px\x2016px;\x20font-size:12px;\x20opacity:.4;\x22>No\x20violations.</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22violationsByType.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22violationsByType\x22\x20let:item=\x22grp\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20type\x20group\x20header\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-viol-group\x22\x20@click=\x22toggleViolationGroup(grp.type)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22ov-viol-arrow\x22\x20:style=\x22expandedViolationType\x20===\x20grp.type\x20?\x20\x27transform:rotate(90deg)\x27\x20:\x20\x27\x27\x22>›</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-family:monospace;\x20font-size:13px;\x20flex:1;\x22>{{\x20grp.type\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:11px;\x20padding:2px\x208px;\x20border-radius:999px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-danger)\x2033%,\x20transparent);\x20color:var(--okdb-danger);\x20background:color-mix(in\x20srgb,\x20var(--okdb-danger)\x205%,\x20transparent);\x20margin-right:8px;\x22>{{\x20grp.count\x20}}</span>\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:stop=\x22navigateToType(grp.type)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:2px\x208px;\x20border-radius:5px;\x20border:1px\x20solid\x20var(--okdb-app-border);\x20background:transparent;\x20color:var(--okdb-sky);\x20cursor:pointer;\x20opacity:.8;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Open\x20Schema\x20tab\x20for\x20this\x20type\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>Schema\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<!--\x20expanded\x20violations\x20for\x20this\x20type\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22expandedViolationType\x20===\x20grp.type\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-viol-list\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22grp.items\x22\x20let:item=\x22v\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-viol-row\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-family:monospace;\x20font-size:11px;\x20color:var(--okdb-json-key);\x20flex:1;\x20overflow:hidden;\x20text-overflow:ellipsis;\x20white-space:nowrap;\x22>{{\x20v.key\x20}}</span>\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:11px;\x20opacity:.45;\x20white-space:nowrap;\x20margin-left:8px;\x22>{{\x20(v.errors\x20??\x20[]).length\x20||\x20(v.errorCount\x20??\x200)\x20}}\x20error(s)</span>\x0a\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</each>\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</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\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Time\x20Machine\x20card\x20-->\x0a\x20\x20<div\x20class=\x22card\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20justify-content:space-between;\x20margin-bottom:8px;\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-weight:600;\x20font-size:13px;\x22>⏱\x20Time\x20Machine</span>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22!tmStatus\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:11px;\x20opacity:.4;\x22>loading…</span>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22tmStatus\x20&&\x20!tmBusy\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22tmStatus.enabled\x20?\x20disableTM()\x20:\x20enableTM()\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:style=\x22\x27font-size:11px;\x20padding:2px\x2010px;\x20color:\x27\x20+\x20(tmStatus.enabled\x20?\x20\x27var(--okdb-danger)\x27\x20:\x20\x27var(--okdb-success)\x27)\x20+\x20\x27;\x20border-color:\x27\x20+\x20(tmStatus.enabled\x20?\x20\x27color-mix(in\x20srgb,\x20var(--okdb-danger)\x2033%,\x20transparent)\x27\x20:\x20\x27color-mix(in\x20srgb,\x20var(--okdb-success)\x2033%,\x20transparent)\x27)\x20+\x20\x27;\x27\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20>{{\x20tmStatus.enabled\x20?\x20\x27Disable\x27\x20:\x20\x27Enable\x27\x20}}</button>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22tmBusy\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:11px;\x20opacity:.5;\x22>{{\x20tmScanMsg\x20||\x20\x27…\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<if\x20:=\x22tmStatus\x20&&\x20tmStatus.enabled\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.7;\x20display:flex;\x20flex-direction:column;\x20gap:3px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span>tracking\x20since\x20clock\x20{{\x20tmStatus.startClock\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22tmStatus.lastProcessedClock\x20!==\x20tmStatus.envClock\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>last\x20processed:\x20{{\x20tmStatus.lastProcessedClock\x20}}\x20·\x20env\x20at:\x20{{\x20tmStatus.envClock\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22tmStatus.lastProcessedClock\x20===\x20tmStatus.envClock\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>processed\x20through\x20clock\x20{{\x20tmStatus.lastProcessedClock\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span>{{\x20tmStatus.headCount\x20}}\x20heads</span>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20<if\x20:=\x22tmStatus\x20&&\x20!tmStatus.enabled\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.4;\x22>disabled</span>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20</div>\x0a\x0a\x20\x20<div\x20class=\x22ov-card\x22\x20style=\x22overflow:visible;\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22ov-card-head\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-weight:600;\x20font-size:14px;\x22>Pipelines</span>\x0a\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.45;\x20margin-left:auto;\x22>overview\x20highlights\x20for\x20the\x20current\x20environment</span>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20style=\x22padding:16px;\x20display:flex;\x20flex-direction:column;\x20gap:14px;\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-pipelines-headline\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:6px;\x20min-width:0;\x20flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:8px;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:15px;\x20font-weight:600;\x20color:var(--okdb-app-fg);\x22>{{\x20pipelineSummaryText\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22pipelineHealthCounts.error\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22ov-pipeline-pill\x22\x20:style=\x22\x27color:var(--okdb-danger);border-color:var(--okdb-danger-deep-border);background:#450a0a33;\x27\x22>{{\x20pipelineHealthCounts.error\x20}}\x20error</span>\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\x20\x20<if\x20:=\x22pipelineHealthCounts.degraded\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22ov-pipeline-pill\x22\x20:style=\x22\x27color:#fcd34d;border-color:#854d0e;background:#451a0333;\x27\x22>{{\x20pipelineHealthCounts.degraded\x20}}\x20degraded</span>\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\x20\x20<if\x20:=\x22pipelineHealthCounts.online\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22ov-pipeline-pill\x22\x20:style=\x22\x27color:#86efac;border-color:#166534;background:#052e1633;\x27\x22>{{\x20pipelineHealthCounts.online\x20}}\x20online</span>\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\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20color:var(--okdb-app-fg-muted);\x20line-height:1.6;\x20max-width:640px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20The\x20overview\x20should\x20only\x20surface\x20high-signal\x20pipeline\x20highlights.\x20Open\x20the\x20dedicated\x20workspace\x20when\x20you\x20want\x20the\x20full\x20grouped\x20pipeline\x20list\x20and\x20member\x20details.\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;\x20flex-wrap:wrap;\x20align-items:center;\x20justify-content:flex-end;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22loadPipelines()\x22\x20:disabled=\x22pipelinesBusy\x22\x20style=\x22font-size:12px;\x20padding:5px\x2012px;\x20opacity:.75;\x22>↻\x20Refresh</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22openPipelinesWorkspace()\x22\x20style=\x22font-size:12px;\x20padding:5px\x2012px;\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-indigo)\x2033%,\x20transparent);\x20color:var(--okdb-indigo);\x22>Open\x20pipelines\x20workspace\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:=\x22pipelinesError\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-pipelines-error\x22>{{\x20pipelinesError\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22pipelinesBusy\x20&&\x20pipelines.length\x20===\x200\x20&&\x20!pipelinesError\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.45;\x22>Loading\x20pipeline\x20highlights…</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22!pipelinesBusy\x20&&\x20pipelines.length\x20===\x200\x20&&\x20!pipelinesError\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-pipelines-empty\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:24px;\x20opacity:.3;\x22>⛓</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:14px;\x20font-weight:600;\x20opacity:.78;\x22>No\x20pipelines\x20in\x20{{\x20envName\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.5;\x20max-width:520px;\x20line-height:1.7;\x20text-align:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Pipelines\x20will\x20appear\x20here\x20once\x20created\x20or\x20synced.\x20This\x20frontpage\x20intentionally\x20stays\x20compact\x20and\x20only\x20shows\x20a\x20small\x20highlight\x20list.\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</if>\x0a\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22pipelineHighlights.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-pipelines-list\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22pipelineHighlights\x22\x20let:item=\x22pipeline\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22ov-pipeline-highlight\x22\x20@click=\x22openPipelinesWorkspace(pipeline)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:9px;\x20min-width:0;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22\x27width:8px;height:8px;border-radius:50%;flex-shrink:0;background:\x27\x20+\x20healthColor(pipeline.health)\x22></span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:13px;\x20font-weight:600;\x20overflow:hidden;\x20text-overflow:ellipsis;\x20white-space:nowrap;\x22>{{\x20pipelineLabel(pipeline)\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22\x27font-size:11px;color:\x27\x20+\x20healthColor(pipeline.health)\x20+\x20\x27;opacity:.95;white-space:nowrap;\x27\x22>{{\x20pipeline.health\x20||\x20\x27unknown\x27\x20}}</span>\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\x20\x20<div\x20style=\x22display:flex;\x20gap:12px;\x20flex-wrap:wrap;\x20margin-top:6px;\x20font-size:11px;\x20color:var(--okdb-app-fg-muted);\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span><span\x20style=\x22opacity:.6;\x22>Members:</span>\x20<span\x20style=\x22color:var(--okdb-app-fg);\x22>{{\x20fmt(pipeline.engines?.length\x20||\x200)\x20}}</span></span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22pipeline.status\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span><span\x20style=\x22opacity:.6;\x22>Status:</span>\x20<span\x20:style=\x22\x27color:\x27\x20+\x20statusColor(pipeline.status)\x22>{{\x20pipeline.status\x20}}</span></span>\x0a\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<span\x20style=\x22overflow:hidden;\x20text-overflow:ellipsis;\x20white-space:nowrap;\x22>{{\x20pipelineRoleSummary(pipeline)\x20}}</span>\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</button>\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\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22pipelines.length\x20>\x20pipelineHighlights.length\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20color:var(--okdb-app-fg-muted);\x20opacity:.75;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Showing\x20{{\x20pipelineHighlights.length\x20}}\x20of\x20{{\x20pipelines.length\x20}}\x20pipelines.\x20Open\x20the\x20dedicated\x20workspace\x20for\x20the\x20full\x20inventory.\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\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Recent\x20activity\x20-->\x0a\x20\x20<if\x20:=\x22recentChanges.length\x20>\x200\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22ov-card\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22ov-card-head\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-weight:600;\x20font-size:14px;\x22>Recent\x20Activity</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.4;\x20margin-left:auto;\x22>last\x20{{\x20recentChanges.length\x20}}\x20changes</span>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<table\x20style=\x22width:100%;\x20border-collapse:collapse;\x20font-size:12px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<tbody>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<tr\x20as=\x22repeat\x22\x20:of=\x22recentChanges\x22\x20let:item=\x22ch\x22\x20class=\x22ov-row\x20ov-row--sm\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20class=\x22ov-ch-td\x22\x20style=\x22text-align:right;\x20width:60px;\x20font-family:monospace;\x20opacity:.4;\x20padding-left:16px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20ch.clock\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20class=\x22ov-ch-td\x22\x20style=\x22width:100px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22\x27font-size:10px;\x20padding:2px\x206px;\x20border-radius:3px;\x20border:1px\x20solid;\x20color:\x27+actionColor(ch.action)+\x27;\x20border-color:\x27+actionColor(ch.action)+\x2755;\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20actionLabel(ch.action)\x20}}\x0a\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</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20class=\x22ov-ch-td\x22\x20style=\x22font-family:monospace;\x20font-size:11px;\x20opacity:.7;\x20max-width:110px;\x20overflow:hidden;\x20text-overflow:ellipsis;\x20white-space:nowrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20ch.type\x20||\x20\x27—\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20class=\x22ov-ch-td\x22\x20style=\x22font-family:monospace;\x20font-size:11px;\x20opacity:.45;\x20max-width:160px;\x20overflow:hidden;\x20text-overflow:ellipsis;\x20white-space:nowrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20ch.key\x20||\x20\x27\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20class=\x22ov-ch-td\x22\x20style=\x22text-align:right;\x20opacity:.35;\x20white-space:nowrap;\x20font-size:11px;\x20padding-right:16px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20relTime(ch.timestamp)\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</tr>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</tbody>\x0a\x20\x20\x20\x20\x20\x20</table>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a</div>\x0a','indexes','5RNwBvX','info','var(--okdb-danger)','engine:stopped','add','No\x20members','okdb','expandedViolationType','loadRecent','push','system:poke','types','data','error','sync:apply','catch','select','3736865uuYZaN','stores','\x22\x20is\x20ready!','just\x20now','18qBQkNE','entries','$vars','\x20engine','stopped','toast','tmStatus','idle','selectEnv','toLowerCase','env','modal','var(--okdb-purple)','var(--okdb-accent)','default','length','$ok','Failed\x20to\x20load\x20violations','replace','/violations','_reloadTimer','localeCompare','toLocaleDateString','violations','$dispatch','pipeline:start','building','set','type','loadTMStatus','type:registered','system:clock_change','s\x20ago','filter','tmScanMsg','violationsBusy','loadPipelines','lastProcessedClock','slice','count','lastPageNumber','result','/time-machine/enable','1271568GVJgpp','online','API','sort','shared','pipelinesError','<span\x20style=\x22background:linear-gradient(135deg,var(--okdb-accent),var(--okdb-purple)\x2050%,var(--okdb-success));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;font-weight:700;font-size:15px;\x22>✦\x20Demo\x20Environment</span>','name','json','pipeline:delete','toFixed','$router','join','recentBusy','keys','389478QAbNSn','pipelineEngineCount','type:drop','scanning…','engine:uninstalled','round','POST','tmBusy','reduce','running','startsWith','violationsError','pipeline:stop','/changelog?limit=10','_scheduleReload','Unnamed\x20pipeline','includes','pipelineSeverity','7171003nrDkLu','selectedEnv','✦\x20Demo\x20environment\x20\x22','reloadEnvs','668091rWvxaO','open','message','var(--okdb-app-fg-muted)','var(--okdb-success)','health','/time-machine/status','\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-stat-row\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20grid;\x0a\x20\x20\x20\x20\x20\x20\x20\x20grid-template-columns:\x20repeat(4,\x201fr);\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2012px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-stat-card\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-surface);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2016px\x2018px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-direction:\x20column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x206px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20box-shadow:\x200\x202px\x208px\x20#0003;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-stat-label\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20text-transform:\x20uppercase;\x0a\x20\x20\x20\x20\x20\x20\x20\x20letter-spacing:\x20.06em;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.5;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-stat-value\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2022px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-weight:\x20700;\x0a\x20\x20\x20\x20\x20\x20\x20\x20line-height:\x201;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-card\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-surface);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20overflow:\x20hidden;\x0a\x20\x20\x20\x20\x20\x20\x20\x20box-shadow:\x200\x202px\x208px\x20#0003;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-card-head\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2013px\x2016px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2010px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-table\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20width:\x20100%;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-collapse:\x20collapse;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2013px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-table\x20th\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x207px\x2016px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20text-align:\x20left;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-weight:\x20500;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20text-transform:\x20uppercase;\x0a\x20\x20\x20\x20\x20\x20\x20\x20letter-spacing:\x20.05em;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.4;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-bg);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-table\x20td\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x209px\x2016px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x201px\x20solid\x20var(--okdb-app-surface-2);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-row\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20cursor:\x20pointer;\x0a\x20\x20\x20\x20\x20\x20\x20\x20transition:\x20background\x20.1s;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-row:hover\x20td\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20#ffffff07;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-table\x20tbody\x20tr:last-child\x20td\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x20none;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-ch-td\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x206px\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x201px\x20solid\x20var(--okdb-app-surface);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-pipelines-headline\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20justify-content:\x20space-between;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20flex-start;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-wrap:\x20wrap;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-pipeline-pill\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x202px\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x20999px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid;\x0a\x20\x20\x20\x20\x20\x20\x20\x20white-space:\x20nowrap;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-pipelines-error\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-danger);\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2010px\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-danger)\x2033%,\x20transparent);\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20color-mix(in\x20srgb,\x20var(--okdb-danger)\x205%,\x20transparent);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-pipelines-empty\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20dashed\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2024px\x2020px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-direction:\x20column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-pipelines-list\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20grid;\x0a\x20\x20\x20\x20\x20\x20\x20\x20grid-template-columns:\x20repeat(auto-fit,\x20minmax(240px,\x201fr));\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2010px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-pipeline-highlight\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20width:\x20100%;\x0a\x20\x20\x20\x20\x20\x20\x20\x20text-align:\x20left;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-bg-deep);\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2011px\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20cursor:\x20pointer;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-pipeline-highlight:hover\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-color:\x20var(--okdb-app-border-strong);\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-bg-deep);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20tbody\x20.ov-row--sm:last-child\x20.ov-ch-td\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x20none;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-viol-group\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x209px\x2016px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x201px\x20solid\x20var(--okdb-app-surface-2);\x0a\x20\x20\x20\x20\x20\x20\x20\x20cursor:\x20pointer;\x0a\x20\x20\x20\x20\x20\x20\x20\x20transition:\x20background\x20.1s;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-viol-group:hover\x20{\x20background:\x20#ffffff07;\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-viol-arrow\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20inline-block;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2014px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.5;\x0a\x20\x20\x20\x20\x20\x20\x20\x20transition:\x20transform\x20.15s;\x0a\x20\x20\x20\x20\x20\x20\x20\x20width:\x2014px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-shrink:\x200;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-viol-list\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-bg-deep);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x201px\x20solid\x20var(--okdb-app-surface-2);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-viol-row\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x206px\x2016px\x206px\x2038px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x201px\x20solid\x20var(--okdb-app-surface);\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-viol-row:last-child\x20{\x20border-bottom:\x20none;\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-empty\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20dashed\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2014px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2030px\x2032px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20text-align:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.7;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20/*\x20──\x20Demo\x20data\x20card\x20──\x20*/\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-demo-card\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20position:\x20relative;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2016px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2028px\x2024px\x2024px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20text-align:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20cursor:\x20pointer;\x0a\x20\x20\x20\x20\x20\x20\x20\x20overflow:\x20hidden;\x0a\x20\x20\x20\x20\x20\x20\x20\x20transition:\x20border-color\x20.25s,\x20box-shadow\x20.25s,\x20transform\x20.2s;\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-bg-deep);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-demo-card:hover\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-color:\x20color-mix(in\x20srgb,\x20var(--okdb-accent)\x2053%,\x20transparent);\x0a\x20\x20\x20\x20\x20\x20\x20\x20box-shadow:\x200\x200\x200\x201px\x20color-mix(in\x20srgb,\x20var(--okdb-accent)\x2013%,\x20transparent),\x200\x208px\x2040px\x20color-mix(in\x20srgb,\x20var(--okdb-accent)\x209%,\x20transparent),\x200\x200\x2080px\x20color-mix(in\x20srgb,\x20var(--okdb-purple)\x204%,\x20transparent);\x0a\x20\x20\x20\x20\x20\x20\x20\x20transform:\x20translateY(-2px);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-demo-card__aurora\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20position:\x20absolute;\x0a\x20\x20\x20\x20\x20\x20\x20\x20inset:\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20radial-gradient(ellipse\x20at\x2020%\x2050%,\x20color-mix(in\x20srgb,\x20var(--okdb-accent)\x204%,\x20transparent),\x20transparent\x2055%),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20radial-gradient(ellipse\x20at\x2080%\x2030%,\x20color-mix(in\x20srgb,\x20var(--okdb-purple)\x204%,\x20transparent),\x20transparent\x2055%),\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20radial-gradient(ellipse\x20at\x2050%\x2090%,\x20color-mix(in\x20srgb,\x20var(--okdb-success)\x204%,\x20transparent),\x20transparent\x2055%);\x0a\x20\x20\x20\x20\x20\x20\x20\x20pointer-events:\x20none;\x0a\x20\x20\x20\x20\x20\x20\x20\x20animation:\x20ov-aurora\x208s\x20ease-in-out\x20infinite\x20alternate;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-demo-card__sparkle\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2026px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20linear-gradient(135deg,\x20var(--okdb-accent),\x20var(--okdb-purple)\x2040%,\x20var(--okdb-success));\x0a\x20\x20\x20\x20\x20\x20\x20\x20-webkit-background-clip:\x20text;\x0a\x20\x20\x20\x20\x20\x20\x20\x20-webkit-text-fill-color:\x20transparent;\x0a\x20\x20\x20\x20\x20\x20\x20\x20background-clip:\x20text;\x0a\x20\x20\x20\x20\x20\x20\x20\x20animation:\x20ov-hue\x206s\x20linear\x20infinite;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-demo-card__title\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2017px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-weight:\x20700;\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20linear-gradient(135deg,\x20var(--okdb-app-fg-strong),\x20var(--okdb-accent));\x0a\x20\x20\x20\x20\x20\x20\x20\x20-webkit-background-clip:\x20text;\x0a\x20\x20\x20\x20\x20\x20\x20\x20-webkit-text-fill-color:\x20transparent;\x0a\x20\x20\x20\x20\x20\x20\x20\x20background-clip:\x20text;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-demo-card__desc\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2013px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.55;\x0a\x20\x20\x20\x20\x20\x20\x20\x20max-width:\x20380px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20line-height:\x201.65;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-demo-card__badges\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-wrap:\x20wrap;\x0a\x20\x20\x20\x20\x20\x20\x20\x20justify-content:\x20center;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-demo-badge\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x203px\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x20999px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-weight:\x20500;\x0a\x20\x20\x20\x20\x20\x20\x20\x20transition:\x20transform\x20.15s;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-demo-card:hover\x20.ov-demo-badge\x20{\x20transform:\x20scale(1.05);\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-demo-card__cta\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20margin-top:\x204px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2013px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-weight:\x20600;\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-accent);\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.8;\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20justify-content:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20transition:\x20opacity\x20.15s;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-overview\x20.ov-demo-card:hover\x20.ov-demo-card__cta\x20{\x20opacity:\x201;\x20}\x0a\x20\x20\x20\x20\x20\x20@keyframes\x20ov-hue\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20from\x20{\x20filter:\x20hue-rotate(0deg);\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20to\x20\x20\x20{\x20filter:\x20hue-rotate(360deg);\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20@keyframes\x20ov-aurora\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20from\x20{\x20opacity:\x20.7;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20to\x20\x20\x20{\x20opacity:\x201.3;\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20','engine:error','pipelinesBusy','pages','m\x20ago','reloadOverviewData'];_0x4114=function(){return _0x37d992;};return _0x4114();}import _0x151063 from'../../../stores/events-store.js';import _0x2f4db6 from'../modals/demo-env-modal.ok.js';export default{'tag':'db-overview','dependencies':[_0x2f4db6],'attr':{'stats':{}},'context':_0x5213ef=>({'recentChanges':[],'recentBusy':!0x1,'recentError':null,'pipelines':[],'pipelinesBusy':!0x1,'pipelinesError':null,'violations':[],'violationsBusy':!0x1,'violationsError':null,'expandedViolationType':null,'tmStatus':null,'tmBusy':!0x1,'tmScanMsg':'',get 'info'(){const _0x3241e7=_0x2c45;return _0x5213ef[_0x3241e7(0x12a)]['stores']['okdb']['info'];},get 'types'(){const _0x21f769=_0x2c45;return(_0x5213ef[_0x21f769(0x12a)][_0x21f769(0x117)]['okdb'][_0x21f769(0x110)]||[])['filter'](_0x51dfa7=>!_0x51dfa7['type'][_0x21f769(0x15e)]('~'))[_0x21f769(0x148)]((_0x3b1646,_0x53b227)=>_0x3b1646[_0x21f769(0x136)][_0x21f769(0x12f)](_0x53b227[_0x21f769(0x136)]));},get 'systemTypes'(){const _0x1b420a=_0x2c45;return(_0x5213ef['$ok']['stores'][_0x1b420a(0x10b)][_0x1b420a(0x110)]||[])[_0x1b420a(0x13b)](_0x5d1064=>_0x5d1064[_0x1b420a(0x136)][_0x1b420a(0x15e)]('~'));},get 'envName'(){const _0x456201=_0x2c45;return _0x5213ef[_0x456201(0x12a)][_0x456201(0x117)][_0x456201(0x10b)]['selectedEnv']||_0x456201(0x128);},get 'totalRecords'(){const _0x46d8af=_0x2c45;return(_0x5213ef[_0x46d8af(0x12a)][_0x46d8af(0x117)][_0x46d8af(0x10b)][_0x46d8af(0x110)]||[])[_0x46d8af(0x13b)](_0x10bce9=>!_0x10bce9[_0x46d8af(0x136)][_0x46d8af(0x15e)]('~'))[_0x46d8af(0x15c)]((_0x10036b,_0x133cf4)=>_0x10036b+(_0x133cf4[_0x46d8af(0x141)]||0x0),0x0);},get 'approxSize'(){const _0x5866d7=_0x2c45,_0x3c5173=this['info']?.[_0x5866d7(0x142)],_0x11687a=this[_0x5866d7(0x106)]?.[_0x5866d7(0x183)];if(!_0x3c5173||!_0x11687a)return'--';let _0x37a9fa=_0x3c5173*_0x11687a;const _0x19ef45=['B','KB','MB','GB','TB'];let _0x438e3b=0x0;for(;_0x37a9fa>=0x400&&_0x438e3b<_0x19ef45[_0x5866d7(0x129)]-0x1;)_0x37a9fa/=0x400,_0x438e3b++;return _0x37a9fa[_0x5866d7(0x14f)](0x2)+'\x20'+_0x19ef45[_0x438e3b];},'typeIndexCount'(_0xdba4c2){const _0x32d333=_0x2c45,_0x23624d=this[_0x32d333(0x106)]?.[_0x32d333(0x110)]?.[_0xdba4c2]?.[_0x32d333(0x104)];return _0x23624d?Object[_0x32d333(0x153)](_0x23624d)[_0x32d333(0x129)]:0x0;},'typePages'(_0x588d0b){const _0x1a3731=_0x2c45;return this[_0x1a3731(0x106)]?.[_0x1a3731(0x110)]?.[_0x588d0b]?.[_0x1a3731(0x111)]?.[_0x1a3731(0x174)]??null;},'select'(_0x6523e8){const _0xa89ba4=_0x2c45;_0x5213ef[_0xa89ba4(0x132)]('select',_0x6523e8);},async 'loadRecent'(){const _0x48f964=_0x2c45;this[_0x48f964(0x152)]=!0x0,this[_0x48f964(0x102)]=null;try{const _0x1fadf6=await fetch(_0x5213ef[_0x48f964(0x12a)][_0x48f964(0x117)][_0x48f964(0x10b)][_0x48f964(0x101)]+_0x48f964(0x161));if(_0x1fadf6['ok']){const _0xe65a37=await _0x1fadf6['json']();this[_0x48f964(0x185)]=_0xe65a37[_0x48f964(0x111)]??[];}}catch(_0x5e3484){this[_0x48f964(0x102)]=_0x5e3484?.['message']||'Failed\x20to\x20load\x20changes';}finally{this[_0x48f964(0x152)]=!0x1;}},'actionColor':_0x158558=>({'put':'var(--okdb-success)','remove':_0x31845a(0x107),'type_register':_0x31845a(0x127),'type_drop':_0x31845a(0x107),'index_register':_0x31845a(0x126),'index_drop':'var(--okdb-warning)'}[_0x158558]||'var(--okdb-app-fg-muted)'),'actionLabel':_0x2a6b4c=>(_0x2a6b4c||'')[_0x31845a(0x12c)](/_/g,'\x20'),'relTime'(_0x5307f9){const _0xfc4a33=_0x31845a;if(!_0x5307f9)return'—';const _0x504d82=Date[_0xfc4a33(0xf6)]()-_0x5307f9;return _0x504d82<0x1388?_0xfc4a33(0x119):_0x504d82<0xea60?Math[_0xfc4a33(0x159)](_0x504d82/0x3e8)+_0xfc4a33(0x13a):_0x504d82<0x36ee80?Math['round'](_0x504d82/0xea60)+_0xfc4a33(0x175):_0x504d82<0x5265c00?Math[_0xfc4a33(0x159)](_0x504d82/0x36ee80)+'h\x20ago':new Date(_0x5307f9)[_0xfc4a33(0x130)]();},'fmt':_0x4d40ad=>null==_0x4d40ad?'--':Number(_0x4d40ad)['toLocaleString'](),'healthColor':_0x44ccb8=>_0x31845a(0x146)===_0x44ccb8?_0x31845a(0x16e):_0x31845a(0x186)===_0x44ccb8?_0x31845a(0xfd):_0x31845a(0x112)===_0x44ccb8?'var(--okdb-danger)':'stopped'===_0x44ccb8?'var(--okdb-app-fg-muted)':_0x31845a(0x17a),'statusColor':_0x32b830=>_0x31845a(0x15d)===_0x32b830||_0x31845a(0x146)===_0x32b830?'var(--okdb-success)':_0x31845a(0x134)===_0x32b830||_0x31845a(0x186)===_0x32b830?_0x31845a(0xfd):_0x31845a(0x112)===_0x32b830?_0x31845a(0x107):_0x31845a(0x11e)===_0x32b830||'idle'===_0x32b830?_0x31845a(0x16d):'var(--okdb-sky)','pipelineKey'(_0x2c6afa){const _0x529687=_0x31845a;return(_0x2c6afa?.[_0x529687(0x124)]||this[_0x529687(0x17c)])+'::'+(_0x2c6afa?.[_0x529687(0x14c)]||'');},'pipelineLabel':_0x3af25b=>_0x3af25b?.[_0x31845a(0x187)]?.[_0x31845a(0xfe)]||_0x3af25b?.[_0x31845a(0x14c)]||_0x31845a(0x163),'pipelineRoleSummary'(_0x302beb){const _0x33920c=_0x31845a,_0x2b54eb=Array[_0x33920c(0x180)](_0x302beb?.[_0x33920c(0xfc)])?_0x302beb['engines']:[];if(0x0===_0x2b54eb[_0x33920c(0x129)])return _0x33920c(0x10a);const _0x21a656=[];for(const _0x2d3d55 of _0x2b54eb){const _0xee590b=_0x2d3d55?.['role']||_0x2d3d55?.[_0x33920c(0x136)];if(_0xee590b&&!_0x21a656[_0x33920c(0x164)](_0xee590b)&&(_0x21a656['push'](_0xee590b),_0x21a656[_0x33920c(0x129)]>=0x3))break;}return _0x21a656[_0x33920c(0x151)]('\x20·\x20');},'pipelineSeverity'(_0x1ef7d7){const _0x2a964b=_0x31845a,_0x469691=String(_0x1ef7d7?.['health']||'')[_0x2a964b(0x123)](),_0x1833ce=String(_0x1ef7d7?.['status']||'')[_0x2a964b(0x123)]();return _0x2a964b(0x112)===_0x469691||'error'===_0x1833ce?0x0:_0x2a964b(0x186)===_0x469691||_0x2a964b(0x186)===_0x1833ce||_0x2a964b(0x134)===_0x1833ce?0x1:_0x2a964b(0x11e)===_0x469691||_0x2a964b(0x11e)===_0x1833ce||_0x2a964b(0x121)===_0x1833ce?0x2:'online'===_0x469691||_0x2a964b(0x15d)===_0x1833ce||_0x2a964b(0x146)===_0x1833ce?0x3:0x4;},get 'pipelineEngineCount'(){const _0x3b444c=_0x31845a,_0x285cac=new Set();for(const _0x253db4 of this['pipelines'])for(const _0x55f084 of _0x253db4?.[_0x3b444c(0xfc)]||[]){const _0x5a483c=_0x55f084?.['key']||(_0x55f084?.['type']&&_0x55f084?.[_0x3b444c(0x14c)]?_0x55f084[_0x3b444c(0x136)]+'@'+_0x55f084[_0x3b444c(0x14c)]:_0x55f084?.[_0x3b444c(0x14c)])||null;_0x5a483c&&_0x285cac[_0x3b444c(0x109)]((_0x253db4?.['env']||this['envName'])+'::'+_0x5a483c);}return _0x285cac['size'];},get 'pipelineHealthCounts'(){const _0xb294b6=_0x31845a,_0x387be9={'online':0x0,'degraded':0x0,'error':0x0,'stopped':0x0};for(const _0x4e4f7d of this['pipelines']){const _0x806f11=String(_0x4e4f7d?.[_0xb294b6(0x16f)]||'')[_0xb294b6(0x123)]();null!=_0x387be9[_0x806f11]&&(_0x387be9[_0x806f11]+=0x1);}return _0x387be9;},get 'pipelineSummaryText'(){const _0x2c5eb8=_0x31845a,_0x80f1dc=this[_0x2c5eb8(0x177)][_0x2c5eb8(0x129)],_0x15e287=this[_0x2c5eb8(0x155)];return _0x80f1dc+'\x20pipeline'+(0x1===_0x80f1dc?'':'s')+_0x2c5eb8(0xfb)+_0x15e287+_0x2c5eb8(0x11d)+(0x1===_0x15e287?'':'s');},get 'pipelineHighlights'(){const _0x245dc1=_0x31845a;return[...this[_0x245dc1(0x177)]][_0x245dc1(0x148)]((_0x55d8bd,_0x57f129)=>{const _0xaef0ad=_0x245dc1,_0x564e88=this[_0xaef0ad(0x165)](_0x55d8bd)-this[_0xaef0ad(0x165)](_0x57f129);return 0x0!==_0x564e88?_0x564e88:this['pipelineLabel'](_0x55d8bd)[_0xaef0ad(0x12f)](this[_0xaef0ad(0xff)](_0x57f129));})[_0x245dc1(0x140)](0x0,0x4);},async 'loadPipelines'(){const _0x396b9e=_0x31845a;this[_0x396b9e(0x173)]=!0x0,this[_0x396b9e(0x14a)]=null;try{const _0x5ad625=await fetch(_0x5213ef[_0x396b9e(0x12a)][_0x396b9e(0x117)][_0x396b9e(0x10b)][_0x396b9e(0x101)]+'/pipelines'),_0x11875a=await _0x5ad625[_0x396b9e(0x14d)]()[_0x396b9e(0x114)](()=>({}));if(!_0x5ad625['ok'])throw new Error(_0x11875a?.[_0x396b9e(0x112)]?.['message']||'Failed\x20to\x20load\x20pipelines');this[_0x396b9e(0x177)]=_0x11875a?.['data']??_0x11875a?.[_0x396b9e(0x143)]??[];}catch(_0x1c899f){this[_0x396b9e(0x14a)]=_0x1c899f?.[_0x396b9e(0x16c)]||_0x396b9e(0xf8),this[_0x396b9e(0x177)]=[];}finally{this['pipelinesBusy']=!0x1;}},'openPipelinesWorkspace'(_0x3f6b46=null){const _0x3fc33a=_0x31845a,_0x1591a0=_0x5213ef[_0x3fc33a(0x11c)]?.[_0x3fc33a(0x150)];if(!_0x1591a0?.[_0x3fc33a(0x181)]||!_0x1591a0?.[_0x3fc33a(0x10e)])return;const _0xd86368={'env':this[_0x3fc33a(0x17c)],'mode':_0x3fc33a(0x177)};_0x3f6b46?.['name']&&(_0xd86368['pipeline']=_0x3f6b46[_0x3fc33a(0x14c)]),_0x1591a0[_0x3fc33a(0x10e)](_0x1591a0['resolve']('/engines',_0xd86368));},async 'openDemoModal'(){const _0x41eeef=_0x31845a;await _0x5213ef[_0x41eeef(0x12a)][_0x41eeef(0x149)][_0x41eeef(0x125)][_0x41eeef(0x16b)]({'owner':_0x5213ef,'title':_0x41eeef(0x14b),'canDrag':!0x0,'content':'<demo-env-modal\x20:modal=\x22modal\x22\x20:on-done=\x22onDone\x22\x20/>','context':_0x5bba6e=>({'modal':_0x5bba6e,'onDone':async _0x930258=>{const _0x37da50=_0x41eeef;_0x5213ef[_0x37da50(0x12a)]['stores'][_0x37da50(0x10b)][_0x37da50(0x122)](_0x930258),await _0x5213ef[_0x37da50(0x12a)]['stores'][_0x37da50(0x10b)][_0x37da50(0x169)](),_0x5213ef[_0x37da50(0x12a)][_0x37da50(0x149)]?.[_0x37da50(0x11f)]?.[_0x37da50(0xf4)]?.(_0x37da50(0x168)+_0x930258+_0x37da50(0x118));}})});},'_unsubs':[],'_reloadTimer':null,'_scheduleReload'(){const _0x3651eb=_0x31845a;clearTimeout(this[_0x3651eb(0x12e)]),this[_0x3651eb(0x12e)]=setTimeout(()=>this[_0x3651eb(0x10d)](),0x258);},async '_reloadTypes'(){const _0x3875d4=_0x31845a;await Promise[_0x3875d4(0x17f)]([_0x5213ef[_0x3875d4(0x12a)][_0x3875d4(0x117)][_0x3875d4(0x10b)]['reloadTypes'](),_0x5213ef[_0x3875d4(0x12a)][_0x3875d4(0x117)][_0x3875d4(0x10b)]['reloadInfo']()]);},async 'loadViolations'(){const _0x10544b=_0x31845a;this[_0x10544b(0x13d)]=!0x0,this[_0x10544b(0x15f)]=null;try{const _0x5dffc9=await fetch(_0x5213ef[_0x10544b(0x12a)][_0x10544b(0x117)][_0x10544b(0x10b)][_0x10544b(0x101)]+_0x10544b(0x12d));if(0x194===_0x5dffc9['status'])return void(this[_0x10544b(0x131)]=[]);if(!_0x5dffc9['ok']){const _0x403104=await _0x5dffc9[_0x10544b(0x14d)]()[_0x10544b(0x114)](()=>({}));throw new Error(_0x403104?.[_0x10544b(0x112)]?.[_0x10544b(0x16c)]||_0x10544b(0x12b));}const _0xaab79c=await _0x5dffc9[_0x10544b(0x14d)]();this[_0x10544b(0x131)]=_0xaab79c?.[_0x10544b(0x111)]?.['violations']??_0xaab79c?.[_0x10544b(0x143)]?.[_0x10544b(0x131)]??[];}catch(_0x16f094){this[_0x10544b(0x15f)]=_0x16f094?.[_0x10544b(0x16c)]||_0x10544b(0x12b),this[_0x10544b(0x131)]=[];}finally{this[_0x10544b(0x13d)]=!0x1;}},get 'violationsByType'(){const _0x48b24a=_0x31845a,_0x455b66=new Map();for(const _0xf8b87f of this[_0x48b24a(0x131)]){const _0x407c89=_0xf8b87f[_0x48b24a(0x136)]||'?';_0x455b66[_0x48b24a(0x184)](_0x407c89)||_0x455b66[_0x48b24a(0x135)](_0x407c89,[]),_0x455b66['get'](_0x407c89)[_0x48b24a(0x10e)](_0xf8b87f);}return[..._0x455b66[_0x48b24a(0x11b)]()]['map'](([_0x4a8dcf,_0x5f147a])=>({'type':_0x4a8dcf,'count':_0x5f147a[_0x48b24a(0x129)],'items':_0x5f147a}))[_0x48b24a(0x148)]((_0x35d589,_0x4d89a0)=>_0x4d89a0[_0x48b24a(0x141)]-_0x35d589['count']);},get 'totalViolations'(){const _0x2dd2af=_0x31845a;return this[_0x2dd2af(0x131)]['length'];},'toggleViolationGroup'(_0x1ab10f){const _0x34479a=_0x31845a;this['expandedViolationType']=this[_0x34479a(0x10c)]===_0x1ab10f?null:_0x1ab10f;},'navigateToType'(_0x28f303){const _0x452b8d=_0x31845a;_0x5213ef[_0x452b8d(0x132)](_0x452b8d(0x115),{'type':_0x28f303});},async 'reloadOverviewData'(){const _0x5a95f9=_0x31845a;await Promise['all']([this[_0x5a95f9(0x10d)](),this['loadPipelines'](),this[_0x5a95f9(0xf7)]()]);},async 'loadTMStatus'(){const _0x56b897=_0x31845a;try{const _0x3ba225=_0x5213ef[_0x56b897(0x12a)][_0x56b897(0x117)][_0x56b897(0x10b)][_0x56b897(0x167)]||_0x56b897(0x128),_0x3fa8c3=await fetch(__ENV__[_0x56b897(0x147)]+_0x56b897(0x179)+encodeURIComponent(_0x3ba225)+_0x56b897(0x170));if(!_0x3fa8c3['ok'])return void(this[_0x56b897(0x120)]={'enabled':!0x1});const _0x589b4e=await _0x3fa8c3['json']();this['tmStatus']=_0x589b4e[_0x56b897(0x143)]??_0x589b4e['data']??{'enabled':!0x1};}catch{this[_0x56b897(0x120)]={'enabled':!0x1};}},async 'enableTM'(){const _0xa1fe26=_0x31845a;if(!this[_0xa1fe26(0x15b)]){this[_0xa1fe26(0x15b)]=!0x0,this[_0xa1fe26(0x13c)]=_0xa1fe26(0x157);try{const _0x25396a=_0x5213ef['$ok'][_0xa1fe26(0x117)][_0xa1fe26(0x10b)]['selectedEnv']||_0xa1fe26(0x128);await fetch(__ENV__['API']+'/env/'+encodeURIComponent(_0x25396a)+_0xa1fe26(0x144),{'method':_0xa1fe26(0x15a)});const _0x5d5294=Date['now']()+0x2710;for(;Date['now']()<_0x5d5294&&(await new Promise(_0x94cc05=>setTimeout(_0x94cc05,0x3e8)),await this[_0xa1fe26(0x137)](),!(this[_0xa1fe26(0x120)]?.[_0xa1fe26(0x13f)]>0x0)););}catch{}this[_0xa1fe26(0x15b)]=!0x1,this[_0xa1fe26(0x13c)]='';}},async 'disableTM'(){const _0x3e66e7=_0x31845a;if(!this[_0x3e66e7(0x15b)]){this['tmBusy']=!0x0;try{const _0x21b26e=_0x5213ef[_0x3e66e7(0x12a)][_0x3e66e7(0x117)][_0x3e66e7(0x10b)]['selectedEnv']||_0x3e66e7(0x128);await fetch(__ENV__[_0x3e66e7(0x147)]+_0x3e66e7(0x179)+encodeURIComponent(_0x21b26e)+_0x3e66e7(0x144),{'method':'DELETE'}),await this[_0x3e66e7(0x137)]();}catch{}this[_0x3e66e7(0x15b)]=!0x1;}}}),'init'(_0x3015c1){const _0xd023a6=_0x31845a;this['loadTMStatus'](),_0x3015c1[_0xd023a6(0x17e)](()=>_0x3015c1[_0xd023a6(0x12a)]['stores'][_0xd023a6(0x10b)][_0xd023a6(0x167)],()=>{const _0x4906f4=_0xd023a6;this['reloadOverviewData'](),this[_0x4906f4(0x137)]();});},'mount'(){const _0x21af7f=_0x31845a;this[_0x21af7f(0x176)]();const _0x21922e=()=>this[_0x21af7f(0x13e)]();this[_0x21af7f(0x100)]=[_0x151063['on'](_0x21af7f(0x138),()=>this[_0x21af7f(0xf5)]()),_0x151063['on'](_0x21af7f(0x156),()=>this[_0x21af7f(0xf5)]()),_0x151063['on'](_0x21af7f(0xf9),()=>this[_0x21af7f(0xf5)]()),_0x151063['on']('index:drop',()=>this[_0x21af7f(0xf5)]()),_0x151063['on']('engine:started',_0x21922e),_0x151063['on'](_0x21af7f(0x108),_0x21922e),_0x151063['on'](_0x21af7f(0x172),_0x21922e),_0x151063['on'](_0x21af7f(0xfa),_0x21922e),_0x151063['on'](_0x21af7f(0x158),_0x21922e),_0x151063['on'](_0x21af7f(0x133),_0x21922e),_0x151063['on'](_0x21af7f(0x160),_0x21922e),_0x151063['on'](_0x21af7f(0x14e),_0x21922e),_0x151063['on']('item:create',()=>this[_0x21af7f(0x162)]()),_0x151063['on'](_0x21af7f(0x17d),()=>this[_0x21af7f(0x162)]()),_0x151063['on']('item:remove',()=>this[_0x21af7f(0x162)]()),_0x151063['on'](_0x21af7f(0x113),()=>this[_0x21af7f(0x162)]()),_0x151063['on'](_0x21af7f(0x139),()=>this[_0x21af7f(0x162)]()),_0x151063['on'](_0x21af7f(0x10f),()=>this[_0x21af7f(0x162)]())];},'unmount'(){const _0x24df3d=_0x31845a;clearTimeout(this['_reloadTimer']);for(const _0x23a28a of this[_0x24df3d(0x100)])_0x23a28a();this[_0x24df3d(0x100)]=[];},'template':_0x31845a(0x103),'style':_0x31845a(0x171)};
@@ -0,0 +1 @@
1
+ const _0x37603a=_0x2c91;(function(_0x2d8c63,_0x511e7c){const _0x4fc79b=_0x2c91,_0x4aa967=_0x2d8c63();while(!![]){try{const _0x1fc6dc=-parseInt(_0x4fc79b(0x19f))/0x1+-parseInt(_0x4fc79b(0x156))/0x2+parseInt(_0x4fc79b(0x199))/0x3*(parseInt(_0x4fc79b(0x163))/0x4)+parseInt(_0x4fc79b(0x168))/0x5+parseInt(_0x4fc79b(0x19b))/0x6*(-parseInt(_0x4fc79b(0x1af))/0x7)+-parseInt(_0x4fc79b(0x167))/0x8*(parseInt(_0x4fc79b(0x155))/0x9)+parseInt(_0x4fc79b(0x134))/0xa*(parseInt(_0x4fc79b(0x135))/0xb);if(_0x1fc6dc===_0x511e7c)break;else _0x4aa967['push'](_0x4aa967['shift']());}catch(_0x13541a){_0x4aa967['push'](_0x4aa967['shift']());}}}(_0x3b1c,0x73c2a));function _0x2c91(_0x211f13,_0x3cfb50){_0x211f13=_0x211f13-0x128;const _0x3b1c14=_0x3b1c();let _0x2c912c=_0x3b1c14[_0x211f13];return _0x2c912c;}import _0x211bb2 from'../../../stores/events-store.js';import _0x42845c from'../../engines/modals/engine-modal.ok.js';function _0x3b1c(){const _0x538464=['$ok','health','select','envname','toLowerCase','49TGEkyz','state','result','$router','type','number','progress','runtime','okdb','flatMap','pipelineKey','showall','phase','load','3210UqbDzh','3641Stitfw','Start\x20failed','relatedType','search','selectedEnv','relatedEnv','role','_request','engine:stopped','storeEnv','Delete\x20failed','toast','selectedPipeline','map','isNaN','</b>\x22?<br><br>','_unsubs','status','var(--okdb-danger)','trim','isAllEnvs','<br><br>Env-owned\x20members\x20will\x20be\x20removed;\x20shared\x20members\x20will\x20be\x20preserved.','engine:error','Edit\x20Engine\x20·\x20','Stopped\x20pipeline\x20\x22','applyExternalSelection','catch','source_env','Started\x20pipeline\x20\x22','env','message','selectedKey','27657nsxgDo','1842324DhznKv','db-pipelines-panel','stringify','exists','error','selectEnv','var(--okdb-warning)','engines','config','confirm','pipelines','No\x20members','var(--okdb-sky)','263400teLjvl','sort','var(--okdb-app-fg-muted)','degraded','488GdbCBx','4324385ZLXcgy','data','\x20·\x20','string','label','localeCompare','json','DELETE','job_type','has','Deleted\x20pipeline\x20\x22','handler:','/pipelines/','busy','/start','toLocaleString','/pipelines','stores','\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-wrap\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-direction:\x20column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2014px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-head\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20justify-content:\x20space-between;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20flex-start;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-wrap:\x20wrap;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-title\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2014px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-weight:\x20600;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-sub\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.5;\x0a\x20\x20\x20\x20\x20\x20\x20\x20margin-top:\x204px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20max-width:\x20560px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20line-height:\x201.6;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-error\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-danger);\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2010px\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-danger)\x2033%,\x20transparent);\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20color-mix(in\x20srgb,\x20var(--okdb-danger)\x205%,\x20transparent);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-empty\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20dashed\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2028px\x2024px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-direction:\x20column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-layout\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20grid;\x0a\x20\x20\x20\x20\x20\x20\x20\x20grid-template-columns:\x20minmax(240px,\x20300px)\x20minmax(0,\x201fr);\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2014px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-list-card,\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-detail-card\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-bg);\x0a\x20\x20\x20\x20\x20\x20\x20\x20overflow:\x20hidden;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-list-head\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-list\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-direction:\x20column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2010px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipeline-row\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20width:\x20100%;\x0a\x20\x20\x20\x20\x20\x20\x20\x20text-align:\x20left;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-bg-deep);\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2010px\x2011px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20cursor:\x20pointer;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipeline-row:hover\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-color:\x20var(--okdb-app-border-strong);\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-bg-deep);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipeline-row--active\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-color:\x20color-mix(in\x20srgb,\x20var(--okdb-accent)\x2033%,\x20transparent);\x0a\x20\x20\x20\x20\x20\x20\x20\x20box-shadow:\x20inset\x200\x200\x200\x201px\x20color-mix(in\x20srgb,\x20var(--okdb-accent)\x2013%,\x20transparent);\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20#10202a;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-detail-card\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2014px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-members\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-direction:\x20column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2010px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipeline-member-card\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-bg-deep);\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-direction:\x20column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2010px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipeline-member-error\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20line-height:\x201.6;\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-danger);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20var(--okdb-danger-deep-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20#450a0a33;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x208px\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x208px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20@media\x20(max-width:\x20860px)\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20db-pipelines-panel\x20.pipelines-layout\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20grid-template-columns:\x201fr;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20','\x0a<div\x20class=\x22pipelines-wrap\x22>\x0a\x20\x20<div\x20class=\x22pipelines-head\x22>\x0a\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22pipelines-title\x22>{{\x20isAllEnvs\x20?\x20\x27Pipelines\x20·\x20all\x20environments\x27\x20:\x20\x27Pipelines\x27\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22pipelines-sub\x22>{{\x20isAllEnvs\x20?\x20\x27Primary\x20grouped\x20lifecycle\x20management\x20across\x20opened\x20environments.\x20Open\x20DB\x20or\x20Files\x20only\x20when\x20you\x20need\x20source-specific\x20context.\x27\x20:\x20\x27Primary\x20grouped\x20lifecycle\x20management\x20for\x20the\x20selected\x20environment.\x20Open\x20DB\x20or\x20Files\x20only\x20when\x20you\x20need\x20source-specific\x20context.\x27\x20}}</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(\x27var(--okdb-indigo)\x27)\x22>{{\x20pipelines.length\x20}}\x20pipeline{{\x20pipelines.length\x20!==\x201\x20?\x20\x27s\x27\x20:\x20\x27\x27\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22load()\x22\x20:disabled=\x22busy\x22\x20style=\x22font-size:12px;\x20padding:5px\x2012px;\x20opacity:.75;\x22>↻\x20Refresh</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<if\x20:=\x22error\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22pipelines-error\x22>{{\x20error\x20}}</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<if\x20:=\x22!busy\x20&&\x20pipelines.length\x20===\x200\x20&&\x20!error\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22pipelines-empty\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:30px;\x20opacity:.25;\x22>⛓</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:14px;\x20font-weight:600;\x20opacity:.75;\x22>No\x20pipelines\x20{{\x20isAllEnvs\x20?\x20\x27in\x20opened\x20environments\x27\x20:\x20\x27in\x20\x27\x20+\x20envName\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.5;\x20max-width:520px;\x20line-height:1.7;\x20text-align:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20Pipelines\x20appear\x20here\x20once\x20created\x20or\x20synced\x20into\x20the\x20environment.\x0a\x20\x20\x20\x20\x20\x20\x20\x20This\x20view\x20preserves\x20member\x20order,\x20shows\x20aggregate\x20health,\x20and\x20exposes\x20lifecycle\x20controls.\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<if\x20:=\x22pipelines.length\x20>\x200\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22pipelines-layout\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22pipelines-list-card\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22pipelines-list-head\x22>\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=\x22text\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20placeholder=\x22Filter\x20pipelines…\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22search\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@input=\x22search\x20=\x20$event.target.value\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22width:100%;\x20box-sizing:border-box;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22pipelines-list\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22filteredPipelines\x22\x20let:item=\x22pipeline\x22>\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\x20\x20@click=\x22selectPipeline(pipeline)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22selectedPipeline\x20&&\x20pipelineKey(selectedPipeline)\x20===\x20pipelineKey(pipeline)\x20?\x20\x27pipeline-row\x20pipeline-row--active\x27\x20:\x20\x27pipeline-row\x27\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\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:8px;\x20min-width:0;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22\x27width:8px;height:8px;border-radius:50%;flex-shrink:0;background:\x27\x20+\x20healthColor(pipeline.health)\x22></span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:13px;\x20font-weight:600;\x20overflow:hidden;\x20text-overflow:ellipsis;\x20white-space:nowrap;\x22>{{\x20pipeline.meta?.label\x20||\x20pipeline.name\x20}}</span>\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\x20\x20<div\x20style=\x22display:flex;\x20gap:6px;\x20flex-wrap:wrap;\x20margin-top:6px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22isAllEnvs\x20||\x20pipeline.env\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(\x27var(--okdb-indigo)\x27,\x20true)\x22>{{\x20pipeline.env\x20||\x20envName\x20}}</span>\x0a\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<span\x20:style=\x22chipStyle(healthColor(pipeline.health))\x22>{{\x20pipeline.health\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(\x27var(--okdb-sky)\x27,\x20true)\x22>{{\x20pipeline.status\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(\x27var(--okdb-app-fg-muted)\x27,\x20true)\x22>{{\x20pipeline.engines.length\x20}}\x20members</span>\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\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.5;\x20margin-top:7px;\x20overflow:hidden;\x20text-overflow:ellipsis;\x20white-space:nowrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20summaryText(pipeline)\x20}}\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</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22filteredPipelines.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.45;\x20padding:8px;\x22>No\x20pipelines\x20match\x20the\x20current\x20filter.</div>\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<div\x20class=\x22pipelines-detail-card\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22selectedPipeline\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:14px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20justify-content:space-between;\x20gap:12px;\x20align-items:flex-start;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:8px;\x20min-width:0;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:8px;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:18px;\x20font-weight:700;\x20min-width:0;\x22>{{\x20selectedPipeline.name\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(healthColor(selectedPipeline.health))\x22>{{\x20selectedPipeline.health\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(\x27var(--okdb-sky)\x27,\x20true)\x22>{{\x20selectedPipeline.status\x20}}</span>\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\x20\x20<if\x20:=\x22selectedPipeline.meta?.label\x20&&\x20selectedPipeline.meta.label\x20!==\x20selectedPipeline.name\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.6;\x22>{{\x20selectedPipeline.meta.label\x20}}</div>\x0a\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<div\x20style=\x22font-size:12px;\x20color:var(--okdb-app-fg-muted);\x20line-height:1.6;\x20max-width:620px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20This\x20is\x20the\x20global\x20grouped\x20view\x20for\x20the\x20pipeline.\x20Use\x20the\x20related\x20type\x20shortcuts\x20below\x20only\x20when\x20you\x20need\x20the\x20local\x20DB\x20drill-in.\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\x20\x20<div\x20style=\x22display:flex;\x20gap:6px;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(\x27var(--okdb-app-fg-muted)\x27,\x20true)\x22>env:\x20{{\x20selectedPipeline.env\x20||\x20envName\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(\x27var(--okdb-app-fg-muted)\x27,\x20true)\x22>{{\x20selectedPipeline.engines.length\x20}}\x20ordered\x20member{{\x20selectedPipeline.engines.length\x20!==\x201\x20?\x20\x27s\x27\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<each\x20:of=\x22selectedRelatedTypes\x22\x20let:item=\x22rel\x22>\x0a\x20\x20\x20\x20\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\x20\x20\x20\x20@click=\x22openType({\x20config:\x20{\x20source_type:\x20rel.type,\x20source_env:\x20rel.env\x20}\x20})\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:10px;\x20padding:2px\x207px;\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\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22\x27Open\x20type\x20\x27\x20+\x20rel.type\x20+\x20\x27\x20in\x20env\x20\x27\x20+\x20rel.env\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>{{\x20rel.env\x20!==\x20envName\x20?\x20rel.env\x20+\x20\x27:\x27\x20:\x20\x27\x27\x20}}{{\x20rel.type\x20}}\x20→</button>\x0a\x20\x20\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\x20\x20</div>\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\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20flex-wrap:wrap;\x20align-items:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22startSelected()\x22\x20:disabled=\x22actionBusy\x22\x20style=\x22font-size:12px;\x20padding:5px\x2012px;\x20color:var(--okdb-success);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-success)\x2033%,\x20transparent);\x22>▶\x20Start</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22stopSelected()\x22\x20:disabled=\x22actionBusy\x22\x20style=\x22font-size:12px;\x20padding:5px\x2012px;\x20color:var(--okdb-warning);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-warning)\x2033%,\x20transparent);\x22>⏹\x20Stop</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22deleteSelected()\x22\x20:disabled=\x22actionBusy\x22\x20style=\x22font-size:12px;\x20padding:5px\x2012px;\x20color:var(--okdb-danger);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-danger)\x2033%,\x20transparent);\x22>🗑\x20Delete</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</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22pipelines-members\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22selectedPipeline.engines\x22\x20let:item=\x22member\x22\x20let:index=\x22index\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22pipeline-member-card\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20justify-content:space-between;\x20gap:12px;\x20align-items:flex-start;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:8px;\x20min-width:0;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\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\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:11px;\x20opacity:.4;\x20min-width:18px;\x22>{{\x20index\x20+\x201\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\x20\x20<span\x20:style=\x22chipStyle(\x27var(--okdb-accent)\x27,\x20true)\x22>{{\x20member.role\x20||\x20member.type\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\x20\x20<code\x20style=\x22font-size:12px;\x20overflow:hidden;\x20text-overflow:ellipsis;\x20white-space:nowrap;\x22>{{\x20member.type\x20}}@{{\x20member.name\x20}}</code>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22chipStyle(stateColor(member.state))\x22>{{\x20member.state\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\x20\x20<if\x20:=\x22member.status\x20&&\x20member.status\x20!==\x20member.state\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\x20\x20\x20<span\x20:style=\x22chipStyle(\x27var(--okdb-app-fg-muted)\x27,\x20true)\x22>{{\x20member.status\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\x20\x20</if>\x0a\x20\x20\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\x20\x20<div\x20style=\x22display:flex;\x20gap:6px;\x20flex-wrap:wrap;\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\x20<each\x20:of=\x22memberFacts(member)\x22\x20let:item=\x22fact\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\x20\x20\x20<span\x20:style=\x22chipStyle(\x27var(--okdb-app-fg-muted)\x27,\x20true)\x22>{{\x20fact\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\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22member.lag\x20!=\x20null\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\x20\x20\x20<span\x20:style=\x22chipStyle(\x27var(--okdb-warning)\x27,\x20true)\x22>lag:\x20{{\x20formatNumber(member.lag)\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\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22progressLabel(member)\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\x20\x20\x20<span\x20:style=\x22chipStyle(\x27var(--okdb-sky)\x27,\x20true)\x22>progress:\x20{{\x20progressLabel(member)\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\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22member.cursorKey\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\x20\x20\x20<span\x20:style=\x22chipStyle(\x27var(--okdb-app-fg-muted)\x27,\x20true)\x22>cursor:\x20{{\x20member.cursorKey\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\x20\x20</if>\x0a\x20\x20\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>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\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\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22member.exists\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\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22openEngineModal(member)\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\x20\x20\x20style=\x22font-size:11px;\x20padding:3px\x2010px;\x20border-radius:999px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-accent)\x2033%,\x20transparent);\x20color:var(--okdb-accent);\x20background:color-mix(in\x20srgb,\x20var(--okdb-accent)\x206%,\x20transparent);\x20cursor:pointer;\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\x20\x20\x20title=\x22Open\x20engine\x20editor\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\x20>Edit\x20engine</button>\x0a\x20\x20\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\x20\x20\x20\x20<if\x20:=\x22relatedType(member)\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\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22openType(member)\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\x20\x20\x20style=\x22font-size:11px;\x20padding:3px\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\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22\x27Open\x20type\x20\x27\x20+\x20relatedType(member)\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\x20>Open\x20type\x20→</button>\x0a\x20\x20\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\x20\x20</div>\x0a\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\x20:=\x22member.error\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22pipeline-member-error\x22>{{\x20member.error\x20}}</div>\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</div>\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</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<if\x20:=\x22busy\x20&&\x20pipelines.length\x20===\x200\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.45;\x20padding:4px\x200;\x22>Loading\x20pipelines…</div>\x0a\x20\x20</if>\x0a</div>','shared','55;color:','find','Stop\x20failed','missing','owned','source_type','memberOwnerEnv','engine:installed','filter','<br>','transparent','success','selectedpipeline','engine:uninstalled','online','object','actionBusy','type:','<engine-modal\x20:modal=\x22modal\x22\x20:engine=\x22engine\x22\x20:env=\x22envName\x22\x20:on-done=\x22onDone\x22\x20/>','length','push','add','name','API','meta','envName','modal','var(--okdb-success)','39IhSDqu','handler','71034qMblRY','includes','filteredPipelines','$watch','161536COdBuV','info','/stop',';white-space:nowrap;',';background:','/env/','POST','$attr','store:','join','resolve'];_0x3b1c=function(){return _0x538464;};return _0x3b1c();}export default{'tag':_0x37603a(0x157),'dependencies':[_0x42845c],'attr':{'showall':{},'envname':{},'selectedpipeline':{}},'context':_0x41dfe8=>({'busy':!0x1,'error':null,'search':'','pipelines':[],'selectedKey':null,'actionBusy':!0x1,'_unsubs':[],get 'isAllEnvs'(){const _0x539f76=_0x37603a;return!0x0===_0x41dfe8['$attr'][_0x539f76(0x131)]||'true'===_0x41dfe8['$attr'][_0x539f76(0x131)];},get 'envName'(){const _0x5ad2eb=_0x37603a;return _0x41dfe8[_0x5ad2eb(0x1a6)][_0x5ad2eb(0x1ad)]||_0x41dfe8[_0x5ad2eb(0x1aa)]['stores'][_0x5ad2eb(0x12e)][_0x5ad2eb(0x139)]||'default';},get 'externalSelectedPipeline'(){const _0x38370f=_0x37603a;return String(_0x41dfe8[_0x38370f(0x1a6)][_0x38370f(0x189)]||'');},'pipelineKey'(_0x2fe036){const _0x4bb083=_0x37603a;return(_0x2fe036?.[_0x4bb083(0x152)]||this[_0x4bb083(0x196)])+'::'+(_0x2fe036?.[_0x4bb083(0x193)]||'');},get 'filteredPipelines'(){const _0xa98eab=_0x37603a,_0x512a27=this[_0xa98eab(0x138)][_0xa98eab(0x148)]()[_0xa98eab(0x1ae)](),_0x4ba8c2=[...this[_0xa98eab(0x160)]][_0xa98eab(0x164)]((_0x225f73,_0x36fc0d)=>{const _0x2becc4=_0xa98eab,_0x2cc6cb=String(_0x225f73['env']||'')[_0x2becc4(0x16d)](String(_0x36fc0d[_0x2becc4(0x152)]||''));return 0x0!==_0x2cc6cb?_0x2cc6cb:_0x225f73[_0x2becc4(0x193)]['localeCompare'](_0x36fc0d[_0x2becc4(0x193)]);});return _0x512a27?_0x4ba8c2['filter'](_0x598ed8=>[_0x598ed8[_0xa98eab(0x152)],_0x598ed8[_0xa98eab(0x193)],_0x598ed8[_0xa98eab(0x195)]?.[_0xa98eab(0x16c)],_0x598ed8[_0xa98eab(0x146)],_0x598ed8[_0xa98eab(0x1ab)],...(_0x598ed8[_0xa98eab(0x15d)]||[])[_0xa98eab(0x12f)](_0xce6ce9=>[_0xce6ce9[_0xa98eab(0x13b)],_0xce6ce9[_0xa98eab(0x12a)],_0xce6ce9['name'],_0xce6ce9[_0xa98eab(0x1b0)],_0xce6ce9[_0xa98eab(0x15e)]?.[_0xa98eab(0x182)],_0xce6ce9[_0xa98eab(0x15e)]?.[_0xa98eab(0x170)]])][_0xa98eab(0x185)](Boolean)[_0xa98eab(0x1a8)]('\x20')['toLowerCase']()[_0xa98eab(0x19c)](_0x512a27)):_0x4ba8c2;},get 'selectedPipeline'(){const _0x493de7=_0x37603a;return 0x0===this[_0x493de7(0x19d)][_0x493de7(0x190)]?null:this[_0x493de7(0x19d)][_0x493de7(0x17e)](_0x4825d6=>this[_0x493de7(0x130)](_0x4825d6)===this[_0x493de7(0x154)])??this['filteredPipelines'][0x0];},'applyExternalSelection'(){const _0xa33d1c=_0x37603a,_0x4820e5=this['externalSelectedPipeline'][_0xa33d1c(0x148)]();if(!_0x4820e5||0x0===this[_0xa33d1c(0x160)]['length'])return;const _0x542c9c=this[_0xa33d1c(0x160)][_0xa33d1c(0x17e)](_0x340f74=>this[_0xa33d1c(0x130)](_0x340f74)===_0x4820e5)??this[_0xa33d1c(0x160)][_0xa33d1c(0x17e)](_0x2702e0=>_0x2702e0?.['name']===_0x4820e5)??null;if(_0x542c9c){const _0x3da25e=this[_0xa33d1c(0x130)](_0x542c9c);this[_0xa33d1c(0x154)]!==_0x3da25e&&(this[_0xa33d1c(0x154)]=_0x3da25e);}},get 'selectedRelatedTypes'(){const _0x1be8d2=_0x37603a,_0x2893be=this[_0x1be8d2(0x141)];if(!_0x2893be)return[];const _0x2484cc=new Set(),_0x21c68f=[];for(const _0x30bfdf of _0x2893be[_0x1be8d2(0x15d)]||[]){const _0x41e3df=this[_0x1be8d2(0x137)](_0x30bfdf);_0x41e3df&&!_0x2484cc[_0x1be8d2(0x171)](_0x41e3df)&&(_0x2484cc[_0x1be8d2(0x192)](_0x41e3df),_0x21c68f[_0x1be8d2(0x191)]({'type':_0x41e3df,'env':this[_0x1be8d2(0x13a)](_0x30bfdf)}));}return _0x21c68f;},async 'load'(){const _0x200f03=_0x37603a;this[_0x200f03(0x175)]=!0x0,this[_0x200f03(0x15a)]=null;try{const _0x2a3778=this[_0x200f03(0x149)]?__ENV__[_0x200f03(0x194)]+'/pipelines':__ENV__['API']+_0x200f03(0x1a4)+encodeURIComponent(this[_0x200f03(0x196)])+_0x200f03(0x178),_0x40582e=await fetch(_0x2a3778),_0x5cfe8f=await _0x40582e[_0x200f03(0x16e)]()[_0x200f03(0x14f)](()=>({}));if(!_0x40582e['ok'])throw new Error(_0x5cfe8f?.[_0x200f03(0x15a)]?.[_0x200f03(0x153)]||'Failed\x20to\x20load\x20pipelines');this[_0x200f03(0x160)]=_0x5cfe8f[_0x200f03(0x169)]??_0x5cfe8f['result']??[],this['applyExternalSelection'](),this[_0x200f03(0x160)]['some'](_0x51a900=>this['pipelineKey'](_0x51a900)===this[_0x200f03(0x154)])||(this[_0x200f03(0x154)]=this[_0x200f03(0x160)][0x0]?this['pipelineKey'](this[_0x200f03(0x160)][0x0]):null);}catch(_0x4a98d8){this[_0x200f03(0x15a)]=_0x4a98d8?.[_0x200f03(0x153)]||String(_0x4a98d8),this['pipelines']=[],this['selectedKey']=null;}finally{this[_0x200f03(0x175)]=!0x1;}},'selectPipeline'(_0x31e7fc){const _0x2a0943=_0x37603a;this['selectedKey']=this[_0x2a0943(0x130)](_0x31e7fc),_0x41dfe8['$dispatch'](_0x2a0943(0x1ac),_0x31e7fc);},'healthColor':_0x74a08a=>_0x37603a(0x18b)===_0x74a08a?_0x37603a(0x198):'degraded'===_0x74a08a?_0x37603a(0x15c):'error'===_0x74a08a?_0x37603a(0x147):_0x37603a(0x165),'stateColor':_0x6e3492=>_0x37603a(0x18b)===_0x6e3492?_0x37603a(0x198):_0x37603a(0x166)===_0x6e3492?_0x37603a(0x15c):'error'===_0x6e3492||_0x37603a(0x180)===_0x6e3492?_0x37603a(0x147):'stopped'===_0x6e3492?_0x37603a(0x165):_0x37603a(0x162),'chipStyle':(_0x5ed53b,_0x2e33fd=!0x1)=>'font-size:10px;padding:2px\x207px;border-radius:999px;border:1px\x20solid\x20'+_0x5ed53b+_0x37603a(0x17d)+_0x5ed53b+_0x37603a(0x1a3)+(_0x2e33fd?_0x37603a(0x187):_0x5ed53b+'12')+_0x37603a(0x1a2),'summaryText'(_0x34e23e){const _0x4040b2=_0x37603a,_0x427f7c=_0x34e23e[_0x4040b2(0x15d)]||[];return 0x0===_0x427f7c[_0x4040b2(0x190)]?'No\x20members':_0x427f7c[_0x4040b2(0x142)](_0x2244ec=>_0x2244ec[_0x4040b2(0x13b)]||_0x2244ec[_0x4040b2(0x12a)])[_0x4040b2(0x1a8)](_0x4040b2(0x16a));},'formatNumber':_0x404593=>null==_0x404593||Number[_0x37603a(0x143)](Number(_0x404593))?null:Number(_0x404593)[_0x37603a(0x177)](),'progressLabel'(_0x3f185c){const _0x57f62c=_0x37603a,_0x46095b=_0x3f185c[_0x57f62c(0x12c)]??_0x3f185c[_0x57f62c(0x12d)]?.[_0x57f62c(0x12c)]??null;if(null==_0x46095b)return null;if('string'==typeof _0x46095b||_0x57f62c(0x12b)==typeof _0x46095b)return String(_0x46095b);if(_0x57f62c(0x18c)==typeof _0x46095b&&_0x57f62c(0x16b)==typeof _0x46095b[_0x57f62c(0x132)])return _0x46095b['phase'];try{return JSON[_0x57f62c(0x158)](_0x46095b);}catch{return _0x57f62c(0x12c);}},'relatedType':_0x3665a0=>_0x3665a0?.[_0x37603a(0x15e)]?.['source_type']??_0x3665a0?.[_0x37603a(0x12d)]?.['source_type']??null,'relatedEnv'(_0x5d27b9){const _0x4ba50e=_0x37603a;return _0x5d27b9?.[_0x4ba50e(0x15e)]?.[_0x4ba50e(0x150)]??_0x5d27b9?.['runtime']?.[_0x4ba50e(0x150)]??this[_0x4ba50e(0x196)];},'memberOwnerEnv'(_0x3f1376){const _0x342972=_0x37603a;return _0x3f1376?.[_0x342972(0x13e)]??_0x3f1376?.[_0x342972(0x152)]??this[_0x342972(0x13a)](_0x3f1376)??this['selectedPipeline']?.[_0x342972(0x152)]??this[_0x342972(0x196)];},'memberFacts'(_0x14c3e5){const _0x162617=_0x37603a,_0x38c221=[];return _0x14c3e5?.[_0x162617(0x15e)]?.[_0x162617(0x170)]&&_0x38c221[_0x162617(0x191)]('job:'+_0x14c3e5[_0x162617(0x15e)][_0x162617(0x170)]),_0x14c3e5?.[_0x162617(0x15e)]?.[_0x162617(0x19a)]?.[_0x162617(0x193)]&&_0x38c221['push'](_0x162617(0x173)+_0x14c3e5[_0x162617(0x15e)][_0x162617(0x19a)][_0x162617(0x193)]),_0x14c3e5?.[_0x162617(0x15e)]?.[_0x162617(0x182)]&&_0x38c221[_0x162617(0x191)](_0x162617(0x18e)+_0x14c3e5['config'][_0x162617(0x182)]),_0x14c3e5?.[_0x162617(0x15e)]?.[_0x162617(0x150)]&&_0x14c3e5[_0x162617(0x15e)][_0x162617(0x150)]!==this[_0x162617(0x196)]&&_0x38c221['push']('source\x20env:'+_0x14c3e5['config'][_0x162617(0x150)]),_0x14c3e5?.[_0x162617(0x13e)]&&_0x38c221['push'](_0x162617(0x1a7)+_0x14c3e5[_0x162617(0x13e)]),_0x14c3e5?.[_0x162617(0x181)]?_0x38c221['push'](_0x162617(0x181)):_0x14c3e5?.[_0x162617(0x159)]&&_0x38c221[_0x162617(0x191)](_0x162617(0x17c)),_0x38c221;},async '_request'(_0x1c66cc,_0x1474f5={}){const _0x22bd63=_0x37603a,_0x2d4393=await fetch(_0x1c66cc,_0x1474f5),_0x411ad9=await _0x2d4393['json']()[_0x22bd63(0x14f)](()=>({}));if(!_0x2d4393['ok'])throw new Error(_0x411ad9?.['error']?.[_0x22bd63(0x153)]||'Request\x20failed\x20('+_0x2d4393['status']+')');return _0x411ad9['data']??_0x411ad9[_0x22bd63(0x128)]??null;},async 'startSelected'(){const _0x108073=_0x37603a;if(this[_0x108073(0x141)]&&!this[_0x108073(0x18d)]){this[_0x108073(0x18d)]=!0x0;try{const _0x1691ec=this[_0x108073(0x141)][_0x108073(0x152)]||this[_0x108073(0x196)];await this[_0x108073(0x13c)](__ENV__[_0x108073(0x194)]+_0x108073(0x1a4)+encodeURIComponent(_0x1691ec)+_0x108073(0x174)+encodeURIComponent(this[_0x108073(0x141)][_0x108073(0x193)])+_0x108073(0x176),{'method':_0x108073(0x1a5)}),_0x41dfe8[_0x108073(0x1aa)]['shared']?.[_0x108073(0x140)]?.['success']?.(_0x108073(0x151)+this[_0x108073(0x141)][_0x108073(0x193)]+'\x22'),await this[_0x108073(0x133)]();}catch(_0x4db4e6){_0x41dfe8['$ok']['shared']?.[_0x108073(0x140)]?.[_0x108073(0x15a)]?.(_0x4db4e6?.[_0x108073(0x153)]||_0x108073(0x136));}finally{this['actionBusy']=!0x1;}}},async 'stopSelected'(){const _0x265a81=_0x37603a;if(this[_0x265a81(0x141)]&&!this['actionBusy']&&await _0x41dfe8[_0x265a81(0x1aa)][_0x265a81(0x17c)][_0x265a81(0x197)][_0x265a81(0x15f)]('Stop\x20pipeline\x20\x22<b>'+this['selectedPipeline'][_0x265a81(0x193)]+'</b>\x22?')){this['actionBusy']=!0x0;try{const _0x275ee2=this[_0x265a81(0x141)]['env']||this[_0x265a81(0x196)];await this[_0x265a81(0x13c)](__ENV__['API']+'/env/'+encodeURIComponent(_0x275ee2)+_0x265a81(0x174)+encodeURIComponent(this[_0x265a81(0x141)][_0x265a81(0x193)])+_0x265a81(0x1a1),{'method':_0x265a81(0x1a5)}),_0x41dfe8[_0x265a81(0x1aa)][_0x265a81(0x17c)]?.[_0x265a81(0x140)]?.[_0x265a81(0x1a0)]?.(_0x265a81(0x14d)+this[_0x265a81(0x141)][_0x265a81(0x193)]+'\x22'),await this['load']();}catch(_0x332b39){_0x41dfe8['$ok'][_0x265a81(0x17c)]?.[_0x265a81(0x140)]?.['error']?.(_0x332b39?.['message']||_0x265a81(0x17f));}finally{this[_0x265a81(0x18d)]=!0x1;}}},async 'deleteSelected'(){const _0xc10a95=_0x37603a;if(!this['selectedPipeline']||this[_0xc10a95(0x18d)])return;const _0x2464cb=this[_0xc10a95(0x141)],_0x1cb5e2=(_0x2464cb['engines']||[])['map'](_0x45964f=>'•\x20'+(_0x45964f[_0xc10a95(0x13b)]||_0x45964f[_0xc10a95(0x12a)])+':\x20'+_0x45964f[_0xc10a95(0x12a)]+'@'+_0x45964f[_0xc10a95(0x193)])['join'](_0xc10a95(0x186));if(await _0x41dfe8[_0xc10a95(0x1aa)]['shared']['modal']['confirm']('Delete\x20pipeline\x20\x22<b>'+_0x2464cb[_0xc10a95(0x193)]+_0xc10a95(0x144)+(_0x1cb5e2||_0xc10a95(0x161))+_0xc10a95(0x14a))){this[_0xc10a95(0x18d)]=!0x0;try{const _0x126e1b=_0x2464cb[_0xc10a95(0x152)]||this['envName'];await this[_0xc10a95(0x13c)](__ENV__[_0xc10a95(0x194)]+'/env/'+encodeURIComponent(_0x126e1b)+_0xc10a95(0x174)+encodeURIComponent(_0x2464cb[_0xc10a95(0x193)]),{'method':_0xc10a95(0x16f)}),_0x41dfe8[_0xc10a95(0x1aa)]['shared']?.[_0xc10a95(0x140)]?.[_0xc10a95(0x188)]?.(_0xc10a95(0x172)+_0x2464cb['name']+'\x22'),this['selectedKey']=null,await this['load']();}catch(_0x148882){_0x41dfe8[_0xc10a95(0x1aa)]['shared']?.[_0xc10a95(0x140)]?.['error']?.(_0x148882?.[_0xc10a95(0x153)]||_0xc10a95(0x13f));}finally{this[_0xc10a95(0x18d)]=!0x1;}}},'openType'(_0x106cf7){const _0x4ef1bb=_0x37603a,_0x2884ec=this[_0x4ef1bb(0x137)](_0x106cf7);if(!_0x2884ec)return;const _0x14de0f=this[_0x4ef1bb(0x13a)](_0x106cf7);_0x14de0f&&_0x14de0f!==_0x41dfe8[_0x4ef1bb(0x1aa)][_0x4ef1bb(0x179)]['okdb'][_0x4ef1bb(0x139)]&&_0x41dfe8[_0x4ef1bb(0x1aa)][_0x4ef1bb(0x179)][_0x4ef1bb(0x12e)][_0x4ef1bb(0x15b)](_0x14de0f);const _0x3bb4d0=_0x41dfe8['$vars'][_0x4ef1bb(0x129)];_0x3bb4d0?.[_0x4ef1bb(0x191)](_0x3bb4d0[_0x4ef1bb(0x1a9)]('/db',{'env':_0x14de0f,'type':_0x2884ec,'tab':_0x4ef1bb(0x160)}));},async 'openEngineModal'(_0xca055a){const _0x24380e=_0x37603a;if(!_0xca055a?.[_0x24380e(0x159)])return;const _0x58866e=this,_0x4e0ad5=this[_0x24380e(0x183)](_0xca055a);await _0x41dfe8[_0x24380e(0x1aa)][_0x24380e(0x17c)]['modal']['open']({'owner':_0x41dfe8,'title':_0x24380e(0x14c)+_0xca055a[_0x24380e(0x193)],'canDrag':!0x0,'content':_0x24380e(0x18f),'context':_0x2f0caf=>({'modal':_0x2f0caf,'engine':_0xca055a,'envName':_0x4e0ad5,'onDone':async()=>{const _0x11734c=_0x24380e;await _0x58866e[_0x11734c(0x133)]();}})});}}),async 'init'(_0x4f8211){const _0x441ac7=_0x37603a;_0x4f8211['$watch'](()=>_0x4f8211['$attr'][_0x441ac7(0x189)],()=>this[_0x441ac7(0x14e)]()),_0x4f8211[_0x441ac7(0x19e)](()=>_0x4f8211[_0x441ac7(0x1aa)]['stores'][_0x441ac7(0x12e)]['selectedEnv'],()=>{const _0x7aa9fc=_0x441ac7;this[_0x7aa9fc(0x149)]||(this[_0x7aa9fc(0x154)]=null),this[_0x7aa9fc(0x133)]();}),await this[_0x441ac7(0x133)]();const _0x206d9b=()=>this[_0x441ac7(0x133)]();this[_0x441ac7(0x145)]=[_0x211bb2['on']('engine:started',_0x206d9b),_0x211bb2['on'](_0x441ac7(0x13d),_0x206d9b),_0x211bb2['on'](_0x441ac7(0x14b),_0x206d9b),_0x211bb2['on'](_0x441ac7(0x184),_0x206d9b),_0x211bb2['on'](_0x441ac7(0x18a),_0x206d9b)];},'unmount'(){const _0x266712=_0x37603a;for(const _0x431cc4 of this[_0x266712(0x145)])_0x431cc4();this[_0x266712(0x145)]=[];},'template':_0x37603a(0x17b),'style':_0x37603a(0x17a)};
@@ -0,0 +1 @@
1
+ const _0x9de5a5=_0x46ba;(function(_0x1b09cc,_0x1cdf3d){const _0x2f1122=_0x46ba,_0x496639=_0x1b09cc();while(!![]){try{const _0x4777ea=-parseInt(_0x2f1122(0x85))/0x1*(parseInt(_0x2f1122(0xd2))/0x2)+-parseInt(_0x2f1122(0x87))/0x3+-parseInt(_0x2f1122(0xb2))/0x4+parseInt(_0x2f1122(0x7d))/0x5*(parseInt(_0x2f1122(0xcb))/0x6)+parseInt(_0x2f1122(0x83))/0x7+parseInt(_0x2f1122(0xae))/0x8*(-parseInt(_0x2f1122(0xc1))/0x9)+parseInt(_0x2f1122(0x8f))/0xa;if(_0x4777ea===_0x1cdf3d)break;else _0x496639['push'](_0x496639['shift']());}catch(_0xbdd110){_0x496639['push'](_0x496639['shift']());}}}(_0x1bcb,0x7aeba));function _0x46ba(_0x2c30f0,_0x162662){_0x2c30f0=_0x2c30f0-0x75;const _0x1bcb80=_0x1bcb();let _0x46ba36=_0x1bcb80[_0x2c30f0];return _0x46ba36;}function _0x1bcb(){const _0x3662d6=['Failed','application/json','map','error','/item/','/ttl','object','clock','var(--okdb-success)','stores','TTL\x20set\x20(','\x0a\x20\x20\x20\x20\x20\x20\x20\x20<transition\x20name=\x22grow\x22>\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\x20\x20\x20\x20<!--\x20Clock\x20+\x20TTL\x20badges\x20row\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:6px;\x20margin-bottom:8px;\x22>\x0a\x20\x20\x20\x20\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\x20\x20\x20\x20\x20\x20@click=\x22toggleClock()\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\x20style=\x22font-size:10px;\x20padding:1px\x207px;\x20border-radius:4px;\x20border:1px\x20solid\x20var(--okdb-app-border);\x20background:var(--okdb-app-bg-deep);\x20color:var(--okdb-app-fg-muted);\x20cursor:pointer;\x20font-family:monospace;\x20display:flex;\x20align-items:center;\x20gap:5px;\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\x20title=\x22Show\x20change\x20history\x20for\x20this\x20record\x22\x0a\x20\x20\x20\x20\x20\x20\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\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22clockBusy\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\x20\x20\x20\x20\x20<span>clock\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\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!clockBusy\x20&&\x20latestClock\x20!=\x20null\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\x20\x20\x20\x20\x20<span>clock:\x20{{\x20latestClock\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\x20\x20\x20\x20\x20\x20<if\x20:=\x22latestTime\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\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.55;\x20font-family:sans-serif;\x20font-size:10px;\x22>·\x20{{\x20latestTime\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\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\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.4;\x22>{{\x20clockOpen\x20?\x20\x27▲\x27\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\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!clockBusy\x20&&\x20latestClock\x20==\x20null\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\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.5;\x22>no\x20clock</span>\x0a\x20\x20\x20\x20\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\x20\x20</button>\x0a\x0a\x20\x20\x20\x20\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\x20\x20\x20\x20\x20\x20@click=\x22ttlOpen\x20=\x20!ttlOpen\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\x20:style=\x22\x27font-size:10px;\x20padding:1px\x207px;\x20border-radius:4px;\x20border:1px\x20solid\x20\x27\x20+\x20(ttlInfo\x20?\x20ttlBadgeColor\x20+\x20\x2755\x27\x20:\x20\x27var(--okdb-app-border)\x27)\x20+\x20\x27;\x20background:var(--okdb-app-bg-deep);\x20color:\x27\x20+\x20ttlBadgeColor\x20+\x20\x27;\x20cursor:pointer;\x20font-family:monospace;\x20display:flex;\x20align-items:center;\x20gap:5px;\x27\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\x20title=\x22TTL\x20(time-to-live)\x20for\x20this\x20record\x22\x0a\x20\x20\x20\x20\x20\x20\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\x20\x20\x20\x20\x20\x20\x20\x20<span>{{\x20ttlBadgeText\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\x20\x20<if\x20:=\x22ttlInfo\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\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.4;\x22>{{\x20ttlOpen\x20?\x20\x27▲\x27\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\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\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</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Changelog\x20+\x20time-travel\x20panel\x20(opens\x20when\x20clock\x20badge\x20clicked)\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22clockOpen\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22margin-bottom:10px;\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\x20<!--\x20Changelog\x20table\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22clockEntries\x20&&\x20clockEntries.length\x20>\x200\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\x20\x20\x20\x20\x20<div\x20style=\x22margin-bottom:8px;\x20background:var(--okdb-app-bg-deep);\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:6px;\x20overflow:hidden;\x20font-size:11px;\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\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:grid;\x20grid-template-columns:auto\x20auto\x201fr\x20auto;\x20gap:0;\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\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:4px\x2010px;\x20opacity:.4;\x20border-bottom:1px\x20solid\x20var(--okdb-app-border);\x20font-weight:600;\x22>clock</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:4px\x2010px;\x20opacity:.4;\x20border-bottom:1px\x20solid\x20var(--okdb-app-border);\x20font-weight:600;\x22>action</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:4px\x2010px;\x20opacity:.4;\x20border-bottom:1px\x20solid\x20var(--okdb-app-border);\x20font-weight:600;\x22>wall\x20time</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:4px\x2010px;\x20opacity:.4;\x20border-bottom:1px\x20solid\x20var(--okdb-app-border);\x20font-weight:600;\x22>origin</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22clockEntries\x22\x20let:item=\x22entry\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\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:3px\x2010px;\x20font-family:monospace;\x20opacity:.8;\x20border-bottom:1px\x20solid\x20var(--okdb-app-surface);\x22>{{\x20entry.clock\x20??\x20\x27—\x27\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:3px\x2010px;\x20border-bottom:1px\x20solid\x20var(--okdb-app-surface);\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\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22\x27color:\x27\x20+\x20(entry.action\x20===\x20\x27put\x27\x20?\x20\x27var(--okdb-success)\x27\x20:\x20entry.action\x20===\x20\x27remove\x27\x20?\x20\x27var(--okdb-danger)\x27\x20:\x20\x27var(--okdb-warning)\x27)\x22>{{\x20entry.action\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\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\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:3px\x2010px;\x20opacity:.6;\x20border-bottom:1px\x20solid\x20var(--okdb-app-surface);\x20white-space:nowrap;\x22>{{\x20hlcToDate(entry.timestamp)\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:3px\x2010px;\x20font-family:monospace;\x20opacity:.35;\x20font-size:10px;\x20border-bottom:1px\x20solid\x20var(--okdb-app-surface);\x20white-space:nowrap;\x20overflow:hidden;\x20text-overflow:ellipsis;\x20max-width:120px;\x22\x20:title=\x22entry.origin\x22>{{\x20(entry.origin\x20||\x20\x27—\x27).slice(0,\x208)\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\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\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\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\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Time-travel\x20scrubber\x20(sits\x20outside\x20overflow:hidden\x20so\x20tooltips\x20aren\x27t\x20clipped)\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<tm-timeline\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\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\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:item-key=\x22key\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\x20\x20\x20\x20\x20:env=\x22$ok.stores.okdb.selectedEnv\x20||\x20\x27default\x27\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\x20\x20\x20\x20\x20:selected-clock=\x22tmSelectedClock\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\x20\x20\x20\x20\x20@tm-clock-select=\x22onTMClockSelect($event.detail)\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\x20\x20\x20\x20\x20@tm-diffs-loaded=\x22tmDiffs\x20=\x20$event.detail.diffs\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\x20/>\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</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20TTL\x20detail\x20panel\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22ttlOpen\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22margin-bottom:10px;\x20background:var(--okdb-app-bg-deep);\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:6px;\x20padding:10px;\x20font-size:11px;\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\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:8px;\x20margin-bottom:8px;\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\x20\x20\x20\x20\x20<span\x20style=\x22font-weight:600;\x20opacity:.6;\x22>Time-to-Live</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22ttlInfo\x20&&\x20ttlInfo.expiresAt\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\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22\x27color:\x27\x20+\x20ttlBadgeColor\x20+\x20\x27;\x20font-family:monospace;\x27\x22>{{\x20fmtDuration(ttlInfo.remainingMs)\x20}}\x20remaining</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\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:.35;\x20font-size:10px;\x22>·\x20expires\x20{{\x20new\x20Date(ttlInfo.expiresAt).toLocaleString()\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\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\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22!ttlInfo\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\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.4;\x22>No\x20TTL\x20set\x20—\x20this\x20item\x20will\x20not\x20expire.</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\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\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\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\x20\x20\x20\x20\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\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@change=\x22onTTLPresetChange($event.target.value)\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\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\x20\x20\x20\x20\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\x20\x20\x20\x20\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\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22ttlPresets\x22\x20let:item=\x22p\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\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20:value=\x22String(p.ms)\x22\x20:selected=\x22ttlPreset\x20===\x20String(p.ms)\x22>{{\x20p.label\x20}}</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\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\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\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\x20\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\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20!value=\x22ttlInputMs\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\x20\x20\x20\x20\x20\x20\x20\x20\x20@input=\x22(ttlInputMs\x20=\x20$el.value,\x20ttlPreset\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\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\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22width:100px;\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\x20\x20\x20\x20\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\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22setItemTTL()\x22\x20:disabled=\x22ttlBusy\x20||\x20!ttlInputMs\x22\x20style=\x22font-size:11px;\x20padding:2px\x2010px;\x20color:var(--okdb-success);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-success)\x2033%,\x20transparent);\x22>Set\x20TTL</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22ttlInfo\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\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22clearItemTTL()\x22\x20:disabled=\x22ttlBusy\x22\x20style=\x22font-size:11px;\x20padding:2px\x2010px;\x20color:var(--okdb-danger);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-danger)\x2033%,\x20transparent);\x22>Clear\x20TTL</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\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\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22loadTTL()\x22\x20:disabled=\x22ttlBusy\x22\x20style=\x22font-size:11px;\x20padding:2px\x208px;\x20opacity:.5;\x22\x20title=\x22Refresh\x20TTL\x20info\x22>↻</button>\x0a\x20\x20\x20\x20\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>\x0a\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<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20JSON\x20header\x20with\x20historical\x20clock\x20badge\x20+\x20prev/next\x20navigation\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:5px;\x20margin-bottom:4px;\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\x20<if\x20:=\x22tmSelectedClock\x20!==\x20null\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\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\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22goPrev()\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\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!canGoPrev\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\x20\x20\x20\x20\x20\x20\x20\x20\x20:style=\x22\x27font-size:12px;\x20padding:0\x206px;\x20height:20px;\x20line-height:1;\x20border-radius:4px;\x20border:1px\x20solid\x20var(--okdb-app-border);\x20background:var(--okdb-app-bg-deep);\x20color:var(--okdb-app-fg-muted);\x20cursor:pointer;\x20font-family:monospace;\x20opacity:\x27\x20+\x20(canGoPrev\x20?\x20\x271\x27\x20:\x20\x27.3\x27)\x20+\x20\x27;\x20transition:opacity\x20120ms;\x27\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\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Previous\x20snapshot\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\x20\x20\x20\x20\x20>&#8592;</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22display:inline-flex;\x20align-items:center;\x20gap:6px;\x20font-size:10px;\x20padding:1px\x208px;\x20border-radius:4px;\x20background:color-mix(in\x20srgb,\x20var(--okdb-accent)\x2012%,\x20transparent);\x20color:var(--okdb-accent);\x20font-family:monospace;\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\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>clock\x20{{\x20tmSelectedClock\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\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22tmSelectedTime\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\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.6;\x20font-family:sans-serif;\x20font-weight:400;\x22>{{\x20tmSelectedTime\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\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\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\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\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22goNext()\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\x20\x20\x20\x20\x20\x20\x20\x20\x20:disabled=\x22!canGoNext\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\x20\x20\x20\x20\x20\x20\x20\x20\x20:style=\x22\x27font-size:12px;\x20padding:0\x206px;\x20height:20px;\x20line-height:1;\x20border-radius:4px;\x20border:1px\x20solid\x20var(--okdb-app-border);\x20background:var(--okdb-app-bg-deep);\x20color:var(--okdb-app-fg-muted);\x20cursor:pointer;\x20font-family:monospace;\x20opacity:\x27\x20+\x20(canGoNext\x20?\x20\x271\x27\x20:\x20\x27.3\x27)\x20+\x20\x27;\x20transition:opacity\x20120ms;\x27\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\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Next\x20snapshot\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\x20\x20\x20\x20\x20>&#8594;</button>\x0a\x20\x20\x20\x20\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\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22position:relative;\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\x20<ok-json-input\x20ref=\x22editor\x22\x20:value=\x22tmSelectedClock\x20!==\x20null\x20?\x20tmValue\x20:\x20row\x22\x20@edit=\x22edited=$event.detail\x22\x20@parse-error=\x22jsonError=$event.detail\x22\x20style=\x22min-height:\x20300px\x22></ok-json-input>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22tmFetchBusy\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\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\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22position:absolute;\x20inset:0;\x20background:var(--okdb-app-bg)88;\x20display:flex;\x20align-items:center;\x20justify-content:center;\x20border-radius:6px;\x20z-index:2;\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\x20\x20\x20\x20\x20>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\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:12px;\x20opacity:.6;\x22>loading…</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\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\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22margin-top:8px;\x20display:flex;\x20gap:8px;\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\x20<button\x20@click=\x22reset\x22\x20:disabled=\x22!hasEditedValue\x22>Reset</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22save\x22\x20:disabled=\x22!hasEditedValue\x20||\x20busySave\x22>Save</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22remove\x22\x20:disabled=\x22busyRemove\x22>Delete</button>\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</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</transition>\x0a\x20\x20\x20\x20','toLocaleString','tmSelectedDiff','24\x20hr','no\x20ttl','var(--okdb-orange)','floor','DELETE','5\x20min','change','Save\x20failed','1\x20min','api','32axCbeS','key','catch','ttlInputMs','2716528cwitsQ','tmSelectedClock','value','ttlBusy','Remove\x20row\x20error','shared','edited','Save\x20row\x20error','canGoNext','ttlInfo','tmFetchBusy','tmDiffClocks','busyRemove','toast','$ok','1933407PUZNXv','var(--okdb-app-fg-muted)','parse','TTL\x20cleared','reset','numeric','ttlPreset','clockEntries','length','json','30buaqGt','$watch','busySave','all','clockOpen','remainingMs','loadClock','2MlQLLi','loadTTL','type','clockBusy','hlcToDate','tmCurrentIdx','find','dispatchEvent','tmValue','statusText','info','onTMClockSelect','fmtDuration','jsonError','7\x20days','row','422575PLzsoE','message','2-digit','remove','edit-row','15\x20min','4176242sanDkH','PUT','1005921CYXEJo','Failed\x20to\x20clear\x20TTL','2965797iQBAjV','/type/','var(--okdb-danger)','6\x20hr','tmDiffs','canGoPrev','string','data','30172450eVkWjT','Failed\x20to\x20set\x20TTL','timestamp','$el','$attr','result','$refs'];_0x1bcb=function(){return _0x3662d6;};return _0x1bcb();}import _0x3d64d1 from'../../../components/ok-json-input.ok.js';import _0x1e70b2 from'./tm-timeline.ok.js';function o(_0xf803a1){const _0x326e18=_0x46ba;return!!_0xf803a1&&_0x326e18(0x9c)==typeof _0xf803a1&&!Array['isArray'](_0xf803a1);}export default{'tag':_0x9de5a5(0x81),'dependencies':[_0x3d64d1,_0x1e70b2],'attr':{'type':{},'key':{},'row':{}},'context':_0x4ee3e3=>({get 'api'(){const _0x5f0112=_0x9de5a5;return _0x4ee3e3[_0x5f0112(0xc0)][_0x5f0112(0x9f)]['okdb']['apiBase'];},get 'type'(){const _0x41fec4=_0x9de5a5;return _0x4ee3e3[_0x41fec4(0x93)]['type'];},get 'key'(){const _0x167b31=_0x9de5a5;return _0x4ee3e3['$attr'][_0x167b31(0xaf)];},get 'row'(){const _0x3e88d6=_0x9de5a5;return _0x4ee3e3['$attr'][_0x3e88d6(0x7c)];},get 'hasEditedValue'(){const _0x406635=_0x9de5a5;return void 0x0!==this[_0x406635(0xb8)]&&!this['jsonError'];},'edited':void 0x0,'jsonError':!0x1,'busySave':!0x1,'busyRemove':!0x1,'tmSelectedClock':null,'tmFetchBusy':!0x1,'tmValue':null,'tmDiffs':[],get 'tmDiffClocks'(){const _0x49eaf2=_0x9de5a5;return this[_0x49eaf2(0x8b)][_0x49eaf2(0x98)](_0xca72=>_0xca72[_0x49eaf2(0x9d)]);},get 'tmSelectedDiff'(){const _0x49ce9a=_0x9de5a5;return null===this[_0x49ce9a(0xb3)]?null:this[_0x49ce9a(0x8b)][_0x49ce9a(0xd8)](_0x4e1644=>_0x4e1644[_0x49ce9a(0x9d)]===this[_0x49ce9a(0xb3)])??null;},get 'tmSelectedTime'(){const _0xb15307=_0x9de5a5,_0x34a8f7=this[_0xb15307(0xa3)]?.[_0xb15307(0x91)];return _0x34a8f7?new Date(_0x34a8f7)[_0xb15307(0xa2)]('en-GB',{'day':_0xb15307(0xc6),'month':'short','year':_0xb15307(0xc6),'hour':'2-digit','minute':'2-digit','second':_0xb15307(0x7f)}):null;},get 'tmCurrentIdx'(){const _0x1af87d=_0x9de5a5;return null===this[_0x1af87d(0xb3)]?-0x1:this[_0x1af87d(0xbd)]['indexOf'](this[_0x1af87d(0xb3)]);},get 'canGoPrev'(){return this['tmCurrentIdx']>0x0;},get 'canGoNext'(){const _0x500dba=_0x9de5a5;return-0x1!==this[_0x500dba(0xd7)]&&this[_0x500dba(0xd7)]<this[_0x500dba(0xbd)][_0x500dba(0xc9)]-0x1;},'goPrev'(){const _0x4eaeb1=_0x9de5a5;this[_0x4eaeb1(0x8c)]&&this['onTMClockSelect']({'clock':this[_0x4eaeb1(0xbd)][this[_0x4eaeb1(0xd7)]-0x1]});},'goNext'(){const _0xb8346c=_0x9de5a5;this[_0xb8346c(0xba)]&&this[_0xb8346c(0x78)]({'clock':this['tmDiffClocks'][this[_0xb8346c(0xd7)]+0x1]});},'clockOpen':!0x1,'clockBusy':!0x1,'clockEntries':null,'ttlInfo':null,'ttlBusy':!0x1,'ttlOpen':!0x1,'ttlInputMs':'','ttlPreset':'','ttlPresets':[{'label':_0x9de5a5(0xac),'ms':0xea60},{'label':_0x9de5a5(0xa9),'ms':0x493e0},{'label':_0x9de5a5(0x82),'ms':0xdbba0},{'label':'1\x20hr','ms':0x36ee80},{'label':_0x9de5a5(0x8a),'ms':0x1499700},{'label':_0x9de5a5(0xa4),'ms':0x5265c00},{'label':_0x9de5a5(0x7b),'ms':0x240c8400},{'label':'30\x20days','ms':0x9a7ec800}],async 'loadTTL'(){const _0x31779e=_0x9de5a5;if(!this[_0x31779e(0xb5)]){this[_0x31779e(0xb5)]=!0x0;try{const _0xf45927=await fetch(this[_0x31779e(0xad)]+_0x31779e(0x88)+encodeURIComponent(this[_0x31779e(0xd4)])+'/item/'+encodeURIComponent(this[_0x31779e(0xaf)])+_0x31779e(0x9b)),_0x3b262d=await _0xf45927[_0x31779e(0xca)](),_0x496805=_0x3b262d[_0x31779e(0x8e)]??_0x3b262d[_0x31779e(0x94)]??null;this['ttlInfo']=_0x496805||!0x1;}catch{this[_0x31779e(0xbb)]=!0x1;}finally{this[_0x31779e(0xb5)]=!0x1;}}},async 'setItemTTL'(){const _0x8e794=_0x9de5a5,_0x4ab082=parseInt(this['ttlInputMs']);if(_0x4ab082&&!(_0x4ab082<=0x0)){this[_0x8e794(0xb5)]=!0x0;try{const _0x13cdf4=await fetch(this['api']+_0x8e794(0x88)+encodeURIComponent(this[_0x8e794(0xd4)])+'/item/'+encodeURIComponent(this[_0x8e794(0xaf)])+'/ttl',{'method':_0x8e794(0x84),'headers':{'Content-Type':_0x8e794(0x97)},'body':JSON['stringify']({'ttl':_0x4ab082})});if(!_0x13cdf4['ok']){const _0x4c0850=await _0x13cdf4['json']()[_0x8e794(0xb0)](()=>({}));throw new Error(_0x4c0850?.[_0x8e794(0x99)]?.['message']||_0x13cdf4[_0x8e794(0x76)]);}_0x4ee3e3[_0x8e794(0xc0)][_0x8e794(0xb7)]?.[_0x8e794(0xbf)]?.[_0x8e794(0x77)]?.(_0x8e794(0xa0)+this[_0x8e794(0x79)](_0x4ab082)+')'),await this[_0x8e794(0xd3)]();}catch(_0x155140){_0x4ee3e3[_0x8e794(0xc0)][_0x8e794(0xb7)]?.[_0x8e794(0xbf)]?.[_0x8e794(0x99)]?.(_0x155140[_0x8e794(0x7e)]||_0x8e794(0x90));}finally{this[_0x8e794(0xb5)]=!0x1;}}},async 'clearItemTTL'(){const _0x27d9ad=_0x9de5a5;this[_0x27d9ad(0xb5)]=!0x0;try{const _0x5897fd=await fetch(this[_0x27d9ad(0xad)]+_0x27d9ad(0x88)+encodeURIComponent(this[_0x27d9ad(0xd4)])+_0x27d9ad(0x9a)+encodeURIComponent(this['key'])+_0x27d9ad(0x9b),{'method':_0x27d9ad(0xa8)});if(!_0x5897fd['ok'])throw new Error(_0x5897fd[_0x27d9ad(0x76)]);this[_0x27d9ad(0xbb)]=!0x1,this[_0x27d9ad(0xb1)]='',this['ttlPreset']='',_0x4ee3e3[_0x27d9ad(0xc0)]['shared']?.[_0x27d9ad(0xbf)]?.[_0x27d9ad(0x77)]?.(_0x27d9ad(0xc4));}catch(_0x2ab868){_0x4ee3e3[_0x27d9ad(0xc0)][_0x27d9ad(0xb7)]?.[_0x27d9ad(0xbf)]?.[_0x27d9ad(0x99)]?.(_0x2ab868[_0x27d9ad(0x7e)]||_0x27d9ad(0x86));}finally{this[_0x27d9ad(0xb5)]=!0x1;}},'onTTLPresetChange'(_0x1ea537){const _0x11cc5e=_0x9de5a5;this[_0x11cc5e(0xc7)]=_0x1ea537,_0x1ea537&&(this[_0x11cc5e(0xb1)]=_0x1ea537);},'fmtDuration'(_0x345a07){const _0x29f1e2=_0x9de5a5;if(null==_0x345a07)return'—';const _0x157401=Math[_0x29f1e2(0xa7)](_0x345a07/0x3e8);return _0x157401<0x3c?_0x157401+'s':_0x157401<0xe10?Math[_0x29f1e2(0xa7)](_0x157401/0x3c)+'m\x20'+_0x157401%0x3c+'s':_0x157401<0x15180?Math[_0x29f1e2(0xa7)](_0x157401/0xe10)+'h\x20'+Math[_0x29f1e2(0xa7)](_0x157401%0xe10/0x3c)+'m':Math['floor'](_0x157401/0x15180)+'d\x20'+Math[_0x29f1e2(0xa7)](_0x157401%0x15180/0xe10)+'h';},get 'ttlBadgeText'(){const _0x5e8d09=_0x9de5a5;return this[_0x5e8d09(0xb5)]?'ttl\x20…':this[_0x5e8d09(0xbb)]?this['ttlInfo']['remainingMs']<=0x0?'ttl:\x20expired':'ttl:\x20'+this[_0x5e8d09(0x79)](this[_0x5e8d09(0xbb)][_0x5e8d09(0xd0)]):_0x5e8d09(0xa5);},get 'ttlBadgeColor'(){const _0x335cc4=_0x9de5a5;return this[_0x335cc4(0xbb)]?this['ttlInfo'][_0x335cc4(0xd0)]<=0x0?_0x335cc4(0x89):this[_0x335cc4(0xbb)][_0x335cc4(0xd0)]<0xea60?_0x335cc4(0xa6):_0x335cc4(0x9e):_0x335cc4(0xc2);},'hlcToDate'(_0x3d5e9e){const _0x3b3ba5=Number(_0x3d5e9e)||0x0,_0x2a43e7=(_0x3b3ba5-_0x3b3ba5%0x400)/0x400;return _0x2a43e7?new Date(_0x2a43e7)['toLocaleString']():'—';},get 'latestClock'(){const _0x5efca2=_0x9de5a5;return this[_0x5efca2(0xc8)]?.['length']?this['clockEntries'][0x0][_0x5efca2(0x9d)]??null:null;},get 'latestTime'(){const _0xefb9f3=_0x9de5a5;if(!this[_0xefb9f3(0xc8)]?.[_0xefb9f3(0xc9)])return null;const _0xec1a3=this[_0xefb9f3(0xc8)][0x0][_0xefb9f3(0x91)];return _0xec1a3?this[_0xefb9f3(0xd6)](_0xec1a3):null;},async 'toggleClock'(){const _0x22e919=_0x9de5a5;this[_0x22e919(0xcf)]=!this[_0x22e919(0xcf)];},async 'loadClock'(){const _0x15604d=_0x9de5a5;if(!this[_0x15604d(0xd5)]){this['clockBusy']=!0x0;try{const _0x11bc12=await fetch(this[_0x15604d(0xad)]+'/type/'+encodeURIComponent(this[_0x15604d(0xd4)])+_0x15604d(0x9a)+encodeURIComponent(this['key'])+'/changelog?limit=20'),_0x204542=await _0x11bc12['json']();this[_0x15604d(0xc8)]=_0x204542[_0x15604d(0x8e)]??[];}catch{this[_0x15604d(0xc8)]=[];}finally{this[_0x15604d(0xd5)]=!0x1;}}},async 'onTMClockSelect'({clock:_0x21e3fe}){const _0x39e575=_0x9de5a5;if(this[_0x39e575(0xb3)]=_0x21e3fe,null===_0x21e3fe)return this['tmValue']=null,this['tmFetchBusy']=!0x1,void(this[_0x39e575(0xb8)]=void 0x0);this['tmFetchBusy']=!0x0;try{const _0x4c2389=await fetch(this[_0x39e575(0xad)]+'/time-machine/'+encodeURIComponent(this['type'])+'/'+encodeURIComponent(this[_0x39e575(0xaf)])+'/at/'+_0x21e3fe),_0x5591f1=await _0x4c2389[_0x39e575(0xca)]();if(!_0x4c2389['ok'])throw new Error(_0x5591f1?.[_0x39e575(0x99)]?.[_0x39e575(0x7e)]||_0x39e575(0x96));this[_0x39e575(0x75)]=_0x5591f1[_0x39e575(0x94)]?.[_0x39e575(0xb4)]??_0x5591f1[_0x39e575(0x8e)]?.[_0x39e575(0xb4)]??null,this[_0x39e575(0xb8)]=JSON[_0x39e575(0xc3)](JSON['stringify'](this[_0x39e575(0x75)]));}catch{this['tmSelectedClock']=null,this[_0x39e575(0x75)]=null;}finally{this[_0x39e575(0xbc)]=!0x1;}},'reset'(){const _0x289975=_0x9de5a5;this[_0x289975(0xb8)]=void 0x0,this[_0x289975(0x7a)]=!0x1,_0x4ee3e3[_0x289975(0x95)]['editor'][_0x289975(0xc5)]?.();},async 'save'(){const _0x4484a6=_0x9de5a5;if(void 0x0!==this[_0x4484a6(0xb8)]&&!this[_0x4484a6(0x7a)]){this[_0x4484a6(0xcd)]=!0x0;try{const _0x2737cc=this[_0x4484a6(0xb8)],_0x3a3654=await fetch(this['api']+_0x4484a6(0x88)+this['type']+_0x4484a6(0x9a)+this[_0x4484a6(0xaf)],{'method':_0x4484a6(0x84),'headers':{'Content-Type':_0x4484a6(0x97)},'body':JSON['stringify'](_0x2737cc)});if(!_0x3a3654['ok']){const _0x331fd6=await _0x3a3654['json']()[_0x4484a6(0xb0)](()=>({})),_0x4f70a7=_0x331fd6?.[_0x4484a6(0x99)]?.[_0x4484a6(0x7e)]||_0x331fd6?.[_0x4484a6(0x7e)]||_0x331fd6?.[_0x4484a6(0x99)]||_0x3a3654[_0x4484a6(0x76)];throw new Error(_0x4484a6(0x8d)==typeof _0x4f70a7?_0x4f70a7:_0x3a3654[_0x4484a6(0x76)]);}o(this['row'])&&o(_0x2737cc)&&(Object['keys'](this[_0x4484a6(0x7c)])['forEach'](_0x325b64=>delete this[_0x4484a6(0x7c)][_0x325b64]),Object['assign'](this[_0x4484a6(0x7c)],_0x2737cc)),_0x4ee3e3[_0x4484a6(0x92)][_0x4484a6(0xd9)](new CustomEvent(_0x4484a6(0xaa),{'detail':{'key':this[_0x4484a6(0xaf)],'value':_0x2737cc}})),this[_0x4484a6(0xc8)]=null,await this[_0x4484a6(0xd1)]();}catch(_0x1e2523){console['error'](_0x4484a6(0xb9),_0x1e2523),_0x4ee3e3[_0x4484a6(0xc0)]['shared']?.['toast']?.[_0x4484a6(0x99)]?.(_0x1e2523[_0x4484a6(0x7e)]||_0x4484a6(0xab));}finally{this[_0x4484a6(0xcd)]=!0x1;}}},async 'remove'(){const _0x111794=_0x9de5a5;this[_0x111794(0xbe)]=!0x0;try{const _0x4150a5=await fetch(this['api']+_0x111794(0x88)+this[_0x111794(0xd4)]+_0x111794(0x9a)+this[_0x111794(0xaf)],{'method':_0x111794(0xa8)});if(!_0x4150a5['ok'])throw new Error(_0x4150a5[_0x111794(0x76)]);_0x4ee3e3[_0x111794(0xc0)][_0x111794(0xb7)][_0x111794(0xbf)]?.[_0x111794(0x77)](this[_0x111794(0xaf)]+'\x20deleted'),_0x4ee3e3['$el'][_0x111794(0xd9)](new CustomEvent(_0x111794(0x80),{'detail':{'key':this[_0x111794(0xaf)],'value':this[_0x111794(0x7c)]}})),await _0x4ee3e3[_0x111794(0xc0)]['stores']['okdb']['reloadTypes']();}catch(_0x386f6d){console[_0x111794(0x99)](_0x111794(0xb6),_0x386f6d);}finally{this[_0x111794(0xbe)]=!0x1;}}}),async 'init'(_0x2e06c3){const _0x17bc13=_0x9de5a5;_0x2e06c3[_0x17bc13(0xcc)](()=>_0x2e06c3[_0x17bc13(0x93)][_0x17bc13(0xd4)]+'|'+_0x2e06c3['$attr'][_0x17bc13(0xaf)],()=>{const _0x42ce03=_0x17bc13;this[_0x42ce03(0xb3)]=null,this[_0x42ce03(0x75)]=null,this[_0x42ce03(0xbc)]=!0x1,this['tmDiffs']=[];}),await Promise[_0x17bc13(0xce)]([this['loadClock'](),this[_0x17bc13(0xd3)]()]);},'template':_0x9de5a5(0xa1)};
@@ -0,0 +1 @@
1
+ const _0x14187e=_0x1f1c;(function(_0x31f8fa,_0x26e1ae){const _0x4c5961=_0x1f1c,_0x396264=_0x31f8fa();while(!![]){try{const _0x5e4c3f=parseInt(_0x4c5961(0x1de))/0x1+-parseInt(_0x4c5961(0x1ab))/0x2*(parseInt(_0x4c5961(0x19d))/0x3)+-parseInt(_0x4c5961(0x1ec))/0x4+parseInt(_0x4c5961(0x196))/0x5*(-parseInt(_0x4c5961(0x1ad))/0x6)+-parseInt(_0x4c5961(0x1c2))/0x7*(parseInt(_0x4c5961(0x199))/0x8)+-parseInt(_0x4c5961(0x198))/0x9+parseInt(_0x4c5961(0x1a7))/0xa;if(_0x5e4c3f===_0x26e1ae)break;else _0x396264['push'](_0x396264['shift']());}catch(_0x1c8089){_0x396264['push'](_0x396264['shift']());}}}(_0x3660,0x1ba49));function _0x1f1c(_0x5bc6e0,_0x4eef27){_0x5bc6e0=_0x5bc6e0-0x18e;const _0x366052=_0x3660();let _0x1f1ce4=_0x366052[_0x5bc6e0];return _0x1f1ce4;}import _0x494815 from'@toolkit/elements/ok-icon.ok.js';function _0x3660(){const _0x4e255a=['API','\x20*\x20(100%\x20-\x2012px))','width:16px','left:clamp(40px,\x20calc(6px\x20+\x20','6px','transition:width\x20100ms\x20ease,height\x20100ms\x20ease,background\x20100ms\x20ease,opacity\x20100ms\x20ease','delete','preventDefault','pointer-events:none','display:none','height:16px','height:','querySelector','mouseup','max','type','$el','transition:left\x2070ms\x20cubic-bezier(0.25,0.1,0.25,1)','length','border-radius:50%','dotFraction','push','opacity:','10px','isDragging','124455FVSXKk','numeric','env','left:calc(6px\x20+\x20','border:1px\x20solid\x20var(--okdb-app-border)','set','$attr','join','hoverClock','tm-clock-select','\x0a<if\x20:=\x22diffs.length\x20>\x200\x22>\x0a<div>\x0a\x0a\x20\x20<!--\x20Header:\x20label\x20+\x20\x22back\x20to\x20live\x22\x20button\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20justify-content:space-between;\x20margin-bottom:7px;\x22>\x0a\x20\x20\x20\x20<span\x20style=\x22font-size:10px;\x20font-family:monospace;\x20letter-spacing:.05em;\x20text-transform:uppercase;\x20opacity:.38;\x20user-select:none;\x22>\x0a\x20\x20\x20\x20\x20\x20time\x20travel\x20&middot;\x20{{\x20diffs.length\x20}}\x20snapshot{{\x20diffs.length\x20===\x201\x20?\x20\x27\x27\x20:\x20\x27s\x27\x20}}\x0a\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20<if\x20:=\x22selectedClock\x20!==\x20null\x22>\x0a\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22selectCurrent()\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:10px;\x20padding:1px\x208px;\x20border-radius:4px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-accent)\x2035%,\x20transparent);\x20background:color-mix(in\x20srgb,\x20var(--okdb-accent)\x208%,\x20transparent);\x20color:var(--okdb-accent);\x20cursor:pointer;\x20font-family:monospace;\x20line-height:1.6;\x22\x0a\x20\x20\x20\x20\x20\x20>&larr;\x20live</button>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Scrubber:\x20capped\x20width\x20so\x20it\x20never\x20fills\x20a\x20wide\x20table\x20-->\x0a\x20\x20<div\x20style=\x22max-width:480px;\x20padding-bottom:10px;\x22>\x0a\x20\x20\x20\x20<div\x0a\x20\x20\x20\x20\x20\x20data-track\x0a\x20\x20\x20\x20\x20\x20style=\x22position:relative;\x20height:26px;\x20width:100%;\x20user-select:none;\x22\x0a\x20\x20\x20\x20\x20\x20:style=\x22\x27cursor:\x27\x20+\x20(isDragging\x20?\x20\x27grabbing\x27\x20:\x20\x27ew-resize\x27)\x22\x0a\x20\x20\x20\x20\x20\x20@mousedown=\x22startDrag($event)\x22\x0a\x20\x20\x20\x20>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20Track\x20line\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22position:absolute;\x20left:6px;\x20right:6px;\x20top:50%;\x20height:2px;\x20transform:translateY(-50%);\x20background:var(--okdb-app-border);\x20border-radius:1px;\x20pointer-events:none;\x22></div>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20Diff\x20dots\x20+\x20tooltips\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x20as=\x22repeat\x22\x20:of=\x22diffs\x22\x20let:item=\x22diff\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Tooltip\x20(above\x20track,\x20shown\x20on\x20hover\x20or\x20drag-snap)\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22activeTooltipClock\x20===\x20diff.clock\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20:style=\x22tooltipStyle(diff)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:5px;\x20margin-bottom:3px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22clock\x22\x20style=\x22width:10px;height:10px;opacity:.5;flex-shrink:0;\x22></ok-icon>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-family:monospace;\x20color:var(--okdb-accent);\x20font-size:10px;\x22>clock\x20{{\x20diff.clock\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<if\x20:=\x22wallTime(diff)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.7;\x20font-size:11px;\x22>{{\x20wallTime(diff)\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\x20\x20<div\x20style=\x22opacity:.4;\x20margin-top:3px;\x20font-size:10px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20fieldsChanged(diff)\x20}}\x20field{{\x20fieldsChanged(diff)\x20===\x201\x20?\x20\x27\x27\x20:\x20\x27s\x27\x20}}\x20changed\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\x0a\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Dot\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:style=\x22dotStyle(diff)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@mouseenter=\x22!isDragging\x20&&\x20(hoverClock\x20=\x20diff.clock)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@mouseleave=\x22!isDragging\x20&&\x20(hoverClock\x20=\x20null)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22!isDragging\x20&&\x20selectDot(diff.clock)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20></div>\x0a\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20Snapping\x20ring:\x20jumps\x20to\x20nearest\x20clock\x20with\x20CSS\x20transition\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x20:style=\x22dragRingStyle()\x22\x20style=\x22pointer-events:none;\x22></div>\x0a\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a</div>\x0a</if>\x0a','json','clientX','dispatchEvent','275408tLbyfI','forEach','[data-track]','cursor:','padding:6px\x2010px','z-index:3','top:50%','mousemove','width:','_cappedFractions','get','background:color-mix(in\x20srgb,\x20var(--okdb-accent)\x2010%,\x20transparent)','diffs','5dDESWH','var(--okdb-app-fg)','1674090QBPyby','9992jUdHwG','load','8px','bottom:calc(100%\x20+\x208px)','11307mxsOaX','abs','addEventListener','left','pointer','map','keys','selectDot','removeEventListener','short','5899310ovXxUy','clock','box-shadow:0\x202px\x2010px\x20color-mix(in\x20srgb,\x20#000\x2025%,\x20transparent)','min','62fOuXnC','var(--okdb-accent)','919626UxONfo','z-index:10','2-digit','background:var(--okdb-app-bg-deep)','/history','\x20*\x20(100%\x20-\x2012px)),\x20calc(100%\x20-\x2040px))','put','floor','data','fracFromEvent','busy','sort','/time-machine/','border-radius:6px','en-GB','.75','toLocaleString','dragClock','transform:translate(-50%,-50%)','white-space:nowrap','position:absolute','427ZRhEwC','itemKey','timestamp'];_0x3660=function(){return _0x4e255a;};return _0x3660();}export default{'tag':'tm-timeline','components':[_0x494815],'attr':{'type':{},'itemKey':{},'env':{},'selectedClock':{}},'context':_0x24a289=>({'busy':!0x1,'diffs':[],'hoverClock':null,'isDragging':!0x1,'dragClock':null,get 'type'(){const _0x4fc543=_0x1f1c;return _0x24a289[_0x4fc543(0x1e4)][_0x4fc543(0x1d4)];},get 'itemKey'(){const _0x563942=_0x1f1c;return _0x24a289[_0x563942(0x1e4)][_0x563942(0x1c3)];},get 'env'(){const _0x30c6cc=_0x1f1c;return _0x24a289[_0x30c6cc(0x1e4)]['env'];},get 'selectedClock'(){const _0x5679e1=_0x1f1c,_0x32dc8c=_0x24a289[_0x5679e1(0x1e4)]['selectedClock'];return null!=_0x32dc8c?Number(_0x32dc8c):null;},get '_cappedFractions'(){const _0x5a47fe=_0x1f1c,_0x47816f=this[_0x5a47fe(0x195)][_0x5a47fe(0x1d7)];if(0x0===_0x47816f)return new Map();if(0x1===_0x47816f)return new Map([[this[_0x5a47fe(0x195)][0x0][_0x5a47fe(0x1a8)],0.5]]);const _0x48fa85=this[_0x5a47fe(0x195)][_0x5a47fe(0x1a2)](_0x531a49=>_0x531a49[_0x5a47fe(0x1a8)]),_0x2d2c0d=[];for(let _0x2e59b6=0x1;_0x2e59b6<_0x47816f;_0x2e59b6++)_0x2d2c0d[_0x5a47fe(0x1da)](_0x48fa85[_0x2e59b6]-_0x48fa85[_0x2e59b6-0x1]);const _0x20bccb=[..._0x2d2c0d][_0x5a47fe(0x1b8)]((_0x34472d,_0x53fd06)=>_0x34472d-_0x53fd06),_0x4c683d=0x4*_0x20bccb[Math[_0x5a47fe(0x1b4)](_0x20bccb[_0x5a47fe(0x1d7)]/0x2)],_0x43ccb8=_0x2d2c0d[_0x5a47fe(0x1a2)](_0x3a1ff1=>Math['min'](_0x3a1ff1,_0x4c683d)),_0x48a152=[0x0];for(const _0x53f621 of _0x43ccb8)_0x48a152[_0x5a47fe(0x1da)](_0x48a152[_0x48a152[_0x5a47fe(0x1d7)]-0x1]+_0x53f621);const _0x93bb74=_0x48a152[_0x48a152[_0x5a47fe(0x1d7)]-0x1],_0x49f3de=new Map();return _0x48fa85[_0x5a47fe(0x1ed)]((_0x1cd7ba,_0x11c6af)=>_0x49f3de[_0x5a47fe(0x1e3)](_0x1cd7ba,_0x93bb74?_0x48a152[_0x11c6af]/_0x93bb74:0x0)),_0x49f3de;},'dotFraction'(_0x534b8c){const _0x4a2cf5=_0x1f1c;return this[_0x4a2cf5(0x192)][_0x4a2cf5(0x193)](_0x534b8c)??0.5;},'fieldsChanged':_0x19db5e=>Object[_0x14187e(0x1a3)](_0x19db5e[_0x14187e(0x1b3)]||{})['length']+(_0x19db5e[_0x14187e(0x1cb)]||[])[_0x14187e(0x1d7)],'wallTime':_0x5f0454=>_0x5f0454[_0x14187e(0x1c4)]?new Date(_0x5f0454[_0x14187e(0x1c4)])[_0x14187e(0x1bd)](_0x14187e(0x1bb),{'day':_0x14187e(0x1df),'month':_0x14187e(0x1a6),'year':_0x14187e(0x1df),'hour':_0x14187e(0x1af),'minute':'2-digit','second':_0x14187e(0x1af)}):null,get 'activeTooltipClock'(){const _0x4cb385=_0x14187e;return this[_0x4cb385(0x1dd)]?this[_0x4cb385(0x1be)]:this[_0x4cb385(0x1e6)];},async 'load'(){const _0x352620=_0x14187e;if(this[_0x352620(0x1d4)]&&this[_0x352620(0x1c3)]&&this['env']){this[_0x352620(0x1b7)]=!0x0;try{const _0x1361fc=__ENV__[_0x352620(0x1c5)]+'/env/'+encodeURIComponent(this[_0x352620(0x1e0)])+_0x352620(0x1b9)+encodeURIComponent(this[_0x352620(0x1d4)])+'/'+encodeURIComponent(this['itemKey'])+_0x352620(0x1b1),_0x4aa9c5=await fetch(_0x1361fc);if(!_0x4aa9c5['ok'])return void(this[_0x352620(0x195)]=[]);const _0xf4a0b1=await _0x4aa9c5[_0x352620(0x1e9)]();this[_0x352620(0x195)]=_0xf4a0b1[_0x352620(0x1b5)]?.[_0x352620(0x195)]||[];}catch{this[_0x352620(0x195)]=[];}finally{this['busy']=!0x1;}_0x24a289[_0x352620(0x1d5)][_0x352620(0x1eb)](new CustomEvent('tm-diffs-loaded',{'detail':{'diffs':this[_0x352620(0x195)]},'bubbles':!0x0}));}},'selectDot'(_0x8a1cef){const _0x38067d=_0x14187e;_0x24a289[_0x38067d(0x1d5)][_0x38067d(0x1eb)](new CustomEvent(_0x38067d(0x1e7),{'detail':{'clock':_0x8a1cef},'bubbles':!0x0}));},'selectCurrent'(){const _0x4ec51e=_0x14187e;_0x24a289['$el'][_0x4ec51e(0x1eb)](new CustomEvent(_0x4ec51e(0x1e7),{'detail':{'clock':null},'bubbles':!0x0}));},'nearestClockForFrac'(_0x4d2365){const _0x33d2e1=_0x14187e;if(!this[_0x33d2e1(0x195)][_0x33d2e1(0x1d7)])return null;const _0x2268bf=this[_0x33d2e1(0x192)];let _0x17762a=this[_0x33d2e1(0x195)][0x0],_0x48bb67=0x1/0x0;for(const _0x3655da of this[_0x33d2e1(0x195)]){const _0x5b4773=Math[_0x33d2e1(0x19e)]((_0x2268bf[_0x33d2e1(0x193)](_0x3655da[_0x33d2e1(0x1a8)])??0x0)-_0x4d2365);_0x5b4773<_0x48bb67&&(_0x48bb67=_0x5b4773,_0x17762a=_0x3655da);}return _0x17762a[_0x33d2e1(0x1a8)];},'fracFromEvent'(_0x515824){const _0x5607d2=_0x14187e,_0x17f6ec=_0x24a289[_0x5607d2(0x1d5)][_0x5607d2(0x1d1)](_0x5607d2(0x1ee));if(!_0x17f6ec)return null;const _0x3590b9=_0x17f6ec['getBoundingClientRect']();return Math[_0x5607d2(0x1d3)](0x0,Math[_0x5607d2(0x1aa)](0x1,(_0x515824[_0x5607d2(0x1ea)]-_0x3590b9[_0x5607d2(0x1a0)])/_0x3590b9['width']));},'startDrag'(_0xad8a80){const _0x468896=_0x14187e;_0xad8a80[_0x468896(0x1cc)]();const _0x2103d6=this[_0x468896(0x1b6)](_0xad8a80);if(null===_0x2103d6)return;this[_0x468896(0x1dd)]=!0x0,this['dragClock']=this['nearestClockForFrac'](_0x2103d6);const _0x508e6e=_0x4a8d60=>{const _0x1d3463=_0x468896,_0x2ce9ed=this[_0x1d3463(0x1b6)](_0x4a8d60);null!==_0x2ce9ed&&(this[_0x1d3463(0x1be)]=this['nearestClockForFrac'](_0x2ce9ed));},_0x2a2496=()=>{const _0x3c5cbf=_0x468896;document[_0x3c5cbf(0x1a5)](_0x3c5cbf(0x190),_0x508e6e),document['removeEventListener'](_0x3c5cbf(0x1d2),_0x2a2496),this[_0x3c5cbf(0x1dd)]=!0x1;const _0x316f48=this['dragClock'];this[_0x3c5cbf(0x1be)]=null,null!==_0x316f48&&(this[_0x3c5cbf(0x1a4)](_0x316f48),this['hoverClock']=_0x316f48);};document[_0x468896(0x19f)](_0x468896(0x190),_0x508e6e),document[_0x468896(0x19f)]('mouseup',_0x2a2496);},'dotStyle'(_0x536fe){const _0x1a4bc3=_0x14187e,_0x5a5246=this[_0x1a4bc3(0x1d9)](_0x536fe[_0x1a4bc3(0x1a8)]),_0x2e1fbc=!this[_0x1a4bc3(0x1dd)]&&this[_0x1a4bc3(0x1e6)]===_0x536fe[_0x1a4bc3(0x1a8)],_0x444279=this[_0x1a4bc3(0x1dd)]&&this['dragClock']===_0x536fe[_0x1a4bc3(0x1a8)];let _0x3a9ab5=_0x1a4bc3(0x1c9),_0x5f47f0='var(--okdb-app-fg-muted)',_0x2a910e='.55';return this['selectedClock']===_0x536fe[_0x1a4bc3(0x1a8)]?(_0x3a9ab5=_0x1a4bc3(0x1dc),_0x5f47f0=_0x1a4bc3(0x1ac),_0x2a910e='1'):_0x444279?(_0x3a9ab5=_0x1a4bc3(0x19b),_0x5f47f0=_0x1a4bc3(0x1ac),_0x2a910e=_0x1a4bc3(0x1bc)):_0x2e1fbc&&(_0x3a9ab5=_0x1a4bc3(0x1dc),_0x5f47f0=_0x1a4bc3(0x197),_0x2a910e='.9'),[_0x1a4bc3(0x1c1),'left:calc(6px\x20+\x20'+_0x5a5246+'\x20*\x20(100%\x20-\x2012px))',_0x1a4bc3(0x18f),'transform:translate(-50%,-50%)',_0x1a4bc3(0x191)+_0x3a9ab5,_0x1a4bc3(0x1d0)+_0x3a9ab5,'border-radius:50%','background:'+_0x5f47f0,_0x1a4bc3(0x1db)+_0x2a910e,_0x1a4bc3(0x1ca),_0x1a4bc3(0x1ef)+(this[_0x1a4bc3(0x1dd)]?'grabbing':_0x1a4bc3(0x1a1)),_0x1a4bc3(0x18e)][_0x1a4bc3(0x1e5)](';');},'dragRingStyle'(){const _0x5ddecc=_0x14187e;return this[_0x5ddecc(0x1dd)]&&null!==this[_0x5ddecc(0x1be)]?[_0x5ddecc(0x1c1),_0x5ddecc(0x1e1)+this['dotFraction'](this[_0x5ddecc(0x1be)])+_0x5ddecc(0x1c6),_0x5ddecc(0x18f),_0x5ddecc(0x1bf),_0x5ddecc(0x1c7),_0x5ddecc(0x1cf),_0x5ddecc(0x1d8),'border:2px\x20solid\x20var(--okdb-accent)',_0x5ddecc(0x194),_0x5ddecc(0x1cd),'z-index:4',_0x5ddecc(0x1d6)][_0x5ddecc(0x1e5)](';'):_0x5ddecc(0x1ce);},'tooltipStyle'(_0x8cf1d8){const _0x33e892=_0x14187e;return[_0x33e892(0x1c1),_0x33e892(0x1c8)+this[_0x33e892(0x1d9)](_0x8cf1d8[_0x33e892(0x1a8)])+_0x33e892(0x1b2),_0x33e892(0x19c),'transform:translateX(-50%)',_0x33e892(0x1b0),_0x33e892(0x1e2),_0x33e892(0x1ba),_0x33e892(0x1f0),'font-size:11px',_0x33e892(0x1c0),'pointer-events:none',_0x33e892(0x1ae),'color:var(--okdb-app-fg)',_0x33e892(0x1a9)]['join'](';');}}),async 'init'(_0x3d32d8){const _0x2956a8=_0x14187e;_0x3d32d8['$watch'](()=>_0x3d32d8[_0x2956a8(0x1e4)][_0x2956a8(0x1d4)]+'|'+_0x3d32d8[_0x2956a8(0x1e4)][_0x2956a8(0x1c3)]+'|'+_0x3d32d8[_0x2956a8(0x1e4)][_0x2956a8(0x1e0)],()=>{const _0x14ab3b=_0x2956a8;this['diffs']=[],this[_0x14ab3b(0x19a)]();}),await this[_0x2956a8(0x19a)]();},'template':_0x14187e(0x1e8),'style':''};
@@ -0,0 +1 @@
1
+ function _0x1733(){const _0x4bec6d=['m\x20ago','limit','trim','replace','6ztqRno','Failed','var(--okdb-success)','h\x20ago','423511zurWBt','/changelog?','oldestClock','dropType','message','error','shortKey','511158YfiWPx','stores','dropFts','registerType','toUpperCase','81955YtigQq','timemachine','just\x20now','put','#6ee7b7','resetFts','2LMeiZn','var(--okdb-app-fg-muted)','$watch','now','toLocaleDateString','8028BjsQKB','set','/env/','var(--okdb-indigo)','$ok','fts','slice','data','5394072QwEvVq','selectedEnv','var(--okdb-accent)','registerIndex','var(--okdb-orange)','default','$attr','resetIndex','length','394704gRkyXT','changes','clock','s\x20ago','var(--okdb-purple)','busy','round','.ch-th{text-align:left;font-weight:500;font-size:10px;text-transform:uppercase;letter-spacing:.04em;opacity:.5}.ch-td,.ch-th{padding:5px\x208px;border-bottom:1px\x20solid\x20var(--okdb-app-border)}.ch-row:hover\x20.ch-td{background:#ffffff06}','type','meta','load','var(--okdb-warning)','3363871gplODk','index','okdb','type-changelog'];_0x1733=function(){return _0x4bec6d;};return _0x1733();}const _0xe78cbb=_0x4eb7;function _0x4eb7(_0x572333,_0x5018b9){_0x572333=_0x572333-0x190;const _0x1733a8=_0x1733();let _0x4eb747=_0x1733a8[_0x572333];return _0x4eb747;}(function(_0x38efdc,_0x3e4dff){const _0x16203a=_0x4eb7,_0x126be7=_0x38efdc();while(!![]){try{const _0x90ffb7=parseInt(_0x16203a(0x19d))/0x1+parseInt(_0x16203a(0x1af))/0x2*(-parseInt(_0x16203a(0x1a4))/0x3)+parseInt(_0x16203a(0x1c5))/0x4+-parseInt(_0x16203a(0x1a9))/0x5+-parseInt(_0x16203a(0x199))/0x6*(parseInt(_0x16203a(0x191))/0x7)+parseInt(_0x16203a(0x1bc))/0x8+-parseInt(_0x16203a(0x1b4))/0x9;if(_0x90ffb7===_0x3e4dff)break;else _0x126be7['push'](_0x126be7['shift']());}catch(_0x17b2ce){_0x126be7['push'](_0x126be7['shift']());}}}(_0x1733,0x80f60));export default{'tag':_0xe78cbb(0x194),'attr':{'type':{}},'context':_0x487466=>({'busy':!0x1,'error':null,'changes':[],'clock':null,'limit':0x64,'before':null,get 'type'(){const _0xef2de2=_0xe78cbb;return _0x487466[_0xef2de2(0x1c2)][_0xef2de2(0x1cd)];},async 'load'(_0x2020e6=null){const _0x1e1081=_0xe78cbb;if(this[_0x1e1081(0x1cd)]){this[_0x1e1081(0x1ca)]=!0x0,this[_0x1e1081(0x1a2)]=null;try{const _0x561dae=new URLSearchParams({'limit':this[_0x1e1081(0x196)],'annotate':_0x1e1081(0x1aa)});null!=_0x2020e6&&_0x561dae[_0x1e1081(0x1b5)]('before',_0x2020e6);const _0x7085f5=_0x487466[_0x1e1081(0x1b8)][_0x1e1081(0x1a5)][_0x1e1081(0x193)][_0x1e1081(0x1bd)]||_0x1e1081(0x1c1),_0x377355=await fetch(__ENV__['API']+_0x1e1081(0x1b6)+encodeURIComponent(_0x7085f5)+'/type/'+encodeURIComponent(this[_0x1e1081(0x1cd)])+_0x1e1081(0x19e)+_0x561dae),_0x184477=await _0x377355['json']();if(!_0x377355['ok'])throw new Error(_0x184477?.[_0x1e1081(0x1a2)]?.[_0x1e1081(0x1a1)]||_0x1e1081(0x19a));this['changes']=_0x184477[_0x1e1081(0x1bb)]??[],this[_0x1e1081(0x1c7)]=_0x184477[_0x1e1081(0x1ce)]??null,this['before']=_0x2020e6;}catch(_0x48e4ec){this['error']=_0x48e4ec?.[_0x1e1081(0x1a1)]||String(_0x48e4ec),this[_0x1e1081(0x1c6)]=[];}finally{this[_0x1e1081(0x1ca)]=!0x1;}}},get 'hasOlder'(){const _0x35bfd3=_0xe78cbb;return this[_0x35bfd3(0x1c6)][_0x35bfd3(0x1c4)]===this[_0x35bfd3(0x196)];},get 'oldestClock'(){const _0x5c4843=_0xe78cbb;return this[_0x5c4843(0x1c6)]['length']?this['changes'][this[_0x5c4843(0x1c6)]['length']-0x1][_0x5c4843(0x1c7)]:null;},'loadOlder'(){const _0x47d5ed=_0xe78cbb;null!=this[_0x47d5ed(0x19f)]&&this[_0x47d5ed(0x1cf)](this['oldestClock']-0x1);},'loadLatest'(){const _0x47b6f9=_0xe78cbb;this[_0x47b6f9(0x1cf)](null);},'actionColor'(_0x4c2988){const _0x22bde5=_0xe78cbb;switch(_0x4c2988){case _0x22bde5(0x1ac):case'registerFts':return _0x22bde5(0x19b);case'remove':case _0x22bde5(0x1a0):return'var(--okdb-danger)';case _0x22bde5(0x1a7):return _0x22bde5(0x1be);case _0x22bde5(0x1bf):return _0x22bde5(0x1c9);case'dropIndex':return _0x22bde5(0x190);case _0x22bde5(0x1c3):return _0x22bde5(0x1b7);case _0x22bde5(0x1a6):return _0x22bde5(0x1c0);case _0x22bde5(0x1ae):return _0x22bde5(0x1ad);default:return _0x22bde5(0x1b0);}},'actionLabel':_0x31c33b=>_0x31c33b?_0x31c33b[_0xe78cbb(0x198)](/([A-Z])/g,'\x20$1')['replace'](/_/g,'\x20')[_0xe78cbb(0x1a8)]()[_0xe78cbb(0x197)]():'','displayKey'(_0x2a6540){const _0x3b0e85=_0xe78cbb,_0xbe1df4=_0x2a6540['key']||_0x2a6540[_0x3b0e85(0x192)]||_0x2a6540[_0x3b0e85(0x1b9)]||null;return this[_0x3b0e85(0x1a3)](_0xbe1df4);},'shortKey':_0x517a44=>_0x517a44?_0x517a44[_0xe78cbb(0x1c4)]<=0x18?_0x517a44:_0x517a44[_0xe78cbb(0x1ba)](0x0,0xa)+'…'+_0x517a44[_0xe78cbb(0x1ba)](-0x6):'—','relTime'(_0x222f78){const _0x4f7fee=_0xe78cbb;if(!_0x222f78)return'—';const _0x16812f=Date[_0x4f7fee(0x1b2)]()-_0x222f78;return _0x16812f<0x1388?_0x4f7fee(0x1ab):_0x16812f<0xea60?Math[_0x4f7fee(0x1cb)](_0x16812f/0x3e8)+_0x4f7fee(0x1c8):_0x16812f<0x36ee80?Math[_0x4f7fee(0x1cb)](_0x16812f/0xea60)+_0x4f7fee(0x195):_0x16812f<0x5265c00?Math['round'](_0x16812f/0x36ee80)+_0x4f7fee(0x19c):new Date(_0x222f78)[_0x4f7fee(0x1b3)]();}}),async 'init'(_0x3a6286){const _0x5728d4=_0xe78cbb;_0x3a6286[_0x5728d4(0x1b1)](()=>_0x3a6286[_0x5728d4(0x1c2)][_0x5728d4(0x1cd)],()=>{const _0x3f1d0a=_0x5728d4;this[_0x3f1d0a(0x1c6)]=[],this[_0x3f1d0a(0x1cf)]();}),await this[_0x5728d4(0x1cf)]();},'template':'\x0a<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:10px;\x20height:100%;\x20min-height:0;\x22>\x0a\x0a\x20\x20<!--\x20Toolbar\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:8px;\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22font-size:13px;\x20opacity:.7;\x22>Change\x20log\x20for\x20<b>{{type}}</b></div>\x0a\x20\x20\x20\x20<div\x20style=\x22margin-left:auto;\x20display:flex;\x20gap:6px;\x20align-items:center;\x22>\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22before\x20!=\x20null\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22loadLatest()\x22\x20style=\x22font-size:12px;\x20opacity:.8;\x22>↑\x20Latest</button>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22load(before)\x22\x20:disabled=\x22busy\x22\x20style=\x22font-size:12px;\x20opacity:.8;\x22>↻</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<if\x20:=\x22error\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22color:var(--okdb-danger);\x20font-size:12px;\x22>{{error}}</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<if\x20:=\x22!busy\x20&&\x20changes.length\x20===\x200\x20&&\x20!error\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22opacity:.5;\x20font-size:13px;\x22>No\x20changes\x20recorded\x20yet.</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Table\x20-->\x0a\x20\x20<div\x20style=\x22flex:1;\x20min-height:0;\x20overflow:auto;\x22>\x0a\x20\x20\x20\x20<table\x20style=\x22width:100%;\x20border-collapse:collapse;\x20font-size:12px;\x22>\x0a\x20\x20\x20\x20\x20\x20<thead\x20style=\x22position:sticky;\x20top:0;\x20z-index:1;\x20background:var(--okdb-app-bg-deep);\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<tr>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th\x20class=\x22ch-th\x22\x20style=\x22text-align:right;\x20width:70px;\x22>Clock</th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th\x20class=\x22ch-th\x22\x20style=\x22width:110px;\x22>Action</th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th\x20class=\x22ch-th\x22>Key</th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th\x20class=\x22ch-th\x22\x20style=\x22width:90px;\x22>Origin</th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th\x20class=\x22ch-th\x22\x20style=\x22width:90px;\x20text-align:right;\x22>When</th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</tr>\x0a\x20\x20\x20\x20\x20\x20</thead>\x0a\x20\x20\x20\x20\x20\x20<tbody>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<tr\x20as=\x22repeat\x22\x20:of=\x22changes\x22\x20let:item=\x22ch\x22\x20class=\x22ch-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20class=\x22ch-td\x22\x20style=\x22text-align:right;\x20font-family:monospace;\x20opacity:.6;\x22>{{ch.clock}}</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20class=\x22ch-td\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22\x27font-size:10px;\x20padding:2px\x206px;\x20border-radius:4px;\x20border:1px\x20solid;\x20color:\x27\x20+\x20actionColor(ch.action)\x20+\x20\x27;\x20border-color:\x27\x20+\x20actionColor(ch.action)\x20+\x20\x2744;\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{actionLabel(ch.action)}}\x0a\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<if\x20:=\x22ch.tmDiff\x22>\x0a\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\x20style=\x22font-size:9px;\x20padding:1px\x205px;\x20border-radius:3px;\x20border:1px\x20solid\x20var(--okdb-accent)44;\x20color:var(--okdb-accent);\x20opacity:.7;\x20font-family:monospace;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Time-machine\x20snapshot\x20available\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>TM</span>\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</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20class=\x22ch-td\x22\x20style=\x22font-family:monospace;\x20max-width:220px;\x20overflow:hidden;\x20text-overflow:ellipsis;\x20white-space:nowrap;\x22\x20:title=\x22ch.key\x20||\x20ch.index\x20||\x20ch.fts\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{displayKey(ch)}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20class=\x22ch-td\x22\x20style=\x22font-family:monospace;\x20font-size:11px;\x20opacity:.6;\x20overflow:hidden;\x20text-overflow:ellipsis;\x20white-space:nowrap;\x22\x20:title=\x22ch.origin\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{ch.origin\x20?\x20ch.origin.slice(0,8)\x20:\x20\x27—\x27}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20class=\x22ch-td\x22\x20style=\x22text-align:right;\x20opacity:.6;\x20white-space:nowrap;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{relTime(ch.timestamp)}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</tr>\x0a\x20\x20\x20\x20\x20\x20</tbody>\x0a\x20\x20\x20\x20</table>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20Pagination\x20-->\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x20padding-top:4px;\x20border-top:1px\x20solid\x20var(--okdb-app-border);\x22>\x0a\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.55;\x22>{{changes.length}}\x20entries</span>\x0a\x20\x20\x20\x20<if\x20:=\x22hasOlder\x22>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22loadOlder()\x22\x20:disabled=\x22busy\x22\x20style=\x22font-size:12px;\x20margin-left:auto;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20Load\x20older\x20▼\x0a\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20</div>\x0a\x0a</div>\x0a','style':_0xe78cbb(0x1cc)};
@@ -0,0 +1 @@
1
+ const _0x528f92=_0x203e;function _0x23a9(){const _0x260d4b=['prompt','selected','2LwTSVr','select','22772620IAxJLi','length','message','1595616QGEuEm','Name\x20is\x20required','startsWith','type','$watch','index:drop','reloadInfo','$dispatch','Failed\x20to\x20register\x20type','269742ZenWNG','8784mcZLVG','error','shared','1249441EYpxrW','951000dhswtm','registerType','stores','busy','_unsubs','index:registered','find','okdb','$ok','trim','toast','modal','222416NxQXbM','types','type:registered','type-list','105KuujMt','loaded','allItems','\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22busy\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-overlay>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22loader-center\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22loader\x22\x20class=\x22spin\x22\x20style=\x22width:32px;height:32px;\x22></ok-icon>\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</ok-overlay>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22loadError\x20&&\x20!busy\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22type-list__error\x22\x20:title=\x22loadError\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22alert-circle\x22\x20style=\x22width:13px;height:13px;flex-shrink:0;opacity:.7;\x22></ok-icon>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span>{{\x20loadError\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22type-list__error-retry\x22\x20@click=\x22load()\x22\x20title=\x22Retry\x22>↺</button>\x0a\x20\x20\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<if\x20:=\x22!loadError\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20Overview\x20shortcut\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20class=\x22type-list__item\x20type-list__overview\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22selected\x20==\x20null\x20?\x20\x27type-list__item--selected\x27\x20:\x20\x27\x27\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22select(null)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22margin-bottom:4px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22home\x22\x20style=\x22width:13px;height:13px;opacity:.6;flex-shrink:0;\x22></ok-icon>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22tl-name\x22>Overview</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22height:1px;\x20background:var(--okdb-app-surface-2);\x20margin:2px\x200\x206px;\x22></div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20class=\x22type-list__add\x22\x20@click=\x22openAddModal\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20+\x20Register\x20Type\x20({{\x20items.length\x20}})\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22items\x22\x20let:item=\x22t\x22>\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\x20\x20:class=\x22[\x27type-list__item\x27,\x20selected\x20===\x20t\x20?\x20\x27type-list__item--selected\x27\x20:\x20\x27\x27]\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22select(t)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22tl-name\x22>{{\x20t.type\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22tl-count\x22>{{\x20t.count\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22systemCount\x20>\x200\x22>\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\x20\x20class=\x22type-list__system-toggle\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22showSystem\x20=\x20!showSystem\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:title=\x22showSystem\x20?\x20\x27Hide\x20system\x20types\x27\x20:\x20\x27Show\x20system\x20types\x27\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\x20\x20\x20\x20{{\x20showSystem\x20?\x20\x27▴\x20hide\x20system\x20(\x27\x20+\x20systemCount\x20+\x20\x27)\x27\x20:\x20\x27⚙\x20system\x20(\x27\x20+\x20systemCount\x20+\x20\x27)\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20','load','e.g.\x20user,\x20product,\x20event','filter','loadError','Register','showSystem','243gABWcL','items','selectedEnv'];_0x23a9=function(){return _0x260d4b;};return _0x23a9();}(function(_0x422171,_0x822aad){const _0x74847=_0x203e,_0x5aca53=_0x422171();while(!![]){try{const _0x331104=-parseInt(_0x74847(0x141))/0x1*(parseInt(_0x74847(0x12f))/0x2)+-parseInt(_0x74847(0x13e))/0x3+-parseInt(_0x74847(0x134))/0x4+parseInt(_0x74847(0x142))/0x5+-parseInt(_0x74847(0x13d))/0x6*(parseInt(_0x74847(0x120))/0x7)+parseInt(_0x74847(0x11c))/0x8*(parseInt(_0x74847(0x12a))/0x9)+parseInt(_0x74847(0x131))/0xa;if(_0x331104===_0x822aad)break;else _0x5aca53['push'](_0x5aca53['shift']());}catch(_0x2c29fb){_0x5aca53['push'](_0x5aca53['shift']());}}}(_0x23a9,0xd9e48));function _0x203e(_0x3813e5,_0x1a00f9){_0x3813e5=_0x3813e5-0x11c;const _0x23a990=_0x23a9();let _0x203ebd=_0x23a990[_0x3813e5];return _0x203ebd;}import _0x38ac5c from'@toolkit/elements/ok-icon.ok.js';import _0x3a09fc from'@toolkit/core/ok-overlay.ok.js';import _0x2fedda from'../../../stores/events-store.js';export default{'tag':_0x528f92(0x11f),'dependencies':[_0x3a09fc,_0x38ac5c],'context':_0x530c34=>({'busy':!0x1,'loadError':null,'showSystem':!0x1,'_unsubs':[],get 'allItems'(){const _0x429f65=_0x528f92;return _0x530c34[_0x429f65(0x14a)][_0x429f65(0x144)][_0x429f65(0x149)][_0x429f65(0x11d)]||[];},get 'items'(){const _0x7a246d=_0x528f92;return this[_0x7a246d(0x129)]?this[_0x7a246d(0x122)]:this[_0x7a246d(0x122)]['filter'](_0x46d578=>!_0x46d578[_0x7a246d(0x137)][_0x7a246d(0x136)]('~'));},get 'systemCount'(){const _0x4a3647=_0x528f92;return this[_0x4a3647(0x122)][_0x4a3647(0x126)](_0x57a78e=>_0x57a78e[_0x4a3647(0x137)][_0x4a3647(0x136)]('~'))[_0x4a3647(0x132)];},'selected':null,async 'load'(){const _0x5bf612=_0x528f92;this[_0x5bf612(0x127)]=null;try{this[_0x5bf612(0x145)]=!0x0,await _0x530c34[_0x5bf612(0x14a)][_0x5bf612(0x144)][_0x5bf612(0x149)]['reloadTypes'](),await _0x530c34['$ok'][_0x5bf612(0x144)][_0x5bf612(0x149)][_0x5bf612(0x13a)]();}catch(_0x29e130){this[_0x5bf612(0x127)]=_0x29e130?.[_0x5bf612(0x133)]||'Failed\x20to\x20load\x20types',console['error']('Error\x20fetching\x20types',_0x29e130);}this[_0x5bf612(0x145)]=!0x1,_0x530c34[_0x5bf612(0x13b)](_0x5bf612(0x121),this[_0x5bf612(0x12b)]);},'select'(_0xcb6a43){const _0x266d1e=_0x528f92;this['selected']=_0xcb6a43??null,_0x530c34[_0x266d1e(0x13b)](_0x266d1e(0x12e),_0xcb6a43??null);},async 'openAddModal'(){const _0x426611=_0x528f92,_0x18918c=await _0x530c34[_0x426611(0x14a)]['shared'][_0x426611(0x14d)][_0x426611(0x12d)]('Type\x20name',{'title':'Register\x20Type','placeholder':_0x426611(0x125),'confirmText':_0x426611(0x128),'validate':_0xb9defb=>!(!_0xb9defb||!_0xb9defb['trim']())||_0x426611(0x135)});if(_0x18918c)try{await _0x530c34['$ok'][_0x426611(0x144)][_0x426611(0x149)][_0x426611(0x143)](_0x18918c[_0x426611(0x14b)]());const _0x58b8ff=this[_0x426611(0x12b)][_0x426611(0x148)](_0x2c77cb=>_0x2c77cb[_0x426611(0x137)]===_0x18918c[_0x426611(0x14b)]());_0x58b8ff&&this[_0x426611(0x130)](_0x58b8ff);}catch(_0x4b5235){_0x530c34['$ok'][_0x426611(0x140)]?.[_0x426611(0x14c)]?.[_0x426611(0x13f)]?.(_0x4b5235?.[_0x426611(0x133)]||_0x426611(0x13c)),console[_0x426611(0x13f)]('registerType\x20error',_0x4b5235);}}}),'mount'(_0x2105e6){const _0x321e47=_0x528f92,_0x5a98cd=()=>this['load']();this[_0x321e47(0x146)]=[_0x2fedda['on'](_0x321e47(0x11e),_0x5a98cd),_0x2fedda['on']('type:drop',_0x5a98cd),_0x2fedda['on'](_0x321e47(0x147),_0x5a98cd),_0x2fedda['on'](_0x321e47(0x139),_0x5a98cd)],_0x2105e6[_0x321e47(0x138)](()=>_0x2105e6[_0x321e47(0x14a)][_0x321e47(0x144)][_0x321e47(0x149)][_0x321e47(0x12c)],()=>this[_0x321e47(0x124)]()),this[_0x321e47(0x124)]();},'unmount'(){const _0x530e3a=_0x528f92;for(const _0xe685b2 of this['_unsubs'])_0xe685b2();this[_0x530e3a(0x146)]=[];},'style':'\x0a\x20\x20\x20\x20\x20\x20\x20\x20type-list\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20position:\x20relative;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20flex-direction:\x20column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20gap:\x202px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20type-list\x20button\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20text-align:\x20left;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20.type-list__add\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20padding:\x207px\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20margin-bottom:\x204px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20.type-list__item\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20gap:\x206px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20padding:\x206px\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20transparent;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border-color:\x20transparent;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-app-fg-muted);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x207px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20.type-list__item:hover\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-surface-2);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border-color:\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-app-fg);\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20.type-list__item\x20.tl-name\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20flex:\x201;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-family:\x20monospace;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20overflow:\x20hidden;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20text-overflow:\x20ellipsis;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20white-space:\x20nowrap;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20.type-list__item\x20.tl-count\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.5;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20flex-shrink:\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20.type-list__item--selected\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-bg-deep)\x20!important;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border-color:\x20color-mix(in\x20srgb,\x20var(--okdb-accent)\x2027%,\x20transparent)\x20!important;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-accent)\x20!important;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20.type-list__item--selected\x20.tl-count\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.7;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20.type-list__system-toggle\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20margin-top:\x204px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x200.45;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border-color:\x20transparent;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20transparent;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20color:\x20inherit;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20padding:\x203px\x206px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20.type-list__system-toggle:hover\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x200.8;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20transparent;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border-color:\x20transparent;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20.type-list__error\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20flex-start;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20gap:\x206px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20padding:\x208px\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-danger);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20rgba(255,60,60,.06);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20rgba(255,60,60,.18);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x206px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20line-height:\x201.4;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20word-break:\x20break-word;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20.type-list__error\x20span\x20{\x20flex:\x201;\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20.type-list__error-retry\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20flex-shrink:\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20background:\x20transparent;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20border:\x20none;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-danger);\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20cursor:\x20pointer;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2014px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20padding:\x200\x202px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.7;\x0a\x20\x20\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20\x20\x20.type-list__error-retry:hover\x20{\x20opacity:\x201;\x20}\x0a\x20\x20\x20\x20','template':_0x528f92(0x123)};
@@ -0,0 +1 @@
1
+ const _0x473e2f=_0x2df3;function _0x2df3(_0x1923b4,_0x11c79b){_0x1923b4=_0x1923b4-0xc5;const _0x1a6f37=_0x1a6f();let _0x2df322=_0x1a6f37[_0x1923b4];return _0x2df322;}(function(_0x30b67c,_0x11e375){const _0x43c60d=_0x2df3,_0x32374f=_0x30b67c();while(!![]){try{const _0x1b1f41=parseInt(_0x43c60d(0x101))/0x1+parseInt(_0x43c60d(0xcb))/0x2*(parseInt(_0x43c60d(0x10a))/0x3)+parseInt(_0x43c60d(0xfa))/0x4+parseInt(_0x43c60d(0xea))/0x5+-parseInt(_0x43c60d(0xe3))/0x6+parseInt(_0x43c60d(0x107))/0x7+-parseInt(_0x43c60d(0xd5))/0x8;if(_0x1b1f41===_0x11e375)break;else _0x32374f['push'](_0x32374f['shift']());}catch(_0x645528){_0x32374f['push'](_0x32374f['shift']());}}}(_0x1a6f,0xdcb0f));function _0x1a6f(){const _0x51e86b=['load','mode','34389zkqidi','error','engine:uninstalled','Failed\x20to\x20load\x20env\x20pipelines','trim','$router','/pipelines','$watch','running','Failed\x20to\x20load\x20embedders','stopped','embedPipelines','embedEngines','274oPghOo','/embeddings/embedders','type','_unsubs','then','sourceType','currentmode','normalizeStatus','open','all','11249968SkOHNt','API','$vars','data','rejected','busy','_search','resolve','/env/','embeddings:pipeline:ready','pipeline:stop','value','$ok','fulfilled','10405122lapvMM','type-pipelines-tab','json','env','stores','Create\x20Pipeline\x20·\x20','_anchor','4736610vnXbQs','engineType','catch','includes','modal','okdb','/engines','engine:started','/db','envName','pipeline','message','search','length','push','focusedPipelineName','1876544cjhEWB','pipelines','Failed\x20to\x20load\x20env\x20engines','name','engines','default','replace','430818EbdKgv','$attr','focusedpipeline','updateFocusedPipeline','status','selectedEnv','4386739tngeUh'];_0x1a6f=function(){return _0x51e86b;};return _0x1a6f();}import _0x442dec from'../../embeddings/parts/engines-overview.ok.js';import _0x146d95 from'../modals/create-pipeline-modal.ok.js';import _0x5fa5f2 from'../../../stores/events-store.js';export default{'tag':_0x473e2f(0xe4),'dependencies':[_0x442dec,_0x146d95],'attr':{'type':{},'focusedpipeline':{},'currentmode':{}},'context':_0x464af9=>({'busy':!0x1,'error':null,'embedEngines':[],'embedPipelines':[],'search':'','status':'all','engineType':'','emptyFileEngines':{'extractors':[],'collections':[],'workers':[]},'_unsubs':[],get 'sourceType'(){const _0x47cc89=_0x473e2f;return _0x464af9[_0x47cc89(0x102)][_0x47cc89(0xcd)]||'';},get 'envName'(){const _0x3d84b4=_0x473e2f;return _0x464af9['$ok'][_0x3d84b4(0xe7)][_0x3d84b4(0xef)][_0x3d84b4(0x106)]||_0x3d84b4(0xff);},get 'mode'(){const _0x526b44=_0x473e2f;return _0x526b44(0xfb)===_0x464af9['$attr'][_0x526b44(0xd1)]?_0x526b44(0xfb):_0x526b44(0xfe);},get 'focusedPipelineName'(){const _0x3b3224=_0x473e2f;return String(_0x464af9[_0x3b3224(0x102)][_0x3b3224(0x103)]||'')[_0x3b3224(0x10e)]();},'normalizeStatus':_0x13bc8c=>[_0x473e2f(0xd4),_0x473e2f(0xc6),'attention',_0x473e2f(0xc8)][_0x473e2f(0xed)](_0x13bc8c)?_0x13bc8c:'all',get 'availableEngineTypes'(){const _0xce0380=_0x473e2f,_0x3e548f=new Set();for(const _0x202e73 of this['embedEngines']??[])_0x202e73?.[_0xce0380(0xcd)]&&_0x3e548f['add'](_0x202e73[_0xce0380(0xcd)]);return[..._0x3e548f]['sort']();},get 'hasWorkspaceData'(){const _0x5cbccf=_0x473e2f;return(this[_0x5cbccf(0xca)]?.[_0x5cbccf(0xf7)]??0x0)>0x0||(this[_0x5cbccf(0xc9)]?.[_0x5cbccf(0xf7)]??0x0)>0x0;},async 'load'(){const _0x48f516=_0x473e2f;if(!this[_0x48f516(0xd0)])return this['embedEngines']=[],this[_0x48f516(0xc9)]=[],this[_0x48f516(0x10b)]=null,void(this[_0x48f516(0xda)]=!0x1);this[_0x48f516(0xda)]=!0x0,this['error']=null;try{const [_0x3cbdc7,_0x56bb11,_0x1da054]=await Promise['allSettled']([fetch(__ENV__[_0x48f516(0xd6)]+_0x48f516(0xdd)+encodeURIComponent(this[_0x48f516(0xf3)])+_0x48f516(0xf0))['then'](async _0x5321ef=>{const _0x1376b6=_0x48f516,_0x3cca2f=await _0x5321ef[_0x1376b6(0xe5)]()[_0x1376b6(0xec)](()=>({}));if(!_0x5321ef['ok'])throw new Error(_0x3cca2f?.[_0x1376b6(0x10b)]?.[_0x1376b6(0xf5)]||_0x1376b6(0xfc));return _0x3cca2f;}),fetch(__ENV__['API']+_0x48f516(0xcc))['then'](async _0x3a96ac=>{const _0x5b74b1=_0x48f516,_0x438d09=await _0x3a96ac[_0x5b74b1(0xe5)]()[_0x5b74b1(0xec)](()=>({}));if(!_0x3a96ac['ok'])throw new Error(_0x438d09?.[_0x5b74b1(0x10b)]?.['message']||_0x5b74b1(0xc7));return _0x438d09;}),fetch(__ENV__['API']+_0x48f516(0xdd)+encodeURIComponent(this[_0x48f516(0xf3)])+_0x48f516(0x110))[_0x48f516(0xcf)](async _0x4ad253=>{const _0x2fa3fc=_0x48f516,_0x4c2454=await _0x4ad253['json']()['catch'](()=>({}));if(!_0x4ad253['ok'])throw new Error(_0x4c2454?.[_0x2fa3fc(0x10b)]?.[_0x2fa3fc(0xf5)]||_0x2fa3fc(0x10d));return _0x4c2454;})]);if(_0x48f516(0xd9)===_0x3cbdc7[_0x48f516(0x105)])throw _0x3cbdc7['reason'];if(_0x48f516(0xd9)===_0x1da054[_0x48f516(0x105)])throw _0x1da054['reason'];const _0x15d43a=_0x3cbdc7['value']?.[_0x48f516(0xd8)]??[],_0x4f4181=_0x48f516(0xe2)===_0x56bb11[_0x48f516(0x105)]?_0x56bb11[_0x48f516(0xe0)]?.['data']??[]:[],_0x561fdc=_0x1da054['value']?.[_0x48f516(0xd8)]??[];this['embedPipelines']=_0x561fdc,this[_0x48f516(0xca)]=[..._0x15d43a,..._0x4f4181];}catch(_0x2254f2){this[_0x48f516(0x10b)]=_0x2254f2?.['message']||String(_0x2254f2),this[_0x48f516(0xc9)]=[],this[_0x48f516(0xca)]=[];}finally{this[_0x48f516(0xda)]=!0x1;}},'setSearchTerm'(_0x515705){const _0x197262=_0x473e2f;this[_0x197262(0xf6)]=String(_0x515705??'');},'setStatusFilter'(_0x255e77){const _0x3128eb=_0x473e2f;this[_0x3128eb(0x105)]=this[_0x3128eb(0xd2)](_0x255e77);},'setEngineTypeFilter'(_0x27fc49){const _0x342ba5=_0x473e2f;this[_0x342ba5(0xeb)]=String(_0x27fc49??'')[_0x342ba5(0x10e)]();},'setMode'(_0x4f8ca6){const _0x260c31=_0x473e2f,_0x155800=_0x464af9[_0x260c31(0xd7)]?.['$router'];if(!_0x155800?.['resolve']||!_0x155800?.[_0x260c31(0x100)])return;const _0x4552af={..._0x155800['_search']||{},'env':this[_0x260c31(0xf3)],'type':this[_0x260c31(0xd0)],'tab':_0x260c31(0xfe),'mode':'pipelines'===_0x4f8ca6?_0x260c31(0xfb):'engines'};this[_0x260c31(0xf9)]?_0x4552af[_0x260c31(0xf4)]=this[_0x260c31(0xf9)]:delete _0x4552af[_0x260c31(0xf4)],_0x155800[_0x260c31(0x100)](_0x155800[_0x260c31(0xdc)](_0x260c31(0xf2),_0x4552af,_0x155800['_anchor']||''));},'clearFilters'(){const _0x4d0ed9=_0x473e2f;this[_0x4d0ed9(0xf6)]='',this[_0x4d0ed9(0x105)]=_0x4d0ed9(0xd4),this['engineType']='';},'updateFocusedPipeline'(_0x49cec9=''){const _0x15baa4=_0x473e2f,_0xe08e50=_0x464af9[_0x15baa4(0xd7)]?.[_0x15baa4(0x10f)];if(!_0xe08e50?.[_0x15baa4(0xdc)]||!_0xe08e50?.['replace'])return;const _0x51db55={..._0xe08e50[_0x15baa4(0xdb)]||{},'env':this[_0x15baa4(0xf3)],'type':this[_0x15baa4(0xd0)],'tab':'engines','mode':this['mode']},_0x3b75b5=String(_0x49cec9||'')[_0x15baa4(0x10e)]();_0x3b75b5?_0x51db55[_0x15baa4(0xf4)]=_0x3b75b5:delete _0x51db55[_0x15baa4(0xf4)],_0xe08e50[_0x15baa4(0x100)](_0xe08e50[_0x15baa4(0xdc)]('/db',_0x51db55,_0xe08e50[_0x15baa4(0xe9)]||''));},'handleOverviewSelect'(_0x31b0fa=null){const _0x1df47c=_0x473e2f;this[_0x1df47c(0x104)](_0x31b0fa?.[_0x1df47c(0xfd)]||'');},'goToType'(_0x1f9cc6=null){const _0x25ad87=_0x473e2f,_0x2c9949=_0x1f9cc6?.[_0x25ad87(0xcd)];if(!_0x2c9949)return;const _0x35890b=_0x1f9cc6?.[_0x25ad87(0xe6)]||this[_0x25ad87(0xf3)],_0x57c7d8=_0x464af9[_0x25ad87(0xd7)]?.[_0x25ad87(0x10f)];_0x57c7d8?.[_0x25ad87(0xdc)]&&_0x57c7d8?.[_0x25ad87(0xf8)]&&_0x57c7d8['push'](_0x57c7d8['resolve'](_0x25ad87(0xf2),{'env':_0x35890b,'type':_0x2c9949,'tab':'engines','mode':_0x25ad87(0xfb)}));},'openGlobalWorkspace'(){const _0x3315d8=_0x473e2f,_0x3c2794=_0x464af9[_0x3315d8(0xd7)]?.['$router'];if(!_0x3c2794?.[_0x3315d8(0xdc)]||!_0x3c2794?.[_0x3315d8(0xf8)])return;const _0x2c2036={'env':this[_0x3315d8(0xf3)],'sourceType':this[_0x3315d8(0xd0)],'mode':this['mode']};_0x3315d8(0xfe)===this[_0x3315d8(0x109)]&&this[_0x3315d8(0xeb)]&&(_0x2c2036[_0x3315d8(0xeb)]=this[_0x3315d8(0xeb)]),this['focusedPipelineName']&&(_0x2c2036[_0x3315d8(0xf4)]=this['focusedPipelineName']),_0x3315d8(0xd4)!==this[_0x3315d8(0x105)]&&(_0x2c2036['status']=this[_0x3315d8(0x105)]),this[_0x3315d8(0xf6)][_0x3315d8(0x10e)]()&&(_0x2c2036['search']=this['search'][_0x3315d8(0x10e)]()),_0x3c2794[_0x3315d8(0xf8)](_0x3c2794[_0x3315d8(0xdc)](_0x3315d8(0xf0),_0x2c2036));},async 'openCreatePipeline'(){const _0x42e4ec=_0x473e2f;this[_0x42e4ec(0xd0)]&&await _0x464af9[_0x42e4ec(0xe1)]['shared'][_0x42e4ec(0xee)][_0x42e4ec(0xd3)]({'owner':_0x464af9,'title':_0x42e4ec(0xe8)+this[_0x42e4ec(0xd0)],'canDrag':!0x0,'content':'<create-pipeline-modal\x20:modal=\x22modal\x22\x20:type=\x22type\x22\x20:env=\x22envName\x22\x20:on-done=\x22onDone\x22\x20/>','context':_0x2e6961=>({'modal':_0x2e6961,'type':this['sourceType'],'envName':this[_0x42e4ec(0xf3)],'onDone':async()=>{const _0x35ec85=_0x42e4ec;await this[_0x35ec85(0x108)]();}})});}}),async 'init'(_0x4ba9f0){const _0x3a0691=_0x473e2f;_0x4ba9f0[_0x3a0691(0xc5)](()=>_0x4ba9f0[_0x3a0691(0x102)]['type'],()=>this[_0x3a0691(0x108)]()),_0x4ba9f0[_0x3a0691(0xc5)](()=>_0x4ba9f0[_0x3a0691(0xe1)][_0x3a0691(0xe7)]['okdb'][_0x3a0691(0x106)],()=>this[_0x3a0691(0x108)]()),await this[_0x3a0691(0x108)]();const _0x33e690=()=>this[_0x3a0691(0x108)]();this[_0x3a0691(0xce)]=[_0x5fa5f2['on'](_0x3a0691(0xf1),_0x33e690),_0x5fa5f2['on']('engine:stopped',_0x33e690),_0x5fa5f2['on']('engine:error',_0x33e690),_0x5fa5f2['on']('engine:installed',_0x33e690),_0x5fa5f2['on'](_0x3a0691(0x10c),_0x33e690),_0x5fa5f2['on'](_0x3a0691(0xde),_0x33e690),_0x5fa5f2['on']('pipeline:start',_0x33e690),_0x5fa5f2['on'](_0x3a0691(0xdf),_0x33e690),_0x5fa5f2['on']('pipeline:delete',_0x33e690)];},'unmount'(){const _0x41a54a=_0x473e2f;for(const _0x3e65d1 of this[_0x41a54a(0xce)])_0x3e65d1();this['_unsubs']=[];},'template':'\x0a<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:12px;\x20flex:1;\x20min-height:0;\x20overflow:auto;\x20padding-right:4px;\x22>\x0a\x0a\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20gap:10px;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22font-weight:600;\x20font-size:15px;\x22>Engines</div>\x0a\x20\x20\x20\x20<span\x20style=\x22font-size:11px;\x20padding:2px\x208px;\x20border-radius:999px;\x20border:1px\x20solid\x20var(--okdb-app-border);\x20color:#cbd5e1;\x20background:var(--okdb-app-bg-deep);\x22>type:\x20{{\x20sourceType\x20}}</span>\x0a\x20\x20\x20\x20<if\x20:=\x22focusedPipelineName\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:11px;\x20padding:2px\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)\x207%,\x20transparent);\x22>pipeline:\x20{{\x20focusedPipelineName\x20}}</span>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20<div\x20style=\x22margin-left:auto;\x20display:flex;\x20gap:6px;\x20flex-wrap:wrap;\x22>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22load()\x22\x20:disabled=\x22busy\x22\x20style=\x22font-size:11px;\x20padding:3px\x2010px;\x22>↻</button>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22openGlobalWorkspace()\x22\x20style=\x22font-size:11px;\x20padding:3px\x2010px;\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-accent)\x2027%,\x20transparent);\x20color:var(--okdb-accent);\x22>Open\x20Global\x20→</button>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22openCreatePipeline()\x22\x20style=\x22background:color-mix(in\x20srgb,\x20var(--okdb-accent)\x2013%,\x20transparent);\x20border-color:var(--okdb-accent);\x20color:var(--okdb-accent);\x20font-weight:600;\x20padding:5px\x2014px;\x20font-size:12px;\x22>+\x20Create\x20Pipeline</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:end;\x20flex-wrap:wrap;\x20padding:10px\x2012px;\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:10px;\x20background:var(--okdb-app-bg-deep);\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:4px;\x20min-width:170px;\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:11px;\x20color:var(--okdb-app-fg-muted);\x22>View</span>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:4px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22setMode(\x27pipelines\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:style=\x22mode\x20===\x20\x27pipelines\x27\x20?\x20\x27flex:1;\x20font-size:11px;\x20padding:5px\x2010px;\x20border-radius:6px;\x20border:1px\x20solid\x20var(--okdb-indigo);\x20color:var(--okdb-indigo);\x20background:color-mix(in\x20srgb,\x20var(--okdb-indigo)\x207%,\x20transparent);\x20cursor:pointer;\x27\x20:\x20\x27flex:1;\x20font-size:11px;\x20padding:5px\x2010px;\x20border-radius:6px;\x20border:1px\x20solid\x20var(--okdb-app-border);\x20color:var(--okdb-app-fg-muted);\x20background:var(--okdb-app-bg-deep);\x20cursor:pointer;\x27\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20>Pipelines</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22setMode(\x27engines\x27)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:style=\x22mode\x20===\x20\x27engines\x27\x20?\x20\x27flex:1;\x20font-size:11px;\x20padding:5px\x2010px;\x20border-radius:6px;\x20border:1px\x20solid\x20var(--okdb-purple);\x20color:var(--okdb-purple);\x20background:color-mix(in\x20srgb,\x20var(--okdb-purple)\x207%,\x20transparent);\x20cursor:pointer;\x27\x20:\x20\x27flex:1;\x20font-size:11px;\x20padding:5px\x2010px;\x20border-radius:6px;\x20border:1px\x20solid\x20var(--okdb-app-border);\x20color:var(--okdb-app-fg-muted);\x20background:var(--okdb-app-bg-deep);\x20cursor:pointer;\x27\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20>Engines</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<label\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:4px;\x20min-width:200px;\x20flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:11px;\x20color:var(--okdb-app-fg-muted);\x22>Search</span>\x0a\x20\x20\x20\x20\x20\x20<input\x0a\x20\x20\x20\x20\x20\x20\x20\x20:value=\x22search\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20@input:debounce.200=\x22setSearchTerm($event.target.value)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20:placeholder=\x22mode\x20===\x20\x27engines\x27\x20?\x20\x27Search\x20engines…\x27\x20:\x20\x27Search\x20pipelines…\x27\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20style=\x22width:100%;\x20box-sizing:border-box;\x22\x0a\x20\x20\x20\x20\x20\x20/>\x0a\x20\x20\x20\x20</label>\x0a\x0a\x20\x20\x20\x20<label\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:4px;\x20min-width:150px;\x22>\x0a\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:11px;\x20color:var(--okdb-app-fg-muted);\x22>Status</span>\x0a\x20\x20\x20\x20\x20\x20<select\x20@change=\x22setStatusFilter($event.target.value)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22all\x22\x20:selected=\x22status\x20===\x20\x27all\x27\x22>Any</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22running\x22\x20:selected=\x22status\x20===\x20\x27running\x27\x22>Running</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22attention\x22\x20:selected=\x22status\x20===\x20\x27attention\x27\x22>Needs\x20attention</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22stopped\x22\x20:selected=\x22status\x20===\x20\x27stopped\x27\x22>Stopped</option>\x0a\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20</label>\x0a\x0a\x20\x20\x20\x20<if\x20:=\x22mode\x20===\x20\x27engines\x27\x20&&\x20availableEngineTypes.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20<label\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:4px;\x20min-width:170px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:11px;\x20color:var(--okdb-app-fg-muted);\x22>Engine\x20Type</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<select\x20@change=\x22setEngineTypeFilter($event.target.value)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22\x22\x20:selected=\x22!engineType\x22>All\x20engines</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22availableEngineTypes\x22\x20let:item=\x22engineKind\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20:value=\x22engineKind\x22\x20:selected=\x22engineType\x20===\x20engineKind\x22>{{\x20engineKind\x20}}</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20<if\x20:=\x22embedPipelines.length\x20>\x201\x22>\x0a\x20\x20\x20\x20\x20\x20<label\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:4px;\x20min-width:190px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:11px;\x20color:var(--okdb-app-fg-muted);\x22>Pipeline</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<select\x20@change=\x22updateFocusedPipeline($event.target.value)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22\x22\x20:selected=\x22!focusedPipelineName\x22>All\x20pipelines</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22embedPipelines\x22\x20let:item=\x22pipeline\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20:value=\x22pipeline.name\x20||\x20pipeline.pipeline\x20||\x20pipeline.storage_key\x22\x20:selected=\x22focusedPipelineName\x20===\x20(pipeline.name\x20||\x20pipeline.pipeline\x20||\x20pipeline.storage_key)\x22>{{\x20pipeline.meta?.label\x20||\x20pipeline.meta?.pipeline\x20||\x20pipeline.pipeline\x20||\x20pipeline.name\x20||\x20pipeline.storage_key\x20}}</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20<if\x20:=\x22focusedPipelineName\x22>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22updateFocusedPipeline(\x27\x27)\x22\x20style=\x22font-size:11px;\x20padding:4px\x2010px;\x22>Clear\x20focus</button>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20<if\x20:=\x22search\x20||\x20status\x20!==\x20\x27all\x27\x20||\x20engineType\x22>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22clearFilters()\x22\x20style=\x22font-size:11px;\x20padding:4px\x2010px;\x22>Clear\x20filters</button>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20</div>\x0a\x0a\x20\x20<if\x20:=\x22error\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22color:var(--okdb-danger);\x20font-size:12px;\x20padding:8px;\x20border:1px\x20solid\x20var(--okdb-danger);\x20border-radius:6px;\x22>{{\x20error\x20}}</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<if\x20:=\x22!busy\x20&&\x20!hasWorkspaceData\x20&&\x20!error\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22padding:22px\x2020px;\x20background:#111a1f;\x20border:1px\x20solid\x20var(--okdb-app-border);\x20border-radius:10px;\x20display:flex;\x20flex-direction:column;\x20gap:8px;\x20align-items:center;\x20text-align:center;\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:30px;\x20opacity:.22;\x22>⊛</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:14px;\x20font-weight:600;\x20opacity:.75;\x22>No\x20engines\x20for\x20{{\x20sourceType\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.5;\x20line-height:1.7;\x20max-width:500px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20This\x20is\x20the\x20same\x20engines\x20workspace,\x20already\x20scoped\x20to\x20this\x20type.\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22openCreatePipeline()\x22\x20style=\x22background:color-mix(in\x20srgb,\x20var(--okdb-accent)\x2013%,\x20transparent);\x20border-color:var(--okdb-accent);\x20color:var(--okdb-accent);\x20font-weight:600;\x20padding:6px\x2014px;\x20font-size:12px;\x22>+\x20Create\x20Pipeline</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<if\x20:=\x22busy\x20&&\x20!hasWorkspaceData\x20&&\x20!error\x22>\x0a\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.45;\x20padding:8px\x200;\x22>Loading…</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<if\x20:=\x22hasWorkspaceData\x22>\x0a\x20\x20\x20\x20<engines-overview\x0a\x20\x20\x20\x20\x20\x20embedded=\x22true\x22\x0a\x20\x20\x20\x20\x20\x20filterpipeline=\x22true\x22\x0a\x20\x20\x20\x20\x20\x20:embed-engines=\x22embedEngines\x22\x0a\x20\x20\x20\x20\x20\x20:embed-pipelines=\x22embedPipelines\x22\x0a\x20\x20\x20\x20\x20\x20:file-engines=\x22emptyFileEngines\x22\x0a\x20\x20\x20\x20\x20\x20:mode=\x22mode\x22\x0a\x20\x20\x20\x20\x20\x20pipelinetype=\x22all\x22\x0a\x20\x20\x20\x20\x20\x20:enginetype=\x22engineType\x22\x0a\x20\x20\x20\x20\x20\x20:status=\x22status\x22\x0a\x20\x20\x20\x20\x20\x20:search=\x22search\x22\x0a\x20\x20\x20\x20\x20\x20:sourcetype=\x22sourceType\x22\x0a\x20\x20\x20\x20\x20\x20:selectedpipeline=\x22focusedPipelineName\x22\x0a\x20\x20\x20\x20\x20\x20@select=\x22handleOverviewSelect($event.detail)\x22\x0a\x20\x20\x20\x20\x20\x20@refresh=\x22load()\x22\x0a\x20\x20\x20\x20\x20\x20@goto-type=\x22goToType($event.detail)\x22\x0a\x20\x20\x20\x20/>\x0a\x20\x20</if>\x0a\x0a</div>'};