@surveystudio/node-registery 1.0.2 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Typed survey question node registry with separate entrypoints for pure logic, runner UI, and builder UI.
4
4
 
5
- This package is currently in early migration. It exports the first migrated node, `plainText`, while the remaining SurveyChamp question nodes are being moved into the registry.
5
+ This package is currently in early migration. It exports migrated node logic for server runtimes and selected builder/runner UI adapters while the remaining SurveyChamp question nodes are being moved into the registry.
6
6
 
7
7
  ## Entrypoints
8
8
 
@@ -32,6 +32,18 @@ Runner APIs should persist and queue normalized values. Export/projection APIs s
32
32
 
33
33
  Migrated nodes:
34
34
 
35
+ - `textInput`
36
+ - `numberInput`
37
+ - `emailInput`
38
+ - `dateInput`
39
+ - `multiInput`
40
+ - `zipCodeInput`
41
+ - `singleChoice` logic
42
+ - `multipleChoice` logic
43
+ - `dropdown` logic
44
+ - `ranking` logic
45
+ - `rating` logic
46
+ - `slider` logic
35
47
  - `plainText`
36
48
 
37
49
  The registry contract test intentionally fails until all planned question nodes are migrated.
@@ -1,7 +1,7 @@
1
- export { B as BuilderRegistry, c as CompleteBuilderRegistry, e as NodeBuilder, f as NodeBuilderProps, g as NodeCanvasProps, Q as QuestionNodeDefinition, h as defineBuilderRegistry, d as defineQuestionNode } from './types-BpvjaHAP.mjs';
2
- import { J as JsonValue } from './coreTypes-D-1hYIe5.mjs';
3
- export { f as NodeManifest, P as PropertyField, g as PropertyFieldType, S as SelectOption } from './coreTypes-D-1hYIe5.mjs';
4
- import { P as PlainTextData } from './types-D78Zx0gX.mjs';
1
+ export { B as BuilderRegistry, C as CompleteBuilderRegistry, N as NodeBuilder, a as NodeBuilderProps, b as NodeCanvasProps, Q as QuestionNodeDefinition, d as defineBuilderRegistry, c as defineQuestionNode } from './types-4zXsOMLb.mjs';
2
+ import { J as JsonValue } from './coreTypes-CyFAym5A.mjs';
3
+ export { N as NodeManifest, P as PropertyField, a as PropertyFieldType, S as SelectOption } from './coreTypes-CyFAym5A.mjs';
4
+ import { P as PlainTextData, B as BaseTextData, M as MultiInputData, N as NumberInputData, T as TextInputData, Z as ZipCodeInputData } from './types-BMnck1ag.mjs';
5
5
  import 'react';
6
6
 
7
7
  declare const plainTextBuilder: {
@@ -48,11 +48,275 @@ declare const plainTextManifest: {
48
48
  })[];
49
49
  };
50
50
 
