@chat21/chat21-web-widget 5.0.85-rc.2 → 5.0.86

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 (31) hide show
  1. package/CHANGELOG.md +1 -19
  2. package/package.json +1 -1
  3. package/src/app/app.module.ts +2 -5
  4. package/src/app/component/conversation-detail/conversation/conversation.component.ts +15 -14
  5. package/src/app/component/conversation-detail/conversation-footer/conversation-footer.component.html +3 -14
  6. package/src/app/component/conversation-detail/conversation-footer/conversation-footer.component.scss +10 -26
  7. package/src/app/component/conversation-detail/conversation-footer/conversation-footer.component.ts +77 -168
  8. package/src/app/component/message/audio/audio.component.html +20 -0
  9. package/src/app/component/message/audio/audio.component.scss +122 -0
  10. package/src/app/component/message/{audio-track/audio-track.component.spec.ts → audio/audio.component.spec.ts} +6 -6
  11. package/src/app/component/message/audio/audio.component.ts +122 -0
  12. package/src/app/component/message/bubble-message/bubble-message.component.html +15 -31
  13. package/src/app/component/message/bubble-message/bubble-message.component.scss +0 -7
  14. package/src/app/component/message/bubble-message/bubble-message.component.ts +0 -1
  15. package/src/app/modals/confirm-close/confirm-close.component.html +1 -1
  16. package/src/app/utils/globals.ts +1 -1
  17. package/src/app/utils/utils.ts +0 -45
  18. package/src/assets/twp/blank.html +6 -3
  19. package/src/assets/twp/chatbot-panel.html +13 -5
  20. package/src/assets/twp/index-dev.html +15 -8
  21. package/src/assets/twp/index.html +13 -7
  22. package/src/assets/twp/tiledesk_widget_files/bootstrap.min.css +3 -4
  23. package/src/assets/twp/tiledesk_widget_files/bootstrap.min.js +4 -3
  24. package/src/assets/twp/tiledesk_widget_files/jquery.min.js +2 -2
  25. package/src/app/component/conversation-detail/conversation-audio-recorder/conversation-audio-recorder.component.html +0 -29
  26. package/src/app/component/conversation-detail/conversation-audio-recorder/conversation-audio-recorder.component.scss +0 -103
  27. package/src/app/component/conversation-detail/conversation-audio-recorder/conversation-audio-recorder.component.spec.ts +0 -23
  28. package/src/app/component/conversation-detail/conversation-audio-recorder/conversation-audio-recorder.component.ts +0 -96
  29. package/src/app/component/message/audio-track/audio-track.component.html +0 -32
  30. package/src/app/component/message/audio-track/audio-track.component.scss +0 -107
  31. package/src/app/component/message/audio-track/audio-track.component.ts +0 -147
