@chat21/chat21-ionic 3.4.27-rc13 → 3.4.27-rc15

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 (111) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/package.json +1 -1
  3. package/src/app/chatlib/conversation-detail/conversation-content/conversation-content.component.scss +3 -3
  4. package/src/app/chatlib/conversation-detail/conversation-content/conversation-content.component.ts +1 -1
  5. package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.html +1 -1
  6. package/src/app/chatlib/conversation-detail/message/avatar/avatar.component.html +1 -1
  7. package/src/app/chatlib/conversation-detail/message/avatar/avatar.component.ts +4 -4
  8. package/src/app/chatlib/conversation-detail/message/return-receipt/return-receipt.component.scss +3 -3
  9. package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.html +9 -9
  10. package/src/app/components/bubbleMessageInfo-popover/bubbleinfo-popover.component.html +1 -1
  11. package/src/app/components/canned-response/canned-response.component.html +2 -2
  12. package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.html +8 -8
  13. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.ts +9 -0
  14. package/src/app/components/copilot-popover/copilot-popover.component.html +1 -1
  15. package/src/app/components/sidebar/sidebar.component.html +2 -2
  16. package/src/app/components/sidebar-user-details/sidebar-user-details.component.html +2 -2
  17. package/src/app/components/sidebar-user-details/sidebar-user-details.component.ts +7 -7
  18. package/src/app/modals/create-ticket/create-ticket.page.html +6 -6
  19. package/src/app/modals/create-ticket/create-ticket.page.ts +4 -4
  20. package/src/app/modals/loader-preview/loader-preview.page.ts +1 -1
  21. package/src/app/modals/send-whatsapp-template/send-whatsapp-template.page.scss +1 -1
  22. package/src/app/pages/conversation-detail/conversation-detail.page.scss +1 -1
  23. package/src/app/pages/conversation-detail/conversation-detail.page.ts +1 -1
  24. package/src/app/pages/conversations-list/conversations-list.page.ts +3 -3
  25. package/src/app/pages/profile-info/profile-info.page.ts +3 -3
  26. package/src/app/services/brand/brand.service.ts +5 -5
  27. package/src/app/utils/utils-resources.ts +8 -7
  28. package/src/chat21-core/utils/constants.ts +2 -2
  29. /package/src/assets/{images → img}/channel_icons/chat21.svg +0 -0
  30. /package/src/assets/{images → img}/channel_icons/direct.svg +0 -0
  31. /package/src/assets/{images → img}/channel_icons/email-logo.svg +0 -0
  32. /package/src/assets/{images → img}/channel_icons/form-logo_v2.svg +0 -0
  33. /package/src/assets/{images → img}/channel_icons/group.svg +0 -0
  34. /package/src/assets/{images → img}/channel_icons/messenger-logo.svg +0 -0
  35. /package/src/assets/{images → img}/channel_icons/telegram-logo.svg +0 -0
  36. /package/src/assets/{images → img}/channel_icons/voice.svg +0 -0
  37. /package/src/assets/{images → img}/channel_icons/whatsapp-logo.svg +0 -0
  38. /package/src/assets/{images → img}/default-avatar-x-select.png +0 -0
  39. /package/src/assets/{images → img}/f21ico-done.svg +0 -0
  40. /package/src/assets/{images → img}/f21ico-done_all.svg +0 -0
  41. /package/src/assets/{images → img}/f21ico-schedule.svg +0 -0
  42. /package/src/assets/{images → img}/file-alt-solid.png +0 -0
  43. /package/src/assets/{images → img}/icons/copilot.svg +0 -0
  44. /package/src/assets/{images → img}/json-file.svg +0 -0
  45. /package/src/assets/{images → img}/language_flag/ar.png +0 -0
  46. /package/src/assets/{images → img}/language_flag/az.png +0 -0
  47. /package/src/assets/{images → img}/language_flag/bg.png +0 -0
  48. /package/src/assets/{images → img}/language_flag/ca.png +0 -0
  49. /package/src/assets/{images → img}/language_flag/cs.png +0 -0
  50. /package/src/assets/{images → img}/language_flag/da.png +0 -0
  51. /package/src/assets/{images → img}/language_flag/de.png +0 -0
  52. /package/src/assets/{images → img}/language_flag/el.png +0 -0
  53. /package/src/assets/{images → img}/language_flag/en.png +0 -0
  54. /package/src/assets/{images → img}/language_flag/es.png +0 -0
  55. /package/src/assets/{images → img}/language_flag/fa.png +0 -0
  56. /package/src/assets/{images → img}/language_flag/fi.png +0 -0
  57. /package/src/assets/{images → img}/language_flag/fr.png +0 -0
  58. /package/src/assets/{images → img}/language_flag/he.png +0 -0
  59. /package/src/assets/{images → img}/language_flag/hi.png +0 -0
  60. /package/src/assets/{images → img}/language_flag/hr.png +0 -0
  61. /package/src/assets/{images → img}/language_flag/hu.png +0 -0
  62. /package/src/assets/{images → img}/language_flag/id.png +0 -0
  63. /package/src/assets/{images → img}/language_flag/it.png +0 -0
  64. /package/src/assets/{images → img}/language_flag/ja.png +0 -0
  65. /package/src/assets/{images → img}/language_flag/kk.png +0 -0
  66. /package/src/assets/{images → img}/language_flag/ko.png +0 -0
  67. /package/src/assets/{images → img}/language_flag/ml-IN.png +0 -0
  68. /package/src/assets/{images → img}/language_flag/ne-NP.png +0 -0
  69. /package/src/assets/{images → img}/language_flag/nl.png +0 -0
  70. /package/src/assets/{images → img}/language_flag/no.png +0 -0
  71. /package/src/assets/{images → img}/language_flag/pl.png +0 -0
  72. /package/src/assets/{images → img}/language_flag/pt-BR.png +0 -0
  73. /package/src/assets/{images → img}/language_flag/pt.png +0 -0
  74. /package/src/assets/{images → img}/language_flag/ro.png +0 -0
  75. /package/src/assets/{images → img}/language_flag/ru.png +0 -0
  76. /package/src/assets/{images → img}/language_flag/sk.png +0 -0
  77. /package/src/assets/{images → img}/language_flag/sl.png +0 -0
  78. /package/src/assets/{images → img}/language_flag/sr.png +0 -0
  79. /package/src/assets/{images → img}/language_flag/sv.png +0 -0
  80. /package/src/assets/{images → img}/language_flag/ta.png +0 -0
  81. /package/src/assets/{images → img}/language_flag/th.png +0 -0
  82. /package/src/assets/{images → img}/language_flag/tr.png +0 -0
  83. /package/src/assets/{images → img}/language_flag/uk.png +0 -0
  84. /package/src/assets/{images → img}/language_flag/uz.png +0 -0
  85. /package/src/assets/{images → img}/language_flag/vi.png +0 -0
  86. /package/src/assets/{images → img}/language_flag/zh-CN.png +0 -0
  87. /package/src/assets/{images → img}/language_flag/zh-TW.png +0 -0
  88. /package/src/assets/{logos → img/logos}/chat21-logo.png +0 -0
  89. /package/src/assets/{logos → img/logos}/logo.png +0 -0
  90. /package/src/assets/{logos → img/logos}/tiledesk-logo_new_white.svg +0 -0
  91. /package/src/assets/{logos → img/logos}/tiledesk-solo-logo.png +0 -0
  92. /package/src/assets/{logos → img/logos}/tiledesk_logo.svg +0 -0
  93. /package/src/assets/{logos → img/logos}/tiledesk_logo_no_text.svg +0 -0
  94. /package/src/assets/{logos → img/logos}/tiledesk_logo_white_small.svg +0 -0
  95. /package/src/assets/{images → img}/no_conversation.jpg +0 -0
  96. /package/src/assets/{images → img}/no_image.png +0 -0
  97. /package/src/assets/{images → img}/no_image_user.png +0 -0
  98. /package/src/assets/{images → img}/pin.svg +0 -0
  99. /package/src/assets/{images → img}/pinned.svg +0 -0
  100. /package/src/assets/{images → img}/priority_icons/high.svg +0 -0
  101. /package/src/assets/{images → img}/priority_icons/high_v2.svg +0 -0
  102. /package/src/assets/{images → img}/priority_icons/low.svg +0 -0
  103. /package/src/assets/{images → img}/priority_icons/low_v2.svg +0 -0
  104. /package/src/assets/{images → img}/priority_icons/medium.svg +0 -0
  105. /package/src/assets/{images → img}/priority_icons/medium_v2.svg +0 -0
  106. /package/src/assets/{images → img}/priority_icons/urgent.svg +0 -0
  107. /package/src/assets/{images → img}/priority_icons/urgent_v2.svg +0 -0
  108. /package/src/assets/{images → img}/teammate-status/avaible.svg +0 -0
  109. /package/src/assets/{images → img}/teammate-status/inactive.svg +0 -0
  110. /package/src/assets/{images → img}/teammate-status/unavaible.svg +0 -0
  111. /package/src/assets/{images → img}/whatsapp_background.png +0 -0