51
+ declare const textInputBuilder: {
52
+ type: "textInput";
53
+ label: string;
54
+ };
55
+ declare const emailInputBuilder: {
56
+ type: "emailInput";
57
+ label: string;
58
+ };
59
+ declare const dateInputBuilder: {
60
+ type: "dateInput";
61
+ label: string;
62
+ };
63
+ declare const numberInputBuilder: {
64
+ type: "numberInput";
65
+ label: string;
66
+ };
67
+ declare const zipCodeInputBuilder: {
68
+ type: "zipCodeInput";
69
+ label: string;
70
+ };
71
+ declare const multiInputBuilder: {
72
+ type: "multiInput";
73
+ label: string;
74
+ };
75
+
76
+ declare const textInputManifest: {
77
+ type: "textInput";
78
+ label: string;
79
+ description: string;
80
+ category: "input";
81
+ dataType: "text";
82
+ defaultData: TextInputData;
83
+ properties: ({
84
+ name: string;
85
+ label: string;
86
+ type: "text";
87
+ defaultValue?: never;
88
+ } | {
89
+ name: string;
90
+ label: string;
91
+ type: "textarea";
92
+ defaultValue?: never;
93
+ } | {
94
+ name: string;
95
+ label: string;
96
+ type: "condition";
97
+ defaultValue: {
98
+ id: string;
99
+ type: "group";
100
+ logicType: "AND";
101
+ children: never[];
102
+ };
103
+ } | {
104
+ name: string;
105
+ label: string;
106
+ type: "number";
107
+ helperText: string;
108
+ defaultValue: number;
109
+ } | {
110
+ name: string;
111
+ label: string;
112
+ type: "text";
113
+ placeholder: string;
114
+ defaultValue: string;
115
+ } | {
116
+ name: string;
117
+ label: string;
118
+ type: "switch";
119
+ defaultValue: false;
120
+ placeholder?: never;
121
+ })[];
122
+ };
123
+ declare const emailInputManifest: {
124
+ type: "emailInput";
125
+ label: string;
126
+ description: string;
127
+ category: "input";
128
+ dataType: "text";
129
+ defaultData: BaseTextData;
130
+ properties: ({
131
+ name: string;
132
+ label: string;
133
+ type: "text";
134
+ defaultValue?: never;
135
+ } | {
136
+ name: string;
137
+ label: string;
138
+ type: "textarea";
139
+ defaultValue?: never;
140
+ } | {
141
+ name: string;
142
+ label: string;
143
+ type: "condition";
144
+ defaultValue: {
145
+ id: string;
146
+ type: "group";
147
+ logicType: "AND";
148
+ children: never[];
149
+ };
150
+ })[];
151
+ };
152
+ declare const dateInputManifest: {
153
+ type: "dateInput";
154
+ label: string;
155
+ description: string;
156
+ category: "input";
157
+ dataType: "text";
158
+ defaultData: BaseTextData;
159
+ properties: ({
160
+ name: string;
161
+ label: string;
162
+ type: "text";
163
+ defaultValue?: never;
164
+ } | {
165
+ name: string;
166
+ label: string;
167
+ type: "textarea";
168
+ defaultValue?: never;
169
+ } | {
170
+ name: string;
171
+ label: string;
172
+ type: "condition";
173
+ defaultValue: {
174
+ id: string;
175
+ type: "group";
176
+ logicType: "AND";
177
+ children: never[];
178
+ };
179
+ })[];
180
+ };
181
+ declare const numberInputManifest: {
182
+ type: "numberInput";
183
+ label: string;
184
+ description: string;
185
+ category: "input";
186
+ dataType: "number";
187
+ defaultData: NumberInputData;
188
+ properties: ({
189
+ name: string;
190
+ label: string;
191
+ type: "text";
192
+ defaultValue?: never;
193
+ } | {
194
+ name: string;
195
+ label: string;
196
+ type: "textarea";
197
+ defaultValue?: never;
198
+ } | {
199
+ name: string;
200
+ label: string;
201
+ type: "condition";
202
+ defaultValue: {
203
+ id: string;
204
+ type: "group";
205
+ logicType: "AND";
206
+ children: never[];
207
+ };
208
+ } | {
209
+ name: string;
210
+ label: string;
211
+ type: "number";
212
+ })[];
213
+ };
214
+ declare const zipCodeInputManifest: {
215
+ type: "zipCodeInput";
216
+ label: string;
217
+ description: string;
218
+ category: "input";
219
+ dataType: "text";
220
+ defaultData: ZipCodeInputData;
221
+ properties: ({
222
+ name: string;
223
+ label: string;
224
+ type: "text";
225
+ defaultValue?: never;
226
+ } | {
227
+ name: string;
228
+ label: string;
229
+ type: "textarea";
230
+ defaultValue?: never;
231
+ } | {
232
+ name: string;
233
+ label: string;
234
+ type: "condition";
235
+ defaultValue: {
236
+ id: string;
237
+ type: "group";
238
+ logicType: "AND";
239
+ children: never[];
240
+ };
241
+ } | {
242
+ name: string;
243
+ label: string;
244
+ type: "fileTextarea";
245
+ placeholder: string;
246
+ helperText: string;
247
+ })[];
248
+ };
249
+ declare const multiInputManifest: {
250
+ type: "multiInput";
251
+ label: string;
252
+ description: string;
253
+ category: "input";
254
+ dataType: "object";
255
+ defaultData: MultiInputData;
256
+ properties: ({
257
+ name: string;
258
+ label: string;
259
+ type: "text";
260
+ defaultValue?: never;
261
+ } | {
262
+ name: string;
263
+ label: string;
264
+ type: "textarea";
265
+ defaultValue?: never;
266
+ } | {
267
+ name: string;
268
+ label: string;
269
+ type: "condition";
270
+ defaultValue: {
271
+ id: string;
272
+ type: "group";
273
+ logicType: "AND";
274
+ children: never[];
275
+ };
276
+ } | {
277
+ name: string;
278
+ label: string;
279
+ type: "number";
280
+ helperText: string;
281
+ defaultValue: number;
282
+ } | {
283
+ name: string;
284
+ label: string;
285
+ type: "options";
286
+ defaultValue: never[];
287
+ helperText: string;
288
+ })[];
289
+ };
290
+
51
291
  declare const builderRegistry: {
292
+ readonly textInput: {
293
+ type: "textInput";
294
+ label: string;
295
+ };
296
+ readonly numberInput: {
297
+ type: "numberInput";
298
+ label: string;
299
+ };
300
+ readonly emailInput: {
301
+ type: "emailInput";
302
+ label: string;
303
+ };
304
+ readonly dateInput: {
305
+ type: "dateInput";
306
+ label: string;
307
+ };
308
+ readonly multiInput: {
309
+ type: "multiInput";
310
+ label: string;
311
+ };
312
+ readonly zipCodeInput: {
313
+ type: "zipCodeInput";
314
+ label: string;
315
+ };
52
316
  readonly plainText: {
53
317
  type: "plainText";
54
318
  label: string;
55
319
  };
56
320
  };
