@kedem/okdb 1.0.1 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (193) hide show
  1. package/bin/okdb.js +1 -1
  2. package/keys/public.pem +3 -0
  3. package/okdb.js +1 -1
  4. package/package.json +2 -2
  5. package/public/admin-app.js +1 -1
  6. package/public/components/admin-route-host.ok.js +1 -1
  7. package/public/components/env-picker.ok.js +1 -1
  8. package/public/components/field-path-input.ok.js +1 -1
  9. package/public/components/geo-map.ok.js +1 -1
  10. package/public/components/ok-cron-input.ok.js +1 -1
  11. package/public/components/ok-dropzone.ok.js +1 -1
  12. package/public/components/ok-js-input.ok.js +1 -1
  13. package/public/components/ok-json-input.ok.js +1 -1
  14. package/public/components/ok-text-monaco-input.ok.js +1 -1
  15. package/public/components/theme-toggle.ok.js +1 -1
  16. package/public/login-app.js +1 -1
  17. package/public/modules/ok.js +1 -1
  18. package/public/sections/api/parts/api-endpoint.ok.js +1 -1
  19. package/public/sections/auth/modals/create-token-modal.ok.js +1 -1
  20. package/public/sections/auth/modals/edit-token-modal.ok.js +1 -1
  21. package/public/sections/auth/modals/perm-info-popover.ok.js +1 -1
  22. package/public/sections/auth/parts/token-detail.ok.js +1 -1
  23. package/public/sections/auth/parts/token-list.ok.js +1 -1
  24. package/public/sections/db/modals/add-item-modal.ok.js +1 -1
  25. package/public/sections/db/modals/create-env-modal.ok.js +1 -1
  26. package/public/sections/db/modals/create-fts-modal.ok.js +1 -1
  27. package/public/sections/db/modals/create-index-modal.ok.js +1 -1
  28. package/public/sections/db/modals/create-pipeline-modal.ok.js +1 -1
  29. package/public/sections/db/modals/demo-env-modal.ok.js +1 -1
  30. package/public/sections/db/modals/remove-env-modal.ok.js +1 -1
  31. package/public/sections/db/modals/schema-edit-modal.ok.js +1 -1
  32. package/public/sections/db/parts/db-overview.ok.js +1 -1
  33. package/public/sections/db/parts/db-pipelines-panel.ok.js +1 -1
  34. package/public/sections/db/parts/edit-row.ok.js +1 -1
  35. package/public/sections/db/parts/tm-timeline.ok.js +1 -1
  36. package/public/sections/db/parts/type-changelog.ok.js +1 -1
  37. package/public/sections/db/parts/type-list.ok.js +1 -1
  38. package/public/sections/db/parts/type-pipelines-tab.ok.js +1 -1
  39. package/public/sections/db/parts/type-schema-tab.ok.js +1 -1
  40. package/public/sections/db/parts/type-viewer.ok.js +1 -1
  41. package/public/sections/db/parts/type-violations-tab.ok.js +1 -1
  42. package/public/sections/embeddings/modals/register-model-modal.ok.js +1 -1
  43. package/public/sections/embeddings/parts/embed-create-panel.ok.js +1 -1
  44. package/public/sections/embeddings/parts/embed-embedder-panel.ok.js +1 -1
  45. package/public/sections/embeddings/parts/embed-engine-declaration-editor.ok.js +1 -1
  46. package/public/sections/embeddings/parts/embed-engine-list.ok.js +1 -1
  47. package/public/sections/embeddings/parts/embed-indexer-panel.ok.js +1 -1
  48. package/public/sections/embeddings/parts/embed-lifecycle-bar.ok.js +1 -1
  49. package/public/sections/embeddings/parts/embed-model-catalog.ok.js +1 -1
  50. package/public/sections/embeddings/parts/embed-overview.ok.js +1 -1
  51. package/public/sections/embeddings/parts/embed-search-panel.ok.js +1 -1
  52. package/public/sections/embeddings/parts/embed-worker-panel.ok.js +1 -1
  53. package/public/sections/embeddings/parts/embeddings-engine-panel.ok.js +1 -1
  54. package/public/sections/embeddings/parts/engines-overview.ok.js +1 -1
  55. package/public/sections/embeddings/parts/pipeline-create-panel.ok.js +1 -1
  56. package/public/sections/engines/engine-panel-shared-style.js +1 -1
  57. package/public/sections/engines/engine-ui-utils.js +1 -1
  58. package/public/sections/engines/modals/engine-modal.ok.js +1 -1
  59. package/public/sections/engines/parts/engine-declaration-editor.ok.js +1 -1
  60. package/public/sections/engines/parts/engine-lifecycle-actions.ok.js +1 -1
  61. package/public/sections/engines/parts/engine-panel-shell.ok.js +1 -1
  62. package/public/sections/engines/parts/engine-resource-card.ok.js +1 -1
  63. package/public/sections/engines/parts/engine-row-item.ok.js +1 -1
  64. package/public/sections/engines/parts/generic-engine-panel.ok.js +1 -1
  65. package/public/sections/files/parts/files-blob-status.ok.js +1 -1
  66. package/public/sections/files/parts/files-collection-list.ok.js +1 -1
  67. package/public/sections/files/parts/files-collection-panel.ok.js +1 -1
  68. package/public/sections/files/parts/files-file-list.ok.js +1 -1
  69. package/public/sections/files/parts/files-overview.ok.js +1 -1
  70. package/public/sections/files/parts/files-path-browser.ok.js +1 -1
  71. package/public/sections/files/parts/files-upload-panel.ok.js +1 -1
  72. package/public/sections/functions/modals/function-modal.ok.js +1 -1
  73. package/public/sections/functions/parts/function-detail.ok.js +1 -1
  74. package/public/sections/functions/parts/function-logs.ok.js +1 -1
  75. package/public/sections/functions/parts/function-runner.ok.js +1 -1
  76. package/public/sections/functions/parts/functions-list.ok.js +1 -1
  77. package/public/sections/license/parts/license-panel.ok.js +1 -1
  78. package/public/sections/queue/modals/create-bucket-modal.ok.js +1 -1
  79. package/public/sections/queue/modals/edit-bucket-modal.ok.js +1 -1
  80. package/public/sections/queue/modals/edit-job-modal.ok.js +1 -1
  81. package/public/sections/queue/modals/enqueue-job-modal.ok.js +1 -1
  82. package/public/sections/queue/modals/job-type-modal.ok.js +1 -1
  83. package/public/sections/queue/parts/ok-job-form.ok.js +1 -1
  84. package/public/sections/queue/parts/queue-buckets.ok.js +1 -1
  85. package/public/sections/queue/parts/queue-job-types.ok.js +1 -1
  86. package/public/sections/queue/parts/queue-jobs.ok.js +1 -1
  87. package/public/sections/queue/parts/queue-types.ok.js +1 -1
  88. package/public/sections/queue/parts/queue-workers.ok.js +1 -1
  89. package/public/sections/sync/parts/sync-node-detail.ok.js +1 -1
  90. package/public/sections/sync/parts/sync-retention.ok.js +1 -1
  91. package/public/sections/sync/parts/sync-topology.ok.js +1 -1
  92. package/public/sections/system/modals/data-ops-modal.ok.js +1 -1
  93. package/public/sections/system/parts/system-api-panel.ok.js +1 -1
  94. package/public/sections/system/parts/system-auth-panel.ok.js +1 -1
  95. package/public/sections/system/parts/system-log-history.ok.js +1 -1
  96. package/public/sections/system/parts/system-log.ok.js +1 -1
  97. package/public/sections/system/parts/system-status.ok.js +1 -1
  98. package/public/sections/system/parts/system-sync-panel.ok.js +1 -1
  99. package/public/sections/views/modals/create-view-modal.ok.js +1 -1
  100. package/public/sections/views/parts/view-detail.ok.js +1 -1
  101. package/public/sections/views/parts/views-list.ok.js +1 -1
  102. package/public/sections/views/parts/views-overview.ok.js +1 -1
  103. package/public/setup-app.js +1 -1
  104. package/public/stores/auth-store.js +1 -1
  105. package/public/stores/events-store.js +1 -1
  106. package/public/stores/functions-store.js +1 -1
  107. package/public/stores/okdb-store.js +1 -1
  108. package/public/stores/theme-store.js +1 -1
  109. package/public/util/permissions.js +1 -1
  110. package/public/util/sift-schema.js +1 -1
  111. package/public/vendor/okjs/ok.esm.min.js +1 -2
  112. package/public/vendor/okjs/toolkit/behavior/async.ok.js +1 -1
  113. package/public/vendor/okjs/toolkit/components/ok-chart.ok.js +1 -1
  114. package/public/vendor/okjs/toolkit/components/ok-doc-viewer.ok.js +1 -1
  115. package/public/vendor/okjs/toolkit/components/ok-marked.ok.js +1 -1
  116. package/public/vendor/okjs/toolkit/components/ok-monaco.ok.js +1 -1
  117. package/public/vendor/okjs/toolkit/core/ok-layer-service.ok.js +1 -1
  118. package/public/vendor/okjs/toolkit/core/ok-layer.ok.js +1 -1
  119. package/public/vendor/okjs/toolkit/core/ok-overlay.ok.js +1 -1
  120. package/public/vendor/okjs/toolkit/core/ok-sandbox.ok.js +1 -1
  121. package/public/vendor/okjs/toolkit/core/transition.ok.js +1 -1
  122. package/public/vendor/okjs/toolkit/core/virtualized.ok.js +1 -1
  123. package/public/vendor/okjs/toolkit/devtools/ok-console-service.ok.js +1 -1
  124. package/public/vendor/okjs/toolkit/devtools/ok-console.ok.js +1 -1
  125. package/public/vendor/okjs/toolkit/devtools/ok-fps-monitor-service.ok.js +1 -1
  126. package/public/vendor/okjs/toolkit/devtools/ok-fps-monitor.ok.js +1 -1
  127. package/public/vendor/okjs/toolkit/devtools/ok-inspector-service.ok.js +1 -1
  128. package/public/vendor/okjs/toolkit/devtools/ok-inspector.ok.js +1 -1
  129. package/public/vendor/okjs/toolkit/devtools/ok-js-tree.ok.js +1 -1
  130. package/public/vendor/okjs/toolkit/devtools/ok-timeline-service.ok.js +1 -1
  131. package/public/vendor/okjs/toolkit/devtools/ok-timeline.ok.js +1 -1
  132. package/public/vendor/okjs/toolkit/docs/doc-viewer.ok.js +1 -1
  133. package/public/vendor/okjs/toolkit/editor/ok-live-component.ok.js +1 -1
  134. package/public/vendor/okjs/toolkit/editor/ok-live-example.ok.js +1 -1
  135. package/public/vendor/okjs/toolkit/editor/ok-live-shell.ok.js +1 -1
  136. package/public/vendor/okjs/toolkit/elements/ok-dropdown.ok.js +1 -1
  137. package/public/vendor/okjs/toolkit/elements/ok-icon.ok.js +1 -1
  138. package/public/vendor/okjs/toolkit/elements/ok-select.ok.js +1 -1
  139. package/public/vendor/okjs/toolkit/elements/ok-table.ok.js +1 -1
  140. package/public/vendor/okjs/toolkit/errors/ok-crash-boundary.ok.js +1 -1
  141. package/public/vendor/okjs/toolkit/errors/ok-crash-info.ok.js +1 -1
  142. package/public/vendor/okjs/toolkit/i18n/i18n-editor-examples.ok.js +1 -1
  143. package/public/vendor/okjs/toolkit/i18n/i18n-editor.ok.js +1 -1
  144. package/public/vendor/okjs/toolkit/i18n/i18n-key-editor-tips.ok.js +1 -1
  145. package/public/vendor/okjs/toolkit/i18n/i18n-key-editor.ok.js +1 -1
  146. package/public/vendor/okjs/toolkit/i18n/i18n-service.ok.js +1 -1
  147. package/public/vendor/okjs/toolkit/i18n/ok-i18n.js +1 -1
  148. package/public/vendor/okjs/toolkit/interaction/ok-contextmenu.ok.js +1 -1
  149. package/public/vendor/okjs/toolkit/interaction/ok-dismiss-service.ok.js +1 -1
  150. package/public/vendor/okjs/toolkit/interaction/ok-draggable.ok.js +1 -1
  151. package/public/vendor/okjs/toolkit/interaction/ok-flyover-panel.ok.js +1 -1
  152. package/public/vendor/okjs/toolkit/interaction/ok-flyover.ok.js +1 -1
  153. package/public/vendor/okjs/toolkit/interaction/ok-highlight-service.ok.js +1 -1
  154. package/public/vendor/okjs/toolkit/interaction/ok-highlight.ok.js +1 -1
  155. package/public/vendor/okjs/toolkit/interaction/ok-hotkeys-service.ok.js +1 -1
  156. package/public/vendor/okjs/toolkit/interaction/ok-picker-service.ok.js +1 -1
  157. package/public/vendor/okjs/toolkit/interaction/ok-popout-service.ok.js +1 -1
  158. package/public/vendor/okjs/toolkit/interaction/ok-popout.ok.js +1 -1
  159. package/public/vendor/okjs/toolkit/interaction/ok-portal-service.ok.js +1 -1
  160. package/public/vendor/okjs/toolkit/interaction/ok-submenu.ok.js +1 -1
  161. package/public/vendor/okjs/toolkit/layout/ok-resizer.ok.js +1 -1
  162. package/public/vendor/okjs/toolkit/manifest.js +1 -1
  163. package/public/vendor/okjs/toolkit/modals/ok-modal-service.ok.js +1 -1
  164. package/public/vendor/okjs/toolkit/modals/ok-modal.ok.js +1 -1
  165. package/public/vendor/okjs/toolkit/modals/ok-toast-service.ok.js +1 -1
  166. package/public/vendor/okjs/toolkit/modals/ok-window.ok.js +1 -1
  167. package/public/vendor/okjs/toolkit/navigation/hash-router.ok.js +1 -1
  168. package/public/vendor/okjs/toolkit/navigation/history-router.ok.js +1 -1
  169. package/public/vendor/okjs/toolkit/navigation/router.ok.js +1 -1
  170. package/public/vendor/okjs/toolkit/sync/reactive-sync-service.ok.js +1 -1
  171. package/public/vendor/okjs/toolkit/sync/reactive-sync.js +1 -1
  172. package/public/vendor/okjs/toolkit/theming/blocks/ok-design-button.css.js +1 -1
  173. package/public/vendor/okjs/toolkit/theming/blocks/ok-design-input.css.js +1 -1
  174. package/public/vendor/okjs/toolkit/theming/ok-design-style.js +1 -1
  175. package/public/vendor/okjs/toolkit/theming/ok-design-vars.js +1 -1
  176. package/public/vendor/okjs/toolkit/theming/ok-design.ok.js +1 -1
  177. package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-input.ok.js +1 -1
  178. package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-service.ok.js +1 -1
  179. package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-style.js +1 -1
  180. package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-utils.js +1 -1
  181. package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-variable.ok.js +1 -1
  182. package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-vm.js +1 -1
  183. package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor.ok.js +1 -1
  184. package/public/vendor/okjs/toolkit/theming/ok-theme.ok.js +1 -1
  185. package/public/view-models/type-query-vm.js +1 -1
  186. package/okdb-data/default/data.mdb +0 -0
  187. package/okdb-data/default/lock.mdb +0 -0
  188. package/okdb-data/~log/data.mdb +0 -0
  189. package/okdb-data/~log/lock.mdb +0 -0
  190. package/okdb-data/~system/data.mdb +0 -0
  191. package/okdb-data/~system/lock.mdb +0 -0
  192. package/public/images/logo.png +0 -0
  193. package/public/images/logo.svg +0 -333
