xs-common-plugins 1.1.2 → 1.1.6

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.
Files changed (139) hide show
  1. package/README.md +37 -0
  2. package/package.json +1 -1
  3. package/src/App.vue +11 -11
  4. package/src/common/common.js +143 -14
  5. package/src/common/createMenuId.js +7 -7
  6. package/src/common/uploadImgToBase64.js +12 -12
  7. package/src/common/utils.js +95 -95
  8. package/src/components/Breadcrumb/index.vue +81 -81
  9. package/src/components/Col_TableCell/data.js +4 -4
  10. package/src/components/Col_TableCell/index.scss +77 -77
  11. package/src/components/Col_TableCell/index.vue +43 -43
  12. package/src/components/Col_TableCell/methods.js +19 -19
  13. package/src/components/Hamburger/index.vue +44 -44
  14. package/src/components/ReportCmp/data.js +3 -3
  15. package/src/components/ReportCmp/index.scss +29 -29
  16. package/src/components/ReportCmp/index.vue +2 -2
  17. package/src/components/ReportCmp/methods.js +30 -30
  18. package/src/components/Search/cascader/data.js +3 -3
  19. package/src/components/Search/cascader/index.scss +17 -17
  20. package/src/components/Search/cascader/index.vue +96 -96
  21. package/src/components/Search/cascader/methods.js +41 -41
  22. package/src/components/Search/data.js +5 -5
  23. package/src/components/Search/hk_cascader/index.vue +104 -104
  24. package/src/components/Search/hk_cascader_qudao/index.vue +94 -94
  25. package/src/components/Search/methods.js +86 -86
  26. package/src/components/Search/product_option/data.js +3 -3
  27. package/src/components/Search/product_option/index.scss +68 -68
  28. package/src/components/Search/product_option/index.vue +419 -419
  29. package/src/components/Search/product_option/methods.js +46 -46
  30. package/src/components/Search/select/data.js +3 -3
  31. package/src/components/Search/select/index.scss +2 -2
  32. package/src/components/Search/select/index.vue +114 -114
  33. package/src/components/Search/select/methods.js +51 -51
  34. package/src/components/Search_filter/data.js +5 -5
  35. package/src/components/Search_filter/index.vue +88 -88
  36. package/src/components/Search_filter/methods.js +43 -43
  37. package/src/components/TableCmp/data.js +3 -3
  38. package/src/components/TableCmp/index.scss +22 -22
  39. package/src/components/TableCmp/index.vue +98 -98
  40. package/src/components/TableCmp/methods.js +35 -35
  41. package/src/components/home/BarChart.vue +118 -118
  42. package/src/components/home/LineChart.vue +146 -146
  43. package/src/components/home/Panel.vue +135 -135
  44. package/src/components/home/PanelGroup.vue +146 -146
  45. package/src/components/home/PieChart.vue +81 -81
  46. package/src/components/home/RaddarChart.vue +119 -119
  47. package/src/components/home/TabLayout.vue +88 -88
  48. package/src/components/home/TableList.vue +158 -158
  49. package/src/components/home/Teng.vue +248 -248
  50. package/src/components/home/TransactionTable.vue +49 -49
  51. package/src/components/home/mixins/resize.js +55 -55
  52. package/src/components/im/methods.js +25 -25
  53. package/src/components/image-singleUpload/data.js +3 -3
  54. package/src/components/image-singleUpload/index.scss +26 -26
  55. package/src/components/image-singleUpload/index.vue +56 -56
  56. package/src/components/image-singleUpload/methods.js +30 -30
  57. package/src/components/image-upload/data.js +7 -7
  58. package/src/components/image-upload/index.vue +41 -41
  59. package/src/components/image-upload/methods.js +80 -80
  60. package/src/components/multiple-image-upload/data.js +11 -11
  61. package/src/components/multiple-image-upload/index.scss +8 -8
  62. package/src/components/multiple-image-upload/index.vue +63 -63
  63. package/src/components/multiple-image-upload/methods.js +45 -45
  64. package/src/components/pro-upload/data.js +3 -3
  65. package/src/components/pro-upload/index.scss +4 -4
  66. package/src/components/pro-upload/index.vue +89 -89
  67. package/src/components/pro-upload/methods.js +86 -86
  68. package/src/components/report_set/index.scss +44 -44
  69. package/src/components/report_set/index.vue +153 -153
  70. package/src/components/search-page/src/index.scss +5 -5
  71. package/src/components/search-page/src/index.vue +76 -76
  72. package/src/components/search-page/src/methods.js +36 -36
  73. package/src/mixin/dialog.js +31 -31
  74. package/src/mixin/dlg.js +46 -46
  75. package/src/mixin/newDialog.js +19 -19
  76. package/src/mixin/report.js +82 -82
  77. package/src/mixin/table.js +93 -93
  78. package/src/mixin/tableCell/colTableCell_analysis.js +103 -103
  79. package/src/mixin/upload.js +22 -22
  80. package/src/mixin/vmodel.js +26 -26
  81. package/src/plugins/im/components/conversation-list/index.css +91 -91
  82. package/src/plugins/im/components/conversation-list/index.json +3 -3
  83. package/src/plugins/im/components/conversation-list/index.vue +89 -89
  84. package/src/plugins/im/components/loading/loading.css +69 -69
  85. package/src/plugins/im/components/loading/loading.json +3 -3
  86. package/src/plugins/im/components/loading/loading.vue +14 -14
  87. package/src/plugins/im/components/msg-image/index.json +3 -3
  88. package/src/plugins/im/components/msg-text/index.json +3 -3
  89. package/src/plugins/im/components/msg-text/index.vue +24 -24
  90. package/src/plugins/im/im-plug-in/Protobuf-2.3.7.min.js +1 -1
  91. package/src/plugins/im/im-plug-in/RongCallLib-3.1.5.min.js +74 -74
  92. package/src/plugins/im/im-plug-in/RongIMLib-4.1.0.js +17420 -17420
  93. package/src/plugins/im/im-plug-in/init.js +216 -216
  94. package/src/plugins/im/im-plug-in/qiniu.js +266 -266
  95. package/src/plugins/im/im-plug-in/send-data.js +431 -431
  96. package/src/plugins/im/im-plug-in/upload.js +232 -232
  97. package/src/plugins/im/lib/RongIMEmoji-2.2.6.js +332 -332
  98. package/src/plugins/im/lib/RongIMLib-3.0.7.2-dev.js +11635 -11635
  99. package/src/plugins/im/lib/RongIMLib-3.0.7.2-dev.min.js +6 -6
  100. package/src/plugins/im/utils/underscore-1.8.3.js +1531 -1531
  101. package/src/plugins/im/utils/utils.js +149 -149
  102. package/src/plugins/row-col-cmp/colCmp/data.js +3 -3
  103. package/src/plugins/row-col-cmp/colCmp/index.scss +50 -50
  104. package/src/plugins/row-col-cmp/colCmp/index.vue +53 -53
  105. package/src/plugins/row-col-cmp/colCmp/methods.js +25 -25
  106. package/src/plugins/row-col-cmp/rowCmp/data.js +3 -3
  107. package/src/plugins/row-col-cmp/rowCmp/index.scss +3 -3
  108. package/src/plugins/row-col-cmp/rowCmp/index.vue +43 -43
  109. package/src/plugins/row-col-cmp/rowCmp/methods.js +29 -29
  110. package/src/router/index.js +47 -43
  111. package/src/store/getters.js +13 -13
  112. package/src/store/index.js +58 -58
  113. package/src/store/modules/app.js +55 -55
  114. package/src/store/modules/dic.js +1 -1
  115. package/src/store/modules/settings.js +28 -28
  116. package/src/store/modules/user.js +94 -94
  117. package/src/store/modules/widgetdata.js +42 -42
  118. package/src/styles/element-ui.scss +49 -49
  119. package/src/styles/mixin.scss +28 -28
  120. package/src/styles/sidebar.scss +210 -210
  121. package/src/styles/transition.scss +48 -48
  122. package/src/styles/variables.scss +25 -25
  123. package/src/utils/get-page-title.js +10 -10
  124. package/src/utils/getMenu.js +2 -1
  125. package/src/utils/global-config.js +15 -15
  126. package/src/utils/index.js +332 -332
  127. package/src/utils/localStorage.js +21 -21
  128. package/src/utils/validate.js +20 -20
  129. package/src/views/layout/components/AllSearch/index.vue +44 -44
  130. package/src/views/layout/components/AppMain.vue +50 -50
  131. package/src/views/layout/components/Navbar.vue +43 -2
  132. package/src/views/layout/components/Sidebar/FixiOSBug.js +26 -26
  133. package/src/views/layout/components/Sidebar/Item.vue +28 -28
  134. package/src/views/layout/components/Sidebar/Link.vue +34 -34
  135. package/src/views/layout/components/Sidebar/Logo.vue +79 -79
  136. package/src/views/layout/components/Sidebar/SidebarItem.vue +67 -67
  137. package/src/views/layout/components/Sidebar/index.vue +114 -114
  138. package/src/views/layout/components/index.js +3 -3
  139. package/src/views/layout/index.vue +105 -105