57
321
 
58
- export { builderRegistry, plainTextBuilder, plainTextManifest };
322
+ export { builderRegistry, dateInputBuilder, dateInputManifest, emailInputBuilder, emailInputManifest, multiInputBuilder, multiInputManifest, numberInputBuilder, numberInputManifest, plainTextBuilder, plainTextManifest, textInputBuilder, textInputManifest, zipCodeInputBuilder, zipCodeInputManifest };
package/dist/builder.mjs CHANGED
@@ -12,6 +12,14 @@ var plainTextBuilder = {
12
12
  label: "Info / Text"
13
13
  };
14
14
 
15
+ // src/nodes/textLike/builder.ts
16
+ var textInputBuilder = { type: "textInput", label: "Text Answer" };
17
+ var emailInputBuilder = { type: "emailInput", label: "Email" };
18
+ var dateInputBuilder = { type: "dateInput", label: "Date Picker" };
19
+ var numberInputBuilder = { type: "numberInput", label: "Number" };
20
+ var zipCodeInputBuilder = { type: "zipCodeInput", label: "Accepted Zip Codes" };
21
+ var multiInputBuilder = { type: "multiInput", label: "Multi-Input" };
22
+
15
23
  // src/nodes/plainText/manifest.ts
16
24
  var plainTextDefaultData = {
17
25
  label: "Info / Text",
@@ -50,14 +58,157 @@ var plainTextManifest = {
50
58
  ]
51
59
  };
52
60
 
