From 37a9348c75bc16c826907183c30cee5c318ba26f Mon Sep 17 00:00:00 2001 From: Andy Brown Date: Thu, 10 Sep 2020 17:55:23 -0700 Subject: [PATCH 1/7] refactor: rename plugins to extensions (#4075) * rename plugins to extensions where it makes sense * move packages out of extensions directory * rename extension to editor-extension * merge editor-extension and extension-client * fix type name * fix up remaining references to extensions directory * rename plugin-loader to extension * Aligned electron remote plugin dir with server remote plugin dir. * Fixed tests. * Typecheck fix Co-authored-by: Tony Anziano --- .github/CODEOWNERS | 2 + Composer/.dockerignore | 1 - Composer/Dockerfile | 6 +- Composer/README.md | 163 ------------------ Composer/TESTING.md | 2 +- Composer/jest.config.js | 8 +- Composer/package.json | 9 +- .../adaptive-flow/.eslintrc.js | 2 +- .../{extensions => }/adaptive-flow/.gitignore | 0 .../AdaptiveFlowEditor.test.tsx | 6 +- .../components/IconMenu.test.tsx | 0 .../components/KeyboardZone.test.tsx | 0 .../constants/ElementAttributes.test.tsx | 0 .../constants/KeyboardCommandTypes.test.ts | 0 .../constants/MenuTypes.test.ts | 0 .../constants/ScreenReaderMessage.test.ts | 0 .../constants/editorConfig.test.ts | 0 .../contexts/NodeRendererContext.test.tsx | 0 .../contexts/SelectionContext.test.tsx | 0 .../hooks/useEditorEventApi.test.ts | 0 .../renderers/EdgeMenu.test.tsx | 0 .../renderers/ElementWrapper.test.tsx | 0 .../renderers/NodeMenu.test.tsx | 0 .../renderers/NodeWrapper.test.tsx | 6 +- .../stubs/ShellApiStub.ts | 0 .../utils/NodeIndexGetter.test.ts | 0 .../utils/calculateRangeSelection.test.ts | 0 .../utils/cursorTracker/index.test.ts | 0 .../utils/cursorTracker/type.test.ts | 0 .../utils/getCustomSchema.test.ts | 0 .../mapKeyboardCommandToEditorEvent.test.ts | 0 .../utils/normalizeSelection.test.ts | 0 .../adaptive/AdaptiveDialog.test.tsx | 0 .../adaptive/AdaptiveTrigger.test.tsx | 0 .../components/ArrowLine.test.tsx | 0 .../components/Diamond.test.tsx | 0 .../components/ElementMeasurer.test.tsx | 0 .../components/FlowEdges.test.tsx | 0 .../components/IconBrick.test.tsx | 0 .../components/LoopIndicator.test.tsx | 0 .../components/OffsetContainer.test.tsx | 0 .../components/SVGContainer.test.tsx | 0 .../configs/builtinSchema.test.ts | 0 .../layouters/baseInputLayouter.test.ts | 0 .../layouters/calculateNodeBoundary.test.ts | 0 .../layouters/foreachLayouter.test.ts | 0 .../layouters/ifelseLayouter.test.ts | 0 .../layouters/measureJsonBoundary.test.ts | 0 .../layouters/sequentialLayouter.test.ts | 0 .../layouters/switchCaseLayouter.test.ts | 0 .../transformers/ObiTypes.test.ts | 0 .../transformers/todoBot.main.json | 0 .../transformers/transformForeach.test.ts | 0 .../transformers/transformIfCondition.test.ts | 0 .../transformers/transformObiRules.test.tsx | 0 .../transformers/transformRootDialog.test.ts | 0 .../transformers/transformStepGroup.test.ts | 0 .../transformSwitchCondition.test.ts | 0 .../utils/DesignerCache.test.ts | 0 .../utils/EdgeUtil.test.tsx | 0 .../utils/widgetRenderer.test.tsx | 2 +- .../widgets/ActionCard.test.tsx | 0 .../widgets/DialogRef.test.tsx | 0 .../widgets/ForeachWidget.test.tsx | 0 .../widgets/IfConditionWidget.test.tsx | 0 .../widgets/PromptWidget.test.tsx | 0 .../widgets/SwitchConditionWidget.test.tsx | 0 .../widgets/icon.test.tsx | 0 .../adaptive-flow/demo/index.html | 0 .../adaptive-flow/demo/readme.md | 0 .../demo/src/components/json-block/index.js | 0 .../adaptive-flow/demo/src/index.css | 0 .../adaptive-flow/demo/src/index.js | 0 .../adaptive-flow/demo/src/samples/index.js | 0 .../demo/src/samples/todo/AddToDo.json | 0 .../demo/src/samples/todo/ClearToDos.json | 0 .../demo/src/samples/todo/DeleteToDo.json | 0 .../demo/src/samples/todo/ShowToDos.json | 0 .../demo/src/samples/todo/ToDoBot.main.json | 0 .../demo/src/stories/EventsEditorDemo.js | 0 .../demo/src/stories/StepEditorDemo.css | 0 .../demo/src/stories/StepEditorDemo.js | 0 .../demo/src/stories/VisualEditorDemo.css | 0 .../demo/src/stories/VisualEditorDemo.js | 0 .../demo/src/stories/VisualSDKDemo.js | 0 .../adaptive-flow/demo/src/stories/story.css | 0 .../adaptive-flow/demo/tsconfig.json | 0 .../adaptive-flow/demo/webpack.config.demo.js | 0 .../adaptive-flow/jest.config.js | 0 .../adaptive-flow/package.json | 2 +- .../AdaptiveFlowEditor.tsx | 2 +- .../components/IconMenu.tsx | 0 .../components/KeyboardZone.ts | 0 .../constants/ElementAttributes.ts | 0 .../constants/KeyboardCommandTypes.ts | 0 .../constants/MenuTypes.ts | 0 .../constants/ScreenReaderMessage.ts | 0 .../constants/editorConfig.ts | 0 .../contexts/NodeRendererContext.ts | 0 .../contexts/SelectionContext.ts | 0 .../contexts/SelfHostContext.ts | 0 .../hooks/useEditorEventApi.ts | 2 +- .../hooks/useFlowUIOptions.ts | 2 +- .../hooks/useSelectionEffect.ts | 0 .../renderers/EdgeMenu/EdgeMenu.tsx | 2 +- .../renderers/EdgeMenu/createSchemaMenu.tsx | 2 +- .../renderers/EdgeMenu/defaultMenuOrder.ts | 0 .../renderers/EdgeMenu/index.tsx | 0 .../renderers/ElementWrapper.tsx | 0 .../renderers/NodeMenu.tsx | 0 .../renderers/NodeWrapper.tsx | 2 +- .../adaptive-flow-editor/renderers/index.tsx | 0 .../utils/NodeIndexGetter.ts | 0 .../utils/calculateRangeSelection.ts | 0 .../utils/cursorTracker/arrowMove.ts | 0 .../calculate/calculateBySchema.ts | 0 .../calculate/calculateByVector.ts | 0 .../utils/cursorTracker/index.ts | 0 .../utils/cursorTracker/locateElement.ts | 0 .../utils/cursorTracker/tabMove.ts | 0 .../utils/cursorTracker/type.ts | 0 .../utils/getCustomSchema.ts | 0 .../utils/mapKeyboardCommandToEditorEvent.ts | 0 .../utils/normalizeSelection.ts | 0 .../utils/scrollNodeIntoView.ts | 0 .../adaptive/AdaptiveDialog.tsx | 2 +- .../adaptive/AdaptiveTrigger.tsx | 0 .../components/ArrowLine.tsx | 0 .../components/Diamond.tsx | 0 .../components/ElementMeasurer.tsx | 0 .../components/FlowEdges.tsx | 0 .../components/IconBrick.tsx | 0 .../components/LoopIndicator.tsx | 0 .../components/OffsetContainer.tsx | 0 .../components/SVGContainer.tsx | 0 .../configs/builtinSchema.tsx | 0 .../configs/builtinWidgets.tsx | 2 +- .../constants/AdaptiveFieldNames.ts | 0 .../constants/AdaptiveKinds.ts | 0 .../constants/ElementColors.ts | 0 .../constants/ElementSizes.ts | 0 .../constants/NodeEventTypes.ts | 0 .../contexts/RendererContext.tsx | 0 .../contexts/SchemaContext.ts | 2 +- .../hooks/useSmartLayout.ts | 0 .../layouters/baseInputLayouter.ts | 0 .../layouters/calculateNodeBoundary.ts | 0 .../layouters/foreachLayouter.ts | 0 .../layouters/ifelseLayouter.ts | 0 .../layouters/measureJsonBoundary.ts | 0 .../layouters/sequentialLayouter.ts | 0 .../layouters/sharedLayouterUtils.ts | 0 .../layouters/switchCaseLayouter.ts | 0 .../adaptive-flow-renderer/models/Boundary.ts | 0 .../adaptive-flow-renderer/models/EdgeData.ts | 0 .../models/GraphLayout.ts | 0 .../models/GraphNode.ts | 0 .../models/IndexedNode.ts | 0 .../transformers/inheritParentProperty.ts | 0 .../transformers/transformBaseInput.ts | 0 .../transformers/transformForeach.ts | 0 .../transformers/transformIfCondition.ts | 0 .../transformers/transformObiRules.ts | 0 .../transformers/transformRootDialog.ts | 0 .../transformers/transformStepGroup.ts | 0 .../transformers/transformSwitchCondition.ts | 0 .../types/PluggableComponents.types.ts | 0 .../types/flowRenderer.types.ts | 0 .../adaptive-flow-renderer/types/nodeProps.ts | 0 .../utils/adaptive/outlineObiJson.ts | 0 .../utils/adaptive/stepBuilder.ts | 0 .../utils/visual/DesignerCache.ts | 0 .../utils/visual/EdgeUtil.tsx | 0 .../utils/visual/WidgetSchemaProvider.ts | 0 .../utils/visual/widgetRenderer.tsx | 2 +- .../widgets/ActionCard/ActionCard.tsx | 0 .../widgets/ActionCard/CardTemplate.tsx | 0 .../widgets/ActionCard/CardTemplateStyle.ts | 0 .../widgets/ActionCard/index.tsx | 0 .../widgets/ActionGroup.tsx | 0 .../widgets/ActionHeader/ActionHeader.tsx | 0 .../widgets/ActionHeader/ActionHeaderStyle.ts | 0 .../widgets/ActionHeader/icon.tsx | 0 .../widgets/ActionHeader/iconStyles.ts | 0 .../widgets/ActionHeader/index.tsx | 0 .../widgets/AdaptiveAction.tsx | 0 .../widgets/DialogRef.tsx | 0 .../widgets/ForeachWidget.tsx | 0 .../widgets/IfConditionWidget.tsx | 0 .../widgets/PromptWidget.tsx | 0 .../widgets/SwitchConditionWidget.tsx | 0 .../widgets/TriggerSummary/TriggerSummary.tsx | 0 .../widgets/TriggerSummary/index.tsx | 0 .../widgets/TriggerSummary/triggerStyles.ts | 0 .../adaptive-flow-renderer/widgets/index.ts | 0 .../widgets/styles/DisabledStyle.ts | 0 .../adaptive-flow/src/index.tsx | 0 .../adaptive-flow/tsconfig.build.json | 0 .../adaptive-flow/tsconfig.json | 2 +- .../adaptive-form/.eslintignore | 0 .../extension => adaptive-form}/.eslintrc.js | 2 +- .../{extensions => }/adaptive-form/.gitignore | 0 .../adaptive-form/jest.config.js | 0 .../adaptive-form/package.json | 4 +- .../src/components/AdaptiveForm.tsx | 2 +- .../src/components/CollapseField.tsx | 0 .../src/components/ErrorInfo.tsx | 0 .../src/components/ErrorMessage.tsx | 0 .../src/components/FieldLabel.tsx | 0 .../adaptive-form/src/components/FormRow.tsx | 2 +- .../src/components/FormTitle.tsx | 2 +- .../adaptive-form/src/components/Link.tsx | 0 .../src/components/LoadingTimeout.tsx | 0 .../src/components/SchemaField.tsx | 2 +- .../__tests__/ErrorMessage.test.tsx | 0 .../components/__tests__/FieldLabel.test.tsx | 0 .../src/components/__tests__/FormRow.test.tsx | 0 .../__tests__/LoadingTimeout.test.tsx | 0 .../components/__tests__/SchemaField.test.tsx | 4 +- .../src/components/fields/ArrayField.tsx | 2 +- .../src/components/fields/ArrayFieldItem.tsx | 2 +- .../src/components/fields/BooleanField.tsx | 2 +- .../src/components/fields/EditableField.tsx | 2 +- .../ExpressionField/ExpressionEditor.tsx | 2 +- .../ExpressionField/ExpressionField.tsx | 2 +- .../__tests__/ExpressionField.test.tsx | 0 .../ExpressionField/__tests__/utils.test.ts | 0 .../fields/ExpressionField/utils.ts | 2 +- .../components/fields/IntellisenseField.tsx | 2 +- .../src/components/fields/IntentField.tsx | 2 +- .../src/components/fields/JsonField.tsx | 2 +- .../src/components/fields/NumberField.tsx | 2 +- .../components/fields/ObjectArrayField.tsx | 2 +- .../src/components/fields/ObjectField.tsx | 2 +- .../fields/OneOfField/OneOfField.tsx | 2 +- .../OneOfField/__tests__/OneOfField.test.tsx | 0 .../fields/OneOfField/__tests__/utils.test.ts | 0 .../src/components/fields/OneOfField/index.ts | 0 .../src/components/fields/OneOfField/utils.ts | 2 +- .../fields/OpenObjectField/ObjectItem.tsx | 2 +- .../OpenObjectField/OpenObjectField.tsx | 2 +- .../__tests__/ObjectItem.test.tsx | 0 .../__tests__/OpenObjectField.test.tsx | 0 .../fields/OpenObjectField/index.ts | 0 .../fields/OpenObjectField/styles.ts | 0 .../src/components/fields/QnAActionsField.tsx | 2 +- .../src/components/fields/RecognizerField.tsx | 2 +- .../components/fields/RegexIntentField.tsx | 2 +- .../src/components/fields/SelectField.tsx | 2 +- .../src/components/fields/StringField.tsx | 2 +- .../components/fields/UnsupportedField.tsx | 2 +- .../fields/__tests__/ArrayField.test.tsx | 0 .../fields/__tests__/ArrayFieldItem.tsx | 0 .../fields/__tests__/BooleanField.test.tsx | 0 .../fields/__tests__/IntentField.test.tsx | 4 +- .../fields/__tests__/JsonField.test.tsx | 2 +- .../fields/__tests__/NumberField.test.tsx | 0 .../__tests__/ObjectArrayField.test.tsx | 4 +- .../fields/__tests__/ObjectField.test.tsx | 0 .../fields/__tests__/RecognizerField.test.tsx | 4 +- .../__tests__/RegexIntentField.test.tsx | 4 +- .../fields/__tests__/SelectField.test.tsx | 0 .../fields/__tests__/StringField.test.tsx | 0 .../__tests__/UnsupportedField.test.tsx | 0 .../components/fields/__tests__/testUtils.ts | 2 +- .../src/components/fields/index.ts | 0 .../src/components/fields/styles.ts | 0 .../adaptive-form/src/components/index.ts | 0 .../src/components/sharedStyles.ts | 0 .../adaptive-form/src/defaultRecognizers.ts | 2 +- .../adaptive-form/src/index.ts | 0 .../src/utils/__tests__/arrayUtils.test.ts | 0 .../__tests__/getOrderedProperties.test.ts | 0 .../src/utils/__tests__/getUIOptions.test.ts | 2 +- .../src/utils/__tests__/getValueType.test.ts | 0 .../src/utils/__tests__/objectUtils.test.ts | 0 .../__tests__/resolveFieldWidget.test.ts | 0 .../utils/__tests__/resolvePropSchema.test.ts | 0 .../src/utils/__tests__/resolveRef.test.ts | 0 .../utils/__tests__/uiOptionsHelpers.test.ts | 2 +- .../adaptive-form/src/utils/arrayUtils.ts | 2 +- .../src/utils/getHiddenProperties.ts | 2 +- .../src/utils/getIntellisenseUrl.ts | 0 .../src/utils/getOrderedProperties.ts | 2 +- .../adaptive-form/src/utils/getUIOptions.ts | 2 +- .../adaptive-form/src/utils/getValueType.ts | 0 .../adaptive-form/src/utils/index.ts | 0 .../adaptive-form/src/utils/objectUtils.ts | 2 +- .../src/utils/resolveFieldWidget.ts | 2 +- .../src/utils/resolvePropSchema.ts | 2 +- .../adaptive-form/src/utils/resolveRef.ts | 2 +- .../src/utils/uiOptionsHelpers.ts | 2 +- .../adaptive-form/tsconfig.build.json | 0 .../tsconfig.json | 2 +- Composer/packages/client/package.json | 2 +- Composer/packages/client/src/App.tsx | 4 +- .../client/src/pages/design/DesignPage.tsx | 10 +- .../src/pages/design/PropertyEditor.tsx | 2 +- .../design/exportSkillModal/constants.tsx | 2 +- .../exportSkillModal/content/Description.tsx | 2 +- .../exportSkillModal/content/Endpoints.tsx | 2 +- .../exportSkillModal/generateSkillManifest.ts | 2 +- .../pages/design/exportSkillModal/index.tsx | 2 +- .../client/src/pages/setting/SettingsPage.tsx | 4 +- .../Plugins.tsx => extensions/Extensions.tsx} | 72 ++++---- .../client/src/pages/setting/router.tsx | 4 +- Composer/packages/client/src/plugins.ts | 2 +- .../client/src/recoilModel/atoms/appState.ts | 6 +- .../src/recoilModel/dispatchers/extensions.ts | 92 ++++++++++ .../src/recoilModel/dispatchers/index.ts | 4 +- .../src/recoilModel/dispatchers/plugins.ts | 92 ---------- .../packages/client/src/recoilModel/types.ts | 7 +- Composer/packages/client/src/utils/hooks.ts | 8 +- Composer/packages/electron-server/src/main.ts | 2 +- .../.eslintrc.js | 2 +- .../.gitignore | 0 .../jest.config.js | 0 .../packages/extension-client/package.json | 30 ++++ .../src/EditorExtensionContext.ts} | 8 +- .../src/auth/index.ts | 0 .../src/auth/types.ts | 0 .../src/common/constants.ts | 0 .../src/common/index.ts | 4 +- .../src/components/EditorExtension.tsx} | 11 +- .../src/components/index.ts | 3 +- .../hooks/__tests__/useFlowConfig.test.tsx | 4 +- .../hooks/__tests__/useFormConfig.test.tsx | 4 +- .../hooks/__tests__/useMenuConfig.test.tsx | 4 +- .../__tests__/useRecognizerConfig.test.tsx | 4 +- .../src/hooks/index.ts | 0 .../src/hooks/useActionApi.ts | 0 .../src/hooks/useDebounce.ts | 0 .../src/hooks/useDialogApi.ts | 0 .../src/hooks/useDialogEditApi.ts | 0 .../src/hooks/useFlowConfig.ts | 4 +- .../src/hooks/useFormConfig.ts | 4 +- .../src/hooks/useLgApi.ts | 0 .../src/hooks/useLuApi.ts | 0 .../src/hooks/useMenuConfig.ts | 4 +- .../src/hooks/useRecognizerConfig.ts | 4 +- .../src/hooks/useShellApi.ts | 4 +- .../src/hooks/useTriggerApi.ts | 0 .../src/index.ts | 10 +- .../src/logger.ts | 2 +- .../src/page/index.ts | 0 .../src/publish/index.ts | 0 .../src/publish/types.ts | 0 .../src/types/extension.ts | 0 .../src/types/flowSchema.ts | 0 .../src/types/form.ts | 0 .../src/types/formSchema.ts | 0 .../src/types/index.ts | 0 .../src/types/menuSchema.ts | 0 .../__tests__/mergePluginConfigs.test.ts | 0 .../src/utils/index.ts | 0 .../src/utils/mergePluginConfigs.ts | 0 .../tsconfig.build.json | 0 .../tsconfig.json | 2 +- .../plugin-loader => extension}/.eslintrc.js | 2 +- .../plugin-loader => extension}/.gitignore | 0 .../plugin-loader => extension}/package.json | 2 +- .../plugin-loader => extension}/src/index.ts | 0 .../src/loader/composerPluginRegistration.ts | 0 .../src/loader/index.ts | 0 .../src/loader/pluginLoader.ts | 0 .../plugin-loader => extension}/src/logger.ts | 0 .../src/manager/index.ts | 0 .../src/manager/manager.ts | 6 +- .../src/storage/extensionManifestStore.ts | 0 .../src/storage/index.ts | 0 .../src/types/extension.ts | 0 .../src/types/types.ts | 0 .../tsconfig.json | 2 +- .../extensions/adaptive-form/tsconfig.json | 7 - .../extensions/client-plugin-lib/package.json | 21 --- .../extensions/client-plugin-lib/src/index.ts | 6 - .../extensions/extension/package.json | 31 ---- .../extensions/intellisense/.gitignore | 1 - .../extension => intellisense}/.gitignore | 0 .../intellisense/jest.config.js | 0 .../intellisense/package.json | 0 .../src/components/CompletionElement.tsx | 0 .../src/components/CompletionList.tsx | 0 .../src/components/IntellisenseTextField.tsx | 0 .../__tests__/IntellisenseTextField.test.tsx | 0 .../intellisense/src/components/index.ts | 0 .../src/hooks/useLanguageServer.ts | 0 .../src/utils/lspMessagesUtils.ts | 0 .../intellisense/src/utils/uiUtils.ts | 0 .../intellisense/tsconfig.build.json | 0 .../extension => intellisense}/tsconfig.json | 2 +- Composer/packages/lib/ui-shared/package.json | 4 +- .../__tests__/controllers/eject.test.ts | 4 +- .../__tests__/controllers/project.test.ts | 4 +- .../__tests__/controllers/publisher.test.ts | 2 +- .../models/asset/assetManager.test.ts | 4 +- Composer/packages/server/package.json | 2 +- .../packages/server/src/controllers/eject.ts | 2 +- .../controllers/{plugins.ts => extensions.ts} | 62 +++---- .../server/src/controllers/formDialog.ts | 2 +- .../server/src/controllers/project.ts | 2 +- .../server/src/controllers/publisher.ts | 2 +- .../server/src/controllers/storage.ts | 2 +- .../server/src/models/asset/assetManager.ts | 2 +- .../server/src/models/bot/botProject.ts | 2 +- .../models/settings/defaultSettingManager.ts | 2 +- .../src/models/settings/fileSettingManager.ts | 2 +- .../src/models/storage/storageFactory.ts | 2 +- Composer/packages/server/src/router/api.ts | 20 +-- Composer/packages/server/src/server.ts | 4 +- .../packages/server/src/services/project.ts | 2 +- .../packages/server/src/services/storage.ts | 2 +- .../packages/ui-plugins/composer/package.json | 4 +- .../composer/src/defaultMenuSchema.ts | 2 +- .../packages/ui-plugins/composer/src/index.ts | 2 +- .../ui-plugins/cross-trained/package.json | 4 +- .../ui-plugins/cross-trained/src/index.ts | 2 +- .../packages/ui-plugins/example/package.json | 4 +- .../packages/ui-plugins/example/src/index.ts | 2 +- Composer/packages/ui-plugins/lg/package.json | 4 +- .../packages/ui-plugins/lg/src/LgField.tsx | 2 +- .../ui-plugins/lg/src/LgWidget/LgWidget.tsx | 2 +- .../lg/src/LgWidget/useLgTemplate.ts | 2 +- Composer/packages/ui-plugins/lg/src/index.ts | 2 +- .../packages/ui-plugins/luis/package.json | 4 +- .../ui-plugins/luis/src/LuisIntentEditor.tsx | 2 +- .../packages/ui-plugins/luis/src/index.ts | 2 +- .../packages/ui-plugins/prompts/package.json | 6 +- .../prompts/src/PromptField/UserInput.tsx | 2 +- .../prompts/src/PromptField/index.tsx | 2 +- .../prompts/src/PromptField/types.ts | 2 +- .../packages/ui-plugins/prompts/src/index.tsx | 2 +- .../ui-plugins/schema-editor/package.json | 4 +- .../src/Fields/AdaptiveDialogField.tsx | 2 +- .../src/Fields/CollapsedField.tsx | 2 +- .../src/Fields/SchemaEditorField.tsx | 2 +- .../src/Fields/ValueRefField.tsx | 2 +- .../src/__tests__/SchemaEditorField.test.tsx | 6 +- .../schema-editor/src/formSchema.ts | 2 +- .../ui-plugins/schema-editor/src/index.ts | 2 +- .../ui-plugins/schema-editor/src/schema.ts | 2 +- .../ui-plugins/schema-editor/src/uiOptions.ts | 2 +- .../schema-editor/src/utils/getDefinitions.ts | 2 +- .../ui-plugins/select-dialog/package.json | 6 +- .../select-dialog/src/ComboBoxField.tsx | 2 +- .../select-dialog/src/SelectDialog.tsx | 2 +- .../src/__tests__/selectDialog.test.tsx | 6 +- .../ui-plugins/select-dialog/src/index.ts | 2 +- .../select-skill-dialog/package.json | 6 +- .../src/BeginSkillDialogField.tsx | 2 +- .../select-skill-dialog/src/ComboBoxField.tsx | 2 +- .../src/SelectSkillDialogField.tsx | 2 +- .../src/SkillEndpointField.tsx | 2 +- .../__tests__/BeginSkillDialogField.test.tsx | 6 +- .../src/__tests__/SelectSkillDialog.test.tsx | 6 +- .../select-skill-dialog/src/index.ts | 2 +- Composer/plugins/azurePublish/package.json | 4 +- Composer/plugins/azurePublish/src/index.ts | 2 +- Composer/plugins/azurePublish/src/schema.ts | 2 +- Composer/plugins/azurePublish/yarn.lock | 2 +- .../plugins/mockRemotePublish/package.json | 4 +- .../plugins/mockRemotePublish/src/index.ts | 2 +- .../plugins/mockRemotePublish/src/schema.ts | 2 +- Composer/plugins/mockRemotePublish/yarn.lock | 2 +- .../plugins/sample-ui-plugin/package.json | 2 +- .../src/client/page/index.tsx | 2 +- .../src/client/publish/index.tsx | 2 +- .../src/client/publish/main.tsx | 2 +- Composer/plugins/sample-ui-plugin/yarn.lock | 2 +- releases/1.1.1.md | 2 +- 470 files changed, 472 insertions(+), 668 deletions(-) rename Composer/packages/{extensions => }/adaptive-flow/.eslintrc.js (86%) rename Composer/packages/{extensions => }/adaptive-flow/.gitignore (100%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-editor/AdaptiveFlowEditor.test.tsx (80%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-editor/components/IconMenu.test.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-editor/components/KeyboardZone.test.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-editor/constants/ElementAttributes.test.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-editor/constants/KeyboardCommandTypes.test.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-editor/constants/MenuTypes.test.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-editor/constants/ScreenReaderMessage.test.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-editor/constants/editorConfig.test.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-editor/contexts/NodeRendererContext.test.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-editor/contexts/SelectionContext.test.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-editor/hooks/useEditorEventApi.test.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-editor/renderers/EdgeMenu.test.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-editor/renderers/ElementWrapper.test.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-editor/renderers/NodeMenu.test.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-editor/renderers/NodeWrapper.test.tsx (84%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-editor/stubs/ShellApiStub.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-editor/utils/NodeIndexGetter.test.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-editor/utils/calculateRangeSelection.test.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-editor/utils/cursorTracker/index.test.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-editor/utils/cursorTracker/type.test.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-editor/utils/getCustomSchema.test.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-editor/utils/mapKeyboardCommandToEditorEvent.test.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-editor/utils/normalizeSelection.test.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-renderer/adaptive/AdaptiveDialog.test.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-renderer/adaptive/AdaptiveTrigger.test.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-renderer/components/ArrowLine.test.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-renderer/components/Diamond.test.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-renderer/components/ElementMeasurer.test.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-renderer/components/FlowEdges.test.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-renderer/components/IconBrick.test.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-renderer/components/LoopIndicator.test.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-renderer/components/OffsetContainer.test.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-renderer/components/SVGContainer.test.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-renderer/configs/builtinSchema.test.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-renderer/layouters/baseInputLayouter.test.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-renderer/layouters/calculateNodeBoundary.test.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-renderer/layouters/foreachLayouter.test.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-renderer/layouters/ifelseLayouter.test.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-renderer/layouters/measureJsonBoundary.test.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-renderer/layouters/sequentialLayouter.test.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-renderer/layouters/switchCaseLayouter.test.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-renderer/transformers/ObiTypes.test.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-renderer/transformers/todoBot.main.json (100%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-renderer/transformers/transformForeach.test.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-renderer/transformers/transformIfCondition.test.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-renderer/transformers/transformObiRules.test.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-renderer/transformers/transformRootDialog.test.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-renderer/transformers/transformStepGroup.test.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-renderer/transformers/transformSwitchCondition.test.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-renderer/utils/DesignerCache.test.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-renderer/utils/EdgeUtil.test.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-renderer/utils/widgetRenderer.test.tsx (99%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-renderer/widgets/ActionCard.test.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-renderer/widgets/DialogRef.test.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-renderer/widgets/ForeachWidget.test.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-renderer/widgets/IfConditionWidget.test.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-renderer/widgets/PromptWidget.test.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-renderer/widgets/SwitchConditionWidget.test.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/__tests__/adaptive-flow-renderer/widgets/icon.test.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/demo/index.html (100%) rename Composer/packages/{extensions => }/adaptive-flow/demo/readme.md (100%) rename Composer/packages/{extensions => }/adaptive-flow/demo/src/components/json-block/index.js (100%) rename Composer/packages/{extensions => }/adaptive-flow/demo/src/index.css (100%) rename Composer/packages/{extensions => }/adaptive-flow/demo/src/index.js (100%) rename Composer/packages/{extensions => }/adaptive-flow/demo/src/samples/index.js (100%) rename Composer/packages/{extensions => }/adaptive-flow/demo/src/samples/todo/AddToDo.json (100%) rename Composer/packages/{extensions => }/adaptive-flow/demo/src/samples/todo/ClearToDos.json (100%) rename Composer/packages/{extensions => }/adaptive-flow/demo/src/samples/todo/DeleteToDo.json (100%) rename Composer/packages/{extensions => }/adaptive-flow/demo/src/samples/todo/ShowToDos.json (100%) rename Composer/packages/{extensions => }/adaptive-flow/demo/src/samples/todo/ToDoBot.main.json (100%) rename Composer/packages/{extensions => }/adaptive-flow/demo/src/stories/EventsEditorDemo.js (100%) rename Composer/packages/{extensions => }/adaptive-flow/demo/src/stories/StepEditorDemo.css (100%) rename Composer/packages/{extensions => }/adaptive-flow/demo/src/stories/StepEditorDemo.js (100%) rename Composer/packages/{extensions => }/adaptive-flow/demo/src/stories/VisualEditorDemo.css (100%) rename Composer/packages/{extensions => }/adaptive-flow/demo/src/stories/VisualEditorDemo.js (100%) rename Composer/packages/{extensions => }/adaptive-flow/demo/src/stories/VisualSDKDemo.js (100%) rename Composer/packages/{extensions => }/adaptive-flow/demo/src/stories/story.css (100%) rename Composer/packages/{extensions => }/adaptive-flow/demo/tsconfig.json (100%) rename Composer/packages/{extensions => }/adaptive-flow/demo/webpack.config.demo.js (100%) rename Composer/packages/{extensions => }/adaptive-flow/jest.config.js (100%) rename Composer/packages/{extensions => }/adaptive-flow/package.json (97%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-editor/AdaptiveFlowEditor.tsx (99%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-editor/components/IconMenu.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-editor/components/KeyboardZone.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-editor/constants/ElementAttributes.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-editor/constants/KeyboardCommandTypes.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-editor/constants/MenuTypes.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-editor/constants/ScreenReaderMessage.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-editor/constants/editorConfig.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-editor/contexts/NodeRendererContext.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-editor/contexts/SelectionContext.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-editor/contexts/SelfHostContext.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-editor/hooks/useEditorEventApi.ts (99%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-editor/hooks/useFlowUIOptions.ts (78%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-editor/hooks/useSelectionEffect.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-editor/renderers/EdgeMenu/EdgeMenu.tsx (98%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-editor/renderers/EdgeMenu/createSchemaMenu.tsx (99%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-editor/renderers/EdgeMenu/defaultMenuOrder.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-editor/renderers/EdgeMenu/index.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-editor/renderers/ElementWrapper.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-editor/renderers/NodeMenu.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-editor/renderers/NodeWrapper.tsx (98%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-editor/renderers/index.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-editor/utils/NodeIndexGetter.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-editor/utils/calculateRangeSelection.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-editor/utils/cursorTracker/arrowMove.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-editor/utils/cursorTracker/calculate/calculateBySchema.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-editor/utils/cursorTracker/calculate/calculateByVector.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-editor/utils/cursorTracker/index.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-editor/utils/cursorTracker/locateElement.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-editor/utils/cursorTracker/tabMove.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-editor/utils/cursorTracker/type.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-editor/utils/getCustomSchema.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-editor/utils/mapKeyboardCommandToEditorEvent.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-editor/utils/normalizeSelection.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-editor/utils/scrollNodeIntoView.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/adaptive/AdaptiveDialog.tsx (99%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/adaptive/AdaptiveTrigger.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/components/ArrowLine.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/components/Diamond.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/components/ElementMeasurer.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/components/FlowEdges.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/components/IconBrick.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/components/LoopIndicator.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/components/OffsetContainer.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/components/SVGContainer.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/configs/builtinSchema.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/configs/builtinWidgets.tsx (87%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/constants/AdaptiveFieldNames.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/constants/AdaptiveKinds.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/constants/ElementColors.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/constants/ElementSizes.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/constants/NodeEventTypes.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/contexts/RendererContext.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/contexts/SchemaContext.ts (88%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/hooks/useSmartLayout.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/layouters/baseInputLayouter.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/layouters/calculateNodeBoundary.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/layouters/foreachLayouter.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/layouters/ifelseLayouter.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/layouters/measureJsonBoundary.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/layouters/sequentialLayouter.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/layouters/sharedLayouterUtils.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/layouters/switchCaseLayouter.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/models/Boundary.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/models/EdgeData.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/models/GraphLayout.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/models/GraphNode.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/models/IndexedNode.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/transformers/inheritParentProperty.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/transformers/transformBaseInput.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/transformers/transformForeach.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/transformers/transformIfCondition.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/transformers/transformObiRules.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/transformers/transformRootDialog.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/transformers/transformStepGroup.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/transformers/transformSwitchCondition.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/types/PluggableComponents.types.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/types/flowRenderer.types.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/types/nodeProps.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/utils/adaptive/outlineObiJson.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/utils/adaptive/stepBuilder.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/utils/visual/DesignerCache.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/utils/visual/EdgeUtil.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/utils/visual/WidgetSchemaProvider.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/utils/visual/widgetRenderer.tsx (96%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/widgets/ActionCard/ActionCard.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/widgets/ActionCard/CardTemplate.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/widgets/ActionCard/CardTemplateStyle.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/widgets/ActionCard/index.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/widgets/ActionGroup.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/widgets/ActionHeader/ActionHeader.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/widgets/ActionHeader/ActionHeaderStyle.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/widgets/ActionHeader/icon.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/widgets/ActionHeader/iconStyles.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/widgets/ActionHeader/index.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/widgets/AdaptiveAction.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/widgets/DialogRef.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/widgets/ForeachWidget.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/widgets/IfConditionWidget.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/widgets/PromptWidget.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/widgets/SwitchConditionWidget.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/widgets/TriggerSummary/TriggerSummary.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/widgets/TriggerSummary/index.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/widgets/TriggerSummary/triggerStyles.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/widgets/index.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/adaptive-flow-renderer/widgets/styles/DisabledStyle.ts (100%) rename Composer/packages/{extensions => }/adaptive-flow/src/index.tsx (100%) rename Composer/packages/{extensions => }/adaptive-flow/tsconfig.build.json (100%) rename Composer/packages/{extensions => }/adaptive-flow/tsconfig.json (74%) rename Composer/packages/{extensions => }/adaptive-form/.eslintignore (100%) rename Composer/packages/{extensions/extension => adaptive-form}/.eslintrc.js (71%) rename Composer/packages/{extensions => }/adaptive-form/.gitignore (100%) rename Composer/packages/{extensions => }/adaptive-form/jest.config.js (100%) rename Composer/packages/{extensions => }/adaptive-form/package.json (94%) rename Composer/packages/{extensions => }/adaptive-form/src/components/AdaptiveForm.tsx (99%) rename Composer/packages/{extensions => }/adaptive-form/src/components/CollapseField.tsx (100%) rename Composer/packages/{extensions => }/adaptive-form/src/components/ErrorInfo.tsx (100%) rename Composer/packages/{extensions => }/adaptive-form/src/components/ErrorMessage.tsx (100%) rename Composer/packages/{extensions => }/adaptive-form/src/components/FieldLabel.tsx (100%) rename Composer/packages/{extensions => }/adaptive-form/src/components/FormRow.tsx (97%) rename Composer/packages/{extensions => }/adaptive-form/src/components/FormTitle.tsx (99%) rename Composer/packages/{extensions => }/adaptive-form/src/components/Link.tsx (100%) rename Composer/packages/{extensions => }/adaptive-form/src/components/LoadingTimeout.tsx (100%) rename Composer/packages/{extensions => }/adaptive-form/src/components/SchemaField.tsx (99%) rename Composer/packages/{extensions => }/adaptive-form/src/components/__tests__/ErrorMessage.test.tsx (100%) rename Composer/packages/{extensions => }/adaptive-form/src/components/__tests__/FieldLabel.test.tsx (100%) rename Composer/packages/{extensions => }/adaptive-form/src/components/__tests__/FormRow.test.tsx (100%) rename Composer/packages/{extensions => }/adaptive-form/src/components/__tests__/LoadingTimeout.test.tsx (100%) rename Composer/packages/{extensions => }/adaptive-form/src/components/__tests__/SchemaField.test.tsx (97%) rename Composer/packages/{extensions => }/adaptive-form/src/components/fields/ArrayField.tsx (98%) rename Composer/packages/{extensions => }/adaptive-form/src/components/fields/ArrayFieldItem.tsx (98%) rename Composer/packages/{extensions => }/adaptive-form/src/components/fields/BooleanField.tsx (96%) rename Composer/packages/{extensions => }/adaptive-form/src/components/fields/EditableField.tsx (98%) rename Composer/packages/{extensions => }/adaptive-form/src/components/fields/ExpressionField/ExpressionEditor.tsx (96%) rename Composer/packages/{extensions => }/adaptive-form/src/components/fields/ExpressionField/ExpressionField.tsx (99%) rename Composer/packages/{extensions => }/adaptive-form/src/components/fields/ExpressionField/__tests__/ExpressionField.test.tsx (100%) rename Composer/packages/{extensions => }/adaptive-form/src/components/fields/ExpressionField/__tests__/utils.test.ts (100%) rename Composer/packages/{extensions => }/adaptive-form/src/components/fields/ExpressionField/utils.ts (99%) rename Composer/packages/{extensions => }/adaptive-form/src/components/fields/IntellisenseField.tsx (96%) rename Composer/packages/{extensions => }/adaptive-form/src/components/fields/IntentField.tsx (97%) rename Composer/packages/{extensions => }/adaptive-form/src/components/fields/JsonField.tsx (93%) rename Composer/packages/{extensions => }/adaptive-form/src/components/fields/NumberField.tsx (97%) rename Composer/packages/{extensions => }/adaptive-form/src/components/fields/ObjectArrayField.tsx (99%) rename Composer/packages/{extensions => }/adaptive-form/src/components/fields/ObjectField.tsx (95%) rename Composer/packages/{extensions => }/adaptive-form/src/components/fields/OneOfField/OneOfField.tsx (97%) rename Composer/packages/{extensions => }/adaptive-form/src/components/fields/OneOfField/__tests__/OneOfField.test.tsx (100%) rename Composer/packages/{extensions => }/adaptive-form/src/components/fields/OneOfField/__tests__/utils.test.ts (100%) rename Composer/packages/{extensions => }/adaptive-form/src/components/fields/OneOfField/index.ts (100%) rename Composer/packages/{extensions => }/adaptive-form/src/components/fields/OneOfField/utils.ts (99%) rename Composer/packages/{extensions => }/adaptive-form/src/components/fields/OpenObjectField/ObjectItem.tsx (98%) rename Composer/packages/{extensions => }/adaptive-form/src/components/fields/OpenObjectField/OpenObjectField.tsx (98%) rename Composer/packages/{extensions => }/adaptive-form/src/components/fields/OpenObjectField/__tests__/ObjectItem.test.tsx (100%) rename Composer/packages/{extensions => }/adaptive-form/src/components/fields/OpenObjectField/__tests__/OpenObjectField.test.tsx (100%) rename Composer/packages/{extensions => }/adaptive-form/src/components/fields/OpenObjectField/index.ts (100%) rename Composer/packages/{extensions => }/adaptive-form/src/components/fields/OpenObjectField/styles.ts (100%) rename Composer/packages/{extensions => }/adaptive-form/src/components/fields/QnAActionsField.tsx (88%) rename Composer/packages/{extensions => }/adaptive-form/src/components/fields/RecognizerField.tsx (99%) rename Composer/packages/{extensions => }/adaptive-form/src/components/fields/RegexIntentField.tsx (95%) rename Composer/packages/{extensions => }/adaptive-form/src/components/fields/SelectField.tsx (97%) rename Composer/packages/{extensions => }/adaptive-form/src/components/fields/StringField.tsx (97%) rename Composer/packages/{extensions => }/adaptive-form/src/components/fields/UnsupportedField.tsx (94%) rename Composer/packages/{extensions => }/adaptive-form/src/components/fields/__tests__/ArrayField.test.tsx (100%) rename Composer/packages/{extensions => }/adaptive-form/src/components/fields/__tests__/ArrayFieldItem.tsx (100%) rename Composer/packages/{extensions => }/adaptive-form/src/components/fields/__tests__/BooleanField.test.tsx (100%) rename Composer/packages/{extensions => }/adaptive-form/src/components/fields/__tests__/IntentField.test.tsx (97%) rename Composer/packages/{extensions => }/adaptive-form/src/components/fields/__tests__/JsonField.test.tsx (93%) rename Composer/packages/{extensions => }/adaptive-form/src/components/fields/__tests__/NumberField.test.tsx (100%) rename Composer/packages/{extensions => }/adaptive-form/src/components/fields/__tests__/ObjectArrayField.test.tsx (98%) rename Composer/packages/{extensions => }/adaptive-form/src/components/fields/__tests__/ObjectField.test.tsx (100%) rename Composer/packages/{extensions => }/adaptive-form/src/components/fields/__tests__/RecognizerField.test.tsx (97%) rename Composer/packages/{extensions => }/adaptive-form/src/components/fields/__tests__/RegexIntentField.test.tsx (95%) rename Composer/packages/{extensions => }/adaptive-form/src/components/fields/__tests__/SelectField.test.tsx (100%) rename Composer/packages/{extensions => }/adaptive-form/src/components/fields/__tests__/StringField.test.tsx (100%) rename Composer/packages/{extensions => }/adaptive-form/src/components/fields/__tests__/UnsupportedField.test.tsx (100%) rename Composer/packages/{extensions => }/adaptive-form/src/components/fields/__tests__/testUtils.ts (89%) rename Composer/packages/{extensions => }/adaptive-form/src/components/fields/index.ts (100%) rename Composer/packages/{extensions => }/adaptive-form/src/components/fields/styles.ts (100%) rename Composer/packages/{extensions => }/adaptive-form/src/components/index.ts (100%) rename Composer/packages/{extensions => }/adaptive-form/src/components/sharedStyles.ts (100%) rename Composer/packages/{extensions => }/adaptive-form/src/defaultRecognizers.ts (97%) rename Composer/packages/{extensions => }/adaptive-form/src/index.ts (100%) rename Composer/packages/{extensions => }/adaptive-form/src/utils/__tests__/arrayUtils.test.ts (100%) rename Composer/packages/{extensions => }/adaptive-form/src/utils/__tests__/getOrderedProperties.test.ts (100%) rename Composer/packages/{extensions => }/adaptive-form/src/utils/__tests__/getUIOptions.test.ts (99%) rename Composer/packages/{extensions => }/adaptive-form/src/utils/__tests__/getValueType.test.ts (100%) rename Composer/packages/{extensions => }/adaptive-form/src/utils/__tests__/objectUtils.test.ts (100%) rename Composer/packages/{extensions => }/adaptive-form/src/utils/__tests__/resolveFieldWidget.test.ts (100%) rename Composer/packages/{extensions => }/adaptive-form/src/utils/__tests__/resolvePropSchema.test.ts (100%) rename Composer/packages/{extensions => }/adaptive-form/src/utils/__tests__/resolveRef.test.ts (100%) rename Composer/packages/{extensions => }/adaptive-form/src/utils/__tests__/uiOptionsHelpers.test.ts (98%) rename Composer/packages/{extensions => }/adaptive-form/src/utils/arrayUtils.ts (97%) rename Composer/packages/{extensions => }/adaptive-form/src/utils/getHiddenProperties.ts (91%) rename Composer/packages/{extensions => }/adaptive-form/src/utils/getIntellisenseUrl.ts (100%) rename Composer/packages/{extensions => }/adaptive-form/src/utils/getOrderedProperties.ts (97%) rename Composer/packages/{extensions => }/adaptive-form/src/utils/getUIOptions.ts (97%) rename Composer/packages/{extensions => }/adaptive-form/src/utils/getValueType.ts (100%) rename Composer/packages/{extensions => }/adaptive-form/src/utils/index.ts (100%) rename Composer/packages/{extensions => }/adaptive-form/src/utils/objectUtils.ts (97%) rename Composer/packages/{extensions => }/adaptive-form/src/utils/resolveFieldWidget.ts (98%) rename Composer/packages/{extensions => }/adaptive-form/src/utils/resolvePropSchema.ts (97%) rename Composer/packages/{extensions => }/adaptive-form/src/utils/resolveRef.ts (99%) rename Composer/packages/{extensions => }/adaptive-form/src/utils/uiOptionsHelpers.ts (97%) rename Composer/packages/{extensions => }/adaptive-form/tsconfig.build.json (100%) rename Composer/packages/{extensions/intellisense => adaptive-form}/tsconfig.json (63%) rename Composer/packages/client/src/pages/setting/{plugins/Plugins.tsx => extensions/Extensions.tsx} (72%) create mode 100644 Composer/packages/client/src/recoilModel/dispatchers/extensions.ts delete mode 100644 Composer/packages/client/src/recoilModel/dispatchers/plugins.ts rename Composer/packages/{extensions/adaptive-form => extension-client}/.eslintrc.js (71%) rename Composer/packages/{extensions/client-plugin-lib => extension-client}/.gitignore (100%) rename Composer/packages/{extensions/extension => extension-client}/jest.config.js (100%) create mode 100644 Composer/packages/extension-client/package.json rename Composer/packages/{extensions/extension/src/extensionContext.ts => extension-client/src/EditorExtensionContext.ts} (67%) rename Composer/packages/{extensions/client-plugin-lib => extension-client}/src/auth/index.ts (100%) rename Composer/packages/{extensions/client-plugin-lib => extension-client}/src/auth/types.ts (100%) rename Composer/packages/{extensions/client-plugin-lib => extension-client}/src/common/constants.ts (100%) rename Composer/packages/{extensions/client-plugin-lib => extension-client}/src/common/index.ts (74%) rename Composer/packages/{extensions/extension/src/components/Extension.tsx => extension-client/src/components/EditorExtension.tsx} (55%) rename Composer/packages/{extensions/extension => extension-client}/src/components/index.ts (67%) rename Composer/packages/{extensions/extension => extension-client}/src/hooks/__tests__/useFlowConfig.test.tsx (81%) rename Composer/packages/{extensions/extension => extension-client}/src/hooks/__tests__/useFormConfig.test.tsx (81%) rename Composer/packages/{extensions/extension => extension-client}/src/hooks/__tests__/useMenuConfig.test.tsx (81%) rename Composer/packages/{extensions/extension => extension-client}/src/hooks/__tests__/useRecognizerConfig.test.tsx (81%) rename Composer/packages/{extensions/extension => extension-client}/src/hooks/index.ts (100%) rename Composer/packages/{extensions/extension => extension-client}/src/hooks/useActionApi.ts (100%) rename Composer/packages/{extensions/extension => extension-client}/src/hooks/useDebounce.ts (100%) rename Composer/packages/{extensions/extension => extension-client}/src/hooks/useDialogApi.ts (100%) rename Composer/packages/{extensions/extension => extension-client}/src/hooks/useDialogEditApi.ts (100%) rename Composer/packages/{extensions/extension => extension-client}/src/hooks/useFlowConfig.ts (74%) rename Composer/packages/{extensions/extension => extension-client}/src/hooks/useFormConfig.ts (74%) rename Composer/packages/{extensions/extension => extension-client}/src/hooks/useLgApi.ts (100%) rename Composer/packages/{extensions/extension => extension-client}/src/hooks/useLuApi.ts (100%) rename Composer/packages/{extensions/extension => extension-client}/src/hooks/useMenuConfig.ts (72%) rename Composer/packages/{extensions/extension => extension-client}/src/hooks/useRecognizerConfig.ts (60%) rename Composer/packages/{extensions/extension => extension-client}/src/hooks/useShellApi.ts (83%) rename Composer/packages/{extensions/extension => extension-client}/src/hooks/useTriggerApi.ts (100%) rename Composer/packages/{extensions/extension => extension-client}/src/index.ts (51%) rename Composer/packages/{extensions/client-plugin-lib => extension-client}/src/logger.ts (66%) rename Composer/packages/{extensions/client-plugin-lib => extension-client}/src/page/index.ts (100%) rename Composer/packages/{extensions/client-plugin-lib => extension-client}/src/publish/index.ts (100%) rename Composer/packages/{extensions/client-plugin-lib => extension-client}/src/publish/types.ts (100%) rename Composer/packages/{extensions/extension => extension-client}/src/types/extension.ts (100%) rename Composer/packages/{extensions/extension => extension-client}/src/types/flowSchema.ts (100%) rename Composer/packages/{extensions/extension => extension-client}/src/types/form.ts (100%) rename Composer/packages/{extensions/extension => extension-client}/src/types/formSchema.ts (100%) rename Composer/packages/{extensions/extension => extension-client}/src/types/index.ts (100%) rename Composer/packages/{extensions/extension => extension-client}/src/types/menuSchema.ts (100%) rename Composer/packages/{extensions/extension => extension-client}/src/utils/__tests__/mergePluginConfigs.test.ts (100%) rename Composer/packages/{extensions/extension => extension-client}/src/utils/index.ts (100%) rename Composer/packages/{extensions/extension => extension-client}/src/utils/mergePluginConfigs.ts (100%) rename Composer/packages/{extensions/extension => extension-client}/tsconfig.build.json (100%) rename Composer/packages/{extensions/plugin-loader => extension-client}/tsconfig.json (74%) rename Composer/packages/{extensions/plugin-loader => extension}/.eslintrc.js (82%) rename Composer/packages/{extensions/plugin-loader => extension}/.gitignore (100%) rename Composer/packages/{extensions/plugin-loader => extension}/package.json (95%) rename Composer/packages/{extensions/plugin-loader => extension}/src/index.ts (100%) rename Composer/packages/{extensions/plugin-loader => extension}/src/loader/composerPluginRegistration.ts (100%) rename Composer/packages/{extensions/plugin-loader => extension}/src/loader/index.ts (100%) rename Composer/packages/{extensions/plugin-loader => extension}/src/loader/pluginLoader.ts (100%) rename Composer/packages/{extensions/plugin-loader => extension}/src/logger.ts (100%) rename Composer/packages/{extensions/plugin-loader => extension}/src/manager/index.ts (100%) rename Composer/packages/{extensions/plugin-loader => extension}/src/manager/manager.ts (98%) rename Composer/packages/{extensions/plugin-loader => extension}/src/storage/extensionManifestStore.ts (100%) rename Composer/packages/{extensions/plugin-loader => extension}/src/storage/index.ts (100%) rename Composer/packages/{extensions/plugin-loader => extension}/src/types/extension.ts (100%) rename Composer/packages/{extensions/plugin-loader => extension}/src/types/types.ts (100%) rename Composer/packages/{extensions/client-plugin-lib => extension}/tsconfig.json (74%) delete mode 100644 Composer/packages/extensions/adaptive-form/tsconfig.json delete mode 100644 Composer/packages/extensions/client-plugin-lib/package.json delete mode 100644 Composer/packages/extensions/client-plugin-lib/src/index.ts delete mode 100644 Composer/packages/extensions/extension/package.json delete mode 100644 Composer/packages/extensions/intellisense/.gitignore rename Composer/packages/{extensions/extension => intellisense}/.gitignore (100%) rename Composer/packages/{extensions => }/intellisense/jest.config.js (100%) rename Composer/packages/{extensions => }/intellisense/package.json (100%) rename Composer/packages/{extensions => }/intellisense/src/components/CompletionElement.tsx (100%) rename Composer/packages/{extensions => }/intellisense/src/components/CompletionList.tsx (100%) rename Composer/packages/{extensions => }/intellisense/src/components/IntellisenseTextField.tsx (100%) rename Composer/packages/{extensions => }/intellisense/src/components/__tests__/IntellisenseTextField.test.tsx (100%) rename Composer/packages/{extensions => }/intellisense/src/components/index.ts (100%) rename Composer/packages/{extensions => }/intellisense/src/hooks/useLanguageServer.ts (100%) rename Composer/packages/{extensions => }/intellisense/src/utils/lspMessagesUtils.ts (100%) rename Composer/packages/{extensions => }/intellisense/src/utils/uiUtils.ts (100%) rename Composer/packages/{extensions => }/intellisense/tsconfig.build.json (100%) rename Composer/packages/{extensions/extension => intellisense}/tsconfig.json (63%) rename Composer/packages/server/src/controllers/{plugins.ts => extensions.ts} (50%) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 0ad65c962e..c640447209 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -6,4 +6,6 @@ /Composer/ @cwhitten @boydc2014 @a-b-r-o-w-n @beyackle @srinaath @tonyanziano @geoffcoxmsft @hatpick +/Composer/packages/adaptive-flow @yeze322 @cwhitten @boydc2014 @a-b-r-o-w-n + /docs/ @cwhitten @boydc2014 @benbrown @geoffcoxmsft diff --git a/Composer/.dockerignore b/Composer/.dockerignore index 19245eab5f..d942adbebd 100644 --- a/Composer/.dockerignore +++ b/Composer/.dockerignore @@ -7,7 +7,6 @@ **/server/tmp.zip # not ignore all lib folder because packages/lib, so probably we should rename that to libs packages/lib/*/lib -packages/extensions/*/lib Dockerfile .dockerignore diff --git a/Composer/Dockerfile b/Composer/Dockerfile index 4f6067ba23..cd3532955d 100644 --- a/Composer/Dockerfile +++ b/Composer/Dockerfile @@ -25,7 +25,11 @@ WORKDIR /app/Composer COPY --from=build /src/Composer/yarn.lock . COPY --from=build /src/Composer/package.json . COPY --from=build /src/Composer/packages/client ./packages/client -COPY --from=build /src/Composer/packages/extensions ./packages/extensions +COPY --from=build /src/Composer/packages/adaptive-flow ./packages/adaptive-flow +COPY --from=build /src/Composer/packages/adaptive-form ./packages/adaptive-form +COPY --from=build /src/Composer/packages/extension ./packages/extension +COPY --from=build /src/Composer/packages/extension-client ./packages/extension-client +COPY --from=build /src/Composer/packages/intellisense ./packages/intellisense COPY --from=build /src/Composer/packages/server ./packages/server COPY --from=build /src/Composer/packages/lib ./packages/lib COPY --from=build /src/Composer/packages/tools ./packages/tools diff --git a/Composer/README.md b/Composer/README.md index c7142f2575..f2b9bc0bc4 100644 --- a/Composer/README.md +++ b/Composer/README.md @@ -30,166 +30,3 @@ If you run into the issue of `There appears to be trouble with your network conn ## Documentation The documentation for Composer [can be found here](/toc.md). - -## Extension Framework -Composer is built on top of an extension framework, which allows anyone to provide an extension as the editor of certain type of bot assets. - -All editors, 1st party or 3rd party, are loaded in the same way by the extension framework. - -Non-editor extensions are not supported at this time, though the mechanisms for providing extensions will scale outside the dialog editor's. - -### What's an extension? what's in it -Each extension is a standalone React component package ([why React component](#why-react-component)) under Composer's `/packages/extensions` folder, which implements the extension `interface`. - -Composer is managed via yarn workspaces, producing such a folder layout. -``` -|- Composer - |- package.json // define the workspaces - |- packages - |- client // composer main app - |- server // composer api server - |- extensions - |- package.json // put all extension as one package - |- adaptive-form // dialog property editor - |- lib - |- shared // shared code -``` - -All extensions under `/extensions` folder will be eventually packed into one `extensions` package, then the `client` package will depends on this `extensions` package. - -### Extension Interface -The extension interface defines the way how an extension comminutes to the host. - -In React world, interface means the props passed into a component. An extension will be passed ino 3 props: -- data:any. which is the data to be edited by this editor. -- onChange: (newData) => void. which is the callback enables an editor to save the edited data. -- [shellApi](#shell-api). which is a set of apis providing other capabilities than data in\out. - -The rendering code of an extension will be sth like this: -``` - import SomeEditor from 'someplace' - - -``` - -#### data in\out story - -With this interface, it's pretty clear how data is in\out extension. Data is passed in through `data` prop, and been saved with `onChange` prop. - -#### shell api - -Shell api is a set of apis that provides other important functionalities that empower an extension to provide a more powerful and smooth editing experience. including - -* OpenSubEditor - ``` - openSubEditor(location:string, data:any, onChange:(newData:any) => void) - ``` - This is the most important api that support a [multiple editors](#multiple-editors) scenario, which allows an editor to delegate some editing task to another editor, and listen the changes. - - Note that, this api doesn't allow you to specify the type or the name of the sub editor. You only get to specify a data, the shell will use a centralized way to manage how editors are registered and picked up. See registration section in the below for more details. - - We may suppport other forms of openSubEditor later, but we expect this is the mosted used one. - -* ObjectGraph - - TBD, this will be an api that enable each extension have the knowledge of a global object graph. -* Alert -* ReadFile -* Prompt - -### Why React component - -There are many options to choose when picking an abstraction for an extension. Different level abstractions have different impacts on many aspects, like developing, testing, debuging and running the extension. - -A low-level abstraction like HTML page will give us perfect isolation, great flexibilty (use whatever language you want to build that), but usually result in a relatively high amount of effort to develop a robust api between host and extension because it's using the low-level messaging primitives, and also not good for performance because of the extreme isolation. - -A high-level abstraction like React component, will cost a little bit on isolation, but gain the best support from a mature and powerful framework, in every cycle of the development of extensions. It will help most of boosting the productivity, simplifying the architecure, and gain the best performance. - -Based on our scenario, we will use React as a start point, and host the extension in an `