doway-coms 1.6.72 → 1.6.74

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 (75) hide show
  1. package/.browserslistrc +2 -2
  2. package/README.md +28 -28
  3. package/dist/css/chunk-vendors.7f83d8f9.css +8 -0
  4. package/dist/css/index.86478f73.css +3 -0
  5. package/dist/favicon.ico +0 -0
  6. package/dist/js/chunk-vendors.307eaa8f.js +347 -0
  7. package/dist/js/index.48e7f7ac.js +2 -0
  8. package/package.json +53 -52
  9. package/packages/BaseButton/index.js +7 -7
  10. package/packages/BaseButton/src/index.vue +241 -241
  11. package/packages/BaseCheckbox/index.js +7 -7
  12. package/packages/BaseCheckbox/src/index.vue +134 -134
  13. package/packages/BaseDate/index.js +7 -7
  14. package/packages/BaseDate/src/index.vue +197 -197
  15. package/packages/BaseDateWeek/index.js +7 -7
  16. package/packages/BaseDateWeek/src/index.vue +163 -163
  17. package/packages/BaseDatetime/index.js +7 -7
  18. package/packages/BaseDatetime/src/index.vue +196 -196
  19. package/packages/BaseForm/index.js +7 -7
  20. package/packages/BaseForm/src/index.vue +688 -688
  21. package/packages/BaseGantt/index.js +9 -9
  22. package/packages/BaseGantt/src/index.vue +608 -608
  23. package/packages/BaseGrid/index.js +9 -9
  24. package/packages/BaseGrid/src/SeqSetting.vue +273 -0
  25. package/packages/BaseGrid/src/index.vue +3117 -2740
  26. package/packages/BaseGridAdjust/index.js +9 -9
  27. package/packages/BaseGridAdjust/src/index.vue +482 -482
  28. package/packages/BaseInput/index.js +7 -7
  29. package/packages/BaseInput/src/index.vue +164 -164
  30. package/packages/BaseIntervalInput/index.js +7 -7
  31. package/packages/BaseIntervalInput/src/index.vue +310 -310
  32. package/packages/BaseKanbanEmpty/index.js +7 -7
  33. package/packages/BaseKanbanEmpty/src/index.vue +176 -176
  34. package/packages/BaseNumberInput/index.js +7 -7
  35. package/packages/BaseNumberInput/src/index.vue +229 -229
  36. package/packages/BasePagination/index.js +7 -7
  37. package/packages/BasePagination/src/index.vue +91 -91
  38. package/packages/BasePictureCard/index.js +7 -7
  39. package/packages/BasePictureCard/src/index.vue +580 -580
  40. package/packages/BasePrintPreview/index.js +7 -7
  41. package/packages/BasePrintPreview/src/index.vue +117 -117
  42. package/packages/BasePulldown/index.js +7 -7
  43. package/packages/BasePulldown/src/index.vue +1136 -1138
  44. package/packages/BaseSearch/index.js +7 -7
  45. package/packages/BaseSearch/src/index.vue +935 -935
  46. package/packages/BaseSelect/index.js +7 -7
  47. package/packages/BaseSelect/src/index.vue +155 -155
  48. package/packages/BaseSelectMulti/index.js +7 -7
  49. package/packages/BaseSelectMulti/src/index.vue +148 -148
  50. package/packages/BaseTextArea/index.js +7 -7
  51. package/packages/BaseTextArea/src/index.vue +178 -178
  52. package/packages/BaseTime/index.js +7 -7
  53. package/packages/BaseTime/src/index.vue +166 -166
  54. package/packages/BaseTool/index.js +7 -7
  55. package/packages/BaseTool/src/index.vue +349 -349
  56. package/packages/BaseToolStatus/index.js +7 -7
  57. package/packages/BaseToolStatus/src/index.vue +388 -388
  58. package/packages/LeaveAMessage/index.js +7 -7
  59. package/packages/LeaveAMessage/src/index.vue +574 -574
  60. package/packages/index.js +167 -167
  61. package/packages/styles/default.less +80 -80
  62. package/packages/styles/icon/drag.svg +1 -0
  63. package/packages/styles/icon/seqConfig.svg +1 -0
  64. package/packages/utils/api.js +88 -88
  65. package/packages/utils/auth.js +38 -38
  66. package/packages/utils/common.js +595 -595
  67. package/packages/utils/dom.js +181 -181
  68. package/packages/utils/enum.js +84 -84
  69. package/packages/utils/filters.js +458 -458
  70. package/packages/utils/gridFormat.js +60 -60
  71. package/packages/utils/msg.js +16 -16
  72. package/packages/utils/patchFiles.js +44 -44
  73. package/packages/utils/request.js +169 -169
  74. package/packages/utils/store.js +261 -261
  75. package/vue.config.js +59 -59
