@qoretechnologies/reqraft 0.10.62 → 0.10.63-pr.142.g0b675cd
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 +21 -1
- package/dist/components/Description/describedControl.d.ts +48 -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 +25 -5
- package/dist/components/dpqlEditor/DpqlEditor.js.map +1 -1
- package/dist/components/dpqlEditor/dpqlHelpers.d.ts +10 -1
- package/dist/components/dpqlEditor/dpqlHelpers.d.ts.map +1 -1
- package/dist/components/dpqlEditor/dpqlHelpers.js +30 -13
- package/dist/components/dpqlEditor/dpqlHelpers.js.map +1 -1
- package/dist/components/dpqlEditor/dpqlTags.d.ts +11 -7
- package/dist/components/dpqlEditor/dpqlTags.d.ts.map +1 -1
- package/dist/components/dpqlEditor/dpqlTags.js +11 -6
- package/dist/components/dpqlEditor/dpqlTags.js.map +1 -1
- package/dist/components/dpqlEditor/types.d.ts +47 -8
- package/dist/components/dpqlEditor/types.d.ts.map +1 -1
- package/dist/components/dpqlEditor/useDpqlSession.d.ts +2 -2
- package/dist/components/dpqlEditor/useDpqlSession.d.ts.map +1 -1
- package/dist/components/dpqlEditor/useDpqlSession.js +16 -7
- 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 +151 -83
- 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 +29 -3
- package/dist/components/form/engine/CompactToolbar.js.map +1 -1
- package/dist/components/form/engine/FormEngine.d.ts +34 -1
- package/dist/components/form/engine/FormEngine.d.ts.map +1 -1
- package/dist/components/form/engine/FormEngine.js +487 -87
- 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.map +1 -1
- package/dist/components/form/engine/OptionFieldMessages.js +24 -3
- package/dist/components/form/engine/OptionFieldMessages.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 +12 -6
- package/dist/components/form/engine/_structuredData/SchemaDataView.js.map +1 -1
- package/dist/components/form/engine/compactRowContext.d.ts +19 -0
- 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 +0 -1
- package/dist/components/form/engine/compactRowStyles.d.ts.map +1 -1
- package/dist/components/form/engine/compactRowStyles.js +12 -20
- 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/readFirst.d.ts +24 -8
- package/dist/components/form/engine/readFirst.d.ts.map +1 -1
- package/dist/components/form/engine/readFirst.js +77 -109
- 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 +2 -0
- package/dist/components/form/engine/rowFocus.d.ts.map +1 -1
- package/dist/components/form/engine/rowFocus.js +26 -3
- 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 +3 -3
- package/dist/components/form/expressions/DpqlRendering.js.map +1 -1
- package/dist/components/form/expressions/ExpressionField.d.ts +41 -3
- package/dist/components/form/expressions/ExpressionField.d.ts.map +1 -1
- package/dist/components/form/expressions/ExpressionField.js +396 -99
- package/dist/components/form/expressions/ExpressionField.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 +27 -9
- 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 +4 -2
- package/dist/components/form/expressions/builder/argumentWrapper.js.map +1 -1
- package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.d.ts.map +1 -1
- package/dist/components/form/expressions/builder/confirmMismatchedTypesModal.js +5 -4
- 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 +6 -3
- package/dist/components/form/expressions/builder/confirmUnsupportedTypeModal.js.map +1 -1
- package/dist/components/form/expressions/builder/index.d.ts +24 -2
- package/dist/components/form/expressions/builder/index.d.ts.map +1 -1
- package/dist/components/form/expressions/builder/index.js +121 -77
- 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/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/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 +35 -9
- 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 +37 -0
- package/dist/components/form/expressions/textOfExpression.js.map +1 -0
- 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 +7 -7
- package/dist/components/form/expressions/useRenderExpression.js.map +1 -1
- package/dist/components/form/fields/Field.d.ts.map +1 -1
- package/dist/components/form/fields/Field.js +20 -7
- package/dist/components/form/fields/Field.js.map +1 -1
- package/dist/components/form/fields/allowed-values/AllowedValues.d.ts.map +1 -1
- package/dist/components/form/fields/allowed-values/AllowedValues.js +17 -4
- package/dist/components/form/fields/allowed-values/AllowedValues.js.map +1 -1
- 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 +20 -1
- package/dist/components/form/fields/auto/AutoFormField.d.ts.map +1 -1
- package/dist/components/form/fields/auto/AutoFormField.js +81 -36
- 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 +611 -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.map +1 -1
- package/dist/components/form/fields/long-string/LongString.js +17 -3
- 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 +4 -1
- package/dist/components/form/fields/multi-select/MultiSelectFormField.js.map +1 -1
- package/dist/components/form/fields/number/Number.d.ts +6 -0
- package/dist/components/form/fields/number/Number.d.ts.map +1 -1
- package/dist/components/form/fields/number/Number.js +41 -6
- 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/rich-text/RichText.d.ts +8 -1
- package/dist/components/form/fields/rich-text/RichText.d.ts.map +1 -1
- package/dist/components/form/fields/rich-text/RichText.js +190 -81
- 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 +49 -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 +2 -0
- package/dist/components/form/fields/select/Select.d.ts.map +1 -1
- package/dist/components/form/fields/select/Select.js +19 -10
- package/dist/components/form/fields/select/Select.js.map +1 -1
- package/dist/components/form/fields/select/SelectCollection.d.ts.map +1 -1
- package/dist/components/form/fields/select/SelectCollection.js +8 -2
- 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 +5 -5
- package/dist/components/form/fields/template/ReadOnlyTemplateTag.d.ts.map +1 -1
- package/dist/components/form/fields/template/ReadOnlyTemplateTag.js +11 -4
- package/dist/components/form/fields/template/ReadOnlyTemplateTag.js.map +1 -1
- package/dist/components/form/fields/template/TemplateBrowser.d.ts +22 -0
- package/dist/components/form/fields/template/TemplateBrowser.d.ts.map +1 -0
- package/dist/components/form/fields/template/TemplateBrowser.js +54 -0
- package/dist/components/form/fields/template/TemplateBrowser.js.map +1 -0
- package/dist/components/form/fields/template/TemplateField.d.ts +83 -1
- package/dist/components/form/fields/template/TemplateField.d.ts.map +1 -1
- package/dist/components/form/fields/template/TemplateField.js +535 -85
- package/dist/components/form/fields/template/TemplateField.js.map +1 -1
- 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 +8 -4
- package/dist/components/form/fields/template/TemplateText.js.map +1 -1
- package/dist/components/form/fields/template/writtenAsText.d.ts +55 -0
- package/dist/components/form/fields/template/writtenAsText.d.ts.map +1 -0
- package/dist/components/form/fields/template/writtenAsText.js +188 -0
- package/dist/components/form/fields/template/writtenAsText.js.map +1 -0
- package/dist/components/form/index.d.ts +10 -0
- package/dist/components/form/index.d.ts.map +1 -1
- package/dist/components/form/index.js +23 -1
- package/dist/components/form/index.js.map +1 -1
- package/dist/components/imageLightbox/ImageLightbox.d.ts.map +1 -1
- package/dist/components/imageLightbox/ImageLightbox.js +19 -7
- 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 +15 -7
- 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 +43 -0
- package/dist/components/smartEditor/CompletionMenu.d.ts.map +1 -0
- package/dist/components/smartEditor/CompletionMenu.js +196 -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 +1 -1
- 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 +51 -136
- package/dist/components/smartEditor/SmartEditor.js.map +1 -1
- package/dist/components/smartEditor/completionStyle.d.ts +27 -0
- package/dist/components/smartEditor/completionStyle.d.ts.map +1 -0
- package/dist/components/smartEditor/completionStyle.js +66 -0
- package/dist/components/smartEditor/completionStyle.js.map +1 -0
- package/dist/components/smartEditor/index.d.ts +5 -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 +18 -0
- package/dist/components/smartEditor/templateCompletions.d.ts.map +1 -0
- package/dist/components/smartEditor/templateCompletions.js +94 -0
- package/dist/components/smartEditor/templateCompletions.js.map +1 -0
- package/dist/components/smartEditor/types.d.ts +12 -1
- package/dist/components/smartEditor/types.d.ts.map +1 -1
- package/dist/components/smartEditor/useLspAutocomplete.d.ts +32 -0
- package/dist/components/smartEditor/useLspAutocomplete.d.ts.map +1 -1
- package/dist/components/smartEditor/useLspAutocomplete.js +228 -118
- package/dist/components/smartEditor/useLspAutocomplete.js.map +1 -1
- package/dist/components/smartEditor/useLspHover.d.ts +22 -7
- package/dist/components/smartEditor/useLspHover.d.ts.map +1 -1
- package/dist/components/smartEditor/useLspHover.js +86 -17
- 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/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/ReferencePicker.d.ts +9 -2
- package/dist/components/supportTicket/ReferencePicker.d.ts.map +1 -1
- package/dist/components/supportTicket/ReferencePicker.js +27 -6
- 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 +20 -2
- package/dist/components/supportTicket/TicketHeader.js.map +1 -1
- package/dist/components/supportTicket/TicketMetaTags.d.ts +1 -1
- package/dist/components/ticketReferences/TicketReferences.d.ts.map +1 -1
- package/dist/components/ticketReferences/TicketReferences.js +9 -4
- 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 +36 -11
- package/dist/components/ticketThread/TicketThread.js.map +1 -1
- package/dist/helpers/descriptionTooltip.d.ts +43 -0
- package/dist/helpers/descriptionTooltip.d.ts.map +1 -0
- package/dist/helpers/descriptionTooltip.js +70 -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 +107 -2
- package/dist/helpers/expressions.d.ts.map +1 -1
- package/dist/helpers/expressions.js +223 -8
- 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/qorusTypeCatalogue.d.ts +53 -0
- package/dist/helpers/qorusTypeCatalogue.d.ts.map +1 -0
- package/dist/helpers/qorusTypeCatalogue.js +262 -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/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/templates.d.ts +26 -1
- package/dist/helpers/templates.d.ts.map +1 -1
- package/dist/helpers/templates.js +41 -6
- package/dist/helpers/templates.js.map +1 -1
- package/dist/helpers/validations.d.ts +9 -0
- package/dist/helpers/validations.d.ts.map +1 -1
- package/dist/helpers/validations.js +139 -33
- package/dist/helpers/validations.js.map +1 -1
- package/dist/hooks/useQorusTypes.d.ts +7 -15
- package/dist/hooks/useQorusTypes.d.ts.map +1 -1
- package/dist/hooks/useQorusTypes.js +25 -166
- 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 +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- 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/package.json +14 -5
- 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/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 -2620
- package/src/components/form/engine/CompactToolbar.tsx +0 -330
- package/src/components/form/engine/FormEngine.stories.tsx +0 -9920
- package/src/components/form/engine/FormEngine.tsx +0 -4569
- package/src/components/form/engine/FormEngineRemote.stories.tsx +0 -679
- package/src/components/form/engine/FormEngineStickyHeaders.stories.tsx +0 -331
- package/src/components/form/engine/FormFieldsSkeleton.tsx +0 -82
- package/src/components/form/engine/OptionFieldMessages.tsx +0 -477
- 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 -742
- 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 -148
- package/src/components/form/engine/compactRowStyles.ts +0 -898
- package/src/components/form/engine/compactToolbarContext.ts +0 -69
- 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 -1077
- 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 -101
- 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 -137
- 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/Field.stories.tsx +0 -143
- package/src/components/form/fields/Field.tsx +0 -732
- package/src/components/form/fields/allowed-values/AllowedValues.tsx +0 -297
- 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 -1164
- 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 -120
- package/src/components/form/fields/long-string/LongString.tsx +0 -130
- 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 -139
- package/src/components/form/fields/number/Number.stories.tsx +0 -159
- package/src/components/form/fields/number/Number.tsx +0 -160
- 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 -46
- 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 -1717
- 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 -47
- package/src/components/imageLightbox/ImageLightbox.stories.tsx +0 -238
- package/src/components/imageLightbox/ImageLightbox.tsx +0 -236
- 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 -129
- package/src/components/supportTicket/ReferencePicker.stories.tsx +0 -584
- package/src/components/supportTicket/ReferencePicker.tsx +0 -563
- package/src/components/supportTicket/TicketConversation.stories.tsx +0 -121
- package/src/components/supportTicket/TicketHeader.stories.tsx +0 -183
- package/src/components/supportTicket/TicketHeader.tsx +0 -247
- 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 -354
- package/src/components/supportTicket/TicketReplyBox.tsx +0 -150
- 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 -73
- package/src/components/ticketReferences/TicketReferences.stories.tsx +0 -315
- package/src/components/ticketReferences/TicketReferences.tsx +0 -906
- package/src/components/ticketReferences/index.ts +0 -2
- package/src/components/ticketThread/TicketThread.stories.tsx +0 -829
- package/src/components/ticketThread/TicketThread.tsx +0 -719
- 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 -249
- 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/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 -61
- 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
|
@@ -33,6 +33,42 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
33
33
|
__setModuleDefault(result, mod);
|
|
34
34
|
return result;
|
|
35
35
|
};
|
|
36
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
37
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
38
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
39
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
40
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
41
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
42
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
46
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
47
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
48
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
49
|
+
function step(op) {
|
|
50
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
51
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
52
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
53
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
54
|
+
switch (op[0]) {
|
|
55
|
+
case 0: case 1: t = op; break;
|
|
56
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
57
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
58
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
59
|
+
default:
|
|
60
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
61
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
62
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
63
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
64
|
+
if (t[2]) _.ops.pop();
|
|
65
|
+
_.trys.pop(); continue;
|
|
66
|
+
}
|
|
67
|
+
op = body.call(thisArg, _);
|
|
68
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
69
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
70
|
+
}
|
|
71
|
+
};
|
|
36
72
|
var __rest = (this && this.__rest) || function (s, e) {
|
|
37
73
|
var t = {};
|
|
38
74
|
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
@@ -57,7 +93,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
57
93
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
58
94
|
};
|
|
59
95
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
60
|
-
exports.TemplateField = exports.isTemplateAwareUiType = exports.BuiltInTemplateAwareUiTypes = exports.TemplateDropdownSelector = exports.CustomMenuItems = exports.ComponentMap = exports.TemplatesListProps = exports.isValueTemplate = exports.getTemplateValue = exports.getTemplateKey = void 0;
|
|
96
|
+
exports.TemplateField = exports.isTemplateAwareUiType = exports.BuiltInTemplateAwareUiTypes = exports.TemplateDropdownSelector = exports.CustomMenuItems = exports.DEFAULT_VALUE_TABS_LABELS = exports.ComponentMap = exports.TemplatesListProps = exports.isValueTemplate = exports.getTemplateValue = exports.getTemplateKey = void 0;
|
|
61
97
|
var react_1 = require("react");
|
|
62
98
|
var jsx_runtime_1 = require("react/jsx-runtime");
|
|
63
99
|
// Verbatim port of qorus-ide `src/components/Field/template.tsx` (774 LOC,
|
|
@@ -76,7 +112,6 @@ Object.defineProperty(exports, "getTemplateValue", { enumerable: true, get: func
|
|
|
76
112
|
Object.defineProperty(exports, "isValueTemplate", { enumerable: true, get: function () { return templates_1.isValueTemplate; } });
|
|
77
113
|
var dpqlDetection_1 = require("../../../../helpers/dpqlDetection");
|
|
78
114
|
var templateItems_1 = require("../../../../helpers/templateItems");
|
|
79
|
-
var markdownRendererContext_1 = require("../../../Description/markdownRendererContext");
|
|
80
115
|
var validations_1 = require("../../../../helpers/validations");
|
|
81
116
|
var useDpqlProbe_1 = require("../../../dpqlEditor/useDpqlProbe");
|
|
82
117
|
var useQorusTypes_1 = require("../../../../hooks/useQorusTypes");
|
|
@@ -87,16 +122,19 @@ var builder_1 = require("../../expressions/builder");
|
|
|
87
122
|
var ExpressionField_1 = require("../../expressions/ExpressionField");
|
|
88
123
|
var useExpressions_1 = require("../../expressions/useExpressions");
|
|
89
124
|
var AutoFormField_1 = require("../auto/AutoFormField");
|
|
90
|
-
var Boolean_1 =
|
|
125
|
+
var Boolean_1 = __importStar(require("../boolean/Boolean"));
|
|
91
126
|
var Date_1 = require("../date/Date");
|
|
92
127
|
var File_1 = require("../file/File");
|
|
93
128
|
var LongString_1 = __importDefault(require("../long-string/LongString"));
|
|
94
|
-
var Number_1 =
|
|
129
|
+
var Number_1 = __importStar(require("../number/Number"));
|
|
95
130
|
var ReadOnlyTemplateTag_1 = require("./ReadOnlyTemplateTag");
|
|
96
131
|
var RichText_1 = require("../rich-text/RichText");
|
|
132
|
+
var TemplateBrowser_1 = require("./TemplateBrowser");
|
|
97
133
|
var common_1 = require("../../../../helpers/common");
|
|
98
134
|
var singleLineString_1 = require("../../../../helpers/singleLineString");
|
|
99
135
|
var optionUiTypes_1 = require("../../../../helpers/optionUiTypes");
|
|
136
|
+
var expressions_1 = require("../../../../helpers/expressions");
|
|
137
|
+
var writtenAsText_1 = require("./writtenAsText");
|
|
100
138
|
var rowMenuContext_1 = require("../../engine/rowMenuContext");
|
|
101
139
|
/**
|
|
102
140
|
* How long the author must pause before typed text is sent to the DPQL
|
|
@@ -128,13 +166,15 @@ var LongStringField = function (_a) {
|
|
|
128
166
|
var name = _a.name, onChange = _a.onChange, type = _a.type, level = _a.level, allowTemplates = _a.allowTemplates, rest = __rest(_a, ["name", "onChange", "type", "level", "allowTemplates"]);
|
|
129
167
|
return ((0, jsx_runtime_1.jsx)(LongString_1.default, __assign({}, rest, { type: type, onChange: function (value) { return onChange === null || onChange === void 0 ? void 0 : onChange(name, value); } })));
|
|
130
168
|
};
|
|
169
|
+
// `type` becomes the kind of number it holds: without it, a float field took every number for a
|
|
170
|
+
// whole one.
|
|
131
171
|
var Number = function (_a) {
|
|
132
172
|
var name = _a.name, onChange = _a.onChange, type = _a.type, level = _a.level, allowTemplates = _a.allowTemplates, rest = __rest(_a, ["name", "onChange", "type", "level", "allowTemplates"]);
|
|
133
|
-
return ((0, jsx_runtime_1.jsx)(Number_1.default, __assign({}, rest, { onChange: function (value) { return onChange === null || onChange === void 0 ? void 0 : onChange(name, value); } })));
|
|
173
|
+
return ((0, jsx_runtime_1.jsx)(Number_1.default, __assign({}, rest, { type: (0, Number_1.numberKindOf)(type), onChange: function (value) { return onChange === null || onChange === void 0 ? void 0 : onChange(name, value); } })));
|
|
134
174
|
};
|
|
135
175
|
var BooleanField = function (_a) {
|
|
136
176
|
var name = _a.name, onChange = _a.onChange, value = _a.value, type = _a.type, level = _a.level, allowTemplates = _a.allowTemplates, rest = __rest(_a, ["name", "onChange", "value", "type", "level", "allowTemplates"]);
|
|
137
|
-
return ((0, jsx_runtime_1.jsx)(Boolean_1.default, __assign({}, rest, { checked:
|
|
177
|
+
return ((0, jsx_runtime_1.jsx)(Boolean_1.default, __assign({}, rest, { checked: (0, Boolean_1.yesNoShown)(value), onChange: function (checked) { return onChange === null || onChange === void 0 ? void 0 : onChange(name, checked); } })));
|
|
138
178
|
};
|
|
139
179
|
var DateField = function (_a) {
|
|
140
180
|
var name = _a.name, onChange = _a.onChange, type = _a.type, level = _a.level, allowTemplates = _a.allowTemplates, rest = __rest(_a, ["name", "onChange", "type", "level", "allowTemplates"]);
|
|
@@ -162,6 +202,44 @@ exports.ComponentMap = {
|
|
|
162
202
|
richtext: RichTextField,
|
|
163
203
|
file: FileField,
|
|
164
204
|
};
|
|
205
|
+
/** The keyboard a whole number or a number is typed on, on the Value tab. */
|
|
206
|
+
var TEXTABLE_INPUT_MODES = {
|
|
207
|
+
int: 'numeric',
|
|
208
|
+
integer: 'numeric',
|
|
209
|
+
softint: 'numeric',
|
|
210
|
+
number: 'decimal',
|
|
211
|
+
float: 'decimal',
|
|
212
|
+
softfloat: 'decimal',
|
|
213
|
+
softnumber: 'decimal',
|
|
214
|
+
};
|
|
215
|
+
exports.DEFAULT_VALUE_TABS_LABELS = {
|
|
216
|
+
value: 'Value',
|
|
217
|
+
expression: 'Expression',
|
|
218
|
+
visual: 'Visual',
|
|
219
|
+
template: 'Template',
|
|
220
|
+
expressionTooltip: 'Write an expression - it also takes templates',
|
|
221
|
+
visualTooltip: 'Build the expression visually',
|
|
222
|
+
templateTooltip: 'Choose a template',
|
|
223
|
+
cannotShowExpression: "This expression can't be shown as a value.",
|
|
224
|
+
condition: 'Condition',
|
|
225
|
+
conditionTooltip: 'Write the condition - it also takes templates',
|
|
226
|
+
conditionVisualTooltip: 'Build the condition visually',
|
|
227
|
+
cannotShowCondition: "This condition can't be shown as a value.",
|
|
228
|
+
templateShownOn: function (tab) { return "A template is shown on the ".concat(tab, " tab, not here."); },
|
|
229
|
+
replaceWithAValue: 'Replace it with a value',
|
|
230
|
+
// the sentence starts with the first type
|
|
231
|
+
conversion: function (from, to) {
|
|
232
|
+
return "".concat(from.charAt(0).toUpperCase()).concat(from.slice(1), " is converted to ").concat(to, " when the value is used; a value that does not convert fails");
|
|
233
|
+
},
|
|
234
|
+
undo: 'Undo',
|
|
235
|
+
undoTooltip: function (text) { return "Keep \"".concat(text, "\" as a value instead"); },
|
|
236
|
+
};
|
|
237
|
+
var DEFAULT_SAVED_VALUES_LABELS = {
|
|
238
|
+
save: 'Save this value',
|
|
239
|
+
saveTooltip: 'Save this value to use it again',
|
|
240
|
+
use: 'Use a saved value',
|
|
241
|
+
remove: 'Remove saved value',
|
|
242
|
+
};
|
|
165
243
|
var renderMenuActionRows = function (actions, closePopover, size) {
|
|
166
244
|
return actions.items.map(function (item, index) {
|
|
167
245
|
if ('isDivider' in item) {
|
|
@@ -215,12 +293,9 @@ exports.CustomMenuItems = (0, react_2.memo)(function (_a) {
|
|
|
215
293
|
}) })));
|
|
216
294
|
});
|
|
217
295
|
exports.TemplateDropdownSelector = (0, react_2.memo)(function (_a) {
|
|
218
|
-
var onItemSelect = _a.onItemSelect, onRemoveClick = _a.onRemoveClick, items = _a.items, templates = _a.templates, allowCustomValues = _a.allowCustomValues, hasOnlyAllowedValues = _a.hasOnlyAllowedValues, value = _a.value, size = _a.size, rest = __rest(_a, ["onItemSelect", "onRemoveClick", "items", "templates", "allowCustomValues", "hasOnlyAllowedValues", "value", "size"]);
|
|
219
|
-
/* The
|
|
220
|
-
|
|
221
|
-
and an element in it throws on its own circular owner. */
|
|
222
|
-
var renderMarkdown = (0, markdownRendererContext_1.useMarkdownRenderer)();
|
|
223
|
-
var shownItems = (0, react_2.useMemo)(function () { return (0, templateItems_1.renderTemplateItemDescriptions)((0, templateItems_1.templateItemsToShow)(items), renderMarkdown); }, [items, renderMarkdown]);
|
|
296
|
+
var onItemSelect = _a.onItemSelect, onRemoveClick = _a.onRemoveClick, items = _a.items, templates = _a.templates, allowCustomValues = _a.allowCustomValues, hasOnlyAllowedValues = _a.hasOnlyAllowedValues, value = _a.value, size = _a.size, templateBadge = _a.templateBadge, rest = __rest(_a, ["onItemSelect", "onRemoveClick", "items", "templates", "allowCustomValues", "hasOnlyAllowedValues", "value", "size", "templateBadge"]);
|
|
297
|
+
/* The catalogue browsed: `TemplateBrowser` draws its descriptions at the hand-off to Reqore. */
|
|
298
|
+
var browsed = (0, react_2.useMemo)(function () { return ({ items: items }); }, [items]);
|
|
224
299
|
// One resolver for every surface that names a reference — the picker chip
|
|
225
300
|
// here, the read-only tag, and the compact row's expression summary. The
|
|
226
301
|
// row and this editor must agree: a reference that reads as its path when
|
|
@@ -235,10 +310,10 @@ exports.TemplateDropdownSelector = (0, react_2.memo)(function (_a) {
|
|
|
235
310
|
icon: 'ExchangeDollarLine',
|
|
236
311
|
});
|
|
237
312
|
}, [template]);
|
|
238
|
-
// SEAM (reqraft): the
|
|
239
|
-
//
|
|
240
|
-
|
|
241
|
-
return ((0, jsx_runtime_1.jsxs)(reqore_1.ReqoreControlGroup, { vertical: true, fluid: true, children: [hasOnlyAllowedValues && ((0, jsx_runtime_1.jsx)(reqore_1.ReqoreMessage, { intent: 'warning', size: 'small', opaque: false, children: "This field has pre-defined allowed values, make sure the template you select is compatible with those" })), (0, jsx_runtime_1.jsxs)(reqore_1.ReqoreControlGroup, { stack: true, children: [(0, jsx_runtime_1.jsx)(
|
|
313
|
+
// SEAM (reqraft): where the template comes from (the IDE: the app action that captures it), as the
|
|
314
|
+
// host says, beside its name
|
|
315
|
+
var badge = template && templateBadge ? templateBadge(template) : undefined;
|
|
316
|
+
return ((0, jsx_runtime_1.jsxs)(reqore_1.ReqoreControlGroup, { vertical: true, fluid: true, children: [hasOnlyAllowedValues && ((0, jsx_runtime_1.jsx)(reqore_1.ReqoreMessage, { intent: 'warning', size: 'small', opaque: false, children: "This field has pre-defined allowed values, make sure the template you select is compatible with those" })), (0, jsx_runtime_1.jsxs)(reqore_1.ReqoreControlGroup, { stack: true, children: [(0, jsx_runtime_1.jsx)(TemplateBrowser_1.TemplateBrowser, __assign({ className: 'template-selector', customTheme: exports.TemplatesListProps.listCustomTheme, minimal: true, compact: true, onItemSelect: onItemSelect, templates: browsed, focusFilter: true, label: label, leftIconProps: leftIconProps, badge: badge, caretPosition: 'right', size: size }, exports.TemplatesListProps)), allowCustomValues || value ?
|
|
242
317
|
(0, jsx_runtime_1.jsx)(reqore_1.ReqoreButton, { customTheme: exports.TemplatesListProps.listCustomTheme, fixed: true, icon: 'CloseLine', tooltip: 'Remove template value', minimal: true, className: 'template-remove', compact: true, size: size, onClick: onRemoveClick })
|
|
243
318
|
: null] })] }));
|
|
244
319
|
});
|
|
@@ -261,10 +336,10 @@ var isTemplateAwareUiType = function (uiType, extra) {
|
|
|
261
336
|
};
|
|
262
337
|
exports.isTemplateAwareUiType = isTemplateAwareUiType;
|
|
263
338
|
var TemplateFieldImpl = (0, react_2.memo)(function (_a) {
|
|
264
|
-
var _b, _c, _d;
|
|
265
|
-
var rowMenu = _a.rowMenu, value = _a.value, name = _a.name, onChange = _a.onChange,
|
|
266
|
-
|
|
267
|
-
allowTemplates =
|
|
339
|
+
var _b, _c, _d, _e, _f, _g, _h;
|
|
340
|
+
var rowMenu = _a.rowMenu, value = _a.value, name = _a.name, onChange = _a.onChange, _j = _a.component, Comp = _j === void 0 ? AutoFormField_1.AutoFormField : _j, templates = _a.templates, interfaceContext = _a.interfaceContext, // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
341
|
+
_k = _a.allowTemplates, // eslint-disable-line @typescript-eslint/no-unused-vars
|
|
342
|
+
allowTemplates = _k === void 0 ? true : _k, allowFunctions = _a.allowFunctions, allowTextExpressions = _a.allowTextExpressions, valueTabs = _a.valueTabs, valueTabsLabels = _a.valueTabsLabels, savedValues = _a.savedValues, templateBadge = _a.templateBadge, extraActions = _a.extraActions, componentOverrides = _a.componentOverrides, _l = _a.allowCustomValues, allowCustomValues = _l === void 0 ? true : _l, _m = _a.filterTemplatesByType, filterTemplatesByType = _m === void 0 ? true : _m, filterTemplatesFunc = _a.filterTemplatesFunc, componentFromType = _a.componentFromType, isFunction = _a.isFunction, isDefaultFunction = _a.isDefaultFunction, isDefaultTemplate = _a.isDefaultTemplate, returnType = _a.returnType, level = _a.level, className = _a.className, menuItems = _a.menuItems, menuActions = _a.menuActions, menuTrailingItems = _a.menuTrailingItems, reorder = _a.reorder, label = _a.label, rest = __rest(_a, ["rowMenu", "value", "name", "onChange", "component", "templates", "interfaceContext", "allowTemplates", "allowFunctions", "allowTextExpressions", "valueTabs", "valueTabsLabels", "savedValues", "templateBadge", "extraActions", "componentOverrides", "allowCustomValues", "filterTemplatesByType", "filterTemplatesFunc", "componentFromType", "isFunction", "isDefaultFunction", "isDefaultTemplate", "returnType", "level", "className", "menuItems", "menuActions", "menuTrailingItems", "reorder", "label"]);
|
|
268
343
|
var qorusTypes = (0, useQorusTypes_1.useQorusTypes)();
|
|
269
344
|
var functions = (0, useExpressions_1.useExpressions)({
|
|
270
345
|
allow: !!allowFunctions,
|
|
@@ -369,17 +444,57 @@ var TemplateFieldImpl = (0, react_2.memo)(function (_a) {
|
|
|
369
444
|
/** Where this field lands when it is empty: an untyped one in template mode — see above. */
|
|
370
445
|
var emptyLandsOnTemplates = typeIsAnyLike && (hasTemplatesOnOffer || (!!allowCustomValues && !hasOnlyAllowedValues));
|
|
371
446
|
var opensOnTemplates = isEmptyValue && emptyLandsOnTemplates;
|
|
372
|
-
|
|
373
|
-
|
|
447
|
+
/* An untyped field holding null is written in the same text field, as `null`: the editor an untyped
|
|
448
|
+
field otherwise falls to drew null as an empty box, the same as a field holding nothing, so the
|
|
449
|
+
author could not tell the two apart (qorus#646). */
|
|
450
|
+
var nullWrittenAsText = value === null && typeIsAnyLike && !!allowCustomValues && !hasOnlyAllowedValues;
|
|
451
|
+
/* The tabs a value is entered on (qorus#646, David): Value · Expression · Visual where the field takes
|
|
452
|
+
templates and expressions written as text, Value · Template where it takes templates only, none where
|
|
453
|
+
it takes no templates. One value, three views: see `selectTab`. */
|
|
454
|
+
var valueTabIsText = (0, writtenAsText_1.isWrittenAsTextOnTheValueTab)(type) && !hasOnlyAllowedValues;
|
|
455
|
+
var tabsKind = !valueTabs || !allowTemplates || editorHandlesTemplates || rest.arg_schema ? undefined
|
|
456
|
+
: allowFunctions && allowTextExpressions && !hasOnlyAllowedValues ? 'full'
|
|
457
|
+
: 'template';
|
|
458
|
+
/** The value is an expression (its AST), as the host says. */
|
|
459
|
+
var valueIsExpression = !!(isFunction || isDefaultFunction) && value !== null && typeof value === 'object';
|
|
460
|
+
/** Where a saved value opens: an expression on Expression; a template on Value where it is written as
|
|
461
|
+
* text, else on Expression (or Template, for a template-only field); anything else on Value. */
|
|
462
|
+
var _o = (0, react_2.useState)(function () {
|
|
463
|
+
if (!tabsKind)
|
|
464
|
+
return 'value';
|
|
465
|
+
if (valueIsExpression)
|
|
466
|
+
return tabsKind === 'full' ? 'expression' : 'value';
|
|
467
|
+
if (typeof value === 'string' && (0, templates_1.isValueTemplate)(value) && !valueTabIsText) {
|
|
468
|
+
return tabsKind === 'full' ? 'expression' : 'template';
|
|
469
|
+
}
|
|
470
|
+
return 'value';
|
|
471
|
+
}), tab = _o[0], setTab = _o[1];
|
|
472
|
+
var opensInExpressionText = tabsKind === 'full' && tab === 'expression' && !valueIsExpression;
|
|
473
|
+
var tabsKindRef = (0, react_2.useRef)(tabsKind);
|
|
474
|
+
tabsKindRef.current = tabsKind;
|
|
475
|
+
/** What the Text view is seeded with when the value is not an expression yet; null outside it. */
|
|
476
|
+
var _p = (0, react_2.useState)(opensInExpressionText ? (0, writtenAsText_1.expressionTextOfValue)(value) : null), expressionSeed = _p[0], setExpressionSeed = _p[1];
|
|
477
|
+
var _q = (0, react_2.useState)(tabsKind ?
|
|
478
|
+
tab === 'template' || (tab === 'value' && valueTabIsText)
|
|
479
|
+
: (isDefaultTemplate ||
|
|
480
|
+
(0, templates_1.isValueTemplate)(value) ||
|
|
481
|
+
!allowCustomValues ||
|
|
482
|
+
opensOnTemplates ||
|
|
483
|
+
nullWrittenAsText) &&
|
|
484
|
+
!!allowTemplates), isTemplateState = _q[0], setIsTemplate = _q[1];
|
|
374
485
|
var isTemplate = editorHandlesTemplates ? false : isTemplateState;
|
|
375
|
-
var
|
|
376
|
-
var
|
|
486
|
+
var _r = (0, react_2.useState)(tabsKind ? tab === 'expression' || tab === 'visual' : !!isDefaultFunction && !!allowFunctions), internalIsFunction = _r[0], setInternalIsFunction = _r[1];
|
|
487
|
+
var _s = (0, react_2.useState)(value), templateValue = _s[0], setTemplateValue = _s[1];
|
|
377
488
|
// Typed text that turned out to be an expression the author may accept.
|
|
378
|
-
var
|
|
489
|
+
var _t = (0, react_2.useState)(null), dpqlOffer = _t[0], setDpqlOffer = _t[1];
|
|
379
490
|
// The literal this field held before typed text switched it into
|
|
380
491
|
// expression mode — kept so the switch is undoable, and so the editor
|
|
381
492
|
// opens on the Text view the author was already writing in.
|
|
382
|
-
var
|
|
493
|
+
var _u = (0, react_2.useState)(null), expressionFromText = _u[0], setExpressionFromText = _u[1];
|
|
494
|
+
/* The view the expression editor (without value tabs) is on. It opens on Text (qorus#646, David); when it
|
|
495
|
+
is mounted again - an expression removed in Visual and put back empty by its host, as a row rule's
|
|
496
|
+
condition is - it opens where the author was, not back on Text. */
|
|
497
|
+
var _v = (0, react_2.useState)('text'), expressionMode = _v[0], setExpressionMode = _v[1];
|
|
383
498
|
// Texts the author has said no to. Without this, dismissing an offer (or
|
|
384
499
|
// undoing a switch) would re-detect the same text on the next render and
|
|
385
500
|
// ask again forever.
|
|
@@ -392,6 +507,12 @@ var TemplateFieldImpl = (0, react_2.memo)(function (_a) {
|
|
|
392
507
|
if (isTemplate && (0, templates_1.isValueTemplate)(value)) {
|
|
393
508
|
setTemplateValue(value);
|
|
394
509
|
}
|
|
510
|
+
/* Emptied from outside the editor - the card's "Clear value", an undo, a host's reset - the text the
|
|
511
|
+
value is written in is emptied too. It kept its own copy, so a cleared value went on showing what it
|
|
512
|
+
had held (qorus#646: "Clear value" had no effect). The editor's own emptying sets this already. */
|
|
513
|
+
if (isEmptyValue && templateValue) {
|
|
514
|
+
setTemplateValue(null);
|
|
515
|
+
}
|
|
395
516
|
}, [JSON.stringify(value)]);
|
|
396
517
|
/* Clearing an untyped field returns it to the template selector, which is
|
|
397
518
|
where mounting it empty already lands.
|
|
@@ -450,8 +571,19 @@ var TemplateFieldImpl = (0, react_2.memo)(function (_a) {
|
|
|
450
571
|
setIsTemplate(false);
|
|
451
572
|
}
|
|
452
573
|
}, [allowCustomValues]);
|
|
574
|
+
// null arriving later (written in the Text tab, say) is written in the text field too - see above
|
|
575
|
+
(0, react_2.useEffect)(function () {
|
|
576
|
+
if (!isTemplate && nullWrittenAsText && allowTemplates) {
|
|
577
|
+
setTemplateValue(null);
|
|
578
|
+
setIsTemplate(true);
|
|
579
|
+
}
|
|
580
|
+
}, [nullWrittenAsText, allowTemplates]);
|
|
453
581
|
(0, react_2.useEffect)(function () {
|
|
454
|
-
|
|
582
|
+
// a template on the Expression tab stays there: it is the expression editor's to show
|
|
583
|
+
if (!isTemplate &&
|
|
584
|
+
(0, templates_1.isValueTemplate)(value) &&
|
|
585
|
+
allowTemplates &&
|
|
586
|
+
!(tabsKind && internalIsFunction)) {
|
|
455
587
|
// In auto mode, leave user-typed dollar-strings alone ('$foo: hello'
|
|
456
588
|
// passes the loose check) — but a string that IS one well-formed token
|
|
457
589
|
// ($data:{…}, $config:item) must still flip into template mode, or an
|
|
@@ -478,20 +610,23 @@ var TemplateFieldImpl = (0, react_2.memo)(function (_a) {
|
|
|
478
610
|
// When template key or template value change run the onChange function
|
|
479
611
|
(0, react_use_1.useUpdateEffect)(function () {
|
|
480
612
|
if (templateValue) {
|
|
481
|
-
|
|
613
|
+
/* On the tabs this text is the Value or the Template tab's - a value, never an expression -
|
|
614
|
+
whichever tab is open by the time it arrives: an edit sent as its field goes away (the tab
|
|
615
|
+
switched straight after it) arrives on the next tab (qorus#646). */
|
|
616
|
+
var asExpression = tabsKindRef.current ? false : effectiveIsFunction;
|
|
617
|
+
/* Read from the text where the field is written as text: a lone template takes its own
|
|
618
|
+
type in an untyped field, a scalar's literal is that literal, other text is text. */
|
|
619
|
+
if (templateSupportsCustomValues) {
|
|
620
|
+
var read = (0, writtenAsText_1.templateTextValue)(templateValue, type, filteredTemplates);
|
|
621
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(name, read.value, read.type, asExpression);
|
|
622
|
+
return;
|
|
623
|
+
}
|
|
624
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(name, templateValue, type, asExpression);
|
|
482
625
|
}
|
|
483
626
|
}, [JSON.stringify(templateValue)]);
|
|
484
627
|
// an editor that takes templates into its own text has no template mode to switch to: "Use Template"
|
|
485
628
|
// there emptied the field and showed nothing in its place
|
|
486
629
|
var showTemplateToggle = allowCustomValues && allowTemplates && !rest.arg_schema && !editorHandlesTemplates;
|
|
487
|
-
// Only a BRACED context ref (`$data:{…}` — machine-written, nobody types
|
|
488
|
-
// one) renders as the picker chip (named via `resolveTemplateLabel`)
|
|
489
|
-
// rather than as its raw text in a string editor. Plain word-path tokens
|
|
490
|
-
// (`$local:id`) are typeable, so per the build #123 review they keep the
|
|
491
|
-
// input that offers templates while typing. Mixed text-and-token strings
|
|
492
|
-
// keep the string editor too; the chip-in-editor treatment arrives with
|
|
493
|
-
// the rich-text string mode.
|
|
494
|
-
var templateValueIsBracedToken = (0, templates_1.isBracedTemplateToken)(templateValue);
|
|
495
630
|
/* An UNTYPED field can be typed into as well as picked from.
|
|
496
631
|
|
|
497
632
|
Template mode has a typable editor whenever the field's type can hold
|
|
@@ -507,9 +642,16 @@ var TemplateFieldImpl = (0, react_2.memo)(function (_a) {
|
|
|
507
642
|
specific to that field: every empty untyped field with templates on
|
|
508
643
|
offer got the same downgrade. The editor still offers the same templates
|
|
509
644
|
on focus, so nothing is lost by being able to type as well. */
|
|
510
|
-
|
|
645
|
+
/* And so can a scalar: a whole number, a number or a yes/no is written as text too
|
|
646
|
+
(qorus#646). A template chosen into it is a chip in that text, not a pick-only
|
|
647
|
+
control that holds the template and nothing else, so text can be written around it;
|
|
648
|
+
what the field then holds is read from the text (writtenAsText). A date keeps its
|
|
649
|
+
date control. */
|
|
650
|
+
var templateSupportsCustomValues = allowCustomValues && (0, writtenAsText_1.isWrittenAsText)(type) && !hasOnlyAllowedValues;
|
|
511
651
|
var showTemplatesDropdown = allowTemplates && (!allowCustomValues || (isTemplate && !templateSupportsCustomValues));
|
|
512
652
|
var hasOnlyExpressions = !allowCustomValues && !allowTemplates && allowFunctions;
|
|
653
|
+
/** A date field with templates on offer: they are offered beside its date control. */
|
|
654
|
+
var dateTakesTemplates = type === 'date' && !!allowTemplates && hasTemplatesOnOffer && !hasOnlyAllowedValues;
|
|
513
655
|
// True when some input control renders besides the ⋮ menu. When nothing
|
|
514
656
|
// does (an empty `any` field: custom values are disallowed and the value's
|
|
515
657
|
// type is picked FROM the menu), the menu trigger is the field's only
|
|
@@ -529,8 +671,11 @@ var TemplateFieldImpl = (0, react_2.memo)(function (_a) {
|
|
|
529
671
|
/* Emptying the text leaves the field where an empty field lands. For
|
|
530
672
|
an untyped field that is THIS editor: switching to custom mode here
|
|
531
673
|
mounted a different editor in its place, so deleting the last
|
|
532
|
-
character lost the cursor.
|
|
533
|
-
|
|
674
|
+
character lost the cursor. A field written as text (a whole number, a
|
|
675
|
+
number, a yes/no) is the same: deleting the template in it left a
|
|
676
|
+
different, empty editor in its place, and what was typed next went
|
|
677
|
+
nowhere. */
|
|
678
|
+
if (!((emptyLandsOnTemplates || templateSupportsCustomValues) && allowTemplates)) {
|
|
534
679
|
setIsTemplate(false);
|
|
535
680
|
}
|
|
536
681
|
setTemplateValue(null);
|
|
@@ -539,7 +684,7 @@ var TemplateFieldImpl = (0, react_2.memo)(function (_a) {
|
|
|
539
684
|
else {
|
|
540
685
|
setTemplateValue(val);
|
|
541
686
|
}
|
|
542
|
-
}, [name, onChange, emptyLandsOnTemplates, allowTemplates]);
|
|
687
|
+
}, [name, onChange, emptyLandsOnTemplates, templateSupportsCustomValues, allowTemplates]);
|
|
543
688
|
var handleTemplateTextChange = (0, react_2.useCallback)(function (val) { return handleTemplateFieldChange(name, typeof val === 'string' ? val : ''); }, [handleTemplateFieldChange, name]);
|
|
544
689
|
var handleSelectTemplateFromList = (0, react_2.useCallback)(
|
|
545
690
|
// If the field has allowed values and supports templates, we do not want to overwrite the field type with the template type
|
|
@@ -576,6 +721,15 @@ var TemplateFieldImpl = (0, react_2.memo)(function (_a) {
|
|
|
576
721
|
// SEAM (reqraft): the IDE computes `canSaveValue` here and renders a
|
|
577
722
|
// `SaveValueButton` in the controls menu — the saved-values storage is
|
|
578
723
|
// IDE-only, so the menu item is dropped (`allowSaving` is inert).
|
|
724
|
+
/* A template chosen beside a date control is the value at once, IN the template control: handed to
|
|
725
|
+
the form while the field was still drawing its date control, the reference reached the date
|
|
726
|
+
picker first, which threw on it ("Invalid ISO 8601 date time string"). */
|
|
727
|
+
var handleSelectDateTemplate = (0, react_2.useCallback)(function (item) {
|
|
728
|
+
if (typeof (item === null || item === void 0 ? void 0 : item.value) !== 'string')
|
|
729
|
+
return;
|
|
730
|
+
setIsTemplate(true);
|
|
731
|
+
setTemplateValue(item.value);
|
|
732
|
+
}, []);
|
|
579
733
|
var handleRemoveTemplateClick = (0, react_2.useCallback)(function () {
|
|
580
734
|
/* This is the `×` ON the template control, and it means "I do not want a
|
|
581
735
|
template here" — on a field whose menu offers no `Set Custom Value` it
|
|
@@ -631,6 +785,139 @@ var TemplateFieldImpl = (0, react_2.memo)(function (_a) {
|
|
|
631
785
|
onChange === null || onChange === void 0 ? void 0 : onChange(name, undefined);
|
|
632
786
|
}
|
|
633
787
|
}, [name, onChange, value, templateValue]);
|
|
788
|
+
/* One value, three views (qorus#646, David). Value → Expression writes the literal or template as
|
|
789
|
+
expression text, emitting nothing until it is edited. Expression ↔ Visual is the editor's own toggle.
|
|
790
|
+
Expression → Value converts only a literal or a lone template; any other expression stays, and the
|
|
791
|
+
Value tab says it cannot show it and offers to replace it. Nothing is lost silently. */
|
|
792
|
+
/** Reads the Expression tab's text typed and not yet read (see `ExpressionField.flushRef`). */
|
|
793
|
+
var expressionFlush = (0, react_2.useRef)(null);
|
|
794
|
+
var selectTab = (0, react_2.useCallback)(function (next) { return __awaiter(void 0, void 0, void 0, function () {
|
|
795
|
+
var flushed, _a, envelope, template, literal;
|
|
796
|
+
var _b;
|
|
797
|
+
return __generator(this, function (_c) {
|
|
798
|
+
switch (_c.label) {
|
|
799
|
+
case 0:
|
|
800
|
+
if (next === tab)
|
|
801
|
+
return [2 /*return*/];
|
|
802
|
+
if (!(tab === 'expression')) return [3 /*break*/, 2];
|
|
803
|
+
return [4 /*yield*/, ((_b = expressionFlush.current) === null || _b === void 0 ? void 0 : _b.call(expressionFlush))];
|
|
804
|
+
case 1:
|
|
805
|
+
_a = _c.sent();
|
|
806
|
+
return [3 /*break*/, 3];
|
|
807
|
+
case 2:
|
|
808
|
+
_a = undefined;
|
|
809
|
+
_c.label = 3;
|
|
810
|
+
case 3:
|
|
811
|
+
flushed = _a;
|
|
812
|
+
envelope = flushed !== null && flushed !== void 0 ? flushed : (valueIsExpression ? { is_expression: true, value: value } : undefined);
|
|
813
|
+
if (next === 'value' || next === 'template') {
|
|
814
|
+
if (envelope) {
|
|
815
|
+
template = (0, writtenAsText_1.loneTemplateOf)(envelope);
|
|
816
|
+
literal = template === undefined ? (0, writtenAsText_1.loneValueOf)(envelope) : undefined;
|
|
817
|
+
if (template !== undefined) {
|
|
818
|
+
setTemplateValue(template);
|
|
819
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(name, template, type, false);
|
|
820
|
+
}
|
|
821
|
+
else if (literal !== undefined) {
|
|
822
|
+
setTemplateValue((0, writtenAsText_1.valueTextOf)(literal.value, type) || null);
|
|
823
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(name, literal.value, type, false);
|
|
824
|
+
}
|
|
825
|
+
}
|
|
826
|
+
setInternalIsFunction(false);
|
|
827
|
+
setExpressionFromText(null);
|
|
828
|
+
setIsTemplate(next === 'template' || valueTabIsText);
|
|
829
|
+
}
|
|
830
|
+
else {
|
|
831
|
+
/* The seed is the value written as text while it is not an expression yet. One that is shows itself:
|
|
832
|
+
a seed left from an earlier visit was shown in its place - the value as it was opened, not the
|
|
833
|
+
expression written since - and leaving the tab saved it (qorus#646). */
|
|
834
|
+
setExpressionSeed(!flushed && !valueIsExpression ? (0, writtenAsText_1.expressionTextOfValue)(value) : null);
|
|
835
|
+
setInternalIsFunction(true);
|
|
836
|
+
}
|
|
837
|
+
setTab(next);
|
|
838
|
+
return [2 /*return*/];
|
|
839
|
+
}
|
|
840
|
+
});
|
|
841
|
+
}); }, [tab, valueIsExpression, value, name, onChange, type, valueTabIsText]);
|
|
842
|
+
/** Replace what a tab cannot show with an empty value of its own kind. */
|
|
843
|
+
var replaceWithAValue = (0, react_2.useCallback)(function () {
|
|
844
|
+
setInternalIsFunction(false);
|
|
845
|
+
setTemplateValue(null);
|
|
846
|
+
setExpressionSeed(null);
|
|
847
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(name, undefined, type, false);
|
|
848
|
+
}, [name, onChange, type]);
|
|
849
|
+
/* A saved value is the value at once, shown where its kind is: a template on the Value tab where the
|
|
850
|
+
field is written as text, else on the Expression tab (or Template, for a template-only field); any
|
|
851
|
+
other value on the Value tab - or, without tabs, in template mode for a template. */
|
|
852
|
+
var takeSavedValue = (0, react_2.useCallback)(function (saved) {
|
|
853
|
+
var isSavedTemplate = typeof saved === 'string' && (0, templates_1.isValueTemplate)(saved);
|
|
854
|
+
setExpressionFromText(null);
|
|
855
|
+
setTemplateValue(typeof saved === 'string' ? saved : null);
|
|
856
|
+
if (tabsKindRef.current) {
|
|
857
|
+
var next = isSavedTemplate && !valueTabIsText ?
|
|
858
|
+
tabsKindRef.current === 'full' ?
|
|
859
|
+
'expression'
|
|
860
|
+
: 'template'
|
|
861
|
+
: 'value';
|
|
862
|
+
setExpressionSeed(next === 'expression' ? (0, writtenAsText_1.expressionTextOfValue)(saved) : null);
|
|
863
|
+
setInternalIsFunction(next === 'expression');
|
|
864
|
+
setIsTemplate(next === 'template' || (next === 'value' && valueTabIsText));
|
|
865
|
+
setTab(next);
|
|
866
|
+
}
|
|
867
|
+
else {
|
|
868
|
+
setExpressionSeed(null);
|
|
869
|
+
setInternalIsFunction(false);
|
|
870
|
+
setIsTemplate(isSavedTemplate && !!allowTemplates);
|
|
871
|
+
}
|
|
872
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(name, saved, type, false);
|
|
873
|
+
}, [name, onChange, type, valueTabIsText, allowTemplates]);
|
|
874
|
+
// the values saved for this field's type, and whether this value can be saved
|
|
875
|
+
var savedWords = __assign(__assign({}, DEFAULT_SAVED_VALUES_LABELS), savedValues === null || savedValues === void 0 ? void 0 : savedValues.labels);
|
|
876
|
+
var savedForType = (0, react_2.useMemo)(function () { var _a; return ((_a = savedValues === null || savedValues === void 0 ? void 0 : savedValues.items) !== null && _a !== void 0 ? _a : []).filter(function (item) { return item.type === type; }); }, [savedValues === null || savedValues === void 0 ? void 0 : savedValues.items, type]);
|
|
877
|
+
var editable = !rest.readonly && !rest.readOnly && !rest.disabled;
|
|
878
|
+
var canSaveValue = !!(savedValues === null || savedValues === void 0 ? void 0 : savedValues.onSave) &&
|
|
879
|
+
editable &&
|
|
880
|
+
type !== 'bool' &&
|
|
881
|
+
type !== 'boolean' &&
|
|
882
|
+
!hasOnlyAllowedValues &&
|
|
883
|
+
!valueIsExpression &&
|
|
884
|
+
!isEmptyValue &&
|
|
885
|
+
value !== null;
|
|
886
|
+
var canUseSavedValue = editable && savedForType.length > 0;
|
|
887
|
+
var savedValueItems = __spreadArray(__spreadArray([], (canSaveValue ?
|
|
888
|
+
[
|
|
889
|
+
{
|
|
890
|
+
label: savedWords.save,
|
|
891
|
+
icon: 'SaveLine',
|
|
892
|
+
tooltip: savedWords.saveTooltip,
|
|
893
|
+
className: 'save-value',
|
|
894
|
+
onClick: function () { return savedValues.onSave(value, type); },
|
|
895
|
+
},
|
|
896
|
+
]
|
|
897
|
+
: []), true), (canUseSavedValue ?
|
|
898
|
+
[
|
|
899
|
+
{
|
|
900
|
+
label: savedWords.use,
|
|
901
|
+
icon: 'HistoryLine',
|
|
902
|
+
className: 'use-saved-value',
|
|
903
|
+
items: savedForType.map(function (item) { return (__assign({ label: item.label, description: item.description, className: 'saved-value', onClick: function () { return takeSavedValue(item.value); } }, ((savedValues === null || savedValues === void 0 ? void 0 : savedValues.onRemove) ?
|
|
904
|
+
{
|
|
905
|
+
rightAction: {
|
|
906
|
+
icon: 'DeleteBinLine',
|
|
907
|
+
intent: 'danger',
|
|
908
|
+
minimal: true,
|
|
909
|
+
className: 'saved-value-remove',
|
|
910
|
+
tooltip: savedWords.remove,
|
|
911
|
+
onClick: function (event) {
|
|
912
|
+
event.stopPropagation();
|
|
913
|
+
savedValues.onRemove(item.id);
|
|
914
|
+
},
|
|
915
|
+
},
|
|
916
|
+
}
|
|
917
|
+
: {}))); }),
|
|
918
|
+
},
|
|
919
|
+
]
|
|
920
|
+
: []), true);
|
|
634
921
|
var handleTemplateToggleClick = (0, react_2.useCallback)(function () {
|
|
635
922
|
setInternalIsFunction(false);
|
|
636
923
|
onChange(name, undefined, undefined, false);
|
|
@@ -640,11 +927,23 @@ var TemplateFieldImpl = (0, react_2.memo)(function (_a) {
|
|
|
640
927
|
var handleExpressionChange = (0, react_2.useCallback)(function (expressionValue, remove) {
|
|
641
928
|
if (remove) {
|
|
642
929
|
setInternalIsFunction(false);
|
|
930
|
+
setExpressionSeed(null);
|
|
643
931
|
// The expression is gone, so there is no longer a switch to undo.
|
|
644
932
|
setExpressionFromText(null);
|
|
645
933
|
}
|
|
934
|
+
/* On the Expression tab a lone template is kept as the expression the server parses it into,
|
|
935
|
+
template(...): the option takes expressions (qorus#646, David). A template-only option has no
|
|
936
|
+
Expression tab and keeps the bare template. A lone value (12, true) is that value, the field's own
|
|
937
|
+
shape (see `loneValueOf`). */
|
|
938
|
+
var onTabs = !!tabsKindRef.current;
|
|
939
|
+
var literal = remove || !onTabs ? undefined : (0, writtenAsText_1.loneValueOf)(expressionValue);
|
|
940
|
+
if (literal !== undefined) {
|
|
941
|
+
setExpressionSeed((0, writtenAsText_1.expressionSeedOf)(literal.value));
|
|
942
|
+
onChange(name, literal.value, type, false);
|
|
943
|
+
return;
|
|
944
|
+
}
|
|
646
945
|
onChange(name, expressionValue === null || expressionValue === void 0 ? void 0 : expressionValue.value, expressionDataType, !remove);
|
|
647
|
-
}, [name, onChange, expressionDataType, value]);
|
|
946
|
+
}, [name, onChange, expressionDataType, value, type]);
|
|
648
947
|
// ─── Text typed into a plain field that is really a DPQL expression ───
|
|
649
948
|
//
|
|
650
949
|
// A field that accepts expressions still gets DPQL TYPED into it, in the
|
|
@@ -675,9 +974,16 @@ var TemplateFieldImpl = (0, react_2.memo)(function (_a) {
|
|
|
675
974
|
var _a;
|
|
676
975
|
setDpqlOffer(null);
|
|
677
976
|
setExpressionFromText(text);
|
|
977
|
+
/* The value is an expression now, and the Text view shows it. A seed left from an earlier visit to
|
|
978
|
+
the Expression tab - the value as it was then - was shown in its place, and leaving the tab saved
|
|
979
|
+
it: what had just been typed was lost (qorus#646). */
|
|
980
|
+
setExpressionSeed(null);
|
|
678
981
|
setInternalIsFunction(true);
|
|
679
982
|
setIsTemplate(false);
|
|
680
983
|
setTemplateValue(null);
|
|
984
|
+
// the Value tab never holds an expression: detected, it moves to the Expression tab, with an undo
|
|
985
|
+
if (tabsKindRef.current === 'full')
|
|
986
|
+
setTab('expression');
|
|
681
987
|
// `dpql/parse` answers with the field-ready envelope
|
|
682
988
|
// (`{is_expression, value}`); this field stores the inner AST and
|
|
683
989
|
// signals the flag through `onChange`'s fourth argument, exactly as
|
|
@@ -690,6 +996,10 @@ var TemplateFieldImpl = (0, react_2.memo)(function (_a) {
|
|
|
690
996
|
}
|
|
691
997
|
declinedTexts.current.add(expressionFromText);
|
|
692
998
|
setInternalIsFunction(false);
|
|
999
|
+
if (tabsKind) {
|
|
1000
|
+
setTab('value');
|
|
1001
|
+
setIsTemplate(valueTabIsText);
|
|
1002
|
+
}
|
|
693
1003
|
setExpressionFromText(null);
|
|
694
1004
|
onChange === null || onChange === void 0 ? void 0 : onChange(name, expressionFromText, type, false);
|
|
695
1005
|
}, [expressionFromText, name, onChange, type]);
|
|
@@ -719,7 +1029,8 @@ var TemplateFieldImpl = (0, react_2.memo)(function (_a) {
|
|
|
719
1029
|
var canDetectDpql = !!allowFunctions &&
|
|
720
1030
|
!!allowTextExpressions &&
|
|
721
1031
|
!effectiveIsFunction &&
|
|
722
|
-
|
|
1032
|
+
// the template editor is text too: an expression written around a template is detected there
|
|
1033
|
+
(!isTemplate || templateSupportsCustomValues) &&
|
|
723
1034
|
!hasOnlyAllowedValues &&
|
|
724
1035
|
!rest.readonly &&
|
|
725
1036
|
!rest.readOnly &&
|
|
@@ -760,7 +1071,8 @@ var TemplateFieldImpl = (0, react_2.memo)(function (_a) {
|
|
|
760
1071
|
return;
|
|
761
1072
|
}
|
|
762
1073
|
var outcome = (0, dpqlDetection_1.classifyTypedText)({ text: text, type: type, field: validationField, parsed: parsed });
|
|
763
|
-
|
|
1074
|
+
// on tabs, an expression detected switches (with an undo) rather than being offered
|
|
1075
|
+
if (outcome === 'switch' || (outcome === 'offer' && tabsKindRef.current === 'full')) {
|
|
764
1076
|
enterExpressionRef.current(text, parsed.expression);
|
|
765
1077
|
}
|
|
766
1078
|
else if (outcome === 'offer') {
|
|
@@ -794,26 +1106,25 @@ var TemplateFieldImpl = (0, react_2.memo)(function (_a) {
|
|
|
794
1106
|
the row's — so leaving this out of the published list meant template mode
|
|
795
1107
|
was a one-way door on the surface most options are edited from. */
|
|
796
1108
|
var canOfferCustomValue = showTemplateToggle && isTemplate && templateSupportsCustomValues;
|
|
797
|
-
var publishedItems = (0, react_2.useMemo)(function () { return __spreadArray(__spreadArray(__spreadArray(__spreadArray([], (
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
? [
|
|
1109
|
+
var publishedItems = (0, react_2.useMemo)(function () { return __spreadArray(__spreadArray(__spreadArray(__spreadArray([], (tabsKind ?
|
|
1110
|
+
[]
|
|
1111
|
+
: __spreadArray(__spreadArray([], (canOfferExpression && !functions.loading ?
|
|
1112
|
+
[
|
|
1113
|
+
__assign(__assign({
|
|
1114
|
+
// in a condition field the label says what it is for; the value's tooltip would only repeat it
|
|
1115
|
+
label: (0, expressions_1.isConditionOption)(rest) ? 'Write a condition' : 'Use Expression', icon: 'Functions' }, ((0, expressions_1.isConditionOption)(rest) ? {} : { tooltip: 'Run a function on this value' })), { onClick: handleSelectFunctionChange }),
|
|
1116
|
+
]
|
|
1117
|
+
: []), true), (canOfferTemplate ?
|
|
1118
|
+
[
|
|
1119
|
+
{
|
|
1120
|
+
label: 'Use Template',
|
|
1121
|
+
icon: 'MoneyDollarCircleLine',
|
|
1122
|
+
tooltip: 'Use a template',
|
|
1123
|
+
onClick: handleTemplateToggleClick,
|
|
1124
|
+
},
|
|
1125
|
+
]
|
|
1126
|
+
: []), true)), true), (canOfferCustomValue && !tabsKind ?
|
|
1127
|
+
[
|
|
817
1128
|
{
|
|
818
1129
|
label: 'Use Custom Value',
|
|
819
1130
|
icon: 'EditLine',
|
|
@@ -833,7 +1144,7 @@ var TemplateFieldImpl = (0, react_2.memo)(function (_a) {
|
|
|
833
1144
|
setTemplateValue(null);
|
|
834
1145
|
});
|
|
835
1146
|
},
|
|
836
|
-
}); }), true); }, [
|
|
1147
|
+
}); }), true), savedValueItems, true); }, [
|
|
837
1148
|
canOfferExpression,
|
|
838
1149
|
functions.loading,
|
|
839
1150
|
canOfferTemplate,
|
|
@@ -842,6 +1153,11 @@ var TemplateFieldImpl = (0, react_2.memo)(function (_a) {
|
|
|
842
1153
|
handleSelectFunctionChange,
|
|
843
1154
|
handleTemplateToggleClick,
|
|
844
1155
|
handleUseCustomValueClick,
|
|
1156
|
+
// the saved values offered, and whether this value can be saved
|
|
1157
|
+
canSaveValue,
|
|
1158
|
+
value,
|
|
1159
|
+
savedForType,
|
|
1160
|
+
takeSavedValue,
|
|
845
1161
|
]);
|
|
846
1162
|
/* Keyed on WHICH items are offered, never on the items: they carry
|
|
847
1163
|
handlers, so they are a new array every render and a row comparing them
|
|
@@ -851,15 +1167,26 @@ var TemplateFieldImpl = (0, react_2.memo)(function (_a) {
|
|
|
851
1167
|
canOfferTemplate ? 'template' : '',
|
|
852
1168
|
canOfferCustomValue ? 'custom-value' : '',
|
|
853
1169
|
"custom:".concat((menuItems !== null && menuItems !== void 0 ? menuItems : []).map(function (item) { var _a; return String((_a = item.label) !== null && _a !== void 0 ? _a : ''); }).join('|')),
|
|
1170
|
+
canSaveValue ? "save:".concat(JSON.stringify(value)) : '',
|
|
1171
|
+
canUseSavedValue ? "saved:".concat(savedForType.map(function (item) { return item.id; }).join('|')) : '',
|
|
854
1172
|
].join(',');
|
|
855
1173
|
(0, rowMenuContext_1.useRowMenuPublisher)(rowMenu, publishedKey, publishedItems);
|
|
856
1174
|
var renderControls = (0, react_2.useCallback)(function () {
|
|
857
|
-
|
|
858
|
-
var
|
|
1175
|
+
// on tabs, the tabs are the mode switch: the menu keeps value actions only
|
|
1176
|
+
var showFunctionsDropdown = !tabsKind &&
|
|
1177
|
+
allowFunctions &&
|
|
1178
|
+
!hasOnlyAllowedValues &&
|
|
1179
|
+
!rest.readonly &&
|
|
1180
|
+
!internalIsFunction;
|
|
1181
|
+
var showTemplatesButton = !tabsKind && showTemplateToggle && !isTemplate;
|
|
859
1182
|
// The way back out of template mode, where the editor draws no `×`.
|
|
860
|
-
var showCustomValueButton = showTemplateToggle && isTemplate && templateSupportsCustomValues;
|
|
1183
|
+
var showCustomValueButton = !tabsKind && showTemplateToggle && isTemplate && templateSupportsCustomValues;
|
|
861
1184
|
// The "Set value" label promises a way to set one — reorder rows alone don't.
|
|
862
|
-
var hasValueRows = showFunctionsDropdown ||
|
|
1185
|
+
var hasValueRows = showFunctionsDropdown ||
|
|
1186
|
+
showTemplatesButton ||
|
|
1187
|
+
showCustomValueButton ||
|
|
1188
|
+
(0, lodash_1.size)(menuItems) > 0 ||
|
|
1189
|
+
savedValueItems.length > 0;
|
|
863
1190
|
/* A lone group opens itself. Two of the menu's groups are collapsed
|
|
864
1191
|
sections, so a menu holding nothing but one of them asked for a click
|
|
865
1192
|
to reach the only thing on offer — on an untyped field, "Set Custom
|
|
@@ -873,6 +1200,7 @@ var TemplateFieldImpl = (0, react_2.memo)(function (_a) {
|
|
|
873
1200
|
showCustomValueButton,
|
|
874
1201
|
(0, lodash_1.size)(menuActions === null || menuActions === void 0 ? void 0 : menuActions.items) > 0,
|
|
875
1202
|
(0, lodash_1.size)(menuItems) > 0,
|
|
1203
|
+
canUseSavedValue,
|
|
876
1204
|
].filter(Boolean).length === 1;
|
|
877
1205
|
/* ONE menu per control. Where this field sits in a form ROW, the row
|
|
878
1206
|
already renders a ⋮ of its own, and drawing a second one beside it
|
|
@@ -888,7 +1216,7 @@ var TemplateFieldImpl = (0, react_2.memo)(function (_a) {
|
|
|
888
1216
|
return (showFunctionsDropdown ?
|
|
889
1217
|
functions.loading ?
|
|
890
1218
|
(0, jsx_runtime_1.jsx)(reqore_1.ReqoreSkeleton, { size: rest.size })
|
|
891
|
-
: (0, jsx_runtime_1.jsx)(reqore_1.ReqoreButton, { compact: true, minimal: true, label: 'Create New Expression', className: 'function-selector', icon: 'Functions', tooltip: 'This field
|
|
1219
|
+
: (0, jsx_runtime_1.jsx)(reqore_1.ReqoreButton, { compact: true, minimal: true, label: 'Create New Expression', className: 'function-selector', icon: 'Functions', tooltip: 'This field takes an expression.', onClick: function () {
|
|
892
1220
|
setIsTemplate(false);
|
|
893
1221
|
setTemplateValue(null);
|
|
894
1222
|
onChange === null || onChange === void 0 ? void 0 : onChange(name, {
|
|
@@ -939,8 +1267,8 @@ var TemplateFieldImpl = (0, react_2.memo)(function (_a) {
|
|
|
939
1267
|
}, handler: 'click', content: (0, jsx_runtime_1.jsxs)(reqore_1.ReqoreMenu, { size: rest.size, maxHeight: '400px', style: { overflow: 'auto' }, children: [showFunctionsDropdown ?
|
|
940
1268
|
functions.loading ?
|
|
941
1269
|
(0, jsx_runtime_1.jsx)(reqore_1.ReqoreSkeleton, { size: rest.size })
|
|
942
|
-
: (0, jsx_runtime_1.jsx)(reqore_1.ReqoreButton, { compact: true, transparent: true, label: 'Use Expression', className: 'function-selector', icon: 'Functions', tooltip: 'Run a function on this value', onClick: handleSelectFunctionChange })
|
|
943
|
-
: null, showTemplatesButton ?
|
|
1270
|
+
: (0, jsx_runtime_1.jsx)(reqore_1.ReqoreButton, { compact: true, transparent: true, label: (0, expressions_1.isConditionOption)(rest) ? 'Write a condition' : 'Use Expression', className: 'function-selector', icon: 'Functions', tooltip: (0, expressions_1.isConditionOption)(rest) ? undefined : 'Run a function on this value', onClick: handleSelectFunctionChange })
|
|
1271
|
+
: null, showTemplatesButton && !(showFunctionsDropdown && allowTextExpressions) ?
|
|
944
1272
|
(0, jsx_runtime_1.jsxs)(reqore_1.ReqoreButton, { transparent: true, icon: 'MoneyDollarCircleLine', className: 'template-toggle', tooltip: 'Use a template', compact: true, size: rest.size, onClick: handleTemplateToggleClick, children: [' ', "Use Template", ' '] })
|
|
945
1273
|
: null, showCustomValueButton ?
|
|
946
1274
|
(0, jsx_runtime_1.jsxs)(reqore_1.ReqoreButton, { transparent: true, icon: 'EditLine', className: 'template-custom-value', tooltip: 'Write the value here instead of choosing a template', compact: true, size: rest.size, onClick: handleUseCustomValueClick, children: [' ', "Use Custom Value", ' '] })
|
|
@@ -948,6 +1276,22 @@ var TemplateFieldImpl = (0, react_2.memo)(function (_a) {
|
|
|
948
1276
|
(0, jsx_runtime_1.jsx)(MenuActionsSection, { actions: menuActions, size: rest.size, startExpanded: loneSectionStartsExpanded })
|
|
949
1277
|
: null, (0, lodash_1.size)(menuItems) > 0 ?
|
|
950
1278
|
(0, jsx_runtime_1.jsx)(exports.CustomMenuItems, { items: menuItems, setIsTemplate: setIsTemplate, setTemplateValue: setTemplateValue, startExpanded: loneSectionStartsExpanded })
|
|
1279
|
+
: null, canSaveValue ?
|
|
1280
|
+
(0, jsx_runtime_1.jsx)(reqore_1.ReqoreButton, { compact: true, transparent: true, icon: 'SaveLine', className: 'save-value', tooltip: savedWords.saveTooltip, size: rest.size, onClick: function () { return savedValues.onSave(value, type); }, children: savedWords.save })
|
|
1281
|
+
: null, canUseSavedValue ?
|
|
1282
|
+
(0, jsx_runtime_1.jsx)(reqore_1.ReqoreMenuSection, { label: savedWords.use, icon: 'HistoryLine', className: 'use-saved-value', transparent: true, isCollapsed: !loneSectionStartsExpanded, children: savedForType.map(function (item) { return ((0, jsx_runtime_1.jsx)(reqore_1.ReqoreMenuItem, { className: 'saved-value', label: item.label, description: item.description, onClick: function () { return takeSavedValue(item.value); }, rightAction: (savedValues === null || savedValues === void 0 ? void 0 : savedValues.onRemove) ?
|
|
1283
|
+
{
|
|
1284
|
+
icon: 'DeleteBinLine',
|
|
1285
|
+
intent: 'danger',
|
|
1286
|
+
minimal: true,
|
|
1287
|
+
className: 'saved-value-remove',
|
|
1288
|
+
tooltip: savedWords.remove,
|
|
1289
|
+
onClick: function (event) {
|
|
1290
|
+
event.stopPropagation();
|
|
1291
|
+
savedValues.onRemove(item.id);
|
|
1292
|
+
},
|
|
1293
|
+
}
|
|
1294
|
+
: undefined }, item.id)); }) })
|
|
951
1295
|
: null, (0, lodash_1.size)(menuTrailingItems) > 0 ?
|
|
952
1296
|
(0, jsx_runtime_1.jsx)(MenuTrailingItems, { items: menuTrailingItems, size: rest.size })
|
|
953
1297
|
: null] }) }));
|
|
@@ -959,6 +1303,7 @@ var TemplateFieldImpl = (0, react_2.memo)(function (_a) {
|
|
|
959
1303
|
handleSelectFunctionChange,
|
|
960
1304
|
handleTemplateToggleClick,
|
|
961
1305
|
handleUseCustomValueClick,
|
|
1306
|
+
allowTextExpressions,
|
|
962
1307
|
hasOnlyAllowedValues,
|
|
963
1308
|
isTemplate,
|
|
964
1309
|
rest.readonly,
|
|
@@ -977,6 +1322,12 @@ var TemplateFieldImpl = (0, react_2.memo)(function (_a) {
|
|
|
977
1322
|
hasInputAffordance,
|
|
978
1323
|
// the row decides whether this field draws a menu at all
|
|
979
1324
|
rowMenu,
|
|
1325
|
+
tabsKind,
|
|
1326
|
+
canSaveValue,
|
|
1327
|
+
canUseSavedValue,
|
|
1328
|
+
savedForType,
|
|
1329
|
+
takeSavedValue,
|
|
1330
|
+
savedValues,
|
|
980
1331
|
]);
|
|
981
1332
|
// When the type is a list, and it has an element type - that element type is different
|
|
982
1333
|
// from the field type, so we need to send down the full templates object
|
|
@@ -998,6 +1349,85 @@ var TemplateFieldImpl = (0, react_2.memo)(function (_a) {
|
|
|
998
1349
|
rest.element_type,
|
|
999
1350
|
type,
|
|
1000
1351
|
]);
|
|
1352
|
+
// ─── Value · Expression · Visual (or Value · Template) ───────────────────────────────────────────
|
|
1353
|
+
if (tabsKind && !rest.disabled) {
|
|
1354
|
+
var words_1 = __assign(__assign({}, exports.DEFAULT_VALUE_TABS_LABELS), valueTabsLabels);
|
|
1355
|
+
/** A type named inside a sentence: the host's own words, or the type catalogue's sentence form (none for no type). */
|
|
1356
|
+
var typeInSentence = (_e = words_1.typeName) !== null && _e !== void 0 ? _e : qorusTypes.getTypeSentenceForm;
|
|
1357
|
+
/* A condition field's Expression tab holds what is used as a condition, so it is called one (qorus#646):
|
|
1358
|
+
"condition" where the value is used as a condition, "expression" everywhere else. */
|
|
1359
|
+
var conditionField_1 = (0, expressions_1.isConditionOption)(rest);
|
|
1360
|
+
var expressionTabLabel_1 = conditionField_1 ? words_1.condition : words_1.expression;
|
|
1361
|
+
var tabButton = function (key, label, icon, tooltip) { return ((0, jsx_runtime_1.jsx)(reqore_1.ReqoreButton, { compact: true, size: rest.size, icon: icon, active: tab === key, "aria-pressed": tab === key, "data-tab": key, className: "value-tab value-tab-".concat(key), tooltip: tooltip, disabled: rest.readOnly || rest.readonly, onClick: function () { return selectTab(key); }, children: label }, key)); };
|
|
1362
|
+
/* A lone template of another type than the field's is converted when the value is used: said as a
|
|
1363
|
+
warning, not a block - whether it converts depends on the data (qorus#646, David). */
|
|
1364
|
+
var loneTemplate_1 = typeof value === 'string' && (0, templates_1.isCompleteTemplateToken)(value) ? value : undefined;
|
|
1365
|
+
var loneTemplateType = loneTemplate_1 && !typeIsAnyLike ?
|
|
1366
|
+
(_f = (0, templates_1.findTemplate)(templates !== null && templates !== void 0 ? templates : {}, loneTemplate_1)) === null || _f === void 0 ? void 0 : _f.badge
|
|
1367
|
+
: undefined;
|
|
1368
|
+
// the types inside the sentence; with either one not known there is nothing to say converts to what
|
|
1369
|
+
var conversionFrom = typeof loneTemplateType === 'string' && !(0, writtenAsText_1.sameValueType)(loneTemplateType, type) ?
|
|
1370
|
+
typeInSentence(loneTemplateType)
|
|
1371
|
+
: undefined;
|
|
1372
|
+
var conversionTo = conversionFrom ? typeInSentence(type) : undefined;
|
|
1373
|
+
var conversionNote_1 = conversionFrom && conversionTo ? words_1.conversion(conversionFrom, conversionTo) : undefined;
|
|
1374
|
+
var cannotShow_1 = function (message) { return ((0, jsx_runtime_1.jsxs)(reqore_1.ReqoreMessage, { size: 'small', flat: true, opaque: false, intent: 'muted', className: 'value-tab-cannot-show', children: [message, ' ', (0, jsx_runtime_1.jsx)(reqore_1.ReqoreButton, { compact: true, size: rest.size, className: 'value-tab-replace', onClick: replaceWithAValue, disabled: rest.readOnly || rest.readonly, children: words_1.replaceWithAValue })] })); };
|
|
1375
|
+
var valueBody = function () {
|
|
1376
|
+
var _a;
|
|
1377
|
+
if (valueIsExpression) {
|
|
1378
|
+
return cannotShow_1(conditionField_1 ? words_1.cannotShowCondition : words_1.cannotShowExpression);
|
|
1379
|
+
}
|
|
1380
|
+
if (valueTabIsText) {
|
|
1381
|
+
return ((0, jsx_runtime_1.jsxs)(reqore_1.ReqoreControlGroup, { vertical: true, fluid: true, gapSize: 'small', children: [(0, jsx_runtime_1.jsx)(RichText_1.RichTextFormField, __assign({ className: 'template-selector value-tab-text', valueFormat: 'text',
|
|
1382
|
+
/* A whole number or a number is typed on a numeric keyboard where the device has one, as its own
|
|
1383
|
+
input was (qorus#646); templates are picked from the list the field opens, and an expression
|
|
1384
|
+
is written on the Expression tab. */
|
|
1385
|
+
inputMode: TEXTABLE_INPUT_MODES[type], singleLine: (0, singleLineString_1.isSingleLineStringType)('string'), value: typeof templateValue === 'string' ? templateValue : ((0, writtenAsText_1.valueTextOf)(value, type)), templates: filteredTemplates,
|
|
1386
|
+
// a chip of a field not of this type is named as the catalogue names it
|
|
1387
|
+
namingTemplates: templates, allowTemplates: true, onChange: handleTemplateTextChange }, rest, { fixed: false, fluid: true,
|
|
1388
|
+
/* The value takes the row the tabs give it (qorus#646, David: a small box beside empty room
|
|
1389
|
+
was clicked beside, and offered nothing). An operand's own field sizes itself to its
|
|
1390
|
+
column instead - that is the field outside the tabs. */
|
|
1391
|
+
panelProps: __assign(__assign({}, rest.panelProps), { style: __assign(__assign({}, (_a = rest.panelProps) === null || _a === void 0 ? void 0 : _a.style), { width: '100%' }) }), "aria-label": fieldAriaLabel })), conversionNote_1 ?
|
|
1392
|
+
(0, jsx_runtime_1.jsx)(reqore_1.ReqoreMessage, { size: 'small', flat: true, opaque: false, intent: 'warning', className: 'value-tab-conversion', children: conversionNote_1 })
|
|
1393
|
+
: null] }));
|
|
1394
|
+
}
|
|
1395
|
+
if (loneTemplate_1 !== undefined || (typeof value === 'string' && (0, templates_1.isValueTemplate)(value))) {
|
|
1396
|
+
return cannotShow_1(words_1.templateShownOn(tabsKind === 'full' ? expressionTabLabel_1 : words_1.template));
|
|
1397
|
+
}
|
|
1398
|
+
return ((0, jsx_runtime_1.jsx)(Component, __assign({ value: value, allowTemplates: false, onChange: onChange, name: name, level: level }, rest, { componentOverrides: componentOverrides }, componentTypeProp, { "aria-label": fieldAriaLabel, className: "".concat(className, " template-selector") })));
|
|
1399
|
+
};
|
|
1400
|
+
var expressionBody = function () { return ((0, jsx_runtime_1.jsxs)(reqore_1.ReqoreControlGroup, { vertical: true, fluid: true, gapSize: 'small', children: [(0, jsx_runtime_1.jsx)(reqore_1.ReqoreErrorBoundary, { children: (0, jsx_runtime_1.jsx)(ExpressionField_1.ExpressionField
|
|
1401
|
+
/* A value that is not an expression yet is shown as the server reads it written alone:
|
|
1402
|
+
value(12) - so the Visual tab starts from the value, not from an operand with no operation. */
|
|
1403
|
+
, {
|
|
1404
|
+
/* A value that is not an expression yet is shown as the server reads it written alone:
|
|
1405
|
+
value(12) - so the Visual tab starts from the value, not from an operand with no operation. */
|
|
1406
|
+
value: {
|
|
1407
|
+
is_expression: true,
|
|
1408
|
+
value: value !== null && typeof value === 'object' ? value
|
|
1409
|
+
: !isEmptyValue && value !== null ?
|
|
1410
|
+
{ exp: 'value', args: [{ type: type, value: value }] }
|
|
1411
|
+
: undefined,
|
|
1412
|
+
}, initialText: expressionSeed !== null && expressionSeed !== void 0 ? expressionSeed : undefined, heldAsValue: !isEmptyValue && value !== null && typeof value !== 'object', componentOverrides: componentOverrides, localTemplates: templates, type: type, returnType: (returnType || expressionDataType), onChange: handleExpressionChange, readOnly: rest.readOnly || rest.disabled, expressions: rest.expressions, expressionsUrl: rest.expressions_url, fields: rest.dpql_fields, serverHandled: rest.server_expression_handling,
|
|
1413
|
+
// a condition (a Qog if state's value, a while or for block's condition), marked by the host
|
|
1414
|
+
condition: (0, expressions_1.isConditionOption)(rest), extraActions: extraActions, size: rest.size, defaultMode: tab === 'visual' ? 'visual' : 'text', requestedMode: tab === 'visual' ? 'visual' : 'text', hideModeToggle: true, flushRef: expressionFlush,
|
|
1415
|
+
// no language server: the Visual tab is where the expression is built
|
|
1416
|
+
onTextUnavailable: function () { return setTab('visual'); }, reorder: reorder }) }), expressionFromText !== null ?
|
|
1417
|
+
(0, jsx_runtime_1.jsx)(reqore_1.ReqoreButton, { fixed: true, compact: true, minimal: true, icon: 'ArrowGoBackLine', size: rest.size, className: 'dpql-detected-undo', tooltip: words_1.undoTooltip(expressionFromText), onClick: undoExpressionFromText, children: words_1.undo })
|
|
1418
|
+
: null] })); };
|
|
1419
|
+
var templateBody = function () { return ((0, jsx_runtime_1.jsx)(exports.TemplateDropdownSelector, { allowCustomValues: false, templates: templates, value: typeof value === 'string' && (0, templates_1.isValueTemplate)(value) ? value : null, items: filteredTemplates === null || filteredTemplates === void 0 ? void 0 : filteredTemplates.items, onItemSelect: handleSelectTemplateFromList, onRemoveClick: replaceWithAValue, templateBadge: templateBadge, size: rest.size, label: label, hasOnlyAllowedValues: hasOnlyAllowedValues })); };
|
|
1420
|
+
return ((0, jsx_runtime_1.jsxs)(reqore_1.ReqoreControlGroup, { vertical: true, fluid: true, gapSize: 'small', className: 'value-tabs-field', children: [(0, jsx_runtime_1.jsxs)(reqore_1.ReqoreControlGroup, { fluid: true, size: rest.size, verticalAlign: 'center', children: [(0, jsx_runtime_1.jsxs)(reqore_1.ReqoreControlGroup, { stack: true, size: rest.size, className: 'value-tabs', fixed: true, children: [tabButton('value', words_1.value, 'EditLine'), tabsKind === 'full' ?
|
|
1421
|
+
[
|
|
1422
|
+
tabButton('expression', expressionTabLabel_1, 'CodeLine', conditionField_1 ? words_1.conditionTooltip : words_1.expressionTooltip),
|
|
1423
|
+
tabButton('visual', words_1.visual, 'NodeTree', conditionField_1 ? words_1.conditionVisualTooltip : words_1.visualTooltip),
|
|
1424
|
+
]
|
|
1425
|
+
: tabButton('template', words_1.template, 'MoneyDollarCircleLine', words_1.templateTooltip)] }), renderControls()] }), tab === 'value' ?
|
|
1426
|
+
valueBody()
|
|
1427
|
+
: tab === 'template' ?
|
|
1428
|
+
templateBody()
|
|
1429
|
+
: expressionBody()] }));
|
|
1430
|
+
}
|
|
1001
1431
|
if (effectiveIsFunction && !hasOnlyAllowedValues) {
|
|
1002
1432
|
// SEAM (reqraft): `allowTextExpressions` swaps the IDE's bare builder
|
|
1003
1433
|
// for the ExpressionField shell (Visual = the same builder, Text = the
|
|
@@ -1014,11 +1444,15 @@ var TemplateFieldImpl = (0, react_2.memo)(function (_a) {
|
|
|
1014
1444
|
// ui_type (an assertion's `test-reference` Value, for one).
|
|
1015
1445
|
componentOverrides: componentOverrides, localTemplates: templates, type: type, returnType: (returnType || expressionDataType), onChange: handleExpressionChange, readOnly: rest.readOnly || rest.disabled, expressions: rest.expressions, expressionsUrl: rest.expressions_url,
|
|
1016
1446
|
// the record's fields for the Text view, from the field's schema (`dpql_fields`)
|
|
1017
|
-
fields: rest.dpql_fields, serverHandled: rest.server_expression_handling,
|
|
1018
|
-
//
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
1447
|
+
fields: rest.dpql_fields, serverHandled: rest.server_expression_handling,
|
|
1448
|
+
// a condition (a Qog if state's value, a while or for block's condition), marked by the host
|
|
1449
|
+
condition: (0, expressions_1.isConditionOption)(rest), extraActions: extraActions, size: rest.size,
|
|
1450
|
+
/* An expression opens on its Text view, the first of Text · Visual, as the value's tabs open on
|
|
1451
|
+
Expression before Visual (qorus#646, David); without a language server it falls back to
|
|
1452
|
+
Visual by itself. It opened on Visual, on an empty "Select operation", unless the
|
|
1453
|
+
expression had just been typed as text. Mounted again, it opens on the view the author
|
|
1454
|
+
was on - except for an expression just typed as text, which is shown as the text it is. */
|
|
1455
|
+
defaultMode: expressionFromText !== null ? 'text' : expressionMode, onModeChange: setExpressionMode, reorder: reorder }) }), expressionFromText !== null ?
|
|
1022
1456
|
(0, jsx_runtime_1.jsx)(reqore_1.ReqoreButton, { fixed: true, compact: true, minimal: true, icon: 'ArrowGoBackLine',
|
|
1023
1457
|
// No `intent` with `minimal`: a Reqore intent is a FILL, and
|
|
1024
1458
|
// `muted` as TEXT is 1.3:1 on the app surface.
|
|
@@ -1028,27 +1462,43 @@ var TemplateFieldImpl = (0, react_2.memo)(function (_a) {
|
|
|
1028
1462
|
return ((0, jsx_runtime_1.jsxs)(reqore_1.ReqoreControlGroup, { children: [(0, jsx_runtime_1.jsx)(reqore_1.ReqoreErrorBoundary, { children: (0, jsx_runtime_1.jsx)(builder_1.ExpressionBuilder, { value: {
|
|
1029
1463
|
is_expression: true,
|
|
1030
1464
|
value: value,
|
|
1031
|
-
}, componentOverrides: componentOverrides, localTemplates: templates, level: level, type: type, returnType: (returnType || expressionDataType), onChange: handleExpressionChange, readOnly: rest.readOnly || rest.disabled, expressions: rest.expressions, expressionsUrl: rest.expressions_url, serverHandled: rest.server_expression_handling,
|
|
1465
|
+
}, componentOverrides: componentOverrides, localTemplates: templates, level: level, type: type, returnType: (returnType || expressionDataType), onChange: handleExpressionChange, readOnly: rest.readOnly || rest.disabled, expressions: rest.expressions, expressionsUrl: rest.expressions_url, serverHandled: rest.server_expression_handling,
|
|
1466
|
+
// a condition (a Qog if state's value, a while or for block's condition), marked by the host
|
|
1467
|
+
condition: (0, expressions_1.isConditionOption)(rest), extraActions: extraActions, reorder: reorder }) }), renderControls()] }));
|
|
1032
1468
|
}
|
|
1033
1469
|
if (rest.disabled) {
|
|
1034
1470
|
if (isTemplate) {
|
|
1035
1471
|
// SEAM (reqraft): the IDE renders a bare `<ReqoreTag label={templateValue}/>`
|
|
1036
1472
|
// here; reqraft upgrades the read-only template to a proper picker chip —
|
|
1037
|
-
// the $-dollar icon + resolved display name + app image,
|
|
1473
|
+
// the $-dollar icon + resolved display name + app image, colored by the
|
|
1038
1474
|
// IDE's intent scheme. Shared with the compact read-first row.
|
|
1039
|
-
return (0, jsx_runtime_1.jsx)(ReadOnlyTemplateTag_1.ReadOnlyTemplateTag, { value: templateValue, templates: templates
|
|
1475
|
+
return (0, jsx_runtime_1.jsx)(ReadOnlyTemplateTag_1.ReadOnlyTemplateTag, { value: templateValue, templates: templates });
|
|
1040
1476
|
}
|
|
1041
1477
|
return ((0, jsx_runtime_1.jsx)(Comp, __assign({ value: value, onChange: onChange, name: name }, rest, { componentOverrides: componentOverrides })));
|
|
1042
1478
|
}
|
|
1043
1479
|
return ((0, jsx_runtime_1.jsxs)(reqore_1.ReqoreControlGroup, __assign({ fluid: rest.fluid, fixed: rest.fixed, size: rest.size }, rest, { stack: false, verticalAlign: 'flex-start', children: [!isTemplate && allowCustomValues ?
|
|
1044
1480
|
(0, jsx_runtime_1.jsx)(Component, __assign({ value: value, allowTemplates: allowTemplates, onChange: onChange, name: name, level: level }, rest, { componentOverrides: componentOverrides }, componentTypeProp, { "aria-label": fieldAriaLabel, className: "".concat(className, " template-selector"), templates: componentTemplates }))
|
|
1045
|
-
: null, isTemplate &&
|
|
1046
|
-
(0, jsx_runtime_1.jsx)(
|
|
1481
|
+
: null, !isTemplate && allowCustomValues && dateTakesTemplates ?
|
|
1482
|
+
(0, jsx_runtime_1.jsx)(TemplateBrowser_1.TemplateBrowser, { className: 'date-template-picker', icon: 'MoneyDollarCircleLine', fixed: true, compact: true, size: rest.size, tooltip: 'Use a template', "aria-label": 'Use a template', templates: filteredTemplates, focusFilter: true, onItemSelect: handleSelectDateTemplate })
|
|
1483
|
+
: null, isTemplate && templateSupportsCustomValues ?
|
|
1484
|
+
(0, jsx_runtime_1.jsx)(RichText_1.RichTextFormField, __assign({ className: 'template-selector', valueFormat: 'text', singleLine: (0, singleLineString_1.isSingleLineStringType)('string'),
|
|
1485
|
+
/* null shows as null, not as an empty field: the two are different values, and an
|
|
1486
|
+
untyped field holding null looked exactly like one holding nothing (qorus#646) */
|
|
1487
|
+
value: typeof templateValue === 'string' ? templateValue : (((_g = (0, writtenAsText_1.untypedTextOf)(value, type)) !== null && _g !== void 0 ? _g : '')), templates: filteredTemplates,
|
|
1488
|
+
// a chip of a field not of this type (text around it, say) is named as the catalogue names it
|
|
1489
|
+
namingTemplates: templates, allowTemplates: true, onChange: handleTemplateTextChange }, rest, {
|
|
1490
|
+
/* The text the value is written in takes the room its row gives it and gives it back: a
|
|
1491
|
+
caller's \`fixed\` sized a picker chip, and on a text field it kept the field at its full
|
|
1492
|
+
width, pushing the ⋮ past an operand's row in a narrow column. */
|
|
1493
|
+
fixed: false, fluid: true,
|
|
1494
|
+
/* 150px wide, as a free text field is, wider for what it holds, and narrower only where its
|
|
1495
|
+
row has less room - an operand in a narrow column - as a number's input is: a fixed
|
|
1496
|
+
150px minimum held it at full width there. */
|
|
1497
|
+
panelProps: __assign(__assign({}, rest.panelProps), { style: __assign(__assign({}, (_h = rest.panelProps) === null || _h === void 0 ? void 0 : _h.style), { width: '150px', maxWidth: '100%', minWidth: 'fit-content' }) }), "aria-label": fieldAriaLabel }))
|
|
1047
1498
|
: null, dpqlOffer ?
|
|
1048
|
-
(0, jsx_runtime_1.jsxs)(reqore_1.ReqoreControlGroup, { fixed: true, stack: true, size: rest.size, children: [(0, jsx_runtime_1.jsx)(reqore_1.ReqoreButton, { compact: true, icon: 'Functions', intent: 'info', className: 'dpql-detected-offer', tooltip: "\"".concat(dpqlOffer.text, "\"
|
|
1049
|
-
: null,
|
|
1050
|
-
(
|
|
1051
|
-
(0, jsx_runtime_1.jsx)(exports.TemplateDropdownSelector, { allowCustomValues: allowCustomValues, templates: templates, value: templateValue, items: filteredTemplates === null || filteredTemplates === void 0 ? void 0 : filteredTemplates.items, onItemSelect: handleSelectTemplateFromList, onRemoveClick: handleRemoveTemplateClick, size: rest.size, label: label, hasOnlyAllowedValues: hasOnlyAllowedValues })
|
|
1499
|
+
(0, jsx_runtime_1.jsxs)(reqore_1.ReqoreControlGroup, { fixed: true, stack: true, size: rest.size, children: [(0, jsx_runtime_1.jsx)(reqore_1.ReqoreButton, { compact: true, icon: 'Functions', intent: 'info', className: 'dpql-detected-offer', tooltip: "\"".concat(dpqlOffer.text, "\" could be an expression. It is kept as text; use it as an expression instead?"), onClick: acceptDpqlOffer, children: "Use as expression" }), (0, jsx_runtime_1.jsx)(reqore_1.ReqoreButton, { compact: true, icon: 'CloseLine', intent: 'info', className: 'dpql-detected-dismiss', tooltip: 'Keep it as plain text', onClick: declineDpqlOffer })] })
|
|
1500
|
+
: null, showTemplatesDropdown ?
|
|
1501
|
+
(0, jsx_runtime_1.jsx)(exports.TemplateDropdownSelector, { allowCustomValues: allowCustomValues, templates: templates, value: templateValue, items: filteredTemplates === null || filteredTemplates === void 0 ? void 0 : filteredTemplates.items, onItemSelect: handleSelectTemplateFromList, onRemoveClick: handleRemoveTemplateClick, templateBadge: templateBadge, size: rest.size, label: label, hasOnlyAllowedValues: hasOnlyAllowedValues })
|
|
1052
1502
|
: null, renderControls()] })));
|
|
1053
1503
|
});
|
|
1054
1504
|
/**
|