@@ -0,0 +1,122 @@
1
+ import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';
2
+ // import lottieWeb from 'https://cdn.skypack.dev/lottie-web';
3
+
4
+ @Component({
5
+ selector: 'chat-audio',
6
+ templateUrl: './audio.component.html',
7
+ styleUrls: ['./audio.component.scss']
8
+ })
9
+ export class AudioComponent implements OnInit {
10
+
11
+ @Input() metadata: any;
12
+ @Output() onElementRendered = new EventEmitter<{element: string, status: boolean}>();
13
+
14
+ uidAudioPlayng: string = ''
15
+ divPlay: HTMLAudioElement
16
+ playState: HTMLElement
17
+ status: 'play' | 'pause' = 'play'
18
+
19
+ constructor(private elementRef: ElementRef) { }
20
+
21
+ ngOnInit() {
22
+ // this.divPlay = this.elementRef.nativeElement.querySelector('#audio_container').querySelector('#audio_msg')
23
+ // this.playState= this.elementRef.nativeElement.querySelector('#audio_container').querySelector('#duration')
24
+ }
25
+
26
+ onPlayPause(status: string){
27
+ // const divPlay = (<HTMLAudioElement>document.getElementById('audio_msg'));
28
+ if(status === 'play') {
29
+ this.divPlay.play();
30
+ this.status = 'pause'
31
+ } else {
32
+ this.divPlay.pause();
33
+ this.status = 'play'
34
+ }
35
+ }
36
+
37
+ pauseAudioMsg(e) {
38
+ try {
39
+ // stop all audio
40
+ if (this.uidAudioPlayng) {
41
+ const divPlay = (<HTMLAudioElement>document.getElementById(this.uidAudioPlayng));
42
+ divPlay.pause();
43
+ // console.log('> pausa: ', divPlay);
44
+ }
45
+ } catch (error) {
46
+ console.log('> Error is: ', error);
47
+ }
48
+
49
+ try {
50
+ // console.log(e.target.id);
51
+ if (this.uidAudioPlayng) {
52
+ this.uidAudioPlayng = '';
53
+ }
54
+ } catch (error) {
55
+ console.log('> Error is: ', error);
56
+ }
57
+ }
58
+
59
+ playAudioMsg(e) {
60
+ // stop all audio
61
+ if (this.uidAudioPlayng) {
62
+ const divPlay = (<HTMLAudioElement>document.getElementById(this.uidAudioPlayng));
63
+ divPlay.pause();
64
+ // console.log('> pausa: ', divPlay);
65
+ }
66
+ try {
67
+ // console.log(e.target.id);
68
+ // set uid audio playng
69
+ this.uidAudioPlayng = e.target.id;
70
+ } catch (error) {
71
+ console.log('> Error is: ', error);
72
+ }
73
+ }
74
+
75
+ updateTimeAudioMsg(ev){
76
+ var currTime = Math.floor(ev.target.currentTime);
77
+ var duration = Math.floor(ev.target.duration);
78
+
79
+ let minutes = 0;
80
+ if(currTime > 60){
81
+ minutes = Math.floor(currTime / 60);
82
+ }
83
+ const seconds = currTime - minutes * 60
84
+ // console.log('timeeee', minutes + ':' + seconds )
85
+ // this.playState.innerHTML = minutes + ':' + seconds
86
+ }
87
+
88
+
89
+
90
+ /**
91
+ *
92
+ * @param uid
93
+ */
94
+ playPausaAudioMsg(uid: string) {
95
+ // console.log('playPausaAudioMsg: ', uid);
96
+ const that = this;
97
+ try {
98
+ const divPause = (<HTMLAudioElement>document.getElementById(that.uidAudioPlayng));
99
+ const divPlay = (<HTMLAudioElement>document.getElementById(uid));
100
+ if (divPause) {
101
+ divPause.pause();
102
+ }
103
+
104
+ if (that.uidAudioPlayng === uid) {
105
+ that.uidAudioPlayng = '';
106
+ } else {
107
+ if (divPlay) {
108
+ setTimeout(function() {
109
+ // if (that.g.autoplay_activated) {
110
+ // divPlay.play();
111
+ // }
112
+ this.uidAudioPlayng = uid;
113
+ }, 300);
114
+ }
115
+ }
116
+
117
+ } catch (error) {
118
+ console.log('> Error is: ', error);
119
+ }
120
+ }
121
+
122
+ }
@@ -1,26 +1,9 @@
1
1
  <!-- [ngClass]="{'button-in-msg' : message.metadata && message.metadata.button}" -->
2
2
  <!-- ngStyle]="{'padding': (isImage(message) || isFrame(message))?'1px':'0 8px'}" -->
3
3
  <!-- 'width': (isImage(message) || isFrame(message))? sizeImage?.width + 'px': null -->
4
-
5
-
4
+ <div id="bubble-message" [ngStyle]="{'padding': (isImage(message) || isFrame(message))?'0 0px':'0 8px'}" class="messages primary-color">
5
+
6
6
 
7
- <!-- <div id="bubble-message" *ngIf="isAudio(message)" [ngStyle]="{'padding': '0'}" class="messages primary-color">
8
- <div>
9
- <chat-audio-track *ngIf="isAudio(message)"
10
- [metadata]="message.metadata"
11
- ></chat-audio-track>
12
- </div>
13
- </div>
14
-
15
-
16
- [ngStyle]="{'padding': (isImage(message) || isFrame(message) || isAudio(message))?'0 0px':'0 8px'}"
17
- -->
18
-
19
-
20
-
21
-
22
-
23
- <div id="bubble-message" class="messages primary-color">
24
7
  <div>
25
8
 
26
9
  <div *ngIf="messageType(MESSAGE_TYPE_OTHERS, message) && !isSameSender"
@@ -53,18 +36,10 @@
53
36
  (onElementRendered)="onElementRenderedFN($event)">
54
37
  </chat-frame>
55
38
 
56
- <!-- <chat-audio *ngIf="isAudio(message)"
39
+ <chat-audio *ngIf="isAudio(message)"
57
40
  [metadata]="message.metadata"
58
41
  (onElementRendered)="onElementRenderedFN($event)">
59
- </chat-audio> -->
60
-
61
- <chat-audio-track *ngIf="isAudio(message)"
62
- [metadata]="message.metadata"
63
- [color]="fontColor"
64
- [fontSize]="fontSize"
65
- [stylesMap]="stylesMap">
66
- </chat-audio-track>
67
-
42
+ </chat-audio>
68
43
 
69
44
  <!-- <chat-frame *ngIf="message.metadata && message.metadata.type && message.metadata.type.includes('video')"
70
45
  [metadata]="message.metadata"
@@ -76,7 +51,7 @@
76
51
  <!-- <div *ngIf="message.type == 'text'"> -->
77
52
 
78
53
  <!-- tooltip="{{message.timestamp | dateAgo}} ({{message.timestamp | date:'shortDate'}} {{message.timestamp | date:'HH:mm:ss'}})" placement="bottom" -->
79
- <div *ngIf="message?.text && !isAudio(message)" >
54
+ <div *ngIf="message?.text" >
80
55
 
81
56
  <!-- [htmlEnabled]="(message?.type==='html')? true : false" -->
82
57
  <chat-text *ngIf="message?.type !=='html'"
@@ -94,7 +69,16 @@
94
69
  [themeColor]="stylesMap.get('themeColor')"
95
70
  [foregroundColor]="stylesMap.get('foregroundColor')">
96
71
  </chat-html>
97
-
72
+ <!-- <p #messageEl class="message_innerhtml marked" [innerHTML]="printMessage(message, messageEl, this) | marked"></p> -->
73
+ <!-- <div *ngIf="isPopupUrl(message.text); then contentPopup else contentNewTab">here
74
+ is ignored</div>
75
+ <ng-template #contentPopup>
76
+ <p style="text-decoration: underline; padding:8px; cursor: pointer;"
77
+ (click)="popupUrl(g.windowContext, message.text,'windowName')">{{strip_tags(message.text)}}</p>
78
+ </ng-template>
79
+ <ng-template #contentNewTab>
80
+ <p #messageEl [innerHTML]="printMessage(message, messageEl, this) | linky"></p>
81
+ </ng-template> -->
98
82
  </div>
99
83
 
100
84
  </div>
@@ -5,9 +5,6 @@
5
5
  border-radius: var(--border-radius-bubble-message);
6
6
  padding: 0;
7
7
  word-wrap: break-word;
8
-
9
- background: transparent;
10
-
11
8
  // padding: 14px;
12
9
  // padding: 6px 6px 6px 6px;
13
10
  // box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
@@ -29,8 +26,4 @@
29
26
  height: auto;
30
27
  object-fit: cover;
31
28
  }
32
-
33
- chat-audio-track {
34
- display: flex;
35
- }
36
29
  }
@@ -42,7 +42,6 @@ export class BubbleMessageComponent implements OnInit {
42
42
  constructor(public sanitizer: DomSanitizer) { }
43
43
 
44
44
  ngOnInit() {
45
- // console.log("---- > MSG:", this.message);
46
45
  }
47
46
 
48
47
  ngOnChanges() {
@@ -20,7 +20,7 @@
20
20
 
21
21
  <!-- BUTTON CLOSE-->
22
22
  <button tabindex="1040" aflistconv #aflistconv class="c21-button-primary" (click)="onConfirm()" [ngStyle]="{'background-color': stylesMap?.get('themeColor'), 'border-color': stylesMap?.get('themeColor'), 'color': stylesMap?.get('themeForegroundColor') }">
23
- <span *ngIf="isLoadingActive">
23
+ <span *ngIf="isLoadingActive" style="height: inherit; width: inherit;">
24
24
  <svg xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" with="25" height="25"
25
25
  viewBox="0 0 100 100" enable-background="new 0 0 0 0" xml:space="preserve">
26
26
  <path fill="#fff" d="M73,50c0-12.7-10.3-23-23-23S27,37.3,27,50 M30.9,50c0-10.5,8.5-19.1,19.1-19.1S69.1,39.5,69.1,50">
@@ -388,7 +388,7 @@ export class Globals {
388
388
  /**enable user to set a facebook messanger page to chat with */
389
389
  this.telegramUsername = ''
390
390
  /**enable user to set a telegram number to chat with */
391
- this.fileUploadAccept = "image/*,.pdf,.txt,.mp3"
391
+ this.fileUploadAccept = "image/*,.pdf,.txt"
392
392
  /**enable auto disconnect from messaging after a defined amount of time (s)*/
393
393
  this.disconnetTime = 0
394
394
 
@@ -387,48 +387,3 @@ export function getUnique(arr, comp) {
387
387
  // eliminate the dead keys & store unique objects
388
388
  .filter(e => arr[e]).map(e => arr[e]);
389
389
  }
390
-
391
- export function checkAcceptedFile(fileType, fileUploadAccept ): boolean{
392
-
393
- if (fileUploadAccept === '*/*') {
394
- return true
395
- }
396
- // Dividi la stringa fileUploadAccept in un array di tipi accettati
397
- const acceptedTypes = fileUploadAccept.split(',');
398
-
399
- // Verifica se il tipo di file è accettato
400
- return acceptedTypes.some((accept) => {
401
- accept = accept.trim();
402
- // Controlla per i tipi MIME con wildcard, come image/*
403
- if (accept.endsWith('/*')) {
404
- const baseMimeType = fileType.split('/')[0]; // Ottieni la parte principale del MIME type
405
- return accept.replace('/*', '') === baseMimeType;
406
- }
407
-
408
- // Controlla se l'accettazione è un MIME type esatto (come image/jpeg)
409
- if (accept === fileType) {
410
- return true;
411
- }
412
-
413
- // Controlla per le estensioni di file specifiche come .pdf o .txt
414
- return fileType === getMimeTypeFromExtension(accept);
415
- });
416
-
417
- }
418
-
419
- function getMimeTypeFromExtension(extension: string): string {
420
- // Rimuovi il punto dall'estensione e ottieni il MIME type
421
- const mimeTypes: { [key: string]: string } = {
422
- '.jpg': 'image/jpeg',
423
- '.jpeg': 'image/jpeg',
424
- '.png': 'image/png',
425
- '.gif': 'image/gif',
426
- '.pdf': 'application/pdf',
427
- '.txt': 'text/plain',
428
- '.doc': 'application/msword',
429
- '.docx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
430
- '.wav' : 'audio/wav'
431
- // Aggiungi altri tipi MIME se necessario
432
- };
433
- return mimeTypes[extension] || '';
434
- }
@@ -148,9 +148,6 @@
148
148
  <meta property="og:image" content="https://tiledesk.com/wp-content/uploads/2022/12/6029654-02-min.png" />
149
149
  <meta property="og:locale" content="en">
150
150
 
151
- <link href="./tiledesk_widget_files/bootstrap.min.css" rel="stylesheet" type="text/css">
152
- <link href="./tiledesk_widget_files/website-poly.min.css" rel="stylesheet" type="text/css">
153
-
154
151
 
155
152
  <script type="application/javascript">
156
153
  window.tiledeskSettings = {
@@ -310,5 +307,11 @@
310
307
  <div id="preloader">
311
308
  <div class="loader"></div>
312
309
  </div>
310
+
311
+ <div>
312
+ <link href="./tiledesk_widget_files/bootstrap.min.css" rel="stylesheet" type="text/css">
313
+ <!-- <link href="./tiledesk_widget_files/font-awesome.min.css" rel="stylesheet" type="text/css"> -->
314
+ <link href="./tiledesk_widget_files/website-poly.min.css" rel="stylesheet" type="text/css">
315
+ </div>
313
316
  </body>
314
317
  </html>
@@ -438,12 +438,10 @@
438
438
  <meta property="og:locale" content="en">
439
439
 
440
440
  <link rel="icon" type="image/png" href="./tiledesk_widget_files/logo-short.png">
441
- <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/all.min.css" rel="stylesheet">
442
- <link href="./tiledesk_widget_files/bootstrap.min.css" rel="stylesheet" type="text/css">
443
- <link href="./tiledesk_widget_files/website-poly.min.css" rel="stylesheet" type="text/css">
441
+ <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet">
444
442
  <script defer="" src="./tiledesk_widget_files/jquery.min.js"></script>
445
443
  <script defer="" src="./tiledesk_widget_files/bootstrap.min.js"></script>
446
-
444
+
447
445
  <!-- <script type="application/javascript">
448
446
  window.tiledeskSettings = {
449
447
  marginX: "100px",
@@ -594,7 +592,7 @@
594
592
  }
595
593
 
596
594
  window.onload = function() {
597
- document.getElementById("tiledesk_widgetTitle").value = tiledesk_widgetTitle;
595
+ document.getElementById("tiledesk_widgetTitle").innerHTML = tiledesk_widgetTitle;
598
596
  }
599
597
 
600
598
 
@@ -714,5 +712,15 @@
714
712
  </script>
715
713
 
716
714
  <!-- Google Analytics -->
715
+
716
+
717
+
718
+
719
+ <div>
720
+ <link href="./tiledesk_widget_files/bootstrap.min.css" rel="stylesheet" type="text/css">
721
+ <!-- <link href="./tiledesk_widget_files/font-awesome.min.css" rel="stylesheet" type="text/css"> -->
722
+ <link href="./tiledesk_widget_files/website-poly.min.css" rel="stylesheet" type="text/css">
723
+ <!-- <link href="./tiledesk_widget_files/css" rel="stylesheet" type="text/css"> -->
724
+ </div>
717
725
  </body>
718
726
  </html>
@@ -131,7 +131,6 @@
131
131
  display: -webkit-box;
132
132
  max-height: 258px; /* Fallback for non-webkit */
133
133
  line-height: 2.3;
134
- line-clamp: 8;
135
134
  -webkit-line-clamp: 8;
136
135
  -webkit-box-orient: vertical;
137
136
  overflow: hidden;
@@ -470,8 +469,6 @@
470
469
 
471
470
  <link rel="icon" type="image/png" href="./tiledesk_widget_files/logo-short.png">
472
471
  <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/all.min.css" rel="stylesheet">
473
- <link href="./tiledesk_widget_files/bootstrap.min.css" rel="stylesheet" type="text/css">
474
- <link href="./tiledesk_widget_files/website-poly.min.css" rel="stylesheet" type="text/css">
475
472
  <script defer="" src="./tiledesk_widget_files/jquery.min.js"></script>
476
473
  <script defer="" src="./tiledesk_widget_files/bootstrap.min.js"></script>
477
474
 
@@ -507,8 +504,8 @@
507
504
  document.getElementById('events').scrollTop = document.getElementById('events').scrollHeight
508
505
  }
509
506
 
510
- document.getElementById("project_id").value = '"' + tiledesk_projectid + '"';
511
- document.getElementById("project_name").value = project_name;
507
+ document.getElementById("project_id").innerHTML = '"' + tiledesk_projectid + '"';
508
+ document.getElementById("project_name").innerHTML = project_name;
512
509
  });
513
510
 
514
511
  window.Tiledesk('onBeforeInit', function(event_data) {
@@ -521,7 +518,7 @@
521
518
 
522
519
  var enbedJs = event_data.detail.appConfigs.enbedJs? event_data.detail.appConfigs.enbedJs : false;
523
520
  document.getElementById("enbed").style.display = enbedJs? "inline-block": "none";
524
- document.getElementById("base_url").value = enbedJs ? window.tiledesk.getBaseLocation() + '/launch.js': null;
521
+ document.getElementById("base_url").innerHTML = enbedJs ? window.tiledesk.getBaseLocation() + '/launch.js': null;
525
522
 
526
523
  baseUrlConsole = event_data.detail.appConfigs.dashboardUrl? event_data.detail.appConfigs.dashboardUrl : baseUrlConsole;
527
524
  }
@@ -1447,8 +1444,8 @@
1447
1444
  // console.log('project_name: ', project_name);
1448
1445
 
1449
1446
  // window.onload = function() {
1450
- // document.getElementById("project_id").value = '"' + tiledesk_projectid + '"';
1451
- // document.getElementById("project_name").value = project_name;
1447
+ // document.getElementById("project_id").innerHTML = '"' + tiledesk_projectid + '"';
1448
+ // document.getElementById("project_name").innerHTML = project_name;
1452
1449
  // }
1453
1450
 
1454
1451
 
@@ -2619,5 +2616,15 @@
2619
2616
  </script> -->
2620
2617
 
2621
2618
  <!-- Google Analytics -->
2619
+
2620
+
2621
+
2622
+
2623
+ <div>
2624
+ <link href="./tiledesk_widget_files/bootstrap.min.css" rel="stylesheet" type="text/css">
2625
+ <!-- <link href="./tiledesk_widget_files/font-awesome.min.css" rel="stylesheet" type="text/css"> -->
2626
+ <link href="./tiledesk_widget_files/website-poly.min.css" rel="stylesheet" type="text/css">
2627
+ <!-- <link href="./tiledesk_widget_files/css" rel="stylesheet" type="text/css"> -->
2628
+ </div>
2622
2629
  </body>
2623
2630
  </html>
@@ -245,10 +245,7 @@
245
245
  <meta property="og:locale" content="en">
246
246
 
247
247
  <link rel="icon" type="image/png" href="./tiledesk_widget_files/logo-short.png">
248
- <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/all.min.css" rel="stylesheet">
249
- <!-- <link href="./tiledesk_widget_files/font-awesome.min.css" rel="stylesheet" type="text/css"> -->
250
- <link href="./tiledesk_widget_files/bootstrap.min.css" rel="stylesheet" type="text/css">
251
- <link href="./tiledesk_widget_files/website-poly.min.css" rel="stylesheet" type="text/css">
248
+ <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet">
252
249
  <script defer="" src="./tiledesk_widget_files/jquery.min.js"></script>
253
250
  <script defer="" src="./tiledesk_widget_files/bootstrap.min.js"></script>
254
251
 
@@ -300,7 +297,7 @@
300
297
 
301
298
  var enbedJs = event_data.detail.appConfigs.enbedJs? event_data.detail.appConfigs.enbedJs : false;
302
299
  document.getElementById("enbed").style.display = enbedJs? "inline-block": "none";
303
- document.getElementById("base_url").value = enbedJs ? window.tiledesk.getBaseLocation() + '/launch.js': null;
300
+ document.getElementById("base_url").innerHTML = enbedJs ? window.tiledesk.getBaseLocation() + '/launch.js': null;
304
301
 
305
302
  baseUrlConsole = event_data.detail.appConfigs.dashboardUrl? event_data.detail.appConfigs.dashboardUrl : baseUrlConsole;
306
303
  }
@@ -439,8 +436,8 @@
439
436
  // console.log('project_name: ', project_name);
440
437
 
441
438
  window.onload = function() {
442
- document.getElementById("project_id").value = '"' + tiledesk_projectid + '"';
443
- document.getElementById("project_name").value = project_name;
439
+ document.getElementById("project_id").innerHTML = '"' + tiledesk_projectid + '"';
440
+ document.getElementById("project_name").innerHTML = project_name;
444
441
 
445
442
  if(role !== 'agent'){
446
443
  document.getElementById("testPageButton").style.display = 'block'
@@ -632,5 +629,14 @@
632
629
  </script> -->
633
630
 
634
631
  <!-- Google Analytics -->
632
+
633
+
634
+
635
+
636
+ <div>
637
+ <link href="./tiledesk_widget_files/bootstrap.min.css" rel="stylesheet" type="text/css">
638
+ <!-- <link href="./tiledesk_widget_files/font-awesome.min.css" rel="stylesheet" type="text/css"> -->
639
+ <link href="./tiledesk_widget_files/website-poly.min.css" rel="stylesheet" type="text/css">
640
+ </div>
635
641
  </body>
636
642
  </html>