package/CHANGELOG.md CHANGED
@@ -8,6 +8,13 @@
8
8
  ### **Copyrigth**:
9
9
  *Tiledesk SRL*
10
10
 
11
+ # 3.4.27-rc15
12
+ - **changed**: /images with /img in assets folder
13
+
14
+ # 3.4.27-rc14
15
+ - **added**: DISPLAY_EDIT_PROFILE brand variable
16
+ - **bug-fixed**: emojii is sent also if is not allowed
17
+
11
18
  # 3.4.27-rc13
12
19
  - **added**: ability to mantain logout parameter when redirect to dashboard urls from sidebar component
13
20
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@chat21/chat21-ionic",
3
3
  "author": "Tiledesk SRL",
4
- "version": "3.4.27-rc13",
4
+ "version": "3.4.27-rc15",
5
5
  "license": "MIT License",
6
6
  "homepage": "https://tiledesk.com/",
7
7
  "repository": {
@@ -205,13 +205,13 @@
205
205
  // overflow-x: hidden;
206
206
  // }
207
207
  // .c21-ico-schedule {
208
- // background-image: url("src/assets/images/f21ico-schedule.svg");
208
+ // background-image: url("src/assets/img/f21ico-schedule.svg");
209
209
  // }
210
210
  // .c21-ico-done {
211
- // background-image: url("src/assets/images/f21ico-done.svg");
211
+ // background-image: url("src/assets/img/f21ico-done.svg");
212
212
  // }
213
213
  // .c21-ico-done_all {
214
- // background-image: url("src/assets/images/f21ico-done_all.svg");
214
+ // background-image: url("src/assets/img/f21ico-done_all.svg");
215
215
  // }
216
216
  // }
217
217
 
@@ -58,7 +58,7 @@ export class ConversationContentComponent implements OnInit {
58
58
  MESSAGE_TYPE_OTHERS = MESSAGE_TYPE_OTHERS;
59
59
  // ========== end:: check message type functions ======= //
60
60
 
61
- urlBOTImage = 'https://s3.eu-west-1.amazonaws.com/tiledesk-widget/dev/2.0.4-beta.7/assets/images/avatar_bot_tiledesk.svg'
61
+ urlBOTImage = 'https://s3.eu-west-1.amazonaws.com/tiledesk-widget/dev/2.0.4-beta.7/assets/img/avatar_bot_tiledesk.svg'
62
62
  uploadProgress: number;
63
63
  showUploadProgress: boolean = false;
64
64
  fileType: string;
@@ -184,7 +184,7 @@
184
184
  <ng-container *ngIf="isCopilotEnabled">
185
185
  <ion-button shape="round" size="small" class="btn-info-msg btn-copilot" ion-button fill="clear"
186
186
  (click)="onClickOptionsCopilot(message, i)">
187
- <ion-icon id="copilot" src="assets/images/icons/copilot.svg"></ion-icon>
187
+ <ion-icon id="copilot" src="assets/img/icons/copilot.svg"></ion-icon>
188
188
  </ion-button>
189
189
  </ng-container>
190
190
 
@@ -1,6 +1,6 @@
1
1
  <div class="c21-icon-avatar">
2
2
  <div class="c21-avatar-image profile_image">
3
- <!-- <img src="getUrlImgProfile(message.sender) {{getUrlImgProfile(message.sender)}}" onError="this.src = 'https://s3.eu-west-1.amazonaws.com/tiledesk-widget/v2/assets/images/line_avatar_male_tiledesk.svg'" /> -->
3
+ <!-- <img src="getUrlImgProfile(message.sender) {{getUrlImgProfile(message.sender)}}" onError="this.src = 'https://s3.eu-west-1.amazonaws.com/tiledesk-widget/v2/assets/img/line_avatar_male_tiledesk.svg'" /> -->
4
4
  <!-- <img [src]="url" (error)="onBotImgError($event)" /> -->
5
5
  <img *ngIf="senderID?.indexOf('bot_') !== -1 || senderFullname === 'Bot'" [src]="url" (error)="onBotImgError($event)" (load)="onLoadedBot($event)"/>
6
6
  <!-- is a HUMAN -->
@@ -17,18 +17,18 @@ export class AvatarComponent implements OnInit {
17
17
  if(this.senderID){
18
18
  this.url = this.imageRepoService.getImagePhotoUrl(this.senderID)
19
19
  if(!this.url && (this.senderID.indexOf('bot_') !== -1 || this.senderFullname === 'Bot')){
20
- this.url = this.baseLocation +'/assets/images/avatar_bot_tiledesk.svg'
20
+ this.url = this.baseLocation +'/assets/img/avatar_bot_tiledesk.svg'
21
21
  }else if(!this.url && this.senderID.indexOf('bot_') == -1){
22
- this.url = this.baseLocation +'/assets/images/light_avatar_placeholder.svg'
22
+ this.url = this.baseLocation +'/assets/img/light_avatar_placeholder.svg'
23
23
  }
24
24
  }
25
25
  }
26
26
 
27
27
  onBotImgError(event){
28
- event.target.src = this.baseLocation +'/assets/images/avatar_bot_tiledesk.svg'
28
+ event.target.src = this.baseLocation +'/assets/img/avatar_bot_tiledesk.svg'
29
29
  }
30
30
  onHumanImgError(event) {
31
- event.target.src = this.baseLocation + "/assets/images/light_avatar_placeholder.svg"
31
+ event.target.src = this.baseLocation + "/assets/img/light_avatar_placeholder.svg"
32
32
  }
33
33
 
34
34
  onLoadedBot(event){
@@ -16,12 +16,12 @@
16
16
  }
17
17
 
18
18
  .c21-ico-schedule {
19
- background-image: url("/src/assets/images/f21ico-schedule.svg");
19
+ background-image: url("/src/assets/img/f21ico-schedule.svg");
20
20
  }
21
21
  .c21-ico-done {
22
- background-image: url("/src/assets/images/f21ico-done.svg");
22
+ background-image: url("/src/assets/img/f21ico-done.svg");
23
23
  }
24
24
  .c21-ico-done_all {
25
- background-image: url("/src/assets/images/f21ico-done_all.svg");
25
+ background-image: url("/src/assets/img/f21ico-done_all.svg");
26
26
  }
27
27
  }
@@ -96,23 +96,23 @@
96
96
  <div class="conversation_project truncate">
97
97
  <!-- DIRECT CONV -->
98
98
  <div *ngIf="conversation.channel_type === CHANNEL_TYPE.DIRECT">
99
- <img class="channel-icon" src="assets/images/channel_icons/direct.svg">
99
+ <img class="channel-icon" src="assets/img/channel_icons/direct.svg">
100
100
  <span class="truncate">{{translationsMap.get('DIRECT_CHAT')}}</span>
101
101
  </div>
102
102
  <!-- GROUP CONV -->
103
103
  <div *ngIf="conversation.uid.startsWith(CHANNEL_TYPE.GROUP)">
104
- <img class="channel-icon" src="assets/images/channel_icons/group.svg">
104
+ <img class="channel-icon" src="assets/img/channel_icons/group.svg">
105
105
  <span class="truncate">{{translationsMap.get('GROUP_CHAT')}}</span>
106
106
  </div>
107
107
  <!-- SUPPORT-GROUP CONV -->
108
108
  <div *ngIf="conversation.uid.startsWith(CHANNEL_TYPE.SUPPORT_GROUP) && !IS_ON_MOBILE_DEVICE">
109
- <img class="channel-icon" src="assets/images/channel_icons/chat21.svg" *ngIf="conversation?.attributes && ( (conversation?.attributes?.request_channel && conversation?.attributes?.request_channel === CHANNEL_TYPE.CHAT21) || !conversation?.attributes?.request_channel) " >
110
- <img class="channel-icon" src="assets/images/channel_icons/email-logo.svg" *ngIf="conversation?.attributes && conversation?.attributes?.request_channel && conversation?.attributes?.request_channel === CHANNEL_TYPE.EMAIL" >
111
- <img class="channel-icon" src="assets/images/channel_icons/form-logo_v2.svg" *ngIf="conversation?.attributes && conversation?.attributes?.request_channel && conversation?.attributes?.request_channel === CHANNEL_TYPE.FORM" >
112
- <img class="channel-icon" src="assets/images/channel_icons/messenger-logo.svg" *ngIf="conversation?.attributes && conversation?.attributes?.request_channel && conversation?.attributes?.request_channel === CHANNEL_TYPE.MESSENGER" >
113
- <img class="channel-icon" src="assets/images/channel_icons/whatsapp-logo.svg" *ngIf="conversation?.attributes && conversation?.attributes?.request_channel && conversation?.attributes?.request_channel === CHANNEL_TYPE.WHATSAPP" >
114
- <img class="channel-icon" src="assets/images/channel_icons/telegram-logo.svg" *ngIf="conversation?.attributes && conversation?.attributes?.request_channel && conversation?.attributes?.request_channel === CHANNEL_TYPE.TELEGRAM" >
115
- <img class="channel-icon" src="assets/images/channel_icons/voice.svg" *ngIf="conversation?.attributes && conversation?.attributes?.request_channel && conversation?.attributes?.request_channel.startsWith(CHANNEL_TYPE.VOICE)" >
109
+ <img class="channel-icon" src="assets/img/channel_icons/chat21.svg" *ngIf="conversation?.attributes && ( (conversation?.attributes?.request_channel && conversation?.attributes?.request_channel === CHANNEL_TYPE.CHAT21) || !conversation?.attributes?.request_channel) " >
110
+ <img class="channel-icon" src="assets/img/channel_icons/email-logo.svg" *ngIf="conversation?.attributes && conversation?.attributes?.request_channel && conversation?.attributes?.request_channel === CHANNEL_TYPE.EMAIL" >
111
+ <img class="channel-icon" src="assets/img/channel_icons/form-logo_v2.svg" *ngIf="conversation?.attributes && conversation?.attributes?.request_channel && conversation?.attributes?.request_channel === CHANNEL_TYPE.FORM" >
112
+ <img class="channel-icon" src="assets/img/channel_icons/messenger-logo.svg" *ngIf="conversation?.attributes && conversation?.attributes?.request_channel && conversation?.attributes?.request_channel === CHANNEL_TYPE.MESSENGER" >
113
+ <img class="channel-icon" src="assets/img/channel_icons/whatsapp-logo.svg" *ngIf="conversation?.attributes && conversation?.attributes?.request_channel && conversation?.attributes?.request_channel === CHANNEL_TYPE.WHATSAPP" >
114
+ <img class="channel-icon" src="assets/img/channel_icons/telegram-logo.svg" *ngIf="conversation?.attributes && conversation?.attributes?.request_channel && conversation?.attributes?.request_channel === CHANNEL_TYPE.TELEGRAM" >
115
+ <img class="channel-icon" src="assets/img/channel_icons/voice.svg" *ngIf="conversation?.attributes && conversation?.attributes?.request_channel && conversation?.attributes?.request_channel.startsWith(CHANNEL_TYPE.VOICE)" >
116
116
  <span *ngIf="conversation?.attributes?.project_name" class="truncate">{{conversation?.attributes?.project_name}}</span>
117
117
  <span *ngIf="!conversation?.attributes?.project_name" class="truncate">{{conversation?.attributes?.projectId}}</span>
118
118
  </div>
@@ -9,7 +9,7 @@
9
9
  <ion-label>{{translationsMap?.get('AddAsCannedResponse')}}</ion-label>
10
10
  </ion-item>
11
11
  <ion-item button="true" *ngIf="logLevel >= LogLevel.DEBUG" (click)="onClickOption('jsonInfo')">
12
- <ion-icon src="assets/images/json-file.svg" slot="start"></ion-icon>
12
+ <ion-icon src="assets/img/json-file.svg" slot="start"></ion-icon>
13
13
  <ion-label>{{translationsMap?.get('JSON_RESPONSE')}}</ion-label>
14
14
  </ion-item>
15
15
  </ion-list>
@@ -9,8 +9,8 @@
9
9
  <ion-input [class.readonly]="canned?.disabled" [readonly]="canned?.disabled" type="text" [(ngModel)]="canned.title" class="title" id="{{'titleCanned_'+canned._id}}" #title></ion-input>
10
10
  <ion-input [class.readonly]="canned?.disabled" [readonly]="canned?.disabled" type="text" [(ngModel)]="canned.text" class="text truncate"></ion-input>
11
11
  </div>
12
- <!-- <ion-icon class="canned-item-icon" name="pin" src="assets/images/pin.svg" slot=end *ngIf="canned.pinned" (click)="onPinCanned(canned, $event)"></ion-icon>
13
- <ion-icon class="canned-item-icon" name="pin" src="assets/images/pinned.svg" slot=end (click)="onUnPinCanned(canned, $event)"></ion-icon> -->
12
+ <!-- <ion-icon class="canned-item-icon" name="pin" src="assets/img/pin.svg" slot=end *ngIf="canned.pinned" (click)="onPinCanned(canned, $event)"></ion-icon>
13
+ <ion-icon class="canned-item-icon" name="pin" src="assets/img/pinned.svg" slot=end (click)="onUnPinCanned(canned, $event)"></ion-icon> -->
14
14
  <ion-icon class="canned-item-icon" name="checkmark-sharp" slot=end *ngIf="(canned.createdBy === loggedUser.uid && !canned.disabled) && roles[PERMISSIONS.CANNED_RESPONSES_UPDATE]" (click)="onConfirmEditCanned(canned, $event)"></ion-icon>
15
15
  <ion-icon class="canned-item-icon" name="pencil-sharp" slot=end *ngIf="(canned.createdBy === loggedUser.uid && canned.disabled) && roles[PERMISSIONS.CANNED_RESPONSES_UPDATE]" (click)="onEditCanned(canned, $event)"></ion-icon>
16
16
  <ion-icon class="canned-item-icon" name="trash-bin-outline" slot=end *ngIf="(canned.createdBy === loggedUser.uid) && roles[PERMISSIONS.CANNED_RESPONSES_DELETE]" (click)="onDeleteCanned(canned, $event)"></ion-icon>
@@ -47,13 +47,13 @@
47
47
  </div>
48
48
  <!-- SUPPORT-GROUP CONV -->
49
49
  <div *ngIf="conversationUid?.startsWith(CHANNEL_TYPE.SUPPORT_GROUP) && !IS_ON_MOBILE_DEVICE">
50
- <img class="channel-icon" src="assets/images/channel_icons/chat21.svg" *ngIf="( (conversationAvatar?.request_channel && conversationAvatar?.request_channel === CHANNEL_TYPE.CHAT21) || !conversationAvatar?.request_channel) " >
51
- <img class="channel-icon" src="assets/images/channel_icons/email-logo.svg" *ngIf="conversationAvatar?.request_channel && conversationAvatar?.request_channel === CHANNEL_TYPE.EMAIL" >
52
- <img class="channel-icon" src="assets/images/channel_icons/form-logo_v2.svg" *ngIf="conversationAvatar?.request_channel && conversationAvatar?.request_channel === CHANNEL_TYPE.FORM" >
53
- <img class="channel-icon" src="assets/images/channel_icons/messenger-logo.svg" *ngIf="conversationAvatar?.request_channel && conversationAvatar?.request_channel === CHANNEL_TYPE.MESSENGER" >
54
- <img class="channel-icon" src="assets/images/channel_icons/whatsapp-logo.svg" *ngIf="conversationAvatar?.request_channel && conversationAvatar?.request_channel === CHANNEL_TYPE.WHATSAPP" >
55
- <img class="channel-icon" src="assets/images/channel_icons/telegram-logo.svg" *ngIf="conversationAvatar?.request_channel && conversationAvatar?.request_channel === CHANNEL_TYPE.TELEGRAM" >
56
- <img class="channel-icon" src="assets/images/channel_icons/voice.svg" *ngIf="conversationAvatar?.request_channel && conversationAvatar?.request_channel.startsWith(CHANNEL_TYPE.VOICE)" >
50
+ <img class="channel-icon" src="assets/img/channel_icons/chat21.svg" *ngIf="( (conversationAvatar?.request_channel && conversationAvatar?.request_channel === CHANNEL_TYPE.CHAT21) || !conversationAvatar?.request_channel) " >
51
+ <img class="channel-icon" src="assets/img/channel_icons/email-logo.svg" *ngIf="conversationAvatar?.request_channel && conversationAvatar?.request_channel === CHANNEL_TYPE.EMAIL" >
52
+ <img class="channel-icon" src="assets/img/channel_icons/form-logo_v2.svg" *ngIf="conversationAvatar?.request_channel && conversationAvatar?.request_channel === CHANNEL_TYPE.FORM" >
53
+ <img class="channel-icon" src="assets/img/channel_icons/messenger-logo.svg" *ngIf="conversationAvatar?.request_channel && conversationAvatar?.request_channel === CHANNEL_TYPE.MESSENGER" >
54
+ <img class="channel-icon" src="assets/img/channel_icons/whatsapp-logo.svg" *ngIf="conversationAvatar?.request_channel && conversationAvatar?.request_channel === CHANNEL_TYPE.WHATSAPP" >
55
+ <img class="channel-icon" src="assets/img/channel_icons/telegram-logo.svg" *ngIf="conversationAvatar?.request_channel && conversationAvatar?.request_channel === CHANNEL_TYPE.TELEGRAM" >
56
+ <img class="channel-icon" src="assets/img/channel_icons/voice.svg" *ngIf="conversationAvatar?.request_channel && conversationAvatar?.request_channel.startsWith(CHANNEL_TYPE.VOICE)" >
57
57
  <span *ngIf="conversationAvatar?.project_name" class="truncate">{{conversationAvatar?.project_name}}</span>
58
58
  <span *ngIf="!conversationAvatar?.project_name" class="truncate">{{conversationAvatar?.projectId}}</span>
59
59
  </div>
@@ -65,7 +65,7 @@
65
65
  <!-- COPILOT-OPTION -->
66
66
  <div *ngIf="isCopilotEnabled" class="copilot-container" id="copilot">
67
67
  <ion-button id="copilot" fill="clear" (click)="onOpenSection('copilot')">
68
- <ion-icon class="channel-icon" src="assets/images/icons/copilot.svg"></ion-icon>
68
+ <ion-icon class="channel-icon" src="assets/img/icons/copilot.svg"></ion-icon>
69
69
  {{translationsMap?.get('COPILOT.SOLVE_WITH_AI')}}
70
70
  </ion-button>
71
71
  </div>
@@ -548,6 +548,10 @@ export class MessageTextAreaComponent implements OnInit, AfterViewInit, OnChange
548
548
  e.preventDefault(); // Prevent press enter from creating new line
549
549
  // console.log("[CONVS-DETAIL] replaceTagInMessage onKeydown in msg-texarea * event: ", e);
550
550
 
551
+ if(this.showAlertEmoji || this.showAlertUrl){
552
+ return;
553
+ }
554
+
551
555
  this.countClicks++;
552
556
  this.logger.log('[CONVS-DETAIL][MSG-TEXT-AREA] onKeydown - countClicks: ', this.countClicks);
553
557
  this.logger.log('[CONVS-DETAIL][MSG-TEXT-AREA] onKeydown - event: ', e);
@@ -652,6 +656,11 @@ export class MessageTextAreaComponent implements OnInit, AfterViewInit, OnChange
652
656
  return
653
657
  }
