react_hsbc_teller 1.0.8 → 1.1.1

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react_hsbc_teller",
3
- "version": "1.0.8",
3
+ "version": "1.1.1",
4
4
  "description": "React",
5
5
  "private": false,
6
6
  "main": "lib/hsbc.js",
@@ -35,6 +35,7 @@ width: 100%;
35
35
  padding-bottom: 10px;
36
36
  text-align: center;
37
37
  max-width: 110px;
38
+ min-width: 80px;
38
39
  height: 11px;
39
40
  font-size: 14px;
40
41
  font-family: PingFangSC-Regular, PingFang SC;
@@ -27,7 +27,9 @@ const LEAVE_TYPE = {
27
27
  TELLER_EXIT: 1, // 坐席退出
28
28
  ROOM_DESTROYED: -1, // 房间异常
29
29
  }
30
- let pictureInPictureVideo = ''
30
+ let pictureInPictureVideo
31
+ let mix_stream
32
+ let worker
31
33
  message.config({
32
34
  getContainer: ()=>document.getElementById('allHSBC')
33
35
  })
@@ -41,6 +43,7 @@ class Video extends Component {
41
43
  cancel = axios.CancelToken.source()
42
44
  signCanvas = React.createRef();
43
45
  state = {
46
+ listVideoPicture: [],
44
47
  isScreenSwitching: false,
45
48
  whiteboardWidth: '',
46
49
  whiteboardHeight: '',
@@ -592,16 +595,16 @@ class Video extends Component {
592
595
  if(!val) {
593
596
  document.exitPictureInPicture()
594
597
  } else {
595
- this.pictureInPictureClick()
598
+ this.pictureInPictureClick('update')
596
599
  }
597
600
  } else {
598
601
  if(!val) {
599
- this.pictureInPictureClick()
602
+ this.pictureInPictureClick('add')
600
603
  }
601
604
  }
602
605
  }
603
606
  };