@@ -1 +1 @@
1
- const _0x5c6739=_0xc20a;(function(_0x11267e,_0x2cae91){const _0x29e949=_0xc20a,_0x471fc8=_0x11267e();while(!![]){try{const _0x3a0c78=-parseInt(_0x29e949(0x130))/0x1+-parseInt(_0x29e949(0x12b))/0x2*(-parseInt(_0x29e949(0x140))/0x3)+parseInt(_0x29e949(0x156))/0x4*(-parseInt(_0x29e949(0x174))/0x5)+-parseInt(_0x29e949(0x124))/0x6*(-parseInt(_0x29e949(0x133))/0x7)+-parseInt(_0x29e949(0x161))/0x8+parseInt(_0x29e949(0x13b))/0x9*(parseInt(_0x29e949(0x16c))/0xa)+parseInt(_0x29e949(0x11a))/0xb;if(_0x3a0c78===_0x2cae91)break;else _0x471fc8['push'](_0x471fc8['shift']());}catch(_0x2bc452){_0x471fc8['push'](_0x471fc8['shift']());}}}(_0x3baf,0x2ed74));function _0x3baf(){const _0x536e90=['/violations/','status','slice','minimum','44HDsQsV','map','entries','$attr','all','apiBase','items≤','just\x20now','length','uniqueItems','len≤','1491792NcAPFy','schema','no_action','type','s\x20ago','exclusiveMaximum','message','violationCount','additionalProperties','type-schema-tab','split','390agCoLg','statusText','some','open','\x20|\x20','refViolationsBusy','minLength','const','143125VKerdT','errorCount','minItems','$ok','expandedViolation','_notifyViolationCount','function','/type/','round','schemaLoaded','definition','now','\x20props','enum(','schemaError','isArray','maxItems','shared','enum','len≥','items','3391883UUlmhG','violationsError','violationsBusy','items≥','envApiBase','catch','exclusiveMinimum','refViolations','expandedRefViolation','maxLength','972gJirCQ','onSchemaChanged','Failed\x20to\x20load\x20violations','<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/>','loadViolations','multipleOf','required','339926WseXIc','data','properties','push','m\x20ago','118962YUKADf','errors','Failed\x20to\x20load\x20ref\x20violations','973jKxkHQ','error','result','loadSchema','join','/schema','items:\x20','propertyEntries','71847Wuqjvj','\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','stringify','ref','maximum','3AOUxTa','json','schemaBusy','refViolationsError','onViewKey','loadRefViolations','unique','violations','$watch','ref\x20→\x20','description','onViolationCountChanged','h\x20ago','okdb','modal','format','toLocaleDateString','keys'];_0x3baf=function(){return _0x536e90;};return _0x3baf();}import _0x4ac158 from'@toolkit/elements/ok-icon.ok.js';import _0x69e117 from'../modals/schema-edit-modal.ok.js';function _0xc20a(_0xa8fcb6,_0x5c09b9){_0xa8fcb6=_0xa8fcb6-0x111;const _0x3baf3c=_0x3baf();let _0xc20ac4=_0x3baf3c[_0xa8fcb6];return _0xc20ac4;}export default{'tag':_0x5c6739(0x16a),'dependencies':[_0x4ac158,_0x69e117],'attr':{'type':{},'onViewKey':{},'onSchemaChanged':{},'onViolationCountChanged':{}},'context':_0x31aae2=>({'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 _0x3b02e2=_0x5c6739;return _0x31aae2[_0x3b02e2(0x159)][_0x3b02e2(0x164)];},get 'envApiBase'(){const _0x522a73=_0x5c6739;return _0x31aae2[_0x522a73(0x177)]['stores'][_0x522a73(0x14d)][_0x522a73(0x15b)];},get 'hasSchema'(){const _0x444dd6=_0x5c6739;return!!this['schema']?.[_0x444dd6(0x17e)];},get 'enforceMode'(){return this['schema']?.['enforce']??!0x1;},get 'definition'(){const _0x174c88=_0x5c6739;return this[_0x174c88(0x162)]?.[_0x174c88(0x17e)]??null;},get 'violationCount'(){const _0x367b38=_0x5c6739;return this['violations'][_0x367b38(0x15e)]+this[_0x367b38(0x121)][_0x367b38(0x15e)];},get 'hasRefs'(){const _0x467dda=_0x5c6739;return this[_0x467dda(0x13a)][_0x467dda(0x16e)](_0x3b4dbb=>_0x3b4dbb['hasRef']);},get 'propertyEntries'(){const _0x1162bf=_0x5c6739,_0x366031=this[_0x1162bf(0x17e)];if(!_0x366031?.[_0x1162bf(0x12d)])return[];const _0xa59d8d=new Set(_0x366031[_0x1162bf(0x12a)]||[]);return Object[_0x1162bf(0x158)](_0x366031[_0x1162bf(0x12d)])[_0x1162bf(0x157)](([_0x4dc8c0,_0x12810e])=>{const _0x2857fb=_0x1162bf,_0x368743=Array[_0x2857fb(0x114)](_0x12810e['type'])?_0x12810e['type'][_0x2857fb(0x137)](_0x2857fb(0x170)):_0x12810e[_0x2857fb(0x164)]||'—',_0x1c088a=[];_0x12810e[_0x2857fb(0x14f)]&&_0x1c088a[_0x2857fb(0x12e)](_0x12810e[_0x2857fb(0x14f)]),_0x12810e[_0x2857fb(0x117)]&&_0x1c088a['push'](_0x2857fb(0x112)+_0x12810e['enum']['length']+')'),void 0x0!==_0x12810e['const']&&_0x1c088a[_0x2857fb(0x12e)](_0x2857fb(0x173)),void 0x0!==_0x12810e['minimum']&&_0x1c088a['push']('≥'+_0x12810e[_0x2857fb(0x155)]),void 0x0!==_0x12810e[_0x2857fb(0x13f)]&&_0x1c088a[_0x2857fb(0x12e)]('≤'+_0x12810e['maximum']),void 0x0!==_0x12810e[_0x2857fb(0x120)]&&_0x1c088a['push']('>'+_0x12810e[_0x2857fb(0x120)]),void 0x0!==_0x12810e[_0x2857fb(0x166)]&&_0x1c088a[_0x2857fb(0x12e)]('<'+_0x12810e[_0x2857fb(0x166)]),void 0x0!==_0x12810e['multipleOf']&&_0x1c088a[_0x2857fb(0x12e)]('×'+_0x12810e[_0x2857fb(0x129)]),void 0x0!==_0x12810e[_0x2857fb(0x172)]&&_0x1c088a['push'](_0x2857fb(0x118)+_0x12810e['minLength']),void 0x0!==_0x12810e[_0x2857fb(0x123)]&&_0x1c088a[_0x2857fb(0x12e)](_0x2857fb(0x160)+_0x12810e['maxLength']),_0x12810e['pattern']&&_0x1c088a['push']('pattern'),void 0x0!==_0x12810e[_0x2857fb(0x176)]&&_0x1c088a[_0x2857fb(0x12e)](_0x2857fb(0x11d)+_0x12810e[_0x2857fb(0x176)]),void 0x0!==_0x12810e[_0x2857fb(0x115)]&&_0x1c088a[_0x2857fb(0x12e)](_0x2857fb(0x15c)+_0x12810e['maxItems']),_0x12810e[_0x2857fb(0x15f)]&&_0x1c088a[_0x2857fb(0x12e)](_0x2857fb(0x146)),_0x12810e[_0x2857fb(0x12d)]&&_0x1c088a[_0x2857fb(0x12e)](Object[_0x2857fb(0x151)](_0x12810e[_0x2857fb(0x12d)])['length']+_0x2857fb(0x111)),_0x12810e[_0x2857fb(0x119)]&&_0x1c088a['push'](_0x2857fb(0x139)+(_0x12810e['items'][_0x2857fb(0x164)]||'any'));const _0x488ce4=_0x12810e[_0x2857fb(0x13e)];if(_0x488ce4?.[_0x2857fb(0x164)]){const _0x3b243c=_0x488ce4['onDelete']||_0x2857fb(0x163);_0x1c088a[_0x2857fb(0x12e)](_0x2857fb(0x149)+_0x488ce4[_0x2857fb(0x164)]+'\x20('+_0x3b243c+')');}return{'name':_0x4dc8c0,'type':_0x368743,'required':_0xa59d8d['has'](_0x4dc8c0),'description':_0x12810e[_0x2857fb(0x14a)]||'','constraints':_0x1c088a[_0x2857fb(0x137)](',\x20'),'hasRef':!!_0x488ce4?.[_0x2857fb(0x164)],'refTarget':_0x488ce4?.[_0x2857fb(0x164)]||null};});},get 'additionalAllowed'(){const _0x455f55=_0x5c6739;return!0x1!==this[_0x455f55(0x17e)]?.[_0x455f55(0x169)];},get 'jsonPreview'(){const _0x5d84ec=_0x5c6739;if(!this[_0x5d84ec(0x17e)])return'';const _0x111d48=JSON[_0x5d84ec(0x13d)](this[_0x5d84ec(0x17e)],null,0x2),_0x159c06=_0x111d48[_0x5d84ec(0x16b)]('\x0a');return _0x159c06[_0x5d84ec(0x15e)]<=0x14?_0x111d48:_0x159c06[_0x5d84ec(0x154)](0x0,0x14)[_0x5d84ec(0x137)]('\x0a')+'\x0a\x20\x20…';},async 'loadSchema'(){const _0x1b79b4=_0x5c6739;if(this['type']){this[_0x1b79b4(0x142)]=!0x0,this[_0x1b79b4(0x113)]=null;try{const _0x4292dc=await fetch(this[_0x1b79b4(0x11e)]+_0x1b79b4(0x17b)+encodeURIComponent(this[_0x1b79b4(0x164)])+_0x1b79b4(0x138));if(0x194===_0x4292dc[_0x1b79b4(0x153)])this[_0x1b79b4(0x162)]=null;else{if(!_0x4292dc['ok']){const _0x54f2e1=await _0x4292dc[_0x1b79b4(0x141)]()['catch'](()=>({}));throw new Error(_0x54f2e1?.['error']?.['message']||_0x4292dc[_0x1b79b4(0x16d)]);}{const _0x14e045=await _0x4292dc[_0x1b79b4(0x141)]();this[_0x1b79b4(0x162)]=_0x14e045[_0x1b79b4(0x12c)]??_0x14e045['result']??_0x14e045;}}this[_0x1b79b4(0x17d)]=!0x0;}catch(_0x4c78dc){this[_0x1b79b4(0x113)]=_0x4c78dc[_0x1b79b4(0x167)]||'Failed\x20to\x20load\x20schema';}finally{this[_0x1b79b4(0x142)]=!0x1;}}},async 'loadViolations'(){const _0x3167ca=_0x5c6739;if(this[_0x3167ca(0x164)]){this[_0x3167ca(0x11c)]=!0x0,this[_0x3167ca(0x11b)]=null;try{const _0x2121c0=await fetch(this[_0x3167ca(0x11e)]+_0x3167ca(0x152)+encodeURIComponent(this[_0x3167ca(0x164)]));if(0x194===_0x2121c0[_0x3167ca(0x153)])return void(this[_0x3167ca(0x147)]=[]);if(!_0x2121c0['ok']){const _0x476a6d=await _0x2121c0[_0x3167ca(0x141)]()[_0x3167ca(0x11f)](()=>({}));throw new Error(_0x476a6d?.[_0x3167ca(0x134)]?.[_0x3167ca(0x167)]||_0x2121c0[_0x3167ca(0x16d)]);}const _0x212b58=await _0x2121c0[_0x3167ca(0x141)]();this[_0x3167ca(0x147)]=_0x212b58?.[_0x3167ca(0x12c)]?.[_0x3167ca(0x147)]??_0x212b58?.[_0x3167ca(0x135)]?.[_0x3167ca(0x147)]??[];}catch(_0x2d35e1){this[_0x3167ca(0x11b)]=_0x2d35e1['message']||_0x3167ca(0x126),this[_0x3167ca(0x147)]=[];}finally{this[_0x3167ca(0x11c)]=!0x1,this[_0x3167ca(0x179)]();}}},async 'loadRefViolations'(){const _0x2bfb09=_0x5c6739;if(this[_0x2bfb09(0x164)]){this[_0x2bfb09(0x171)]=!0x0,this[_0x2bfb09(0x143)]=null;try{const _0x497161=await fetch(this[_0x2bfb09(0x11e)]+'/ref-violations/'+encodeURIComponent(this[_0x2bfb09(0x164)]));if(0x194===_0x497161[_0x2bfb09(0x153)])return void(this[_0x2bfb09(0x121)]=[]);if(!_0x497161['ok']){const _0x3f3ab5=await _0x497161[_0x2bfb09(0x141)]()[_0x2bfb09(0x11f)](()=>({}));throw new Error(_0x3f3ab5?.['error']?.[_0x2bfb09(0x167)]||_0x497161[_0x2bfb09(0x16d)]);}const _0x30c767=await _0x497161[_0x2bfb09(0x141)]();this[_0x2bfb09(0x121)]=_0x30c767?.[_0x2bfb09(0x12c)]?.[_0x2bfb09(0x147)]??_0x30c767?.[_0x2bfb09(0x135)]?.[_0x2bfb09(0x147)]??[];}catch(_0x45a15c){this[_0x2bfb09(0x143)]=_0x45a15c[_0x2bfb09(0x167)]||_0x2bfb09(0x132),this[_0x2bfb09(0x121)]=[];}finally{this[_0x2bfb09(0x171)]=!0x1,this[_0x2bfb09(0x179)]();}}},'_notifyViolationCount'(){const _0x37a82d=_0x5c6739,_0x457e7c=_0x31aae2[_0x37a82d(0x159)][_0x37a82d(0x14b)];'function'==typeof _0x457e7c&&_0x457e7c(this[_0x37a82d(0x168)]);},'toggleViolation'(_0x324a94){const _0x390f7b=_0x5c6739;this['expandedViolation']=this[_0x390f7b(0x178)]===_0x324a94?null:_0x324a94;},'toggleRefViolation'(_0x3ded25){this['expandedRefViolation']=this['expandedRefViolation']===_0x3ded25?null:_0x3ded25;},'viewDocument'(_0x403ee0){const _0x1de7f6=_0x5c6739,_0x33757b=_0x31aae2['$attr'][_0x1de7f6(0x144)];_0x1de7f6(0x17a)==typeof _0x33757b&&_0x33757b(_0x403ee0);},'relTime'(_0x3bc90e){const _0x5e72ad=_0x5c6739;if(!_0x3bc90e)return'—';const _0x102950=Date[_0x5e72ad(0x17f)]()-_0x3bc90e;return _0x102950<0x1388?_0x5e72ad(0x15d):_0x102950<0xea60?Math[_0x5e72ad(0x17c)](_0x102950/0x3e8)+_0x5e72ad(0x165):_0x102950<0x36ee80?Math[_0x5e72ad(0x17c)](_0x102950/0xea60)+_0x5e72ad(0x12f):_0x102950<0x5265c00?Math[_0x5e72ad(0x17c)](_0x102950/0x36ee80)+_0x5e72ad(0x14c):new Date(_0x3bc90e)[_0x5e72ad(0x150)]();},'errorCount':_0x250b65=>(_0x250b65[_0x5c6739(0x131)]??[])[_0x5c6739(0x15e)]||(_0x250b65[_0x5c6739(0x175)]??0x0),async 'openEditModal'(){const _0x2981dc=_0x5c6739;await _0x31aae2[_0x2981dc(0x177)][_0x2981dc(0x116)][_0x2981dc(0x14e)][_0x2981dc(0x16f)]({'owner':_0x31aae2,'title':'Schema\x20·\x20'+this[_0x2981dc(0x164)],'canDrag':!0x0,'content':_0x2981dc(0x127),'context':_0x43373f=>({'modal':_0x43373f,'type':this[_0x2981dc(0x164)],'schema':this[_0x2981dc(0x162)],'envApiBase':this['envApiBase'],'onDone':async()=>{const _0x17aabf=_0x2981dc;await Promise['all']([this['loadSchema'](),this[_0x17aabf(0x128)](),this[_0x17aabf(0x145)]()]);const _0x22abb5=_0x31aae2['$attr'][_0x17aabf(0x125)];_0x17aabf(0x17a)==typeof _0x22abb5&&_0x22abb5();}})});}}),async 'init'(_0x480e3c){const _0x493163=_0x5c6739;_0x480e3c[_0x493163(0x148)](()=>this['type'],async()=>{const _0x585c83=_0x493163;this[_0x585c83(0x17d)]=!0x1,this['schema']=null,this['violations']=[],this[_0x585c83(0x178)]=null,this[_0x585c83(0x121)]=[],this[_0x585c83(0x122)]=null,this[_0x585c83(0x164)]&&await Promise[_0x585c83(0x15a)]([this[_0x585c83(0x136)](),this[_0x585c83(0x128)](),this[_0x585c83(0x145)]()]);}),this[_0x493163(0x164)]&&await Promise['all']([this['loadSchema'](),this['loadViolations'](),this['loadRefViolations']()]);},'template':'\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','style':_0x5c6739(0x13c)};
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'};