@kedem/okdb 1.0.0 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (188) hide show
  1. package/README.md +1 -1
  2. package/bin/okdb.js +1 -1
  3. package/keys/public.pem +3 -0
  4. package/okdb.js +1 -1
  5. package/package.json +2 -2
  6. package/public/admin-app.js +1 -1
  7. package/public/components/admin-route-host.ok.js +1 -1
  8. package/public/components/env-picker.ok.js +1 -1
  9. package/public/components/field-path-input.ok.js +1 -1
  10. package/public/components/geo-map.ok.js +1 -1
  11. package/public/components/ok-cron-input.ok.js +1 -1
  12. package/public/components/ok-dropzone.ok.js +1 -1
  13. package/public/components/ok-js-input.ok.js +1 -1
  14. package/public/components/ok-json-input.ok.js +1 -1
  15. package/public/components/ok-text-monaco-input.ok.js +1 -1
  16. package/public/components/theme-toggle.ok.js +1 -1
  17. package/public/login-app.js +1 -1
  18. package/public/modules/ok.js +1 -1
  19. package/public/sections/api/parts/api-endpoint.ok.js +1 -1
  20. package/public/sections/auth/modals/create-token-modal.ok.js +1 -1
  21. package/public/sections/auth/modals/edit-token-modal.ok.js +1 -1
  22. package/public/sections/auth/modals/perm-info-popover.ok.js +1 -1
  23. package/public/sections/auth/parts/token-detail.ok.js +1 -1
  24. package/public/sections/auth/parts/token-list.ok.js +1 -1
  25. package/public/sections/db/modals/add-item-modal.ok.js +1 -1
  26. package/public/sections/db/modals/create-env-modal.ok.js +1 -1
  27. package/public/sections/db/modals/create-fts-modal.ok.js +1 -1
  28. package/public/sections/db/modals/create-index-modal.ok.js +1 -1
  29. package/public/sections/db/modals/create-pipeline-modal.ok.js +1 -1
  30. package/public/sections/db/modals/demo-env-modal.ok.js +1 -1
  31. package/public/sections/db/modals/remove-env-modal.ok.js +1 -1
  32. package/public/sections/db/modals/schema-edit-modal.ok.js +1 -1
  33. package/public/sections/db/parts/db-overview.ok.js +1 -1
  34. package/public/sections/db/parts/db-pipelines-panel.ok.js +1 -1
  35. package/public/sections/db/parts/edit-row.ok.js +1 -1
  36. package/public/sections/db/parts/tm-timeline.ok.js +1 -1
  37. package/public/sections/db/parts/type-changelog.ok.js +1 -1
  38. package/public/sections/db/parts/type-list.ok.js +1 -1
  39. package/public/sections/db/parts/type-pipelines-tab.ok.js +1 -1
  40. package/public/sections/db/parts/type-schema-tab.ok.js +1 -1
  41. package/public/sections/db/parts/type-viewer.ok.js +1 -1
  42. package/public/sections/db/parts/type-violations-tab.ok.js +1 -1
  43. package/public/sections/embeddings/modals/register-model-modal.ok.js +1 -1
  44. package/public/sections/embeddings/parts/embed-create-panel.ok.js +1 -1
  45. package/public/sections/embeddings/parts/embed-embedder-panel.ok.js +1 -1
  46. package/public/sections/embeddings/parts/embed-engine-declaration-editor.ok.js +1 -1
  47. package/public/sections/embeddings/parts/embed-engine-list.ok.js +1 -1
  48. package/public/sections/embeddings/parts/embed-indexer-panel.ok.js +1 -1
  49. package/public/sections/embeddings/parts/embed-lifecycle-bar.ok.js +1 -1
  50. package/public/sections/embeddings/parts/embed-model-catalog.ok.js +1 -1
  51. package/public/sections/embeddings/parts/embed-overview.ok.js +1 -1
  52. package/public/sections/embeddings/parts/embed-search-panel.ok.js +1 -1
  53. package/public/sections/embeddings/parts/embed-worker-panel.ok.js +1 -1
  54. package/public/sections/embeddings/parts/embeddings-engine-panel.ok.js +1 -1
  55. package/public/sections/embeddings/parts/engines-overview.ok.js +1 -1
  56. package/public/sections/embeddings/parts/pipeline-create-panel.ok.js +1 -1
  57. package/public/sections/engines/engine-panel-shared-style.js +1 -1
  58. package/public/sections/engines/engine-ui-utils.js +1 -1
  59. package/public/sections/engines/modals/engine-modal.ok.js +1 -1
  60. package/public/sections/engines/parts/engine-declaration-editor.ok.js +1 -1
  61. package/public/sections/engines/parts/engine-lifecycle-actions.ok.js +1 -1
  62. package/public/sections/engines/parts/engine-panel-shell.ok.js +1 -1
  63. package/public/sections/engines/parts/engine-resource-card.ok.js +1 -1
  64. package/public/sections/engines/parts/engine-row-item.ok.js +1 -1
  65. package/public/sections/engines/parts/generic-engine-panel.ok.js +1 -1
  66. package/public/sections/files/parts/files-blob-status.ok.js +1 -1
  67. package/public/sections/files/parts/files-collection-list.ok.js +1 -1
  68. package/public/sections/files/parts/files-collection-panel.ok.js +1 -1
  69. package/public/sections/files/parts/files-file-list.ok.js +1 -1
  70. package/public/sections/files/parts/files-overview.ok.js +1 -1
  71. package/public/sections/files/parts/files-path-browser.ok.js +1 -1
  72. package/public/sections/files/parts/files-upload-panel.ok.js +1 -1
  73. package/public/sections/functions/modals/function-modal.ok.js +1 -1
  74. package/public/sections/functions/parts/function-detail.ok.js +1 -1
  75. package/public/sections/functions/parts/function-logs.ok.js +1 -1
  76. package/public/sections/functions/parts/function-runner.ok.js +1 -1
  77. package/public/sections/functions/parts/functions-list.ok.js +1 -1
  78. package/public/sections/license/parts/license-panel.ok.js +1 -1
  79. package/public/sections/queue/modals/create-bucket-modal.ok.js +1 -1
  80. package/public/sections/queue/modals/edit-bucket-modal.ok.js +1 -1
  81. package/public/sections/queue/modals/edit-job-modal.ok.js +1 -1
  82. package/public/sections/queue/modals/enqueue-job-modal.ok.js +1 -1
  83. package/public/sections/queue/modals/job-type-modal.ok.js +1 -1
  84. package/public/sections/queue/parts/ok-job-form.ok.js +1 -1
  85. package/public/sections/queue/parts/queue-buckets.ok.js +1 -1
  86. package/public/sections/queue/parts/queue-job-types.ok.js +1 -1
  87. package/public/sections/queue/parts/queue-jobs.ok.js +1 -1
  88. package/public/sections/queue/parts/queue-types.ok.js +1 -1
  89. package/public/sections/queue/parts/queue-workers.ok.js +1 -1
  90. package/public/sections/sync/parts/sync-node-detail.ok.js +1 -1
  91. package/public/sections/sync/parts/sync-retention.ok.js +1 -1
  92. package/public/sections/sync/parts/sync-topology.ok.js +1 -1
  93. package/public/sections/system/modals/data-ops-modal.ok.js +1 -1
  94. package/public/sections/system/parts/system-api-panel.ok.js +1 -1
  95. package/public/sections/system/parts/system-auth-panel.ok.js +1 -1
  96. package/public/sections/system/parts/system-log-history.ok.js +1 -1
  97. package/public/sections/system/parts/system-log.ok.js +1 -1
  98. package/public/sections/system/parts/system-status.ok.js +1 -1
  99. package/public/sections/system/parts/system-sync-panel.ok.js +1 -1
  100. package/public/sections/views/modals/create-view-modal.ok.js +1 -1
  101. package/public/sections/views/parts/view-detail.ok.js +1 -1
  102. package/public/sections/views/parts/views-list.ok.js +1 -1
  103. package/public/sections/views/parts/views-overview.ok.js +1 -1
  104. package/public/setup-app.js +1 -1
  105. package/public/stores/auth-store.js +1 -1
  106. package/public/stores/events-store.js +1 -1
  107. package/public/stores/functions-store.js +1 -1
  108. package/public/stores/okdb-store.js +1 -1
  109. package/public/stores/theme-store.js +1 -1
  110. package/public/util/permissions.js +1 -1
  111. package/public/util/sift-schema.js +1 -1
  112. package/public/vendor/okjs/ok.esm.min.js +1 -2
  113. package/public/vendor/okjs/toolkit/behavior/async.ok.js +1 -1
  114. package/public/vendor/okjs/toolkit/components/ok-chart.ok.js +1 -1
  115. package/public/vendor/okjs/toolkit/components/ok-doc-viewer.ok.js +1 -1
  116. package/public/vendor/okjs/toolkit/components/ok-marked.ok.js +1 -1
  117. package/public/vendor/okjs/toolkit/components/ok-monaco.ok.js +1 -1
  118. package/public/vendor/okjs/toolkit/core/ok-layer-service.ok.js +1 -1
  119. package/public/vendor/okjs/toolkit/core/ok-layer.ok.js +1 -1
  120. package/public/vendor/okjs/toolkit/core/ok-overlay.ok.js +1 -1
  121. package/public/vendor/okjs/toolkit/core/ok-sandbox.ok.js +1 -1
  122. package/public/vendor/okjs/toolkit/core/transition.ok.js +1 -1
  123. package/public/vendor/okjs/toolkit/core/virtualized.ok.js +1 -1
  124. package/public/vendor/okjs/toolkit/devtools/ok-console-service.ok.js +1 -1
  125. package/public/vendor/okjs/toolkit/devtools/ok-console.ok.js +1 -1
  126. package/public/vendor/okjs/toolkit/devtools/ok-fps-monitor-service.ok.js +1 -1
  127. package/public/vendor/okjs/toolkit/devtools/ok-fps-monitor.ok.js +1 -1
  128. package/public/vendor/okjs/toolkit/devtools/ok-inspector-service.ok.js +1 -1
  129. package/public/vendor/okjs/toolkit/devtools/ok-inspector.ok.js +1 -1
  130. package/public/vendor/okjs/toolkit/devtools/ok-js-tree.ok.js +1 -1
  131. package/public/vendor/okjs/toolkit/devtools/ok-timeline-service.ok.js +1 -1
  132. package/public/vendor/okjs/toolkit/devtools/ok-timeline.ok.js +1 -1
  133. package/public/vendor/okjs/toolkit/docs/doc-viewer.ok.js +1 -1
  134. package/public/vendor/okjs/toolkit/editor/ok-live-component.ok.js +1 -1
  135. package/public/vendor/okjs/toolkit/editor/ok-live-example.ok.js +1 -1
  136. package/public/vendor/okjs/toolkit/editor/ok-live-shell.ok.js +1 -1
  137. package/public/vendor/okjs/toolkit/elements/ok-dropdown.ok.js +1 -1
  138. package/public/vendor/okjs/toolkit/elements/ok-icon.ok.js +1 -1
  139. package/public/vendor/okjs/toolkit/elements/ok-select.ok.js +1 -1
  140. package/public/vendor/okjs/toolkit/elements/ok-table.ok.js +1 -1
  141. package/public/vendor/okjs/toolkit/errors/ok-crash-boundary.ok.js +1 -1
  142. package/public/vendor/okjs/toolkit/errors/ok-crash-info.ok.js +1 -1
  143. package/public/vendor/okjs/toolkit/i18n/i18n-editor-examples.ok.js +1 -1
  144. package/public/vendor/okjs/toolkit/i18n/i18n-editor.ok.js +1 -1
  145. package/public/vendor/okjs/toolkit/i18n/i18n-key-editor-tips.ok.js +1 -1
  146. package/public/vendor/okjs/toolkit/i18n/i18n-key-editor.ok.js +1 -1
  147. package/public/vendor/okjs/toolkit/i18n/i18n-service.ok.js +1 -1
  148. package/public/vendor/okjs/toolkit/i18n/ok-i18n.js +1 -1
  149. package/public/vendor/okjs/toolkit/interaction/ok-contextmenu.ok.js +1 -1
  150. package/public/vendor/okjs/toolkit/interaction/ok-dismiss-service.ok.js +1 -1
  151. package/public/vendor/okjs/toolkit/interaction/ok-draggable.ok.js +1 -1
  152. package/public/vendor/okjs/toolkit/interaction/ok-flyover-panel.ok.js +1 -1
  153. package/public/vendor/okjs/toolkit/interaction/ok-flyover.ok.js +1 -1
  154. package/public/vendor/okjs/toolkit/interaction/ok-highlight-service.ok.js +1 -1
  155. package/public/vendor/okjs/toolkit/interaction/ok-highlight.ok.js +1 -1
  156. package/public/vendor/okjs/toolkit/interaction/ok-hotkeys-service.ok.js +1 -1
  157. package/public/vendor/okjs/toolkit/interaction/ok-picker-service.ok.js +1 -1
  158. package/public/vendor/okjs/toolkit/interaction/ok-popout-service.ok.js +1 -1
  159. package/public/vendor/okjs/toolkit/interaction/ok-popout.ok.js +1 -1
  160. package/public/vendor/okjs/toolkit/interaction/ok-portal-service.ok.js +1 -1
  161. package/public/vendor/okjs/toolkit/interaction/ok-submenu.ok.js +1 -1
  162. package/public/vendor/okjs/toolkit/layout/ok-resizer.ok.js +1 -1
  163. package/public/vendor/okjs/toolkit/manifest.js +1 -1
  164. package/public/vendor/okjs/toolkit/modals/ok-modal-service.ok.js +1 -1
  165. package/public/vendor/okjs/toolkit/modals/ok-modal.ok.js +1 -1
  166. package/public/vendor/okjs/toolkit/modals/ok-toast-service.ok.js +1 -1
  167. package/public/vendor/okjs/toolkit/modals/ok-window.ok.js +1 -1
  168. package/public/vendor/okjs/toolkit/navigation/hash-router.ok.js +1 -1
  169. package/public/vendor/okjs/toolkit/navigation/history-router.ok.js +1 -1
  170. package/public/vendor/okjs/toolkit/navigation/router.ok.js +1 -1
  171. package/public/vendor/okjs/toolkit/sync/reactive-sync-service.ok.js +1 -1
  172. package/public/vendor/okjs/toolkit/sync/reactive-sync.js +1 -1
  173. package/public/vendor/okjs/toolkit/theming/blocks/ok-design-button.css.js +1 -1
  174. package/public/vendor/okjs/toolkit/theming/blocks/ok-design-input.css.js +1 -1
  175. package/public/vendor/okjs/toolkit/theming/ok-design-style.js +1 -1
  176. package/public/vendor/okjs/toolkit/theming/ok-design-vars.js +1 -1
  177. package/public/vendor/okjs/toolkit/theming/ok-design.ok.js +1 -1
  178. package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-input.ok.js +1 -1
  179. package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-service.ok.js +1 -1
  180. package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-style.js +1 -1
  181. package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-utils.js +1 -1
  182. package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-variable.ok.js +1 -1
  183. package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-vm.js +1 -1
  184. package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor.ok.js +1 -1
  185. package/public/vendor/okjs/toolkit/theming/ok-theme.ok.js +1 -1
  186. package/public/view-models/type-query-vm.js +1 -1
  187. package/public/images/logo.png +0 -0
  188. package/public/images/logo.svg +0 -333
