@kedem/okdb 1.0.1 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/okdb.js +1 -1
- package/keys/public.pem +3 -0
- package/okdb.js +1 -1
- package/package.json +2 -2
- package/public/admin-app.js +1 -1
- package/public/components/admin-route-host.ok.js +1 -1
- package/public/components/env-picker.ok.js +1 -1
- package/public/components/field-path-input.ok.js +1 -1
- package/public/components/geo-map.ok.js +1 -1
- package/public/components/ok-cron-input.ok.js +1 -1
- package/public/components/ok-dropzone.ok.js +1 -1
- package/public/components/ok-js-input.ok.js +1 -1
- package/public/components/ok-json-input.ok.js +1 -1
- package/public/components/ok-text-monaco-input.ok.js +1 -1
- package/public/components/theme-toggle.ok.js +1 -1
- package/public/login-app.js +1 -1
- package/public/modules/ok.js +1 -1
- package/public/sections/api/parts/api-endpoint.ok.js +1 -1
- package/public/sections/auth/modals/create-token-modal.ok.js +1 -1
- package/public/sections/auth/modals/edit-token-modal.ok.js +1 -1
- package/public/sections/auth/modals/perm-info-popover.ok.js +1 -1
- package/public/sections/auth/parts/token-detail.ok.js +1 -1
- package/public/sections/auth/parts/token-list.ok.js +1 -1
- package/public/sections/db/modals/add-item-modal.ok.js +1 -1
- package/public/sections/db/modals/create-env-modal.ok.js +1 -1
- package/public/sections/db/modals/create-fts-modal.ok.js +1 -1
- package/public/sections/db/modals/create-index-modal.ok.js +1 -1
- package/public/sections/db/modals/create-pipeline-modal.ok.js +1 -1
- package/public/sections/db/modals/demo-env-modal.ok.js +1 -1
- package/public/sections/db/modals/remove-env-modal.ok.js +1 -1
- package/public/sections/db/modals/schema-edit-modal.ok.js +1 -1
- package/public/sections/db/parts/db-overview.ok.js +1 -1
- package/public/sections/db/parts/db-pipelines-panel.ok.js +1 -1
- package/public/sections/db/parts/edit-row.ok.js +1 -1
- package/public/sections/db/parts/tm-timeline.ok.js +1 -1
- package/public/sections/db/parts/type-changelog.ok.js +1 -1
- package/public/sections/db/parts/type-list.ok.js +1 -1
- package/public/sections/db/parts/type-pipelines-tab.ok.js +1 -1
- package/public/sections/db/parts/type-schema-tab.ok.js +1 -1
- package/public/sections/db/parts/type-viewer.ok.js +1 -1
- package/public/sections/db/parts/type-violations-tab.ok.js +1 -1
- package/public/sections/embeddings/modals/register-model-modal.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-create-panel.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-embedder-panel.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-engine-declaration-editor.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-engine-list.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-indexer-panel.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-lifecycle-bar.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-model-catalog.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-overview.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-search-panel.ok.js +1 -1
- package/public/sections/embeddings/parts/embed-worker-panel.ok.js +1 -1
- package/public/sections/embeddings/parts/embeddings-engine-panel.ok.js +1 -1
- package/public/sections/embeddings/parts/engines-overview.ok.js +1 -1
- package/public/sections/embeddings/parts/pipeline-create-panel.ok.js +1 -1
- package/public/sections/engines/engine-panel-shared-style.js +1 -1
- package/public/sections/engines/engine-ui-utils.js +1 -1
- package/public/sections/engines/modals/engine-modal.ok.js +1 -1
- package/public/sections/engines/parts/engine-declaration-editor.ok.js +1 -1
- package/public/sections/engines/parts/engine-lifecycle-actions.ok.js +1 -1
- package/public/sections/engines/parts/engine-panel-shell.ok.js +1 -1
- package/public/sections/engines/parts/engine-resource-card.ok.js +1 -1
- package/public/sections/engines/parts/engine-row-item.ok.js +1 -1
- package/public/sections/engines/parts/generic-engine-panel.ok.js +1 -1
- package/public/sections/files/parts/files-blob-status.ok.js +1 -1
- package/public/sections/files/parts/files-collection-list.ok.js +1 -1
- package/public/sections/files/parts/files-collection-panel.ok.js +1 -1
- package/public/sections/files/parts/files-file-list.ok.js +1 -1
- package/public/sections/files/parts/files-overview.ok.js +1 -1
- package/public/sections/files/parts/files-path-browser.ok.js +1 -1
- package/public/sections/files/parts/files-upload-panel.ok.js +1 -1
- package/public/sections/functions/modals/function-modal.ok.js +1 -1
- package/public/sections/functions/parts/function-detail.ok.js +1 -1
- package/public/sections/functions/parts/function-logs.ok.js +1 -1
- package/public/sections/functions/parts/function-runner.ok.js +1 -1
- package/public/sections/functions/parts/functions-list.ok.js +1 -1
- package/public/sections/license/parts/license-panel.ok.js +1 -1
- package/public/sections/queue/modals/create-bucket-modal.ok.js +1 -1
- package/public/sections/queue/modals/edit-bucket-modal.ok.js +1 -1
- package/public/sections/queue/modals/edit-job-modal.ok.js +1 -1
- package/public/sections/queue/modals/enqueue-job-modal.ok.js +1 -1
- package/public/sections/queue/modals/job-type-modal.ok.js +1 -1
- package/public/sections/queue/parts/ok-job-form.ok.js +1 -1
- package/public/sections/queue/parts/queue-buckets.ok.js +1 -1
- package/public/sections/queue/parts/queue-job-types.ok.js +1 -1
- package/public/sections/queue/parts/queue-jobs.ok.js +1 -1
- package/public/sections/queue/parts/queue-types.ok.js +1 -1
- package/public/sections/queue/parts/queue-workers.ok.js +1 -1
- package/public/sections/sync/parts/sync-node-detail.ok.js +1 -1
- package/public/sections/sync/parts/sync-retention.ok.js +1 -1
- package/public/sections/sync/parts/sync-topology.ok.js +1 -1
- package/public/sections/system/modals/data-ops-modal.ok.js +1 -1
- package/public/sections/system/parts/system-api-panel.ok.js +1 -1
- package/public/sections/system/parts/system-auth-panel.ok.js +1 -1
- package/public/sections/system/parts/system-log-history.ok.js +1 -1
- package/public/sections/system/parts/system-log.ok.js +1 -1
- package/public/sections/system/parts/system-status.ok.js +1 -1
- package/public/sections/system/parts/system-sync-panel.ok.js +1 -1
- package/public/sections/views/modals/create-view-modal.ok.js +1 -1
- package/public/sections/views/parts/view-detail.ok.js +1 -1
- package/public/sections/views/parts/views-list.ok.js +1 -1
- package/public/sections/views/parts/views-overview.ok.js +1 -1
- package/public/setup-app.js +1 -1
- package/public/stores/auth-store.js +1 -1
- package/public/stores/events-store.js +1 -1
- package/public/stores/functions-store.js +1 -1
- package/public/stores/okdb-store.js +1 -1
- package/public/stores/theme-store.js +1 -1
- package/public/util/permissions.js +1 -1
- package/public/util/sift-schema.js +1 -1
- package/public/vendor/okjs/ok.esm.min.js +1 -2
- package/public/vendor/okjs/toolkit/behavior/async.ok.js +1 -1
- package/public/vendor/okjs/toolkit/components/ok-chart.ok.js +1 -1
- package/public/vendor/okjs/toolkit/components/ok-doc-viewer.ok.js +1 -1
- package/public/vendor/okjs/toolkit/components/ok-marked.ok.js +1 -1
- package/public/vendor/okjs/toolkit/components/ok-monaco.ok.js +1 -1
- package/public/vendor/okjs/toolkit/core/ok-layer-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/core/ok-layer.ok.js +1 -1
- package/public/vendor/okjs/toolkit/core/ok-overlay.ok.js +1 -1
- package/public/vendor/okjs/toolkit/core/ok-sandbox.ok.js +1 -1
- package/public/vendor/okjs/toolkit/core/transition.ok.js +1 -1
- package/public/vendor/okjs/toolkit/core/virtualized.ok.js +1 -1
- package/public/vendor/okjs/toolkit/devtools/ok-console-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/devtools/ok-console.ok.js +1 -1
- package/public/vendor/okjs/toolkit/devtools/ok-fps-monitor-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/devtools/ok-fps-monitor.ok.js +1 -1
- package/public/vendor/okjs/toolkit/devtools/ok-inspector-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/devtools/ok-inspector.ok.js +1 -1
- package/public/vendor/okjs/toolkit/devtools/ok-js-tree.ok.js +1 -1
- package/public/vendor/okjs/toolkit/devtools/ok-timeline-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/devtools/ok-timeline.ok.js +1 -1
- package/public/vendor/okjs/toolkit/docs/doc-viewer.ok.js +1 -1
- package/public/vendor/okjs/toolkit/editor/ok-live-component.ok.js +1 -1
- package/public/vendor/okjs/toolkit/editor/ok-live-example.ok.js +1 -1
- package/public/vendor/okjs/toolkit/editor/ok-live-shell.ok.js +1 -1
- package/public/vendor/okjs/toolkit/elements/ok-dropdown.ok.js +1 -1
- package/public/vendor/okjs/toolkit/elements/ok-icon.ok.js +1 -1
- package/public/vendor/okjs/toolkit/elements/ok-select.ok.js +1 -1
- package/public/vendor/okjs/toolkit/elements/ok-table.ok.js +1 -1
- package/public/vendor/okjs/toolkit/errors/ok-crash-boundary.ok.js +1 -1
- package/public/vendor/okjs/toolkit/errors/ok-crash-info.ok.js +1 -1
- package/public/vendor/okjs/toolkit/i18n/i18n-editor-examples.ok.js +1 -1
- package/public/vendor/okjs/toolkit/i18n/i18n-editor.ok.js +1 -1
- package/public/vendor/okjs/toolkit/i18n/i18n-key-editor-tips.ok.js +1 -1
- package/public/vendor/okjs/toolkit/i18n/i18n-key-editor.ok.js +1 -1
- package/public/vendor/okjs/toolkit/i18n/i18n-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/i18n/ok-i18n.js +1 -1
- package/public/vendor/okjs/toolkit/interaction/ok-contextmenu.ok.js +1 -1
- package/public/vendor/okjs/toolkit/interaction/ok-dismiss-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/interaction/ok-draggable.ok.js +1 -1
- package/public/vendor/okjs/toolkit/interaction/ok-flyover-panel.ok.js +1 -1
- package/public/vendor/okjs/toolkit/interaction/ok-flyover.ok.js +1 -1
- package/public/vendor/okjs/toolkit/interaction/ok-highlight-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/interaction/ok-highlight.ok.js +1 -1
- package/public/vendor/okjs/toolkit/interaction/ok-hotkeys-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/interaction/ok-picker-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/interaction/ok-popout-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/interaction/ok-popout.ok.js +1 -1
- package/public/vendor/okjs/toolkit/interaction/ok-portal-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/interaction/ok-submenu.ok.js +1 -1
- package/public/vendor/okjs/toolkit/layout/ok-resizer.ok.js +1 -1
- package/public/vendor/okjs/toolkit/manifest.js +1 -1
- package/public/vendor/okjs/toolkit/modals/ok-modal-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/modals/ok-modal.ok.js +1 -1
- package/public/vendor/okjs/toolkit/modals/ok-toast-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/modals/ok-window.ok.js +1 -1
- package/public/vendor/okjs/toolkit/navigation/hash-router.ok.js +1 -1
- package/public/vendor/okjs/toolkit/navigation/history-router.ok.js +1 -1
- package/public/vendor/okjs/toolkit/navigation/router.ok.js +1 -1
- package/public/vendor/okjs/toolkit/sync/reactive-sync-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/sync/reactive-sync.js +1 -1
- package/public/vendor/okjs/toolkit/theming/blocks/ok-design-button.css.js +1 -1
- package/public/vendor/okjs/toolkit/theming/blocks/ok-design-input.css.js +1 -1
- package/public/vendor/okjs/toolkit/theming/ok-design-style.js +1 -1
- package/public/vendor/okjs/toolkit/theming/ok-design-vars.js +1 -1
- package/public/vendor/okjs/toolkit/theming/ok-design.ok.js +1 -1
- package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-input.ok.js +1 -1
- package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-service.ok.js +1 -1
- package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-style.js +1 -1
- package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-utils.js +1 -1
- package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-variable.ok.js +1 -1
- package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor-vm.js +1 -1
- package/public/vendor/okjs/toolkit/theming/ok-theme-editor/ok-theme-editor.ok.js +1 -1
- package/public/vendor/okjs/toolkit/theming/ok-theme.ok.js +1 -1
- package/public/view-models/type-query-vm.js +1 -1
- package/okdb-data/default/data.mdb +0 -0
- package/okdb-data/default/lock.mdb +0 -0
- package/okdb-data/~log/data.mdb +0 -0
- package/okdb-data/~log/lock.mdb +0 -0
- package/okdb-data/~system/data.mdb +0 -0
- package/okdb-data/~system/lock.mdb +0 -0
- package/public/images/logo.png +0 -0
- package/public/images/logo.svg +0 -333
|
@@ -1 +1 @@
|
|
|
1
|
-
const _0x5f15ce=_0x3dca;function _0x19c4(){const _0x4e211b=['catch','additionalProps','key','676244sLZRMc','nullable','editDefinition','\x20more)','typesList','ref','const','Schema\x20removed','definition','string','isArray','_init','Schema\x20saved','shared','description','close','exclusiveMaximum','8rcSJkt','Inferring\x20from\x20','/types','items','5fGCTJT','parse','application/json','stringify','envApiBase','dirty','minItems','result','has','557082tNMrhU','name','mode','expanded','children','flat','status','maxItems','length','childrenAdditionalProps','loadTypesList','keys','schema-edit-modal','saveError','json','minLength','refType','entries','maxLength','types','onDelete','default','enforce','\x20documents…','297790gchXNC','26089525ubGBjM','includes','(item)','Property\x20\x22','$ok','value','\x22?\x20Validation\x20will\x20be\x20disabled.','trim','slice','statusText','required','info','exclusiveMinimum','newPropName','Schema\x20conflicts\x20with\x20existing\x20data','success','editEnforce','details','object','$attr','_extra','find','doc','\x0a<div\x20class=\x22sem-root\x22>\x0a\x0a\x20\x20<if\x20:=\x22saveBusy\x22>\x0a\x20\x20\x20\x20<ok-overlay>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22loader-center\x22><ok-icon\x20name=\x22loader\x22\x20class=\x22spin\x22\x20style=\x22width:32px;height:32px;\x22></ok-icon></div>\x0a\x20\x20\x20\x20</ok-overlay>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Toolbar\x20-->\x0a\x20\x20<div\x20class=\x22sem-toolbar\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22seg-toggle\x22>\x0a\x20\x20\x20\x20\x20\x20<button\x20:class=\x22mode\x20===\x20\x27visual\x27\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22switchToVisual()\x22>Visual</button>\x0a\x20\x20\x20\x20\x20\x20<button\x20:class=\x22mode\x20===\x20\x27json\x27\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22switchToJson()\x22>JSON</button>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<if\x20:=\x22!hideEnforce\x22>\x0a\x20\x20\x20\x20\x20\x20<label\x20style=\x22font-size:13px;\x20display:flex;\x20align-items:center;\x20gap:6px;\x20cursor:pointer;\x20user-select:none;\x20margin-left:16px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20:checked=\x22editEnforce\x22\x20@change=\x22setEditEnforce($event.target.checked)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20Enforce\x20mode\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:11px;\x20opacity:.4;\x22>(reject\x20writes\x20that\x20violate)</span>\x0a\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20<div\x20style=\x22margin-left:auto;\x20display:flex;\x20gap:8px;\x22>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22generateFromData()\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:11px;\x20padding:3px\x2010px;\x20opacity:.75;\x22\x20title=\x22Sample\x20latest\x20documents\x20to\x20build\x20a\x20schema\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22zap\x22></ok-icon>\x20Infer\x20from\x20data\x0a\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20═══════\x20Visual\x20mode\x20═══════\x20-->\x0a\x20\x20<if\x20:=\x22mode\x20===\x20\x27visual\x27\x22>\x0a\x20\x20<div\x20class=\x22sem-visual\x22>\x0a\x0a\x20\x20\x20\x20<!--\x20Properties\x20table\x20header\x20-->\x0a\x20\x20\x20\x20<div\x20class=\x22sem-props-hdr\x22>\x0a\x20\x20\x20\x20\x20\x20<div></div><div>Property</div><div>Type</div><div>Req</div><div>Null</div><div>Description</div><div></div>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<!--\x20Recursive\x20row\x20rendering\x20for\x20depth\x200\x20-->\x0a\x20\x20\x20\x20<each\x20:of=\x22rows\x22\x20let:item=\x22row\x22\x20let:index=\x22i\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20Main\x20property\x20row\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-props-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-expand-col\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22toggleRowExpanded(row)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20class=\x22sem-expand-btn\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22row.expanded\x20?\x20\x27sem-expanded\x27\x20:\x20\x27\x27\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Toggle\x20details\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>›</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-prop-name\x22><code>{{\x20row.name\x20}}</code></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20:value=\x22row.type\x22\x20@change=\x22setRowField(row,\x20\x27type\x27,\x20$event.target.value)\x22\x20style=\x22min-width:90px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22string\x22>string</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22number\x22>number</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22integer\x22>integer</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22boolean\x22>boolean</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22object\x22>object</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22array\x22>array</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22text-align:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20:checked=\x22row.required\x22\x20@change=\x22toggleRowRequired(row)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22text-align:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20:checked=\x22row.nullable\x22\x20@change=\x22toggleRowNullable(row)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22overflow:hidden;\x20min-width:0;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20:value=\x22row.description\x22\x20@input=\x22setRowField(row,\x20\x27description\x27,\x20$event.target.value)\x22\x20placeholder=\x22—\x22\x20style=\x22width:100%;\x20font-size:12px;\x20box-sizing:border-box;\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20justify-content:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22removeProperty(rows,\x20i)\x22\x20style=\x22color:var(--okdb-danger);\x20background:none;\x20border:none;\x20cursor:pointer;\x20padding:2px\x206px;\x20font-size:14px;\x20line-height:1;\x22\x20title=\x22Remove\x20property\x22>×</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20──\x20Expanded\x20detail\x20panel\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.expanded\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-detail-panel\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20──\x20String\x20constraints\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.type\x20===\x20\x27string\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-constraints-grid\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Format</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20:value=\x22row.format\x20||\x20\x27\x27\x22\x20@change=\x22setRowConstraint(row,\x20\x27format\x27,\x20$event.target.value)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22\x22>—</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22date-time\x22>date-time</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22date\x22>date</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22time\x22>time</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22email\x22>email</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22uri\x22>uri</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22uuid\x22>uuid</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22ipv4\x22>ipv4</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22ipv6\x22>ipv6</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22hostname\x22>hostname</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Min\x20Length</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20:value=\x22row.minLength\x20??\x20\x27\x27\x22\x20@input=\x22setRowConstraint(row,\x20\x27minLength\x27,\x20$event.target.value)\x22\x20min=\x220\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Max\x20Length</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20:value=\x22row.maxLength\x20??\x20\x27\x27\x22\x20@input=\x22setRowConstraint(row,\x20\x27maxLength\x27,\x20$event.target.value)\x22\x20min=\x220\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Pattern</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20:value=\x22row.pattern\x22\x20@input=\x22setRowConstraint(row,\x20\x27pattern\x27,\x20$event.target.value)\x22\x20placeholder=\x22regex…\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20──\x20Number\x20/\x20Integer\x20constraints\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.type\x20===\x20\x27number\x27\x20||\x20row.type\x20===\x20\x27integer\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-constraints-grid\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Minimum</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20:value=\x22row.minimum\x20??\x20\x27\x27\x22\x20@input=\x22setRowConstraint(row,\x20\x27minimum\x27,\x20$event.target.value)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Maximum</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20:value=\x22row.maximum\x20??\x20\x27\x27\x22\x20@input=\x22setRowConstraint(row,\x20\x27maximum\x27,\x20$event.target.value)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Excl.\x20Min</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20:value=\x22row.exclusiveMinimum\x20??\x20\x27\x27\x22\x20@input=\x22setRowConstraint(row,\x20\x27exclusiveMinimum\x27,\x20$event.target.value)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Excl.\x20Max</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20:value=\x22row.exclusiveMaximum\x20??\x20\x27\x27\x22\x20@input=\x22setRowConstraint(row,\x20\x27exclusiveMaximum\x27,\x20$event.target.value)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Multiple\x20Of</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20:value=\x22row.multipleOf\x20??\x20\x27\x27\x22\x20@input=\x22setRowConstraint(row,\x20\x27multipleOf\x27,\x20$event.target.value)\x22\x20min=\x220\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20──\x20Array\x20constraints\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.type\x20===\x20\x27array\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-constraints-grid\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Min\x20Items</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20:value=\x22row.minItems\x20??\x20\x27\x27\x22\x20@input=\x22setRowConstraint(row,\x20\x27minItems\x27,\x20$event.target.value)\x22\x20min=\x220\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Max\x20Items</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20:value=\x22row.maxItems\x20??\x20\x27\x27\x22\x20@input=\x22setRowConstraint(row,\x20\x27maxItems\x27,\x20$event.target.value)\x22\x20min=\x220\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Unique</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20style=\x22display:flex;\x20align-items:center;\x20gap:4px;\x20cursor:pointer;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20:checked=\x22row.uniqueItems\x22\x20@change=\x22setRowConstraint(row,\x20\x27uniqueItems\x27,\x20$event.target.checked)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20unique\x20items\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20──\x20Enum\x20(all\x20types)\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-constraint-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Enum</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20:value=\x22enumToString(row.enum)\x22\x20@change=\x22setRowConstraint(row,\x20\x27enum\x27,\x20$event.target.value)\x22\x20placeholder=\x22comma-separated\x20values…\x22\x20style=\x22flex:1;\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22sem-hint\x22>e.g.\x20active,\x20inactive,\x20pending</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20──\x20Foreign\x20Key\x20Reference\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.type\x20===\x20\x27string\x27\x20||\x20row.type\x20===\x20\x27integer\x27\x20||\x20row.type\x20===\x20\x27number\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-fk-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-fk-label\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22link\x22\x20style=\x22width:12px;\x20height:12px;\x20opacity:.6;\x22></ok-icon>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Foreign\x20Key\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-fk-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Target\x20type</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20:value=\x22row.refType\x20||\x20\x27\x27\x22\x20@change=\x22setRowRef(row,\x20\x27refType\x27,\x20$event.target.value)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22\x22>—\x20none\x20—</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22typesList\x22\x20let:item=\x22t\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20:value=\x22t\x22>{{\x20t\x20}}</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.refType\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>On\x20delete</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20:value=\x22row.refOnDelete\x20||\x20\x27no_action\x27\x22\x20@change=\x22setRowRef(row,\x20\x27refOnDelete\x27,\x20$event.target.value)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22no_action\x22>no\x20action</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22cascade\x22>cascade</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22set_null\x22>set\x20null</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22restrict\x22>restrict</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22clearRowRef(row)\x22\x20class=\x22sem-fk-clear\x22\x20title=\x22Remove\x20foreign\x20key\x22>×</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.refType\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-fk-hint\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20This\x20field\x20references\x20a\x20key\x20in\x20<strong>{{\x20row.refType\x20}}</strong>.\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.refOnDelete\x20===\x20\x27cascade\x27\x22>Deleting\x20the\x20target\x20will\x20delete\x20this\x20document.</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.refOnDelete\x20===\x20\x27set_null\x27\x22>Deleting\x20the\x20target\x20will\x20set\x20this\x20field\x20to\x20null.</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.refOnDelete\x20===\x20\x27restrict\x27\x22>Deleting\x20the\x20target\x20will\x20be\x20blocked\x20while\x20this\x20reference\x20exists.</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.refOnDelete\x20===\x20\x27no_action\x27\x22>Deleting\x20the\x20target\x20will\x20leave\x20this\x20field\x20as\x20a\x20dangling\x20reference.</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</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20──\x20Array\x20items\x20schema\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.type\x20===\x20\x27array\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-nested-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-nested-label\x22>Item\x20Schema</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.items\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-nested-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20:value=\x22row.items.type\x22\x20@change=\x22setRowField(row.items,\x20\x27type\x27,\x20$event.target.value)\x22\x20style=\x22min-width:90px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22string\x22>string</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22number\x22>number</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22integer\x22>integer</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22boolean\x22>boolean</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22object\x22>object</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22array\x22>array</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.items.type\x20===\x20\x27string\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20:value=\x22row.items.format\x20||\x20\x27\x27\x22\x20@change=\x22setRowConstraint(row.items,\x20\x27format\x27,\x20$event.target.value)\x22\x20title=\x22Format\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22\x22>no\x20format</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22date-time\x22>date-time</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22date\x22>date</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22email\x22>email</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22uri\x22>uri</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22uuid\x22>uuid</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20If\x20items\x20type\x20is\x20object,\x20show\x20nested\x20properties\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.items.type\x20===\x20\x27object\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-nested-children\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22row.items.children\x22\x20let:item=\x22child\x22\x20let:index=\x22ci\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-nested-child-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<code\x20class=\x22sem-child-name\x22>{{\x20child.name\x20}}</code>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20:value=\x22child.type\x22\x20@change=\x22setRowField(child,\x20\x27type\x27,\x20$event.target.value)\x22\x20style=\x22min-width:80px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22string\x22>string</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22number\x22>number</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22integer\x22>integer</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22boolean\x22>boolean</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22object\x22>object</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22array\x22>array</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20style=\x22font-size:11px;\x20display:flex;\x20align-items:center;\x20gap:3px;\x20cursor:pointer;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20:checked=\x22child.required\x22\x20@change=\x22toggleRowRequired(child)\x22\x20/>\x20req\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20style=\x22font-size:11px;\x20display:flex;\x20align-items:center;\x20gap:3px;\x20cursor:pointer;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20:checked=\x22child.nullable\x22\x20@change=\x22toggleRowNullable(child)\x22\x20/>\x20null\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22removeProperty(row.items.children,\x20ci)\x22\x20style=\x22color:var(--okdb-danger);\x20background:none;\x20border:none;\x20cursor:pointer;\x20font-size:13px;\x22>×</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-add-child-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20:value=\x22_newChildNames[\x27items_\x27\x20+\x20row.name]\x20||\x20\x27\x27\x22\x20@input=\x22_newChildNames[\x27items_\x27\x20+\x20row.name]\x20=\x20$event.target.value\x22\x20@keydown.enter=\x22addChildProperty(row.items,\x20\x27items_\x27\x20+\x20row.name)\x22\x20placeholder=\x22Add\x20item\x20property…\x22\x20style=\x22flex:1;\x20font-size:11px;\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22addChildProperty(row.items,\x20\x27items_\x27\x20+\x20row.name)\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:10px;\x20padding:2px\x208px;\x22>+</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20──\x20Nested\x20object\x20properties\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.type\x20===\x20\x27object\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-nested-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-nested-label\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Properties\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20style=\x22font-size:11px;\x20display:flex;\x20align-items:center;\x20gap:4px;\x20cursor:pointer;\x20margin-left:auto;\x20font-weight:normal;\x20opacity:.6;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20:checked=\x22row.childrenAdditionalProps\x22\x20@change=\x22setChildrenAdditionalProps(row,\x20$event.target.checked)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20allow\x20additional\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-nested-children\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22row.children\x22\x20let:item=\x22child\x22\x20let:index=\x22ci\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-nested-child-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<code\x20class=\x22sem-child-name\x22>{{\x20child.name\x20}}</code>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20:value=\x22child.type\x22\x20@change=\x22setRowField(child,\x20\x27type\x27,\x20$event.target.value)\x22\x20style=\x22min-width:80px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22string\x22>string</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22number\x22>number</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22integer\x22>integer</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22boolean\x22>boolean</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22object\x22>object</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22array\x22>array</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20style=\x22font-size:11px;\x20display:flex;\x20align-items:center;\x20gap:3px;\x20cursor:pointer;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20:checked=\x22child.required\x22\x20@change=\x22toggleRowRequired(child)\x22\x20/>\x20req\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20style=\x22font-size:11px;\x20display:flex;\x20align-items:center;\x20gap:3px;\x20cursor:pointer;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20:checked=\x22child.nullable\x22\x20@change=\x22toggleRowNullable(child)\x22\x20/>\x20null\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20:value=\x22child.description\x22\x20@input=\x22setRowField(child,\x20\x27description\x27,\x20$event.target.value)\x22\x20placeholder=\x22desc\x22\x20style=\x22flex:1;\x20font-size:11px;\x20min-width:60px;\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22removeProperty(row.children,\x20ci)\x22\x20style=\x22color:var(--okdb-danger);\x20background:none;\x20border:none;\x20cursor:pointer;\x20font-size:13px;\x22>×</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x202nd-level\x20nested:\x20show\x20sub-properties\x20for\x20object\x20children\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22child.type\x20===\x20\x27object\x27\x20&&\x20child.children.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-nested-l2\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22child.children\x22\x20let:item=\x22gc\x22\x20let:index=\x22gci\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-nested-child-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<code\x20class=\x22sem-child-name\x22\x20style=\x22font-size:10px;\x22>{{\x20gc.name\x20}}</code>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20:value=\x22gc.type\x22\x20@change=\x22setRowField(gc,\x20\x27type\x27,\x20$event.target.value)\x22\x20style=\x22min-width:70px;\x20font-size:11px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22string\x22>string</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22number\x22>number</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22integer\x22>integer</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22boolean\x22>boolean</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22object\x22>object</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22array\x22>array</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20style=\x22font-size:10px;\x20display:flex;\x20align-items:center;\x20gap:2px;\x20cursor:pointer;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20:checked=\x22gc.required\x22\x20@change=\x22toggleRowRequired(gc)\x22\x20/>\x20req\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22removeProperty(child.children,\x20gci)\x22\x20style=\x22color:var(--okdb-danger);\x20background:none;\x20border:none;\x20cursor:pointer;\x20font-size:12px;\x22>×</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-add-child-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20:value=\x22_newChildNames[\x27l2_\x27\x20+\x20row.name\x20+\x20\x27.\x27\x20+\x20child.name]\x20||\x20\x27\x27\x22\x20@input=\x22_newChildNames[\x27l2_\x27\x20+\x20row.name\x20+\x20\x27.\x27\x20+\x20child.name]\x20=\x20$event.target.value\x22\x20@keydown.enter=\x22addChildProperty(child,\x20\x27l2_\x27\x20+\x20row.name\x20+\x20\x27.\x27\x20+\x20child.name)\x22\x20placeholder=\x22Add\x20sub-property…\x22\x20style=\x22flex:1;\x20font-size:10px;\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22addChildProperty(child,\x20\x27l2_\x27\x20+\x20row.name\x20+\x20\x27.\x27\x20+\x20child.name)\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:10px;\x20padding:2px\x206px;\x22>+</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22child.type\x20===\x20\x27object\x27\x20&&\x20child.children.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-add-child-row\x22\x20style=\x22margin-left:24px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20:value=\x22_newChildNames[\x27l2_\x27\x20+\x20row.name\x20+\x20\x27.\x27\x20+\x20child.name]\x20||\x20\x27\x27\x22\x20@input=\x22_newChildNames[\x27l2_\x27\x20+\x20row.name\x20+\x20\x27.\x27\x20+\x20child.name]\x20=\x20$event.target.value\x22\x20@keydown.enter=\x22addChildProperty(child,\x20\x27l2_\x27\x20+\x20row.name\x20+\x20\x27.\x27\x20+\x20child.name)\x22\x20placeholder=\x22Add\x20sub-property…\x22\x20style=\x22flex:1;\x20font-size:10px;\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22addChildProperty(child,\x20\x27l2_\x27\x20+\x20row.name\x20+\x20\x27.\x27\x20+\x20child.name)\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:10px;\x20padding:2px\x206px;\x22>+</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-add-child-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20:value=\x22_newChildNames[\x27obj_\x27\x20+\x20row.name]\x20||\x20\x27\x27\x22\x20@input=\x22_newChildNames[\x27obj_\x27\x20+\x20row.name]\x20=\x20$event.target.value\x22\x20@keydown.enter=\x22addChildProperty(row,\x20\x27obj_\x27\x20+\x20row.name)\x22\x20placeholder=\x22Add\x20property…\x22\x20style=\x22flex:1;\x20font-size:11px;\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22addChildProperty(row,\x20\x27obj_\x27\x20+\x20row.name)\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:10px;\x20padding:2px\x208px;\x22>+</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20</each>\x0a\x0a\x20\x20\x20\x20<if\x20:=\x22rows.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:16px\x200;\x20opacity:.4;\x20font-size:13px;\x22>No\x20properties\x20defined\x20yet.\x20Add\x20one\x20below.</div>\x0a\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20<!--\x20Add\x20property\x20-->\x0a\x20\x20\x20\x20<div\x20class=\x22sem-add-row\x22>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20:value=\x22newPropName\x22\x20@input=\x22newPropName\x20=\x20$event.target.value\x22\x20@keydown.enter=\x22addProperty()\x22\x20placeholder=\x22New\x20property\x20name…\x22\x20style=\x22flex:1;\x20min-width:140px;\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22addProperty()\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:12px;\x20padding:3px\x2012px;\x22\x20:disabled=\x22!newPropName.trim()\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22plus\x22></ok-icon>Add\x0a\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<!--\x20Additional\x20properties\x20toggle\x20-->\x0a\x20\x20\x20\x20<label\x20style=\x22font-size:12px;\x20display:flex;\x20align-items:center;\x20gap:6px;\x20cursor:pointer;\x20user-select:none;\x20padding:8px\x200\x200;\x22>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20:checked=\x22additionalProps\x22\x20@change=\x22setAdditionalProps($event.target.checked)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20Allow\x20additional\x20properties\x0a\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:11px;\x20opacity:.4;\x22>(fields\x20not\x20listed\x20above)</span>\x0a\x20\x20\x20\x20</label>\x0a\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20═══════\x20JSON\x20mode\x20═══════\x20-->\x0a\x20\x20<if\x20:=\x22mode\x20===\x20\x27json\x27\x22>\x0a\x20\x20<div\x20class=\x22sem-json\x22>\x0a\x20\x20\x20\x20<ok-json-input\x0a\x20\x20\x20\x20\x20\x20:value=\x22editDefinition\x22\x0a\x20\x20\x20\x20\x20\x20@change=\x22setEditDefinition($event.detail)\x22\x0a\x20\x20\x20\x20\x20\x20style=\x22min-height:300px;\x20flex:1;\x20width:100%;\x22>\x0a\x20\x20\x20\x20</ok-json-input>\x0a\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Save\x20error\x20-->\x0a\x20\x20<if\x20:=\x22saveError\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22sem-error\x22>{{\x20saveError\x20}}</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Actions\x20-->\x0a\x20\x20<div\x20class=\x22sem-actions\x22>\x0a\x20\x20\x20\x20<button\x20@click=\x22cancel()\x22\x20style=\x22opacity:.7;\x22>Cancel</button>\x0a\x20\x20\x20\x20<if\x20:=\x22hasSchema\x22>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22remove()\x22\x20class=\x22btn-icon\x22\x20style=\x22color:var(--okdb-danger);\x20opacity:.8;\x20font-size:12px;\x20padding:5px\x2012px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22trash-2\x22></ok-icon>Remove\x20schema\x0a\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20<button\x20@click=\x22save()\x22\x20:disabled=\x22saveBusy\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:12px;\x20padding:5px\x2014px;\x20margin-left:auto;\x22>\x0a\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22save\x22></ok-icon>\x0a\x20\x20\x20\x20\x20\x20{{\x20hasSchema\x20?\x20\x27Update\x20Schema\x27\x20:\x20\x27Set\x20Schema\x27\x20}}\x0a\x20\x20\x20\x20</button>\x0a\x20\x20</div>\x0a</div>\x0a','pattern','join','no_action','uniqueItems','filter','$defs','74332sFmvet','minimum','enum','/type/','$ref','map','type','visual','null','format','push','toast','modal','\x22\x20already\x20exists','18ytScTs','samplesUrl','1379313wPRKXr','properties','saveUrl','PUT','77IbOMiZ','array','refOnDelete','startsWith','additionalProperties','schema','splice','POST','multipleOf','maximum','some','confirm','saveBusy','failures','message','\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-root\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-direction:\x20column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20min-width:\x20640px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20max-width:\x20960px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20position:\x20relative;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-toolbar\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-wrap:\x20wrap;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-visual\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-direction:\x20column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20max-height:\x2060vh;\x0a\x20\x20\x20\x20\x20\x20\x20\x20overflow:\x20auto;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-props-hdr\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20grid;\x0a\x20\x20\x20\x20\x20\x20\x20\x20grid-template-columns:\x2028px\x20minmax(100px,\x201.5fr)\x20110px\x2036px\x2036px\x201fr\x2032px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x200\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x200\x200\x206px;\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-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.4;\x0a\x20\x20\x20\x20\x20\x20\x20\x20text-transform:\x20uppercase;\x0a\x20\x20\x20\x20\x20\x20\x20\x20letter-spacing:\x20.04em;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-props-row\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20grid;\x0a\x20\x20\x20\x20\x20\x20\x20\x20grid-template-columns:\x2028px\x20minmax(100px,\x201.5fr)\x20110px\x2036px\x2036px\x201fr\x2032px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x200\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\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}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-expand-col\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\x20justify-content:\x20center;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-expand-btn\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20none;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x20none;\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-app-fg-muted);\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2016px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20cursor:\x20pointer;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x200\x204px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20transition:\x20transform\x20.15s;\x0a\x20\x20\x20\x20\x20\x20\x20\x20line-height:\x201;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.5;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-expand-btn:hover\x20{\x20opacity:\x201;\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-expand-btn.sem-expanded\x20{\x20transform:\x20rotate(90deg);\x20opacity:\x20.8;\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-prop-name\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20overflow:\x20hidden;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-prop-name\x20code\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-json-key);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20/*\x20──\x20Detail\x20/\x20constraints\x20panel\x20──\x20*/\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-detail-panel\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x208px\x2012px\x2012px\x2036px;\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:\x2010px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-constraints-grid\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20grid;\x0a\x20\x20\x20\x20\x20\x20\x20\x20grid-template-columns:\x2080px\x201fr\x2080px\x201fr;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x206px\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-constraints-grid\x20label\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.55;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20white-space:\x20nowrap;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-constraints-grid\x20input,\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-constraints-grid\x20select\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x203px\x206px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-constraint-row\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-constraint-row\x20label\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.55;\x0a\x20\x20\x20\x20\x20\x20\x20\x20white-space:\x20nowrap;\x0a\x20\x20\x20\x20\x20\x20\x20\x20min-width:\x2040px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-hint\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.35;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20white-space:\x20nowrap;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20/*\x20──\x20Nested\x20object/array\x20section\x20──\x20*/\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-nested-section\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-left:\x202px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding-left:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20margin-top:\x202px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-nested-label\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-weight:\x20600;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.6;\x0a\x20\x20\x20\x20\x20\x20\x20\x20text-transform:\x20uppercase;\x0a\x20\x20\x20\x20\x20\x20\x20\x20letter-spacing:\x20.04em;\x0a\x20\x20\x20\x20\x20\x20\x20\x20margin-bottom:\x206px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x208px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-nested-row\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20margin-bottom:\x206px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-nested-children\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-direction:\x20column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x200;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-nested-child-row\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x204px\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x201px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-app-border)\x2040%,\x20transparent);\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-child-name\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-purple);\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-family:\x20monospace;\x0a\x20\x20\x20\x20\x20\x20\x20\x20min-width:\x2060px;\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\x20schema-edit-modal\x20.sem-nested-l2\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20margin-left:\x2024px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-left:\x201px\x20solid\x20var(--okdb-app-border)66;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding-left:\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20margin-bottom:\x204px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-add-child-row\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x206px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x204px\x200;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-add-row\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2010px\x200\x200;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20/*\x20──\x20Foreign\x20key\x20section\x20──\x20*/\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-fk-section\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20#6366f133;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x206px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x208px\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20#6366f108;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-fk-label\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-weight:\x20600;\x0a\x20\x20\x20\x20\x20\x20\x20\x20text-transform:\x20uppercase;\x0a\x20\x20\x20\x20\x20\x20\x20\x20letter-spacing:\x20.04em;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.7;\x0a\x20\x20\x20\x20\x20\x20\x20\x20margin-bottom:\x206px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x205px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-indigo);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-fk-row\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-fk-row\x20label\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.55;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20white-space:\x20nowrap;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-fk-row\x20select\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x203px\x206px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20min-width:\x20100px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-fk-clear\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20none;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x20none;\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-danger);\x0a\x20\x20\x20\x20\x20\x20\x20\x20cursor:\x20pointer;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2014px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x202px\x206px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20line-height:\x201;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.7;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-fk-clear:hover\x20{\x20opacity:\x201;\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-fk-hint\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.5;\x0a\x20\x20\x20\x20\x20\x20\x20\x20margin-top:\x205px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20line-height:\x201.4;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-fk-hint\x20strong\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-indigo);\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x201;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-json\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-direction:\x20column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20min-height:\x20300px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-error\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-danger);\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x208px\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-danger)\x2020%,\x20transparent);\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20color-mix(in\x20srgb,\x20var(--okdb-danger)\x204%,\x20transparent);\x0a\x20\x20\x20\x20\x20\x20\x20\x20white-space:\x20pre-wrap;\x0a\x20\x20\x20\x20\x20\x20\x20\x20line-height:\x201.5;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-actions\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding-top:\x204px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-top:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20','_newChildNames','No\x20documents\x20found\x20to\x20infer\x20schema\x20from.','hideEnforce','rows','payload','data','error','Failed\x20to\x20fetch\x20data','Failed\x20to\x20fetch\x20samples','Save\x20failed','370182vclZnU','onDone'];_0x19c4=function(){return _0x4e211b;};return _0x19c4();}(function(_0x283873,_0x1098dc){const _0x1db3ce=_0x3dca,_0x299afb=_0x283873();while(!![]){try{const _0x753d9b=parseInt(_0x1db3ce(0x22d))/0x1*(-parseInt(_0x1db3ce(0x23b))/0x2)+-parseInt(_0x1db3ce(0x23d))/0x3+parseInt(_0x1db3ce(0x1d8))/0x4*(-parseInt(_0x1db3ce(0x1ed))/0x5)+-parseInt(_0x1db3ce(0x1d3))/0x6*(parseInt(_0x1db3ce(0x241))/0x7)+parseInt(_0x1db3ce(0x1e9))/0x8*(-parseInt(_0x1db3ce(0x1f6))/0x9)+parseInt(_0x1db3ce(0x20e))/0xa+parseInt(_0x1db3ce(0x20f))/0xb;if(_0x753d9b===_0x1098dc)break;else _0x299afb['push'](_0x299afb['shift']());}catch(_0x32ea2f){_0x299afb['push'](_0x299afb['shift']());}}}(_0x19c4,0x58aa1));import _0x124042 from'@toolkit/elements/ok-icon.ok.js';import _0x16c28b from'@toolkit/core/ok-overlay.ok.js';import _0x204797 from'../../../components/ok-json-input.ok.js';function i(_0x329d7a){const _0x7e6304=_0x3dca;return null==_0x329d7a?_0x329d7a:JSON[_0x7e6304(0x1ee)](JSON['stringify'](_0x329d7a));}function _0x3dca(_0x8cc0d8,_0x4907ce){_0x8cc0d8=_0x8cc0d8-0x1c3;const _0x19c468=_0x19c4();let _0x3dcade=_0x19c468[_0x8cc0d8];return _0x3dcade;}function o(_0x22bcd3='',_0x5225bd=_0x5f15ce(0x1e1)){return{'name':_0x22bcd3,'type':_0x5225bd,'nullable':!0x1,'required':!0x1,'description':'','enum':null,'const':null,'format':'','minimum':null,'maximum':null,'exclusiveMinimum':null,'exclusiveMaximum':null,'multipleOf':null,'minLength':null,'maxLength':null,'pattern':'','minItems':null,'maxItems':null,'uniqueItems':!0x1,'refType':'','refOnDelete':'no_action','children':[],'childrenAdditionalProps':!0x0,'items':null,'expanded':!0x1,'_extra':{}};}function a(_0x5de97a,_0x569c36,_0x2f76b3,_0x34aa52=0x0){const _0x52fc60=_0x5f15ce,_0x469c76=_0x569c36['type'];let _0x1ed7eb,_0x39a366=!0x1;Array[_0x52fc60(0x1e2)](_0x469c76)?(_0x39a366=_0x469c76[_0x52fc60(0x210)](_0x52fc60(0x235)),_0x1ed7eb=_0x469c76[_0x52fc60(0x224)](_0x65fb45=>_0x52fc60(0x235)!==_0x65fb45)||'string'):_0x1ed7eb=_0x469c76||'string';const _0x1731d4=o(_0x5de97a,_0x1ed7eb);if(_0x1731d4[_0x52fc60(0x1d9)]=_0x39a366,_0x1731d4[_0x52fc60(0x219)]=_0x2f76b3,_0x1731d4[_0x52fc60(0x1e6)]=_0x569c36['description']||'',Array[_0x52fc60(0x1e2)](_0x569c36[_0x52fc60(0x22f)])&&(_0x1731d4[_0x52fc60(0x22f)]=_0x569c36[_0x52fc60(0x22f)]),void 0x0!==_0x569c36[_0x52fc60(0x1de)]&&(_0x1731d4['const']={'value':_0x569c36[_0x52fc60(0x1de)]}),_0x569c36[_0x52fc60(0x236)]&&(_0x1731d4['format']=_0x569c36['format']),void 0x0!==_0x569c36[_0x52fc60(0x22e)]&&(_0x1731d4[_0x52fc60(0x22e)]=_0x569c36[_0x52fc60(0x22e)]),void 0x0!==_0x569c36['maximum']&&(_0x1731d4['maximum']=_0x569c36[_0x52fc60(0x24a)]),void 0x0!==_0x569c36[_0x52fc60(0x21b)]&&(_0x1731d4[_0x52fc60(0x21b)]=_0x569c36[_0x52fc60(0x21b)]),void 0x0!==_0x569c36[_0x52fc60(0x1e8)]&&(_0x1731d4[_0x52fc60(0x1e8)]=_0x569c36['exclusiveMaximum']),void 0x0!==_0x569c36['multipleOf']&&(_0x1731d4[_0x52fc60(0x249)]=_0x569c36[_0x52fc60(0x249)]),void 0x0!==_0x569c36[_0x52fc60(0x205)]&&(_0x1731d4[_0x52fc60(0x205)]=_0x569c36[_0x52fc60(0x205)]),void 0x0!==_0x569c36[_0x52fc60(0x208)]&&(_0x1731d4['maxLength']=_0x569c36['maxLength']),_0x569c36[_0x52fc60(0x227)]&&(_0x1731d4[_0x52fc60(0x227)]=_0x569c36[_0x52fc60(0x227)]),void 0x0!==_0x569c36['minItems']&&(_0x1731d4[_0x52fc60(0x1f3)]=_0x569c36[_0x52fc60(0x1f3)]),void 0x0!==_0x569c36['maxItems']&&(_0x1731d4[_0x52fc60(0x1fd)]=_0x569c36['maxItems']),!0x0===_0x569c36[_0x52fc60(0x22a)]&&(_0x1731d4[_0x52fc60(0x22a)]=!0x0),_0x569c36[_0x52fc60(0x1dd)]&&_0x52fc60(0x221)==typeof _0x569c36['ref']&&_0x569c36[_0x52fc60(0x1dd)][_0x52fc60(0x233)]&&(_0x1731d4[_0x52fc60(0x206)]=_0x569c36[_0x52fc60(0x1dd)]['type'],_0x1731d4[_0x52fc60(0x243)]=_0x569c36[_0x52fc60(0x1dd)][_0x52fc60(0x20a)]||_0x52fc60(0x229)),'object'===_0x1ed7eb&&_0x569c36[_0x52fc60(0x23e)]&&_0x34aa52<0x4){const _0x1d522b=new Set(_0x569c36['required']||[]);_0x1731d4['children']=Object['entries'](_0x569c36[_0x52fc60(0x23e)])[_0x52fc60(0x232)](([_0x35e5ff,_0x370452])=>a(_0x35e5ff,_0x370452,_0x1d522b['has'](_0x35e5ff),_0x34aa52+0x1)),_0x1731d4[_0x52fc60(0x1ff)]=!0x1!==_0x569c36[_0x52fc60(0x245)];}_0x52fc60(0x242)===_0x1ed7eb&&_0x569c36[_0x52fc60(0x1ec)]&&_0x52fc60(0x221)==typeof _0x569c36['items']&&_0x34aa52<0x4&&(_0x1731d4[_0x52fc60(0x1ec)]=a(_0x52fc60(0x211),_0x569c36[_0x52fc60(0x1ec)],!0x1,_0x34aa52+0x1));const _0x579d50=new Set([_0x52fc60(0x233),_0x52fc60(0x1e6),'enum',_0x52fc60(0x1de),_0x52fc60(0x236),_0x52fc60(0x22e),'maximum',_0x52fc60(0x21b),_0x52fc60(0x1e8),_0x52fc60(0x249),_0x52fc60(0x205),_0x52fc60(0x208),_0x52fc60(0x227),_0x52fc60(0x1f3),_0x52fc60(0x1fd),'uniqueItems',_0x52fc60(0x23e),_0x52fc60(0x219),_0x52fc60(0x245),_0x52fc60(0x1ec),_0x52fc60(0x20b),_0x52fc60(0x231),_0x52fc60(0x22c),_0x52fc60(0x1dd)]);for(const _0x446c2e of Object[_0x52fc60(0x201)](_0x569c36))_0x579d50['has'](_0x446c2e)||(_0x1731d4[_0x52fc60(0x223)][_0x446c2e]=i(_0x569c36[_0x446c2e]));return _0x1731d4;}function r(_0x2aac8e){const _0x192ab8=_0x5f15ce,_0xb7ae69={};if(_0x2aac8e[_0x192ab8(0x1d9)]&&_0x192ab8(0x235)!==_0x2aac8e[_0x192ab8(0x233)]?_0xb7ae69[_0x192ab8(0x233)]=[_0x2aac8e['type'],_0x192ab8(0x235)]:_0xb7ae69[_0x192ab8(0x233)]=_0x2aac8e[_0x192ab8(0x233)],_0x2aac8e[_0x192ab8(0x1e6)]&&(_0xb7ae69[_0x192ab8(0x1e6)]=_0x2aac8e[_0x192ab8(0x1e6)]),_0x2aac8e[_0x192ab8(0x22f)]&&_0x2aac8e['enum'][_0x192ab8(0x1fe)]>0x0&&(_0xb7ae69[_0x192ab8(0x22f)]=_0x2aac8e[_0x192ab8(0x22f)]),null!==_0x2aac8e[_0x192ab8(0x1de)]&&void 0x0!==_0x2aac8e['const']&&(_0xb7ae69[_0x192ab8(0x1de)]=_0x2aac8e[_0x192ab8(0x1de)]['value']),_0x2aac8e[_0x192ab8(0x236)]&&(_0xb7ae69[_0x192ab8(0x236)]=_0x2aac8e[_0x192ab8(0x236)]),null!==_0x2aac8e[_0x192ab8(0x22e)]&&void 0x0!==_0x2aac8e[_0x192ab8(0x22e)]&&(_0xb7ae69['minimum']=_0x2aac8e['minimum']),null!==_0x2aac8e[_0x192ab8(0x24a)]&&void 0x0!==_0x2aac8e['maximum']&&(_0xb7ae69[_0x192ab8(0x24a)]=_0x2aac8e['maximum']),null!==_0x2aac8e[_0x192ab8(0x21b)]&&void 0x0!==_0x2aac8e['exclusiveMinimum']&&(_0xb7ae69[_0x192ab8(0x21b)]=_0x2aac8e[_0x192ab8(0x21b)]),null!==_0x2aac8e[_0x192ab8(0x1e8)]&&void 0x0!==_0x2aac8e[_0x192ab8(0x1e8)]&&(_0xb7ae69['exclusiveMaximum']=_0x2aac8e[_0x192ab8(0x1e8)]),null!==_0x2aac8e[_0x192ab8(0x249)]&&void 0x0!==_0x2aac8e['multipleOf']&&(_0xb7ae69['multipleOf']=_0x2aac8e['multipleOf']),null!==_0x2aac8e[_0x192ab8(0x205)]&&void 0x0!==_0x2aac8e['minLength']&&(_0xb7ae69[_0x192ab8(0x205)]=_0x2aac8e[_0x192ab8(0x205)]),null!==_0x2aac8e[_0x192ab8(0x208)]&&void 0x0!==_0x2aac8e['maxLength']&&(_0xb7ae69[_0x192ab8(0x208)]=_0x2aac8e['maxLength']),_0x2aac8e[_0x192ab8(0x227)]&&(_0xb7ae69[_0x192ab8(0x227)]=_0x2aac8e[_0x192ab8(0x227)]),null!==_0x2aac8e['minItems']&&void 0x0!==_0x2aac8e[_0x192ab8(0x1f3)]&&(_0xb7ae69[_0x192ab8(0x1f3)]=_0x2aac8e[_0x192ab8(0x1f3)]),null!==_0x2aac8e[_0x192ab8(0x1fd)]&&void 0x0!==_0x2aac8e[_0x192ab8(0x1fd)]&&(_0xb7ae69[_0x192ab8(0x1fd)]=_0x2aac8e[_0x192ab8(0x1fd)]),_0x2aac8e[_0x192ab8(0x22a)]&&(_0xb7ae69[_0x192ab8(0x22a)]=!0x0),_0x2aac8e[_0x192ab8(0x206)]&&(_0xb7ae69['ref']={'type':_0x2aac8e[_0x192ab8(0x206)]},_0x2aac8e['refOnDelete']&&_0x192ab8(0x229)!==_0x2aac8e[_0x192ab8(0x243)]&&(_0xb7ae69[_0x192ab8(0x1dd)]['onDelete']=_0x2aac8e['refOnDelete'])),_0x192ab8(0x221)===_0x2aac8e[_0x192ab8(0x233)]&&_0x2aac8e[_0x192ab8(0x1fa)][_0x192ab8(0x1fe)]>0x0){_0xb7ae69[_0x192ab8(0x23e)]={};const _0x32aca2=[];for(const _0x4dab2c of _0x2aac8e['children'])_0xb7ae69['properties'][_0x4dab2c[_0x192ab8(0x1f7)]]=r(_0x4dab2c),_0x4dab2c[_0x192ab8(0x219)]&&_0x32aca2[_0x192ab8(0x237)](_0x4dab2c[_0x192ab8(0x1f7)]);_0x32aca2[_0x192ab8(0x1fe)]>0x0&&(_0xb7ae69[_0x192ab8(0x219)]=_0x32aca2),_0xb7ae69[_0x192ab8(0x245)]=_0x2aac8e[_0x192ab8(0x1ff)];}if('array'===_0x2aac8e[_0x192ab8(0x233)]&&_0x2aac8e[_0x192ab8(0x1ec)]&&(_0xb7ae69['items']=r(_0x2aac8e[_0x192ab8(0x1ec)])),_0x2aac8e[_0x192ab8(0x223)]){for(const [_0x1a4c08,_0x118fab]of Object[_0x192ab8(0x207)](_0x2aac8e['_extra']))_0xb7ae69[_0x1a4c08]=i(_0x118fab);}return _0xb7ae69;}function l(_0x1a337a){const _0xa50982=_0x5f15ce;if(!_0x1a337a||!_0x1a337a[_0xa50982(0x23e)])return[];const _0x255b8d=new Set(_0x1a337a[_0xa50982(0x219)]||[]);return Object[_0xa50982(0x207)](_0x1a337a['properties'])[_0xa50982(0x232)](([_0x5359d8,_0x3e9cc7])=>a(_0x5359d8,_0x3e9cc7,_0x255b8d[_0xa50982(0x1f5)](_0x5359d8),0x0));}function s(_0x24affc,_0x583771){const _0x174538=_0x5f15ce,_0x5600fb={},_0x26f002=[];for(const _0x36b066 of _0x24affc)_0x5600fb[_0x36b066[_0x174538(0x1f7)]]=r(_0x36b066),_0x36b066['required']&&_0x26f002[_0x174538(0x237)](_0x36b066[_0x174538(0x1f7)]);const _0x315300={'type':_0x174538(0x221),'properties':_0x5600fb};return _0x26f002['length']>0x0&&(_0x315300[_0x174538(0x219)]=_0x26f002),_0x315300[_0x174538(0x245)]=_0x583771,_0x315300;}export default{'tag':_0x5f15ce(0x202),'dependencies':[_0x124042,_0x16c28b,_0x204797],'attr':{'modal':{},'type':{},'schema':{},'envApiBase':{},'onDone':{},'saveUrl':{},'samplesUrl':{},'hideEnforce':{}},'context':_0x842fd4=>({'mode':'visual','editDefinition':{},'editEnforce':!0x1,'rows':[],'additionalProps':!0x0,'saveBusy':!0x1,'saveError':null,'dirty':!0x1,'newPropName':'','_newChildNames':{},'typesList':[],get 'hasSchema'(){const _0xbaf12d=_0x5f15ce;return!!_0x842fd4[_0xbaf12d(0x222)][_0xbaf12d(0x246)];},get 'hideEnforce'(){const _0x3975aa=_0x5f15ce;return!!_0x842fd4[_0x3975aa(0x222)][_0x3975aa(0x1cb)];},'_init'(){const _0x21030a=_0x5f15ce,_0x27a4c5=_0x842fd4['$attr'][_0x21030a(0x246)];_0x27a4c5?.[_0x21030a(0x1e0)]?(this[_0x21030a(0x1da)]=i(_0x27a4c5[_0x21030a(0x1e0)]),this[_0x21030a(0x21f)]=_0x27a4c5[_0x21030a(0x20c)]??!0x1):(this['editDefinition']={'type':_0x21030a(0x221),'properties':{},'additionalProperties':!0x0},this[_0x21030a(0x21f)]=!0x1),this[_0x21030a(0x1cc)]=l(this[_0x21030a(0x1da)]),this['additionalProps']=!0x1!==this[_0x21030a(0x1da)]['additionalProperties'],this[_0x21030a(0x1f2)]=!0x1,this['saveError']=null;},'switchToVisual'(){const _0x19f588=_0x5f15ce;this[_0x19f588(0x1cc)]=l(this[_0x19f588(0x1da)]),this[_0x19f588(0x1d6)]=!0x1!==this['editDefinition'][_0x19f588(0x245)],this[_0x19f588(0x1f8)]=_0x19f588(0x234);},'switchToJson'(){const _0x593cee=_0x5f15ce;this[_0x593cee(0x1da)]=s(this[_0x593cee(0x1cc)],this['additionalProps']),this[_0x593cee(0x1f8)]=_0x593cee(0x204);},'addProperty'(){const _0x374ed4=_0x5f15ce,_0x9fd78b=(this[_0x374ed4(0x21c)]||'')[_0x374ed4(0x216)]();_0x9fd78b&&(this['rows'][_0x374ed4(0x1c3)](_0x3e4b97=>_0x3e4b97[_0x374ed4(0x1f7)]===_0x9fd78b)?_0x842fd4['$ok'][_0x374ed4(0x1e5)]?.[_0x374ed4(0x238)]?.[_0x374ed4(0x1cf)]?.(_0x374ed4(0x212)+_0x9fd78b+_0x374ed4(0x23a)):(this[_0x374ed4(0x1cc)][_0x374ed4(0x237)](o(_0x9fd78b)),this[_0x374ed4(0x21c)]='',this[_0x374ed4(0x1f2)]=!0x0));},'addChildProperty'(_0x2dffdb,_0x211a2f){const _0x1a8e78=_0x5f15ce,_0x488aa0=(this[_0x1a8e78(0x1c9)][_0x211a2f]||'')[_0x1a8e78(0x216)]();_0x488aa0&&(_0x2dffdb[_0x1a8e78(0x1fa)][_0x1a8e78(0x1c3)](_0xf6b7c8=>_0xf6b7c8['name']===_0x488aa0)?_0x842fd4['$ok'][_0x1a8e78(0x1e5)]?.[_0x1a8e78(0x238)]?.[_0x1a8e78(0x1cf)]?.(_0x1a8e78(0x212)+_0x488aa0+_0x1a8e78(0x23a)):(_0x2dffdb['children'][_0x1a8e78(0x237)](o(_0x488aa0)),this[_0x1a8e78(0x1c9)][_0x211a2f]='',this[_0x1a8e78(0x1f2)]=!0x0));},'removeProperty'(_0x58959d,_0x3e9f3c){const _0x26bfaa=_0x5f15ce;_0x58959d[_0x26bfaa(0x247)](_0x3e9f3c,0x1),this['dirty']=!0x0;},'setRowField'(_0x542f0d,_0x3a90bd,_0x2968cc){const _0x53402d=_0x5f15ce;_0x542f0d[_0x3a90bd]=_0x2968cc,_0x53402d(0x233)===_0x3a90bd&&(_0x53402d(0x221)===_0x2968cc&&0x0===_0x542f0d[_0x53402d(0x1fa)][_0x53402d(0x1fe)]&&(_0x542f0d[_0x53402d(0x1fa)]=[],_0x542f0d['childrenAdditionalProps']=!0x0),_0x53402d(0x242)!==_0x2968cc||_0x542f0d['items']||(_0x542f0d['items']=o('(item)',_0x53402d(0x1e1)))),this[_0x53402d(0x1f2)]=!0x0;},'toggleRowExpanded'(_0x533635){const _0x55d352=_0x5f15ce;_0x533635[_0x55d352(0x1f9)]=!_0x533635['expanded'];},'toggleRowRequired'(_0x18f136){const _0x3254ff=_0x5f15ce;_0x18f136[_0x3254ff(0x219)]=!_0x18f136[_0x3254ff(0x219)],this['dirty']=!0x0;},'toggleRowNullable'(_0x285ef3){const _0x3a8790=_0x5f15ce;_0x285ef3[_0x3a8790(0x1d9)]=!_0x285ef3[_0x3a8790(0x1d9)],this[_0x3a8790(0x1f2)]=!0x0;},'setChildrenAdditionalProps'(_0x43385d,_0x4d5d7d){const _0x17edfd=_0x5f15ce;_0x43385d[_0x17edfd(0x1ff)]=_0x4d5d7d,this['dirty']=!0x0;},'setRowConstraint'(_0x2a3d7f,_0x4bb6cc,_0x569ed9){const _0x25af62=_0x5f15ce;[_0x25af62(0x22e),_0x25af62(0x24a),_0x25af62(0x21b),'exclusiveMaximum',_0x25af62(0x249),_0x25af62(0x205),_0x25af62(0x208),_0x25af62(0x1f3),'maxItems'][_0x25af62(0x210)](_0x4bb6cc)?_0x2a3d7f[_0x4bb6cc]=''===_0x569ed9||null===_0x569ed9?null:Number(_0x569ed9):'uniqueItems'===_0x4bb6cc?_0x2a3d7f[_0x4bb6cc]=!!_0x569ed9:'enum'===_0x4bb6cc?_0x569ed9&&''!==_0x569ed9[_0x25af62(0x216)]()?_0x2a3d7f['enum']=_0x569ed9['split'](',')[_0x25af62(0x232)](_0x7c6754=>{const _0x34f4c8=_0x25af62;_0x7c6754=_0x7c6754['trim']();try{return JSON[_0x34f4c8(0x1ee)](_0x7c6754);}catch{return _0x7c6754;}}):_0x2a3d7f[_0x25af62(0x22f)]=null:_0x2a3d7f[_0x4bb6cc]=_0x569ed9,this[_0x25af62(0x1f2)]=!0x0;},'enumToString':_0x1fbacd=>_0x1fbacd&&Array['isArray'](_0x1fbacd)?_0x1fbacd[_0x5f15ce(0x232)](_0x1c17c2=>_0x5f15ce(0x1e1)==typeof _0x1c17c2?_0x1c17c2:JSON[_0x5f15ce(0x1f0)](_0x1c17c2))[_0x5f15ce(0x228)](',\x20'):'','setAdditionalProps'(_0xf70af2){const _0x2041d3=_0x5f15ce;this[_0x2041d3(0x1d6)]=_0xf70af2,this[_0x2041d3(0x1f2)]=!0x0;},async 'loadTypesList'(){const _0x1f2c6c=_0x5f15ce;try{const _0x37581f=await fetch(_0x842fd4[_0x1f2c6c(0x222)]['envApiBase']+_0x1f2c6c(0x1eb));if(_0x37581f['ok']){const _0x2d7aae=await _0x37581f[_0x1f2c6c(0x204)]();this[_0x1f2c6c(0x1dc)]=(_0x2d7aae[_0x1f2c6c(0x1f4)]??_0x2d7aae['data']??_0x2d7aae[_0x1f2c6c(0x209)]??[])[_0x1f2c6c(0x232)](_0x44a4b8=>_0x1f2c6c(0x1e1)==typeof _0x44a4b8?_0x44a4b8:_0x44a4b8['type']??_0x44a4b8['name'])['filter'](_0x2bb649=>_0x2bb649&&!_0x2bb649[_0x1f2c6c(0x244)]('~'))['sort']();}}catch{}},'setRowRef'(_0x421ccc,_0x2bd608,_0x725a69){const _0x5ad368=_0x5f15ce;_0x5ad368(0x206)===_0x2bd608?(_0x421ccc[_0x5ad368(0x206)]=_0x725a69,_0x725a69||(_0x421ccc[_0x5ad368(0x243)]=_0x5ad368(0x229))):_0x5ad368(0x243)===_0x2bd608&&(_0x421ccc[_0x5ad368(0x243)]=_0x725a69),this[_0x5ad368(0x1f2)]=!0x0;},'clearRowRef'(_0x374f46){const _0x46dadf=_0x5f15ce;_0x374f46[_0x46dadf(0x206)]='',_0x374f46[_0x46dadf(0x243)]=_0x46dadf(0x229),this[_0x46dadf(0x1f2)]=!0x0;},'setEditDefinition'(_0x216849){const _0x4f58e2=_0x5f15ce;this['editDefinition']=_0x216849,this[_0x4f58e2(0x1f2)]=!0x0;},'setEditEnforce'(_0x12f8d2){const _0x2fb021=_0x5f15ce;this[_0x2fb021(0x21f)]=_0x12f8d2,this['dirty']=!0x0;},async 'generateFromData'(){const _0x494815=_0x5f15ce;if(_0x842fd4[_0x494815(0x222)][_0x494815(0x233)]||_0x842fd4['$attr'][_0x494815(0x23c)])try{let _0x429060;if(_0x842fd4[_0x494815(0x222)][_0x494815(0x23c)]){const _0x2d8162=await fetch(_0x842fd4[_0x494815(0x222)][_0x494815(0x23c)]);if(!_0x2d8162['ok'])throw new Error(_0x494815(0x1d1));const _0x1a541d=await _0x2d8162[_0x494815(0x204)]();_0x429060=(_0x1a541d[_0x494815(0x1ce)]??_0x1a541d[_0x494815(0x1f4)]??[])[_0x494815(0x232)](_0x38ae0b=>_0x38ae0b[_0x494815(0x225)]??_0x38ae0b[_0x494815(0x1cd)]??_0x38ae0b['value']??_0x38ae0b);}else{const _0x1f5258=await fetch(_0x842fd4['$attr'][_0x494815(0x1f1)]+_0x494815(0x230)+encodeURIComponent(_0x842fd4[_0x494815(0x222)][_0x494815(0x233)])+'/query',{'method':_0x494815(0x248),'headers':{'Content-Type':'application/json'},'body':JSON[_0x494815(0x1f0)]({'filter':{},'options':{'limit':0x32}})});if(!_0x1f5258['ok'])throw new Error(_0x494815(0x1d0));const _0x2404e7=await _0x1f5258[_0x494815(0x204)]();_0x429060=(_0x2404e7['data']??_0x2404e7['result']??[])['map'](_0x3377ab=>_0x3377ab['doc']??_0x3377ab[_0x494815(0x214)]??_0x3377ab);}if(0x0===_0x429060[_0x494815(0x1fe)])return void _0x842fd4[_0x494815(0x213)][_0x494815(0x1e5)]?.['toast']?.[_0x494815(0x21a)]?.(_0x494815(0x1ca));_0x842fd4['$ok']['shared']?.['toast']?.[_0x494815(0x21a)]?.(_0x494815(0x1ea)+_0x429060['length']+_0x494815(0x20d));const _0x1d5393=this['_inferSchemaFromData'](_0x429060);this[_0x494815(0x1da)]=_0x1d5393,this['rows']=l(_0x1d5393),this[_0x494815(0x1d6)]=!0x1!==_0x1d5393['additionalProperties'],this['dirty']=!0x0;}catch(_0x2de92f){_0x842fd4['$ok']['shared']?.[_0x494815(0x238)]?.[_0x494815(0x1cf)]?.(_0x2de92f[_0x494815(0x1c7)]);}},'_inferSchemaFromData'(_0x305500){function _0x3c4617(_0x4eb24b){const _0x812814=_0x3dca;return null===_0x4eb24b?_0x812814(0x235):Array[_0x812814(0x1e2)](_0x4eb24b)?'array':_0x812814(0x221)==typeof _0x4eb24b?_0x812814(0x221):typeof _0x4eb24b;}return function _0x4b0788(_0x8b36d5){const _0x5153f6=_0x3dca;let _0x5d9dfa=[...new Set(_0x8b36d5[_0x5153f6(0x232)](_0x3c4617)[_0x5153f6(0x22b)](_0x5c80ae=>'undefined'!==_0x5c80ae))];if(0x0===_0x5d9dfa[_0x5153f6(0x1fe)])return{'type':_0x5153f6(0x1e1)};_0x5d9dfa[_0x5153f6(0x210)](_0x5153f6(0x235))&&_0x5d9dfa[_0x5153f6(0x1fe)]>0x1&&(_0x5d9dfa=_0x5d9dfa[_0x5153f6(0x22b)](_0xaa5ef4=>_0x5153f6(0x235)!==_0xaa5ef4));let _0x18fb55=0x1===_0x5d9dfa[_0x5153f6(0x1fe)]?{'type':_0x5d9dfa[0x0]}:{'type':_0x5d9dfa};if(_0x5d9dfa[_0x5153f6(0x210)]('object')){let _0x2c4dc0={},_0x59d271=new Set(_0x8b36d5[_0x5153f6(0x22b)](_0x2864c4=>'object'===_0x3c4617(_0x2864c4)&&null!==_0x2864c4)['flatMap'](Object['keys']));for(let _0x2e9e8b of _0x59d271){let _0x4f311c=_0x8b36d5['filter'](_0x273570=>_0x5153f6(0x221)===_0x3c4617(_0x273570)&&null!==_0x273570)[_0x5153f6(0x232)](_0x1bcc6c=>_0x1bcc6c[_0x2e9e8b]);_0x2c4dc0[_0x2e9e8b]=_0x4b0788(_0x4f311c);}_0x18fb55[_0x5153f6(0x23e)]=_0x2c4dc0,_0x18fb55['additionalProperties']=!0x1;}if(_0x5d9dfa[_0x5153f6(0x210)](_0x5153f6(0x242))){let _0x446b95=_0x8b36d5[_0x5153f6(0x22b)](_0xba58d9=>_0x5153f6(0x242)===_0x3c4617(_0xba58d9))[_0x5153f6(0x1fb)]();_0x446b95[_0x5153f6(0x1fe)]>0x0&&(_0x18fb55[_0x5153f6(0x1ec)]=_0x4b0788(_0x446b95));}return _0x18fb55;}(_0x305500);},async 'save'(){const _0x39051f=_0x5f15ce;this['saveBusy']=!0x0,this[_0x39051f(0x203)]=null;try{const _0x135b2a={'definition':'visual'===this[_0x39051f(0x1f8)]?s(this['rows'],this[_0x39051f(0x1d6)]):this[_0x39051f(0x1da)],'enforce':!!_0x842fd4[_0x39051f(0x222)][_0x39051f(0x1cb)]||this[_0x39051f(0x21f)]},_0x4d980b=_0x842fd4['$attr'][_0x39051f(0x23f)]??_0x842fd4[_0x39051f(0x222)][_0x39051f(0x1f1)]+_0x39051f(0x230)+encodeURIComponent(_0x842fd4[_0x39051f(0x222)][_0x39051f(0x233)])+'/schema',_0x3d4bd8=await fetch(_0x4d980b,{'method':_0x39051f(0x240),'headers':{'Content-Type':_0x39051f(0x1ef)},'body':JSON[_0x39051f(0x1f0)](_0x135b2a)});if(0x199===_0x3d4bd8[_0x39051f(0x1fc)]){const _0x450828=await _0x3d4bd8['json']()[_0x39051f(0x1d5)](()=>({})),_0x2bf2d=_0x450828?.[_0x39051f(0x1cf)]?.[_0x39051f(0x220)]?.[_0x39051f(0x1c6)]??_0x450828?.[_0x39051f(0x220)]?.[_0x39051f(0x1c6)]??_0x450828?.[_0x39051f(0x1cf)]?.[_0x39051f(0x1ce)]?.[_0x39051f(0x1c6)]??[];if(_0x2bf2d['length']>0x0){const _0x41524f=_0x2bf2d[_0x39051f(0x217)](0x0,0x5)[_0x39051f(0x232)](_0x2f5603=>_0x2f5603[_0x39051f(0x1d7)])[_0x39051f(0x228)](',\x20')+(_0x2bf2d[_0x39051f(0x1fe)]>0x5?'\x20…\x20(+'+(_0x2bf2d[_0x39051f(0x1fe)]-0x5)+_0x39051f(0x1db):'');this[_0x39051f(0x203)]='Cannot\x20enable\x20enforce\x20—\x20'+_0x2bf2d['length']+'\x20doc(s)\x20violate\x20the\x20schema:\x0a'+_0x41524f;}else this[_0x39051f(0x203)]=_0x450828?.['error']?.[_0x39051f(0x1c7)]||_0x450828?.['message']||_0x39051f(0x21d);return;}if(!_0x3d4bd8['ok']){const _0x31982d=await _0x3d4bd8[_0x39051f(0x204)]()['catch'](()=>({}));throw new Error(_0x31982d?.[_0x39051f(0x1cf)]?.[_0x39051f(0x1c7)]||_0x3d4bd8[_0x39051f(0x218)]);}_0x842fd4[_0x39051f(0x213)][_0x39051f(0x1e5)]?.[_0x39051f(0x238)]?.[_0x39051f(0x21e)]?.(_0x39051f(0x1e4)),await _0x842fd4['$attr']['modal'][_0x39051f(0x1e7)](),await _0x842fd4['$attr'][_0x39051f(0x1d4)]?.();}catch(_0x27b8c4){this['saveError']=_0x27b8c4[_0x39051f(0x1c7)]||_0x39051f(0x1d2);}finally{this[_0x39051f(0x1c5)]=!0x1;}},async 'remove'(){const _0x115083=_0x5f15ce;if(await _0x842fd4[_0x115083(0x213)][_0x115083(0x1e5)][_0x115083(0x239)][_0x115083(0x1c4)]('Remove\x20schema\x20from\x20\x22'+_0x842fd4[_0x115083(0x222)][_0x115083(0x233)]+_0x115083(0x215)))try{const _0x2dcf65=_0x842fd4[_0x115083(0x222)][_0x115083(0x23f)]??_0x842fd4[_0x115083(0x222)][_0x115083(0x1f1)]+_0x115083(0x230)+encodeURIComponent(_0x842fd4[_0x115083(0x222)][_0x115083(0x233)])+'/schema',_0x1218cb=await fetch(_0x2dcf65,{'method':'DELETE'});if(!_0x1218cb['ok']){const _0x2d9bc1=await _0x1218cb[_0x115083(0x204)]()[_0x115083(0x1d5)](()=>({}));throw new Error(_0x2d9bc1?.[_0x115083(0x1cf)]?.[_0x115083(0x1c7)]||_0x1218cb[_0x115083(0x218)]);}_0x842fd4[_0x115083(0x213)]['shared']?.[_0x115083(0x238)]?.[_0x115083(0x21a)]?.(_0x115083(0x1df)),await _0x842fd4[_0x115083(0x222)][_0x115083(0x239)][_0x115083(0x1e7)](),await _0x842fd4[_0x115083(0x222)][_0x115083(0x1d4)]?.();}catch(_0x58e776){_0x842fd4[_0x115083(0x213)][_0x115083(0x1e5)]?.[_0x115083(0x238)]?.[_0x115083(0x1cf)]?.(_0x58e776[_0x115083(0x1c7)]||'Remove\x20failed');}},'cancel'(){const _0x30c1b8=_0x5f15ce;_0x842fd4[_0x30c1b8(0x222)][_0x30c1b8(0x239)][_0x30c1b8(0x1e7)]();}}),'init'(){const _0x304d8b=_0x5f15ce;this[_0x304d8b(0x1e3)](),this[_0x304d8b(0x200)]();},'template':_0x5f15ce(0x226),'style':_0x5f15ce(0x1c8)};
|
|
1
|
+
function _0x3e25(_0x2a52c6,_0x1830ef){_0x2a52c6=_0x2a52c6-0xb5;const _0x55bc04=_0x55bc();let _0x3e258e=_0x55bc04[_0x2a52c6];return _0x3e258e;}const _0x25b1c1=_0x3e25;(function(_0x5e057e,_0x3ba06e){const _0x130af0=_0x3e25,_0x33c068=_0x5e057e();while(!![]){try{const _0x9cefa=parseInt(_0x130af0(0xd0))/0x1*(-parseInt(_0x130af0(0xf0))/0x2)+-parseInt(_0x130af0(0x13b))/0x3*(-parseInt(_0x130af0(0xcf))/0x4)+-parseInt(_0x130af0(0xbb))/0x5*(-parseInt(_0x130af0(0xe8))/0x6)+parseInt(_0x130af0(0xf9))/0x7*(-parseInt(_0x130af0(0x109))/0x8)+-parseInt(_0x130af0(0x105))/0x9*(-parseInt(_0x130af0(0xee))/0xa)+parseInt(_0x130af0(0x12f))/0xb*(-parseInt(_0x130af0(0xd9))/0xc)+parseInt(_0x130af0(0xdc))/0xd;if(_0x9cefa===_0x3ba06e)break;else _0x33c068['push'](_0x33c068['shift']());}catch(_0x56f1c5){_0x33c068['push'](_0x33c068['shift']());}}}(_0x55bc,0x9103c));import _0x1d9dff from'@toolkit/elements/ok-icon.ok.js';import _0x30daa3 from'@toolkit/core/ok-overlay.ok.js';import _0x52defd from'../../../components/ok-json-input.ok.js';function i(_0x76a526){const _0x2d9183=_0x3e25;return null==_0x76a526?_0x76a526:JSON[_0x2d9183(0x12e)](JSON['stringify'](_0x76a526));}function o(_0x1a20fa='',_0x261f82=_0x25b1c1(0xd5)){const _0x5b1899=_0x25b1c1;return{'name':_0x1a20fa,'type':_0x261f82,'nullable':!0x1,'required':!0x1,'description':'','enum':null,'const':null,'format':'','minimum':null,'maximum':null,'exclusiveMinimum':null,'exclusiveMaximum':null,'multipleOf':null,'minLength':null,'maxLength':null,'pattern':'','minItems':null,'maxItems':null,'uniqueItems':!0x1,'refType':'','refOnDelete':_0x5b1899(0x111),'children':[],'childrenAdditionalProps':!0x0,'items':null,'expanded':!0x1,'_extra':{}};}function _0x55bc(){const _0x3d4ef2=['result','(item)','null','rows','typesList','exclusiveMinimum','enum','flat','editEnforce','join','samplesUrl','sort','_inferSchemaFromData','/query','ref','PUT','close','_init','has','message','json','const','Save\x20failed','No\x20documents\x20found\x20to\x20infer\x20schema\x20from.','refOnDelete','flatMap','modal','saveBusy','parse','88UMOZrr','additionalProperties','maximum','newPropName','push','undefined','data','isArray','object','editDefinition','\x20documents…','_newChildNames','3aKbOIo','loadTypesList','failures','length','Schema\x20conflicts\x20with\x20existing\x20data','\x20doc(s)\x20violate\x20the\x20schema:\x0a','minItems','_extra','DELETE','31030Ozabsg','startsWith','schema','entries','name','info','application/json','error','Cannot\x20enable\x20enforce\x20—\x20','format','Schema\x20saved','onDone','minimum','childrenAdditionalProps','doc','dirty','$attr','types','refType','stringify','2672392zoGwtO','482NpEwys','/types','items','multipleOf','exclusiveMaximum','string','success','Failed\x20to\x20fetch\x20data','\x22\x20already\x20exists','1476444QJnUzU','$ref','minLength','21761467YzTqLu','statusText','hideEnforce','Inferring\x20from\x20','definition','description','/schema','filter','type','find','details','saveError','54ZYDVKO','shared','mode','required','Remove\x20failed','status','6130BlRoQQ','keys','1488bwpUvY','onDelete','maxLength','pattern','Remove\x20schema\x20from\x20\x22','trim','schema-edit-modal','key','expanded','56cfdXMM','maxItems','uniqueItems','array','envApiBase','confirm','/type/','saveUrl','Property\x20\x22','value','includes','$defs','7425qMHCrz','visual','additionalProps','$ok','966752syVaEd','toast','children','properties','default','nullable','catch','map','no_action'];_0x55bc=function(){return _0x3d4ef2;};return _0x55bc();}function a(_0x977688,_0x49f3a6,_0x4937e0,_0x4a6f25=0x0){const _0x30b9fb=_0x25b1c1,_0x239723=_0x49f3a6[_0x30b9fb(0xe4)];let _0x263f5a,_0x38348f=!0x1;Array[_0x30b9fb(0x136)](_0x239723)?(_0x38348f=_0x239723['includes']('null'),_0x263f5a=_0x239723[_0x30b9fb(0xe5)](_0x4bb63a=>_0x30b9fb(0x114)!==_0x4bb63a)||_0x30b9fb(0xd5)):_0x263f5a=_0x239723||'string';const _0x557539=o(_0x977688,_0x263f5a);if(_0x557539[_0x30b9fb(0x10e)]=_0x38348f,_0x557539['required']=_0x4937e0,_0x557539[_0x30b9fb(0xe1)]=_0x49f3a6[_0x30b9fb(0xe1)]||'',Array[_0x30b9fb(0x136)](_0x49f3a6['enum'])&&(_0x557539['enum']=_0x49f3a6['enum']),void 0x0!==_0x49f3a6['const']&&(_0x557539['const']={'value':_0x49f3a6[_0x30b9fb(0x127)]}),_0x49f3a6[_0x30b9fb(0xc4)]&&(_0x557539[_0x30b9fb(0xc4)]=_0x49f3a6['format']),void 0x0!==_0x49f3a6[_0x30b9fb(0xc7)]&&(_0x557539[_0x30b9fb(0xc7)]=_0x49f3a6['minimum']),void 0x0!==_0x49f3a6['maximum']&&(_0x557539[_0x30b9fb(0x131)]=_0x49f3a6[_0x30b9fb(0x131)]),void 0x0!==_0x49f3a6[_0x30b9fb(0x117)]&&(_0x557539[_0x30b9fb(0x117)]=_0x49f3a6['exclusiveMinimum']),void 0x0!==_0x49f3a6[_0x30b9fb(0xd4)]&&(_0x557539[_0x30b9fb(0xd4)]=_0x49f3a6['exclusiveMaximum']),void 0x0!==_0x49f3a6['multipleOf']&&(_0x557539[_0x30b9fb(0xd3)]=_0x49f3a6[_0x30b9fb(0xd3)]),void 0x0!==_0x49f3a6[_0x30b9fb(0xdb)]&&(_0x557539[_0x30b9fb(0xdb)]=_0x49f3a6['minLength']),void 0x0!==_0x49f3a6[_0x30b9fb(0xf2)]&&(_0x557539['maxLength']=_0x49f3a6[_0x30b9fb(0xf2)]),_0x49f3a6[_0x30b9fb(0xf3)]&&(_0x557539[_0x30b9fb(0xf3)]=_0x49f3a6[_0x30b9fb(0xf3)]),void 0x0!==_0x49f3a6[_0x30b9fb(0xb8)]&&(_0x557539['minItems']=_0x49f3a6['minItems']),void 0x0!==_0x49f3a6[_0x30b9fb(0xfa)]&&(_0x557539[_0x30b9fb(0xfa)]=_0x49f3a6[_0x30b9fb(0xfa)]),!0x0===_0x49f3a6[_0x30b9fb(0xfb)]&&(_0x557539['uniqueItems']=!0x0),_0x49f3a6[_0x30b9fb(0x120)]&&'object'==typeof _0x49f3a6[_0x30b9fb(0x120)]&&_0x49f3a6[_0x30b9fb(0x120)]['type']&&(_0x557539[_0x30b9fb(0xcd)]=_0x49f3a6[_0x30b9fb(0x120)][_0x30b9fb(0xe4)],_0x557539[_0x30b9fb(0x12a)]=_0x49f3a6[_0x30b9fb(0x120)][_0x30b9fb(0xf1)]||_0x30b9fb(0x111)),_0x30b9fb(0x137)===_0x263f5a&&_0x49f3a6['properties']&&_0x4a6f25<0x4){const _0x5002e9=new Set(_0x49f3a6['required']||[]);_0x557539[_0x30b9fb(0x10b)]=Object[_0x30b9fb(0xbe)](_0x49f3a6['properties'])[_0x30b9fb(0x110)](([_0xec5e4f,_0x2ab2af])=>a(_0xec5e4f,_0x2ab2af,_0x5002e9[_0x30b9fb(0x124)](_0xec5e4f),_0x4a6f25+0x1)),_0x557539[_0x30b9fb(0xc8)]=!0x1!==_0x49f3a6[_0x30b9fb(0x130)];}_0x30b9fb(0xfc)===_0x263f5a&&_0x49f3a6[_0x30b9fb(0xd2)]&&_0x30b9fb(0x137)==typeof _0x49f3a6[_0x30b9fb(0xd2)]&&_0x4a6f25<0x4&&(_0x557539[_0x30b9fb(0xd2)]=a(_0x30b9fb(0x113),_0x49f3a6[_0x30b9fb(0xd2)],!0x1,_0x4a6f25+0x1));const _0x3c567c=new Set([_0x30b9fb(0xe4),_0x30b9fb(0xe1),_0x30b9fb(0x118),_0x30b9fb(0x127),_0x30b9fb(0xc4),_0x30b9fb(0xc7),_0x30b9fb(0x131),'exclusiveMinimum',_0x30b9fb(0xd4),'multipleOf',_0x30b9fb(0xdb),'maxLength',_0x30b9fb(0xf3),_0x30b9fb(0xb8),_0x30b9fb(0xfa),'uniqueItems',_0x30b9fb(0x10c),_0x30b9fb(0xeb),_0x30b9fb(0x130),_0x30b9fb(0xd2),_0x30b9fb(0x10d),_0x30b9fb(0xda),_0x30b9fb(0x104),_0x30b9fb(0x120)]);for(const _0x475eb3 of Object[_0x30b9fb(0xef)](_0x49f3a6))_0x3c567c[_0x30b9fb(0x124)](_0x475eb3)||(_0x557539[_0x30b9fb(0xb9)][_0x475eb3]=i(_0x49f3a6[_0x475eb3]));return _0x557539;}function r(_0x5d565b){const _0x50784e=_0x25b1c1,_0x2c3ba8={};if(_0x5d565b['nullable']&&_0x50784e(0x114)!==_0x5d565b[_0x50784e(0xe4)]?_0x2c3ba8[_0x50784e(0xe4)]=[_0x5d565b['type'],'null']:_0x2c3ba8['type']=_0x5d565b[_0x50784e(0xe4)],_0x5d565b[_0x50784e(0xe1)]&&(_0x2c3ba8['description']=_0x5d565b[_0x50784e(0xe1)]),_0x5d565b['enum']&&_0x5d565b[_0x50784e(0x118)][_0x50784e(0xb5)]>0x0&&(_0x2c3ba8[_0x50784e(0x118)]=_0x5d565b[_0x50784e(0x118)]),null!==_0x5d565b[_0x50784e(0x127)]&&void 0x0!==_0x5d565b[_0x50784e(0x127)]&&(_0x2c3ba8[_0x50784e(0x127)]=_0x5d565b[_0x50784e(0x127)][_0x50784e(0x102)]),_0x5d565b[_0x50784e(0xc4)]&&(_0x2c3ba8[_0x50784e(0xc4)]=_0x5d565b['format']),null!==_0x5d565b[_0x50784e(0xc7)]&&void 0x0!==_0x5d565b['minimum']&&(_0x2c3ba8['minimum']=_0x5d565b[_0x50784e(0xc7)]),null!==_0x5d565b[_0x50784e(0x131)]&&void 0x0!==_0x5d565b[_0x50784e(0x131)]&&(_0x2c3ba8[_0x50784e(0x131)]=_0x5d565b[_0x50784e(0x131)]),null!==_0x5d565b[_0x50784e(0x117)]&&void 0x0!==_0x5d565b[_0x50784e(0x117)]&&(_0x2c3ba8[_0x50784e(0x117)]=_0x5d565b[_0x50784e(0x117)]),null!==_0x5d565b[_0x50784e(0xd4)]&&void 0x0!==_0x5d565b[_0x50784e(0xd4)]&&(_0x2c3ba8[_0x50784e(0xd4)]=_0x5d565b['exclusiveMaximum']),null!==_0x5d565b[_0x50784e(0xd3)]&&void 0x0!==_0x5d565b[_0x50784e(0xd3)]&&(_0x2c3ba8['multipleOf']=_0x5d565b[_0x50784e(0xd3)]),null!==_0x5d565b['minLength']&&void 0x0!==_0x5d565b['minLength']&&(_0x2c3ba8[_0x50784e(0xdb)]=_0x5d565b['minLength']),null!==_0x5d565b[_0x50784e(0xf2)]&&void 0x0!==_0x5d565b[_0x50784e(0xf2)]&&(_0x2c3ba8[_0x50784e(0xf2)]=_0x5d565b[_0x50784e(0xf2)]),_0x5d565b['pattern']&&(_0x2c3ba8[_0x50784e(0xf3)]=_0x5d565b[_0x50784e(0xf3)]),null!==_0x5d565b[_0x50784e(0xb8)]&&void 0x0!==_0x5d565b['minItems']&&(_0x2c3ba8[_0x50784e(0xb8)]=_0x5d565b[_0x50784e(0xb8)]),null!==_0x5d565b[_0x50784e(0xfa)]&&void 0x0!==_0x5d565b[_0x50784e(0xfa)]&&(_0x2c3ba8['maxItems']=_0x5d565b[_0x50784e(0xfa)]),_0x5d565b[_0x50784e(0xfb)]&&(_0x2c3ba8[_0x50784e(0xfb)]=!0x0),_0x5d565b['refType']&&(_0x2c3ba8[_0x50784e(0x120)]={'type':_0x5d565b[_0x50784e(0xcd)]},_0x5d565b['refOnDelete']&&_0x50784e(0x111)!==_0x5d565b[_0x50784e(0x12a)]&&(_0x2c3ba8[_0x50784e(0x120)][_0x50784e(0xf1)]=_0x5d565b['refOnDelete'])),_0x50784e(0x137)===_0x5d565b[_0x50784e(0xe4)]&&_0x5d565b[_0x50784e(0x10b)][_0x50784e(0xb5)]>0x0){_0x2c3ba8[_0x50784e(0x10c)]={};const _0x573f25=[];for(const _0x503c6d of _0x5d565b[_0x50784e(0x10b)])_0x2c3ba8[_0x50784e(0x10c)][_0x503c6d[_0x50784e(0xbf)]]=r(_0x503c6d),_0x503c6d[_0x50784e(0xeb)]&&_0x573f25['push'](_0x503c6d[_0x50784e(0xbf)]);_0x573f25['length']>0x0&&(_0x2c3ba8[_0x50784e(0xeb)]=_0x573f25),_0x2c3ba8[_0x50784e(0x130)]=_0x5d565b[_0x50784e(0xc8)];}if(_0x50784e(0xfc)===_0x5d565b['type']&&_0x5d565b[_0x50784e(0xd2)]&&(_0x2c3ba8[_0x50784e(0xd2)]=r(_0x5d565b[_0x50784e(0xd2)])),_0x5d565b[_0x50784e(0xb9)]){for(const [_0x3efae7,_0x4553ee]of Object[_0x50784e(0xbe)](_0x5d565b['_extra']))_0x2c3ba8[_0x3efae7]=i(_0x4553ee);}return _0x2c3ba8;}function l(_0x15be89){const _0x1c4f10=_0x25b1c1;if(!_0x15be89||!_0x15be89[_0x1c4f10(0x10c)])return[];const _0x34eea7=new Set(_0x15be89[_0x1c4f10(0xeb)]||[]);return Object[_0x1c4f10(0xbe)](_0x15be89['properties'])[_0x1c4f10(0x110)](([_0x4bb086,_0x45f752])=>a(_0x4bb086,_0x45f752,_0x34eea7[_0x1c4f10(0x124)](_0x4bb086),0x0));}function s(_0x5cce29,_0x4fb0d6){const _0x73c1ca=_0x25b1c1,_0x310506={},_0x23d2fc=[];for(const _0x1a57e3 of _0x5cce29)_0x310506[_0x1a57e3['name']]=r(_0x1a57e3),_0x1a57e3['required']&&_0x23d2fc[_0x73c1ca(0x133)](_0x1a57e3[_0x73c1ca(0xbf)]);const _0x13713c={'type':_0x73c1ca(0x137),'properties':_0x310506};return _0x23d2fc['length']>0x0&&(_0x13713c[_0x73c1ca(0xeb)]=_0x23d2fc),_0x13713c[_0x73c1ca(0x130)]=_0x4fb0d6,_0x13713c;}export default{'tag':_0x25b1c1(0xf6),'dependencies':[_0x1d9dff,_0x30daa3,_0x52defd],'attr':{'modal':{},'type':{},'schema':{},'envApiBase':{},'onDone':{},'saveUrl':{},'samplesUrl':{},'hideEnforce':{}},'context':_0x131272=>({'mode':_0x25b1c1(0x106),'editDefinition':{},'editEnforce':!0x1,'rows':[],'additionalProps':!0x0,'saveBusy':!0x1,'saveError':null,'dirty':!0x1,'newPropName':'','_newChildNames':{},'typesList':[],get 'hasSchema'(){const _0xe3ee69=_0x25b1c1;return!!_0x131272[_0xe3ee69(0xcb)][_0xe3ee69(0xbd)];},get 'hideEnforce'(){const _0x28c401=_0x25b1c1;return!!_0x131272[_0x28c401(0xcb)]['hideEnforce'];},'_init'(){const _0x3b9f23=_0x25b1c1,_0x2dbd04=_0x131272[_0x3b9f23(0xcb)][_0x3b9f23(0xbd)];_0x2dbd04?.[_0x3b9f23(0xe0)]?(this['editDefinition']=i(_0x2dbd04[_0x3b9f23(0xe0)]),this[_0x3b9f23(0x11a)]=_0x2dbd04['enforce']??!0x1):(this[_0x3b9f23(0x138)]={'type':_0x3b9f23(0x137),'properties':{},'additionalProperties':!0x0},this['editEnforce']=!0x1),this['rows']=l(this[_0x3b9f23(0x138)]),this[_0x3b9f23(0x107)]=!0x1!==this[_0x3b9f23(0x138)][_0x3b9f23(0x130)],this['dirty']=!0x1,this['saveError']=null;},'switchToVisual'(){const _0x427a9f=_0x25b1c1;this[_0x427a9f(0x115)]=l(this['editDefinition']),this['additionalProps']=!0x1!==this['editDefinition']['additionalProperties'],this[_0x427a9f(0xea)]=_0x427a9f(0x106);},'switchToJson'(){const _0x273a66=_0x25b1c1;this[_0x273a66(0x138)]=s(this[_0x273a66(0x115)],this['additionalProps']),this[_0x273a66(0xea)]=_0x273a66(0x126);},'addProperty'(){const _0x34502c=_0x25b1c1,_0x1688de=(this[_0x34502c(0x132)]||'')[_0x34502c(0xf5)]();_0x1688de&&(this[_0x34502c(0x115)]['some'](_0x38fff7=>_0x38fff7[_0x34502c(0xbf)]===_0x1688de)?_0x131272[_0x34502c(0x108)][_0x34502c(0xe9)]?.[_0x34502c(0x10a)]?.[_0x34502c(0xc2)]?.(_0x34502c(0x101)+_0x1688de+_0x34502c(0xd8)):(this[_0x34502c(0x115)]['push'](o(_0x1688de)),this[_0x34502c(0x132)]='',this[_0x34502c(0xca)]=!0x0));},'addChildProperty'(_0xb74b6,_0x46bb95){const _0x31e297=_0x25b1c1,_0x9841ef=(this[_0x31e297(0x13a)][_0x46bb95]||'')[_0x31e297(0xf5)]();_0x9841ef&&(_0xb74b6[_0x31e297(0x10b)]['some'](_0x11a19c=>_0x11a19c[_0x31e297(0xbf)]===_0x9841ef)?_0x131272['$ok'][_0x31e297(0xe9)]?.[_0x31e297(0x10a)]?.['error']?.(_0x31e297(0x101)+_0x9841ef+'\x22\x20already\x20exists'):(_0xb74b6['children'][_0x31e297(0x133)](o(_0x9841ef)),this[_0x31e297(0x13a)][_0x46bb95]='',this[_0x31e297(0xca)]=!0x0));},'removeProperty'(_0x23b53f,_0x185a8e){const _0x12fe5a=_0x25b1c1;_0x23b53f['splice'](_0x185a8e,0x1),this[_0x12fe5a(0xca)]=!0x0;},'setRowField'(_0x2fd21c,_0x32137a,_0x37a73c){const _0x24082e=_0x25b1c1;_0x2fd21c[_0x32137a]=_0x37a73c,_0x24082e(0xe4)===_0x32137a&&(_0x24082e(0x137)===_0x37a73c&&0x0===_0x2fd21c[_0x24082e(0x10b)][_0x24082e(0xb5)]&&(_0x2fd21c[_0x24082e(0x10b)]=[],_0x2fd21c[_0x24082e(0xc8)]=!0x0),_0x24082e(0xfc)!==_0x37a73c||_0x2fd21c[_0x24082e(0xd2)]||(_0x2fd21c[_0x24082e(0xd2)]=o('(item)','string'))),this[_0x24082e(0xca)]=!0x0;},'toggleRowExpanded'(_0x4a1960){const _0x41f83b=_0x25b1c1;_0x4a1960[_0x41f83b(0xf8)]=!_0x4a1960[_0x41f83b(0xf8)];},'toggleRowRequired'(_0x26ddeb){const _0x2a4a34=_0x25b1c1;_0x26ddeb[_0x2a4a34(0xeb)]=!_0x26ddeb['required'],this[_0x2a4a34(0xca)]=!0x0;},'toggleRowNullable'(_0x1d37d7){const _0x300f65=_0x25b1c1;_0x1d37d7[_0x300f65(0x10e)]=!_0x1d37d7[_0x300f65(0x10e)],this['dirty']=!0x0;},'setChildrenAdditionalProps'(_0x2068a7,_0x5e27be){const _0x3a3045=_0x25b1c1;_0x2068a7[_0x3a3045(0xc8)]=_0x5e27be,this['dirty']=!0x0;},'setRowConstraint'(_0x267d3c,_0x538a1f,_0x3c7300){const _0x61590d=_0x25b1c1;[_0x61590d(0xc7),_0x61590d(0x131),'exclusiveMinimum',_0x61590d(0xd4),_0x61590d(0xd3),'minLength',_0x61590d(0xf2),'minItems',_0x61590d(0xfa)][_0x61590d(0x103)](_0x538a1f)?_0x267d3c[_0x538a1f]=''===_0x3c7300||null===_0x3c7300?null:Number(_0x3c7300):'uniqueItems'===_0x538a1f?_0x267d3c[_0x538a1f]=!!_0x3c7300:'enum'===_0x538a1f?_0x3c7300&&''!==_0x3c7300[_0x61590d(0xf5)]()?_0x267d3c[_0x61590d(0x118)]=_0x3c7300['split'](',')[_0x61590d(0x110)](_0x3b6168=>{const _0x43781e=_0x61590d;_0x3b6168=_0x3b6168[_0x43781e(0xf5)]();try{return JSON[_0x43781e(0x12e)](_0x3b6168);}catch{return _0x3b6168;}}):_0x267d3c[_0x61590d(0x118)]=null:_0x267d3c[_0x538a1f]=_0x3c7300,this[_0x61590d(0xca)]=!0x0;},'enumToString':_0x94b609=>_0x94b609&&Array[_0x25b1c1(0x136)](_0x94b609)?_0x94b609[_0x25b1c1(0x110)](_0xacce4d=>_0x25b1c1(0xd5)==typeof _0xacce4d?_0xacce4d:JSON[_0x25b1c1(0xce)](_0xacce4d))[_0x25b1c1(0x11b)](',\x20'):'','setAdditionalProps'(_0x5f3a77){const _0x5189a2=_0x25b1c1;this[_0x5189a2(0x107)]=_0x5f3a77,this[_0x5189a2(0xca)]=!0x0;},async 'loadTypesList'(){const _0x24e952=_0x25b1c1;try{const _0x32e170=await fetch(_0x131272['$attr'][_0x24e952(0xfd)]+_0x24e952(0xd1));if(_0x32e170['ok']){const _0x33e1c4=await _0x32e170[_0x24e952(0x126)]();this[_0x24e952(0x116)]=(_0x33e1c4[_0x24e952(0x112)]??_0x33e1c4[_0x24e952(0x135)]??_0x33e1c4[_0x24e952(0xcc)]??[])[_0x24e952(0x110)](_0x4f9873=>'string'==typeof _0x4f9873?_0x4f9873:_0x4f9873[_0x24e952(0xe4)]??_0x4f9873[_0x24e952(0xbf)])[_0x24e952(0xe3)](_0x149cb0=>_0x149cb0&&!_0x149cb0[_0x24e952(0xbc)]('~'))[_0x24e952(0x11d)]();}}catch{}},'setRowRef'(_0xb81b12,_0x13b139,_0xf88b3d){const _0x53b70d=_0x25b1c1;_0x53b70d(0xcd)===_0x13b139?(_0xb81b12[_0x53b70d(0xcd)]=_0xf88b3d,_0xf88b3d||(_0xb81b12['refOnDelete']=_0x53b70d(0x111))):_0x53b70d(0x12a)===_0x13b139&&(_0xb81b12[_0x53b70d(0x12a)]=_0xf88b3d),this[_0x53b70d(0xca)]=!0x0;},'clearRowRef'(_0x1844d2){const _0x744dca=_0x25b1c1;_0x1844d2[_0x744dca(0xcd)]='',_0x1844d2[_0x744dca(0x12a)]=_0x744dca(0x111),this[_0x744dca(0xca)]=!0x0;},'setEditDefinition'(_0x1e3ede){this['editDefinition']=_0x1e3ede,this['dirty']=!0x0;},'setEditEnforce'(_0x242b8f){const _0x26dd60=_0x25b1c1;this[_0x26dd60(0x11a)]=_0x242b8f,this['dirty']=!0x0;},async 'generateFromData'(){const _0x1692fd=_0x25b1c1;if(_0x131272['$attr'][_0x1692fd(0xe4)]||_0x131272[_0x1692fd(0xcb)][_0x1692fd(0x11c)])try{let _0x37e99f;if(_0x131272[_0x1692fd(0xcb)][_0x1692fd(0x11c)]){const _0x4f3f65=await fetch(_0x131272[_0x1692fd(0xcb)][_0x1692fd(0x11c)]);if(!_0x4f3f65['ok'])throw new Error('Failed\x20to\x20fetch\x20samples');const _0x5227e7=await _0x4f3f65[_0x1692fd(0x126)]();_0x37e99f=(_0x5227e7[_0x1692fd(0x135)]??_0x5227e7[_0x1692fd(0x112)]??[])['map'](_0x3ebe6a=>_0x3ebe6a[_0x1692fd(0xc9)]??_0x3ebe6a['payload']??_0x3ebe6a['value']??_0x3ebe6a);}else{const _0x877008=await fetch(_0x131272[_0x1692fd(0xcb)][_0x1692fd(0xfd)]+_0x1692fd(0xff)+encodeURIComponent(_0x131272['$attr'][_0x1692fd(0xe4)])+_0x1692fd(0x11f),{'method':'POST','headers':{'Content-Type':_0x1692fd(0xc1)},'body':JSON[_0x1692fd(0xce)]({'filter':{},'options':{'limit':0x32}})});if(!_0x877008['ok'])throw new Error(_0x1692fd(0xd7));const _0x21f22e=await _0x877008['json']();_0x37e99f=(_0x21f22e['data']??_0x21f22e['result']??[])[_0x1692fd(0x110)](_0x5f2c66=>_0x5f2c66[_0x1692fd(0xc9)]??_0x5f2c66['value']??_0x5f2c66);}if(0x0===_0x37e99f[_0x1692fd(0xb5)])return void _0x131272[_0x1692fd(0x108)]['shared']?.[_0x1692fd(0x10a)]?.[_0x1692fd(0xc0)]?.(_0x1692fd(0x129));_0x131272[_0x1692fd(0x108)]['shared']?.['toast']?.[_0x1692fd(0xc0)]?.(_0x1692fd(0xdf)+_0x37e99f[_0x1692fd(0xb5)]+_0x1692fd(0x139));const _0x382bd0=this[_0x1692fd(0x11e)](_0x37e99f);this['editDefinition']=_0x382bd0,this[_0x1692fd(0x115)]=l(_0x382bd0),this[_0x1692fd(0x107)]=!0x1!==_0x382bd0[_0x1692fd(0x130)],this[_0x1692fd(0xca)]=!0x0;}catch(_0xc959b1){_0x131272[_0x1692fd(0x108)]['shared']?.['toast']?.[_0x1692fd(0xc2)]?.(_0xc959b1[_0x1692fd(0x125)]);}},'_inferSchemaFromData'(_0x503c4f){function _0xb2b17(_0x43fda9){const _0x45cd37=_0x3e25;return null===_0x43fda9?'null':Array['isArray'](_0x43fda9)?_0x45cd37(0xfc):'object'==typeof _0x43fda9?_0x45cd37(0x137):typeof _0x43fda9;}return function _0xd2750e(_0x5af55b){const _0x36264d=_0x3e25;let _0x14d27a=[...new Set(_0x5af55b[_0x36264d(0x110)](_0xb2b17)[_0x36264d(0xe3)](_0x34bd80=>_0x36264d(0x134)!==_0x34bd80))];if(0x0===_0x14d27a[_0x36264d(0xb5)])return{'type':_0x36264d(0xd5)};_0x14d27a[_0x36264d(0x103)](_0x36264d(0x114))&&_0x14d27a[_0x36264d(0xb5)]>0x1&&(_0x14d27a=_0x14d27a[_0x36264d(0xe3)](_0x496008=>_0x36264d(0x114)!==_0x496008));let _0x362a2e=0x1===_0x14d27a['length']?{'type':_0x14d27a[0x0]}:{'type':_0x14d27a};if(_0x14d27a[_0x36264d(0x103)](_0x36264d(0x137))){let _0x30dfc3={},_0x381e5d=new Set(_0x5af55b[_0x36264d(0xe3)](_0x5ce251=>_0x36264d(0x137)===_0xb2b17(_0x5ce251)&&null!==_0x5ce251)[_0x36264d(0x12b)](Object[_0x36264d(0xef)]));for(let _0x4333ed of _0x381e5d){let _0x4eda13=_0x5af55b[_0x36264d(0xe3)](_0xa0df3=>_0x36264d(0x137)===_0xb2b17(_0xa0df3)&&null!==_0xa0df3)['map'](_0x2338e7=>_0x2338e7[_0x4333ed]);_0x30dfc3[_0x4333ed]=_0xd2750e(_0x4eda13);}_0x362a2e['properties']=_0x30dfc3,_0x362a2e['additionalProperties']=!0x1;}if(_0x14d27a[_0x36264d(0x103)](_0x36264d(0xfc))){let _0x1c723=_0x5af55b[_0x36264d(0xe3)](_0x3f4c26=>_0x36264d(0xfc)===_0xb2b17(_0x3f4c26))[_0x36264d(0x119)]();_0x1c723[_0x36264d(0xb5)]>0x0&&(_0x362a2e[_0x36264d(0xd2)]=_0xd2750e(_0x1c723));}return _0x362a2e;}(_0x503c4f);},async 'save'(){const _0x4b3c20=_0x25b1c1;this['saveBusy']=!0x0,this['saveError']=null;try{const _0x2eb1be={'definition':'visual'===this[_0x4b3c20(0xea)]?s(this[_0x4b3c20(0x115)],this[_0x4b3c20(0x107)]):this['editDefinition'],'enforce':!!_0x131272[_0x4b3c20(0xcb)][_0x4b3c20(0xde)]||this[_0x4b3c20(0x11a)]},_0x475d48=_0x131272[_0x4b3c20(0xcb)][_0x4b3c20(0x100)]??_0x131272[_0x4b3c20(0xcb)][_0x4b3c20(0xfd)]+_0x4b3c20(0xff)+encodeURIComponent(_0x131272[_0x4b3c20(0xcb)]['type'])+_0x4b3c20(0xe2),_0x564454=await fetch(_0x475d48,{'method':_0x4b3c20(0x121),'headers':{'Content-Type':_0x4b3c20(0xc1)},'body':JSON[_0x4b3c20(0xce)](_0x2eb1be)});if(0x199===_0x564454[_0x4b3c20(0xed)]){const _0x5b0e80=await _0x564454[_0x4b3c20(0x126)]()['catch'](()=>({})),_0xc0c411=_0x5b0e80?.[_0x4b3c20(0xc2)]?.[_0x4b3c20(0xe6)]?.[_0x4b3c20(0x13d)]??_0x5b0e80?.[_0x4b3c20(0xe6)]?.['failures']??_0x5b0e80?.['error']?.[_0x4b3c20(0x135)]?.['failures']??[];if(_0xc0c411[_0x4b3c20(0xb5)]>0x0){const _0x508fea=_0xc0c411['slice'](0x0,0x5)[_0x4b3c20(0x110)](_0x7988ed=>_0x7988ed[_0x4b3c20(0xf7)])[_0x4b3c20(0x11b)](',\x20')+(_0xc0c411[_0x4b3c20(0xb5)]>0x5?'\x20…\x20(+'+(_0xc0c411['length']-0x5)+'\x20more)':'');this[_0x4b3c20(0xe7)]=_0x4b3c20(0xc3)+_0xc0c411[_0x4b3c20(0xb5)]+_0x4b3c20(0xb7)+_0x508fea;}else this[_0x4b3c20(0xe7)]=_0x5b0e80?.[_0x4b3c20(0xc2)]?.[_0x4b3c20(0x125)]||_0x5b0e80?.['message']||_0x4b3c20(0xb6);return;}if(!_0x564454['ok']){const _0x51df14=await _0x564454[_0x4b3c20(0x126)]()['catch'](()=>({}));throw new Error(_0x51df14?.[_0x4b3c20(0xc2)]?.[_0x4b3c20(0x125)]||_0x564454[_0x4b3c20(0xdd)]);}_0x131272[_0x4b3c20(0x108)][_0x4b3c20(0xe9)]?.['toast']?.[_0x4b3c20(0xd6)]?.(_0x4b3c20(0xc5)),await _0x131272[_0x4b3c20(0xcb)][_0x4b3c20(0x12c)]['close'](),await _0x131272[_0x4b3c20(0xcb)][_0x4b3c20(0xc6)]?.();}catch(_0x5ba561){this[_0x4b3c20(0xe7)]=_0x5ba561[_0x4b3c20(0x125)]||_0x4b3c20(0x128);}finally{this[_0x4b3c20(0x12d)]=!0x1;}},async 'remove'(){const _0x142caf=_0x25b1c1;if(await _0x131272[_0x142caf(0x108)][_0x142caf(0xe9)]['modal'][_0x142caf(0xfe)](_0x142caf(0xf4)+_0x131272[_0x142caf(0xcb)][_0x142caf(0xe4)]+'\x22?\x20Validation\x20will\x20be\x20disabled.'))try{const _0x492e42=_0x131272[_0x142caf(0xcb)][_0x142caf(0x100)]??_0x131272[_0x142caf(0xcb)][_0x142caf(0xfd)]+'/type/'+encodeURIComponent(_0x131272['$attr'][_0x142caf(0xe4)])+_0x142caf(0xe2),_0x12c9b8=await fetch(_0x492e42,{'method':_0x142caf(0xba)});if(!_0x12c9b8['ok']){const _0x4fc0aa=await _0x12c9b8[_0x142caf(0x126)]()[_0x142caf(0x10f)](()=>({}));throw new Error(_0x4fc0aa?.['error']?.[_0x142caf(0x125)]||_0x12c9b8['statusText']);}_0x131272[_0x142caf(0x108)][_0x142caf(0xe9)]?.[_0x142caf(0x10a)]?.[_0x142caf(0xc0)]?.('Schema\x20removed'),await _0x131272[_0x142caf(0xcb)][_0x142caf(0x12c)][_0x142caf(0x122)](),await _0x131272[_0x142caf(0xcb)][_0x142caf(0xc6)]?.();}catch(_0x538a00){_0x131272[_0x142caf(0x108)][_0x142caf(0xe9)]?.[_0x142caf(0x10a)]?.['error']?.(_0x538a00[_0x142caf(0x125)]||_0x142caf(0xec));}},'cancel'(){const _0x2583d8=_0x25b1c1;_0x131272[_0x2583d8(0xcb)]['modal'][_0x2583d8(0x122)]();}}),'init'(){const _0x2d2ba2=_0x25b1c1;this[_0x2d2ba2(0x123)](),this[_0x2d2ba2(0x13c)]();},'template':'\x0a<div\x20class=\x22sem-root\x22>\x0a\x0a\x20\x20<if\x20:=\x22saveBusy\x22>\x0a\x20\x20\x20\x20<ok-overlay>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22loader-center\x22><ok-icon\x20name=\x22loader\x22\x20class=\x22spin\x22\x20style=\x22width:32px;height:32px;\x22></ok-icon></div>\x0a\x20\x20\x20\x20</ok-overlay>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Toolbar\x20-->\x0a\x20\x20<div\x20class=\x22sem-toolbar\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22seg-toggle\x22>\x0a\x20\x20\x20\x20\x20\x20<button\x20:class=\x22mode\x20===\x20\x27visual\x27\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22switchToVisual()\x22>Visual</button>\x0a\x20\x20\x20\x20\x20\x20<button\x20:class=\x22mode\x20===\x20\x27json\x27\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22switchToJson()\x22>JSON</button>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<if\x20:=\x22!hideEnforce\x22>\x0a\x20\x20\x20\x20\x20\x20<label\x20style=\x22font-size:13px;\x20display:flex;\x20align-items:center;\x20gap:6px;\x20cursor:pointer;\x20user-select:none;\x20margin-left:16px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20:checked=\x22editEnforce\x22\x20@change=\x22setEditEnforce($event.target.checked)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20Enforce\x20mode\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:11px;\x20opacity:.4;\x22>(reject\x20writes\x20that\x20violate)</span>\x0a\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20<div\x20style=\x22margin-left:auto;\x20display:flex;\x20gap:8px;\x22>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22generateFromData()\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:11px;\x20padding:3px\x2010px;\x20opacity:.75;\x22\x20title=\x22Sample\x20latest\x20documents\x20to\x20build\x20a\x20schema\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22zap\x22></ok-icon>\x20Infer\x20from\x20data\x0a\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20═══════\x20Visual\x20mode\x20═══════\x20-->\x0a\x20\x20<if\x20:=\x22mode\x20===\x20\x27visual\x27\x22>\x0a\x20\x20<div\x20class=\x22sem-visual\x22>\x0a\x0a\x20\x20\x20\x20<!--\x20Properties\x20table\x20header\x20-->\x0a\x20\x20\x20\x20<div\x20class=\x22sem-props-hdr\x22>\x0a\x20\x20\x20\x20\x20\x20<div></div><div>Property</div><div>Type</div><div>Req</div><div>Null</div><div>Description</div><div></div>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<!--\x20Recursive\x20row\x20rendering\x20for\x20depth\x200\x20-->\x0a\x20\x20\x20\x20<each\x20:of=\x22rows\x22\x20let:item=\x22row\x22\x20let:index=\x22i\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20Main\x20property\x20row\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-props-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-expand-col\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22toggleRowExpanded(row)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20class=\x22sem-expand-btn\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22row.expanded\x20?\x20\x27sem-expanded\x27\x20:\x20\x27\x27\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Toggle\x20details\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>›</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-prop-name\x22><code>{{\x20row.name\x20}}</code></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20:value=\x22row.type\x22\x20@change=\x22setRowField(row,\x20\x27type\x27,\x20$event.target.value)\x22\x20style=\x22min-width:90px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22string\x22>string</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22number\x22>number</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22integer\x22>integer</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22boolean\x22>boolean</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22object\x22>object</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22array\x22>array</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22text-align:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20:checked=\x22row.required\x22\x20@change=\x22toggleRowRequired(row)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22text-align:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20:checked=\x22row.nullable\x22\x20@change=\x22toggleRowNullable(row)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22overflow:hidden;\x20min-width:0;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20:value=\x22row.description\x22\x20@input=\x22setRowField(row,\x20\x27description\x27,\x20$event.target.value)\x22\x20placeholder=\x22—\x22\x20style=\x22width:100%;\x20font-size:12px;\x20box-sizing:border-box;\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20justify-content:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22removeProperty(rows,\x20i)\x22\x20style=\x22color:var(--okdb-danger);\x20background:none;\x20border:none;\x20cursor:pointer;\x20padding:2px\x206px;\x20font-size:14px;\x20line-height:1;\x22\x20title=\x22Remove\x20property\x22>×</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20──\x20Expanded\x20detail\x20panel\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.expanded\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-detail-panel\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20──\x20String\x20constraints\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.type\x20===\x20\x27string\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-constraints-grid\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Format</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20:value=\x22row.format\x20||\x20\x27\x27\x22\x20@change=\x22setRowConstraint(row,\x20\x27format\x27,\x20$event.target.value)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22\x22>—</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22date-time\x22>date-time</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22date\x22>date</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22time\x22>time</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22email\x22>email</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22uri\x22>uri</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22uuid\x22>uuid</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22ipv4\x22>ipv4</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22ipv6\x22>ipv6</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22hostname\x22>hostname</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Min\x20Length</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20:value=\x22row.minLength\x20??\x20\x27\x27\x22\x20@input=\x22setRowConstraint(row,\x20\x27minLength\x27,\x20$event.target.value)\x22\x20min=\x220\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Max\x20Length</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20:value=\x22row.maxLength\x20??\x20\x27\x27\x22\x20@input=\x22setRowConstraint(row,\x20\x27maxLength\x27,\x20$event.target.value)\x22\x20min=\x220\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Pattern</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20:value=\x22row.pattern\x22\x20@input=\x22setRowConstraint(row,\x20\x27pattern\x27,\x20$event.target.value)\x22\x20placeholder=\x22regex…\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20──\x20Number\x20/\x20Integer\x20constraints\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.type\x20===\x20\x27number\x27\x20||\x20row.type\x20===\x20\x27integer\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-constraints-grid\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Minimum</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20:value=\x22row.minimum\x20??\x20\x27\x27\x22\x20@input=\x22setRowConstraint(row,\x20\x27minimum\x27,\x20$event.target.value)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Maximum</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20:value=\x22row.maximum\x20??\x20\x27\x27\x22\x20@input=\x22setRowConstraint(row,\x20\x27maximum\x27,\x20$event.target.value)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Excl.\x20Min</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20:value=\x22row.exclusiveMinimum\x20??\x20\x27\x27\x22\x20@input=\x22setRowConstraint(row,\x20\x27exclusiveMinimum\x27,\x20$event.target.value)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Excl.\x20Max</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20:value=\x22row.exclusiveMaximum\x20??\x20\x27\x27\x22\x20@input=\x22setRowConstraint(row,\x20\x27exclusiveMaximum\x27,\x20$event.target.value)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Multiple\x20Of</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20:value=\x22row.multipleOf\x20??\x20\x27\x27\x22\x20@input=\x22setRowConstraint(row,\x20\x27multipleOf\x27,\x20$event.target.value)\x22\x20min=\x220\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20──\x20Array\x20constraints\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.type\x20===\x20\x27array\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-constraints-grid\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Min\x20Items</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20:value=\x22row.minItems\x20??\x20\x27\x27\x22\x20@input=\x22setRowConstraint(row,\x20\x27minItems\x27,\x20$event.target.value)\x22\x20min=\x220\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Max\x20Items</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20:value=\x22row.maxItems\x20??\x20\x27\x27\x22\x20@input=\x22setRowConstraint(row,\x20\x27maxItems\x27,\x20$event.target.value)\x22\x20min=\x220\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Unique</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20style=\x22display:flex;\x20align-items:center;\x20gap:4px;\x20cursor:pointer;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20:checked=\x22row.uniqueItems\x22\x20@change=\x22setRowConstraint(row,\x20\x27uniqueItems\x27,\x20$event.target.checked)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20unique\x20items\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20──\x20Enum\x20(all\x20types)\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-constraint-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Enum</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20:value=\x22enumToString(row.enum)\x22\x20@change=\x22setRowConstraint(row,\x20\x27enum\x27,\x20$event.target.value)\x22\x20placeholder=\x22comma-separated\x20values…\x22\x20style=\x22flex:1;\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22sem-hint\x22>e.g.\x20active,\x20inactive,\x20pending</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20──\x20Foreign\x20Key\x20Reference\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.type\x20===\x20\x27string\x27\x20||\x20row.type\x20===\x20\x27integer\x27\x20||\x20row.type\x20===\x20\x27number\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-fk-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-fk-label\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22link\x22\x20style=\x22width:12px;\x20height:12px;\x20opacity:.6;\x22></ok-icon>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Foreign\x20Key\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-fk-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Target\x20type</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20:value=\x22row.refType\x20||\x20\x27\x27\x22\x20@change=\x22setRowRef(row,\x20\x27refType\x27,\x20$event.target.value)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22\x22>—\x20none\x20—</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22typesList\x22\x20let:item=\x22t\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20:value=\x22t\x22>{{\x20t\x20}}</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.refType\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>On\x20delete</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20:value=\x22row.refOnDelete\x20||\x20\x27no_action\x27\x22\x20@change=\x22setRowRef(row,\x20\x27refOnDelete\x27,\x20$event.target.value)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22no_action\x22>no\x20action</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22cascade\x22>cascade</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22set_null\x22>set\x20null</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22restrict\x22>restrict</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22clearRowRef(row)\x22\x20class=\x22sem-fk-clear\x22\x20title=\x22Remove\x20foreign\x20key\x22>×</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.refType\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-fk-hint\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20This\x20field\x20references\x20a\x20key\x20in\x20<strong>{{\x20row.refType\x20}}</strong>.\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.refOnDelete\x20===\x20\x27cascade\x27\x22>Deleting\x20the\x20target\x20will\x20delete\x20this\x20document.</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.refOnDelete\x20===\x20\x27set_null\x27\x22>Deleting\x20the\x20target\x20will\x20set\x20this\x20field\x20to\x20null.</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.refOnDelete\x20===\x20\x27restrict\x27\x22>Deleting\x20the\x20target\x20will\x20be\x20blocked\x20while\x20this\x20reference\x20exists.</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.refOnDelete\x20===\x20\x27no_action\x27\x22>Deleting\x20the\x20target\x20will\x20leave\x20this\x20field\x20as\x20a\x20dangling\x20reference.</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</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20──\x20Array\x20items\x20schema\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.type\x20===\x20\x27array\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-nested-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-nested-label\x22>Item\x20Schema</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.items\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-nested-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20:value=\x22row.items.type\x22\x20@change=\x22setRowField(row.items,\x20\x27type\x27,\x20$event.target.value)\x22\x20style=\x22min-width:90px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22string\x22>string</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22number\x22>number</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22integer\x22>integer</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22boolean\x22>boolean</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22object\x22>object</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22array\x22>array</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.items.type\x20===\x20\x27string\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20:value=\x22row.items.format\x20||\x20\x27\x27\x22\x20@change=\x22setRowConstraint(row.items,\x20\x27format\x27,\x20$event.target.value)\x22\x20title=\x22Format\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22\x22>no\x20format</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22date-time\x22>date-time</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22date\x22>date</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22email\x22>email</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22uri\x22>uri</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22uuid\x22>uuid</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20If\x20items\x20type\x20is\x20object,\x20show\x20nested\x20properties\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.items.type\x20===\x20\x27object\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-nested-children\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22row.items.children\x22\x20let:item=\x22child\x22\x20let:index=\x22ci\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-nested-child-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<code\x20class=\x22sem-child-name\x22>{{\x20child.name\x20}}</code>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20:value=\x22child.type\x22\x20@change=\x22setRowField(child,\x20\x27type\x27,\x20$event.target.value)\x22\x20style=\x22min-width:80px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22string\x22>string</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22number\x22>number</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22integer\x22>integer</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22boolean\x22>boolean</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22object\x22>object</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22array\x22>array</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20style=\x22font-size:11px;\x20display:flex;\x20align-items:center;\x20gap:3px;\x20cursor:pointer;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20:checked=\x22child.required\x22\x20@change=\x22toggleRowRequired(child)\x22\x20/>\x20req\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20style=\x22font-size:11px;\x20display:flex;\x20align-items:center;\x20gap:3px;\x20cursor:pointer;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20:checked=\x22child.nullable\x22\x20@change=\x22toggleRowNullable(child)\x22\x20/>\x20null\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22removeProperty(row.items.children,\x20ci)\x22\x20style=\x22color:var(--okdb-danger);\x20background:none;\x20border:none;\x20cursor:pointer;\x20font-size:13px;\x22>×</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-add-child-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20:value=\x22_newChildNames[\x27items_\x27\x20+\x20row.name]\x20||\x20\x27\x27\x22\x20@input=\x22_newChildNames[\x27items_\x27\x20+\x20row.name]\x20=\x20$event.target.value\x22\x20@keydown.enter=\x22addChildProperty(row.items,\x20\x27items_\x27\x20+\x20row.name)\x22\x20placeholder=\x22Add\x20item\x20property…\x22\x20style=\x22flex:1;\x20font-size:11px;\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22addChildProperty(row.items,\x20\x27items_\x27\x20+\x20row.name)\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:10px;\x20padding:2px\x208px;\x22>+</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20──\x20Nested\x20object\x20properties\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.type\x20===\x20\x27object\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-nested-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-nested-label\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Properties\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20style=\x22font-size:11px;\x20display:flex;\x20align-items:center;\x20gap:4px;\x20cursor:pointer;\x20margin-left:auto;\x20font-weight:normal;\x20opacity:.6;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20:checked=\x22row.childrenAdditionalProps\x22\x20@change=\x22setChildrenAdditionalProps(row,\x20$event.target.checked)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20allow\x20additional\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-nested-children\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22row.children\x22\x20let:item=\x22child\x22\x20let:index=\x22ci\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-nested-child-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<code\x20class=\x22sem-child-name\x22>{{\x20child.name\x20}}</code>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20:value=\x22child.type\x22\x20@change=\x22setRowField(child,\x20\x27type\x27,\x20$event.target.value)\x22\x20style=\x22min-width:80px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22string\x22>string</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22number\x22>number</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22integer\x22>integer</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22boolean\x22>boolean</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22object\x22>object</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22array\x22>array</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20style=\x22font-size:11px;\x20display:flex;\x20align-items:center;\x20gap:3px;\x20cursor:pointer;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20:checked=\x22child.required\x22\x20@change=\x22toggleRowRequired(child)\x22\x20/>\x20req\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20style=\x22font-size:11px;\x20display:flex;\x20align-items:center;\x20gap:3px;\x20cursor:pointer;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20:checked=\x22child.nullable\x22\x20@change=\x22toggleRowNullable(child)\x22\x20/>\x20null\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20:value=\x22child.description\x22\x20@input=\x22setRowField(child,\x20\x27description\x27,\x20$event.target.value)\x22\x20placeholder=\x22desc\x22\x20style=\x22flex:1;\x20font-size:11px;\x20min-width:60px;\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22removeProperty(row.children,\x20ci)\x22\x20style=\x22color:var(--okdb-danger);\x20background:none;\x20border:none;\x20cursor:pointer;\x20font-size:13px;\x22>×</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x202nd-level\x20nested:\x20show\x20sub-properties\x20for\x20object\x20children\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22child.type\x20===\x20\x27object\x27\x20&&\x20child.children.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-nested-l2\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22child.children\x22\x20let:item=\x22gc\x22\x20let:index=\x22gci\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-nested-child-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<code\x20class=\x22sem-child-name\x22\x20style=\x22font-size:10px;\x22>{{\x20gc.name\x20}}</code>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20:value=\x22gc.type\x22\x20@change=\x22setRowField(gc,\x20\x27type\x27,\x20$event.target.value)\x22\x20style=\x22min-width:70px;\x20font-size:11px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22string\x22>string</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22number\x22>number</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22integer\x22>integer</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22boolean\x22>boolean</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22object\x22>object</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22array\x22>array</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20style=\x22font-size:10px;\x20display:flex;\x20align-items:center;\x20gap:2px;\x20cursor:pointer;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20:checked=\x22gc.required\x22\x20@change=\x22toggleRowRequired(gc)\x22\x20/>\x20req\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22removeProperty(child.children,\x20gci)\x22\x20style=\x22color:var(--okdb-danger);\x20background:none;\x20border:none;\x20cursor:pointer;\x20font-size:12px;\x22>×</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-add-child-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20:value=\x22_newChildNames[\x27l2_\x27\x20+\x20row.name\x20+\x20\x27.\x27\x20+\x20child.name]\x20||\x20\x27\x27\x22\x20@input=\x22_newChildNames[\x27l2_\x27\x20+\x20row.name\x20+\x20\x27.\x27\x20+\x20child.name]\x20=\x20$event.target.value\x22\x20@keydown.enter=\x22addChildProperty(child,\x20\x27l2_\x27\x20+\x20row.name\x20+\x20\x27.\x27\x20+\x20child.name)\x22\x20placeholder=\x22Add\x20sub-property…\x22\x20style=\x22flex:1;\x20font-size:10px;\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22addChildProperty(child,\x20\x27l2_\x27\x20+\x20row.name\x20+\x20\x27.\x27\x20+\x20child.name)\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:10px;\x20padding:2px\x206px;\x22>+</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22child.type\x20===\x20\x27object\x27\x20&&\x20child.children.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-add-child-row\x22\x20style=\x22margin-left:24px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20:value=\x22_newChildNames[\x27l2_\x27\x20+\x20row.name\x20+\x20\x27.\x27\x20+\x20child.name]\x20||\x20\x27\x27\x22\x20@input=\x22_newChildNames[\x27l2_\x27\x20+\x20row.name\x20+\x20\x27.\x27\x20+\x20child.name]\x20=\x20$event.target.value\x22\x20@keydown.enter=\x22addChildProperty(child,\x20\x27l2_\x27\x20+\x20row.name\x20+\x20\x27.\x27\x20+\x20child.name)\x22\x20placeholder=\x22Add\x20sub-property…\x22\x20style=\x22flex:1;\x20font-size:10px;\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22addChildProperty(child,\x20\x27l2_\x27\x20+\x20row.name\x20+\x20\x27.\x27\x20+\x20child.name)\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:10px;\x20padding:2px\x206px;\x22>+</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-add-child-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20:value=\x22_newChildNames[\x27obj_\x27\x20+\x20row.name]\x20||\x20\x27\x27\x22\x20@input=\x22_newChildNames[\x27obj_\x27\x20+\x20row.name]\x20=\x20$event.target.value\x22\x20@keydown.enter=\x22addChildProperty(row,\x20\x27obj_\x27\x20+\x20row.name)\x22\x20placeholder=\x22Add\x20property…\x22\x20style=\x22flex:1;\x20font-size:11px;\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22addChildProperty(row,\x20\x27obj_\x27\x20+\x20row.name)\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:10px;\x20padding:2px\x208px;\x22>+</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20</each>\x0a\x0a\x20\x20\x20\x20<if\x20:=\x22rows.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:16px\x200;\x20opacity:.4;\x20font-size:13px;\x22>No\x20properties\x20defined\x20yet.\x20Add\x20one\x20below.</div>\x0a\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20<!--\x20Add\x20property\x20-->\x0a\x20\x20\x20\x20<div\x20class=\x22sem-add-row\x22>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20:value=\x22newPropName\x22\x20@input=\x22newPropName\x20=\x20$event.target.value\x22\x20@keydown.enter=\x22addProperty()\x22\x20placeholder=\x22New\x20property\x20name…\x22\x20style=\x22flex:1;\x20min-width:140px;\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22addProperty()\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:12px;\x20padding:3px\x2012px;\x22\x20:disabled=\x22!newPropName.trim()\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22plus\x22></ok-icon>Add\x0a\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<!--\x20Additional\x20properties\x20toggle\x20-->\x0a\x20\x20\x20\x20<label\x20style=\x22font-size:12px;\x20display:flex;\x20align-items:center;\x20gap:6px;\x20cursor:pointer;\x20user-select:none;\x20padding:8px\x200\x200;\x22>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20:checked=\x22additionalProps\x22\x20@change=\x22setAdditionalProps($event.target.checked)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20Allow\x20additional\x20properties\x0a\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:11px;\x20opacity:.4;\x22>(fields\x20not\x20listed\x20above)</span>\x0a\x20\x20\x20\x20</label>\x0a\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20═══════\x20JSON\x20mode\x20═══════\x20-->\x0a\x20\x20<if\x20:=\x22mode\x20===\x20\x27json\x27\x22>\x0a\x20\x20<div\x20class=\x22sem-json\x22>\x0a\x20\x20\x20\x20<ok-json-input\x0a\x20\x20\x20\x20\x20\x20:value=\x22editDefinition\x22\x0a\x20\x20\x20\x20\x20\x20@change=\x22setEditDefinition($event.detail)\x22\x0a\x20\x20\x20\x20\x20\x20style=\x22min-height:300px;\x20flex:1;\x20width:100%;\x22>\x0a\x20\x20\x20\x20</ok-json-input>\x0a\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Save\x20error\x20-->\x0a\x20\x20<if\x20:=\x22saveError\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22sem-error\x22>{{\x20saveError\x20}}</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Actions\x20-->\x0a\x20\x20<div\x20class=\x22sem-actions\x22>\x0a\x20\x20\x20\x20<button\x20@click=\x22cancel()\x22\x20style=\x22opacity:.7;\x22>Cancel</button>\x0a\x20\x20\x20\x20<if\x20:=\x22hasSchema\x22>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22remove()\x22\x20class=\x22btn-icon\x22\x20style=\x22color:var(--okdb-danger);\x20opacity:.8;\x20font-size:12px;\x20padding:5px\x2012px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22trash-2\x22></ok-icon>Remove\x20schema\x0a\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20<button\x20@click=\x22save()\x22\x20:disabled=\x22saveBusy\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:12px;\x20padding:5px\x2014px;\x20margin-left:auto;\x22>\x0a\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22save\x22></ok-icon>\x0a\x20\x20\x20\x20\x20\x20{{\x20hasSchema\x20?\x20\x27Update\x20Schema\x27\x20:\x20\x27Set\x20Schema\x27\x20}}\x0a\x20\x20\x20\x20</button>\x0a\x20\x20</div>\x0a</div>\x0a','style':'\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-root\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-direction:\x20column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20min-width:\x20640px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20max-width:\x20960px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20position:\x20relative;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-toolbar\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-wrap:\x20wrap;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-visual\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-direction:\x20column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20max-height:\x2060vh;\x0a\x20\x20\x20\x20\x20\x20\x20\x20overflow:\x20auto;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-props-hdr\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20grid;\x0a\x20\x20\x20\x20\x20\x20\x20\x20grid-template-columns:\x2028px\x20minmax(100px,\x201.5fr)\x20110px\x2036px\x2036px\x201fr\x2032px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x200\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x200\x200\x206px;\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-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.4;\x0a\x20\x20\x20\x20\x20\x20\x20\x20text-transform:\x20uppercase;\x0a\x20\x20\x20\x20\x20\x20\x20\x20letter-spacing:\x20.04em;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-props-row\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20grid;\x0a\x20\x20\x20\x20\x20\x20\x20\x20grid-template-columns:\x2028px\x20minmax(100px,\x201.5fr)\x20110px\x2036px\x2036px\x201fr\x2032px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x200\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\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}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-expand-col\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\x20justify-content:\x20center;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-expand-btn\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20none;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x20none;\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-app-fg-muted);\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2016px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20cursor:\x20pointer;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x200\x204px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20transition:\x20transform\x20.15s;\x0a\x20\x20\x20\x20\x20\x20\x20\x20line-height:\x201;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.5;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-expand-btn:hover\x20{\x20opacity:\x201;\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-expand-btn.sem-expanded\x20{\x20transform:\x20rotate(90deg);\x20opacity:\x20.8;\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-prop-name\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20overflow:\x20hidden;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-prop-name\x20code\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-json-key);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20/*\x20──\x20Detail\x20/\x20constraints\x20panel\x20──\x20*/\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-detail-panel\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x208px\x2012px\x2012px\x2036px;\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:\x2010px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-constraints-grid\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20grid;\x0a\x20\x20\x20\x20\x20\x20\x20\x20grid-template-columns:\x2080px\x201fr\x2080px\x201fr;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x206px\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-constraints-grid\x20label\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.55;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20white-space:\x20nowrap;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-constraints-grid\x20input,\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-constraints-grid\x20select\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x203px\x206px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-constraint-row\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-constraint-row\x20label\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.55;\x0a\x20\x20\x20\x20\x20\x20\x20\x20white-space:\x20nowrap;\x0a\x20\x20\x20\x20\x20\x20\x20\x20min-width:\x2040px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-hint\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.35;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20white-space:\x20nowrap;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20/*\x20──\x20Nested\x20object/array\x20section\x20──\x20*/\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-nested-section\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-left:\x202px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding-left:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20margin-top:\x202px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-nested-label\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-weight:\x20600;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.6;\x0a\x20\x20\x20\x20\x20\x20\x20\x20text-transform:\x20uppercase;\x0a\x20\x20\x20\x20\x20\x20\x20\x20letter-spacing:\x20.04em;\x0a\x20\x20\x20\x20\x20\x20\x20\x20margin-bottom:\x206px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x208px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-nested-row\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20margin-bottom:\x206px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-nested-children\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-direction:\x20column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x200;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-nested-child-row\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x204px\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x201px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-app-border)\x2040%,\x20transparent);\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-child-name\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-purple);\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-family:\x20monospace;\x0a\x20\x20\x20\x20\x20\x20\x20\x20min-width:\x2060px;\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\x20schema-edit-modal\x20.sem-nested-l2\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20margin-left:\x2024px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-left:\x201px\x20solid\x20var(--okdb-app-border)66;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding-left:\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20margin-bottom:\x204px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-add-child-row\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x206px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x204px\x200;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-add-row\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2010px\x200\x200;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20/*\x20──\x20Foreign\x20key\x20section\x20──\x20*/\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-fk-section\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20#6366f133;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x206px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x208px\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20#6366f108;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-fk-label\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-weight:\x20600;\x0a\x20\x20\x20\x20\x20\x20\x20\x20text-transform:\x20uppercase;\x0a\x20\x20\x20\x20\x20\x20\x20\x20letter-spacing:\x20.04em;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.7;\x0a\x20\x20\x20\x20\x20\x20\x20\x20margin-bottom:\x206px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x205px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-indigo);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-fk-row\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-fk-row\x20label\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.55;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20white-space:\x20nowrap;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-fk-row\x20select\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x203px\x206px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20min-width:\x20100px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-fk-clear\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20none;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x20none;\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-danger);\x0a\x20\x20\x20\x20\x20\x20\x20\x20cursor:\x20pointer;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2014px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x202px\x206px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20line-height:\x201;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.7;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-fk-clear:hover\x20{\x20opacity:\x201;\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-fk-hint\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.5;\x0a\x20\x20\x20\x20\x20\x20\x20\x20margin-top:\x205px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20line-height:\x201.4;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-fk-hint\x20strong\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-indigo);\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x201;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-json\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-direction:\x20column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20min-height:\x20300px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-error\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-danger);\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x208px\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-danger)\x2020%,\x20transparent);\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20color-mix(in\x20srgb,\x20var(--okdb-danger)\x204%,\x20transparent);\x0a\x20\x20\x20\x20\x20\x20\x20\x20white-space:\x20pre-wrap;\x0a\x20\x20\x20\x20\x20\x20\x20\x20line-height:\x201.5;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-actions\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding-top:\x204px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-top:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20'};
|