@surveystudio/node-registery 1.4.0 → 1.6.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/dist/builder.mjs CHANGED
@@ -12,6 +12,23 @@ var plainTextBuilder = {
12
12
  label: "Info / Text"
13
13
  };
14
14
 
15
+ // src/nodes/captcha/builder.ts
16
+ var captchaBuilder = { type: "captcha", label: "Captcha" };
17
+
18
+ // src/nodes/emojiRating/builder.ts
19
+ var emojiRatingBuilder = { type: "emojiRating", label: "Emoji Rating" };
20
+
21
+ // src/nodes/media/builder.ts
22
+ var imageBuilder = { type: "image", label: "Image" };
23
+ var videoBuilder = { type: "video", label: "Video" };
24
+ var audioBuilder = { type: "audio", label: "Audio" };
25
+
26
+ // src/nodes/flow/builder.ts
27
+ var startBuilder = { type: "start", label: "Start" };
28
+ var branchBuilder = { type: "branch", label: "Branch" };
29
+ var validationBuilder = { type: "validation", label: "Validation Gate" };
30
+ var endBuilder = { type: "end", label: "End Screen" };
31
+
15
32
  // src/nodes/consent/builder.ts
16
33
  var consentBuilder = { type: "consent", label: "Consent" };
17
34
 
@@ -25,6 +42,10 @@ var rankingBuilder = { type: "ranking", label: "Ranking" };
25
42
  var ratingBuilder = { type: "rating", label: "Rating" };
26
43
  var sliderBuilder = { type: "slider", label: "Slider / Scale" };
27
44
 
45
+ // src/nodes/structuredChoice/builder.ts
46
+ var matrixChoiceBuilder = { type: "matrixChoice", label: "Grid / Matrix" };
47
+ var cascadingChoiceBuilder = { type: "cascadingChoice", label: "Multi-Step Select" };
48
+
28
49
  // src/nodes/textLike/builder.ts
29
50
  var textInputBuilder = { type: "textInput", label: "Text Answer" };
30
51
  var emailInputBuilder = { type: "emailInput", label: "Email" };
@@ -71,17 +92,306 @@ var plainTextManifest = {
71
92
  ]
72
93
  };
73
94
 
74
- // src/nodes/consent/manifest.ts
95
+ // src/nodes/captcha/manifest.ts
75
96
  var defaultCondition = {
76
97
  id: "root",
77
98
  type: "group",
78
99
  logicType: "AND",
79
100
  children: []
80
101
  };