@@ -1 +1 @@
1
- const _0xce419c=_0x3b62;function _0x3b62(_0x294a90,_0x20bb12){_0x294a90=_0x294a90-0x1ec;const _0x39b0b5=_0x39b0();let _0x3b62ca=_0x39b0b5[_0x294a90];return _0x3b62ca;}function _0x39b0(){const _0x39f016=['minimum','Schema\x20·\x20','4068420TYgRiJ','any','/type/','\x20|\x20','exclusiveMaximum','$watch','16605281lPaKhM','<schema-edit-modal\x20:modal=\x22modal\x22\x20:type=\x22type\x22\x20:schema=\x22schema\x22\x20:env-api-base=\x22envApiBase\x22\x20:on-done=\x22onDone\x22\x20/>','refViolationsError','push','33832yrZcsf','refViolations','description','enum','result','definition','now','ref\x20→\x20','properties','stringify','no_action','exclusiveMinimum','envApiBase','statusText','items≥','join','\x20props','message','modal','$attr','split','apiBase','additionalProperties','1251kOXhyE','violations','just\x20now','has','errorCount','propertyEntries','2408hRiskI','error','\x0a<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:16px;\x20flex:1;\x20overflow:auto;\x20padding-right:4px;\x22>\x0a\x0a\x20\x20<!--\x20──\x20Schema\x20summary\x20card\x20────────────────────────────────────\x20-->\x0a\x20\x20<div\x20class=\x22card\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22manage-section-header\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-title\x22>Schema\x20Definition</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22schemaBusy\x22>\x0a\x20\x20\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\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22hasSchema\x20&&\x20!schemaBusy\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22\x27font-size:10px;\x20padding:2px\x208px;\x20border-radius:999px;\x20border:1px\x20solid;\x20\x27\x20+\x20(enforceMode\x20?\x20\x27color:var(--okdb-success);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-success)\x2033%,\x20transparent);\x27\x20:\x20\x27color:var(--okdb-app-fg-muted);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-app-fg-muted)\x2033%,\x20transparent);\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20enforceMode\x20?\x20\x27enforcing\x27\x20:\x20\x27passive\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22openEditModal()\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:12px;\x20padding:4px\x2014px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22edit-2\x22></ok-icon>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20hasSchema\x20?\x20\x27Edit\x20Schema\x27\x20:\x20\x27Set\x20Schema\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<if\x20:=\x22schemaError\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22margin-bottom:12px;\x20color:var(--okdb-danger);\x20font-size:12px;\x20padding:8px\x2010px;\x20border-radius:8px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-danger)\x2020%,\x20transparent);\x20background:color-mix(in\x20srgb,\x20var(--okdb-danger)\x204%,\x20transparent);\x22>{{\x20schemaError\x20}}</div>\x0a\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20<!--\x20No\x20schema\x20state\x20-->\x0a\x20\x20\x20\x20<if\x20:=\x22schemaLoaded\x20&&\x20!hasSchema\x20&&\x20!schemaBusy\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.45;\x20font-size:13px;\x20padding:8px\x200;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20No\x20schema\x20defined\x20for\x20this\x20type.\x20Click\x20<b>Set\x20Schema</b>\x20to\x20add\x20one.\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20<!--\x20Schema\x20summary\x20-->\x0a\x20\x20\x20\x20<if\x20:=\x22hasSchema\x20&&\x20!schemaBusy\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20Properties\x20table\x20-->\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22propertyEntries.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-grid\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-hd\x22>Property</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-hd\x22>Type</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-hd\x22>Req</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-hd\x22>Constraints</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-hd\x22>Description</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22propertyEntries\x22\x20let:item=\x22p\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-cell\x22><code\x20style=\x22font-size:12px;\x20color:var(--okdb-json-key);\x22>{{\x20p.name\x20}}</code></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-cell\x20sts-dim\x22>{{\x20p.type\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-cell\x22\x20style=\x22text-align:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22p.required\x22><span\x20style=\x22color:var(--okdb-success);\x20font-size:11px;\x22>✓</span></if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20:class=\x22\x27sts-cell\x20sts-dim\x27\x20+\x20(p.hasRef\x20?\x20\x27\x20sts-ref-hint\x27\x20:\x20\x27\x27)\x22\x20style=\x22font-size:11px;\x22>{{\x20p.constraints\x20||\x20\x27—\x27\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-cell\x20sts-dim\x22>{{\x20p.description\x20||\x20\x27—\x27\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.35;\x20margin-top:6px;\x20user-select:none;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20propertyEntries.length\x20}}\x20propert{{\x20propertyEntries.length\x20===\x201\x20?\x20\x27y\x27\x20:\x20\x27ies\x27\x20}}{{\x20additionalAllowed\x20?\x20\x27\x20·\x20additional\x20properties\x20allowed\x27\x20:\x20\x27\x20·\x20no\x20additional\x20properties\x27\x20}}\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:=\x22propertyEntries.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.4;\x20font-size:13px;\x20padding:4px\x200;\x22>Schema\x20has\x20no\x20top-level\x20properties\x20defined.</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20Collapsed\x20JSON\x20preview\x20-->\x0a\x20\x20\x20\x20\x20\x20<details\x20style=\x22margin-top:12px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<summary\x20style=\x22font-size:11px;\x20opacity:.45;\x20cursor:pointer;\x20user-select:none;\x22>Raw\x20JSON\x20Schema</summary>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22sts-json-preview\x22>{{\x20jsonPreview\x20}}</pre>\x0a\x20\x20\x20\x20\x20\x20</details>\x0a\x0a\x20\x20\x20\x20</if>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20──\x20Schema\x20Violations\x20panel\x20───────────────\x20-->\x0a\x20\x20<div\x20class=\x22card\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22manage-section-header\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-title\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20Schema\x20Violations\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22violations.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22sts-viol-badge\x22>{{\x20violations.length\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22loadViolations()\x22\x20:disabled=\x22violationsBusy\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:11px;\x20padding:3px\x2010px;\x20opacity:.75;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22refresh-cw\x22></ok-icon>Refresh\x0a\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<if\x20:=\x22violationsBusy\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.45;\x20font-size:13px;\x22>Loading\x20violations…</div>\x0a\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20<if\x20:=\x22violationsError\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22color:var(--okdb-danger);\x20font-size:12px;\x20padding:8px\x2010px;\x20border-radius:8px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-danger)\x2020%,\x20transparent);\x20background:color-mix(in\x20srgb,\x20var(--okdb-danger)\x204%,\x20transparent);\x22>{{\x20violationsError\x20}}</div>\x0a\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20<if\x20:=\x22!violationsBusy\x20&&\x20!violationsError\x20&&\x20violations.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.4;\x20font-size:13px;\x22>No\x20violations\x20—\x20all\x20documents\x20conform\x20to\x20the\x20schema.</div>\x0a\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20<if\x20:=\x22violations.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-viol-table\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-viol-hd\x22>Key</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-viol-hd\x22>Errors</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-viol-hd\x22>When</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-viol-hd\x22></div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22violations\x22\x20let:item=\x22v\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-viol-cell\x20sts-viol-key\x22\x20@click=\x22toggleViolation(v.key)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-family:monospace;\x20font-size:12px;\x20color:var(--okdb-json-key);\x22>{{\x20v.key\x20}}</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=\x22sts-viol-cell\x22\x20@click=\x22toggleViolation(v.key)\x22\x20style=\x22font-size:12px;\x20opacity:.65;\x22>{{\x20errorCount(v)\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-viol-cell\x22\x20@click=\x22toggleViolation(v.key)\x22\x20style=\x22font-size:11px;\x20opacity:.45;\x22>{{\x20relTime(v.timestamp)\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-viol-cell\x22\x20style=\x22justify-content:flex-end;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22$attr.onViewKey\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click:stop=\x22viewDocument(v.key)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20class=\x22btn-icon\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:2px\x208px;\x20opacity:.75;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Switch\x20to\x20data\x20tab\x20for\x20this\x20document\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>View\x20→</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22expandedViolation\x20===\x20v.key\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-viol-expanded\x22\x20style=\x22grid-column:1/-1;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22(v.errors\x20??\x20[])\x22\x20let:item=\x22err\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-viol-err-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22sts-viol-path\x22>{{\x20err.path\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<span\x20style=\x22font-size:12px;\x20opacity:.85;\x20flex:1;\x20min-width:0;\x22>{{\x20err.message\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22err.expected\x20!=\x20null\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:11px;\x20opacity:.5;\x20white-space:nowrap;\x22>expected:\x20<code\x20style=\x22font-size:11px;\x22>{{\x20err.expected\x20}}</code></span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22err.actual\x20!=\x20null\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:11px;\x20opacity:.5;\x20white-space:nowrap;\x22>got:\x20<code\x20style=\x22font-size:11px;\x20color:var(--okdb-danger);\x22>{{\x20err.actual\x20}}</code></span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</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\x20\x20<if\x20:=\x22!(v.errors\x20??\x20[]).length\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.4;\x20padding:4px\x200;\x22>No\x20error\x20details\x20stored.</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20──\x20Ref\x20Violations\x20panel\x20(foreign\x20key)\x20───────────────\x20-->\x0a\x20\x20<if\x20:=\x22hasRefs\x20||\x20refViolations.length\x20>\x200\x22>\x0a\x20\x20<div\x20class=\x22card\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22manage-section-header\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-title\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20Ref\x20Violations\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22refViolations.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22sts-ref-badge\x22>{{\x20refViolations.length\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22loadRefViolations()\x22\x20:disabled=\x22refViolationsBusy\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:11px;\x20padding:3px\x2010px;\x20opacity:.75;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22refresh-cw\x22></ok-icon>Refresh\x0a\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<if\x20:=\x22refViolationsBusy\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.45;\x20font-size:13px;\x22>Loading\x20ref\x20violations…</div>\x0a\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20<if\x20:=\x22refViolationsError\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22color:var(--okdb-danger);\x20font-size:12px;\x20padding:8px\x2010px;\x20border-radius:8px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-danger)\x2020%,\x20transparent);\x20background:color-mix(in\x20srgb,\x20var(--okdb-danger)\x204%,\x20transparent);\x22>{{\x20refViolationsError\x20}}</div>\x0a\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20<if\x20:=\x22!refViolationsBusy\x20&&\x20!refViolationsError\x20&&\x20refViolations.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.4;\x20font-size:13px;\x22>No\x20ref\x20violations\x20—\x20all\x20foreign\x20key\x20references\x20are\x20valid.</div>\x0a\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20<if\x20:=\x22refViolations.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-ref-table\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-viol-hd\x22>Source</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-viol-hd\x22>Field</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-viol-hd\x22>Target</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-viol-hd\x22>When</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-viol-hd\x22></div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22refViolations\x22\x20let:item=\x22rv\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-viol-cell\x20sts-viol-key\x22\x20@click=\x22toggleRefViolation(rv.sourceKey\x20+\x20\x27@\x27\x20+\x20rv.fieldPath)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-family:monospace;\x20font-size:12px;\x20color:var(--okdb-json-key);\x22>{{\x20rv.sourceKey\x20}}</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=\x22sts-viol-cell\x22\x20@click=\x22toggleRefViolation(rv.sourceKey\x20+\x20\x27@\x27\x20+\x20rv.fieldPath)\x22\x20style=\x22font-size:12px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<code\x20style=\x22font-size:11px;\x20color:var(--okdb-purple);\x22>{{\x20rv.fieldPath\x20}}</code>\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=\x22sts-viol-cell\x22\x20@click=\x22toggleRefViolation(rv.sourceKey\x20+\x20\x27@\x27\x20+\x20rv.fieldPath)\x22\x20style=\x22font-size:12px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.5;\x22>{{\x20rv.targetType\x20}}</span><span\x20style=\x22color:var(--okdb-danger);\x22>@{{\x20rv.targetKey\x20}}</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=\x22sts-viol-cell\x22\x20@click=\x22toggleRefViolation(rv.sourceKey\x20+\x20\x27@\x27\x20+\x20rv.fieldPath)\x22\x20style=\x22font-size:11px;\x20opacity:.45;\x22>{{\x20relTime(rv.timestamp\x20||\x20rv.detectedAt)\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-viol-cell\x22\x20style=\x22justify-content:flex-end;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22$attr.onViewKey\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click:stop=\x22viewDocument(rv.sourceKey)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20class=\x22btn-icon\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:2px\x208px;\x20opacity:.75;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22View\x20the\x20document\x20with\x20the\x20dangling\x20ref\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>View\x20→</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22expandedRefViolation\x20===\x20(rv.sourceKey\x20+\x20\x27@\x27\x20+\x20rv.fieldPath)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-viol-expanded\x22\x20style=\x22grid-column:1/-1;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-viol-err-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22sts-viol-path\x22>{{\x20rv.fieldPath\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.85;\x20flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20References\x20<code\x20style=\x22font-size:12px;\x22>{{\x20rv.targetType\x20}}@{{\x20rv.targetKey\x20}}</code>\x20which\x20does\x20not\x20exist\x0a\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</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a</div>\x0a','stores','multipleOf','refViolationsBusy','Failed\x20to\x20load\x20violations','format','function','3492155XFcvHD','6QlYIaI','len≤','maxItems','violationsError','items≤','\x0a\x20\x20…','status','entries','length','violationsBusy','3558296IAuPmV','expandedRefViolation','violationCount','data','all','10gIfqxq','minLength','errors','loadViolations','4863932MukVpS','onDelete','_notifyViolationCount','schemaError','uniqueItems','open','catch','schemaLoaded','shared','required','expandedViolation','794GwTyso','schema','onViewKey','round','type-schema-tab','/schema','enum(','loadRefViolations','items','map','some','json','loadSchema','\x0a\x20\x20\x20\x20\x20\x20type-schema-tab\x20.sts-grid\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20grid;\x0a\x20\x20\x20\x20\x20\x20\x20\x20grid-template-columns:\x20minmax(80px,\x201.5fr)\x20minmax(60px,\x201fr)\x2040px\x20minmax(80px,\x201.5fr)\x202fr;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x200;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20type-schema-tab\x20.sts-hd\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.4;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x200\x2012px\x206px\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-weight:\x20normal;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20type-schema-tab\x20.sts-cell\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x206px\x2012px\x206px\x200;\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:\x2013px;\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\x20min-width:\x200;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20type-schema-tab\x20.sts-dim\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.5;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20type-schema-tab\x20.sts-json-preview\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20margin-top:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2010px\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-bg-deep);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20var(--okdb-app-surface-2);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x206px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20line-height:\x201.6;\x0a\x20\x20\x20\x20\x20\x20\x20\x20overflow:\x20auto;\x0a\x20\x20\x20\x20\x20\x20\x20\x20max-height:\x20280px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20white-space:\x20pre-wrap;\x0a\x20\x20\x20\x20\x20\x20\x20\x20word-break:\x20break-word;\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-app-fg-muted);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20/*\x20──\x20Violations\x20sub-panel\x20──\x20*/\x0a\x20\x20\x20\x20\x20\x20type-schema-tab\x20.sts-viol-badge\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20margin-left:\x206px;\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\x20color-mix(in\x20srgb,\x20var(--okdb-danger)\x2033%,\x20transparent);\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-danger);\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-weight:\x20600;\x0a\x20\x20\x20\x20\x20\x20\x20\x20text-transform:\x20none;\x0a\x20\x20\x20\x20\x20\x20\x20\x20letter-spacing:\x200;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20type-schema-tab\x20.sts-viol-table\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20grid;\x0a\x20\x20\x20\x20\x20\x20\x20\x20grid-template-columns:\x20minmax(120px,\x202fr)\x2060px\x2090px\x20auto;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20type-schema-tab\x20.sts-viol-hd\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.4;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x200\x2012px\x206px\x200;\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\x20type-schema-tab\x20.sts-viol-cell\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:\x207px\x2012px\x207px\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x201px\x20solid\x20var(--okdb-app-surface);\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\x20\x20min-width:\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20overflow:\x20hidden;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20type-schema-tab\x20.sts-viol-cell:hover\x20{\x20background:\x20#ffffff07;\x20}\x0a\x20\x20\x20\x20\x20\x20type-schema-tab\x20.sts-viol-key\x20{\x20overflow:\x20hidden;\x20}\x0a\x20\x20\x20\x20\x20\x20type-schema-tab\x20.sts-viol-key\x20span\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20overflow:\x20hidden;\x0a\x20\x20\x20\x20\x20\x20\x20\x20text-overflow:\x20ellipsis;\x0a\x20\x20\x20\x20\x20\x20\x20\x20white-space:\x20nowrap;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20type-schema-tab\x20.sts-viol-expanded\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2010px\x2012px\x2012px\x2014px;\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);\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:\x204px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20type-schema-tab\x20.sts-viol-err-row\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20baseline;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-wrap:\x20wrap;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x204px\x200;\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\x20type-schema-tab\x20.sts-viol-err-row:last-child\x20{\x20border-bottom:\x20none;\x20}\x0a\x20\x20\x20\x20\x20\x20type-schema-tab\x20.sts-viol-path\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-danger);\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-family:\x20monospace;\x0a\x20\x20\x20\x20\x20\x20\x20\x20white-space:\x20nowrap;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-shrink:\x200;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20/*\x20──\x20Ref\x20violations\x20sub-panel\x20──\x20*/\x0a\x20\x20\x20\x20\x20\x20type-schema-tab\x20.sts-ref-badge\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20margin-left:\x206px;\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\x20color-mix(in\x20srgb,\x20var(--okdb-purple)\x2033%,\x20transparent);\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-purple);\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-weight:\x20600;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20type-schema-tab\x20.sts-ref-table\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20grid;\x0a\x20\x20\x20\x20\x20\x20\x20\x20grid-template-columns:\x20minmax(100px,\x201.5fr)\x20minmax(80px,\x201fr)\x20minmax(120px,\x202fr)\x2080px\x20auto;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20type-schema-tab\x20.sts-ref-hint\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-purple);\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.85;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20','type','items:\x20','$ok','minItems'];_0x39b0=function(){return _0x39f016;};return _0x39b0();}(function(_0x184fef,_0x2985ce){const _0x845c04=_0x3b62,_0x240ed3=_0x184fef();while(!![]){try{const _0x5dd80a=parseInt(_0x845c04(0x222))/0x1*(-parseInt(_0x845c04(0x1fa))/0x2)+-parseInt(_0x845c04(0x236))/0x3+parseInt(_0x845c04(0x217))/0x4+-parseInt(_0x845c04(0x203))/0x5*(parseInt(_0x845c04(0x204))/0x6)+parseInt(_0x845c04(0x20e))/0x7+-parseInt(_0x845c04(0x240))/0x8*(-parseInt(_0x845c04(0x1f4))/0x9)+-parseInt(_0x845c04(0x213))/0xa*(-parseInt(_0x845c04(0x23c))/0xb);if(_0x5dd80a===_0x2985ce)break;else _0x240ed3['push'](_0x240ed3['shift']());}catch(_0x55db94){_0x240ed3['push'](_0x240ed3['shift']());}}}(_0x39b0,0xc609e));import _0x5f46c8 from'@toolkit/elements/ok-icon.ok.js';import _0x5774b9 from'../modals/schema-edit-modal.ok.js';export default{'tag':_0xce419c(0x226),'dependencies':[_0x5f46c8,_0x5774b9],'attr':{'type':{},'onViewKey':{},'onSchemaChanged':{},'onViolationCountChanged':{}},'context':_0x5879ea=>({'schema':null,'schemaBusy':!0x1,'schemaError':null,'schemaLoaded':!0x1,'violations':[],'violationsBusy':!0x1,'violationsError':null,'expandedViolation':null,'refViolations':[],'refViolationsBusy':!0x1,'refViolationsError':null,'expandedRefViolation':null,get 'type'(){const _0x447d8c=_0xce419c;return _0x5879ea[_0x447d8c(0x1f0)]['type'];},get 'envApiBase'(){const _0x51ea4c=_0xce419c;return _0x5879ea[_0x51ea4c(0x232)][_0x51ea4c(0x1fd)]['okdb'][_0x51ea4c(0x1f2)];},get 'hasSchema'(){const _0x3281dd=_0xce419c;return!!this['schema']?.[_0x3281dd(0x245)];},get 'enforceMode'(){return this['schema']?.['enforce']??!0x1;},get 'definition'(){const _0x41ae82=_0xce419c;return this[_0x41ae82(0x223)]?.[_0x41ae82(0x245)]??null;},get 'violationCount'(){const _0x5e9fb3=_0xce419c;return this[_0x5e9fb3(0x1f5)][_0x5e9fb3(0x20c)]+this[_0x5e9fb3(0x241)][_0x5e9fb3(0x20c)];},get 'hasRefs'(){const _0x72fcf0=_0xce419c;return this[_0x72fcf0(0x1f9)][_0x72fcf0(0x22c)](_0x559836=>_0x559836['hasRef']);},get 'propertyEntries'(){const _0x66188a=_0xce419c,_0x384b00=this[_0x66188a(0x245)];if(!_0x384b00?.['properties'])return[];const _0x313f89=new Set(_0x384b00[_0x66188a(0x220)]||[]);return Object[_0x66188a(0x20b)](_0x384b00[_0x66188a(0x248)])[_0x66188a(0x22b)](([_0x19d1b3,_0x1490fc])=>{const _0x4f6dc3=_0x66188a,_0x4c0c8f=Array['isArray'](_0x1490fc[_0x4f6dc3(0x230)])?_0x1490fc[_0x4f6dc3(0x230)]['join'](_0x4f6dc3(0x239)):_0x1490fc[_0x4f6dc3(0x230)]||'—',_0x49e622=[];_0x1490fc[_0x4f6dc3(0x201)]&&_0x49e622[_0x4f6dc3(0x23f)](_0x1490fc[_0x4f6dc3(0x201)]),_0x1490fc[_0x4f6dc3(0x243)]&&_0x49e622['push'](_0x4f6dc3(0x228)+_0x1490fc[_0x4f6dc3(0x243)][_0x4f6dc3(0x20c)]+')'),void 0x0!==_0x1490fc['const']&&_0x49e622[_0x4f6dc3(0x23f)]('const'),void 0x0!==_0x1490fc['minimum']&&_0x49e622[_0x4f6dc3(0x23f)]('≥'+_0x1490fc[_0x4f6dc3(0x234)]),void 0x0!==_0x1490fc['maximum']&&_0x49e622[_0x4f6dc3(0x23f)]('≤'+_0x1490fc['maximum']),void 0x0!==_0x1490fc[_0x4f6dc3(0x24b)]&&_0x49e622['push']('>'+_0x1490fc[_0x4f6dc3(0x24b)]),void 0x0!==_0x1490fc[_0x4f6dc3(0x23a)]&&_0x49e622[_0x4f6dc3(0x23f)]('<'+_0x1490fc[_0x4f6dc3(0x23a)]),void 0x0!==_0x1490fc[_0x4f6dc3(0x1fe)]&&_0x49e622['push']('×'+_0x1490fc[_0x4f6dc3(0x1fe)]),void 0x0!==_0x1490fc[_0x4f6dc3(0x214)]&&_0x49e622[_0x4f6dc3(0x23f)]('len≥'+_0x1490fc[_0x4f6dc3(0x214)]),void 0x0!==_0x1490fc['maxLength']&&_0x49e622[_0x4f6dc3(0x23f)](_0x4f6dc3(0x205)+_0x1490fc['maxLength']),_0x1490fc['pattern']&&_0x49e622['push']('pattern'),void 0x0!==_0x1490fc[_0x4f6dc3(0x233)]&&_0x49e622[_0x4f6dc3(0x23f)](_0x4f6dc3(0x24e)+_0x1490fc[_0x4f6dc3(0x233)]),void 0x0!==_0x1490fc[_0x4f6dc3(0x206)]&&_0x49e622[_0x4f6dc3(0x23f)](_0x4f6dc3(0x208)+_0x1490fc[_0x4f6dc3(0x206)]),_0x1490fc[_0x4f6dc3(0x21b)]&&_0x49e622[_0x4f6dc3(0x23f)]('unique'),_0x1490fc[_0x4f6dc3(0x248)]&&_0x49e622['push'](Object['keys'](_0x1490fc[_0x4f6dc3(0x248)])[_0x4f6dc3(0x20c)]+_0x4f6dc3(0x1ed)),_0x1490fc[_0x4f6dc3(0x22a)]&&_0x49e622['push'](_0x4f6dc3(0x231)+(_0x1490fc['items']['type']||_0x4f6dc3(0x237)));const _0x509218=_0x1490fc['ref'];if(_0x509218?.[_0x4f6dc3(0x230)]){const _0x19e59c=_0x509218[_0x4f6dc3(0x218)]||_0x4f6dc3(0x24a);_0x49e622[_0x4f6dc3(0x23f)](_0x4f6dc3(0x247)+_0x509218[_0x4f6dc3(0x230)]+'\x20('+_0x19e59c+')');}return{'name':_0x19d1b3,'type':_0x4c0c8f,'required':_0x313f89[_0x4f6dc3(0x1f7)](_0x19d1b3),'description':_0x1490fc[_0x4f6dc3(0x242)]||'','constraints':_0x49e622['join'](',\x20'),'hasRef':!!_0x509218?.[_0x4f6dc3(0x230)],'refTarget':_0x509218?.[_0x4f6dc3(0x230)]||null};});},get 'additionalAllowed'(){const _0x11a611=_0xce419c;return!0x1!==this[_0x11a611(0x245)]?.[_0x11a611(0x1f3)];},get 'jsonPreview'(){const _0x258289=_0xce419c;if(!this[_0x258289(0x245)])return'';const _0xd00f2e=JSON[_0x258289(0x249)](this[_0x258289(0x245)],null,0x2),_0x3326bb=_0xd00f2e[_0x258289(0x1f1)]('\x0a');return _0x3326bb[_0x258289(0x20c)]<=0x14?_0xd00f2e:_0x3326bb['slice'](0x0,0x14)[_0x258289(0x1ec)]('\x0a')+_0x258289(0x209);},async 'loadSchema'(){const _0x50359b=_0xce419c;if(this[_0x50359b(0x230)]){this['schemaBusy']=!0x0,this[_0x50359b(0x21a)]=null;try{const _0x4ccc4d=await fetch(this['envApiBase']+_0x50359b(0x238)+encodeURIComponent(this['type'])+_0x50359b(0x227));if(0x194===_0x4ccc4d[_0x50359b(0x20a)])this[_0x50359b(0x223)]=null;else{if(!_0x4ccc4d['ok']){const _0x9494fc=await _0x4ccc4d[_0x50359b(0x22d)]()[_0x50359b(0x21d)](()=>({}));throw new Error(_0x9494fc?.[_0x50359b(0x1fb)]?.[_0x50359b(0x1ee)]||_0x4ccc4d[_0x50359b(0x24d)]);}{const _0x5be5a0=await _0x4ccc4d['json']();this[_0x50359b(0x223)]=_0x5be5a0[_0x50359b(0x211)]??_0x5be5a0[_0x50359b(0x244)]??_0x5be5a0;}}this[_0x50359b(0x21e)]=!0x0;}catch(_0x13b74a){this[_0x50359b(0x21a)]=_0x13b74a['message']||'Failed\x20to\x20load\x20schema';}finally{this['schemaBusy']=!0x1;}}},async 'loadViolations'(){const _0xc27a04=_0xce419c;if(this[_0xc27a04(0x230)]){this['violationsBusy']=!0x0,this['violationsError']=null;try{const _0x4e5f59=await fetch(this[_0xc27a04(0x24c)]+'/violations/'+encodeURIComponent(this[_0xc27a04(0x230)]));if(0x194===_0x4e5f59[_0xc27a04(0x20a)])return void(this[_0xc27a04(0x1f5)]=[]);if(!_0x4e5f59['ok']){const _0x37a65a=await _0x4e5f59[_0xc27a04(0x22d)]()['catch'](()=>({}));throw new Error(_0x37a65a?.['error']?.[_0xc27a04(0x1ee)]||_0x4e5f59[_0xc27a04(0x24d)]);}const _0x4b1eaf=await _0x4e5f59['json']();this[_0xc27a04(0x1f5)]=_0x4b1eaf?.['data']?.[_0xc27a04(0x1f5)]??_0x4b1eaf?.[_0xc27a04(0x244)]?.[_0xc27a04(0x1f5)]??[];}catch(_0x3bbc34){this[_0xc27a04(0x207)]=_0x3bbc34[_0xc27a04(0x1ee)]||_0xc27a04(0x200),this['violations']=[];}finally{this[_0xc27a04(0x20d)]=!0x1,this[_0xc27a04(0x219)]();}}},async 'loadRefViolations'(){const _0x29f031=_0xce419c;if(this[_0x29f031(0x230)]){this['refViolationsBusy']=!0x0,this[_0x29f031(0x23e)]=null;try{const _0x34ec51=await fetch(this[_0x29f031(0x24c)]+'/ref-violations/'+encodeURIComponent(this['type']));if(0x194===_0x34ec51['status'])return void(this[_0x29f031(0x241)]=[]);if(!_0x34ec51['ok']){const _0x320a21=await _0x34ec51[_0x29f031(0x22d)]()[_0x29f031(0x21d)](()=>({}));throw new Error(_0x320a21?.[_0x29f031(0x1fb)]?.[_0x29f031(0x1ee)]||_0x34ec51[_0x29f031(0x24d)]);}const _0xc59455=await _0x34ec51['json']();this[_0x29f031(0x241)]=_0xc59455?.[_0x29f031(0x211)]?.[_0x29f031(0x1f5)]??_0xc59455?.[_0x29f031(0x244)]?.['violations']??[];}catch(_0x33f66c){this[_0x29f031(0x23e)]=_0x33f66c[_0x29f031(0x1ee)]||'Failed\x20to\x20load\x20ref\x20violations',this[_0x29f031(0x241)]=[];}finally{this[_0x29f031(0x1ff)]=!0x1,this[_0x29f031(0x219)]();}}},'_notifyViolationCount'(){const _0x387609=_0xce419c,_0x24db52=_0x5879ea[_0x387609(0x1f0)]['onViolationCountChanged'];_0x387609(0x202)==typeof _0x24db52&&_0x24db52(this[_0x387609(0x210)]);},'toggleViolation'(_0x5adc99){const _0x5b5fb6=_0xce419c;this[_0x5b5fb6(0x221)]=this[_0x5b5fb6(0x221)]===_0x5adc99?null:_0x5adc99;},'toggleRefViolation'(_0x1fcec0){const _0x5e7a53=_0xce419c;this[_0x5e7a53(0x20f)]=this['expandedRefViolation']===_0x1fcec0?null:_0x1fcec0;},'viewDocument'(_0x1b4f18){const _0x5c3d2e=_0xce419c,_0x1c6466=_0x5879ea['$attr'][_0x5c3d2e(0x224)];_0x5c3d2e(0x202)==typeof _0x1c6466&&_0x1c6466(_0x1b4f18);},'relTime'(_0x34ad8b){const _0x5c5759=_0xce419c;if(!_0x34ad8b)return'—';const _0x1eebbf=Date[_0x5c5759(0x246)]()-_0x34ad8b;return _0x1eebbf<0x1388?_0x5c5759(0x1f6):_0x1eebbf<0xea60?Math[_0x5c5759(0x225)](_0x1eebbf/0x3e8)+'s\x20ago':_0x1eebbf<0x36ee80?Math[_0x5c5759(0x225)](_0x1eebbf/0xea60)+'m\x20ago':_0x1eebbf<0x5265c00?Math[_0x5c5759(0x225)](_0x1eebbf/0x36ee80)+'h\x20ago':new Date(_0x34ad8b)['toLocaleDateString']();},'errorCount':_0x5c1b3d=>(_0x5c1b3d[_0xce419c(0x215)]??[])['length']||(_0x5c1b3d[_0xce419c(0x1f8)]??0x0),async 'openEditModal'(){const _0x294ab1=_0xce419c;await _0x5879ea['$ok'][_0x294ab1(0x21f)][_0x294ab1(0x1ef)][_0x294ab1(0x21c)]({'owner':_0x5879ea,'title':_0x294ab1(0x235)+this[_0x294ab1(0x230)],'canDrag':!0x0,'content':_0x294ab1(0x23d),'context':_0x431fa1=>({'modal':_0x431fa1,'type':this[_0x294ab1(0x230)],'schema':this[_0x294ab1(0x223)],'envApiBase':this[_0x294ab1(0x24c)],'onDone':async()=>{const _0x471a76=_0x294ab1;await Promise['all']([this[_0x471a76(0x22e)](),this[_0x471a76(0x216)](),this[_0x471a76(0x229)]()]);const _0x4fea4f=_0x5879ea[_0x471a76(0x1f0)]['onSchemaChanged'];_0x471a76(0x202)==typeof _0x4fea4f&&_0x4fea4f();}})});}}),async 'init'(_0x3f4824){const _0x2123bd=_0xce419c;_0x3f4824[_0x2123bd(0x23b)](()=>this['type'],async()=>{const _0x5b44b2=_0x2123bd;this['schemaLoaded']=!0x1,this[_0x5b44b2(0x223)]=null,this[_0x5b44b2(0x1f5)]=[],this['expandedViolation']=null,this[_0x5b44b2(0x241)]=[],this[_0x5b44b2(0x20f)]=null,this[_0x5b44b2(0x230)]&&await Promise[_0x5b44b2(0x212)]([this['loadSchema'](),this['loadViolations'](),this['loadRefViolations']()]);}),this[_0x2123bd(0x230)]&&await Promise[_0x2123bd(0x212)]([this[_0x2123bd(0x22e)](),this['loadViolations'](),this[_0x2123bd(0x229)]()]);},'template':_0xce419c(0x1fc),'style':_0xce419c(0x22f)};
1
+ const _0x97b568=_0x5351;(function(_0x40b708,_0x26adfb){const _0x4f6553=_0x5351,_0x24a96c=_0x40b708();while(!![]){try{const _0x30f163=-parseInt(_0x4f6553(0x11f))/0x1*(-parseInt(_0x4f6553(0x129))/0x2)+parseInt(_0x4f6553(0x146))/0x3+parseInt(_0x4f6553(0xf0))/0x4+-parseInt(_0x4f6553(0x101))/0x5+-parseInt(_0x4f6553(0x117))/0x6*(parseInt(_0x4f6553(0x106))/0x7)+-parseInt(_0x4f6553(0x11a))/0x8*(parseInt(_0x4f6553(0x138))/0x9)+parseInt(_0x4f6553(0x118))/0xa*(parseInt(_0x4f6553(0x137))/0xb);if(_0x30f163===_0x26adfb)break;else _0x24a96c['push'](_0x24a96c['shift']());}catch(_0x53588b){_0x24a96c['push'](_0x24a96c['shift']());}}}(_0x1a51,0x68540));import _0x248209 from'@toolkit/elements/ok-icon.ok.js';import _0x1d4ce7 from'../modals/schema-edit-modal.ok.js';function _0x5351(_0x97ea10,_0x3df5f5){_0x97ea10=_0x97ea10-0xdf;const _0x1a5132=_0x1a51();let _0x5351ee=_0x1a5132[_0x97ea10];return _0x5351ee;}function _0x1a51(){const _0x20a9a9=['/schema','minItems','keys','violationsBusy','maxItems','violations','len≤','minimum','all','toLocaleDateString','354ClzLIO','14577940ryCgPz','\x20|\x20','639832qbpFVR','items:\x20','push','enum','additionalProperties','3wMILaN','schemaError','split','refViolationsBusy','schemaLoaded','okdb','refViolations','function','violationCount','expandedRefViolation','71328VVWogi','loadRefViolations','ref','loadViolations','const','statusText','schemaBusy','length','envApiBase','round','shared','error','refViolationsError','message','11EaKise','63VDJvUy','format','onViewKey','onViolationCountChanged','stringify','_notifyViolationCount','multipleOf','violationsError','enforce','just\x20now','maximum','pattern','entries','Failed\x20to\x20load\x20ref\x20violations','244842FrZsXI','items≤','exclusiveMaximum','map','json','\x0a<div\x20style=\x22display:flex;\x20flex-direction:column;\x20gap:16px;\x20flex:1;\x20overflow:auto;\x20padding-right:4px;\x22>\x0a\x0a\x20\x20<!--\x20──\x20Schema\x20summary\x20card\x20────────────────────────────────────\x20-->\x0a\x20\x20<div\x20class=\x22card\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22manage-section-header\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-title\x22>Schema\x20Definition</div>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20gap:8px;\x20align-items:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22schemaBusy\x22>\x0a\x20\x20\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\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22hasSchema\x20&&\x20!schemaBusy\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20:style=\x22\x27font-size:10px;\x20padding:2px\x208px;\x20border-radius:999px;\x20border:1px\x20solid;\x20\x27\x20+\x20(enforceMode\x20?\x20\x27color:var(--okdb-success);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-success)\x2033%,\x20transparent);\x27\x20:\x20\x27color:var(--okdb-app-fg-muted);\x20border-color:color-mix(in\x20srgb,\x20var(--okdb-app-fg-muted)\x2033%,\x20transparent);\x27)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20enforceMode\x20?\x20\x27enforcing\x27\x20:\x20\x27passive\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22openEditModal()\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:12px;\x20padding:4px\x2014px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22edit-2\x22></ok-icon>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20hasSchema\x20?\x20\x27Edit\x20Schema\x27\x20:\x20\x27Set\x20Schema\x27\x20}}\x0a\x20\x20\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<if\x20:=\x22schemaError\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22margin-bottom:12px;\x20color:var(--okdb-danger);\x20font-size:12px;\x20padding:8px\x2010px;\x20border-radius:8px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-danger)\x2020%,\x20transparent);\x20background:color-mix(in\x20srgb,\x20var(--okdb-danger)\x204%,\x20transparent);\x22>{{\x20schemaError\x20}}</div>\x0a\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20<!--\x20No\x20schema\x20state\x20-->\x0a\x20\x20\x20\x20<if\x20:=\x22schemaLoaded\x20&&\x20!hasSchema\x20&&\x20!schemaBusy\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.45;\x20font-size:13px;\x20padding:8px\x200;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20No\x20schema\x20defined\x20for\x20this\x20type.\x20Click\x20<b>Set\x20Schema</b>\x20to\x20add\x20one.\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20<!--\x20Schema\x20summary\x20-->\x0a\x20\x20\x20\x20<if\x20:=\x22hasSchema\x20&&\x20!schemaBusy\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20Properties\x20table\x20-->\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22propertyEntries.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-grid\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-hd\x22>Property</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-hd\x22>Type</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-hd\x22>Req</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-hd\x22>Constraints</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-hd\x22>Description</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22propertyEntries\x22\x20let:item=\x22p\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-cell\x22><code\x20style=\x22font-size:12px;\x20color:var(--okdb-json-key);\x22>{{\x20p.name\x20}}</code></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-cell\x20sts-dim\x22>{{\x20p.type\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-cell\x22\x20style=\x22text-align:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22p.required\x22><span\x20style=\x22color:var(--okdb-success);\x20font-size:11px;\x22>✓</span></if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20:class=\x22\x27sts-cell\x20sts-dim\x27\x20+\x20(p.hasRef\x20?\x20\x27\x20sts-ref-hint\x27\x20:\x20\x27\x27)\x22\x20style=\x22font-size:11px;\x22>{{\x20p.constraints\x20||\x20\x27—\x27\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-cell\x20sts-dim\x22>{{\x20p.description\x20||\x20\x27—\x27\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:11px;\x20opacity:.35;\x20margin-top:6px;\x20user-select:none;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20{{\x20propertyEntries.length\x20}}\x20propert{{\x20propertyEntries.length\x20===\x201\x20?\x20\x27y\x27\x20:\x20\x27ies\x27\x20}}{{\x20additionalAllowed\x20?\x20\x27\x20·\x20additional\x20properties\x20allowed\x27\x20:\x20\x27\x20·\x20no\x20additional\x20properties\x27\x20}}\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:=\x22propertyEntries.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.4;\x20font-size:13px;\x20padding:4px\x200;\x22>Schema\x20has\x20no\x20top-level\x20properties\x20defined.</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20Collapsed\x20JSON\x20preview\x20-->\x0a\x20\x20\x20\x20\x20\x20<details\x20style=\x22margin-top:12px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<summary\x20style=\x22font-size:11px;\x20opacity:.45;\x20cursor:pointer;\x20user-select:none;\x22>Raw\x20JSON\x20Schema</summary>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<pre\x20class=\x22sts-json-preview\x22>{{\x20jsonPreview\x20}}</pre>\x0a\x20\x20\x20\x20\x20\x20</details>\x0a\x0a\x20\x20\x20\x20</if>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20──\x20Schema\x20Violations\x20panel\x20───────────────\x20-->\x0a\x20\x20<div\x20class=\x22card\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22manage-section-header\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-title\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20Schema\x20Violations\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22violations.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22sts-viol-badge\x22>{{\x20violations.length\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22loadViolations()\x22\x20:disabled=\x22violationsBusy\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:11px;\x20padding:3px\x2010px;\x20opacity:.75;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22refresh-cw\x22></ok-icon>Refresh\x0a\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<if\x20:=\x22violationsBusy\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.45;\x20font-size:13px;\x22>Loading\x20violations…</div>\x0a\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20<if\x20:=\x22violationsError\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22color:var(--okdb-danger);\x20font-size:12px;\x20padding:8px\x2010px;\x20border-radius:8px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-danger)\x2020%,\x20transparent);\x20background:color-mix(in\x20srgb,\x20var(--okdb-danger)\x204%,\x20transparent);\x22>{{\x20violationsError\x20}}</div>\x0a\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20<if\x20:=\x22!violationsBusy\x20&&\x20!violationsError\x20&&\x20violations.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.4;\x20font-size:13px;\x22>No\x20violations\x20—\x20all\x20documents\x20conform\x20to\x20the\x20schema.</div>\x0a\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20<if\x20:=\x22violations.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-viol-table\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-viol-hd\x22>Key</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-viol-hd\x22>Errors</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-viol-hd\x22>When</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-viol-hd\x22></div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22violations\x22\x20let:item=\x22v\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-viol-cell\x20sts-viol-key\x22\x20@click=\x22toggleViolation(v.key)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-family:monospace;\x20font-size:12px;\x20color:var(--okdb-json-key);\x22>{{\x20v.key\x20}}</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=\x22sts-viol-cell\x22\x20@click=\x22toggleViolation(v.key)\x22\x20style=\x22font-size:12px;\x20opacity:.65;\x22>{{\x20errorCount(v)\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-viol-cell\x22\x20@click=\x22toggleViolation(v.key)\x22\x20style=\x22font-size:11px;\x20opacity:.45;\x22>{{\x20relTime(v.timestamp)\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-viol-cell\x22\x20style=\x22justify-content:flex-end;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22$attr.onViewKey\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click:stop=\x22viewDocument(v.key)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20class=\x22btn-icon\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:2px\x208px;\x20opacity:.75;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Switch\x20to\x20data\x20tab\x20for\x20this\x20document\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>View\x20→</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22expandedViolation\x20===\x20v.key\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-viol-expanded\x22\x20style=\x22grid-column:1/-1;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22(v.errors\x20??\x20[])\x22\x20let:item=\x22err\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-viol-err-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22sts-viol-path\x22>{{\x20err.path\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<span\x20style=\x22font-size:12px;\x20opacity:.85;\x20flex:1;\x20min-width:0;\x22>{{\x20err.message\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22err.expected\x20!=\x20null\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:11px;\x20opacity:.5;\x20white-space:nowrap;\x22>expected:\x20<code\x20style=\x22font-size:11px;\x22>{{\x20err.expected\x20}}</code></span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22err.actual\x20!=\x20null\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:11px;\x20opacity:.5;\x20white-space:nowrap;\x22>got:\x20<code\x20style=\x22font-size:11px;\x20color:var(--okdb-danger);\x22>{{\x20err.actual\x20}}</code></span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</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\x20\x20<if\x20:=\x22!(v.errors\x20??\x20[]).length\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22font-size:12px;\x20opacity:.4;\x20padding:4px\x200;\x22>No\x20error\x20details\x20stored.</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20──\x20Ref\x20Violations\x20panel\x20(foreign\x20key)\x20───────────────\x20-->\x0a\x20\x20<if\x20:=\x22hasRefs\x20||\x20refViolations.length\x20>\x200\x22>\x0a\x20\x20<div\x20class=\x22card\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22manage-section-header\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22manage-section-title\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20Ref\x20Violations\x0a\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22refViolations.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22sts-ref-badge\x22>{{\x20refViolations.length\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22loadRefViolations()\x22\x20:disabled=\x22refViolationsBusy\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:11px;\x20padding:3px\x2010px;\x20opacity:.75;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22refresh-cw\x22></ok-icon>Refresh\x0a\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<if\x20:=\x22refViolationsBusy\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.45;\x20font-size:13px;\x22>Loading\x20ref\x20violations…</div>\x0a\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20<if\x20:=\x22refViolationsError\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22color:var(--okdb-danger);\x20font-size:12px;\x20padding:8px\x2010px;\x20border-radius:8px;\x20border:1px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-danger)\x2020%,\x20transparent);\x20background:color-mix(in\x20srgb,\x20var(--okdb-danger)\x204%,\x20transparent);\x22>{{\x20refViolationsError\x20}}</div>\x0a\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20<if\x20:=\x22!refViolationsBusy\x20&&\x20!refViolationsError\x20&&\x20refViolations.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22opacity:.4;\x20font-size:13px;\x22>No\x20ref\x20violations\x20—\x20all\x20foreign\x20key\x20references\x20are\x20valid.</div>\x0a\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20<if\x20:=\x22refViolations.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-ref-table\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-viol-hd\x22>Source</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-viol-hd\x22>Field</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-viol-hd\x22>Target</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-viol-hd\x22>When</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-viol-hd\x22></div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22refViolations\x22\x20let:item=\x22rv\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-viol-cell\x20sts-viol-key\x22\x20@click=\x22toggleRefViolation(rv.sourceKey\x20+\x20\x27@\x27\x20+\x20rv.fieldPath)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-family:monospace;\x20font-size:12px;\x20color:var(--okdb-json-key);\x22>{{\x20rv.sourceKey\x20}}</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=\x22sts-viol-cell\x22\x20@click=\x22toggleRefViolation(rv.sourceKey\x20+\x20\x27@\x27\x20+\x20rv.fieldPath)\x22\x20style=\x22font-size:12px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<code\x20style=\x22font-size:11px;\x20color:var(--okdb-purple);\x22>{{\x20rv.fieldPath\x20}}</code>\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=\x22sts-viol-cell\x22\x20@click=\x22toggleRefViolation(rv.sourceKey\x20+\x20\x27@\x27\x20+\x20rv.fieldPath)\x22\x20style=\x22font-size:12px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22opacity:.5;\x22>{{\x20rv.targetType\x20}}</span><span\x20style=\x22color:var(--okdb-danger);\x22>@{{\x20rv.targetKey\x20}}</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=\x22sts-viol-cell\x22\x20@click=\x22toggleRefViolation(rv.sourceKey\x20+\x20\x27@\x27\x20+\x20rv.fieldPath)\x22\x20style=\x22font-size:11px;\x20opacity:.45;\x22>{{\x20relTime(rv.timestamp\x20||\x20rv.detectedAt)\x20}}</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-viol-cell\x22\x20style=\x22justify-content:flex-end;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22$attr.onViewKey\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click:stop=\x22viewDocument(rv.sourceKey)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20class=\x22btn-icon\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20style=\x22font-size:11px;\x20padding:2px\x208px;\x20opacity:.75;\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22View\x20the\x20document\x20with\x20the\x20dangling\x20ref\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>View\x20→</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22expandedRefViolation\x20===\x20(rv.sourceKey\x20+\x20\x27@\x27\x20+\x20rv.fieldPath)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-viol-expanded\x22\x20style=\x22grid-column:1/-1;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sts-viol-err-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22sts-viol-path\x22>{{\x20rv.fieldPath\x20}}</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:12px;\x20opacity:.85;\x20flex:1;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20References\x20<code\x20style=\x22font-size:12px;\x22>{{\x20rv.targetType\x20}}@{{\x20rv.targetKey\x20}}</code>\x20which\x20does\x20not\x20exist\x0a\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</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a</div>\x0a','definition','properties','open','errorCount','required','s\x20ago','isArray','/ref-violations/','no_action','expandedViolation','type','maxLength','1584868ypSEec','slice','minLength','$watch','uniqueItems','m\x20ago','schema','status','modal','ref\x20→\x20','onSchemaChanged','<schema-edit-modal\x20:modal=\x22modal\x22\x20:type=\x22type\x22\x20:schema=\x22schema\x22\x20:env-api-base=\x22envApiBase\x22\x20:on-done=\x22onDone\x22\x20/>','items','h\x20ago','Failed\x20to\x20load\x20schema','$attr','loadSchema','2044570zDtOOU','$ok','/violations/','data','/type/','76706kBqgeZ','Failed\x20to\x20load\x20violations','catch','enum(','result','hasRef','errors'];_0x1a51=function(){return _0x20a9a9;};return _0x1a51();}export default{'tag':'type-schema-tab','dependencies':[_0x248209,_0x1d4ce7],'attr':{'type':{},'onViewKey':{},'onSchemaChanged':{},'onViolationCountChanged':{}},'context':_0x2f0d2f=>({'schema':null,'schemaBusy':!0x1,'schemaError':null,'schemaLoaded':!0x1,'violations':[],'violationsBusy':!0x1,'violationsError':null,'expandedViolation':null,'refViolations':[],'refViolationsBusy':!0x1,'refViolationsError':null,'expandedRefViolation':null,get 'type'(){const _0x1e0ac3=_0x5351;return _0x2f0d2f[_0x1e0ac3(0xff)][_0x1e0ac3(0xee)];},get 'envApiBase'(){const _0x460c21=_0x5351;return _0x2f0d2f[_0x460c21(0x102)]['stores'][_0x460c21(0x124)]['apiBase'];},get 'hasSchema'(){const _0x3481a2=_0x5351;return!!this[_0x3481a2(0xf6)]?.['definition'];},get 'enforceMode'(){const _0x5e2c84=_0x5351;return this[_0x5e2c84(0xf6)]?.[_0x5e2c84(0x140)]??!0x1;},get 'definition'(){const _0x25e289=_0x5351;return this[_0x25e289(0xf6)]?.['definition']??null;},get 'violationCount'(){const _0x4f1e6d=_0x5351;return this[_0x4f1e6d(0x112)][_0x4f1e6d(0x130)]+this[_0x4f1e6d(0x125)][_0x4f1e6d(0x130)];},get 'hasRefs'(){const _0x21adcd=_0x5351;return this['propertyEntries']['some'](_0x403453=>_0x403453[_0x21adcd(0x10b)]);},get 'propertyEntries'(){const _0x5d19e0=_0x5351,_0x4a5884=this[_0x5d19e0(0xe4)];if(!_0x4a5884?.[_0x5d19e0(0xe5)])return[];const _0x57f23e=new Set(_0x4a5884[_0x5d19e0(0xe8)]||[]);return Object[_0x5d19e0(0x144)](_0x4a5884[_0x5d19e0(0xe5)])[_0x5d19e0(0xe1)](([_0x330f10,_0x4ef842])=>{const _0x37d250=_0x5d19e0,_0x1f66a6=Array[_0x37d250(0xea)](_0x4ef842[_0x37d250(0xee)])?_0x4ef842[_0x37d250(0xee)]['join'](_0x37d250(0x119)):_0x4ef842['type']||'—',_0x2b0098=[];_0x4ef842[_0x37d250(0x139)]&&_0x2b0098[_0x37d250(0x11c)](_0x4ef842[_0x37d250(0x139)]),_0x4ef842[_0x37d250(0x11d)]&&_0x2b0098['push'](_0x37d250(0x109)+_0x4ef842[_0x37d250(0x11d)][_0x37d250(0x130)]+')'),void 0x0!==_0x4ef842[_0x37d250(0x12d)]&&_0x2b0098[_0x37d250(0x11c)](_0x37d250(0x12d)),void 0x0!==_0x4ef842[_0x37d250(0x114)]&&_0x2b0098[_0x37d250(0x11c)]('≥'+_0x4ef842[_0x37d250(0x114)]),void 0x0!==_0x4ef842[_0x37d250(0x142)]&&_0x2b0098['push']('≤'+_0x4ef842['maximum']),void 0x0!==_0x4ef842['exclusiveMinimum']&&_0x2b0098[_0x37d250(0x11c)]('>'+_0x4ef842['exclusiveMinimum']),void 0x0!==_0x4ef842[_0x37d250(0xe0)]&&_0x2b0098['push']('<'+_0x4ef842[_0x37d250(0xe0)]),void 0x0!==_0x4ef842[_0x37d250(0x13e)]&&_0x2b0098['push']('×'+_0x4ef842[_0x37d250(0x13e)]),void 0x0!==_0x4ef842[_0x37d250(0xf2)]&&_0x2b0098[_0x37d250(0x11c)]('len≥'+_0x4ef842[_0x37d250(0xf2)]),void 0x0!==_0x4ef842['maxLength']&&_0x2b0098[_0x37d250(0x11c)](_0x37d250(0x113)+_0x4ef842[_0x37d250(0xef)]),_0x4ef842['pattern']&&_0x2b0098[_0x37d250(0x11c)](_0x37d250(0x143)),void 0x0!==_0x4ef842[_0x37d250(0x10e)]&&_0x2b0098[_0x37d250(0x11c)]('items≥'+_0x4ef842[_0x37d250(0x10e)]),void 0x0!==_0x4ef842[_0x37d250(0x111)]&&_0x2b0098['push'](_0x37d250(0xdf)+_0x4ef842[_0x37d250(0x111)]),_0x4ef842[_0x37d250(0xf4)]&&_0x2b0098[_0x37d250(0x11c)]('unique'),_0x4ef842[_0x37d250(0xe5)]&&_0x2b0098[_0x37d250(0x11c)](Object[_0x37d250(0x10f)](_0x4ef842[_0x37d250(0xe5)])['length']+'\x20props'),_0x4ef842['items']&&_0x2b0098[_0x37d250(0x11c)](_0x37d250(0x11b)+(_0x4ef842[_0x37d250(0xfc)][_0x37d250(0xee)]||'any'));const _0x19a48c=_0x4ef842[_0x37d250(0x12b)];if(_0x19a48c?.['type']){const _0x5c19b9=_0x19a48c['onDelete']||_0x37d250(0xec);_0x2b0098[_0x37d250(0x11c)](_0x37d250(0xf9)+_0x19a48c[_0x37d250(0xee)]+'\x20('+_0x5c19b9+')');}return{'name':_0x330f10,'type':_0x1f66a6,'required':_0x57f23e['has'](_0x330f10),'description':_0x4ef842['description']||'','constraints':_0x2b0098['join'](',\x20'),'hasRef':!!_0x19a48c?.[_0x37d250(0xee)],'refTarget':_0x19a48c?.['type']||null};});},get 'additionalAllowed'(){const _0x1b84a5=_0x5351;return!0x1!==this[_0x1b84a5(0xe4)]?.[_0x1b84a5(0x11e)];},get 'jsonPreview'(){const _0x3b0b75=_0x5351;if(!this['definition'])return'';const _0x38ca0e=JSON[_0x3b0b75(0x13c)](this['definition'],null,0x2),_0x435800=_0x38ca0e[_0x3b0b75(0x121)]('\x0a');return _0x435800[_0x3b0b75(0x130)]<=0x14?_0x38ca0e:_0x435800[_0x3b0b75(0xf1)](0x0,0x14)['join']('\x0a')+'\x0a\x20\x20…';},async 'loadSchema'(){const _0x320aee=_0x5351;if(this[_0x320aee(0xee)]){this[_0x320aee(0x12f)]=!0x0,this[_0x320aee(0x120)]=null;try{const _0x4cdef0=await fetch(this[_0x320aee(0x131)]+_0x320aee(0x105)+encodeURIComponent(this['type'])+_0x320aee(0x10d));if(0x194===_0x4cdef0['status'])this[_0x320aee(0xf6)]=null;else{if(!_0x4cdef0['ok']){const _0x1f5685=await _0x4cdef0['json']()['catch'](()=>({}));throw new Error(_0x1f5685?.['error']?.['message']||_0x4cdef0[_0x320aee(0x12e)]);}{const _0x5a81da=await _0x4cdef0[_0x320aee(0xe2)]();this[_0x320aee(0xf6)]=_0x5a81da[_0x320aee(0x104)]??_0x5a81da[_0x320aee(0x10a)]??_0x5a81da;}}this[_0x320aee(0x123)]=!0x0;}catch(_0x334a0f){this['schemaError']=_0x334a0f[_0x320aee(0x136)]||_0x320aee(0xfe);}finally{this['schemaBusy']=!0x1;}}},async 'loadViolations'(){const _0x20a4c0=_0x5351;if(this[_0x20a4c0(0xee)]){this[_0x20a4c0(0x110)]=!0x0,this[_0x20a4c0(0x13f)]=null;try{const _0x5405b0=await fetch(this[_0x20a4c0(0x131)]+_0x20a4c0(0x103)+encodeURIComponent(this[_0x20a4c0(0xee)]));if(0x194===_0x5405b0[_0x20a4c0(0xf7)])return void(this['violations']=[]);if(!_0x5405b0['ok']){const _0x1b88e7=await _0x5405b0[_0x20a4c0(0xe2)]()[_0x20a4c0(0x108)](()=>({}));throw new Error(_0x1b88e7?.[_0x20a4c0(0x134)]?.[_0x20a4c0(0x136)]||_0x5405b0['statusText']);}const _0x2b08bd=await _0x5405b0[_0x20a4c0(0xe2)]();this[_0x20a4c0(0x112)]=_0x2b08bd?.['data']?.[_0x20a4c0(0x112)]??_0x2b08bd?.[_0x20a4c0(0x10a)]?.['violations']??[];}catch(_0x3e5e84){this[_0x20a4c0(0x13f)]=_0x3e5e84[_0x20a4c0(0x136)]||_0x20a4c0(0x107),this[_0x20a4c0(0x112)]=[];}finally{this['violationsBusy']=!0x1,this['_notifyViolationCount']();}}},async 'loadRefViolations'(){const _0x4d701c=_0x5351;if(this['type']){this[_0x4d701c(0x122)]=!0x0,this[_0x4d701c(0x135)]=null;try{const _0x4f60ca=await fetch(this[_0x4d701c(0x131)]+_0x4d701c(0xeb)+encodeURIComponent(this[_0x4d701c(0xee)]));if(0x194===_0x4f60ca[_0x4d701c(0xf7)])return void(this[_0x4d701c(0x125)]=[]);if(!_0x4f60ca['ok']){const _0x54fb1f=await _0x4f60ca[_0x4d701c(0xe2)]()[_0x4d701c(0x108)](()=>({}));throw new Error(_0x54fb1f?.['error']?.[_0x4d701c(0x136)]||_0x4f60ca[_0x4d701c(0x12e)]);}const _0x61d1f2=await _0x4f60ca[_0x4d701c(0xe2)]();this[_0x4d701c(0x125)]=_0x61d1f2?.[_0x4d701c(0x104)]?.[_0x4d701c(0x112)]??_0x61d1f2?.['result']?.[_0x4d701c(0x112)]??[];}catch(_0x496b21){this['refViolationsError']=_0x496b21[_0x4d701c(0x136)]||_0x4d701c(0x145),this['refViolations']=[];}finally{this[_0x4d701c(0x122)]=!0x1,this[_0x4d701c(0x13d)]();}}},'_notifyViolationCount'(){const _0x38bd0a=_0x5351,_0x6b3ee7=_0x2f0d2f[_0x38bd0a(0xff)][_0x38bd0a(0x13b)];_0x38bd0a(0x126)==typeof _0x6b3ee7&&_0x6b3ee7(this[_0x38bd0a(0x127)]);},'toggleViolation'(_0xda64e2){const _0x2b717a=_0x5351;this[_0x2b717a(0xed)]=this[_0x2b717a(0xed)]===_0xda64e2?null:_0xda64e2;},'toggleRefViolation'(_0x59ec6c){const _0x24a037=_0x5351;this[_0x24a037(0x128)]=this['expandedRefViolation']===_0x59ec6c?null:_0x59ec6c;},'viewDocument'(_0x5c7f53){const _0x11f265=_0x5351,_0x18d1d4=_0x2f0d2f['$attr'][_0x11f265(0x13a)];_0x11f265(0x126)==typeof _0x18d1d4&&_0x18d1d4(_0x5c7f53);},'relTime'(_0x110ff4){const _0x18777d=_0x5351;if(!_0x110ff4)return'—';const _0x3af998=Date['now']()-_0x110ff4;return _0x3af998<0x1388?_0x18777d(0x141):_0x3af998<0xea60?Math[_0x18777d(0x132)](_0x3af998/0x3e8)+_0x18777d(0xe9):_0x3af998<0x36ee80?Math['round'](_0x3af998/0xea60)+_0x18777d(0xf5):_0x3af998<0x5265c00?Math[_0x18777d(0x132)](_0x3af998/0x36ee80)+_0x18777d(0xfd):new Date(_0x110ff4)[_0x18777d(0x116)]();},'errorCount':_0x5c664b=>(_0x5c664b[_0x97b568(0x10c)]??[])['length']||(_0x5c664b[_0x97b568(0xe7)]??0x0),async 'openEditModal'(){const _0x194085=_0x97b568;await _0x2f0d2f[_0x194085(0x102)][_0x194085(0x133)][_0x194085(0xf8)][_0x194085(0xe6)]({'owner':_0x2f0d2f,'title':'Schema\x20·\x20'+this[_0x194085(0xee)],'canDrag':!0x0,'content':_0x194085(0xfb),'context':_0x1ea314=>({'modal':_0x1ea314,'type':this[_0x194085(0xee)],'schema':this['schema'],'envApiBase':this[_0x194085(0x131)],'onDone':async()=>{const _0x5845d2=_0x194085;await Promise[_0x5845d2(0x115)]([this['loadSchema'](),this[_0x5845d2(0x12c)](),this[_0x5845d2(0x12a)]()]);const _0x521942=_0x2f0d2f[_0x5845d2(0xff)][_0x5845d2(0xfa)];_0x5845d2(0x126)==typeof _0x521942&&_0x521942();}})});}}),async 'init'(_0x165763){const _0x495029=_0x97b568;_0x165763[_0x495029(0xf3)](()=>this[_0x495029(0xee)],async()=>{const _0x231da8=_0x495029;this['schemaLoaded']=!0x1,this[_0x231da8(0xf6)]=null,this['violations']=[],this[_0x231da8(0xed)]=null,this[_0x231da8(0x125)]=[],this[_0x231da8(0x128)]=null,this[_0x231da8(0xee)]&&await Promise[_0x231da8(0x115)]([this[_0x231da8(0x100)](),this[_0x231da8(0x12c)](),this[_0x231da8(0x12a)]()]);}),this[_0x495029(0xee)]&&await Promise[_0x495029(0x115)]([this[_0x495029(0x100)](),this[_0x495029(0x12c)](),this['loadRefViolations']()]);},'template':_0x97b568(0xe3),'style':'\x0a\x20\x20\x20\x20\x20\x20type-schema-tab\x20.sts-grid\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20grid;\x0a\x20\x20\x20\x20\x20\x20\x20\x20grid-template-columns:\x20minmax(80px,\x201.5fr)\x20minmax(60px,\x201fr)\x2040px\x20minmax(80px,\x201.5fr)\x202fr;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x200;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20type-schema-tab\x20.sts-hd\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.4;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x200\x2012px\x206px\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-weight:\x20normal;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20type-schema-tab\x20.sts-cell\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x206px\x2012px\x206px\x200;\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:\x2013px;\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\x20min-width:\x200;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20type-schema-tab\x20.sts-dim\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.5;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20type-schema-tab\x20.sts-json-preview\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20margin-top:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2010px\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-bg-deep);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20var(--okdb-app-surface-2);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x206px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20line-height:\x201.6;\x0a\x20\x20\x20\x20\x20\x20\x20\x20overflow:\x20auto;\x0a\x20\x20\x20\x20\x20\x20\x20\x20max-height:\x20280px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20white-space:\x20pre-wrap;\x0a\x20\x20\x20\x20\x20\x20\x20\x20word-break:\x20break-word;\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-app-fg-muted);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20/*\x20──\x20Violations\x20sub-panel\x20──\x20*/\x0a\x20\x20\x20\x20\x20\x20type-schema-tab\x20.sts-viol-badge\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20margin-left:\x206px;\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\x20color-mix(in\x20srgb,\x20var(--okdb-danger)\x2033%,\x20transparent);\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-danger);\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-weight:\x20600;\x0a\x20\x20\x20\x20\x20\x20\x20\x20text-transform:\x20none;\x0a\x20\x20\x20\x20\x20\x20\x20\x20letter-spacing:\x200;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20type-schema-tab\x20.sts-viol-table\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20grid;\x0a\x20\x20\x20\x20\x20\x20\x20\x20grid-template-columns:\x20minmax(120px,\x202fr)\x2060px\x2090px\x20auto;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20type-schema-tab\x20.sts-viol-hd\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.4;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x200\x2012px\x206px\x200;\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\x20type-schema-tab\x20.sts-viol-cell\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:\x207px\x2012px\x207px\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x201px\x20solid\x20var(--okdb-app-surface);\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\x20\x20min-width:\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20overflow:\x20hidden;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20type-schema-tab\x20.sts-viol-cell:hover\x20{\x20background:\x20#ffffff07;\x20}\x0a\x20\x20\x20\x20\x20\x20type-schema-tab\x20.sts-viol-key\x20{\x20overflow:\x20hidden;\x20}\x0a\x20\x20\x20\x20\x20\x20type-schema-tab\x20.sts-viol-key\x20span\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20overflow:\x20hidden;\x0a\x20\x20\x20\x20\x20\x20\x20\x20text-overflow:\x20ellipsis;\x0a\x20\x20\x20\x20\x20\x20\x20\x20white-space:\x20nowrap;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20type-schema-tab\x20.sts-viol-expanded\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2010px\x2012px\x2012px\x2014px;\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);\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:\x204px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20type-schema-tab\x20.sts-viol-err-row\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20baseline;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-wrap:\x20wrap;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x204px\x200;\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\x20type-schema-tab\x20.sts-viol-err-row:last-child\x20{\x20border-bottom:\x20none;\x20}\x0a\x20\x20\x20\x20\x20\x20type-schema-tab\x20.sts-viol-path\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-danger);\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-family:\x20monospace;\x0a\x20\x20\x20\x20\x20\x20\x20\x20white-space:\x20nowrap;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-shrink:\x200;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20/*\x20──\x20Ref\x20violations\x20sub-panel\x20──\x20*/\x0a\x20\x20\x20\x20\x20\x20type-schema-tab\x20.sts-ref-badge\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20margin-left:\x206px;\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\x20color-mix(in\x20srgb,\x20var(--okdb-purple)\x2033%,\x20transparent);\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-purple);\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-weight:\x20600;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20type-schema-tab\x20.sts-ref-table\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20grid;\x0a\x20\x20\x20\x20\x20\x20\x20\x20grid-template-columns:\x20minmax(100px,\x201.5fr)\x20minmax(80px,\x201fr)\x20minmax(120px,\x202fr)\x2080px\x20auto;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20type-schema-tab\x20.sts-ref-hint\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-purple);\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.85;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20'};