61
+ // src/nodes/textLike/manifest.ts
62
+ var defaultCondition = {
63
+ id: "root",
64
+ type: "group",
65
+ logicType: "AND",
66
+ children: []
67
+ };
68
+ var baseTextData = {
69
+ label: "",
70
+ description: "",
71
+ condition: defaultCondition,
72
+ minChars: 0,
73
+ maxChars: 0,
74
+ minWords: 0,
75
+ maxWords: 0
76
+ };
77
+ var commonProperties = [
78
+ { name: "label", label: "Field Label", type: "text" },
79
+ { name: "description", label: "Description", type: "textarea" },
80
+ {
81
+ name: "condition",
82
+ label: "Logic Rule",
83
+ type: "condition",
84
+ defaultValue: defaultCondition
85
+ }
86
+ ];
87
+ var textLimitProperties = [
88
+ { name: "minChars", label: "Min Characters", type: "number", helperText: "Requires at least this many characters.", defaultValue: 0 },
89
+ { name: "maxChars", label: "Max Characters", type: "number", helperText: "Limits total characters. 0 or empty for no limit.", defaultValue: 0 },
90
+ { name: "minWords", label: "Min Words", type: "number", helperText: "Requires at least this many words.", defaultValue: 0 },
91
+ { name: "maxWords", label: "Max Words", type: "number", helperText: "Limits total words. 0 or empty for no limit.", defaultValue: 0 }
92
+ ];
93
+ var createBaseData = (label) => ({
94
+ ...baseTextData,
95
+ label
96
+ });
97
+ var textInputDefaultData = {
98
+ ...createBaseData("Text Answer"),
99
+ placeholder: "",
100
+ longAnswer: false
101
+ };
102
+ var emailInputDefaultData = createBaseData("Email");
103
+ var dateInputDefaultData = createBaseData("Date Picker");
104
+ var numberInputDefaultData = {
105
+ ...createBaseData("Number")
106
+ };
107
+ var zipCodeInputDefaultData = {
108
+ ...createBaseData("Accepted Zip Codes"),
109
+ allowedZips: ""
110
+ };
111
+ var multiInputDefaultData = {
112
+ ...createBaseData("Multi-Input"),
113
+ fields: []
114
+ };
115
+ var textInputManifest = {
116
+ type: "textInput",
117
+ label: "Text Answer",
118
+ description: "Capture text responses",
119
+ category: "input",
120
+ dataType: "text",
121
+ defaultData: textInputDefaultData,
122
+ properties: [
123
+ ...commonProperties,
124
+ { name: "placeholder", label: "Placeholder", type: "text", placeholder: "e.g., Type here...", defaultValue: "" },
125
+ { name: "longAnswer", label: "Long Answer (Multi-line)", type: "switch", defaultValue: false },
126
+ ...textLimitProperties
127
+ ]
128
+ };
129
+ var emailInputManifest = {
130
+ type: "emailInput",
131
+ label: "Email",
132
+ description: "Validate email addresses",
133
+ category: "input",
134
+ dataType: "text",
135
+ defaultData: emailInputDefaultData,
136
+ properties: commonProperties
137
+ };
138
+ var dateInputManifest = {
139
+ type: "dateInput",
140
+ label: "Date Picker",
141
+ description: "Select dates from a calendar",
142
+ category: "input",
143
+ dataType: "text",
144
+ defaultData: dateInputDefaultData,
145
+ properties: commonProperties
146
+ };
147
+ var numberInputManifest = {
148
+ type: "numberInput",
149
+ label: "Number",
150
+ description: "Input for numerical values",
151
+ category: "input",
152
+ dataType: "number",
153
+ defaultData: numberInputDefaultData,
154
+ properties: [
155
+ ...commonProperties,
156
+ { name: "min", label: "Minimum Value", type: "number" },
157
+ { name: "max", label: "Maximum Value", type: "number" }
158
+ ]
159
+ };
160
+ var zipCodeInputManifest = {
161
+ type: "zipCodeInput",
162
+ label: "Accepted Zip Codes",
163
+ description: "Validate against a list of zip codes",
164
+ category: "input",
165
+ dataType: "text",
166
+ defaultData: zipCodeInputDefaultData,
167
+ properties: [
168
+ ...commonProperties,
169
+ { name: "allowedZips", label: "Allowed Zip Codes", type: "fileTextarea", placeholder: "10001, 10002, 90210... (Leave empty to allow all)", helperText: "Validation: Only users entering these zip codes can proceed. Others will be blocked." }
170
+ ]
171
+ };
172
+ var multiInputManifest = {
173
+ type: "multiInput",
174
+ label: "Multi-Input",
175
+ description: "Multiple fields in one screen",
176
+ category: "input",
177
+ dataType: "object",
178
+ defaultData: multiInputDefaultData,
179
+ properties: [
180
+ ...commonProperties,
181
+ { name: "fields", label: "Input Fields", type: "options", defaultValue: [], helperText: "Value column represents input type (text, number, email)" },
182
+ ...textLimitProperties
183
+ ]
184
+ };
185
+
53
186
  // src/builder/index.ts
54
187
  var builderRegistry = defineBuilderRegistry({
188
+ textInput: textInputBuilder,
189
+ numberInput: numberInputBuilder,
190
+ emailInput: emailInputBuilder,
191
+ dateInput: dateInputBuilder,
192
+ multiInput: multiInputBuilder,
193
+ zipCodeInput: zipCodeInputBuilder,
55
194
  plainText: plainTextBuilder
56
195
  });
57
196
  export {
58
197
  builderRegistry,
198
+ dateInputBuilder,
199
+ dateInputManifest,
59
200
  defineBuilderRegistry,
60
201
  defineQuestionNode,
202
+ emailInputBuilder,
203
+ emailInputManifest,
204
+ multiInputBuilder,
205
+ multiInputManifest,
206
+ numberInputBuilder,
207
+ numberInputManifest,
61
208
  plainTextBuilder,
62
- plainTextManifest
209
+ plainTextManifest,
210
+ textInputBuilder,
211
+ textInputManifest,
212
+ zipCodeInputBuilder,
213
+ zipCodeInputManifest
63
214
  };
@@ -82,4 +82,4 @@ type RegistryKeySet = Readonly<Partial<Record<SurveyNodeType, unknown>>>;
82
82
  declare function defineLogicRegistry<const TRegistry extends RegistryKeySet>(registry: TRegistry): TRegistry;