654
658
 
659
+ let check = this.checkForEmojii(text)
660
+ if(!check){
661
+ return;
662
+ }
663
+
655
664
  this.messageString = '';
656
665
  // text = text.replace(/(\r\n|\n|\r)/gm, '');
657
666
 
@@ -18,7 +18,7 @@
18
18
  </ion-content>
19
19
  <ion-footer class="ion-no-border">
20
20
  <ion-button fill="clear" (click)="onClickCopilot()">
21
- <ion-icon src="assets/images/icons/copilot.svg"></ion-icon>
21
+ <ion-icon src="assets/img/icons/copilot.svg"></ion-icon>
22
22
  {{translationsMap.get('COPILOT.ASK_AI') }}
23
23
  </ion-button>
24
24
  </ion-footer>
@@ -2,7 +2,7 @@
2
2
  <div class="logo">
3
3
  <!-- <a class="logo-img-wpr" [ngClass]="{'small-sidebar-logo-img-wpr' : SIDEBAR_IS_SMALL === true }">
4
4
  <div class="logo-img" (click)="goToHome()" style="cursor: pointer;">
5
- <img class="small-sidebar__logo" src="assets/logos/tiledesk-solo-logo.svg" />
5
+ <img class="small-sidebar__logo" src="assets/img/logos/tiledesk-solo-logo.svg" />
6
6
  </div>