604
- pictureInPictureClick=()=>{
607
+ pictureInPictureClick=(val)=>{
605
608
  let interval
606
609
  const list = []
607
610
  if (document.getElementById('video1').name) {
@@ -710,12 +713,18 @@ class Video extends Component {
710
713
  })
711
714
  }
712
715
  console.log(list)
713
- const width = 640;
714
- const height = 360 * list.length;
716
+ this.state.listVideoPicture = list
717
+ // const width = 640;
718
+ // const height = 360 * this.state.listVideoPicture.length;
719
+ if(val == 'add') {
720
+ pictureInPictureVideo.srcObject = mix_stream;
721
+ let flag1 = true;
722
+ worker.postMessage(flag1);
723
+ }
724
+ }
725
+ workerClick=()=>{
715
726
  const canvas = document.createElement('canvas');
716
727
  const cobj = canvas.getContext('2d'); // 获取绘图环境
717
- canvas.width = width;
718
- canvas.height = height;
719
728
  let blob = new Blob([
720
729
  `
721
730
  let timer;
@@ -729,15 +738,17 @@ class Video extends Component {
729
738
  `,
730
739
  ]);
731
740
  let url = window.URL.createObjectURL(blob);
732
- var worker = new Worker(url);
741
+ worker = new Worker(url);
733
742
  window.URL.revokeObjectURL(blob);
734
- let flag1 = true;
743
+
735
744
 
736
745
  worker.onmessage =() => {
737
- cobj.clearRect(0, 0, width, height);
738
- for (let i = 0; i < list.length; i++) {
746
+ cobj.clearRect(0, 0, 640, 360 * this.state.listVideoPicture.length);
747
+ canvas.width = 640;
748
+ canvas.height = 360 * this.state.listVideoPicture.length;
749
+ for (let i = 0; i < this.state.listVideoPicture.length; i++) {
739
750
 
740
- let videoId = list[i].name;
751
+ let videoId = this.state.listVideoPicture[i].name;
741
752
  let videoDiv = document.getElementById(videoId);
742
753
  let videoWidth = videoDiv.videoWidth;
743
754
  let videoHeight = videoDiv.videoHeight;
@@ -748,7 +759,7 @@ class Video extends Component {
748
759
  } else {
749
760
  newVideoHeight = videoHeight * 640 / videoWidth;
750
761
  }
751
- if(list[i].noVideo){
762
+ if(this.state.listVideoPicture[i].noVideo){
752
763
  cobj.fillStyle = '#333';
753
764
  cobj.fillRect((640 - newVideoWidth) / 2, 360 * i, newVideoWidth, newVideoHeight)
754
765
  } else {
@@ -762,11 +773,11 @@ class Video extends Component {
762
773
  cobj.fill();
763
774
  cobj.stroke();
764
775
  cobj.beginPath();
765
- cobj.font = "28px auto";
776
+ cobj.font = "28px serif";
766
777
  cobj.textAlign = 'left';
767
778
  cobj.lineWidth = 1;
768
779
  // 文字
769
- let str = list[i].title
780
+ let str = this.state.listVideoPicture[i].title
770
781
  for (let k = 0; k < str.length; k++){
771
782
  // console.log(str.substring(0,k+1))
772
783
  // console.log(cobj.measureText(str.substring(0,k+1)).width)
@@ -781,7 +792,7 @@ class Video extends Component {
781
792
  //左边框
782
793
  cobj.beginPath();
783
794
  cobj.moveTo(0, 0);
784
- cobj.lineTo(0, 360 * list.length);
795
+ cobj.lineTo(0, 360 * this.state.listVideoPicture.length);
785
796
  cobj.closePath(); //闭合路径
786
797
  cobj.lineWidth = 5; //线的边框为10像素
787
798
  cobj.strokeStyle = '#d9363e';
@@ -798,7 +809,7 @@ class Video extends Component {
798
809
 
799
810
  //右边框
800
811
  cobj.beginPath();
801
- cobj.moveTo(640, 360 * list.length);
812
+ cobj.moveTo(640, 360 * this.state.listVideoPicture.length);
802
813
  cobj.lineTo(640, 0);
803
814
  cobj.closePath(); //闭合路径
804
815
  cobj.lineWidth = 5; //线的边框为10像素
@@ -808,8 +819,8 @@ class Video extends Component {
808
819
 
809
820
  //上边框
810
821
  cobj.beginPath();
811
- cobj.moveTo(0, 360 * list.length);
812
- cobj.lineTo(640, 360 * list.length);
822
+ cobj.moveTo(0, 360 * this.state.listVideoPicture.length);
823
+ cobj.lineTo(640, 360 * this.state.listVideoPicture.length);
813
824
  cobj.closePath(); //闭合路径
814
825
  cobj.lineWidth = 5; //线的边框为10像素
815
826
  cobj.strokeStyle = '#d9363e';
@@ -819,26 +830,15 @@ class Video extends Component {
819
830
  let microphoneSize = 50
820
831
  var img = document.getElementById("icon_huatong");
821
832
  var img1 = document.getElementById("icon_huatong_close");
822
- if(this.state[list[i].voice]) {
833
+ if(this.state[this.state.listVideoPicture[i].voice]) {
823
834
  cobj.drawImage(img1, 10, 360 * (i + 1) - 60, microphoneSize, microphoneSize);
824
835
  } else {
825
836
  cobj.drawImage(img, 10, 360 * (i + 1) - 60, microphoneSize, microphoneSize);
826
837
 
827
838
  // 绘制实时音量
828
- let sid = document.getElementById(list[i].name).name
839
+ let sid = document.getElementById(this.state.listVideoPicture[i].name).name
829
840
  let analyser = this.state.analyserData.get(sid)
830
841
  aou(analyser)
831
- // let sid = document.getElementById(list[i].name).name
832
- // let stream = this.test_controller.GetMediaInfo(sid).audio_
833
- // let acc = new AudioContext()
834
- // let mic = acc.createMediaStreamSource(stream)
835
- // let analyser = acc.createAnalyser()
836
- // analyser.fftSize = 256
837
- // mic.connect(analyser)
838
- // aou(analyser)
839
- // let microphoneSize = 50
840
- // var img = document.getElementById("icon_huatong");
841
- // cobj.drawImage(img, 600, 360 * (i + 1) - 60, microphoneSize, microphoneSize);
842
842
  function aou(analyser){
843
843
  if(analyser) {
844
844
  let dataArray = new Uint8Array(analyser.frequencyBinCount);
@@ -873,11 +873,11 @@ class Video extends Component {
873
873
 
874
874
  }
875
875
  };
876
- worker.postMessage(flag1);
876
+
877
877
  const captureStream = canvas.captureStream();
878
- const mix_stream = new MediaStream(captureStream);
878
+ mix_stream = new MediaStream(captureStream);
879
879
  pictureInPictureVideo = document.getElementById('mixedvideo');
880
- pictureInPictureVideo.srcObject = mix_stream;
880
+
881
881
  pictureInPictureVideo.onloadedmetadata = () => {
882
882
  pictureInPictureVideo.requestPictureInPicture();
883
883
  };
@@ -892,9 +892,11 @@ class Video extends Component {
892
892
  pictureInPictureVideo.addEventListener('leavepictureinpicture', (event) => {
893
893
  pictureInPictureVideo.srcObject = null;
894
894
  pictureInPictureVideo.style.display = "none";
895
+ this.state.listVideoPicture = []
895
896
  worker.postMessage(false);
896
897
  this.state.isPictureInPicture = false
897
898
  });
899
+
898
900
  }
899
901
  roomCallBack = (type, manege,code) => {
900
902
  this.setState({
@@ -1135,7 +1137,10 @@ class Video extends Component {
1135
1137
  else if (Mival.typeId == 1220) {
1136
1138
  // 一炒多的图片
1137
1139
  if (Mival.sessionId == this.state.sessionId) {
1138
- this.props.imgCallback(Mival.data.type, Mival.data.file) // 文字抄录和风险抄录,3--风险,,2--文字
1140
+ this.props.imgCallback({
1141
+ type: Mival.data.type,
1142
+ file: Mival.data.file}
1143
+ ) // 文字抄录和风险抄录,3--风险,,2--文字
1139
1144
  }
1140
1145
  } else if (Mival.typeId == 1216) {
1141
1146
  // 签字回调
@@ -1355,7 +1360,7 @@ class Video extends Component {
1355
1360
  type: '2',
1356
1361
  sigType: 1
1357
1362
  };
1358
-
1363
+ this.workerClick()
1359
1364
  this.test_controller.GetDevices();
1360
1365
  // 获取设备成功
1361
1366
  this.test_controller.OnGetDevicesSuccess = (devicesInfo) => {
@@ -2017,7 +2022,6 @@ class Video extends Component {
2017
2022
  'tellerId': this.props.tellerAccount
2018
2023
  })
2019
2024
  })
2020
- this.state.sessionType = false
2021
2025
  this.state.isSharedScreen = false
2022
2026
  this.setState({
2023
2027
 
@@ -2618,6 +2622,7 @@ class Video extends Component {
2618
2622
  this.props.resourcePath + "/beauty/beauty.js",
2619
2623
  this.props.resourcePath + "/beauty/meeting_beautify_stream.js",
2620
2624
  this.props.resourcePath + "/beauty/backgroundBlur.js",
2625
+
2621
2626
  this.props.resourcePath + "/adapter.js",
2622
2627
  this.props.resourcePath + "/getMediaInfo.js",
2623
2628
  // this.props.resourcePath + "/pdf.js",
@@ -2629,10 +2634,17 @@ class Video extends Component {
2629
2634
  this.props.resourcePath + "/meeting_im.js",
2630
2635
  this.props.resourcePath + "/meeting_vod.js",
2631
2636
  this.props.resourcePath + "/meeting_invite.js",
2632
- this.props.resourcePath + "/client_record.js",
2637
+ this.props.resourcePath + "/client_record.js",
2633
2638
  this.props.resourcePath + "/remote_record.js",
2634
2639
  this.props.resourcePath + "/meeting_camera_stream.js",
2635
2640
  this.props.resourcePath + "/meeting_api.js",
2641
+
2642
+ this.props.resourcePath + "/eruda.js",
2643
+ this.props.resourcePath + "/iconfont.js",
2644
+ this.props.resourcePath + "/dialogue.css",
2645
+
2646
+
2647
+
2636
2648
  ]
2637
2649
  const that = this
2638
2650
  let i = 0
@@ -2808,6 +2820,8 @@ class Video extends Component {
2808
2820
  publish_config.media_type = 1
2809
2821
  publish_config.publish_device = 2
2810
2822
  publish_config.video_profile_type = 1
2823
+ publish_config.enableDesktopAudio=true
2824
+ publish_config.degradationType=2
2811
2825
  publish_config.sid = document.getElementById('video20').name
2812
2826
  this.test_controller.ChangeMediaStream(publish_config)
2813
2827
  this.state.isScreenSwitching = true
@@ -2847,6 +2861,8 @@ class Video extends Component {
2847
2861
  publish_config.media_type = 1;
2848
2862
  publish_config.publish_device = 2;
2849
2863
  publish_config.video_profile_type = 1;
2864
+ publish_config.enableDesktopAudio=true
2865
+ publish_config.degradationType=2
2850
2866
  publish_config.sid = document.getElementById('video20').name;
2851
2867
  this.test_controller.ChangeMediaStream(publish_config);
2852
2868
  } else {
@@ -2854,6 +2870,8 @@ class Video extends Component {
2854
2870
  publish_config.publish_device = 2
2855
2871
  publish_config.need_volume_analyser = true
2856
2872
  publish_config.video_profile_type = 1
2873
+ publish_config.enableDesktopAudio=true
2874
+ publish_config.degradationType=2
2857
2875
  publish_config.publish_video_id = 'video20'
2858
2876
  publish_config.publish_streamId_id = 'subscribe_streamId20'
2859
2877
  publish_config.publish_tag = 'projectionWhiteboard'
@@ -3215,6 +3233,7 @@ class Video extends Component {
3215
3233
  console.log(inp.value, '复制到的内容')
3216
3234
  document.execCommand('Copy') // 执行浏览器复制命令
3217
3235
  inp.remove()
3236
+ this.messageClick('复制成功','success')
3218
3237
  }
3219
3238
  queryStaff = async () => {
3220
3239
  if(!this.state.employeeNumber) return
@@ -3255,26 +3274,75 @@ class Video extends Component {
3255
3274
  value: 'RMWhiteboard',
3256
3275
  name: 'RM白板'
3257
3276
  }, 'add')
3258
- if (document.getElementById('video20').name) {
3259
- // 代表已经有了进行切流
3260
- publish_config.publish_device = 4
3261
- publish_config.media_type = 1
3262
- publish_config.sid = document.getElementById('video20').name
3263
- publish_config.part_of_screen_id = 'touBoxItem'
3264
- publish_config.video_profile_type = 5
3265
- this.test_controller.ChangeMediaStream(publish_config);
3266
- } else {
3267
-
3268
- publish_config.media_type = 1
3269
- publish_config.publish_device = 4
3270
- publish_config.need_volume_analyser = true
3271
- publish_config.video_profile_type = 5
3272
- publish_config.part_of_screen_id = 'touBoxItem';
3273
- publish_config.publish_video_id = 'video20'
3274
- publish_config.publish_streamId_id = 'subscribe_streamId10'
3275
- publish_config.publish_tag = 'projectionWhiteboard'
3276
- this.test_controller.Publish(publish_config)
3277
- }
3277
+ const width = this.state.whiteboardWidth;
3278
+ const height = this.state.whiteboardHeight;
3279
+ const canvas = document.createElement('canvas');
3280
+ const videoMedia = document.getElementById('manedvideo');
3281
+ const cobj = canvas.getContext('2d'); // 获取绘图环境
3282
+ const w = window.screen.width;
3283
+ const h = window.screen.height;
3284
+ canvas.width = width;
3285
+ canvas.height = height;
3286
+ videoMedia.addEventListener('play', (event) =>{
3287
+ var $this = this; //cache
3288
+ console.log('333111',!$this.paused,!$this.ended)
3289
+ loop()
3290
+ function loop() {
3291
+ if (!$this.paused && !$this.ended) {
3292
+ cobj.drawImage(videoMedia, 0, 0, width, height, 0, 0,width, height,);
3293
+ setTimeout(loop, 1000 / 10); // drawing at 30fps
3294
+ }
3295
+ }
3296
+
3297
+ if (document.getElementById('video20').name) {
3298
+ // 代表已经有了进行切流
3299
+ publish_config.publish_device = 5
3300
+ publish_config.media_type = 1
3301
+ publish_config.sid = document.getElementById('video20').name
3302
+ publish_config.stream = canvas.captureStream(10)
3303
+ publish_config.video_profile_type = 5
3304
+ this.test_controller.ChangeMediaStream(publish_config);
3305
+ } else {
3306
+
3307
+ publish_config.media_type = 1
3308
+ publish_config.publish_device = 5
3309
+ publish_config.need_volume_analyser = true
3310
+ publish_config.video_profile_type = 5
3311
+ publish_config.stream = canvas.captureStream(10)
3312
+ publish_config.publish_video_id = 'video20'
3313
+ publish_config.publish_streamId_id = 'subscribe_streamId10'
3314
+ publish_config.publish_tag = 'projectionWhiteboard'
3315
+ this.test_controller.Publish(publish_config)
3316
+ }
3317
+ }, 0);
3318
+ navigator.mediaDevices.getDisplayMedia({
3319
+ video: true
3320
+ })
3321
+ .then((stream) => {
3322
+ videoMedia.srcObject = stream;
3323
+ }, error => {
3324
+ console.log("Unable to acquire screen capture", error);
3325
+ });
3326
+ // if (document.getElementById('video20').name) {
3327
+ // // 代表已经有了进行切流
3328
+ // publish_config.publish_device = 4
3329
+ // publish_config.media_type = 1
3330
+ // publish_config.sid = document.getElementById('video20').name
3331
+ // publish_config.part_of_screen_id = 'touBoxItem'
3332
+ // publish_config.video_profile_type = 5
3333
+ // this.test_controller.ChangeMediaStream(publish_config);
3334
+ // } else {
3335
+
3336
+ // publish_config.media_type = 1
3337
+ // publish_config.publish_device = 4
3338
+ // publish_config.need_volume_analyser = true
3339
+ // publish_config.video_profile_type = 5
3340
+ // publish_config.part_of_screen_id = 'touBoxItem';
3341
+ // publish_config.publish_video_id = 'video20'
3342
+ // publish_config.publish_streamId_id = 'subscribe_streamId10'
3343
+ // publish_config.publish_tag = 'projectionWhiteboard'
3344
+ // this.test_controller.Publish(publish_config)
3345
+ // }
3278
3346
  } else {
3279
3347
  this.messageClick('当前已经切换RM白板','success')
3280
3348
 
@@ -3470,15 +3538,15 @@ class Video extends Component {
3470
3538
  id="video20"
3471
3539
  autoPlay
3472
3540
  muted={true}
3473
- className="video"
3541
+ className="videoTab"
3474
3542
  />
3475
3543
  <audio id="audio20" autoPlay />
3476
3544
  <label style={{ display: 'none' }} id="feedId20" type="text" />
3477
3545
  </div>
3478
3546
 
3479
3547
  </div>
3480
- {/* <div className="videoDiv" style={{ display: (this.state.isSelect == 'RMWhiteboard') ? '' : 'none', }}> */}
3481
- <div className="videoDiv">
3548
+ <div className="videoDiv" style={{ display: (this.state.isSelect == 'RMWhiteboard') ? '' : 'none', }}>
3549
+ {/* <div className="videoDiv"> */}
3482
3550
  <div id="touBoxItem">
3483
3551
  {pdfChildren}
3484
3552
  </div>
@@ -3489,7 +3557,7 @@ class Video extends Component {
3489
3557
  id="video21"
3490
3558
  autoPlay
3491
3559
  muted={true}
3492
- className="video"
3560
+ className="videoTab"
3493
3561
  />
3494
3562
  <audio id="audio21" autoPlay />
3495
3563
  <label style={{ display: 'none' }} id="feedId21" type="text" />
@@ -3979,19 +4047,19 @@ class Video extends Component {
3979
4047
  <div className="invitationDiv">
3980
4048
  <span className="modalSpan">&nbsp;&nbsp;&nbsp;姓名:</span><span>{this.state.employeeName}</span>
3981
4049
  </div>
3982
- {
3983
- this.state.employeeName &&<div className='invitationDiv'>
3984
- <span className="modalSpan">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><Button className="invitationButton" onClick={this.linkClick}> <img className='invitationImg' src={require("../../assets/img/link.png").default} alt="" />复制会议链接</Button>
3985
- </div>
3986
- }
3987
4050
 
4051
+ <div className='invitationDiv'>
4052
+ <span className="modalSpan">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
4053
+ <Button style={{ display: this.state.employeeName? '' : 'none'}} className="invitationButton" onClick={this.linkClick}> <img className='invitationImg' src={require("../../assets/img/link.png").default} alt="" />复制会议链接</Button>
4054
+ </div>
4055
+
3988
4056
  </div>
3989
- {
3990
- this.state.employeeError && <div className='errorClassInvitation'>
3991
- <img alt="" src={require("../../assets/img/tooltips2_fail.png").default} />
3992
- <span>{this.state.employeeError}</span>
4057
+
4058
+ <div className={`errorClassInvitation ${this.state.employeeError ? 'errorClassInvitationColor' : ''}`}>
4059
+ <img style={{ display: this.state.employeeError? '' : 'none'}} alt="" src={require("../../assets/img/tooltips2_fail.png").default} />
4060
+ <span style={{ display: this.state.employeeError? '' : 'none'}}>{this.state.employeeError}</span>
3993
4061
  </div>
3994
- }
4062
+
3995
4063
 
3996
4064
  </Modal>
3997
4065
  <Modal title="签字白板" width={600} destroyOnClose={true} closable={false} centered={true} visible={isTranscribing} footer={
@@ -4035,6 +4103,8 @@ class Video extends Component {
4035
4103
  </div>
4036
4104
  </Modal>
4037
4105
  <video className="mixedvideo" id="mixedvideo" autoPlay muted={true} width="0" height="0"></video>
4106
+ <video className="mixedvideo" id="manedvideo" autoPlay width="0" height="0"></video>
4107
+
4038
4108
  </Spin>
4039
4109
  </div>);
4040
4110
  }
@@ -5,7 +5,7 @@
5
5
  .mixedvideo{
6
6
  display: none;
7
7
  position:absolute;
8
- object-fit: contain
8
+ object-fit: cover
9
9
  }
10
10
  .imgClass{
11
11
  width: 100%;
@@ -50,13 +50,19 @@
50
50
  border-radius: 6px;
51
51
  }
52
52
  .videoFit{
53
- object-fit: contain !important;
53
+ object-fit: cover !important;
54
54
  }
55
55
  // .isBack {
56
56
  // transform: rotateY(180deg);
57
57
  // // background: #333;
58
58
  // }
59
59
  .video1{
60
+ width: 100%;
61
+ height: 100%;
62
+ object-fit: cover;
63
+ border-radius: 6px;
64
+ }
65
+ .videoTab{
60
66
  width: 100%;
61
67
  height: 100%;
62
68
  object-fit: contain;
@@ -65,7 +71,7 @@
65
71
  .video{
66
72
  width: 100%;
67
73
  height: 100%;
68
- object-fit: contain;
74
+ object-fit: cover;
69
75
  border-radius: 6px;
70
76
  }
71
77
  .video1Div{
@@ -77,7 +83,7 @@
77
83
  background: #f0f0f0;
78
84
  }
79
85
  .healthVideo{
80
- height: ~"calc(100vh - 150px)";
86
+ height: ~"calc(100vh - 15.8125rem)";
81
87
  width: 100%;
82
88
  display: inline-flex;
83
89
  }
@@ -86,7 +92,7 @@
86
92
  }
87
93
  .ownClass{
88
94
  height: calc(100vh - 15px);
89
- object-fit: contain;
95
+ object-fit: cover;
90
96
  width: 100%;
91
97
  }
92
98
  .publishVideoClass{
@@ -138,6 +144,7 @@
138
144
  .invitationDiv{
139
145
  margin-left: 40px;
140
146
  margin-bottom: 15px;
147
+ height: 27px;
141
148
  input::-webkit-inner-spin-button {
142
149
  -webkit-appearance: none;
143
150
  appearance: none;
@@ -453,12 +460,14 @@
453
460
  .radio input:checked+i:after {
454
461
  opacity: 1;
455
462
  }
463
+ .errorClassInvitationColor{
464
+ background: #F9F2F3;
465
+ border: 1px #E5B2B5 solid;
466
+ }
456
467
  .errorClassInvitation{
457
468
  width: 90%;
458
469
  height: 50px;
459
470
  margin: 50px 30px 0px;
460
- background: #F9F2F3;
461
- border: 1px #E5B2B5 solid;
462
471
  img{
463
472
  margin: 15px 20px;
464
473
  width: 18px;