@huanban/rulego-editor-core 1.4.2 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (157) hide show
  1. package/README.md +20 -8
  2. package/dist/ai/ai-chat-options.d.ts +12 -0
  3. package/dist/api/AIAssistantAPI.d.ts +29 -0
  4. package/dist/api/AIManager.d.ts +7 -1
  5. package/dist/api/ApiProvider.d.ts +17 -4
  6. package/dist/api/DebugSocketClient.d.ts +2 -0
  7. package/dist/api/GlobalConfigAPI.d.ts +35 -0
  8. package/dist/api/IoTPointTemplateAPI.d.ts +32 -0
  9. package/dist/api/MarketplaceAPI.d.ts +39 -0
  10. package/dist/api/RuleChainAPI.d.ts +23 -4
  11. package/dist/api/RuleChainVersionsAPI.d.ts +28 -0
  12. package/dist/api/SkillsAPI.d.ts +31 -0
  13. package/dist/api/UserAPI.d.ts +39 -0
  14. package/dist/api/extended-api-shared.d.ts +25 -0
  15. package/dist/api/index.d.ts +19 -2
  16. package/dist/api/public-api.test-d.d.ts +87 -0
  17. package/dist/api/response-utils.d.ts +1 -0
  18. package/dist/api/types.d.ts +86 -14
  19. package/dist/chunks/editor-core-api-BQiYFuIO.js +1157 -0
  20. package/dist/chunks/editor-core-canvas-nodes-BE9eN51s.js +6921 -0
  21. package/dist/chunks/editor-core-code-editor-DFm5Owtv.js +660 -0
  22. package/dist/chunks/{editor-core-default-components-BjF65lar.js → editor-core-default-components-BsNP8ma1.js} +98 -98
  23. package/dist/chunks/editor-core-dialogs-D9YHvzys.js +12009 -0
  24. package/dist/chunks/{editor-core-locales-i6o28vm2.js → editor-core-locales-CsqTh7Wh.js} +1723 -11
  25. package/dist/chunks/{editor-core-node-patches-BJTT3TuX.js → editor-core-node-patches-Dbi8XYxu.js} +633 -184
  26. package/dist/chunks/{editor-core-node-views-BOaPVdmN.js → editor-core-node-views-C8FQYC3E.js} +39 -29
  27. package/dist/chunks/editor-core-property-drawers-Bqmp9B_J.js +9562 -0
  28. package/dist/chunks/editor-core-settings-DcGCJSc7.js +4161 -0
  29. package/dist/chunks/editor-core-standalone-C7pzm8ZB.js +10013 -0
  30. package/dist/chunks/{editor-core-styles-DFhXz0vB.js → editor-core-styles-CwjFPfAo.js} +967 -510
  31. package/dist/chunks/vendor-highlight-acC2fLd8.js +5868 -0
  32. package/dist/chunks/vendor-logicflow-core-runtime-DpsWXOGl.js +4 -0
  33. package/dist/chunks/vendor-logicflow-shared-C_kIdBKO.js +4 -0
  34. package/dist/core/ActionRegistry.d.ts +4 -2
  35. package/dist/core/DataAdapter.d.ts +17 -1
  36. package/dist/core/DialogProvider.d.ts +33 -0
  37. package/dist/core/EditorCore.d.ts +16 -3
  38. package/dist/core/FieldCapabilityRegistry.d.ts +4 -1
  39. package/dist/core/FieldChangeRegistry.d.ts +3 -1
  40. package/dist/core/I18nManager.d.ts +1 -1
  41. package/dist/core/IdentityProvider.d.ts +32 -0
  42. package/dist/core/OptionSourceRegistry.d.ts +4 -1
  43. package/dist/core/PropertyControlRegistry.d.ts +29 -0
  44. package/dist/core/ThemeManager.d.ts +7 -0
  45. package/dist/core/anchored-popover.d.ts +16 -0
  46. package/dist/core/assistant-dsl.d.ts +18 -0
  47. package/dist/core/business-log-config.d.ts +18 -0
  48. package/dist/core/clean-snapshot.d.ts +14 -0
  49. package/dist/core/component-localization.d.ts +17 -0
  50. package/dist/core/component-palette.d.ts +3 -0
  51. package/dist/core/connection-status.d.ts +11 -0
  52. package/dist/core/dialog-styles.d.ts +1 -0
  53. package/dist/core/editor-capabilities.d.ts +82 -1
  54. package/dist/core/editor-edge-anchors.d.ts +16 -0
  55. package/dist/core/endpoint-protocol.d.ts +15 -0
  56. package/dist/core/expression-preview.d.ts +6 -0
  57. package/dist/core/field-protocol.d.ts +19 -4
  58. package/dist/core/global-config.d.ts +47 -0
  59. package/dist/core/global-search.d.ts +31 -0
  60. package/dist/core/group-protocol.d.ts +56 -0
  61. package/dist/core/identity-provider-default.d.ts +32 -0
  62. package/dist/core/index.d.ts +31 -5
  63. package/dist/core/keymap.d.ts +10 -0
  64. package/dist/core/payload-kv.d.ts +7 -0
  65. package/dist/core/rule-chain-versions.d.ts +143 -0
  66. package/dist/core/run-analysis.d.ts +126 -0
  67. package/dist/core/runtime-field-dictionary.d.ts +3 -0
  68. package/dist/core/save-conflict.d.ts +1 -0
  69. package/dist/core/server-status.d.ts +1 -0
  70. package/dist/core/toolbar-icons.d.ts +1 -1
  71. package/dist/core/variable-completion.d.ts +13 -0
  72. package/dist/core/websocket-auth.d.ts +2 -0
  73. package/dist/defaults/analysis-locales.d.ts +241 -0
  74. package/dist/defaults/component-locale-categories.d.ts +14 -0
  75. package/dist/defaults/component-locale-data.d.ts +4 -0
  76. package/dist/defaults/component-locale-en-US.d.ts +10 -0
  77. package/dist/defaults/component-locale-summaries.d.ts +15 -0
  78. package/dist/defaults/component-locale-zh-CN.d.ts +10 -0
  79. package/dist/defaults/editor-shell-locales.d.ts +290 -0
  80. package/dist/defaults/example-chain.d.ts +2 -0
  81. package/dist/defaults/field-interaction-locales.d.ts +19 -0
  82. package/dist/defaults/global-config-locales.d.ts +166 -0
  83. package/dist/defaults/official-component-fallbacks.d.ts +2 -1
  84. package/dist/defaults/point-template-locales.d.ts +64 -0
  85. package/dist/index.cjs +2856 -2086
  86. package/dist/index.d.ts +33 -10
  87. package/dist/index.esm.js +1182 -810
  88. package/dist/index.umd.js +2850 -2080
  89. package/dist/nodes/UnknownNodeModel.d.ts +12 -1
  90. package/dist/standalone/HuanbanRulegoEditor.d.ts +145 -13
  91. package/dist/standalone/auth-fetch.d.ts +1 -0
  92. package/dist/standalone/auth-ui-defaults.d.ts +15 -0
  93. package/dist/standalone/code-editor.d.ts +7 -5
  94. package/dist/standalone/connection-status-binding.d.ts +3 -2
  95. package/dist/standalone/custom-nodes.d.ts +13 -0
  96. package/dist/standalone/drawer-locale.d.ts +12 -0
  97. package/dist/standalone/drawer-unsaved-guard.d.ts +6 -1
  98. package/dist/standalone/dynamic-field-browse.d.ts +25 -0
  99. package/dist/standalone/edge-label-quick-editor.d.ts +2 -1
  100. package/dist/standalone/editor-actions.d.ts +1 -0
  101. package/dist/standalone/editor-canvas-anchors.d.ts +19 -0
  102. package/dist/standalone/editor-canvas-shortcuts.d.ts +1 -0
  103. package/dist/standalone/editor-chain-info.d.ts +1 -0
  104. package/dist/standalone/editor-debug-data.d.ts +18 -0
  105. package/dist/standalone/editor-debug-ws.d.ts +2 -0
  106. package/dist/standalone/editor-delete.d.ts +5 -3
  107. package/dist/standalone/editor-dialog-provider.d.ts +3 -0
  108. package/dist/standalone/editor-dialogs.d.ts +25 -2
  109. package/dist/standalone/editor-global-config.d.ts +44 -0
  110. package/dist/standalone/editor-group-interactions.d.ts +1 -0
  111. package/dist/standalone/editor-host-region-styles.d.ts +1 -0
  112. package/dist/standalone/editor-host-regions.d.ts +53 -0
  113. package/dist/standalone/editor-login.d.ts +15 -0
  114. package/dist/standalone/editor-overlays.d.ts +5 -0
  115. package/dist/standalone/editor-property-drawers.d.ts +3 -1
  116. package/dist/standalone/editor-run-analysis.d.ts +81 -0
  117. package/dist/standalone/editor-run-compare.d.ts +20 -0
  118. package/dist/standalone/editor-run-waterfall.d.ts +11 -0
  119. package/dist/standalone/editor-toast.d.ts +1 -1
  120. package/dist/standalone/editor-toolbar-presentation.d.ts +12 -0
  121. package/dist/standalone/editor-toolbar.d.ts +5 -1
  122. package/dist/standalone/editor-ui-configuration.d.ts +55 -0
  123. package/dist/standalone/editor-ui-settings.d.ts +26 -0
  124. package/dist/standalone/editor-user-menu.d.ts +8 -0
  125. package/dist/standalone/editor-version-history.d.ts +82 -0
  126. package/dist/standalone/editor-workspace-shell.d.ts +47 -0
  127. package/dist/standalone/editor-workspace-styles.d.ts +1 -0
  128. package/dist/standalone/field-expression-preview.d.ts +12 -0
  129. package/dist/standalone/group-node.d.ts +19 -3
  130. package/dist/standalone/icon-utils.d.ts +7 -0
  131. package/dist/standalone/index.d.ts +17 -5
  132. package/dist/standalone/keyboard-events.d.ts +3 -0
  133. package/dist/standalone/multi-select-popover.d.ts +16 -0
  134. package/dist/standalone/node-copy.d.ts +1 -0
  135. package/dist/standalone/node-definitions.d.ts +4 -0
  136. package/dist/standalone/node-renderer-utils.d.ts +21 -0
  137. package/dist/standalone/node-theme.d.ts +1 -1
  138. package/dist/standalone/point-template-actions.d.ts +43 -0
  139. package/dist/standalone/property-field-draft.d.ts +5 -0
  140. package/dist/standalone/question-list-editor.d.ts +35 -0
  141. package/dist/standalone/shared-node-manager.d.ts +14 -0
  142. package/dist/standalone/single-select-popover.d.ts +6 -0
  143. package/dist/standalone/theme-scope.d.ts +15 -0
  144. package/dist/standalone/themes.d.ts +4 -0
  145. package/dist/standalone/variable-completion-dropdown.d.ts +18 -0
  146. package/dist/types/component.d.ts +22 -1
  147. package/dist/types/editor.d.ts +41 -0
  148. package/dist/utils/relation-utils.d.ts +19 -1
  149. package/dist/version.d.ts +2 -2
  150. package/package.json +3 -3
  151. package/vite-chunks.mjs +66 -0
  152. package/dist/chunks/editor-core-code-editor-CRki2wA_.js +0 -512
  153. package/dist/chunks/editor-core-dialogs-BMWb0WRN.js +0 -17228
  154. package/dist/chunks/editor-core-property-drawers-BPh-jj1b.js +0 -7998
  155. package/dist/chunks/editor-core-standalone-Cls7lcgT.js +0 -11302
  156. package/dist/chunks/vendor-logicflow-core-runtime-Cp6IBEjB.js +0 -217
  157. package/dist/chunks/vendor-logicflow-shared-C7YynLDn.js +0 -4