83
83
  declare function createInitialData<TData extends NodeData>(manifest: NodeManifest<SurveyNodeType, TData>): TData;
84
84
 
85
- export { type CompleteLogicRegistry as C, type DataType as D, type ExtractedValue as E, type JsonValue as J, type LogicRegistry as L, type NodeLogic as N, type PropertyField as P, type QuestionNodeType as Q, type SelectOption as S, type ValidationContext as V, type ExtractionContext as a, type NodeLogicContext as b, type ValidationResult as c, createInitialData as d, defineLogicRegistry as e, type NodeManifest as f, type PropertyFieldType as g, type NodeData as h, type SurveyNodeType as i, type NodeValue as j };
85
+ export { type CompleteLogicRegistry as C, type DataType as D, type ExtractedValue as E, type JsonValue as J, type LogicRegistry as L, type NodeManifest as N, type PropertyField as P, type QuestionNodeType as Q, type SelectOption as S, type ValidationContext as V, type PropertyFieldType as a, type NodeData as b, type NodeLogic as c, type ExtractionContext as d, type NodeLogicContext as e, type ValidationResult as f, createInitialData as g, defineLogicRegistry as h, type SurveyNodeType as i, type NodeValue as j };
package/dist/logic.d.mts CHANGED
@@ -1,42 +1,108 @@
1
- import { P as PlainTextData, a as PlainTextValue } from './types-D78Zx0gX.mjs';
2
- export { C as CompleteLogicRegistry, D as DataType, E as ExtractedValue, a as ExtractionContext, L as LogicRegistry, N as NodeLogic, b as NodeLogicContext, V as ValidationContext, c as ValidationResult, d as createInitialData, e as defineLogicRegistry } from './coreTypes-D-1hYIe5.mjs';
3
-
4
- declare const plainTextLogic: {
5
- type: "plainText";
6
- dataType: "none";
7
- defaultData: PlainTextData;
8
- defaultValue: {
9
- viewed: false;
10
- };
11
- normalizeValue: (value: unknown) => PlainTextValue;
12
- validate: () => {
13
- valid: true;
14
- };
15
- extractValue: (value: PlainTextValue) => {
16
- columnKey: string;
17
- columnLabel: string;
18
- booleanValue: boolean;
19
- }[];
1
+ import { P as PlainTextData, a as PlainTextValue, D as DateInputData, b as TextValue, E as EmailInputData, M as MultiInputData, c as MultiInputValue, N as NumberInputData, T as TextInputData, Z as ZipCodeInputData, B as BaseTextData } from './types-BMnck1ag.mjs';
2
+ import { b as NodeData, J as JsonValue, c as NodeLogic } from './coreTypes-CyFAym5A.mjs';
3
+ export { C as CompleteLogicRegistry, D as DataType, E as ExtractedValue, d as ExtractionContext, L as LogicRegistry, e as NodeLogicContext, V as ValidationContext, f as ValidationResult, g as createInitialData, h as defineLogicRegistry } from './coreTypes-CyFAym5A.mjs';
4
+
5
+ type ConditionData$1 = {
6
+ id: string;
7
+ type: "group";
8
+ logicType: "AND" | "OR";
9
+ children: JsonValue[];
10
+ };
11
+ type ScaleItem = NodeData & {
12
+ id?: string;
13
+ exportId?: string;
14
+ technicalId?: string;
15
+ label?: string;
16
+ value?: string;
17
+ };
18
+ type ScaleResponseMode = "single" | "multi";
19
+ type BaseScaleData = NodeData & {
20
+ label: string;
21
+ description: string;
22
+ condition: ConditionData$1;
23
+ responseMode?: ScaleResponseMode;
24
+ items: ScaleItem[];
25
+ };
26
+ type RatingData = BaseScaleData & {
27
+ maxRating: number;
28
+ };
29
+ type SliderData = BaseScaleData & {
30
+ min: number;
31
+ max: number;
32
+ step: number;
33
+ startValue: number;
20
34
  };
35
+ type ScaleValue = number | Record<string, number>;
36
+
37
+ type ConditionData = {
38
+ id: string;
39
+ type: "group";
40
+ logicType: "AND" | "OR";
41
+ children: JsonValue[];
42
+ };
43
+ type ChoiceOption = NodeData & {
44
+ id?: string;
45
+ label: string;
46
+ value: string;
47
+ imageUrl?: string;
48
+ };
49
+ type BaseChoiceData = NodeData & {
50
+ label: string;
51
+ description: string;
52
+ condition: ConditionData;
53
+ options: ChoiceOption[];
54
+ randomizeOptions?: boolean;
55
+ };
56
+ type SingleChoiceData = BaseChoiceData & {
57
+ allowOther?: boolean;
58
+ otherLabel?: string;
59
+ };
60
+ type DropdownData = BaseChoiceData & {
61
+ searchable?: boolean;
62
+ };
63
+ type MultipleChoiceData = BaseChoiceData & {
64
+ minChoices?: number;
65
+ maxChoices?: number;
66
+ };
67
+ type RankingData = BaseChoiceData & {
68
+ maxRank?: number;
69
+ displayMode?: "drag" | "select";
70
+ };
71
+ type SingleChoiceValue = string;
72
+ type MultipleChoiceValue = string[];
73
+ type RankingValue = string[];
74
+
75
+ declare const plainTextLogic: NodeLogic<"plainText", PlainTextData, PlainTextValue>;
76
+
77
+ declare const ratingLogic: NodeLogic<"rating", RatingData, ScaleValue>;
78
+ declare const sliderLogic: NodeLogic<"slider", SliderData, ScaleValue>;
79
+
80
+ declare const singleChoiceLogic: NodeLogic<"singleChoice", SingleChoiceData, SingleChoiceValue>;
81
+ declare const dropdownLogic: NodeLogic<"dropdown", DropdownData, SingleChoiceValue>;
82
+ declare const multipleChoiceLogic: NodeLogic<"multipleChoice", MultipleChoiceData, MultipleChoiceValue>;
83
+ declare const rankingLogic: NodeLogic<"ranking", RankingData, RankingValue>;
84
+
85
+ declare const textInputLogic: NodeLogic<"textInput", TextInputData, TextValue>;
86
+ declare const emailInputLogic: NodeLogic<"emailInput", EmailInputData, TextValue>;
87
+ declare const dateInputLogic: NodeLogic<"dateInput", DateInputData, TextValue>;
88
+ declare const numberInputLogic: NodeLogic<"numberInput", NumberInputData, TextValue>;
89
+ declare const zipCodeInputLogic: NodeLogic<"zipCodeInput", ZipCodeInputData, TextValue>;
90
+ declare const multiInputLogic: NodeLogic<"multiInput", MultiInputData, MultiInputValue>;
21
91
 
22
92
  declare const logicRegistry: {
23
- readonly plainText: {
24
- type: "plainText";
25
- dataType: "none";
26
- defaultData: PlainTextData;
27
- defaultValue: {
28
- viewed: false;
29
- };
30
- normalizeValue: (value: unknown) => PlainTextValue;
31
- validate: () => {
32
- valid: true;
33
- };
34
- extractValue: (value: PlainTextValue) => {
35
- columnKey: string;
36
- columnLabel: string;
37
- booleanValue: boolean;
38
- }[];
39
- };
40
- };
41
-
42
- export { logicRegistry, plainTextLogic };
93
+ readonly textInput: NodeLogic<"textInput", TextInputData, string>;
94
+ readonly numberInput: NodeLogic<"numberInput", NumberInputData, string>;
95
+ readonly emailInput: NodeLogic<"emailInput", BaseTextData, string>;
96
+ readonly dateInput: NodeLogic<"dateInput", BaseTextData, string>;
97
+ readonly multiInput: NodeLogic<"multiInput", MultiInputData, MultiInputValue>;
98
+ readonly zipCodeInput: NodeLogic<"zipCodeInput", ZipCodeInputData, string>;
99
+ readonly singleChoice: NodeLogic<"singleChoice", SingleChoiceData, string>;
100
+ readonly multipleChoice: NodeLogic<"multipleChoice", MultipleChoiceData, MultipleChoiceValue>;
101
+ readonly dropdown: NodeLogic<"dropdown", DropdownData, string>;
102
+ readonly ranking: NodeLogic<"ranking", RankingData, RankingValue>;
103
+ readonly rating: NodeLogic<"rating", RatingData, ScaleValue>;
104
+ readonly slider: NodeLogic<"slider", SliderData, ScaleValue>;
105
+ readonly plainText: NodeLogic<"plainText", PlainTextData, PlainTextValue>;
106
+ };
107
+
108
+ export { NodeLogic, dateInputLogic, dropdownLogic, emailInputLogic, logicRegistry, multiInputLogic, multipleChoiceLogic, numberInputLogic, plainTextLogic, rankingLogic, ratingLogic, singleChoiceLogic, sliderLogic, textInputLogic, zipCodeInputLogic };