@flowgram.ai/free-layout-core 0.2.11 → 0.2.13

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/esm/index.js CHANGED
@@ -3045,6 +3045,9 @@ function useNodeRender(nodeFromProps) {
3045
3045
  const dragService = useService(WorkflowDragService);
3046
3046
  const selectionService = useService(WorkflowSelectService);
3047
3047
  const isDragging = useRef(false);
3048
+ const [formValueVersion, updateFormValueVersion] = useState(0);
3049
+ const formValueDependRef = useRef(false);
3050
+ formValueDependRef.current = false;
3048
3051
  const nodeRef = useRef(null);
3049
3052
  const [linkingNodeId, setLinkingNodeId] = useState("");
3050
3053
  useEffect2(() => {
@@ -3120,36 +3123,86 @@ function useNodeRender(nodeFromProps) {
3120
3123
  const toggleExpand = useCallback(() => {
3121
3124
  renderData.toggleExpand();
3122
3125
  }, [renderData]);
3123
- return {
3124
- node,
3125
- selected: selectionService.isSelected(node.id),
3126
- activated: selectionService.isActivated(node.id),
3127
- expanded: renderData.expanded,
3128
- startDrag,
3129
- ports: portsData.allPorts,
3130
- deleteNode,
3131
- selectNode,
3132
- readonly,
3133
- linkingNodeId,
3134
- nodeRef,
3135
- onFocus,
3136
- onBlur,
3137
- getExtInfo,
3138
- updateExtInfo,
3139
- toggleExpand,
3140
- get form() {
3141
- if (!form) return void 0;
3142
- return {
3143
- ...form,
3144
- get values() {
3126
+ const selected = selectionService.isSelected(node.id);
3127
+ const activated = selectionService.isActivated(node.id);
3128
+ const expanded = renderData.expanded;
3129
+ useEffect2(() => {
3130
+ const toDispose = form?.onFormValuesChange(() => {
3131
+ if (formValueDependRef.current) {
3132
+ updateFormValueVersion((v) => v + 1);
3133
+ }
3134
+ });
3135
+ return () => toDispose?.dispose();
3136
+ }, [form]);
3137
+ return useMemo(
3138
+ () => ({
3139
+ id: node.id,
3140
+ type: node.flowNodeType,
3141
+ get data() {
3142
+ if (form) {
3143
+ formValueDependRef.current = true;
3145
3144
  return form.values;
3146
- },
3147
- get state() {
3148
- return formState;
3149
3145
  }
3150
- };
3151
- }
3152
- };
3146
+ return getExtInfo();
3147
+ },
3148
+ updateData(values) {
3149
+ if (form) {
3150
+ form.updateFormValues(values);
3151
+ } else {
3152
+ updateExtInfo(values);
3153
+ }
3154
+ },
3155
+ node,
3156
+ selected,
3157
+ activated,
3158
+ expanded,
3159
+ startDrag,
3160
+ get ports() {
3161
+ return portsData.allPorts;
3162
+ },
3163
+ deleteNode,
3164
+ selectNode,
3165
+ readonly,
3166
+ linkingNodeId,
3167
+ nodeRef,
3168
+ onFocus,
3169
+ onBlur,
3170
+ getExtInfo,
3171
+ updateExtInfo,
3172
+ toggleExpand,
3173
+ get form() {
3174
+ if (!form) return void 0;
3175
+ return {
3176
+ ...form,
3177
+ get values() {
3178
+ formValueDependRef.current = true;
3179
+ return form.values;
3180
+ },
3181
+ get state() {
3182
+ return formState;
3183
+ }
3184
+ };
3185
+ }
3186
+ }),
3187
+ [
3188
+ node,
3189
+ selected,
3190
+ activated,
3191
+ expanded,
3192
+ startDrag,
3193
+ deleteNode,
3194
+ selectNode,
3195
+ readonly,
3196
+ linkingNodeId,
3197
+ nodeRef,
3198
+ onFocus,
3199
+ onBlur,
3200
+ getExtInfo,
3201
+ updateExtInfo,
3202
+ toggleExpand,
3203
+ formValueVersion
3204
+ ]
3205
+ );
3153
3206
  }
3154
3207
 
3155
3208
  // src/hooks/use-current-dom-node.ts