@@ -0,0 +1,4 @@
1
+ const e = ".lf-graph{background:#fff;height:100%;position:relative;user-select:none;width:100%;z-index:0}.lf-element-text{cursor:text}.lf-text-disabled{pointer-events:none}.lf-text-draggable{cursor:move}:focus{outline:none}.lf-node-anchor{cursor:crosshair}.lf-node-anchor-hover{visibility:hidden}.lf-anchor:hover .lf-node-anchor-hover{visibility:visible}.lf-edge.pointer-none{pointer-events:none}.lf-edge-append{cursor:pointer}.lf-edge-animation{stroke-dashoffset:100%;animation:lf_animate_dash 5s linear infinite}@keyframes lf_animate_dash{to{stroke-dashoffset:0}}.lf-node-not-allow{cursor:not-allowed}.lf-polyline-append-ns-resize{cursor:ns-resize}.lf-polyline-append-ew-resize{cursor:ew-resize}.lf-dragging,.lf-dragging .lf-element-text{cursor:move}.lf-draggable{cursor:default}.lf-bezier-adjust-anchor{cursor:pointer}.lf-background,.lf-grid{inset:0;position:absolute;z-index:-1}.lf-background-area{height:100%;width:100%}.lf-html-overlay{inset:0;overflow:hidden;pointer-events:none;position:absolute;user-select:none;z-index:1}.lf-html-overlay__transform>*,.lf-text-editable{pointer-events:all}.lf-text-input{background:#fff;border:1px solid #edefed;border-radius:3px;box-sizing:border-box;line-height:1.2;min-height:20px;min-width:100px;outline:none;padding:5px;position:absolute;resize:none;text-align:center;transform:translate(-50%,-50%);white-space:pre}.lf-get-text-height{border:1px solid transparent;box-sizing:border-box;display:inline-block;word-break:break-all}.lf-node-text-auto-wrap{align-items:center;box-sizing:border-box;display:flex;justify-content:center}.lf-node-text-auto-wrap-content{word-break:break-all}.lf-node-text-auto-wrap-content,.lf-node-text-ellipsis-content{background:transparent;line-height:1.2;text-align:center;width:100%}.lf-node-text-ellipsis-content{white-space:nowrap}.lf-node-text-ellipsis-content>div{overflow:hidden;text-overflow:ellipsis}.lf-tool-overlay{inset:0;overflow:hidden;pointer-events:none;position:absolute;z-index:2}.lf-tool-overlay>*{pointer-events:all}.modification-overlay{inset:0;overflow:hidden;pointer-events:none;position:absolute;z-index:1}.modification-overlay>*{pointer-events:all}.lf-outline,.lf-snapline{pointer-events:none}.lf-keyboard-tips{float:right}.lf-node-select-decorate{border:1px dashed #343435;pointer-events:none;position:absolute;transform:translate(-50%,-50%)}.lf-multiple-select{border:2px dashed #4271dfcc;border-radius:12px;box-shadow:0 0 3px 0 #4271df80;cursor:move;position:absolute}.lf-edge-adjust-point{cursor:move}.lf-rotate-control{cursor:grabbing}.lf-resize-control-nw{cursor:nw-resize}.lf-resize-control-n{cursor:n-resize}.lf-resize-control-ne{cursor:ne-resize}.lf-resize-control-e{cursor:e-resize}.lf-resize-control-se{cursor:se-resize}.lf-resize-control-s{cursor:s-resize}.lf-resize-control-sw{cursor:sw-resize}.lf-resize-control-w{cursor:w-resize}";
2
+ export {
3
+ e as l
4
+ };
@@ -0,0 +1,4 @@
1
+ const i = '.medium-editor-anchor-preview,.medium-editor-toolbar{font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:16px;z-index:2000}@-webkit-keyframes medium-editor-image-loading{0%{-webkit-transform:scale(0);transform:scale(0)}to{-webkit-transform:scale(1);transform:scale(1)}}@keyframes medium-editor-image-loading{0%{-webkit-transform:scale(0);transform:scale(0)}to{-webkit-transform:scale(1);transform:scale(1)}}@-webkit-keyframes medium-editor-pop-upwards{0%{opacity:0;-webkit-transform:matrix(.97,0,0,1,0,12);transform:matrix(.97,0,0,1,0,12)}20%{opacity:.7;-webkit-transform:matrix(.99,0,0,1,0,2);transform:matrix(.99,0,0,1,0,2)}40%{opacity:1;-webkit-transform:matrix(1,0,0,1,0,-1);transform:matrix(1,0,0,1,0,-1)}to{-webkit-transform:matrix(1,0,0,1,0,0);transform:matrix(1,0,0,1,0,0)}}@keyframes medium-editor-pop-upwards{0%{opacity:0;-webkit-transform:matrix(.97,0,0,1,0,12);transform:matrix(.97,0,0,1,0,12)}20%{opacity:.7;-webkit-transform:matrix(.99,0,0,1,0,2);transform:matrix(.99,0,0,1,0,2)}40%{opacity:1;-webkit-transform:matrix(1,0,0,1,0,-1);transform:matrix(1,0,0,1,0,-1)}to{-webkit-transform:matrix(1,0,0,1,0,0);transform:matrix(1,0,0,1,0,0)}}.medium-editor-anchor-preview{word-wrap:break-word;left:0;line-height:1.4;max-width:280px;position:absolute;text-align:center;top:0;visibility:hidden;word-break:break-all}.medium-editor-anchor-preview a{color:#fff;display:inline-block;margin:5px 5px 10px}.medium-editor-placeholder-relative:after,.medium-editor-placeholder:after{content:attr(data-placeholder)!important;font-style:italic;margin:inherit;padding:inherit;white-space:pre}.medium-editor-anchor-preview-active{visibility:visible}.medium-editor-dragover{background:#ddd}.medium-editor-image-loading{-webkit-animation:medium-editor-image-loading 1s ease-in-out infinite;animation:medium-editor-image-loading 1s ease-in-out infinite;background-color:#333;border-radius:100%;display:inline-block;height:40px;width:40px}.medium-editor-placeholder{position:relative}.medium-editor-placeholder:after{left:0;position:absolute;top:0}.medium-editor-placeholder-relative,.medium-editor-placeholder-relative:after{position:relative}.medium-toolbar-arrow-over:before,.medium-toolbar-arrow-under:after{border-style:solid;content:"";display:block;height:0;left:50%;margin-left:-8px;position:absolute;width:0}.medium-toolbar-arrow-under:after{border-width:8px 8px 0}.medium-toolbar-arrow-over:before{border-width:0 8px 8px;top:-8px}.medium-editor-toolbar{left:0;position:absolute;top:0;visibility:hidden}.medium-editor-toolbar ul{margin:0;padding:0}.medium-editor-toolbar li{float:left;list-style:none;margin:0;padding:0}.medium-editor-toolbar li button{cursor:pointer;display:block;font-size:14px;line-height:1.33;margin:0;padding:15px;text-decoration:none}.medium-editor-toolbar li button:focus{outline:0}.medium-editor-toolbar li .medium-editor-action-underline{text-decoration:underline}.medium-editor-toolbar li .medium-editor-action-pre{font-family:Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:12px;font-weight:100;padding:15px 0}.medium-editor-toolbar-active{visibility:visible}.medium-editor-sticky-toolbar{position:fixed;top:1px}.medium-editor-relative-toolbar{position:relative}.medium-editor-toolbar-active.medium-editor-stalker-toolbar{-webkit-animation:medium-editor-pop-upwards .16s linear forwards;animation:medium-editor-pop-upwards .16s linear forwards}.medium-editor-action-bold{font-weight:bolder}.medium-editor-action-italic{font-style:italic}.medium-editor-toolbar-form{display:none}.medium-editor-toolbar-form a,.medium-editor-toolbar-form input{font-family:Helvetica Neue,Helvetica,Arial,sans-serif}.medium-editor-toolbar-form .medium-editor-toolbar-form-row{line-height:14px;margin-left:5px;padding-bottom:5px}.medium-editor-toolbar-form .medium-editor-toolbar-input,.medium-editor-toolbar-form label{border:none;box-sizing:border-box;display:inline-block;font-size:14px;margin:0;padding:6px;width:316px}.medium-editor-toolbar-form .medium-editor-toolbar-input:focus,.medium-editor-toolbar-form label:focus{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;box-shadow:none;outline:0}.medium-editor-toolbar-form a{display:inline-block;font-size:24px;font-weight:bolder;margin:0 10px;text-decoration:none}.medium-editor-toolbar-form-active{display:block}.medium-editor-toolbar-actions:after{clear:both;content:"";display:table}.medium-editor-element{word-wrap:break-word;min-height:30px}.medium-editor-element img{max-width:100%}.medium-editor-element sub{vertical-align:sub}.medium-editor-element sup{vertical-align:super}.medium-editor-hidden{display:none}.medium-toolbar-arrow-under:after{border-color:#000 transparent transparent;top:40px}.medium-toolbar-arrow-over:before{border-color:transparent transparent #000}.medium-editor-toolbar{background-color:#000;border:none;border-radius:50px}.medium-editor-toolbar li button{background-color:transparent;border:none;box-sizing:border-box;color:#ccc;height:40px;min-width:40px;padding:5px 12px;-webkit-transition:background-color .2s ease-in,color .2s ease-in;transition:background-color .2s ease-in,color .2s ease-in}.medium-editor-toolbar li .medium-editor-button-active,.medium-editor-toolbar li button:hover{background-color:#000;color:#a2d7c7}.medium-editor-toolbar li .medium-editor-button-first{border-bottom-left-radius:50px;border-top-left-radius:50px;padding-left:24px}.medium-editor-toolbar li .medium-editor-button-last{border-bottom-right-radius:50px;border-right:none;border-top-right-radius:50px;padding-right:24px}.medium-editor-toolbar-form{background:#000;border-radius:50px;color:#ccc;overflow:hidden}.medium-editor-toolbar-form .medium-editor-toolbar-input{background:#000;box-sizing:border-box;color:#ccc;height:40px;padding-left:16px;width:220px}.medium-editor-toolbar-form .medium-editor-toolbar-input::-webkit-input-placeholder{color:#f8f5f3;color:hsla(24,26%,96%,.8)}.medium-editor-toolbar-form .medium-editor-toolbar-input:-moz-placeholder,.medium-editor-toolbar-form .medium-editor-toolbar-input::-moz-placeholder{color:#f8f5f3;color:hsla(24,26%,96%,.8)}.medium-editor-toolbar-form .medium-editor-toolbar-input:-ms-input-placeholder{color:#f8f5f3;color:hsla(24,26%,96%,.8)}.medium-editor-toolbar-form a{color:#ccc;-webkit-transform:translateY(2px);transform:translateY(2px)}.medium-editor-toolbar-form .medium-editor-toolbar-close{margin-right:16px}.medium-editor-toolbar-anchor-preview{background:#000;border-radius:50px;padding:5px 12px}.medium-editor-anchor-preview a{color:#ccc;text-decoration:none}.medium-editor-toolbar-actions button,.medium-editor-toolbar-actions li{border-radius:50px}.picker_wrapper.no_alpha .picker_alpha{display:none}.picker_wrapper.no_editor .picker_editor{opacity:0;position:absolute;z-index:-1}.picker_wrapper.no_cancel .picker_cancel{display:none}.layout_default.picker_wrapper{align-items:stretch;display:flex;flex-flow:row wrap;font-size:10px;justify-content:space-between;padding:.5em;width:25em}.layout_default.picker_wrapper button,.layout_default.picker_wrapper input{font-size:1rem}.layout_default.picker_wrapper>*{margin:.5em}.layout_default.picker_wrapper:before{content:"";display:block;height:0;order:1;width:100%}.layout_default .picker_selector,.layout_default .picker_slider{padding:1em}.layout_default .picker_hue{width:100%}.layout_default .picker_sl{flex:1 1 auto}.layout_default .picker_sl:before{content:"";display:block;padding-bottom:100%}.layout_default .picker_editor{order:1;width:6.5rem}.layout_default .picker_editor input{height:100%;width:100%}.layout_default .picker_sample{flex:1 1 auto;order:1}.layout_default .picker_cancel,.layout_default .picker_done{order:1}.picker_wrapper{background:#f2f2f2;box-shadow:0 0 0 1px silver;box-sizing:border-box;color:#444;cursor:default;font-family:sans-serif;pointer-events:auto}.picker_wrapper:focus{outline:none}.picker_wrapper button,.picker_wrapper input{border:none;box-shadow:0 0 0 1px silver;box-sizing:border-box;outline:none}.picker_wrapper button:active,.picker_wrapper button:focus,.picker_wrapper input:active,.picker_wrapper input:focus{box-shadow:0 0 2px 1px #1e90ff}.picker_wrapper button{background-color:#f5f5f5;background-image:linear-gradient(0deg,#dcdcdc,transparent);cursor:pointer;padding:.4em .6em}.picker_wrapper button:active{background-image:linear-gradient(0deg,transparent,#dcdcdc)}.picker_wrapper button:hover{background-color:#fff}.picker_selector{background:currentColor;border:2px solid #fff;border-radius:100%;box-shadow:0 0 3px 1px #67b9ff;cursor:pointer;display:block;position:absolute;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);z-index:1}.picker_slider .picker_selector{border-radius:2px}.picker_hue{background-image:linear-gradient(90deg,red,#ff0,lime,cyan,blue,#f0f,red)}.picker_hue,.picker_sl{box-shadow:0 0 0 1px silver;position:relative}.picker_sl{background-image:linear-gradient(180deg,#fff,hsla(0,0%,100%,0) 50%),linear-gradient(0deg,#000,transparent 50%),linear-gradient(90deg,grey,hsla(0,0%,50%,0))}.picker_alpha,.picker_sample{background:linear-gradient(45deg,#d3d3d3 25%,transparent 0,transparent 75%,#d3d3d3 0) 0 0/2em 2em,linear-gradient(45deg,#d3d3d3 25%,#fff 0,#fff 75%,#d3d3d3 0) 1em 1em/2em 2em;box-shadow:0 0 0 1px silver;position:relative}.picker_alpha .picker_selector,.picker_sample .picker_selector{background:none}.picker_editor input{font-family:monospace;padding:.2em .4em}.picker_sample:before{background:currentColor;content:"";display:block;height:100%;position:absolute;width:100%}.picker_arrow{position:absolute;z-index:-1}.picker_wrapper.popup{margin:1.5em;position:absolute;z-index:2}.picker_wrapper.popup,.picker_wrapper.popup .picker_arrow:after,.picker_wrapper.popup .picker_arrow:before{background:#f2f2f2;box-shadow:0 0 10px 1px rgba(0,0,0,.4)}.picker_wrapper.popup .picker_arrow{height:3em;margin:0;width:3em}.picker_wrapper.popup .picker_arrow:after,.picker_wrapper.popup .picker_arrow:before{content:"";display:block;left:0;position:absolute;top:0;z-index:-99}.picker_wrapper.popup .picker_arrow:before{height:100%;-webkit-transform:skew(45deg);transform:skew(45deg);-webkit-transform-origin:0 100%;transform-origin:0 100%;width:100%}.picker_wrapper.popup .picker_arrow:after{box-shadow:none;height:150%;width:150%}.popup.popup_top{bottom:100%;left:0}.popup.popup_top .picker_arrow{bottom:0;left:0;-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.popup.popup_bottom{left:0;top:100%}.popup.popup_bottom .picker_arrow{left:0;top:0;-webkit-transform:rotate(90deg) scaleY(-1);transform:rotate(90deg) scaleY(-1)}.popup.popup_left{right:100%;top:0}.popup.popup_left .picker_arrow{right:0;top:0;-webkit-transform:scaleX(-1);transform:scaleX(-1)}.popup.popup_right{left:100%;top:0}.popup.popup_right .picker_arrow{left:0;top:0}.lf-label-overlay{height:0;overflow:visible;width:0}.lf-label-overlay .lf-label-editor{background:#fff;border-radius:5px;padding:4px}.lf-label-overlay .lf-label-editor-container{align-items:center;display:flex;justify-content:center;overflow:visible;position:absolute;text-align:center}.lf-label-overlay .lf-label-editor-container p{margin:0}.lf-label-overlay .lf-label-editor-dragging{cursor:move}.lf-label-overlay .lf-label-editor-editing{cursor:text;outline:2px solid #275dc5}.lf-label-overlay .lf-label-editor-hover{outline:2px dashed #acacac}.lf-label-overlay .lf-label-editor-clip{overflow:hidden;text-overflow:clip;white-space:nowrap;width:100px}.lf-label-overlay .lf-label-editor-ellipsis{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100px}.lf-label-overlay .lf-label-editor-wrap{overflow-wrap:break-word;white-space:normal}.lf-label-overlay .lf-label-editor-nowrap{overflow:visible;white-space:nowrap}.lf-control{background:hsla(0,0%,100%,.8);border-radius:8px;box-shadow:0 0 8px hsla(0,0%,85%,.7);display:flex;flex-wrap:nowrap;margin:5px;max-width:none;overflow:auto hidden;padding:4px 6px;position:absolute;right:10px;top:0;transition:all 3s ease;white-space:nowrap}.lf-control-dark{background:#33353a;color:#fff}.lf-control-item{align-items:center;border-radius:8px;cursor:pointer;display:flex;flex:0 0 auto;flex-direction:column;justify-content:center;margin:0 4px;padding:6px;transition:all .3s ease-in-out}.lf-control-item:hover{background:#efefef}.lf-control-item-colorful,.lf-control-item-default{color:#474747}.lf-control-item-colorful:hover,.lf-control-item-dark:hover,.lf-control-item-default:hover{background:#dadfea48}.lf-control-item.disabled{filter:opacity(.5);pointer-events:none}.lf-control-item.disabled:hover{background:#fff}.lf-control-item.disabled i{pointer-events:none}.lf-control-item i{background-size:cover;display:inline-block;height:20px;vertical-align:middle;width:20px}.lf-control-text{font-size:12px;margin-top:5px}.lf-control-zoomOut{background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHdpZHRoPSIxNS4yNDIiIGhlaWdodD0iMTUuMTI2Ij48cGF0aCBkPSJtMTEuOTIzIDEyLjQ1OCAyLjI0MyAyLjMxcS4wMzQuMDM1LjA3NS4wNjMuMDQuMDI4LjA4Ni4wNDguMDQ1LjAyLjA5NC4wMy4wNDguMDEuMDk4LjAxMi4wNSAwIC4wOTgtLjAwOC4wNS0uMDA4LjA5NS0uMDI2LjA0Ny0uMDE4LjA4OS0uMDQ0LjA0MS0uMDI2LjA3Ny0uMDZ0LjA2NS0uMDc0cS4wMjgtLjA0LjA0OC0uMDg0LjAyLS4wNDUuMDMtLjA5My4wMTEtLjA0Ny4wMTMtLjA5NiAwLS4wNS0uMDA4LS4wOTctLjAwOS0uMDQ4LS4wMjctLjA5NC0uMDE4LS4wNDUtLjA0NC0uMDg3LS4wMjctLjA0LS4wNjEtLjA3NmwtMi4yNDQtMi4zMXEtLjAzNC0uMDM1LS4wNzUtLjA2My0uMDQtLjAyOC0uMDg2LS4wNDgtLjA0NS0uMDItLjA5My0uMDMtLjA0OS0uMDExLS4wOTgtLjAxMi0uMDUtLjAwMS0uMDk5LjAwNy0uMDQ5LjAwOS0uMDk1LjAyNi0uMDQ2LjAxOC0uMDg4LjA0NC0uMDQyLjAyNi0uMDc4LjA2dC0uMDY0LjA3NHEtLjAyOS4wNC0uMDQ5LjA4NS0uMDIuMDQ0LS4wMy4wOTItLjAxMS4wNDgtLjAxMi4wOTctLjAwMS4wNDguMDA3LjA5Ny4wMS4wNDguMDI3LjA5My4wMTguMDQ2LjA0NS4wODcuMDI2LjA0MS4wNi4wNzdaIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGZpbGw9IiM0NzQ3NDciLz48ZWxsaXBzZSBjeD0iNy4xOTMiIGN5PSI3LjA5MSIgcng9IjYuNjkzIiByeT0iNi41OTEiIHN0cm9rZT0iIzQ3NDc0NyIvPjxwYXRoIGQ9Ik00Ljc4MSA3Ljc1Nmg1LjEzNnEuMDUgMCAuMDk3LS4wMS4wNDktLjAxLjA5NC0uMDI4LjA0Ni0uMDE5LjA4Ny0uMDQ2LjA0LS4wMjguMDc1LS4wNjMuMDM1LS4wMzQuMDYzLS4wNzUuMDI3LS4wNDEuMDQ2LS4wODcuMDE5LS4wNDUuMDI4LS4wOTMuMDEtLjA0OS4wMS0uMDk4IDAtLjA1LS4wMS0uMDk4dC0uMDI4LS4wOTNxLS4wMi0uMDQ2LS4wNDYtLjA4Ny0uMDI4LS4wNC0uMDYzLS4wNzUtLjAzNC0uMDM1LS4wNzUtLjA2My0uMDQxLS4wMjctLjA4Ny0uMDQ2LS4wNDUtLjAxOS0uMDk0LS4wMjgtLjA0OC0uMDEtLjA5Ny0uMDFINC43OHEtLjA1IDAtLjA5Ny4wMS0uMDQ5LjAxLS4wOTQuMDI4LS4wNDYuMDE5LS4wODcuMDQ2LS4wNC4wMjgtLjA3NS4wNjMtLjAzNS4wMzQtLjA2My4wNzUtLjAyNy4wNDEtLjA0Ni4wODctLjAxOS4wNDUtLjAyOC4wOTMtLjAxLjA0OS0uMDEuMDk4IDAgLjA1LjAxLjA5OHQuMDI4LjA5M3EuMDIuMDQ2LjA0Ni4wODcuMDI4LjA0LjA2My4wNzUuMDM0LjAzNS4wNzUuMDYzLjA0MS4wMjcuMDg3LjA0Ni4wNDUuMDE5LjA5NC4wMjguMDQ4LjAxLjA5Ny4wMVoiIGZpbGwtcnVsZT0iZXZlbm9kZCIgZmlsbD0iIzQ3NDc0NyIvPjwvc3ZnPg==")}.lf-control-zoomIn{background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHdpZHRoPSIxNS4wMzgiIGhlaWdodD0iMTUuNDAxIj48cGF0aCBkPSJtMTEuODY1IDEyLjg4MyAyLjA5NyAyLjE2di0uMDAxcS4wMzUuMDM1LjA3NS4wNjMuMDQuMDI4LjA4Ni4wNDguMDQ2LjAyLjA5NC4wMy4wNDkuMDExLjA5OC4wMTIuMDUuMDAxLjA5OS0uMDA3LjA0OS0uMDA5LjA5NS0uMDI2LjA0Ni0uMDE4LjA4OC0uMDQ0LjA0Mi0uMDI2LjA3OC0uMDYuMDM1LS4wMzQuMDY0LS4wNzQuMDI4LS4wNC4wNDgtLjA4NS4wMi0uMDQ0LjAzMS0uMDkyLjAxLS4wNDguMDEyLS4wOTcgMC0uMDQ4LS4wMDgtLjA5Ny0uMDA4LS4wNDgtLjAyNi0uMDkzLS4wMTgtLjA0Ni0uMDQ1LS4wODctLjAyNy0uMDQxLS4wNi0uMDc3bC0yLjA5OC0yLjE1OXEtLjAzNC0uMDM1LS4wNzUtLjA2My0uMDQtLjAyOC0uMDg2LS4wNDgtLjA0NS0uMDItLjA5NC0uMDMtLjA0OC0uMDEtLjA5OC0uMDEyLS4wNS0uMDAxLS4wOTguMDA3LS4wNS4wMDktLjA5NS4wMjctLjA0Ny4wMTctLjA4OC4wNDMtLjA0Mi4wMjctLjA3OC4wNi0uMDM2LjAzNC0uMDY0LjA3NC0uMDI5LjA0LS4wNDkuMDg1LS4wMi4wNDUtLjAzLjA5Mi0uMDExLjA0OC0uMDEyLjA5Ny0uMDAyLjA0OS4wMDcuMDk3LjAwOS4wNDguMDI3LjA5My4wMTguMDQ2LjA0NC4wODcuMDI3LjA0MS4wNjEuMDc3WiIgZmlsbC1ydWxlPSJldmVub2RkIiBmaWxsPSIjNDc0NzQ3Ii8+PGVsbGlwc2UgY3g9IjcuMjQxIiBjeT0iNy4yMiIgcng9IjYuNzQxIiByeT0iNi43MiIgc3Ryb2tlPSIjNDc0NzQ3Ii8+PHBhdGggZD0iTTYuNzQgMy43cTAtLjA1LjAxLS4wOTh0LjAyOS0uMDkzcS4wMTktLjA0Ni4wNDYtLjA4Ny4wMjctLjA0LjA2Mi0uMDc1LjAzNS0uMDM1LjA3Ni0uMDYzLjA0LS4wMjcuMDg2LS4wNDYuMDQ2LS4wMTkuMDk0LS4wMjguMDQ5LS4wMS4wOTgtLjAxdC4wOTcuMDFxLjA0OS4wMS4wOTQuMDI4LjA0Ni4wMTkuMDg2LjA0Ni4wNDEuMDI4LjA3Ni4wNjMuMDM1LjAzNC4wNjIuMDc1LjAyOC4wNDEuMDQ3LjA4Ny4wMTguMDQ1LjAyOC4wOTMuMDEuMDQ5LjAxLjA5OHYzLjAyaDMuMDNxLjA1IDAgLjA5OC4wMXQuMDk0LjAyOHEuMDQ1LjAxOS4wODYuMDQ2LjA0MS4wMjguMDc2LjA2My4wMzUuMDM0LjA2Mi4wNzUuMDI4LjA0MS4wNDYuMDg3LjAyLjA0NS4wMjkuMDkzLjAxLjA0OS4wMS4wOTggMCAuMDUtLjAxLjA5OHQtLjAyOS4wOTNxLS4wMTguMDQ2LS4wNDYuMDg3LS4wMjcuMDQtLjA2Mi4wNzUtLjAzNS4wMzUtLjA3Ni4wNjMtLjA0LjAyNy0uMDg2LjA0Ni0uMDQ2LjAxOS0uMDk0LjAyOC0uMDQ4LjAxLS4wOTcuMDFINy43NHYzLjAycTAgLjA1LS4wMS4wOTh0LS4wMjguMDkzcS0uMDIuMDQ2LS4wNDcuMDg3LS4wMjcuMDQtLjA2Mi4wNzUtLjAzNS4wMzUtLjA3Ni4wNjMtLjA0LjAyNy0uMDg2LjA0Ni0uMDQ1LjAxOS0uMDk0LjAyOC0uMDQ4LjAxLS4wOTcuMDEtLjA1IDAtLjA5OC0uMDF0LS4wOTQtLjAyOHEtLjA0NS0uMDE5LS4wODYtLjA0Ni0uMDQtLjAyOC0uMDc2LS4wNjMtLjAzNS0uMDM0LS4wNjItLjA3NS0uMDI3LS4wNDEtLjA0Ni0uMDg3LS4wMTktLjA0NS0uMDI5LS4wOTMtLjAxLS4wNDktLjAxLS4wOThWNy43MkgzLjcxcS0uMDUgMC0uMDk4LS4wMXQtLjA5My0uMDI4cS0uMDQ2LS4wMTktLjA4Ny0uMDQ2LS4wNC0uMDI4LS4wNzYtLjA2My0uMDM0LS4wMzQtLjA2Mi0uMDc1LS4wMjctLjA0MS0uMDQ2LS4wODctLjAxOS0uMDQ1LS4wMjgtLjA5My0uMDEtLjA0OS0uMDEtLjA5OCAwLS4wNS4wMS0uMDk4dC4wMjgtLjA5M3EuMDE5LS4wNDYuMDQ2LS4wODcuMDI4LS4wNC4wNjItLjA3NS4wMzUtLjAzNS4wNzYtLjA2My4wNDEtLjAyNy4wODctLjA0Ni4wNDUtLjAxOS4wOTMtLjAyOC4wNDktLjAxLjA5OC0uMDFoMy4wM1YzLjdaIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGZpbGw9IiM0NzQ3NDciLz48L3N2Zz4=")}.lf-control-fit{background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHdpZHRoPSIxNi40MDciIGhlaWdodD0iMTYuMzYiPjxyZWN0IHg9IjIuMTg1IiB5PSIyLjE4MiIgd2lkdGg9IjEyLjAzNyIgaGVpZ2h0PSIxMS45OTciIHJ4PSIzLjUiIHN0cm9rZT0iIzQ3NDc0NyIvPjxyZWN0IHg9Ii41IiB5PSIuNSIgd2lkdGg9IjE1LjQwNyIgaGVpZ2h0PSIxNS4zNiIgcng9IjAiIGZpbGw9Im5vbmUiLz48cGF0aCBkPSJNLjUgMGgzLjg1MnEuMDUgMCAuMDk3LjAxLjA0OS4wMS4wOTQuMDI4LjA0Ni4wMTkuMDg3LjA0Ni4wNC4wMjguMDc1LjA2Mi4wMzUuMDM1LjA2My4wNzYuMDI3LjA0MS4wNDYuMDg3LjAxOS4wNDUuMDI4LjA5My4wMS4wNDkuMDEuMDk4IDAgLjA1LS4wMS4wOThUNC44MTQuNjlxLS4wMi4wNDYtLjA0Ni4wODctLjAyOC4wNC0uMDYzLjA3Ni0uMDM0LjAzNC0uMDc1LjA2Mi0uMDQxLjAyNy0uMDg3LjA0NlE0LjQ5OC45OCA0LjQ1Ljk5IDQuNDAxIDEgNC4zNTIgMUguNVEuNDUgMSAuNDAyLjk5VC4zMS45NjJRLjI2My45NDMuMjIyLjkxNi4xODIuODg4LjE0Ni44NTQuMTEyLjgxOS4wODQuNzc4LjA1Ny43MzcuMDM4LjY5LjAyLjY0Ni4wMS41OTggMCAuNTQ5IDAgLjUgMCAuNDUuMDEuNDAyVC4wMzguMzFRLjA1Ny4yNjMuMDg0LjIyMi4xMTIuMTgyLjE0Ni4xNDYuMTgxLjExMi4yMjIuMDg0LjI2My4wNTcuMzEuMDM4LjM1NC4wMi40MDIuMDEuNDUxIDAgLjUgMFptMTEuNTU2IDBoNC4zNTF2NC4zNHEwIC4wNS0uMDEuMDk4LS4wMDkuMDQ4LS4wMjguMDkzLS4wMTguMDQ2LS4wNDYuMDg3LS4wMjcuMDQtLjA2Mi4wNzYtLjAzNS4wMzQtLjA3Ni4wNjItLjA0LjAyNy0uMDg2LjA0Ni0uMDQ2LjAxOS0uMDk0LjAyOC0uMDQ4LjAxLS4wOTguMDEtLjA0OSAwLS4wOTctLjAxdC0uMDk0LS4wMjhxLS4wNDUtLjAxOS0uMDg2LS4wNDYtLjA0MS0uMDI4LS4wNzYtLjA2Mi0uMDM1LS4wMzUtLjA2Mi0uMDc2LS4wMjgtLjA0MS0uMDQ3LS4wODctLjAxOC0uMDQ1LS4wMjgtLjA5My0uMDEtLjA0OS0uMDEtLjA5OFYuNWguNVYxaC0zLjg1MXEtLjA1IDAtLjA5OC0uMDF0LS4wOTQtLjAyOHEtLjA0NS0uMDE5LS4wODYtLjA0Ni0uMDQxLS4wMjgtLjA3Ni0uMDYyLS4wMzUtLjAzNS0uMDYyLS4wNzYtLjAyOC0uMDQxLS4wNDYtLjA4Ny0uMDItLjA0NS0uMDI5LS4wOTMtLjAxLS4wNDktLjAxLS4wOTggMC0uMDUuMDEtLjA5OHQuMDI5LS4wOTNxLjAxOC0uMDQ2LjA0Ni0uMDg3LjAyNy0uMDQuMDYyLS4wNzYuMDM1LS4wMzQuMDc2LS4wNjIuMDQtLjAyNy4wODYtLjA0Ni4wNDYtLjAxOS4wOTQtLjAyOC4wNDgtLjAxLjA5OC0uMDFabTQuMzUxIDEyLjAydjQuMzRoLTQuMzUxcS0uMDUgMC0uMDk4LS4wMXQtLjA5NC0uMDI4cS0uMDQ1LS4wMTktLjA4Ni0uMDQ2LS4wNDEtLjAyOC0uMDc2LS4wNjItLjAzNS0uMDM1LS4wNjItLjA3Ni0uMDI4LS4wNDEtLjA0Ni0uMDg3LS4wMi0uMDQ1LS4wMjktLjA5My0uMDEtLjA0OS0uMDEtLjA5OCAwLS4wNS4wMS0uMDk4dC4wMjktLjA5M3EuMDE4LS4wNDYuMDQ2LS4wODcuMDI3LS4wNC4wNjItLjA3Ni4wMzUtLjAzNC4wNzYtLjA2Mi4wNC0uMDI3LjA4Ni0uMDQ2LjA0Ni0uMDE5LjA5NC0uMDI4LjA0OC0uMDEuMDk4LS4wMWgzLjg1MXYuNWgtLjV2LTMuODRxMC0uMDUuMDEtLjA5OHQuMDI4LS4wOTNxLjAyLS4wNDYuMDQ3LS4wODcuMDI3LS4wNC4wNjItLjA3Ni4wMzUtLjAzNC4wNzYtLjA2Mi4wNC0uMDI3LjA4Ni0uMDQ2LjA0Ni0uMDE5LjA5NC0uMDI4LjA0OC0uMDEuMDk3LS4wMS4wNSAwIC4wOTguMDF0LjA5NC4wMjhxLjA0NS4wMTkuMDg2LjA0Ni4wNDEuMDI4LjA3Ni4wNjIuMDM1LjAzNS4wNjIuMDc2LjAyOC4wNDEuMDQ2LjA4Ny4wMi4wNDUuMDI5LjA5My4wMS4wNDkuMDEuMDk4Wk00LjM1MiAxNi4zNkgwdi00LjM0cTAtLjA1LjAxLS4wOTh0LjAyOC0uMDkzcS4wMTktLjA0Ni4wNDYtLjA4Ny4wMjgtLjA0LjA2Mi0uMDc2LjAzNS0uMDM0LjA3Ni0uMDYyLjA0MS0uMDI3LjA4Ny0uMDQ2LjA0NS0uMDE5LjA5My0uMDI4LjA0OS0uMDEuMDk4LS4wMS4wNSAwIC4wOTguMDF0LjA5My4wMjhxLjA0Ni4wMTkuMDg3LjA0Ni4wNC4wMjguMDc2LjA2Mi4wMzQuMDM1LjA2Mi4wNzYuMDI3LjA0MS4wNDYuMDg3LjAxOS4wNDUuMDI4LjA5My4wMS4wNDkuMDEuMDk4djMuODRILjV2LS41aDMuODUycS4wNSAwIC4wOTcuMDEuMDQ5LjAxLjA5NC4wMjguMDQ2LjAxOS4wODcuMDQ2LjA0LjAyOC4wNzUuMDYyLjAzNS4wMzUuMDYzLjA3Ni4wMjcuMDQxLjA0Ni4wODcuMDE5LjA0NS4wMjguMDkzLjAxLjA0OS4wMS4wOTggMCAuMDUtLjAxLjA5OHQtLjAyOC4wOTNxLS4wMi4wNDYtLjA0Ni4wODctLjAyOC4wNC0uMDYzLjA3Ni0uMDM0LjAzNC0uMDc1LjA2Mi0uMDQxLjAyNy0uMDg3LjA0Ni0uMDQ1LjAxOS0uMDk0LjAyOC0uMDQ4LjAxLS4wOTcuMDFaTTAgNC4zNFYwaDQuMzUycS4wNSAwIC4wOTcuMDEuMDQ5LjAxLjA5NC4wMjguMDQ2LjAxOS4wODcuMDQ2LjA0LjAyOC4wNzUuMDYyLjAzNS4wMzUuMDYzLjA3Ni4wMjcuMDQxLjA0Ni4wODcuMDE5LjA0NS4wMjguMDkzLjAxLjA0OS4wMS4wOTggMCAuMDUtLjAxLjA5OFQ0LjgxNC42OXEtLjAyLjA0Ni0uMDQ2LjA4Ny0uMDI4LjA0LS4wNjMuMDc2LS4wMzQuMDM0LS4wNzUuMDYyLS4wNDEuMDI3LS4wODcuMDQ2UTQuNDk4Ljk4IDQuNDUuOTkgNC40MDEgMSA0LjM1MiAxSC41Vi41SDF2My44NHEwIC4wNS0uMDEuMDk4dC0uMDI4LjA5M3EtLjAxOS4wNDYtLjA0Ni4wODctLjAyOC4wNC0uMDYyLjA3Ni0uMDM1LjAzNC0uMDc2LjA2Mi0uMDQxLjAyNy0uMDg3LjA0Ni0uMDQ1LjAxOS0uMDkzLjAyOC0uMDQ5LjAxLS4wOTguMDEtLjA1IDAtLjA5OC0uMDFULjMxIDQuODAycS0uMDQ2LS4wMTktLjA4Ny0uMDQ2LS4wNC0uMDI4LS4wNzYtLjA2Mi0uMDM0LS4wMzUtLjA2Mi0uMDc2LS4wMjctLjA0MS0uMDQ2LS4wODdRLjAyIDQuNDg2LjAxIDQuNDM4IDAgNC4zODkgMCA0LjM0WiIgZmlsbD0iIzQ3NDc0NyIvPjwvc3ZnPg==")}.lf-control-undo{background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHdpZHRoPSIxNC4zNTciIGhlaWdodD0iMTUuMDgiPjxwYXRoIGQ9Ik0xMy4zNTggMTMuNjJ2Ljk2cTAgLjA1LjAxLjA5OHQuMDI4LjA5M3EuMDE5LjA0Ni4wNDYuMDg3LjAyNy4wNC4wNjIuMDc1LjAzNS4wMzUuMDc2LjA2My4wNDEuMDI3LjA4Ni4wNDYuMDQ2LjAxOS4wOTQuMDI4LjA0OS4wMS4wOTguMDF0LjA5Ny0uMDFxLjA0OS0uMDEuMDk0LS4wMjguMDQ2LS4wMTkuMDg2LS4wNDYuMDQxLS4wMjguMDc2LS4wNjMuMDM1LS4wMzQuMDYyLS4wNzUuMDI4LS4wNDEuMDQ3LS4wODcuMDE4LS4wNDUuMDI4LS4wOTMuMDEtLjA0OS4wMS0uMDk4di0uOTZxMC0zLjUyLTIuNDktNi4wMS0yLjQ5LTIuNDktNi4wMS0yLjQ5SDQuNTQ5cS0uMDUgMC0uMDk3LjAxLS4wNDkuMDEtLjA5NC4wMjgtLjA0Ni4wMTktLjA4Ny4wNDYtLjA0LjAyOC0uMDc1LjA2My0uMDM1LjAzNC0uMDYzLjA3NS0uMDI3LjA0MS0uMDQ2LjA4Ny0uMDE5LjA0NS0uMDI4LjA5My0uMDEuMDQ5LS4wMS4wOTggMCAuMDUuMDEuMDk4dC4wMjguMDkzcS4wMi4wNDYuMDQ2LjA4Ny4wMjguMDQuMDYzLjA3NS4wMzQuMDM1LjA3NS4wNjMuMDQxLjAyNy4wODcuMDQ2LjA0NS4wMTkuMDk0LjAyOC4wNDguMDEuMDk3LjAxaDEuMzA5cTMuMTA2IDAgNS4zMDMgMi4xOTcgMi4xOTcgMi4xOTYgMi4xOTcgNS4zMDNaIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGZpbGw9IiM0NzQ3NDciLz48cGF0aCBkPSJNNS44NzYuODQycS4wNjYtLjA3LjEtLjE1OC4wMzYtLjA4OS4wMzYtLjE4NCAwLS4wNS0uMDEtLjA5OFQ1Ljk3NC4zMVE1Ljk1NS4yNjMgNS45MjguMjIyIDUuOS4xODIgNS44NjYuMTQ3IDUuODMuMTEyIDUuNzkuMDg0IDUuNzQ5LjA1NyA1LjcwMy4wMzggNS42NTguMDIgNS42MS4wMSA1LjU2IDAgNS41MTIgMHEtLjEwMyAwLS4xOTguMDQxLS4wOTUuMDQxLS4xNjYuMTE3TDAgNS42M2w1LjE2IDUuMTQzcS4wNy4wNy4xNjEuMTA4LjA5Mi4wMzguMTkxLjAzOC4wNSAwIC4wOTgtLjAxdC4wOTMtLjAyOHEuMDQ2LS4wMTkuMDg3LS4wNDYuMDQtLjAyOC4wNzYtLjA2My4wMzQtLjAzNC4wNjItLjA3NS4wMjctLjA0MS4wNDYtLjA4Ny4wMTktLjA0NS4wMjgtLjA5My4wMS0uMDQ5LjAxLS4wOTggMC0uMS0uMDM4LS4xOTJ0LS4xMDktLjE2MmwtNC40Ny00LjQ1N0w1Ljg3NS44NDNaIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGZpbGw9IiM0NzQ3NDciLz48L3N2Zz4=")}.lf-control-redo{background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHdpZHRoPSIxNS4yMTgiIGhlaWdodD0iMTYiPjxwYXRoIGQ9Ik0xIDEzLjk1NVYxNS41cTAgLjA1LS4wMS4wOTh0LS4wMjguMDkzcS0uMDE5LjA0Ni0uMDQ2LjA4Ny0uMDI4LjA0LS4wNjIuMDc1LS4wMzUuMDM1LS4wNzYuMDYzLS4wNDEuMDI3LS4wODcuMDQ2LS4wNDUuMDE5LS4wOTMuMDI4US41NDkgMTYgLjUgMTZxLS4wNSAwLS4wOTctLjAxLS4wNDktLjAxLS4wOTQtLjAyOC0uMDQ2LS4wMTktLjA4Ny0uMDQ2LS4wNC0uMDI4LS4wNzUtLjA2My0uMDM1LS4wMzQtLjA2My0uMDc1LS4wMjctLjA0MS0uMDQ2LS4wODctLjAxOS0uMDQ1LS4wMjgtLjA5M1EwIDE1LjU0OSAwIDE1LjV2LTEuNTQ1cTAtMy41MjEgMi40OS02LjAxIDIuNDktMi40OSA2LjAxLTIuNDloMS45MTdxLjA1IDAgLjA5Ny4wMS4wNDkuMDA5LjA5NC4wMjguMDQ2LjAxOS4wODcuMDQ2LjA0LjAyNy4wNzUuMDYyLjAzNS4wMzUuMDYzLjA3Ni4wMjcuMDQuMDQ2LjA4Ni4wMTkuMDQ2LjAyOC4wOTQuMDEuMDQ4LjAxLjA5OCAwIC4wNDktLjAxLjA5N3QtLjAyOC4wOTRxLS4wMTkuMDQ1LS4wNDYuMDg2LS4wMjguMDQxLS4wNjMuMDc2LS4wMzQuMDM1LS4wNzUuMDYyLS4wNDEuMDI4LS4wODcuMDQ2LS4wNDUuMDItLjA5NC4wMjktLjA0OC4wMS0uMDk3LjAxSDguNXEtMy4xMDcgMC01LjMwMyAyLjE5NlExIDEwLjg0OCAxIDEzLjk1NVoiIGZpbGwtcnVsZT0iZXZlbm9kZCIgZmlsbD0iIzQ3NDc0NyIvPjxwYXRoIGQ9Ik05LjAyNy44NDJxLS4wNjUtLjA3LS4xLS4xNThROC44OS41OTUgOC44OS41cTAtLjA1LjAxLS4wOThUOC45MjkuMzFxLjAyLS4wNDYuMDQ2LS4wODcuMDI4LS4wNC4wNjMtLjA3NS4wMzQtLjAzNS4wNzUtLjA2My4wNDEtLjAyNy4wODctLjA0Ni4wNDUtLjAxOS4wOTQtLjAyOFE5LjM0MiAwIDkuMzkgMHEuMTA0IDAgLjE5OC4wNDEuMDk1LjA0MS4xNjYuMTE3bDUuNDYyIDUuODA4LTUuNDczIDUuNDU2cS0uMDcuMDctLjE2Mi4xMDgtLjA5Mi4wMzgtLjE5LjAzOC0uMDUgMC0uMDk4LS4wMS0uMDQ5LS4wMS0uMDk0LS4wMjgtLjA0Ni0uMDE5LS4wODctLjA0Ni0uMDQtLjAyOC0uMDc1LS4wNjItLjAzNS0uMDM1LS4wNjMtLjA3Ni0uMDI3LS4wNDEtLjA0Ni0uMDg3LS4wMTktLjA0NS0uMDI4LS4wOTMtLjAxLS4wNDktLjAxLS4wOTggMC0uMS4wMzgtLjE5MS4wMzktLjA5My4xMS0uMTYzbDQuNzg1LTQuNzdMOS4wMjcuODQyWiIgZmlsbC1ydWxlPSJldmVub2RkIiBmaWxsPSIjNDc0NzQ3Ii8+PC9zdmc+")}.lf-menu{background:#fff;border:1px solid #efefee;border-radius:8px;display:none;margin:0 0 0 10px;padding:6px;position:absolute;width:150px;z-index:999}.lf-menu-dark{background:#33353a;color:#fff}.lf-menu>li{cursor:pointer;font-size:12px;line-height:14px;list-style:none;padding:6px;position:relative;transition:all .12s ease-in-out}.lf-menu-item{align-items:center;border-radius:6px;display:flex;gap:4px;justify-content:flex-start;list-style:none}.lf-menu-item:hover{background:#f3f3f3}.lf-menu-item__disabled{color:#aaa;cursor:not-allowed!important;opacity:.88;pointer-events:inherit!important}.lf-menu-item__disabled:hover{background:#fff}.lf-dndpanel{background:hsla(0,0%,100%,.8);border-radius:8px;box-shadow:0 0 4px 1px hsla(0,0%,85%,.5);margin:5px;padding:10px 4px;position:absolute;z-index:999}.lf-dnd-item{font-size:14px;margin-top:5px;padding:6px;text-align:center}.lf-dnd-item.disabled>div{color:#a8abb2;cursor:not-allowed}.lf-dnd-shape{background-position:50%;background-repeat:no-repeat;background-size:contain;border-radius:8px;cursor:grab;height:36px;margin:0 auto;opacity:.99;width:36px}.lf-selection-select{border:2px dashed #ffab03;position:absolute}.lf-mini-map{background:#fefefe;border-radius:8px;box-shadow:0 0 10px 1px hsla(0,0%,72%,.5);overflow:hidden;padding:28px 8px 8px;position:absolute}.lf-mini-map .lf-graph{height:100%!important;width:100%!important}.lf-mini-map-graph{border-radius:8px;overflow:hidden;position:relative}.lf-minimap-viewport{background-color:hsla(0,0%,85%,.5);border-radius:2px;cursor:grab;left:0;position:absolute;top:0}.lf-mini-map-header{left:0;line-height:18px;margin:4px 6px;position:absolute;right:0;top:0}.lf-mini-map-close{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAACL0lEQVRoQ+1YT2vUQBT/vS+Smc3u0ZtfwA+hUKEttIIVbMEWrGAL3UItqKCCCipooS3Ynu29ePfqLcnO5Nov0NsrWbc0myxtJpNmGZw9LZk37/3+vCTzQnD8R47jhycwbQe9A94BSwV8C1kKaL3dO2AtoWWC/8+BMJB9ItwHcM6MX0mqtm1EzOU7Y8bvJFV9k3zGDnSFPAVw76oIb8ZavzIpehnbE+Ilg/J7/8Za3THJVYfAHwB3x4owXsSpemNSuCs6zwEu7rl9AmEgt4hQspkIa5FS76uQCKV8RoxSLDP6pi1p7EAGsCvEBkA7ZbC0EuvBp+tI9IR4yqBSDIE3Iq13qwiQj6lFYEgikOsgvC4VJDyJlfo6CUg3kI9BmLBG67EevDUFn8XXJpBt7km5yox3xcIMfpRo/SN/PZRygRhj17J1JqwmSn2oA96awL926iwD/LEIgJjmo3RwMCQadGaZePh/3H5ejrT+XBd8IwSGJKRcAuPLhHZ6mIkMxlFpjbEUp+qbDfjGCGSJQiEWCfS9CiAmLCZK7VWJvSnG6h4oJu8FnTkm3r+uKDHNReng8CZgVdcbJTBqpxkwfk4EQJiJlTquCq5KnCeQV8npFnL6Jnb6Mer0i8zpo4TThzmnj9OjGXardDBrZqDZbmMmdnukdH6oL3xWOTG1vNh6oxn7AYB2PqtUOWC1GdP4Ya5N8I0ONG0Dv6znHZiW8t6BaSvvHfAONKSAf4w2JGTtNBey0xBAkjSEzwAAAABJRU5ErkJggg==");background-size:contain;color:#474747a0;cursor:pointer;height:18px;position:absolute;right:2px;top:6px;width:18px}.lf-mini-map-close:hover{color:#474747}.lf-mini-map-no-header{padding-top:8px}.lf-mini-map-no-close-icon .lf-mini-map-close,.lf-mini-map-no-header .lf-mini-map-header{display:none}.lf-resize-control-0{cursor:nw-resize}.lf-resize-control-1{cursor:ne-resize}.lf-resize-control-2{cursor:se-resize}.lf-resize-control-3{cursor:sw-resize}.lf-inner-context{display:none;flex-flow:column wrap;height:90px;position:absolute}.lf-context-item{box-sizing:content-box;height:20px;margin:0 2px 2px 0;padding:2px 3px;width:20px}.lf-context-item:hover{background:rgba(201,217,216,.5)}.lf-context-img{cursor:pointer;height:20px;width:20px}.lf-mindmap_addIcon{margin-top:10px}';
2
+ export {
3
+ i as l
4
+ };
@@ -37,10 +37,12 @@ export interface EditorAction {
37
37
  }
