@surveystudio/node-registery 1.3.0 → 1.5.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,40 @@ 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
+
32
+ // src/nodes/consent/builder.ts
33
+ var consentBuilder = { type: "consent", label: "Consent" };
34
+
35
+ // src/nodes/choice/builder.ts
36
+ var singleChoiceBuilder = { type: "singleChoice", label: "Single Choice" };
37
+ var multipleChoiceBuilder = { type: "multipleChoice", label: "Multiple Choice" };
38
+ var dropdownBuilder = { type: "dropdown", label: "Dropdown Select" };
39
+ var rankingBuilder = { type: "ranking", label: "Ranking" };
40
+
41
+ // src/nodes/scale/builder.ts
42
+ var ratingBuilder = { type: "rating", label: "Rating" };
43
+ var sliderBuilder = { type: "slider", label: "Slider / Scale" };
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
+
15
49
  // src/nodes/textLike/builder.ts
16
50
  var textInputBuilder = { type: "textInput", label: "Text Answer" };
17
51
  var emailInputBuilder = { type: "emailInput", label: "Email" };
@@ -58,30 +92,614 @@ var plainTextManifest = {
58
92
  ]
59
93
  };
60
94
 
61
- // src/nodes/textLike/manifest.ts
95
+ // src/nodes/captcha/manifest.ts
62
96
  var defaultCondition = {
63
97
  id: "root",
64
98
  type: "group",
65
99
  logicType: "AND",
66
100
  children: []
67
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
+ };
391
+ var consentDefaultData = {
392
+ label: "Consent",
393
+ description: "I agree to the terms and conditions.",
394
+ condition: defaultCondition5,
395
+ checkboxLabel: "I agree",
396
+ disagreeLabel: "I do not agree to the terms"
397
+ };
398
+ var consentManifest = {
399
+ type: "consent",
400
+ label: "Consent",
401
+ description: "Terms and agreement checkbox",
402
+ category: "choice",
403
+ dataType: "boolean",
404
+ defaultData: consentDefaultData,
405
+ properties: [
406
+ { name: "label", label: "Title", type: "text", placeholder: "Terms of Service" },
407
+ { name: "description", label: "Terms Text", type: "textarea", placeholder: "I agree to the terms and conditions..." },
408
+ { name: "checkboxLabel", label: "Checkbox Label", type: "text", placeholder: "I agree" },
409
+ { name: "disagreeLabel", label: "Disagree Label", type: "text", placeholder: "I do not agree to the terms" },
410
+ {
411
+ name: "condition",
412
+ label: "Logic Rule",
413
+ type: "condition",
414
+ defaultValue: defaultCondition5
415
+ }
416
+ ]
417
+ };
418
+
419
+ // src/nodes/choice/manifest.ts
420
+ var defaultCondition6 = {
421
+ id: "root",
422
+ type: "group",
423
+ logicType: "AND",
424
+ children: []
425
+ };
426
+ var baseChoiceData = {
427
+ label: "",
428
+ description: "",
429
+ condition: defaultCondition6,
430
+ options: [],
431
+ randomizeOptions: false
432
+ };
433
+ var commonProperties = [
434
+ { name: "label", label: "Question Label", type: "text" },
435
+ { name: "description", label: "Description", type: "textarea" },
436
+ {
437
+ name: "condition",
438
+ label: "Logic Rule",
439
+ type: "condition",
440
+ defaultValue: defaultCondition6
441
+ },
442
+ { name: "options", label: "Options", type: "options", defaultValue: [] },
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" }
444
+ ];
445
+ var singleChoiceDefaultData = {
446
+ ...baseChoiceData,
447
+ label: "Single Choice",
448
+ allowOther: false,
449
+ otherLabel: "Other (Please specify)",
450
+ allowNone: false,
451
+ noneLabel: "None of these"
452
+ };
453
+ var dropdownDefaultData = {
454
+ ...baseChoiceData,
455
+ label: "Dropdown Select",
456
+ placeholder: "Select an option...",
457
+ searchable: true
458
+ };
459
+ var multipleChoiceDefaultData = {
460
+ ...baseChoiceData,
461
+ label: "Multiple Choice",
462
+ minChoices: 0,
463
+ maxChoices: 0,
464
+ allowOther: false,
465
+ otherLabel: "Other (Please specify)",
466
+ allowNone: false,
467
+ noneLabel: "None of these"
468
+ };
469
+ var rankingDefaultData = {
470
+ ...baseChoiceData,
471
+ label: "Ranking",
472
+ maxRank: 0,
473
+ displayMode: "drag"
474
+ };
475
+ var singleChoiceManifest = {
476
+ type: "singleChoice",
477
+ label: "Single Choice",
478
+ description: "Select one option from a list",
479
+ category: "choice",
480
+ dataType: "option",
481
+ defaultData: singleChoiceDefaultData,
482
+ properties: [
483
+ ...commonProperties,
484
+ { name: "allowOther", label: 'Allow "Other" Option', type: "switch", defaultValue: false },
485
+ { name: "otherLabel", label: '"Other" Placeholder', type: "text", placeholder: "Other (Please specify)", helperText: "Label for the open-ended option" },
486
+ { name: "allowNone", label: 'Allow "None of these"', type: "switch", defaultValue: false },
487
+ { name: "noneLabel", label: '"None" Label', type: "text", placeholder: "None of these", visible: (data) => Boolean(data.allowNone) },
488
+ { name: "randomizeOptions", label: "Randomize Options", type: "switch", defaultValue: false }
489
+ ]
490
+ };
491
+ var dropdownManifest = {
492
+ type: "dropdown",
493
+ label: "Dropdown Select",
494
+ description: "Select from a dropdown menu",
495
+ category: "choice",
496
+ dataType: "option",
497
+ defaultData: dropdownDefaultData,
498
+ properties: [
499
+ ...commonProperties,
500
+ { name: "placeholder", label: "Placeholder Text", type: "text", placeholder: "Select an option..." },
501
+ { name: "searchable", label: "Searchable", type: "switch", defaultValue: true }
502
+ ]
503
+ };
504
+ var multipleChoiceManifest = {
505
+ type: "multipleChoice",
506
+ label: "Multiple Choice",
507
+ description: "Select multiple options",
508
+ category: "choice",
509
+ dataType: "array",
510
+ defaultData: multipleChoiceDefaultData,
511
+ properties: [
512
+ ...commonProperties,
513
+ { name: "maxChoices", label: "Maximum Choices", type: "number", helperText: "Limit how many options a user can select. Leave empty for no limit.", defaultValue: 0 },
514
+ { name: "allowOther", label: 'Allow "Other" Option', type: "switch", defaultValue: false },
515
+ { name: "otherLabel", label: '"Other" Placeholder', type: "text", placeholder: "Other (Please specify)" },
516
+ { name: "allowNone", label: 'Allow "None of these"', type: "switch", defaultValue: false },
517
+ { name: "noneLabel", label: '"None" Label', type: "text", placeholder: "None of these", visible: (data) => Boolean(data.allowNone) },
518
+ { name: "randomizeOptions", label: "Randomize Options", type: "switch", defaultValue: false, helperText: "Shuffle options for every viewer" }
519
+ ]
520
+ };
521
+ var rankingManifest = {
522
+ type: "ranking",
523
+ label: "Ranking",
524
+ description: "Rank options in order",
525
+ category: "choice",
526
+ dataType: "array",
527
+ defaultData: rankingDefaultData,
528
+ properties: [
529
+ ...commonProperties,
530
+ {
531
+ name: "displayMode",
532
+ label: "Display Mode",
533
+ type: "select",
534
+ defaultValue: "drag",
535
+ options: [
536
+ { label: "Drag and Drop", value: "drag" },
537
+ { label: "Select Rank", value: "select" }
538
+ ]
539
+ }
540
+ ]
541
+ };
542
+
543
+ // src/nodes/scale/manifest.ts
544
+ var defaultCondition7 = {
545
+ id: "root",
546
+ type: "group",
547
+ logicType: "AND",
548
+ children: []
549
+ };
550
+ var baseScaleData = {
551
+ label: "",
552
+ description: "",
553
+ condition: defaultCondition7,
554
+ responseMode: "single",
555
+ items: []
556
+ };
557
+ var responseModeProperty = {
558
+ name: "responseMode",
559
+ label: "Response Mode",
560
+ type: "select",
561
+ defaultValue: "single",
562
+ options: [
563
+ { label: "Single Question", value: "single" },
564
+ { label: "Multiple Items", value: "multi" }
565
+ ]
566
+ };
567
+ var commonProperties2 = [
568
+ responseModeProperty,
569
+ { name: "label", label: "Question Label", type: "text" },
570
+ { name: "description", label: "Description", type: "textarea" },
571
+ {
572
+ name: "condition",
573
+ label: "Logic Rule",
574
+ type: "condition",
575
+ defaultValue: defaultCondition7
576
+ }
577
+ ];
578
+ var ratingDefaultData = {
579
+ ...baseScaleData,
580
+ label: "Rating",
581
+ maxRating: 5
582
+ };
583
+ var sliderDefaultData = {
584
+ ...baseScaleData,
585
+ label: "Slider / Scale",
586
+ min: 0,
587
+ max: 10,
588
+ step: 1,
589
+ startValue: 5
590
+ };
591
+ var ratingManifest = {
592
+ type: "rating",
593
+ label: "Rating",
594
+ description: "Star rating scale",
595
+ category: "choice",
596
+ dataType: "number",
597
+ defaultData: ratingDefaultData,
598
+ properties: [
599
+ ...commonProperties2,
600
+ { name: "items", label: "Questions/Items", type: "options", defaultValue: [], visible: (data) => data.responseMode === "multi" },
601
+ { name: "maxRating", label: "Max Stars", type: "number", defaultValue: 5 }
602
+ ]
603
+ };
604
+ var sliderManifest = {
605
+ type: "slider",
606
+ label: "Slider / Scale",
607
+ description: "Single or multi-item scale",
608
+ category: "choice",
609
+ dataType: "number",
610
+ defaultData: sliderDefaultData,
611
+ properties: [
612
+ ...commonProperties2,
613
+ { name: "items", label: "Items to Rate", type: "options", defaultValue: [], visible: (data) => data.responseMode === "multi" },
614
+ { name: "min", label: "Minimum", type: "number", defaultValue: 0 },
615
+ { name: "max", label: "Maximum", type: "number", defaultValue: 10 },
616
+ { name: "step", label: "Step", type: "number", defaultValue: 1, min: 0 },
617
+ { name: "startValue", label: "Start Value", type: "number", defaultValue: 5 }
618
+ ]
619
+ };
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
+
679
+ // src/nodes/textLike/manifest.ts
680
+ var defaultCondition9 = {
681
+ id: "root",
682
+ type: "group",
683
+ logicType: "AND",
684
+ children: []
685
+ };
68
686
  var baseTextData = {
69
687
  label: "",
70
688
  description: "",
71
- condition: defaultCondition,
689
+ condition: defaultCondition9,
72
690
  minChars: 0,
73
691
  maxChars: 0,
74
692
  minWords: 0,
75
693
  maxWords: 0
76
694
  };
