Repository: DevExpress/devextreme-vue (ts)

Issue:
Add default exports for components
### Issue Type
enhancement

### Description
<!-- Specify what exactly the issue is related to (e.g. a component name) -->
The issue is related to all the components

#### Current Behavior
```ts
export { DxBullet, DxBorder, DxFont, DxFormat, DxMargin, DxShadow, DxSize, DxTooltip };
```
#### Expected Behavior
```ts
export default DxBullet;
export { DxBullet, DxBorder, DxFont, DxFormat, DxMargin, DxShadow, DxSize, DxTooltip };
```

### Environment Details
<!--
Specify DevExtreme version, DevExtreme Vue Components version, Vue version and other environment details or notes you consider important.
-->
- devextreme-vue version: v18.1.4-alpha.7


Pull request:
Add default exports for components
Resolves #124.

Patch:
diff --git a/tools/src/component-generator.ts b/tools/src/component-generator.ts
index 8186480..b263acf 100644
--- a/tools/src/component-generator.ts
+++ b/tools/src/component-generator.ts
@@ -16,18 +16,6 @@ interface IComponent {
     nestedComponents?: INestedComponent[];
 }
 
-interface IComponentModel {
-    component: string;
-    widgetImport: IImport;
-    namedImports: IImport[];
-    baseComponent: string;
-    configComponent: string;
-    renderedProps?: string;
-    hasModel?: boolean;
-    nestedComponents?: INestedComponentModel[];
-    namedExports: string[];
-}
-
 interface INestedComponent {
     name: string;
     optionName: string;
@@ -84,6 +72,7 @@ function generate(component: IComponent): string {
             : undefined,
 
         nestedComponents,
+        defaultExport: component.name,
         namedExports
     };
 
@@ -108,7 +97,18 @@ const L2: string = `\n` + tab(2);
 const L3: string = `\n` + tab(3);
 const L4: string = `\n` + tab(4);
 
-const renderComponent: (model: IComponentModel) => string = createTempate(
+const renderComponent: (model: {
+    component: string;
+    widgetImport: IImport;
+    namedImports: IImport[];
+    baseComponent: string;
+    configComponent: string;
+    renderedProps?: string;
+    hasModel?: boolean;
+    nestedComponents?: INestedComponentModel[];
+    defaultExport: string;
+    namedExports: string[];
+}) => string = createTempate(
 `import * as VueType from "vue";\n` +
 `const Vue = VueType.default || VueType;\n` +
 `import <#= it.widgetImport.name #> from "devextreme/<#= it.widgetImport.path #>";\n` +
@@ -158,8 +158,12 @@ L1 + `extends: <#= it.baseComponent #>,` +
 
     `<#~#>` +
 `<#?#>` +
-
 `\n` +
+
+`<#? it.defaultExport #>` +
+    `export default <#= it.defaultExport #>;\n` +
+`<#?#>` +
+
 `export {\n` +
     `<#~ it.namedExports :namedExport #>` +
     tab(1) + `<#= namedExport #>,\n` +


Test patch:
diff --git a/tools/src/component-generator.test.ts b/tools/src/component-generator.test.ts
index be8755b..4be7171 100644
--- a/tools/src/component-generator.test.ts
+++ b/tools/src/component-generator.test.ts
@@ -21,6 +21,7 @@ const COMPONENT: VueConstructor = Vue.extend({
   }
 });
 
+export default COMPONENT;
 export {
   COMPONENT
 };
@@ -68,6 +69,7 @@ const COMPONENT: VueConstructor = Vue.extend({
   }
 });
 
+export default COMPONENT;
 export {
   COMPONENT
 };
@@ -118,6 +120,7 @@ const COMPONENT: VueConstructor = Vue.extend({
   }
 });
 
+export default COMPONENT;
 export {
   COMPONENT
 };
@@ -174,6 +177,7 @@ const NESTED_COMPONENT: any = Vue.extend({
 });
 (NESTED_COMPONENT as any).$_optionName = "NESTED_OPTION_NAME";
 
+export default COMPONENT;
 export {
   COMPONENT,
   NESTED_COMPONENT
@@ -241,6 +245,7 @@ const NESTED_COMPONENT: any = Vue.extend({
 (NESTED_COMPONENT as any).$_optionName = "NESTED_OPTION_NAME";
 (NESTED_COMPONENT as any).$_isCollectionItem = true;
 
+export default COMPONENT;
 export {
   COMPONENT,
   NESTED_COMPONENT