package/packages/index.js CHANGED
@@ -1,168 +1,168 @@
1
- import Vue from 'vue'
2
- // 导入组件
3
- import BaseInput from './BaseInput/index';
4
- import BaseCheckbox from './BaseCheckbox/index';
5
- import BaseDate from './BaseDate/index';
6
- import BaseDatetime from './BaseDatetime/index';
7
- import BaseDateWeek from './BaseDateWeek/index';
8
- import BaseTextArea from './BaseTextArea/index';
9
- import BaseSelect from './BaseSelect/index';
10
- import BaseSelectMulti from './BaseSelectMulti/index';
11
- import BaseTime from './BaseTime/index';
12
- import BasePagination from './BasePagination/index';
13
- import BaseNumberInput from './BaseNumberInput/index';
14
- import BaseTool from './BaseTool/index';
15
- import BaseToolStatus from './BaseToolStatus/index';
16
- import BasePulldown from './BasePulldown/index';
17
- import BaseIntervalInput from './BaseIntervalInput/index';
18
- import BaseForm from './BaseForm/index';
19
- import BasePictureCard from './BasePictureCard/index';
20
- import BasePrintPreview from './BasePrintPreview/index';
21
- import BaseGantt from "./BaseGantt/index";
22
- import BaseKanbanEmpty from "./BaseKanbanEmpty/index";
23
- import BaseSearch from "./BaseSearch/index";
24
- import BaseButton from "./BaseButton/index";
25
- import LeaveAMessage from "./LeaveAMessage/index";
26
-
27
- import store from './utils/store'
28
- import request from './utils/request'
29
- import BaseGrid from './BaseGrid/index';
30
-
31
- // 存储组件列表
32
- const components = [
33
- BaseInput, BaseCheckbox, BaseDate, BaseDatetime, BaseDateWeek,
34
- BaseTextArea, BaseSelect, BaseSelectMulti, BaseTime, BasePagination,
35
- BaseNumberInput, BaseTool, BaseToolStatus, BasePulldown, BaseIntervalInput,
36
- BaseForm, BasePictureCard, BaseGrid, BasePrintPreview, BaseGantt,
37
- BaseKanbanEmpty, BaseSearch, BaseButton,LeaveAMessage
38
- ];
39
- // 定义 install 方法,接收 Vue 作为参数。如果使用 use 注册插件,则所有的组件都将被注册
40
-
41
- import 'vxe-table/lib/style.css'
42
- import VXETable from 'vxe-table'
43
-
44
-
45
- const popupInterceptor = (params) => {
46
- // 比如点击了某个组件的弹出层面板之后,此时被激活单元格不应该被自动关闭,通过返回 false 可以阻止默认的行为。
47
- let parentElement = (params.$event.target.shadowRoot && params.$event.composed) ?
48
- (params.$event.composedPath()[0] || params.$event.target) : params.$event.target
49
- while (true) {
50
- // console.debug(parentElement)
51
- if (
52
- parentElement &&
53
- (parentElement.className.indexOf('vxe-modal--wrapper') > -1 ||
54
- parentElement.className.indexOf('ant-calendar') > -1 ||
55
- parentElement.className.indexOf('ant-select-dropdown-menu-item') > -1 ||
56
- parentElement.className.indexOf('interceptor-class') > -1 ||
57
- parentElement.className.indexOf('ant-time-picker-panel') > -1)
58
- ) {
59
- //定义网格弹出框不能对焦问题
60
- return false
61
- }
62
- if (parentElement.parentElement) {
63
- parentElement = parentElement.parentElement
64
- } else {
65
- break
66
- }
67
- }
68
-
69
- }
70
- //网格弹出点击拦截器
71
- VXETable.interceptor.add('event.clearActived', (params) => {
72
- return popupInterceptor(params)
73
- })
74
- //网格筛选点击拦截器
75
- VXETable.interceptor.add('event.clearFilter', (params) => {
76
- return popupInterceptor(params)
77
- })
78
-
79
- //表格自定义格式化
80
- import './utils/gridFormat'
81
- // 右键菜单插件
82
- import Contextmenu from "vue-contextmenujs"
83
-
84
- Vue.use(Contextmenu);
85
-
86
- const install = function (Vue) {
87
- //注册grid组件
88
- Vue.use(VXETable)
89
- // 遍历注册全局组件
90
- components.forEach((component) => {
91
- Vue.component(component.name, component);
92
- });
93
- };
94
-
95
- // 环境监测
96
- // 判断是否是直接引入文件
97
- if (typeof window !== 'undefined' && window.Vue) {
98
- install(window.Vue);
99
- }
100
-
101
- import XEUtils from 'xe-utils'
102
- //表单输入框验证
103
- import {
104
- extend,
105
- localize
106
- } from 'vee-validate'
107
- //引入校验规则 安装所有规则
108
- import * as rules from 'vee-validate/dist/rules'
109
- Object.keys(rules).forEach(rule => {
110
- extend(rule, rules[rule])
111
- })
112
-
113
- extend('gt', (value, min) => {
114
- if (XEUtils.toNumber(value) > min) {
115
- return true
116
- }
117
- return `必须大于${min}`
118
- })
119
-
120
- localize({
121
- en: {
122
- messages: {
123
- required: '必填',
124
- min: '不能小于 {length} 个字符',
125
- max: (_, { length }) => `不能大于 ${length} 个字符`,
126
- email: '邮箱输入不符合规则'
127
- }
128
- }
129
- })
130
-
131
- export default {
132
- // 导出的对象必须具有 install,才能被 Vue.use() 方法安装
133
- install
134
- // 以下是具体的组件列表
135
- };
136
- export * from './utils/enum'
137
- export * from './utils/common'
138
- export * from './utils/filters'
139
- export * from './utils/msg'
140
-
141
- export {
142
- BaseInput,
143
- BaseCheckbox,
144
- BaseDate,
145
- BaseDatetime,
146
- BaseDateWeek,
147
- BaseTextArea,
148
- BaseSelect,
149
- BaseSelectMulti,
150
- BaseTime,
151
- BasePagination,
152
- BaseNumberInput,
153
- BaseTool,
154
- BaseToolStatus,
155
- BasePulldown,
156
- BaseIntervalInput,
157
- BaseForm,
158
- BaseGrid,
159
- BasePictureCard,
160
- BasePrintPreview,
161
- BaseGantt,
162
- BaseKanbanEmpty,
163
- BaseSearch,
164
- BaseButton,
165
- LeaveAMessage,
166
- store,
167
- request,
1
+ import Vue from 'vue'
2
+ // 导入组件
3
+ import BaseInput from './BaseInput/index';
4
+ import BaseCheckbox from './BaseCheckbox/index';
5
+ import BaseDate from './BaseDate/index';
6
+ import BaseDatetime from './BaseDatetime/index';
7
+ import BaseDateWeek from './BaseDateWeek/index';
8
+ import BaseTextArea from './BaseTextArea/index';
9
+ import BaseSelect from './BaseSelect/index';
10
+ import BaseSelectMulti from './BaseSelectMulti/index';
11
+ import BaseTime from './BaseTime/index';
12
+ import BasePagination from './BasePagination/index';
13
+ import BaseNumberInput from './BaseNumberInput/index';
14
+ import BaseTool from './BaseTool/index';
15
+ import BaseToolStatus from './BaseToolStatus/index';
16
+ import BasePulldown from './BasePulldown/index';
17
+ import BaseIntervalInput from './BaseIntervalInput/index';
18
+ import BaseForm from './BaseForm/index';
19
+ import BasePictureCard from './BasePictureCard/index';
20
+ import BasePrintPreview from './BasePrintPreview/index';
21
+ import BaseGantt from "./BaseGantt/index";
22
+ import BaseKanbanEmpty from "./BaseKanbanEmpty/index";
23
+ import BaseSearch from "./BaseSearch/index";
24
+ import BaseButton from "./BaseButton/index";
25
+ import LeaveAMessage from "./LeaveAMessage/index";
26
+
27
+ import store from './utils/store'
28
+ import request from './utils/request'
29
+ import BaseGrid from './BaseGrid/index';
30
+
31
+ // 存储组件列表
32
+ const components = [
33
+ BaseInput, BaseCheckbox, BaseDate, BaseDatetime, BaseDateWeek,
34
+ BaseTextArea, BaseSelect, BaseSelectMulti, BaseTime, BasePagination,
35
+ BaseNumberInput, BaseTool, BaseToolStatus, BasePulldown, BaseIntervalInput,
36
+ BaseForm, BasePictureCard, BaseGrid, BasePrintPreview, BaseGantt,
37
+ BaseKanbanEmpty, BaseSearch, BaseButton,LeaveAMessage
38
+ ];
39
+ // 定义 install 方法,接收 Vue 作为参数。如果使用 use 注册插件,则所有的组件都将被注册
40
+
41
+ import 'vxe-table/lib/style.css'
42
+ import VXETable from 'vxe-table'
43
+
44
+
45
+ const popupInterceptor = (params) => {
46
+ // 比如点击了某个组件的弹出层面板之后,此时被激活单元格不应该被自动关闭,通过返回 false 可以阻止默认的行为。
47
+ let parentElement = (params.$event.target.shadowRoot && params.$event.composed) ?
48
+ (params.$event.composedPath()[0] || params.$event.target) : params.$event.target
49
+ while (true) {
50
+ // console.debug(parentElement)
51
+ if (
52
+ parentElement &&
53
+ (parentElement.className.indexOf('vxe-modal--wrapper') > -1 ||
54
+ parentElement.className.indexOf('ant-calendar') > -1 ||
55
+ parentElement.className.indexOf('ant-select-dropdown-menu-item') > -1 ||
56
+ parentElement.className.indexOf('interceptor-class') > -1 ||
57
+ parentElement.className.indexOf('ant-time-picker-panel') > -1)
58
+ ) {
59
+ //定义网格弹出框不能对焦问题
60
+ return false
61
+ }
62
+ if (parentElement.parentElement) {
63
+ parentElement = parentElement.parentElement
64
+ } else {
65
+ break
66
+ }
67
+ }
68
+
69
+ }
70
+ //网格弹出点击拦截器
71
+ VXETable.interceptor.add('event.clearActived', (params) => {
72
+ return popupInterceptor(params)
73
+ })
74
+ //网格筛选点击拦截器
75
+ VXETable.interceptor.add('event.clearFilter', (params) => {
76
+ return popupInterceptor(params)
77
+ })
78
+
79
+ //表格自定义格式化
80
+ import './utils/gridFormat'
81
+ // 右键菜单插件
82
+ import Contextmenu from "vue-contextmenujs"
83
+
84
+ Vue.use(Contextmenu);
85
+
86
+ const install = function (Vue) {
87
+ //注册grid组件
88
+ Vue.use(VXETable)
89
+ // 遍历注册全局组件
90
+ components.forEach((component) => {
91
+ Vue.component(component.name, component);
92
+ });
93
+ };
94
+
95
+ // 环境监测
96
+ // 判断是否是直接引入文件
97
+ if (typeof window !== 'undefined' && window.Vue) {
98
+ install(window.Vue);
99
+ }
100
+
101
+ import XEUtils from 'xe-utils'
102
+ //表单输入框验证
103
+ import {
104
+ extend,
105
+ localize
106
+ } from 'vee-validate'
107
+ //引入校验规则 安装所有规则
108
+ import * as rules from 'vee-validate/dist/rules'
109
+ Object.keys(rules).forEach(rule => {
110
+ extend(rule, rules[rule])
111
+ })
112
+
113
+ extend('gt', (value, min) => {
114
+ if (XEUtils.toNumber(value) > min) {
115
+ return true
116
+ }
117
+ return `必须大于${min}`
118
+ })
119
+
120
+ localize({
121
+ en: {
122
+ messages: {
123
+ required: '必填',
124
+ min: '不能小于 {length} 个字符',
125
+ max: (_, { length }) => `不能大于 ${length} 个字符`,
126
+ email: '邮箱输入不符合规则'
127
+ }
128
+ }
129
+ })
130
+
131
+ export default {
132
+ // 导出的对象必须具有 install,才能被 Vue.use() 方法安装
133
+ install
134
+ // 以下是具体的组件列表
135
+ };
136
+ export * from './utils/enum'
137
+ export * from './utils/common'
138
+ export * from './utils/filters'
139
+ export * from './utils/msg'
140
+
141
+ export {
142
+ BaseInput,
143
+ BaseCheckbox,
144
+ BaseDate,
145
+ BaseDatetime,
146
+ BaseDateWeek,
147
+ BaseTextArea,
148
+ BaseSelect,
149
+ BaseSelectMulti,
150
+ BaseTime,
151
+ BasePagination,
152
+ BaseNumberInput,
153
+ BaseTool,
154
+ BaseToolStatus,
155
+ BasePulldown,
156
+ BaseIntervalInput,
157
+ BaseForm,
158
+ BaseGrid,
159
+ BasePictureCard,
160
+ BasePrintPreview,
161
+ BaseGantt,
162
+ BaseKanbanEmpty,
163
+ BaseSearch,
164
+ BaseButton,
165
+ LeaveAMessage,
166
+ store,
167
+ request,
168
168
  }
@@ -1,80 +1,80 @@
1
- .d-control-container {
2
- display: flex;
3
- }
4
- .d-control-label {
5
- font-size:12px;
6
- font-weight: bold;
7
- // width:100px;
8
- flex: 0 0 100px;
9
- }
10
- .d-control {
11
- flex:1;
12
- width: 100%;
13
- height: 30px;
14
- overflow: hidden;
15
- white-space: nowrap;
16
- text-overflow: ellipsis;
17
- }
18
- .d-control-label-required{
19
- color:red;
20
- }
21
- .d-error-input{
22
- border-color: #f22435 !important;
23
- input{
24
- border-color: #f22435 !important;
25
- }
26
- input:hover{
27
- border-color: #f22435!important;
28
- }
29
- div{
30
- border-color: #f22435!important;
31
- }
32
- }
33
- .d-error-msg{
34
- color:#f22435;
35
- font-size: 0.75em;
36
- position: fixed;
37
- }
38
-
39
- .d-form-items {
40
- // margin-top: 100px;
41
- // margin-left: 100px;
42
- // margin-right: 100px;
43
- display: flex;
44
- flex-flow: row wrap;
45
- justify-content: flex-start;
46
- padding: 8px 8px 8px 8px;
47
- overflow-y: auto;
48
- .d-form-item-ghost {
49
- visibility: hidden;
50
- height: 0;
51
- min-height: 0px !important;
52
- flex-grow: 1;
53
- flex-shrink: 1;
54
- flex-basis: auto;
55
- border: 1px solid #9ad4dc;
56
- min-width: 150px;
57
- width: 280px;
58
- margin-right: 8px;
59
- margin-left: 8px;
60
- border-radius: 6px;
61
- }
62
- .d-form-item {
63
- width: 280px;
64
- flex-grow: 1;
65
- flex-shrink: 1;
66
- flex-basis: auto;
67
- margin-top: 0px;
68
- margin-right: 8px;
69
- margin-bottom: 0px;
70
- margin-left: 8px;
71
- padding: 6px 8px 6px 8px;
72
- min-width: 150px;
73
- border-radius: 6px;
74
- .search-view-icon {
75
- float: left;
76
- width: 64px;
77
- height: 64px;
78
- }
79
- }
80
- }
1
+ .d-control-container {
2
+ display: flex;
3
+ }
4
+ .d-control-label {
5
+ font-size:12px;
6
+ font-weight: bold;
7
+ // width:100px;
8
+ flex: 0 0 100px;
9
+ }
10
+ .d-control {
11
+ flex:1;
12
+ width: 100%;
13
+ height: 30px;
14
+ overflow: hidden;
15
+ white-space: nowrap;
16
+ text-overflow: ellipsis;
17
+ }
18
+ .d-control-label-required{
19
+ color:red;
20
+ }
21
+ .d-error-input{
22
+ border-color: #f22435 !important;
23
+ input{
24
+ border-color: #f22435 !important;
25
+ }
26
+ input:hover{
27
+ border-color: #f22435!important;
28
+ }
29
+ div{
30
+ border-color: #f22435!important;
31
+ }
32
+ }
33
+ .d-error-msg{
34
+ color:#f22435;
35
+ font-size: 0.75em;
36
+ position: fixed;
37
+ }
38
+
39
+ .d-form-items {
40
+ // margin-top: 100px;
41
+ // margin-left: 100px;
42
+ // margin-right: 100px;
43
+ display: flex;
44
+ flex-flow: row wrap;
45
+ justify-content: flex-start;
46
+ padding: 8px 8px 8px 8px;
47
+ overflow-y: auto;
48
+ .d-form-item-ghost {
49
+ visibility: hidden;
50
+ height: 0;
51
+ min-height: 0px !important;
52
+ flex-grow: 1;
53
+ flex-shrink: 1;
54
+ flex-basis: auto;
55
+ border: 1px solid #9ad4dc;
56
+ min-width: 150px;
57
+ width: 280px;
58
+ margin-right: 8px;
59
+ margin-left: 8px;
60
+ border-radius: 6px;
61
+ }
62
+ .d-form-item {
63
+ width: 280px;
64
+ flex-grow: 1;
65
+ flex-shrink: 1;
66
+ flex-basis: auto;
67
+ margin-top: 0px;
68
+ margin-right: 8px;
69
+ margin-bottom: 0px;
70
+ margin-left: 8px;
71
+ padding: 6px 8px 6px 8px;
72
+ min-width: 150px;
73
+ border-radius: 6px;
74
+ .search-view-icon {
75
+ float: left;
76
+ width: 64px;
77
+ height: 64px;
78
+ }
79
+ }
80
+ }
@@ -0,0 +1 @@
1
+ <?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1693460754360" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3580" xmlns:xlink="http://www.w3.org/1999/xlink" width="32" height="32"><path d="M682.688 746.688c11.776 0 21.312 9.536 21.312 21.312v85.312c0 11.776-9.6 21.376-21.312 21.376H597.312A21.312 21.312 0 0 1 576 853.312V768c0-11.776 9.6-21.312 21.312-21.312h85.376z m-256 0c11.776 0 21.312 9.536 21.312 21.312v85.312c0 11.776-9.6 21.376-21.312 21.376H341.312A21.312 21.312 0 0 1 320 853.312V768c0-11.776 9.6-21.312 21.312-21.312h85.376zM597.312 448h85.376c11.776 0 21.312 9.6 21.312 21.312v85.376c0 11.776-9.6 21.312-21.312 21.312H597.312A21.312 21.312 0 0 1 576 554.688V469.312C576 457.6 585.6 448 597.312 448z m-256 0h85.376C438.4 448 448 457.6 448 469.312v85.376C448 566.4 438.4 576 426.688 576H341.312A21.312 21.312 0 0 1 320 554.688V469.312C320 457.6 329.6 448 341.312 448z m341.376-298.688c11.776 0 21.312 9.6 21.312 21.376V256c0 11.776-9.6 21.312-21.312 21.312H597.312A21.312 21.312 0 0 1 576 256V170.688c0-11.776 9.6-21.376 21.312-21.376h85.376z m-256 0c11.776 0 21.312 9.6 21.312 21.376V256c0 11.776-9.6 21.312-21.312 21.312H341.312A21.312 21.312 0 0 1 320 256V170.688c0-11.776 9.6-21.376 21.312-21.376h85.376z" fill="#8a8a8a" p-id="3581"></path></svg>
@@ -0,0 +1 @@
1
+ <?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1693393160099" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2189" width="32" height="32" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M512 938.666667a32.032 32.032 0 0 1-15.648-4.085334l-352-197.333333A32 32 0 0 1 128 709.333333v-394.666666a32 32 0 0 1 16.352-27.914667l352-197.333333a32 32 0 0 1 31.296 0l352 197.333333A32 32 0 0 1 896 314.666667v394.666666a32 32 0 0 1-16.352 27.914667l-352 197.333333A32 32 0 0 1 512 938.666667zM192 690.581333L512 869.973333l320-179.392V333.408L512 154.016 192 333.408v357.173333z" p-id="2190"></path><path d="M512 682.666667c-94.101333 0-170.666667-76.565333-170.666667-170.666667S417.898667 341.333333 512 341.333333s170.666667 76.565333 170.666667 170.666667-76.565333 170.666667-170.666667 170.666667z m0-277.333334c-58.816 0-106.666667 47.850667-106.666667 106.666667s47.850667 106.666667 106.666667 106.666667 106.666667-47.850667 106.666667-106.666667S570.816 405.333333 512 405.333333z" p-id="2191"></path></svg>