77
- var commonProperties = [
695
+ var commonProperties4 = [
78
696
  { name: "label", label: "Field Label", type: "text" },
79
697
  { name: "description", label: "Description", type: "textarea" },
80
698
  {
81
699
  name: "condition",
82
700
  label: "Logic Rule",
83
701
  type: "condition",
84
- defaultValue: defaultCondition
702
+ defaultValue: defaultCondition9
85
703
  }
86
704
  ];
87
705
  var textLimitProperties = [
@@ -120,7 +738,7 @@ var textInputManifest = {
120
738
  dataType: "text",
121
739
  defaultData: textInputDefaultData,
122
740
  properties: [
123
- ...commonProperties,
741
+ ...commonProperties4,
124
742
  { name: "placeholder", label: "Placeholder", type: "text", placeholder: "e.g., Type here...", defaultValue: "" },
125
743
  { name: "longAnswer", label: "Long Answer (Multi-line)", type: "switch", defaultValue: false },
126
744
  ...textLimitProperties
@@ -133,7 +751,7 @@ var emailInputManifest = {
133
751
  category: "input",
134
752
  dataType: "text",
135
753
  defaultData: emailInputDefaultData,
136
- properties: commonProperties
754
+ properties: commonProperties4
137
755
  };
138
756
  var dateInputManifest = {
139
757
  type: "dateInput",
@@ -142,7 +760,7 @@ var dateInputManifest = {
142
760
  category: "input",
143
761
  dataType: "text",
144
762
  defaultData: dateInputDefaultData,
145
- properties: commonProperties
763
+ properties: commonProperties4
146
764
  };
147
765
  var numberInputManifest = {
148
766
  type: "numberInput",
@@ -152,7 +770,7 @@ var numberInputManifest = {
152
770
  dataType: "number",
153
771
  defaultData: numberInputDefaultData,
154
772
  properties: [
155
- ...commonProperties,
773
+ ...commonProperties4,
156
774
  { name: "min", label: "Minimum Value", type: "number" },
157
775
  { name: "max", label: "Maximum Value", type: "number" }
158
776
  ]
@@ -165,7 +783,7 @@ var zipCodeInputManifest = {
165
783
  dataType: "text",
166
784
  defaultData: zipCodeInputDefaultData,
167
785
  properties: [
168
- ...commonProperties,
786
+ ...commonProperties4,
169
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." }
170
788
  ]
171
789
  };
@@ -177,7 +795,7 @@ var multiInputManifest = {
177
795
  dataType: "object",
178
796
  defaultData: multiInputDefaultData,
179
797
  properties: [
180
- ...commonProperties,
798
+ ...commonProperties4,
181
799
  { name: "fields", label: "Input Fields", type: "options", defaultValue: [], helperText: "Value column represents input type (text, number, email)" },
182
800
  ...textLimitProperties
183
801
  ]
@@ -191,24 +809,78 @@ var builderRegistry = defineBuilderRegistry({
191
809
  dateInput: dateInputBuilder,
192
810
  multiInput: multiInputBuilder,
193
811
  zipCodeInput: zipCodeInputBuilder,
194
- plainText: plainTextBuilder
812
+ singleChoice: singleChoiceBuilder,
813
+ multipleChoice: multipleChoiceBuilder,
814
+ dropdown: dropdownBuilder,
815
+ ranking: rankingBuilder,
816
+ cascadingChoice: cascadingChoiceBuilder,
817
+ matrixChoice: matrixChoiceBuilder,
818
+ rating: ratingBuilder,
819
+ slider: sliderBuilder,
820
+ consent: consentBuilder,
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
195
831
  });
196
832
  export {
833
+ audioBuilder,
834
+ audioManifest,
835
+ branchBuilder,
836
+ branchManifest,
197
837
  builderRegistry,
838
+ captchaBuilder,
839
+ captchaManifest,
840
+ cascadingChoiceBuilder,
841
+ cascadingChoiceManifest,
842
+ consentBuilder,
843
+ consentManifest,
198
844
  dateInputBuilder,
199
845
  dateInputManifest,
200
846
  defineBuilderRegistry,
201
847
  defineQuestionNode,
848
+ dropdownBuilder,
849
+ dropdownManifest,
202
850
  emailInputBuilder,
203
851
  emailInputManifest,
852
+ emojiRatingBuilder,
853
+ emojiRatingManifest,
854
+ endBuilder,
855
+ endManifest,
856
+ imageBuilder,
857
+ imageManifest,
858
+ matrixChoiceBuilder,
859
+ matrixChoiceManifest,
204
860
  multiInputBuilder,
205
861
  multiInputManifest,
862
+ multipleChoiceBuilder,
863
+ multipleChoiceManifest,
206
864
  numberInputBuilder,
207
865
  numberInputManifest,
208
866
  plainTextBuilder,
209
867
  plainTextManifest,
868
+ rankingBuilder,
869
+ rankingManifest,
870
+ ratingBuilder,
871
+ ratingManifest,
872
+ singleChoiceBuilder,
873
+ singleChoiceManifest,
874
+ sliderBuilder,
875
+ sliderManifest,
876
+ startBuilder,
877
+ startManifest,
210
878
  textInputBuilder,
211
879
  textInputManifest,
880
+ validationBuilder,
881
+ validationManifest,
882
+ videoBuilder,
883
+ videoManifest,
212
884
  zipCodeInputBuilder,
213
885
  zipCodeInputManifest
214
886
  };