diff --git a/lib/src/api/models/trigger.dart b/lib/src/api/models/trigger.dart index 9b61836..e744a8e 100644 --- a/lib/src/api/models/trigger.dart +++ b/lib/src/api/models/trigger.dart @@ -43,7 +43,10 @@ enum TriggerType { pointerDown, /// Triggered when a pointer up event is received on the target. - pointerUp; + pointerUp, + + /// Triggered when the canvas is loaded. + load; /// Displayable string representation of the trigger type. String get prettify { @@ -70,6 +73,8 @@ enum TriggerType { return 'Editing Complete'; case TriggerType.submitted: return 'Submitted'; + case TriggerType.load: + return 'Load'; } } } diff --git a/lib/src/api/models/trigger.g.dart b/lib/src/api/models/trigger.g.dart index f1d2716..6571bd9 100644 --- a/lib/src/api/models/trigger.g.dart +++ b/lib/src/api/models/trigger.g.dart @@ -27,4 +27,5 @@ const _$TriggerTypeEnumMap = { TriggerType.cursorExit: 'cursorExit', TriggerType.pointerDown: 'pointerDown', TriggerType.pointerUp: 'pointerUp', + TriggerType.load: 'load', }; diff --git a/lib/src/api/models/variables_model.dart b/lib/src/api/models/variables_model.dart index 39ebfb8..ce0db86 100644 --- a/lib/src/api/models/variables_model.dart +++ b/lib/src/api/models/variables_model.dart @@ -106,7 +106,7 @@ class VariableData VariableData({ required this.id, required this.name, - String value = '', + Object? value = '', this.type = VariableType.text, }) : value = sanitizeValueForVariableType(value, type).toString(); @@ -356,3 +356,34 @@ class PredefinedVariableData extends VariableData { super.type = VariableType.text, }) : super(id: generateId()); } + +/// A variable class that represents variables that are created at runtime. +class RuntimeVariableData extends VariableData { + /// Creates a new [PredefinedVariableData]. + RuntimeVariableData({ + String? id, + required super.name, + super.value = '', + super.type = VariableType.text, + }) : super(id: id ?? generateId()); + + @override + RuntimeVariableData copyWith({ + String? id, + String? name, + Object? value, + VariableType? type, + bool? isUsed, + Set? nodes, + }) { + final String? sanitizedValue = value == null + ? null + : sanitizeValueForVariableType(value, type ?? this.type); + return RuntimeVariableData( + id: id ?? this.id, + name: name ?? this.name, + value: sanitizedValue ?? this.value, + type: type ?? this.type, + ); + } +} diff --git a/lib/src/api/nodes/canvas_node.dart b/lib/src/api/nodes/canvas_node.dart index 7f8fab7..84b19a8 100644 --- a/lib/src/api/nodes/canvas_node.dart +++ b/lib/src/api/nodes/canvas_node.dart @@ -41,7 +41,7 @@ class CanvasNode extends ParentNode bool get isAScaffold => properties.isAScaffold; @override - List get triggerTypes => [TriggerType.click]; + List get triggerTypes => [TriggerType.load]; @override List get reactiveChildren =>