38
38
  export declare class ActionRegistry {
39
39
  private actions;
40
- register(action: EditorAction, overwrite?: boolean): void;
41
- registerAll(actions: EditorAction[], overwrite?: boolean): void;
40
+ private owners;
41
+ register(action: EditorAction, overwrite?: boolean, owner?: symbol | 'builtin'): void;
42
+ registerAll(actions: EditorAction[], overwrite?: boolean, owner?: symbol | 'builtin'): void;
42
43
  unregister(id: string): boolean;
43
44
  get(id: string): EditorAction | undefined;
45
+ getOwner(id: string): symbol | 'builtin' | undefined;
44
46
  list(context?: EditorActionContext): EditorAction[];
45
47
  invoke(id: string, context: EditorActionContext): Promise<boolean>;
46
48
  clear(): void;
@@ -1,6 +1,7 @@
1
- import type { RuleChainData, RuleChainConfig, RuleNodeConfig } from '../types/rule-chain';
1
+ import type { RuleChainData, RuleChainConfig, RuleNodeConfig, RuleConnectionConfig } from '../types/rule-chain';
2
2
  import type { ComponentDefinition } from '../types/component';
3
3
  import type { EditorInternalData } from '../types/editor';
4
+ import { type EndpointBindingSnapshot } from './endpoint-protocol';
4
5
  export interface LFNodeData {
5
6
  id: string;
6
7
  type: string;
@@ -14,6 +15,9 @@ export interface LFNodeData {
14
15
  width?: number;
15
16
  height?: number;
16
17
  children?: string[];
18
+ __huanbanEndpointOrigin?: boolean;
19
+ __huanbanEndpointBindings?: EndpointBindingSnapshot[];
20
+ [key: string]: any;
17
21
  };
18
22
  }
19
23
  export interface LFPoint {
@@ -32,13 +36,24 @@ export interface LFEdgeData {
32
36
  text?: string;
33
37
  properties: {
34
38
  model: Record<string, any>;
39
+ __huanbanConnectionModels?: RuleConnectionConfig[];
40
+ __huanbanEndpointConnectionModels?: RuleConnectionConfig[];
35
41
  };
36
42
  }
43
+ interface AdapterPreservation {
44
+ ruleChainId: string;
45
+ firstNodeId?: string;
46
+ data: Record<string, unknown>;
47
+ metadata: Record<string, unknown>;
48
+ connections: RuleConnectionConfig[];
49
+ }
37
50
  export interface LFGraphData {
38
51
  nodes: LFNodeData[];
39
52
  edges: LFEdgeData[];
53
+ __huanbanPreservation?: AdapterPreservation;
40
54
  }
41
55
  export declare class DataAdapter {
56
+ private readonly preservation;
42
57
  adapterIn(userData: RuleChainData, nodeComponents: Record<string, ComponentDefinition>, internalData: EditorInternalData, options: {
43
58
  startX: number;
44
59
  startY: number;
@@ -46,3 +61,4 @@ export declare class DataAdapter {
46
61
  adapterOut(logicFlowData: LFGraphData, ruleChain: RuleChainConfig, internalData: EditorInternalData, getNodeModelById: (id: string) => LFNodeData | null): RuleChainData;
47
62
  private lfNodeId2CustomNodeId;
48
63
  }
64
+ export {};
@@ -0,0 +1,33 @@
1
+ export interface ConfirmOptions {
2
+ title?: string;
3
+ message: string;
4
+ confirmText?: string;
5
+ cancelText?: string;
6
+ type?: 'info' | 'warning' | 'danger';
7
+ }
8
+ export interface PromptOptions {
9
+ title?: string;
10
+ message: string;
11
+ defaultValue?: string;
12
+ placeholder?: string;
13
+ confirmText?: string;
14
+ cancelText?: string;
15
+ }
16
+ export interface AlertOptions {
17
+ title?: string;
18
+ message: string;
19
+ confirmText?: string;
20
+ type?: 'info' | 'warning' | 'error' | 'success';
21
+ }
22
+ export interface DialogProvider {
23
+ confirm(options: ConfirmOptions): Promise<boolean>;
24
+ prompt(options: PromptOptions): Promise<string | null>;
25
+ alert(options: AlertOptions): Promise<void>;
26
+ destroy?(): void;
27
+ }
28
+ export interface DefaultDialogProviderOptions {
29
+ container?: HTMLElement | (() => HTMLElement | null);
30
+ getThemeClass?: () => string;
31
+ t?: (key: string, fallback: string) => string;
32
+ }
33
+ export declare function createDefaultDialogProvider(options?: DefaultDialogProviderOptions): DialogProvider;
@@ -12,6 +12,7 @@ import type { EditorEventMap, EditorEventName } from '../types/events';
12
12
  import type { RuleChainData, RuleChainConfig, RuleNodeConfig, RuleConnectionConfig } from '../types/rule-chain';
13
13
  import type { ComponentDefinition, ComponentGroup, RawComponentData } from '../types/component';
14
14
  import { ActionRegistry } from './ActionRegistry';
15
+ import { PropertyControlRegistry } from './PropertyControlRegistry';
15
16
  import type { EditorActionContext, EditorActionSource, EditorSelectionSnapshot } from './ActionRegistry';
16
17
  import { FieldCapabilityRegistry } from './FieldCapabilityRegistry';
17
18
  import { OptionSourceRegistry } from './OptionSourceRegistry';
@@ -48,6 +49,7 @@ export declare class EditorCore {
48
49
  readonly fieldCapabilities: FieldCapabilityRegistry;
49
50
  readonly optionSources: OptionSourceRegistry;
50
51
  readonly fieldChanges: FieldChangeRegistry;
52
+ readonly propertyControls: PropertyControlRegistry;
51
53
  readonly diagnostics: DiagnosticService;
52
54
  readonly documents: ComponentDocService;
53
55
  readonly runtimeFields: RuntimeFieldDictionary;
@@ -58,7 +60,11 @@ export declare class EditorCore {
58
60
  private initialized;
59
61
  private disposeLocaleChange;
60
62
  private disposeThemeChange;
61
- private fieldChangeContributionHandlers;
63
+ private readonly optionContributionOwner;
64
+ private actionContributionFallbacks;
65
+ private capabilityContributionFallbacks;
66
+ private optionSourceContributionFallbacks;
67
+ private fieldChangeContributionFallbacks;
62
68
  constructor(options: EditorOptions);
63
69
  init(lfInstance?: unknown): void;
64
70
  destroy(): void;
@@ -66,8 +72,10 @@ export declare class EditorCore {
66
72
  registerComponents(components: ComponentDefinition[], overwrite?: boolean): ComponentGroup[];
67
73
  private syncComponentState;
68
74
  private localizeComponentGroups;
69
- loadData(ruleChainData: RuleChainData): void;
70
- exportData(lfGraphData: LFGraphData, getNodeModelById: (id: string) => LFNodeData | null): RuleChainData;
75
+ loadData(ruleChainData: RuleChainData, beforeApply?: () => void): void;
76
+ exportData(lfGraphData: LFGraphData, getNodeModelById: (id: string) => LFNodeData | null, options?: {
77
+ applyTransform?: boolean;
78
+ }): RuleChainData;
71
79
  validateGraph(lfGraphData: LFGraphData): import("./ValidationEngine").ValidationResult;
72
80
  validateTopology(lfGraphData: LFGraphData): DiagnosticItem[];
73
81
  invokeAction(id: string, runtime: EditorActionContext['runtime'], selection?: EditorSelectionSnapshot, source?: EditorActionSource, extra?: Record<string, unknown>): Promise<boolean>;
@@ -78,6 +86,11 @@ export declare class EditorCore {
78
86
  getLfInstance(): unknown;
79
87
  getOptions(): Readonly<EditorOptions>;
80
88
  updateOptions(patch: Partial<Omit<EditorOptions, 'container'>>): void;
89
+ private replaceOptionContributions;
90
+ private replaceActionContributions;
91
+ private replaceCapabilityContributions;
92
+ private replaceOptionSourceContributions;
93
+ private replaceFieldChangeContributions;
81
94
  private toProviderFieldOptions;
82
95
  }
83
96
  export {};
@@ -7,9 +7,12 @@ export interface FieldCapabilityContext {
7
7
  export type FieldCapabilityHandler = (component: ComponentDefinition, params: Record<string, unknown>, context: FieldCapabilityContext) => void;
8
8
  export declare class FieldCapabilityRegistry {
9
9
  private handlers;
10
+ private owners;
10
11
  constructor();
11
- register(name: string, handler: FieldCapabilityHandler, overwrite?: boolean): void;
12
+ register(name: string, handler: FieldCapabilityHandler, overwrite?: boolean, owner?: symbol | 'builtin'): void;
12
13
  unregister(name: string): boolean;
14
+ get(name: string): FieldCapabilityHandler | undefined;
15
+ getOwner(name: string): symbol | 'builtin' | undefined;
13
16
  clear(): void;
14
17
  apply(component: ComponentDefinition, context?: FieldCapabilityContext): ComponentDefinition;
15
18
  private registerBuiltinCapabilities;
@@ -33,13 +33,15 @@ export declare class FieldChangeHandlerNotFoundError extends Error {
33
33
  export declare function getFieldChangeHandlerName(field: ComponentField): string | undefined;
34
34
  export declare class FieldChangeRegistry {
35
35
  private handlers;
36
+ private owners;
36
37
  private active;
37
38
  private generation;
38
39
  private abortHandlerExecutions;
39
- register(name: string, handler: FieldChangeHandler, overwrite?: boolean): void;
40
+ register(name: string, handler: FieldChangeHandler, overwrite?: boolean, owner?: symbol | 'builtin'): void;
40
41
  unregister(name: string): boolean;
41
42
  has(name: string): boolean;
42
43
  resolve(name: string): FieldChangeHandler | undefined;
44
+ getOwner(name: string): symbol | 'builtin' | undefined;
43
45
  private requestKey;
44
46
  execute(field: ComponentField, value: unknown, context: FieldChangeResolveContext): Promise<FieldChangeExecutionResult>;
45
47
  abort(requestKey: string): boolean;
@@ -1,4 +1,5 @@
1
1
  export type LocaleMessages = Record<string, string | Record<string, unknown>>;
2
+ export declare function normalizeLocale(locale?: string): string;
2
3
  export type TranslationSource = {
3
4
  t?: (key: string, params?: Record<string, string | number>) => string;
4
5
  } | ((key: string, params?: Record<string, string | number>) => string) | null | undefined;
@@ -22,7 +23,6 @@ export declare class I18nManager {
22
23
  has(key: string, locale?: string): boolean;
23
24
  destroy(): void;
24
25
  private lookup;
25
- private interpolate;
26
26
  private deepMerge;
27
27
  }
28
28
  export {};
@@ -0,0 +1,32 @@
1
+ export interface UserIdentity {
2
+ username: string;
3
+ displayName?: string;
4
+ role?: string;
5
+ avatar?: string;
6
+ permissions?: string[];
7
+ }
8
+ export interface LoginCredentials {
9
+ username: string;
10
+ password: string;
11
+ }
12
+ export interface LoginResult {
13
+ token: string;
14
+ user: UserIdentity;
15
+ expiresAt?: number;
16
+ }
17
+ export interface AuthErrorDetails {
18
+ status: number;
19
+ url: string;
20
+ }
21
+ export type AuthChangeCallback = (user: UserIdentity | null) => void;
22
+ export interface IdentityProvider {
23
+ getToken(): string | null;
24
+ clearToken(): void;
25
+ setToken(token: string): void;
26
+ getCurrentUser(): UserIdentity | null;
27
+ login(credentials: LoginCredentials): Promise<LoginResult>;
28
+ logout(): Promise<void>;
29
+ isAuthenticated(): boolean;
30
+ onAuthChange(callback: AuthChangeCallback): () => void;
31
+ handleAuthError(details: AuthErrorDetails): Promise<boolean>;
32
+ }
@@ -29,9 +29,12 @@ export type OptionSourceResolver = (context: OptionSourceContext) => ComponentFi
29
29
  export declare function buildOptionSourceRequestKey(fields: ComponentField[], context: OptionSourceResolveContext): string;
30
30
  export declare class OptionSourceRegistry {
31
31
  private resolvers;
32
+ private owners;
32
33
  constructor();
33
- register(name: string, resolver: OptionSourceResolver, overwrite?: boolean): void;
34
+ register(name: string, resolver: OptionSourceResolver, overwrite?: boolean, owner?: symbol | 'builtin'): void;
34
35
  unregister(name: string): boolean;
36
+ get(name: string): OptionSourceResolver | undefined;
37
+ getOwner(name: string): symbol | 'builtin' | undefined;
35
38
  has(name: string): boolean;
36
39
  resolve(field: ComponentField, context: OptionSourceResolveContext): Promise<ComponentFieldOption[]>;
37
40
  clear(): void;
@@ -0,0 +1,29 @@
1
+ import type { ComponentField } from '../types/component';
2
+ export interface PropertyControlMountContext {
3
+ container: HTMLElement;
4
+ field: ComponentField;
5
+ value: unknown;
6
+ configuration: Readonly<Record<string, unknown>>;
7
+ readOnly: boolean;
8
+ locale: string;
9
+ t: (key: string, params?: Record<string, string>) => string;
10
+ onChange: (value: unknown) => void;
11
+ signal: AbortSignal;
12
+ }
13
+ export interface PropertyControlInstance {
14
+ getValue(): unknown;
15
+ setValue?(value: unknown): void;
16
+ refreshLocale?(): void;
17
+ validate?(): string | string[] | null;
18
+ destroy(): void;
19
+ }
20
+ export interface PropertyControlRenderer {
21
+ mount(context: PropertyControlMountContext): PropertyControlInstance;
22
+ }
23
+ export declare class PropertyControlRegistry {
24
+ private readonly renderers;
25
+ register(name: string, renderer: PropertyControlRenderer, overwrite?: boolean): void;
26
+ resolve(nameOrField: string | Pick<ComponentField, 'component'> | null | undefined): PropertyControlRenderer | undefined;
27
+ unregister(name: string): boolean;
28
+ clear(): void;
29
+ }
@@ -6,16 +6,23 @@ export interface ThemeDefinition {
6
6
  variables: ThemeVariables;
7
7
  }
8
8
  type ThemeChangeCallback = (themeName: string, isDark: boolean) => void;
9
+ export declare function getElementThemeManager(element?: HTMLElement | null): ThemeManager | undefined;
9
10
  export declare class ThemeManager {
10
11
  private themes;
11
12
  private currentTheme;
12
13
  private targetElement;
14
+ private scopes;
13
15
  private changeCallbacks;
14
16
  private systemThemeQuery;
15
17
  private systemThemeHandler;
16
18
  constructor();
17
19
  register(theme: ThemeDefinition, overwrite?: boolean): void;
18
20
  setTheme(name: string, container?: HTMLElement): void;
21
+ bindElement(element: HTMLElement): () => void;
22
+ private ensureScope;
23
+ private restoreVariable;
24
+ private applyScope;
25
+ private releaseScope;
19
26
  getTheme(): string;
20
27
  getThemeDefinition(): ThemeDefinition | undefined;
21
28
  getAvailableThemes(): Array<{
@@ -0,0 +1,16 @@
1
+ export interface AnchoredPopoverOptions {
2
+ anchor: HTMLElement;
3
+ popup: HTMLElement;
4
+ owner?: HTMLElement;
5
+ portal?: boolean;
6
+ maxHeight?: number;
7
+ minWidth?: number;
8
+ signal?: AbortSignal;
9
+ onDismiss?: (reason: 'outside' | 'escape' | 'tab' | 'detached') => void;
10
+ focusTarget?: HTMLElement;
11
+ }
12
+ export interface AnchoredPopoverBinding {
13
+ update(): void;
14
+ destroy(): void;
15
+ }
16
+ export declare function bindAnchoredPopover(options: AnchoredPopoverOptions): AnchoredPopoverBinding;
@@ -0,0 +1,18 @@
1
+ import type { RuleChainData } from '../types/rule-chain';
2
+ export interface AssistantRuleChain {
3
+ body: RuleChainData;
4
+ chainId: string;
5
+ toolName: 'preview_rule_chain' | 'save_rule_chain';
6
+ }
7
+ export declare function extractAssistantRuleChain(toolCalls: unknown, currentChainId: string): AssistantRuleChain | null;
8
+ export declare function hasDestructiveRuleChainChanges(before: unknown, after: unknown): boolean;
9
+ export declare function extractRuleChainFromToolCalls(messageIndex: number, messages: readonly unknown[], currentChainId: string): AssistantRuleChain | null;
10
+ export interface ToolCallResult {
11
+ id?: string;
12
+ function?: {
13
+ name?: string;
14
+ arguments?: string;
15
+ };
16
+ type?: string;
17
+ result?: unknown;
18
+ }
@@ -0,0 +1,18 @@
1
+ export interface NodeLogTemplate {
2
+ nodeId: string;
3
+ beforeTemplate?: string;
4
+ afterTemplate?: string;
5
+ enabled: boolean;
6
+ }
7
+ export interface ChainLogConfig {
8
+ chainId: string;
9
+ handlerChainId?: string;
10
+ reportOnChainEnd: boolean;
11
+ enabled: boolean;
12
+ }
13
+ export interface BusinessLogAPI {
14
+ getNodeLogTemplates(chainId: string): Promise<NodeLogTemplate[]>;
15
+ saveNodeLogTemplate(chainId: string, template: NodeLogTemplate): Promise<void>;
16
+ getChainLogConfig(chainId: string): Promise<ChainLogConfig>;
17
+ saveChainLogConfig(chainId: string, config: ChainLogConfig): Promise<void>;
18
+ }
@@ -0,0 +1,14 @@
1
+ export declare function cleanSnapshot(value: unknown): unknown;
2
+ export declare function cleanSnapshotString(value: unknown): string;
3
+ export declare function sameCleanSnapshot(left: unknown, right: unknown): boolean;
4
+ export declare function getVolatileKeys(): ReadonlySet<string>;
5
+ export interface DirtySuppressionOptions {
6
+ windowMs?: number;
7
+ onReconcile: () => void;
8
+ }
9
+ export interface DirtySuppression {
10
+ suppress: () => void;
11
+ isSuppressed: () => boolean;
12
+ destroy: () => void;
13
+ }
14
+ export declare function createDirtySuppression(options: DirtySuppressionOptions): DirtySuppression;
@@ -0,0 +1,17 @@
1
+ import type { ComponentDefinition, ComponentField, ComponentGroup } from '../types/component';
2
+ import type { LocaleMessages, TranslationSource } from './I18nManager';
3
+ type Metadata = Record<string, unknown>;
4
+ type TextMapper = (key: string, value: string | undefined) => string | undefined;
5
+ export type ComponentTextCatalog = Record<string, Record<string, string>>;
6
+ export declare function normalizeComponentView(type: string, view: Metadata): ComponentDefinition;
7
+ export declare function mapComponentDisplayText<T extends ComponentDefinition>(definition: T, map: TextMapper): T;
8
+ export declare function applyComponentLocaleMetadata(component: ComponentDefinition, payload: unknown): ComponentDefinition;
9
+ export declare function localizeComponentDefinition<T extends ComponentDefinition>(definition: T, source: TranslationSource): T;
10
+ export declare function localizeComponentFields(type: string, fields: ComponentField[], source: TranslationSource): ComponentField[];
11
+ export declare function localizeComponentGroups(groups: ComponentGroup[], source: TranslationSource): ComponentGroup[];
12
+ export declare function componentCatalogMessages(catalog: ComponentTextCatalog): {
13
+ components: Record<string, string>;
14
+ componentDetails: Record<string, Metadata>;
15
+ };
16
+ export declare function normalizeComponentLocaleMessages(payload: unknown): LocaleMessages;
17
+ export {};
@@ -15,6 +15,9 @@ export interface ComponentPaletteBuildOptions {
15
15
  categoryLabel?: (category: string, components: ComponentDefinition[]) => string | undefined;
16
16
  subgroupLabel?: (category: string, subgroup: string, components: ComponentDefinition[]) => string | undefined;
17
17
  componentSearchText?: (component: ComponentDefinition) => string | string[] | undefined;
18
+ subgroupCategories?: (category: string, components: ComponentDefinition[]) => boolean;
18
19
  }
20
+ export declare const SUBGROUPED_COMPONENT_CATEGORIES: ReadonlySet<string>;
21
+ export declare function hasDeclaredSubgroups(category: string, components: ComponentDefinition[]): boolean;
19
22
  export declare function normalizeComponentCategory(component: ComponentDefinition): ComponentDefinition;
20
23
  export declare function buildComponentPalette(components: ComponentDefinition[], query?: string, options?: ComponentPaletteBuildOptions): ComponentPaletteGroup[];
@@ -23,6 +23,8 @@ export interface ConnectionStatusProvider {
23
23
  export interface ConnectionStatusControllerOptions {
24
24
  enabled?: boolean;
25
25
  pollIntervalMs?: number;
26
+ visible?: boolean;
27
+ pauseWhenHidden?: boolean;
26
28
  now?: () => number;
27
29
  }
28
30
  export type ConnectionStatusSemanticKind = 'success' | 'warning' | 'danger' | 'neutral';
@@ -50,7 +52,10 @@ export declare class ConnectionStatusController {
50
52
  private readonly provider;
51
53
  private readonly pollIntervalMs;
52
54
  private readonly now;
55
+ private readonly visibilityDocument;
53
56
  private enabled;
57
+ private visible;
58
+ private pageVisible;
54
59
  private chainTimer;
55
60
  private sharedTimer;
56
61
  private chainRequest;
@@ -60,8 +65,14 @@ export declare class ConnectionStatusController {
60
65
  private sharedConsumers;
61
66
  private destroyed;
62
67
  constructor(store: ConnectionStatusStore, provider: ConnectionStatusProvider, options?: ConnectionStatusControllerOptions);
68
+ setVisible(visible: boolean): void;
69
+ private readonly onVisibilityChange;
70
+ private canPoll;
71
+ private updateVisibility;
72
+ private resumePolling;
63
73
  setEnabled(enabled: boolean): void;
64
74
  setChain(chainId: string | null | undefined): void;
75
+ markApiSuccess(): void;
65
76
  restartCurrentChain(): void;
66
77
  restartShared(): void;
67
78
  acquireShared(): () => void;
@@ -0,0 +1 @@
1
+ export declare function ensureDialogStyles(doc: Document): void;
@@ -1,7 +1,66 @@
1
- export type EditorMode = 'standalone' | 'app' | 'embedded' | 'readonly';
1
+ export type EditorMode = 'standalone' | 'app' | 'embedded' | 'readonly' | 'preview';
2
+ export type EditorToolbarRegion = 'top' | 'canvas' | 'tabs';
3
+ export type EditorToolbarEntry = string | {
4
+ group: string;
5
+ items: readonly string[];
6
+ };
7
+ export interface EditorToolbarButtonPresentation {
8
+ visible?: boolean;
9
+ label?: string;
10
+ title?: string;
11
+ icon?: import('./toolbar-icons').EditorToolbarIconName;
12
+ }
13
+ export interface EditorToolbarRegionOptions {
14
+ visible?: boolean;
15
+ items?: readonly EditorToolbarEntry[];
16
+ position?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
17
+ }
18
+ export interface EditorHeaderOptions {
19
+ visible?: boolean;
20
+ title?: string;
21
+ description?: string;
22
+ logo?: string;
23
+ }
24
+ export interface EditorToolbarOptions {
25
+ regions?: Partial<Record<EditorToolbarRegion, EditorToolbarRegionOptions>>;
26
+ buttons?: Record<string, EditorToolbarButtonPresentation>;
27
+ showNewOrOpen?: boolean;
28
+ showSave?: boolean;
29
+ showDiff?: boolean;
30
+ showDeploy?: boolean;
31
+ showRestart?: boolean;
32
+ showImport?: boolean;
33
+ showExport?: boolean;
34
+ showData?: boolean;
35
+ showTest?: boolean;
36
+ showInfo?: boolean;
37
+ showAiChat?: boolean;
38
+ showDebugConsole?: boolean;
39
+ showClearDebugHighlight?: boolean;
40
+ showTopology?: boolean;
41
+ showSearch?: boolean;
42
+ showAutoLayout?: boolean;
43
+ showSelection?: boolean;
44
+ showUndo?: boolean;
45
+ showRedo?: boolean;
46
+ showZoom?: boolean;
47
+ showMinMap?: boolean;
48
+ showSetting?: boolean;
49
+ showFullScreen?: boolean;
50
+ showNodeMgt?: boolean;
51
+ showDoc?: boolean;
52
+ showTheme?: boolean;
53
+ showLocale?: boolean;
54
+ showTrace?: boolean;
55
+ showRunHistory?: boolean;
56
+ showVersions?: boolean;
57
+ showReset?: boolean;
58
+ showDelete?: boolean;
59
+ }
2
60
  export interface EditorUiCapabilities {
3
61
  toolbar: boolean;
4
62
  sidebar: boolean;
63
+ sidebarDrag: boolean;
5
64
  minimap: boolean;
6
65
  commandPalette: boolean;
7
66
  contextMenu: boolean;
@@ -27,6 +86,23 @@ export interface EditorUiCapabilities {
27
86
  reload: boolean;
28
87
  runHistory: boolean;
29
88
  trace: boolean;
89
+ save: boolean;
90
+ newOrOpen: boolean;
91
+ diff: boolean;
92
+ theme: boolean;
93
+ locale: boolean;
94
+ search: boolean;
95
+ autoLayout: boolean;
96
+ undo: boolean;
97
+ redo: boolean;
98
+ zoom: boolean;
99
+ fullscreen: boolean;
100
+ docs: boolean;
101
+ versions: boolean;
102
+ import: boolean;
103
+ export: boolean;
104
+ reset: boolean;
105
+ delete: boolean;
30
106
  }
31
107
  export interface EditorCapabilities {
32
108
  mode: EditorMode;
@@ -83,11 +159,16 @@ export interface EditorCapabilityInput {
83
159
  showReloadButton?: boolean;
84
160
  showRunHistory?: boolean;
85
161
  showTraceButton?: boolean;
162
+ toolbar?: EditorToolbarOptions;
163
+ header?: EditorHeaderOptions;
164
+ showWorkspaceTabs?: boolean;
86
165
  options?: EditorCapabilityInput;
87
166
  }
88
167
  type DeepPartial<T> = T extends (...args: never[]) => unknown ? T : T extends readonly (infer U)[] ? ReadonlyArray<DeepPartial<U>> : T extends object ? {
89
168
  [K in keyof T]?: DeepPartial<T[K]>;
90
169
  } : T;
170
+ export declare function mergeEditorCapabilities(previous?: EditorCapabilitiesOverride, patch?: EditorCapabilitiesOverride): EditorCapabilitiesOverride;
171
+ export declare function mergeEditorToolbarOptions(previous?: EditorToolbarOptions, patch?: EditorToolbarOptions): EditorToolbarOptions;
91
172
  export declare function resolveEditorCapabilities(input?: EditorCapabilityInput): EditorCapabilities;
92
173
  export declare const CAPABILITY_BASE: Readonly<EditorCapabilities>;
93
174
  export declare const CAPABILITY_PROFILES: Readonly<Record<EditorMode, EditorCapabilitiesOverride>>;
@@ -0,0 +1,16 @@
1
+ export declare const EDITOR_EDGE_ANCHORS_KEY = "editorEdgeAnchors";
2
+ export interface EdgeAnchorConnection {
3
+ fromId: string | null;
4
+ toId: string;
5
+ type: string;
6
+ }
7
+ interface AnchorIds {
8
+ sourceAnchorId: string;
9
+ targetAnchorId: string;
10
+ }
11
+ export declare function createEdgeAnchorReader(value: unknown, startNodeId: string): (connection: EdgeAnchorConnection, defaults: AnchorIds) => AnchorIds;
12
+ export declare function createEdgeAnchorWriter(startNodeId: string): {
13
+ record(connection: EdgeAnchorConnection, anchors: Partial<AnchorIds> | undefined, defaults: AnchorIds): void;
14
+ write(additionalInfo: Record<string, unknown>): void;
15
+ };
16
+ export {};