@kedem/okdb 1.0.0 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- 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/public/images/logo.png +0 -0
- package/public/images/logo.svg +0 -333
|
@@ -1 +1 @@
|
|
|
1
|
-
const _0x1fac42=_0x2256;(function(_0x5b6902,_0x11b7e2){const _0x442d71=_0x2256,_0x4338d7=_0x5b6902();while(!![]){try{const _0x5c3336=-parseInt(_0x442d71(0x235))/0x1*(-parseInt(_0x442d71(0x1ce))/0x2)+-parseInt(_0x442d71(0x1f8))/0x3*(-parseInt(_0x442d71(0x1f1))/0x4)+-parseInt(_0x442d71(0x23a))/0x5*(parseInt(_0x442d71(0x220))/0x6)+parseInt(_0x442d71(0x1de))/0x7*(parseInt(_0x442d71(0x232))/0x8)+-parseInt(_0x442d71(0x212))/0x9*(parseInt(_0x442d71(0x1fc))/0xa)+-parseInt(_0x442d71(0x243))/0xb+-parseInt(_0x442d71(0x226))/0xc*(parseInt(_0x442d71(0x1f0))/0xd);if(_0x5c3336===_0x11b7e2)break;else _0x4338d7['push'](_0x4338d7['shift']());}catch(_0x42a670){_0x4338d7['push'](_0x4338d7['shift']());}}}(_0x2732,0x8dc28));function _0x2256(_0xd2c662,_0x4f7b4c){_0xd2c662=_0xd2c662-0x1c3;const _0x273274=_0x2732();let _0x225602=_0x273274[_0xd2c662];return _0x225602;}import _0x1a4718 from'@toolkit/elements/ok-icon.ok.js';import _0x2f47db from'@toolkit/core/ok-overlay.ok.js';import _0x5364b4 from'../../../components/ok-json-input.ok.js';function i(_0x35013e){const _0x1dac9f=_0x2256;return null==_0x35013e?_0x35013e:JSON[_0x1dac9f(0x247)](JSON[_0x1dac9f(0x213)](_0x35013e));}function o(_0x48b788='',_0x4797da='string'){return{'name':_0x48b788,'type':_0x4797da,'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(_0x39a853,_0x2e7bba,_0x41c187,_0x14a681=0x0){const _0x152cd2=_0x2256,_0x3e5855=_0x2e7bba['type'];let _0x279a68,_0xfdb3e4=!0x1;Array[_0x152cd2(0x1fb)](_0x3e5855)?(_0xfdb3e4=_0x3e5855[_0x152cd2(0x1d7)](_0x152cd2(0x1c9)),_0x279a68=_0x3e5855['find'](_0x5dea75=>_0x152cd2(0x1c9)!==_0x5dea75)||'string'):_0x279a68=_0x3e5855||_0x152cd2(0x1d5);const _0x317726=o(_0x39a853,_0x279a68);if(_0x317726['nullable']=_0xfdb3e4,_0x317726[_0x152cd2(0x1e2)]=_0x41c187,_0x317726['description']=_0x2e7bba[_0x152cd2(0x207)]||'',Array[_0x152cd2(0x1fb)](_0x2e7bba['enum'])&&(_0x317726['enum']=_0x2e7bba[_0x152cd2(0x248)]),void 0x0!==_0x2e7bba[_0x152cd2(0x22a)]&&(_0x317726[_0x152cd2(0x22a)]={'value':_0x2e7bba[_0x152cd2(0x22a)]}),_0x2e7bba[_0x152cd2(0x20f)]&&(_0x317726['format']=_0x2e7bba['format']),void 0x0!==_0x2e7bba[_0x152cd2(0x205)]&&(_0x317726[_0x152cd2(0x205)]=_0x2e7bba[_0x152cd2(0x205)]),void 0x0!==_0x2e7bba[_0x152cd2(0x1cd)]&&(_0x317726[_0x152cd2(0x1cd)]=_0x2e7bba['maximum']),void 0x0!==_0x2e7bba[_0x152cd2(0x1ed)]&&(_0x317726[_0x152cd2(0x1ed)]=_0x2e7bba[_0x152cd2(0x1ed)]),void 0x0!==_0x2e7bba[_0x152cd2(0x1d0)]&&(_0x317726['exclusiveMaximum']=_0x2e7bba[_0x152cd2(0x1d0)]),void 0x0!==_0x2e7bba[_0x152cd2(0x20d)]&&(_0x317726['multipleOf']=_0x2e7bba['multipleOf']),void 0x0!==_0x2e7bba[_0x152cd2(0x1ec)]&&(_0x317726[_0x152cd2(0x1ec)]=_0x2e7bba[_0x152cd2(0x1ec)]),void 0x0!==_0x2e7bba[_0x152cd2(0x1ee)]&&(_0x317726[_0x152cd2(0x1ee)]=_0x2e7bba['maxLength']),_0x2e7bba[_0x152cd2(0x1dd)]&&(_0x317726[_0x152cd2(0x1dd)]=_0x2e7bba[_0x152cd2(0x1dd)]),void 0x0!==_0x2e7bba['minItems']&&(_0x317726['minItems']=_0x2e7bba['minItems']),void 0x0!==_0x2e7bba[_0x152cd2(0x1d1)]&&(_0x317726['maxItems']=_0x2e7bba[_0x152cd2(0x1d1)]),!0x0===_0x2e7bba[_0x152cd2(0x20c)]&&(_0x317726[_0x152cd2(0x20c)]=!0x0),_0x2e7bba['ref']&&_0x152cd2(0x225)==typeof _0x2e7bba[_0x152cd2(0x1d9)]&&_0x2e7bba['ref'][_0x152cd2(0x1e7)]&&(_0x317726['refType']=_0x2e7bba['ref'][_0x152cd2(0x1e7)],_0x317726[_0x152cd2(0x1cc)]=_0x2e7bba['ref'][_0x152cd2(0x1c4)]||_0x152cd2(0x1f3)),_0x152cd2(0x225)===_0x279a68&&_0x2e7bba[_0x152cd2(0x221)]&&_0x14a681<0x4){const _0x33a2e3=new Set(_0x2e7bba[_0x152cd2(0x1e2)]||[]);_0x317726[_0x152cd2(0x202)]=Object[_0x152cd2(0x20b)](_0x2e7bba[_0x152cd2(0x221)])[_0x152cd2(0x22d)](([_0x36428e,_0xb4adb0])=>a(_0x36428e,_0xb4adb0,_0x33a2e3[_0x152cd2(0x228)](_0x36428e),_0x14a681+0x1)),_0x317726[_0x152cd2(0x234)]=!0x1!==_0x2e7bba[_0x152cd2(0x208)];}_0x152cd2(0x244)===_0x279a68&&_0x2e7bba[_0x152cd2(0x206)]&&_0x152cd2(0x225)==typeof _0x2e7bba['items']&&_0x14a681<0x4&&(_0x317726[_0x152cd2(0x206)]=a(_0x152cd2(0x21f),_0x2e7bba['items'],!0x1,_0x14a681+0x1));const _0xb6a811=new Set([_0x152cd2(0x1e7),'description',_0x152cd2(0x248),_0x152cd2(0x22a),_0x152cd2(0x20f),_0x152cd2(0x205),_0x152cd2(0x1cd),_0x152cd2(0x1ed),_0x152cd2(0x1d0),_0x152cd2(0x20d),'minLength','maxLength',_0x152cd2(0x1dd),_0x152cd2(0x1f5),'maxItems','uniqueItems','properties',_0x152cd2(0x1e2),_0x152cd2(0x208),_0x152cd2(0x206),'default',_0x152cd2(0x1d2),_0x152cd2(0x1c5),_0x152cd2(0x1d9)]);for(const _0x36bf46 of Object[_0x152cd2(0x200)](_0x2e7bba))_0xb6a811['has'](_0x36bf46)||(_0x317726[_0x152cd2(0x215)][_0x36bf46]=i(_0x2e7bba[_0x36bf46]));return _0x317726;}function r(_0x554f16){const _0x25c120=_0x2256,_0x3ccdb0={};if(_0x554f16['nullable']&&_0x25c120(0x1c9)!==_0x554f16['type']?_0x3ccdb0[_0x25c120(0x1e7)]=[_0x554f16[_0x25c120(0x1e7)],_0x25c120(0x1c9)]:_0x3ccdb0[_0x25c120(0x1e7)]=_0x554f16[_0x25c120(0x1e7)],_0x554f16[_0x25c120(0x207)]&&(_0x3ccdb0[_0x25c120(0x207)]=_0x554f16[_0x25c120(0x207)]),_0x554f16['enum']&&_0x554f16[_0x25c120(0x248)]['length']>0x0&&(_0x3ccdb0[_0x25c120(0x248)]=_0x554f16[_0x25c120(0x248)]),null!==_0x554f16['const']&&void 0x0!==_0x554f16[_0x25c120(0x22a)]&&(_0x3ccdb0[_0x25c120(0x22a)]=_0x554f16[_0x25c120(0x22a)][_0x25c120(0x245)]),_0x554f16['format']&&(_0x3ccdb0[_0x25c120(0x20f)]=_0x554f16[_0x25c120(0x20f)]),null!==_0x554f16['minimum']&&void 0x0!==_0x554f16[_0x25c120(0x205)]&&(_0x3ccdb0[_0x25c120(0x205)]=_0x554f16[_0x25c120(0x205)]),null!==_0x554f16[_0x25c120(0x1cd)]&&void 0x0!==_0x554f16[_0x25c120(0x1cd)]&&(_0x3ccdb0[_0x25c120(0x1cd)]=_0x554f16[_0x25c120(0x1cd)]),null!==_0x554f16[_0x25c120(0x1ed)]&&void 0x0!==_0x554f16[_0x25c120(0x1ed)]&&(_0x3ccdb0[_0x25c120(0x1ed)]=_0x554f16[_0x25c120(0x1ed)]),null!==_0x554f16[_0x25c120(0x1d0)]&&void 0x0!==_0x554f16[_0x25c120(0x1d0)]&&(_0x3ccdb0['exclusiveMaximum']=_0x554f16[_0x25c120(0x1d0)]),null!==_0x554f16['multipleOf']&&void 0x0!==_0x554f16[_0x25c120(0x20d)]&&(_0x3ccdb0[_0x25c120(0x20d)]=_0x554f16[_0x25c120(0x20d)]),null!==_0x554f16[_0x25c120(0x1ec)]&&void 0x0!==_0x554f16[_0x25c120(0x1ec)]&&(_0x3ccdb0['minLength']=_0x554f16[_0x25c120(0x1ec)]),null!==_0x554f16['maxLength']&&void 0x0!==_0x554f16['maxLength']&&(_0x3ccdb0[_0x25c120(0x1ee)]=_0x554f16['maxLength']),_0x554f16[_0x25c120(0x1dd)]&&(_0x3ccdb0[_0x25c120(0x1dd)]=_0x554f16[_0x25c120(0x1dd)]),null!==_0x554f16['minItems']&&void 0x0!==_0x554f16[_0x25c120(0x1f5)]&&(_0x3ccdb0['minItems']=_0x554f16[_0x25c120(0x1f5)]),null!==_0x554f16[_0x25c120(0x1d1)]&&void 0x0!==_0x554f16['maxItems']&&(_0x3ccdb0[_0x25c120(0x1d1)]=_0x554f16[_0x25c120(0x1d1)]),_0x554f16[_0x25c120(0x20c)]&&(_0x3ccdb0[_0x25c120(0x20c)]=!0x0),_0x554f16['refType']&&(_0x3ccdb0['ref']={'type':_0x554f16[_0x25c120(0x237)]},_0x554f16[_0x25c120(0x1cc)]&&_0x25c120(0x1f3)!==_0x554f16[_0x25c120(0x1cc)]&&(_0x3ccdb0[_0x25c120(0x1d9)][_0x25c120(0x1c4)]=_0x554f16[_0x25c120(0x1cc)])),_0x25c120(0x225)===_0x554f16[_0x25c120(0x1e7)]&&_0x554f16[_0x25c120(0x202)][_0x25c120(0x23f)]>0x0){_0x3ccdb0[_0x25c120(0x221)]={};const _0x27268b=[];for(const _0x1e03f6 of _0x554f16[_0x25c120(0x202)])_0x3ccdb0[_0x25c120(0x221)][_0x1e03f6['name']]=r(_0x1e03f6),_0x1e03f6['required']&&_0x27268b[_0x25c120(0x1eb)](_0x1e03f6['name']);_0x27268b['length']>0x0&&(_0x3ccdb0[_0x25c120(0x1e2)]=_0x27268b),_0x3ccdb0[_0x25c120(0x208)]=_0x554f16['childrenAdditionalProps'];}if(_0x25c120(0x244)===_0x554f16['type']&&_0x554f16[_0x25c120(0x206)]&&(_0x3ccdb0[_0x25c120(0x206)]=r(_0x554f16[_0x25c120(0x206)])),_0x554f16[_0x25c120(0x215)]){for(const [_0x34e7e5,_0xfb0fea]of Object[_0x25c120(0x20b)](_0x554f16[_0x25c120(0x215)]))_0x3ccdb0[_0x34e7e5]=i(_0xfb0fea);}return _0x3ccdb0;}function l(_0x46e277){const _0x3de043=_0x2256;if(!_0x46e277||!_0x46e277[_0x3de043(0x221)])return[];const _0x12093e=new Set(_0x46e277[_0x3de043(0x1e2)]||[]);return Object[_0x3de043(0x20b)](_0x46e277[_0x3de043(0x221)])[_0x3de043(0x22d)](([_0x46cf09,_0x3b901d])=>a(_0x46cf09,_0x3b901d,_0x12093e['has'](_0x46cf09),0x0));}function _0x2732(){const _0x45a209=['enforce','type','\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','name','split','push','minLength','exclusiveMinimum','maxLength','flatMap','39RtsOTI','1443588RBAckL','/types','no_action','No\x20documents\x20found\x20to\x20infer\x20schema\x20from.','minItems','/query','failures','3giKSfP','editDefinition','$attr','isArray','4407220CYIzdC','Schema\x20saved','toast','dirty','keys','\x22?\x20Validation\x20will\x20be\x20disabled.','children','Remove\x20schema\x20from\x20\x22','Schema\x20conflicts\x20with\x20existing\x20data','minimum','items','description','additionalProperties','_newChildNames','_inferSchemaFromData','entries','uniqueItems','multipleOf','schema','format','Property\x20\x22','Failed\x20to\x20fetch\x20samples','9HHYYHF','stringify','newPropName','_extra','modal','rows','json','Inferring\x20from\x20','catch','filter','status','hideEnforce','some','(item)','1380WoFnnv','properties','mode','DELETE','payload','object','1048164xcyCoV','POST','has','saveError','const','undefined','/type/','map','samplesUrl','join','message','trim','4048032OoyOFw','saveUrl','childrenAdditionalProps','23VRaMUa','confirm','refType','close','expanded','8630bDhilB','schema-edit-modal','Remove\x20failed','doc','Cannot\x20enable\x20enforce\x20—\x20','length','editEnforce','key','flat','7794941knCPWp','array','value','nullable','parse','enum','Failed\x20to\x20fetch\x20data','definition','success','envApiBase','error','application/json','onDelete','$defs','data','\x22\x20already\x20exists','\x20more)','null','loadTypesList','result','refOnDelete','maximum','88358QolCkv','\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','exclusiveMaximum','maxItems','$ref','PUT','Save\x20failed','string','details','includes','onDone','ref','visual','info','splice','pattern','14EBGNNF','additionalProps','shared','$ok','required','sort','/schema','saveBusy'];_0x2732=function(){return _0x45a209;};return _0x2732();}function s(_0x5bcae5,_0x4bb60d){const _0x5525bf=_0x2256,_0x221fe4={},_0x86bd40=[];for(const _0xedf591 of _0x5bcae5)_0x221fe4[_0xedf591['name']]=r(_0xedf591),_0xedf591['required']&&_0x86bd40[_0x5525bf(0x1eb)](_0xedf591['name']);const _0x15843a={'type':'object','properties':_0x221fe4};return _0x86bd40[_0x5525bf(0x23f)]>0x0&&(_0x15843a[_0x5525bf(0x1e2)]=_0x86bd40),_0x15843a[_0x5525bf(0x208)]=_0x4bb60d,_0x15843a;}export default{'tag':_0x1fac42(0x23b),'dependencies':[_0x1a4718,_0x2f47db,_0x5364b4],'attr':{'modal':{},'type':{},'schema':{},'envApiBase':{},'onDone':{},'saveUrl':{},'samplesUrl':{},'hideEnforce':{}},'context':_0xf6e1d8=>({'mode':_0x1fac42(0x1da),'editDefinition':{},'editEnforce':!0x1,'rows':[],'additionalProps':!0x0,'saveBusy':!0x1,'saveError':null,'dirty':!0x1,'newPropName':'','_newChildNames':{},'typesList':[],get 'hasSchema'(){const _0x597805=_0x1fac42;return!!_0xf6e1d8[_0x597805(0x1fa)]['schema'];},get 'hideEnforce'(){const _0x42016b=_0x1fac42;return!!_0xf6e1d8[_0x42016b(0x1fa)][_0x42016b(0x21d)];},'_init'(){const _0x4a398b=_0x1fac42,_0x443001=_0xf6e1d8['$attr'][_0x4a398b(0x20e)];_0x443001?.[_0x4a398b(0x24a)]?(this['editDefinition']=i(_0x443001['definition']),this[_0x4a398b(0x240)]=_0x443001[_0x4a398b(0x1e6)]??!0x1):(this[_0x4a398b(0x1f9)]={'type':_0x4a398b(0x225),'properties':{},'additionalProperties':!0x0},this[_0x4a398b(0x240)]=!0x1),this[_0x4a398b(0x217)]=l(this[_0x4a398b(0x1f9)]),this[_0x4a398b(0x1df)]=!0x1!==this['editDefinition']['additionalProperties'],this[_0x4a398b(0x1ff)]=!0x1,this[_0x4a398b(0x229)]=null;},'switchToVisual'(){const _0x30caa5=_0x1fac42;this[_0x30caa5(0x217)]=l(this[_0x30caa5(0x1f9)]),this[_0x30caa5(0x1df)]=!0x1!==this[_0x30caa5(0x1f9)][_0x30caa5(0x208)],this[_0x30caa5(0x222)]='visual';},'switchToJson'(){const _0x2e4e09=_0x1fac42;this['editDefinition']=s(this[_0x2e4e09(0x217)],this[_0x2e4e09(0x1df)]),this[_0x2e4e09(0x222)]=_0x2e4e09(0x218);},'addProperty'(){const _0x1a3e3e=_0x1fac42,_0x486bac=(this[_0x1a3e3e(0x214)]||'')['trim']();_0x486bac&&(this['rows'][_0x1a3e3e(0x21e)](_0x51b346=>_0x51b346['name']===_0x486bac)?_0xf6e1d8[_0x1a3e3e(0x1e1)][_0x1a3e3e(0x1e0)]?.[_0x1a3e3e(0x1fe)]?.[_0x1a3e3e(0x24d)]?.(_0x1a3e3e(0x210)+_0x486bac+_0x1a3e3e(0x1c7)):(this['rows'][_0x1a3e3e(0x1eb)](o(_0x486bac)),this['newPropName']='',this[_0x1a3e3e(0x1ff)]=!0x0));},'addChildProperty'(_0xcb646,_0x12cdca){const _0x301f6f=_0x1fac42,_0x1c4310=(this[_0x301f6f(0x209)][_0x12cdca]||'')['trim']();_0x1c4310&&(_0xcb646[_0x301f6f(0x202)][_0x301f6f(0x21e)](_0x118ebb=>_0x118ebb['name']===_0x1c4310)?_0xf6e1d8[_0x301f6f(0x1e1)]['shared']?.[_0x301f6f(0x1fe)]?.['error']?.('Property\x20\x22'+_0x1c4310+_0x301f6f(0x1c7)):(_0xcb646[_0x301f6f(0x202)][_0x301f6f(0x1eb)](o(_0x1c4310)),this[_0x301f6f(0x209)][_0x12cdca]='',this['dirty']=!0x0));},'removeProperty'(_0x3cb0d0,_0x13bf4a){const _0x239da7=_0x1fac42;_0x3cb0d0[_0x239da7(0x1dc)](_0x13bf4a,0x1),this[_0x239da7(0x1ff)]=!0x0;},'setRowField'(_0x1dba3a,_0x4ca300,_0x411e17){const _0xe22deb=_0x1fac42;_0x1dba3a[_0x4ca300]=_0x411e17,'type'===_0x4ca300&&('object'===_0x411e17&&0x0===_0x1dba3a[_0xe22deb(0x202)][_0xe22deb(0x23f)]&&(_0x1dba3a[_0xe22deb(0x202)]=[],_0x1dba3a[_0xe22deb(0x234)]=!0x0),'array'!==_0x411e17||_0x1dba3a[_0xe22deb(0x206)]||(_0x1dba3a[_0xe22deb(0x206)]=o(_0xe22deb(0x21f),_0xe22deb(0x1d5)))),this[_0xe22deb(0x1ff)]=!0x0;},'toggleRowExpanded'(_0x32b298){const _0x4d65e8=_0x1fac42;_0x32b298['expanded']=!_0x32b298[_0x4d65e8(0x239)];},'toggleRowRequired'(_0x219a17){const _0x25ecfe=_0x1fac42;_0x219a17['required']=!_0x219a17[_0x25ecfe(0x1e2)],this['dirty']=!0x0;},'toggleRowNullable'(_0x267b11){const _0x53135f=_0x1fac42;_0x267b11[_0x53135f(0x246)]=!_0x267b11[_0x53135f(0x246)],this['dirty']=!0x0;},'setChildrenAdditionalProps'(_0x3b4d39,_0x2064e7){const _0xd2c400=_0x1fac42;_0x3b4d39['childrenAdditionalProps']=_0x2064e7,this[_0xd2c400(0x1ff)]=!0x0;},'setRowConstraint'(_0x40ba3e,_0x50dac0,_0x3c974b){const _0x291361=_0x1fac42;[_0x291361(0x205),_0x291361(0x1cd),_0x291361(0x1ed),_0x291361(0x1d0),_0x291361(0x20d),'minLength','maxLength',_0x291361(0x1f5),_0x291361(0x1d1)][_0x291361(0x1d7)](_0x50dac0)?_0x40ba3e[_0x50dac0]=''===_0x3c974b||null===_0x3c974b?null:Number(_0x3c974b):'uniqueItems'===_0x50dac0?_0x40ba3e[_0x50dac0]=!!_0x3c974b:_0x291361(0x248)===_0x50dac0?_0x3c974b&&''!==_0x3c974b[_0x291361(0x231)]()?_0x40ba3e[_0x291361(0x248)]=_0x3c974b[_0x291361(0x1ea)](',')['map'](_0x3e126a=>{const _0x122ba4=_0x291361;_0x3e126a=_0x3e126a[_0x122ba4(0x231)]();try{return JSON[_0x122ba4(0x247)](_0x3e126a);}catch{return _0x3e126a;}}):_0x40ba3e['enum']=null:_0x40ba3e[_0x50dac0]=_0x3c974b,this[_0x291361(0x1ff)]=!0x0;},'enumToString':_0x17afd9=>_0x17afd9&&Array[_0x1fac42(0x1fb)](_0x17afd9)?_0x17afd9[_0x1fac42(0x22d)](_0x558acd=>_0x1fac42(0x1d5)==typeof _0x558acd?_0x558acd:JSON['stringify'](_0x558acd))[_0x1fac42(0x22f)](',\x20'):'','setAdditionalProps'(_0x2c0a75){const _0x12c741=_0x1fac42;this[_0x12c741(0x1df)]=_0x2c0a75,this[_0x12c741(0x1ff)]=!0x0;},async 'loadTypesList'(){const _0x2b7a28=_0x1fac42;try{const _0x16d4ab=await fetch(_0xf6e1d8[_0x2b7a28(0x1fa)][_0x2b7a28(0x24c)]+_0x2b7a28(0x1f2));if(_0x16d4ab['ok']){const _0x37df26=await _0x16d4ab[_0x2b7a28(0x218)]();this['typesList']=(_0x37df26[_0x2b7a28(0x1cb)]??_0x37df26['data']??_0x37df26['types']??[])[_0x2b7a28(0x22d)](_0xeb8668=>'string'==typeof _0xeb8668?_0xeb8668:_0xeb8668[_0x2b7a28(0x1e7)]??_0xeb8668[_0x2b7a28(0x1e9)])[_0x2b7a28(0x21b)](_0x39f48a=>_0x39f48a&&!_0x39f48a['startsWith']('~'))[_0x2b7a28(0x1e3)]();}}catch{}},'setRowRef'(_0x35db1e,_0x4f3725,_0x2de6d1){const _0x24a759=_0x1fac42;_0x24a759(0x237)===_0x4f3725?(_0x35db1e[_0x24a759(0x237)]=_0x2de6d1,_0x2de6d1||(_0x35db1e['refOnDelete']='no_action')):'refOnDelete'===_0x4f3725&&(_0x35db1e[_0x24a759(0x1cc)]=_0x2de6d1),this[_0x24a759(0x1ff)]=!0x0;},'clearRowRef'(_0x282fa6){const _0x421ebb=_0x1fac42;_0x282fa6['refType']='',_0x282fa6[_0x421ebb(0x1cc)]=_0x421ebb(0x1f3),this[_0x421ebb(0x1ff)]=!0x0;},'setEditDefinition'(_0x254198){const _0x4c0e07=_0x1fac42;this[_0x4c0e07(0x1f9)]=_0x254198,this[_0x4c0e07(0x1ff)]=!0x0;},'setEditEnforce'(_0x17eb1e){const _0x12db43=_0x1fac42;this[_0x12db43(0x240)]=_0x17eb1e,this['dirty']=!0x0;},async 'generateFromData'(){const _0x4a30e3=_0x1fac42;if(_0xf6e1d8[_0x4a30e3(0x1fa)][_0x4a30e3(0x1e7)]||_0xf6e1d8[_0x4a30e3(0x1fa)][_0x4a30e3(0x22e)])try{let _0x1d2925;if(_0xf6e1d8[_0x4a30e3(0x1fa)][_0x4a30e3(0x22e)]){const _0x2fae2f=await fetch(_0xf6e1d8[_0x4a30e3(0x1fa)][_0x4a30e3(0x22e)]);if(!_0x2fae2f['ok'])throw new Error(_0x4a30e3(0x211));const _0x5cbc17=await _0x2fae2f[_0x4a30e3(0x218)]();_0x1d2925=(_0x5cbc17['data']??_0x5cbc17[_0x4a30e3(0x1cb)]??[])[_0x4a30e3(0x22d)](_0x8661ee=>_0x8661ee[_0x4a30e3(0x23d)]??_0x8661ee[_0x4a30e3(0x224)]??_0x8661ee[_0x4a30e3(0x245)]??_0x8661ee);}else{const _0x25a0b5=await fetch(_0xf6e1d8[_0x4a30e3(0x1fa)][_0x4a30e3(0x24c)]+_0x4a30e3(0x22c)+encodeURIComponent(_0xf6e1d8[_0x4a30e3(0x1fa)][_0x4a30e3(0x1e7)])+_0x4a30e3(0x1f6),{'method':_0x4a30e3(0x227),'headers':{'Content-Type':_0x4a30e3(0x1c3)},'body':JSON['stringify']({'filter':{},'options':{'limit':0x32}})});if(!_0x25a0b5['ok'])throw new Error(_0x4a30e3(0x249));const _0x3ef6a7=await _0x25a0b5[_0x4a30e3(0x218)]();_0x1d2925=(_0x3ef6a7[_0x4a30e3(0x1c6)]??_0x3ef6a7[_0x4a30e3(0x1cb)]??[])[_0x4a30e3(0x22d)](_0x56a7e4=>_0x56a7e4[_0x4a30e3(0x23d)]??_0x56a7e4[_0x4a30e3(0x245)]??_0x56a7e4);}if(0x0===_0x1d2925[_0x4a30e3(0x23f)])return void _0xf6e1d8[_0x4a30e3(0x1e1)]['shared']?.[_0x4a30e3(0x1fe)]?.['info']?.(_0x4a30e3(0x1f4));_0xf6e1d8[_0x4a30e3(0x1e1)][_0x4a30e3(0x1e0)]?.[_0x4a30e3(0x1fe)]?.['info']?.(_0x4a30e3(0x219)+_0x1d2925[_0x4a30e3(0x23f)]+'\x20documents…');const _0x4725c6=this[_0x4a30e3(0x20a)](_0x1d2925);this[_0x4a30e3(0x1f9)]=_0x4725c6,this['rows']=l(_0x4725c6),this[_0x4a30e3(0x1df)]=!0x1!==_0x4725c6[_0x4a30e3(0x208)],this[_0x4a30e3(0x1ff)]=!0x0;}catch(_0x545577){_0xf6e1d8[_0x4a30e3(0x1e1)][_0x4a30e3(0x1e0)]?.[_0x4a30e3(0x1fe)]?.[_0x4a30e3(0x24d)]?.(_0x545577[_0x4a30e3(0x230)]);}},'_inferSchemaFromData'(_0xe69347){function _0x1f7feb(_0x160c14){const _0x5cd8eb=_0x2256;return null===_0x160c14?'null':Array['isArray'](_0x160c14)?_0x5cd8eb(0x244):_0x5cd8eb(0x225)==typeof _0x160c14?'object':typeof _0x160c14;}return function _0xb23462(_0x1dd35f){const _0xc02021=_0x2256;let _0x3fd483=[...new Set(_0x1dd35f[_0xc02021(0x22d)](_0x1f7feb)[_0xc02021(0x21b)](_0x9c6bb5=>_0xc02021(0x22b)!==_0x9c6bb5))];if(0x0===_0x3fd483[_0xc02021(0x23f)])return{'type':'string'};_0x3fd483['includes'](_0xc02021(0x1c9))&&_0x3fd483['length']>0x1&&(_0x3fd483=_0x3fd483[_0xc02021(0x21b)](_0x56c976=>'null'!==_0x56c976));let _0x1c94b7=0x1===_0x3fd483[_0xc02021(0x23f)]?{'type':_0x3fd483[0x0]}:{'type':_0x3fd483};if(_0x3fd483[_0xc02021(0x1d7)](_0xc02021(0x225))){let _0x3c4f01={},_0x5d5361=new Set(_0x1dd35f[_0xc02021(0x21b)](_0x4b40f4=>_0xc02021(0x225)===_0x1f7feb(_0x4b40f4)&&null!==_0x4b40f4)[_0xc02021(0x1ef)](Object[_0xc02021(0x200)]));for(let _0x4c442a of _0x5d5361){let _0xdf222e=_0x1dd35f[_0xc02021(0x21b)](_0x42efca=>_0xc02021(0x225)===_0x1f7feb(_0x42efca)&&null!==_0x42efca)[_0xc02021(0x22d)](_0x4fa6ff=>_0x4fa6ff[_0x4c442a]);_0x3c4f01[_0x4c442a]=_0xb23462(_0xdf222e);}_0x1c94b7[_0xc02021(0x221)]=_0x3c4f01,_0x1c94b7[_0xc02021(0x208)]=!0x1;}if(_0x3fd483[_0xc02021(0x1d7)](_0xc02021(0x244))){let _0x23fdb7=_0x1dd35f[_0xc02021(0x21b)](_0x5bfa2a=>'array'===_0x1f7feb(_0x5bfa2a))[_0xc02021(0x242)]();_0x23fdb7[_0xc02021(0x23f)]>0x0&&(_0x1c94b7[_0xc02021(0x206)]=_0xb23462(_0x23fdb7));}return _0x1c94b7;}(_0xe69347);},async 'save'(){const _0x52eaa8=_0x1fac42;this[_0x52eaa8(0x1e5)]=!0x0,this[_0x52eaa8(0x229)]=null;try{const _0x2310af={'definition':_0x52eaa8(0x1da)===this[_0x52eaa8(0x222)]?s(this[_0x52eaa8(0x217)],this[_0x52eaa8(0x1df)]):this['editDefinition'],'enforce':!!_0xf6e1d8['$attr']['hideEnforce']||this[_0x52eaa8(0x240)]},_0x4d9608=_0xf6e1d8[_0x52eaa8(0x1fa)][_0x52eaa8(0x233)]??_0xf6e1d8[_0x52eaa8(0x1fa)][_0x52eaa8(0x24c)]+_0x52eaa8(0x22c)+encodeURIComponent(_0xf6e1d8[_0x52eaa8(0x1fa)][_0x52eaa8(0x1e7)])+_0x52eaa8(0x1e4),_0x489277=await fetch(_0x4d9608,{'method':_0x52eaa8(0x1d3),'headers':{'Content-Type':_0x52eaa8(0x1c3)},'body':JSON[_0x52eaa8(0x213)](_0x2310af)});if(0x199===_0x489277[_0x52eaa8(0x21c)]){const _0x52477b=await _0x489277[_0x52eaa8(0x218)]()['catch'](()=>({})),_0x490bee=_0x52477b?.[_0x52eaa8(0x24d)]?.['details']?.[_0x52eaa8(0x1f7)]??_0x52477b?.[_0x52eaa8(0x1d6)]?.[_0x52eaa8(0x1f7)]??_0x52477b?.[_0x52eaa8(0x24d)]?.[_0x52eaa8(0x1c6)]?.[_0x52eaa8(0x1f7)]??[];if(_0x490bee['length']>0x0){const _0x14825e=_0x490bee['slice'](0x0,0x5)[_0x52eaa8(0x22d)](_0x4db4cb=>_0x4db4cb[_0x52eaa8(0x241)])[_0x52eaa8(0x22f)](',\x20')+(_0x490bee[_0x52eaa8(0x23f)]>0x5?'\x20…\x20(+'+(_0x490bee[_0x52eaa8(0x23f)]-0x5)+_0x52eaa8(0x1c8):'');this[_0x52eaa8(0x229)]=_0x52eaa8(0x23e)+_0x490bee[_0x52eaa8(0x23f)]+'\x20doc(s)\x20violate\x20the\x20schema:\x0a'+_0x14825e;}else this[_0x52eaa8(0x229)]=_0x52477b?.[_0x52eaa8(0x24d)]?.[_0x52eaa8(0x230)]||_0x52477b?.['message']||_0x52eaa8(0x204);return;}if(!_0x489277['ok']){const _0x1fbbd9=await _0x489277[_0x52eaa8(0x218)]()[_0x52eaa8(0x21a)](()=>({}));throw new Error(_0x1fbbd9?.[_0x52eaa8(0x24d)]?.['message']||_0x489277['statusText']);}_0xf6e1d8[_0x52eaa8(0x1e1)][_0x52eaa8(0x1e0)]?.[_0x52eaa8(0x1fe)]?.[_0x52eaa8(0x24b)]?.(_0x52eaa8(0x1fd)),await _0xf6e1d8[_0x52eaa8(0x1fa)][_0x52eaa8(0x216)][_0x52eaa8(0x238)](),await _0xf6e1d8[_0x52eaa8(0x1fa)][_0x52eaa8(0x1d8)]?.();}catch(_0x1836d0){this[_0x52eaa8(0x229)]=_0x1836d0[_0x52eaa8(0x230)]||_0x52eaa8(0x1d4);}finally{this['saveBusy']=!0x1;}},async 'remove'(){const _0x4ba9e3=_0x1fac42;if(await _0xf6e1d8[_0x4ba9e3(0x1e1)][_0x4ba9e3(0x1e0)][_0x4ba9e3(0x216)][_0x4ba9e3(0x236)](_0x4ba9e3(0x203)+_0xf6e1d8['$attr']['type']+_0x4ba9e3(0x201)))try{const _0x315451=_0xf6e1d8[_0x4ba9e3(0x1fa)][_0x4ba9e3(0x233)]??_0xf6e1d8[_0x4ba9e3(0x1fa)][_0x4ba9e3(0x24c)]+_0x4ba9e3(0x22c)+encodeURIComponent(_0xf6e1d8[_0x4ba9e3(0x1fa)]['type'])+'/schema',_0x2ed993=await fetch(_0x315451,{'method':_0x4ba9e3(0x223)});if(!_0x2ed993['ok']){const _0x332201=await _0x2ed993[_0x4ba9e3(0x218)]()[_0x4ba9e3(0x21a)](()=>({}));throw new Error(_0x332201?.[_0x4ba9e3(0x24d)]?.[_0x4ba9e3(0x230)]||_0x2ed993['statusText']);}_0xf6e1d8[_0x4ba9e3(0x1e1)][_0x4ba9e3(0x1e0)]?.['toast']?.[_0x4ba9e3(0x1db)]?.('Schema\x20removed'),await _0xf6e1d8[_0x4ba9e3(0x1fa)][_0x4ba9e3(0x216)][_0x4ba9e3(0x238)](),await _0xf6e1d8['$attr'][_0x4ba9e3(0x1d8)]?.();}catch(_0x47ed3c){_0xf6e1d8[_0x4ba9e3(0x1e1)][_0x4ba9e3(0x1e0)]?.[_0x4ba9e3(0x1fe)]?.[_0x4ba9e3(0x24d)]?.(_0x47ed3c[_0x4ba9e3(0x230)]||_0x4ba9e3(0x23c));}},'cancel'(){const _0x8ca138=_0x1fac42;_0xf6e1d8[_0x8ca138(0x1fa)]['modal'][_0x8ca138(0x238)]();}}),'init'(){const _0x46080d=_0x1fac42;this['_init'](),this[_0x46080d(0x1ca)]();},'template':_0x1fac42(0x1cf),'style':_0x1fac42(0x1e8)};
|
|
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'};
|