102
+ var captchaDefaultData = {
103
+ label: "Captcha",
104
+ description: "",
105
+ isPii: false,
106
+ condition: defaultCondition,
107
+ sitekey: ""
108
+ };
109
+ var captchaManifest = {
110
+ type: "captcha",
111
+ label: "Captcha",
112
+ description: "Verify the user is human using Turnstile",
113
+ category: "input",
114
+ dataType: "text",
115
+ defaultData: captchaDefaultData,
116
+ properties: [
117
+ { name: "label", label: "Field Label", type: "text", placeholder: "e.g., Security check" },
118
+ { name: "description", label: "Description", type: "textarea", placeholder: "Helper text for the user", defaultValue: "" },
119
+ { name: "isPii", label: "Contains PII", type: "switch", defaultValue: false, helperText: "Encrypt this field and exclude it from analytics/export." },
120
+ { name: "condition", label: "When should this question be shown?", type: "condition", defaultValue: defaultCondition, helperText: "If no rules are added, this question will always be shown." },
121
+ { name: "sitekey", label: "Turnstile Site Key", type: "text", placeholder: "1x00000000000000000000AA", helperText: "Your Cloudflare Turnstile Site Key" }
122
+ ]
123
+ };
124
+
125
+ // src/nodes/emojiRating/manifest.ts
126
+ var defaultCondition2 = {
127
+ id: "root",
128
+ type: "group",
129
+ logicType: "AND",
130
+ children: []
131
+ };
132
+ var emojiRatingDefaultData = {
133
+ label: "Emoji Rating",
134
+ description: "",
135
+ isPii: false,
136
+ condition: defaultCondition2,
137
+ options: [
138
+ { label: "Angry", value: "\u{1F620}" },
139
+ { label: "Sad", value: "\u{1F641}" },
140
+ { label: "Neutral", value: "\u{1F610}" },
141
+ { label: "Happy", value: "\u{1F642}" },
142
+ { label: "Love", value: "\u{1F60D}" }
143
+ ]
144
+ };
145
+ var emojiRatingManifest = {
146
+ type: "emojiRating",
147
+ label: "Emoji Rating",
148
+ description: "Rate using emojis",
149
+ category: "choice",
150
+ dataType: "option",
151
+ defaultData: emojiRatingDefaultData,
152
+ properties: [
153
+ { name: "label", label: "Field Label", type: "text", placeholder: "e.g., How was your experience?" },
154
+ { name: "description", label: "Description", type: "textarea", placeholder: "Helper text for the user", defaultValue: "" },
155
+ { name: "isPii", label: "Contains PII", type: "switch", defaultValue: false, helperText: "Encrypt this field and exclude it from analytics/export." },
156
+ { name: "condition", label: "When should this question be shown?", type: "condition", defaultValue: defaultCondition2, helperText: "If no rules are added, this question will always be shown." },
157
+ { name: "options", label: "Emojis", type: "emojiOptions", defaultValue: [
158
+ { label: "Angry", value: "\u{1F620}" },
159
+ { label: "Sad", value: "\u{1F641}" },
160
+ { label: "Neutral", value: "\u{1F610}" },
161
+ { label: "Happy", value: "\u{1F642}" },
162
+ { label: "Love", value: "\u{1F60D}" }
163
+ ] }
164
+ ]
165
+ };
166
+
167
+ // src/nodes/media/manifest.ts
168
+ var defaultCondition3 = {
169
+ id: "root",
170
+ type: "group",
171
+ logicType: "AND",
172
+ children: []
173
+ };
174
+ var interactionOptions = [
175
+ { label: "None (Display Only)", value: "none" },
176
+ { label: "Text Question", value: "text" },
177
+ { label: "Slider Rating", value: "slider" },
178
+ { label: "Multiple Choice", value: "choice" }
179
+ ];
180
+ var mediaCommonData = {
181
+ label: "",
182
+ description: "",
183
+ isPii: false,
184
+ condition: defaultCondition3,
185
+ interactionType: "none",
186
+ questionLabel: "",
187
+ sliderConfig: "0-10",
188
+ choices: []
189
+ };
190
+ var mediaInteractionProperties = [
191
+ {
192
+ name: "interactionType",
193
+ label: "Enable Interaction",
194
+ type: "select",
195
+ defaultValue: "none",
196
+ options: interactionOptions,
197
+ helperText: "Add a question below this media"
198
+ },
199
+ {
200
+ name: "questionLabel",
201
+ label: "Question / Text",
202
+ type: "text",
203
+ placeholder: "Type your text here...",
204
+ visible: (data) => data.interactionType === "text"
205
+ },
206
+ {
207
+ name: "sliderConfig",
208
+ label: "Slider Config (Min-Max)",
209
+ type: "text",
210
+ placeholder: "0-10",
211
+ visible: (data) => data.interactionType === "slider"
212
+ },
213
+ {
214
+ name: "choices",
215
+ label: "Choices",
216
+ type: "options",
217
+ defaultValue: [],
218
+ visible: (data) => data.interactionType === "choice"
219
+ }
220
+ ];
221
+ var imageDefaultData = {
222
+ ...mediaCommonData,
223
+ label: "Image",
224
+ urls: [],
225
+ alt: ""
226
+ };
227
+ var videoDefaultData = {
228
+ ...mediaCommonData,
229
+ label: "Video",
230
+ url: "",
231
+ autoplay: false
232
+ };
233
+ var audioDefaultData = {
234
+ ...mediaCommonData,
235
+ label: "Audio",
236
+ url: "",
237
+ autoplay: false
238
+ };
239
+ var imageManifest = {
240
+ type: "image",
241
+ label: "Image",
242
+ description: "Display an image",
243
+ category: "media",
244
+ dataType: "object",
245
+ defaultData: imageDefaultData,
246
+ properties: [
247
+ { name: "label", label: "Field Label", type: "text", placeholder: "e.g., Product image" },
248
+ { name: "description", label: "Description", type: "textarea", placeholder: "Helper text for the user", defaultValue: "" },
249
+ { name: "isPii", label: "Contains PII", type: "switch", defaultValue: false, helperText: "Encrypt this field and exclude it from analytics/export." },
250
+ { name: "condition", label: "When should this question be shown?", type: "condition", defaultValue: defaultCondition3, helperText: "If no rules are added, this question will always be shown." },
251
+ { name: "urls", label: "Images", type: "files", defaultValue: [] },
252
+ { name: "alt", label: "Alt Text", type: "text" },
253
+ ...mediaInteractionProperties
254
+ ]
255
+ };
256
+ var videoManifest = {
257
+ type: "video",
258
+ label: "Video",
259
+ description: "Embed a video",
260
+ category: "media",
261
+ dataType: "object",
262
+ defaultData: videoDefaultData,
263
+ properties: [
264
+ { name: "label", label: "Field Label", type: "text", placeholder: "e.g., Watch this clip" },
265
+ { name: "description", label: "Description", type: "textarea", placeholder: "Helper text for the user", defaultValue: "" },
266
+ { name: "isPii", label: "Contains PII", type: "switch", defaultValue: false, helperText: "Encrypt this field and exclude it from analytics/export." },
267
+ { name: "condition", label: "When should this question be shown?", type: "condition", defaultValue: defaultCondition3, helperText: "If no rules are added, this question will always be shown." },
268
+ { name: "url", label: "Video URL", type: "file", placeholder: "Upload or paste URL..." },
269
+ { name: "autoplay", label: "Autoplay", type: "switch", defaultValue: false },
270
+ ...mediaInteractionProperties
271
+ ]
272
+ };
273
+ var audioManifest = {
274
+ type: "audio",
275
+ label: "Audio",
276
+ description: "Play an audio clip",
277
+ category: "media",
278
+ dataType: "object",
279
+ defaultData: audioDefaultData,
280
+ properties: [
281
+ { name: "label", label: "Field Label", type: "text", placeholder: "e.g., Listen to this clip" },
282
+ { name: "description", label: "Description", type: "textarea", placeholder: "Helper text for the user", defaultValue: "" },
283
+ { name: "isPii", label: "Contains PII", type: "switch", defaultValue: false, helperText: "Encrypt this field and exclude it from analytics/export." },
284
+ { name: "condition", label: "When should this question be shown?", type: "condition", defaultValue: defaultCondition3, helperText: "If no rules are added, this question will always be shown." },
285
+ { name: "url", label: "Audio URL", type: "file", placeholder: "Upload or paste URL..." },
286
+ { name: "autoplay", label: "Autoplay", type: "switch", defaultValue: false },
287
+ ...mediaInteractionProperties
288
+ ]
289
+ };
290
+
291
+ // src/nodes/flow/manifest.ts
292
+ var defaultCondition4 = {
293
+ id: "root",
294
+ type: "group",
295
+ logicType: "AND",
296
+ children: []
297
+ };
298
+ var startDefaultData = {
299
+ welcomeMessage: ""
300
+ };
301
+ var branchDefaultData = {
302
+ condition: defaultCondition4
303
+ };
304
+ var validationDefaultData = {
305
+ label: "Validation Gate",
306
+ condition: defaultCondition4,
307
+ outcome: "security_terminate"
308
+ };
309
+ var endDefaultData = {
310
+ message: "",
311
+ redirectUrl: "",
312
+ outcome: "completed"
313
+ };
314
+ var startManifest = {
315
+ type: "start",
316
+ label: "Start",
317
+ description: "Entry point of the survey",
318
+ category: "flow",
319
+ dataType: "none",
320
+ defaultData: startDefaultData,
321
+ properties: [
322
+ { name: "welcomeMessage", label: "Welcome Message", type: "textarea", placeholder: "e.g., Welcome to our survey! Click below to start." }
323
+ ]
324
+ };
325
+ var branchManifest = {
326
+ type: "branch",
327
+ label: "Branch",
328
+ description: "Split flow based on conditions",
329
+ category: "logic",
330
+ dataType: "none",
331
+ defaultData: branchDefaultData,
332
+ properties: [
333
+ { name: "condition", label: "Logic Rule", type: "condition", defaultValue: defaultCondition4 }
334
+ ]
335
+ };
336
+ var validationManifest = {
337
+ type: "validation",
338
+ label: "Validation Gate",
339
+ description: "Run cross-field validation and split flow",
340
+ category: "logic",
341
+ dataType: "none",
342
+ defaultData: validationDefaultData,
343
+ properties: [
344
+ { name: "label", label: "Gate Label", type: "text", placeholder: "e.g., Age vs DOB Check", defaultValue: "Validation Gate" },
345
+ { name: "condition", label: "Validation Rules", type: "condition", defaultValue: defaultCondition4 },
346
+ {
347
+ name: "outcome",
348
+ label: "Fail Outcome",
349
+ type: "select",
350
+ defaultValue: "security_terminate",
351
+ options: [
352
+ { label: "Security Terminate", value: "security_terminate" },
353
+ { label: "Disqualified", value: "disqualified" },
354
+ { label: "Dropped", value: "dropped" }
355
+ ]
356
+ }
357
+ ]
358
+ };
359
+ var endManifest = {
360
+ type: "end",
361
+ label: "End Screen",
362
+ description: "Terminate the survey flow",
363
+ category: "flow",
364
+ dataType: "none",
365
+ defaultData: endDefaultData,
366
+ properties: [
367
+ { name: "message", label: "Thank You Message", type: "textarea", placeholder: "Thank you for completing the survey!" },
368
+ { name: "redirectUrl", label: "Redirect URL", type: "text", placeholder: "https://..." },
369
+ {
370
+ name: "outcome",
371
+ label: "Session Outcome",
372
+ type: "select",
373
+ defaultValue: "completed",
374
+ options: [
375
+ { label: "Completed", value: "completed" },
376
+ { label: "Disqualified", value: "disqualified" },
377
+ { label: "Quality Terminate", value: "quality_terminate" },
378
+ { label: "Security Terminate", value: "security_terminate" }
379
+ ]
380
+ }
381
+ ]
382
+ };
383
+
384
+ // src/nodes/consent/manifest.ts
385
+ var defaultCondition5 = {
386
+ id: "root",
387
+ type: "group",
388
+ logicType: "AND",
389
+ children: []
390
+ };
81
391
  var consentDefaultData = {
82
392
  label: "Consent",
83
393
  description: "I agree to the terms and conditions.",
84
- condition: defaultCondition,
394
+ condition: defaultCondition5,
85
395
  checkboxLabel: "I agree",
86
396
  disagreeLabel: "I do not agree to the terms"
87
397
  };
