@qoretechnologies/reqraft 0.10.66-pr.145.gcb1e59d → 0.10.66
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +53 -1
- package/dist/components/Description/AllowedValuesHelp.d.ts +20 -0
- package/dist/components/Description/AllowedValuesHelp.d.ts.map +1 -0
- package/dist/components/Description/AllowedValuesHelp.js +86 -0
- package/dist/components/Description/AllowedValuesHelp.js.map +1 -0
- package/dist/components/Description/describedControl.d.ts +54 -0
- package/dist/components/Description/describedControl.d.ts.map +1 -0
- package/dist/components/Description/describedControl.js +81 -0
- package/dist/components/Description/describedControl.js.map +1 -0
- package/dist/components/Description/index.d.ts.map +1 -1
- package/dist/components/Description/index.js +3 -2
- package/dist/components/Description/index.js.map +1 -1
- package/dist/components/colorValue/colorValue.d.ts +59 -0
- package/dist/components/colorValue/colorValue.d.ts.map +1 -0
- package/dist/components/colorValue/colorValue.js +245 -0
- package/dist/components/colorValue/colorValue.js.map +1 -0
- package/dist/components/colorValue/index.d.ts +34 -0
- package/dist/components/colorValue/index.d.ts.map +1 -0
- package/dist/components/colorValue/index.js +136 -0
- package/dist/components/colorValue/index.js.map +1 -0
- package/dist/components/colorValue/labels.d.ts +12 -0
- package/dist/components/colorValue/labels.d.ts.map +1 -0
- package/dist/components/colorValue/labels.js +11 -0
- package/dist/components/colorValue/labels.js.map +1 -0
- package/dist/components/composer/Composer.d.ts +1 -1
- package/dist/components/composer/Composer.d.ts.map +1 -1
- package/dist/components/composer/Composer.js +2 -2
- package/dist/components/composer/Composer.js.map +1 -1
- package/dist/components/dpqlEditor/DpqlEditor.d.ts.map +1 -1
- package/dist/components/dpqlEditor/DpqlEditor.js +156 -10
- package/dist/components/dpqlEditor/DpqlEditor.js.map +1 -1
- package/dist/components/dpqlEditor/dpqlCompletions.d.ts +39 -0
- package/dist/components/dpqlEditor/dpqlCompletions.d.ts.map +1 -0
- package/dist/components/dpqlEditor/dpqlCompletions.js +294 -0
- package/dist/components/dpqlEditor/dpqlCompletions.js.map +1 -0
- package/dist/components/dpqlEditor/dpqlHelpers.d.ts +54 -5
- package/dist/components/dpqlEditor/dpqlHelpers.d.ts.map +1 -1
- package/dist/components/dpqlEditor/dpqlHelpers.js +420 -63
- package/dist/components/dpqlEditor/dpqlHelpers.js.map +1 -1
- package/dist/components/dpqlEditor/dpqlInserter.d.ts.map +1 -1
- package/dist/components/dpqlEditor/dpqlInserter.js +67 -29
- package/dist/components/dpqlEditor/dpqlInserter.js.map +1 -1
- package/dist/components/dpqlEditor/dpqlTags.d.ts +17 -7
- package/dist/components/dpqlEditor/dpqlTags.d.ts.map +1 -1
- package/dist/components/dpqlEditor/dpqlTags.js +44 -17
- package/dist/components/dpqlEditor/dpqlTags.js.map +1 -1
- package/dist/components/dpqlEditor/types.d.ts +94 -8
- package/dist/components/dpqlEditor/types.d.ts.map +1 -1
- package/dist/components/dpqlEditor/useDpqlSession.d.ts +7 -2
- package/dist/components/dpqlEditor/useDpqlSession.d.ts.map +1 -1
- package/dist/components/dpqlEditor/useDpqlSession.js +49 -17
- package/dist/components/dpqlEditor/useDpqlSession.js.map +1 -1
- package/dist/components/form/engine/CompactRow.d.ts.map +1 -1
- package/dist/components/form/engine/CompactRow.js +336 -243
- package/dist/components/form/engine/CompactRow.js.map +1 -1
- package/dist/components/form/engine/CompactToolbar.d.ts.map +1 -1
- package/dist/components/form/engine/CompactToolbar.js +20 -57
- package/dist/components/form/engine/CompactToolbar.js.map +1 -1
- package/dist/components/form/engine/FormEngine.d.ts +67 -59
- package/dist/components/form/engine/FormEngine.d.ts.map +1 -1
- package/dist/components/form/engine/FormEngine.js +606 -409
- package/dist/components/form/engine/FormEngine.js.map +1 -1
- package/dist/components/form/engine/HiddenFieldsNote.d.ts +28 -0
- package/dist/components/form/engine/HiddenFieldsNote.d.ts.map +1 -0
- package/dist/components/form/engine/HiddenFieldsNote.js +32 -0
- package/dist/components/form/engine/HiddenFieldsNote.js.map +1 -0
- package/dist/components/form/engine/OptionFieldMessages.d.ts +2 -18
- package/dist/components/form/engine/OptionFieldMessages.d.ts.map +1 -1
- package/dist/components/form/engine/OptionFieldMessages.js +28 -25
- package/dist/components/form/engine/OptionFieldMessages.js.map +1 -1
- package/dist/components/form/engine/OptionsHelpDialog.d.ts.map +1 -1
- package/dist/components/form/engine/OptionsHelpDialog.js +19 -2
- package/dist/components/form/engine/OptionsHelpDialog.js.map +1 -1
- package/dist/components/form/engine/_structuredData/SchemaDataView.d.ts +2 -2
- package/dist/components/form/engine/_structuredData/SchemaDataView.d.ts.map +1 -1
- package/dist/components/form/engine/_structuredData/SchemaDataView.js +11 -31
- package/dist/components/form/engine/_structuredData/SchemaDataView.js.map +1 -1
- package/dist/components/form/engine/compactRowContext.d.ts +30 -6
- package/dist/components/form/engine/compactRowContext.d.ts.map +1 -1
- package/dist/components/form/engine/compactRowContext.js.map +1 -1
- package/dist/components/form/engine/compactRowStyles.d.ts +56 -31
- package/dist/components/form/engine/compactRowStyles.d.ts.map +1 -1
- package/dist/components/form/engine/compactRowStyles.js +121 -110
- package/dist/components/form/engine/compactRowStyles.js.map +1 -1
- package/dist/components/form/engine/compactToolbarColors.d.ts +16 -0
- package/dist/components/form/engine/compactToolbarColors.d.ts.map +1 -0
- package/dist/components/form/engine/compactToolbarColors.js +21 -0
- package/dist/components/form/engine/compactToolbarColors.js.map +1 -0
- package/dist/components/form/engine/compactToolbarContext.d.ts +0 -3
- package/dist/components/form/engine/compactToolbarContext.d.ts.map +1 -1
- package/dist/components/form/engine/compactToolbarContext.js.map +1 -1
- package/dist/components/form/engine/inheritProps.d.ts +29 -0
- package/dist/components/form/engine/inheritProps.d.ts.map +1 -0
- package/dist/components/form/engine/inheritProps.js +43 -0
- package/dist/components/form/engine/inheritProps.js.map +1 -0
- package/dist/components/form/engine/operatorSummary.d.ts +26 -0
- package/dist/components/form/engine/operatorSummary.d.ts.map +1 -0
- package/dist/components/form/engine/operatorSummary.js +35 -0
- package/dist/components/form/engine/operatorSummary.js.map +1 -0
- package/dist/components/form/engine/readFirst.d.ts +26 -22
- package/dist/components/form/engine/readFirst.d.ts.map +1 -1
- package/dist/components/form/engine/readFirst.js +79 -115
- package/dist/components/form/engine/readFirst.js.map +1 -1
- package/dist/components/form/engine/readFirstColors.d.ts +30 -0
- package/dist/components/form/engine/readFirstColors.d.ts.map +1 -0
- package/dist/components/form/engine/readFirstColors.js +51 -0
- package/dist/components/form/engine/readFirstColors.js.map +1 -0
- package/dist/components/form/engine/rowFocus.d.ts +3 -9
- package/dist/components/form/engine/rowFocus.d.ts.map +1 -1
- package/dist/components/form/engine/rowFocus.js +30 -19
- package/dist/components/form/engine/rowFocus.js.map +1 -1
- package/dist/components/form/engine/typeChoices.d.ts +1 -1
- package/dist/components/form/engine/variants/VariantCalmTable.d.ts.map +1 -1
- package/dist/components/form/engine/variants/VariantCalmTable.js +2 -1
- package/dist/components/form/engine/variants/VariantCalmTable.js.map +1 -1
- package/dist/components/form/engine/variants/VariantCards.d.ts.map +1 -1
- package/dist/components/form/engine/variants/VariantCards.js +2 -1
- package/dist/components/form/engine/variants/VariantCards.js.map +1 -1
- package/dist/components/form/engine/variants/VariantFocus.js +1 -1
- package/dist/components/form/engine/variants/VariantFocus.js.map +1 -1
- package/dist/components/form/engine/variants/VariantMinimal.d.ts.map +1 -1
- package/dist/components/form/engine/variants/VariantMinimal.js +2 -1
- package/dist/components/form/engine/variants/VariantMinimal.js.map +1 -1
- package/dist/components/form/engine/variants/variantParts.d.ts +1 -1
- package/dist/components/form/engine/variants/variantParts.d.ts.map +1 -1
- package/dist/components/form/engine/variants/variantParts.js +25 -17
- package/dist/components/form/engine/variants/variantParts.js.map +1 -1
- package/dist/components/form/expressions/DpqlRendering.d.ts +1 -1
- package/dist/components/form/expressions/DpqlRendering.d.ts.map +1 -1
- package/dist/components/form/expressions/DpqlRendering.js +7 -6
- package/dist/components/form/expressions/DpqlRendering.js.map +1 -1
- package/dist/components/form/expressions/ExpressionField.d.ts +67 -3
- package/dist/components/form/expressions/ExpressionField.d.ts.map +1 -1
- package/dist/components/form/expressions/ExpressionField.js +536 -114
- package/dist/components/form/expressions/ExpressionField.js.map +1 -1
- package/dist/components/form/expressions/argumentPresence.d.ts +14 -0
- package/dist/components/form/expressions/argumentPresence.d.ts.map +1 -1
- package/dist/components/form/expressions/argumentPresence.js +16 -1
- package/dist/components/form/expressions/argumentPresence.js.map +1 -1
- package/dist/components/form/expressions/builder/argumentDetail.d.ts.map +1 -1
- package/dist/components/form/expressions/builder/argumentDetail.js +4 -1
- package/dist/components/form/expressions/builder/argumentDetail.js.map +1 -1
- package/dist/components/form/expressions/builder/argumentLabel.d.ts.map +1 -1
- package/dist/components/form/expressions/builder/argumentLabel.js +30 -11
- package/dist/components/form/expressions/builder/argumentLabel.js.map +1 -1
- package/dist/components/form/expressions/builder/argumentWrapper.d.ts.map +1 -1
- package/dist/components/form/expressions/builder/argumentWrapper.js +3 -1
- package/dist/components/form/expressions/builder/argumentWrapper.js.map +1 -1
- package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.d.ts +9 -0
- package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.d.ts.map +1 -1
- package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.js +30 -27
- package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.js.map +1 -1
- package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.d.ts +1 -1
- package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.d.ts.map +1 -1
- package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.js +7 -5
- package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.js.map +1 -1
- package/dist/components/form/expressions/builder/index.d.ts +34 -2
- package/dist/components/form/expressions/builder/index.d.ts.map +1 -1
- package/dist/components/form/expressions/builder/index.js +170 -80
- package/dist/components/form/expressions/builder/index.js.map +1 -1
- package/dist/components/form/expressions/builder/item.d.ts +6 -2
- package/dist/components/form/expressions/builder/item.d.ts.map +1 -1
- package/dist/components/form/expressions/builder/item.js +19 -5
- package/dist/components/form/expressions/builder/item.js.map +1 -1
- package/dist/components/form/expressions/builder/renderTemplate.js +1 -1
- package/dist/components/form/expressions/builder/renderTemplate.js.map +1 -1
- package/dist/components/form/expressions/dpqlMockRecordPath.d.ts +11 -0
- package/dist/components/form/expressions/dpqlMockRecordPath.d.ts.map +1 -0
- package/dist/components/form/expressions/dpqlMockRecordPath.js +254 -0
- package/dist/components/form/expressions/dpqlMockRecordPath.js.map +1 -0
- package/dist/components/form/expressions/expressionOperands.d.ts +16 -0
- package/dist/components/form/expressions/expressionOperands.d.ts.map +1 -0
- package/dist/components/form/expressions/expressionOperands.js +97 -0
- package/dist/components/form/expressions/expressionOperands.js.map +1 -0
- package/dist/components/form/expressions/fieldPath.d.ts +24 -0
- package/dist/components/form/expressions/fieldPath.d.ts.map +1 -0
- package/dist/components/form/expressions/fieldPath.js +152 -0
- package/dist/components/form/expressions/fieldPath.js.map +1 -0
- package/dist/components/form/expressions/loneValue.d.ts +17 -0
- package/dist/components/form/expressions/loneValue.d.ts.map +1 -0
- package/dist/components/form/expressions/loneValue.js +33 -0
- package/dist/components/form/expressions/loneValue.js.map +1 -0
- package/dist/components/form/expressions/mockExpressions.d.ts.map +1 -1
- package/dist/components/form/expressions/mockExpressions.js +22 -5
- package/dist/components/form/expressions/mockExpressions.js.map +1 -1
- package/dist/components/form/expressions/renderExpressionToText.d.ts +2 -0
- package/dist/components/form/expressions/renderExpressionToText.d.ts.map +1 -1
- package/dist/components/form/expressions/renderExpressionToText.js +37 -25
- package/dist/components/form/expressions/renderExpressionToText.js.map +1 -1
- package/dist/components/form/expressions/textOfExpression.d.ts +18 -0
- package/dist/components/form/expressions/textOfExpression.d.ts.map +1 -0
- package/dist/components/form/expressions/textOfExpression.js +49 -0
- package/dist/components/form/expressions/textOfExpression.js.map +1 -0
- package/dist/components/form/expressions/types.d.ts +12 -0
- package/dist/components/form/expressions/types.d.ts.map +1 -1
- package/dist/components/form/expressions/types.js +6 -1
- package/dist/components/form/expressions/types.js.map +1 -1
- package/dist/components/form/expressions/useExpressionType.d.ts +26 -0
- package/dist/components/form/expressions/useExpressionType.d.ts.map +1 -0
- package/dist/components/form/expressions/useExpressionType.js +181 -0
- package/dist/components/form/expressions/useExpressionType.js.map +1 -0
- package/dist/components/form/expressions/useRenderExpression.d.ts.map +1 -1
- package/dist/components/form/expressions/useRenderExpression.js +13 -9
- package/dist/components/form/expressions/useRenderExpression.js.map +1 -1
- package/dist/components/form/expressions/wildcardExpressions.d.ts +27 -0
- package/dist/components/form/expressions/wildcardExpressions.d.ts.map +1 -0
- package/dist/components/form/expressions/wildcardExpressions.js +101 -0
- package/dist/components/form/expressions/wildcardExpressions.js.map +1 -0
- package/dist/components/form/fields/Field.d.ts.map +1 -1
- package/dist/components/form/fields/Field.js +39 -18
- package/dist/components/form/fields/Field.js.map +1 -1
- package/dist/components/form/fields/allowed-values/AllowedValues.d.ts +0 -7
- package/dist/components/form/fields/allowed-values/AllowedValues.d.ts.map +1 -1
- package/dist/components/form/fields/allowed-values/AllowedValues.js +46 -35
- package/dist/components/form/fields/allowed-values/AllowedValues.js.map +1 -1
- package/dist/components/form/fields/allowed-values/choicePicture.d.ts +37 -0
- package/dist/components/form/fields/allowed-values/choicePicture.d.ts.map +1 -0
- package/dist/components/form/fields/allowed-values/choicePicture.js +64 -0
- package/dist/components/form/fields/allowed-values/choicePicture.js.map +1 -0
- package/dist/components/form/fields/array/ArrayAuto.d.ts.map +1 -1
- package/dist/components/form/fields/array/ArrayAuto.js +24 -0
- package/dist/components/form/fields/array/ArrayAuto.js.map +1 -1
- package/dist/components/form/fields/array/ArrayAutoField.d.ts.map +1 -1
- package/dist/components/form/fields/array/ArrayAutoField.js +36 -13
- package/dist/components/form/fields/array/ArrayAutoField.js.map +1 -1
- package/dist/components/form/fields/auto/AutoFormField.d.ts +30 -1
- package/dist/components/form/fields/auto/AutoFormField.d.ts.map +1 -1
- package/dist/components/form/fields/auto/AutoFormField.js +123 -79
- package/dist/components/form/fields/auto/AutoFormField.js.map +1 -1
- package/dist/components/form/fields/auto/hostEditorValue.d.ts +30 -0
- package/dist/components/form/fields/auto/hostEditorValue.d.ts.map +1 -0
- package/dist/components/form/fields/auto/hostEditorValue.js +53 -0
- package/dist/components/form/fields/auto/hostEditorValue.js.map +1 -0
- package/dist/components/form/fields/binary/Binary.d.ts.map +1 -1
- package/dist/components/form/fields/binary/Binary.js +23 -3
- package/dist/components/form/fields/binary/Binary.js.map +1 -1
- package/dist/components/form/fields/boolean/Boolean.d.ts +5 -0
- package/dist/components/form/fields/boolean/Boolean.d.ts.map +1 -1
- package/dist/components/form/fields/boolean/Boolean.js +9 -1
- package/dist/components/form/fields/boolean/Boolean.js.map +1 -1
- package/dist/components/form/fields/color/Color.d.ts +103 -16
- package/dist/components/form/fields/color/Color.d.ts.map +1 -1
- package/dist/components/form/fields/color/Color.js +616 -16
- package/dist/components/form/fields/color/Color.js.map +1 -1
- package/dist/components/form/fields/emittedValues.d.ts +34 -3
- package/dist/components/form/fields/emittedValues.d.ts.map +1 -1
- package/dist/components/form/fields/emittedValues.js +24 -1
- package/dist/components/form/fields/emittedValues.js.map +1 -1
- package/dist/components/form/fields/file/File.d.ts +1 -1
- package/dist/components/form/fields/file/File.d.ts.map +1 -1
- package/dist/components/form/fields/file/File.js +4 -2
- package/dist/components/form/fields/file/File.js.map +1 -1
- package/dist/components/form/fields/long-string/LongString.d.ts +1 -7
- package/dist/components/form/fields/long-string/LongString.d.ts.map +1 -1
- package/dist/components/form/fields/long-string/LongString.js +30 -13
- package/dist/components/form/fields/long-string/LongString.js.map +1 -1
- package/dist/components/form/fields/markdown/MarkdownView.js +1 -1
- package/dist/components/form/fields/multi-select/MultiSelectFormField.d.ts.map +1 -1
- package/dist/components/form/fields/multi-select/MultiSelectFormField.js +10 -7
- package/dist/components/form/fields/multi-select/MultiSelectFormField.js.map +1 -1
- package/dist/components/form/fields/number/Number.d.ts +7 -4
- package/dist/components/form/fields/number/Number.d.ts.map +1 -1
- package/dist/components/form/fields/number/Number.js +45 -18
- package/dist/components/form/fields/number/Number.js.map +1 -1
- package/dist/components/form/fields/object/Object.d.ts +1 -1
- package/dist/components/form/fields/object/Object.d.ts.map +1 -1
- package/dist/components/form/fields/object/Object.js +4 -2
- package/dist/components/form/fields/object/Object.js.map +1 -1
- package/dist/components/form/fields/pendingEdit.d.ts +52 -0
- package/dist/components/form/fields/pendingEdit.d.ts.map +1 -0
- package/dist/components/form/fields/pendingEdit.js +79 -0
- package/dist/components/form/fields/pendingEdit.js.map +1 -0
- package/dist/components/form/fields/radio-group/RadioGroup.d.ts.map +1 -1
- package/dist/components/form/fields/radio-group/RadioGroup.js +8 -13
- package/dist/components/form/fields/radio-group/RadioGroup.js.map +1 -1
- package/dist/components/form/fields/rich-text/RichText.d.ts +20 -1
- package/dist/components/form/fields/rich-text/RichText.d.ts.map +1 -1
- package/dist/components/form/fields/rich-text/RichText.js +426 -91
- package/dist/components/form/fields/rich-text/RichText.js.map +1 -1
- package/dist/components/form/fields/rich-text/useTemplateTags.d.ts +18 -0
- package/dist/components/form/fields/rich-text/useTemplateTags.d.ts.map +1 -0
- package/dist/components/form/fields/rich-text/useTemplateTags.js +80 -0
- package/dist/components/form/fields/rich-text/useTemplateTags.js.map +1 -0
- package/dist/components/form/fields/schema-definition/CatalogLeafForm.d.ts.map +1 -1
- package/dist/components/form/fields/schema-definition/CatalogLeafForm.js +4 -1
- package/dist/components/form/fields/schema-definition/CatalogLeafForm.js.map +1 -1
- package/dist/components/form/fields/schema-definition/CatalogNodeEditor.d.ts.map +1 -1
- package/dist/components/form/fields/schema-definition/CatalogNodeEditor.js +20 -5
- package/dist/components/form/fields/schema-definition/CatalogNodeEditor.js.map +1 -1
- package/dist/components/form/fields/schema-definition/TableEditor.d.ts.map +1 -1
- package/dist/components/form/fields/schema-definition/TableEditor.js +10 -2
- package/dist/components/form/fields/schema-definition/TableEditor.js.map +1 -1
- package/dist/components/form/fields/schema-definition/index.d.ts.map +1 -1
- package/dist/components/form/fields/schema-definition/index.js +8 -4
- package/dist/components/form/fields/schema-definition/index.js.map +1 -1
- package/dist/components/form/fields/select/Select.d.ts +10 -1
- package/dist/components/form/fields/select/Select.d.ts.map +1 -1
- package/dist/components/form/fields/select/Select.js +28 -14
- package/dist/components/form/fields/select/Select.js.map +1 -1
- package/dist/components/form/fields/select/SelectCollection.d.ts +5 -0
- package/dist/components/form/fields/select/SelectCollection.d.ts.map +1 -1
- package/dist/components/form/fields/select/SelectCollection.js +25 -12
- package/dist/components/form/fields/select/SelectCollection.js.map +1 -1
- package/dist/components/form/fields/select/unavailableRow.d.ts +23 -0
- package/dist/components/form/fields/select/unavailableRow.d.ts.map +1 -0
- package/dist/components/form/fields/select/unavailableRow.js +55 -0
- package/dist/components/form/fields/select/unavailableRow.js.map +1 -0
- package/dist/components/form/fields/template/ReadOnlyTemplateTag.d.ts +11 -5
- package/dist/components/form/fields/template/ReadOnlyTemplateTag.d.ts.map +1 -1
- package/dist/components/form/fields/template/ReadOnlyTemplateTag.js +21 -5
- package/dist/components/form/fields/template/ReadOnlyTemplateTag.js.map +1 -1
- package/dist/components/form/fields/template/TemplateBrowser.d.ts +16 -0
- package/dist/components/form/fields/template/TemplateBrowser.d.ts.map +1 -0
- package/dist/components/form/fields/template/TemplateBrowser.js +89 -0
- package/dist/components/form/fields/template/TemplateBrowser.js.map +1 -0
- package/dist/components/form/fields/template/TemplateField.d.ts +105 -1
- package/dist/components/form/fields/template/TemplateField.d.ts.map +1 -1
- package/dist/components/form/fields/template/TemplateField.js +706 -168
- package/dist/components/form/fields/template/TemplateField.js.map +1 -1
- package/dist/components/form/fields/template/TemplatePicker.d.ts +54 -0
- package/dist/components/form/fields/template/TemplatePicker.d.ts.map +1 -0
- package/dist/components/form/fields/template/TemplatePicker.js +459 -0
- package/dist/components/form/fields/template/TemplatePicker.js.map +1 -0
- package/dist/components/form/fields/template/TemplateText.d.ts +0 -17
- package/dist/components/form/fields/template/TemplateText.d.ts.map +1 -1
- package/dist/components/form/fields/template/TemplateText.js +22 -16
- package/dist/components/form/fields/template/TemplateText.js.map +1 -1
- package/dist/components/form/fields/template/referenceNames.d.ts +63 -0
- package/dist/components/form/fields/template/referenceNames.d.ts.map +1 -0
- package/dist/components/form/fields/template/referenceNames.js +69 -0
- package/dist/components/form/fields/template/referenceNames.js.map +1 -0
- package/dist/components/form/fields/template/writtenAsText.d.ts +61 -0
- package/dist/components/form/fields/template/writtenAsText.d.ts.map +1 -0
- package/dist/components/form/fields/template/writtenAsText.js +204 -0
- package/dist/components/form/fields/template/writtenAsText.js.map +1 -0
- package/dist/components/form/index.d.ts +12 -2
- package/dist/components/form/index.d.ts.map +1 -1
- package/dist/components/form/index.js +25 -3
- package/dist/components/form/index.js.map +1 -1
- package/dist/components/form/typeSentenceForm.d.ts +17 -0
- package/dist/components/form/typeSentenceForm.d.ts.map +1 -0
- package/dist/components/form/typeSentenceForm.js +54 -0
- package/dist/components/form/typeSentenceForm.js.map +1 -0
- package/dist/components/imageLightbox/ImageLightbox.d.ts.map +1 -1
- package/dist/components/imageLightbox/ImageLightbox.js +19 -9
- package/dist/components/imageLightbox/ImageLightbox.js.map +1 -1
- package/dist/components/log/Log.d.ts.map +1 -1
- package/dist/components/log/Log.js +20 -8
- package/dist/components/log/Log.js.map +1 -1
- package/dist/components/menu/Menu.d.ts.map +1 -1
- package/dist/components/menu/Menu.js +19 -10
- package/dist/components/menu/Menu.js.map +1 -1
- package/dist/components/smartEditor/CompletionMenu.d.ts +53 -0
- package/dist/components/smartEditor/CompletionMenu.d.ts.map +1 -0
- package/dist/components/smartEditor/CompletionMenu.js +302 -0
- package/dist/components/smartEditor/CompletionMenu.js.map +1 -0
- package/dist/components/smartEditor/MarkdownDoc.d.ts +1 -1
- package/dist/components/smartEditor/MarkdownDoc.js +3 -3
- package/dist/components/smartEditor/MarkdownDoc.js.map +1 -1
- package/dist/components/smartEditor/SmartEditor.d.ts.map +1 -1
- package/dist/components/smartEditor/SmartEditor.js +616 -190
- package/dist/components/smartEditor/SmartEditor.js.map +1 -1
- package/dist/components/smartEditor/completionStyle.d.ts +28 -0
- package/dist/components/smartEditor/completionStyle.d.ts.map +1 -0
- package/dist/components/smartEditor/completionStyle.js +79 -0
- package/dist/components/smartEditor/completionStyle.js.map +1 -0
- package/dist/components/smartEditor/contextTitle.d.ts +10 -0
- package/dist/components/smartEditor/contextTitle.d.ts.map +1 -0
- package/dist/components/smartEditor/contextTitle.js +21 -0
- package/dist/components/smartEditor/contextTitle.js.map +1 -0
- package/dist/components/smartEditor/editingAids.d.ts +64 -0
- package/dist/components/smartEditor/editingAids.d.ts.map +1 -0
- package/dist/components/smartEditor/editingAids.js +213 -0
- package/dist/components/smartEditor/editingAids.js.map +1 -0
- package/dist/components/smartEditor/index.d.ts +6 -1
- package/dist/components/smartEditor/index.d.ts.map +1 -1
- package/dist/components/smartEditor/index.js +19 -1
- package/dist/components/smartEditor/index.js.map +1 -1
- package/dist/components/smartEditor/templateCompletions.d.ts +98 -0
- package/dist/components/smartEditor/templateCompletions.d.ts.map +1 -0
- package/dist/components/smartEditor/templateCompletions.js +380 -0
- package/dist/components/smartEditor/templateCompletions.js.map +1 -0
- package/dist/components/smartEditor/typedReferences.d.ts +34 -0
- package/dist/components/smartEditor/typedReferences.d.ts.map +1 -0
- package/dist/components/smartEditor/typedReferences.js +179 -0
- package/dist/components/smartEditor/typedReferences.js.map +1 -0
- package/dist/components/smartEditor/types.d.ts +116 -2
- package/dist/components/smartEditor/types.d.ts.map +1 -1
- package/dist/components/smartEditor/useEditingAids.d.ts +38 -0
- package/dist/components/smartEditor/useEditingAids.d.ts.map +1 -0
- package/dist/components/smartEditor/useEditingAids.js +392 -0
- package/dist/components/smartEditor/useEditingAids.js.map +1 -0
- package/dist/components/smartEditor/useLspAutocomplete.d.ts +106 -3
- package/dist/components/smartEditor/useLspAutocomplete.d.ts.map +1 -1
- package/dist/components/smartEditor/useLspAutocomplete.js +592 -149
- package/dist/components/smartEditor/useLspAutocomplete.js.map +1 -1
- package/dist/components/smartEditor/useLspHover.d.ts +33 -7
- package/dist/components/smartEditor/useLspHover.d.ts.map +1 -1
- package/dist/components/smartEditor/useLspHover.js +364 -35
- package/dist/components/smartEditor/useLspHover.js.map +1 -1
- package/dist/components/smartEditor/useLspSemanticTokens.js +1 -1
- package/dist/components/smartEditor/useLspSemanticTokens.js.map +1 -1
- package/dist/components/smartEditor/useLspSession.d.ts +6 -0
- package/dist/components/smartEditor/useLspSession.d.ts.map +1 -1
- package/dist/components/smartEditor/useLspSession.js +7 -6
- package/dist/components/smartEditor/useLspSession.js.map +1 -1
- package/dist/components/smartEditor/useLspSignatureHelp.d.ts.map +1 -1
- package/dist/components/smartEditor/useLspSignatureHelp.js +6 -11
- package/dist/components/smartEditor/useLspSignatureHelp.js.map +1 -1
- package/dist/components/smartEditor/useTabCameIn.d.ts +10 -0
- package/dist/components/smartEditor/useTabCameIn.d.ts.map +1 -0
- package/dist/components/smartEditor/useTabCameIn.js +42 -0
- package/dist/components/smartEditor/useTabCameIn.js.map +1 -0
- package/dist/components/supportTicket/AttachmentChips.d.ts.map +1 -1
- package/dist/components/supportTicket/AttachmentChips.js +15 -5
- package/dist/components/supportTicket/AttachmentChips.js.map +1 -1
- package/dist/components/supportTicket/InterfaceReferenceTags.d.ts +2 -3
- package/dist/components/supportTicket/InterfaceReferenceTags.d.ts.map +1 -1
- package/dist/components/supportTicket/InterfaceReferenceTags.js.map +1 -1
- package/dist/components/supportTicket/ReferencePicker.d.ts +9 -3
- package/dist/components/supportTicket/ReferencePicker.d.ts.map +1 -1
- package/dist/components/supportTicket/ReferencePicker.js +38 -23
- package/dist/components/supportTicket/ReferencePicker.js.map +1 -1
- package/dist/components/supportTicket/TicketHeader.d.ts +3 -4
- package/dist/components/supportTicket/TicketHeader.d.ts.map +1 -1
- package/dist/components/supportTicket/TicketHeader.js +21 -6
- package/dist/components/supportTicket/TicketHeader.js.map +1 -1
- package/dist/components/supportTicket/TicketMetaTags.d.ts +1 -1
- package/dist/components/supportTicket/TicketReplyBox.d.ts.map +1 -1
- package/dist/components/supportTicket/TicketReplyBox.js +10 -29
- package/dist/components/supportTicket/TicketReplyBox.js.map +1 -1
- package/dist/components/supportTicket/useLoadedImages.d.ts +0 -10
- package/dist/components/supportTicket/useLoadedImages.d.ts.map +1 -1
- package/dist/components/supportTicket/useLoadedImages.js +1 -63
- package/dist/components/supportTicket/useLoadedImages.js.map +1 -1
- package/dist/components/ticketReferences/TicketReferences.d.ts.map +1 -1
- package/dist/components/ticketReferences/TicketReferences.js +10 -9
- package/dist/components/ticketReferences/TicketReferences.js.map +1 -1
- package/dist/components/ticketThread/TicketThread.d.ts.map +1 -1
- package/dist/components/ticketThread/TicketThread.js +52 -21
- package/dist/components/ticketThread/TicketThread.js.map +1 -1
- package/dist/helpers/allowedValues.d.ts +21 -12
- package/dist/helpers/allowedValues.d.ts.map +1 -1
- package/dist/helpers/allowedValues.js +40 -20
- package/dist/helpers/allowedValues.js.map +1 -1
- package/dist/helpers/descriptionTooltip.d.ts +46 -0
- package/dist/helpers/descriptionTooltip.d.ts.map +1 -0
- package/dist/helpers/descriptionTooltip.js +76 -0
- package/dist/helpers/descriptionTooltip.js.map +1 -0
- package/dist/helpers/domProps.d.ts +5 -0
- package/dist/helpers/domProps.d.ts.map +1 -0
- package/dist/helpers/domProps.js +47 -0
- package/dist/helpers/domProps.js.map +1 -0
- package/dist/helpers/expressions.d.ts +115 -4
- package/dist/helpers/expressions.d.ts.map +1 -1
- package/dist/helpers/expressions.js +247 -29
- package/dist/helpers/expressions.js.map +1 -1
- package/dist/helpers/hoveringPointer.d.ts +26 -0
- package/dist/helpers/hoveringPointer.d.ts.map +1 -0
- package/dist/helpers/hoveringPointer.js +29 -0
- package/dist/helpers/hoveringPointer.js.map +1 -0
- package/dist/helpers/markdownText.d.ts +14 -0
- package/dist/helpers/markdownText.d.ts.map +1 -0
- package/dist/helpers/markdownText.js +160 -0
- package/dist/helpers/markdownText.js.map +1 -0
- package/dist/helpers/noDescription.d.ts +9 -0
- package/dist/helpers/noDescription.d.ts.map +1 -0
- package/dist/helpers/noDescription.js +13 -0
- package/dist/helpers/noDescription.js.map +1 -0
- package/dist/helpers/optionUiTypes.d.ts +2 -2
- package/dist/helpers/qorusTypeCatalogue.d.ts +147 -0
- package/dist/helpers/qorusTypeCatalogue.d.ts.map +1 -0
- package/dist/helpers/qorusTypeCatalogue.js +505 -0
- package/dist/helpers/qorusTypeCatalogue.js.map +1 -0
- package/dist/helpers/readableColors.d.ts +36 -0
- package/dist/helpers/readableColors.d.ts.map +1 -0
- package/dist/helpers/readableColors.js +116 -0
- package/dist/helpers/readableColors.js.map +1 -0
- package/dist/helpers/recordFieldReference.d.ts +15 -0
- package/dist/helpers/recordFieldReference.d.ts.map +1 -0
- package/dist/helpers/recordFieldReference.js +89 -0
- package/dist/helpers/recordFieldReference.js.map +1 -0
- package/dist/helpers/singleLineString.d.ts.map +1 -1
- package/dist/helpers/singleLineString.js +0 -1
- package/dist/helpers/singleLineString.js.map +1 -1
- package/dist/helpers/templateCatalogue.d.ts +104 -0
- package/dist/helpers/templateCatalogue.d.ts.map +1 -0
- package/dist/helpers/templateCatalogue.js +116 -0
- package/dist/helpers/templateCatalogue.js.map +1 -0
- package/dist/helpers/templateCatalogueContext.d.ts +19 -0
- package/dist/helpers/templateCatalogueContext.d.ts.map +1 -0
- package/dist/helpers/templateCatalogueContext.js +31 -0
- package/dist/helpers/templateCatalogueContext.js.map +1 -0
- package/dist/helpers/templateItems.d.ts +2 -2
- package/dist/helpers/templateItems.d.ts.map +1 -1
- package/dist/helpers/templateItems.js +6 -4
- package/dist/helpers/templateItems.js.map +1 -1
- package/dist/helpers/templateText.d.ts +1 -0
- package/dist/helpers/templateText.d.ts.map +1 -1
- package/dist/helpers/templateText.js +7 -3
- package/dist/helpers/templateText.js.map +1 -1
- package/dist/helpers/templateTree.d.ts +248 -0
- package/dist/helpers/templateTree.d.ts.map +1 -0
- package/dist/helpers/templateTree.js +892 -0
- package/dist/helpers/templateTree.js.map +1 -0
- package/dist/helpers/templateType.d.ts +28 -0
- package/dist/helpers/templateType.d.ts.map +1 -0
- package/dist/helpers/templateType.js +30 -0
- package/dist/helpers/templateType.js.map +1 -0
- package/dist/helpers/templates.d.ts +86 -16
- package/dist/helpers/templates.d.ts.map +1 -1
- package/dist/helpers/templates.js +305 -45
- package/dist/helpers/templates.js.map +1 -1
- package/dist/helpers/validations.d.ts +27 -0
- package/dist/helpers/validations.d.ts.map +1 -1
- package/dist/helpers/validations.js +169 -39
- package/dist/helpers/validations.js.map +1 -1
- package/dist/helpers/webLink.d.ts +8 -0
- package/dist/helpers/webLink.d.ts.map +1 -0
- package/dist/helpers/webLink.js +29 -0
- package/dist/helpers/webLink.js.map +1 -0
- package/dist/hooks/useQorusTypes.d.ts +12 -17
- package/dist/hooks/useQorusTypes.d.ts.map +1 -1
- package/dist/hooks/useQorusTypes.js +44 -172
- package/dist/hooks/useQorusTypes.js.map +1 -1
- package/dist/hooks/useReadableIntentShade.d.ts +9 -0
- package/dist/hooks/useReadableIntentShade.d.ts.map +1 -0
- package/dist/hooks/useReadableIntentShade.js +23 -0
- package/dist/hooks/useReadableIntentShade.js.map +1 -0
- package/dist/hooks/useReadableOpacity.d.ts +6 -0
- package/dist/hooks/useReadableOpacity.d.ts.map +1 -0
- package/dist/hooks/useReadableOpacity.js +17 -0
- package/dist/hooks/useReadableOpacity.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +24 -1
- package/dist/index.js.map +1 -1
- package/dist/tracking/ui/ExperimentCard.d.ts +1 -1
- package/dist/tracking/ui/ExperimentCard.d.ts.map +1 -1
- package/dist/tracking/ui/ExperimentCard.js +26 -10
- package/dist/tracking/ui/ExperimentCard.js.map +1 -1
- package/dist/tracking/ui/card.d.ts +2 -2
- package/dist/tracking/ui/card.d.ts.map +1 -1
- package/dist/tracking/ui/card.js +2 -2
- package/dist/tracking/ui/card.js.map +1 -1
- package/dist/tracking/ui/readable.d.ts +14 -0
- package/dist/tracking/ui/readable.d.ts.map +1 -0
- package/dist/tracking/ui/readable.js +60 -0
- package/dist/tracking/ui/readable.js.map +1 -0
- package/dist/utils/fetch.d.ts +9 -2
- package/dist/utils/fetch.d.ts.map +1 -1
- package/dist/utils/fetch.js +6 -5
- package/dist/utils/fetch.js.map +1 -1
- package/dist/utils/lspClient.types.d.ts +2 -0
- package/dist/utils/lspClient.types.d.ts.map +1 -1
- package/dist/utils/websocket.d.ts +65 -2
- package/dist/utils/websocket.d.ts.map +1 -1
- package/dist/utils/websocket.js +276 -44
- package/dist/utils/websocket.js.map +1 -1
- package/package.json +14 -6
- package/.claude/CLAUDE.md +0 -317
- package/.tasks/EXPORT_EXPRESSION_BUILDER.md +0 -38
- package/.tasks/EXPRESSION_BUILDER_REPORT.md +0 -149
- package/.tasks/EXPRESSION_FIELD_SEAMS.md +0 -66
- package/.tasks/FIELD_STACK_REPORT.md +0 -234
- package/.tasks/FORM_ENGINE_COMPACT_READ_FIRST.md +0 -558
- package/.tasks/FORM_ENGINE_EXPRESSIONS.md +0 -197
- package/.tasks/FORM_ENGINE_OPTIONS_SYNC.md +0 -95
- package/.tasks/FORM_FIELD_EXTRAS.md +0 -72
- package/.tasks/INDEX.md +0 -111
- package/.tasks/LSP_SHARED_CONNECTION.md +0 -75
- package/.tasks/QONSOLE_ASSIST_FEATURES.md +0 -306
- package/.tasks/RENDER_EXPRESSION_LSP.md +0 -159
- package/.tasks/REQRAFT_AUTO_FIELD.md +0 -176
- package/.tasks/SCHEMA_DEFINITION_FIELD.md +0 -250
- package/.tasks/SMART_EDITOR_CONTEXT_AND_POLISH.md +0 -340
- package/.tasks/SMART_EDITOR_LSP_FEATURES.md +0 -299
- package/.tasks/SMART_EDITOR_REVIEW_FOLLOWUPS.md +0 -280
- package/.tasks/SMART_EDITOR_UX_POLISH.md +0 -383
- package/.tasks/SMART_EDITOR_VISUAL_POLISH.md +0 -246
- package/.tasks/STORY_NETWORK_ISOLATION.md +0 -98
- package/.tasks/TEMPLATE_TOKEN_GRAMMAR.md +0 -72
- package/CODE_OF_CONDUCT.md +0 -105
- package/CONTRIBUTING.MD +0 -78
- package/SECURITY.md +0 -3
- package/chromatic.config.json +0 -5
- package/design/COMPACT_ENGINE_REDESIGN.md +0 -156
- package/design/COMPACT_INFO_DISPLAY.md +0 -87
- package/design/COMPACT_PARITY.md +0 -85
- package/design/EXPRESSION_BUILDER_REPORT_STRATEGY.md +0 -92
- package/design/FORM_ENGINE_COMPACT.md +0 -300
- package/design/FORM_ENGINE_COMPACT_UX_PLAN.md +0 -353
- package/design/FORM_ENGINE_EXPRESSIONS.md +0 -257
- package/design/FORM_ENGINE_FIELD_MIGRATION.md +0 -419
- package/design/IDE_INTEGRATION.md +0 -64
- package/design/RENDER_EXPRESSION_TRANSPORT.md +0 -156
- package/design/SELECT_DIALOG_FLOOR.md +0 -86
- package/design/SMART_EDITOR_UX.md +0 -438
- package/design/TRACKING.md +0 -290
- package/design/UNAVAILABLE_ALLOWED_VALUES.md +0 -226
- package/dist/components/form/engine/formAppearance.d.ts +0 -49
- package/dist/components/form/engine/formAppearance.d.ts.map +0 -1
- package/dist/components/form/engine/formAppearance.js +0 -50
- package/dist/components/form/engine/formAppearance.js.map +0 -1
- package/dist/components/form/fields/ChoiceGroupHeading.d.ts +0 -21
- package/dist/components/form/fields/ChoiceGroupHeading.d.ts.map +0 -1
- package/dist/components/form/fields/ChoiceGroupHeading.js +0 -33
- package/dist/components/form/fields/ChoiceGroupHeading.js.map +0 -1
- package/dist/components/form/fields/allowed-values/savedValues.d.ts +0 -30
- package/dist/components/form/fields/allowed-values/savedValues.d.ts.map +0 -1
- package/dist/components/form/fields/allowed-values/savedValues.js +0 -39
- package/dist/components/form/fields/allowed-values/savedValues.js.map +0 -1
- package/dist/helpers/fieldDescription.d.ts +0 -16
- package/dist/helpers/fieldDescription.d.ts.map +0 -1
- package/dist/helpers/fieldDescription.js +0 -40
- package/dist/helpers/fieldDescription.js.map +0 -1
- package/src/components/Description/index.tsx +0 -254
- package/src/components/Description/markdownRendererContext.tsx +0 -29
- package/src/components/FocusedEditing/index.tsx +0 -50
- package/src/components/codeSize/index.tsx +0 -79
- package/src/components/composer/Composer.stories.tsx +0 -238
- package/src/components/composer/Composer.tsx +0 -554
- package/src/components/composer/helpers.ts +0 -74
- package/src/components/composer/index.ts +0 -2
- package/src/components/dpqlEditor/DpqlEditor.stories.tsx +0 -1183
- package/src/components/dpqlEditor/DpqlEditor.tsx +0 -219
- package/src/components/dpqlEditor/dpqlHelpers.ts +0 -287
- package/src/components/dpqlEditor/dpqlInserter.ts +0 -121
- package/src/components/dpqlEditor/dpqlProbe.ts +0 -165
- package/src/components/dpqlEditor/dpqlTags.ts +0 -114
- package/src/components/dpqlEditor/index.ts +0 -41
- package/src/components/dpqlEditor/types.ts +0 -203
- package/src/components/dpqlEditor/useDpqlProbe.ts +0 -33
- package/src/components/dpqlEditor/useDpqlSession.ts +0 -411
- package/src/components/form/engine/CompactRow.tsx +0 -2740
- package/src/components/form/engine/CompactToolbar.tsx +0 -399
- package/src/components/form/engine/FormEngine.stories.tsx +0 -9934
- package/src/components/form/engine/FormEngine.tsx +0 -4891
- package/src/components/form/engine/FormEngineAppearance.stories.tsx +0 -609
- package/src/components/form/engine/FormEngineRemote.stories.tsx +0 -679
- package/src/components/form/engine/FormEngineStickyHeaders.stories.tsx +0 -335
- package/src/components/form/engine/FormFieldsSkeleton.tsx +0 -82
- package/src/components/form/engine/OptionFieldMessages.tsx +0 -548
- package/src/components/form/engine/OptionsHelpDialog.tsx +0 -29
- package/src/components/form/engine/__fixtures__/basicFormOptions.ts +0 -309
- package/src/components/form/engine/__fixtures__/fieldChromeOptions.ts +0 -45
- package/src/components/form/engine/_structuredData/SchemaDataView.stories.tsx +0 -233
- package/src/components/form/engine/_structuredData/SchemaDataView.tsx +0 -755
- package/src/components/form/engine/_structuredData/StructuredDataView.stories.tsx +0 -85
- package/src/components/form/engine/_structuredData/StructuredDataView.tsx +0 -75
- package/src/components/form/engine/_structuredData/structuredData.ts +0 -145
- package/src/components/form/engine/compactRowContext.ts +0 -153
- package/src/components/form/engine/compactRowStyles.ts +0 -1087
- package/src/components/form/engine/compactToolbarContext.ts +0 -72
- package/src/components/form/engine/formAppearance.ts +0 -79
- package/src/components/form/engine/optionActions.ts +0 -128
- package/src/components/form/engine/optionsContext.ts +0 -24
- package/src/components/form/engine/readFirst.ts +0 -1090
- package/src/components/form/engine/rendererTypes.ts +0 -107
- package/src/components/form/engine/revealRow.ts +0 -123
- package/src/components/form/engine/rowFocus.ts +0 -112
- package/src/components/form/engine/rowMenuContext.ts +0 -159
- package/src/components/form/engine/rowOpenPicker.ts +0 -27
- package/src/components/form/engine/typeChoices.ts +0 -63
- package/src/components/form/engine/variants/FormEngineVariants.stories.tsx +0 -159
- package/src/components/form/engine/variants/VariantCalmTable.tsx +0 -244
- package/src/components/form/engine/variants/VariantCards.tsx +0 -212
- package/src/components/form/engine/variants/VariantFocus.tsx +0 -382
- package/src/components/form/engine/variants/VariantMinimal.tsx +0 -170
- package/src/components/form/engine/variants/focusDemo.ts +0 -145
- package/src/components/form/engine/variants/variantModel.ts +0 -223
- package/src/components/form/engine/variants/variantParts.tsx +0 -313
- package/src/components/form/expressions/DpqlRendering.tsx +0 -85
- package/src/components/form/expressions/ExpressionField.stories.tsx +0 -1395
- package/src/components/form/expressions/ExpressionField.tsx +0 -503
- package/src/components/form/expressions/argumentPresence.ts +0 -213
- package/src/components/form/expressions/builder/ExpressionBuilder.stories.tsx +0 -1683
- package/src/components/form/expressions/builder/argumentDetail.tsx +0 -17
- package/src/components/form/expressions/builder/argumentLabel.tsx +0 -146
- package/src/components/form/expressions/builder/argumentSlot.tsx +0 -101
- package/src/components/form/expressions/builder/argumentWrapper.tsx +0 -243
- package/src/components/form/expressions/builder/confirmMismatchedTypesModal.tsx +0 -120
- package/src/components/form/expressions/builder/confirmUnsupportedTypeModal.tsx +0 -69
- package/src/components/form/expressions/builder/index.tsx +0 -1545
- package/src/components/form/expressions/builder/item.tsx +0 -89
- package/src/components/form/expressions/builder/moveToPositionStrip.tsx +0 -156
- package/src/components/form/expressions/builder/renderTemplate.tsx +0 -42
- package/src/components/form/expressions/dpqlMockLanguage.ts +0 -566
- package/src/components/form/expressions/dpqlMockLsp.ts +0 -126
- package/src/components/form/expressions/mockExpressions.ts +0 -317
- package/src/components/form/expressions/renderExpressionToText.ts +0 -152
- package/src/components/form/expressions/types.ts +0 -110
- package/src/components/form/expressions/useExpressions.ts +0 -101
- package/src/components/form/expressions/useRenderExpression.ts +0 -165
- package/src/components/form/fields/ChoiceGroupHeading.tsx +0 -38
- package/src/components/form/fields/Field.stories.tsx +0 -143
- package/src/components/form/fields/Field.tsx +0 -734
- package/src/components/form/fields/allowed-values/AllowedValues.tsx +0 -321
- package/src/components/form/fields/allowed-values/savedValues.ts +0 -64
- package/src/components/form/fields/array/ArrayAuto.tsx +0 -237
- package/src/components/form/fields/array/ArrayAutoField.stories.tsx +0 -475
- package/src/components/form/fields/array/ArrayAutoField.tsx +0 -367
- package/src/components/form/fields/auto/AutoFormField.stories.tsx +0 -825
- package/src/components/form/fields/auto/AutoFormField.tsx +0 -1183
- package/src/components/form/fields/binary/Binary.stories.tsx +0 -122
- package/src/components/form/fields/binary/Binary.tsx +0 -91
- package/src/components/form/fields/boolean/Boolean.stories.tsx +0 -125
- package/src/components/form/fields/boolean/Boolean.tsx +0 -34
- package/src/components/form/fields/byte-size/ByteSize.stories.tsx +0 -87
- package/src/components/form/fields/byte-size/ByteSize.tsx +0 -58
- package/src/components/form/fields/color/Color.stories.tsx +0 -99
- package/src/components/form/fields/color/Color.tsx +0 -46
- package/src/components/form/fields/cron/Cron.stories.tsx +0 -68
- package/src/components/form/fields/cron/Cron.tsx +0 -80
- package/src/components/form/fields/date/Date.stories.tsx +0 -77
- package/src/components/form/fields/date/Date.tsx +0 -55
- package/src/components/form/fields/emittedValues.ts +0 -70
- package/src/components/form/fields/file/File.stories.tsx +0 -161
- package/src/components/form/fields/file/File.tsx +0 -227
- package/src/components/form/fields/long-string/LongString.stories.tsx +0 -147
- package/src/components/form/fields/long-string/LongString.tsx +0 -141
- package/src/components/form/fields/markdown/Markdown.stories.tsx +0 -76
- package/src/components/form/fields/markdown/Markdown.tsx +0 -81
- package/src/components/form/fields/markdown/MarkdownView.tsx +0 -222
- package/src/components/form/fields/multi-select/MultiSelectFormField.tsx +0 -140
- package/src/components/form/fields/number/Number.stories.tsx +0 -159
- package/src/components/form/fields/number/Number.tsx +0 -175
- package/src/components/form/fields/object/Object.stories.tsx +0 -398
- package/src/components/form/fields/object/Object.tsx +0 -255
- package/src/components/form/fields/radio-group/RadioGroup.stories.tsx +0 -95
- package/src/components/form/fields/radio-group/RadioGroup.tsx +0 -52
- package/src/components/form/fields/radio-group/images/java-96x128.png +0 -0
- package/src/components/form/fields/radio-group/images/python-129x128.png +0 -0
- package/src/components/form/fields/radio-group/images/qore-106x128.png +0 -0
- package/src/components/form/fields/rich-text/RichText.stories.tsx +0 -260
- package/src/components/form/fields/rich-text/RichText.tsx +0 -537
- package/src/components/form/fields/schema-definition/CatalogLeafForm.tsx +0 -242
- package/src/components/form/fields/schema-definition/CatalogNodeEditor.tsx +0 -758
- package/src/components/form/fields/schema-definition/Hint.tsx +0 -22
- package/src/components/form/fields/schema-definition/InlineValidationBanner.tsx +0 -138
- package/src/components/form/fields/schema-definition/Loader.tsx +0 -20
- package/src/components/form/fields/schema-definition/MigrationsTab.tsx +0 -187
- package/src/components/form/fields/schema-definition/SchemaDefinitionField.stories.tsx +0 -286
- package/src/components/form/fields/schema-definition/TableEditor.tsx +0 -155
- package/src/components/form/fields/schema-definition/TablesTab.tsx +0 -138
- package/src/components/form/fields/schema-definition/catalog.ts +0 -237
- package/src/components/form/fields/schema-definition/helpers.ts +0 -90
- package/src/components/form/fields/schema-definition/index.tsx +0 -418
- package/src/components/form/fields/schema-definition/mockCatalog.ts +0 -325
- package/src/components/form/fields/schema-definition/mockDefinition.ts +0 -111
- package/src/components/form/fields/schema-definition/referenceSuggestions.tsx +0 -152
- package/src/components/form/fields/schema-definition/starterTemplate.ts +0 -68
- package/src/components/form/fields/schema-definition/types.ts +0 -185
- package/src/components/form/fields/schema-definition/useSchemaOptionCatalog.ts +0 -49
- package/src/components/form/fields/select/Select.stories.tsx +0 -872
- package/src/components/form/fields/select/Select.tsx +0 -624
- package/src/components/form/fields/select/SelectCollection.tsx +0 -594
- package/src/components/form/fields/string/String.stories.tsx +0 -86
- package/src/components/form/fields/string/String.tsx +0 -43
- package/src/components/form/fields/template/ExampleValueModal.stories.tsx +0 -114
- package/src/components/form/fields/template/ExampleValueModal.tsx +0 -99
- package/src/components/form/fields/template/ReadOnlyTemplateTag.tsx +0 -47
- package/src/components/form/fields/template/TemplateField.stories.tsx +0 -1121
- package/src/components/form/fields/template/TemplateField.tsx +0 -1749
- package/src/components/form/fields/template/TemplateText.tsx +0 -115
- package/src/components/form/fields/template/__fixtures__/longExampleValue.ts +0 -7
- package/src/components/form/fields/template/__fixtures__/multiLevelTemplates.json +0 -147
- package/src/components/form/fields/template/__fixtures__/templates.json +0 -83
- package/src/components/form/fields/timeout/Timeout.stories.tsx +0 -228
- package/src/components/form/fields/timeout/Timeout.tsx +0 -87
- package/src/components/form/fields/url/Url.stories.tsx +0 -94
- package/src/components/form/fields/url/Url.tsx +0 -85
- package/src/components/form/index.tsx +0 -49
- package/src/components/imageLightbox/ImageLightbox.stories.tsx +0 -238
- package/src/components/imageLightbox/ImageLightbox.tsx +0 -238
- package/src/components/imageLightbox/index.ts +0 -1
- package/src/components/log/Log.stories.tsx +0 -333
- package/src/components/log/Log.tsx +0 -285
- package/src/components/menu/Menu.stories.tsx +0 -155
- package/src/components/menu/Menu.tsx +0 -312
- package/src/components/qonsoleSmartInput/QonsoleSmartInput.stories.tsx +0 -797
- package/src/components/qonsoleSmartInput/QonsoleSmartInput.tsx +0 -105
- package/src/components/qonsoleSmartInput/index.ts +0 -16
- package/src/components/qonsoleSmartInput/qonsoleInserter.ts +0 -77
- package/src/components/qonsoleSmartInput/types.ts +0 -133
- package/src/components/qonsoleSmartInput/useQonsoleSession.ts +0 -124
- package/src/components/searchFilterBar/SearchFilterBar.stories.tsx +0 -62
- package/src/components/searchFilterBar/SearchFilterBar.tsx +0 -144
- package/src/components/searchFilterBar/index.ts +0 -1
- package/src/components/smartEditor/MarkdownDoc.tsx +0 -190
- package/src/components/smartEditor/SmartEditor.stories.tsx +0 -475
- package/src/components/smartEditor/SmartEditor.tsx +0 -808
- package/src/components/smartEditor/__fixtures__/mockLspServer.ts +0 -205
- package/src/components/smartEditor/helpers.ts +0 -217
- package/src/components/smartEditor/index.ts +0 -35
- package/src/components/smartEditor/styling.ts +0 -45
- package/src/components/smartEditor/types.ts +0 -211
- package/src/components/smartEditor/useLspAutocomplete.ts +0 -758
- package/src/components/smartEditor/useLspDiagnosticDecorations.ts +0 -125
- package/src/components/smartEditor/useLspHover.ts +0 -230
- package/src/components/smartEditor/useLspSemanticTokens.ts +0 -298
- package/src/components/smartEditor/useLspSession.ts +0 -231
- package/src/components/smartEditor/useLspSignatureHelp.ts +0 -198
- package/src/components/supportTicket/AttachmentChips.stories.tsx +0 -171
- package/src/components/supportTicket/AttachmentChips.tsx +0 -147
- package/src/components/supportTicket/InterfaceReferenceTags.stories.tsx +0 -257
- package/src/components/supportTicket/InterfaceReferenceTags.tsx +0 -130
- package/src/components/supportTicket/ReferencePicker.stories.tsx +0 -580
- package/src/components/supportTicket/ReferencePicker.tsx +0 -573
- package/src/components/supportTicket/TicketConversation.stories.tsx +0 -120
- package/src/components/supportTicket/TicketHeader.stories.tsx +0 -183
- package/src/components/supportTicket/TicketHeader.tsx +0 -248
- package/src/components/supportTicket/TicketMetaTags.stories.tsx +0 -103
- package/src/components/supportTicket/TicketMetaTags.tsx +0 -85
- package/src/components/supportTicket/TicketReplyBox.stories.tsx +0 -357
- package/src/components/supportTicket/TicketReplyBox.tsx +0 -172
- package/src/components/supportTicket/__fixtures__/kindMarks.ts +0 -28
- package/src/components/supportTicket/attachmentAccess.ts +0 -97
- package/src/components/supportTicket/fileToAttachment.ts +0 -24
- package/src/components/supportTicket/index.ts +0 -10
- package/src/components/supportTicket/meta.ts +0 -206
- package/src/components/supportTicket/ticketModel.ts +0 -131
- package/src/components/supportTicket/useLoadedImages.ts +0 -93
- package/src/components/ticketReferences/TicketReferences.stories.tsx +0 -341
- package/src/components/ticketReferences/TicketReferences.tsx +0 -914
- package/src/components/ticketReferences/index.ts +0 -2
- package/src/components/ticketThread/TicketThread.stories.tsx +0 -898
- package/src/components/ticketThread/TicketThread.tsx +0 -706
- package/src/components/ticketThread/index.ts +0 -6
- package/src/contexts/FetchContext.tsx +0 -25
- package/src/contexts/ReqraftContext.tsx +0 -9
- package/src/contexts/StorageContext.tsx +0 -33
- package/src/global.d.ts +0 -4
- package/src/helpers/allowedValues.ts +0 -268
- package/src/helpers/choiceChip.ts +0 -227
- package/src/helpers/common.ts +0 -326
- package/src/helpers/dpqlDetection.ts +0 -209
- package/src/helpers/expressions.ts +0 -140
- package/src/helpers/fieldDescription.ts +0 -39
- package/src/helpers/optionUiTypes.ts +0 -199
- package/src/helpers/options.ts +0 -150
- package/src/helpers/providerValue.ts +0 -125
- package/src/helpers/scrollbar.ts +0 -32
- package/src/helpers/singleLineString.ts +0 -62
- package/src/helpers/templateItems.ts +0 -81
- package/src/helpers/templateText.ts +0 -350
- package/src/helpers/templates.ts +0 -602
- package/src/helpers/validations.ts +0 -2085
- package/src/hooks/useArgSchema.ts +0 -37
- package/src/hooks/useCoarsePointer.ts +0 -30
- package/src/hooks/useFetch/useFetch.stories.tsx +0 -379
- package/src/hooks/useFetch/useFetch.tsx +0 -154
- package/src/hooks/usePhoneViewport.ts +0 -34
- package/src/hooks/useQorusTypes.ts +0 -233
- package/src/hooks/useReqraftProperty.ts +0 -16
- package/src/hooks/useStorage/useStorage.stories.tsx +0 -168
- package/src/hooks/useStorage/useStorage.ts +0 -35
- package/src/hooks/useTemplates.ts +0 -123
- package/src/hooks/useValidation.ts +0 -9
- package/src/hooks/useWebSocket/useWebSocket.ts +0 -224
- package/src/hooks/useWebSocket/useWebsocket.stories.tsx +0 -640
- package/src/hooks/useWhyDidYouUpdate.ts +0 -38
- package/src/index.tsx +0 -86
- package/src/providers/FetchProvider.tsx +0 -40
- package/src/providers/ReqraftProvider.tsx +0 -52
- package/src/providers/StorageProvider.tsx +0 -131
- package/src/stores/currentUser/currentUser.stories.tsx +0 -100
- package/src/stores/currentUser/currentUser.tsx +0 -94
- package/src/stories/Data/fileFieldArgSchema.json +0 -86
- package/src/stories/Tests/utils.ts +0 -320
- package/src/stories/storyNetwork.ts +0 -92
- package/src/stories/tracking.tsx +0 -206
- package/src/tracking/browser/attach.ts +0 -186
- package/src/tracking/browser/env.ts +0 -78
- package/src/tracking/core/consent.ts +0 -37
- package/src/tracking/core/engagement.ts +0 -47
- package/src/tracking/core/experiments.ts +0 -258
- package/src/tracking/core/hash.ts +0 -26
- package/src/tracking/core/ids.ts +0 -25
- package/src/tracking/core/observable.ts +0 -23
- package/src/tracking/core/queue.ts +0 -131
- package/src/tracking/core/sections.ts +0 -166
- package/src/tracking/core/storage.ts +0 -69
- package/src/tracking/core/tracker.ts +0 -417
- package/src/tracking/core/types.ts +0 -162
- package/src/tracking/core/utm.ts +0 -23
- package/src/tracking/index.ts +0 -72
- package/src/tracking/markup.ts +0 -17
- package/src/tracking/react/Experiment.tsx +0 -44
- package/src/tracking/react/TrackingProvider.tsx +0 -56
- package/src/tracking/react/hooks.ts +0 -106
- package/src/tracking/react/index.ts +0 -13
- package/src/tracking/testing.ts +0 -108
- package/src/tracking/ui/ExperimentCard.stories.tsx +0 -296
- package/src/tracking/ui/ExperimentCard.tsx +0 -667
- package/src/tracking/ui/ExperimentsOverlay.stories.tsx +0 -155
- package/src/tracking/ui/ExperimentsOverlay.tsx +0 -437
- package/src/tracking/ui/anchor.ts +0 -180
- package/src/tracking/ui/card.ts +0 -464
- package/src/tracking/ui/client.ts +0 -117
- package/src/tracking/ui/index.ts +0 -77
- package/src/tracking/ui/types.ts +0 -110
- package/src/tracking/ui/useExperimentsAdmin.ts +0 -103
- package/src/types/Form.ts +0 -29
- package/src/types.ts +0 -14
- package/src/utils/datetime.ts +0 -10
- package/src/utils/fetch.ts +0 -457
- package/src/utils/lspClient.ts +0 -711
- package/src/utils/lspClient.types.ts +0 -211
- package/src/utils/queryUnlessCancelled.ts +0 -28
- package/src/utils/websocket.ts +0 -293
- package/vite.config.ts +0 -58
- package/vitest.config.ts +0 -69
|
@@ -1,419 +0,0 @@
|
|
|
1
|
-
# Form engine — field migration from qorus-ide
|
|
2
|
-
|
|
3
|
-
Locked design + rationale for closing the gap between Reqraft's form
|
|
4
|
-
engine (`src/components/form/`) and qorus-ide's older `Field` system
|
|
5
|
-
(`qorus-frontend/qorus-ide/src/components/Field/`). The first concrete
|
|
6
|
-
deliverables are (1) a Reqraft **`auto` field** and (2) the migrated
|
|
7
|
-
**DataSchema editor** (`schema-definition`).
|
|
8
|
-
|
|
9
|
-
Execution checklists live at:
|
|
10
|
-
- [`.tasks/REQRAFT_AUTO_FIELD.md`](../.tasks/REQRAFT_AUTO_FIELD.md) — phase 1
|
|
11
|
-
- [`.tasks/SCHEMA_DEFINITION_FIELD.md`](../.tasks/SCHEMA_DEFINITION_FIELD.md) — phase 2
|
|
12
|
-
|
|
13
|
-
## Background — why fields are "missing"
|
|
14
|
-
|
|
15
|
-
There are **two parallel field systems**:
|
|
16
|
-
|
|
17
|
-
| | qorus-ide `Field/` | Reqraft `form/` |
|
|
18
|
-
|---|---|---|
|
|
19
|
-
| Origin | 2024-01 — the original | 2024-04 — a cleaner rebuild |
|
|
20
|
-
| Field types | ~68 | ~15 |
|
|
21
|
-
| Dispatcher | `Field/index.tsx` → `auto.tsx` | `form/fields/Field.tsx` (`FormField`) |
|
|
22
|
-
| Polymorphic core | **`AutoField`** (1017 lines) | `TemplateField` → `FormField` (thin) |
|
|
23
|
-
|
|
24
|
-
New field types land in **qorus-ide first** (that's the live product
|
|
25
|
-
surface) and get migrated to Reqraft incrementally — the DPQL / Smart
|
|
26
|
-
editors (`0.10.0`) were the most recent example. "Missing fields" =
|
|
27
|
-
Reqraft is younger and still catching up, not a deliberate omission.
|
|
28
|
-
|
|
29
|
-
The full gap (qorus-ide types absent from Reqraft) breaks into three
|
|
30
|
-
buckets:
|
|
31
|
-
|
|
32
|
-
1. **Generic data fields** — portable, belong in a toolkit:
|
|
33
|
-
`auto`, `schema-definition`, `data-provider`, `options`,
|
|
34
|
-
`option_hash`, `byte-size`, `url`, `code-editor`, `array-of-pairs`,
|
|
35
|
-
`multi-select`/`select-array`, `enum`-as-radio, `collection-documents`.
|
|
36
|
-
2. **Server-driven `ui_type` editors** — `tool-catalog`,
|
|
37
|
-
`processor-mappings`, `test-cases`, `active-windows` (`dpql` already
|
|
38
|
-
migrated).
|
|
39
|
-
3. **App-coupled / IDE-specific** — the ~20 `InterfaceSelector` types
|
|
40
|
-
(`workflow`, `service`, `job`, `mapper`, `fsm`, the `schema`
|
|
41
|
-
*interface picker*, …), plus `class-array`, `fsm-list`,
|
|
42
|
-
`service-events`, `processor`, `api-manager`, `tree`, etc. These
|
|
43
|
-
depend on qorus-ide app context (`InitialContext`, `TextContext`,
|
|
44
|
-
`qorus_instance`, the `interfaceToPlural` domain map) and are **out
|
|
45
|
-
of scope** for the generic toolkit.
|
|
46
|
-
|
|
47
|
-
This batch tackles bucket 1, in the order dictated by the dependency
|
|
48
|
-
below.
|
|
49
|
-
|
|
50
|
-
## The keystone — `auto` is a prerequisite, not an option
|
|
51
|
-
|
|
52
|
-
qorus-ide's `AutoField` is the polymorphic renderer **most fields
|
|
53
|
-
funnel through.** Reqraft has no equivalent: `FormField` /
|
|
54
|
-
`TemplateField` collapse `auto`/`any`/`binary` → `long-string` (a
|
|
55
|
-
plain textarea) via `mapQorusTypeToFormFieldType`
|
|
56
|
-
([`TemplateField.tsx:49-77`](../src/components/form/fields/template/TemplateField.tsx)),
|
|
57
|
-
and there is no type-picker UI at all.
|
|
58
|
-
|
|
59
|
-
This blocks the schema editor directly. The DataSchema catalogue's
|
|
60
|
-
leaf-type adapter falls back to `auto` for anything that isn't a plain
|
|
61
|
-
primitive ([`catalog.ts` `catalogTypeToFieldType`](../../qorus-ide/src/components/Field/schemaDefinition/catalog.ts)):
|
|
62
|
-
|
|
63
|
-
```ts
|
|
64
|
-
default:
|
|
65
|
-
// `*auto`, `auto`, and anything unrecognised fall back to the
|
|
66
|
-
// free-form `auto` field so no catalogue value is ever undroppable.
|
|
67
|
-
return { fieldType: 'auto' };
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
So **"migrate the schema field" and "use the auto field for most
|
|
71
|
-
fields" are the same thread.** Build the `auto` field first; the
|
|
72
|
-
schema editor (and the rest of bucket 1) render their fields through
|
|
73
|
-
it.
|
|
74
|
-
|
|
75
|
-
## Goal
|
|
76
|
-
|
|
77
|
-
1. Give Reqraft a real `auto` field: a type-picker + polymorphic
|
|
78
|
-
dispatcher that mirrors qorus-ide's `AutoField`, wired into the
|
|
79
|
-
existing `FormField` / `TemplateField` / `FormEngine` stack so every
|
|
80
|
-
consumer (including `FormEngine`-driven nested forms) gains it for
|
|
81
|
-
free.
|
|
82
|
-
2. Migrate `SchemaDefinitionEditor` onto Reqraft's `FormEngine` as the
|
|
83
|
-
first complex, server-catalogue-driven field — proving the pattern
|
|
84
|
-
for buckets 1 & 2.
|
|
85
|
-
|
|
86
|
-
## Phase 1 — the Reqraft `auto` field
|
|
87
|
-
|
|
88
|
-
### What `AutoField` does in qorus-ide (the spec to port)
|
|
89
|
-
|
|
90
|
-
From [`qorus-ide/src/components/Field/auto.tsx`](../../qorus-ide/src/components/Field/auto.tsx):
|
|
91
|
-
|
|
92
|
-
- **Type resolution.** Derives a `currentInternalType` from
|
|
93
|
-
`defaultType`, or infers it from the value via `getTypeFromValue`
|
|
94
|
-
(Reqraft already has this helper at `helpers/validations`). Handles
|
|
95
|
-
`auto` / `any` by inference.
|
|
96
|
-
- **Type picker.** When the type is `auto`/`any` (or `allowedTypes`
|
|
97
|
-
has >1 entry), renders a `SelectField` of the types a typed-in value
|
|
98
|
-
can have (`getImmediateValueTypes()`: True/False, Date, Text, Binary,
|
|
99
|
-
Decimal, List, Key/Value {}, Integer, RGB Color), with no item count,
|
|
100
|
-
letting the user pick the concrete type; the chosen type then renders
|
|
101
|
-
the matching sub-field. No Qore soft type (`softint`, `softlist`, …) is
|
|
102
|
-
offered: a soft type only declares a conversion for what a variable or
|
|
103
|
-
parameter is given, which means nothing for a literal. A soft type in a
|
|
104
|
-
caller's `allowedTypes` is offered once, as its base type, and a soft
|
|
105
|
-
type that arrives as `defaultType` / `defaultInternalType` is edited
|
|
106
|
-
with its base type's editor (`editorTypeOf()`) while the declared type
|
|
107
|
-
is what `onChange` reports. (`noSoft` is deprecated and inert.)
|
|
108
|
-
- **Concrete dispatch.** A switch over the resolved type → the right
|
|
109
|
-
field component. In Reqraft this delegates back into the existing
|
|
110
|
-
`FormField` switch (which already covers string/bool/int/float/
|
|
111
|
-
rgbcolor/long-string/markdown/cron/richtext/date/file/select/hash/
|
|
112
|
-
list) rather than duplicating it.
|
|
113
|
-
- **Null handling.** A "Set as null" / "Unset null" toggle when the
|
|
114
|
-
field `canBeNull`.
|
|
115
|
-
- **Allowed values.** Already handled by `FormField.renderAllowedValues`
|
|
116
|
-
— reuse it.
|
|
117
|
-
|
|
118
|
-
### Approach — a new `AutoFormField`, folded into the dispatcher
|
|
119
|
-
|
|
120
|
-
Create `src/components/form/fields/auto/AutoFormField.tsx`:
|
|
121
|
-
|
|
122
|
-
- Owns the type-picker UI and the `auto`/`any` → concrete-type
|
|
123
|
-
resolution + null toggle.
|
|
124
|
-
- For the resolved concrete type, **delegates to the existing
|
|
125
|
-
`FormField`** (pass the resolved `type` + `value` + `onChange`). No
|
|
126
|
-
re-implementation of the per-type rendering — `FormField` stays the
|
|
127
|
-
single source of truth for "how to render type X".
|
|
128
|
-
- Add `case 'auto': case 'any':` to `FormField`'s switch so the
|
|
129
|
-
dispatcher routes to `AutoFormField` (mirrors how qorus-ide's
|
|
130
|
-
`Field/index.tsx` routes `type="auto"` → `AutoField`). Because
|
|
131
|
-
`FormEngine` → `TemplateField` → `FormField`, nested schema-driven
|
|
132
|
-
forms gain `auto` automatically.
|
|
133
|
-
- Update both `mapQorusTypeToFormFieldType` copies (in `Field.tsx` and
|
|
134
|
-
`TemplateField.tsx`) so `auto`/`any` route to `'auto'` instead of
|
|
135
|
-
collapsing to `'long-string'`. **This is the one behaviour change for
|
|
136
|
-
existing consumers** — see Migration impact.
|
|
137
|
-
|
|
138
|
-
**Revised 2026-09-14 — an untyped field is typed into, never asked for a
|
|
139
|
-
type.** No field shows the type picker's *"Please select data type"*
|
|
140
|
-
anymore. It asked a question about storage ("is this Text or a Number?")
|
|
141
|
-
that an author writing a value often cannot answer, before they could write
|
|
142
|
-
anything, and it replaced a typable field with a pick-only one.
|
|
143
|
-
|
|
144
|
-
- **`AutoFormField`**, for a type that is still `auto` / `any`, renders the
|
|
145
|
-
long-string editor and stores what is typed as untyped — exactly what
|
|
146
|
-
template mode stores. The picker appears only where there is a real
|
|
147
|
-
choice: the schema allows several concrete types (`allowed_types`), or
|
|
148
|
-
the field already holds a value of a concrete type.
|
|
149
|
-
- **An explicit type** is chosen from the field's ⋮ menu — the per-type
|
|
150
|
-
entries under *Set Custom Value* (see `engine/typeChoices.ts`).
|
|
151
|
-
- **`TemplateField`** opens an empty untyped field that may hold a custom
|
|
152
|
-
value in template mode, whose editor is typable and offers the templates.
|
|
153
|
-
It decides that from the field's props, not from whether the template list
|
|
154
|
-
has arrived: on a cold load the type-filtered list does not exist at
|
|
155
|
-
mount, and a landing chosen from it put every such field on the picker.
|
|
156
|
-
- A field that may NOT hold a custom value (FormEngine passes
|
|
157
|
-
`allowCustomValues={false}` for `any`) still opens on its template menu —
|
|
158
|
-
a pick-only control because the schema made it one, not a type question.
|
|
159
|
-
- Emptying that editor leaves the field in template mode, where an empty
|
|
160
|
-
field lands. Switching to custom mode mounted a different editor in place
|
|
161
|
-
of the one being typed in, so the last backspace lost the cursor.
|
|
162
|
-
|
|
163
|
-
Guarded by `__tests__/untypedFieldNeverAsksForAType.test.tsx` and the
|
|
164
|
-
`AutoFormField` / `TemplateField` stories (`Empty`, `ViaFormEngine`,
|
|
165
|
-
`AutoComponent`, `EmptyAnyOpensOnTemplates`).
|
|
166
|
-
|
|
167
|
-
**Revised 2026-09-15 — template mode draws references as named chips.**
|
|
168
|
-
Template mode's typable editor (a string or untyped field that may also hold
|
|
169
|
-
a custom value) is `RichTextFormField` with `valueFormat: 'text'`, not a
|
|
170
|
-
textarea. The field still stores the plain string; each template reference in
|
|
171
|
-
it (`TEMPLATE_TOKEN_SOURCE`) is drawn as a chip, so a chosen template reads as
|
|
172
|
-
the name it was chosen by — in the Visual builder's operands and in every
|
|
173
|
-
string field that takes templates. A textarea spelled it `$local:name`.
|
|
174
|
-
|
|
175
|
-
- The chip's label is `templateChipLabel`: the catalogue's name for the
|
|
176
|
-
reference, else the reference as the DPQL Text view labels it
|
|
177
|
-
(`local: name`), so one reference reads alike in both views. Its hover and
|
|
178
|
-
colour are the collapsed row's (`ReadOnlyTemplateTag`).
|
|
179
|
-
- The editor keeps its own document and rebuilds it only when the stored
|
|
180
|
-
string changes from outside: rebuilding from the echo of what was typed
|
|
181
|
-
would hand the editor a new tree per keystroke, which moves the cursor.
|
|
182
|
-
- `string` holds one line: Enter adds none, and a pasted break is flattened.
|
|
183
|
-
- A value that is exactly one braced reference (`$data:{…}`, machine-written)
|
|
184
|
-
keeps its pick-only chip selector, unchanged.
|
|
185
|
-
- Only a value that STARTS with a reference enters template mode, so
|
|
186
|
-
`AutoFormField`'s text editor — `string`, `long-string` and untyped — is the
|
|
187
|
-
same chip editor whenever the field offers templates: text like
|
|
188
|
-
`Interface $local:id failed` reads with its references named too. `data`
|
|
189
|
-
and `binary` keep the textarea (encoded content), as does a field with no
|
|
190
|
-
templates to offer. Guarded by `__tests__/textFieldDrawsTemplateChips.test.tsx`
|
|
191
|
-
and the `TemplateField` stories *Template References In Text* (+ *On Phone*).
|
|
192
|
-
|
|
193
|
-
This reverses the 2026-08-27 choice (`85ba6ec`) to keep plain tokens as raw
|
|
194
|
-
text: that review rejected a *pick-only* chip because it could not be typed
|
|
195
|
-
into, and this editor is both. Conversion lives in `helpers/templateText.ts`
|
|
196
|
-
(`__tests__/templateText.test.ts`, `__tests__/richTextTextValue.test.tsx`).
|
|
197
|
-
|
|
198
|
-
**Revised 2026-09-16 — a field offers a template list only when it has one,
|
|
199
|
-
and template mode has a way out.** Two rules about the menu, both reported
|
|
200
|
-
from the stories:
|
|
201
|
-
|
|
202
|
-
- **No empty menu.** `TemplateField` hands its editor `undefined` — not an
|
|
203
|
-
empty list — when there is nothing to offer: the field's schema does not
|
|
204
|
-
allow templates (a `FormEngine` option without `supports_templates`), or the
|
|
205
|
-
type filter emptied the catalogue. An editor GIVEN a list draws the control
|
|
206
|
-
that opens it, so a list with no items opened a menu onto nothing. Guarded
|
|
207
|
-
by `__tests__/noEmptyTemplateMenu.test.tsx`.
|
|
208
|
-
- **A way back to a custom value.** Template mode's chip editor draws no `×`
|
|
209
|
-
of its own, so a field that entered template mode from the ⋮ ("Use Template")
|
|
210
|
-
offered nothing to leave it with. The ⋮ now carries "Use Custom Value"
|
|
211
|
-
whenever the field is in template mode and accepts custom values; leaving
|
|
212
|
-
clears the value only when it holds a reference (which would put the field
|
|
213
|
-
straight back into template mode) and keeps anything the author typed.
|
|
214
|
-
- **A lone group in the ⋮ opens itself.** Two of the menu's groups are
|
|
215
|
-
collapsed sections (`MenuActionsSection`, `CustomMenuItems`), so a menu
|
|
216
|
-
holding nothing but one of them asked for a click to reach the only thing on
|
|
217
|
-
offer — on an untyped field, "Set Custom Value" hiding the data types behind
|
|
218
|
-
it. It now starts expanded when it is the menu's only group; it keeps its
|
|
219
|
-
label, so the rows still say what they are, and can still be collapsed. Where
|
|
220
|
-
the menu holds more than one group the sections stay shut: there the click is
|
|
221
|
-
the choice. The same rule the template list follows for a lone category, and
|
|
222
|
-
the row menu already publishes these rows flat. Guarded by
|
|
223
|
-
`__tests__/loneMenuSectionOpensItself.test.tsx` (the section's own contract)
|
|
224
|
-
and the story *Auto · Via Form Engine Menu Opens Its Only Group* (the rule, in
|
|
225
|
-
a real browser — the menu lives in a popover jsdom never opens).
|
|
226
|
-
- **No document toolbar on a form field.** `RichTextFormField` asked Reqore
|
|
227
|
-
for undo and redo but not styling, and Reqore draws that bar as a panel as
|
|
228
|
-
wide as the tag list: an empty 600px box under the field holding two greyed
|
|
229
|
-
icons — they are disabled until there is history to walk. It is off for every
|
|
230
|
-
form use now; both still work from the keyboard, where every other text
|
|
231
|
-
field's do. The `richtext` type (the "Text" row of the data-type submenu) is
|
|
232
|
-
where this was reported. Guarded by
|
|
233
|
-
`__tests__/richTextFieldHasNoToolbar.test.tsx`.
|
|
234
|
-
|
|
235
|
-
**Revised 2026-09-16 — a field says what it takes, and an untyped one is
|
|
236
|
-
checked as the type it was given.** Two rules from the same report (picking
|
|
237
|
-
"Binary" and being told nothing about the value):
|
|
238
|
-
|
|
239
|
-
- **A binary field names its encodings.** Its placeholder reads
|
|
240
|
-
`Base64 — or 0x-prefixed hex, or a data:…;base64 URL`, which is what the
|
|
241
|
-
server actually decodes: Qorus `lib/misc.ql`
|
|
242
|
-
(`_priv_parse_ui_hash_value_intern`) reads base64 unless the value starts
|
|
243
|
-
`0x` or `data:<mime>;base64,`, symmetric with the `toBase64()` it encodes
|
|
244
|
-
with (`Classes/UserApi.qc`). Bare hex is the trap — it is not rejected, it is
|
|
245
|
-
read as base64 and corrupts. `validateField`'s `binary` branch already
|
|
246
|
-
accepted exactly these three spellings; the placeholder is that rule said
|
|
247
|
-
before the fact instead of after. A caller's own placeholder still wins, and
|
|
248
|
-
`data` is left alone — it is not base64. Guarded by
|
|
249
|
-
`__tests__/binaryFieldSaysWhatItTakes.test.tsx`.
|
|
250
|
-
- **An untyped option is validated as the type its VALUE carries.** `auto` and
|
|
251
|
-
`any` declare no type: the author picks one and it is recorded beside the
|
|
252
|
-
value. `getOptionFieldMessages` read the schema first, so a binary value was
|
|
253
|
-
validated as `auto` — which auto-detects from the value and accepts whatever
|
|
254
|
-
is there — while the form's own check prefers the stored type
|
|
255
|
-
(`getOptionFieldStorageType`). The two disagreed, so the form said "a field
|
|
256
|
-
is not valid and requires attention" while the field it meant gave no reason.
|
|
257
|
-
The messages now use the same precedence; a schema that names a concrete type
|
|
258
|
-
still wins, because the schema is what the field accepts.
|
|
259
|
-
`isUntypedOptionType` (`helpers/optionUiTypes.ts`) is the shared spelling.
|
|
260
|
-
Guarded by `__tests__/untypedFieldReportsItsChosenType.test.ts`.
|
|
261
|
-
|
|
262
|
-
**Revised 2026-09-16 (audit pass) — three rules the review pulled out of the
|
|
263
|
-
above.**
|
|
264
|
-
|
|
265
|
-
- **Whatever the field's own ⋮ offers, its ROW menu offers too.** A field
|
|
266
|
-
inside a compact row draws no menu of its own and publishes into the row's
|
|
267
|
-
(`rowMenuContext`). "Use Custom Value" was added to the drawn menu only, so
|
|
268
|
-
on the surface most options are actually edited from, template mode was still
|
|
269
|
-
a one-way door. The published list now carries it on the same condition, with
|
|
270
|
-
its own token in `publishedKey` — that key is what gates re-publication, so a
|
|
271
|
-
row without one never re-publishes when template mode flips. Guarded by
|
|
272
|
-
`__tests__/rowMenuOffersTheWayOutOfTemplateMode.test.tsx`.
|
|
273
|
-
- **`RichTextFormField` takes `tags` and does not forward it.** The editor's
|
|
274
|
-
`tags` is its template catalogue; a form field's `tags` is the chips to show.
|
|
275
|
-
Two different things under one name, and `{...rest}` sat after the computed
|
|
276
|
-
value, so a field spreading its props erased the template list — patched at
|
|
277
|
-
two call sites with `omit(rest, 'tags')` and latent at two more. `rest` is now
|
|
278
|
-
spread FIRST, `tags` is declared as the field's chips and dropped, and the
|
|
279
|
-
patches are gone.
|
|
280
|
-
- **One list of the untyped spellings.** `any`/`auto` was hand-rolled in eight
|
|
281
|
-
places. `UNTYPED_OPTION_TYPES` / `isUntypedOptionType` in
|
|
282
|
-
`helpers/optionUiTypes.ts` is now the one, and `engine/typeChoices`
|
|
283
|
-
re-exports it as `BuiltInAnyLikeTypes` for its existing callers. It lives in
|
|
284
|
-
helpers because a helper cannot import from a component.
|
|
285
|
-
|
|
286
|
-
Note that a `FormEngine` option only offers templates when it declares
|
|
287
|
-
`supports_templates` — a field with no ⋮ template entry is that option's
|
|
288
|
-
schema speaking, not a defect.
|
|
289
|
-
|
|
290
|
-
### Out of scope for phase 1
|
|
291
|
-
|
|
292
|
-
- The `type-depends-on` / `requestFieldData` cross-field type
|
|
293
|
-
resolution (qorus-ide auto.tsx `234-261`) — IDE-specific; stub the
|
|
294
|
-
prop, don't wire it.
|
|
295
|
-
- `data-provider` / `connection` / `InterfaceSelector` branches inside
|
|
296
|
-
qorus-ide's AutoField switch — those are bucket 3, not migrated.
|
|
297
|
-
- Expression / template values (`is_expression`) beyond what
|
|
298
|
-
`TemplateField` already does.
|
|
299
|
-
|
|
300
|
-
## Phase 2 — the DataSchema editor (`schema-definition`)
|
|
301
|
-
|
|
302
|
-
### Why it fits Reqraft's form engine
|
|
303
|
-
|
|
304
|
-
`SchemaDefinitionEditor` is **a server-catalogue-driven nested form**,
|
|
305
|
-
which is exactly what `FormEngine` is. Concretely, the editor:
|
|
306
|
-
|
|
307
|
-
- Fetches one static catalogue: `GET schemas?action=options`
|
|
308
|
-
([`useSchemaOptionCatalog.ts`](../../qorus-ide/src/components/Field/schemaDefinition/useSchemaOptionCatalog.ts),
|
|
309
|
-
uses Reqraft's own `useFetch`), shape `ISchemaOptionCatalog`. 100%
|
|
310
|
-
server-driven — no FE field fallbacks.
|
|
311
|
-
- Walks the catalogue recursively (`CatalogNodeEditor`,
|
|
312
|
-
`CatalogGroupBody`), discriminating each node as leaf / group / map /
|
|
313
|
-
list ([`catalog.ts`](../../qorus-ide/src/components/Field/schemaDefinition/catalog.ts)).
|
|
314
|
-
- Renders each **leaf** by adapting it to an options-schema entry
|
|
315
|
-
(`catalogLeafToFieldSchema` → `IOptionsSchema[string]`) and handing
|
|
316
|
-
it to qorus-ide's `<Options>` field
|
|
317
|
-
([`CatalogLeafForm.tsx`](../../qorus-ide/src/components/Field/schemaDefinition/CatalogLeafForm.tsx)).
|
|
318
|
-
**Reqraft's `FormEngine` consumes the same `IQorusFormSchema` shape**
|
|
319
|
-
(`options` + `value` + `onChange`) — this is the single integration
|
|
320
|
-
seam.
|
|
321
|
-
|
|
322
|
-
So the bulk of the editor (catalogue machinery, types, map/list drawer
|
|
323
|
-
editors, reference-suggestion logic) is generic code with zero
|
|
324
|
-
qorus-ide coupling and copies over near-verbatim. The real work is the
|
|
325
|
-
`<Options>` → `FormEngine` adapter and porting two bespoke tabs.
|
|
326
|
-
|
|
327
|
-
### Approach
|
|
328
|
-
|
|
329
|
-
1. Copy the catalogue-generic machinery into
|
|
330
|
-
`src/components/form/fields/schema-definition/`: `types.ts`,
|
|
331
|
-
`catalog.ts`, `helpers.ts`, `referenceSuggestions.tsx`,
|
|
332
|
-
`catalogContext.tsx`, `useSchemaOptionCatalog.ts` (repoint `useFetch`
|
|
333
|
-
import to the Reqraft barrel — already where qorus-ide imports it
|
|
334
|
-
from).
|
|
335
|
-
2. **Replace the leaf renderer's `<Options>` with Reqraft `FormEngine`**
|
|
336
|
-
in `CatalogLeafForm`. `catalogLeafToFieldSchema` already emits the
|
|
337
|
-
right shape; the adapter wires `value`/`onChange`. This is where the
|
|
338
|
-
phase-1 `auto` field pays off — leaves typed `auto` now render a
|
|
339
|
-
real type-picker instead of a textarea. (Revised 2026-09-14: an empty
|
|
340
|
-
`auto` leaf is a typable editor again, with the type on its ⋮ menu — see
|
|
341
|
-
phase 1.)
|
|
342
|
-
3. Port `CatalogNodeEditor` (group/map/list dispatch + drawer editors),
|
|
343
|
-
swapping qorus-ide's `QorusTable` for `ReqoreTable` (or a Reqraft
|
|
344
|
-
table if one exists) and `Hint` for a Reqraft equivalent or nothing.
|
|
345
|
-
4. Port the two bespoke layout tabs — `TablesTab` (inline-expandable
|
|
346
|
-
panels) + `TableEditor`, and `MigrationsTab` (version timeline) —
|
|
347
|
-
plus `InlineValidationBanner`. These are presentation wrappers
|
|
348
|
-
around the generic renderer.
|
|
349
|
-
5. Expose as a Reqraft form field: add `case 'schema-definition':` to
|
|
350
|
-
`FormField` (and `ui_type === 'schema-definition'`), mirroring
|
|
351
|
-
qorus-ide's `auto.tsx` ui_type branch.
|
|
352
|
-
6. Stories + tests, mock catalogue (port `mockCatalog.ts` /
|
|
353
|
-
`mockDefinition.ts`).
|
|
354
|
-
|
|
355
|
-
### Open question (resolve during phase 2)
|
|
356
|
-
|
|
357
|
-
- **`QorusTable` replacement.** qorus-ide's `QorusTable` adds search +
|
|
358
|
-
sort over `ReqoreTable`. Decide: use `ReqoreTable` directly (and
|
|
359
|
-
re-add search/sort only if a section is large), or port a thin table
|
|
360
|
-
helper into Reqraft. Default: `ReqoreTable` directly; revisit if a
|
|
361
|
-
catalogue map/list section is routinely large.
|
|
362
|
-
|
|
363
|
-
## Out of scope (whole batch)
|
|
364
|
-
|
|
365
|
-
- Bucket 3 (interface selectors incl. the `schema` *interface picker*,
|
|
366
|
-
and all IDE-specific fields). The `schema` the user asked about is the
|
|
367
|
-
**DataSchema editor**, not the interface picker — confirmed.
|
|
368
|
-
- The other bucket-2 editors (`tool-catalog`, `processor-mappings`,
|
|
369
|
-
`test-cases`, `active-windows`). They follow the same pattern the
|
|
370
|
-
schema editor establishes and can be separate task files later.
|
|
371
|
-
- `data-provider` / `options` / `option_hash` / `byte-size` / `url` /
|
|
372
|
-
`code-editor` fields. Tracked for a later batch; several become much
|
|
373
|
-
cheaper once the `auto` field exists.
|
|
374
|
-
|
|
375
|
-
## Locked decisions
|
|
376
|
-
|
|
377
|
-
- **`auto` first, schema editor second.** The schema editor's leaf
|
|
378
|
-
adapter depends on `auto`; building the editor first would degrade
|
|
379
|
-
every non-primitive leaf to a textarea.
|
|
380
|
-
- **Delegate, don't duplicate.** `AutoFormField` resolves the type and
|
|
381
|
-
delegates to `FormField`; `FormField` remains the only place that
|
|
382
|
-
knows how to render a concrete type.
|
|
383
|
-
- **One integration seam for the schema editor.** Everything funnels
|
|
384
|
-
through `FormEngine` at the leaf — we do not port qorus-ide's
|
|
385
|
-
`<Options>` (`systemOptions.tsx`, 1500+ lines, deeply IDE-coupled).
|
|
386
|
-
- **No app context in Reqraft.** Anything needing `InitialContext` /
|
|
387
|
-
`TextContext` / `qorus_instance` stays in qorus-ide. The schema
|
|
388
|
-
editor qualifies because it needs none of these.
|
|
389
|
-
|
|
390
|
-
## Migration impact
|
|
391
|
-
|
|
392
|
-
- **Phase 1 behaviour change.** Fields explicitly typed `auto` / `any`
|
|
393
|
-
currently render as a `long-string` textarea. After phase 1 they
|
|
394
|
-
render the type-picker + resolved sub-field. Any consumer relying on
|
|
395
|
-
"auto == textarea" changes — but no existing Reqraft consumer sets
|
|
396
|
-
`type="auto"` (Reqraft never advertised it), so the real-world blast
|
|
397
|
-
radius is nil. New, additive `'auto'` handling otherwise; no other
|
|
398
|
-
type's rendering changes.
|
|
399
|
-
- **Phase 2 is purely additive** — a new field type, new files, no
|
|
400
|
-
existing-field changes.
|
|
401
|
-
- **Release.** Separate from the in-flight `0.10.0` SmartEditor batch;
|
|
402
|
-
target a later minor (e.g. `0.11.0`). Tracked as new rows in
|
|
403
|
-
[`.tasks/INDEX.md`](../.tasks/INDEX.md).
|
|
404
|
-
|
|
405
|
-
## Status
|
|
406
|
-
|
|
407
|
-
**Design locked 2026-06-09.** First two phases scoped (auto field,
|
|
408
|
-
schema editor). Buckets 2 (remaining `ui_type` editors) and the rest
|
|
409
|
-
of bucket 1 are acknowledged but not yet scoped — they get their own
|
|
410
|
-
task files when picked up. Revisions to this doc require an explicit
|
|
411
|
-
"Revised <date>" note per the repo workflow.
|
|
412
|
-
|
|
413
|
-
**Revised 2026-06-09 (same day, post-implementation).** Two items that
|
|
414
|
-
were deferred during implementation were then completed in a follow-up
|
|
415
|
-
pass and are no longer open: (a) bare `soft*` (and `binary`) types now
|
|
416
|
-
render through `FormField` directly, not only via the auto field; (b)
|
|
417
|
-
the `schema-definition` field is reachable via the `ui_type` /
|
|
418
|
-
`FormEngine` path, not only the direct `type` path. Both verified by
|
|
419
|
-
story play tests. Scope of the two phases is otherwise unchanged.
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
# IDE → reqraft integration checklist
|
|
2
|
-
|
|
3
|
-
When qorus-ide swaps its field stack to reqraft's ported components
|
|
4
|
-
(the "Phase E" consumption that the FIELD_STACK / EXPRESSION_BUILDER
|
|
5
|
-
batches were built for), the components are drop-in **except** for a set
|
|
6
|
-
of features that reqraft deliberately did not absorb — each because it
|
|
7
|
-
couples to an IDE-only system (app registry, live catalogues, per-user
|
|
8
|
-
saved state). Every one of these has an **injection seam** already in the
|
|
9
|
-
ported code; the IDE re-attaches its own implementation through that prop.
|
|
10
|
-
|
|
11
|
-
Nothing here is broken in reqraft. The risk is **silent regression** — a
|
|
12
|
-
feature disappearing because a seam wasn't wired. This file is the
|
|
13
|
-
checklist the IDE-integration PR ticks off so that can't happen.
|
|
14
|
-
|
|
15
|
-
## The seams
|
|
16
|
-
|
|
17
|
-
| Feature that regresses if skipped | Seam (reqraft prop) | What the IDE passes | If skipped |
|
|
18
|
-
|---|---|---|---|
|
|
19
|
-
| **Saved values** (Save-Value button + saved-value suggestions) | `TemplateField` / `AutoFormField` → `menuItems` | The IDE's existing `SaveValueButton` (it carries its own `useQorusStorage('savedValues')` context, so it works as-injected). The inert `allowSaving` / `showSavedValues` props stay for call-site parity. | Field renders, no save button, saved values unreadable — **silent** |
|
|
20
|
-
| **IDE-only field editors** for types reqraft doesn't port: `data-provider` (ConnectorField), `processor-mappings`, `tool-catalog`, `test-cases`, `active-windows`, `collection-documents`, `code-editor`, `option_hash`, the InterfaceSelector family (`mapper`…`value-map`), `connection` | `AutoFormField` → `componentOverrides={{ <type>: Editor }}` (dispatch at AutoFormField.tsx:340) | The IDE's editor component per type | The type renders the `Unknown type!` danger tag — **loud-ish** (visible, not a crash) |
|
|
21
|
-
| **Connection management** (inline create/edit on `connection` fields) | same `componentOverrides` entry for `connection` | The IDE's connection editor (it owns the CRUD/dialog/permissions) | No inline connection actions — **silent** |
|
|
22
|
-
| **App-action badges** (app logos/icons on template dropdown rows) | `buildTemplates` payload (`logo` field flows through to `image:` — templates.ts:192) | Nothing extra — feed templates from `system/getContextData` through `buildTemplates`; logos ride along for free | Templates render without app logos — **silent, cosmetic** |
|
|
23
|
-
| **AI assistance** in the ExpressionBuilder | `ExpressionField` → `extraActions` (panel-action array or `({selectedExpression, value}) => actions`) — forwarded to the builder and into every operand row. *Revised 2026-09-07:* the seam was declared on `ExpressionBuilder` only, but hosts mount the `ExpressionField` shell, and the builder's two operand `TemplateField` mounts did not pass it on — so it was unreachable from the component actually used and lost again inside any operand that was itself an expression. Both hops now forward it ([#116](https://github.com/qoretechnologies/toolkit-react/issues/116)). | The IDE's AI action button | No AI action on any expression card — **silent** (this is exactly what happened when qorus-ide adopted the shell) |
|
|
24
|
-
| **Server-handled expressions** (server decides field/template acceptance per function) | `ExpressionField` → `serverHandled` + `expressionsUrl` (already plumbed) | The live `expressionsUrl`; set `serverHandled` | Offline catalogue only — **silent, degraded** |
|
|
25
|
-
|
|
26
|
-
## Notes
|
|
27
|
-
|
|
28
|
-
- "Silent" markers are the dangerous ones — they compile clean and only
|
|
29
|
-
surface as a missing feature in the running IDE. Tick each row.
|
|
30
|
-
- Most seams are story-tested in reqraft EXCEPT `componentOverrides`,
|
|
31
|
-
which has no coverage yet — worth a seam smoke-test before the IDE
|
|
32
|
-
relies on it. *Revised 2026-09-07:* this used to point at B3 in
|
|
33
|
-
`.tasks/BRANCH_REMEDIATION.md`, a file that no longer exists; the
|
|
34
|
-
`extraActions` seam is now covered end to end by
|
|
35
|
-
`ExpressionField.stories.tsx` › `NestedOperandKeepsInjectedActions`.
|
|
36
|
-
- **Revised 2026-09-07 — the shell is the host's component.** Every seam in
|
|
37
|
-
the table must be reachable through `ExpressionField`, not only through
|
|
38
|
-
`ExpressionBuilder`; and anything meant for "every card" must also cross
|
|
39
|
-
the operand `TemplateField` boundary, because an operand that is itself an
|
|
40
|
-
expression mounts its own builder. A seam that stops one hop short reads
|
|
41
|
-
as wired and is not — which is the silent-regression class this checklist
|
|
42
|
-
exists to prevent.
|
|
43
|
-
*Revised 2026-09-08:* a host that mirrors this rule needs the bare builder
|
|
44
|
-
from the barrel; it is exported next to the shell as of 0.10.53 (#119) — no
|
|
45
|
-
deep import of `dist/…/expressions/builder` required.
|
|
46
|
-
- **`inheritedFromParent` is stable by identity.** A host editor (and any
|
|
47
|
-
`arg_schema` sub-form) is handed the inheritance bag as a prop, and the
|
|
48
|
-
engine guarantees the SAME object back for as long as nothing in it changed:
|
|
49
|
-
a field that declares no `inherit_props` forwards the bag it was handed
|
|
50
|
-
unwrapped, a form with no inherited scope forwards one shared frozen object,
|
|
51
|
-
and a field that does declare `inherit_props` gets one merge per schema /
|
|
52
|
-
sibling-value change (`inheritedScopeFor`, memoised per field). A host editor
|
|
53
|
-
may therefore use it in a dependency list or a `memo` comparison. Built
|
|
54
|
-
inline, as it was before 0.10.55, it re-rendered every field of every form on
|
|
55
|
-
every render — the console read `Template field <name> Updated because:
|
|
56
|
-
{inheritedFromParent}` forever. The same treatment exists in qorus-ide's
|
|
57
|
-
`systemOptions.tsx`, which must stay in step until FormEngine replaces it.
|
|
58
|
-
|
|
59
|
-
- **Open product call (B4):** whether reqraft should ALSO ship a *native*
|
|
60
|
-
saved-values (so non-IDE consumers get it without wiring the seam). The
|
|
61
|
-
storage primitive exists (`useReqraftStorage` mirrors the IDE's
|
|
62
|
-
`useQorusStorage` exactly), so it's ~1 day if wanted — but the seam
|
|
63
|
-
above already keeps the IDE whole, so native is a scope question, not a
|
|
64
|
-
blocker.
|
|
@@ -1,156 +0,0 @@
|
|
|
1
|
-
# Render-expression transport — server "Explain" over the LSP
|
|
2
|
-
|
|
3
|
-
**Status:** locked 2026-06-10.
|
|
4
|
-
**Task file:** `.tasks/RENDER_EXPRESSION_LSP.md`.
|
|
5
|
-
**Background:** `/tmp/render-expression-exposure.md` (the original server
|
|
6
|
-
ask), `design/EXPRESSION_BUILDER_REPORT_STRATEGY.md` (the builder port that
|
|
7
|
-
consumes this), `.tasks/LSP_SHARED_CONNECTION.md` (the shared-socket
|
|
8
|
-
architecture this rides).
|
|
9
|
-
|
|
10
|
-
## Decision
|
|
11
|
-
|
|
12
|
-
The "Explain" rendering (`DataProvider::renderExpression`) is delivered to
|
|
13
|
-
reqraft over the **LSP** as a new custom method **`dpql/renderExpression`**,
|
|
14
|
-
added to `QorusLspWebSocketHandler.qc` next to `dpql/serialize`. REST
|
|
15
|
-
(`?action=render-expression`) is the recorded fallback if the server side
|
|
16
|
-
prefers it; SSE was considered and rejected on the 2026-06-10 call
|
|
17
|
-
(one-way). Rationale:
|
|
18
|
-
|
|
19
|
-
- The server delta is tiny — the rendering engine already exists
|
|
20
|
-
(`DataProvider::renderExpression`, qore `DataProvider.qc:834`); the
|
|
21
|
-
creator-WS handler is a thin wrapper over it, and the new LSP handler is
|
|
22
|
-
the same wrapper speaking JSON-RPC.
|
|
23
|
-
- reqraft already speaks this protocol (`src/utils/lspClient.ts`) — no new
|
|
24
|
-
transport, auth, or reconnect machinery.
|
|
25
|
-
- JSON-RPC request ids natively solve response association (see below).
|
|
26
|
-
- Explain updates live as the expression changes (confirmed on the team
|
|
27
|
-
call), which suits a persistent socket + debounce.
|
|
28
|
-
- Storybook bonus: REST fetches from storybook to `localhost:8012` are
|
|
29
|
-
CORS-blocked; the LSP WebSocket is not.
|
|
30
|
-
|
|
31
|
-
### Why not the alternatives (verified live, 2026-06-10)
|
|
32
|
-
|
|
33
|
-
The hoped-for shortcut — that `dpql/serialize`'s `richtext` or
|
|
34
|
-
`dpql/toRichtext` already produce the rendering — was **disproven** against
|
|
35
|
-
`localhost:8012`:
|
|
36
|
-
|
|
37
|
-
| Source | Output for `starts-with("test","t")` |
|
|
38
|
-
|---|---|
|
|
39
|
-
| creator-WS `render-expression` | `"test".startsWith("t", true)` — semantic rendering |
|
|
40
|
-
| LSP `dpql/serialize` | `dpql: "test" startsWith "t"` + `richtext` = the same DPQL string in paragraph nodes |
|
|
41
|
-
| LSP `dpql/toRichtext` | takes a `text` (DPQL string) param, not an AST — syntactic highlighting only |
|
|
42
|
-
|
|
43
|
-
`renderExpression` renders the *AST semantically*; `toRichtext` highlights
|
|
44
|
-
the *DPQL source string*. Different things; the shortcut does not exist.
|
|
45
|
-
|
|
46
|
-
## The 20-builders question (Filip, 2026-06-10 call)
|
|
47
|
-
|
|
48
|
-
> "you can have 20 [builders]… if one [message] comes, you need to
|
|
49
|
-
> associate it with one of the 20 expression builders… would it have
|
|
50
|
-
> different connections or how would you associate the message?"
|
|
51
|
-
|
|
52
|
-
The answer has three parts:
|
|
53
|
-
|
|
54
|
-
1. **Association = JSON-RPC ids.** Each `useRenderExpression().render(value)`
|
|
55
|
-
call sends a request with a unique id and resolves its OWN promise from
|
|
56
|
-
the matching response (`LspSharedConnection.pending` map). No broadcast,
|
|
57
|
-
no cross-wiring — 20 builders means 20 independent in-flight requests,
|
|
58
|
-
each landing in the right component.
|
|
59
|
-
2. **Connections: ONE shared render socket, not 20.** All
|
|
60
|
-
`useRenderExpression` consumers share a single lazy module-level
|
|
61
|
-
`LspClient`, which itself rides the per-endpoint `LspSharedConnection`
|
|
62
|
-
(see `.tasks/LSP_SHARED_CONNECTION.md`) — so render requests multiplex
|
|
63
|
-
onto the *same* socket any open DPQL editors already use. Rendering is
|
|
64
|
-
stateless server-side (no document session), so one connection serves
|
|
65
|
-
everyone. Reconnect logic is the existing `ReqraftWebSocket` schedule.
|
|
66
|
-
3. **Debounce per builder (~300ms).** Each hook instance coalesces rapid
|
|
67
|
-
re-renders (leading edge immediate, trailing edge collapses to the
|
|
68
|
-
newest AST), so 20 builders typing don't flood the socket.
|
|
69
|
-
|
|
70
|
-
## Contract
|
|
71
|
-
|
|
72
|
-
```
|
|
73
|
-
method: dpql/renderExpression (stateless — no uri/didOpen needed)
|
|
74
|
-
params: { expression: <bare {exp,args} AST | {is_expression, value} wrapper>,
|
|
75
|
-
expmap?: <expression info map override> }
|
|
76
|
-
result: { rendered: "<readable string>", richtext: <richtext hash> }
|
|
77
|
-
errors: -32602 missing/invalid expression; -32803 render failure;
|
|
78
|
-
-32601 on servers predating the method
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
## Waiting, not approximating (reqraft)
|
|
82
|
-
|
|
83
|
-
`useRenderExpression()` returns `{ render, renderRich }`; both resolve the
|
|
84
|
-
server's rendering or `null`:
|
|
85
|
-
|
|
86
|
-
- A render **waits for the connection** — there is no timer racing it. The
|
|
87
|
-
connection has its own reconnect schedule and rejects once it gives up
|
|
88
|
-
(see below), so a render never outlives a dead socket.
|
|
89
|
-
- `null` means the server cannot render: the connection gave up, or the server
|
|
90
|
-
predates the method (`-32601`, remembered for the page lifetime).
|
|
91
|
-
- There is **no client-side stand-in**. A Qorus form does not work without
|
|
92
|
-
Qorus, so the approximation only ever appeared while the page's first
|
|
93
|
-
connection was still opening, marked "Approximate" on the first Explain of
|
|
94
|
-
every page. `renderExpressionToText` survives only as the synchronous summary
|
|
95
|
-
a collapsed row prints (`readFirst.ts`), and is never shown in place of a
|
|
96
|
-
server rendering.
|
|
97
|
-
|
|
98
|
-
## How an expression is shown when it is not being edited
|
|
99
|
-
|
|
100
|
-
Every read-only expression surface draws through **`DpqlRendering`**
|
|
101
|
-
(`src/components/form/expressions/DpqlRendering.tsx`): the Explain panel, the
|
|
102
|
-
Text view's Preview, the conversion a type-fit message suggests, and a collapsed
|
|
103
|
-
expression row. It is a read-only `DpqlEditor` with diagnostics and hover off,
|
|
104
|
-
so every one of them reads the same — monospace, coloured by the language
|
|
105
|
-
server's semantic tokens (the canonical tokenizer; there is no client-side
|
|
106
|
-
highlighter), template references as chips.
|
|
107
|
-
|
|
108
|
-
- `ExpressionRendering` renders an AST: it waits in the form's one waiting shape
|
|
109
|
-
(`FormFieldsSkeleton`, `data-wait="expression-rendering"`), then shows the
|
|
110
|
-
server's rendering, or says "This expression could not be rendered." when the
|
|
111
|
-
server cannot.
|
|
112
|
-
- The Preview appears only once the server's rendering exists and differs from
|
|
113
|
-
the typed text; it has no waiting state of its own.
|
|
114
|
-
- A surface with a template catalogue passes it (`templates`): a reference the
|
|
115
|
-
catalogue knows reads as the name it was chosen by, with the entry's
|
|
116
|
-
description as its hover — the Discord assistant's Save Reply row reads
|
|
117
|
-
`trim(Choices[0].message.content)`. One it does not know keeps its path
|
|
118
|
-
(`data: dc_ai_reply.choices[0].message.content`). A collapsed row passes its
|
|
119
|
-
field's own templates, else the form's; the builder's Explain passes its own.
|
|
120
|
-
- A reference's path takes every dot except one that starts a method call, so
|
|
121
|
-
the server's `$local:str.endsWith($local:p, true)` chips `$local:str`, not
|
|
122
|
-
`str.endsWith`.
|
|
123
|
-
- A new read-only expression surface uses `DpqlRendering`, never its own
|
|
124
|
-
`<code>`, rich-text field or chip splitter.
|
|
125
|
-
|
|
126
|
-
## Lifetime of the shared render socket
|
|
127
|
-
|
|
128
|
-
The module-level render client never releases its connection: the first
|
|
129
|
-
expression rendered on a page holds the endpoint's `LspSharedConnection` for
|
|
130
|
-
the rest of the page. Two consequences are designed for:
|
|
131
|
-
|
|
132
|
-
- **A socket that gives up is forgotten.** When the socket exhausts its
|
|
133
|
-
reconnect attempts, the connection fails any handshake still waiting and
|
|
134
|
-
drops the socket; the next `connect()` from any client on that endpoint
|
|
135
|
-
dials afresh. Without this, a first handshake that never completed held
|
|
136
|
-
every later editor on "Connecting to language server…" for the life of the
|
|
137
|
-
page, and one that had completed kept reporting the dead socket as ready.
|
|
138
|
-
- **Storybook resets it per story.** Stories run in one page, so the
|
|
139
|
-
connection an earlier story opened would otherwise serve a later story —
|
|
140
|
-
including one that starts its own mock LSP, which is then never dialled.
|
|
141
|
-
`.storybook/preview.tsx` runs `_resetRenderExpressionTransportForTests()`
|
|
142
|
-
and `_resetSharedLspConnectionsForTests()` in a project-level `beforeEach`.
|
|
143
|
-
- **Every story has a language server.** Because renderings wait rather than
|
|
144
|
-
approximate, the same `beforeEach` starts the mock DPQL server
|
|
145
|
-
(`dpqlMockLsp.ts`) for every story that is not `live`. Its answers follow the
|
|
146
|
-
real server's (`dpqlMockLanguage.ts`, pinned in
|
|
147
|
-
`__tests__/dpqlMockLanguage.test.ts`); a story that needs other answers starts
|
|
148
|
-
its own server on the URL, which replaces the default.
|
|
149
|
-
- **The rendering is spelled by the catalogue.** The server renders a function
|
|
150
|
-
by name (`concat("a", $local:x)`), an expression with a `render_template` by
|
|
151
|
-
that template (`$arg[0].startsWith($arg[1], $arg[2])`, a missing argument
|
|
152
|
-
read as its `default_value`), and any other operator as its arguments joined
|
|
153
|
-
by its symbol. A two-argument word comparison serializes infix
|
|
154
|
-
(`"test" startsWith "t"`) and otherwise as a call by symbol. The story server
|
|
155
|
-
reads `mockExpressions` by the same rules, which is why that fixture carries
|
|
156
|
-
the live `render_template`s and groups.
|