react_hsbc_teller 2.0.24 → 2.0.25

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 (26) hide show
  1. package/lib/hsbc.js +1 -1
  2. package/package.json +1 -1
  3. package/packages/api/api.js +91 -0
  4. package/packages/assets/mp3/ipad_leave_error.mp3 +0 -0
  5. package/packages/assets/mp3/ipad_low_power.mp3 +0 -0
  6. package/packages/demo/demo.js +2 -0
  7. package/packages/pages/foot/foot.jsx +2 -2
  8. package/packages/pages/multiModule/components/copy/agree.jsx +115 -0
  9. package/packages/pages/multiModule/components/copy/agree.less +105 -0
  10. package/packages/pages/multiModule/components/copy/copyTwo.jsx +663 -0
  11. package/packages/pages/multiModule/components/copy/copyTwo.less +180 -0
  12. package/packages/pages/multiModule/components/copy/copy_en.jsx +365 -0
  13. package/packages/pages/multiModule/components/copy/copy_en.less +145 -0
  14. package/packages/pages/multiModule/components/copy/copylist.jsx +291 -0
  15. package/packages/pages/multiModule/components/copy/copylist.less +83 -0
  16. package/packages/pages/multiModule/components/copy/risk.jsx +294 -0
  17. package/packages/pages/multiModule/components/copy/risk.less +123 -0
  18. package/packages/pages/multiModule/components/sign/signMy.jsx +306 -0
  19. package/packages/pages/multiModule/components/sign/signMy.less +128 -0
  20. package/packages/pages/multiModule/components/subscribe/subscribe.jsx +113 -0
  21. package/packages/pages/multiModule/components/subscribe/subscribe.less +82 -0
  22. package/packages/pages/multiModule/multiModule.jsx +26 -0
  23. package/packages/pages/multiModule/multiModule.less +20 -0
  24. package/packages/pages/video/video.jsx +388 -148
  25. package/packages/utils/asrController.js +242 -0
  26. package/packages/utils/recorder.js +289 -0