@@ -1,79 +1,79 @@
1
- <template>
2
- <div class="sidebar-logo-container" :class="{'collapse':collapse}">
3
- <router-link key="collapse" class="sidebar-logo-link" to="/" v-if="collapse">
4
- <img src="/Res/logo/small.png" class="sidebar-logo" />
5
- </router-link>
6
- <router-link key="expand" class="sidebar-logo-link" to="/">
7
- <img src="/Res/logo/big.png" class="sidebar-logo" />
8
- </router-link>
9
- </div>
10
- </template>
11
-
12
- <script>
13
-
14
- export default {
15
- name: "SidebarLogo",
16
- props: {
17
- collapse: {
18
- type: Boolean,
19
- required: true
20
- }
21
- }
22
- };
23
- </script>
24
-
25
- <style lang="scss" scoped>
26
- .sidebarLogoFade-enter-active {
27
- transition: opacity 1.5s;
28
- }
29
-
30
- .sidebarLogoFade-enter,
31
- .sidebarLogoFade-leave-to {
32
- opacity: 0;
33
- }
34
-
35
- .sidebar-logo-container {
36
- position: relative;
37
- width: 100%;
38
- height: 50px;
39
- line-height: 50px;
40
- background: #2b2f3a;
41
- text-align: center;
42
- overflow: hidden;
43
-
44
- & .sidebar-logo-link {
45
- height: 100%;
46
- width: 100%;
47
-
48
- & .sidebar-logo {
49
- width: 210px;
50
- height: 50px;
51
- vertical-align: middle;
52
- margin-right: 12px;
53
- img {
54
- width: 100%;
55
- height: 100%;
56
- }
57
- }
58
-
59
- & .sidebar-title {
60
- display: inline-block;
61
- margin: 0;
62
- color: #fff;
63
- font-weight: 600;
64
- line-height: 50px;
65
- font-size: 14px;
66
- font-family: Avenir, Helvetica Neue, Arial, Helvetica, sans-serif;
67
- vertical-align: middle;
68
- }
69
- }
70
-
71
- &.collapse {
72
- .sidebar-logo {
73
- margin-right: 0px;
74
- width: 56px;
75
- height: 50px;
76
- }
77
- }
78
- }
79
- </style>
1
+ <template>
2
+ <div class="sidebar-logo-container" :class="{'collapse':collapse}">
3
+ <router-link key="collapse" class="sidebar-logo-link" to="/" v-if="collapse">
4
+ <img src="/Res/logo/small.png" class="sidebar-logo" />
5
+ </router-link>
6
+ <router-link key="expand" class="sidebar-logo-link" to="/">
7
+ <img src="/Res/logo/big.png" class="sidebar-logo" />
8
+ </router-link>
9
+ </div>
10
+ </template>
11
+
12
+ <script>
13
+
14
+ export default {
15
+ name: "SidebarLogo",
16
+ props: {
17
+ collapse: {
18
+ type: Boolean,
19
+ required: true
20
+ }
21
+ }
22
+ };
23
+ </script>
24
+
25
+ <style lang="scss" scoped>
26
+ .sidebarLogoFade-enter-active {
27
+ transition: opacity 1.5s;
28
+ }
29
+
30
+ .sidebarLogoFade-enter,
31
+ .sidebarLogoFade-leave-to {
32
+ opacity: 0;
33
+ }
34
+
35
+ .sidebar-logo-container {
36
+ position: relative;
37
+ width: 100%;
38
+ height: 50px;
39
+ line-height: 50px;
40
+ background: #2b2f3a;
41
+ text-align: center;
42
+ overflow: hidden;
43
+
44
+ & .sidebar-logo-link {
45
+ height: 100%;
46
+ width: 100%;
47
+
48
+ & .sidebar-logo {
49
+ width: 210px;
50
+ height: 50px;
51
+ vertical-align: middle;
52
+ margin-right: 12px;
53
+ img {
54
+ width: 100%;
55
+ height: 100%;
56
+ }
57
+ }
58
+
59
+ & .sidebar-title {
60
+ display: inline-block;
61
+ margin: 0;
62
+ color: #fff;
63
+ font-weight: 600;
64
+ line-height: 50px;
65
+ font-size: 14px;
66
+ font-family: Avenir, Helvetica Neue, Arial, Helvetica, sans-serif;
67
+ vertical-align: middle;
68
+ }
69
+ }
70
+
71
+ &.collapse {
72
+ .sidebar-logo {
73
+ margin-right: 0px;
74
+ width: 56px;
75
+ height: 50px;
76
+ }
77
+ }
78
+ }
79
+ </style>
@@ -1,67 +1,67 @@
1
- <template>
2
- <div class="menu-wrapper">
3
- <template v-if="item.subItems.length == 0">
4
- <template v-if="item.title">
5
- <app-link :to="getUrl(item.url, item)">
6
- <el-menu-item :class="{'submenu-title-noDropdown':!isNest}" :index="item.id">
7
- <item :title="item.title" :icon="item.icon" />
8
- </el-menu-item>
9
- </app-link>
10
- </template>
11
- </template>
12
- <el-submenu v-else ref="subMenu" :index="item.id" popper-append-to-body>
13
- <template slot="title">
14
- <item v-if="item.title" :title="item.title" :icon="item.icon" />
15
- </template>
16
- <sidebar-item
17
- v-for="child in item.subItems"
18
- :key="child.id"
19
- :is-nest="true"
20
- :item="child"
21
- class="nest-menu"
22
- />
23
- </el-submenu>
24
- </div>
25
- </template>
26
-
27
- <script>
28
- import Item from "./Item";
29
- import AppLink from "./Link";
30
- import FixiOSBug from "./FixiOSBug";
31
-
32
- export default {
33
- name: "SidebarItem",
34
- components: { Item, AppLink },
35
- mixins: [FixiOSBug],
36
- props: {
37
- // route object
38
- item: {
39
- type: Object,
40
- required: true
41
- },
42
- isNest: {
43
- type: Boolean,
44
- default: false
45
- },
46
- basePath: {
47
- type: String,
48
- default: ""
49
- }
50
- },
51
- data() {
52
- // To fix https://github.com/PanJiaChen/vue-admin-template/issues/237
53
- // TODO: refactor with render function
54
- this.onlyOneChild = null;
55
- return {};
56
- },
57
- methods: {
58
- getUrl (url, item) {
59
- if(process.env.NODE_ENV == 'development') {
60
- return url
61
- } else {
62
- return item.host + item.url
63
- }
64
- }
65
- }
66
- };
67
- </script>
1
+ <template>
2
+ <div class="menu-wrapper">
3
+ <template v-if="item.subItems.length == 0">
4
+ <template v-if="item.title">
5
+ <app-link :to="getUrl(item.url, item)">
6
+ <el-menu-item :class="{'submenu-title-noDropdown':!isNest}" :index="item.id">
7
+ <item :title="item.title" :icon="item.icon" />
8
+ </el-menu-item>
9
+ </app-link>
10
+ </template>
11
+ </template>
12
+ <el-submenu v-else ref="subMenu" :index="item.id" popper-append-to-body>
13
+ <template slot="title">
14
+ <item v-if="item.title" :title="item.title" :icon="item.icon" />
15
+ </template>
16
+ <sidebar-item
17
+ v-for="child in item.subItems"
18
+ :key="child.id"
19
+ :is-nest="true"
20
+ :item="child"
21
+ class="nest-menu"
22
+ />
23
+ </el-submenu>
24
+ </div>
25
+ </template>
26
+
27
+ <script>
28
+ import Item from "./Item";
29
+ import AppLink from "./Link";
30
+ import FixiOSBug from "./FixiOSBug";
31
+
32
+ export default {
33
+ name: "SidebarItem",
34
+ components: { Item, AppLink },
35
+ mixins: [FixiOSBug],
36
+ props: {
37
+ // route object
38
+ item: {
39
+ type: Object,
40
+ required: true
41
+ },
42
+ isNest: {
43
+ type: Boolean,
44
+ default: false
45
+ },
46
+ basePath: {
47
+ type: String,
48
+ default: ""
49
+ }
50
+ },
51
+ data() {
52
+ // To fix https://github.com/PanJiaChen/vue-admin-template/issues/237
53
+ // TODO: refactor with render function
54
+ this.onlyOneChild = null;
55
+ return {};
56
+ },
57
+ methods: {
58
+ getUrl (url, item) {
59
+ if(process.env.NODE_ENV == 'development') {
60
+ return url
61
+ } else {
62
+ return item.host + item.url
63
+ }
64
+ }
65
+ }
66
+ };
67
+ </script>
@@ -1,114 +1,114 @@
1
- <template>
2
- <div :class="{ 'has-logo': showLogo }">
3
- <logo v-if="showLogo" :collapse="isCollapse" />
4
- <el-scrollbar wrap-class="scrollbar-wrapper">
5
- <el-menu
6
- :default-active="activeMenu"
7
- :collapse="isCollapse"
8
- :background-color="variables.menuBg"
9
- :text-color="variables.menuText"
10
- :unique-opened="true"
11
- :active-text-color="variables.menuActiveText"
12
- :collapse-transition="false"
13
- mode="vertical"
14
- >
15
- <sidebar-item
16
- v-for="route in getMenuList"
17
- :key="route.id"
18
- :item="route"
19
- :base-path="route.url"
20
- />
21
- </el-menu>
22
- </el-scrollbar>
23
- </div>
24
- </template>
25
-
26
- <script>
27
- import { mapGetters } from "vuex";
28
- import Logo from "./Logo";
29
- import SidebarItem from "./SidebarItem";
30
- import variables from "@/styles/variables.scss";
31
-
32
- import { createMenuId } from "@/common/createMenuId";
33
- //TODO
34
- export default {
35
- data() {
36
- return {
37
- devMenuList: [],
38
- };
39
- },
40
- props: {
41
- fromItem: {
42
- type: Number,
43
- default: 0
44
- }
45
- },
46
- components: { SidebarItem, Logo },
47
- computed: {
48
- ...mapGetters(["sidebar", "menuList"]),
49
- activeMenu() {
50
- const route = this.$route;
51
- const { path } = route;
52
- if (route.path) {
53
- return createMenuId(route.path);
54
- }
55
- const realUrl = decodeURIComponent(path).replace(`/child-frame/`, "");
56
- return realUrl;
57
- },
58
- showLogo() {
59
- // return this.$store.state.settings.sidebarLogo;
60
- },
61
- variables() {
62
- return variables;
63
- },
64
- isCollapse() {
65
- return !this.sidebar.opened;
66
- },
67
- getMenuList () {
68
- if(process.env.NODE_ENV === 'development') {
69
- return this.devMenuList
70
- }
71
- return this.menuList
72
- }
73
- },
74
- created() {
75
- if (process.env.NODE_ENV == "development") {
76
- let router = this.$root.$router.options.routes.find(
77
- item => item.path === "/"
78
- );
79
- let { subItems } = this.formatRouter(router, {url:'/'})
80
- this.devMenuList = subItems || []
81
- }
82
- },
83
- methods: {
84
- formatRouter (obj, parent) {
85
- let item = {
86
- title: obj.meta && obj.meta.title || '',
87
- icon: obj.meta && obj.meta.icon || '',
88
- hide: obj.meta && obj.meta.hidden || false,
89
- url: '',
90
- host: window.location.host,
91
- subItems: [],
92
- id: ''
93
- }
94
- if(parent.url == '/') {
95
- obj.url = obj.path
96
- } else {
97
- obj.url = parent.url + '/'+ obj.path
98
- }
99
- item.url = obj.url
100
- item.id = createMenuId(item.url)
101
- if(obj.children && obj.children.length > 0) {
102
- let list = []
103
- obj.children.forEach((it)=>{
104
- list.push(this.formatRouter(it, obj))
105
- })
106
- if(!list.every(i => i['hide'] === true)) {
107
- item.subItems = list.filter(item => item['hide'] !== true)
108
- }
109
- }
110
- return item
111
- }
112
- }
113
- };
114
- </script>
1
+ <template>
2
+ <div :class="{ 'has-logo': showLogo }">
3
+ <logo v-if="showLogo" :collapse="isCollapse" />
4
+ <el-scrollbar wrap-class="scrollbar-wrapper">
5
+ <el-menu
6
+ :default-active="activeMenu"
7
+ :collapse="isCollapse"
8
+ :background-color="variables.menuBg"
9
+ :text-color="variables.menuText"
10
+ :unique-opened="true"
11
+ :active-text-color="variables.menuActiveText"
12
+ :collapse-transition="false"
13
+ mode="vertical"
14
+ >
15
+ <sidebar-item
16
+ v-for="route in getMenuList"
17
+ :key="route.id"
18
+ :item="route"
19
+ :base-path="route.url"
20
+ />
21
+ </el-menu>
22
+ </el-scrollbar>
23
+ </div>
24
+ </template>
25
+
26
+ <script>
27
+ import { mapGetters } from "vuex";
28
+ import Logo from "./Logo";
29
+ import SidebarItem from "./SidebarItem";
30
+ import variables from "@/styles/variables.scss";
31
+
32
+ import { createMenuId } from "@/common/createMenuId";
33
+ //TODO
34
+ export default {
35
+ data() {
36
+ return {
37
+ devMenuList: [],
38
+ };
39
+ },
40
+ props: {
41
+ fromItem: {
42
+ type: Number,
43
+ default: 0
44
+ }
45
+ },
46
+ components: { SidebarItem, Logo },
47
+ computed: {
48
+ ...mapGetters(["sidebar", "menuList"]),
49
+ activeMenu() {
50
+ const route = this.$route;
51
+ const { path } = route;
52
+ if (route.path) {
53
+ return createMenuId(route.path);
54
+ }
55
+ const realUrl = decodeURIComponent(path).replace(`/child-frame/`, "");
56
+ return realUrl;
57
+ },
58
+ showLogo() {
59
+ // return this.$store.state.settings.sidebarLogo;
60
+ },
61
+ variables() {
62
+ return variables;
63
+ },
64
+ isCollapse() {
65
+ return !this.sidebar.opened;
66
+ },
67
+ getMenuList () {
68
+ if(process.env.NODE_ENV === 'development') {
69
+ return this.devMenuList
70
+ }
71
+ return this.menuList
72
+ }
73
+ },
74
+ created() {
75
+ if (process.env.NODE_ENV == "development") {
76
+ let router = this.$root.$router.options.routes.find(
77
+ item => item.path === "/"
78
+ );
79
+ let { subItems } = this.formatRouter(router, {url:'/'})
80
+ this.devMenuList = subItems || []
81
+ }
82
+ },
83
+ methods: {
84
+ formatRouter (obj, parent) {
85
+ let item = {
86
+ title: obj.meta && obj.meta.title || '',
87
+ icon: obj.meta && obj.meta.icon || '',
88
+ hide: obj.meta && obj.meta.hidden || false,
89
+ url: '',
90
+ host: window.location.host,
91
+ subItems: [],
92
+ id: ''
93
+ }
94
+ if(parent.url == '/') {
95
+ obj.url = obj.path
96
+ } else {
97
+ obj.url = parent.url + '/'+ obj.path
98
+ }
99
+ item.url = obj.url
100
+ item.id = createMenuId(item.url)
101
+ if(obj.children && obj.children.length > 0) {
102
+ let list = []
103
+ obj.children.forEach((it)=>{
104
+ list.push(this.formatRouter(it, obj))
105
+ })
106
+ if(!list.every(i => i['hide'] === true)) {
107
+ item.subItems = list.filter(item => item['hide'] !== true)
108
+ }
109
+ }
110
+ return item
111
+ }
112
+ }
113
+ };
114
+ </script>
@@ -1,3 +1,3 @@
1
- export { default as Navbar } from './Navbar'
2
- export { default as Sidebar } from './Sidebar'
3
- export { default as AppMain } from './AppMain'
1
+ export { default as Navbar } from './Navbar'
2
+ export { default as Sidebar } from './Sidebar'
3
+ export { default as AppMain } from './AppMain'