@@ -101,13 +411,13 @@ var consentManifest = {
101
411
  name: "condition",
102
412
  label: "Logic Rule",
103
413
  type: "condition",
104
- defaultValue: defaultCondition
414
+ defaultValue: defaultCondition5
105
415
  }
106
416
  ]
107
417
  };
108
418
 
109
419
  // src/nodes/choice/manifest.ts
110
- var defaultCondition2 = {
420
+ var defaultCondition6 = {
111
421
  id: "root",
112
422
  type: "group",
113
423
  logicType: "AND",
@@ -116,7 +426,7 @@ var defaultCondition2 = {
116
426
  var baseChoiceData = {
117
427
  label: "",
118
428
  description: "",
119
- condition: defaultCondition2,
429
+ condition: defaultCondition6,
120
430
  options: [],
121
431
  randomizeOptions: false
122
432
  };
@@ -127,7 +437,7 @@ var commonProperties = [
127
437
  name: "condition",
128
438
  label: "Logic Rule",
129
439
  type: "condition",
130
- defaultValue: defaultCondition2
440
+ defaultValue: defaultCondition6
131
441
  },
132
442
  { name: "options", label: "Options", type: "options", defaultValue: [] },
133
443
  { name: "bulkOptions", label: "Bulk Add (one per line)", type: "textarea", placeholder: "Option A\nOption B\nOption C...", helperText: "Paste a list to replace all options above" }
@@ -231,7 +541,7 @@ var rankingManifest = {
231
541
  };
232
542
 
233
543
  // src/nodes/scale/manifest.ts
234
- var defaultCondition3 = {
544
+ var defaultCondition7 = {
235
545
  id: "root",
236
546
  type: "group",
237
547
  logicType: "AND",
@@ -240,7 +550,7 @@ var defaultCondition3 = {
240
550
  var baseScaleData = {
241
551
  label: "",
242
552
  description: "",
243
- condition: defaultCondition3,
553
+ condition: defaultCondition7,
244
554
  responseMode: "single",
245
555
  items: []
246
556
  };
@@ -262,7 +572,7 @@ var commonProperties2 = [
262
572
  name: "condition",
263
573
  label: "Logic Rule",
264
574
  type: "condition",
265
- defaultValue: defaultCondition3
575
+ defaultValue: defaultCondition7
266
576
  }
267
577
  ];
268
578
  var ratingDefaultData = {
@@ -308,8 +618,66 @@ var sliderManifest = {
308
618
  ]
309
619
  };
310
620
 
621
+ // src/nodes/structuredChoice/manifest.ts
622
+ var defaultCondition8 = {
623
+ id: "root",
624
+ type: "group",
625
+ logicType: "AND",
626
+ children: []
627
+ };
628
+ var commonProperties3 = [
629
+ { name: "label", label: "Field Label", type: "text" },
630
+ { name: "description", label: "Description", type: "textarea" },
631
+ {
632
+ name: "condition",
633
+ label: "Logic Rule",
634
+ type: "condition",
635
+ defaultValue: defaultCondition8
636
+ }
637
+ ];
638
+ var matrixChoiceDefaultData = {
639
+ label: "Grid / Matrix",
640
+ description: "",
641
+ condition: defaultCondition8,
642
+ rows: [],
643
+ columns: [],
644
+ multiple: false
645
+ };
646
+ var cascadingChoiceDefaultData = {
647
+ label: "Multi-Step Select",
648
+ description: "",
649
+ condition: defaultCondition8,
650
+ steps: []
651
+ };
652
+ var matrixChoiceManifest = {
653
+ type: "matrixChoice",
654
+ label: "Grid / Matrix",
655
+ description: "Grid of rows and columns",
656
+ category: "choice",
657
+ dataType: "object",
658
+ defaultData: matrixChoiceDefaultData,
659
+ properties: [
660
+ ...commonProperties3,
661
+ { name: "rows", label: "Rows (Questions)", type: "options", defaultValue: [] },
662
+ { name: "columns", label: "Columns (Options)", type: "options", defaultValue: [] },
663
+ { name: "multiple", label: "Allow Multiple", type: "switch", defaultValue: false }
664
+ ]
665
+ };
666
+ var cascadingChoiceManifest = {
667
+ type: "cascadingChoice",
668
+ label: "Multi-Step Select",
669
+ description: "Conditional drill-down options",
670
+ category: "choice",
671
+ dataType: "array",
672
+ defaultData: cascadingChoiceDefaultData,
673
+ properties: [
674
+ ...commonProperties3,
675
+ { name: "steps", label: "Steps", type: "stepBuilder", defaultValue: [] }
676
+ ]
677
+ };
678
+
311
679
  // src/nodes/textLike/manifest.ts
312
- var defaultCondition4 = {
680
+ var defaultCondition9 = {
313
681
  id: "root",
314
682
  type: "group",
315
683
  logicType: "AND",
@@ -318,20 +686,20 @@ var defaultCondition4 = {
318
686
  var baseTextData = {
319
687
  label: "",
320
688
  description: "",
321
- condition: defaultCondition4,
689
+ condition: defaultCondition9,
322
690
  minChars: 0,
323
691
  maxChars: 0,
324
692
  minWords: 0,
325
693
  maxWords: 0
326
694
  };
327
- var commonProperties3 = [
695
+ var commonProperties4 = [
328
696
  { name: "label", label: "Field Label", type: "text" },
329
697
  { name: "description", label: "Description", type: "textarea" },
330
698
  {
331
699
  name: "condition",
332
700
  label: "Logic Rule",
333
701
  type: "condition",
334
- defaultValue: defaultCondition4
702
+ defaultValue: defaultCondition9
335
703
  }
336
704
  ];
337
705
  var textLimitProperties = [
@@ -370,7 +738,7 @@ var textInputManifest = {
370
738
  dataType: "text",
371
739
  defaultData: textInputDefaultData,
372
740
  properties: [
373
- ...commonProperties3,
741
+ ...commonProperties4,
374
742
  { name: "placeholder", label: "Placeholder", type: "text", placeholder: "e.g., Type here...", defaultValue: "" },
375
743
  { name: "longAnswer", label: "Long Answer (Multi-line)", type: "switch", defaultValue: false },
376
744
  ...textLimitProperties
@@ -383,7 +751,7 @@ var emailInputManifest = {
383
751
  category: "input",
384
752
  dataType: "text",
385
753
  defaultData: emailInputDefaultData,
386
- properties: commonProperties3
754
+ properties: commonProperties4
387
755
  };
388
756
  var dateInputManifest = {
389
757
  type: "dateInput",
@@ -392,7 +760,7 @@ var dateInputManifest = {
392
760
  category: "input",
393
761
  dataType: "text",
394
762
  defaultData: dateInputDefaultData,
395
- properties: commonProperties3
763
+ properties: commonProperties4
396
764
  };
397
765
  var numberInputManifest = {
398
766
  type: "numberInput",
@@ -402,7 +770,7 @@ var numberInputManifest = {
402
770
  dataType: "number",
403
771
  defaultData: numberInputDefaultData,
404
772
  properties: [
405
- ...commonProperties3,
773
+ ...commonProperties4,
406
774
  { name: "min", label: "Minimum Value", type: "number" },
407
775
  { name: "max", label: "Maximum Value", type: "number" }
408
776
  ]
@@ -415,7 +783,7 @@ var zipCodeInputManifest = {
415
783
  dataType: "text",
416
784
  defaultData: zipCodeInputDefaultData,
417
785
  properties: [
418
- ...commonProperties3,
786
+ ...commonProperties4,
419
787
  { 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." }
420
788
  ]
421
789
  };
@@ -427,7 +795,7 @@ var multiInputManifest = {
427
795
  dataType: "object",
428
796
  defaultData: multiInputDefaultData,
429
797
  properties: [
430
- ...commonProperties3,
798
+ ...commonProperties4,
431
799
  { name: "fields", label: "Input Fields", type: "options", defaultValue: [], helperText: "Value column represents input type (text, number, email)" },
432
800
  ...textLimitProperties
433
801
  ]
@@ -445,13 +813,32 @@ var builderRegistry = defineBuilderRegistry({
445
813
  multipleChoice: multipleChoiceBuilder,
446
814
  dropdown: dropdownBuilder,
447
815
  ranking: rankingBuilder,
816
+ cascadingChoice: cascadingChoiceBuilder,
817
+ matrixChoice: matrixChoiceBuilder,
448
818
  rating: ratingBuilder,
449
819
  slider: sliderBuilder,
450
820
  consent: consentBuilder,
451
- plainText: plainTextBuilder
821
+ captcha: captchaBuilder,
822
+ image: imageBuilder,
823
+ video: videoBuilder,
824
+ audio: audioBuilder,
825
+ plainText: plainTextBuilder,
826
+ emojiRating: emojiRatingBuilder,
827
+ start: startBuilder,
828
+ end: endBuilder,
829
+ branch: branchBuilder,
830
+ validation: validationBuilder
452
831
  });
453
832
  export {
833
+ audioBuilder,
834
+ audioManifest,
835
+ branchBuilder,
836
+ branchManifest,
454
837
  builderRegistry,
838
+ captchaBuilder,
839
+ captchaManifest,
840
+ cascadingChoiceBuilder,
841
+ cascadingChoiceManifest,
455
842
  consentBuilder,
456
843
  consentManifest,
457
844
  dateInputBuilder,
@@ -462,6 +849,14 @@ export {
462
849
  dropdownManifest,
463
850
  emailInputBuilder,
464
851
  emailInputManifest,
852
+ emojiRatingBuilder,
853
+ emojiRatingManifest,
854
+ endBuilder,
855
+ endManifest,
856
+ imageBuilder,
857
+ imageManifest,
858
+ matrixChoiceBuilder,
859
+ matrixChoiceManifest,
465
860
  multiInputBuilder,
466
861
  multiInputManifest,
467
862
  multipleChoiceBuilder,
@@ -478,8 +873,14 @@ export {
478
873
  singleChoiceManifest,
479
874
  sliderBuilder,
480
875
  sliderManifest,
876
+ startBuilder,
877
+ startManifest,
481
878
  textInputBuilder,
482
879
  textInputManifest,
880
+ validationBuilder,
881
+ validationManifest,
882
+ videoBuilder,
883
+ videoManifest,
483
884
  zipCodeInputBuilder,
484
885
  zipCodeInputManifest
485
886
  };
@@ -53,6 +53,9 @@ interface ExtractedValue {
53
53
  readonly questionId?: string;
54
54
  readonly columnKey?: string;
55
55
  readonly columnLabel?: string;
56
+ readonly columnId?: string;
57
+ readonly columnTechnicalId?: string;
58
+ readonly columnText?: string;
56
59
  readonly textValue?: string;
57
60
  readonly numberValue?: number;
58
61
  readonly booleanValue?: boolean;
@@ -60,6 +63,8 @@ interface ExtractedValue {
60
63
  readonly optionText?: string;
61
64
  readonly arrayValue?: readonly JsonValue[];
62
65
  readonly objectValue?: Readonly<Record<string, JsonValue>>;
66
+ readonly cascadeLevel?: number;
67
+ readonly cascadeParentId?: string | null;
63
68
  readonly metadata?: Readonly<Record<string, JsonValue>>;
64
69
  }
65
70
  interface ExtractionContext<TType extends SurveyNodeType = SurveyNodeType> extends NodeLogicContext<TType> {
package/dist/logic.d.mts CHANGED
@@ -1,9 +1,22 @@
1
- import { P as PlainTextData, d as PlainTextValue, C as ConsentData, e as ConsentValue, a as RatingData, f as ScaleValue, b as SliderData, D as DropdownData, g as SingleChoiceValue, M as MultipleChoiceData, h as MultipleChoiceValue, R as RankingData, i as RankingValue, S as SingleChoiceData, j as DateInputData, k as TextValue, E as EmailInputData, c as MultiInputData, l as MultiInputValue, N as NumberInputData, T as TextInputData, Z as ZipCodeInputData, B as BaseTextData } from './types-CR3fIHCT.mjs';
2
- import { b as NodeLogic } from './coreTypes-YSpR0Oyh.mjs';
3
- export { C as CompleteLogicRegistry, D as DataType, E as ExtractedValue, c as ExtractionContext, L as LogicRegistry, d as NodeLogicContext, V as ValidationContext, e as ValidationResult, f as createInitialData, g as defineLogicRegistry } from './coreTypes-YSpR0Oyh.mjs';
1
+ import { P as PlainTextData, m as PlainTextValue, C as CaptchaData, n as CaptchaValue, E as EmojiRatingData, o as EmojiRatingValue, A as AudioData, p as MediaValue, I as ImageData, V as VideoData, a as BranchData, c as EndData, S as StartData, d as ValidationData, e as ConsentData, q as ConsentValue, g as RatingData, r as ScaleValue, h as SliderData, D as DropdownData, s as SingleChoiceValue, M as MultipleChoiceData, t as MultipleChoiceValue, R as RankingData, u as RankingValue, f as SingleChoiceData, i as CascadingChoiceData, v as CascadingChoiceValue, j as MatrixChoiceData, w as MatrixChoiceValue, x as DateInputData, y as TextValue, z as EmailInputData, l as MultiInputData, F as MultiInputValue, N as NumberInputData, T as TextInputData, Z as ZipCodeInputData, k as BaseTextData } from './types-D3jarfsb.mjs';
2
+ import { b as NodeLogic } from './coreTypes-D5NniS2n.mjs';
3
+ export { C as CompleteLogicRegistry, D as DataType, E as ExtractedValue, c as ExtractionContext, L as LogicRegistry, d as NodeLogicContext, V as ValidationContext, e as ValidationResult, f as createInitialData, g as defineLogicRegistry } from './coreTypes-D5NniS2n.mjs';
4
4
 
5
5
  declare const plainTextLogic: NodeLogic<"plainText", PlainTextData, PlainTextValue>;
6
6
 
7
+ declare const captchaLogic: NodeLogic<"captcha", CaptchaData, CaptchaValue>;
8
+
9
+ declare const emojiRatingLogic: NodeLogic<"emojiRating", EmojiRatingData, EmojiRatingValue>;
10
+
11
+ declare const imageLogic: NodeLogic<"image", ImageData, MediaValue>;
12
+ declare const videoLogic: NodeLogic<"video", VideoData, MediaValue>;
13
+ declare const audioLogic: NodeLogic<"audio", AudioData, MediaValue>;
14
+
15
+ declare const startLogic: NodeLogic<"start", StartData, undefined>;
16
+ declare const branchLogic: NodeLogic<"branch", BranchData, undefined>;
17
+ declare const validationLogic: NodeLogic<"validation", ValidationData, undefined>;
18
+ declare const endLogic: NodeLogic<"end", EndData, undefined>;
19
+
7
20
  declare const consentLogic: NodeLogic<"consent", ConsentData, ConsentValue>;
8
21
 
9
22
  declare const ratingLogic: NodeLogic<"rating", RatingData, ScaleValue>;
@@ -14,6 +27,9 @@ declare const dropdownLogic: NodeLogic<"dropdown", DropdownData, SingleChoiceVal
14
27
  declare const multipleChoiceLogic: NodeLogic<"multipleChoice", MultipleChoiceData, MultipleChoiceValue>;
15
28
  declare const rankingLogic: NodeLogic<"ranking", RankingData, RankingValue>;
16
29
 
30
+ declare const matrixChoiceLogic: NodeLogic<"matrixChoice", MatrixChoiceData, MatrixChoiceValue>;
31
+ declare const cascadingChoiceLogic: NodeLogic<"cascadingChoice", CascadingChoiceData, CascadingChoiceValue>;
32
+
17
33
  declare const textInputLogic: NodeLogic<"textInput", TextInputData, TextValue>;
18
34
  declare const emailInputLogic: NodeLogic<"emailInput", EmailInputData, TextValue>;
19
35
  declare const dateInputLogic: NodeLogic<"dateInput", DateInputData, TextValue>;
@@ -32,10 +48,21 @@ declare const logicRegistry: {
32
48
  readonly multipleChoice: NodeLogic<"multipleChoice", MultipleChoiceData, MultipleChoiceValue>;
33
49
  readonly dropdown: NodeLogic<"dropdown", DropdownData, string>;
34
50
  readonly ranking: NodeLogic<"ranking", RankingData, RankingValue>;
51
+ readonly cascadingChoice: NodeLogic<"cascadingChoice", CascadingChoiceData, CascadingChoiceValue>;
52
+ readonly matrixChoice: NodeLogic<"matrixChoice", MatrixChoiceData, MatrixChoiceValue>;
35
53
  readonly rating: NodeLogic<"rating", RatingData, ScaleValue>;
36
54
  readonly slider: NodeLogic<"slider", SliderData, ScaleValue>;
37
55
  readonly consent: NodeLogic<"consent", ConsentData, boolean>;
56
+ readonly captcha: NodeLogic<"captcha", CaptchaData, string>;
57
+ readonly image: NodeLogic<"image", ImageData, MediaValue>;
58
+ readonly video: NodeLogic<"video", VideoData, MediaValue>;
59
+ readonly audio: NodeLogic<"audio", AudioData, MediaValue>;
38
60
  readonly plainText: NodeLogic<"plainText", PlainTextData, PlainTextValue>;
61
+ readonly emojiRating: NodeLogic<"emojiRating", EmojiRatingData, string>;
62
+ readonly start: NodeLogic<"start", StartData, undefined>;
63
+ readonly end: NodeLogic<"end", EndData, undefined>;
64
+ readonly branch: NodeLogic<"branch", BranchData, undefined>;
65
+ readonly validation: NodeLogic<"validation", ValidationData, undefined>;
39
66
  };
40
67
 
41
- export { NodeLogic, consentLogic, dateInputLogic, dropdownLogic, emailInputLogic, logicRegistry, multiInputLogic, multipleChoiceLogic, numberInputLogic, plainTextLogic, rankingLogic, ratingLogic, singleChoiceLogic, sliderLogic, textInputLogic, zipCodeInputLogic };
68
+ export { NodeLogic, audioLogic, branchLogic, captchaLogic, cascadingChoiceLogic, consentLogic, dateInputLogic, dropdownLogic, emailInputLogic, emojiRatingLogic, endLogic, imageLogic, logicRegistry, matrixChoiceLogic, multiInputLogic, multipleChoiceLogic, numberInputLogic, plainTextLogic, rankingLogic, ratingLogic, singleChoiceLogic, sliderLogic, startLogic, textInputLogic, validationLogic, videoLogic, zipCodeInputLogic };