@@ -0,0 +1,180 @@
1
+ .copyTwo{
2
+ font-size: 16px;
3
+ // padding: 14px 24px;
4
+ background-color:#F2F2F2 ;
5
+ display: flex;
6
+ flex-direction: column;
7
+ min-height: 100%;
8
+ height: 100%;
9
+ overflow: hidden;
10
+ .thehead{
11
+ background-color: white;
12
+ display: flex;
13
+ justify-content: space-between;
14
+ padding: 14px 24px;
15
+ .title{
16
+ display: flex;
17
+ .title-color{
18
+ width: 2px;
19
+ height: 1.5rem;
20
+ background: #00847F;
21
+ margin-top: 0.25rem;
22
+ }
23
+ .title-text{
24
+ font-size: 1.5rem;
25
+ color: #323232;
26
+ margin-left: 8px;
27
+ }
28
+
29
+ }
30
+ .btns{
31
+ width: 320px;
32
+ display: flex;
33
+ justify-content: flex-end;
34
+ }
35
+ .button{
36
+ width: 96px;
37
+ height: 2rem;
38
+ background: #F9F2F3;
39
+ border-radius: 2px;
40
+ border: 1px solid #E5B2B5;
41
+ font-size: 14px;
42
+ color: #DB0011;
43
+ line-height: 2rem;
44
+ text-align: center;
45
+ margin-left: 10px;
46
+ display: block;
47
+ cursor: pointer;
48
+ &.gray{
49
+ color: #646464;
50
+ border: 1px solid #DCDCDC;
51
+ background-color: white;
52
+ }
53
+ }
54
+ }
55
+
56
+ .contents{
57
+ font-size: 20px;
58
+ height: 250px;
59
+ background-color: white;
60
+ padding: 14px 24px;
61
+ flex: 1;
62
+ }
63
+
64
+ .copy-area{
65
+ display: flex;
66
+ flex-direction: row;
67
+ flex-wrap: nowrap;
68
+ margin-top: 20px;
69
+
70
+ .left{
71
+ flex: 1;
72
+ background-color: white;
73
+ width: 34vmin;
74
+ height: 34vmin;
75
+ overflow-y: hidden;
76
+ .pic{
77
+ // width: 50px;
78
+ // height: 50px;
79
+ object-fit: contain;
80
+ }
81
+ .imgLeft{
82
+ height: 28vmin;
83
+ overflow-y: overlay;
84
+ }
85
+ .imgLeft::-webkit-scrollbar {
86
+ width: 5px;
87
+ height: 5px;
88
+ -webkit-border-radius: 5px;
89
+ -moz-border-radius: 5px;
90
+ border-radius: 5px;
91
+ }
92
+ .imgLeft::-webkit-scrollbar-thumb {
93
+ background-color: rgba(191, 191, 191, 191);
94
+ background-clip: padding-box;
95
+ -webkit-border-radius: 5px;
96
+ -moz-border-radius: 5px;
97
+ border-radius: 5px;
98
+ min-height: 28px;
99
+ }
100
+ .imgLeft::-webkit-scrollbar-thumb:hover {
101
+ background-color: rgba(0, 0, 0, 0.5);
102
+ -webkit-border-radius: 5px;
103
+ -moz-border-radius: 5px;
104
+ border-radius: 5px;
105
+ }
106
+ .footTwo{
107
+ height: 2.9vmin;
108
+ text-align: -webkit-center;
109
+ }
110
+ }
111
+ .right{
112
+ margin-left: 20px;
113
+ background-color: white;
114
+ background-blend-mode: multiply;
115
+ width: 34vmin;
116
+ height: 34vmin;
117
+ position: relative;
118
+ .current-text{
119
+ z-index: -1;
120
+ font-size: 300px;
121
+ position: absolute;
122
+ top: 50%;
123
+ left: 50%;
124
+ transform: translate(-50%, -50%);
125
+ color: #F5F5F5;
126
+ -webkit-touch-callout: none; /* iOS Safari */
127
+ -webkit-user-select: none; /* Chrome/Safari/Opera */
128
+ -khtml-user-select: none; /* Konqueror */
129
+ -moz-user-select: none; /* Firefox */
130
+ -ms-user-select: none; /* Internet Explorer/Edge */
131
+ user-select: none;
132
+ }
133
+ #canvasF{
134
+ z-index: 10;
135
+ }
136
+ }
137
+ }
138
+
139
+ .mask{
140
+ position: absolute;
141
+ z-index: 11;
142
+ background: #383838;
143
+ opacity: 0.3;
144
+ width: 100%;
145
+ height: 100%;
146
+ }
147
+ }
148
+ .modalEndTitle{
149
+ font-size: 20px;
150
+ }
151
+ .modalEnd{
152
+ font-size: 15px;
153
+ margin-left: 20px;
154
+ margin-top: 15px;
155
+ }
156
+
157
+ .footTwo{
158
+ .footThree{
159
+ display: inline-flex;
160
+ }
161
+ .button{
162
+ width: 96px;
163
+ height: 40px;
164
+ background: #F9F2F3;
165
+ border-radius: 2px;
166
+ border: 1px solid #E5B2B5;
167
+ font-size: 14px;
168
+ color: #DB0011;
169
+ line-height: 40px;
170
+ text-align: center;
171
+ margin-left: 10px;
172
+ display: block;
173
+ cursor: pointer;
174
+ &.gray{
175
+ color: #646464;
176
+ border: 1px solid #DCDCDC;
177
+ background-color: white;
178
+ }
179
+ }
180
+ }
@@ -0,0 +1,365 @@
1
+ import React, { Component } from 'react';
2
+ import { FormattedMessage } from 'react-intl';
3
+ import './copy_en.less'
4
+ import Modal from "antd/lib/modal";
5
+ import 'antd/lib/modal/style'
6
+ import { Button } from '../../../../../node_modules/antd/lib/index';
7
+ class Copy extends Component {
8
+ signCanvas = React.createRef();
9
+ state = {
10
+ finalImage: "",
11
+ pics: [],
12
+ isFinish: false,
13
+ canvasCtx: null,
14
+ stageInfo: '',
15
+ isDown: false,
16
+ startY: '',
17
+ startX: '',
18
+ isModalVisibleEnd: false,
19
+ isSignOk: false,
20
+ isModalVisibleSave: false
21
+ };
22
+
23
+ componentDidMount() {
24
+ const canvas = this.refs.canvasF;
25
+ canvas.height = this.refs.canvasHW.offsetHeight - 0;
26
+ canvas.width = this.refs.canvasHW.offsetWidth - 0;
27
+ this.state.canvasCtx = canvas.getContext('2d');
28
+ this.state.stageInfo = canvas.getBoundingClientRect();
29
+ this.state.canvasCtx.lineWidth = 6;
30
+ this.state.canvasCtx.lineCap = "round";
31
+ this.state.isSignOk = false
32
+
33
+ canvas.addEventListener('touchstart', this.touchStart, { passive: false });
34
+ canvas.addEventListener('touchmove', this.touchMove, { passive: false });
35
+ canvas.addEventListener('touchend', this.touchEnd, { passive: false });
36
+ }
37
+ componentWillUnmount () {
38
+ const canvas = this.refs.canvasF;
39
+ canvas.removeEventListener('touchstart', this.touchStart);
40
+ canvas.removeEventListener('touchmove', this.touchMove);
41
+ canvas.removeEventListener('touchend', this.touchEnd);
42
+ }
43
+ // 清空画布
44
+ clearCanvas = () => {
45
+ this.state.isSignOk = false
46
+ const canvas = this.refs.canvasF;
47
+ // 清除画布
48
+ this.state.canvasCtx.clearRect(
49
+ 0,
50
+ 0,
51
+ canvas.width,
52
+ canvas.height,
53
+ );
54
+ }
55
+ touchStart=(ev)=> {
56
+ this.state.isSignOk = true
57
+ ev = ev || event
58
+ ev.preventDefault()
59
+ if (ev.touches.length == 1) {
60
+ let obj = {
61
+ x: ev.targetTouches[0].clientX,
62
+ y: ev.targetTouches[0].clientY,
63
+ }
64
+ this.state.startX = obj.x
65
+ this.state.startY = obj.y
66
+ this.state.canvasCtx.beginPath()
67
+ const canvas = this.refs.canvasF;
68
+ this.state.canvasCtx.moveTo(this.state.startX - canvas.getBoundingClientRect().left, this.state.startY - canvas.getBoundingClientRect().top);
69
+ this.state.canvasCtx.lineTo(obj.x - canvas.getBoundingClientRect().left, obj.y - canvas.getBoundingClientRect().top);
70
+ this.state.canvasCtx.stroke()
71
+ this.state.canvasCtx.closePath()
72
+ // this.points.push(obj)
73
+
74
+ }
75
+ }
76
+ touchMove=(ev)=>{
77
+ ev = ev || event
78
+ ev.preventDefault()
79
+ if (ev.touches.length == 1) {
80
+ let obj = {
81
+ x: ev.targetTouches[0].clientX,
82
+ y: ev.targetTouches[0].clientY
83
+ }
84
+ this.state.canvasCtx.beginPath()
85
+ const canvas = this.refs.canvasF;
86
+ this.state.canvasCtx.moveTo(this.state.startX - canvas.getBoundingClientRect().left, this.state.startY - canvas.getBoundingClientRect().top);
87
+ this.state.canvasCtx.lineTo(obj.x - canvas.getBoundingClientRect().left, obj.y - canvas.getBoundingClientRect().top);
88
+ this.state.canvasCtx.stroke()
89
+ this.state.canvasCtx.closePath()
90
+ this.state.startY = obj.y
91
+ this.state.startX = obj.x
92
+ // this.points.push(obj)
93
+ }
94
+ }
95
+ touchEnd=(ev)=> {
96
+ ev = ev || event
97
+ ev.preventDefault()
98
+ if (ev.touches.length == 1) {
99
+ let obj = {
100
+ x: ev.targetTouches[0].clientX ,
101
+ y: ev.targetTouches[0].clientY
102
+ }
103
+ this.state.canvasCtx.beginPath()
104
+ const canvas = this.refs.canvasF;
105
+ this.state.canvasCtx.moveTo(this.state.startX - canvas.getBoundingClientRect().left, this.state.startY - canvas.getBoundingClientRect().top);
106
+ this.state.canvasCtx.lineTo(obj.x - canvas.getBoundingClientRect().left, obj.y - canvas.getBoundingClientRect().top);
107
+ this.state.canvasCtx.stroke()
108
+ this.state.canvasCtx.closePath()
109
+ // this.points.push(obj)
110
+ }
111
+ }
112
+ // pc
113
+ mouseDown=(ev) =>{
114
+ this.state.isSignOk = true
115
+ ev.preventDefault();
116
+ const obj = {
117
+ x: ev.pageX,
118
+ y: ev.pageY,
119
+ };
120
+ const canvas = this.refs.canvasF;
121
+ this.state.startX = obj.x;
122
+ this.state.startY = obj.y;
123
+ this.state.canvasCtx.beginPath();
124
+ this.state.canvasCtx.moveTo(this.state.startX - canvas.getBoundingClientRect().left, this.state.startY - canvas.getBoundingClientRect().top);
125
+ this.state.canvasCtx.lineTo(obj.x - canvas.getBoundingClientRect().left, obj.y - canvas.getBoundingClientRect().top);
126
+ this.state.canvasCtx.stroke();
127
+ this.state.canvasCtx.closePath();
128
+ this.state.isDown = true;
129
+
130
+ }
131
+ mouseMove=(ev)=> {
132
+ ev.preventDefault();
133
+ if (this.state.isDown) {
134
+ const obj = {
135
+ x: ev.pageX,
136
+ y: ev.pageY,
137
+ };
138
+ const canvas = this.refs.canvasF;
139
+ if(obj.x - canvas.getBoundingClientRect().left<0 || obj.x - canvas.getBoundingClientRect().left> canvas.width || obj.y - canvas.getBoundingClientRect().top< 0 || obj.y - canvas.getBoundingClientRect().top> canvas.height) {
140
+ this.state.isDown = false;
141
+ }
142
+ this.state.moveY = obj.y;
143
+ this.state.moveX = obj.x;
144
+ this.state.canvasCtx.beginPath();
145
+ this.state.canvasCtx.moveTo(this.state.startX - canvas.getBoundingClientRect().left, this.state.startY - canvas.getBoundingClientRect().top);
146
+ this.state.canvasCtx.lineTo(obj.x - canvas.getBoundingClientRect().left, obj.y - canvas.getBoundingClientRect().top);
147
+ this.state.canvasCtx.stroke();
148
+ this.state.canvasCtx.closePath();
149
+ this.state.startY = obj.y;
150
+ this.state.startX = obj.x;
151
+ }
152
+ }
153
+ mouseUp=(ev)=> {
154
+ ev.preventDefault();
155
+ const obj = {
156
+ x: ev.pageX,
157
+ y: ev.pageY,
158
+ };
159
+ const canvas = this.refs.canvasF;
160
+ this.state.canvasCtx.beginPath();
161
+ this.state.canvasCtx.moveTo(this.state.startX - canvas.getBoundingClientRect().left, this.state.startY - canvas.getBoundingClientRect().top);
162
+ this.state.canvasCtx.lineTo(obj.x - canvas.getBoundingClientRect().left, obj.y - canvas.getBoundingClientRect().top);
163
+ this.state.canvasCtx.stroke();
164
+ this.state.canvasCtx.closePath();
165
+ this.state.isDown = false;
166
+
167
+ }
168
+ // 提交
169
+ commit = async () =>{
170
+ if(this.state.isSignOk) {
171
+ this.save()
172
+ }
173
+
174
+ const file = await this.getFinalImage()
175
+ const item = this.props.item;
176
+ this.props.next({
177
+ type: item.type,
178
+ file: file, //.replace('data:image/png;base64,',''),
179
+ sequence: item.sequence
180
+ })
181
+ }
182
+ // 合成最终图片
183
+ getFinalImage = () => {
184
+ return new Promise(resolve => {
185
+ let canvas = document.createElement('canvas');
186
+ let ctx = canvas.getContext('2d');
187
+ const rate = parseFloat(this.props.rate)
188
+ // console.log('rate',rate)
189
+ const num = this.state.pics.length
190
+ const blockWidth = 300; // 单字宽
191
+ const blockHeight = this.refs.canvasF.height * blockWidth / this.refs.canvasF.width; // 单字高
192
+ var wordsPerLine = this.props.item.cell || 8 // 每行图片数
193
+ // 计算每行个数 以适应整个图片比例
194
+ for (let n=1;n<20;n++){
195
+ let width = blockWidth * n;
196
+ let height = width/rate;
197
+ // console.log(n, width, height)
198
+ // console.log(Math.ceil(num/n) * blockHeight, (Math.ceil(num/n)+1) * blockHeight)
199
+ if(Math.ceil(num/n) * blockHeight <= height && (Math.ceil(num/n)+1) * blockHeight > height){
200
+ wordsPerLine = n;
201
+ break
202
+ } else if((Math.ceil(num/n)+1) * blockHeight <= height){
203
+ wordsPerLine = n;
204
+ break
205
+ }
206
+ }
207
+ const canvasWidth = blockWidth * wordsPerLine;
208
+ const canvasHeight = canvasWidth / rate
209
+ // console.log(canvasWidth, canvasHeight)
210
+ // const canvasHeight = this.props.item.row? this.props.item.row*blockHeight: (Math.ceil( this.state.pics.length / wordsPerLine) * blockHeight)
211
+
212
+ canvas.width = canvasWidth;
213
+ canvas.height = canvasHeight;
214
+ // 画背景
215
+ // ctx.fillStyle = 'white';
216
+ // ctx.fillRect(0, 0, canvasWidth, canvasHeight);
217
+
218
+ // 拼接图片绘制
219
+ let pics = this.state.pics
220
+ for (let i = 0;i< pics.length; i++){
221
+
222
+ let rowIndex = Math.floor( i / wordsPerLine)
223
+ let colIndex = Math.floor( i % wordsPerLine)
224
+
225
+ // 画图
226
+ let img = new Image()
227
+ img.src = pics[i]
228
+ img.onload = () =>{
229
+ ctx.drawImage(img, colIndex*blockWidth,(rowIndex)*blockHeight, blockWidth, blockHeight);
230
+ if(i===pics.length-1) {
231
+ console.log(canvas.toDataURL())
232
+ resolve(canvas.toDataURL())
233
+ }
234
+ }
235
+
236
+ }
237
+ })
238
+ }
239
+ // 回退一个
240
+ back = () => {
241
+ this.state.pics.pop()
242
+ this.setState({
243
+ pics: this.state.pics
244
+ })
245
+ this.clearCanvas()
246
+ }
247
+
248
+ // 保存一屏
249
+ save = () => {
250
+ if(this.state.isSignOk) {
251
+ this.state.pics.push(this.refs.canvasF.toDataURL());
252
+ this.setState({
253
+ pics: this.state.pics
254
+ },()=>{
255
+ const $div = document.getElementById('scrollDiv');
256
+ $div.scrollTop = $div.scrollHeight;
257
+ })
258
+
259
+ this.clearCanvas()
260
+ } else {
261
+ this.setState({
262
+ isModalVisibleSave: true
263
+ })
264
+ }
265
+ }
266
+ handleOkSave=()=>{
267
+ this.setState({
268
+ isModalVisibleSave: false
269
+ })
270
+ }
271
+ exit = () => {
272
+ this.setState({
273
+ isModalVisibleEnd: true
274
+ })
275
+ }
276
+ handleCancelEnd = () => {
277
+ this.setState({
278
+ isModalVisibleEnd: false
279
+ })
280
+ }
281
+ handleOkEnd = () => {
282
+ this.setState({
283
+ isModalVisibleEnd: false
284
+ })
285
+ this.props.exit()
286
+ }
287
+ render() {
288
+ const {item} = this.props;
289
+ return (
290
+ <div className="copy">
291
+ <div className="thehead">
292
+ <div className="title">
293
+ <div className="title-color"></div>
294
+ <div className="title-text">{this.props.title}</div>
295
+ </div>
296
+
297
+ <div className="btnsEN">
298
+ <div className="buttonEN gray" onClick={this.exit}><FormattedMessage id="exit" /></div>
299
+ {
300
+ this.state.pics.length > 0? <div className="buttonEN" onClick={this.commit}><FormattedMessage id="commit" /></div>: null
301
+ }
302
+ </div>
303
+ </div>
304
+ <div className="contents">
305
+ <div className='content-desc'>{item.subContent[0].desc}</div>
306
+ <div className='copy-desc' id="scrollDiv">
307
+ {
308
+ this.state.pics.map((pic,index)=>{
309
+ return (
310
+ <img key={index} className="pic" src={pic}></img>
311
+ )
312
+ })
313
+ }
314
+ </div>
315
+ </div>
316
+
317
+ <div className="copy-area">
318
+ <div className="right" ref="canvasHW">
319
+ <canvas
320
+ id="canvasF"
321
+ ref="canvasF"
322
+ onMouseDown={this.mouseDown}
323
+ onMouseMove={this.mouseMove}
324
+ onMouseUp={this.mouseUp}
325
+ ></canvas>
326
+ </div>
327
+ <div className="btnsEN footEN">
328
+ <div className="buttonEN gray" onClick={this.back}><FormattedMessage id="back" /></div>
329
+ <div className="buttonEN gray" onClick={this.clearCanvas}><FormattedMessage id="clearScreen" /></div>
330
+ <div className="buttonEN" onClick={this.save}><FormattedMessage id="ok" /></div>
331
+
332
+ </div>
333
+ </div>
334
+
335
+ <Modal transitionName="" maskTransitionName="" getContainer={document.getElementById('multiModule')} destroyOnClose={true} closable={false} centered={true} visible={this.state.isModalVisibleSave} footer={[<div key='end'>
336
+ <Button className="modelButtonOk" type="primary" danger onClick={this.handleOkSave}><FormattedMessage id="ok" /></Button>
337
+ </div>
338
+ ]}>
339
+ <div className='endModal'>
340
+ <div className='modalEnd'>
341
+ <FormattedMessage id="noCopy" />
342
+ </div>
343
+ </div>
344
+ </Modal>
345
+ <Modal transitionName="" maskTransitionName="" getContainer={document.getElementById('multiModule')} destroyOnClose={true} closable={false} centered={true} visible={this.state.isModalVisibleEnd} footer={[<div key='end'>
346
+ <Button className="modelButtonCancel" onClick={this.handleCancelEnd}><FormattedMessage id="cancel" /></Button>
347
+ <Button className="modelButtonOk" type="primary" danger onClick={this.handleOkEnd}><FormattedMessage id="ok" /></Button>
348
+ </div>
349
+ ]}>
350
+ <div className='endModal'>
351
+ <div className='modalEndTitle'>
352
+ <FormattedMessage id="whether" />
353
+ </div>
354
+ <div className='modalEnd'>
355
+ <FormattedMessage id="progress" />
356
+ </div>
357
+ </div>
358
+ </Modal>
359
+ </div>
360
+ );
361
+ }
362
+
363
+ }
364
+
365
+ export default Copy;
@@ -0,0 +1,145 @@
1
+ .copy{
2
+ font-size: 16px;
3
+ // padding: 14px 24px;
4
+ background-color:#F2F2F2 ;
5
+ display: flex;
6
+ flex-direction: column;
7
+ min-height: 100%;
8
+ height: 100%;
9
+ .copy-desc{
10
+ height: ~"calc(100% - 80px)";
11
+ overflow-y: overlay;
12
+ }
13
+ .copy-desc::-webkit-scrollbar {
14
+ width: 5px;
15
+ height: 5px;
16
+ -webkit-border-radius: 5px;
17
+ -moz-border-radius: 5px;
18
+ border-radius: 5px;
19
+ }
20
+ .copy-desc::-webkit-scrollbar-thumb {
21
+ background-color: rgba(191, 191, 191, 191);
22
+ background-clip: padding-box;
23
+ -webkit-border-radius: 5px;
24
+ -moz-border-radius: 5px;
25
+ border-radius: 5px;
26
+ min-height: 28px;
27
+ }
28
+ .copy-desc::-webkit-scrollbar-thumb:hover {
29
+ background-color: rgba(0, 0, 0, 0.5);
30
+ -webkit-border-radius: 5px;
31
+ -moz-border-radius: 5px;
32
+ border-radius: 5px;
33
+ }
34
+ .content-desc{
35
+ height: 80px;
36
+ overflow-y: overlay;
37
+ }
38
+ .thehead{
39
+ background-color: white;
40
+ display: flex;
41
+ justify-content: space-between;
42
+ padding: 14px 24px;
43
+ .title{
44
+ display: flex;
45
+ .title-color{
46
+ width: 2px;
47
+ height: 1.5rem;
48
+ background: #00847F;
49
+ margin-top: 0.25rem;
50
+ }
51
+ .title-text{
52
+ font-size: 1.5rem;
53
+ color: #323232;
54
+ margin-left: 8px;
55
+ }
56
+
57
+ }
58
+
59
+ }
60
+
61
+ .contents{
62
+ font-size: 18px;
63
+ height: 250px;
64
+ background-color: white;
65
+ padding: 14px 24px;
66
+ flex: 1;
67
+ }
68
+ .pic{
69
+ width: 100px;
70
+ height: auto;
71
+ }
72
+ .copy-area{
73
+ display: flex;
74
+ flex-direction: column;
75
+ flex-wrap: nowrap;
76
+ margin-top: 20px;
77
+ background-color: white;
78
+ padding: 20px;
79
+ flex: 1;
80
+
81
+ .right{
82
+ width: 100%;
83
+ height: 100%;
84
+ border: 1.5px dashed #646464;
85
+ border-radius: 4px;
86
+ .current-text{
87
+ z-index: -1;
88
+ font-size: 300px;
89
+ position: absolute;
90
+ top: 50%;
91
+ left: 50%;
92
+ transform: translate(-50%, -50%);
93
+ color: #F5F5F5;
94
+ -webkit-touch-callout: none; /* iOS Safari */
95
+ -webkit-user-select: none; /* Chrome/Safari/Opera */
96
+ -khtml-user-select: none; /* Konqueror */
97
+ -moz-user-select: none; /* Firefox */
98
+ -ms-user-select: none; /* Internet Explorer/Edge */
99
+ user-select: none;
100
+ }
101
+ #canvasF{
102
+ z-index: 10;
103
+ }
104
+ }
105
+ }
106
+ }
107
+ .modalEndTitle{
108
+ font-size: 20px;
109
+ }
110
+ .modalEnd{
111
+ font-size: 15px;
112
+ margin-left: 20px;
113
+ margin-top: 15px;
114
+ }
115
+
116
+ .btnsEN{
117
+ // width: 320px;
118
+ display: flex;
119
+ justify-content: flex-end;
120
+ &.footEN{
121
+ justify-content: center;
122
+ background: #fff;
123
+ width: 100%;
124
+ padding-top: 14px;
125
+ }
126
+ }
127
+ .buttonEN{
128
+ width: 96px;
129
+ height: 2rem;
130
+ background: #F9F2F3;
131
+ border-radius: 2px;
132
+ border: 1px solid #E5B2B5;
133
+ font-size: 14px;
134
+ color: #DB0011;
135
+ line-height: 2rem;
136
+ text-align: center;
137
+ margin-left: 10px;
138
+ display: block;
139
+ cursor: pointer;
140
+ &.gray{
141
+ color: #646464;
142
+ border: 1px solid #DCDCDC;
143
+ background-color: white;
144
+ }
145
+ }