@stapel/forms-react 0.1.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/CHANGELOG.md +62 -0
- package/MODULE.md +172 -0
- package/README.md +207 -0
- package/dist/api/export.d.ts +66 -0
- package/dist/api/export.d.ts.map +1 -0
- package/dist/api/export.js +138 -0
- package/dist/api/export.js.map +1 -0
- package/dist/api/extensions.d.ts +8 -0
- package/dist/api/extensions.d.ts.map +1 -0
- package/dist/api/extensions.js +8 -0
- package/dist/api/extensions.js.map +1 -0
- package/dist/api/formsApi.d.ts +113 -0
- package/dist/api/formsApi.d.ts.map +1 -0
- package/dist/api/formsApi.js +81 -0
- package/dist/api/formsApi.js.map +1 -0
- package/dist/api/generated/schema.d.ts +987 -0
- package/dist/api/generated/schema.d.ts.map +1 -0
- package/dist/api/generated/schema.js +2 -0
- package/dist/api/generated/schema.js.map +1 -0
- package/dist/api/types.d.ts +222 -0
- package/dist/api/types.d.ts.map +1 -0
- package/dist/api/types.js +14 -0
- package/dist/api/types.js.map +1 -0
- package/dist/default/ConfigField.d.ts +32 -0
- package/dist/default/ConfigField.d.ts.map +1 -0
- package/dist/default/ConfigField.js +101 -0
- package/dist/default/ConfigField.js.map +1 -0
- package/dist/default/ErrorAlert.d.ts +9 -0
- package/dist/default/ErrorAlert.d.ts.map +1 -0
- package/dist/default/ErrorAlert.js +27 -0
- package/dist/default/ErrorAlert.js.map +1 -0
- package/dist/default/FormBuilderPane.d.ts +36 -0
- package/dist/default/FormBuilderPane.d.ts.map +1 -0
- package/dist/default/FormBuilderPane.js +70 -0
- package/dist/default/FormBuilderPane.js.map +1 -0
- package/dist/default/FormsListPane.d.ts +18 -0
- package/dist/default/FormsListPane.d.ts.map +1 -0
- package/dist/default/FormsListPane.js +28 -0
- package/dist/default/FormsListPane.js.map +1 -0
- package/dist/default/ResponsesPane.d.ts +21 -0
- package/dist/default/ResponsesPane.d.ts.map +1 -0
- package/dist/default/ResponsesPane.js +118 -0
- package/dist/default/ResponsesPane.js.map +1 -0
- package/dist/default/StapelForm.d.ts +76 -0
- package/dist/default/StapelForm.d.ts.map +1 -0
- package/dist/default/StapelForm.js +118 -0
- package/dist/default/StapelForm.js.map +1 -0
- package/dist/default/fields.d.ts +11 -0
- package/dist/default/fields.d.ts.map +1 -0
- package/dist/default/fields.js +273 -0
- package/dist/default/fields.js.map +1 -0
- package/dist/default/index.d.ts +42 -0
- package/dist/default/index.d.ts.map +1 -0
- package/dist/default/index.js +37 -0
- package/dist/default/index.js.map +1 -0
- package/dist/default/slots.d.ts +59 -0
- package/dist/default/slots.d.ts.map +1 -0
- package/dist/default/slots.js +25 -0
- package/dist/default/slots.js.map +1 -0
- package/dist/default/theme.d.ts +23 -0
- package/dist/default/theme.d.ts.map +1 -0
- package/dist/default/theme.js +38 -0
- package/dist/default/theme.js.map +1 -0
- package/dist/default/types.d.ts +12 -0
- package/dist/default/types.d.ts.map +1 -0
- package/dist/default/types.js +2 -0
- package/dist/default/types.js.map +1 -0
- package/dist/flows/errors.d.ts +12 -0
- package/dist/flows/errors.d.ts.map +1 -0
- package/dist/flows/errors.js +13 -0
- package/dist/flows/errors.js.map +1 -0
- package/dist/flows/registry.d.ts +22 -0
- package/dist/flows/registry.d.ts.map +1 -0
- package/dist/flows/registry.js +20 -0
- package/dist/flows/registry.js.map +1 -0
- package/dist/headless/FormBuilder.d.ts +100 -0
- package/dist/headless/FormBuilder.d.ts.map +1 -0
- package/dist/headless/FormBuilder.js +278 -0
- package/dist/headless/FormBuilder.js.map +1 -0
- package/dist/headless/FormFill.d.ts +88 -0
- package/dist/headless/FormFill.d.ts.map +1 -0
- package/dist/headless/FormFill.js +279 -0
- package/dist/headless/FormFill.js.map +1 -0
- package/dist/headless/FormList.d.ts +34 -0
- package/dist/headless/FormList.d.ts.map +1 -0
- package/dist/headless/FormList.js +37 -0
- package/dist/headless/FormList.js.map +1 -0
- package/dist/headless/FormsProvider.d.ts +19 -0
- package/dist/headless/FormsProvider.d.ts.map +1 -0
- package/dist/headless/FormsProvider.js +15 -0
- package/dist/headless/FormsProvider.js.map +1 -0
- package/dist/headless/ResponsesTable.d.ts +82 -0
- package/dist/headless/ResponsesTable.d.ts.map +1 -0
- package/dist/headless/ResponsesTable.js +195 -0
- package/dist/headless/ResponsesTable.js.map +1 -0
- package/dist/i18n/errorsMap.d.ts +10 -0
- package/dist/i18n/errorsMap.d.ts.map +1 -0
- package/dist/i18n/errorsMap.js +20 -0
- package/dist/i18n/errorsMap.js.map +1 -0
- package/dist/i18n/es.d.ts +7 -0
- package/dist/i18n/es.d.ts.map +1 -0
- package/dist/i18n/es.js +118 -0
- package/dist/i18n/es.js.map +1 -0
- package/dist/i18n/generated/errors.es.gen.d.ts +16 -0
- package/dist/i18n/generated/errors.es.gen.d.ts.map +1 -0
- package/dist/i18n/generated/errors.es.gen.js +79 -0
- package/dist/i18n/generated/errors.es.gen.js.map +1 -0
- package/dist/i18n/generated/errors.gen.d.ts +485 -0
- package/dist/i18n/generated/errors.gen.d.ts.map +1 -0
- package/dist/i18n/generated/errors.gen.js +246 -0
- package/dist/i18n/generated/errors.gen.js.map +1 -0
- package/dist/i18n/generated/errors.ru.gen.d.ts +16 -0
- package/dist/i18n/generated/errors.ru.gen.d.ts.map +1 -0
- package/dist/i18n/generated/errors.ru.gen.js +79 -0
- package/dist/i18n/generated/errors.ru.gen.js.map +1 -0
- package/dist/i18n/keys.d.ts +141 -0
- package/dist/i18n/keys.d.ts.map +1 -0
- package/dist/i18n/keys.js +233 -0
- package/dist/i18n/keys.js.map +1 -0
- package/dist/i18n/ru.d.ts +7 -0
- package/dist/i18n/ru.d.ts.map +1 -0
- package/dist/i18n/ru.js +127 -0
- package/dist/i18n/ru.js.map +1 -0
- package/dist/index.d.ts +61 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +55 -0
- package/dist/index.js.map +1 -0
- package/dist/model/context.d.ts +11 -0
- package/dist/model/context.d.ts.map +1 -0
- package/dist/model/context.js +16 -0
- package/dist/model/context.js.map +1 -0
- package/dist/model/mutations.d.ts +135 -0
- package/dist/model/mutations.d.ts.map +1 -0
- package/dist/model/mutations.js +223 -0
- package/dist/model/mutations.js.map +1 -0
- package/dist/model/queries.d.ts +59 -0
- package/dist/model/queries.d.ts.map +1 -0
- package/dist/model/queries.js +117 -0
- package/dist/model/queries.js.map +1 -0
- package/dist/model/queryKeys.d.ts +28 -0
- package/dist/model/queryKeys.d.ts.map +1 -0
- package/dist/model/queryKeys.js +23 -0
- package/dist/model/queryKeys.js.map +1 -0
- package/dist/model/runtime.d.ts +28 -0
- package/dist/model/runtime.d.ts.map +1 -0
- package/dist/model/runtime.js +14 -0
- package/dist/model/runtime.js.map +1 -0
- package/dist/widgets/configForms.d.ts +112 -0
- package/dist/widgets/configForms.d.ts.map +1 -0
- package/dist/widgets/configForms.js +211 -0
- package/dist/widgets/configForms.js.map +1 -0
- package/dist/widgets/registry.d.ts +83 -0
- package/dist/widgets/registry.d.ts.map +1 -0
- package/dist/widgets/registry.js +27 -0
- package/dist/widgets/registry.js.map +1 -0
- package/dist/widgets/validate.d.ts +57 -0
- package/dist/widgets/validate.d.ts.map +1 -0
- package/dist/widgets/validate.js +173 -0
- package/dist/widgets/validate.js.map +1 -0
- package/llms.txt +124 -0
- package/manifest.json +1038 -0
- package/package.json +108 -0
- package/src/analytics/generated/events.json +7 -0
- package/src/api/export.ts +195 -0
- package/src/api/extensions.ts +7 -0
- package/src/api/formsApi.ts +329 -0
- package/src/api/generated/schema.ts +989 -0
- package/src/api/types.ts +276 -0
- package/src/default/ConfigField.tsx +227 -0
- package/src/default/ErrorAlert.tsx +46 -0
- package/src/default/FormBuilderPane.tsx +414 -0
- package/src/default/FormsListPane.tsx +144 -0
- package/src/default/ResponsesPane.tsx +332 -0
- package/src/default/StapelForm.tsx +377 -0
- package/src/default/fields.tsx +454 -0
- package/src/default/index.ts +71 -0
- package/src/default/slots.ts +78 -0
- package/src/default/theme.tsx +65 -0
- package/src/default/types.ts +12 -0
- package/src/flows/errors.ts +16 -0
- package/src/flows/registry.ts +32 -0
- package/src/headless/FormBuilder.tsx +453 -0
- package/src/headless/FormFill.tsx +396 -0
- package/src/headless/FormList.tsx +74 -0
- package/src/headless/FormsProvider.tsx +20 -0
- package/src/headless/ResponsesTable.tsx +341 -0
- package/src/i18n/errorsMap.ts +31 -0
- package/src/i18n/es.ts +140 -0
- package/src/i18n/generated/errors.es.gen.ts +85 -0
- package/src/i18n/generated/errors.gen.ts +277 -0
- package/src/i18n/generated/errors.json +583 -0
- package/src/i18n/generated/errors.ru.gen.ts +85 -0
- package/src/i18n/keys.ts +264 -0
- package/src/i18n/ru.ts +150 -0
- package/src/index.ts +184 -0
- package/src/model/context.tsx +28 -0
- package/src/model/mutations.ts +387 -0
- package/src/model/queries.ts +154 -0
- package/src/model/queryKeys.ts +61 -0
- package/src/model/runtime.ts +48 -0
- package/src/widgets/registry.ts +101 -0
- package/src/widgets/validate.ts +224 -0
- package/tsconfig.json +26 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/api/generated/schema.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,KAAK;IAClB,2BAA2B,EAAE;QACzB,UAAU,EAAE;YACR,KAAK,CAAC,EAAE,KAAK,CAAC;YACd,MAAM,CAAC,EAAE,KAAK,CAAC;YACf,IAAI,CAAC,EAAE,KAAK,CAAC;YACb,MAAM,CAAC,EAAE,KAAK,CAAC;SAClB,CAAC;QACF;;;;;;;;;;;;;;;;;WAiBG;QACH,GAAG,EAAE,UAAU,CAAC,mCAAmC,CAAC,CAAC;QACrD,GAAG,CAAC,EAAE,KAAK,CAAC;QACZ,IAAI,CAAC,EAAE,KAAK,CAAC;QACb,MAAM,CAAC,EAAE,KAAK,CAAC;QACf,OAAO,CAAC,EAAE,KAAK,CAAC;QAChB,IAAI,CAAC,EAAE,KAAK,CAAC;QACb,KAAK,CAAC,EAAE,KAAK,CAAC;QACd,KAAK,CAAC,EAAE,KAAK,CAAC;KACjB,CAAC;IACF,qBAAqB,EAAE;QACnB,UAAU,EAAE;YACR,KAAK,CAAC,EAAE,KAAK,CAAC;YACd,MAAM,CAAC,EAAE,KAAK,CAAC;YACf,IAAI,CAAC,EAAE,KAAK,CAAC;YACb,MAAM,CAAC,EAAE,KAAK,CAAC;SAClB,CAAC;QACF;;;;WAIG;QACH,GAAG,EAAE,UAAU,CAAC,yBAAyB,CAAC,CAAC;QAC3C,GAAG,CAAC,EAAE,KAAK,CAAC;QACZ;;;;WAIG;QACH,IAAI,EAAE,UAAU,CAAC,2BAA2B,CAAC,CAAC;QAC9C,MAAM,CAAC,EAAE,KAAK,CAAC;QACf,OAAO,CAAC,EAAE,KAAK,CAAC;QAChB,IAAI,CAAC,EAAE,KAAK,CAAC;QACb,KAAK,CAAC,EAAE,KAAK,CAAC;QACd,KAAK,CAAC,EAAE,KAAK,CAAC;KACjB,CAAC;IACF,+BAA+B,EAAE;QAC7B,UAAU,EAAE;YACR,KAAK,CAAC,EAAE,KAAK,CAAC;YACd,MAAM,CAAC,EAAE,KAAK,CAAC;YACf,IAAI,CAAC,EAAE,KAAK,CAAC;YACb,MAAM,CAAC,EAAE,KAAK,CAAC;SAClB,CAAC;QACF;;;;WAIG;QACH,GAAG,EAAE,UAAU,CAAC,6BAA6B,CAAC,CAAC;QAC/C,GAAG,CAAC,EAAE,KAAK,CAAC;QACZ,IAAI,CAAC,EAAE,KAAK,CAAC;QACb;;;;WAIG;QACH,MAAM,EAAE,UAAU,CAAC,4BAA4B,CAAC,CAAC;QACjD,OAAO,CAAC,EAAE,KAAK,CAAC;QAChB,IAAI,CAAC,EAAE,KAAK,CAAC;QACb;;;;WAIG;QACH,KAAK,EAAE,UAAU,CAAC,mCAAmC,CAAC,CAAC;QACvD,KAAK,CAAC,EAAE,KAAK,CAAC;KACjB,CAAC;IACF,qCAAqC,EAAE;QACnC,UAAU,EAAE;YACR,KAAK,CAAC,EAAE,KAAK,CAAC;YACd,MAAM,CAAC,EAAE,KAAK,CAAC;YACf,IAAI,CAAC,EAAE,KAAK,CAAC;YACb,MAAM,CAAC,EAAE,KAAK,CAAC;SAClB,CAAC;QACF,GAAG,CAAC,EAAE,KAAK,CAAC;QACZ;;;;WAIG;QACH,GAAG,EAAE,UAAU,CAAC,iCAAiC,CAAC,CAAC;QACnD,IAAI,CAAC,EAAE,KAAK,CAAC;QACb,MAAM,CAAC,EAAE,KAAK,CAAC;QACf,OAAO,CAAC,EAAE,KAAK,CAAC;QAChB,IAAI,CAAC,EAAE,KAAK,CAAC;QACb,KAAK,CAAC,EAAE,KAAK,CAAC;QACd,KAAK,CAAC,EAAE,KAAK,CAAC;KACjB,CAAC;IACF,uCAAuC,EAAE;QACrC,UAAU,EAAE;YACR,KAAK,CAAC,EAAE,KAAK,CAAC;YACd,MAAM,CAAC,EAAE,KAAK,CAAC;YACf,IAAI,CAAC,EAAE,KAAK,CAAC;YACb,MAAM,CAAC,EAAE,KAAK,CAAC;SAClB,CAAC;QACF,GAAG,CAAC,EAAE,KAAK,CAAC;QACZ,GAAG,CAAC,EAAE,KAAK,CAAC;QACZ;;;;WAIG;QACH,IAAI,EAAE,UAAU,CAAC,mCAAmC,CAAC,CAAC;QACtD,MAAM,CAAC,EAAE,KAAK,CAAC;QACf,OAAO,CAAC,EAAE,KAAK,CAAC;QAChB,IAAI,CAAC,EAAE,KAAK,CAAC;QACb,KAAK,CAAC,EAAE,KAAK,CAAC;QACd,KAAK,CAAC,EAAE,KAAK,CAAC;KACjB,CAAC;IACF,2CAA2C,EAAE;QACzC,UAAU,EAAE;YACR,KAAK,CAAC,EAAE,KAAK,CAAC;YACd,MAAM,CAAC,EAAE,KAAK,CAAC;YACf,IAAI,CAAC,EAAE,KAAK,CAAC;YACb,MAAM,CAAC,EAAE,KAAK,CAAC;SAClB,CAAC;QACF,GAAG,CAAC,EAAE,KAAK,CAAC;QACZ,GAAG,CAAC,EAAE,KAAK,CAAC;QACZ;;;;WAIG;QACH,IAAI,EAAE,UAAU,CAAC,uCAAuC,CAAC,CAAC;QAC1D,MAAM,CAAC,EAAE,KAAK,CAAC;QACf,OAAO,CAAC,EAAE,KAAK,CAAC;QAChB,IAAI,CAAC,EAAE,KAAK,CAAC;QACb,KAAK,CAAC,EAAE,KAAK,CAAC;QACd,KAAK,CAAC,EAAE,KAAK,CAAC;KACjB,CAAC;IACF,qCAAqC,EAAE;QACnC,UAAU,EAAE;YACR,KAAK,CAAC,EAAE,KAAK,CAAC;YACd,MAAM,CAAC,EAAE,KAAK,CAAC;YACf,IAAI,CAAC,EAAE,KAAK,CAAC;YACb,MAAM,CAAC,EAAE,KAAK,CAAC;SAClB,CAAC;QACF,GAAG,CAAC,EAAE,KAAK,CAAC;QACZ,GAAG,CAAC,EAAE,KAAK,CAAC;QACZ;;;;WAIG;QACH,IAAI,EAAE,UAAU,CAAC,iCAAiC,CAAC,CAAC;QACpD,MAAM,CAAC,EAAE,KAAK,CAAC;QACf,OAAO,CAAC,EAAE,KAAK,CAAC;QAChB,IAAI,CAAC,EAAE,KAAK,CAAC;QACb,KAAK,CAAC,EAAE,KAAK,CAAC;QACd,KAAK,CAAC,EAAE,KAAK,CAAC;KACjB,CAAC;IACF,2CAA2C,EAAE;QACzC,UAAU,EAAE;YACR,KAAK,CAAC,EAAE,KAAK,CAAC;YACd,MAAM,CAAC,EAAE,KAAK,CAAC;YACf,IAAI,CAAC,EAAE,KAAK,CAAC;YACb,MAAM,CAAC,EAAE,KAAK,CAAC;SAClB,CAAC;QACF;;;;WAIG;QACH,GAAG,EAAE,UAAU,CAAC,qCAAqC,CAAC,CAAC;QACvD,GAAG,CAAC,EAAE,KAAK,CAAC;QACZ,IAAI,CAAC,EAAE,KAAK,CAAC;QACb,MAAM,CAAC,EAAE,KAAK,CAAC;QACf,OAAO,CAAC,EAAE,KAAK,CAAC;QAChB,IAAI,CAAC,EAAE,KAAK,CAAC;QACb,KAAK,CAAC,EAAE,KAAK,CAAC;QACd,KAAK,CAAC,EAAE,KAAK,CAAC;KACjB,CAAC;IACF,kDAAkD,EAAE;QAChD,UAAU,EAAE;YACR,KAAK,CAAC,EAAE,KAAK,CAAC;YACd,MAAM,CAAC,EAAE,KAAK,CAAC;YACf,IAAI,CAAC,EAAE,KAAK,CAAC;YACb,MAAM,CAAC,EAAE,KAAK,CAAC;SAClB,CAAC;QACF;;;;;;;;;WASG;QACH,GAAG,EAAE,UAAU,CAAC,gDAAgD,CAAC,CAAC;QAClE,GAAG,CAAC,EAAE,KAAK,CAAC;QACZ,IAAI,CAAC,EAAE,KAAK,CAAC;QACb,MAAM,CAAC,EAAE,KAAK,CAAC;QACf,OAAO,CAAC,EAAE,KAAK,CAAC;QAChB,IAAI,CAAC,EAAE,KAAK,CAAC;QACb,KAAK,CAAC,EAAE,KAAK,CAAC;QACd,KAAK,CAAC,EAAE,KAAK,CAAC;KACjB,CAAC;IACF,wCAAwC,EAAE;QACtC,UAAU,EAAE;YACR,KAAK,CAAC,EAAE,KAAK,CAAC;YACd,MAAM,CAAC,EAAE,KAAK,CAAC;YACf,IAAI,CAAC,EAAE,KAAK,CAAC;YACb,MAAM,CAAC,EAAE,KAAK,CAAC;SAClB,CAAC;QACF;;;;WAIG;QACH,GAAG,EAAE,UAAU,CAAC,kCAAkC,CAAC,CAAC;QACpD,GAAG,CAAC,EAAE,KAAK,CAAC;QACZ,IAAI,CAAC,EAAE,KAAK,CAAC;QACb,MAAM,CAAC,EAAE,KAAK,CAAC;QACf,OAAO,CAAC,EAAE,KAAK,CAAC;QAChB,IAAI,CAAC,EAAE,KAAK,CAAC;QACb,KAAK,CAAC,EAAE,KAAK,CAAC;QACd,KAAK,CAAC,EAAE,KAAK,CAAC;KACjB,CAAC;IACF,mCAAmC,EAAE;QACjC,UAAU,EAAE;YACR,KAAK,CAAC,EAAE,KAAK,CAAC;YACd,MAAM,CAAC,EAAE,KAAK,CAAC;YACf,IAAI,CAAC,EAAE,KAAK,CAAC;YACb,MAAM,CAAC,EAAE,KAAK,CAAC;SAClB,CAAC;QACF;;;;WAIG;QACH,GAAG,EAAE,UAAU,CAAC,8BAA8B,CAAC,CAAC;QAChD,GAAG,CAAC,EAAE,KAAK,CAAC;QACZ,IAAI,CAAC,EAAE,KAAK,CAAC;QACb,MAAM,CAAC,EAAE,KAAK,CAAC;QACf,OAAO,CAAC,EAAE,KAAK,CAAC;QAChB,IAAI,CAAC,EAAE,KAAK,CAAC;QACb,KAAK,CAAC,EAAE,KAAK,CAAC;QACd,KAAK,CAAC,EAAE,KAAK,CAAC;KACjB,CAAC;IACF,+CAA+C,EAAE;QAC7C,UAAU,EAAE;YACR,KAAK,CAAC,EAAE,KAAK,CAAC;YACd,MAAM,CAAC,EAAE,KAAK,CAAC;YACf,IAAI,CAAC,EAAE,KAAK,CAAC;YACb,MAAM,CAAC,EAAE,KAAK,CAAC;SAClB,CAAC;QACF,GAAG,CAAC,EAAE,KAAK,CAAC;QACZ,GAAG,CAAC,EAAE,KAAK,CAAC;QACZ;;;;WAIG;QACH,IAAI,EAAE,UAAU,CAAC,wCAAwC,CAAC,CAAC;QAC3D,MAAM,CAAC,EAAE,KAAK,CAAC;QACf,OAAO,CAAC,EAAE,KAAK,CAAC;QAChB,IAAI,CAAC,EAAE,KAAK,CAAC;QACb,KAAK,CAAC,EAAE,KAAK,CAAC;QACd,KAAK,CAAC,EAAE,KAAK,CAAC;KACjB,CAAC;IACF,2CAA2C,EAAE;QACzC,UAAU,EAAE;YACR,KAAK,CAAC,EAAE,KAAK,CAAC;YACd,MAAM,CAAC,EAAE,KAAK,CAAC;YACf,IAAI,CAAC,EAAE,KAAK,CAAC;YACb,MAAM,CAAC,EAAE,KAAK,CAAC;SAClB,CAAC;QACF;;;;WAIG;QACH,GAAG,EAAE,UAAU,CAAC,mCAAmC,CAAC,CAAC;QACrD,GAAG,CAAC,EAAE,KAAK,CAAC;QACZ,IAAI,CAAC,EAAE,KAAK,CAAC;QACb;;;;WAIG;QACH,MAAM,EAAE,UAAU,CAAC,kCAAkC,CAAC,CAAC;QACvD,OAAO,CAAC,EAAE,KAAK,CAAC;QAChB,IAAI,CAAC,EAAE,KAAK,CAAC;QACb,KAAK,CAAC,EAAE,KAAK,CAAC;QACd,KAAK,CAAC,EAAE,KAAK,CAAC;KACjB,CAAC;IACF,kDAAkD,EAAE;QAChD,UAAU,EAAE;YACR,KAAK,CAAC,EAAE,KAAK,CAAC;YACd,MAAM,CAAC,EAAE,KAAK,CAAC;YACf,IAAI,CAAC,EAAE,KAAK,CAAC;YACb,MAAM,CAAC,EAAE,KAAK,CAAC;SAClB,CAAC;QACF,GAAG,CAAC,EAAE,KAAK,CAAC;QACZ,GAAG,CAAC,EAAE,KAAK,CAAC;QACZ;;;;;;;;WAQG;QACH,IAAI,EAAE,UAAU,CAAC,wCAAwC,CAAC,CAAC;QAC3D,MAAM,CAAC,EAAE,KAAK,CAAC;QACf,OAAO,CAAC,EAAE,KAAK,CAAC;QAChB,IAAI,CAAC,EAAE,KAAK,CAAC;QACb,KAAK,CAAC,EAAE,KAAK,CAAC;QACd,KAAK,CAAC,EAAE,KAAK,CAAC;KACjB,CAAC;CACL;AACD,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC7C,MAAM,WAAW,UAAU;IACvB,OAAO,EAAE;QACL,KAAK,EAAE;YACH,MAAM,EAAE,OAAO,CAAC;SACnB,CAAC;QACF;;;;;;;;;;;;;WAaG;QACH,YAAY,EAAE;YACV,IAAI,EAAE,MAAM,CAAC;YACb,SAAS,EAAE,MAAM,CAAC;YAClB,OAAO,EAAE,OAAO,CAAC;YACjB,UAAU,EAAE,OAAO,CAAC;YACpB,MAAM,CAAC,EAAE;gBACL,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;aAC1B,EAAE,CAAC;SACP,CAAC;QACF;;;;;;;;;WASG;QACH,aAAa,EAAE;YACX,KAAK,CAAC,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC;YAChD,cAAc,CAAC,EAAE;gBACb,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;aAC3B,CAAC;SACL,CAAC;QACF,UAAU,EAAE;YACR,mBAAmB;YACnB,YAAY,EAAE,MAAM,CAAC;YACrB,KAAK,EAAE,MAAM,CAAC;YACd,QAAQ,CAAC,EAAE;gBACP,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;aAC1B,CAAC;YACF,YAAY,CAAC,EAAE,OAAO,CAAC;SAC1B,CAAC;QACF,kEAAkE;QAClE,gBAAgB,EAAE;YACd,yBAAyB;YACzB,KAAK,EAAE,MAAM,CAAC;YACd,yBAAyB;YACzB,KAAK,EAAE,MAAM,CAAC;YACd,6BAA6B;YAC7B,SAAS,EAAE,MAAM,CAAC;YAClB,EAAE,EAAE,MAAM,CAAC;YACX,YAAY,EAAE,MAAM,CAAC;YACrB,QAAQ,EAAE;gBACN,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;aAC1B,CAAC;YACF,UAAU,EAAE,MAAM,CAAC;YACnB,UAAU,EAAE,MAAM,CAAC;YACnB,2EAA2E;YAC3E,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;YAC/B,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;YAClC,kEAAkE;YAClE,YAAY,CAAC,EAAE;gBACX,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;aAC1B,GAAG,IAAI,CAAC;YACT,gBAAgB,CAAC,EAAE,MAAM,CAAC;YAC1B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;SAC9B,CAAC;QACF,qEAAqE;QACrE,uBAAuB,EAAE;YACrB,2BAA2B;YAC3B,OAAO,EAAE,MAAM,CAAC;YAChB,EAAE,EAAE,MAAM,CAAC;YACX,OAAO,EAAE,MAAM,CAAC;YAChB,MAAM,EAAE;gBACJ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;aAC1B,CAAC;YACF,YAAY,EAAE,MAAM,CAAC;YACrB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;YAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;SAC7B,CAAC;QACF,gBAAgB,EAAE;YACd,KAAK,CAAC,EAAE,MAAM,CAAC;YACf,QAAQ,CAAC,EAAE;gBACP,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;aAC1B,CAAC;SACL,CAAC;QACF,iFAAiF;QACjF,aAAa,EAAE;YACX,SAAS,EAAE,MAAM,CAAC;YAClB,UAAU,EAAE,MAAM,CAAC;YACnB,OAAO,EAAE,MAAM,CAAC;YAChB,MAAM,CAAC,EAAE;gBACL,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;aAC1B,EAAE,CAAC;YACJ,IAAI,CAAC,EAAE;gBACH,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;aAC1B,CAAC;SACL,CAAC;QACF,4FAA4F;QAC5F,gBAAgB,EAAE;YACd,UAAU,EAAE,MAAM,CAAC;YACnB,OAAO,EAAE,MAAM,CAAC;YAChB,YAAY,EAAE,MAAM,CAAC;SACxB,CAAC;QACF;;;;;;WAMG;QACH,MAAM,EAAE;YACJ,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;YACtB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;SAChC,CAAC;QACF,gDAAgD;QAChD,eAAe,EAAE;YACb,IAAI,EAAE,MAAM,CAAC;SAChB,CAAC;QACF,KAAK,EAAE;YACH,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,CAAC;SAC7C,CAAC;QACF;;;;;WAKG;QACH,SAAS,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;QACvC;;;;;;;WAOG;QACH,sBAAsB,EAAE;YACpB,EAAE,EAAE,MAAM,CAAC;YACX,OAAO,EAAE,MAAM,CAAC;YAChB,OAAO,EAAE,MAAM,CAAC;YAChB,UAAU,EAAE,MAAM,CAAC;YACnB,OAAO,EAAE;gBACL,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;aAC1B,CAAC;YACF,YAAY,EAAE,MAAM,CAAC;YACrB,4EAA4E;YAC5E,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;YAC7B,8EAA8E;YAC9E,WAAW,CAAC,EAAE;gBACV,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;aAC1B,GAAG,IAAI,CAAC;YACT,8FAA8F;YAC9F,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;SAC7B,CAAC;QACF;;;;;;;;WAQG;QACH,MAAM,EAAE;YACJ,OAAO,EAAE,OAAO,CAAC;YACjB,mBAAmB;YACnB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;YAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;SAC1B,CAAC;QACF;;;;;;WAMG;QACH,eAAe,EAAE;YACb,QAAQ,CAAC,EAAE,OAAO,CAAC;YACnB,YAAY,CAAC,EAAE,MAAM,CAAC;SACzB,CAAC;KACL,CAAC;IACF,SAAS,EAAE,KAAK,CAAC;IACjB,UAAU,EAAE,KAAK,CAAC;IAClB,aAAa,EAAE,KAAK,CAAC;IACrB,OAAO,EAAE,KAAK,CAAC;IACf,SAAS,EAAE,KAAK,CAAC;CACpB;AACD,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC1C,MAAM,WAAW,UAAU;IACvB,iCAAiC,EAAE;QAC/B,UAAU,EAAE;YACR,KAAK,EAAE;gBACH,YAAY,EAAE,MAAM,CAAC;aACxB,CAAC;YACF,MAAM,CAAC,EAAE,KAAK,CAAC;YACf,IAAI,CAAC,EAAE,KAAK,CAAC;YACb,MAAM,CAAC,EAAE,KAAK,CAAC;SAClB,CAAC;QACF,WAAW,CAAC,EAAE,KAAK,CAAC;QACpB,SAAS,EAAE;YACP,GAAG,EAAE;gBACD,OAAO,EAAE;oBACL,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;iBAC3B,CAAC;gBACF,OAAO,EAAE;oBACL,kBAAkB,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,eAAe,CAAC,CAAC;iBAC9D,CAAC;aACL,CAAC;SACL,CAAC;KACL,CAAC;IACF,uBAAuB,EAAE;QACrB,UAAU,EAAE;YACR,KAAK,EAAE;gBACH,KAAK,CAAC,EAAE,MAAM,CAAC;gBACf,YAAY,EAAE,MAAM,CAAC;aACxB,CAAC;YACF,MAAM,CAAC,EAAE,KAAK,CAAC;YACf,IAAI,CAAC,EAAE,KAAK,CAAC;YACb,MAAM,CAAC,EAAE,KAAK,CAAC;SAClB,CAAC;QACF,WAAW,CAAC,EAAE,KAAK,CAAC;QACpB,SAAS,EAAE;YACP,GAAG,EAAE;gBACD,OAAO,EAAE;oBACL,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;iBAC3B,CAAC;gBACF,OAAO,EAAE;oBACL,kBAAkB,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,EAAE,CAAC;iBACnE,CAAC;aACL,CAAC;SACL,CAAC;KACL,CAAC;IACF,yBAAyB,EAAE;QACvB,UAAU,EAAE;YACR,KAAK,CAAC,EAAE,KAAK,CAAC;YACd,MAAM,CAAC,EAAE,KAAK,CAAC;YACf,IAAI,CAAC,EAAE,KAAK,CAAC;YACb,MAAM,CAAC,EAAE,KAAK,CAAC;SAClB,CAAC;QACF,WAAW,EAAE;YACT,OAAO,EAAE;gBACL,kBAAkB,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC;gBACxD,mCAAmC,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC;gBACzE,qBAAqB,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC;aAC9D,CAAC;SACL,CAAC;QACF,SAAS,EAAE;YACP,GAAG,EAAE;gBACD,OAAO,EAAE;oBACL,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;iBAC3B,CAAC;gBACF,OAAO,EAAE;oBACL,kBAAkB,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,CAAC;iBACjE,CAAC;aACL,CAAC;SACL,CAAC;KACL,CAAC;IACF,2BAA2B,EAAE;QACzB,UAAU,EAAE;YACR,KAAK,EAAE;gBACH,YAAY,EAAE,MAAM,CAAC;aACxB,CAAC;YACF,MAAM,CAAC,EAAE,KAAK,CAAC;YACf,IAAI,EAAE;gBACF,OAAO,EAAE,MAAM,CAAC;aACnB,CAAC;YACF,MAAM,CAAC,EAAE,KAAK,CAAC;SAClB,CAAC;QACF,WAAW,CAAC,EAAE,KAAK,CAAC;QACpB,SAAS,EAAE;YACP,GAAG,EAAE;gBACD,OAAO,EAAE;oBACL,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;iBAC3B,CAAC;gBACF,OAAO,EAAE;oBACL,kBAAkB,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,CAAC;iBACjE,CAAC;aACL,CAAC;SACL,CAAC;KACL,CAAC;IACF,0BAA0B,EAAE;QACxB,UAAU,EAAE;YACR,KAAK,EAAE;gBACH,YAAY,EAAE,MAAM,CAAC;aACxB,CAAC;YACF,MAAM,CAAC,EAAE,KAAK,CAAC;YACf,IAAI,EAAE;gBACF,OAAO,EAAE,MAAM,CAAC;aACnB,CAAC;YACF,MAAM,CAAC,EAAE,KAAK,CAAC;SAClB,CAAC;QACF,WAAW,CAAC,EAAE,KAAK,CAAC;QACpB,SAAS,EAAE;YACP,oCAAoC;YACpC,GAAG,EAAE;gBACD,OAAO,EAAE;oBACL,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;iBAC3B,CAAC;gBACF,OAAO,CAAC,EAAE,KAAK,CAAC;aACnB,CAAC;SACL,CAAC;KACL,CAAC;IACF,iCAAiC,EAAE;QAC/B,UAAU,EAAE;YACR,KAAK,EAAE;gBACH,YAAY,EAAE,MAAM,CAAC;aACxB,CAAC;YACF,MAAM,CAAC,EAAE,KAAK,CAAC;YACf,IAAI,EAAE;gBACF,OAAO,EAAE,MAAM,CAAC;aACnB,CAAC;YACF,MAAM,CAAC,EAAE,KAAK,CAAC;SAClB,CAAC;QACF,WAAW,CAAC,EAAE;YACV,OAAO,EAAE;gBACL,kBAAkB,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,CAAC;gBAC9D,mCAAmC,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,CAAC;gBAC/E,qBAAqB,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,CAAC;aACpE,CAAC;SACL,CAAC;QACF,SAAS,EAAE;YACP,GAAG,EAAE;gBACD,OAAO,EAAE;oBACL,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;iBAC3B,CAAC;gBACF,OAAO,EAAE;oBACL,kBAAkB,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,CAAC;iBACjE,CAAC;aACL,CAAC;SACL,CAAC;KACL,CAAC;IACF,+BAA+B,EAAE;QAC7B,UAAU,EAAE;YACR,KAAK,EAAE;gBACH,YAAY,EAAE,MAAM,CAAC;aACxB,CAAC;YACF,MAAM,CAAC,EAAE,KAAK,CAAC;YACf,IAAI,EAAE;gBACF,OAAO,EAAE,MAAM,CAAC;aACnB,CAAC;YACF,MAAM,CAAC,EAAE,KAAK,CAAC;SAClB,CAAC;QACF,WAAW,EAAE;YACT,OAAO,EAAE;gBACL,kBAAkB,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC;gBACnD,mCAAmC,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC;gBACpE,qBAAqB,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC;aACzD,CAAC;SACL,CAAC;QACF,SAAS,EAAE;YACP,GAAG,EAAE;gBACD,OAAO,EAAE;oBACL,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;iBAC3B,CAAC;gBACF,OAAO,EAAE;oBACL,kBAAkB,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,CAAC;iBACjE,CAAC;aACL,CAAC;SACL,CAAC;KACL,CAAC;IACF,iCAAiC,EAAE;QAC/B,UAAU,EAAE;YACR,KAAK,EAAE;gBACH,YAAY,EAAE,MAAM,CAAC;aACxB,CAAC;YACF,MAAM,CAAC,EAAE,KAAK,CAAC;YACf,IAAI,EAAE;gBACF,OAAO,EAAE,MAAM,CAAC;aACnB,CAAC;YACF,MAAM,CAAC,EAAE,KAAK,CAAC;SAClB,CAAC;QACF,WAAW,CAAC,EAAE,KAAK,CAAC;QACpB,SAAS,EAAE;YACP,GAAG,EAAE;gBACD,OAAO,EAAE;oBACL,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;iBAC3B,CAAC;gBACF,OAAO,EAAE;oBACL,kBAAkB,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,CAAC;iBACjE,CAAC;aACL,CAAC;SACL,CAAC;KACL,CAAC;IACF,qCAAqC,EAAE;QACnC,UAAU,EAAE;YACR,KAAK,EAAE;gBACH,YAAY,EAAE,MAAM,CAAC;aACxB,CAAC;YACF,MAAM,CAAC,EAAE,KAAK,CAAC;YACf,IAAI,EAAE;gBACF,OAAO,EAAE,MAAM,CAAC;aACnB,CAAC;YACF,MAAM,CAAC,EAAE,KAAK,CAAC;SAClB,CAAC;QACF,WAAW,CAAC,EAAE,KAAK,CAAC;QACpB,SAAS,EAAE;YACP,GAAG,EAAE;gBACD,OAAO,EAAE;oBACL,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;iBAC3B,CAAC;gBACF,OAAO,EAAE;oBACL,kBAAkB,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,CAAC;iBACjE,CAAC;aACL,CAAC;SACL,CAAC;KACL,CAAC;IACF,+BAA+B,EAAE;QAC7B,UAAU,EAAE;YACR,KAAK,EAAE;gBACH,YAAY,EAAE,MAAM,CAAC;aACxB,CAAC;YACF,MAAM,CAAC,EAAE,KAAK,CAAC;YACf,IAAI,EAAE;gBACF,OAAO,EAAE,MAAM,CAAC;aACnB,CAAC;YACF,MAAM,CAAC,EAAE,KAAK,CAAC;SAClB,CAAC;QACF,WAAW,EAAE;YACT,OAAO,EAAE;gBACL,kBAAkB,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC;gBACnD,mCAAmC,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC;gBACpE,qBAAqB,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC;aACzD,CAAC;SACL,CAAC;QACF,SAAS,EAAE;YACP,GAAG,EAAE;gBACD,OAAO,EAAE;oBACL,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;iBAC3B,CAAC;gBACF,OAAO,EAAE;oBACL,kBAAkB,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,CAAC;iBACjE,CAAC;aACL,CAAC;SACL,CAAC;KACL,CAAC;IACF,mCAAmC,EAAE;QACjC,UAAU,EAAE;YACR,KAAK,EAAE;gBACH,6FAA6F;gBAC7F,MAAM,CAAC,EAAE,MAAM,CAAC;gBAChB,KAAK,CAAC,EAAE,MAAM,CAAC;gBACf,wEAAwE;gBACxE,OAAO,CAAC,EAAE,MAAM,CAAC;gBACjB,YAAY,EAAE,MAAM,CAAC;aACxB,CAAC;YACF,MAAM,CAAC,EAAE,KAAK,CAAC;YACf,IAAI,EAAE;gBACF,OAAO,EAAE,MAAM,CAAC;aACnB,CAAC;YACF,MAAM,CAAC,EAAE,KAAK,CAAC;SAClB,CAAC;QACF,WAAW,CAAC,EAAE,KAAK,CAAC;QACpB,SAAS,EAAE;YACP,GAAG,EAAE;gBACD,OAAO,EAAE;oBACL,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;iBAC3B,CAAC;gBACF,OAAO,EAAE;oBACL,kBAAkB,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,wBAAwB,CAAC,EAAE,CAAC;iBACzE,CAAC;aACL,CAAC;SACL,CAAC;KACL,CAAC;IACF,8CAA8C,EAAE;QAC5C,UAAU,EAAE;YACR,KAAK,EAAE;gBACH,uFAAuF;gBACvF,MAAM,CAAC,EAAE,MAAM,CAAC;gBAChB,2FAA2F;gBAC3F,OAAO,CAAC,EAAE,MAAM,CAAC;gBACjB,YAAY,EAAE,MAAM,CAAC;aACxB,CAAC;YACF,MAAM,CAAC,EAAE,KAAK,CAAC;YACf,IAAI,EAAE;gBACF,OAAO,EAAE,MAAM,CAAC;aACnB,CAAC;YACF,MAAM,CAAC,EAAE,KAAK,CAAC;SAClB,CAAC;QACF,WAAW,CAAC,EAAE,KAAK,CAAC;QACpB,SAAS,EAAE;YACP,oCAAoC;YACpC,GAAG,EAAE;gBACD,OAAO,EAAE;oBACL,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;iBAC3B,CAAC;gBACF,OAAO,CAAC,EAAE,KAAK,CAAC;aACnB,CAAC;SACL,CAAC;KACL,CAAC;IACF,gCAAgC,EAAE;QAC9B,UAAU,EAAE;YACR,KAAK,EAAE;gBACH,YAAY,EAAE,MAAM,CAAC;aACxB,CAAC;YACF,MAAM,CAAC,EAAE,KAAK,CAAC;YACf,IAAI,EAAE;gBACF,OAAO,EAAE,MAAM,CAAC;aACnB,CAAC;YACF,MAAM,CAAC,EAAE,KAAK,CAAC;SAClB,CAAC;QACF,WAAW,CAAC,EAAE,KAAK,CAAC;QACpB,SAAS,EAAE;YACP,GAAG,EAAE;gBACD,OAAO,EAAE;oBACL,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;iBAC3B,CAAC;gBACF,OAAO,EAAE;oBACL,kBAAkB,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,yBAAyB,CAAC,EAAE,CAAC;iBAC1E,CAAC;aACL,CAAC;SACL,CAAC;KACL,CAAC;IACF,4BAA4B,EAAE;QAC1B,UAAU,EAAE;YACR,KAAK,CAAC,EAAE,KAAK,CAAC;YACd,MAAM,CAAC,EAAE,KAAK,CAAC;YACf,IAAI,EAAE;gBACF,SAAS,EAAE,MAAM,CAAC;aACrB,CAAC;YACF,MAAM,CAAC,EAAE,KAAK,CAAC;SAClB,CAAC;QACF,WAAW,CAAC,EAAE,KAAK,CAAC;QACpB,SAAS,EAAE;YACP,GAAG,EAAE;gBACD,OAAO,EAAE;oBACL,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;iBAC3B,CAAC;gBACF,OAAO,EAAE;oBACL,kBAAkB,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,eAAe,CAAC,CAAC;iBAC9D,CAAC;aACL,CAAC;SACL,CAAC;KACL,CAAC;IACF,sCAAsC,EAAE;QACpC,UAAU,EAAE;YACR,KAAK,CAAC,EAAE,KAAK,CAAC;YACd,MAAM,CAAC,EAAE,KAAK,CAAC;YACf,IAAI,EAAE;gBACF,SAAS,EAAE,MAAM,CAAC;aACrB,CAAC;YACF,MAAM,CAAC,EAAE,KAAK,CAAC;SAClB,CAAC;QACF,WAAW,EAAE;YACT,OAAO,EAAE;gBACL,kBAAkB,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC;gBACpD,mCAAmC,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC;gBACrE,qBAAqB,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC;aAC1D,CAAC;SACL,CAAC;QACF,SAAS,EAAE;YACP,GAAG,EAAE;gBACD,OAAO,EAAE;oBACL,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;iBAC3B,CAAC;gBACF,OAAO,EAAE;oBACL,kBAAkB,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,CAAC;iBAChE,CAAC;aACL,CAAC;SACL,CAAC;KACL,CAAC;IACF,iCAAiC,EAAE;QAC/B,UAAU,EAAE;YACR,KAAK,EAAE;gBACH,YAAY,EAAE,MAAM,CAAC;aACxB,CAAC;YACF,MAAM,CAAC,EAAE,KAAK,CAAC;YACf,IAAI,EAAE;gBACF,aAAa,EAAE,MAAM,CAAC;aACzB,CAAC;YACF,MAAM,CAAC,EAAE,KAAK,CAAC;SAClB,CAAC;QACF,WAAW,CAAC,EAAE,KAAK,CAAC;QACpB,SAAS,EAAE;YACP,GAAG,EAAE;gBACD,OAAO,EAAE;oBACL,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;iBAC3B,CAAC;gBACF,OAAO,EAAE;oBACL,kBAAkB,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,wBAAwB,CAAC,CAAC;iBACvE,CAAC;aACL,CAAC;SACL,CAAC;KACL,CAAC;IACF,gCAAgC,EAAE;QAC9B,UAAU,EAAE;YACR,KAAK,EAAE;gBACH,YAAY,EAAE,MAAM,CAAC;aACxB,CAAC;YACF,MAAM,CAAC,EAAE,KAAK,CAAC;YACf,IAAI,EAAE;gBACF,aAAa,EAAE,MAAM,CAAC;aACzB,CAAC;YACF,MAAM,CAAC,EAAE,KAAK,CAAC;SAClB,CAAC;QACF,WAAW,CAAC,EAAE,KAAK,CAAC;QACpB,SAAS,EAAE;YACP,oCAAoC;YACpC,GAAG,EAAE;gBACD,OAAO,EAAE;oBACL,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;iBAC3B,CAAC;gBACF,OAAO,CAAC,EAAE,KAAK,CAAC;aACnB,CAAC;SACL,CAAC;KACL,CAAC;IACF,sCAAsC,EAAE;QACpC,UAAU,EAAE;YACR,KAAK,EAAE;gBACH,YAAY,EAAE,MAAM,CAAC;aACxB,CAAC;YACF,MAAM,CAAC,EAAE,KAAK,CAAC;YACf,IAAI,EAAE;gBACF,aAAa,EAAE,MAAM,CAAC;aACzB,CAAC;YACF,MAAM,CAAC,EAAE,KAAK,CAAC;SAClB,CAAC;QACF,WAAW,CAAC,EAAE;YACV,OAAO,EAAE;gBACL,kBAAkB,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC;gBACpD,mCAAmC,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC;gBACrE,qBAAqB,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC;aAC1D,CAAC;SACL,CAAC;QACF,SAAS,EAAE;YACP,GAAG,EAAE;gBACD,OAAO,EAAE;oBACL,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;iBAC3B,CAAC;gBACF,OAAO,EAAE;oBACL,kBAAkB,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,CAAC;iBAChE,CAAC;aACL,CAAC;SACL,CAAC;KACL,CAAC;CACL"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/api/generated/schema.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Wire types for the stapel-forms HTTP contract — **derived from the generated
|
|
3
|
+
* OpenAPI surface** (frontend-standard §2/§3), never hand-maintained. The
|
|
4
|
+
* single source of truth is `components["schemas"]` from this pair's own
|
|
5
|
+
* package-LOCAL generated schema (`./generated/schema.js`, produced by
|
|
6
|
+
* `pnpm gen:api` from stapel-forms's OWN `docs/schema.json` — the §17-native
|
|
7
|
+
* per-module contract). Alias the schemas this pair uses under local names
|
|
8
|
+
* here; do NOT write parallel response bodies. Where drf-spectacular +
|
|
9
|
+
* openapi-typescript under-describe the runtime, apply a small documented
|
|
10
|
+
* correction — each one below states WHAT the generator lost and WHY the
|
|
11
|
+
* correction is safe.
|
|
12
|
+
*/
|
|
13
|
+
import type { components } from "./generated/schema.js";
|
|
14
|
+
/** The generated schema table — the one source of truth for wire shapes. */
|
|
15
|
+
export type Schemas = components["schemas"];
|
|
16
|
+
/**
|
|
17
|
+
* The ten attribute kinds a stapel-forms schema may use
|
|
18
|
+
* (`STAPEL_FORMS["FIELD_KINDS"]`, `conf.py::DEFAULT_FIELD_KINDS`). A host that
|
|
19
|
+
* registers an extra `stapel_attributes` type server-side can put a kind here
|
|
20
|
+
* that this union does not name — which is exactly why {@link FormFieldDef}
|
|
21
|
+
* types `kind` as a plain `string` and the widget registry answers "unsupported
|
|
22
|
+
* field" instead of crashing. This union is the CLOSED set the pair ships
|
|
23
|
+
* builtin widgets for, not a claim about what the server may send.
|
|
24
|
+
*/
|
|
25
|
+
export type BuiltinFieldKind = "string" | "int" | "float" | "bool" | "select" | "date" | "header" | "hex_color" | "hierarchical_select" | "convertible_unit";
|
|
26
|
+
/** Every {@link BuiltinFieldKind}, in the order the builder offers them. */
|
|
27
|
+
export declare const BUILTIN_FIELD_KINDS: readonly BuiltinFieldKind[];
|
|
28
|
+
/**
|
|
29
|
+
* One field of a form schema — a `stapel_attributes` `FeatureDef` dict.
|
|
30
|
+
*
|
|
31
|
+
* GENERATOR CORRECTION. `PublicFormDTO.fields` is declared
|
|
32
|
+
* `{[key: string]: unknown}[]`: the backend serializes whatever
|
|
33
|
+
* `coerce_feature_defs` accepts and drf-spectacular cannot see inside it. The
|
|
34
|
+
* shape IS pinned by `stapel_attributes.FeatureDef` (slug/config/name/mandatory
|
|
35
|
+
* /show_at_title/show_as_badge/translate) and by `stapel_forms.schema`'s
|
|
36
|
+
* validator, so naming the fields here is a correction, not an invention. The
|
|
37
|
+
* `& Record<string, unknown>` tail keeps an EXTRA_TYPES field's own keys
|
|
38
|
+
* reachable without a cast.
|
|
39
|
+
*
|
|
40
|
+
* `config` keys are **camelCase** (`maxLength`, not `max_length`) — backend
|
|
41
|
+
* delta note 1: the type dataclasses drop unknown keys silently, so a
|
|
42
|
+
* snake_case typo is a constraint that does not exist. `publish` refuses those
|
|
43
|
+
* with `error.400.forms_invalid_schema` carrying `params.key`.
|
|
44
|
+
*/
|
|
45
|
+
export type FormFieldDef = {
|
|
46
|
+
/** Answer key. Unique per schema (`error.400.forms_duplicate_slug`). */
|
|
47
|
+
readonly slug: string;
|
|
48
|
+
/** The attribute type. A kind outside {@link BuiltinFieldKind} is legal
|
|
49
|
+
* server-side and renders through the unsupported-field notice. */
|
|
50
|
+
readonly kind: string;
|
|
51
|
+
/** Admin-authored label. NOT an i18n key — see the i18n note in README. */
|
|
52
|
+
readonly name?: string;
|
|
53
|
+
/** Kind-specific configuration, camelCase keys. */
|
|
54
|
+
readonly config?: Readonly<Record<string, unknown>>;
|
|
55
|
+
/** Required — the client mirrors it, the server decides it. */
|
|
56
|
+
readonly mandatory?: boolean;
|
|
57
|
+
readonly show_at_title?: boolean;
|
|
58
|
+
readonly show_as_badge?: boolean;
|
|
59
|
+
readonly translate?: boolean;
|
|
60
|
+
} & Record<string, unknown>;
|
|
61
|
+
/**
|
|
62
|
+
* A form schema's non-field metadata (`stapel_forms.schema.META_KEYS`). Every
|
|
63
|
+
* key is optional and admin-authored; `logic` is deliberately absent (v1 has no
|
|
64
|
+
* conditional branching, and reserving the key keeps adding it additive).
|
|
65
|
+
*/
|
|
66
|
+
export interface FormSchemaMeta {
|
|
67
|
+
readonly title?: string;
|
|
68
|
+
readonly description?: string;
|
|
69
|
+
readonly confirmation_text?: string;
|
|
70
|
+
readonly submit_label?: string;
|
|
71
|
+
}
|
|
72
|
+
/** The stored/authored schema envelope: `{fields, meta}`. */
|
|
73
|
+
export interface FormSchema {
|
|
74
|
+
readonly fields: readonly FormFieldDef[];
|
|
75
|
+
readonly meta?: FormSchemaMeta;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* `GET /public/<public_id>/` 200 — what an anonymous respondent may know.
|
|
79
|
+
*
|
|
80
|
+
* GENERATOR CORRECTION, twice over: `fields` is narrowed to
|
|
81
|
+
* {@link FormFieldDef}[] (see above) and made REQUIRED. drf-spectacular marks
|
|
82
|
+
* only `public_id`/`version`/`version_id` required because the presenter's
|
|
83
|
+
* dataclass gives `fields`/`meta` defaults — but the view never omits them, and
|
|
84
|
+
* a renderer that must branch on `fields === undefined` would be branching on a
|
|
85
|
+
* case the server cannot produce.
|
|
86
|
+
*/
|
|
87
|
+
export type PublicForm = Omit<Schemas["PublicFormDTO"], "fields" | "meta"> & {
|
|
88
|
+
readonly fields: readonly FormFieldDef[];
|
|
89
|
+
readonly meta: FormSchemaMeta;
|
|
90
|
+
};
|
|
91
|
+
/** `POST /public/<public_id>/submissions/` body. `answers` are BARE SCALARS
|
|
92
|
+
* keyed by slug — a `select` answer may be a single value and the server
|
|
93
|
+
* normalizes it to a list. `version_id` is echoed back from the rendered
|
|
94
|
+
* schema; omitting it forfeits the clean 409 and risks mis-validation. */
|
|
95
|
+
export interface SubmitRequest {
|
|
96
|
+
readonly answers: Readonly<Record<string, unknown>>;
|
|
97
|
+
readonly version_id?: string | null;
|
|
98
|
+
/** The captcha seam (spec §12 risk 3): the netintel tier decides whether a
|
|
99
|
+
* token is required at all, so it stays optional and the captcha layer
|
|
100
|
+
* refuses on its own terms. */
|
|
101
|
+
readonly captcha_token?: string;
|
|
102
|
+
}
|
|
103
|
+
/** `POST .../submissions/` 201 — deliberately NOT the submission id (there is
|
|
104
|
+
* no public read of submissions). */
|
|
105
|
+
export type SubmitResult = Schemas["SubmitResultDTO"];
|
|
106
|
+
/** `open | closed | draft`. */
|
|
107
|
+
export type FormState = Schemas["StateEnum"];
|
|
108
|
+
/**
|
|
109
|
+
* A `Form` row as its workspace's admins see it.
|
|
110
|
+
*
|
|
111
|
+
* GENERATOR CORRECTION: `draft_schema` is narrowed from `{[k: string]: unknown}`
|
|
112
|
+
* to {@link FormSchema} — the builder reads `.fields` off it, and the backend
|
|
113
|
+
* stores exactly the normalized envelope. `settings` keeps its open shape (a
|
|
114
|
+
* host may add keys) but names the destinations the pair drives.
|
|
115
|
+
*/
|
|
116
|
+
export type FormRow = Omit<Schemas["FormPresenterDTO"], "draft_schema" | "settings"> & {
|
|
117
|
+
readonly draft_schema: FormSchema | null;
|
|
118
|
+
readonly settings: FormSettings;
|
|
119
|
+
};
|
|
120
|
+
/**
|
|
121
|
+
* `Form.settings` — an open bag whose notification keys the pair drives.
|
|
122
|
+
* Backend delta note 4: the spec's `notify_channels` was NOT built. Channels
|
|
123
|
+
* are a property of the routing entry; what a form needs is DESTINATIONS, so
|
|
124
|
+
* these keys name destinations and map to `request_notification` keywords
|
|
125
|
+
* through `notifications.TARGET_KINDS`.
|
|
126
|
+
*/
|
|
127
|
+
export type FormSettings = {
|
|
128
|
+
readonly notify_emails?: readonly string[];
|
|
129
|
+
readonly notify_telegram_chat_ids?: readonly string[];
|
|
130
|
+
} & Record<string, unknown>;
|
|
131
|
+
/** `POST /forms` body. */
|
|
132
|
+
export interface FormCreateRequest {
|
|
133
|
+
readonly workspace_id: string;
|
|
134
|
+
readonly title: string;
|
|
135
|
+
readonly settings?: FormSettings;
|
|
136
|
+
readonly draft_schema?: FormSchema;
|
|
137
|
+
}
|
|
138
|
+
/** `PATCH /forms/<id>` body — title and settings only; the schema moves
|
|
139
|
+
* through `draft` + `publish`, never through a partial update. */
|
|
140
|
+
export interface FormPatchRequest {
|
|
141
|
+
readonly title?: string;
|
|
142
|
+
readonly settings?: FormSettings;
|
|
143
|
+
}
|
|
144
|
+
/** `POST /forms/<id>/publish` 200 — the new immutable version. */
|
|
145
|
+
export type PublishResult = Schemas["PublishResultDTO"];
|
|
146
|
+
/** One published, immutable schema version. */
|
|
147
|
+
export type FormVersion = Omit<Schemas["FormVersionPresenterDTO"], "schema"> & {
|
|
148
|
+
readonly schema: FormSchema;
|
|
149
|
+
};
|
|
150
|
+
/** One response, as a reviewer sees it. `answers` is `{slug: value}` (the raw
|
|
151
|
+
* DAO's display metadata is dropped — the reviewer has it from the version). */
|
|
152
|
+
export type Submission = Schemas["SubmissionPresenterDTO"];
|
|
153
|
+
/** `POST /submissions/<id>/resend` body. Backend delta note 7: given either
|
|
154
|
+
* list, the form's configured targets are REPLACED, not supplemented — "send
|
|
155
|
+
* this one to legal" must not also re-send it to everyone who already has it. */
|
|
156
|
+
export interface ResendRequest {
|
|
157
|
+
readonly recipients?: readonly string[];
|
|
158
|
+
readonly telegram_chat_ids?: readonly string[];
|
|
159
|
+
}
|
|
160
|
+
/** `POST /submissions/<id>/resend` 200. */
|
|
161
|
+
export type ResendResult = Schemas["ResendResultDTO"];
|
|
162
|
+
/** Query for the keyset-paginated submission list. */
|
|
163
|
+
export interface SubmissionListParams {
|
|
164
|
+
readonly workspaceId: string;
|
|
165
|
+
readonly formId: string;
|
|
166
|
+
/** Keyset cursor — the previous page's last `submitted_at`. */
|
|
167
|
+
readonly before?: string;
|
|
168
|
+
readonly limit?: number;
|
|
169
|
+
/** Restrict to answers of one schema version. */
|
|
170
|
+
readonly version?: number;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* One declared config-form field, passed through from stapel-attributes'
|
|
174
|
+
* `config_form.FormField.to_dict()` VERBATIM by the backend — so a kind gains
|
|
175
|
+
* config fields upstream with no release on either side of the wire.
|
|
176
|
+
*
|
|
177
|
+
* GENERATOR CORRECTION: `FieldKindDTO.fields` is declared
|
|
178
|
+
* `{[key: string]: unknown}[]` because drf-spectacular cannot see inside a
|
|
179
|
+
* pass-through. The shape is pinned by `FormField.to_dict()`, so naming it here
|
|
180
|
+
* is a correction rather than an invention; the `& Record<string, unknown>`
|
|
181
|
+
* tail keeps a host widget's own params reachable without a cast.
|
|
182
|
+
*/
|
|
183
|
+
export type ConfigFieldSpec = {
|
|
184
|
+
/** The config key this field edits. Order within a kind is significant. */
|
|
185
|
+
readonly name: string;
|
|
186
|
+
/** A key of {@link FieldKindCatalogue.configWidgets} — the WIDGET
|
|
187
|
+
* vocabulary, not the feature-type vocabulary. */
|
|
188
|
+
readonly kind: string;
|
|
189
|
+
/** Upstream i18n key, `admin.attributes.form.<type>.<field>`. */
|
|
190
|
+
readonly label_key: string;
|
|
191
|
+
/** Cosmetic `*` marker only — real validation is server-side. */
|
|
192
|
+
readonly required?: boolean;
|
|
193
|
+
/** Applied when the config key is absent. */
|
|
194
|
+
readonly default?: unknown;
|
|
195
|
+
/** Widget-specific params (`step`, `itemType`, inline `options`,
|
|
196
|
+
* `placeholder`, …). Only keys the widget understands are meaningful. */
|
|
197
|
+
readonly params?: Readonly<Record<string, unknown>>;
|
|
198
|
+
} & Record<string, unknown>;
|
|
199
|
+
/** One field kind the builder may offer. */
|
|
200
|
+
export type FieldKind = Omit<Schemas["FieldKindDTO"], "fields"> & {
|
|
201
|
+
/**
|
|
202
|
+
* The kind's config-form declaration. **Empty means the kind declares no
|
|
203
|
+
* config form** (upstream `BUILTIN_FORMS` simply has no entry — this is how
|
|
204
|
+
* `convertible_unit` arrives), which is one of the two builder-less signals.
|
|
205
|
+
*/
|
|
206
|
+
readonly fields: readonly ConfigFieldSpec[];
|
|
207
|
+
};
|
|
208
|
+
/**
|
|
209
|
+
* `GET /field-kinds` 200 — the whole catalogue behind the builder.
|
|
210
|
+
*
|
|
211
|
+
* `config_widgets` is upstream's `config_form.FIELD_KINDS`: the widget
|
|
212
|
+
* vocabulary a declaration's `kind` draws from, mapped to the params each
|
|
213
|
+
* widget understands. Named apart from `kinds` on purpose — forms' own
|
|
214
|
+
* `FIELD_KINDS` setting is the feature-TYPE allowlist, and two different things
|
|
215
|
+
* under one name is how a builder ends up drawing a `number` where a `string`
|
|
216
|
+
* belongs.
|
|
217
|
+
*/
|
|
218
|
+
export interface FieldKindCatalogue {
|
|
219
|
+
readonly kinds: readonly FieldKind[];
|
|
220
|
+
readonly configWidgets: Readonly<Record<string, readonly string[]>>;
|
|
221
|
+
}
|
|
222
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/** Every {@link BuiltinFieldKind}, in the order the builder offers them. */
|
|
2
|
+
export const BUILTIN_FIELD_KINDS = [
|
|
3
|
+
"string",
|
|
4
|
+
"int",
|
|
5
|
+
"float",
|
|
6
|
+
"bool",
|
|
7
|
+
"select",
|
|
8
|
+
"date",
|
|
9
|
+
"header",
|
|
10
|
+
"hex_color",
|
|
11
|
+
"hierarchical_select",
|
|
12
|
+
"convertible_unit",
|
|
13
|
+
];
|
|
14
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":"AAwCA,4EAA4E;AAC5E,MAAM,CAAC,MAAM,mBAAmB,GAAgC;IAC9D,QAAQ;IACR,KAAK;IACL,OAAO;IACP,MAAM;IACN,QAAQ;IACR,MAAM;IACN,QAAQ;IACR,WAAW;IACX,qBAAqB;IACrB,kBAAkB;CACnB,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One row of a field's config form, chosen by the CONFIG-WIDGET KIND — the
|
|
3
|
+
* mechanism that makes `<FormBuilderPane>` data-driven rather than a
|
|
4
|
+
* hand-written form per attribute type.
|
|
5
|
+
*
|
|
6
|
+
* `stapel_attributes.config_form` declares each feature type's admin form as
|
|
7
|
+
* a list of `FormField(name, kind, …)` where `kind` comes from a fixed
|
|
8
|
+
* 13-entry vocabulary (`FIELD_KINDS`), and stapel-forms 0.2.0 serves those
|
|
9
|
+
* declarations at `GET /field-kinds`. This file implements the WIDGET
|
|
10
|
+
* vocabulary once, so a feature type registered by a host gets a working
|
|
11
|
+
* config form with no new UI — and, now that the declarations are fetched
|
|
12
|
+
* rather than mirrored, with no client release either.
|
|
13
|
+
*
|
|
14
|
+
* Two of upstream's 13 widgets are not implemented here — `hierarchical_options`
|
|
15
|
+
* (a tree editor) and `timestamp_array`. Their rows render with an explanation
|
|
16
|
+
* rather than vanishing: a config form that hides an option looks complete when
|
|
17
|
+
* it is not. The `default:` arm catches those two AND anything a future
|
|
18
|
+
* attributes release adds, so a new widget degrades loudly instead of writing a
|
|
19
|
+
* wrong shape into a published schema.
|
|
20
|
+
*/
|
|
21
|
+
import type { ReactElement } from "react";
|
|
22
|
+
import type { ConfigFieldSpec } from "../api/types.js";
|
|
23
|
+
export interface ConfigFieldProps {
|
|
24
|
+
readonly spec: ConfigFieldSpec;
|
|
25
|
+
readonly value: unknown;
|
|
26
|
+
readonly disabled: boolean;
|
|
27
|
+
/** `undefined` REMOVES the key — an absent config key means "the engine's
|
|
28
|
+
* own default", which is not the same as a stored `null`. */
|
|
29
|
+
onChange(value: unknown): void;
|
|
30
|
+
}
|
|
31
|
+
export declare function ConfigField(props: ConfigFieldProps): ReactElement;
|
|
32
|
+
//# sourceMappingURL=ConfigField.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConfigField.d.ts","sourceRoot":"","sources":["../../src/default/ConfigField.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAG1C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AA8EvD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B;iEAC6D;IAC7D,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;CAChC;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,YAAY,CAoHjE"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Input, InputNumber, Select, Switch, Typography } from "antd";
|
|
3
|
+
import { useT } from "@stapel/core";
|
|
4
|
+
import { FORMS_I18N_KEYS } from "../i18n/keys.js";
|
|
5
|
+
function str(value) {
|
|
6
|
+
return typeof value === "string" ? value : value == null ? "" : String(value);
|
|
7
|
+
}
|
|
8
|
+
function numberish(value) {
|
|
9
|
+
if (typeof value === "number" && Number.isFinite(value))
|
|
10
|
+
return value;
|
|
11
|
+
return undefined;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Widget params live under `spec.params`, not flattened onto the spec — that
|
|
15
|
+
* is `FormField.to_dict()`'s real shape, which the pair only saw once the
|
|
16
|
+
* declarations came off the wire instead of a hand-written mirror.
|
|
17
|
+
*/
|
|
18
|
+
function param(spec, key) {
|
|
19
|
+
return (spec.params ?? {})[key];
|
|
20
|
+
}
|
|
21
|
+
function paramNumber(spec, key) {
|
|
22
|
+
const raw = param(spec, key);
|
|
23
|
+
return typeof raw === "number" && Number.isFinite(raw) ? raw : undefined;
|
|
24
|
+
}
|
|
25
|
+
function paramString(spec, key) {
|
|
26
|
+
const raw = param(spec, key);
|
|
27
|
+
return typeof raw === "string" && raw.length > 0 ? raw : undefined;
|
|
28
|
+
}
|
|
29
|
+
/** Inline `{value, label}` choices for a `select` config widget. */
|
|
30
|
+
function paramOptions(spec) {
|
|
31
|
+
const raw = param(spec, "options");
|
|
32
|
+
if (!Array.isArray(raw))
|
|
33
|
+
return [];
|
|
34
|
+
return raw.flatMap((option) => {
|
|
35
|
+
if (option === null || typeof option !== "object")
|
|
36
|
+
return [];
|
|
37
|
+
const entry = option;
|
|
38
|
+
const value = str(entry.value);
|
|
39
|
+
return [{ value, label: entry.label == null ? value : str(entry.label) }];
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
/** A tag-style list editor for the `*_options` kinds. `number_options`
|
|
43
|
+
* coerces back to numbers so a numeric option list does not silently become
|
|
44
|
+
* a list of strings the engine will refuse. */
|
|
45
|
+
function OptionsList(props) {
|
|
46
|
+
const current = Array.isArray(props.value) ? props.value.map(str) : [];
|
|
47
|
+
return (_jsx(Select, { mode: "tags", style: { width: "100%" }, value: current, disabled: props.disabled, open: false, suffixIcon: null, onChange: (next) => {
|
|
48
|
+
if (next.length === 0) {
|
|
49
|
+
props.onChange(undefined);
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
props.onChange(props.numeric
|
|
53
|
+
? next.map(Number).filter((n) => Number.isFinite(n))
|
|
54
|
+
: next);
|
|
55
|
+
} }));
|
|
56
|
+
}
|
|
57
|
+
export function ConfigField(props) {
|
|
58
|
+
const t = useT();
|
|
59
|
+
const { spec, value, disabled } = props;
|
|
60
|
+
switch (spec.kind) {
|
|
61
|
+
case "number":
|
|
62
|
+
return (_jsx(InputNumber, { style: { width: "100%" }, value: numberish(value) ?? null, disabled: disabled, ...(paramNumber(spec, "step") !== undefined
|
|
63
|
+
? { step: paramNumber(spec, "step") }
|
|
64
|
+
: {}), onChange: (next) => props.onChange(next ?? undefined) }));
|
|
65
|
+
case "max_selected_dropdown":
|
|
66
|
+
// Absent = unlimited, which is `SelectConfig.maxSelected = None`. The
|
|
67
|
+
// placeholder says so, and clearing the number restores it.
|
|
68
|
+
return (_jsx(InputNumber, { style: { width: "100%" }, value: numberish(value) ?? null, disabled: disabled, min: 1, step: 1, placeholder: t(FORMS_I18N_KEYS.fillUnlimited), onChange: (next) => props.onChange(next ?? undefined) }));
|
|
69
|
+
case "text":
|
|
70
|
+
case "translatable_text":
|
|
71
|
+
// v1 edits the base string only. A per-locale editor is the same v2
|
|
72
|
+
// fork as translated form CONTENT (spec §10) — offering one language
|
|
73
|
+
// box per locale here would imply a translation pipeline that does not
|
|
74
|
+
// exist yet.
|
|
75
|
+
return (_jsx(Input, { value: str(value), disabled: disabled, ...(paramString(spec, "placeholder") !== undefined
|
|
76
|
+
? { placeholder: paramString(spec, "placeholder") }
|
|
77
|
+
: {}), onChange: (event) => props.onChange(event.target.value || undefined) }));
|
|
78
|
+
case "checkbox":
|
|
79
|
+
return (_jsx(Switch, { checked: value === true, disabled: disabled, onChange: (checked) => props.onChange(checked) }));
|
|
80
|
+
case "select":
|
|
81
|
+
return (_jsx(Select, { style: { width: "100%" }, value: str(value) || null, disabled: disabled, options: [...paramOptions(spec)], onChange: (next) => props.onChange(next) }));
|
|
82
|
+
case "number_options":
|
|
83
|
+
return (_jsx(OptionsList, { value: value, numeric: true, disabled: disabled, onChange: props.onChange }));
|
|
84
|
+
// `select_options_with_default` shares this editor: the per-option
|
|
85
|
+
// "default" marker is not editable in v1; the option LIST — the part a
|
|
86
|
+
// form actually needs — is.
|
|
87
|
+
case "string_options":
|
|
88
|
+
case "color_options":
|
|
89
|
+
case "select_options_with_default":
|
|
90
|
+
return (_jsx(OptionsList, { value: value, numeric: false, disabled: disabled, onChange: props.onChange }));
|
|
91
|
+
case "timestamp":
|
|
92
|
+
return (_jsx(Input, { type: "date", value: str(value), disabled: disabled, onChange: (event) => props.onChange(event.target.value || undefined) }));
|
|
93
|
+
default:
|
|
94
|
+
// `hierarchical_options` (a tree editor) and `timestamp_array` — the two
|
|
95
|
+
// of upstream's 13 config widgets this skin does not implement — plus any
|
|
96
|
+
// widget a future attributes release adds. Say so rather than render a
|
|
97
|
+
// control that would write a wrong shape into a published schema.
|
|
98
|
+
return (_jsx(Typography.Text, { type: "secondary", children: t(FORMS_I18N_KEYS.builderUnsupportedConfig, { keys: spec.name }) }));
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=ConfigField.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConfigField.js","sourceRoot":"","sources":["../../src/default/ConfigField.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { CSSProperties, ReactElement, ReactNode } from "react";
|
|
2
|
+
import type { FlowErrorDisplay } from "@stapel/core";
|
|
3
|
+
export declare function ErrorAlert(props: {
|
|
4
|
+
error: FlowErrorDisplay | undefined;
|
|
5
|
+
style?: CSSProperties | undefined;
|
|
6
|
+
testId?: string | undefined;
|
|
7
|
+
action?: ReactNode;
|
|
8
|
+
}): ReactElement | null;
|
|
9
|
+
//# sourceMappingURL=ErrorAlert.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ErrorAlert.d.ts","sourceRoot":"","sources":["../../src/default/ErrorAlert.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD,wBAAgB,UAAU,CAAC,KAAK,EAAE;IAChC,KAAK,EAAE,gBAAgB,GAAG,SAAS,CAAC;IACpC,KAAK,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB,GAAG,YAAY,GAAG,IAAI,CAsBtB"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* The one error surface this pair's default skin renders, so the split copy
|
|
4
|
+
* core produces reaches a screen the same way everywhere (mirrors the
|
|
5
|
+
* docs/notifications/workspaces etalon).
|
|
6
|
+
*
|
|
7
|
+
* Core's `describeFlowError` splits a failure into the sentence a person
|
|
8
|
+
* reads and the technical detail a support agent quotes (owner report
|
|
9
|
+
* 2026-08-09: the status used to be spliced into the sentence, ending in a
|
|
10
|
+
* bare `" (500)"`). The split only helps if a skin renders both halves at
|
|
11
|
+
* their own weights: `message` at normal weight, `detail` muted and small.
|
|
12
|
+
*
|
|
13
|
+
* `undefined` in — including a `detail` core left `undefined` because there
|
|
14
|
+
* was nothing worth quoting — renders nothing rather than an empty line.
|
|
15
|
+
*/
|
|
16
|
+
import { Alert, Typography } from "antd";
|
|
17
|
+
export function ErrorAlert(props) {
|
|
18
|
+
const { error } = props;
|
|
19
|
+
if (!error)
|
|
20
|
+
return null;
|
|
21
|
+
return (_jsx(Alert, { type: "error", showIcon: true, ...(props.style ? { style: props.style } : {}), ...(props.testId ? { "data-testid": props.testId } : {}), ...(props.action ? { action: props.action } : {}), message: error.message, ...(error.detail
|
|
22
|
+
? {
|
|
23
|
+
description: (_jsx(Typography.Text, { type: "secondary", style: { fontSize: 12 }, children: error.detail })),
|
|
24
|
+
}
|
|
25
|
+
: {}) }));
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=ErrorAlert.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ErrorAlert.js","sourceRoot":"","sources":["../../src/default/ErrorAlert.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAIzC,MAAM,UAAU,UAAU,CAAC,KAK1B;IACC,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IACxB,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,OAAO,CACL,KAAC,KAAK,IACJ,IAAI,EAAC,OAAO,EACZ,QAAQ,WACJ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAC3C,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KACrD,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAClD,OAAO,EAAE,KAAK,CAAC,OAAO,KAClB,CAAC,KAAK,CAAC,MAAM;YACf,CAAC,CAAC;gBACE,WAAW,EAAE,CACX,KAAC,UAAU,CAAC,IAAI,IAAC,IAAI,EAAC,WAAW,EAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,YACtD,KAAK,CAAC,MAAM,GACG,CACnB;aACF;YACH,CAAC,CAAC,EAAE,CAAC,GACP,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `<FormBuilderPane>` — the workspace admin's authoring surface.
|
|
3
|
+
*
|
|
4
|
+
* The §8 verdict in one component: form authoring is a REACT surface over
|
|
5
|
+
* capability-gated REST, because in this fleet "admin" means a workspace
|
|
6
|
+
* role and only REST reaches a workspace role — Django admin is a staff-only
|
|
7
|
+
* peephole that the actual form authors cannot open.
|
|
8
|
+
*
|
|
9
|
+
* The §8 scope discipline is visible in the code: there is no per-kind form
|
|
10
|
+
* anywhere here. A field's options come from `widgets/configForms.ts` and are
|
|
11
|
+
* drawn by `<ConfigField>`, chosen by config-widget kind. "Rich per-kind
|
|
12
|
+
* config editors and drag-reorder polish are explicitly allowed to be ugly in
|
|
13
|
+
* v1" — so reordering is two buttons, not a drag surface.
|
|
14
|
+
*/
|
|
15
|
+
import type { ReactElement } from "react";
|
|
16
|
+
import type { FormRow } from "../api/types.js";
|
|
17
|
+
import type { BuilderField, FormBuilderBag } from "../headless/FormBuilder.js";
|
|
18
|
+
import type { ThemeModeProp } from "./types.js";
|
|
19
|
+
/** Props of the `"builder.toolbar"` slot. */
|
|
20
|
+
export interface BuilderToolbarSlotProps {
|
|
21
|
+
readonly bag: FormBuilderBag;
|
|
22
|
+
readonly row: FormRow;
|
|
23
|
+
}
|
|
24
|
+
/** Props of the `"builder.fieldRow"` slot. */
|
|
25
|
+
export interface BuilderFieldRowSlotProps {
|
|
26
|
+
readonly entry: BuilderField;
|
|
27
|
+
readonly index: number;
|
|
28
|
+
readonly total: number;
|
|
29
|
+
readonly bag: FormBuilderBag;
|
|
30
|
+
}
|
|
31
|
+
export interface FormBuilderPaneProps extends ThemeModeProp {
|
|
32
|
+
readonly workspaceId: string;
|
|
33
|
+
readonly formId: string;
|
|
34
|
+
}
|
|
35
|
+
export declare function FormBuilderPane(props: FormBuilderPaneProps): ReactElement;
|
|
36
|
+
//# sourceMappingURL=FormBuilderPane.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FormBuilderPane.d.ts","sourceRoot":"","sources":["../../src/default/FormBuilderPane.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAyB1C,OAAO,KAAK,EAAmB,OAAO,EAAa,MAAM,iBAAiB,CAAC;AAE3E,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAK/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGhD,6CAA6C;AAC7C,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC;IAC7B,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;CACvB;AAED,8CAA8C;AAC9C,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC;CAC9B;AA6MD,MAAM,WAAW,oBAAqB,SAAQ,aAAa;IACzD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,YAAY,CA8IzE"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Alert, Button, Card, Collapse, Empty, Flex, Form, Input, Select, Space, Spin, Switch, Tag, Typography, } from "antd";
|
|
3
|
+
import { matchList, matchLoad, toFlowError, useActionGate, useDescribeFlowError, useT, } from "@stapel/core";
|
|
4
|
+
import { FormBuilder } from "../headless/FormBuilder.js";
|
|
5
|
+
import { ConfigField } from "./ConfigField.js";
|
|
6
|
+
import { FormsSkinTheme } from "./theme.js";
|
|
7
|
+
import { ErrorAlert } from "./ErrorAlert.js";
|
|
8
|
+
import { resolveFormsSkinComponent } from "./slots.js";
|
|
9
|
+
import { FORMS_I18N_KEYS } from "../i18n/keys.js";
|
|
10
|
+
function FieldEditor(props) {
|
|
11
|
+
const t = useT();
|
|
12
|
+
const Slot = resolveFormsSkinComponent("builder.fieldRow");
|
|
13
|
+
if (Slot)
|
|
14
|
+
return _jsx(Slot, { ...props });
|
|
15
|
+
const { entry, index, total, bag } = props;
|
|
16
|
+
const { field } = entry;
|
|
17
|
+
const config = field.config ?? {};
|
|
18
|
+
return (_jsx(Card, { size: "small", "data-testid": `forms-builder-field-${field.slug}`, title: _jsxs(Flex, { align: "center", gap: 8, children: [_jsx(Tag, { children: field.kind }), _jsx(Typography.Text, { strong: true, children: field.name || field.slug })] }), extra: _jsxs(Space, { children: [_jsx(Button, { size: "small", disabled: index === 0, "data-analytics": "none", "data-analytics-reason": "local draft reorder; the save mutation is the tracked step", onClick: () => bag.moveField(field.slug, index - 1), children: t(FORMS_I18N_KEYS.builderMoveUp) }), _jsx(Button, { size: "small", disabled: index === total - 1, "data-analytics": "none", "data-analytics-reason": "local draft reorder; the save mutation is the tracked step", onClick: () => bag.moveField(field.slug, index + 1), children: t(FORMS_I18N_KEYS.builderMoveDown) }), _jsx(Button, { size: "small", danger: true, "data-analytics": "none", "data-analytics-reason": "local draft edit; the save mutation is the tracked step", onClick: () => bag.removeField(field.slug), children: t(FORMS_I18N_KEYS.builderRemoveField) })] }), children: _jsxs(Form, { layout: "vertical", size: "small", children: [_jsx(Form.Item, { label: t(FORMS_I18N_KEYS.builderFieldSlug), children: _jsx(Input, { value: field.slug, onChange: (event) => bag.updateField(field.slug, { slug: event.target.value }) }) }), _jsx(Form.Item, { label: t(FORMS_I18N_KEYS.builderFieldLabel), children: _jsx(Input, { value: field.name ?? "", onChange: (event) => bag.updateField(field.slug, { name: event.target.value }) }) }), field.kind !== "header" && (_jsx(Form.Item, { label: t(FORMS_I18N_KEYS.builderFieldRequired), children: _jsx(Switch, { checked: field.mandatory === true, onChange: (checked) => bag.updateField(field.slug, { mandatory: checked }) }) })), entry.builderLess ? (_jsx(Alert, { type: "info", showIcon: true, "data-testid": "forms-builder-less",
|
|
19
|
+
// Two different facts, worded differently: the registry does not
|
|
20
|
+
// carry this kind at all, versus it carries it and it simply has
|
|
21
|
+
// no options. Collapsing them would tell an admin their schema is
|
|
22
|
+
// fine when the deployment cannot render the field.
|
|
23
|
+
message: t(entry.kindInfo === undefined || entry.kindInfo.registered === false
|
|
24
|
+
? FORMS_I18N_KEYS.builderKindUnregistered
|
|
25
|
+
: FORMS_I18N_KEYS.builderBuilderLess) })) : (_jsx(Collapse, { size: "small", ghost: true, items: [
|
|
26
|
+
{
|
|
27
|
+
key: "config",
|
|
28
|
+
label: t(FORMS_I18N_KEYS.builderFieldKind),
|
|
29
|
+
children: (_jsx(_Fragment, { children: entry.configFields.map((spec) => (_jsx(Form.Item, { label: spec.name, children: _jsx(ConfigField, { spec: spec, value: config[spec.name], disabled: false, onChange: (next) => bag.setFieldConfig(field.slug, spec.name, next) }) }, spec.name))) })),
|
|
30
|
+
},
|
|
31
|
+
] }))] }) }));
|
|
32
|
+
}
|
|
33
|
+
function Toolbar(props) {
|
|
34
|
+
const t = useT();
|
|
35
|
+
const saveGate = useActionGate(props.bag.save);
|
|
36
|
+
const publishGate = useActionGate(props.bag.publish);
|
|
37
|
+
const Slot = resolveFormsSkinComponent("builder.toolbar");
|
|
38
|
+
if (Slot)
|
|
39
|
+
return _jsx(Slot, { ...props });
|
|
40
|
+
const { bag, row } = props;
|
|
41
|
+
const stateLabel = {
|
|
42
|
+
draft: t(FORMS_I18N_KEYS.builderStateDraft),
|
|
43
|
+
open: t(FORMS_I18N_KEYS.builderStateOpen),
|
|
44
|
+
closed: t(FORMS_I18N_KEYS.builderStateClosed),
|
|
45
|
+
};
|
|
46
|
+
return (_jsxs(Flex, { vertical: true, gap: 8, children: [_jsxs(Flex, { gap: 8, wrap: true, align: "center", children: [_jsx(Button, { type: "default", loading: bag.isSaving, disabled: saveGate.disabled, "data-analytics": "flow", "data-testid": "forms-builder-save", onClick: bag.doSave, children: t(FORMS_I18N_KEYS.builderSave) }), _jsx(Button, { type: "primary", loading: bag.isPublishing, disabled: publishGate.disabled, "data-analytics": "flow", "data-testid": "forms-builder-publish", onClick: bag.doPublish, children: t(FORMS_I18N_KEYS.builderPublish) }), _jsx(Select, { style: { width: 140 }, value: row.state, onChange: (next) => bag.setState(next), options: ["draft", "open", "closed"].map((s) => ({
|
|
47
|
+
value: s,
|
|
48
|
+
label: stateLabel[s],
|
|
49
|
+
})) }), _jsx(Button, { "data-analytics": "flow", "data-testid": "forms-builder-rotate", onClick: bag.rotateLink, children: t(FORMS_I18N_KEYS.builderRotateLink) })] }), saveGate.reason !== undefined && (_jsx(Typography.Text, { type: "secondary", children: saveGate.reason })), publishGate.reason !== undefined && (_jsx(Typography.Text, { type: "secondary", "data-testid": "forms-publish-blocked", children: publishGate.reason })), _jsxs(Typography.Text, { type: "secondary", copyable: { text: row.public_id }, children: [t(FORMS_I18N_KEYS.builderPublicLink), ": ", row.public_id] })] }));
|
|
50
|
+
}
|
|
51
|
+
export function FormBuilderPane(props) {
|
|
52
|
+
const t = useT();
|
|
53
|
+
const describe = useDescribeFlowError();
|
|
54
|
+
return (_jsx(FormsSkinTheme, { ...(props.mode !== undefined ? { mode: props.mode } : {}), children: _jsx(FormBuilder, { workspaceId: props.workspaceId, formId: props.formId, children: (bag) => matchLoad(bag.state, {
|
|
55
|
+
loading: () => (_jsx(Flex, { justify: "center", style: { padding: 24 }, children: _jsx(Spin, { "data-testid": "forms-builder-loading" }) })),
|
|
56
|
+
// Never "this form does not exist" — a failed read is a failed
|
|
57
|
+
// read, and it offers a retry.
|
|
58
|
+
failed: (error) => (_jsx(ErrorAlert, { testId: "forms-builder-failed", error: describe(toFlowError(error)), action: _jsx(Button, { size: "small", onClick: bag.refetch, "data-analytics": "none", "data-analytics-reason": "retry of a failed read; no flow to step", children: t(FORMS_I18N_KEYS.fillRetry) }) })),
|
|
59
|
+
ready: (row) => (_jsxs(Flex, { vertical: true, gap: 16, children: [_jsx(Typography.Title, { level: 4, children: t(FORMS_I18N_KEYS.builderTitle) }), _jsx(Toolbar, { bag: bag, row: row }), bag.error !== null && (_jsx(ErrorAlert, { testId: "forms-builder-error", error: describe(toFlowError(bag.error)) })), _jsxs(Form, { layout: "vertical", children: [_jsx(Form.Item, { label: t(FORMS_I18N_KEYS.builderMetaTitle), children: _jsx(Input, { value: bag.meta.title ?? "", onChange: (event) => bag.setMeta({ title: event.target.value }) }) }), _jsx(Form.Item, { label: t(FORMS_I18N_KEYS.builderMetaDescription), children: _jsx(Input.TextArea, { autoSize: { minRows: 2, maxRows: 5 }, value: bag.meta.description ?? "", onChange: (event) => bag.setMeta({ description: event.target.value }) }) }), _jsx(Form.Item, { label: t(FORMS_I18N_KEYS.builderMetaSubmitLabel), children: _jsx(Input, { value: bag.meta.submit_label ?? "", onChange: (event) => bag.setMeta({ submit_label: event.target.value }) }) }), _jsx(Form.Item, { label: t(FORMS_I18N_KEYS.builderMetaConfirmation), children: _jsx(Input, { value: bag.meta.confirmation_text ?? "", onChange: (event) => bag.setMeta({ confirmation_text: event.target.value }) }) })] }), bag.fields.length === 0 ? (_jsx(Empty, { description: t(FORMS_I18N_KEYS.builderEmpty) })) : (_jsx(Flex, { vertical: true, gap: 12, children: bag.fields.map((entry, index) => (_jsx(FieldEditor, { entry: entry, index: index, total: bag.fields.length, bag: bag }, entry.field.slug))) })), matchList(bag.availableKinds, {
|
|
60
|
+
loading: () => _jsx(Spin, { size: "small", "data-testid": "forms-kinds-loading" }),
|
|
61
|
+
failed: (error) => (_jsx(ErrorAlert, { testId: "forms-kinds-failed", error: {
|
|
62
|
+
...describe(toFlowError(error)),
|
|
63
|
+
message: t(FORMS_I18N_KEYS.builderKindsFailed),
|
|
64
|
+
} })),
|
|
65
|
+
empty: () => (_jsx(Typography.Text, { type: "secondary", "data-testid": "forms-kinds-empty", children: t(FORMS_I18N_KEYS.builderNoKinds) })),
|
|
66
|
+
ready: (kinds) => (_jsx(Flex, { gap: 8, wrap: true, children: kinds.map((kind) => (_jsxs(Button, { size: "small", "data-analytics": "none", "data-analytics-reason": "local draft edit; the save mutation is the tracked step", "data-testid": `forms-builder-add-${kind.kind}`, onClick: () => bag.addField(kind.kind), children: [t(FORMS_I18N_KEYS.builderAddField), ": ", kind.kind] }, kind.kind))) })),
|
|
67
|
+
})] })),
|
|
68
|
+
}) }) }));
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=FormBuilderPane.js.map
|