@qoretechnologies/reqraft 0.10.64 → 0.10.65-pr.137.g62fcecc
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +53 -1
- package/dist/components/Description/describedControl.d.ts +54 -0
- package/dist/components/Description/describedControl.d.ts.map +1 -0
- package/dist/components/Description/describedControl.js +81 -0
- package/dist/components/Description/describedControl.js.map +1 -0
- package/dist/components/Description/index.d.ts.map +1 -1
- package/dist/components/Description/index.js +3 -2
- package/dist/components/Description/index.js.map +1 -1
- package/dist/components/colorValue/colorValue.d.ts +59 -0
- package/dist/components/colorValue/colorValue.d.ts.map +1 -0
- package/dist/components/colorValue/colorValue.js +245 -0
- package/dist/components/colorValue/colorValue.js.map +1 -0
- package/dist/components/colorValue/index.d.ts +34 -0
- package/dist/components/colorValue/index.d.ts.map +1 -0
- package/dist/components/colorValue/index.js +136 -0
- package/dist/components/colorValue/index.js.map +1 -0
- package/dist/components/colorValue/labels.d.ts +12 -0
- package/dist/components/colorValue/labels.d.ts.map +1 -0
- package/dist/components/colorValue/labels.js +11 -0
- package/dist/components/colorValue/labels.js.map +1 -0
- package/dist/components/composer/Composer.d.ts +1 -1
- package/dist/components/composer/Composer.d.ts.map +1 -1
- package/dist/components/composer/Composer.js +2 -2
- package/dist/components/composer/Composer.js.map +1 -1
- package/dist/components/dpqlEditor/DpqlEditor.d.ts.map +1 -1
- package/dist/components/dpqlEditor/DpqlEditor.js +25 -5
- package/dist/components/dpqlEditor/DpqlEditor.js.map +1 -1
- package/dist/components/dpqlEditor/dpqlHelpers.d.ts +36 -5
- package/dist/components/dpqlEditor/dpqlHelpers.d.ts.map +1 -1
- package/dist/components/dpqlEditor/dpqlHelpers.js +340 -62
- 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 +35 -17
- package/dist/components/dpqlEditor/dpqlTags.js.map +1 -1
- package/dist/components/dpqlEditor/types.d.ts +54 -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 +207 -97
- 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 +58 -10
- package/dist/components/form/engine/FormEngine.d.ts.map +1 -1
- package/dist/components/form/engine/FormEngine.js +542 -112
- 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 +21 -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 +20 -10
- package/dist/components/form/engine/compactRowStyles.d.ts.map +1 -1
- package/dist/components/form/engine/compactRowStyles.js +36 -30
- 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 +64 -3
- package/dist/components/form/expressions/ExpressionField.d.ts.map +1 -1
- package/dist/components/form/expressions/ExpressionField.js +459 -100
- package/dist/components/form/expressions/ExpressionField.js.map +1 -1
- package/dist/components/form/expressions/argumentPresence.d.ts +14 -0
- package/dist/components/form/expressions/argumentPresence.d.ts.map +1 -1
- package/dist/components/form/expressions/argumentPresence.js +16 -1
- package/dist/components/form/expressions/argumentPresence.js.map +1 -1
- package/dist/components/form/expressions/builder/argumentDetail.d.ts.map +1 -1
- package/dist/components/form/expressions/builder/argumentDetail.js +4 -1
- package/dist/components/form/expressions/builder/argumentDetail.js.map +1 -1
- package/dist/components/form/expressions/builder/argumentLabel.d.ts.map +1 -1
- package/dist/components/form/expressions/builder/argumentLabel.js +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 +3 -1
- 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 +138 -78
- package/dist/components/form/expressions/builder/index.js.map +1 -1
- package/dist/components/form/expressions/builder/item.d.ts +6 -2
- package/dist/components/form/expressions/builder/item.d.ts.map +1 -1
- package/dist/components/form/expressions/builder/item.js +19 -5
- package/dist/components/form/expressions/builder/item.js.map +1 -1
- package/dist/components/form/expressions/builder/renderTemplate.js +1 -1
- package/dist/components/form/expressions/builder/renderTemplate.js.map +1 -1
- package/dist/components/form/expressions/dpqlMockRecordPath.d.ts +11 -0
- package/dist/components/form/expressions/dpqlMockRecordPath.d.ts.map +1 -0
- package/dist/components/form/expressions/dpqlMockRecordPath.js +254 -0
- package/dist/components/form/expressions/dpqlMockRecordPath.js.map +1 -0
- package/dist/components/form/expressions/expressionOperands.d.ts +16 -0
- package/dist/components/form/expressions/expressionOperands.d.ts.map +1 -0
- package/dist/components/form/expressions/expressionOperands.js +97 -0
- package/dist/components/form/expressions/expressionOperands.js.map +1 -0
- package/dist/components/form/expressions/fieldPath.d.ts +24 -0
- package/dist/components/form/expressions/fieldPath.d.ts.map +1 -0
- package/dist/components/form/expressions/fieldPath.js +152 -0
- package/dist/components/form/expressions/fieldPath.js.map +1 -0
- package/dist/components/form/expressions/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 +40 -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 +49 -0
- package/dist/components/form/expressions/textOfExpression.js.map +1 -0
- package/dist/components/form/expressions/types.d.ts +7 -0
- package/dist/components/form/expressions/types.d.ts.map +1 -1
- package/dist/components/form/expressions/types.js +6 -1
- package/dist/components/form/expressions/types.js.map +1 -1
- package/dist/components/form/expressions/useExpressionType.d.ts +26 -0
- package/dist/components/form/expressions/useExpressionType.d.ts.map +1 -0
- package/dist/components/form/expressions/useExpressionType.js +181 -0
- package/dist/components/form/expressions/useExpressionType.js.map +1 -0
- package/dist/components/form/expressions/useRenderExpression.d.ts.map +1 -1
- package/dist/components/form/expressions/useRenderExpression.js +13 -9
- package/dist/components/form/expressions/useRenderExpression.js.map +1 -1
- package/dist/components/form/expressions/wildcardExpressions.d.ts +27 -0
- package/dist/components/form/expressions/wildcardExpressions.d.ts.map +1 -0
- package/dist/components/form/expressions/wildcardExpressions.js +101 -0
- package/dist/components/form/expressions/wildcardExpressions.js.map +1 -0
- package/dist/components/form/fields/Field.d.ts.map +1 -1
- package/dist/components/form/fields/Field.js +26 -9
- 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 +616 -16
- package/dist/components/form/fields/color/Color.js.map +1 -1
- package/dist/components/form/fields/emittedValues.d.ts +34 -3
- package/dist/components/form/fields/emittedValues.d.ts.map +1 -1
- package/dist/components/form/fields/emittedValues.js +24 -1
- package/dist/components/form/fields/emittedValues.js.map +1 -1
- package/dist/components/form/fields/file/File.d.ts +1 -1
- package/dist/components/form/fields/file/File.d.ts.map +1 -1
- package/dist/components/form/fields/file/File.js +4 -2
- package/dist/components/form/fields/file/File.js.map +1 -1
- package/dist/components/form/fields/long-string/LongString.d.ts.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 +188 -82
- 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 +11 -5
- package/dist/components/form/fields/template/ReadOnlyTemplateTag.d.ts.map +1 -1
- package/dist/components/form/fields/template/ReadOnlyTemplateTag.js +13 -5
- 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 +102 -1
- package/dist/components/form/fields/template/TemplateField.d.ts.map +1 -1
- package/dist/components/form/fields/template/TemplateField.js +572 -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 +9 -11
- package/dist/components/form/fields/template/TemplateText.js.map +1 -1
- package/dist/components/form/fields/template/writtenAsText.d.ts +61 -0
- package/dist/components/form/fields/template/writtenAsText.d.ts.map +1 -0
- package/dist/components/form/fields/template/writtenAsText.js +204 -0
- package/dist/components/form/fields/template/writtenAsText.js.map +1 -0
- package/dist/components/form/index.d.ts +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 +16 -8
- package/dist/components/log/Log.js.map +1 -1
- package/dist/components/menu/Menu.d.ts.map +1 -1
- package/dist/components/menu/Menu.js +19 -10
- package/dist/components/menu/Menu.js.map +1 -1
- package/dist/components/smartEditor/CompletionMenu.d.ts +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 +3 -3
- package/dist/components/smartEditor/MarkdownDoc.js.map +1 -1
- package/dist/components/smartEditor/SmartEditor.d.ts.map +1 -1
- package/dist/components/smartEditor/SmartEditor.js +164 -180
- 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 +68 -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/typedReferences.d.ts +21 -0
- package/dist/components/smartEditor/typedReferences.d.ts.map +1 -0
- package/dist/components/smartEditor/typedReferences.js +82 -0
- package/dist/components/smartEditor/typedReferences.js.map +1 -0
- package/dist/components/smartEditor/types.d.ts +33 -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 +33 -7
- package/dist/components/smartEditor/useLspHover.d.ts.map +1 -1
- package/dist/components/smartEditor/useLspHover.js +279 -35
- package/dist/components/smartEditor/useLspHover.js.map +1 -1
- package/dist/components/smartEditor/useLspSemanticTokens.js +1 -1
- package/dist/components/smartEditor/useLspSemanticTokens.js.map +1 -1
- package/dist/components/smartEditor/useLspSession.d.ts +6 -0
- package/dist/components/smartEditor/useLspSession.d.ts.map +1 -1
- package/dist/components/smartEditor/useLspSession.js +7 -6
- package/dist/components/smartEditor/useLspSession.js.map +1 -1
- package/dist/components/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 +38 -13
- 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/recordFieldReference.d.ts +15 -0
- package/dist/helpers/recordFieldReference.d.ts.map +1 -0
- package/dist/helpers/recordFieldReference.js +89 -0
- package/dist/helpers/recordFieldReference.js.map +1 -0
- package/dist/helpers/templateItems.d.ts +2 -2
- package/dist/helpers/templateItems.d.ts.map +1 -1
- package/dist/helpers/templateItems.js +6 -4
- package/dist/helpers/templateItems.js.map +1 -1
- package/dist/helpers/templateText.js +5 -2
- package/dist/helpers/templateText.js.map +1 -1
- package/dist/helpers/templates.d.ts +41 -14
- package/dist/helpers/templates.d.ts.map +1 -1
- package/dist/helpers/templates.js +152 -9
- 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/dist/utils/fetch.d.ts +9 -2
- package/dist/utils/fetch.d.ts.map +1 -1
- package/dist/utils/fetch.js +6 -5
- package/dist/utils/fetch.js.map +1 -1
- package/dist/utils/websocket.d.ts +65 -2
- package/dist/utils/websocket.d.ts.map +1 -1
- package/dist/utils/websocket.js +276 -44
- package/dist/utils/websocket.js.map +1 -1
- package/package.json +14 -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
|
@@ -1,1121 +0,0 @@
|
|
|
1
|
-
// Ported from qorus-ide `src/stories/Fields/Template.stories.tsx`
|
|
2
|
-
// (FIELD_STACK_REPORT batch). Adaptations, per the builder-stories pattern:
|
|
3
|
-
// - offline fixtures: `__fixtures__/templates.json` + `multiLevelTemplates.json`
|
|
4
|
-
// copied verbatim from the IDE's `stories/Data`;
|
|
5
|
-
// - the IDE's `_tests*` helpers are inlined with `@storybook/test` primitives;
|
|
6
|
-
// - the expression catalogue for the function stories is `mockExpressions`
|
|
7
|
-
// plus local `substr` / `PLUS-INT` entries (the IDE relies on the live
|
|
8
|
-
// server catalogue) passed via the `expressions` prop;
|
|
9
|
-
// - the IDE's leaf story components (`LongStringField`, `Number`, `string`)
|
|
10
|
-
// are local 2-arg wrappers over reqraft's leaf fields, `auto` is the ported
|
|
11
|
-
// `AutoFormField`.
|
|
12
|
-
import { Meta, StoryObj } from '@storybook/react-vite';
|
|
13
|
-
import { expect, fireEvent, fn, screen, userEvent, waitFor, within } from 'storybook/test';
|
|
14
|
-
import { useState } from 'react';
|
|
15
|
-
import { buildTemplates } from '../../../../helpers/templates';
|
|
16
|
-
import { mockExpressions } from '../../expressions/mockExpressions';
|
|
17
|
-
import { IExpressionSchema } from '../../expressions/types';
|
|
18
|
-
import { AutoFormField as auto } from '../auto/AutoFormField';
|
|
19
|
-
import LongStringFormField from '../long-string/LongString';
|
|
20
|
-
import NumberFormField from '../number/Number';
|
|
21
|
-
import { StringFormField } from '../string/String';
|
|
22
|
-
import { LONG_EXAMPLE_VALUE } from './__fixtures__/longExampleValue';
|
|
23
|
-
import { TemplateField } from './TemplateField';
|
|
24
|
-
import multiLevelTemplates from './__fixtures__/multiLevelTemplates.json';
|
|
25
|
-
import templates from './__fixtures__/templates.json';
|
|
26
|
-
|
|
27
|
-
// --- IDE leaf story components (2-arg field API over reqraft leafs) ---------
|
|
28
|
-
|
|
29
|
-
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
30
|
-
const LongStringField = ({ name, onChange, type, level, allowTemplates, ...rest }: any) => (
|
|
31
|
-
<LongStringFormField {...rest} onChange={(value: string) => onChange?.(name, value)} />
|
|
32
|
-
);
|
|
33
|
-
const Number = ({ name, onChange, type, level, allowTemplates, ...rest }: any) => (
|
|
34
|
-
<NumberFormField {...rest} onChange={(value: number | string) => onChange?.(name, value)} />
|
|
35
|
-
);
|
|
36
|
-
const string = ({ name, onChange, type, level, allowTemplates, ...rest }: any) => (
|
|
37
|
-
<StringFormField {...rest} onChange={(value: string) => onChange?.(name, value)} />
|
|
38
|
-
);
|
|
39
|
-
/* eslint-enable @typescript-eslint/no-unused-vars */
|
|
40
|
-
|
|
41
|
-
// --- expression catalogue for the function stories ---------------------------
|
|
42
|
-
// `substr` / `PLUS-INT` match the server schema shape used by the IDE stories.
|
|
43
|
-
|
|
44
|
-
const storyExpressions: IExpressionSchema[] = [
|
|
45
|
-
...mockExpressions,
|
|
46
|
-
{
|
|
47
|
-
name: 'substr',
|
|
48
|
-
display_name: 'Substring',
|
|
49
|
-
short_desc: 'Returns a substring of the given string',
|
|
50
|
-
desc: 'Returns a substring of the given string from the start position with the given length.',
|
|
51
|
-
symbol: 'substr',
|
|
52
|
-
type: 1,
|
|
53
|
-
subtype: 1,
|
|
54
|
-
return_type: 'string',
|
|
55
|
-
ui_return_type: 'string',
|
|
56
|
-
varargs: false,
|
|
57
|
-
groups: ['String'],
|
|
58
|
-
args: [
|
|
59
|
-
{ name: 'softstring', display_name: 'String', ui_type: 'richtext', required: true },
|
|
60
|
-
{ name: 'int', display_name: 'Start', ui_type: 'int', required: true },
|
|
61
|
-
{ name: 'int', display_name: 'Length', ui_type: 'int', required: false },
|
|
62
|
-
],
|
|
63
|
-
} as IExpressionSchema,
|
|
64
|
-
{
|
|
65
|
-
name: 'PLUS-INT',
|
|
66
|
-
display_name: 'Plus',
|
|
67
|
-
short_desc: 'Adds two integers',
|
|
68
|
-
desc: 'Adds two integers.',
|
|
69
|
-
symbol: '+',
|
|
70
|
-
type: 1,
|
|
71
|
-
subtype: 1,
|
|
72
|
-
return_type: 'int',
|
|
73
|
-
ui_return_type: 'int',
|
|
74
|
-
varargs: false,
|
|
75
|
-
groups: ['Math'],
|
|
76
|
-
args: [
|
|
77
|
-
{ name: 'int', display_name: 'Value', ui_type: 'int', required: true },
|
|
78
|
-
{ name: 'int', display_name: 'Value', ui_type: 'int', required: true },
|
|
79
|
-
],
|
|
80
|
-
} as IExpressionSchema,
|
|
81
|
-
];
|
|
82
|
-
|
|
83
|
-
// --- inlined test helpers (equivalents of the IDE `../Tests/utils`) ---------
|
|
84
|
-
|
|
85
|
-
const sleep = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
86
|
-
|
|
87
|
-
async function _testsClickButton({
|
|
88
|
-
label,
|
|
89
|
-
selector,
|
|
90
|
-
nth = 0,
|
|
91
|
-
wait = 7000,
|
|
92
|
-
parent = '.reqore-button',
|
|
93
|
-
}: {
|
|
94
|
-
label?: string;
|
|
95
|
-
selector?: string;
|
|
96
|
-
nth?: number;
|
|
97
|
-
wait?: number;
|
|
98
|
-
parent?: string;
|
|
99
|
-
}) {
|
|
100
|
-
if (!label) {
|
|
101
|
-
await waitFor(() => expect(document.querySelectorAll(selector)[nth]).toBeInTheDocument(), {
|
|
102
|
-
timeout: wait,
|
|
103
|
-
});
|
|
104
|
-
await waitFor(() => expect(document.querySelectorAll(selector)[nth]).toBeEnabled(), {
|
|
105
|
-
timeout: wait,
|
|
106
|
-
});
|
|
107
|
-
await userEvent.click(document.querySelectorAll(selector)[nth]);
|
|
108
|
-
} else {
|
|
109
|
-
await waitFor(() => expect(screen.queryAllByText(label, { selector })[nth]).toBeInTheDocument(), {
|
|
110
|
-
timeout: wait,
|
|
111
|
-
});
|
|
112
|
-
await waitFor(
|
|
113
|
-
() => expect(screen.queryAllByText(label, { selector })[nth].closest(parent)).toBeEnabled(),
|
|
114
|
-
{ timeout: wait }
|
|
115
|
-
);
|
|
116
|
-
await userEvent.click(screen.queryAllByText(label, { selector })[nth]);
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
async function _testsWaitForText(
|
|
121
|
-
text: string | number | RegExp,
|
|
122
|
-
selector?: string,
|
|
123
|
-
nth: number = 1,
|
|
124
|
-
exist: boolean = true
|
|
125
|
-
) {
|
|
126
|
-
await waitFor(
|
|
127
|
-
() => {
|
|
128
|
-
const element = screen.queryAllByText(text, { selector })[nth - 1];
|
|
129
|
-
|
|
130
|
-
if (!exist && !element) {
|
|
131
|
-
return Promise.resolve();
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
return expect(element).toBeInTheDocument();
|
|
135
|
-
},
|
|
136
|
-
{ timeout: 10000 }
|
|
137
|
-
);
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
async function _testsWaitForTextToNotExist(text: string, selector?: string, nth: number = 1) {
|
|
141
|
-
await _testsWaitForText(text, selector, nth, false);
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
async function _testsOpenTemplateMenu(nth: number = 1) {
|
|
145
|
-
await _testsClickButton({ selector: '.template-more', nth: nth - 1 });
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
async function _testsSetTemplate(nth: number = 1) {
|
|
149
|
-
await _testsOpenTemplateMenu(nth);
|
|
150
|
-
await _testsClickButton({ selector: '.template-toggle' });
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
async function _testsOpenTemplates(nth: number = 1) {
|
|
154
|
-
await waitFor(
|
|
155
|
-
async () => {
|
|
156
|
-
await expect(
|
|
157
|
-
document.querySelectorAll('.template-selector.reqore-control')[nth - 1]
|
|
158
|
-
).toBeInTheDocument();
|
|
159
|
-
},
|
|
160
|
-
{ timeout: 10000 }
|
|
161
|
-
);
|
|
162
|
-
|
|
163
|
-
// IDE-verbatim settle (stories/Tests/utils.ts): ReQore's textarea focus
|
|
164
|
-
// handler needs a beat before the selector click lands — no deterministic
|
|
165
|
-
// DOM signal to waitFor on.
|
|
166
|
-
await sleep(1500);
|
|
167
|
-
|
|
168
|
-
await _testsClickButton({
|
|
169
|
-
selector: '.template-selector.reqore-control',
|
|
170
|
-
wait: 15000,
|
|
171
|
-
nth: nth - 1,
|
|
172
|
-
});
|
|
173
|
-
|
|
174
|
-
await waitFor(
|
|
175
|
-
() => expect(document.querySelector('.reqore-popover-content')).toBeInTheDocument(),
|
|
176
|
-
{ timeout: 10000 }
|
|
177
|
-
);
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
// -----------------------------------------------------------------------------
|
|
181
|
-
|
|
182
|
-
const meta = {
|
|
183
|
-
component: TemplateField,
|
|
184
|
-
title: 'Components/Form/Template',
|
|
185
|
-
args: {
|
|
186
|
-
templates: buildTemplates(templates as any),
|
|
187
|
-
onChange: fn(),
|
|
188
|
-
},
|
|
189
|
-
render: (args) => {
|
|
190
|
-
const [value, setValue] = useState(args.value);
|
|
191
|
-
|
|
192
|
-
return (
|
|
193
|
-
<TemplateField
|
|
194
|
-
{...args}
|
|
195
|
-
value={value}
|
|
196
|
-
onChange={(name, value) => {
|
|
197
|
-
args.onChange(name, value);
|
|
198
|
-
setValue(value);
|
|
199
|
-
}}
|
|
200
|
-
/>
|
|
201
|
-
);
|
|
202
|
-
},
|
|
203
|
-
} as Meta<typeof TemplateField>;
|
|
204
|
-
|
|
205
|
-
export default meta;
|
|
206
|
-
|
|
207
|
-
export const StringComponent: StoryObj<typeof meta> = {
|
|
208
|
-
args: {
|
|
209
|
-
component: LongStringField,
|
|
210
|
-
value: 'Some string',
|
|
211
|
-
type: 'string',
|
|
212
|
-
},
|
|
213
|
-
parameters: {
|
|
214
|
-
docs: {
|
|
215
|
-
description: {
|
|
216
|
-
story:
|
|
217
|
-
'Renders TemplateField wrapping a LongString component with a plain string value — the field shows the literal string in a textarea, no template selected.',
|
|
218
|
-
},
|
|
219
|
-
},
|
|
220
|
-
},
|
|
221
|
-
};
|
|
222
|
-
|
|
223
|
-
export const BooleanComponent: StoryObj<typeof meta> = {
|
|
224
|
-
args: {
|
|
225
|
-
value: true,
|
|
226
|
-
type: 'boolean',
|
|
227
|
-
allowTemplates: true,
|
|
228
|
-
componentFromType: true,
|
|
229
|
-
},
|
|
230
|
-
parameters: {
|
|
231
|
-
docs: {
|
|
232
|
-
description: {
|
|
233
|
-
story:
|
|
234
|
-
'Renders TemplateField for a boolean value with templates allowed — the boolean toggle is shown with the template toggle available on the side.',
|
|
235
|
-
},
|
|
236
|
-
},
|
|
237
|
-
},
|
|
238
|
-
};
|
|
239
|
-
|
|
240
|
-
export const NumberComponent: StoryObj<typeof meta> = {
|
|
241
|
-
args: {
|
|
242
|
-
value: 25,
|
|
243
|
-
type: 'int',
|
|
244
|
-
allowTemplates: true,
|
|
245
|
-
componentFromType: true,
|
|
246
|
-
},
|
|
247
|
-
parameters: {
|
|
248
|
-
docs: {
|
|
249
|
-
description: {
|
|
250
|
-
story:
|
|
251
|
-
'Renders TemplateField for an int value of 25 with templates allowed — the numeric input is shown alongside the template toggle.',
|
|
252
|
-
},
|
|
253
|
-
},
|
|
254
|
-
},
|
|
255
|
-
};
|
|
256
|
-
|
|
257
|
-
export const AutoComponent: StoryObj<typeof meta> = {
|
|
258
|
-
args: {
|
|
259
|
-
defaultType: 'auto',
|
|
260
|
-
allowTemplates: true,
|
|
261
|
-
component: auto,
|
|
262
|
-
},
|
|
263
|
-
parameters: {
|
|
264
|
-
docs: {
|
|
265
|
-
description: {
|
|
266
|
-
story:
|
|
267
|
-
'Renders TemplateField over an untyped (`auto`) field that accepts templates. While the field is empty it opens on an editor to type into, which offers the templates — never on a data-type picker, so the author can write the value they mean without answering how it is stored.',
|
|
268
|
-
},
|
|
269
|
-
},
|
|
270
|
-
},
|
|
271
|
-
play: async ({ canvasElement }) => {
|
|
272
|
-
/* The editor itself, not a class: TemplateField puts `.template-selector`
|
|
273
|
-
on every control it draws, the data-type picker included, so asserting
|
|
274
|
-
the class passed while the story showed "Please select data type". */
|
|
275
|
-
await waitFor(() => expect(canvasElement.querySelector('[contenteditable="true"]')).toBeTruthy(), {
|
|
276
|
-
timeout: 5000,
|
|
277
|
-
});
|
|
278
|
-
expect(canvasElement.textContent).not.toContain('Please select data type');
|
|
279
|
-
expect(canvasElement.textContent).not.toContain('Select Template');
|
|
280
|
-
},
|
|
281
|
-
};
|
|
282
|
-
|
|
283
|
-
export const AllowedValuesWithTemplate: StoryObj<typeof meta> = {
|
|
284
|
-
args: {
|
|
285
|
-
defaultType: 'string',
|
|
286
|
-
allowTemplates: true,
|
|
287
|
-
allowed_values: [
|
|
288
|
-
{
|
|
289
|
-
value: { type: 'string', value: 'Test' },
|
|
290
|
-
display_name: 'Test',
|
|
291
|
-
},
|
|
292
|
-
],
|
|
293
|
-
component: auto,
|
|
294
|
-
},
|
|
295
|
-
parameters: {
|
|
296
|
-
docs: {
|
|
297
|
-
description: {
|
|
298
|
-
story:
|
|
299
|
-
'Renders TemplateField restricted to a single allowed value ("Test") but with templates also allowed — the operator can pick the allowed value or switch to a template.',
|
|
300
|
-
},
|
|
301
|
-
},
|
|
302
|
-
},
|
|
303
|
-
};
|
|
304
|
-
|
|
305
|
-
export const TemplateValue: StoryObj<typeof meta> = {
|
|
306
|
-
args: {
|
|
307
|
-
component: Number,
|
|
308
|
-
type: 'int',
|
|
309
|
-
value: '$local:id',
|
|
310
|
-
},
|
|
311
|
-
parameters: {
|
|
312
|
-
docs: {
|
|
313
|
-
description: {
|
|
314
|
-
story:
|
|
315
|
-
'Renders TemplateField for an int wrapped over the Number component with a template value ($local:id) — the template selector replaces the number input.',
|
|
316
|
-
},
|
|
317
|
-
},
|
|
318
|
-
},
|
|
319
|
-
};
|
|
320
|
-
|
|
321
|
-
/** REGRESSION — a rehydrated whole-token template value (the FSM state-output
|
|
322
|
-
* `$data:{…}` form above all) must render as the picker CHIP, not as its raw
|
|
323
|
-
* token text in a string editor. */
|
|
324
|
-
export const BracedTemplateValue: StoryObj<typeof meta> = {
|
|
325
|
-
args: {
|
|
326
|
-
component: LongStringField,
|
|
327
|
-
type: 'string',
|
|
328
|
-
allowTemplates: true,
|
|
329
|
-
allowCustomValues: true,
|
|
330
|
-
value: '$data:{W2n_BuSHbaNrbvV1MkfPF.filename}',
|
|
331
|
-
templates: buildTemplates({
|
|
332
|
-
state_outputs: {
|
|
333
|
-
display_name: 'Context Data',
|
|
334
|
-
short_desc: 'Outputs of previous states',
|
|
335
|
-
app: 'GoogleDrive',
|
|
336
|
-
items: [
|
|
337
|
-
{
|
|
338
|
-
name: 'filename',
|
|
339
|
-
display_name: 'Filename',
|
|
340
|
-
short_desc: 'The uploaded file name',
|
|
341
|
-
desc: 'The uploaded file name',
|
|
342
|
-
value: '$data:{W2n_BuSHbaNrbvV1MkfPF.filename}',
|
|
343
|
-
type: 'string',
|
|
344
|
-
},
|
|
345
|
-
],
|
|
346
|
-
},
|
|
347
|
-
} as any),
|
|
348
|
-
},
|
|
349
|
-
parameters: {
|
|
350
|
-
docs: {
|
|
351
|
-
description: {
|
|
352
|
-
story:
|
|
353
|
-
'Renders TemplateField for a string field whose saved value is a braced state-output reference ($data:{id.filename}) — the field shows the resolved picker chip ("Filename"), never the raw token in a textarea, which is what rehydrated drafts degraded to before the token grammar learned braces.',
|
|
354
|
-
},
|
|
355
|
-
},
|
|
356
|
-
},
|
|
357
|
-
play: async () => {
|
|
358
|
-
await waitFor(() => {
|
|
359
|
-
const chip = Array.from(document.querySelectorAll('.reqore-button')).find((button) =>
|
|
360
|
-
button.textContent?.includes('Filename')
|
|
361
|
-
);
|
|
362
|
-
expect(chip, 'the braced value renders as the labeled picker chip').toBeTruthy();
|
|
363
|
-
});
|
|
364
|
-
const rawTextareas = Array.from(document.querySelectorAll('textarea')).filter((textarea) =>
|
|
365
|
-
textarea.value.includes('$data:{')
|
|
366
|
-
);
|
|
367
|
-
expect(rawTextareas, 'no textarea holds the raw token').toHaveLength(0);
|
|
368
|
-
},
|
|
369
|
-
};
|
|
370
|
-
|
|
371
|
-
/** A template-authored Qog keys its states `'1'`, `'2'`, … while each state
|
|
372
|
-
* carries its own id, and its saved `$data:{…}` refs use that id — so the
|
|
373
|
-
* catalogue (spelled with the key) and the value (spelled with the id) never
|
|
374
|
-
* match as text. The producer supplies the alternate spelling as an alias so
|
|
375
|
-
* the chip still resolves to a name instead of printing the raw token. */
|
|
376
|
-
export const AliasedStateTemplateValue: StoryObj<typeof meta> = {
|
|
377
|
-
args: {
|
|
378
|
-
component: LongStringField,
|
|
379
|
-
type: 'string',
|
|
380
|
-
allowTemplates: true,
|
|
381
|
-
allowCustomValues: true,
|
|
382
|
-
// what the Qog has saved — the state's own id
|
|
383
|
-
value: '$data:{dc_ai_reply.choices}',
|
|
384
|
-
templates: {
|
|
385
|
-
items: [
|
|
386
|
-
{
|
|
387
|
-
label: 'Generate AI Reply',
|
|
388
|
-
description: 'Outputs of the Groq chat-completion state',
|
|
389
|
-
items: [
|
|
390
|
-
{
|
|
391
|
-
label: 'Choices',
|
|
392
|
-
// what the server's catalogue offers — the states-hash key
|
|
393
|
-
value: '$data:{3.choices}',
|
|
394
|
-
badge: 'list',
|
|
395
|
-
metadata: { aliasValues: ['$data:{dc_ai_reply.choices}'] },
|
|
396
|
-
},
|
|
397
|
-
],
|
|
398
|
-
},
|
|
399
|
-
],
|
|
400
|
-
} as any,
|
|
401
|
-
},
|
|
402
|
-
parameters: {
|
|
403
|
-
docs: {
|
|
404
|
-
description: {
|
|
405
|
-
story:
|
|
406
|
-
'Renders TemplateField holding a state-output reference spelled with the state id ($data:{dc_ai_reply.choices}) while the catalogue offers the same item spelled with the states-hash key ($data:{3.choices}) — the chip resolves through the item alias and shows "Choices", where it used to print the raw token.',
|
|
407
|
-
},
|
|
408
|
-
},
|
|
409
|
-
},
|
|
410
|
-
play: async () => {
|
|
411
|
-
await waitFor(() => {
|
|
412
|
-
const chip = Array.from(document.querySelectorAll('.reqore-button')).find((button) =>
|
|
413
|
-
button.textContent?.includes('Choices')
|
|
414
|
-
);
|
|
415
|
-
expect(chip, 'the aliased value resolves to the labeled picker chip').toBeTruthy();
|
|
416
|
-
});
|
|
417
|
-
const rawChips = Array.from(document.querySelectorAll('.reqore-button')).filter((button) =>
|
|
418
|
-
button.textContent?.includes('$data:{')
|
|
419
|
-
);
|
|
420
|
-
expect(rawChips, 'no chip prints the raw token').toHaveLength(0);
|
|
421
|
-
},
|
|
422
|
-
};
|
|
423
|
-
|
|
424
|
-
/** A catalogue can only offer what the action's output type declares, so it
|
|
425
|
-
* stops at a list — `choices` is offered, `choices[0].message.content` is
|
|
426
|
-
* hand-written past it. Such a value has no item of its own and used to
|
|
427
|
-
* render as its raw token; it is now named after its nearest ancestor. */
|
|
428
|
-
export const ExtendedPathTemplateValue: StoryObj<typeof meta> = {
|
|
429
|
-
args: {
|
|
430
|
-
component: LongStringField,
|
|
431
|
-
type: 'string',
|
|
432
|
-
allowTemplates: true,
|
|
433
|
-
allowCustomValues: true,
|
|
434
|
-
value: '$data:{dc_ai_reply.choices[0].message.content}',
|
|
435
|
-
templates: {
|
|
436
|
-
items: [
|
|
437
|
-
{
|
|
438
|
-
label: 'Generate AI Reply',
|
|
439
|
-
items: [
|
|
440
|
-
{
|
|
441
|
-
label: 'Choices',
|
|
442
|
-
value: '$data:{3.choices}',
|
|
443
|
-
badge: 'list',
|
|
444
|
-
metadata: { aliasValues: ['$data:{dc_ai_reply.choices}'] },
|
|
445
|
-
},
|
|
446
|
-
],
|
|
447
|
-
},
|
|
448
|
-
],
|
|
449
|
-
} as any,
|
|
450
|
-
},
|
|
451
|
-
parameters: {
|
|
452
|
-
docs: {
|
|
453
|
-
description: {
|
|
454
|
-
story:
|
|
455
|
-
'Renders TemplateField holding a path extended past the named field it starts from ($data:{dc_ai_reply.choices[0].message.content}, where the catalogue only offers "choices") — the chip is named after its nearest ancestor as "Choices[0].message.content" instead of printing the raw token.',
|
|
456
|
-
},
|
|
457
|
-
},
|
|
458
|
-
},
|
|
459
|
-
play: async () => {
|
|
460
|
-
await waitFor(() => {
|
|
461
|
-
const chip = Array.from(document.querySelectorAll('.reqore-button')).find((button) =>
|
|
462
|
-
button.textContent?.includes('Choices[0].message.content')
|
|
463
|
-
);
|
|
464
|
-
expect(chip, 'the extended path is named after its ancestor').toBeTruthy();
|
|
465
|
-
});
|
|
466
|
-
const rawChips = Array.from(document.querySelectorAll('.reqore-button')).filter((button) =>
|
|
467
|
-
button.textContent?.includes('$data:{')
|
|
468
|
-
);
|
|
469
|
-
expect(rawChips, 'no chip prints the raw token').toHaveLength(0);
|
|
470
|
-
},
|
|
471
|
-
};
|
|
472
|
-
|
|
473
|
-
export const ElementTypeInListShowsCorrectTemplates: StoryObj<typeof meta> = {
|
|
474
|
-
args: {
|
|
475
|
-
component: auto,
|
|
476
|
-
defaultType: 'list',
|
|
477
|
-
ui_element_type: 'number',
|
|
478
|
-
display_name: 'Test',
|
|
479
|
-
value: [
|
|
480
|
-
{ type: 'number', value: 1 },
|
|
481
|
-
{ type: 'number', value: 2 },
|
|
482
|
-
{ type: 'number', value: 3 },
|
|
483
|
-
],
|
|
484
|
-
},
|
|
485
|
-
parameters: {
|
|
486
|
-
docs: {
|
|
487
|
-
description: {
|
|
488
|
-
story:
|
|
489
|
-
'Renders TemplateField in list mode with three number items. Adding a new item and opening the templates popover shows the templates that resolve to the number element type.',
|
|
490
|
-
},
|
|
491
|
-
},
|
|
492
|
-
},
|
|
493
|
-
play: async () => {
|
|
494
|
-
await _testsClickButton({ label: 'Add new item for "Test"' });
|
|
495
|
-
await _testsOpenTemplates();
|
|
496
|
-
await _testsWaitForText('Interface ID');
|
|
497
|
-
},
|
|
498
|
-
};
|
|
499
|
-
|
|
500
|
-
export const ShowsTemplatesList: StoryObj<typeof meta> = {
|
|
501
|
-
...TemplateValue,
|
|
502
|
-
parameters: {
|
|
503
|
-
docs: {
|
|
504
|
-
description: {
|
|
505
|
-
story:
|
|
506
|
-
'Renders TemplateField with the $local:id template value, then opens the templates popover — the operator sees the available templates that resolve to an int.',
|
|
507
|
-
},
|
|
508
|
-
},
|
|
509
|
-
},
|
|
510
|
-
play: async () => {
|
|
511
|
-
await _testsOpenTemplates();
|
|
512
|
-
},
|
|
513
|
-
};
|
|
514
|
-
|
|
515
|
-
export const ShowsTemplatesListForString: StoryObj<typeof meta> = {
|
|
516
|
-
...StringComponent,
|
|
517
|
-
parameters: {
|
|
518
|
-
docs: {
|
|
519
|
-
description: {
|
|
520
|
-
story:
|
|
521
|
-
'Renders TemplateField over a LongString component with a plain string value, then opens the templates popover — the templates list is shown for a string target type.',
|
|
522
|
-
},
|
|
523
|
-
},
|
|
524
|
-
},
|
|
525
|
-
play: async () => {
|
|
526
|
-
await _testsOpenTemplates();
|
|
527
|
-
},
|
|
528
|
-
};
|
|
529
|
-
|
|
530
|
-
export const ShowsTemplatesListForBoolean: StoryObj<typeof meta> = {
|
|
531
|
-
...BooleanComponent,
|
|
532
|
-
parameters: {
|
|
533
|
-
docs: {
|
|
534
|
-
description: {
|
|
535
|
-
story:
|
|
536
|
-
'Renders TemplateField for a boolean value, switches to template mode and opens the templates popover — the templates list is shown for a boolean target type.',
|
|
537
|
-
},
|
|
538
|
-
},
|
|
539
|
-
},
|
|
540
|
-
play: async () => {
|
|
541
|
-
await _testsSetTemplate();
|
|
542
|
-
await _testsOpenTemplates();
|
|
543
|
-
},
|
|
544
|
-
};
|
|
545
|
-
|
|
546
|
-
export const ShowsTemplatesListForNumber: StoryObj<typeof meta> = {
|
|
547
|
-
...NumberComponent,
|
|
548
|
-
parameters: {
|
|
549
|
-
docs: {
|
|
550
|
-
description: {
|
|
551
|
-
story:
|
|
552
|
-
'Renders TemplateField for an int value, then opens the templates popover — the templates list is shown for an int target type.',
|
|
553
|
-
},
|
|
554
|
-
},
|
|
555
|
-
},
|
|
556
|
-
play: async () => {
|
|
557
|
-
await _testsOpenTemplates();
|
|
558
|
-
},
|
|
559
|
-
};
|
|
560
|
-
|
|
561
|
-
export const TemplateValueCanBeRemoved: StoryObj<typeof meta> = {
|
|
562
|
-
args: {
|
|
563
|
-
value: '$config:boolean',
|
|
564
|
-
type: 'boolean',
|
|
565
|
-
allowTemplates: true,
|
|
566
|
-
componentFromType: true,
|
|
567
|
-
},
|
|
568
|
-
parameters: {
|
|
569
|
-
docs: {
|
|
570
|
-
description: {
|
|
571
|
-
story:
|
|
572
|
-
'Renders TemplateField holding a $config:boolean template value. Clicking the template-remove action clears the template and the underlying boolean checkbox is shown instead.',
|
|
573
|
-
},
|
|
574
|
-
},
|
|
575
|
-
},
|
|
576
|
-
play: async () => {
|
|
577
|
-
await expect(document.querySelector('.template-selector')).toBeInTheDocument();
|
|
578
|
-
|
|
579
|
-
await fireEvent.click(document.querySelector('.template-remove'));
|
|
580
|
-
|
|
581
|
-
await expect(document.querySelector('.reqore-checkbox')).toBeInTheDocument();
|
|
582
|
-
},
|
|
583
|
-
};
|
|
584
|
-
|
|
585
|
-
export const TemplateWithFunctions: StoryObj<typeof meta> = {
|
|
586
|
-
args: {
|
|
587
|
-
allowFunctions: true,
|
|
588
|
-
type: 'string',
|
|
589
|
-
defaultType: 'string',
|
|
590
|
-
component: auto,
|
|
591
|
-
fixed: true,
|
|
592
|
-
fluid: false,
|
|
593
|
-
expressions: storyExpressions as any,
|
|
594
|
-
},
|
|
595
|
-
parameters: {
|
|
596
|
-
docs: {
|
|
597
|
-
description: {
|
|
598
|
-
story:
|
|
599
|
-
'Renders TemplateField with allowFunctions enabled — the template menu now exposes a "Use Expression" entry alongside the plain templates.',
|
|
600
|
-
},
|
|
601
|
-
},
|
|
602
|
-
},
|
|
603
|
-
play: async () => {
|
|
604
|
-
await _testsOpenTemplateMenu();
|
|
605
|
-
await _testsWaitForText('Use Expression');
|
|
606
|
-
},
|
|
607
|
-
};
|
|
608
|
-
|
|
609
|
-
export const TemplateWithFunctionValue: StoryObj<typeof meta> = {
|
|
610
|
-
args: {
|
|
611
|
-
allowFunctions: true,
|
|
612
|
-
isFunction: true,
|
|
613
|
-
value: {
|
|
614
|
-
exp: 'substr',
|
|
615
|
-
args: [
|
|
616
|
-
{ type: 'string', value: '$local:name' },
|
|
617
|
-
{ type: 'int', value: '$local:start' },
|
|
618
|
-
{ type: 'int', value: 10 },
|
|
619
|
-
],
|
|
620
|
-
},
|
|
621
|
-
type: 'string',
|
|
622
|
-
defaultType: 'string',
|
|
623
|
-
component: auto,
|
|
624
|
-
fixed: true,
|
|
625
|
-
fluid: false,
|
|
626
|
-
expressions: storyExpressions as any,
|
|
627
|
-
},
|
|
628
|
-
parameters: {
|
|
629
|
-
docs: {
|
|
630
|
-
description: {
|
|
631
|
-
story:
|
|
632
|
-
'Renders TemplateField holding a substr function value with three arguments — the expression builder shows the function name and each argument slot.',
|
|
633
|
-
},
|
|
634
|
-
},
|
|
635
|
-
},
|
|
636
|
-
};
|
|
637
|
-
|
|
638
|
-
export const TemplateWithNestedFunctionValue: StoryObj<typeof meta> = {
|
|
639
|
-
args: {
|
|
640
|
-
allowFunctions: true,
|
|
641
|
-
isFunction: true,
|
|
642
|
-
value: {
|
|
643
|
-
exp: 'substr',
|
|
644
|
-
args: [
|
|
645
|
-
{ type: 'string', value: '$local:name' },
|
|
646
|
-
{
|
|
647
|
-
type: 'int',
|
|
648
|
-
value: {
|
|
649
|
-
exp: 'PLUS-INT',
|
|
650
|
-
args: [
|
|
651
|
-
{ type: 'int', value: '$local:start' },
|
|
652
|
-
{ type: 'int', value: '5' },
|
|
653
|
-
],
|
|
654
|
-
},
|
|
655
|
-
is_expression: true,
|
|
656
|
-
},
|
|
657
|
-
{ type: 'int', value: 10 },
|
|
658
|
-
],
|
|
659
|
-
},
|
|
660
|
-
type: 'string',
|
|
661
|
-
defaultType: 'string',
|
|
662
|
-
component: auto,
|
|
663
|
-
fixed: true,
|
|
664
|
-
fluid: false,
|
|
665
|
-
expressions: storyExpressions as any,
|
|
666
|
-
},
|
|
667
|
-
parameters: {
|
|
668
|
-
docs: {
|
|
669
|
-
description: {
|
|
670
|
-
story:
|
|
671
|
-
'Renders TemplateField holding a substr function whose second argument is itself a PLUS-INT expression — the expression builder shows the nested function inline within the outer call.',
|
|
672
|
-
},
|
|
673
|
-
},
|
|
674
|
-
},
|
|
675
|
-
};
|
|
676
|
-
|
|
677
|
-
export const TemplateCanBeSelected: StoryObj<typeof meta> = {
|
|
678
|
-
args: {
|
|
679
|
-
type: 'string',
|
|
680
|
-
defaultType: 'string',
|
|
681
|
-
defaultInternalType: 'string',
|
|
682
|
-
},
|
|
683
|
-
parameters: {
|
|
684
|
-
docs: {
|
|
685
|
-
description: {
|
|
686
|
-
story:
|
|
687
|
-
'Renders TemplateField for a string, opens the templates popover and clicks the Interface ID template — the field switches to template mode, where the $local:id reference is a chip named Interface ID inside an editor that can still be typed into.',
|
|
688
|
-
},
|
|
689
|
-
},
|
|
690
|
-
},
|
|
691
|
-
play: async ({ canvasElement, ...rest }) => {
|
|
692
|
-
const canvas = within(canvasElement);
|
|
693
|
-
|
|
694
|
-
await ShowsTemplatesListForString.play({ canvasElement, ...rest });
|
|
695
|
-
await _testsClickButton({ label: 'Interface ID' });
|
|
696
|
-
|
|
697
|
-
// The chosen reference reads as the name it was chosen by, in an editor
|
|
698
|
-
// that can still be typed into — not as its spelling.
|
|
699
|
-
await waitFor(
|
|
700
|
-
() => {
|
|
701
|
-
const chip = canvasElement.querySelector('.template-selector [contenteditable="true"] .reqore-tag');
|
|
702
|
-
expect(chip?.textContent).toContain('Interface ID');
|
|
703
|
-
},
|
|
704
|
-
{ timeout: 5000 }
|
|
705
|
-
);
|
|
706
|
-
await expect(canvas.queryByDisplayValue('$local:id')).toBeNull();
|
|
707
|
-
},
|
|
708
|
-
};
|
|
709
|
-
|
|
710
|
-
export const ValueIsResetWhenChangingToCustom: StoryObj<typeof meta> = {
|
|
711
|
-
parameters: {
|
|
712
|
-
docs: {
|
|
713
|
-
description: {
|
|
714
|
-
story:
|
|
715
|
-
'Renders TemplateField over a number type holding a $config:something template value. Clicking template-remove resets the value to undefined and fires onChange with the cleared value.',
|
|
716
|
-
},
|
|
717
|
-
},
|
|
718
|
-
},
|
|
719
|
-
render: (args) => {
|
|
720
|
-
const [value, setValue] = useState(args.value);
|
|
721
|
-
|
|
722
|
-
return (
|
|
723
|
-
<TemplateField
|
|
724
|
-
{...args}
|
|
725
|
-
value={value}
|
|
726
|
-
onChange={(name, value) => {
|
|
727
|
-
args.onChange(name, value);
|
|
728
|
-
setValue(value);
|
|
729
|
-
}}
|
|
730
|
-
/>
|
|
731
|
-
);
|
|
732
|
-
},
|
|
733
|
-
args: {
|
|
734
|
-
component: string,
|
|
735
|
-
type: 'number',
|
|
736
|
-
value: '$config:something',
|
|
737
|
-
name: 'Test Field',
|
|
738
|
-
},
|
|
739
|
-
play: async ({ args }) => {
|
|
740
|
-
await waitFor(
|
|
741
|
-
async () => {
|
|
742
|
-
await expect(document.querySelector('.template-selector')).toBeInTheDocument();
|
|
743
|
-
},
|
|
744
|
-
{ timeout: 10000 }
|
|
745
|
-
);
|
|
746
|
-
|
|
747
|
-
await fireEvent.click(document.querySelectorAll('.template-remove')[0]);
|
|
748
|
-
await expect(args.onChange).toHaveBeenLastCalledWith('Test Field', undefined);
|
|
749
|
-
},
|
|
750
|
-
};
|
|
751
|
-
|
|
752
|
-
export const TemplatesWithMultipleLevels: StoryObj<typeof meta> = {
|
|
753
|
-
args: {
|
|
754
|
-
component: LongStringField,
|
|
755
|
-
type: 'string',
|
|
756
|
-
templates: buildTemplates(multiLevelTemplates as any),
|
|
757
|
-
},
|
|
758
|
-
parameters: {
|
|
759
|
-
docs: {
|
|
760
|
-
description: {
|
|
761
|
-
story:
|
|
762
|
-
'Renders TemplateField for a string with a hierarchical template catalogue. Drilling into "Testing Hash" narrows the list to templates that resolve to a string (Testing Int Item is filtered out).',
|
|
763
|
-
},
|
|
764
|
-
},
|
|
765
|
-
},
|
|
766
|
-
play: async () => {
|
|
767
|
-
await _testsOpenTemplates();
|
|
768
|
-
await _testsClickButton({ label: 'Testing Hash' });
|
|
769
|
-
await _testsWaitForText('Testing String Item');
|
|
770
|
-
await _testsWaitForTextToNotExist('Testing Int Item');
|
|
771
|
-
},
|
|
772
|
-
};
|
|
773
|
-
|
|
774
|
-
export const TemplatesWithMultipleLevelsAndHashField: StoryObj<typeof meta> = {
|
|
775
|
-
parameters: {
|
|
776
|
-
docs: {
|
|
777
|
-
description: {
|
|
778
|
-
story:
|
|
779
|
-
'Renders TemplateField for a hash type with a hierarchical template catalogue — switching to template mode and opening the popover exposes the nested template groups.',
|
|
780
|
-
},
|
|
781
|
-
},
|
|
782
|
-
},
|
|
783
|
-
render: (args) => {
|
|
784
|
-
const [value, setValue] = useState(args.value);
|
|
785
|
-
|
|
786
|
-
return (
|
|
787
|
-
<TemplateField
|
|
788
|
-
{...args}
|
|
789
|
-
value={value}
|
|
790
|
-
onChange={(name, value) => {
|
|
791
|
-
args.onChange(name, value);
|
|
792
|
-
setValue(value);
|
|
793
|
-
}}
|
|
794
|
-
/>
|
|
795
|
-
);
|
|
796
|
-
},
|
|
797
|
-
args: {
|
|
798
|
-
component: auto,
|
|
799
|
-
type: 'hash',
|
|
800
|
-
defaultType: 'hash',
|
|
801
|
-
templates: buildTemplates(multiLevelTemplates as any),
|
|
802
|
-
},
|
|
803
|
-
play: async () => {
|
|
804
|
-
await _testsSetTemplate();
|
|
805
|
-
await _testsOpenTemplates();
|
|
806
|
-
},
|
|
807
|
-
};
|
|
808
|
-
|
|
809
|
-
export const TemplateWithItemsCanBeSelected: StoryObj<typeof meta> = {
|
|
810
|
-
...TemplatesWithMultipleLevelsAndHashField,
|
|
811
|
-
parameters: {
|
|
812
|
-
docs: {
|
|
813
|
-
description: {
|
|
814
|
-
story:
|
|
815
|
-
'Renders TemplateField for a hash type with a hierarchical catalogue. Selecting an item from a nested group updates the template value to the picked entry (Testing Hash).',
|
|
816
|
-
},
|
|
817
|
-
},
|
|
818
|
-
},
|
|
819
|
-
play: async (args) => {
|
|
820
|
-
await TemplatesWithMultipleLevelsAndHashField.play(args);
|
|
821
|
-
await _testsClickButton({ selector: '.reqore-menu-item-left-action' });
|
|
822
|
-
await _testsWaitForText('Testing Hash');
|
|
823
|
-
},
|
|
824
|
-
};
|
|
825
|
-
|
|
826
|
-
/* One group, four items covering every affordance combination:
|
|
827
|
-
- "Attachment Body" — leaf, LONG example → "?" (right) only
|
|
828
|
-
- "Attachment Name" — leaf, short example → no actions at all
|
|
829
|
-
- "Message Author Props" — hash with children, LONG example (the whole
|
|
830
|
-
object) → BOTH: the "+" select action (left) and the "?" (right)
|
|
831
|
-
- "Delivery Flags" — hash with children, short example → "+" only
|
|
832
|
-
The sentinel at the very end proves truncation in the picker and
|
|
833
|
-
completeness in the modal. */
|
|
834
|
-
const longExampleTemplates = {
|
|
835
|
-
gmail_attachment: {
|
|
836
|
-
display_name: 'New Attachment',
|
|
837
|
-
short_desc: 'Data from the attachment trigger',
|
|
838
|
-
app: 'Gmail',
|
|
839
|
-
items: [
|
|
840
|
-
{
|
|
841
|
-
name: 'attachment_body',
|
|
842
|
-
display_name: 'Attachment Body',
|
|
843
|
-
value: '$data:{on_attachment.data}',
|
|
844
|
-
type: 'data',
|
|
845
|
-
example_value: LONG_EXAMPLE_VALUE,
|
|
846
|
-
},
|
|
847
|
-
{
|
|
848
|
-
name: 'attachment_name',
|
|
849
|
-
display_name: 'Attachment Name',
|
|
850
|
-
value: '$data:{on_attachment.name}',
|
|
851
|
-
type: 'string',
|
|
852
|
-
example_value: 'invoice.pdf',
|
|
853
|
-
},
|
|
854
|
-
{
|
|
855
|
-
name: 'author',
|
|
856
|
-
display_name: 'Message Author Properties',
|
|
857
|
-
value: '$data:{on_attachment.author}',
|
|
858
|
-
type: 'hash',
|
|
859
|
-
// A parent's example is the whole object, so it goes long almost by
|
|
860
|
-
// definition — this is the "+ AND ?" case.
|
|
861
|
-
example_value: {
|
|
862
|
-
name: 'Ada Lovelace',
|
|
863
|
-
email: 'ada@example.com',
|
|
864
|
-
signature: LONG_EXAMPLE_VALUE.slice(0, 600),
|
|
865
|
-
},
|
|
866
|
-
items: [
|
|
867
|
-
{
|
|
868
|
-
name: 'author_name',
|
|
869
|
-
display_name: 'Name',
|
|
870
|
-
value: '$data:{on_attachment.author.name}',
|
|
871
|
-
type: 'string',
|
|
872
|
-
example_value: 'Ada Lovelace',
|
|
873
|
-
},
|
|
874
|
-
{
|
|
875
|
-
name: 'author_email',
|
|
876
|
-
display_name: 'Email',
|
|
877
|
-
value: '$data:{on_attachment.author.email}',
|
|
878
|
-
type: 'string',
|
|
879
|
-
example_value: 'ada@example.com',
|
|
880
|
-
},
|
|
881
|
-
],
|
|
882
|
-
},
|
|
883
|
-
{
|
|
884
|
-
name: 'flags',
|
|
885
|
-
display_name: 'Delivery Flags',
|
|
886
|
-
value: '$data:{on_attachment.flags}',
|
|
887
|
-
type: 'hash',
|
|
888
|
-
// Small object: the serialized example stays under the preview
|
|
889
|
-
// threshold, so this parent keeps ONLY the "+" select action.
|
|
890
|
-
example_value: { read: true },
|
|
891
|
-
items: [
|
|
892
|
-
{
|
|
893
|
-
name: 'flags_read',
|
|
894
|
-
display_name: 'Read',
|
|
895
|
-
value: '$data:{on_attachment.flags.read}',
|
|
896
|
-
type: 'bool',
|
|
897
|
-
example_value: true,
|
|
898
|
-
},
|
|
899
|
-
],
|
|
900
|
-
},
|
|
901
|
-
],
|
|
902
|
-
},
|
|
903
|
-
};
|
|
904
|
-
|
|
905
|
-
export const LongExampleValueTruncatedWithModal: StoryObj<typeof meta> = {
|
|
906
|
-
args: {
|
|
907
|
-
component: LongStringField,
|
|
908
|
-
value: 'Some string',
|
|
909
|
-
type: 'string',
|
|
910
|
-
templates: buildTemplates(longExampleTemplates as any),
|
|
911
|
-
},
|
|
912
|
-
parameters: {
|
|
913
|
-
docs: {
|
|
914
|
-
description: {
|
|
915
|
-
story:
|
|
916
|
-
'Every item-affordance combination in one picker: a leaf with a whole-base64-file example gets a single-line ellipsized preview (cut at the popover\'s actual width — no breakpoints) and the "?" action (right) opening the full value in a modal; a hash parent whose own example object is long gets BOTH the "+" select action (left) and the "?"; a small hash parent keeps only the "+"; and a short leaf keeps its full wrapped preview with no actions. Neither previewing nor copying ever selects an item.',
|
|
917
|
-
},
|
|
918
|
-
},
|
|
919
|
-
},
|
|
920
|
-
play: async ({ args }) => {
|
|
921
|
-
await _testsOpenTemplates();
|
|
922
|
-
await _testsWaitForText('Attachment Body');
|
|
923
|
-
|
|
924
|
-
// The picker shows TRUNCATED previews — the long value's tail sentinel
|
|
925
|
-
// must not be in the popover…
|
|
926
|
-
const popover = document.querySelector('.reqore-popover-content');
|
|
927
|
-
await expect(popover.textContent).toContain('Example value: "JVBERi0x');
|
|
928
|
-
await expect(popover.textContent).not.toContain('THE_VERY_END');
|
|
929
|
-
|
|
930
|
-
// …and the affordances land exactly by shape: "?" on the long leaf AND
|
|
931
|
-
// the long-example hash parent (2), "+" on both hash parents (2) — the
|
|
932
|
-
// long-example parent carries both at once. The short leaf and the small
|
|
933
|
-
// parent's example stay modal-free.
|
|
934
|
-
await expect(popover.querySelectorAll('.reqore-menu-item-right-action').length).toBe(2);
|
|
935
|
-
await expect(popover.querySelectorAll('.reqore-menu-item-left-action').length).toBe(2);
|
|
936
|
-
|
|
937
|
-
// Long previews are single-line ellipsized at the RENDERED width
|
|
938
|
-
// (container-intrinsic — the same item adapts to any popover width);
|
|
939
|
-
// short previews keep normal wrapping.
|
|
940
|
-
const descriptions = popover.querySelectorAll('.reqore-button-description');
|
|
941
|
-
const longDescription = Array.from(descriptions).find((el) =>
|
|
942
|
-
el.textContent?.includes('JVBERi0x')
|
|
943
|
-
) as HTMLElement;
|
|
944
|
-
const shortDescription = Array.from(descriptions).find((el) =>
|
|
945
|
-
el.textContent?.includes('invoice.pdf')
|
|
946
|
-
) as HTMLElement;
|
|
947
|
-
await expect(getComputedStyle(longDescription).whiteSpace).toBe('nowrap');
|
|
948
|
-
await expect(longDescription.scrollWidth).toBeGreaterThan(longDescription.clientWidth);
|
|
949
|
-
await expect(getComputedStyle(shortDescription).whiteSpace).not.toBe('nowrap');
|
|
950
|
-
|
|
951
|
-
await _testsClickButton({ selector: '.reqore-menu-item-right-action' });
|
|
952
|
-
|
|
953
|
-
const modal = await waitFor(
|
|
954
|
-
() => {
|
|
955
|
-
const el = document.querySelector('.reqraft-template-example-value-modal');
|
|
956
|
-
if (!el) throw new Error('modal not open yet');
|
|
957
|
-
return el;
|
|
958
|
-
},
|
|
959
|
-
{ timeout: 10000 }
|
|
960
|
-
);
|
|
961
|
-
|
|
962
|
-
// The modal holds the WHOLE value, down to the sentinel.
|
|
963
|
-
const textarea = modal.querySelector('textarea') as HTMLTextAreaElement;
|
|
964
|
-
await expect(textarea.value.endsWith('THE_VERY_END"')).toBe(true);
|
|
965
|
-
|
|
966
|
-
// Close it; opening/previewing must never have selected the item.
|
|
967
|
-
fireEvent.click(modal.querySelector('.reqore-drawer-close-button'));
|
|
968
|
-
await waitFor(
|
|
969
|
-
() => {
|
|
970
|
-
if (document.querySelector('.reqraft-template-example-value-modal')) {
|
|
971
|
-
throw new Error('modal still open');
|
|
972
|
-
}
|
|
973
|
-
},
|
|
974
|
-
{ timeout: 10000 }
|
|
975
|
-
);
|
|
976
|
-
await expect(args.onChange).not.toHaveBeenCalled();
|
|
977
|
-
|
|
978
|
-
// End on the informative frame for the visual snapshot: the popover with
|
|
979
|
-
// the truncated preview and its "?" action visible (the assertions above
|
|
980
|
-
// close everything, which would leave the capture showing an empty field).
|
|
981
|
-
await _testsOpenTemplates();
|
|
982
|
-
await _testsWaitForText('Attachment Body');
|
|
983
|
-
},
|
|
984
|
-
};
|
|
985
|
-
|
|
986
|
-
/**
|
|
987
|
-
* An EMPTY `any` field opens on the template selector, not the type picker.
|
|
988
|
-
*
|
|
989
|
-
* An `any` field has no editor of its own until a concrete type is chosen, so it
|
|
990
|
-
* used to open on the type picker — making the author answer a question about
|
|
991
|
-
* storage ("Text or Number?") before they could say what they meant, and often a
|
|
992
|
-
* question they cannot answer, because the value they want is a reference to
|
|
993
|
-
* something else whose type is not theirs to pick.
|
|
994
|
-
*
|
|
995
|
-
* The literal is still one menu item away: "Set Custom Value" in the ⋮ menu.
|
|
996
|
-
* That is the right way round — picking a template is choosing from a list,
|
|
997
|
-
* picking a literal is a decision.
|
|
998
|
-
*/
|
|
999
|
-
export const EmptyAnyOpensOnTemplates: StoryObj<typeof meta> = {
|
|
1000
|
-
args: {
|
|
1001
|
-
component: auto,
|
|
1002
|
-
type: 'any',
|
|
1003
|
-
allowTemplates: true,
|
|
1004
|
-
allowCustomValues: true,
|
|
1005
|
-
value: undefined,
|
|
1006
|
-
},
|
|
1007
|
-
parameters: {
|
|
1008
|
-
docs: {
|
|
1009
|
-
description: {
|
|
1010
|
-
story:
|
|
1011
|
-
'An untyped, empty field that accepts templates opens on an editor to type into, which offers the templates — never on a data-type picker.',
|
|
1012
|
-
},
|
|
1013
|
-
},
|
|
1014
|
-
},
|
|
1015
|
-
play: async ({ canvasElement }) => {
|
|
1016
|
-
/* The editor itself, not a class: TemplateField puts `.template-selector`
|
|
1017
|
-
on every control it draws, the data-type picker included, so asserting
|
|
1018
|
-
the class passed while the story showed "Please select data type". */
|
|
1019
|
-
await waitFor(() => expect(canvasElement.querySelector('[contenteditable="true"]')).toBeTruthy(), {
|
|
1020
|
-
timeout: 5000,
|
|
1021
|
-
});
|
|
1022
|
-
expect(canvasElement.textContent).not.toContain('Please select data type');
|
|
1023
|
-
expect(canvasElement.textContent).not.toContain('Select Template');
|
|
1024
|
-
},
|
|
1025
|
-
};
|
|
1026
|
-
|
|
1027
|
-
/** A string mixing text with template references, as template mode edits it. */
|
|
1028
|
-
const templateReferencesInText: StoryObj<typeof meta> = {
|
|
1029
|
-
args: {
|
|
1030
|
-
type: 'string',
|
|
1031
|
-
defaultType: 'string',
|
|
1032
|
-
defaultInternalType: 'string',
|
|
1033
|
-
value: 'Interface $local:id failed at $timestamp:now',
|
|
1034
|
-
},
|
|
1035
|
-
play: async ({ canvasElement }) => {
|
|
1036
|
-
const editor = await waitFor(
|
|
1037
|
-
() => {
|
|
1038
|
-
const element = canvasElement.querySelector<HTMLElement>('.template-selector [contenteditable="true"]');
|
|
1039
|
-
expect(element).toBeTruthy();
|
|
1040
|
-
return element!;
|
|
1041
|
-
},
|
|
1042
|
-
{ timeout: 5000 }
|
|
1043
|
-
);
|
|
1044
|
-
// Each reference is its catalogue name; the text between them is untouched.
|
|
1045
|
-
await waitFor(() =>
|
|
1046
|
-
expect(Array.from(editor.querySelectorAll('.reqore-tag')).map((chip) => chip.textContent?.trim())).toEqual([
|
|
1047
|
-
'Interface ID',
|
|
1048
|
-
'Current Timestamp',
|
|
1049
|
-
])
|
|
1050
|
-
);
|
|
1051
|
-
expect(editor.textContent).toContain('failed at');
|
|
1052
|
-
expect(editor.textContent).not.toContain('$local:id');
|
|
1053
|
-
},
|
|
1054
|
-
};
|
|
1055
|
-
|
|
1056
|
-
export const TemplateReferencesInText: StoryObj<typeof meta> = {
|
|
1057
|
-
...templateReferencesInText,
|
|
1058
|
-
parameters: {
|
|
1059
|
-
docs: {
|
|
1060
|
-
description: {
|
|
1061
|
-
story:
|
|
1062
|
-
'Renders TemplateField holding the string "Interface $local:id failed at $timestamp:now". Template mode draws each reference as a chip named from the catalogue (Interface ID, Current Timestamp) inside an editor that can still be typed into; the text between them reads as typed.',
|
|
1063
|
-
},
|
|
1064
|
-
},
|
|
1065
|
-
},
|
|
1066
|
-
};
|
|
1067
|
-
|
|
1068
|
-
export const TemplateReferencesInTextOnPhone: StoryObj<typeof meta> = {
|
|
1069
|
-
...templateReferencesInText,
|
|
1070
|
-
parameters: {
|
|
1071
|
-
qlip: { viewport: { width: 390, height: 844 } },
|
|
1072
|
-
docs: {
|
|
1073
|
-
description: {
|
|
1074
|
-
story:
|
|
1075
|
-
'Renders the same string with two template references at phone width (390px): the named chips and the text around them wrap inside the editor rather than overflowing it.',
|
|
1076
|
-
},
|
|
1077
|
-
},
|
|
1078
|
-
},
|
|
1079
|
-
};
|
|
1080
|
-
|
|
1081
|
-
/**
|
|
1082
|
-
* An `any` field that ALREADY HOLDS A LITERAL opens on that literal.
|
|
1083
|
-
*
|
|
1084
|
-
* The other half of the same choice, and the one that keeps it safe: defaulting
|
|
1085
|
-
* to the template view unconditionally would hide a value the author had already
|
|
1086
|
-
* typed, which reads as the value having been lost.
|
|
1087
|
-
*/
|
|
1088
|
-
export const AnyWithLiteralOpensOnTheValue: StoryObj<typeof meta> = {
|
|
1089
|
-
args: {
|
|
1090
|
-
component: auto,
|
|
1091
|
-
type: 'any',
|
|
1092
|
-
allowTemplates: true,
|
|
1093
|
-
allowCustomValues: true,
|
|
1094
|
-
value: 'already-typed',
|
|
1095
|
-
},
|
|
1096
|
-
parameters: {
|
|
1097
|
-
docs: {
|
|
1098
|
-
description: {
|
|
1099
|
-
story:
|
|
1100
|
-
'An untyped field holding a literal keeps showing that literal — only an empty one defaults to the template selector. Where the field offers templates that editor is the chip editor (a contenteditable box), not a textarea, so the literal appears there.',
|
|
1101
|
-
},
|
|
1102
|
-
},
|
|
1103
|
-
},
|
|
1104
|
-
play: async ({ canvasElement }) => {
|
|
1105
|
-
// The property that matters is that the VALUE is still on screen. Asserting
|
|
1106
|
-
// the absence of `.template-selector` would be wrong: that class is also on
|
|
1107
|
-
// a control that renders either way, so it says nothing about which view is
|
|
1108
|
-
// active.
|
|
1109
|
-
await waitFor(() => {
|
|
1110
|
-
// Its editor may be a field or, where templates are offered, the chip editor.
|
|
1111
|
-
const shown = [
|
|
1112
|
-
...canvasElement.querySelectorAll<HTMLElement>('input, textarea, [contenteditable="true"]'),
|
|
1113
|
-
].map((el) =>
|
|
1114
|
-
el instanceof HTMLInputElement || el instanceof HTMLTextAreaElement ?
|
|
1115
|
-
el.value
|
|
1116
|
-
: (el.textContent ?? '').replace(/\uFEFF/g, '').trim()
|
|
1117
|
-
);
|
|
1118
|
-
expect(shown).toContain('already-typed');
|
|
1119
|
-
});
|
|
1120
|
-
},
|
|
1121
|
-
};
|