7
7
  </a> -->
8
8
 
@@ -12,7 +12,7 @@
12
12
  style="cursor: pointer;" [ngClass]="{'small-sidebar-avatar' : SIDEBAR_IS_SMALL === true, 'small-sidebar-avatar-with-avatar': SIDEBAR_IS_SMALL === true && !USER_PHOTO_PROFILE_EXIST}">
13
13
 
14
14
  <img *ngIf="USER_PHOTO_PROFILE_EXIST" id="sidebaravatar-img" class="sidebar-avatar" [src]="photo_profile_URL"
15
- onerror="this.src='assets/images/no_image_user.png'" />
15
+ onerror="this.src='assets/img/no_image_user.png'" />
16
16
 
17
17
  <div *ngIf="!USER_PHOTO_PROFILE_EXIST" id="sidebaravatar-no-img" class="sidebar-avatar"
18
18
  [ngStyle]="{'background': 'linear-gradient(rgb(255,255,255) -125%,' + currentUser?.fillColour + ')'}">
@@ -22,7 +22,7 @@
22
22
  <!-- (click)="goToUserProfile()" -->
23
23
  <div role="button" class="user-details-avatar">
24
24
  <img *ngIf="USER_PHOTO_PROFILE_EXIST" class="user-img-in-sidebar-user-details" [src]="photo_profile_URL"
