geonodes-web-render 0.3.10 → 0.3.12
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/dist/embed.css +1 -1
- package/dist/embed.js +160 -137
- package/dist/types/gn/ir/nodeColors.d.ts +1 -1
- package/package.json +1 -1
package/dist/embed.css
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
.react-flow{--xy-edge-stroke-default:#b1b1b7;--xy-edge-stroke-width-default:1;--xy-edge-stroke-selected-default:#555;--xy-connectionline-stroke-default:#b1b1b7;--xy-connectionline-stroke-width-default:1;--xy-attribution-background-color-default:#ffffff80;--xy-minimap-background-color-default:#fff;--xy-minimap-mask-background-color-default:#f0f0f099;--xy-minimap-mask-stroke-color-default:transparent;--xy-minimap-mask-stroke-width-default:1;--xy-minimap-node-background-color-default:#e2e2e2;--xy-minimap-node-stroke-color-default:transparent;--xy-minimap-node-stroke-width-default:2;--xy-background-color-default:transparent;--xy-background-pattern-dots-color-default:#91919a;--xy-background-pattern-lines-color-default:#eee;--xy-background-pattern-cross-color-default:#e2e2e2;background-color:var(--xy-background-color,var(--xy-background-color-default));--xy-node-color-default:inherit;--xy-node-border-default:1px solid #1a192b;--xy-node-background-color-default:#fff;--xy-node-group-background-color-default:#f0f0f040;--xy-node-boxshadow-hover-default:0 1px 4px 1px #00000014;--xy-node-boxshadow-selected-default:0 0 0 .5px #1a192b;--xy-node-border-radius-default:3px;--xy-handle-background-color-default:#1a192b;--xy-handle-border-color-default:#fff;--xy-selection-background-color-default:#0059dc14;--xy-selection-border-default:1px dotted #0059dccc;--xy-controls-button-background-color-default:#fefefe;--xy-controls-button-background-color-hover-default:#f4f4f4;--xy-controls-button-color-default:inherit;--xy-controls-button-color-hover-default:inherit;--xy-controls-button-border-color-default:#eee;--xy-controls-box-shadow-default:0 0 2px 1px #00000014;--xy-edge-label-background-color-default:#fff;--xy-edge-label-color-default:inherit;--xy-resize-background-color-default:#3367d9;direction:ltr}.react-flow.dark{--xy-edge-stroke-default:#3e3e3e;--xy-edge-stroke-width-default:1;--xy-edge-stroke-selected-default:#727272;--xy-connectionline-stroke-default:#b1b1b7;--xy-connectionline-stroke-width-default:1;--xy-attribution-background-color-default:#96969640;--xy-minimap-background-color-default:#141414;--xy-minimap-mask-background-color-default:#3c3c3c99;--xy-minimap-mask-stroke-color-default:transparent;--xy-minimap-mask-stroke-width-default:1;--xy-minimap-node-background-color-default:#2b2b2b;--xy-minimap-node-stroke-color-default:transparent;--xy-minimap-node-stroke-width-default:2;--xy-background-color-default:#141414;--xy-background-pattern-dots-color-default:#777;--xy-background-pattern-lines-color-default:#777;--xy-background-pattern-cross-color-default:#777;--xy-node-color-default:#f8f8f8;--xy-node-border-default:1px solid #3c3c3c;--xy-node-background-color-default:#1e1e1e;--xy-node-group-background-color-default:#f0f0f040;--xy-node-boxshadow-hover-default:0 1px 4px 1px #ffffff14;--xy-node-boxshadow-selected-default:0 0 0 .5px #999;--xy-handle-background-color-default:#bebebe;--xy-handle-border-color-default:#1e1e1e;--xy-selection-background-color-default:#c8c8dc14;--xy-selection-border-default:1px dotted #c8c8dccc;--xy-controls-button-background-color-default:#2b2b2b;--xy-controls-button-background-color-hover-default:#3e3e3e;--xy-controls-button-color-default:#f8f8f8;--xy-controls-button-color-hover-default:#fff;--xy-controls-button-border-color-default:#5b5b5b;--xy-controls-box-shadow-default:0 0 2px 1px #00000014;--xy-edge-label-background-color-default:#141414;--xy-edge-label-color-default:#f8f8f8}.react-flow__background{background-color:var(--xy-background-color-props,var(--xy-background-color,var(--xy-background-color-default)));pointer-events:none;z-index:-1}.react-flow__container{width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__pane{z-index:1;touch-action:none}.react-flow__pane.draggable{cursor:grab}.react-flow__pane.dragging{cursor:grabbing}.react-flow__pane.selection{cursor:pointer}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow__edge-path{stroke:var(--xy-edge-stroke,var(--xy-edge-stroke-default));stroke-width:var(--xy-edge-stroke-width,var(--xy-edge-stroke-width-default));fill:none}.react-flow__connection-path{stroke:var(--xy-connectionline-stroke,var(--xy-connectionline-stroke-default));stroke-width:var(--xy-connectionline-stroke-width,var(--xy-connectionline-stroke-width-default));fill:none}.react-flow .react-flow__edges{position:absolute}.react-flow .react-flow__edges svg{pointer-events:none;position:absolute;overflow:visible}.react-flow__edge{pointer-events:visibleStroke}.react-flow__edge.selectable{cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:.5s linear infinite dashdraw}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge.selectable:focus .react-flow__edge-path,.react-flow__edge.selectable:focus-visible .react-flow__edge-path{stroke:var(--xy-edge-stroke-selected,var(--xy-edge-stroke-selected-default))}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;user-select:none}.react-flow__arrowhead polyline{stroke:var(--xy-edge-stroke,var(--xy-edge-stroke-default))}.react-flow__arrowhead polyline.arrowclosed{fill:var(--xy-edge-stroke,var(--xy-edge-stroke-default))}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:.5s linear infinite dashdraw}svg.react-flow__connectionline{z-index:1001;position:absolute;overflow:visible}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{-webkit-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:default;position:absolute}.react-flow__node.selectable{cursor:pointer}.react-flow__node.draggable{cursor:grab;pointer-events:all}.react-flow__node.draggable.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:0 0;pointer-events:none}.react-flow__nodesselection-rect{pointer-events:all;cursor:grab;position:absolute}.react-flow__handle{pointer-events:none;background-color:var(--xy-handle-background-color,var(--xy-handle-background-color-default));border:1px solid var(--xy-handle-border-color,var(--xy-handle-border-color-default));border-radius:100%;width:6px;min-width:5px;height:6px;min-height:5px;position:absolute}.react-flow__handle.connectingfrom{pointer-events:all}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;bottom:0;left:50%;transform:translate(-50%,50%)}.react-flow__handle-top{top:0;left:50%;transform:translate(-50%,-50%)}.react-flow__handle-left{top:50%;left:0;transform:translate(-50%,-50%)}.react-flow__handle-right{top:50%;right:0;transform:translate(50%,-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__pane.selection .react-flow__panel{pointer-events:none}.react-flow__panel{z-index:5;margin:15px;position:absolute}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.top.center,.react-flow__panel.bottom.center{left:50%;transform:translate(-15px)translate(-50%)}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.left.center,.react-flow__panel.right.center{top:50%;transform:translateY(-15px)translateY(-50%)}.react-flow__attribution{background:var(--xy-attribution-background-color,var(--xy-attribution-background-color-default));margin:0;padding:2px 3px;font-size:10px}.react-flow__attribution a{color:#999;text-decoration:none}@keyframes dashdraw{0%{stroke-dashoffset:10px}}.react-flow__edgelabel-renderer{pointer-events:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__viewport-portal{-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__minimap{background:var(--xy-minimap-background-color-props,var(--xy-minimap-background-color,var(--xy-minimap-background-color-default)))}.react-flow__minimap-svg{display:block}.react-flow__minimap-mask{fill:var(--xy-minimap-mask-background-color-props,var(--xy-minimap-mask-background-color,var(--xy-minimap-mask-background-color-default)));stroke:var(--xy-minimap-mask-stroke-color-props,var(--xy-minimap-mask-stroke-color,var(--xy-minimap-mask-stroke-color-default)));stroke-width:var(--xy-minimap-mask-stroke-width-props,var(--xy-minimap-mask-stroke-width,var(--xy-minimap-mask-stroke-width-default)))}.react-flow__minimap-node{fill:var(--xy-minimap-node-background-color-props,var(--xy-minimap-node-background-color,var(--xy-minimap-node-background-color-default)));stroke:var(--xy-minimap-node-stroke-color-props,var(--xy-minimap-node-stroke-color,var(--xy-minimap-node-stroke-color-default)));stroke-width:var(--xy-minimap-node-stroke-width-props,var(--xy-minimap-node-stroke-width,var(--xy-minimap-node-stroke-width-default)))}.react-flow__background-pattern.dots{fill:var(--xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-dots-color-default)))}.react-flow__background-pattern.lines{stroke:var(--xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-lines-color-default)))}.react-flow__background-pattern.cross{stroke:var(--xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-cross-color-default)))}.react-flow__controls{box-shadow:var(--xy-controls-box-shadow,var(--xy-controls-box-shadow-default));flex-direction:column;display:flex}.react-flow__controls.horizontal{flex-direction:row}.react-flow__controls-button{background:var(--xy-controls-button-background-color,var(--xy-controls-button-background-color-default));border:none;border-bottom:1px solid var(--xy-controls-button-border-color-props,var(--xy-controls-button-border-color,var(--xy-controls-button-border-color-default)));width:26px;height:26px;color:var(--xy-controls-button-color-props,var(--xy-controls-button-color,var(--xy-controls-button-color-default)));cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;padding:4px;display:flex}.react-flow__controls-button svg{fill:currentColor;width:100%;max-width:12px;max-height:12px}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-input,.react-flow__node-default,.react-flow__node-output,.react-flow__node-group{border-radius:var(--xy-node-border-radius,var(--xy-node-border-radius-default));width:150px;color:var(--xy-node-color,var(--xy-node-color-default));text-align:center;border:var(--xy-node-border,var(--xy-node-border-default));background-color:var(--xy-node-background-color,var(--xy-node-background-color-default));padding:10px;font-size:12px}.react-flow__node-input.selectable:hover,.react-flow__node-default.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:var(--xy-node-boxshadow-hover,var(--xy-node-boxshadow-hover-default))}.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:var(--xy-node-boxshadow-selected,var(--xy-node-boxshadow-selected-default))}.react-flow__node-group{background-color:var(--xy-node-group-background-color,var(--xy-node-group-background-color-default))}.react-flow__nodesselection-rect,.react-flow__selection{background:var(--xy-selection-background-color,var(--xy-selection-background-color-default));border:var(--xy-selection-border,var(--xy-selection-border-default))}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls-button:hover{background:var(--xy-controls-button-background-color-hover-props,var(--xy-controls-button-background-color-hover,var(--xy-controls-button-background-color-hover-default)));color:var(--xy-controls-button-color-hover-props,var(--xy-controls-button-color-hover,var(--xy-controls-button-color-hover-default)))}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__controls-button:last-child{border-bottom:none}.react-flow__controls.horizontal .react-flow__controls-button{border-bottom:none;border-right:1px solid var(--xy-controls-button-border-color-props,var(--xy-controls-button-border-color,var(--xy-controls-button-border-color-default)))}.react-flow__controls.horizontal .react-flow__controls-button:last-child{border-right:none}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{background-color:var(--xy-resize-background-color,var(--xy-resize-background-color-default));border:1px solid #fff;border-radius:1px;width:5px;height:5px;translate:-50% -50%}.react-flow__resize-control.handle.left{top:50%;left:0}.react-flow__resize-control.handle.right{top:50%;left:100%}.react-flow__resize-control.handle.top{top:0;left:50%}.react-flow__resize-control.handle.bottom{top:100%;left:50%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:var(--xy-resize-background-color,var(--xy-resize-background-color-default));border-style:solid;border-width:0}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;height:100%;top:0;transform:translate(-50%)}.react-flow__resize-control.line.left{border-left-width:1px;left:0}.react-flow__resize-control.line.right{border-right-width:1px;left:100%}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{width:100%;height:1px;left:0;transform:translateY(-50%)}.react-flow__resize-control.line.top{border-top-width:1px;top:0}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}.react-flow__edge-textbg{fill:var(--xy-edge-label-background-color,var(--xy-edge-label-background-color-default))}.react-flow__edge-text{fill:var(--xy-edge-label-color,var(--xy-edge-label-color-default))}.app-layout{grid-template-columns:var(--left-w,28%) 6px minmax(0, 1fr) 6px var(--right-w,26%);gap:0;width:100%;height:100vh;min-height:100svh;display:grid}.left-pane,.center-pane,.right-pane{min-width:0;min-height:0}.pane-divider{cursor:col-resize;touch-action:none;position:relative}.pane-divider:after{content:"";background:var(--border);width:1px;margin:0 auto;transition:width .1s,background .1s;position:absolute;inset:0}.pane-divider:hover:after,body.is-resizing .pane-divider:after{background:var(--accent);width:3px}body.is-resizing{cursor:col-resize;-webkit-user-select:none;user-select:none}body.is-resizing .left-pane,body.is-resizing .center-pane,body.is-resizing .right-pane{pointer-events:none}.panel-body .cm-content{padding:10px 14px 24px}.right-pane .cm-content,.right-pane .cm-gutters{font-size:15px}.flow-panel__body .react-flow__node.selected:not(:has(.gn-reroute)){outline:2px solid var(--accent);outline-offset:2px;border-radius:6px}.flow-panel__body .react-flow__node.selected .gn-reroute{box-shadow:0 0 0 1px #00000059, 0 0 0 3px var(--bg), 0 0 0 5px var(--accent)}.flow-panel__body .react-flow__selection,.flow-panel__body .react-flow__nodesselection-rect{border:1px solid var(--accent);background:var(--accent-bg)}.flow-panel__body .react-flow__nodesselection-rect{box-sizing:content-box;border-radius:10px;margin:-16px;padding:16px}.panel{flex-direction:column;height:100%;min-height:0;display:flex}.panel-header{border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:10px 12px;display:flex}.panel-title{color:var(--text-h);font-weight:600}.panel-status{opacity:.8;margin-left:auto;font-size:13px}.panel-body{flex:auto;min-height:0;display:flex;overflow:hidden}.panel-footer{border-top:1px solid var(--border);padding:8px 12px;font-size:13px}.tabs{flex-wrap:wrap;gap:6px;display:inline-flex}.tab{appearance:none;border:1px solid var(--border);color:var(--text-h);cursor:pointer;background:0 0;border-radius:8px;padding:6px 10px;font-size:14px}.tab.active{border-color:var(--accent-border);background:var(--accent-bg)}.tab:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.panel-actions{gap:8px;display:inline-flex}.view-toggle{border:1px solid var(--border);border-radius:8px;display:inline-flex;overflow:hidden}.view-toggle__option{appearance:none;color:var(--text);cursor:pointer;background:0 0;border:none;padding:6px 10px;font-size:13px}.view-toggle__option+.view-toggle__option{border-left:1px solid var(--border)}.view-toggle__option.active{background:var(--accent-bg);color:var(--text-h)}.view-toggle__option:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.action-button{appearance:none;border:1px solid var(--border);color:var(--text-h);cursor:pointer;background:0 0;border-radius:8px;padding:6px 10px;font-size:14px}.action-button:disabled{opacity:.5;cursor:not-allowed}.action-button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.cm-editor{width:100%;height:100%}.cm-editor .cm-content{font-family:var(--mono);font-size:12px;line-height:150%}.cm-editor .cm-gutters{font-size:11px}.json-status.ok{color:var(--text)}.json-status.bad{color:#ef4444}.flow-panel .panel-header{justify-content:space-between}.flow-panel__body{background:radial-gradient(1200px 600px at 20% 10%, #aa3bff14, transparent 60%), var(--bg);position:relative}.flow-empty{flex:auto;place-items:center;font-size:14px;display:grid}.gnwr-loading{background:var(--bg);color:var(--text);flex-direction:column;justify-content:center;align-items:center;gap:14px;display:flex;position:absolute;inset:0}.gnwr-loading__spinner{border:3px solid var(--accent-bg);border-top-color:var(--accent);border-radius:50%;width:34px;height:34px;animation:.7s linear infinite gnwr-spin}.gnwr-loading__label{letter-spacing:.02em;opacity:.85;font-size:13px}@keyframes gnwr-spin{to{transform:rotate(360deg)}}.flow-error{color:#f87171;text-align:center;flex-direction:column;flex:auto;justify-content:center;align-items:center;gap:8px;padding:24px;font-size:13px;display:flex}.flow-error strong{font-size:14px;font-weight:600}.flow-error span{opacity:.8;word-break:break-word;max-width:480px;font-family:monospace}.flow-panel__body .react-flow{--xy-background-color-default:transparent;--xy-controls-button-background-color-default:var(--bg);--xy-controls-button-color-default:var(--text-h);--xy-controls-button-border-color-default:var(--border);--xy-edge-stroke-width-default:2.5;width:100%;height:100%}.flow-panel__body .react-flow__attribution{display:none}.flow-panel__body .react-flow__pane{cursor:grab}.flow-panel__body .react-flow__pane:active{cursor:grabbing}.flow-panel__body .react-flow__node,.flow-panel__body .react-flow__edge{pointer-events:none}.gn-reroute{box-sizing:border-box;background:var(--gn-reroute-color,#888);pointer-events:none;border:2px solid #00000059;border-radius:50%;width:12px;height:12px;box-shadow:0 0 0 1px #ffffff1f}.gn-reroute .gn-reroute__handle{opacity:0;pointer-events:none;cursor:default;background:0 0!important;border:none!important;width:1px!important;min-width:0!important;height:1px!important;min-height:0!important}.gn-reroute .react-flow__handle-left.gn-reroute__handle{top:50%;left:0;transform:translate(-50%,-50%)}.gn-reroute .react-flow__handle-right.gn-reroute__handle{top:50%;right:0;transform:translate(50%,-50%)}.gn-node{box-sizing:border-box;border:1px solid var(--border);background:color-mix(in srgb, var(--bg) 88%, #111827 12%);color:var(--text-h);box-shadow:var(--shadow);border-radius:8px;overflow:visible}.gn-node__header{box-sizing:border-box;border-bottom:1px solid #0000004d;border-top-left-radius:7px;border-top-right-radius:7px;align-items:center;min-height:28px;padding:6px 10px;display:flex}.gn-node__title{color:#ffffffd9;font-size:12px;font-weight:600;line-height:1.2}.gn-node__props{background:color-mix(in srgb, var(--bg) 80%, #000 20%);border-bottom:1px solid #00000040;padding:4px 10px}.gn-node__prop-row{color:var(--text);white-space:nowrap;text-overflow:ellipsis;background:color-mix(in srgb, var(--bg) 60%, #000 40%);border:1px solid #ffffff14;border-radius:3px;margin:2px 0;padding:1px 6px;font-size:10px;line-height:1.8;overflow:hidden}.gn-node--group{pointer-events:all;cursor:pointer;border-color:var(--accent-border);box-shadow:0 0 0 1px var(--accent-border), 0 0 16px 3px color-mix(in srgb, var(--accent) 25%, transparent), var(--shadow);transition:box-shadow .15s,border-color .15s;position:relative}.gn-node--group:hover{border-color:var(--accent);box-shadow:0 0 0 1.5px var(--accent), 0 0 24px 6px color-mix(in srgb, var(--accent) 40%, transparent), var(--shadow)}.gn-node__stack{z-index:-1;flex-direction:column;align-items:center;gap:1px;display:flex;position:absolute;top:calc(100% - 2px);left:0;right:0}.gn-node__stack-bar{background:color-mix(in srgb, var(--text) 22%, var(--bg));border:1px solid color-mix(in srgb, var(--text) 45%, var(--bg));border-top:none;border-radius:0 0 5px 5px;height:4px;box-shadow:0 1px 2px #00000026}.gn-node__stack-bar:first-child{opacity:1;width:90%}.gn-node__stack-bar:nth-child(2){opacity:.7;width:78%}.gn-node__stack-bar:nth-child(3){opacity:.45;width:66%}.gn-node__body{background:color-mix(in srgb, var(--bg) 90%, #111827 10%);border-bottom-right-radius:7px;border-bottom-left-radius:7px;padding:6px 0}.gn-node__socket-row{align-items:center;min-height:20px;padding:0 10px;display:flex;position:relative}.gn-node__socket-row--right{justify-content:flex-end}.gn-node__socket-row--right .gn-node__socket-label{text-align:right}.gn-node__socket-label{color:var(--text-h);white-space:nowrap;text-overflow:ellipsis;flex:1 1 0;min-width:0;font-size:10px;line-height:1.2;overflow:hidden}.gn-node__value{color:var(--text);white-space:nowrap;text-align:right;flex-shrink:0;margin-left:8px;font-size:10px;line-height:1.2}.gn-node__color-swatch{border:1px solid var(--border);border-radius:3px;height:14px;margin:2px 8px 4px 18px}.gn-node__curve-wrap{border-bottom:1px solid var(--border);background:#1e1e1e;padding:6px 6px 4px}.gn-node__curve-svg{display:block}.gn-node__curve-zero{stroke:#ffffff26;stroke-width:1px;fill:none;stroke-dasharray:3 3}.gn-node__curve-fill{fill:#ffffff14}.gn-node__curve-stroke{fill:none;stroke:#ffffffbf;stroke-width:1.5px;stroke-linejoin:round;stroke-linecap:round}.gn-node__curve-dot{fill:#ccc;stroke:#1e1e1e;stroke-width:1px}.gn-node__vec-block{border:1px solid var(--border);border-radius:4px;margin:1px 8px 4px 18px;overflow:hidden}.gn-node__vec-row{background:color-mix(in srgb, var(--bg) 70%, #111827 30%);border-top:1px solid var(--border);justify-content:space-between;align-items:center;height:16px;padding:0 6px;display:flex}.gn-node__vec-row:first-child{border-top:none}.gn-node__vec-label{color:var(--text);text-transform:uppercase;flex-shrink:0;width:10px;font-size:9px}.gn-node__vec-value{color:var(--text-h);text-align:right;font-size:9px}.gn-node .react-flow__handle.gn-socket{pointer-events:none;cursor:default;background:0 0;border:1px solid #0000;margin-top:0;top:50%}.gn-node .react-flow__handle.gn-socket--circle{border-radius:999px;width:8px;height:8px}.gn-node .react-flow__handle.gn-socket--line{border-radius:1px;width:7px;height:12px}.gn-node .react-flow__handle.gn-socket--diamond{border-radius:1px;width:8px;height:8px}.gn-node .react-flow__handle.gn-socket--list,.gn-node .react-flow__handle.gn-socket--grid{border-radius:2px;width:9px;height:9px}.gn-node .react-flow__handle-left.gn-socket{left:0;transform:translate(-50%,-50%)}.gn-node .react-flow__handle-right.gn-socket{right:0;transform:translate(50%,-50%)}.gn-node .react-flow__handle-left.gn-socket--diamond{transform:translate(-50%,-50%)rotate(45deg)}.gn-node .react-flow__handle-right.gn-socket--diamond{transform:translate(50%,-50%)rotate(45deg)}.flow-panel__body .react-flow__edge-path{stroke-width:2.5px}.flow-panel__body .react-flow__edge.selected .react-flow__edge-path,.flow-panel__body .react-flow__edge-path{stroke-linecap:round;stroke-linejoin:round}@media (width<=980px){.app-layout{grid-template-rows:40svh 1fr 30svh;grid-template-columns:1fr}.pane-divider{display:none}.left-pane{border-bottom:1px solid var(--border)}.right-pane{border-top:1px solid var(--border)}}.geonodes-embed{background:var(--bg,#1a1a1a);flex-direction:column;height:100%;min-height:0;display:flex}.geonodes-embed--dark{--text:#9ca3af;--text-h:#f3f4f6;--bg:#16171d;--border:#2e303a;--code-bg:#1f2028;--accent:#c084fc;--accent-bg:#c084fc26;--accent-border:#c084fc80;color:var(--text);background:var(--bg)}.geonodes-embed__header{border-bottom:1px solid var(--border,#333);flex-shrink:0;align-items:center;padding:6px 10px;display:flex}.geonodes-embed__title{color:var(--text-h,#eee);font-weight:600}.geonodes-embed__body{flex:auto;min-height:0;position:relative;overflow:hidden}.gn-top-left{flex-direction:column;align-items:flex-start;gap:6px;display:flex}.gn-version-badge{background:color-mix(in srgb, var(--bg) 85%, #000 15%);border:1px solid var(--border);color:var(--text);opacity:.6;pointer-events:none;-webkit-user-select:none;user-select:none;white-space:nowrap;border-radius:6px;padding:3px 8px;font-size:11px;display:inline-block}.gnwr-copy-button{z-index:10;appearance:none;background:color-mix(in srgb, var(--bg) 85%, #000 15%);border:1px solid var(--border);color:var(--text);cursor:pointer;opacity:.85;border-radius:6px;align-items:center;gap:7px;padding:5px 12px 5px 8px;font-size:12px;transition:opacity .15s,border-color .15s,color .15s;display:inline-flex;position:absolute;top:10px;right:10px}.gnwr-copy-button__logo{border-radius:4px;flex:none;width:18px;height:18px;box-shadow:0 1px 2px #0000004d}.gnwr-copy-button:hover{opacity:1;border-color:var(--accent-border);color:var(--accent)}.gnwr-copy-button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.gnwr-copy-button--copied{opacity:1;border-color:var(--accent-border);color:var(--accent)}.gnwr-copy-button__check{width:18px;height:18px;color:var(--accent);flex:none;animation:.25s ease-out gnwr-check-pop}@keyframes gnwr-check-pop{0%{opacity:0;transform:scale(.4)}to{opacity:1;transform:scale(1)}}.gnwr-copy-toast{z-index:10;background:color-mix(in srgb, var(--bg) 85%, #000 15%);border:1px solid var(--accent-border);max-width:260px;color:var(--text);border-radius:6px;padding:8px 12px;font-size:12px;line-height:1.4;animation:.15s ease-out gnwr-copy-toast-in;position:absolute;top:48px;right:10px;box-shadow:0 4px 14px #00000059}.gnwr-copy-toast__link{color:var(--accent);text-decoration:underline}.gnwr-copy-toast__link:hover{text-decoration:none}@keyframes gnwr-copy-toast-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.gnwr-leaving{animation:.5s forwards gnwr-fade-out}@keyframes gnwr-fade-out{to{opacity:0}}.gn-context-menu{z-index:1000;background:color-mix(in srgb, var(--bg) 88%, #000 12%);border:1px solid var(--border);border-radius:8px;min-width:200px;padding:4px;animation:.1s ease-out gnwr-copy-toast-in;position:fixed;box-shadow:0 8px 24px #00000073}.gn-context-menu__item{width:100%;color:var(--text);text-align:left;white-space:nowrap;cursor:pointer;background:0 0;border:none;border-radius:5px;padding:8px 10px;font-size:13px;display:block}.gn-context-menu__item:hover,.gn-context-menu__item:focus-visible{background:var(--accent);color:#fff;outline:none}.gn-context-toast{z-index:20;background:color-mix(in srgb, var(--bg) 85%, #000 15%);border:1px solid var(--accent-border);color:var(--text);border-radius:6px;padding:8px 14px;font-size:12px;animation:.15s ease-out gnwr-copy-toast-in;position:absolute;bottom:12px;left:50%;transform:translate(-50%);box-shadow:0 4px 14px #00000059}.gn-breadcrumbs{background:color-mix(in srgb, var(--bg) 85%, #000 15%);border:1px solid var(--border);pointer-events:all;border-radius:6px;flex-wrap:wrap;align-items:center;gap:2px;padding:4px 8px;font-size:12px;display:flex}.gn-breadcrumbs__item{align-items:center;gap:2px;display:inline-flex}.gn-breadcrumbs__sep{color:var(--text);opacity:.6;padding:0 2px}.gn-breadcrumbs__link{appearance:none;color:var(--text);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:2px 4px;font-size:12px}.gn-breadcrumbs__link:hover{color:var(--accent);background:var(--accent-bg)}.gn-breadcrumbs__current{color:var(--text-h);padding:2px 4px;font-weight:600}
|
|
1
|
+
.react-flow{--xy-edge-stroke-default:#b1b1b7;--xy-edge-stroke-width-default:1;--xy-edge-stroke-selected-default:#555;--xy-connectionline-stroke-default:#b1b1b7;--xy-connectionline-stroke-width-default:1;--xy-attribution-background-color-default:#ffffff80;--xy-minimap-background-color-default:#fff;--xy-minimap-mask-background-color-default:#f0f0f099;--xy-minimap-mask-stroke-color-default:transparent;--xy-minimap-mask-stroke-width-default:1;--xy-minimap-node-background-color-default:#e2e2e2;--xy-minimap-node-stroke-color-default:transparent;--xy-minimap-node-stroke-width-default:2;--xy-background-color-default:transparent;--xy-background-pattern-dots-color-default:#91919a;--xy-background-pattern-lines-color-default:#eee;--xy-background-pattern-cross-color-default:#e2e2e2;background-color:var(--xy-background-color,var(--xy-background-color-default));--xy-node-color-default:inherit;--xy-node-border-default:1px solid #1a192b;--xy-node-background-color-default:#fff;--xy-node-group-background-color-default:#f0f0f040;--xy-node-boxshadow-hover-default:0 1px 4px 1px #00000014;--xy-node-boxshadow-selected-default:0 0 0 .5px #1a192b;--xy-node-border-radius-default:3px;--xy-handle-background-color-default:#1a192b;--xy-handle-border-color-default:#fff;--xy-selection-background-color-default:#0059dc14;--xy-selection-border-default:1px dotted #0059dccc;--xy-controls-button-background-color-default:#fefefe;--xy-controls-button-background-color-hover-default:#f4f4f4;--xy-controls-button-color-default:inherit;--xy-controls-button-color-hover-default:inherit;--xy-controls-button-border-color-default:#eee;--xy-controls-box-shadow-default:0 0 2px 1px #00000014;--xy-edge-label-background-color-default:#fff;--xy-edge-label-color-default:inherit;--xy-resize-background-color-default:#3367d9;direction:ltr}.react-flow.dark{--xy-edge-stroke-default:#3e3e3e;--xy-edge-stroke-width-default:1;--xy-edge-stroke-selected-default:#727272;--xy-connectionline-stroke-default:#b1b1b7;--xy-connectionline-stroke-width-default:1;--xy-attribution-background-color-default:#96969640;--xy-minimap-background-color-default:#141414;--xy-minimap-mask-background-color-default:#3c3c3c99;--xy-minimap-mask-stroke-color-default:transparent;--xy-minimap-mask-stroke-width-default:1;--xy-minimap-node-background-color-default:#2b2b2b;--xy-minimap-node-stroke-color-default:transparent;--xy-minimap-node-stroke-width-default:2;--xy-background-color-default:#141414;--xy-background-pattern-dots-color-default:#777;--xy-background-pattern-lines-color-default:#777;--xy-background-pattern-cross-color-default:#777;--xy-node-color-default:#f8f8f8;--xy-node-border-default:1px solid #3c3c3c;--xy-node-background-color-default:#1e1e1e;--xy-node-group-background-color-default:#f0f0f040;--xy-node-boxshadow-hover-default:0 1px 4px 1px #ffffff14;--xy-node-boxshadow-selected-default:0 0 0 .5px #999;--xy-handle-background-color-default:#bebebe;--xy-handle-border-color-default:#1e1e1e;--xy-selection-background-color-default:#c8c8dc14;--xy-selection-border-default:1px dotted #c8c8dccc;--xy-controls-button-background-color-default:#2b2b2b;--xy-controls-button-background-color-hover-default:#3e3e3e;--xy-controls-button-color-default:#f8f8f8;--xy-controls-button-color-hover-default:#fff;--xy-controls-button-border-color-default:#5b5b5b;--xy-controls-box-shadow-default:0 0 2px 1px #00000014;--xy-edge-label-background-color-default:#141414;--xy-edge-label-color-default:#f8f8f8}.react-flow__background{background-color:var(--xy-background-color-props,var(--xy-background-color,var(--xy-background-color-default)));pointer-events:none;z-index:-1}.react-flow__container{width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__pane{z-index:1;touch-action:none}.react-flow__pane.draggable{cursor:grab}.react-flow__pane.dragging{cursor:grabbing}.react-flow__pane.selection{cursor:pointer}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow__edge-path{stroke:var(--xy-edge-stroke,var(--xy-edge-stroke-default));stroke-width:var(--xy-edge-stroke-width,var(--xy-edge-stroke-width-default));fill:none}.react-flow__connection-path{stroke:var(--xy-connectionline-stroke,var(--xy-connectionline-stroke-default));stroke-width:var(--xy-connectionline-stroke-width,var(--xy-connectionline-stroke-width-default));fill:none}.react-flow .react-flow__edges{position:absolute}.react-flow .react-flow__edges svg{pointer-events:none;position:absolute;overflow:visible}.react-flow__edge{pointer-events:visibleStroke}.react-flow__edge.selectable{cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:.5s linear infinite dashdraw}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge.selectable:focus .react-flow__edge-path,.react-flow__edge.selectable:focus-visible .react-flow__edge-path{stroke:var(--xy-edge-stroke-selected,var(--xy-edge-stroke-selected-default))}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;user-select:none}.react-flow__arrowhead polyline{stroke:var(--xy-edge-stroke,var(--xy-edge-stroke-default))}.react-flow__arrowhead polyline.arrowclosed{fill:var(--xy-edge-stroke,var(--xy-edge-stroke-default))}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:.5s linear infinite dashdraw}svg.react-flow__connectionline{z-index:1001;position:absolute;overflow:visible}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{-webkit-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:default;position:absolute}.react-flow__node.selectable{cursor:pointer}.react-flow__node.draggable{cursor:grab;pointer-events:all}.react-flow__node.draggable.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:0 0;pointer-events:none}.react-flow__nodesselection-rect{pointer-events:all;cursor:grab;position:absolute}.react-flow__handle{pointer-events:none;background-color:var(--xy-handle-background-color,var(--xy-handle-background-color-default));border:1px solid var(--xy-handle-border-color,var(--xy-handle-border-color-default));border-radius:100%;width:6px;min-width:5px;height:6px;min-height:5px;position:absolute}.react-flow__handle.connectingfrom{pointer-events:all}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;bottom:0;left:50%;transform:translate(-50%,50%)}.react-flow__handle-top{top:0;left:50%;transform:translate(-50%,-50%)}.react-flow__handle-left{top:50%;left:0;transform:translate(-50%,-50%)}.react-flow__handle-right{top:50%;right:0;transform:translate(50%,-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__pane.selection .react-flow__panel{pointer-events:none}.react-flow__panel{z-index:5;margin:15px;position:absolute}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.top.center,.react-flow__panel.bottom.center{left:50%;transform:translate(-15px)translate(-50%)}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.left.center,.react-flow__panel.right.center{top:50%;transform:translateY(-15px)translateY(-50%)}.react-flow__attribution{background:var(--xy-attribution-background-color,var(--xy-attribution-background-color-default));margin:0;padding:2px 3px;font-size:10px}.react-flow__attribution a{color:#999;text-decoration:none}@keyframes dashdraw{0%{stroke-dashoffset:10px}}.react-flow__edgelabel-renderer{pointer-events:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__viewport-portal{-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute;top:0;left:0}.react-flow__minimap{background:var(--xy-minimap-background-color-props,var(--xy-minimap-background-color,var(--xy-minimap-background-color-default)))}.react-flow__minimap-svg{display:block}.react-flow__minimap-mask{fill:var(--xy-minimap-mask-background-color-props,var(--xy-minimap-mask-background-color,var(--xy-minimap-mask-background-color-default)));stroke:var(--xy-minimap-mask-stroke-color-props,var(--xy-minimap-mask-stroke-color,var(--xy-minimap-mask-stroke-color-default)));stroke-width:var(--xy-minimap-mask-stroke-width-props,var(--xy-minimap-mask-stroke-width,var(--xy-minimap-mask-stroke-width-default)))}.react-flow__minimap-node{fill:var(--xy-minimap-node-background-color-props,var(--xy-minimap-node-background-color,var(--xy-minimap-node-background-color-default)));stroke:var(--xy-minimap-node-stroke-color-props,var(--xy-minimap-node-stroke-color,var(--xy-minimap-node-stroke-color-default)));stroke-width:var(--xy-minimap-node-stroke-width-props,var(--xy-minimap-node-stroke-width,var(--xy-minimap-node-stroke-width-default)))}.react-flow__background-pattern.dots{fill:var(--xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-dots-color-default)))}.react-flow__background-pattern.lines{stroke:var(--xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-lines-color-default)))}.react-flow__background-pattern.cross{stroke:var(--xy-background-pattern-color-props,var(--xy-background-pattern-color,var(--xy-background-pattern-cross-color-default)))}.react-flow__controls{box-shadow:var(--xy-controls-box-shadow,var(--xy-controls-box-shadow-default));flex-direction:column;display:flex}.react-flow__controls.horizontal{flex-direction:row}.react-flow__controls-button{background:var(--xy-controls-button-background-color,var(--xy-controls-button-background-color-default));border:none;border-bottom:1px solid var(--xy-controls-button-border-color-props,var(--xy-controls-button-border-color,var(--xy-controls-button-border-color-default)));width:26px;height:26px;color:var(--xy-controls-button-color-props,var(--xy-controls-button-color,var(--xy-controls-button-color-default)));cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;padding:4px;display:flex}.react-flow__controls-button svg{fill:currentColor;width:100%;max-width:12px;max-height:12px}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-input,.react-flow__node-default,.react-flow__node-output,.react-flow__node-group{border-radius:var(--xy-node-border-radius,var(--xy-node-border-radius-default));width:150px;color:var(--xy-node-color,var(--xy-node-color-default));text-align:center;border:var(--xy-node-border,var(--xy-node-border-default));background-color:var(--xy-node-background-color,var(--xy-node-background-color-default));padding:10px;font-size:12px}.react-flow__node-input.selectable:hover,.react-flow__node-default.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:var(--xy-node-boxshadow-hover,var(--xy-node-boxshadow-hover-default))}.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:var(--xy-node-boxshadow-selected,var(--xy-node-boxshadow-selected-default))}.react-flow__node-group{background-color:var(--xy-node-group-background-color,var(--xy-node-group-background-color-default))}.react-flow__nodesselection-rect,.react-flow__selection{background:var(--xy-selection-background-color,var(--xy-selection-background-color-default));border:var(--xy-selection-border,var(--xy-selection-border-default))}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls-button:hover{background:var(--xy-controls-button-background-color-hover-props,var(--xy-controls-button-background-color-hover,var(--xy-controls-button-background-color-hover-default)));color:var(--xy-controls-button-color-hover-props,var(--xy-controls-button-color-hover,var(--xy-controls-button-color-hover-default)))}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__controls-button:last-child{border-bottom:none}.react-flow__controls.horizontal .react-flow__controls-button{border-bottom:none;border-right:1px solid var(--xy-controls-button-border-color-props,var(--xy-controls-button-border-color,var(--xy-controls-button-border-color-default)))}.react-flow__controls.horizontal .react-flow__controls-button:last-child{border-right:none}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{background-color:var(--xy-resize-background-color,var(--xy-resize-background-color-default));border:1px solid #fff;border-radius:1px;width:5px;height:5px;translate:-50% -50%}.react-flow__resize-control.handle.left{top:50%;left:0}.react-flow__resize-control.handle.right{top:50%;left:100%}.react-flow__resize-control.handle.top{top:0;left:50%}.react-flow__resize-control.handle.bottom{top:100%;left:50%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:var(--xy-resize-background-color,var(--xy-resize-background-color-default));border-style:solid;border-width:0}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;height:100%;top:0;transform:translate(-50%)}.react-flow__resize-control.line.left{border-left-width:1px;left:0}.react-flow__resize-control.line.right{border-right-width:1px;left:100%}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{width:100%;height:1px;left:0;transform:translateY(-50%)}.react-flow__resize-control.line.top{border-top-width:1px;top:0}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}.react-flow__edge-textbg{fill:var(--xy-edge-label-background-color,var(--xy-edge-label-background-color-default))}.react-flow__edge-text{fill:var(--xy-edge-label-color,var(--xy-edge-label-color-default))}.app-layout{grid-template-columns:var(--left-w,28%) 6px minmax(0, 1fr) 6px var(--right-w,26%);gap:0;width:100%;height:100vh;min-height:100svh;display:grid}.left-pane,.center-pane,.right-pane{min-width:0;min-height:0}.pane-divider{cursor:col-resize;touch-action:none;position:relative}.pane-divider:after{content:"";background:var(--border);width:1px;margin:0 auto;transition:width .1s,background .1s;position:absolute;inset:0}.pane-divider:hover:after,body.is-resizing .pane-divider:after{background:var(--accent);width:3px}body.is-resizing{cursor:col-resize;-webkit-user-select:none;user-select:none}body.is-resizing .left-pane,body.is-resizing .center-pane,body.is-resizing .right-pane{pointer-events:none}.panel-body .cm-content{padding:10px 14px 24px}.right-pane .cm-content,.right-pane .cm-gutters{font-size:15px}.flow-panel__body .react-flow__node.selected:not(:has(.gn-reroute)){outline:2px solid var(--accent);outline-offset:2px;border-radius:6px}.flow-panel__body .react-flow__node.selected .gn-reroute{box-shadow:0 0 0 1px #00000059, 0 0 0 3px var(--bg), 0 0 0 5px var(--accent)}.flow-panel__body .react-flow__selection,.flow-panel__body .react-flow__nodesselection-rect{border:1px solid var(--accent);background:var(--accent-bg)}.flow-panel__body .react-flow__nodesselection-rect{box-sizing:content-box;border-radius:10px;margin:-16px;padding:16px}.panel{flex-direction:column;height:100%;min-height:0;display:flex}.panel-header{border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:10px 12px;display:flex}.panel-title{color:var(--text-h);font-weight:600}.panel-status{opacity:.8;margin-left:auto;font-size:13px}.panel-body{flex:auto;min-height:0;display:flex;overflow:hidden}.panel-footer{border-top:1px solid var(--border);padding:8px 12px;font-size:13px}.tabs{flex-wrap:wrap;gap:6px;display:inline-flex}.tab{appearance:none;border:1px solid var(--border);color:var(--text-h);cursor:pointer;background:0 0;border-radius:8px;padding:6px 10px;font-size:14px}.tab.active{border-color:var(--accent-border);background:var(--accent-bg)}.tab:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.panel-actions{gap:8px;display:inline-flex}.view-toggle{border:1px solid var(--border);border-radius:8px;display:inline-flex;overflow:hidden}.view-toggle__option{appearance:none;color:var(--text);cursor:pointer;background:0 0;border:none;padding:6px 10px;font-size:13px}.view-toggle__option+.view-toggle__option{border-left:1px solid var(--border)}.view-toggle__option.active{background:var(--accent-bg);color:var(--text-h)}.view-toggle__option:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.action-button{appearance:none;border:1px solid var(--border);color:var(--text-h);cursor:pointer;background:0 0;border-radius:8px;padding:6px 10px;font-size:14px}.action-button:disabled{opacity:.5;cursor:not-allowed}.action-button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.cm-editor{width:100%;height:100%}.cm-editor .cm-content{font-family:var(--mono);font-size:12px;line-height:150%}.cm-editor .cm-gutters{font-size:11px}.json-status.ok{color:var(--text)}.json-status.bad{color:#ef4444}.flow-panel .panel-header{justify-content:space-between}.flow-panel__body{background:radial-gradient(1200px 600px at 20% 10%, #aa3bff14, transparent 60%), var(--bg);position:relative}.flow-empty{flex:auto;place-items:center;font-size:14px;display:grid}.gnwr-loading{background:var(--bg);color:var(--text);flex-direction:column;justify-content:center;align-items:center;gap:14px;display:flex;position:absolute;inset:0}.gnwr-loading__logo{border-radius:12px;width:56px;height:56px;animation:1.4s ease-in-out infinite gnwr-logo-pulse;box-shadow:0 2px 10px #00000059}.gnwr-loading__label{letter-spacing:.02em;opacity:.85;font-size:13px}@keyframes gnwr-logo-pulse{0%,to{opacity:.85;transform:scale(1)}50%{opacity:1;transform:scale(1.08)}}.flow-error{color:#f87171;text-align:center;flex-direction:column;flex:auto;justify-content:center;align-items:center;gap:8px;padding:24px;font-size:13px;display:flex}.flow-error strong{font-size:14px;font-weight:600}.flow-error span{opacity:.8;word-break:break-word;max-width:480px;font-family:monospace}.flow-panel__body .react-flow{--xy-background-color-default:transparent;--xy-controls-button-background-color-default:var(--bg);--xy-controls-button-color-default:var(--text-h);--xy-controls-button-border-color-default:var(--border);--xy-edge-stroke-width-default:2.5;width:100%;height:100%}.flow-panel__body .react-flow__attribution{display:none}.flow-panel__body .react-flow__pane{cursor:grab}.flow-panel__body .react-flow__pane:active{cursor:grabbing}.flow-panel__body .react-flow__node,.flow-panel__body .react-flow__edge{pointer-events:none}.gn-reroute{box-sizing:border-box;background:var(--gn-reroute-color,#888);pointer-events:none;border:2px solid #00000059;border-radius:50%;width:12px;height:12px;box-shadow:0 0 0 1px #ffffff1f}.gn-reroute .gn-reroute__handle{opacity:0;pointer-events:none;cursor:default;background:0 0!important;border:none!important;width:1px!important;min-width:0!important;height:1px!important;min-height:0!important}.gn-reroute .react-flow__handle-left.gn-reroute__handle{top:50%;left:0;transform:translate(-50%,-50%)}.gn-reroute .react-flow__handle-right.gn-reroute__handle{top:50%;right:0;transform:translate(50%,-50%)}.gn-node{box-sizing:border-box;border:1px solid var(--border);background:color-mix(in srgb, var(--bg) 88%, #111827 12%);color:var(--text-h);box-shadow:var(--shadow);border-radius:8px;overflow:visible}.gn-node__header{box-sizing:border-box;border-bottom:1px solid #0000004d;border-top-left-radius:7px;border-top-right-radius:7px;align-items:center;min-height:28px;padding:6px 10px;display:flex}.gn-node__title{color:#ffffffd9;font-size:12px;font-weight:600;line-height:1.2}.gn-node__props{background:color-mix(in srgb, var(--bg) 80%, #000 20%);border-bottom:1px solid #00000040;padding:4px 10px}.gn-node__prop-row{color:var(--text);white-space:nowrap;text-overflow:ellipsis;background:color-mix(in srgb, var(--bg) 60%, #000 40%);border:1px solid #ffffff14;border-radius:3px;margin:2px 0;padding:1px 6px;font-size:10px;line-height:1.8;overflow:hidden}.gn-node--group{pointer-events:all;cursor:pointer;border-color:var(--accent-border);box-shadow:0 0 0 1px var(--accent-border), 0 0 16px 3px color-mix(in srgb, var(--accent) 25%, transparent), var(--shadow);transition:box-shadow .15s,border-color .15s;position:relative}.gn-node--group:hover{border-color:var(--accent);box-shadow:0 0 0 1.5px var(--accent), 0 0 24px 6px color-mix(in srgb, var(--accent) 40%, transparent), var(--shadow)}.gn-node__stack{z-index:-1;flex-direction:column;align-items:center;gap:1px;display:flex;position:absolute;top:calc(100% - 2px);left:0;right:0}.gn-node__stack-bar{background:color-mix(in srgb, var(--text) 22%, var(--bg));border:1px solid color-mix(in srgb, var(--text) 45%, var(--bg));border-top:none;border-radius:0 0 5px 5px;height:4px;box-shadow:0 1px 2px #00000026}.gn-node__stack-bar:first-child{opacity:1;width:90%}.gn-node__stack-bar:nth-child(2){opacity:.7;width:78%}.gn-node__stack-bar:nth-child(3){opacity:.45;width:66%}.gn-node__body{background:color-mix(in srgb, var(--bg) 90%, #111827 10%);border-bottom-right-radius:7px;border-bottom-left-radius:7px;padding:6px 0}.gn-node__socket-row{align-items:center;min-height:20px;padding:0 10px;display:flex;position:relative}.gn-node__socket-row--right{justify-content:flex-end}.gn-node__socket-row--right .gn-node__socket-label{text-align:right}.gn-node__socket-label{color:var(--text-h);white-space:nowrap;text-overflow:ellipsis;flex:1 1 0;min-width:0;font-size:10px;line-height:1.2;overflow:hidden}.gn-node__value{color:var(--text);white-space:nowrap;text-align:right;flex-shrink:0;margin-left:8px;font-size:10px;line-height:1.2}.gn-node__color-swatch{border:1px solid var(--border);border-radius:3px;height:14px;margin:2px 8px 4px 18px}.gn-node__curve-wrap{border-bottom:1px solid var(--border);background:#1e1e1e;padding:6px 6px 4px}.gn-node__curve-svg{display:block}.gn-node__curve-zero{stroke:#ffffff26;stroke-width:1px;fill:none;stroke-dasharray:3 3}.gn-node__curve-fill{fill:#ffffff14}.gn-node__curve-stroke{fill:none;stroke:#ffffffbf;stroke-width:1.5px;stroke-linejoin:round;stroke-linecap:round}.gn-node__curve-dot{fill:#ccc;stroke:#1e1e1e;stroke-width:1px}.gn-node__vec-block{border:1px solid var(--border);border-radius:4px;margin:1px 8px 4px 18px;overflow:hidden}.gn-node__vec-row{background:color-mix(in srgb, var(--bg) 70%, #111827 30%);border-top:1px solid var(--border);justify-content:space-between;align-items:center;height:16px;padding:0 6px;display:flex}.gn-node__vec-row:first-child{border-top:none}.gn-node__vec-label{color:var(--text);text-transform:uppercase;flex-shrink:0;width:10px;font-size:9px}.gn-node__vec-value{color:var(--text-h);text-align:right;font-size:9px}.gn-node .react-flow__handle.gn-socket{pointer-events:none;cursor:default;background:0 0;border:1px solid #0000;margin-top:0;top:50%}.gn-node .react-flow__handle.gn-socket--circle{border-radius:999px;width:8px;height:8px}.gn-node .react-flow__handle.gn-socket--line{border-radius:1px;width:7px;height:12px}.gn-node .react-flow__handle.gn-socket--diamond{border-radius:1px;width:8px;height:8px}.gn-node .react-flow__handle.gn-socket--list,.gn-node .react-flow__handle.gn-socket--grid{border-radius:2px;width:9px;height:9px}.gn-node .react-flow__handle-left.gn-socket{left:0;transform:translate(-50%,-50%)}.gn-node .react-flow__handle-right.gn-socket{right:0;transform:translate(50%,-50%)}.gn-node .react-flow__handle-left.gn-socket--diamond{transform:translate(-50%,-50%)rotate(45deg)}.gn-node .react-flow__handle-right.gn-socket--diamond{transform:translate(50%,-50%)rotate(45deg)}.flow-panel__body .react-flow__edge-path{stroke-width:2.5px}.flow-panel__body .react-flow__edge.selected .react-flow__edge-path,.flow-panel__body .react-flow__edge-path{stroke-linecap:round;stroke-linejoin:round}@media (width<=980px){.app-layout{grid-template-rows:40svh 1fr 30svh;grid-template-columns:1fr}.pane-divider{display:none}.left-pane{border-bottom:1px solid var(--border)}.right-pane{border-top:1px solid var(--border)}}.geonodes-embed{background:var(--bg,#1a1a1a);flex-direction:column;height:100%;min-height:0;display:flex}.geonodes-embed--dark{--text:#9ca3af;--text-h:#f3f4f6;--bg:#16171d;--border:#2e303a;--code-bg:#1f2028;--accent:#c084fc;--accent-bg:#c084fc26;--accent-border:#c084fc80;color:var(--text);background:var(--bg)}.geonodes-embed__header{border-bottom:1px solid var(--border,#333);flex-shrink:0;align-items:center;padding:6px 10px;display:flex}.geonodes-embed__title{color:var(--text-h,#eee);font-weight:600}.geonodes-embed__body{flex:auto;min-height:0;position:relative;overflow:hidden}.gn-top-left{flex-direction:column;align-items:flex-start;gap:6px;display:flex}.gn-version-badge{background:color-mix(in srgb, var(--bg) 85%, #000 15%);border:1px solid var(--border);color:var(--text);opacity:.6;pointer-events:none;-webkit-user-select:none;user-select:none;white-space:nowrap;border-radius:6px;padding:3px 8px;font-size:11px;display:inline-block}.gnwr-copy-button{z-index:10;appearance:none;background:color-mix(in srgb, var(--bg) 85%, #000 15%);border:1px solid var(--border);color:var(--text);cursor:pointer;opacity:.85;border-radius:6px;align-items:center;gap:7px;padding:5px 12px 5px 8px;font-size:12px;transition:opacity .15s,border-color .15s,color .15s;display:inline-flex;position:absolute;top:10px;right:10px}.gnwr-copy-button__logo{border-radius:4px;flex:none;width:18px;height:18px;box-shadow:0 1px 2px #0000004d}.gnwr-copy-button:hover{opacity:1;border-color:var(--accent-border);color:var(--accent)}.gnwr-copy-button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.gnwr-copy-button--copied{opacity:1;border-color:var(--accent-border);color:var(--accent)}.gnwr-copy-button__check{width:18px;height:18px;color:var(--accent);flex:none;animation:.25s ease-out gnwr-check-pop}@keyframes gnwr-check-pop{0%{opacity:0;transform:scale(.4)}to{opacity:1;transform:scale(1)}}.gnwr-copy-toast{z-index:10;background:color-mix(in srgb, var(--bg) 85%, #000 15%);border:1px solid var(--accent-border);max-width:260px;color:var(--text);border-radius:6px;padding:8px 12px;font-size:12px;line-height:1.4;animation:.15s ease-out gnwr-copy-toast-in;position:absolute;top:48px;right:10px;box-shadow:0 4px 14px #00000059}.gnwr-copy-toast__link{color:var(--accent);text-decoration:underline}.gnwr-copy-toast__link:hover{text-decoration:none}@keyframes gnwr-copy-toast-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.gnwr-leaving{animation:.5s forwards gnwr-fade-out}@keyframes gnwr-fade-out{to{opacity:0}}.gn-context-menu{z-index:1000;background:color-mix(in srgb, var(--bg) 88%, #000 12%);border:1px solid var(--border);border-radius:8px;min-width:200px;padding:4px;animation:.1s ease-out gnwr-copy-toast-in;position:fixed;box-shadow:0 8px 24px #00000073}.gn-context-menu__item{width:100%;color:var(--text);text-align:left;white-space:nowrap;cursor:pointer;background:0 0;border:none;border-radius:5px;padding:8px 10px;font-size:13px;display:block}.gn-context-menu__item:hover,.gn-context-menu__item:focus-visible{background:var(--accent);color:#fff;outline:none}.gn-context-toast{z-index:20;background:color-mix(in srgb, var(--bg) 85%, #000 15%);border:1px solid var(--accent-border);color:var(--text);border-radius:6px;padding:8px 14px;font-size:12px;animation:.15s ease-out gnwr-copy-toast-in;position:absolute;bottom:12px;left:50%;transform:translate(-50%);box-shadow:0 4px 14px #00000059}.gn-breadcrumbs{background:color-mix(in srgb, var(--bg) 85%, #000 15%);border:1px solid var(--border);pointer-events:all;border-radius:6px;flex-wrap:wrap;align-items:center;gap:2px;padding:4px 8px;font-size:12px;display:flex}.gn-breadcrumbs__item{align-items:center;gap:2px;display:inline-flex}.gn-breadcrumbs__sep{color:var(--text);opacity:.6;padding:0 2px}.gn-breadcrumbs__link{appearance:none;color:var(--text);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:2px 4px;font-size:12px}.gn-breadcrumbs__link:hover{color:var(--accent);background:var(--accent-bg)}.gn-breadcrumbs__current{color:var(--text-h);padding:2px 4px;font-weight:600}
|
|
2
2
|
/*$vite$:1*/
|
package/dist/embed.js
CHANGED
|
@@ -7662,6 +7662,7 @@ var Xd = {
|
|
|
7662
7662
|
GEOMETRY: "#1d725e",
|
|
7663
7663
|
INPUT: "#82354c",
|
|
7664
7664
|
OUTPUT: "#3e232a",
|
|
7665
|
+
COLOR: "#6e6e23",
|
|
7665
7666
|
ATTRIBUTE: "#1d2546",
|
|
7666
7667
|
CONVERTER: "#246283",
|
|
7667
7668
|
GROUP: "#374725",
|
|
@@ -7674,11 +7675,32 @@ var Xd = {
|
|
|
7674
7675
|
DISTORT: "#3e5a5b",
|
|
7675
7676
|
SCRIPT: "#203c3c",
|
|
7676
7677
|
DEFAULT: "#303030"
|
|
7678
|
+
}, Zd = {
|
|
7679
|
+
ShaderNodeVectorMath: "VECTOR",
|
|
7680
|
+
ShaderNodeVectorRotate: "VECTOR",
|
|
7681
|
+
ShaderNodeVectorCurve: "VECTOR",
|
|
7682
|
+
ShaderNodeVectorTransform: "VECTOR",
|
|
7683
|
+
ShaderNodeMapping: "VECTOR",
|
|
7684
|
+
ShaderNodeMixRGB: "COLOR",
|
|
7685
|
+
ShaderNodeRGBCurve: "COLOR",
|
|
7686
|
+
ShaderNodeMath: "CONVERTER",
|
|
7687
|
+
ShaderNodeClamp: "CONVERTER",
|
|
7688
|
+
ShaderNodeValToRGB: "CONVERTER",
|
|
7689
|
+
ShaderNodeFloatCurve: "CONVERTER",
|
|
7690
|
+
ShaderNodeSeparateXYZ: "CONVERTER",
|
|
7691
|
+
ShaderNodeCombineXYZ: "CONVERTER",
|
|
7692
|
+
ShaderNodeSeparateColor: "CONVERTER",
|
|
7693
|
+
ShaderNodeCombineColor: "CONVERTER",
|
|
7694
|
+
ShaderNodeBlackbody: "CONVERTER",
|
|
7695
|
+
ShaderNodeWavelength: "CONVERTER",
|
|
7696
|
+
ShaderNodeRGBToBW: "CONVERTER",
|
|
7697
|
+
ShaderNodeValue: "INPUT",
|
|
7698
|
+
ShaderNodeRGB: "INPUT"
|
|
7677
7699
|
};
|
|
7678
|
-
function
|
|
7679
|
-
return e === "NodeGroupInput" || e === "NodeGroupOutput" ? "INTERFACE" : e.startsWith("NodeGroup") ? "GROUP" : e.startsWith("GeometryNodeSet") || e.startsWith("GeometryNodeTransform") || e.startsWith("GeometryNodeMerge") || e.startsWith("GeometryNodeJoin") || e.startsWith("GeometryNodeDelete") || e.startsWith("GeometryNodeSeparate") || e.startsWith("GeometryNodeDuplicate") || e.startsWith("GeometryNodeExtrude") || e.startsWith("GeometryNodeFlip") || e.startsWith("GeometryNodeSubdivide") || e.startsWith("GeometryNodeTriangulate") || e.startsWith("GeometryNodeMesh") || e.startsWith("GeometryNodeCurve") || e.startsWith("GeometryNodePoints") || e.startsWith("GeometryNodeVolume") || e.startsWith("GeometryNodeInstance") || e.startsWith("GeometryNodeRealize") || e.startsWith("GeometryNodeConvex") || e.startsWith("GeometryNodeFill") || e.startsWith("GeometryNodeSDF") || e.startsWith("GeometryNode") ? "GEOMETRY" : e.startsWith("ShaderNode") ? "SHADER" : e.startsWith("FunctionNode") ? "CONVERTER" : "DEFAULT";
|
|
7700
|
+
function Qd(e) {
|
|
7701
|
+
return e === "NodeGroupInput" || e === "NodeGroupOutput" ? "INTERFACE" : e.startsWith("NodeGroup") ? "GROUP" : e.startsWith("GeometryNodeSet") || e.startsWith("GeometryNodeTransform") || e.startsWith("GeometryNodeMerge") || e.startsWith("GeometryNodeJoin") || e.startsWith("GeometryNodeDelete") || e.startsWith("GeometryNodeSeparate") || e.startsWith("GeometryNodeDuplicate") || e.startsWith("GeometryNodeExtrude") || e.startsWith("GeometryNodeFlip") || e.startsWith("GeometryNodeSubdivide") || e.startsWith("GeometryNodeTriangulate") || e.startsWith("GeometryNodeMesh") || e.startsWith("GeometryNodeCurve") || e.startsWith("GeometryNodePoints") || e.startsWith("GeometryNodeVolume") || e.startsWith("GeometryNodeInstance") || e.startsWith("GeometryNodeRealize") || e.startsWith("GeometryNodeConvex") || e.startsWith("GeometryNodeFill") || e.startsWith("GeometryNodeSDF") || e.startsWith("GeometryNode") ? "GEOMETRY" : e.startsWith("ShaderNode") ? e in Zd ? Zd[e] : e.startsWith("ShaderNodeTex") ? "TEXTURE" : "SHADER" : e.startsWith("FunctionNode") ? e.startsWith("FunctionNodeInput") ? "INPUT" : "CONVERTER" : "DEFAULT";
|
|
7680
7702
|
}
|
|
7681
|
-
var
|
|
7703
|
+
var $d = {
|
|
7682
7704
|
GeometryNodeInputMaterial: "INPUT",
|
|
7683
7705
|
GeometryNodeInputMaterialIndex: "INPUT",
|
|
7684
7706
|
GeometryNodeInputRadius: "INPUT",
|
|
@@ -7729,12 +7751,16 @@ var Qd = {
|
|
|
7729
7751
|
GeometryNodeFieldVariance: "CONVERTER",
|
|
7730
7752
|
GeometryNodeViewer: "OUTPUT"
|
|
7731
7753
|
};
|
|
7732
|
-
function
|
|
7733
|
-
|
|
7754
|
+
function ef(e, t) {
|
|
7755
|
+
if (e === "ShaderNodeMix") return t === "VECTOR" ? "VECTOR" : t === "RGBA" ? "COLOR" : "CONVERTER";
|
|
7756
|
+
if (e === "ShaderNodeMapRange") return t === "FLOAT_VECTOR" ? "VECTOR" : "CONVERTER";
|
|
7757
|
+
}
|
|
7758
|
+
function tf(e, t) {
|
|
7759
|
+
return Xd[ef(e, t) ?? $d[e] ?? Qd(e)] ?? Xd.DEFAULT;
|
|
7734
7760
|
}
|
|
7735
7761
|
//#endregion
|
|
7736
7762
|
//#region src/gn/importer/blenderTree.ts
|
|
7737
|
-
var
|
|
7763
|
+
var nf = {
|
|
7738
7764
|
NodeSocketGeometry: "GEOMETRY",
|
|
7739
7765
|
NodeSocketFloat: "FLOAT",
|
|
7740
7766
|
NodeSocketVector: "VECTOR",
|
|
@@ -7751,10 +7777,10 @@ var ef = {
|
|
|
7751
7777
|
NodeSocketMatrix: "MATRIX",
|
|
7752
7778
|
NodeSocketMenu: "MENU"
|
|
7753
7779
|
};
|
|
7754
|
-
function
|
|
7755
|
-
return
|
|
7780
|
+
function rf(e) {
|
|
7781
|
+
return nf[e] ?? "CUSTOM";
|
|
7756
7782
|
}
|
|
7757
|
-
var
|
|
7783
|
+
var af = {
|
|
7758
7784
|
HSV: [
|
|
7759
7785
|
"Hue",
|
|
7760
7786
|
"Saturation",
|
|
@@ -7771,7 +7797,7 @@ var nf = {
|
|
|
7771
7797
|
"Blue"
|
|
7772
7798
|
]
|
|
7773
7799
|
};
|
|
7774
|
-
function
|
|
7800
|
+
function of(e) {
|
|
7775
7801
|
let t = e.data.mapping?.data;
|
|
7776
7802
|
if (!t) return;
|
|
7777
7803
|
let n = t.curves?.data?.items;
|
|
@@ -7789,8 +7815,8 @@ function rf(e) {
|
|
|
7789
7815
|
points: r
|
|
7790
7816
|
};
|
|
7791
7817
|
}
|
|
7792
|
-
function
|
|
7793
|
-
let n =
|
|
7818
|
+
function sf(e, t) {
|
|
7819
|
+
let n = af[t ?? "RGB"] ?? af.RGB, r = af.RGB;
|
|
7794
7820
|
return e.map((e) => {
|
|
7795
7821
|
let t = r.indexOf(e.name);
|
|
7796
7822
|
return t === -1 ? e : {
|
|
@@ -7799,11 +7825,11 @@ function af(e, t) {
|
|
|
7799
7825
|
};
|
|
7800
7826
|
});
|
|
7801
7827
|
}
|
|
7802
|
-
function
|
|
7828
|
+
function cf(e) {
|
|
7803
7829
|
return e.replace(/\.\d{3}$/, "");
|
|
7804
7830
|
}
|
|
7805
|
-
function
|
|
7806
|
-
let n =
|
|
7831
|
+
function lf(e, t) {
|
|
7832
|
+
let n = rf(e.data.socket_idname ?? ""), r = Yd(n), i = String(e.data.single_input ?? `${e.id}_in`), a = String(e.data.single_output ?? `${e.id}_out`), o = (e) => ({
|
|
7807
7833
|
id: e,
|
|
7808
7834
|
name: "",
|
|
7809
7835
|
dataType: n,
|
|
@@ -7828,7 +7854,7 @@ function sf(e, t) {
|
|
|
7828
7854
|
outputs: [o(a)]
|
|
7829
7855
|
};
|
|
7830
7856
|
}
|
|
7831
|
-
function
|
|
7857
|
+
function uf(e) {
|
|
7832
7858
|
return e == null ? null : Array.isArray(e) && e.length >= 2 ? {
|
|
7833
7859
|
kind: "vec",
|
|
7834
7860
|
values: e
|
|
@@ -7837,20 +7863,20 @@ function cf(e) {
|
|
|
7837
7863
|
value: e
|
|
7838
7864
|
} : null;
|
|
7839
7865
|
}
|
|
7840
|
-
function
|
|
7866
|
+
function df(e, t) {
|
|
7841
7867
|
return {
|
|
7842
7868
|
id: String(e.id),
|
|
7843
7869
|
name: e.data.name,
|
|
7844
7870
|
dataType: e.data.type,
|
|
7845
7871
|
displayShape: e.data.display_shape,
|
|
7846
7872
|
color: Yd(e.data.type),
|
|
7847
|
-
defaultValue:
|
|
7873
|
+
defaultValue: uf(e.data.default_value),
|
|
7848
7874
|
hideValue: e.data.hide_value ?? !1,
|
|
7849
7875
|
enabled: e.data.enabled ?? !0,
|
|
7850
7876
|
index: t
|
|
7851
7877
|
};
|
|
7852
7878
|
}
|
|
7853
|
-
function
|
|
7879
|
+
function ff(e) {
|
|
7854
7880
|
if (e.data.bl_idname === "FunctionNodeCompare") {
|
|
7855
7881
|
let t = {};
|
|
7856
7882
|
return e.data.data_type && (t.data_type = e.data.data_type), e.data.operation && (t.operation = e.data.operation), Object.keys(t).length > 0 ? t : void 0;
|
|
@@ -7860,7 +7886,7 @@ function uf(e) {
|
|
|
7860
7886
|
return e.data.operation && (t.operation = e.data.operation), e.data.use_clamp && (t.use_clamp = "true"), Object.keys(t).length > 0 ? t : void 0;
|
|
7861
7887
|
}
|
|
7862
7888
|
}
|
|
7863
|
-
function
|
|
7889
|
+
function pf(e, t) {
|
|
7864
7890
|
if (!e?.data) throw Error(`"node_trees[${t}].data" is missing.`);
|
|
7865
7891
|
if (!e.data.nodes?.data?.items) throw Error(`"node_trees[${t}].data.nodes.data.items" is missing.`);
|
|
7866
7892
|
if (!e.data.links?.data?.items) throw Error(`"node_trees[${t}].data.links.data.items" is missing.`);
|
|
@@ -7870,10 +7896,10 @@ function df(e, t) {
|
|
|
7870
7896
|
nodes: e.data.nodes.data.items.map((e, t) => {
|
|
7871
7897
|
if (!e?.data) throw Error(`Node at index ${t} is missing ".data".`);
|
|
7872
7898
|
let n = e.data.location_absolute ?? e.data.location ?? [0, 0];
|
|
7873
|
-
if (e.data.bl_idname === "NodeReroute") return
|
|
7899
|
+
if (e.data.bl_idname === "NodeReroute") return lf(e, n);
|
|
7874
7900
|
let r = (e.data.outputs?.data?.items ?? []).map((t, n) => {
|
|
7875
7901
|
if (!t?.data) throw Error(`Node "${e.data.name}" output socket ${n} is missing ".data".`);
|
|
7876
|
-
return
|
|
7902
|
+
return df(t, n);
|
|
7877
7903
|
});
|
|
7878
7904
|
e.data.bl_idname === "FunctionNodeInputVector" && Array.isArray(e.data.vector) && (r[0] &&= {
|
|
7879
7905
|
...r[0],
|
|
@@ -7884,20 +7910,20 @@ function df(e, t) {
|
|
|
7884
7910
|
});
|
|
7885
7911
|
let i = (e.data.inputs?.data?.items ?? []).map((t, n) => {
|
|
7886
7912
|
if (!t?.data) throw Error(`Node "${e.data.name}" input socket ${n} is missing ".data".`);
|
|
7887
|
-
return
|
|
7913
|
+
return df(t, n);
|
|
7888
7914
|
});
|
|
7889
|
-
(e.data.bl_idname === "ShaderNodeCombineColor" || e.data.bl_idname === "ShaderNodeSeparateColor") && (i =
|
|
7890
|
-
let a = e.data.bl_idname === "ShaderNodeFloatCurve" ?
|
|
7915
|
+
(e.data.bl_idname === "ShaderNodeCombineColor" || e.data.bl_idname === "ShaderNodeSeparateColor") && (i = sf(i, e.data.mode));
|
|
7916
|
+
let a = e.data.bl_idname === "ShaderNodeFloatCurve" ? of(e) : void 0, o = ff(e);
|
|
7891
7917
|
return {
|
|
7892
7918
|
id: String(e.id),
|
|
7893
7919
|
type: e.data.bl_idname,
|
|
7894
|
-
label: e.data.label ||
|
|
7920
|
+
label: e.data.label || cf(e.data.name),
|
|
7895
7921
|
position: {
|
|
7896
7922
|
x: n[0],
|
|
7897
7923
|
y: -n[1]
|
|
7898
7924
|
},
|
|
7899
7925
|
width: e.data.width ?? 140,
|
|
7900
|
-
headerColor:
|
|
7926
|
+
headerColor: tf(e.data.bl_idname, e.data.data_type),
|
|
7901
7927
|
inputs: i,
|
|
7902
7928
|
outputs: r,
|
|
7903
7929
|
floatCurve: a,
|
|
@@ -7915,12 +7941,12 @@ function df(e, t) {
|
|
|
7915
7941
|
})
|
|
7916
7942
|
};
|
|
7917
7943
|
}
|
|
7918
|
-
function
|
|
7944
|
+
function mf(e) {
|
|
7919
7945
|
if (!e || typeof e != "object") throw Error("JSON root must be an object.");
|
|
7920
7946
|
if (!Array.isArray(e.node_trees) || e.node_trees.length === 0) throw Error("Expected \"node_trees\" array with at least one entry.");
|
|
7921
7947
|
let t = {};
|
|
7922
7948
|
for (let n = 0; n < e.node_trees.length; n++) {
|
|
7923
|
-
let r =
|
|
7949
|
+
let r = pf(e.node_trees[n], n);
|
|
7924
7950
|
t[r.id] = r;
|
|
7925
7951
|
}
|
|
7926
7952
|
let n = /* @__PURE__ */ new Set();
|
|
@@ -7939,21 +7965,21 @@ function ff(e) {
|
|
|
7939
7965
|
trees: t
|
|
7940
7966
|
};
|
|
7941
7967
|
}
|
|
7942
|
-
function
|
|
7968
|
+
function hf(e, t) {
|
|
7943
7969
|
return {
|
|
7944
7970
|
...t,
|
|
7945
7971
|
nodeId: e,
|
|
7946
7972
|
direction: "input"
|
|
7947
7973
|
};
|
|
7948
7974
|
}
|
|
7949
|
-
function
|
|
7975
|
+
function gf(e, t) {
|
|
7950
7976
|
return {
|
|
7951
7977
|
...t,
|
|
7952
7978
|
nodeId: e,
|
|
7953
7979
|
direction: "output"
|
|
7954
7980
|
};
|
|
7955
7981
|
}
|
|
7956
|
-
function
|
|
7982
|
+
function _f(e) {
|
|
7957
7983
|
let t = e.nodes.map((e) => ({
|
|
7958
7984
|
id: e.id,
|
|
7959
7985
|
type: e.type,
|
|
@@ -7961,8 +7987,8 @@ function hf(e) {
|
|
|
7961
7987
|
position: e.position,
|
|
7962
7988
|
width: e.width,
|
|
7963
7989
|
headerColor: e.headerColor,
|
|
7964
|
-
inputs: e.inputs.map((t) =>
|
|
7965
|
-
outputs: e.outputs.map((t) =>
|
|
7990
|
+
inputs: e.inputs.map((t) => hf(e.id, t)),
|
|
7991
|
+
outputs: e.outputs.map((t) => gf(e.id, t)),
|
|
7966
7992
|
floatCurve: e.floatCurve,
|
|
7967
7993
|
properties: e.properties,
|
|
7968
7994
|
groupTreeId: e.groupTreeId,
|
|
@@ -7986,11 +8012,11 @@ function hf(e) {
|
|
|
7986
8012
|
}
|
|
7987
8013
|
//#endregion
|
|
7988
8014
|
//#region src/gn/xyflow/mapGraphIRToFlow.ts
|
|
7989
|
-
function
|
|
8015
|
+
function vf(e) {
|
|
7990
8016
|
let t = Math.max(e.inputs.length, e.outputs.length);
|
|
7991
8017
|
return Math.max(60, 32 + t * 18 + 16);
|
|
7992
8018
|
}
|
|
7993
|
-
function
|
|
8019
|
+
function yf(e, t) {
|
|
7994
8020
|
if (e.type === "NodeReroute") {
|
|
7995
8021
|
let t = e.outputs[0]?.color ?? e.inputs[0]?.color ?? "#888888";
|
|
7996
8022
|
return {
|
|
@@ -8030,7 +8056,7 @@ function _f(e, t) {
|
|
|
8030
8056
|
}
|
|
8031
8057
|
};
|
|
8032
8058
|
}
|
|
8033
|
-
function
|
|
8059
|
+
function bf(e, t, n) {
|
|
8034
8060
|
let r = /* @__PURE__ */ new Map(), i = /* @__PURE__ */ new Map();
|
|
8035
8061
|
for (let e of n.nodes) r.set(e.id, []), i.set(e.id, []);
|
|
8036
8062
|
for (let e of n.edges) r.has(e.sourceNodeId) || r.set(e.sourceNodeId, []), i.has(e.targetNodeId) || i.set(e.targetNodeId, []), r.get(e.sourceNodeId).push(e.targetNodeId), i.get(e.targetNodeId).push(e.sourceNodeId);
|
|
@@ -8054,16 +8080,16 @@ function vf(e, t, n) {
|
|
|
8054
8080
|
for (let e of a) s.has(e) && l.add(e);
|
|
8055
8081
|
return l;
|
|
8056
8082
|
}
|
|
8057
|
-
function
|
|
8058
|
-
let t = new Set(e.edges.map((e) => e.targetSocketId)), n = e.nodes.map((e) =>
|
|
8083
|
+
function xf(e) {
|
|
8084
|
+
let t = new Set(e.edges.map((e) => e.targetSocketId)), n = e.nodes.map((e) => yf(e, t)), r = e.nodes.find((e) => e.type === "GeometryNodeSimulationInput"), i = e.nodes.find((e) => e.type === "GeometryNodeSimulationOutput"), a = n;
|
|
8059
8085
|
if (r && i) {
|
|
8060
|
-
let t =
|
|
8086
|
+
let t = bf(r.id, i.id, e);
|
|
8061
8087
|
if (t.size > 0) {
|
|
8062
8088
|
let i = new Map(e.nodes.map((e) => [e.id, e])), o = Infinity, s = Infinity, c = -Infinity, l = -Infinity;
|
|
8063
8089
|
for (let e of t) {
|
|
8064
8090
|
let t = i.get(e);
|
|
8065
8091
|
if (!t) continue;
|
|
8066
|
-
let n = t.width, r =
|
|
8092
|
+
let n = t.width, r = vf(t);
|
|
8067
8093
|
o = Math.min(o, t.position.x), s = Math.min(s, t.position.y), c = Math.max(c, t.position.x + n), l = Math.max(l, t.position.y + r);
|
|
8068
8094
|
}
|
|
8069
8095
|
if (Number.isFinite(o) && Number.isFinite(s) && Number.isFinite(c) && Number.isFinite(l)) {
|
|
@@ -8111,7 +8137,7 @@ function yf(e) {
|
|
|
8111
8137
|
}
|
|
8112
8138
|
//#endregion
|
|
8113
8139
|
//#region src/gn/exporter/nodebpyExporter.ts
|
|
8114
|
-
function
|
|
8140
|
+
function Sf(e, t) {
|
|
8115
8141
|
let n = e.node_trees;
|
|
8116
8142
|
if (!Array.isArray(n) || t.size === 0) return e;
|
|
8117
8143
|
let r = new Map(n.map((e) => [e.id, e])), i = /* @__PURE__ */ new Set(), a = [];
|
|
@@ -8171,25 +8197,25 @@ function bf(e, t) {
|
|
|
8171
8197
|
}
|
|
8172
8198
|
//#endregion
|
|
8173
8199
|
//#region src/utils/encodeTreeClipperPayload.ts
|
|
8174
|
-
var
|
|
8175
|
-
function
|
|
8200
|
+
var Cf = "TreeClipper::";
|
|
8201
|
+
function wf(e) {
|
|
8176
8202
|
let t = "", n = 32768;
|
|
8177
8203
|
for (let r = 0; r < e.length; r += n) t += String.fromCharCode(...e.subarray(r, r + n));
|
|
8178
8204
|
return btoa(t);
|
|
8179
8205
|
}
|
|
8180
|
-
async function
|
|
8206
|
+
async function Tf(e) {
|
|
8181
8207
|
let t = new Blob([e]).stream().pipeThrough(new CompressionStream("gzip")), n = await new Response(t).arrayBuffer();
|
|
8182
8208
|
return new Uint8Array(n);
|
|
8183
8209
|
}
|
|
8184
|
-
async function
|
|
8185
|
-
return
|
|
8210
|
+
async function Ef(e) {
|
|
8211
|
+
return Cf + wf(await Tf(new TextEncoder().encode(e)));
|
|
8186
8212
|
}
|
|
8187
8213
|
//#endregion
|
|
8188
8214
|
//#region src/gn/ir/curvePath.ts
|
|
8189
|
-
function
|
|
8215
|
+
function Df(e, t) {
|
|
8190
8216
|
return Math.sqrt(e * e + t * t);
|
|
8191
8217
|
}
|
|
8192
|
-
function
|
|
8218
|
+
function Of(e) {
|
|
8193
8219
|
let t = e.length, n = e.map(({ location: [n, r], handleType: i }, a) => {
|
|
8194
8220
|
let o = a > 0 ? e[a - 1].location : null, s = a < t - 1 ? e[a + 1].location : null;
|
|
8195
8221
|
if (i === "VECTOR") return {
|
|
@@ -8199,11 +8225,11 @@ function Ef(e) {
|
|
|
8199
8225
|
let c = 0, l = 0, u = 0, d = 0;
|
|
8200
8226
|
if (o && s) {
|
|
8201
8227
|
let e = n - o[0], t = r - o[1], i = s[0] - n, a = s[1] - r;
|
|
8202
|
-
if (u =
|
|
8203
|
-
let n = e / u + i / d, r = t / u + a / d, o =
|
|
8228
|
+
if (u = Df(e, t), d = Df(i, a), u > 1e-8 && d > 1e-8) {
|
|
8229
|
+
let n = e / u + i / d, r = t / u + a / d, o = Df(n, r);
|
|
8204
8230
|
o > 1e-8 && (c = n / o, l = r / o);
|
|
8205
8231
|
} else d > 1e-8 ? (c = (s[0] - n) / d, l = (s[1] - r) / d) : u > 1e-8 && (c = (n - o[0]) / u, l = (r - o[1]) / u);
|
|
8206
|
-
} else s ? (d =
|
|
8232
|
+
} else s ? (d = Df(s[0] - n, s[1] - r), d > 1e-8 && (c = (s[0] - n) / d, l = (s[1] - r) / d)) : o && (u = Df(n - o[0], r - o[1]), u > 1e-8 && (c = (n - o[0]) / u, l = (r - o[1]) / u));
|
|
8207
8233
|
let f = [n - c * u / 3, r - l * u / 3], p = [n + c * d / 3, r + l * d / 3];
|
|
8208
8234
|
if (i === "AUTO_CLAMPED") {
|
|
8209
8235
|
if (o) {
|
|
@@ -8248,7 +8274,7 @@ function Ef(e) {
|
|
|
8248
8274
|
}
|
|
8249
8275
|
return n;
|
|
8250
8276
|
}
|
|
8251
|
-
function
|
|
8277
|
+
function kf(e, t, n, r, i, a, o) {
|
|
8252
8278
|
let s = r - t || 1, c = i - n || 1, l = (e) => (e - t) / s * a, u = (e) => (1 - (e - n) / c) * o;
|
|
8253
8279
|
if (e.length < 2) return {
|
|
8254
8280
|
strokePath: "",
|
|
@@ -8256,7 +8282,7 @@ function Df(e, t, n, r, i, a, o) {
|
|
|
8256
8282
|
zeroLinePath: "",
|
|
8257
8283
|
dotPositions: []
|
|
8258
8284
|
};
|
|
8259
|
-
let d =
|
|
8285
|
+
let d = Of(e), [f, p] = e[0].location, m = `M ${l(f).toFixed(2)} ${u(p).toFixed(2)}`;
|
|
8260
8286
|
for (let t = 0; t < e.length - 1; t++) {
|
|
8261
8287
|
let n = d[t].right, r = d[t + 1].left, [i, a] = e[t + 1].location;
|
|
8262
8288
|
m += ` C ${l(n[0]).toFixed(2)} ${u(n[1]).toFixed(2)},`, m += ` ${l(r[0]).toFixed(2)} ${u(r[1]).toFixed(2)},`, m += ` ${l(i).toFixed(2)} ${u(a).toFixed(2)}`;
|
|
@@ -8271,18 +8297,18 @@ function Df(e, t, n, r, i, a, o) {
|
|
|
8271
8297
|
}
|
|
8272
8298
|
//#endregion
|
|
8273
8299
|
//#region src/gn/components/groupNavContext.ts
|
|
8274
|
-
var
|
|
8275
|
-
function
|
|
8276
|
-
return o(
|
|
8300
|
+
var Af = t(null);
|
|
8301
|
+
function jf() {
|
|
8302
|
+
return o(Af);
|
|
8277
8303
|
}
|
|
8278
8304
|
//#endregion
|
|
8279
8305
|
//#region src/gn/components/GenericGNNode.tsx
|
|
8280
|
-
var
|
|
8306
|
+
var Mf = [
|
|
8281
8307
|
"X",
|
|
8282
8308
|
"Y",
|
|
8283
8309
|
"Z",
|
|
8284
8310
|
"W"
|
|
8285
|
-
],
|
|
8311
|
+
], Nf = {
|
|
8286
8312
|
FLOAT: "Float",
|
|
8287
8313
|
INT: "Integer",
|
|
8288
8314
|
VECTOR: "Vector",
|
|
@@ -8290,7 +8316,7 @@ var Af = [
|
|
|
8290
8316
|
STRING: "String",
|
|
8291
8317
|
BOOLEAN: "Boolean",
|
|
8292
8318
|
ROTATION: "Rotation"
|
|
8293
|
-
},
|
|
8319
|
+
}, Pf = {
|
|
8294
8320
|
EQUAL: "Equal",
|
|
8295
8321
|
NOT_EQUAL: "Not Equal",
|
|
8296
8322
|
LESS_THAN: "Less Than",
|
|
@@ -8336,10 +8362,10 @@ var Af = [
|
|
|
8336
8362
|
RADIANS: "To Radians",
|
|
8337
8363
|
DEGREES: "To Degrees"
|
|
8338
8364
|
};
|
|
8339
|
-
function
|
|
8340
|
-
return e === "data_type" ?
|
|
8365
|
+
function Ff(e, t) {
|
|
8366
|
+
return e === "data_type" ? Nf[t] ?? t : e === "operation" ? Pf[t] ?? t : e === "use_clamp" ? "Clamp" : t;
|
|
8341
8367
|
}
|
|
8342
|
-
function
|
|
8368
|
+
function If(e) {
|
|
8343
8369
|
switch (e) {
|
|
8344
8370
|
case "LINE": return "gn-socket--line";
|
|
8345
8371
|
case "DIAMOND": return "gn-socket--diamond";
|
|
@@ -8348,55 +8374,55 @@ function Pf(e) {
|
|
|
8348
8374
|
default: return "gn-socket--circle";
|
|
8349
8375
|
}
|
|
8350
8376
|
}
|
|
8351
|
-
function
|
|
8377
|
+
function Lf(e) {
|
|
8352
8378
|
return e === "ROTATION" ? "°" : e === "FLOAT" ? " m" : "";
|
|
8353
8379
|
}
|
|
8354
|
-
function
|
|
8380
|
+
function Rf(e) {
|
|
8355
8381
|
return parseFloat(e.toFixed(3)).toString();
|
|
8356
8382
|
}
|
|
8357
|
-
function
|
|
8358
|
-
return typeof e == "boolean" ? e ? "True" : "False" : typeof e == "string" ? e : `${
|
|
8383
|
+
function zf(e, t) {
|
|
8384
|
+
return typeof e == "boolean" ? e ? "True" : "False" : typeof e == "string" ? e : `${Rf(e)}${Lf(t)}`;
|
|
8359
8385
|
}
|
|
8360
|
-
function
|
|
8386
|
+
function Bf(e) {
|
|
8361
8387
|
return Math.round(Math.min(1, Math.max(0, e)) * 255);
|
|
8362
8388
|
}
|
|
8363
|
-
function
|
|
8389
|
+
function Vf(e) {
|
|
8364
8390
|
let [t, n, r, i = 1] = e.values;
|
|
8365
8391
|
return /* @__PURE__ */ g("div", {
|
|
8366
8392
|
className: "gn-node__color-swatch",
|
|
8367
|
-
style: { background: `rgba(${
|
|
8393
|
+
style: { background: `rgba(${Bf(t)},${Bf(n)},${Bf(r)},${i.toFixed(2)})` }
|
|
8368
8394
|
});
|
|
8369
8395
|
}
|
|
8370
|
-
function
|
|
8371
|
-
if (e.dataType === "RGBA") return /* @__PURE__ */ g(
|
|
8372
|
-
let t =
|
|
8396
|
+
function Hf(e) {
|
|
8397
|
+
if (e.dataType === "RGBA") return /* @__PURE__ */ g(Vf, { values: e.values });
|
|
8398
|
+
let t = Lf(e.dataType);
|
|
8373
8399
|
return /* @__PURE__ */ g("div", {
|
|
8374
8400
|
className: "gn-node__vec-block",
|
|
8375
8401
|
children: e.values.slice(0, 4).map((e, n) => /* @__PURE__ */ _("div", {
|
|
8376
8402
|
className: "gn-node__vec-row",
|
|
8377
8403
|
children: [/* @__PURE__ */ g("span", {
|
|
8378
8404
|
className: "gn-node__vec-label",
|
|
8379
|
-
children:
|
|
8405
|
+
children: Mf[n]
|
|
8380
8406
|
}), /* @__PURE__ */ _("span", {
|
|
8381
8407
|
className: "gn-node__vec-value",
|
|
8382
|
-
children: [
|
|
8408
|
+
children: [Rf(e), t]
|
|
8383
8409
|
})]
|
|
8384
8410
|
}, n))
|
|
8385
8411
|
});
|
|
8386
8412
|
}
|
|
8387
|
-
function
|
|
8413
|
+
function Uf({ properties: e }) {
|
|
8388
8414
|
let t = Object.entries(e);
|
|
8389
8415
|
return t.length === 0 ? null : /* @__PURE__ */ g("div", {
|
|
8390
8416
|
className: "gn-node__props",
|
|
8391
8417
|
children: t.map(([e, t]) => /* @__PURE__ */ g("div", {
|
|
8392
8418
|
className: "gn-node__prop-row",
|
|
8393
|
-
children:
|
|
8419
|
+
children: Ff(e, t)
|
|
8394
8420
|
}, e))
|
|
8395
8421
|
});
|
|
8396
8422
|
}
|
|
8397
|
-
var
|
|
8398
|
-
function
|
|
8399
|
-
let n = Math.max(10, t -
|
|
8423
|
+
var Wf = 120, Gf = 6;
|
|
8424
|
+
function Kf({ curve: e, width: t }) {
|
|
8425
|
+
let n = Math.max(10, t - Gf * 2), r = Wf, { strokePath: i, fillPath: a, zeroLinePath: o, dotPositions: s } = kf(e.points, e.clipMinX, e.clipMinY, e.clipMaxX, e.clipMaxY, n, r);
|
|
8400
8426
|
return /* @__PURE__ */ g("div", {
|
|
8401
8427
|
className: "gn-node__curve-wrap",
|
|
8402
8428
|
children: /* @__PURE__ */ _("svg", {
|
|
@@ -8427,7 +8453,7 @@ function Wf({ curve: e, width: t }) {
|
|
|
8427
8453
|
})
|
|
8428
8454
|
});
|
|
8429
8455
|
}
|
|
8430
|
-
function
|
|
8456
|
+
function qf(e) {
|
|
8431
8457
|
let { socket: t, position: n, type: r, align: i, suppressDefault: a } = e, o = t.name.trim().length === 0, s = !a && !t.hideValue && t.defaultValue?.kind === "scalar";
|
|
8432
8458
|
return /* @__PURE__ */ _("div", {
|
|
8433
8459
|
className: `gn-node__socket-row gn-node__socket-row--${i}`,
|
|
@@ -8436,7 +8462,7 @@ function Gf(e) {
|
|
|
8436
8462
|
id: t.id,
|
|
8437
8463
|
type: r,
|
|
8438
8464
|
position: n,
|
|
8439
|
-
className: `gn-socket ${
|
|
8465
|
+
className: `gn-socket ${If(t.displayShape)}`,
|
|
8440
8466
|
style: {
|
|
8441
8467
|
top: "50%",
|
|
8442
8468
|
background: t.color,
|
|
@@ -8449,15 +8475,15 @@ function Gf(e) {
|
|
|
8449
8475
|
}),
|
|
8450
8476
|
s && t.defaultValue?.kind === "scalar" ? /* @__PURE__ */ g("span", {
|
|
8451
8477
|
className: "gn-node__value",
|
|
8452
|
-
children:
|
|
8478
|
+
children: zf(t.defaultValue.value, t.dataType)
|
|
8453
8479
|
}) : null
|
|
8454
8480
|
]
|
|
8455
8481
|
});
|
|
8456
8482
|
}
|
|
8457
|
-
function
|
|
8483
|
+
function Jf(e, t) {
|
|
8458
8484
|
return !t && !e.hideValue && e.defaultValue?.kind === "vec";
|
|
8459
8485
|
}
|
|
8460
|
-
function
|
|
8486
|
+
function Yf() {
|
|
8461
8487
|
return /* @__PURE__ */ _("div", {
|
|
8462
8488
|
className: "gn-node__stack",
|
|
8463
8489
|
"aria-hidden": "true",
|
|
@@ -8468,8 +8494,8 @@ function qf() {
|
|
|
8468
8494
|
]
|
|
8469
8495
|
});
|
|
8470
8496
|
}
|
|
8471
|
-
function
|
|
8472
|
-
let t = e.data, n =
|
|
8497
|
+
function Xf(e) {
|
|
8498
|
+
let t = e.data, n = jf(), r = new Set(t.connectedInputIds ?? []), i = t.outputs.filter((e) => e.enabled), a = t.inputs.filter((e) => e.enabled), o = t.groupTreeId, s = o !== void 0 && t.groupTreeName !== void 0 && !!n;
|
|
8473
8499
|
return /* @__PURE__ */ _("div", {
|
|
8474
8500
|
className: `gn-node${s ? " gn-node--group nodrag" : ""}`,
|
|
8475
8501
|
onClick: s ? () => n.openGroup(o) : void 0,
|
|
@@ -8484,15 +8510,15 @@ function Jf(e) {
|
|
|
8484
8510
|
children: t.label
|
|
8485
8511
|
})
|
|
8486
8512
|
}),
|
|
8487
|
-
s && /* @__PURE__ */ g(
|
|
8488
|
-
t.properties && /* @__PURE__ */ g(
|
|
8489
|
-
t.floatCurve && /* @__PURE__ */ g(
|
|
8513
|
+
s && /* @__PURE__ */ g(Yf, {}),
|
|
8514
|
+
t.properties && /* @__PURE__ */ g(Uf, { properties: t.properties }),
|
|
8515
|
+
t.floatCurve && /* @__PURE__ */ g(Kf, {
|
|
8490
8516
|
curve: t.floatCurve,
|
|
8491
8517
|
width: t.width
|
|
8492
8518
|
}),
|
|
8493
8519
|
/* @__PURE__ */ _("div", {
|
|
8494
8520
|
className: "gn-node__body",
|
|
8495
|
-
children: [i.map((e) => /* @__PURE__ */ g(
|
|
8521
|
+
children: [i.map((e) => /* @__PURE__ */ g(qf, {
|
|
8496
8522
|
socket: e,
|
|
8497
8523
|
position: Y.Right,
|
|
8498
8524
|
type: "source",
|
|
@@ -8500,13 +8526,13 @@ function Jf(e) {
|
|
|
8500
8526
|
suppressDefault: !0
|
|
8501
8527
|
}, e.id)), a.map((e) => {
|
|
8502
8528
|
let t = r.has(e.id);
|
|
8503
|
-
return /* @__PURE__ */ _("div", { children: [/* @__PURE__ */ g(
|
|
8529
|
+
return /* @__PURE__ */ _("div", { children: [/* @__PURE__ */ g(qf, {
|
|
8504
8530
|
socket: e,
|
|
8505
8531
|
position: Y.Left,
|
|
8506
8532
|
type: "target",
|
|
8507
8533
|
align: "left",
|
|
8508
8534
|
suppressDefault: t
|
|
8509
|
-
}),
|
|
8535
|
+
}), Jf(e, t) ? /* @__PURE__ */ g(Hf, {
|
|
8510
8536
|
values: e.defaultValue.values,
|
|
8511
8537
|
dataType: e.dataType
|
|
8512
8538
|
}) : null] }, e.id);
|
|
@@ -8517,7 +8543,7 @@ function Jf(e) {
|
|
|
8517
8543
|
}
|
|
8518
8544
|
//#endregion
|
|
8519
8545
|
//#region src/gn/components/RerouteNode.tsx
|
|
8520
|
-
function
|
|
8546
|
+
function Zf(e) {
|
|
8521
8547
|
let t = e.data;
|
|
8522
8548
|
return /* @__PURE__ */ _("div", {
|
|
8523
8549
|
className: "gn-reroute",
|
|
@@ -8537,7 +8563,7 @@ function Yf(e) {
|
|
|
8537
8563
|
}
|
|
8538
8564
|
//#endregion
|
|
8539
8565
|
//#region src/gn/components/SimulationZoneFrame.tsx
|
|
8540
|
-
function
|
|
8566
|
+
function Qf(e) {
|
|
8541
8567
|
let t = e.data;
|
|
8542
8568
|
return /* @__PURE__ */ g("div", {
|
|
8543
8569
|
className: "gn-sim-zone",
|
|
@@ -8564,30 +8590,30 @@ function Xf(e) {
|
|
|
8564
8590
|
}
|
|
8565
8591
|
//#endregion
|
|
8566
8592
|
//#region src/gn/components/GeometryNodesFlow.tsx
|
|
8567
|
-
var
|
|
8568
|
-
gnNode:
|
|
8569
|
-
rerouteNode:
|
|
8570
|
-
simulationZone:
|
|
8571
|
-
},
|
|
8572
|
-
function
|
|
8593
|
+
var $f = {
|
|
8594
|
+
gnNode: Xf,
|
|
8595
|
+
rerouteNode: Zf,
|
|
8596
|
+
simulationZone: Qf
|
|
8597
|
+
}, ep = { padding: .08 }, tp = 120;
|
|
8598
|
+
function np(e) {
|
|
8573
8599
|
let t = e.style?.height;
|
|
8574
8600
|
if (typeof t == "number") return t;
|
|
8575
8601
|
let n = e.data, r = Math.max(n?.inputs?.length ?? 0, n?.outputs?.length ?? 0);
|
|
8576
8602
|
return Math.max(60, 32 + r * 18 + 16);
|
|
8577
8603
|
}
|
|
8578
|
-
function
|
|
8604
|
+
function rp(e) {
|
|
8579
8605
|
let t = Infinity, n = Infinity, r = -Infinity, i = -Infinity;
|
|
8580
8606
|
for (let a of e) {
|
|
8581
8607
|
if (a.parentId) continue;
|
|
8582
|
-
let e = a.style?.width ?? a.width ?? 200, o =
|
|
8608
|
+
let e = a.style?.width ?? a.width ?? 200, o = np(a);
|
|
8583
8609
|
t = Math.min(t, a.position.x), n = Math.min(n, a.position.y), r = Math.max(r, a.position.x + e), i = Math.max(i, a.position.y + o);
|
|
8584
8610
|
}
|
|
8585
|
-
return Number.isFinite(t) ? [[t -
|
|
8611
|
+
return Number.isFinite(t) ? [[t - tp, n - tp], [r + tp, i + tp]] : [[-Infinity, -Infinity], [Infinity, Infinity]];
|
|
8586
8612
|
}
|
|
8587
|
-
function
|
|
8588
|
-
let { nodes: t, edges: n, jsonText: r, breadcrumbs: i, onNavigate: o, onSelectionIds: s, onCopiedMagicString: l, zoomOnScroll: p = !0 } = e, { fitView: m } = ll(), h = d(null), v = d(!1), y = d([]), [b, x] = f(null), [S, C] = f(!1), [w, T] = f(!1), E = d([]), [D, O, k] = fd(t), [A, j, M] = pd(n), N = u(() =>
|
|
8613
|
+
function ip(e) {
|
|
8614
|
+
let { nodes: t, edges: n, jsonText: r, breadcrumbs: i, onNavigate: o, onSelectionIds: s, onCopiedMagicString: l, zoomOnScroll: p = !0 } = e, { fitView: m } = ll(), h = d(null), v = d(!1), y = d([]), [b, x] = f(null), [S, C] = f(!1), [w, T] = f(!1), E = d([]), [D, O, k] = fd(t), [A, j, M] = pd(n), N = u(() => rp(t), [t]);
|
|
8589
8615
|
c(() => {
|
|
8590
|
-
O(t), s?.([]), v.current = !1, m(
|
|
8616
|
+
O(t), s?.([]), v.current = !1, m(ep);
|
|
8591
8617
|
}, [
|
|
8592
8618
|
t,
|
|
8593
8619
|
O,
|
|
@@ -8599,7 +8625,7 @@ function np(e) {
|
|
|
8599
8625
|
let e = h.current;
|
|
8600
8626
|
if (!e) return;
|
|
8601
8627
|
let t = new ResizeObserver(() => {
|
|
8602
|
-
v.current || m(
|
|
8628
|
+
v.current || m(ep);
|
|
8603
8629
|
});
|
|
8604
8630
|
return t.observe(e), () => t.disconnect();
|
|
8605
8631
|
}, [m]);
|
|
@@ -8616,7 +8642,7 @@ function np(e) {
|
|
|
8616
8642
|
}, []), L = a(async () => {
|
|
8617
8643
|
x(null);
|
|
8618
8644
|
try {
|
|
8619
|
-
let e = JSON.parse(r), t = new Set(y.current.map(Number).filter(Number.isFinite)), n = t.size > 0 ?
|
|
8645
|
+
let e = JSON.parse(r), t = new Set(y.current.map(Number).filter(Number.isFinite)), n = t.size > 0 ? Sf(e, t) : e, i = await Ef(JSON.stringify(n));
|
|
8620
8646
|
if (await navigator.clipboard.writeText(i), l) {
|
|
8621
8647
|
l();
|
|
8622
8648
|
return;
|
|
@@ -8650,9 +8676,9 @@ function np(e) {
|
|
|
8650
8676
|
onEdgesChange: M,
|
|
8651
8677
|
onSelectionChange: F,
|
|
8652
8678
|
onMoveStart: P,
|
|
8653
|
-
nodeTypes:
|
|
8679
|
+
nodeTypes: $f,
|
|
8654
8680
|
fitView: !0,
|
|
8655
|
-
fitViewOptions:
|
|
8681
|
+
fitViewOptions: ep,
|
|
8656
8682
|
minZoom: .2,
|
|
8657
8683
|
translateExtent: N,
|
|
8658
8684
|
nodesDraggable: !1,
|
|
@@ -8681,7 +8707,7 @@ function np(e) {
|
|
|
8681
8707
|
className: "gn-top-left",
|
|
8682
8708
|
children: [/* @__PURE__ */ _("span", {
|
|
8683
8709
|
className: "gn-version-badge",
|
|
8684
|
-
children: ["node-web-render v", "0.3.
|
|
8710
|
+
children: ["node-web-render v", "0.3.12"]
|
|
8685
8711
|
}), i.length > 1 ? /* @__PURE__ */ g("nav", {
|
|
8686
8712
|
className: "gn-breadcrumbs",
|
|
8687
8713
|
"aria-label": "Node group path",
|
|
@@ -8734,19 +8760,19 @@ function np(e) {
|
|
|
8734
8760
|
]
|
|
8735
8761
|
});
|
|
8736
8762
|
}
|
|
8737
|
-
function
|
|
8763
|
+
function ap(e) {
|
|
8738
8764
|
let { jsonText: t, showHeader: n = !0, onSelectionChange: r, onCopiedMagicString: i, zoomOnScroll: o = !0 } = e, [s, l] = f({
|
|
8739
8765
|
json: t,
|
|
8740
8766
|
ids: []
|
|
8741
8767
|
}), d = u(() => {
|
|
8742
8768
|
if (!t.trim()) return null;
|
|
8743
8769
|
try {
|
|
8744
|
-
let { rootId: e, trees: n } =
|
|
8770
|
+
let { rootId: e, trees: n } = mf(JSON.parse(t)), r = {};
|
|
8745
8771
|
for (let e of Object.values(n)) {
|
|
8746
|
-
let t =
|
|
8772
|
+
let t = _f(e);
|
|
8747
8773
|
r[t.id] = {
|
|
8748
8774
|
graph: t,
|
|
8749
|
-
flow:
|
|
8775
|
+
flow: xf(t)
|
|
8750
8776
|
};
|
|
8751
8777
|
}
|
|
8752
8778
|
return {
|
|
@@ -8810,9 +8836,9 @@ function rp(e) {
|
|
|
8810
8836
|
className: "flow-error",
|
|
8811
8837
|
role: "alert",
|
|
8812
8838
|
children: [/* @__PURE__ */ g("strong", { children: "Parse error" }), /* @__PURE__ */ g("span", { children: d.error })]
|
|
8813
|
-
}) : m ? /* @__PURE__ */ g(
|
|
8839
|
+
}) : m ? /* @__PURE__ */ g(Af.Provider, {
|
|
8814
8840
|
value: v,
|
|
8815
|
-
children: /* @__PURE__ */ g(sd, { children: /* @__PURE__ */ g(
|
|
8841
|
+
children: /* @__PURE__ */ g(sd, { children: /* @__PURE__ */ g(ip, {
|
|
8816
8842
|
nodes: m.flow.nodes,
|
|
8817
8843
|
edges: m.flow.edges,
|
|
8818
8844
|
jsonText: t,
|
|
@@ -8834,7 +8860,7 @@ function rp(e) {
|
|
|
8834
8860
|
}
|
|
8835
8861
|
//#endregion
|
|
8836
8862
|
//#region src/components/TreeClipperLogo.tsx
|
|
8837
|
-
function
|
|
8863
|
+
function op({ className: e }) {
|
|
8838
8864
|
return /* @__PURE__ */ _("svg", {
|
|
8839
8865
|
viewBox: "0 0 256 256",
|
|
8840
8866
|
className: e,
|
|
@@ -8895,7 +8921,7 @@ function ip({ className: e }) {
|
|
|
8895
8921
|
}
|
|
8896
8922
|
//#endregion
|
|
8897
8923
|
//#region src/embed.tsx
|
|
8898
|
-
function
|
|
8924
|
+
function sp(e) {
|
|
8899
8925
|
let { payload: t } = e, [n, r] = f(""), [i, a] = f(null), [o, s] = f(!0), [l, u] = f(!1), [p, m] = f(!1), v = d(!1), y = d(!1), b = d(null), S = d(null), C = d(null), w = () => {
|
|
8900
8926
|
!y.current || v.current || (m(!0), C.current && clearTimeout(C.current), C.current = setTimeout(() => {
|
|
8901
8927
|
u(!1), m(!1);
|
|
@@ -8934,10 +8960,7 @@ function ap(e) {
|
|
|
8934
8960
|
className: "gnwr-loading",
|
|
8935
8961
|
role: "status",
|
|
8936
8962
|
"aria-live": "polite",
|
|
8937
|
-
children: [/* @__PURE__ */ g("span", {
|
|
8938
|
-
className: "gnwr-loading__spinner",
|
|
8939
|
-
"aria-hidden": "true"
|
|
8940
|
-
}), /* @__PURE__ */ g("span", {
|
|
8963
|
+
children: [/* @__PURE__ */ g(op, { className: "gnwr-loading__logo" }), /* @__PURE__ */ g("span", {
|
|
8941
8964
|
className: "gnwr-loading__label",
|
|
8942
8965
|
children: "Loading graph…"
|
|
8943
8966
|
})]
|
|
@@ -8946,7 +8969,7 @@ function ap(e) {
|
|
|
8946
8969
|
role: "alert",
|
|
8947
8970
|
children: [/* @__PURE__ */ g("strong", { children: "Decode error" }), /* @__PURE__ */ g("span", { children: i })]
|
|
8948
8971
|
}) : /* @__PURE__ */ _(h, { children: [
|
|
8949
|
-
/* @__PURE__ */ g(
|
|
8972
|
+
/* @__PURE__ */ g(ap, {
|
|
8950
8973
|
jsonText: n,
|
|
8951
8974
|
showHeader: !1,
|
|
8952
8975
|
zoomOnScroll: !1,
|
|
@@ -8971,7 +8994,7 @@ function ap(e) {
|
|
|
8971
8994
|
strokeLinecap: "round",
|
|
8972
8995
|
strokeLinejoin: "round"
|
|
8973
8996
|
})
|
|
8974
|
-
}), /* @__PURE__ */ g("span", { children: "Copied!" })] }) : /* @__PURE__ */ _(h, { children: [/* @__PURE__ */ g(
|
|
8997
|
+
}), /* @__PURE__ */ g("span", { children: "Copied!" })] }) : /* @__PURE__ */ _(h, { children: [/* @__PURE__ */ g(op, { className: "gnwr-copy-button__logo" }), /* @__PURE__ */ g("span", { children: "Copy TreeClipper Magic String" })] })
|
|
8975
8998
|
}),
|
|
8976
8999
|
(l || p) && /* @__PURE__ */ _("div", {
|
|
8977
9000
|
className: `gnwr-copy-toast${p ? " gnwr-leaving" : ""}`,
|
|
@@ -8996,22 +9019,22 @@ function ap(e) {
|
|
|
8996
9019
|
})
|
|
8997
9020
|
});
|
|
8998
9021
|
}
|
|
8999
|
-
var
|
|
9000
|
-
function
|
|
9001
|
-
|
|
9022
|
+
var cp = /* @__PURE__ */ new Map(), lp = null;
|
|
9023
|
+
function up(e, t) {
|
|
9024
|
+
cp.get(e)?.unmount();
|
|
9002
9025
|
let r = m(e);
|
|
9003
|
-
|
|
9026
|
+
cp.set(e, r), lp = e;
|
|
9004
9027
|
let i = t.onClose;
|
|
9005
|
-
return r.render(n(
|
|
9028
|
+
return r.render(n(sp, {
|
|
9006
9029
|
...t,
|
|
9007
9030
|
onClose: i ? () => {
|
|
9008
|
-
|
|
9031
|
+
dp(e), i();
|
|
9009
9032
|
} : void 0
|
|
9010
|
-
})), () =>
|
|
9033
|
+
})), () => dp(e);
|
|
9011
9034
|
}
|
|
9012
|
-
function
|
|
9013
|
-
let t = e ??
|
|
9014
|
-
t && (
|
|
9035
|
+
function dp(e) {
|
|
9036
|
+
let t = e ?? lp;
|
|
9037
|
+
t && (cp.get(t)?.unmount(), cp.delete(t), t === lp && (lp = null));
|
|
9015
9038
|
}
|
|
9016
9039
|
//#endregion
|
|
9017
|
-
export {
|
|
9040
|
+
export { sp as GraphView, up as mountGraphView, dp as unmountGraphView };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function nodeHeaderColor(blIdname: string): string;
|
|
1
|
+
export declare function nodeHeaderColor(blIdname: string, dataType?: string): string;
|
package/package.json
CHANGED