@kedem/okdb 1.0.0 → 1.0.1
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/okdb-data/default/data.mdb +0 -0
- package/okdb-data/default/lock.mdb +0 -0
- package/okdb-data/~log/data.mdb +0 -0
- package/okdb-data/~log/lock.mdb +0 -0
- package/okdb-data/~system/data.mdb +0 -0
- package/okdb-data/~system/lock.mdb +0 -0
- package/okdb.js +1 -1
- package/package.json +1 -1
- 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/view-models/type-query-vm.js +1 -1
|
@@ -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
|
+
const _0x5f15ce=_0x3dca;function _0x19c4(){const _0x4e211b=['catch','additionalProps','key','676244sLZRMc','nullable','editDefinition','\x20more)','typesList','ref','const','Schema\x20removed','definition','string','isArray','_init','Schema\x20saved','shared','description','close','exclusiveMaximum','8rcSJkt','Inferring\x20from\x20','/types','items','5fGCTJT','parse','application/json','stringify','envApiBase','dirty','minItems','result','has','557082tNMrhU','name','mode','expanded','children','flat','status','maxItems','length','childrenAdditionalProps','loadTypesList','keys','schema-edit-modal','saveError','json','minLength','refType','entries','maxLength','types','onDelete','default','enforce','\x20documents…','297790gchXNC','26089525ubGBjM','includes','(item)','Property\x20\x22','$ok','value','\x22?\x20Validation\x20will\x20be\x20disabled.','trim','slice','statusText','required','info','exclusiveMinimum','newPropName','Schema\x20conflicts\x20with\x20existing\x20data','success','editEnforce','details','object','$attr','_extra','find','doc','\x0a<div\x20class=\x22sem-root\x22>\x0a\x0a\x20\x20<if\x20:=\x22saveBusy\x22>\x0a\x20\x20\x20\x20<ok-overlay>\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22loader-center\x22><ok-icon\x20name=\x22loader\x22\x20class=\x22spin\x22\x20style=\x22width:32px;height:32px;\x22></ok-icon></div>\x0a\x20\x20\x20\x20</ok-overlay>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Toolbar\x20-->\x0a\x20\x20<div\x20class=\x22sem-toolbar\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22seg-toggle\x22>\x0a\x20\x20\x20\x20\x20\x20<button\x20:class=\x22mode\x20===\x20\x27visual\x27\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22switchToVisual()\x22>Visual</button>\x0a\x20\x20\x20\x20\x20\x20<button\x20:class=\x22mode\x20===\x20\x27json\x27\x20?\x20\x27active\x27\x20:\x20\x27\x27\x22\x20@click=\x22switchToJson()\x22>JSON</button>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<if\x20:=\x22!hideEnforce\x22>\x0a\x20\x20\x20\x20\x20\x20<label\x20style=\x22font-size:13px;\x20display:flex;\x20align-items:center;\x20gap:6px;\x20cursor:pointer;\x20user-select:none;\x20margin-left:16px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20:checked=\x22editEnforce\x22\x20@change=\x22setEditEnforce($event.target.checked)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20Enforce\x20mode\x0a\x20\x20\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:11px;\x20opacity:.4;\x22>(reject\x20writes\x20that\x20violate)</span>\x0a\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20<div\x20style=\x22margin-left:auto;\x20display:flex;\x20gap:8px;\x22>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22generateFromData()\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:11px;\x20padding:3px\x2010px;\x20opacity:.75;\x22\x20title=\x22Sample\x20latest\x20documents\x20to\x20build\x20a\x20schema\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22zap\x22></ok-icon>\x20Infer\x20from\x20data\x0a\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20</div>\x0a\x20\x20</div>\x0a\x0a\x20\x20<!--\x20═══════\x20Visual\x20mode\x20═══════\x20-->\x0a\x20\x20<if\x20:=\x22mode\x20===\x20\x27visual\x27\x22>\x0a\x20\x20<div\x20class=\x22sem-visual\x22>\x0a\x0a\x20\x20\x20\x20<!--\x20Properties\x20table\x20header\x20-->\x0a\x20\x20\x20\x20<div\x20class=\x22sem-props-hdr\x22>\x0a\x20\x20\x20\x20\x20\x20<div></div><div>Property</div><div>Type</div><div>Req</div><div>Null</div><div>Description</div><div></div>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<!--\x20Recursive\x20row\x20rendering\x20for\x20depth\x200\x20-->\x0a\x20\x20\x20\x20<each\x20:of=\x22rows\x22\x20let:item=\x22row\x22\x20let:index=\x22i\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20Main\x20property\x20row\x20-->\x0a\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-props-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-expand-col\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20@click=\x22toggleRowExpanded(row)\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20class=\x22sem-expand-btn\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20:class=\x22row.expanded\x20?\x20\x27sem-expanded\x27\x20:\x20\x27\x27\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20title=\x22Toggle\x20details\x22\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20>›</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-prop-name\x22><code>{{\x20row.name\x20}}</code></div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20:value=\x22row.type\x22\x20@change=\x22setRowField(row,\x20\x27type\x27,\x20$event.target.value)\x22\x20style=\x22min-width:90px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22string\x22>string</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22number\x22>number</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22integer\x22>integer</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22boolean\x22>boolean</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22object\x22>object</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22array\x22>array</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22text-align:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20:checked=\x22row.required\x22\x20@change=\x22toggleRowRequired(row)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22text-align:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20:checked=\x22row.nullable\x22\x20@change=\x22toggleRowNullable(row)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22overflow:hidden;\x20min-width:0;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20:value=\x22row.description\x22\x20@input=\x22setRowField(row,\x20\x27description\x27,\x20$event.target.value)\x22\x20placeholder=\x22—\x22\x20style=\x22width:100%;\x20font-size:12px;\x20box-sizing:border-box;\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20style=\x22display:flex;\x20align-items:center;\x20justify-content:center;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22removeProperty(rows,\x20i)\x22\x20style=\x22color:var(--okdb-danger);\x20background:none;\x20border:none;\x20cursor:pointer;\x20padding:2px\x206px;\x20font-size:14px;\x20line-height:1;\x22\x20title=\x22Remove\x20property\x22>×</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20<!--\x20──\x20Expanded\x20detail\x20panel\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.expanded\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-detail-panel\x22>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20──\x20String\x20constraints\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.type\x20===\x20\x27string\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-constraints-grid\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Format</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20:value=\x22row.format\x20||\x20\x27\x27\x22\x20@change=\x22setRowConstraint(row,\x20\x27format\x27,\x20$event.target.value)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22\x22>—</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22date-time\x22>date-time</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22date\x22>date</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22time\x22>time</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22email\x22>email</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22uri\x22>uri</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22uuid\x22>uuid</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22ipv4\x22>ipv4</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22ipv6\x22>ipv6</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22hostname\x22>hostname</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Min\x20Length</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20:value=\x22row.minLength\x20??\x20\x27\x27\x22\x20@input=\x22setRowConstraint(row,\x20\x27minLength\x27,\x20$event.target.value)\x22\x20min=\x220\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Max\x20Length</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20:value=\x22row.maxLength\x20??\x20\x27\x27\x22\x20@input=\x22setRowConstraint(row,\x20\x27maxLength\x27,\x20$event.target.value)\x22\x20min=\x220\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Pattern</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20:value=\x22row.pattern\x22\x20@input=\x22setRowConstraint(row,\x20\x27pattern\x27,\x20$event.target.value)\x22\x20placeholder=\x22regex…\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20──\x20Number\x20/\x20Integer\x20constraints\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.type\x20===\x20\x27number\x27\x20||\x20row.type\x20===\x20\x27integer\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-constraints-grid\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Minimum</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20:value=\x22row.minimum\x20??\x20\x27\x27\x22\x20@input=\x22setRowConstraint(row,\x20\x27minimum\x27,\x20$event.target.value)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Maximum</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20:value=\x22row.maximum\x20??\x20\x27\x27\x22\x20@input=\x22setRowConstraint(row,\x20\x27maximum\x27,\x20$event.target.value)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Excl.\x20Min</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20:value=\x22row.exclusiveMinimum\x20??\x20\x27\x27\x22\x20@input=\x22setRowConstraint(row,\x20\x27exclusiveMinimum\x27,\x20$event.target.value)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Excl.\x20Max</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20:value=\x22row.exclusiveMaximum\x20??\x20\x27\x27\x22\x20@input=\x22setRowConstraint(row,\x20\x27exclusiveMaximum\x27,\x20$event.target.value)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Multiple\x20Of</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20:value=\x22row.multipleOf\x20??\x20\x27\x27\x22\x20@input=\x22setRowConstraint(row,\x20\x27multipleOf\x27,\x20$event.target.value)\x22\x20min=\x220\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20──\x20Array\x20constraints\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.type\x20===\x20\x27array\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-constraints-grid\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Min\x20Items</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20:value=\x22row.minItems\x20??\x20\x27\x27\x22\x20@input=\x22setRowConstraint(row,\x20\x27minItems\x27,\x20$event.target.value)\x22\x20min=\x220\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Max\x20Items</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22number\x22\x20:value=\x22row.maxItems\x20??\x20\x27\x27\x22\x20@input=\x22setRowConstraint(row,\x20\x27maxItems\x27,\x20$event.target.value)\x22\x20min=\x220\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Unique</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20style=\x22display:flex;\x20align-items:center;\x20gap:4px;\x20cursor:pointer;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20:checked=\x22row.uniqueItems\x22\x20@change=\x22setRowConstraint(row,\x20\x27uniqueItems\x27,\x20$event.target.checked)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20unique\x20items\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20──\x20Enum\x20(all\x20types)\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-constraint-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Enum</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20:value=\x22enumToString(row.enum)\x22\x20@change=\x22setRowConstraint(row,\x20\x27enum\x27,\x20$event.target.value)\x22\x20placeholder=\x22comma-separated\x20values…\x22\x20style=\x22flex:1;\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<span\x20class=\x22sem-hint\x22>e.g.\x20active,\x20inactive,\x20pending</span>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20──\x20Foreign\x20Key\x20Reference\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.type\x20===\x20\x27string\x27\x20||\x20row.type\x20===\x20\x27integer\x27\x20||\x20row.type\x20===\x20\x27number\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-fk-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-fk-label\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22link\x22\x20style=\x22width:12px;\x20height:12px;\x20opacity:.6;\x22></ok-icon>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Foreign\x20Key\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-fk-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>Target\x20type</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20:value=\x22row.refType\x20||\x20\x27\x27\x22\x20@change=\x22setRowRef(row,\x20\x27refType\x27,\x20$event.target.value)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22\x22>—\x20none\x20—</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22typesList\x22\x20let:item=\x22t\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20:value=\x22t\x22>{{\x20t\x20}}</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.refType\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label>On\x20delete</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20:value=\x22row.refOnDelete\x20||\x20\x27no_action\x27\x22\x20@change=\x22setRowRef(row,\x20\x27refOnDelete\x27,\x20$event.target.value)\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22no_action\x22>no\x20action</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22cascade\x22>cascade</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22set_null\x22>set\x20null</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22restrict\x22>restrict</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22clearRowRef(row)\x22\x20class=\x22sem-fk-clear\x22\x20title=\x22Remove\x20foreign\x20key\x22>×</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.refType\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-fk-hint\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20This\x20field\x20references\x20a\x20key\x20in\x20<strong>{{\x20row.refType\x20}}</strong>.\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.refOnDelete\x20===\x20\x27cascade\x27\x22>Deleting\x20the\x20target\x20will\x20delete\x20this\x20document.</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.refOnDelete\x20===\x20\x27set_null\x27\x22>Deleting\x20the\x20target\x20will\x20set\x20this\x20field\x20to\x20null.</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.refOnDelete\x20===\x20\x27restrict\x27\x22>Deleting\x20the\x20target\x20will\x20be\x20blocked\x20while\x20this\x20reference\x20exists.</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.refOnDelete\x20===\x20\x27no_action\x27\x22>Deleting\x20the\x20target\x20will\x20leave\x20this\x20field\x20as\x20a\x20dangling\x20reference.</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20──\x20Array\x20items\x20schema\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.type\x20===\x20\x27array\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-nested-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-nested-label\x22>Item\x20Schema</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.items\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-nested-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20:value=\x22row.items.type\x22\x20@change=\x22setRowField(row.items,\x20\x27type\x27,\x20$event.target.value)\x22\x20style=\x22min-width:90px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22string\x22>string</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22number\x22>number</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22integer\x22>integer</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22boolean\x22>boolean</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22object\x22>object</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22array\x22>array</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.items.type\x20===\x20\x27string\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20:value=\x22row.items.format\x20||\x20\x27\x27\x22\x20@change=\x22setRowConstraint(row.items,\x20\x27format\x27,\x20$event.target.value)\x22\x20title=\x22Format\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22\x22>no\x20format</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22date-time\x22>date-time</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22date\x22>date</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22email\x22>email</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22uri\x22>uri</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22uuid\x22>uuid</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20If\x20items\x20type\x20is\x20object,\x20show\x20nested\x20properties\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.items.type\x20===\x20\x27object\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-nested-children\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22row.items.children\x22\x20let:item=\x22child\x22\x20let:index=\x22ci\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-nested-child-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<code\x20class=\x22sem-child-name\x22>{{\x20child.name\x20}}</code>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20:value=\x22child.type\x22\x20@change=\x22setRowField(child,\x20\x27type\x27,\x20$event.target.value)\x22\x20style=\x22min-width:80px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22string\x22>string</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22number\x22>number</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22integer\x22>integer</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22boolean\x22>boolean</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22object\x22>object</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22array\x22>array</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20style=\x22font-size:11px;\x20display:flex;\x20align-items:center;\x20gap:3px;\x20cursor:pointer;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20:checked=\x22child.required\x22\x20@change=\x22toggleRowRequired(child)\x22\x20/>\x20req\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20style=\x22font-size:11px;\x20display:flex;\x20align-items:center;\x20gap:3px;\x20cursor:pointer;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20:checked=\x22child.nullable\x22\x20@change=\x22toggleRowNullable(child)\x22\x20/>\x20null\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22removeProperty(row.items.children,\x20ci)\x22\x20style=\x22color:var(--okdb-danger);\x20background:none;\x20border:none;\x20cursor:pointer;\x20font-size:13px;\x22>×</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-add-child-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20:value=\x22_newChildNames[\x27items_\x27\x20+\x20row.name]\x20||\x20\x27\x27\x22\x20@input=\x22_newChildNames[\x27items_\x27\x20+\x20row.name]\x20=\x20$event.target.value\x22\x20@keydown.enter=\x22addChildProperty(row.items,\x20\x27items_\x27\x20+\x20row.name)\x22\x20placeholder=\x22Add\x20item\x20property…\x22\x20style=\x22flex:1;\x20font-size:11px;\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22addChildProperty(row.items,\x20\x27items_\x27\x20+\x20row.name)\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:10px;\x20padding:2px\x208px;\x22>+</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x20──\x20Nested\x20object\x20properties\x20──\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22row.type\x20===\x20\x27object\x27\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-nested-section\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-nested-label\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20Properties\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20style=\x22font-size:11px;\x20display:flex;\x20align-items:center;\x20gap:4px;\x20cursor:pointer;\x20margin-left:auto;\x20font-weight:normal;\x20opacity:.6;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20:checked=\x22row.childrenAdditionalProps\x22\x20@change=\x22setChildrenAdditionalProps(row,\x20$event.target.checked)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20allow\x20additional\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-nested-children\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22row.children\x22\x20let:item=\x22child\x22\x20let:index=\x22ci\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-nested-child-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<code\x20class=\x22sem-child-name\x22>{{\x20child.name\x20}}</code>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20:value=\x22child.type\x22\x20@change=\x22setRowField(child,\x20\x27type\x27,\x20$event.target.value)\x22\x20style=\x22min-width:80px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22string\x22>string</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22number\x22>number</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22integer\x22>integer</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22boolean\x22>boolean</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22object\x22>object</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22array\x22>array</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20style=\x22font-size:11px;\x20display:flex;\x20align-items:center;\x20gap:3px;\x20cursor:pointer;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20:checked=\x22child.required\x22\x20@change=\x22toggleRowRequired(child)\x22\x20/>\x20req\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20style=\x22font-size:11px;\x20display:flex;\x20align-items:center;\x20gap:3px;\x20cursor:pointer;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20:checked=\x22child.nullable\x22\x20@change=\x22toggleRowNullable(child)\x22\x20/>\x20null\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20:value=\x22child.description\x22\x20@input=\x22setRowField(child,\x20\x27description\x27,\x20$event.target.value)\x22\x20placeholder=\x22desc\x22\x20style=\x22flex:1;\x20font-size:11px;\x20min-width:60px;\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22removeProperty(row.children,\x20ci)\x22\x20style=\x22color:var(--okdb-danger);\x20background:none;\x20border:none;\x20cursor:pointer;\x20font-size:13px;\x22>×</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<!--\x202nd-level\x20nested:\x20show\x20sub-properties\x20for\x20object\x20children\x20-->\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22child.type\x20===\x20\x27object\x27\x20&&\x20child.children.length\x20>\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-nested-l2\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<each\x20:of=\x22child.children\x22\x20let:item=\x22gc\x22\x20let:index=\x22gci\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-nested-child-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<code\x20class=\x22sem-child-name\x22\x20style=\x22font-size:10px;\x22>{{\x20gc.name\x20}}</code>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<select\x20:value=\x22gc.type\x22\x20@change=\x22setRowField(gc,\x20\x27type\x27,\x20$event.target.value)\x22\x20style=\x22min-width:70px;\x20font-size:11px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22string\x22>string</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22number\x22>number</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22integer\x22>integer</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22boolean\x22>boolean</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22object\x22>object</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<option\x20value=\x22array\x22>array</option>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</select>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<label\x20style=\x22font-size:10px;\x20display:flex;\x20align-items:center;\x20gap:2px;\x20cursor:pointer;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20:checked=\x22gc.required\x22\x20@change=\x22toggleRowRequired(gc)\x22\x20/>\x20req\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</label>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22removeProperty(child.children,\x20gci)\x22\x20style=\x22color:var(--okdb-danger);\x20background:none;\x20border:none;\x20cursor:pointer;\x20font-size:12px;\x22>×</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-add-child-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20:value=\x22_newChildNames[\x27l2_\x27\x20+\x20row.name\x20+\x20\x27.\x27\x20+\x20child.name]\x20||\x20\x27\x27\x22\x20@input=\x22_newChildNames[\x27l2_\x27\x20+\x20row.name\x20+\x20\x27.\x27\x20+\x20child.name]\x20=\x20$event.target.value\x22\x20@keydown.enter=\x22addChildProperty(child,\x20\x27l2_\x27\x20+\x20row.name\x20+\x20\x27.\x27\x20+\x20child.name)\x22\x20placeholder=\x22Add\x20sub-property…\x22\x20style=\x22flex:1;\x20font-size:10px;\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22addChildProperty(child,\x20\x27l2_\x27\x20+\x20row.name\x20+\x20\x27.\x27\x20+\x20child.name)\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:10px;\x20padding:2px\x206px;\x22>+</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<if\x20:=\x22child.type\x20===\x20\x27object\x27\x20&&\x20child.children.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-add-child-row\x22\x20style=\x22margin-left:24px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20:value=\x22_newChildNames[\x27l2_\x27\x20+\x20row.name\x20+\x20\x27.\x27\x20+\x20child.name]\x20||\x20\x27\x27\x22\x20@input=\x22_newChildNames[\x27l2_\x27\x20+\x20row.name\x20+\x20\x27.\x27\x20+\x20child.name]\x20=\x20$event.target.value\x22\x20@keydown.enter=\x22addChildProperty(child,\x20\x27l2_\x27\x20+\x20row.name\x20+\x20\x27.\x27\x20+\x20child.name)\x22\x20placeholder=\x22Add\x20sub-property…\x22\x20style=\x22flex:1;\x20font-size:10px;\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22addChildProperty(child,\x20\x27l2_\x27\x20+\x20row.name\x20+\x20\x27.\x27\x20+\x20child.name)\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:10px;\x20padding:2px\x206px;\x22>+</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</each>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<div\x20class=\x22sem-add-child-row\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20:value=\x22_newChildNames[\x27obj_\x27\x20+\x20row.name]\x20||\x20\x27\x27\x22\x20@input=\x22_newChildNames[\x27obj_\x27\x20+\x20row.name]\x20=\x20$event.target.value\x22\x20@keydown.enter=\x22addChildProperty(row,\x20\x27obj_\x27\x20+\x20row.name)\x22\x20placeholder=\x22Add\x20property…\x22\x20style=\x22flex:1;\x20font-size:11px;\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<button\x20@click=\x22addChildProperty(row,\x20\x27obj_\x27\x20+\x20row.name)\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:10px;\x20padding:2px\x208px;\x22>+</button>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20\x20\x20\x20\x20</div>\x0a\x20\x20\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20</each>\x0a\x0a\x20\x20\x20\x20<if\x20:=\x22rows.length\x20===\x200\x22>\x0a\x20\x20\x20\x20\x20\x20<div\x20style=\x22padding:16px\x200;\x20opacity:.4;\x20font-size:13px;\x22>No\x20properties\x20defined\x20yet.\x20Add\x20one\x20below.</div>\x0a\x20\x20\x20\x20</if>\x0a\x0a\x20\x20\x20\x20<!--\x20Add\x20property\x20-->\x0a\x20\x20\x20\x20<div\x20class=\x22sem-add-row\x22>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22text\x22\x20:value=\x22newPropName\x22\x20@input=\x22newPropName\x20=\x20$event.target.value\x22\x20@keydown.enter=\x22addProperty()\x22\x20placeholder=\x22New\x20property\x20name…\x22\x20style=\x22flex:1;\x20min-width:140px;\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22addProperty()\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:12px;\x20padding:3px\x2012px;\x22\x20:disabled=\x22!newPropName.trim()\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22plus\x22></ok-icon>Add\x0a\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20</div>\x0a\x0a\x20\x20\x20\x20<!--\x20Additional\x20properties\x20toggle\x20-->\x0a\x20\x20\x20\x20<label\x20style=\x22font-size:12px;\x20display:flex;\x20align-items:center;\x20gap:6px;\x20cursor:pointer;\x20user-select:none;\x20padding:8px\x200\x200;\x22>\x0a\x20\x20\x20\x20\x20\x20<input\x20type=\x22checkbox\x22\x20:checked=\x22additionalProps\x22\x20@change=\x22setAdditionalProps($event.target.checked)\x22\x20/>\x0a\x20\x20\x20\x20\x20\x20Allow\x20additional\x20properties\x0a\x20\x20\x20\x20\x20\x20<span\x20style=\x22font-size:11px;\x20opacity:.4;\x22>(fields\x20not\x20listed\x20above)</span>\x0a\x20\x20\x20\x20</label>\x0a\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20═══════\x20JSON\x20mode\x20═══════\x20-->\x0a\x20\x20<if\x20:=\x22mode\x20===\x20\x27json\x27\x22>\x0a\x20\x20<div\x20class=\x22sem-json\x22>\x0a\x20\x20\x20\x20<ok-json-input\x0a\x20\x20\x20\x20\x20\x20:value=\x22editDefinition\x22\x0a\x20\x20\x20\x20\x20\x20@change=\x22setEditDefinition($event.detail)\x22\x0a\x20\x20\x20\x20\x20\x20style=\x22min-height:300px;\x20flex:1;\x20width:100%;\x22>\x0a\x20\x20\x20\x20</ok-json-input>\x0a\x20\x20</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Save\x20error\x20-->\x0a\x20\x20<if\x20:=\x22saveError\x22>\x0a\x20\x20\x20\x20<div\x20class=\x22sem-error\x22>{{\x20saveError\x20}}</div>\x0a\x20\x20</if>\x0a\x0a\x20\x20<!--\x20Actions\x20-->\x0a\x20\x20<div\x20class=\x22sem-actions\x22>\x0a\x20\x20\x20\x20<button\x20@click=\x22cancel()\x22\x20style=\x22opacity:.7;\x22>Cancel</button>\x0a\x20\x20\x20\x20<if\x20:=\x22hasSchema\x22>\x0a\x20\x20\x20\x20\x20\x20<button\x20@click=\x22remove()\x22\x20class=\x22btn-icon\x22\x20style=\x22color:var(--okdb-danger);\x20opacity:.8;\x20font-size:12px;\x20padding:5px\x2012px;\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22trash-2\x22></ok-icon>Remove\x20schema\x0a\x20\x20\x20\x20\x20\x20</button>\x0a\x20\x20\x20\x20</if>\x0a\x20\x20\x20\x20<button\x20@click=\x22save()\x22\x20:disabled=\x22saveBusy\x22\x20class=\x22btn-icon\x22\x20style=\x22font-size:12px;\x20padding:5px\x2014px;\x20margin-left:auto;\x22>\x0a\x20\x20\x20\x20\x20\x20<ok-icon\x20name=\x22save\x22></ok-icon>\x0a\x20\x20\x20\x20\x20\x20{{\x20hasSchema\x20?\x20\x27Update\x20Schema\x27\x20:\x20\x27Set\x20Schema\x27\x20}}\x0a\x20\x20\x20\x20</button>\x0a\x20\x20</div>\x0a</div>\x0a','pattern','join','no_action','uniqueItems','filter','$defs','74332sFmvet','minimum','enum','/type/','$ref','map','type','visual','null','format','push','toast','modal','\x22\x20already\x20exists','18ytScTs','samplesUrl','1379313wPRKXr','properties','saveUrl','PUT','77IbOMiZ','array','refOnDelete','startsWith','additionalProperties','schema','splice','POST','multipleOf','maximum','some','confirm','saveBusy','failures','message','\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-root\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-direction:\x20column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20min-width:\x20640px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20max-width:\x20960px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20position:\x20relative;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-toolbar\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-wrap:\x20wrap;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-visual\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-direction:\x20column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20max-height:\x2060vh;\x0a\x20\x20\x20\x20\x20\x20\x20\x20overflow:\x20auto;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-props-hdr\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20grid;\x0a\x20\x20\x20\x20\x20\x20\x20\x20grid-template-columns:\x2028px\x20minmax(100px,\x201.5fr)\x20110px\x2036px\x2036px\x201fr\x2032px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x200\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x200\x200\x206px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.4;\x0a\x20\x20\x20\x20\x20\x20\x20\x20text-transform:\x20uppercase;\x0a\x20\x20\x20\x20\x20\x20\x20\x20letter-spacing:\x20.04em;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-props-row\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20grid;\x0a\x20\x20\x20\x20\x20\x20\x20\x20grid-template-columns:\x2028px\x20minmax(100px,\x201.5fr)\x20110px\x2036px\x2036px\x201fr\x2032px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x200\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x206px\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x201px\x20solid\x20var(--okdb-app-surface);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-expand-col\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20justify-content:\x20center;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-expand-btn\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20none;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x20none;\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-app-fg-muted);\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2016px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20cursor:\x20pointer;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x200\x204px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20transition:\x20transform\x20.15s;\x0a\x20\x20\x20\x20\x20\x20\x20\x20line-height:\x201;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.5;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-expand-btn:hover\x20{\x20opacity:\x201;\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-expand-btn.sem-expanded\x20{\x20transform:\x20rotate(90deg);\x20opacity:\x20.8;\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-prop-name\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20overflow:\x20hidden;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-prop-name\x20code\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-json-key);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20/*\x20──\x20Detail\x20/\x20constraints\x20panel\x20──\x20*/\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-detail-panel\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x208px\x2012px\x2012px\x2036px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20var(--okdb-app-bg-deep);\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x201px\x20solid\x20var(--okdb-app-surface);\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-direction:\x20column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x2010px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-constraints-grid\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20grid;\x0a\x20\x20\x20\x20\x20\x20\x20\x20grid-template-columns:\x2080px\x201fr\x2080px\x201fr;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x206px\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-constraints-grid\x20label\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.55;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20white-space:\x20nowrap;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-constraints-grid\x20input,\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-constraints-grid\x20select\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x203px\x206px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-constraint-row\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-constraint-row\x20label\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.55;\x0a\x20\x20\x20\x20\x20\x20\x20\x20white-space:\x20nowrap;\x0a\x20\x20\x20\x20\x20\x20\x20\x20min-width:\x2040px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-hint\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.35;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20white-space:\x20nowrap;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20/*\x20──\x20Nested\x20object/array\x20section\x20──\x20*/\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-nested-section\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-left:\x202px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding-left:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20margin-top:\x202px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-nested-label\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-weight:\x20600;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.6;\x0a\x20\x20\x20\x20\x20\x20\x20\x20text-transform:\x20uppercase;\x0a\x20\x20\x20\x20\x20\x20\x20\x20letter-spacing:\x20.04em;\x0a\x20\x20\x20\x20\x20\x20\x20\x20margin-bottom:\x206px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x208px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-nested-row\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20margin-bottom:\x206px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-nested-children\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-direction:\x20column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x200;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-nested-child-row\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x204px\x200;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-bottom:\x201px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-app-border)\x2040%,\x20transparent);\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-child-name\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-purple);\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-family:\x20monospace;\x0a\x20\x20\x20\x20\x20\x20\x20\x20min-width:\x2060px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20overflow:\x20hidden;\x0a\x20\x20\x20\x20\x20\x20\x20\x20text-overflow:\x20ellipsis;\x0a\x20\x20\x20\x20\x20\x20\x20\x20white-space:\x20nowrap;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-nested-l2\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20margin-left:\x2024px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-left:\x201px\x20solid\x20var(--okdb-app-border)66;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding-left:\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20margin-bottom:\x204px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-add-child-row\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x206px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x204px\x200;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-add-row\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x2010px\x200\x200;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20/*\x20──\x20Foreign\x20key\x20section\x20──\x20*/\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-fk-section\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20#6366f133;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x206px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x208px\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20#6366f108;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-fk-label\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-weight:\x20600;\x0a\x20\x20\x20\x20\x20\x20\x20\x20text-transform:\x20uppercase;\x0a\x20\x20\x20\x20\x20\x20\x20\x20letter-spacing:\x20.04em;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.7;\x0a\x20\x20\x20\x20\x20\x20\x20\x20margin-bottom:\x206px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x205px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-indigo);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-fk-row\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-fk-row\x20label\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.55;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20white-space:\x20nowrap;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-fk-row\x20select\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x203px\x206px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20min-width:\x20100px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-fk-clear\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20none;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x20none;\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-danger);\x0a\x20\x20\x20\x20\x20\x20\x20\x20cursor:\x20pointer;\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2014px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x202px\x206px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20line-height:\x201;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.7;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-fk-clear:hover\x20{\x20opacity:\x201;\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-fk-hint\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2011px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x20.5;\x0a\x20\x20\x20\x20\x20\x20\x20\x20margin-top:\x205px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20line-height:\x201.4;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-fk-hint\x20strong\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-indigo);\x0a\x20\x20\x20\x20\x20\x20\x20\x20opacity:\x201;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-json\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20flex-direction:\x20column;\x0a\x20\x20\x20\x20\x20\x20\x20\x20min-height:\x20300px;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-error\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20color:\x20var(--okdb-danger);\x0a\x20\x20\x20\x20\x20\x20\x20\x20font-size:\x2012px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding:\x208px\x2010px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-radius:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border:\x201px\x20solid\x20color-mix(in\x20srgb,\x20var(--okdb-danger)\x2020%,\x20transparent);\x0a\x20\x20\x20\x20\x20\x20\x20\x20background:\x20color-mix(in\x20srgb,\x20var(--okdb-danger)\x204%,\x20transparent);\x0a\x20\x20\x20\x20\x20\x20\x20\x20white-space:\x20pre-wrap;\x0a\x20\x20\x20\x20\x20\x20\x20\x20line-height:\x201.5;\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20\x20\x20schema-edit-modal\x20.sem-actions\x20{\x0a\x20\x20\x20\x20\x20\x20\x20\x20display:\x20flex;\x0a\x20\x20\x20\x20\x20\x20\x20\x20gap:\x208px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20align-items:\x20center;\x0a\x20\x20\x20\x20\x20\x20\x20\x20padding-top:\x204px;\x0a\x20\x20\x20\x20\x20\x20\x20\x20border-top:\x201px\x20solid\x20var(--okdb-app-border);\x0a\x20\x20\x20\x20\x20\x20}\x0a\x20\x20\x20\x20','_newChildNames','No\x20documents\x20found\x20to\x20infer\x20schema\x20from.','hideEnforce','rows','payload','data','error','Failed\x20to\x20fetch\x20data','Failed\x20to\x20fetch\x20samples','Save\x20failed','370182vclZnU','onDone'];_0x19c4=function(){return _0x4e211b;};return _0x19c4();}(function(_0x283873,_0x1098dc){const _0x1db3ce=_0x3dca,_0x299afb=_0x283873();while(!![]){try{const _0x753d9b=parseInt(_0x1db3ce(0x22d))/0x1*(-parseInt(_0x1db3ce(0x23b))/0x2)+-parseInt(_0x1db3ce(0x23d))/0x3+parseInt(_0x1db3ce(0x1d8))/0x4*(-parseInt(_0x1db3ce(0x1ed))/0x5)+-parseInt(_0x1db3ce(0x1d3))/0x6*(parseInt(_0x1db3ce(0x241))/0x7)+parseInt(_0x1db3ce(0x1e9))/0x8*(-parseInt(_0x1db3ce(0x1f6))/0x9)+parseInt(_0x1db3ce(0x20e))/0xa+parseInt(_0x1db3ce(0x20f))/0xb;if(_0x753d9b===_0x1098dc)break;else _0x299afb['push'](_0x299afb['shift']());}catch(_0x32ea2f){_0x299afb['push'](_0x299afb['shift']());}}}(_0x19c4,0x58aa1));import _0x124042 from'@toolkit/elements/ok-icon.ok.js';import _0x16c28b from'@toolkit/core/ok-overlay.ok.js';import _0x204797 from'../../../components/ok-json-input.ok.js';function i(_0x329d7a){const _0x7e6304=_0x3dca;return null==_0x329d7a?_0x329d7a:JSON[_0x7e6304(0x1ee)](JSON['stringify'](_0x329d7a));}function _0x3dca(_0x8cc0d8,_0x4907ce){_0x8cc0d8=_0x8cc0d8-0x1c3;const _0x19c468=_0x19c4();let _0x3dcade=_0x19c468[_0x8cc0d8];return _0x3dcade;}function o(_0x22bcd3='',_0x5225bd=_0x5f15ce(0x1e1)){return{'name':_0x22bcd3,'type':_0x5225bd,'nullable':!0x1,'required':!0x1,'description':'','enum':null,'const':null,'format':'','minimum':null,'maximum':null,'exclusiveMinimum':null,'exclusiveMaximum':null,'multipleOf':null,'minLength':null,'maxLength':null,'pattern':'','minItems':null,'maxItems':null,'uniqueItems':!0x1,'refType':'','refOnDelete':'no_action','children':[],'childrenAdditionalProps':!0x0,'items':null,'expanded':!0x1,'_extra':{}};}function a(_0x5de97a,_0x569c36,_0x2f76b3,_0x34aa52=0x0){const _0x52fc60=_0x5f15ce,_0x469c76=_0x569c36['type'];let _0x1ed7eb,_0x39a366=!0x1;Array[_0x52fc60(0x1e2)](_0x469c76)?(_0x39a366=_0x469c76[_0x52fc60(0x210)](_0x52fc60(0x235)),_0x1ed7eb=_0x469c76[_0x52fc60(0x224)](_0x65fb45=>_0x52fc60(0x235)!==_0x65fb45)||'string'):_0x1ed7eb=_0x469c76||'string';const _0x1731d4=o(_0x5de97a,_0x1ed7eb);if(_0x1731d4[_0x52fc60(0x1d9)]=_0x39a366,_0x1731d4[_0x52fc60(0x219)]=_0x2f76b3,_0x1731d4[_0x52fc60(0x1e6)]=_0x569c36['description']||'',Array[_0x52fc60(0x1e2)](_0x569c36[_0x52fc60(0x22f)])&&(_0x1731d4[_0x52fc60(0x22f)]=_0x569c36[_0x52fc60(0x22f)]),void 0x0!==_0x569c36[_0x52fc60(0x1de)]&&(_0x1731d4['const']={'value':_0x569c36[_0x52fc60(0x1de)]}),_0x569c36[_0x52fc60(0x236)]&&(_0x1731d4['format']=_0x569c36['format']),void 0x0!==_0x569c36[_0x52fc60(0x22e)]&&(_0x1731d4[_0x52fc60(0x22e)]=_0x569c36[_0x52fc60(0x22e)]),void 0x0!==_0x569c36['maximum']&&(_0x1731d4['maximum']=_0x569c36[_0x52fc60(0x24a)]),void 0x0!==_0x569c36[_0x52fc60(0x21b)]&&(_0x1731d4[_0x52fc60(0x21b)]=_0x569c36[_0x52fc60(0x21b)]),void 0x0!==_0x569c36[_0x52fc60(0x1e8)]&&(_0x1731d4[_0x52fc60(0x1e8)]=_0x569c36['exclusiveMaximum']),void 0x0!==_0x569c36['multipleOf']&&(_0x1731d4[_0x52fc60(0x249)]=_0x569c36[_0x52fc60(0x249)]),void 0x0!==_0x569c36[_0x52fc60(0x205)]&&(_0x1731d4[_0x52fc60(0x205)]=_0x569c36[_0x52fc60(0x205)]),void 0x0!==_0x569c36[_0x52fc60(0x208)]&&(_0x1731d4['maxLength']=_0x569c36['maxLength']),_0x569c36[_0x52fc60(0x227)]&&(_0x1731d4[_0x52fc60(0x227)]=_0x569c36[_0x52fc60(0x227)]),void 0x0!==_0x569c36['minItems']&&(_0x1731d4[_0x52fc60(0x1f3)]=_0x569c36[_0x52fc60(0x1f3)]),void 0x0!==_0x569c36['maxItems']&&(_0x1731d4[_0x52fc60(0x1fd)]=_0x569c36['maxItems']),!0x0===_0x569c36[_0x52fc60(0x22a)]&&(_0x1731d4[_0x52fc60(0x22a)]=!0x0),_0x569c36[_0x52fc60(0x1dd)]&&_0x52fc60(0x221)==typeof _0x569c36['ref']&&_0x569c36[_0x52fc60(0x1dd)][_0x52fc60(0x233)]&&(_0x1731d4[_0x52fc60(0x206)]=_0x569c36[_0x52fc60(0x1dd)]['type'],_0x1731d4[_0x52fc60(0x243)]=_0x569c36[_0x52fc60(0x1dd)][_0x52fc60(0x20a)]||_0x52fc60(0x229)),'object'===_0x1ed7eb&&_0x569c36[_0x52fc60(0x23e)]&&_0x34aa52<0x4){const _0x1d522b=new Set(_0x569c36['required']||[]);_0x1731d4['children']=Object['entries'](_0x569c36[_0x52fc60(0x23e)])[_0x52fc60(0x232)](([_0x35e5ff,_0x370452])=>a(_0x35e5ff,_0x370452,_0x1d522b['has'](_0x35e5ff),_0x34aa52+0x1)),_0x1731d4[_0x52fc60(0x1ff)]=!0x1!==_0x569c36[_0x52fc60(0x245)];}_0x52fc60(0x242)===_0x1ed7eb&&_0x569c36[_0x52fc60(0x1ec)]&&_0x52fc60(0x221)==typeof _0x569c36['items']&&_0x34aa52<0x4&&(_0x1731d4[_0x52fc60(0x1ec)]=a(_0x52fc60(0x211),_0x569c36[_0x52fc60(0x1ec)],!0x1,_0x34aa52+0x1));const _0x579d50=new Set([_0x52fc60(0x233),_0x52fc60(0x1e6),'enum',_0x52fc60(0x1de),_0x52fc60(0x236),_0x52fc60(0x22e),'maximum',_0x52fc60(0x21b),_0x52fc60(0x1e8),_0x52fc60(0x249),_0x52fc60(0x205),_0x52fc60(0x208),_0x52fc60(0x227),_0x52fc60(0x1f3),_0x52fc60(0x1fd),'uniqueItems',_0x52fc60(0x23e),_0x52fc60(0x219),_0x52fc60(0x245),_0x52fc60(0x1ec),_0x52fc60(0x20b),_0x52fc60(0x231),_0x52fc60(0x22c),_0x52fc60(0x1dd)]);for(const _0x446c2e of Object[_0x52fc60(0x201)](_0x569c36))_0x579d50['has'](_0x446c2e)||(_0x1731d4[_0x52fc60(0x223)][_0x446c2e]=i(_0x569c36[_0x446c2e]));return _0x1731d4;}function r(_0x2aac8e){const _0x192ab8=_0x5f15ce,_0xb7ae69={};if(_0x2aac8e[_0x192ab8(0x1d9)]&&_0x192ab8(0x235)!==_0x2aac8e[_0x192ab8(0x233)]?_0xb7ae69[_0x192ab8(0x233)]=[_0x2aac8e['type'],_0x192ab8(0x235)]:_0xb7ae69[_0x192ab8(0x233)]=_0x2aac8e[_0x192ab8(0x233)],_0x2aac8e[_0x192ab8(0x1e6)]&&(_0xb7ae69[_0x192ab8(0x1e6)]=_0x2aac8e[_0x192ab8(0x1e6)]),_0x2aac8e[_0x192ab8(0x22f)]&&_0x2aac8e['enum'][_0x192ab8(0x1fe)]>0x0&&(_0xb7ae69[_0x192ab8(0x22f)]=_0x2aac8e[_0x192ab8(0x22f)]),null!==_0x2aac8e[_0x192ab8(0x1de)]&&void 0x0!==_0x2aac8e['const']&&(_0xb7ae69[_0x192ab8(0x1de)]=_0x2aac8e[_0x192ab8(0x1de)]['value']),_0x2aac8e[_0x192ab8(0x236)]&&(_0xb7ae69[_0x192ab8(0x236)]=_0x2aac8e[_0x192ab8(0x236)]),null!==_0x2aac8e[_0x192ab8(0x22e)]&&void 0x0!==_0x2aac8e[_0x192ab8(0x22e)]&&(_0xb7ae69['minimum']=_0x2aac8e['minimum']),null!==_0x2aac8e[_0x192ab8(0x24a)]&&void 0x0!==_0x2aac8e['maximum']&&(_0xb7ae69[_0x192ab8(0x24a)]=_0x2aac8e['maximum']),null!==_0x2aac8e[_0x192ab8(0x21b)]&&void 0x0!==_0x2aac8e['exclusiveMinimum']&&(_0xb7ae69[_0x192ab8(0x21b)]=_0x2aac8e[_0x192ab8(0x21b)]),null!==_0x2aac8e[_0x192ab8(0x1e8)]&&void 0x0!==_0x2aac8e[_0x192ab8(0x1e8)]&&(_0xb7ae69['exclusiveMaximum']=_0x2aac8e[_0x192ab8(0x1e8)]),null!==_0x2aac8e[_0x192ab8(0x249)]&&void 0x0!==_0x2aac8e['multipleOf']&&(_0xb7ae69['multipleOf']=_0x2aac8e['multipleOf']),null!==_0x2aac8e[_0x192ab8(0x205)]&&void 0x0!==_0x2aac8e['minLength']&&(_0xb7ae69[_0x192ab8(0x205)]=_0x2aac8e[_0x192ab8(0x205)]),null!==_0x2aac8e[_0x192ab8(0x208)]&&void 0x0!==_0x2aac8e['maxLength']&&(_0xb7ae69[_0x192ab8(0x208)]=_0x2aac8e['maxLength']),_0x2aac8e[_0x192ab8(0x227)]&&(_0xb7ae69[_0x192ab8(0x227)]=_0x2aac8e[_0x192ab8(0x227)]),null!==_0x2aac8e['minItems']&&void 0x0!==_0x2aac8e[_0x192ab8(0x1f3)]&&(_0xb7ae69[_0x192ab8(0x1f3)]=_0x2aac8e[_0x192ab8(0x1f3)]),null!==_0x2aac8e[_0x192ab8(0x1fd)]&&void 0x0!==_0x2aac8e[_0x192ab8(0x1fd)]&&(_0xb7ae69[_0x192ab8(0x1fd)]=_0x2aac8e[_0x192ab8(0x1fd)]),_0x2aac8e[_0x192ab8(0x22a)]&&(_0xb7ae69[_0x192ab8(0x22a)]=!0x0),_0x2aac8e[_0x192ab8(0x206)]&&(_0xb7ae69['ref']={'type':_0x2aac8e[_0x192ab8(0x206)]},_0x2aac8e['refOnDelete']&&_0x192ab8(0x229)!==_0x2aac8e[_0x192ab8(0x243)]&&(_0xb7ae69[_0x192ab8(0x1dd)]['onDelete']=_0x2aac8e['refOnDelete'])),_0x192ab8(0x221)===_0x2aac8e[_0x192ab8(0x233)]&&_0x2aac8e[_0x192ab8(0x1fa)][_0x192ab8(0x1fe)]>0x0){_0xb7ae69[_0x192ab8(0x23e)]={};const _0x32aca2=[];for(const _0x4dab2c of _0x2aac8e['children'])_0xb7ae69['properties'][_0x4dab2c[_0x192ab8(0x1f7)]]=r(_0x4dab2c),_0x4dab2c[_0x192ab8(0x219)]&&_0x32aca2[_0x192ab8(0x237)](_0x4dab2c[_0x192ab8(0x1f7)]);_0x32aca2[_0x192ab8(0x1fe)]>0x0&&(_0xb7ae69[_0x192ab8(0x219)]=_0x32aca2),_0xb7ae69[_0x192ab8(0x245)]=_0x2aac8e[_0x192ab8(0x1ff)];}if('array'===_0x2aac8e[_0x192ab8(0x233)]&&_0x2aac8e[_0x192ab8(0x1ec)]&&(_0xb7ae69['items']=r(_0x2aac8e[_0x192ab8(0x1ec)])),_0x2aac8e[_0x192ab8(0x223)]){for(const [_0x1a4c08,_0x118fab]of Object[_0x192ab8(0x207)](_0x2aac8e['_extra']))_0xb7ae69[_0x1a4c08]=i(_0x118fab);}return _0xb7ae69;}function l(_0x1a337a){const _0xa50982=_0x5f15ce;if(!_0x1a337a||!_0x1a337a[_0xa50982(0x23e)])return[];const _0x255b8d=new Set(_0x1a337a[_0xa50982(0x219)]||[]);return Object[_0xa50982(0x207)](_0x1a337a['properties'])[_0xa50982(0x232)](([_0x5359d8,_0x3e9cc7])=>a(_0x5359d8,_0x3e9cc7,_0x255b8d[_0xa50982(0x1f5)](_0x5359d8),0x0));}function s(_0x24affc,_0x583771){const _0x174538=_0x5f15ce,_0x5600fb={},_0x26f002=[];for(const _0x36b066 of _0x24affc)_0x5600fb[_0x36b066[_0x174538(0x1f7)]]=r(_0x36b066),_0x36b066['required']&&_0x26f002[_0x174538(0x237)](_0x36b066[_0x174538(0x1f7)]);const _0x315300={'type':_0x174538(0x221),'properties':_0x5600fb};return _0x26f002['length']>0x0&&(_0x315300[_0x174538(0x219)]=_0x26f002),_0x315300[_0x174538(0x245)]=_0x583771,_0x315300;}export default{'tag':_0x5f15ce(0x202),'dependencies':[_0x124042,_0x16c28b,_0x204797],'attr':{'modal':{},'type':{},'schema':{},'envApiBase':{},'onDone':{},'saveUrl':{},'samplesUrl':{},'hideEnforce':{}},'context':_0x842fd4=>({'mode':'visual','editDefinition':{},'editEnforce':!0x1,'rows':[],'additionalProps':!0x0,'saveBusy':!0x1,'saveError':null,'dirty':!0x1,'newPropName':'','_newChildNames':{},'typesList':[],get 'hasSchema'(){const _0xbaf12d=_0x5f15ce;return!!_0x842fd4[_0xbaf12d(0x222)][_0xbaf12d(0x246)];},get 'hideEnforce'(){const _0x3975aa=_0x5f15ce;return!!_0x842fd4[_0x3975aa(0x222)][_0x3975aa(0x1cb)];},'_init'(){const _0x21030a=_0x5f15ce,_0x27a4c5=_0x842fd4['$attr'][_0x21030a(0x246)];_0x27a4c5?.[_0x21030a(0x1e0)]?(this[_0x21030a(0x1da)]=i(_0x27a4c5[_0x21030a(0x1e0)]),this[_0x21030a(0x21f)]=_0x27a4c5[_0x21030a(0x20c)]??!0x1):(this['editDefinition']={'type':_0x21030a(0x221),'properties':{},'additionalProperties':!0x0},this[_0x21030a(0x21f)]=!0x1),this[_0x21030a(0x1cc)]=l(this[_0x21030a(0x1da)]),this['additionalProps']=!0x1!==this[_0x21030a(0x1da)]['additionalProperties'],this[_0x21030a(0x1f2)]=!0x1,this['saveError']=null;},'switchToVisual'(){const _0x19f588=_0x5f15ce;this[_0x19f588(0x1cc)]=l(this[_0x19f588(0x1da)]),this[_0x19f588(0x1d6)]=!0x1!==this['editDefinition'][_0x19f588(0x245)],this[_0x19f588(0x1f8)]=_0x19f588(0x234);},'switchToJson'(){const _0x593cee=_0x5f15ce;this[_0x593cee(0x1da)]=s(this[_0x593cee(0x1cc)],this['additionalProps']),this[_0x593cee(0x1f8)]=_0x593cee(0x204);},'addProperty'(){const _0x374ed4=_0x5f15ce,_0x9fd78b=(this[_0x374ed4(0x21c)]||'')[_0x374ed4(0x216)]();_0x9fd78b&&(this['rows'][_0x374ed4(0x1c3)](_0x3e4b97=>_0x3e4b97[_0x374ed4(0x1f7)]===_0x9fd78b)?_0x842fd4['$ok'][_0x374ed4(0x1e5)]?.[_0x374ed4(0x238)]?.[_0x374ed4(0x1cf)]?.(_0x374ed4(0x212)+_0x9fd78b+_0x374ed4(0x23a)):(this[_0x374ed4(0x1cc)][_0x374ed4(0x237)](o(_0x9fd78b)),this[_0x374ed4(0x21c)]='',this[_0x374ed4(0x1f2)]=!0x0));},'addChildProperty'(_0x2dffdb,_0x211a2f){const _0x1a8e78=_0x5f15ce,_0x488aa0=(this[_0x1a8e78(0x1c9)][_0x211a2f]||'')[_0x1a8e78(0x216)]();_0x488aa0&&(_0x2dffdb[_0x1a8e78(0x1fa)][_0x1a8e78(0x1c3)](_0xf6b7c8=>_0xf6b7c8['name']===_0x488aa0)?_0x842fd4['$ok'][_0x1a8e78(0x1e5)]?.[_0x1a8e78(0x238)]?.[_0x1a8e78(0x1cf)]?.(_0x1a8e78(0x212)+_0x488aa0+_0x1a8e78(0x23a)):(_0x2dffdb['children'][_0x1a8e78(0x237)](o(_0x488aa0)),this[_0x1a8e78(0x1c9)][_0x211a2f]='',this[_0x1a8e78(0x1f2)]=!0x0));},'removeProperty'(_0x58959d,_0x3e9f3c){const _0x26bfaa=_0x5f15ce;_0x58959d[_0x26bfaa(0x247)](_0x3e9f3c,0x1),this['dirty']=!0x0;},'setRowField'(_0x542f0d,_0x3a90bd,_0x2968cc){const _0x53402d=_0x5f15ce;_0x542f0d[_0x3a90bd]=_0x2968cc,_0x53402d(0x233)===_0x3a90bd&&(_0x53402d(0x221)===_0x2968cc&&0x0===_0x542f0d[_0x53402d(0x1fa)][_0x53402d(0x1fe)]&&(_0x542f0d[_0x53402d(0x1fa)]=[],_0x542f0d['childrenAdditionalProps']=!0x0),_0x53402d(0x242)!==_0x2968cc||_0x542f0d['items']||(_0x542f0d['items']=o('(item)',_0x53402d(0x1e1)))),this[_0x53402d(0x1f2)]=!0x0;},'toggleRowExpanded'(_0x533635){const _0x55d352=_0x5f15ce;_0x533635[_0x55d352(0x1f9)]=!_0x533635['expanded'];},'toggleRowRequired'(_0x18f136){const _0x3254ff=_0x5f15ce;_0x18f136[_0x3254ff(0x219)]=!_0x18f136[_0x3254ff(0x219)],this['dirty']=!0x0;},'toggleRowNullable'(_0x285ef3){const _0x3a8790=_0x5f15ce;_0x285ef3[_0x3a8790(0x1d9)]=!_0x285ef3[_0x3a8790(0x1d9)],this[_0x3a8790(0x1f2)]=!0x0;},'setChildrenAdditionalProps'(_0x43385d,_0x4d5d7d){const _0x17edfd=_0x5f15ce;_0x43385d[_0x17edfd(0x1ff)]=_0x4d5d7d,this['dirty']=!0x0;},'setRowConstraint'(_0x2a3d7f,_0x4bb6cc,_0x569ed9){const _0x25af62=_0x5f15ce;[_0x25af62(0x22e),_0x25af62(0x24a),_0x25af62(0x21b),'exclusiveMaximum',_0x25af62(0x249),_0x25af62(0x205),_0x25af62(0x208),_0x25af62(0x1f3),'maxItems'][_0x25af62(0x210)](_0x4bb6cc)?_0x2a3d7f[_0x4bb6cc]=''===_0x569ed9||null===_0x569ed9?null:Number(_0x569ed9):'uniqueItems'===_0x4bb6cc?_0x2a3d7f[_0x4bb6cc]=!!_0x569ed9:'enum'===_0x4bb6cc?_0x569ed9&&''!==_0x569ed9[_0x25af62(0x216)]()?_0x2a3d7f['enum']=_0x569ed9['split'](',')[_0x25af62(0x232)](_0x7c6754=>{const _0x34f4c8=_0x25af62;_0x7c6754=_0x7c6754['trim']();try{return JSON[_0x34f4c8(0x1ee)](_0x7c6754);}catch{return _0x7c6754;}}):_0x2a3d7f[_0x25af62(0x22f)]=null:_0x2a3d7f[_0x4bb6cc]=_0x569ed9,this[_0x25af62(0x1f2)]=!0x0;},'enumToString':_0x1fbacd=>_0x1fbacd&&Array['isArray'](_0x1fbacd)?_0x1fbacd[_0x5f15ce(0x232)](_0x1c17c2=>_0x5f15ce(0x1e1)==typeof _0x1c17c2?_0x1c17c2:JSON[_0x5f15ce(0x1f0)](_0x1c17c2))[_0x5f15ce(0x228)](',\x20'):'','setAdditionalProps'(_0xf70af2){const _0x2041d3=_0x5f15ce;this[_0x2041d3(0x1d6)]=_0xf70af2,this[_0x2041d3(0x1f2)]=!0x0;},async 'loadTypesList'(){const _0x1f2c6c=_0x5f15ce;try{const _0x37581f=await fetch(_0x842fd4[_0x1f2c6c(0x222)]['envApiBase']+_0x1f2c6c(0x1eb));if(_0x37581f['ok']){const _0x2d7aae=await _0x37581f[_0x1f2c6c(0x204)]();this[_0x1f2c6c(0x1dc)]=(_0x2d7aae[_0x1f2c6c(0x1f4)]??_0x2d7aae['data']??_0x2d7aae[_0x1f2c6c(0x209)]??[])[_0x1f2c6c(0x232)](_0x44a4b8=>_0x1f2c6c(0x1e1)==typeof _0x44a4b8?_0x44a4b8:_0x44a4b8['type']??_0x44a4b8['name'])['filter'](_0x2bb649=>_0x2bb649&&!_0x2bb649[_0x1f2c6c(0x244)]('~'))['sort']();}}catch{}},'setRowRef'(_0x421ccc,_0x2bd608,_0x725a69){const _0x5ad368=_0x5f15ce;_0x5ad368(0x206)===_0x2bd608?(_0x421ccc[_0x5ad368(0x206)]=_0x725a69,_0x725a69||(_0x421ccc[_0x5ad368(0x243)]=_0x5ad368(0x229))):_0x5ad368(0x243)===_0x2bd608&&(_0x421ccc[_0x5ad368(0x243)]=_0x725a69),this[_0x5ad368(0x1f2)]=!0x0;},'clearRowRef'(_0x374f46){const _0x46dadf=_0x5f15ce;_0x374f46[_0x46dadf(0x206)]='',_0x374f46[_0x46dadf(0x243)]=_0x46dadf(0x229),this[_0x46dadf(0x1f2)]=!0x0;},'setEditDefinition'(_0x216849){const _0x4f58e2=_0x5f15ce;this['editDefinition']=_0x216849,this[_0x4f58e2(0x1f2)]=!0x0;},'setEditEnforce'(_0x12f8d2){const _0x2fb021=_0x5f15ce;this[_0x2fb021(0x21f)]=_0x12f8d2,this['dirty']=!0x0;},async 'generateFromData'(){const _0x494815=_0x5f15ce;if(_0x842fd4[_0x494815(0x222)][_0x494815(0x233)]||_0x842fd4['$attr'][_0x494815(0x23c)])try{let _0x429060;if(_0x842fd4[_0x494815(0x222)][_0x494815(0x23c)]){const _0x2d8162=await fetch(_0x842fd4[_0x494815(0x222)][_0x494815(0x23c)]);if(!_0x2d8162['ok'])throw new Error(_0x494815(0x1d1));const _0x1a541d=await _0x2d8162[_0x494815(0x204)]();_0x429060=(_0x1a541d[_0x494815(0x1ce)]??_0x1a541d[_0x494815(0x1f4)]??[])[_0x494815(0x232)](_0x38ae0b=>_0x38ae0b[_0x494815(0x225)]??_0x38ae0b[_0x494815(0x1cd)]??_0x38ae0b['value']??_0x38ae0b);}else{const _0x1f5258=await fetch(_0x842fd4['$attr'][_0x494815(0x1f1)]+_0x494815(0x230)+encodeURIComponent(_0x842fd4[_0x494815(0x222)][_0x494815(0x233)])+'/query',{'method':_0x494815(0x248),'headers':{'Content-Type':'application/json'},'body':JSON[_0x494815(0x1f0)]({'filter':{},'options':{'limit':0x32}})});if(!_0x1f5258['ok'])throw new Error(_0x494815(0x1d0));const _0x2404e7=await _0x1f5258[_0x494815(0x204)]();_0x429060=(_0x2404e7['data']??_0x2404e7['result']??[])['map'](_0x3377ab=>_0x3377ab['doc']??_0x3377ab[_0x494815(0x214)]??_0x3377ab);}if(0x0===_0x429060[_0x494815(0x1fe)])return void _0x842fd4[_0x494815(0x213)][_0x494815(0x1e5)]?.['toast']?.[_0x494815(0x21a)]?.(_0x494815(0x1ca));_0x842fd4['$ok']['shared']?.['toast']?.[_0x494815(0x21a)]?.(_0x494815(0x1ea)+_0x429060['length']+_0x494815(0x20d));const _0x1d5393=this['_inferSchemaFromData'](_0x429060);this[_0x494815(0x1da)]=_0x1d5393,this['rows']=l(_0x1d5393),this[_0x494815(0x1d6)]=!0x1!==_0x1d5393['additionalProperties'],this['dirty']=!0x0;}catch(_0x2de92f){_0x842fd4['$ok']['shared']?.[_0x494815(0x238)]?.[_0x494815(0x1cf)]?.(_0x2de92f[_0x494815(0x1c7)]);}},'_inferSchemaFromData'(_0x305500){function _0x3c4617(_0x4eb24b){const _0x812814=_0x3dca;return null===_0x4eb24b?_0x812814(0x235):Array[_0x812814(0x1e2)](_0x4eb24b)?'array':_0x812814(0x221)==typeof _0x4eb24b?_0x812814(0x221):typeof _0x4eb24b;}return function _0x4b0788(_0x8b36d5){const _0x5153f6=_0x3dca;let _0x5d9dfa=[...new Set(_0x8b36d5[_0x5153f6(0x232)](_0x3c4617)[_0x5153f6(0x22b)](_0x5c80ae=>'undefined'!==_0x5c80ae))];if(0x0===_0x5d9dfa[_0x5153f6(0x1fe)])return{'type':_0x5153f6(0x1e1)};_0x5d9dfa[_0x5153f6(0x210)](_0x5153f6(0x235))&&_0x5d9dfa[_0x5153f6(0x1fe)]>0x1&&(_0x5d9dfa=_0x5d9dfa[_0x5153f6(0x22b)](_0xaa5ef4=>_0x5153f6(0x235)!==_0xaa5ef4));let _0x18fb55=0x1===_0x5d9dfa[_0x5153f6(0x1fe)]?{'type':_0x5d9dfa[0x0]}:{'type':_0x5d9dfa};if(_0x5d9dfa[_0x5153f6(0x210)]('object')){let _0x2c4dc0={},_0x59d271=new Set(_0x8b36d5[_0x5153f6(0x22b)](_0x2864c4=>'object'===_0x3c4617(_0x2864c4)&&null!==_0x2864c4)['flatMap'](Object['keys']));for(let _0x2e9e8b of _0x59d271){let _0x4f311c=_0x8b36d5['filter'](_0x273570=>_0x5153f6(0x221)===_0x3c4617(_0x273570)&&null!==_0x273570)[_0x5153f6(0x232)](_0x1bcc6c=>_0x1bcc6c[_0x2e9e8b]);_0x2c4dc0[_0x2e9e8b]=_0x4b0788(_0x4f311c);}_0x18fb55[_0x5153f6(0x23e)]=_0x2c4dc0,_0x18fb55['additionalProperties']=!0x1;}if(_0x5d9dfa[_0x5153f6(0x210)](_0x5153f6(0x242))){let _0x446b95=_0x8b36d5[_0x5153f6(0x22b)](_0xba58d9=>_0x5153f6(0x242)===_0x3c4617(_0xba58d9))[_0x5153f6(0x1fb)]();_0x446b95[_0x5153f6(0x1fe)]>0x0&&(_0x18fb55[_0x5153f6(0x1ec)]=_0x4b0788(_0x446b95));}return _0x18fb55;}(_0x305500);},async 'save'(){const _0x39051f=_0x5f15ce;this['saveBusy']=!0x0,this[_0x39051f(0x203)]=null;try{const _0x135b2a={'definition':'visual'===this[_0x39051f(0x1f8)]?s(this['rows'],this[_0x39051f(0x1d6)]):this[_0x39051f(0x1da)],'enforce':!!_0x842fd4[_0x39051f(0x222)][_0x39051f(0x1cb)]||this[_0x39051f(0x21f)]},_0x4d980b=_0x842fd4['$attr'][_0x39051f(0x23f)]??_0x842fd4[_0x39051f(0x222)][_0x39051f(0x1f1)]+_0x39051f(0x230)+encodeURIComponent(_0x842fd4[_0x39051f(0x222)][_0x39051f(0x233)])+'/schema',_0x3d4bd8=await fetch(_0x4d980b,{'method':_0x39051f(0x240),'headers':{'Content-Type':_0x39051f(0x1ef)},'body':JSON[_0x39051f(0x1f0)](_0x135b2a)});if(0x199===_0x3d4bd8[_0x39051f(0x1fc)]){const _0x450828=await _0x3d4bd8['json']()[_0x39051f(0x1d5)](()=>({})),_0x2bf2d=_0x450828?.[_0x39051f(0x1cf)]?.[_0x39051f(0x220)]?.[_0x39051f(0x1c6)]??_0x450828?.[_0x39051f(0x220)]?.[_0x39051f(0x1c6)]??_0x450828?.[_0x39051f(0x1cf)]?.[_0x39051f(0x1ce)]?.[_0x39051f(0x1c6)]??[];if(_0x2bf2d['length']>0x0){const _0x41524f=_0x2bf2d[_0x39051f(0x217)](0x0,0x5)[_0x39051f(0x232)](_0x2f5603=>_0x2f5603[_0x39051f(0x1d7)])[_0x39051f(0x228)](',\x20')+(_0x2bf2d[_0x39051f(0x1fe)]>0x5?'\x20…\x20(+'+(_0x2bf2d[_0x39051f(0x1fe)]-0x5)+_0x39051f(0x1db):'');this[_0x39051f(0x203)]='Cannot\x20enable\x20enforce\x20—\x20'+_0x2bf2d['length']+'\x20doc(s)\x20violate\x20the\x20schema:\x0a'+_0x41524f;}else this[_0x39051f(0x203)]=_0x450828?.['error']?.[_0x39051f(0x1c7)]||_0x450828?.['message']||_0x39051f(0x21d);return;}if(!_0x3d4bd8['ok']){const _0x31982d=await _0x3d4bd8[_0x39051f(0x204)]()['catch'](()=>({}));throw new Error(_0x31982d?.[_0x39051f(0x1cf)]?.[_0x39051f(0x1c7)]||_0x3d4bd8[_0x39051f(0x218)]);}_0x842fd4[_0x39051f(0x213)][_0x39051f(0x1e5)]?.[_0x39051f(0x238)]?.[_0x39051f(0x21e)]?.(_0x39051f(0x1e4)),await _0x842fd4['$attr']['modal'][_0x39051f(0x1e7)](),await _0x842fd4['$attr'][_0x39051f(0x1d4)]?.();}catch(_0x27b8c4){this['saveError']=_0x27b8c4[_0x39051f(0x1c7)]||_0x39051f(0x1d2);}finally{this[_0x39051f(0x1c5)]=!0x1;}},async 'remove'(){const _0x115083=_0x5f15ce;if(await _0x842fd4[_0x115083(0x213)][_0x115083(0x1e5)][_0x115083(0x239)][_0x115083(0x1c4)]('Remove\x20schema\x20from\x20\x22'+_0x842fd4[_0x115083(0x222)][_0x115083(0x233)]+_0x115083(0x215)))try{const _0x2dcf65=_0x842fd4[_0x115083(0x222)][_0x115083(0x23f)]??_0x842fd4[_0x115083(0x222)][_0x115083(0x1f1)]+_0x115083(0x230)+encodeURIComponent(_0x842fd4[_0x115083(0x222)][_0x115083(0x233)])+'/schema',_0x1218cb=await fetch(_0x2dcf65,{'method':'DELETE'});if(!_0x1218cb['ok']){const _0x2d9bc1=await _0x1218cb[_0x115083(0x204)]()[_0x115083(0x1d5)](()=>({}));throw new Error(_0x2d9bc1?.[_0x115083(0x1cf)]?.[_0x115083(0x1c7)]||_0x1218cb[_0x115083(0x218)]);}_0x842fd4[_0x115083(0x213)]['shared']?.[_0x115083(0x238)]?.[_0x115083(0x21a)]?.(_0x115083(0x1df)),await _0x842fd4[_0x115083(0x222)][_0x115083(0x239)][_0x115083(0x1e7)](),await _0x842fd4[_0x115083(0x222)][_0x115083(0x1d4)]?.();}catch(_0x58e776){_0x842fd4[_0x115083(0x213)][_0x115083(0x1e5)]?.[_0x115083(0x238)]?.[_0x115083(0x1cf)]?.(_0x58e776[_0x115083(0x1c7)]||'Remove\x20failed');}},'cancel'(){const _0x30c1b8=_0x5f15ce;_0x842fd4[_0x30c1b8(0x222)][_0x30c1b8(0x239)][_0x30c1b8(0x1e7)]();}}),'init'(){const _0x304d8b=_0x5f15ce;this[_0x304d8b(0x1e3)](),this[_0x304d8b(0x200)]();},'template':_0x5f15ce(0x226),'style':_0x5f15ce(0x1c8)};
|