25
- onerror="this.src='assets/images/no_image_user.png'" />
25
+ onerror="this.src='assets/img/no_image_user.png'" />
26
26
 
27
27
  <div *ngIf="!USER_PHOTO_PROFILE_EXIST" class="user-img-in-sidebar-user-details"
28
28
  [ngStyle]="{'background': 'linear-gradient(rgb(255,255,255) -125%,' + user?.fillColour + ')'}">
@@ -51,7 +51,7 @@
51
51
  <div class="user-details-role">
52
52
  <h3>{{ USER_ROLE_LABEL }} </h3>
53
53
 
54
- <div class="user-details-view-profile" (click)="goToUserProfile()">
54
+ <div *ngIf="BRAND_BASE_INFO['DISPLAY_EDIT_PROFILE']" class="user-details-view-profile" (click)="goToUserProfile()">
55
55
  {{translationsMap.get('EditProfile')}}
56
56
  </div>
57
57
 
@@ -53,9 +53,9 @@ export class SidebarUserDetailsComponent implements OnInit, OnChanges {
53
53
 
54
54
  selectedStatus: any;
55
55
  teammateStatus = [
56
- { id: 1, name: 'Available', avatar: 'assets/images/teammate-status/avaible.svg', label: "LABEL_AVAILABLE" },
57
- { id: 2, name: 'Unavailable', avatar: 'assets/images/teammate-status/unavaible.svg', label: "LABEL_NOT_AVAILABLE" },
58
- { id: 3, name: 'Inactive', avatar: 'assets/images/teammate-status/inactive.svg', label: "LABEL_INACTIVE" },
56
+ { id: 1, name: 'Available', avatar: 'assets/img/teammate-status/avaible.svg', label: "LABEL_AVAILABLE" },
57
+ { id: 2, name: 'Unavailable', avatar: 'assets/img/teammate-status/unavaible.svg', label: "LABEL_NOT_AVAILABLE" },
58
+ { id: 3, name: 'Inactive', avatar: 'assets/img/teammate-status/inactive.svg', label: "LABEL_INACTIVE" },
59
59
  ];
60
60
 
61
61
  translationsMap: Map<string, string> = new Map();
@@ -195,13 +195,13 @@ export class SidebarUserDetailsComponent implements OnInit, OnChanges {
195
195
  this.chat_lang = ''
196
196
  if (this.browserLang && !stored_preferred_lang) {
197
197
  this.chat_lang = this.browserLang
198
- // this.flag_url = "assets/images/language_flag/" + this.chat_lang + ".png"
198
+ // this.flag_url = "assets/img/language_flag/" + this.chat_lang + ".png"
199
199
 
200
200
  this.logger.log('[SIDEBAR-USER-DETAILS] flag_url: ', this.flag_url);
201
201
  this.logger.log('[SIDEBAR-USER-DETAILS] chat_lang: ', this.chat_lang);
202
202
  } else if (this.browserLang && stored_preferred_lang) {
203
203
  this.chat_lang = stored_preferred_lang
204
- // this.flag_url = "assets/images/language_flag/" + this.chat_lang + ".png"
204
+ // this.flag_url = "assets/img/language_flag/" + this.chat_lang + ".png"
205
205
  this.logger.log('[SIDEBAR-USER-DETAILS] flag_url: ', this.flag_url);
206
206
  this.logger.log('[SIDEBAR-USER-DETAILS] chat_lang: ', this.chat_lang);
207
207
  }
@@ -209,11 +209,11 @@ export class SidebarUserDetailsComponent implements OnInit, OnChanges {
209
209
  if (tranlatedLanguage.includes(this.chat_lang)) {
210
210
  this.logger.log('[SIDEBAR-USER-DETAILS] tranlatedLanguage includes', this.chat_lang, ': ', tranlatedLanguage.includes(this.chat_lang))
211
211
  this.translate.use(this.chat_lang);
212
- this.flag_url = "assets/images/language_flag/" + this.chat_lang + ".png"
212
+ this.flag_url = "assets/img/language_flag/" + this.chat_lang + ".png"
213
213
  } else {
214
214
  this.logger.log('[SIDEBAR-USER-DETAILS] tranlatedLanguage includes', this.chat_lang, ': ', tranlatedLanguage.includes(this.chat_lang))
215
215
  this.translate.use('en');
216
- this.flag_url = "assets/images/language_flag/en.png"
216
+ this.flag_url = "assets/img/language_flag/en.png"
217
217
  this.chat_lang = 'en'
218
218
  }
219
219
 
@@ -36,7 +36,7 @@
36
36
  <img *ngIf="item.requestertype === 'agent' && UPLOAD_ENGINE_IS_FIREBASE" height="24" width="24"
37
37
  style="border-radius:50%; object-fit: cover; vertical-align: middle;"
38
38
  src="https://firebasestorage.googleapis.com/v0/b/{{storageBucket}}/o/profiles%2F{{item.id}}%2Fphoto.jpg?alt=media"
39
- alt="" onerror="this.src='assets/images/default-avatar-x-select.png'">
39
+ alt="" onerror="this.src='assets/img/default-avatar-x-select.png'">
40
40
 
41
41
  <!-- ---------------------------------------- -->
42
42
  <!-- Usecase Native -->
@@ -44,11 +44,11 @@
44
44
  <img *ngIf="item.requestertype === 'agent' && !UPLOAD_ENGINE_IS_FIREBASE" height="24" width="24"
45
45
  style="border-radius:50%;object-fit: cover;vertical-align: middle;"
46
46
  src="{{baseUrl}}images?path=uploads%2Fusers%2F{{item.id}}%2Fimages%2Fthumbnails_200_200-photo.jpg" alt=""
47
- onerror="this.src='assets/images/default-avatar-x-select.png'">
47
+ onerror="this.src='assets/img/default-avatar-x-select.png'">
48
48
 
49
49
  <img *ngIf="item.requestertype === 'lead'" height="24" width="24"
50
50
  style="border-radius:50%;object-fit: cover;vertical-align: middle;"
51
- src="assets/images/default-avatar-x-select.png" alt="">
51
+ src="assets/img/default-avatar-x-select.png" alt="">
52
52
  <span style="font-weight: 400;">
53
53
  {{ item.name }}
54
54
  </span>
@@ -64,7 +64,7 @@
64
64
  <img *ngIf="item.requestertype === 'agent' && UPLOAD_ENGINE_IS_FIREBASE" height="24" width="24"
65
65
  style="border-radius:50%;object-fit: cover;vertical-align: middle;"
66
66
  src="https://firebasestorage.googleapis.com/v0/b/{{storageBucket}}/o/profiles%2F{{item.id}}%2Fphoto.jpg?alt=media"
67
- alt="" onerror="this.src='assets/images/default-avatar-x-select.png'">
67
+ alt="" onerror="this.src='assets/img/default-avatar-x-select.png'">
68
68
 
69
69
  <!-- ---------------------------------------- -->
70
70
  <!-- Usecase Native -->
@@ -72,11 +72,11 @@
72
72
  <img *ngIf="item.requestertype === 'agent' && !UPLOAD_ENGINE_IS_FIREBASE" height="24" width="24"
73
73
  style="border-radius:50%;object-fit: cover;vertical-align: middle;"
74
74
  src="{{baseUrl}}images?path=uploads%2Fusers%2F{{item.id}}%2Fimages%2Fthumbnails_200_200-photo.jpg" alt=""
75
- onerror="this.src='assets/images/default-avatar-x-select.png'">
75
+ onerror="this.src='assets/img/default-avatar-x-select.png'">
76
76
 
77
77
  <img *ngIf="item.requestertype === 'lead'" height="24" width="24"
78
78
  style="border-radius:50%; object-fit: cover;vertical-align: middle;"
79
- src="assets/images/default-avatar-x-select.png" alt="">
79
+ src="assets/img/default-avatar-x-select.png" alt="">
80
80
  <span style="font-weight: 400;">
81
81
  {{ item.name }}
82
82
  </span>
@@ -43,22 +43,22 @@ export class CreateTicketPage implements OnInit {
43
43
  {
44
44
  id: 1,
45
45
  name: 'urgent',
46
- avatar: 'assets/images/priority_icons/urgent_v2.svg'
46
+ avatar: 'assets/img/priority_icons/urgent_v2.svg'
47
47
  },
48
48
  {
49
49
  id: 2,
50
50
  name: 'high',
51
- avatar: 'assets/images/priority_icons/high_v2.svg '
51
+ avatar: 'assets/img/priority_icons/high_v2.svg '
52
52
  },
53
53
  {
54
54
  id: 3,
55
55
  name: 'medium',
56
- avatar: 'assets/images/priority_icons/medium_v2.svg'
56
+ avatar: 'assets/img/priority_icons/medium_v2.svg'
57
57
  },
58
58
  {
59
59
  id: 4,
60
60
  name: 'low',
61
- avatar: 'assets/images/priority_icons/low_v2.svg'
61
+ avatar: 'assets/img/priority_icons/low_v2.svg'
62
62
  },
63
63
  ];
64
64
 
@@ -156,7 +156,7 @@ export class LoaderPreviewPage implements OnInit, AfterViewInit {
156
156
  }
157
157
  // file-alt-solid.png
158
158
  async createFile() {
159
- let response = await fetch('./assets/images/file-alt-solid.png')
159
+ let response = await fetch('./assets/img/file-alt-solid.png')
160
160
  let data = await response.blob()
161
161
  let metadata = {
162
162
  type: 'image/png',
@@ -106,7 +106,7 @@ ion-footer {
106
106
  width: 100%;
107
107
  min-height: 200px;
108
108
  //background-image: url(https://user-images.githubusercontent.com/15075759/28719144-86dc0f70-73b1-11e7-911d-60d70fcded21.png);
109
- background-image: url(../../../assets/images/whatsapp_background.png);
109
+ background-image: url(../../../assets/img/whatsapp_background.png);
110
110
  border-radius: 8px;
111
111
  background-size: cover;
112
112
  display: flex;
@@ -5,7 +5,7 @@
5
5
  }
6
6
 
7
7
  .image-splash-page {
8
- background: url("../../../assets/images/no_conversation.jpg");
8
+ background: url("../../../assets/img/no_conversation.jpg");
9
9
  width: 50%;
10
10
  height: 50%;
11
11
  position: relative;
@@ -1158,7 +1158,7 @@ export class ConversationDetailPage implements OnInit, OnDestroy, AfterViewInit
1158
1158
  // ${metadata.name}
1159
1159
  // </a>`
1160
1160
 
1161
- // msg = ![file-image-placehoder](./assets/images/file-alt-solid.png) + [${metadata.name}](${metadata.src})
1161
+ // msg = ![file-image-placehoder](./assets/img/file-alt-solid.png) + [${metadata.name}](${metadata.src})
1162
1162
  msg = `[${metadata.name}](${metadata.src})`
1163
1163
  }
1164
1164
  }
@@ -116,9 +116,9 @@ export class ConversationListPage implements OnInit {
116
116
  profile_name_translated: string;
117
117
  selectedStatus: any;
118
118
  teammateStatus = [
119
- { id: 1, name: 'Available', avatar: 'assets/images/teammate-status/avaible.svg', label: "LABEL_AVAILABLE" },
120
- { id: 2, name: 'Unavailable', avatar: 'assets/images/teammate-status/unavaible.svg', label: "LABEL_NOT_AVAILABLE" },
121
- { id: 3, name: 'Inactive', avatar: 'assets/images/teammate-status/inactive.svg', label: "LABEL_INACTIVE" },
119
+ { id: 1, name: 'Available', avatar: 'assets/img/teammate-status/avaible.svg', label: "LABEL_AVAILABLE" },
120
+ { id: 2, name: 'Unavailable', avatar: 'assets/img/teammate-status/unavaible.svg', label: "LABEL_NOT_AVAILABLE" },
121
+ { id: 3, name: 'Inactive', avatar: 'assets/img/teammate-status/inactive.svg', label: "LABEL_INACTIVE" },
122
122
  ];
123
123
  // PROJECT AVAILABILITY INFO: end
124
124
 
@@ -51,9 +51,9 @@ export class ProfileInfoPage implements OnInit {
51
51
 
52
52
  isVisiblePAY: boolean;
53
53
  teammateStatus = [
54
- { id: 1, name: 'Available', avatar: 'assets/images/teammate-status/avaible.svg', label: "LABEL_AVAILABLE" },
55
- { id: 2, name: 'Unavailable', avatar: 'assets/images/teammate-status/unavaible.svg', label: "LABEL_NOT_AVAILABLE" },
56
- { id: 3, name: 'Inactive', avatar: 'assets/images/teammate-status/inactive.svg', label: "LABEL_INACTIVE" },
54
+ { id: 1, name: 'Available', avatar: 'assets/img/teammate-status/avaible.svg', label: "LABEL_AVAILABLE" },
55
+ { id: 2, name: 'Unavailable', avatar: 'assets/img/teammate-status/unavaible.svg', label: "LABEL_NOT_AVAILABLE" },
56
+ { id: 3, name: 'Inactive', avatar: 'assets/img/teammate-status/inactive.svg', label: "LABEL_INACTIVE" },
57
57
  ];
58
58
 
59
59
  constructor(
@@ -67,11 +67,11 @@ export class BrandService {
67
67
  ]
68
68
  },
69
69
  COMMON: {
70
- COMPANY_LOGO:"assets/logos/tiledesk_logo.svg",
71
- COMPANY_LOGO_NO_TEXT:"assets/logos/tiledesk_logo.svg",
72
- BASE_LOGO: "assets/logos/tiledesk_logo.svg",
73
- BASE_LOGO_NO_TEXT: "assets/logos/tiledesk_logo.svg",
74
- BASE_LOGO_WHITE: "assets/logos/tiledesk-logo_new_white.svg",
70
+ COMPANY_LOGO:"assets/img/logos/tiledesk_logo.svg",
71
+ COMPANY_LOGO_NO_TEXT:"assets/img/logos/tiledesk_logo.svg",
72
+ BASE_LOGO: "assets/img/logos/tiledesk_logo.svg",
73
+ BASE_LOGO_NO_TEXT: "assets/img/logos/tiledesk_logo.svg",
74
+ BASE_LOGO_WHITE: "assets/img/logos/tiledesk-logo_new_white.svg",
75
75
  BASE_LOGO_WHITE_NO_TEXT:"",
76
76
  COMPANY_NAME: "Tiledesk",
77
77
  BRAND_NAME: "Tiledesk",
@@ -7,16 +7,17 @@ export const BRAND_BASE_INFO: { [key: string] : string | boolean} ={
7
7
  FAVICON: "https://tiledesk.com/wp-content/uploads/2022/07/tiledesk_v13-300x300.png",
8
8
  META_TITLE:"Tiledesk - Open Source Live Chat",
9
9
  DOCS: true,
10
- LOGOUT_ENABLED: true
10
+ LOGOUT_ENABLED: true,
11
+ DISPLAY_EDIT_PROFILE: true
11
12
  }
12
13
 
13
14
  export var LOGOS_ITEMS: { [key: string] : { label: string | boolean, icon: string }} ={
14
- COMPANY_LOGO: {label: BRAND_BASE_INFO.COMPANY_NAME, icon: 'assets/logos/tiledesk_logo.svg'},
15
- COMPANY_LOGO_NO_TEXT: {label: BRAND_BASE_INFO.COMPANY_NAME, icon: 'assets/logos/tiledesk_logo_no_text.svg'},
16
- BASE_LOGO: {label: BRAND_BASE_INFO.BRAND_NAME, icon: 'assets/logos/tiledesk_logo.svg'},
17
- BASE_LOGO_NO_TEXT: {label: BRAND_BASE_INFO.BRAND_NAME, icon: 'assets/logos/tiledesk_logo_no_text.svg'},
18
- BASE_LOGO_WHITE: { label: BRAND_BASE_INFO.BRAND_NAME, icon: '"assets/logos/tiledesk-logo_new_white.svg'},
19
- BASE_LOGO_WHITE_NO_TEXT: { label: BRAND_BASE_INFO.BRAND_NAME, icon: '"assets/logos/tiledesk-logo_new_white.svg'},
15
+ COMPANY_LOGO: {label: BRAND_BASE_INFO.COMPANY_NAME, icon: 'assets/img/logos/tiledesk_logo.svg'},
16
+ COMPANY_LOGO_NO_TEXT: {label: BRAND_BASE_INFO.COMPANY_NAME, icon: 'assets/img/logos/tiledesk_logo_no_text.svg'},
17
+ BASE_LOGO: {label: BRAND_BASE_INFO.BRAND_NAME, icon: 'assets/img/logos/tiledesk_logo.svg'},
18
+ BASE_LOGO_NO_TEXT: {label: BRAND_BASE_INFO.BRAND_NAME, icon: 'assets/img/logos/tiledesk_logo_no_text.svg'},
19
+ BASE_LOGO_WHITE: { label: BRAND_BASE_INFO.BRAND_NAME, icon: '"assets/img/logos/tiledesk-logo_new_white.svg'},
20
+ BASE_LOGO_WHITE_NO_TEXT: { label: BRAND_BASE_INFO.BRAND_NAME, icon: '"assets/img/logos/tiledesk-logo_new_white.svg'},
20
21
  BASE_LOGO_GRAY: { label: BRAND_BASE_INFO.BRAND_NAME, icon: 'https://support-pre.tiledesk.com/dashboard/assets/img/logos/tiledesk-logo_new_gray.svg'}
21
22
  }
22
23
 
@@ -119,8 +119,8 @@ export const STORAGE_PREFIX = 'tiledesk_widget_';
119
119
 
120
120
  // links
121
121
  export const FIREBASESTORAGE_BASE_URL_IMAGE = 'https://firebasestorage.googleapis.com/v0/b/' //+ 'chat-v2-dev.appspot.com/o/';
122
- export const IMG_PROFILE_BOT = '/assets/images/avatar_bot_tiledesk.svg';
123
- export const IMG_PROFILE_DEFAULT = '/assets/images/avatar_male_tiledesk.svg';
122
+ export const IMG_PROFILE_BOT = '/assets/img/avatar_bot_tiledesk.svg';
123
+ export const IMG_PROFILE_DEFAULT = '/assets/img/avatar_male_tiledesk.svg';
124
124
 
125
125
  //LOG LEVEL
126
126
  // export enum LogLevel {
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes