@postnord/pn-marketweb-components 4.0.1 → 4.0.3
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/dist/cjs/index-b02670c2.js +4 -12
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/pn-chat-message_2.cjs.entry.js +2 -1
- package/dist/cjs/pn-chat-message_2.cjs.entry.js.map +1 -1
- package/dist/cjs/pn-chat.cjs.entry.js +1 -1
- package/dist/cjs/{pn-chat.service-eaf6ed50.js → pn-chat.service-5a8d89b9.js} +2 -4
- package/dist/cjs/pn-chat.service-5a8d89b9.js.map +1 -0
- package/dist/cjs/pn-market-web-components.cjs.js +1 -1
- package/dist/cjs/pn-marketweb-table.cjs.entry.js +37 -29
- package/dist/cjs/pn-marketweb-table.cjs.entry.js.map +1 -1
- package/dist/cjs/pn-usp-promoter.cjs.entry.js +1 -1
- package/dist/collection/collection-manifest.json +1 -3
- package/dist/collection/components/widgets/pn-chat/pn-chat-message/pn-chat-message.js +2 -1
- package/dist/collection/components/widgets/pn-chat/pn-chat-message/pn-chat-message.js.map +1 -1
- package/dist/collection/components/widgets/pn-chat/pn-chat-stories-constants.js +23 -163
- package/dist/collection/components/widgets/pn-chat/pn-chat-stories-constants.js.map +1 -1
- package/dist/collection/components/widgets/pn-chat/pn-chat.service.js +1 -3
- package/dist/collection/components/widgets/pn-chat/pn-chat.service.js.map +1 -1
- package/dist/collection/components/widgets/pn-chat/pn-chat.stories.js +4 -4
- package/dist/collection/components/widgets/pn-chat/pn-chat.stories.js.map +1 -1
- package/dist/collection/components/widgets/pn-marketweb-table/pn-marketweb-table.css +10 -1
- package/dist/collection/components/widgets/pn-marketweb-table/pn-marketweb-table.js +2 -2
- package/dist/collection/components/widgets/pn-marketweb-table/pn-marketweb-table.js.map +1 -1
- package/dist/collection/components/widgets/pn-marketweb-table/pn-marketweb-table.stories.js +37 -1
- package/dist/collection/components/widgets/pn-marketweb-table/pn-marketweb-table.stories.js.map +1 -1
- package/dist/collection/components/widgets/pn-marketweb-table/translations.js +33 -25
- package/dist/collection/components/widgets/pn-marketweb-table/translations.js.map +1 -1
- package/dist/collection/components/widgets/pn-usp-promoter/pn-usp-promoter.js +1 -1
- package/dist/collection/globals/types.js.map +1 -1
- package/dist/components/pn-chat-message2.js +2 -1
- package/dist/components/pn-chat-message2.js.map +1 -1
- package/dist/components/pn-chat.service.js +1 -3
- package/dist/components/pn-chat.service.js.map +1 -1
- package/dist/components/pn-marketweb-search.js +126 -1
- package/dist/components/pn-marketweb-search.js.map +1 -1
- package/dist/components/pn-marketweb-table.js +36 -28
- package/dist/components/pn-marketweb-table.js.map +1 -1
- package/dist/components/pn-usp-promoter.js +1 -1
- package/dist/esm/index-c311acd6.js +4 -12
- package/dist/esm/loader.js +1 -1
- package/dist/esm/pn-chat-message_2.entry.js +2 -1
- package/dist/esm/pn-chat-message_2.entry.js.map +1 -1
- package/dist/esm/pn-chat.entry.js +1 -1
- package/dist/esm/{pn-chat.service-f4037d6f.js → pn-chat.service-0def5c4e.js} +2 -4
- package/dist/esm/pn-chat.service-0def5c4e.js.map +1 -0
- package/dist/esm/pn-market-web-components.js +1 -1
- package/dist/esm/pn-marketweb-table.entry.js +37 -29
- package/dist/esm/pn-marketweb-table.entry.js.map +1 -1
- package/dist/esm/pn-usp-promoter.entry.js +1 -1
- package/dist/package.json +1 -1
- package/dist/pn-market-web-components/p-3a936c5d.entry.js +2 -0
- package/dist/pn-market-web-components/p-3a936c5d.entry.js.map +1 -0
- package/dist/pn-market-web-components/p-6bec8d72.js +2 -0
- package/dist/pn-market-web-components/p-6bec8d72.js.map +1 -0
- package/dist/pn-market-web-components/p-923aa6d2.entry.js +2 -0
- package/dist/pn-market-web-components/p-923aa6d2.entry.js.map +1 -0
- package/dist/pn-market-web-components/{p-cc7c596e.entry.js → p-a298a263.entry.js} +2 -2
- package/dist/pn-market-web-components/{p-f21311ad.entry.js → p-da56370b.entry.js} +2 -2
- package/dist/pn-market-web-components/pn-market-web-components.esm.js +1 -1
- package/dist/pn-market-web-components/pn-market-web-components.esm.js.map +1 -1
- package/dist/types/components/widgets/pn-chat/pn-chat-message/pn-chat-message.d.ts +1 -0
- package/dist/types/components/widgets/pn-chat/pn-chat-stories-constants.d.ts +6 -127
- package/dist/types/components/widgets/pn-marketweb-table/translations.d.ts +8 -0
- package/dist/types/components.d.ts +0 -100
- package/dist/types/globals/types.d.ts +2 -0
- package/dist/vscode-data.json +0 -142
- package/package.json +1 -1
- package/dist/cjs/pn-chat.service-eaf6ed50.js.map +0 -1
- package/dist/cjs/pn-search.cjs.entry.js +0 -54
- package/dist/cjs/pn-search.cjs.entry.js.map +0 -1
- package/dist/cjs/pn-usp-simple.cjs.entry.js +0 -56
- package/dist/cjs/pn-usp-simple.cjs.entry.js.map +0 -1
- package/dist/collection/components/widgets/pn-search/pn-search.css +0 -140
- package/dist/collection/components/widgets/pn-search/pn-search.js +0 -368
- package/dist/collection/components/widgets/pn-search/pn-search.js.map +0 -1
- package/dist/collection/components/widgets/pn-search/pn-search.stories.js +0 -54
- package/dist/collection/components/widgets/pn-search/pn-search.stories.js.map +0 -1
- package/dist/collection/components/widgets/pn-usp-simple/pn-usp-simple.css +0 -116
- package/dist/collection/components/widgets/pn-usp-simple/pn-usp-simple.js +0 -269
- package/dist/collection/components/widgets/pn-usp-simple/pn-usp-simple.js.map +0 -1
- package/dist/collection/components/widgets/pn-usp-simple/pn-usp-simple.stories.js +0 -63
- package/dist/collection/components/widgets/pn-usp-simple/pn-usp-simple.stories.js.map +0 -1
- package/dist/components/pn-marketweb-search2.js +0 -130
- package/dist/components/pn-marketweb-search2.js.map +0 -1
- package/dist/components/pn-search.d.ts +0 -11
- package/dist/components/pn-search.js +0 -91
- package/dist/components/pn-search.js.map +0 -1
- package/dist/components/pn-usp-simple.d.ts +0 -11
- package/dist/components/pn-usp-simple.js +0 -82
- package/dist/components/pn-usp-simple.js.map +0 -1
- package/dist/esm/pn-chat.service-f4037d6f.js.map +0 -1
- package/dist/esm/pn-search.entry.js +0 -50
- package/dist/esm/pn-search.entry.js.map +0 -1
- package/dist/esm/pn-usp-simple.entry.js +0 -52
- package/dist/esm/pn-usp-simple.entry.js.map +0 -1
- package/dist/pn-market-web-components/p-04107723.entry.js +0 -2
- package/dist/pn-market-web-components/p-04107723.entry.js.map +0 -1
- package/dist/pn-market-web-components/p-10776075.entry.js +0 -2
- package/dist/pn-market-web-components/p-10776075.entry.js.map +0 -1
- package/dist/pn-market-web-components/p-2fd60147.entry.js +0 -2
- package/dist/pn-market-web-components/p-2fd60147.entry.js.map +0 -1
- package/dist/pn-market-web-components/p-a079c496.js +0 -2
- package/dist/pn-market-web-components/p-a079c496.js.map +0 -1
- package/dist/pn-market-web-components/p-e733f44f.entry.js +0 -2
- package/dist/pn-market-web-components/p-e733f44f.entry.js.map +0 -1
- package/dist/types/components/widgets/pn-search/pn-search.d.ts +0 -29
- package/dist/types/components/widgets/pn-search/pn-search.stories.d.ts +0 -7
- package/dist/types/components/widgets/pn-usp-simple/pn-usp-simple.d.ts +0 -19
- package/dist/types/components/widgets/pn-usp-simple/pn-usp-simple.stories.d.ts +0 -7
- /package/dist/pn-market-web-components/{p-cc7c596e.entry.js.map → p-a298a263.entry.js.map} +0 -0
- /package/dist/pn-market-web-components/{p-f21311ad.entry.js.map → p-da56370b.entry.js.map} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { r as registerInstance, h, F as Fragment, d as Host } from './index-c311acd6.js';
|
|
2
2
|
import { H as HeadingTag } from './HeadingTag-e20016ab.js';
|
|
3
3
|
import { b as angle_down, a as angle_up } from './angle_up-b5f955ea.js';
|
|
4
|
-
import { P as PnChatService } from './pn-chat.service-
|
|
4
|
+
import { P as PnChatService } from './pn-chat.service-0def5c4e.js';
|
|
5
5
|
import { F as FetchHelper } from './FetchHelper-4789695a.js';
|
|
6
6
|
|
|
7
7
|
const DEFAULT_BREAKPOINTS = {
|
|
@@ -116,45 +116,53 @@ const translations = {
|
|
|
116
116
|
showMoreLabel: 'Näytä lisää',
|
|
117
117
|
},
|
|
118
118
|
'de': {
|
|
119
|
-
newMessage: '
|
|
120
|
-
toggleButtonOn: '
|
|
121
|
-
toggleButtonOff: '
|
|
119
|
+
newMessage: 'Neue Nachricht',
|
|
120
|
+
toggleButtonOn: 'Details anzeigen',
|
|
121
|
+
toggleButtonOff: 'Details ausblenden',
|
|
122
|
+
showMoreLabel: 'Mehr anzeigen',
|
|
122
123
|
},
|
|
123
124
|
'zh': {
|
|
124
|
-
newMessage: '
|
|
125
|
-
toggleButtonOn: '
|
|
126
|
-
toggleButtonOff: '
|
|
125
|
+
newMessage: '新消息',
|
|
126
|
+
toggleButtonOn: '显示详情',
|
|
127
|
+
toggleButtonOff: '隐藏详情',
|
|
128
|
+
showMoreLabel: '显示更多',
|
|
127
129
|
},
|
|
128
130
|
'it': {
|
|
129
|
-
newMessage: '
|
|
130
|
-
toggleButtonOn: '
|
|
131
|
-
toggleButtonOff: '
|
|
131
|
+
newMessage: 'Nuovo messaggio',
|
|
132
|
+
toggleButtonOn: 'Mostra dettagli',
|
|
133
|
+
toggleButtonOff: 'Nascondi dettagli',
|
|
134
|
+
showMoreLabel: 'Mostra di più',
|
|
132
135
|
},
|
|
133
136
|
'nl': {
|
|
134
|
-
newMessage: '
|
|
135
|
-
toggleButtonOn: '
|
|
136
|
-
toggleButtonOff: '
|
|
137
|
+
newMessage: 'Nieuw bericht',
|
|
138
|
+
toggleButtonOn: 'Toon details',
|
|
139
|
+
toggleButtonOff: 'Verberg details',
|
|
140
|
+
showMoreLabel: 'Meer tonen',
|
|
137
141
|
},
|
|
138
142
|
'tr': {
|
|
139
|
-
newMessage: '
|
|
140
|
-
toggleButtonOn: '
|
|
141
|
-
toggleButtonOff: '
|
|
143
|
+
newMessage: 'Yeni mesaj',
|
|
144
|
+
toggleButtonOn: 'Detayları göster',
|
|
145
|
+
toggleButtonOff: 'Detayları gizle',
|
|
146
|
+
showMoreLabel: 'Daha fazla göster',
|
|
142
147
|
},
|
|
143
148
|
'pt': {
|
|
144
|
-
newMessage: '
|
|
145
|
-
toggleButtonOn: '
|
|
146
|
-
toggleButtonOff: '
|
|
149
|
+
newMessage: 'Nova mensagem',
|
|
150
|
+
toggleButtonOn: 'Mostrar detalhes',
|
|
151
|
+
toggleButtonOff: 'Ocultar detalhes',
|
|
152
|
+
showMoreLabel: 'Mostrar mais',
|
|
147
153
|
},
|
|
148
154
|
'pl': {
|
|
149
|
-
newMessage: '
|
|
150
|
-
toggleButtonOn: '
|
|
151
|
-
toggleButtonOff: '
|
|
155
|
+
newMessage: 'Nowa wiadomość',
|
|
156
|
+
toggleButtonOn: 'Pokaż szczegóły',
|
|
157
|
+
toggleButtonOff: 'Ukryj szczegóły',
|
|
158
|
+
showMoreLabel: 'Pokaż więcej',
|
|
152
159
|
},
|
|
153
160
|
'pt-BR': {
|
|
154
|
-
newMessage: '
|
|
155
|
-
toggleButtonOn: '
|
|
156
|
-
toggleButtonOff: '
|
|
157
|
-
|
|
161
|
+
newMessage: 'Nova mensagem',
|
|
162
|
+
toggleButtonOn: 'Mostrar detalhes',
|
|
163
|
+
toggleButtonOff: 'Ocultar detalhes',
|
|
164
|
+
showMoreLabel: 'Mostrar mais',
|
|
165
|
+
}
|
|
158
166
|
};
|
|
159
167
|
|
|
160
168
|
class MarketwebTableService {
|
|
@@ -194,7 +202,7 @@ class MarketwebTableService {
|
|
|
194
202
|
}
|
|
195
203
|
}
|
|
196
204
|
|
|
197
|
-
const pnMarketwebTableCss = "pn-button-dropdown .pn-button-dropdown>pn-button>.pn-button{min-height:initial}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}@media screen and (max-width: 767px){.sr-only-mobile{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}}:host{display:block}.pn-marketweb-table .container{max-width:1200px;margin:0 auto;padding:1rem}.pn-marketweb-table .heading-section{display:flex;justify-content:space-between;gap:2rem;margin-bottom:2rem}@media (max-width: 768px){.pn-marketweb-table .heading-section{flex-direction:column}}.pn-marketweb-table .heading-section .heading-wrapper{display:flex;flex-direction:column}.pn-marketweb-table .heading-section .preamble-section{width:80%}.pn-marketweb-table .heading-section .main-heading{margin-bottom:1rem}.pn-marketweb-table .heading-section .summary{display:flex;height:7rem;justify-content:flex-end;gap:clamp(1rem, 4vw, 2rem)}@media (max-width: 768px){.pn-marketweb-table .heading-section .summary{justify-content:center}}.pn-marketweb-table .heading-section .sub-heading-section{background-color:#effbff;border-radius:1.6rem;display:flex;align-items:center;gap:clamp(0.6rem, 4vw, 1rem);padding:0.6rem 1.2rem;width:13.5rem}.pn-marketweb-table .heading-section .sub-heading-section .icon-container{background-color:#e0f8ff;border-radius:50%;padding:4px}.pn-marketweb-table .heading-section .sub-heading{font-size:clamp(1rem, 3vw, 1.4rem);font-weight:400;line-height:clamp(1.225rem, 4vw, 1.5rem);margin:0}.pn-marketweb-table .heading-section .sub-heading strong{color:#005d92;font-weight:700}.pn-marketweb-table .pn-marketweb-table__table{width:100%;border-collapse:collapse;margin-bottom:3.2rem}.pn-marketweb-table .pn-marketweb-table__table tr{border-bottom:1px solid #e9e6e5;position:relative;border-left:4px solid #ffffff;transition:all 0.7s ease}.pn-marketweb-table .pn-marketweb-table__table tr:last-child{border-bottom:none}.pn-marketweb-table .pn-marketweb-table__table tr:hover{border-left:4px solid #8eddf9;background:#effbff}.pn-marketweb-table .pn-marketweb-table__table tr.row-new-message,.pn-marketweb-table .pn-marketweb-table__table tr.row-new-messag:hover{border-left:4px solid #0aa85c;background:linear-gradient(90deg, rgb(220, 246, 231) 0%, rgb(237, 251, 243) 30%, rgb(255, 255, 255) 70%)}.pn-marketweb-table .pn-marketweb-table__table td{padding:1.6rem 1rem}.pn-marketweb-table .image-container{min-height:5.8rem}.pn-marketweb-table .cell-heading{color:#5e554a;font-size:clamp(0.875rem, 4vw, 1.2rem);font-weight:400;line-height:clamp(1.225rem, 4vw, 1.5rem);margin:0}.pn-marketweb-table .cell-value{color:#2d2013;display:inline-block;font-size:clamp(1rem, 4vw, 1.5rem);font-weight:400;line-height:clamp(1.4rem, 4vw, 1.8rem);margin:0;padding:0.5rem 0}.pn-marketweb-table .row-image{border-radius:0.5rem}.pn-marketweb-table .actions{align-content:center}.pn-marketweb-table .actions .button-wrapper{display:flex;flex-direction:row;justify-content:flex-end;gap:1.6rem}.pn-marketweb-table .actions .button-wrapper .pn-button-text{white-space:nowrap}@media screen and (max-width: 768px){.pn-marketweb-table .actions .button-wrapper{justify-content:space-between}}@media screen and (max-width:
|
|
205
|
+
const pnMarketwebTableCss = "pn-button-dropdown .pn-button-dropdown>pn-button>.pn-button{min-height:initial}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}@media screen and (max-width: 767px){.sr-only-mobile{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}}:host{display:block}.pn-marketweb-table .container{max-width:1200px;margin:0 auto;padding:1rem}.pn-marketweb-table .heading-section{display:flex;justify-content:space-between;gap:2rem;margin-bottom:2rem}@media (max-width: 768px){.pn-marketweb-table .heading-section{flex-direction:column}}.pn-marketweb-table .heading-section .heading-wrapper{display:flex;flex-direction:column}.pn-marketweb-table .heading-section .preamble-section{width:80%}.pn-marketweb-table .heading-section .main-heading{margin-bottom:1rem}.pn-marketweb-table .heading-section .summary{display:flex;height:7rem;justify-content:flex-end;gap:clamp(1rem, 4vw, 2rem)}@media (max-width: 768px){.pn-marketweb-table .heading-section .summary{justify-content:center}}.pn-marketweb-table .heading-section .sub-heading-section{background-color:#effbff;border-radius:1.6rem;display:flex;align-items:center;gap:clamp(0.6rem, 4vw, 1rem);padding:0.6rem 1.2rem;width:13.5rem}.pn-marketweb-table .heading-section .sub-heading-section .icon-container{background-color:#e0f8ff;border-radius:50%;padding:4px}.pn-marketweb-table .heading-section .sub-heading{font-size:clamp(1rem, 3vw, 1.4rem);font-weight:400;line-height:clamp(1.225rem, 4vw, 1.5rem);margin:0}.pn-marketweb-table .heading-section .sub-heading strong{color:#005d92;font-weight:700}.pn-marketweb-table .pn-marketweb-table__table{width:100%;border-collapse:collapse;margin-bottom:3.2rem;border:none}.pn-marketweb-table .pn-marketweb-table__table tr{border-bottom:1px solid #e9e6e5;position:relative;border-left:4px solid #ffffff;transition:all 0.7s ease}.pn-marketweb-table .pn-marketweb-table__table tr:last-child{border-bottom:none}.pn-marketweb-table .pn-marketweb-table__table tr:hover{border-left:4px solid #8eddf9;background:#effbff}.pn-marketweb-table .pn-marketweb-table__table tr.row-new-message,.pn-marketweb-table .pn-marketweb-table__table tr.row-new-messag:hover{border-left:4px solid #0aa85c;background:linear-gradient(90deg, rgb(220, 246, 231) 0%, rgb(237, 251, 243) 30%, rgb(255, 255, 255) 70%)}.pn-marketweb-table .pn-marketweb-table__table td{padding:1.6rem 1rem}.pn-marketweb-table .image-container{min-height:5.8rem}.pn-marketweb-table .cell-heading{color:#5e554a;font-size:clamp(0.875rem, 4vw, 1.2rem);font-weight:400;line-height:clamp(1.225rem, 4vw, 1.5rem);margin:0}.pn-marketweb-table .cell-value{color:#2d2013;display:inline-block;font-size:clamp(1rem, 4vw, 1.5rem);font-weight:400;line-height:clamp(1.4rem, 4vw, 1.8rem);margin:0;padding:0.5rem 0}.pn-marketweb-table .row-image{border-radius:0.5rem}.pn-marketweb-table .actions{align-content:center;width:20%}.pn-marketweb-table .actions .button-wrapper{display:flex;flex-direction:row;justify-content:flex-end;gap:1.6rem}.pn-marketweb-table .actions .button-wrapper pn-button{min-width:50%}.pn-marketweb-table .actions .button-wrapper pn-button.toggle-widget{min-width:30%}.pn-marketweb-table .actions .button-wrapper .pn-button-text{white-space:nowrap}@media screen and (max-width: 768px){.pn-marketweb-table .actions .button-wrapper{justify-content:space-between;flex-direction:column}}@media screen and (max-width: 768px){.pn-marketweb-table tr{display:flex;flex-wrap:wrap}.pn-marketweb-table td:not(.cell-content){width:100%}.pn-marketweb-table td.cell-image{text-align:center}.pn-marketweb-table td.cell-content{flex:1 0 40%}.pn-marketweb-table td.cell-content::before{content:attr(data-label);display:block;font-weight:bold;margin-bottom:0.5em}.pn-marketweb-table td.actions .button-wrapper{gap:2rem}}@media (min-width: 768px){.pn-marketweb-table .row-image{max-width:80px}}.pn-marketweb-table .toggle-detail{display:none;color:#005d92;cursor:pointer;border:none;border-radius:3em;outline:none;position:relative;font-size:0.875em;min-width:5.5em;font-weight:500;background-color:transparent;justify-content:center;align-items:center;transition:color 0.3s;-webkit-tap-highlight-color:transparent;text-decoration:none;padding:0.375em 1em;min-height:2em;line-height:1.65em;white-space:nowrap}.pn-marketweb-table .toggle-detail:hover{background-color:#e0f8ff;opacity:1}.pn-marketweb-table .shipment-id-active .button-wrapper{display:flex}.pn-marketweb-table tr td.cell-content:first-child .cell-value{font-weight:500}.pn-marketweb-table .pn-widget-wrapper{display:flex;justify-content:center}.pn-marketweb-table .shipment-id-active,.pn-marketweb-table .widget-row{background-color:#effbff}.pn-marketweb-table .pn-market-table__show-more-wrapper{display:flex;justify-content:center;width:100%}.row-new-message .button-wrapper:after{content:attr(data-label);background:#0aa85c;border-radius:0 0.4rem 0.4rem 0;color:#ffffff;display:block;position:absolute;left:0;top:0;font-size:1.4rem;padding:0 0.4rem}@media (min-width: 768px){.row-new-message .button-wrapper:after{background:#005e41;border-radius:0.4rem;left:auto;right:1.6rem;font-size:1.1rem;top:0.3rem}}";
|
|
198
206
|
const PnMarketwebTableStyle0 = pnMarketwebTableCss;
|
|
199
207
|
|
|
200
208
|
const PnMarketWebTable = class {
|
|
@@ -400,7 +408,7 @@ const PnMarketWebTable = class {
|
|
|
400
408
|
renderActionButtons(row) {
|
|
401
409
|
if (!row.actionButtons)
|
|
402
410
|
return null;
|
|
403
|
-
return (h("td", { class: "actions", role: "cell" }, h("div", { class: "button-wrapper", role: "group", "aria-label": this.tableRowCtaActionLabel, "data-label": this.i18n.newMessage }, row.actionButtons.map(btn => (h("pn-button", { appearance: btn.appearance, class: btn.class, variant: btn.variant, small: btn.small, loading: btn.loading, icon: btn.icon, leftIcon: btn.leftIcon, tooltip: btn.tooltip, href: btn.href, rel: btn.rel, download: btn.download, form: btn.form, buttonId: btn.buttonId, "data-chat": btn.customAttribute }, btn.content))))));
|
|
411
|
+
return (h("td", { class: "actions", role: "cell" }, h("div", { class: "button-wrapper", role: "group", "aria-label": this.tableRowCtaActionLabel, "data-label": this.i18n.newMessage }, row.actionButtons.map(btn => (h("pn-button", { appearance: btn.appearance, class: btn.class, variant: btn.variant, small: btn.small, loading: btn.loading, icon: btn.icon, leftIcon: btn.leftIcon, tooltip: btn.tooltip, href: btn.href, rel: btn.rel, download: btn.download, form: btn.form, buttonId: btn.buttonId, "icon-only": btn.iconOnly, arialabel: btn.content, "data-chat": btn.customAttribute }, btn.content))))));
|
|
404
412
|
}
|
|
405
413
|
async OpenChatEvent(aTags) {
|
|
406
414
|
aTags.forEach((aTag) => {
|
|
@@ -442,7 +450,7 @@ const PnMarketWebTable = class {
|
|
|
442
450
|
render() {
|
|
443
451
|
const tableId = `table-${Math.random().toString(36)}`;
|
|
444
452
|
const headingId = `${tableId}-main-heading`;
|
|
445
|
-
return (h(Host, { key: '
|
|
453
|
+
return (h(Host, { key: '98283a658faabafcb813eeb447c4bc406f05f18c', language: this.language }, h("div", { key: 'baea729e089500c3c99757e4e614f9f710000603', class: 'pn-marketweb-table' }, h("div", { key: 'ef40e29179a3d9f380360ed54099e5724d4368df', role: 'region', "aria-labelledby": this.mainHeading ? headingId : undefined }, h("div", { key: '61c96ab70681a3ec976c94f385c9d4136d73cb8e', class: 'heading-section' }, h("div", { key: '4ed87bda71059736a9d0dbe8a55d89a34a81a89c', class: 'heading-wrapper' }, this.mainHeading && (h(HeadingTag, { key: '0ef856c0259011be63c5b6a169bd69285ee09c13', level: this.mainHeadingLevel, cssClass: 'main-heading', id: headingId }, this.mainHeading)), this.preamble && (h("div", { key: '9eb7c8d520843e331a2ec77bc434a135d82c4699', class: "preamble-section" }, this.preamble)))), this._rows.length > 0 && (h("table", { key: '6346e44c176d834b2fe66dea162c5976fae61441', class: 'pn-marketweb-table__table', "aria-labelledby": this.mainHeading ? `${tableId}-main-heading` : undefined }, this._headers && (h("thead", { key: '92d29b69db5ca91664df5dd9ee3fb7b9c3fc97bb', class: this.showHeadersInCells ? 'sr-only' : undefined }, h("tr", { key: 'fa3d3ec4062835a13f6292a70e37559e7ba90fb7' }, this._rows.some((row) => row.imageUrl) && this.imageColAriaHeader && (h("th", { key: '5d2e43ee1cd03b1a722ee5ae9594226500c0fbe3', scope: 'col', class: 'sr-only' }, this.imageColAriaHeader)), this._headers.map((header) => (h("th", { key: header.key, scope: 'col', class: 'sr-only-mobile' }, header.label))), this._rows.some((row) => row.link1 || row.link2) && this.ctaColAriaHeader && (h("th", { key: '07356d07d91450352ea9a425286e1f9876e2e578', scope: 'col', class: 'sr-only' }, this.ctaColAriaHeader))))), h("tbody", { key: '3b0357be0ffccef7e768d055379f75a8fdd1b6e7', class: "pn-marketweb-table__table-body" }, this._rows.slice(0, this.shipmentCount).map((row, rowIndex) => (h("tr", { key: rowIndex, class: `cell-row ${row.hasNewMessages ? "row-new-message" : ''}` }, row.imageUrl && (h("td", { class: 'cell-image' }, h("div", { class: 'image-container' }, h("img", { src: row.imageUrl, alt: '', class: 'row-image' })))), this._headers.map((header) => (h("td", { key: `${rowIndex}-${header.key}`, class: 'cell-content' }, this.renderCell(header, row)))), this.renderActionButtons(row))))))), this.shipmentCount > this._rows.length && (h("div", { key: 'ff1ab5516f505a6315a45e60275e0ca1167840f1', class: "pn-market-table__show-more-wrapper" }, h("pn-button", { key: 'c34362a272f682e5e7a2f9bb6498d1713afcf6fa', variant: "outlined", appearance: "light", label: this.i18n?.showMoreLabel || 'Show More', onClick: () => this.handleShowMore() })))))));
|
|
446
454
|
}
|
|
447
455
|
static get watchers() { return {
|
|
448
456
|
"language": ["onLanguageChange"]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"pn-marketweb-table.entry.js","mappings":"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","names":[],"sources":["src/globals/ScreensizeDetect.ts","src/components/widgets/pn-marketweb-table/translations.ts","src/components/widgets/pn-marketweb-table/pn-marketweb-table.service.ts","src/components/widgets/pn-marketweb-table/pn-marketweb-table.scss?tag=pn-marketweb-table","src/components/widgets/pn-marketweb-table/pn-marketweb-table.tsx"],"sourcesContent":["interface Breakpoints {\n mobile: number;\n tablet: number;\n desktop: number;\n}\n\ntype ScreenSize = 'mobile' | 'tablet' | 'desktop';\n\nexport interface ScreenWidthInfo {\n width: number;\n size: ScreenSize;\n isTouch: boolean;\n}\n\nexport const DEFAULT_BREAKPOINTS: Breakpoints = {\n mobile: 768,\n tablet: 1024,\n desktop: 1025,\n};\n\nexport class ScreenWidth {\n private static instance: ScreenWidth;\n private breakpoints: Breakpoints;\n private callbacks: Set<(info: ScreenWidthInfo) => void>;\n private resizeTimeout?: number;\n\n private constructor() {\n this.breakpoints = DEFAULT_BREAKPOINTS;\n this.callbacks = new Set();\n this.initializeListeners();\n }\n\n public static getInstance(): ScreenWidth {\n if (!ScreenWidth.instance) {\n ScreenWidth.instance = new ScreenWidth();\n }\n return ScreenWidth.instance;\n }\n\n public setBreakpoints(breakpoints: Partial<Breakpoints>): void {\n this.breakpoints = { ...this.breakpoints, ...breakpoints };\n this.notifyListeners();\n }\n\n private getWidth(): number {\n if (typeof window === 'undefined') return 0;\n\n return window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth || 0;\n }\n\n private isTouch(): boolean {\n if (typeof window === 'undefined') return false;\n\n return (\n 'ontouchstart' in window ||\n navigator.maxTouchPoints > 0 ||\n // @ts-ignore - Some browsers might not have msMaxTouchPoints\n navigator.msMaxTouchPoints > 0\n );\n }\n\n private getScreenSize(width: number): ScreenSize {\n if (width < this.breakpoints.mobile) return 'mobile';\n if (width < this.breakpoints.tablet) return 'tablet';\n return 'desktop';\n }\n\n public getScreenInfo(): ScreenWidthInfo {\n const width = this.getWidth();\n return {\n width,\n size: this.getScreenSize(width),\n isTouch: this.isTouch(),\n };\n }\n\n private initializeListeners(): void {\n if (typeof window === 'undefined') return;\n\n const handleResize = () => {\n if (this.resizeTimeout) {\n window.clearTimeout(this.resizeTimeout);\n }\n\n this.resizeTimeout = window.setTimeout(() => {\n this.notifyListeners();\n }, 250);\n };\n\n window.addEventListener('resize', handleResize);\n window.addEventListener('orientationchange', handleResize);\n }\n\n private notifyListeners(): void {\n const info = this.getScreenInfo();\n this.callbacks.forEach(callback => callback(info));\n }\n\n public subscribe(callback: (info: ScreenWidthInfo) => void): () => void {\n this.callbacks.add(callback);\n callback(this.getScreenInfo()); // Initial call\n\n return () => {\n this.callbacks.delete(callback);\n };\n }\n}\n","export const translations = {\n 'sv': {\n newMessage: 'Nytt meddelande',\n toggleButtonOn: 'Visa detaljer',\n toggleButtonOff: 'Dölj detaljer',\n showMoreLabel: 'Visa mer',\n },\n 'en': {\n newMessage: 'New message',\n toggleButtonOn: 'Show details',\n toggleButtonOff: 'Hide details',\n showMoreLabel: 'Show more',\n },\n 'da': {\n newMessage: 'Ny besked',\n toggleButtonOn: 'Vis detaljer',\n toggleButtonOff: 'Skjul detaljer',\n showMoreLabel: 'Vis mere',\n },\n 'no': {\n newMessage: 'Ny melding',\n toggleButtonOn: 'Vis detaljer',\n toggleButtonOff: 'Skjul detaljer',\n showMoreLabel: 'Vis mer',\n },\n 'fi': {\n newMessage: 'Uusi viesti',\n toggleButtonOn: 'Näytä tiedot',\n toggleButtonOff: 'Piilota tiedot',\n showMoreLabel: 'Näytä lisää',\n },\n 'de': {\n newMessage: 'Nytt meddelade',\n toggleButtonOn: 'Visa detaljer',\n toggleButtonOff: 'Dölj detaljer',\n },\n 'zh': {\n newMessage: 'Nytt meddelade',\n toggleButtonOn: 'Visa detaljer',\n toggleButtonOff: 'Dölj detaljer',\n },\n 'it': {\n newMessage: 'Nytt meddelade',\n toggleButtonOn: 'Visa detaljer',\n toggleButtonOff: 'Dölj detaljer',\n },\n 'nl': {\n newMessage: 'Nytt meddelade',\n toggleButtonOn: 'Visa detaljer',\n toggleButtonOff: 'Dölj detaljer',\n },\n 'tr': {\n newMessage: 'Nytt meddelade',\n toggleButtonOn: 'Visa detaljer',\n toggleButtonOff: 'Dölj detaljer',\n },\n 'pt': {\n newMessage: 'Nytt meddelade',\n toggleButtonOn: 'Visa detaljer',\n toggleButtonOff: 'Dölj detaljer',\n },\n 'pl': {\n newMessage: 'Nytt meddelade',\n toggleButtonOn: 'Visa detaljer',\n toggleButtonOff: 'Dölj detaljer',\n },\n 'pt-BR': {\n newMessage: 'Nytt meddelade',\n toggleButtonOn: 'Visa detaljer',\n toggleButtonOff: 'Dölj detaljer',\n },\n};\n","import { FetchHelper } from '@/globals/FetchHelper';\nimport { ShipmentsBody, ShipmentsResponse, TableRowData } from './types';\n\nexport class MarketwebTableService {\n private readonly _endpoint;\n private readonly _language;\n private fetchHelper = new FetchHelper('MarketTableService');\n private readonly _getUserShipmentsPath = `/get-user-shipments`;\n\n\n constructor(endpoint: string, language: string) {\n this._endpoint = this.formatEndpoint(endpoint);\n this._language = language;\n }\n\n async getUserShipments(contentId: string, skip: number, take: number, isChatEnabled: boolean): Promise<TableRowData[]> {\n let model: ShipmentsBody =\n {\n skip: skip,\n take: take,\n isChatEnabled: isChatEnabled,\n language: this._language,\n contentId: contentId,\n };\n\n const fetchUrl = this._endpoint + this._getUserShipmentsPath;\n\n const data = (await this.fetchHelper.fetchJson(\n fetchUrl,\n this.getRequestInit(model),\n false\n )) as ShipmentsResponse;\n\n return JSON.parse(data.shipments) as TableRowData[];\n }\n\n private formatEndpoint(endpoint: string): string {\n var formattedEndpoint = endpoint.lastIndexOf('/') === endpoint.length - 1 ? endpoint.substring(0, endpoint.length - 1) : endpoint;\n return formattedEndpoint;\n }\n\n private getRequestInit(model: any, method: string = 'POST', mode: RequestMode = 'cors', contentTypes: string = 'application/json'): RequestInit {\n return {\n mode: mode,\n method: method,\n headers:\n {\n 'Content-Type': contentTypes\n },\n body: JSON.stringify(model)\n };\n }\n}\n","@import '../../../globals/main.scss';\n\n:host {\n display: block;\n}\n\n.pn-marketweb-table {\n .container {\n max-width: 1200px;\n margin: 0 auto;\n padding: 1rem;\n }\n\n .heading-section {\n display: flex;\n justify-content: space-between;\n gap: 2rem;\n margin-bottom: 2rem;\n\n @media (max-width: 768px) {\n flex-direction: column;\n }\n\n .heading-wrapper {\n display: flex;\n flex-direction: column;\n }\n\n .preamble-section {\n width: 80%;\n }\n\n .main-heading {\n margin-bottom: 1rem;\n }\n\n .summary {\n display: flex;\n height: 7rem;\n justify-content: flex-end;\n gap: clamp(1rem, 4vw, 2rem);\n\n @media (max-width: 768px) {\n justify-content: center;\n }\n }\n\n .sub-heading-section {\n background-color: $blue25;\n border-radius: 1.6rem;\n display: flex;\n align-items: center;\n gap: clamp(0.6rem, 4vw, 1rem);\n padding: 0.6rem 1.2rem;\n width: 13.5rem;\n\n .icon-container {\n background-color: $blue50;\n border-radius: 50%;\n padding: 4px;\n }\n }\n\n .sub-heading {\n font-size: clamp(1rem, 3vw, 1.4rem);\n font-weight: 400;\n line-height: clamp(1.225rem, 4vw, 1.5rem);\n margin: 0;\n\n strong {\n color: $blue700;\n font-weight: 700;\n }\n }\n }\n\n .pn-marketweb-table__table {\n width: 100%;\n border-collapse: collapse;\n margin-bottom: 3.2rem;\n }\n\n .pn-marketweb-table__table tr {\n border-bottom: 1px solid $gray100;\n position: relative;\n border-left: 4px solid $white;\n transition: all .7s ease;\n\n\n\n &:last-child {\n border-bottom: none;\n }\n\n &:hover {\n border-left: 4px solid $blue200;\n background: $blue25;\n }\n\n &.row-new-message,\n &.row-new-messag:hover {\n border-left: 4px solid $green500;\n background: linear-gradient(90deg, rgba(220, 246, 231, 1) 0%, rgba(237, 251, 243, 1) 30%, rgba(255, 255, 255, 1) 70%);\n }\n }\n\n .pn-marketweb-table__table td {\n padding: 1.6rem 1rem;\n }\n\n .image-container {\n min-height: 5.8rem;\n }\n\n .cell-heading {\n color: $gray700;\n font-size: clamp(0.875rem, 4vw, 1.2rem);\n font-weight: 400;\n line-height: clamp(1.225rem, 4vw, 1.5rem);\n margin: 0;\n }\n\n .cell-value {\n color: $gray900;\n display: inline-block;\n font-size: clamp(1rem, 4vw, 1.5rem);\n font-weight: 400;\n line-height: clamp(1.4rem, 4vw, 1.8rem);\n margin: 0;\n padding: 0.5rem 0;\n }\n\n .row-image {\n border-radius: 0.5rem;\n }\n\n .actions {\n align-content: center;\n\n .button-wrapper {\n display: flex;\n flex-direction: row;\n justify-content: flex-end;\n gap: 1.6rem;\n\n .pn-button-text {\n white-space: nowrap;\n }\n\n @media screen and (max-width: 768px) {\n justify-content: space-between;\n }\n }\n }\n\n @media screen and (max-width: 767px) {\n tr {\n display: flex;\n flex-wrap: wrap;\n }\n\n td:not(.cell-content) {\n width: 100%;\n }\n\n td.cell-image {\n text-align: center;\n }\n\n td.cell-content {\n flex: 1 0 40%;\n\n &::before {\n content: attr(data-label);\n display: block;\n font-weight: bold;\n margin-bottom: 0.5em;\n }\n }\n\n td.actions .button-wrapper {\n gap: 2rem;\n }\n }\n\n @media (min-width: 768px) {\n .row-image {\n max-width: 80px;\n }\n }\n\n .toggle-detail {\n display: none;\n color: $blue700;\n cursor: pointer;\n border: none;\n border-radius: 3em;\n outline: none;\n position: relative;\n font-size: 0.875em;\n min-width: 5.5em;\n font-weight: 500;\n background-color: transparent;\n justify-content: center;\n align-items: center;\n transition: color 0.3s;\n -webkit-tap-highlight-color: transparent;\n text-decoration: none;\n padding: 0.375em 1em;\n min-height: 2em;\n line-height: 1.65em;\n white-space: nowrap;\n\n &:hover {\n background-color: $blue50;\n opacity: 1;\n }\n }\n\n .shipment-id-active .button-wrapper {\n display: flex;\n }\n\n tr td.cell-content:first-child .cell-value {\n font-weight: 500;\n }\n\n .pn-widget-wrapper {\n display: flex;\n justify-content: center;\n }\n\n .shipment-id-active, .widget-row {\n background-color: $blue25;\n }\n\n .pn-market-table__show-more-wrapper {\n display: flex;\n justify-content: center;\n width: 100%;\n }\n}\n\n\n\n.row-new-message .button-wrapper:after {\n content: attr(data-label);\n background: $green500;\n border-radius: 0 0.4rem .4rem 0;\n color: $white;\n display: block;\n position: absolute;\n left: 0;\n top: 0;\n font-size: 1.4rem;\n padding: 0 .4rem;\n}\n\n@media (min-width: 768px) {\n .row-new-message .button-wrapper:after {\n background: $green700;\n border-radius: .4rem;\n left: auto;\n right: 1.6rem;\n\n font-size: 1.1rem;\n top: .3rem;\n\n }\n}","import { HeadingTag } from '@/globals/HeadingTag';\nimport { Component, Host, Prop, h, State, Fragment, Watch } from '@stencil/core';\nimport { ScreenWidth, ScreenWidthInfo, DEFAULT_BREAKPOINTS } from '@/globals/ScreensizeDetect';\nimport { HeadingLevel } from '@/globals/types';\nimport { angle_down, angle_up } from 'pn-design-assets/pn-assets/icons.js';\nimport { JSX } from 'react';\nimport { PnChatService } from '../pn-chat/pn-chat.service';\nimport { HeaderConfig, TableRowData, TableRowi18n } from './types'\nimport { translations } from './translations';\nimport { MarketwebTableService } from './pn-marketweb-table.service';\n\n@Component({\n tag: 'pn-marketweb-table',\n styleUrl: 'pn-marketweb-table.scss',\n})\nexport class PnMarketWebTable {\n @Prop() mainHeading?: string;\n @Prop() mainHeadingLevel: HeadingLevel = 'h2';\n @Prop() preamble: string\n @Prop() subHeadingLevel: HeadingLevel = 'h3';\n @Prop() headers!: string | HeaderConfig[];\n @Prop() rows!: string | TableRowData[];\n @Prop() showHeadersInCells: boolean = false;\n @Prop() cellHeaderLevel: HeadingLevel = 'h3';\n @Prop() tableRowCtaActionLabel: string;\n @Prop() imageColAriaHeader: string;\n @Prop() ctaColAriaHeader: string;\n @Prop() checkForNewShipments: boolean = false;\n @Prop() endpoint: string;\n @Prop() language: string = 'sv';\n @Prop() market: string;\n @Prop() toggleDetailLabel: string = 'View details';\n @Prop() checkForChat: boolean = false;\n @Prop({ reflect: true, mutable: true }) value: string = '';\n @Prop() shipmentType!: string;\n @Prop() contentId: string = '';\n @Prop() takeAmountRow: number = 2;\n @Prop() shipmentCount: number = 2;\n\n @State() i18n: TableRowi18n;\n @State() private _headers: HeaderConfig[] = [];\n @State() private _rows: TableRowData[] = [];\n @State() private _allKeys: Set<string> = new Set();\n @State() private screenInfo?: ScreenWidthInfo;\n\n private screenWidth = ScreenWidth.getInstance();\n private cleanup?: () => void;\n private _chatService: PnChatService;\n private _chatSegment: string = \"#chat\";\n private _marketwebTableService: MarketwebTableService;\n\n componentWillLoad(): void {\n this.setInitialValues();\n this.setTranslations();\n this._marketwebTableService = new MarketwebTableService(this.endpoint, this.language);\n\n this.cleanup = this.screenWidth.subscribe(info => {\n this.screenInfo = info;\n });\n\n if (this.checkForNewShipments) {\n this._chatService = new PnChatService(this.endpoint, this.market, this.language);\n setInterval(() => {\n this.checkForNewMessages();\n }, 60000);\n }\n }\n\n setTranslations() {\n if (translations[this.language]) {\n this.i18n = translations[this.language] as TableRowi18n;\n }\n else {\n const fallbackLang = 'sv';\n this.i18n = translations[fallbackLang] as TableRowi18n;\n }\n }\n\n @Watch('language')\n onLanguageChange() {\n this.setTranslations();\n }\n\n async componentDidLoad() {\n if (this.checkForChat) {\n const thisTable = document.querySelector('pn-marketweb-table.' + this.shipmentType);\n const chatHrefs = thisTable.querySelectorAll('[href*=\"#chat\"]');\n const openChatATags: HTMLAnchorElement[] = Array.from(chatHrefs).filter(\n (el): el is HTMLAnchorElement => el instanceof HTMLAnchorElement\n );\n this.OpenChatEvent(openChatATags);\n }\n }\n\n componentDidRender() {\n const thisTable = document.querySelector('pn-marketweb-table[shipment-type=' + this.shipmentType + ']');\n const toggleButtons = thisTable?.querySelectorAll('pn-button.toggle-widget');\n toggleButtons?.forEach(pnButton => {\n const btnText = pnButton.querySelector('.pn-button-text');\n if (btnText && btnText.innerHTML !== this.i18n.toggleButtonOn) {\n btnText.innerHTML = this.i18n.toggleButtonOn;\n }\n const button = pnButton.querySelector('button');\n if (button && !button.hasAttribute('data-toggle-initialized')) {\n button.addEventListener('click', this.toggleButton.bind(this));\n button.setAttribute('data-toggle-initialized', 'true');\n }\n });\n }\n\n private toggleButton(event) {\n const button = event.currentTarget as HTMLButtonElement;\n const parentRow = button.closest('tr');\n const parentPnButton = button.closest('pn-button');\n\n const isActive = parentRow.classList.contains(\"shipment-id-active\");\n\n const existingWidgetRows = document.querySelectorAll('.widget-row');\n existingWidgetRows.forEach(row => row.remove());\n\n const allRows = document.querySelectorAll('tr');\n allRows.forEach(row => row.classList.remove(\"shipment-id-active\"));\n\n const allPnButtons = document.querySelectorAll('pn-button.toggle-widget');\n allPnButtons.forEach(pnBtn => {\n pnBtn.setAttribute('icon', angle_down);\n pnBtn.querySelector('.pn-button-text').innerHTML = this.i18n.toggleButtonOn;\n });\n\n if (isActive) {\n return;\n }\n button.querySelector('.pn-button-text').innerHTML = this.i18n.toggleButtonOff;\n parentRow.classList.add(\"shipment-id-active\");\n\n const widgetRow = document.createElement('tr');\n widgetRow.classList.add('widget-row');\n\n const tdElement = document.createElement('td');\n tdElement.colSpan = parentRow.children.length;\n\n const divEl = document.createElement('div');\n divEl.classList.add('pn-widget-wrapper');\n\n const widget = document.createElement('pn-widget');\n widget.setAttribute('locale', this.language);\n widget.setAttribute('shipment-id', button.id);\n\n divEl.appendChild(widget);\n tdElement.appendChild(divEl);\n widgetRow.appendChild(tdElement);\n\n parentRow.parentNode.insertBefore(widgetRow, parentRow.nextSibling);\n\n parentPnButton.setAttribute('icon', angle_up);\n }\n\n private handleShowMore = async () => {\n let skip = this._rows.length;\n let data = await this._marketwebTableService.getUserShipments(this.contentId, skip, this.takeAmountRow, this.checkForChat);\n if (data) {\n this._rows = [...this._rows, ...data];\n }\n };\n\n async waitForComponent(selector: string, maxRetries = 10, delay = 300): Promise<HTMLElement | null> {\n for (let i = 0; i < maxRetries; i++) {\n const element = document.querySelector(selector);\n if (element) {\n return element as HTMLElement;\n }\n await new Promise(resolve => setTimeout(resolve, delay));\n }\n return null;\n }\n\n disconnectedCallback(): void {\n if (this.cleanup) {\n this.cleanup();\n }\n }\n\n private async checkForNewMessages() {\n for (let i = 0; i < this._rows.length; i++) {\n const row = this._rows[i];\n const itemId = row.id;\n\n if (itemId) {\n const hasNewMessages = await this._chatService.hasNewMessages(itemId);\n\n if (row.hasNewMessages !== hasNewMessages) {\n this._rows[i] = { ...row, hasNewMessages: hasNewMessages };\n }\n }\n }\n\n this._rows = [...this._rows];\n }\n\n private setInitialValues(): void {\n try {\n this.parseRows();\n this.parseHeaders();\n\n } catch (error) {\n console.error('Error parsing table data:', error);\n this._rows = [];\n this._headers = [];\n }\n }\n\n private parseRows() {\n this._rows = typeof this.rows === 'string' ? JSON.parse(this.rows) : this.rows;\n this._allKeys = new Set(this._rows.flatMap(row => Object.keys(row)));\n }\n\n private parseHeaders() {\n if (typeof this.headers === 'string') {\n this._headers = JSON.parse(this.headers);\n } else if (this.headers) {\n this._headers = this.headers;\n } else {\n this._headers = Array.from(this._allKeys).map(key => ({ key, label: key }));\n }\n }\n\n private renderCellContent(header: HeaderConfig, row: TableRowData): JSX.Element | string | number | boolean {\n const content = header.render ? header.render(row) : row[header.key] ?? '-';\n return content;\n }\n\n private renderCell(header: HeaderConfig, row: TableRowData): JSX.Element {\n const content = this.renderCellContent(header, row);\n\n if (this.showHeadersInCells || this.screenInfo.width <= DEFAULT_BREAKPOINTS.tablet) {\n return (\n <div class=\"cell-content\" role=\"cell\">\n <HeadingTag\n level={this.cellHeaderLevel}\n cssClass=\"cell-heading\"\n additionalProps={{\n 'aria-hidden': 'true',\n 'role': 'presentation',\n }}\n >\n {header.label}\n </HeadingTag>\n <span class=\"cell-value\">{content}</span>\n </div>\n );\n }\n\n return <>{content}</>;\n }\n\n private handleToggleClick = () => {\n const areaToggle = document.querySelector('.trackandtracewidgetblock');\n if (areaToggle?.parentElement) {\n areaToggle.parentElement.classList.toggle('hideRow');\n }\n };\n\n private renderActionButtons(row: TableRowData): JSX.Element | null {\n if (!row.actionButtons) return null;\n\n return (\n <td class=\"actions\" role=\"cell\">\n <div class=\"button-wrapper\" role=\"group\" aria-label={this.tableRowCtaActionLabel} data-label={this.i18n.newMessage}>\n {row.actionButtons.map(btn => (\n <pn-button\n appearance={btn.appearance}\n class={btn.class}\n variant={btn.variant}\n small={btn.small}\n loading={btn.loading}\n icon={btn.icon}\n leftIcon={btn.leftIcon}\n tooltip={btn.tooltip}\n href={btn.href}\n rel={btn.rel}\n download={btn.download}\n form={btn.form}\n buttonId={btn.buttonId}\n data-chat={btn.customAttribute}>\n {btn.content}\n </pn-button>\n ))}\n </div>\n </td>\n );\n }\n\n private async OpenChatEvent(aTags: HTMLAnchorElement[]) {\n aTags.forEach((aTag) => {\n aTag.addEventListener(\"click\", (e) => {\n e.preventDefault();\n const previousLocationHash = window?.location?.hash ?? \"\";\n\n const findShipmentIdInUrlRegex = /#chat:([a-zA-Z0-9]+)(?=#|$)/;\n const match = aTag.href.match(findShipmentIdInUrlRegex);\n const shipmentId = match ? match[1] : \"\";\n const shipmentHash = `${this._chatSegment}:${shipmentId}`;\n window.location.hash = shipmentHash;\n\n this.waitForComponent('pn-chat').then((chat) => {\n if (shipmentId) {\n chat.setAttribute('item-id', shipmentId);\n }\n else {\n chat.setAttribute('item-id', \"\");\n }\n\n let oldInitChatId = chat.getAttribute('pn-chat-id');\n\n const _defaultChatId = \"00000000-0000-0000-0000-000000000000\";\n const _defaultAlternativeChatId = \"1\";\n const _defaultTriggerChatId = oldInitChatId === _defaultChatId ? _defaultAlternativeChatId : _defaultChatId;\n let chatId = _defaultTriggerChatId;\n const reversedChatId = aTag?.parentElement?.getAttribute('data-chat');\n\n if (reversedChatId) {\n chatId = reversedChatId.split('').reverse().join('');\n }\n\n chat.setAttribute('is-logged-in', 'true');\n chat.setAttribute('pn-chat-id', chatId);\n\n if (previousLocationHash.includes(shipmentHash)) {\n let forceOpen = chat.getAttribute('force-open') ?? 'true';\n forceOpen = forceOpen === 'true' ? 'false' : 'true';\n chat.setAttribute('force-open', forceOpen);\n }\n });\n });\n });\n }\n\n render() {\n const tableId = `table-${Math.random().toString(36)}`;\n const headingId = `${tableId}-main-heading`;\n\n return (\n <Host language={this.language}>\n <div class='pn-marketweb-table'>\n <div role='region' aria-labelledby={this.mainHeading ? headingId : undefined}>\n <div class='heading-section'>\n <div class='heading-wrapper'>\n {this.mainHeading && (\n <HeadingTag level={this.mainHeadingLevel} cssClass='main-heading' id={headingId}>\n {this.mainHeading}\n </HeadingTag>\n )}\n {this.preamble && (\n <div class=\"preamble-section\">{this.preamble}</div>\n )}\n </div>\n </div>\n {this._rows.length > 0 && (\n <table class='pn-marketweb-table__table' aria-labelledby={this.mainHeading ? `${tableId}-main-heading` : undefined}>\n {this._headers && (\n <thead class={this.showHeadersInCells ? 'sr-only' : undefined} >\n <tr >\n {this._rows.some((row) => row.imageUrl) && this.imageColAriaHeader && (\n <th scope='col' class='sr-only'>\n {this.imageColAriaHeader}\n </th>\n )}\n {this._headers.map((header) => (\n <th key={header.key} scope='col' class='sr-only-mobile'>\n {header.label}\n </th>\n ))}\n {this._rows.some((row) => row.link1 || row.link2) && this.ctaColAriaHeader && (\n <th scope='col' class='sr-only'>\n {this.ctaColAriaHeader}\n </th>\n )}\n </tr>\n </thead>\n )}\n <tbody>\n {this._rows.slice(0, this.shipmentCount).map((row, rowIndex) => (\n <tr key={rowIndex} class={row.hasNewMessages ? \"row-new-message\" : null}>\n {row.imageUrl && (\n <td class='cell-image'>\n <div class='image-container'>\n <img src={row.imageUrl} alt='' class='row-image' />\n </div>\n </td>\n )}\n {this._headers.map((header) => (\n <td key={`${rowIndex}-${header.key}`} class='cell-content' >\n {this.renderCell(header, row)}\n </td>\n ))}\n {this.renderActionButtons(row)}\n </tr>\n ))}\n </tbody>\n </table>\n )}\n {this.shipmentCount > this._rows.length && (\n <div class=\"pn-market-table__show-more-wrapper\">\n <pn-button variant=\"outlined\" appearance=\"light\" label={this.i18n?.showMoreLabel || 'Show More'} onClick={() => this.handleShowMore()}></pn-button>\n </div>\n )}\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
|
|
1
|
+
{"file":"pn-marketweb-table.entry.js","mappings":"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","names":[],"sources":["src/globals/ScreensizeDetect.ts","src/components/widgets/pn-marketweb-table/translations.ts","src/components/widgets/pn-marketweb-table/pn-marketweb-table.service.ts","src/components/widgets/pn-marketweb-table/pn-marketweb-table.scss?tag=pn-marketweb-table","src/components/widgets/pn-marketweb-table/pn-marketweb-table.tsx"],"sourcesContent":["interface Breakpoints {\n mobile: number;\n tablet: number;\n desktop: number;\n}\n\ntype ScreenSize = 'mobile' | 'tablet' | 'desktop';\n\nexport interface ScreenWidthInfo {\n width: number;\n size: ScreenSize;\n isTouch: boolean;\n}\n\nexport const DEFAULT_BREAKPOINTS: Breakpoints = {\n mobile: 768,\n tablet: 1024,\n desktop: 1025,\n};\n\nexport class ScreenWidth {\n private static instance: ScreenWidth;\n private breakpoints: Breakpoints;\n private callbacks: Set<(info: ScreenWidthInfo) => void>;\n private resizeTimeout?: number;\n\n private constructor() {\n this.breakpoints = DEFAULT_BREAKPOINTS;\n this.callbacks = new Set();\n this.initializeListeners();\n }\n\n public static getInstance(): ScreenWidth {\n if (!ScreenWidth.instance) {\n ScreenWidth.instance = new ScreenWidth();\n }\n return ScreenWidth.instance;\n }\n\n public setBreakpoints(breakpoints: Partial<Breakpoints>): void {\n this.breakpoints = { ...this.breakpoints, ...breakpoints };\n this.notifyListeners();\n }\n\n private getWidth(): number {\n if (typeof window === 'undefined') return 0;\n\n return window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth || 0;\n }\n\n private isTouch(): boolean {\n if (typeof window === 'undefined') return false;\n\n return (\n 'ontouchstart' in window ||\n navigator.maxTouchPoints > 0 ||\n // @ts-ignore - Some browsers might not have msMaxTouchPoints\n navigator.msMaxTouchPoints > 0\n );\n }\n\n private getScreenSize(width: number): ScreenSize {\n if (width < this.breakpoints.mobile) return 'mobile';\n if (width < this.breakpoints.tablet) return 'tablet';\n return 'desktop';\n }\n\n public getScreenInfo(): ScreenWidthInfo {\n const width = this.getWidth();\n return {\n width,\n size: this.getScreenSize(width),\n isTouch: this.isTouch(),\n };\n }\n\n private initializeListeners(): void {\n if (typeof window === 'undefined') return;\n\n const handleResize = () => {\n if (this.resizeTimeout) {\n window.clearTimeout(this.resizeTimeout);\n }\n\n this.resizeTimeout = window.setTimeout(() => {\n this.notifyListeners();\n }, 250);\n };\n\n window.addEventListener('resize', handleResize);\n window.addEventListener('orientationchange', handleResize);\n }\n\n private notifyListeners(): void {\n const info = this.getScreenInfo();\n this.callbacks.forEach(callback => callback(info));\n }\n\n public subscribe(callback: (info: ScreenWidthInfo) => void): () => void {\n this.callbacks.add(callback);\n callback(this.getScreenInfo()); // Initial call\n\n return () => {\n this.callbacks.delete(callback);\n };\n }\n}\n","export const translations = {\n 'sv': {\n newMessage: 'Nytt meddelande',\n toggleButtonOn: 'Visa detaljer',\n toggleButtonOff: 'Dölj detaljer',\n showMoreLabel: 'Visa mer',\n },\n 'en': {\n newMessage: 'New message',\n toggleButtonOn: 'Show details',\n toggleButtonOff: 'Hide details',\n showMoreLabel: 'Show more',\n },\n 'da': {\n newMessage: 'Ny besked',\n toggleButtonOn: 'Vis detaljer',\n toggleButtonOff: 'Skjul detaljer',\n showMoreLabel: 'Vis mere',\n },\n 'no': {\n newMessage: 'Ny melding',\n toggleButtonOn: 'Vis detaljer',\n toggleButtonOff: 'Skjul detaljer',\n showMoreLabel: 'Vis mer',\n },\n 'fi': {\n newMessage: 'Uusi viesti',\n toggleButtonOn: 'Näytä tiedot',\n toggleButtonOff: 'Piilota tiedot',\n showMoreLabel: 'Näytä lisää',\n },\n 'de': {\n newMessage: 'Neue Nachricht',\n toggleButtonOn: 'Details anzeigen',\n toggleButtonOff: 'Details ausblenden',\n showMoreLabel: 'Mehr anzeigen',\n },\n 'zh': {\n newMessage: '新消息',\n toggleButtonOn: '显示详情',\n toggleButtonOff: '隐藏详情',\n showMoreLabel: '显示更多',\n },\n 'it': {\n newMessage: 'Nuovo messaggio',\n toggleButtonOn: 'Mostra dettagli',\n toggleButtonOff: 'Nascondi dettagli',\n showMoreLabel: 'Mostra di più',\n },\n 'nl': {\n newMessage: 'Nieuw bericht',\n toggleButtonOn: 'Toon details',\n toggleButtonOff: 'Verberg details',\n showMoreLabel: 'Meer tonen',\n },\n 'tr': {\n newMessage: 'Yeni mesaj',\n toggleButtonOn: 'Detayları göster',\n toggleButtonOff: 'Detayları gizle',\n showMoreLabel: 'Daha fazla göster',\n },\n 'pt': {\n newMessage: 'Nova mensagem',\n toggleButtonOn: 'Mostrar detalhes',\n toggleButtonOff: 'Ocultar detalhes',\n showMoreLabel: 'Mostrar mais',\n },\n 'pl': {\n newMessage: 'Nowa wiadomość',\n toggleButtonOn: 'Pokaż szczegóły',\n toggleButtonOff: 'Ukryj szczegóły',\n showMoreLabel: 'Pokaż więcej',\n },\n 'pt-BR': {\n newMessage: 'Nova mensagem',\n toggleButtonOn: 'Mostrar detalhes',\n toggleButtonOff: 'Ocultar detalhes',\n showMoreLabel: 'Mostrar mais',\n }\n};\n","import { FetchHelper } from '@/globals/FetchHelper';\nimport { ShipmentsBody, ShipmentsResponse, TableRowData } from './types';\n\nexport class MarketwebTableService {\n private readonly _endpoint;\n private readonly _language;\n private fetchHelper = new FetchHelper('MarketTableService');\n private readonly _getUserShipmentsPath = `/get-user-shipments`;\n\n\n constructor(endpoint: string, language: string) {\n this._endpoint = this.formatEndpoint(endpoint);\n this._language = language;\n }\n\n async getUserShipments(contentId: string, skip: number, take: number, isChatEnabled: boolean): Promise<TableRowData[]> {\n let model: ShipmentsBody =\n {\n skip: skip,\n take: take,\n isChatEnabled: isChatEnabled,\n language: this._language,\n contentId: contentId,\n };\n\n const fetchUrl = this._endpoint + this._getUserShipmentsPath;\n\n const data = (await this.fetchHelper.fetchJson(\n fetchUrl,\n this.getRequestInit(model),\n false\n )) as ShipmentsResponse;\n\n return JSON.parse(data.shipments) as TableRowData[];\n }\n\n private formatEndpoint(endpoint: string): string {\n var formattedEndpoint = endpoint.lastIndexOf('/') === endpoint.length - 1 ? endpoint.substring(0, endpoint.length - 1) : endpoint;\n return formattedEndpoint;\n }\n\n private getRequestInit(model: any, method: string = 'POST', mode: RequestMode = 'cors', contentTypes: string = 'application/json'): RequestInit {\n return {\n mode: mode,\n method: method,\n headers:\n {\n 'Content-Type': contentTypes\n },\n body: JSON.stringify(model)\n };\n }\n}\n","@import '../../../globals/main.scss';\n\n:host {\n display: block;\n}\n\n.pn-marketweb-table {\n .container {\n max-width: 1200px;\n margin: 0 auto;\n padding: 1rem;\n }\n\n .heading-section {\n display: flex;\n justify-content: space-between;\n gap: 2rem;\n margin-bottom: 2rem;\n\n @media (max-width: $min-width-md) {\n flex-direction: column;\n }\n\n .heading-wrapper {\n display: flex;\n flex-direction: column;\n }\n\n .preamble-section {\n width: 80%;\n }\n\n .main-heading {\n margin-bottom: 1rem;\n }\n\n .summary {\n display: flex;\n height: 7rem;\n justify-content: flex-end;\n gap: clamp(1rem, 4vw, 2rem);\n\n @media (max-width: $min-width-md) {\n justify-content: center;\n }\n }\n\n .sub-heading-section {\n background-color: $blue25;\n border-radius: 1.6rem;\n display: flex;\n align-items: center;\n gap: clamp(0.6rem, 4vw, 1rem);\n padding: 0.6rem 1.2rem;\n width: 13.5rem;\n\n .icon-container {\n background-color: $blue50;\n border-radius: 50%;\n padding: 4px;\n }\n }\n\n .sub-heading {\n font-size: clamp(1rem, 3vw, 1.4rem);\n font-weight: 400;\n line-height: clamp(1.225rem, 4vw, 1.5rem);\n margin: 0;\n\n strong {\n color: $blue700;\n font-weight: 700;\n }\n }\n }\n\n .pn-marketweb-table__table {\n width: 100%;\n border-collapse: collapse;\n margin-bottom: 3.2rem;\n border: none;\n }\n\n .pn-marketweb-table__table tr {\n border-bottom: 1px solid $gray100;\n position: relative;\n border-left: 4px solid $white;\n transition: all .7s ease;\n\n &:last-child {\n border-bottom: none;\n }\n\n &:hover {\n border-left: 4px solid $blue200;\n background: $blue25;\n }\n\n &.row-new-message,\n &.row-new-messag:hover {\n border-left: 4px solid $green500;\n background: linear-gradient(90deg, rgba(220, 246, 231, 1) 0%, rgba(237, 251, 243, 1) 30%, rgba(255, 255, 255, 1) 70%);\n }\n }\n\n .pn-marketweb-table__table {\n td {\n padding: 1.6rem 1rem;\n }\n }\n\n .image-container {\n min-height: 5.8rem;\n }\n\n .cell-heading {\n color: $gray700;\n font-size: clamp(0.875rem, 4vw, 1.2rem);\n font-weight: 400;\n line-height: clamp(1.225rem, 4vw, 1.5rem);\n margin: 0;\n }\n\n .cell-value {\n color: $gray900;\n display: inline-block;\n font-size: clamp(1rem, 4vw, 1.5rem);\n font-weight: 400;\n line-height: clamp(1.4rem, 4vw, 1.8rem);\n margin: 0;\n padding: 0.5rem 0;\n }\n\n .row-image {\n border-radius: 0.5rem;\n }\n\n .actions {\n align-content: center;\n width: 20%;\n\n .button-wrapper {\n display: flex;\n flex-direction: row;\n justify-content: flex-end;\n gap: 1.6rem;\n\n pn-button {\n min-width: 50%;\n }\n\n pn-button.toggle-widget {\n min-width: 30%;\n }\n\n .pn-button-text {\n white-space: nowrap;\n }\n\n @media screen and (max-width: $min-width-md) {\n justify-content: space-between;\n flex-direction: column;\n }\n }\n }\n\n @media screen and (max-width: $min-width-md) {\n tr {\n display: flex;\n flex-wrap: wrap;\n }\n\n td:not(.cell-content) {\n width: 100%;\n }\n\n td.cell-image {\n text-align: center;\n }\n\n td.cell-content {\n flex: 1 0 40%;\n\n &::before {\n content: attr(data-label);\n display: block;\n font-weight: bold;\n margin-bottom: 0.5em;\n }\n }\n\n td.actions .button-wrapper {\n gap: 2rem;\n }\n }\n\n @media (min-width: $min-width-md) {\n .row-image {\n max-width: 80px;\n }\n }\n\n .toggle-detail {\n display: none;\n color: $blue700;\n cursor: pointer;\n border: none;\n border-radius: 3em;\n outline: none;\n position: relative;\n font-size: 0.875em;\n min-width: 5.5em;\n font-weight: 500;\n background-color: transparent;\n justify-content: center;\n align-items: center;\n transition: color 0.3s;\n -webkit-tap-highlight-color: transparent;\n text-decoration: none;\n padding: 0.375em 1em;\n min-height: 2em;\n line-height: 1.65em;\n white-space: nowrap;\n\n &:hover {\n background-color: $blue50;\n opacity: 1;\n }\n }\n\n .shipment-id-active .button-wrapper {\n display: flex;\n }\n\n tr td.cell-content:first-child .cell-value {\n font-weight: 500;\n }\n\n .pn-widget-wrapper {\n display: flex;\n justify-content: center;\n }\n\n .shipment-id-active, .widget-row {\n background-color: $blue25;\n }\n\n .pn-market-table__show-more-wrapper {\n display: flex;\n justify-content: center;\n width: 100%;\n }\n}\n\n\n\n.row-new-message .button-wrapper:after {\n content: attr(data-label);\n background: $green500;\n border-radius: 0 0.4rem .4rem 0;\n color: $white;\n display: block;\n position: absolute;\n left: 0;\n top: 0;\n font-size: 1.4rem;\n padding: 0 .4rem;\n}\n\n@media (min-width: $min-width-md) {\n .row-new-message .button-wrapper:after {\n background: $green700;\n border-radius: .4rem;\n left: auto;\n right: 1.6rem;\n\n font-size: 1.1rem;\n top: .3rem;\n\n }\n}","import { HeadingTag } from '@/globals/HeadingTag';\nimport { Component, Host, Prop, h, State, Fragment, Watch } from '@stencil/core';\nimport { ScreenWidth, ScreenWidthInfo, DEFAULT_BREAKPOINTS } from '@/globals/ScreensizeDetect';\nimport { HeadingLevel } from '@/globals/types';\nimport { angle_down, angle_up } from 'pn-design-assets/pn-assets/icons.js';\nimport { JSX } from 'react';\nimport { PnChatService } from '../pn-chat/pn-chat.service';\nimport { HeaderConfig, TableRowData, TableRowi18n } from './types'\nimport { translations } from './translations';\nimport { MarketwebTableService } from './pn-marketweb-table.service';\n\n@Component({\n tag: 'pn-marketweb-table',\n styleUrl: 'pn-marketweb-table.scss',\n})\nexport class PnMarketWebTable {\n @Prop() mainHeading?: string;\n @Prop() mainHeadingLevel: HeadingLevel = 'h2';\n @Prop() preamble: string\n @Prop() subHeadingLevel: HeadingLevel = 'h3';\n @Prop() headers!: string | HeaderConfig[];\n @Prop() rows!: string | TableRowData[];\n @Prop() showHeadersInCells: boolean = false;\n @Prop() cellHeaderLevel: HeadingLevel = 'h3';\n @Prop() tableRowCtaActionLabel: string;\n @Prop() imageColAriaHeader: string;\n @Prop() ctaColAriaHeader: string;\n @Prop() checkForNewShipments: boolean = false;\n @Prop() endpoint: string;\n @Prop() language: string = 'sv';\n @Prop() market: string;\n @Prop() toggleDetailLabel: string = 'View details';\n @Prop() checkForChat: boolean = false;\n @Prop({ reflect: true, mutable: true }) value: string = '';\n @Prop() shipmentType!: string;\n @Prop() contentId: string = '';\n @Prop() takeAmountRow: number = 2;\n @Prop() shipmentCount: number = 2;\n\n @State() i18n: TableRowi18n;\n @State() private _headers: HeaderConfig[] = [];\n @State() private _rows: TableRowData[] = [];\n @State() private _allKeys: Set<string> = new Set();\n @State() private screenInfo?: ScreenWidthInfo;\n\n private screenWidth = ScreenWidth.getInstance();\n private cleanup?: () => void;\n private _chatService: PnChatService;\n private _chatSegment: string = \"#chat\";\n private _marketwebTableService: MarketwebTableService;\n\n componentWillLoad(): void {\n this.setInitialValues();\n this.setTranslations();\n this._marketwebTableService = new MarketwebTableService(this.endpoint, this.language);\n\n this.cleanup = this.screenWidth.subscribe(info => {\n this.screenInfo = info;\n });\n\n if (this.checkForNewShipments) {\n this._chatService = new PnChatService(this.endpoint, this.market, this.language);\n setInterval(() => {\n this.checkForNewMessages();\n }, 60000);\n }\n }\n\n setTranslations() {\n if (translations[this.language]) {\n this.i18n = translations[this.language] as TableRowi18n;\n }\n else {\n const fallbackLang = 'sv';\n this.i18n = translations[fallbackLang] as TableRowi18n;\n }\n }\n\n @Watch('language')\n onLanguageChange() {\n this.setTranslations();\n }\n\n async componentDidLoad() {\n if (this.checkForChat) {\n const thisTable = document.querySelector('pn-marketweb-table.' + this.shipmentType);\n const chatHrefs = thisTable.querySelectorAll('[href*=\"#chat\"]');\n const openChatATags: HTMLAnchorElement[] = Array.from(chatHrefs).filter(\n (el): el is HTMLAnchorElement => el instanceof HTMLAnchorElement\n );\n this.OpenChatEvent(openChatATags);\n }\n }\n\n componentDidRender() {\n const thisTable = document.querySelector('pn-marketweb-table[shipment-type=' + this.shipmentType + ']');\n const toggleButtons = thisTable?.querySelectorAll('pn-button.toggle-widget');\n toggleButtons?.forEach(pnButton => {\n const btnText = pnButton.querySelector('.pn-button-text');\n if (btnText && btnText.innerHTML !== this.i18n.toggleButtonOn) {\n btnText.innerHTML = this.i18n.toggleButtonOn;\n }\n const button = pnButton.querySelector('button');\n if (button && !button.hasAttribute('data-toggle-initialized')) {\n button.addEventListener('click', this.toggleButton.bind(this));\n button.setAttribute('data-toggle-initialized', 'true');\n }\n });\n }\n\n private toggleButton(event) {\n const button = event.currentTarget as HTMLButtonElement;\n const parentRow = button.closest('tr');\n const parentPnButton = button.closest('pn-button');\n\n const isActive = parentRow.classList.contains(\"shipment-id-active\");\n\n const existingWidgetRows = document.querySelectorAll('.widget-row');\n existingWidgetRows.forEach(row => row.remove());\n\n const allRows = document.querySelectorAll('tr');\n allRows.forEach(row => row.classList.remove(\"shipment-id-active\"));\n\n const allPnButtons = document.querySelectorAll('pn-button.toggle-widget');\n allPnButtons.forEach(pnBtn => {\n pnBtn.setAttribute('icon', angle_down);\n pnBtn.querySelector('.pn-button-text').innerHTML = this.i18n.toggleButtonOn;\n });\n\n if (isActive) {\n return;\n }\n button.querySelector('.pn-button-text').innerHTML = this.i18n.toggleButtonOff;\n parentRow.classList.add(\"shipment-id-active\");\n\n const widgetRow = document.createElement('tr');\n widgetRow.classList.add('widget-row');\n\n const tdElement = document.createElement('td');\n tdElement.colSpan = parentRow.children.length;\n\n const divEl = document.createElement('div');\n divEl.classList.add('pn-widget-wrapper');\n\n const widget = document.createElement('pn-widget');\n widget.setAttribute('locale', this.language);\n widget.setAttribute('shipment-id', button.id);\n\n divEl.appendChild(widget);\n tdElement.appendChild(divEl);\n widgetRow.appendChild(tdElement);\n\n parentRow.parentNode.insertBefore(widgetRow, parentRow.nextSibling);\n\n parentPnButton.setAttribute('icon', angle_up);\n }\n\n private handleShowMore = async () => {\n let skip = this._rows.length;\n let data = await this._marketwebTableService.getUserShipments(this.contentId, skip, this.takeAmountRow, this.checkForChat);\n if (data) {\n this._rows = [...this._rows, ...data];\n }\n };\n\n async waitForComponent(selector: string, maxRetries = 10, delay = 300): Promise<HTMLElement | null> {\n for (let i = 0; i < maxRetries; i++) {\n const element = document.querySelector(selector);\n if (element) {\n return element as HTMLElement;\n }\n await new Promise(resolve => setTimeout(resolve, delay));\n }\n return null;\n }\n\n disconnectedCallback(): void {\n if (this.cleanup) {\n this.cleanup();\n }\n }\n\n private async checkForNewMessages() {\n for (let i = 0; i < this._rows.length; i++) {\n const row = this._rows[i];\n const itemId = row.id;\n\n if (itemId) {\n const hasNewMessages = await this._chatService.hasNewMessages(itemId);\n\n if (row.hasNewMessages !== hasNewMessages) {\n this._rows[i] = { ...row, hasNewMessages: hasNewMessages };\n }\n }\n }\n\n this._rows = [...this._rows];\n }\n\n private setInitialValues(): void {\n try {\n this.parseRows();\n this.parseHeaders();\n\n } catch (error) {\n console.error('Error parsing table data:', error);\n this._rows = [];\n this._headers = [];\n }\n }\n\n private parseRows() {\n this._rows = typeof this.rows === 'string' ? JSON.parse(this.rows) : this.rows;\n this._allKeys = new Set(this._rows.flatMap(row => Object.keys(row)));\n }\n\n private parseHeaders() {\n if (typeof this.headers === 'string') {\n this._headers = JSON.parse(this.headers);\n } else if (this.headers) {\n this._headers = this.headers;\n } else {\n this._headers = Array.from(this._allKeys).map(key => ({ key, label: key }));\n }\n }\n\n private renderCellContent(header: HeaderConfig, row: TableRowData): JSX.Element | string | number | boolean {\n const content = header.render ? header.render(row) : row[header.key] ?? '-';\n return content;\n }\n\n private renderCell(header: HeaderConfig, row: TableRowData): JSX.Element {\n const content = this.renderCellContent(header, row);\n\n if (this.showHeadersInCells || this.screenInfo.width <= DEFAULT_BREAKPOINTS.tablet) {\n return (\n <div class=\"cell-content\" role=\"cell\">\n <HeadingTag\n level={this.cellHeaderLevel}\n cssClass=\"cell-heading\"\n additionalProps={{\n 'aria-hidden': 'true',\n 'role': 'presentation',\n }}\n >\n {header.label}\n </HeadingTag>\n <span class=\"cell-value\">{content}</span>\n </div>\n );\n }\n\n return <>{content}</>;\n }\n\n private handleToggleClick = () => {\n const areaToggle = document.querySelector('.trackandtracewidgetblock');\n if (areaToggle?.parentElement) {\n areaToggle.parentElement.classList.toggle('hideRow');\n }\n };\n\n private renderActionButtons(row: TableRowData): JSX.Element | null {\n if (!row.actionButtons) return null;\n\n return (\n <td class=\"actions\" role=\"cell\">\n <div class=\"button-wrapper\" role=\"group\" aria-label={this.tableRowCtaActionLabel} data-label={this.i18n.newMessage}>\n {row.actionButtons.map(btn => (\n <pn-button\n appearance={btn.appearance}\n class={btn.class}\n variant={btn.variant}\n small={btn.small}\n loading={btn.loading}\n icon={btn.icon}\n leftIcon={btn.leftIcon}\n tooltip={btn.tooltip}\n href={btn.href}\n rel={btn.rel}\n download={btn.download}\n form={btn.form}\n buttonId={btn.buttonId}\n icon-only={btn.iconOnly}\n arialabel={btn.content}\n data-chat={btn.customAttribute}>\n {btn.content}\n </pn-button>\n ))}\n </div>\n </td>\n );\n }\n\n private async OpenChatEvent(aTags: HTMLAnchorElement[]) {\n aTags.forEach((aTag) => {\n aTag.addEventListener(\"click\", (e) => {\n e.preventDefault();\n const previousLocationHash = window?.location?.hash ?? \"\";\n\n const findShipmentIdInUrlRegex = /#chat:([a-zA-Z0-9]+)(?=#|$)/;\n const match = aTag.href.match(findShipmentIdInUrlRegex);\n const shipmentId = match ? match[1] : \"\";\n const shipmentHash = `${this._chatSegment}:${shipmentId}`;\n window.location.hash = shipmentHash;\n\n this.waitForComponent('pn-chat').then((chat) => {\n if (shipmentId) {\n chat.setAttribute('item-id', shipmentId);\n }\n else {\n chat.setAttribute('item-id', \"\");\n }\n\n let oldInitChatId = chat.getAttribute('pn-chat-id');\n\n const _defaultChatId = \"00000000-0000-0000-0000-000000000000\";\n const _defaultAlternativeChatId = \"1\";\n const _defaultTriggerChatId = oldInitChatId === _defaultChatId ? _defaultAlternativeChatId : _defaultChatId;\n let chatId = _defaultTriggerChatId;\n const reversedChatId = aTag?.parentElement?.getAttribute('data-chat');\n\n if (reversedChatId) {\n chatId = reversedChatId.split('').reverse().join('');\n }\n\n chat.setAttribute('is-logged-in', 'true');\n chat.setAttribute('pn-chat-id', chatId);\n\n if (previousLocationHash.includes(shipmentHash)) {\n let forceOpen = chat.getAttribute('force-open') ?? 'true';\n forceOpen = forceOpen === 'true' ? 'false' : 'true';\n chat.setAttribute('force-open', forceOpen);\n }\n });\n });\n });\n }\n\n render() {\n const tableId = `table-${Math.random().toString(36)}`;\n const headingId = `${tableId}-main-heading`;\n\n return (\n <Host language={this.language}>\n <div class='pn-marketweb-table'>\n <div role='region' aria-labelledby={this.mainHeading ? headingId : undefined}>\n <div class='heading-section'>\n <div class='heading-wrapper'>\n {this.mainHeading && (\n <HeadingTag level={this.mainHeadingLevel} cssClass='main-heading' id={headingId}>\n {this.mainHeading}\n </HeadingTag>\n )}\n {this.preamble && (\n <div class=\"preamble-section\">{this.preamble}</div>\n )}\n </div>\n </div>\n {this._rows.length > 0 && (\n <table class='pn-marketweb-table__table' aria-labelledby={this.mainHeading ? `${tableId}-main-heading` : undefined}>\n {this._headers && (\n <thead class={this.showHeadersInCells ? 'sr-only' : undefined} >\n <tr >\n {this._rows.some((row) => row.imageUrl) && this.imageColAriaHeader && (\n <th scope='col' class='sr-only'>\n {this.imageColAriaHeader}\n </th>\n )}\n {this._headers.map((header) => (\n <th key={header.key} scope='col' class='sr-only-mobile'>\n {header.label}\n </th>\n ))}\n {this._rows.some((row) => row.link1 || row.link2) && this.ctaColAriaHeader && (\n <th scope='col' class='sr-only'>\n {this.ctaColAriaHeader}\n </th>\n )}\n </tr>\n </thead>\n )}\n <tbody class=\"pn-marketweb-table__table-body\">\n {this._rows.slice(0, this.shipmentCount).map((row, rowIndex) => (\n <tr key={rowIndex} class={`cell-row ${row.hasNewMessages ? \"row-new-message\" : ''}`}>\n {row.imageUrl && (\n <td class='cell-image'>\n <div class='image-container'>\n <img src={row.imageUrl} alt='' class='row-image' />\n </div>\n </td>\n )}\n {this._headers.map((header) => (\n <td key={`${rowIndex}-${header.key}`} class='cell-content' >\n {this.renderCell(header, row)}\n </td>\n ))}\n {this.renderActionButtons(row)}\n </tr>\n ))}\n </tbody>\n </table>\n )}\n {this.shipmentCount > this._rows.length && (\n <div class=\"pn-market-table__show-more-wrapper\">\n <pn-button variant=\"outlined\" appearance=\"light\" label={this.i18n?.showMoreLabel || 'Show More'} onClick={() => this.handleShowMore()}></pn-button>\n </div>\n )}\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
|
|
@@ -30,7 +30,7 @@ const PnUspPromoter = class {
|
|
|
30
30
|
rightAlign ? "usp-promoter--right-align" : "",
|
|
31
31
|
].join(' ');
|
|
32
32
|
const hasHeadingExtension = this.headingExtension ? "usp-promoter__heading-extension" : "";
|
|
33
|
-
return (h(Host, { key: '
|
|
33
|
+
return (h(Host, { key: '23494c6ed3177f63b9cf483eaf28ae62c4050797' }, h("div", { key: '84cec740776a5f787933b6f7a8734ba00f898a71', class: ` ${classes} ${this.centerMobileContent()}`, style: { 'background': `${this.backgroundGradient}` } }, h("div", { key: '77d56ad9982b8e8d2459c881a797cd5fa3c51519', class: "usp-promoter__content" }, h("slot", { key: '3b0ddfeaec6ce47329f5a2d64df978f8779de532', name: "illustration" }), h("div", { key: '072080f41f6531333d154499c1b63d3822e3cdbb', class: "usp-promoter__content-wrapper" }, h("h2", { key: 'd09398e7a54f7a1a6a44ab1ede3aaac7a6e00261', class: `usp-promoter__content-heading ${hasHeadingExtension}` }, h("span", { key: '48f98ffcce6c0c6b2b6cf8bb754b84d414fedb8c' }, this.heading), this.headingExtension ? h("span", null, this.headingExtension) : null), h("p", { key: '3f0abe6fcd83e31ffa2ab932027b14f9c1e7c439', class: "usp-promoter__content-text" }, this.bodyText), h("slot", { key: '54fa5a5072c8897dd6ae7c216b2c5d7ad1d6a2b6', name: "app-store" }), h("slot", { key: '0bad1abdc12f5108a62f723136c764214bcc6143', name: "usp-buttons" }))))));
|
|
34
34
|
}
|
|
35
35
|
};
|
|
36
36
|
PnUspPromoter.style = PnUspPromoterStyle0;
|
package/dist/package.json
CHANGED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{r as e,h as t,d as s,g as a}from"./p-82546a44.js";import{a as i}from"./p-575f557a.js";import{a as n}from"./p-36b39340.js";const r='<svg class="pn-icon-svg" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"><path fill="#000" fill-rule="evenodd" d="M2 12C2 6.477 6.477 2 12 2s10 4.477 10 10-4.477 10-10 10c-.97 0-1.908-.138-2.797-.397-1.242-.36-2.352-.61-3.409-.464l-2.095.29A1 1 0 0 1 2.572 20.3l.289-2.095c.146-1.057-.103-2.167-.464-3.41A10 10 0 0 1 2 12m10-8a8 8 0 0 0-7.683 10.239c.364 1.252.734 2.724.525 4.24l-.108.788.787-.11c1.516-.208 2.988.162 4.24.526.71.206 1.46.317 2.239.317a8 8 0 1 0 0-16m-.034 4.5c-.445 0-.84.285-.981.707l-.037.11a1 1 0 0 1-1.897-.633l.037-.11A3.03 3.03 0 0 1 11.966 6.5h.18C13.734 6.5 15 7.807 15 9.371a2.83 2.83 0 0 1-1.553 2.523.81.81 0 0 0-.447.724V13a1 1 0 1 1-2 0v-.382c0-1.064.6-2.037 1.553-2.512A.83.83 0 0 0 13 9.37a.87.87 0 0 0-.854-.871zm.034 6a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3" clip-rule="evenodd"/></svg>';const o=r;const h="pn-button-dropdown .pn-button-dropdown>pn-button>.pn-button{min-height:initial}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}@media screen and (max-width: 767px){.sr-only-mobile{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}}pn-chat-message{display:flex;text-align:left}pn-chat-message.user,pn-chat-message.buttonresponse{justify-content:flex-end}pn-chat-message.system-message{text-align:center;justify-content:center}pn-chat-message .message-container{border-radius:0.8rem;display:flex;gap:1rem;max-width:75%;overflow-x:hidden}pn-chat-message .message-container .category{width:2.6rem}pn-chat-message .message-container.bot .message,pn-chat-message .message-container.agent .message{background-color:#f3f2f2}pn-chat-message .message-container.link{flex-basis:100%}pn-chat-message .message-container.link .message{background-color:#effbff;box-shadow:0px 0.6px 1.8px 0px rgba(0, 0, 0, 0.1), 0px 3.2px 7.2px 0px rgba(0, 0, 0, 0.13);transition:box-shadow ease-in-out 0.5s;padding:0}pn-chat-message .message-container.link .message:hover{box-shadow:0px 0.6px 1.8px 0px rgba(0, 0, 0, 0.2), 0px 3.2px 7.2px 0px rgba(0, 0, 0, 0.23)}pn-chat-message .message-container.link .message a{color:#000000;display:flex;justify-content:space-between;padding:1rem 1.6rem;text-decoration:none}pn-chat-message .message-container.link .business.message{background-color:#fdefee}pn-chat-message .message-container.button{flex-basis:100%;text-align:center;max-width:unset}pn-chat-message .message-container.button .message{padding:0}pn-chat-message .message-container.card{border:solid 1px #d3cecb;border-radius:1.6rem;flex-basis:100%;max-width:100%}pn-chat-message .message-container.card .message{display:flex;flex-direction:column;gap:0.8rem;padding:1.6rem}pn-chat-message .message-container.card .card-heading{font-size:1.6rem;line-height:2.4rem;font-weight:700}pn-chat-message .message-container.card .cta{display:flex;flex-direction:row;gap:0.5rem}pn-chat-message .message-container.card .read-more{align-self:flex-start;margin-top:auto}pn-chat-message .message-container.user .message,pn-chat-message .message-container.buttonresponse .message{background-color:#e0f8ff;color:#2d2013;border-radius:0.8rem 0.8rem 0 0.8rem}pn-chat-message .message-container .message{border-radius:0 0.8rem 0.8rem 0.8rem;display:inline-block;flex:1 1 auto;font-size:1.4rem;line-height:2rem;padding:1rem 1.6rem;word-wrap:break-word;overflow-wrap:break-word;white-space:normal;word-break:break-word}@media (max-width: 767px){pn-chat-message .message-container .message{font-size:1.6rem}}pn-chat-message .message-container.agent .category .pn-icon{background-color:#00a0d6;color:#ffffff;text-align:center;border-radius:50%;display:inline-block;width:2.5rem;height:2.5rem;font-weight:500;font-size:1.2rem;line-height:2.6rem}pn-chat-message[data-card]{height:100%}";const c=h;const l=class{constructor(t){e(this,t);this.category=undefined;this.customerSegment=undefined;this.agentName=undefined}robotIcon='<?xml version="1.0" encoding="UTF-8"?> <svg id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" viewBox="0 0 20 20"> \x3c!-- Generator: Adobe Illustrator 29.5.1, SVG Export Plug-In . SVG Version: 2.1.0 Build 141) --\x3e <defs> <style> .st0 { fill: none; } .st1 { fill: #8eddf9; } .st2 { fill: #f3f2f2; } .st3 { fill: #0d234b; } .st4 { fill: #f06365; } .st5 { clip-path: url(#clippath); } .st6 { fill: #005d92; } </style> <clipPath id="clippath"> <rect class="st0" width="20" height="20"/> </clipPath> </defs> <g class="st5"> <g> <path class="st2" d="M10,20c5.5,0,10-4.5,10-10S15.5,0,10,0,0,4.5,0,10s4.5,10,10,10Z"/> <path class="st3" d="M10.5,4h-.5v2.8h.5v-2.8Z"/> <path class="st3" d="M10.2,4.3c.5,0,1-.4,1-1s-.4-1-1-1-1,.4-1,1,.4,1,1,1Z"/> <path class="st3" d="M9,5h2.4c1,0,1.8.8,1.8,1.8h-6c0-1,.8-1.8,1.8-1.8Z"/> <path class="st4" d="M17,10.3v-.8c0-1.9-1.5-3.5-3.5-3.5h-7.1c-1.9,0-3.5,1.6-3.5,3.5v.8h14.1Z"/> <path d="M13.9,16.1l-3.7.4v-.4s3.6-.4,3.6-.4c.8,0,1.6-.4,2.1-1s.7-2.9.7-3.7h.4c0,.9-.2,3.3-.8,3.9-.6.7-1.4,1.1-2.3,1.2Z"/> <path class="st4" d="M16.3,12.1v-3.6h.2c1,0,1.8.8,1.8,1.8s-.8,1.8-1.8,1.8h-.2Z"/> <path class="st4" d="M3.7,8.5v3.6h-.2c-1,0-1.8-.8-1.8-1.8s.8-1.8,1.8-1.8h.2Z"/> <path class="st3" d="M13.1,6.6h-6.2c-1.8,0-3.3,1.5-3.3,3.3v2.1c0,1.8,1.5,3.3,3.3,3.3h6.2c1.8,0,3.3-1.5,3.3-3.3v-2.1c0-1.8-1.5-3.3-3.3-3.3Z"/> <path class="st6" d="M12.8,7.8h-5.6c-1.4,0-2.5,1.1-2.5,2.5v1.4c0,1.4,1.1,2.4,2.5,2.4h5.6c1.4,0,2.4-1.1,2.4-2.4v-1.4c0-1.4-1.1-2.5-2.4-2.5Z"/> <path class="st1" d="M12.3,11.9c.5,0,1-.4,1-1s-.4-1-1-1-1,.4-1,1,.4,1,1,1Z"/> <path class="st1" d="M7.7,11.9c.5,0,1-.4,1-1s-.4-1-1-1-1,.4-1,1,.4,1,1,1Z"/> <path d="M11,15.8h-1.5c-.3,0-.5.2-.5.5h0c0,.3.2.5.5.5h1.5c.3,0,.5-.2.5-.5h0c0-.3-.2-.5-.5-.5Z"/> </g> </g> </svg>';blue700="blue700";getIcon(){let e=null;switch(this.category){case"Bot":return this.robotIcon;case"Agent":return this.agentName;case"Link":return o}return e}getMessageClass(){switch(this.category){case"ButtonResponse":return"buttonresponse";case"User":return"user";case"System":return"system-message";default:return undefined}}render(){const e=this.customerSegment?.toLowerCase()||"";const a=this.category?.toLowerCase()||"";return t(s,{key:"0bd86ed5a6709fca909aa09b9b8bf6c497c230a2",class:this.getMessageClass()},t("div",{key:"190cdd88c6b715022bad825d19f97ef2720005b9",class:`message-container ${a}`},this.getIcon()&&t("span",{key:"d7ae83dba633e39b5cc08e38526acd3f3b2f8427",class:"category"},t("pn-icon",{key:"8331458b12bc1669cba3cfc637abc2280516feec",icon:this.getIcon(),color:this.blue700,"aria-hidden":"true",role:"presentation"})),t("span",{key:"5aa89b7fe5ff9f65f69453b23d835aad16c68190",class:`message ${e}`},t("slot",{key:"1565b98e7b83884d8bc30a5dfcd9fce88e607a1d"}))))}};l.style=c;const d="pn-button-dropdown .pn-button-dropdown>pn-button>.pn-button{min-height:initial}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}@media screen and (max-width: 767px){.sr-only-mobile{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0}}pn-marketweb-carousel{display:inline-block}pn-marketweb-carousel .pn-marketweb-carousel .slider-wrapper{margin:1rem;overflow:hidden;position:relative;touch-action:pan-y pinch-zoom}pn-marketweb-carousel .pn-marketweb-carousel .slides-container{display:flex;width:100%;list-style:none;margin:0;padding:0;overflow:hidden;position:relative;touch-action:none;transition:transform 0.5s ease-in-out;user-select:none}pn-marketweb-carousel .pn-marketweb-carousel .slides-container[data-partial=false] .slide{width:100%}pn-marketweb-carousel .pn-marketweb-carousel [data-slide]{flex:0 0 auto;transition:transform 0.5s ease-in-out}pn-marketweb-carousel .pn-marketweb-carousel .nav-button{cursor:pointer;display:flex;position:absolute;top:0;bottom:0;transform:translateY(-50%);height:2rem;margin:auto;padding:0;opacity:0.85;transition:opacity 200ms;z-index:1}pn-marketweb-carousel .pn-marketweb-carousel .nav-button.invisible{opacity:0}pn-marketweb-carousel .pn-marketweb-carousel .nav-button[data-show=false]{display:none}pn-marketweb-carousel .pn-marketweb-carousel .nav-button:hover,pn-marketweb-carousel .pn-marketweb-carousel .nav-button:focus{opacity:1}pn-marketweb-carousel .pn-marketweb-carousel [data-nav-button-prev]{left:1.75rem;border-radius:0 2rem 2rem 0}pn-marketweb-carousel .pn-marketweb-carousel [data-nav-button-next]{right:1.75rem;border-radius:2rem 0 0 2rem}@media (prefers-reduced-motion: reduce){pn-marketweb-carousel .slides-container{transition:none}pn-marketweb-carousel [data-slide]{transition:none}}";const p=d;const u=class{constructor(t){e(this,t);this.previousButtonLabel=undefined;this.nextButtonLabel=undefined;this.ariaNavigationLabel=undefined;this.source=undefined;this.slidesToShow=1;this.showCarouselButtons=true;this.showFirstSlidePrevButton=false;this.showLastSlideNextButton=false;this.slidesData=[];this.currentSlide=0;this.isDragging=false;this.slideWidth=0}static DEFAULTS={SWIPE_THRESHOLD_PX:50,ANIMATION_DURATION_MS:300,OVERSCROLL_LIMIT_PERCENT:30};get hostElement(){return a(this)}slides=null;slidesContainer=null;totalSlides=0;prevButton=null;nextButton=null;dragStartX=0;listeners=[];memoizedSlideWidth=null;componentWillLoad(){this.setInitialValues()}componentDidLoad(){this.setupCarousel();window.addEventListener("resize",this.handleResize)}disconnectedCallback(){this.cleanup();window.removeEventListener("resize",this.handleResize)}async goToSlide(e){if(e>=0&&e<this.totalSlides){this.currentSlide=e;this.moveSlides();this.updateNavButtons()}}async getCurrentSlide(){return this.currentSlide}handleSourceChange(e){if(e){this.setInitialValues()}}setInitialValues(){if(!this.source?.trim()){console.warn("No source provided for carousel");return}try{const e=JSON.parse(this.source);if(!e?.slides){throw new Error("Invalid slides data structure")}if(Array.isArray(e.slides)){this.slidesData=e.slides;this.showCarouselButtons=this.slidesData.length>1}else{throw new Error("Slides data is not an array")}}catch(e){console.error("Error parsing carousel source:",e instanceof Error?e.message:"Unknown error");this.slidesData=[]}}setupCarousel(){this.initializeElements();this.attachEventListeners();this.updateNavButtons()}initializeElements(){this.slidesContainer=this.hostElement.querySelector("[data-slides-container]");this.slides=this.hostElement.querySelectorAll("[data-slide]");this.totalSlides=this.slides?.length??0;if(this.showCarouselButtons){this.prevButton=this.hostElement.querySelector("[data-nav-button-prev]");this.nextButton=this.hostElement.querySelector("[data-nav-button-next]")}this.slideWidth=100/this.slidesToShow}attachEventListeners(){if(!this.slidesContainer)return;const e=(e,t,s,a)=>{e.addEventListener(t,s,a);this.listeners.push({element:e,event:t,handler:s})};e(this.slidesContainer,"touchstart",this.handleTouchStart,{passive:true});e(this.slidesContainer,"touchmove",this.handleTouchMove,{passive:false});e(this.slidesContainer,"touchend",this.handleTouchEnd,{passive:true});e(this.slidesContainer,"mousedown",this.handleTouchStart);e(this.slidesContainer,"mousemove",this.handleTouchMove);e(this.slidesContainer,"mouseup",this.handleTouchEnd);e(this.slidesContainer,"mouseleave",this.handleTouchEnd);if(this.showCarouselButtons){this.nextButton&&e(this.nextButton,"click",this.handleNextClick);this.prevButton&&e(this.prevButton,"click",this.handlePrevClick)}}cleanup(){this.listeners.forEach((({element:e,event:t,handler:s})=>{e.removeEventListener(t,s)}));this.listeners=[]}handleResize=()=>{this.memoizedSlideWidth=null};getSlideWidth(){if(!this.memoizedSlideWidth&&this.slidesContainer){this.memoizedSlideWidth=this.slidesContainer.offsetWidth}return this.memoizedSlideWidth??0}handleNextClick=e=>{e.stopPropagation();this.nextSlide()};handlePrevClick=e=>{e.stopPropagation();this.prevSlide()};handleTouchStart=e=>{if(e.target.classList.contains("nav-button"))return;this.isDragging=true;this.dragStartX="touches"in e?e.touches[0].clientX:e.clientX};handleTouchMove=e=>{if(!this.isDragging)return;if("touches"in e){e.preventDefault()}const t="touches"in e?e.touches[0].clientX:e.clientX;const s=t-this.dragStartX;const a=s/this.getSlideWidth()*100;this.moveSlides(a)};handleTouchEnd=e=>{if(!this.isDragging)return;this.isDragging=false;const t="changedTouches"in e?e.changedTouches[0].clientX:e.clientX;const s=t-this.dragStartX;if(Math.abs(s)>u.DEFAULTS.SWIPE_THRESHOLD_PX){if(s>0&&this.currentSlide>0){this.currentSlide--}else if(s<0&&this.currentSlide<this.totalSlides-1){this.currentSlide++}}this.moveSlides();this.updateNavButtons()};calculateProportionalTranslation(){return-200+(this.slidesToShow-1)*100}moveSlides(e=0){if(!this.slides||!this.slidesContainer){return}try{this.slides.forEach(((t,s)=>{if(t){t.style.width=`${this.slideWidth}%`;let a=0;if(this.slidesToShow===1){a=-100*this.currentSlide}else{if(this.totalSlides===2){if(this.currentSlide===1){a=-50}}else{if(this.currentSlide===1){a=-100}else if(this.currentSlide===2){if(s===0){a=-100}else{a=this.calculateProportionalTranslation()}}}}a+=e;t.style.transform=`translateX(${a}%)`;t.style.position="relative";let i;if(this.slidesToShow===1){i=s===this.currentSlide}else{i=this.currentSlide===0||this.totalSlides===2||this.currentSlide===1&&a===-100||this.currentSlide===2&&(s===0&&a===-100||s>0)}t.setAttribute("aria-hidden",(!i).toString())}}))}catch(e){console.error("Error moving slides:",e)}}updateNavButtons(){if(!this.showCarouselButtons)return;const e=this.currentSlide===0;const t=this.currentSlide===this.totalSlides-1;if(this.prevButton){this.prevButton.classList.toggle("invisible",e&&!this.showFirstSlidePrevButton);this.prevButton.dataset.show=e?`${this.showFirstSlidePrevButton}`:"true"}if(this.nextButton){this.nextButton.classList.toggle("invisible",t&&!this.showLastSlideNextButton);this.nextButton.dataset.show=t?`${this.showLastSlideNextButton}`:"true"}}nextSlide(){if(this.currentSlide>=this.totalSlides-1){this.currentSlide=0}else{this.currentSlide++}this.moveSlides();this.updateNavButtons()}prevSlide(){if(this.currentSlide<=0){this.currentSlide=this.totalSlides-1}else{this.currentSlide--}this.moveSlides();this.updateNavButtons()}render(){return t(s,{key:"c80db60a09f02cfeec55338910211c5a27ebedab"},t("div",{key:"836a9635ebfbadddadfececd8e7f1f94f355f89b",class:"pn-marketweb-carousel"},t("section",{key:"838b05eb1e8db65b84011b16ba7409dcf23b5eb3",class:"slider-wrapper"},this.showCarouselButtons&&t("div",{key:"3a3fe23b4a586f047b5391b5b8406e02884d1620",class:"nav-buttons",role:"group","aria-label":this.ariaNavigationLabel},t("pn-button",{key:"9d47e97795ad23bf118b54e2e72730e1819b9d3b",appearance:"light",icon:i,"icon-only":"true",tooltip:this.previousButtonLabel,class:`nav-button ${this.currentSlide===0&&!this.showFirstSlidePrevButton?"invisible":""}`,"data-nav-button-prev":true,"area-label":this.previousButtonLabel,"aria-disabled":this.currentSlide===0&&!this.showFirstSlidePrevButton}),t("pn-button",{key:"58e1c0363129d693f052ec59bd1a3b427db9bc56",appearance:"light",icon:n,"icon-only":"true",tooltip:this.nextButtonLabel,class:"nav-button","data-nav-button-next":true,"area-label":this.nextButtonLabel,"aria-disabled":this.currentSlide===this.totalSlides-1&&!this.showLastSlideNextButton})),this.slidesData&&t("ul",{key:"1c942f7d043a65e1b73a1bec69fbfdc3691c92f7",class:"slides-container","data-slides-container":true,"data-partial":this.slidesToShow===1?"false":"true","aria-live":"polite",style:{display:"flex",transform:"none"}},this.slidesData.map(((e,s)=>t("li",{class:"slide","data-slide":true,innerHTML:e,style:{width:this.slideWidth+"%"},"aria-hidden":s!==this.currentSlide})))))))}static get watchers(){return{source:["handleSourceChange"]}}};u.style=p;export{l as pn_chat_message,u as pn_marketweb_carousel};
|
|
2
|
+
//# sourceMappingURL=p-3a936c5d.entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["icon","faq","pnChatMessageCss","PnChatMessageStyle0","PnChatMessage","robotIcon","blue700","getIcon","this","category","agentName","getMessageClass","undefined","render","segmentClass","customerSegment","toLowerCase","categoryClass","h","Host","key","class","color","role","pnMarketwebCarouselCss","PnMarketwebCarouselStyle0","PnMarketwebCarousel","static","SWIPE_THRESHOLD_PX","ANIMATION_DURATION_MS","OVERSCROLL_LIMIT_PERCENT","slides","slidesContainer","totalSlides","prevButton","nextButton","dragStartX","listeners","memoizedSlideWidth","componentWillLoad","setInitialValues","componentDidLoad","setupCarousel","window","addEventListener","handleResize","disconnectedCallback","cleanup","removeEventListener","goToSlide","index","currentSlide","moveSlides","updateNavButtons","getCurrentSlide","handleSourceChange","newValue","source","trim","console","warn","parsedData","JSON","parse","Error","Array","isArray","slidesData","showCarouselButtons","length","error","message","initializeElements","attachEventListeners","hostElement","querySelector","querySelectorAll","slideWidth","slidesToShow","addListener","element","event","handler","options","push","handleTouchStart","passive","handleTouchMove","handleTouchEnd","handleNextClick","handlePrevClick","forEach","getSlideWidth","offsetWidth","e","stopPropagation","nextSlide","prevSlide","target","classList","contains","isDragging","touches","clientX","preventDefault","currentPosition","diff","percentMove","changedTouches","Math","abs","DEFAULTS","calculateProportionalTranslation","extraTranslate","slide","style","width","translation","transform","position","isVisible","setAttribute","toString","isFirstSlide","isLastSlide","toggle","showFirstSlidePrevButton","dataset","show","showLastSlideNextButton","ariaNavigationLabel","appearance","arrow_left","tooltip","previousButtonLabel","arrow_right","nextButtonLabel","display","map","innerHTML"],"sources":["node_modules/pn-design-assets/pn-assets/icons/faq.js","src/components/widgets/pn-chat/pn-chat-message/pn-chat-message.scss?tag=pn-chat-message","src/components/widgets/pn-chat/pn-chat-message/pn-chat-message.tsx","src/components/widgets/pn-marketweb-carousel/pn-marketweb-carousel.scss?tag=pn-marketweb-carousel","src/components/widgets/pn-marketweb-carousel/pn-marketweb-carousel.tsx"],"sourcesContent":["const icon = '<svg class=\"pn-icon-svg\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\"><path fill=\"#000\" fill-rule=\"evenodd\" d=\"M2 12C2 6.477 6.477 2 12 2s10 4.477 10 10-4.477 10-10 10c-.97 0-1.908-.138-2.797-.397-1.242-.36-2.352-.61-3.409-.464l-2.095.29A1 1 0 0 1 2.572 20.3l.289-2.095c.146-1.057-.103-2.167-.464-3.41A10 10 0 0 1 2 12m10-8a8 8 0 0 0-7.683 10.239c.364 1.252.734 2.724.525 4.24l-.108.788.787-.11c1.516-.208 2.988.162 4.24.526.71.206 1.46.317 2.239.317a8 8 0 1 0 0-16m-.034 4.5c-.445 0-.84.285-.981.707l-.037.11a1 1 0 0 1-1.897-.633l.037-.11A3.03 3.03 0 0 1 11.966 6.5h.18C13.734 6.5 15 7.807 15 9.371a2.83 2.83 0 0 1-1.553 2.523.81.81 0 0 0-.447.724V13a1 1 0 1 1-2 0v-.382c0-1.064.6-2.037 1.553-2.512A.83.83 0 0 0 13 9.37a.87.87 0 0 0-.854-.871zm.034 6a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3\" clip-rule=\"evenodd\"/></svg>';\nexport const faq = icon;\n","@import '../../../../globals/main.scss';\n$userChatMessageBackgroundColor: $blue50;\n$userChatMessageTextColor: $gray900;\n$privateChatMessageLinkColor: $blue25;\n$businessChatMessageLinkColor: $coral50;\n\n$message-padding: 1rem 1.6rem;\n\npn-chat-message {\n display: flex;\n text-align: left;\n\n &.user,\n &.buttonresponse {\n justify-content: flex-end;\n }\n\n &.system-message {\n text-align: center;\n justify-content: center;\n }\n\n .message-container {\n border-radius: 0.8rem;\n display: flex;\n gap: 1rem;\n max-width: 75%;\n overflow-x: hidden;\n\n .category {\n width: 2.6rem;\n }\n\n &.bot,\n &.agent {\n .message {\n background-color: $gray50;\n }\n }\n\n &.link {\n flex-basis: 100%;\n\n .message {\n $box-shadow-offset-x: 0px 0.6px 1.8px 0px;\n $box-shadow-offset-y: 0px 3.2px 7.2px 0px;\n\n background-color: $privateChatMessageLinkColor;\n box-shadow: $box-shadow-offset-x rgba(0, 0, 0, 0.10), $box-shadow-offset-y rgba(0, 0, 0, 0.13);\n transition: box-shadow ease-in-out 0.5s;\n\n &:hover {\n box-shadow: $box-shadow-offset-x rgba(0, 0, 0, 0.2), $box-shadow-offset-y rgba(0, 0, 0, 0.23);\n }\n\n padding: 0;\n\n a {\n color: $black;\n display: flex;\n justify-content: space-between;\n padding: $message-padding;\n text-decoration: none;\n }\n }\n }\n\n &.link .business.message {\n background-color: $businessChatMessageLinkColor;\n }\n\n &.button {\n flex-basis: 100%;\n text-align: center;\n max-width: unset;\n\n .message {\n padding: 0;\n }\n }\n\n &.card {\n border: solid 1px $gray200;\n border-radius: 1.6rem;\n flex-basis: 100%;\n max-width: 100%;\n\n .message {\n display: flex;\n flex-direction: column;\n gap: 0.8rem;\n padding: 1.6rem;\n }\n\n .card-heading {\n font-size: 1.6rem;\n line-height: 2.4rem;\n font-weight: 700;\n }\n\n .cta {\n display: flex;\n flex-direction: row;\n gap: 0.5rem;\n }\n\n .read-more {\n align-self: flex-start;\n margin-top: auto;\n }\n }\n\n &.user,\n &.buttonresponse {\n .message {\n background-color: $userChatMessageBackgroundColor;\n color: $userChatMessageTextColor;\n border-radius: 0.8rem 0.8rem 0 0.8rem;\n }\n }\n\n .message {\n border-radius: 0 0.8rem 0.8rem 0.8rem;\n display: inline-block;\n flex: 1 1 auto;\n font-size: 1.4rem;\n line-height: 2rem;\n padding: $message-padding;\n word-wrap: break-word;\n overflow-wrap: break-word;\n white-space: normal;\n word-break: break-word;\n\n @media (max-width: 767px) {\n font-size: 1.6rem;\n }\n }\n\n &.agent {\n .category .pn-icon {\n background-color: $blue400;\n color: $white;\n text-align: center;\n border-radius: 50%;\n display: inline-block;\n width: 2.5rem;\n height: 2.5rem;\n font-weight: 500;\n font-size: 1.2rem;\n line-height: 2.6rem;\n }\n }\n }\n\n &[data-card] {\n height: 100%;\n }\n}","import { Component, Host, Prop, h } from '@stencil/core';\nimport { faq, user } from 'pn-design-assets/pn-assets/icons.js';\n\nimport { AgentMessage, CustomerSegment, MessageCategory } from '../types';\n\n@Component({\n tag: 'pn-chat-message',\n styleUrl: 'pn-chat-message.scss',\n})\nexport class PnChatMessage {\n @Prop() category!: MessageCategory;\n @Prop() customerSegment!: CustomerSegment;\n @Prop() agentName: string;\n\n private robotIcon: string = '<?xml version=\"1.0\" encoding=\"UTF-8\"?> <svg id=\"Layer_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" version=\"1.1\" viewBox=\"0 0 20 20\"> <!-- Generator: Adobe Illustrator 29.5.1, SVG Export Plug-In . SVG Version: 2.1.0 Build 141) --> <defs> <style> .st0 { fill: none; } .st1 { fill: #8eddf9; } .st2 { fill: #f3f2f2; } .st3 { fill: #0d234b; } .st4 { fill: #f06365; } .st5 { clip-path: url(#clippath); } .st6 { fill: #005d92; } </style> <clipPath id=\"clippath\"> <rect class=\"st0\" width=\"20\" height=\"20\"/> </clipPath> </defs> <g class=\"st5\"> <g> <path class=\"st2\" d=\"M10,20c5.5,0,10-4.5,10-10S15.5,0,10,0,0,4.5,0,10s4.5,10,10,10Z\"/> <path class=\"st3\" d=\"M10.5,4h-.5v2.8h.5v-2.8Z\"/> <path class=\"st3\" d=\"M10.2,4.3c.5,0,1-.4,1-1s-.4-1-1-1-1,.4-1,1,.4,1,1,1Z\"/> <path class=\"st3\" d=\"M9,5h2.4c1,0,1.8.8,1.8,1.8h-6c0-1,.8-1.8,1.8-1.8Z\"/> <path class=\"st4\" d=\"M17,10.3v-.8c0-1.9-1.5-3.5-3.5-3.5h-7.1c-1.9,0-3.5,1.6-3.5,3.5v.8h14.1Z\"/> <path d=\"M13.9,16.1l-3.7.4v-.4s3.6-.4,3.6-.4c.8,0,1.6-.4,2.1-1s.7-2.9.7-3.7h.4c0,.9-.2,3.3-.8,3.9-.6.7-1.4,1.1-2.3,1.2Z\"/> <path class=\"st4\" d=\"M16.3,12.1v-3.6h.2c1,0,1.8.8,1.8,1.8s-.8,1.8-1.8,1.8h-.2Z\"/> <path class=\"st4\" d=\"M3.7,8.5v3.6h-.2c-1,0-1.8-.8-1.8-1.8s.8-1.8,1.8-1.8h.2Z\"/> <path class=\"st3\" d=\"M13.1,6.6h-6.2c-1.8,0-3.3,1.5-3.3,3.3v2.1c0,1.8,1.5,3.3,3.3,3.3h6.2c1.8,0,3.3-1.5,3.3-3.3v-2.1c0-1.8-1.5-3.3-3.3-3.3Z\"/> <path class=\"st6\" d=\"M12.8,7.8h-5.6c-1.4,0-2.5,1.1-2.5,2.5v1.4c0,1.4,1.1,2.4,2.5,2.4h5.6c1.4,0,2.4-1.1,2.4-2.4v-1.4c0-1.4-1.1-2.5-2.4-2.5Z\"/> <path class=\"st1\" d=\"M12.3,11.9c.5,0,1-.4,1-1s-.4-1-1-1-1,.4-1,1,.4,1,1,1Z\"/> <path class=\"st1\" d=\"M7.7,11.9c.5,0,1-.4,1-1s-.4-1-1-1-1,.4-1,1,.4,1,1,1Z\"/> <path d=\"M11,15.8h-1.5c-.3,0-.5.2-.5.5h0c0,.3.2.5.5.5h1.5c.3,0,.5-.2.5-.5h0c0-.3-.2-.5-.5-.5Z\"/> </g> </g> </svg>';\n private blue700 = 'blue700';\n\n getIcon() {\n let icon = null;\n \n switch (this.category) {\n case 'Bot':\n return this.robotIcon;\n case 'Agent':\n return this.agentName;\n case 'Link':\n return faq;\n }\n\n return icon;\n }\n\n getMessageClass(): string {\n switch (this.category) {\n case 'ButtonResponse':\n return 'buttonresponse';\n case 'User':\n return 'user';\n case 'System':\n return 'system-message';\n default: \n return undefined;\n }\n }\n\n render() {\n const segmentClass = this.customerSegment?.toLowerCase() || '';\n const categoryClass = this.category?.toLowerCase() || '';\n return (\n <Host class={ this.getMessageClass() }>\n <div class={`message-container ${categoryClass}`}>\n {this.getIcon() && (\n <span class=\"category\">\n <pn-icon icon={this.getIcon()} color={this.blue700} aria-hidden=\"true\" role=\"presentation\"></pn-icon>\n </span>\n )}\n <span class={`message ${segmentClass}`}>\n <slot></slot>\n </span>\n </div>\n </Host>\n );\n }\n}\n","@import '../../../globals/main.scss';\n\npn-marketweb-carousel {\n display: inline-block;\n\n .pn-marketweb-carousel {\n .slider-wrapper {\n margin: 1rem;\n overflow: hidden;\n position: relative;\n touch-action: pan-y pinch-zoom;\n }\n\n .slides-container {\n display: flex;\n width: 100%;\n list-style: none;\n margin: 0;\n padding: 0;\n overflow: hidden;\n position: relative;\n touch-action: none;\n transition: transform 0.5s ease-in-out;\n user-select: none;\n\n &[data-partial='false'] .slide {\n width: 100%;\n }\n }\n\n [data-slide] {\n flex: 0 0 auto;\n transition: transform 0.5s ease-in-out;\n }\n\n .nav-button {\n cursor: pointer;\n display: flex;\n position: absolute;\n top: 0;\n bottom: 0;\n transform: translateY(-50%);\n height: 2rem;\n margin: auto;\n padding: 0;\n opacity: 0.85;\n transition: opacity 200ms;\n z-index: 1;\n\n &.invisible {\n opacity: 0;\n }\n\n &[data-show='false'] {\n display: none;\n }\n\n &:hover,\n &:focus {\n opacity: 1;\n }\n }\n\n [data-nav-button-prev] {\n left: 1.75rem;\n border-radius: 0 2rem 2rem 0;\n }\n\n [data-nav-button-next] {\n right: 1.75rem;\n border-radius: 2rem 0 0 2rem;\n }\n }\n\n @media (prefers-reduced-motion: reduce) {\n .slides-container {\n transition: none;\n }\n\n [data-slide] {\n transition: none;\n }\n }\n}\n","import { Component, Host, Prop, Element, State, h, Watch, Method } from '@stencil/core';\nimport { arrow_left, arrow_right } from 'pn-design-assets/pn-assets/icons.js';\n\ninterface CarouselData {\n slides: string[];\n}\n\ninterface EventListenerConfig {\n element: HTMLElement;\n event: string;\n handler: EventListener;\n}\n\n@Component({\n tag: 'pn-marketweb-carousel',\n styleUrl: 'pn-marketweb-carousel.scss',\n})\nexport class PnMarketwebCarousel {\n private static readonly DEFAULTS = {\n SWIPE_THRESHOLD_PX: 50,\n ANIMATION_DURATION_MS: 300,\n OVERSCROLL_LIMIT_PERCENT: 30,\n } as const;\n\n @Element() private hostElement!: HTMLElement;\n\n @Prop() previousButtonLabel!: string;\n @Prop() nextButtonLabel!: string;\n @Prop() ariaNavigationLabel!: string;\n @Prop() source!: string;\n @Prop() slidesToShow: number = 1;\n @Prop() showCarouselButtons: boolean = true;\n @Prop() showFirstSlidePrevButton: boolean = false;\n @Prop() showLastSlideNextButton: boolean = false;\n\n @State() private slidesData: string[] = [];\n @State() private currentSlide: number = 0;\n @State() private isDragging: boolean = false;\n @State() private slideWidth: number = 0;\n\n private slides: NodeListOf<HTMLElement> | null = null;\n private slidesContainer: HTMLElement | null = null;\n private totalSlides: number = 0;\n private prevButton: HTMLElement | null = null;\n private nextButton: HTMLElement | null = null;\n private dragStartX: number = 0;\n private listeners: EventListenerConfig[] = [];\n private memoizedSlideWidth: number | null = null;\n\n componentWillLoad(): void {\n this.setInitialValues();\n }\n\n componentDidLoad(): void {\n this.setupCarousel();\n window.addEventListener('resize', this.handleResize);\n }\n\n disconnectedCallback(): void {\n this.cleanup();\n window.removeEventListener('resize', this.handleResize);\n }\n\n @Method()\n async goToSlide(index: number): Promise<void> {\n if (index >= 0 && index < this.totalSlides) {\n this.currentSlide = index;\n this.moveSlides();\n this.updateNavButtons();\n }\n }\n\n @Method()\n async getCurrentSlide(): Promise<number> {\n return this.currentSlide;\n }\n\n @Watch('source')\n handleSourceChange(newValue: string): void {\n if (newValue) {\n this.setInitialValues();\n }\n }\n\n private setInitialValues(): void {\n if (!this.source?.trim()) {\n console.warn('No source provided for carousel');\n return;\n }\n\n try {\n const parsedData = JSON.parse(this.source) as CarouselData;\n\n if (!parsedData?.slides) {\n throw new Error('Invalid slides data structure');\n }\n\n if (Array.isArray(parsedData.slides)) {\n this.slidesData = parsedData.slides;\n this.showCarouselButtons = this.slidesData.length > 1;\n } else {\n throw new Error('Slides data is not an array');\n }\n } catch (error) {\n console.error('Error parsing carousel source:', error instanceof Error ? error.message : 'Unknown error');\n this.slidesData = [];\n }\n }\n\n private setupCarousel(): void {\n this.initializeElements();\n this.attachEventListeners();\n this.updateNavButtons();\n }\n\n private initializeElements(): void {\n this.slidesContainer = this.hostElement.querySelector<HTMLElement>('[data-slides-container]');\n this.slides = this.hostElement.querySelectorAll<HTMLElement>('[data-slide]');\n this.totalSlides = this.slides?.length ?? 0;\n\n if (this.showCarouselButtons) {\n this.prevButton = this.hostElement.querySelector<HTMLElement>('[data-nav-button-prev]');\n this.nextButton = this.hostElement.querySelector<HTMLElement>('[data-nav-button-next]');\n }\n\n this.slideWidth = 100 / this.slidesToShow;\n }\n\n private attachEventListeners(): void {\n if (!this.slidesContainer) return;\n\n const addListener = (element: HTMLElement, event: string, handler: EventListener, options?: AddEventListenerOptions) => {\n element.addEventListener(event, handler, options);\n this.listeners.push({ element, event, handler });\n };\n\n // Touch events\n addListener(this.slidesContainer, 'touchstart', this.handleTouchStart as EventListener, { passive: true });\n addListener(this.slidesContainer, 'touchmove', this.handleTouchMove as EventListener, { passive: false });\n addListener(this.slidesContainer, 'touchend', this.handleTouchEnd as EventListener, { passive: true });\n\n // Mouse events\n addListener(this.slidesContainer, 'mousedown', this.handleTouchStart as EventListener);\n addListener(this.slidesContainer, 'mousemove', this.handleTouchMove as EventListener);\n addListener(this.slidesContainer, 'mouseup', this.handleTouchEnd as EventListener);\n addListener(this.slidesContainer, 'mouseleave', this.handleTouchEnd as EventListener);\n\n if (this.showCarouselButtons) {\n this.nextButton && addListener(this.nextButton, 'click', this.handleNextClick);\n this.prevButton && addListener(this.prevButton, 'click', this.handlePrevClick);\n }\n }\n\n private cleanup(): void {\n this.listeners.forEach(({ element, event, handler }) => {\n element.removeEventListener(event, handler);\n });\n this.listeners = [];\n }\n\n private handleResize = (): void => {\n this.memoizedSlideWidth = null;\n };\n\n private getSlideWidth(): number {\n if (!this.memoizedSlideWidth && this.slidesContainer) {\n this.memoizedSlideWidth = this.slidesContainer.offsetWidth;\n }\n return this.memoizedSlideWidth ?? 0;\n }\n\n private handleNextClick = (e: Event): void => {\n e.stopPropagation();\n this.nextSlide();\n };\n\n private handlePrevClick = (e: Event): void => {\n e.stopPropagation();\n this.prevSlide();\n };\n\n private handleTouchStart = (e: TouchEvent | MouseEvent): void => {\n if ((e.target as HTMLElement).classList.contains('nav-button')) return;\n\n this.isDragging = true;\n this.dragStartX = 'touches' in e ? e.touches[0].clientX : e.clientX;\n };\n\n private handleTouchMove = (e: TouchEvent | MouseEvent): void => {\n if (!this.isDragging) return;\n\n if ('touches' in e) {\n e.preventDefault();\n }\n\n const currentPosition = 'touches' in e ? e.touches[0].clientX : e.clientX;\n const diff = currentPosition - this.dragStartX;\n const percentMove = (diff / this.getSlideWidth()) * 100;\n\n this.moveSlides(percentMove);\n };\n\n private handleTouchEnd = (e: TouchEvent | MouseEvent): void => {\n if (!this.isDragging) return;\n\n this.isDragging = false;\n\n const currentPosition = 'changedTouches' in e ? e.changedTouches[0].clientX : e.clientX;\n const diff = currentPosition - this.dragStartX;\n\n if (Math.abs(diff) > PnMarketwebCarousel.DEFAULTS.SWIPE_THRESHOLD_PX) {\n if (diff > 0 && this.currentSlide > 0) {\n this.currentSlide--;\n } else if (diff < 0 && this.currentSlide < this.totalSlides - 1) {\n this.currentSlide++;\n }\n }\n\n this.moveSlides();\n this.updateNavButtons();\n };\n\n private calculateProportionalTranslation(): number {\n // Calculate proportional translation based on slidesToShow\n return -200 + (this.slidesToShow - 1) * 100;\n }\n\n private moveSlides(extraTranslate: number = 0): void {\n if (!this.slides || !this.slidesContainer) {\n return;\n }\n\n try {\n this.slides.forEach((slide, index) => {\n if (slide) {\n // Set each slide's width\n slide.style.width = `${this.slideWidth}%`;\n\n let translation = 0;\n\n if (this.slidesToShow === 1) {\n // Full slide view\n translation = -100 * this.currentSlide;\n } else {\n // Partial slide view\n if (this.totalSlides === 2) {\n // Special case for 2 slides\n if (this.currentSlide === 1) {\n translation = -50; // Both slides move by -50%\n }\n } else {\n // 3 or more slides\n if (this.currentSlide === 1) {\n // Second slide showing - all slides move -100%\n translation = -100;\n } else if (this.currentSlide === 2) {\n // Third slide showing\n if (index === 0) {\n translation = -100; // First slide stays at -100%\n } else {\n // Calculate proportional translation\n translation = this.calculateProportionalTranslation();\n }\n }\n }\n }\n\n // Add any extra translation from dragging\n translation += extraTranslate;\n\n slide.style.transform = `translateX(${translation}%)`;\n slide.style.position = 'relative';\n\n // Update visibility for screen readers\n let isVisible;\n\n if (this.slidesToShow === 1) {\n isVisible = index === this.currentSlide;\n } else {\n isVisible =\n this.currentSlide === 0 || // First slide showing\n this.totalSlides === 2 || // Two slides - both visible\n (this.currentSlide === 1 && translation === -100) || // Second slide showing\n (this.currentSlide === 2 &&\n ((index === 0 && translation === -100) || // First slide still visible\n index > 0)); // Second and third slides visible\n }\n\n slide.setAttribute('aria-hidden', (!isVisible).toString());\n }\n });\n } catch (error) {\n console.error('Error moving slides:', error);\n }\n }\n\n private updateNavButtons(): void {\n if (!this.showCarouselButtons) return;\n\n const isFirstSlide = this.currentSlide === 0;\n const isLastSlide = this.currentSlide === this.totalSlides - 1;\n\n if (this.prevButton) {\n this.prevButton.classList.toggle('invisible', isFirstSlide && !this.showFirstSlidePrevButton);\n this.prevButton.dataset.show = isFirstSlide ? `${this.showFirstSlidePrevButton}` : 'true';\n }\n\n if (this.nextButton) {\n this.nextButton.classList.toggle('invisible', isLastSlide && !this.showLastSlideNextButton);\n this.nextButton.dataset.show = isLastSlide ? `${this.showLastSlideNextButton}` : 'true';\n }\n }\n\n private nextSlide(): void {\n if (this.currentSlide >= this.totalSlides - 1) {\n this.currentSlide = 0;\n } else {\n this.currentSlide++;\n }\n this.moveSlides();\n this.updateNavButtons();\n }\n\n private prevSlide(): void {\n if (this.currentSlide <= 0) {\n this.currentSlide = this.totalSlides - 1;\n } else {\n this.currentSlide--;\n }\n this.moveSlides();\n this.updateNavButtons();\n }\n\n render() {\n return (\n <Host>\n <div class=\"pn-marketweb-carousel\">\n <section class=\"slider-wrapper\">\n {this.showCarouselButtons && (\n <div class=\"nav-buttons\" role=\"group\" aria-label={this.ariaNavigationLabel}>\n <pn-button\n appearance=\"light\"\n icon={arrow_left}\n icon-only=\"true\"\n tooltip={this.previousButtonLabel}\n class={`nav-button ${this.currentSlide === 0 && !this.showFirstSlidePrevButton ? 'invisible' : ''}`}\n data-nav-button-prev\n area-label={this.previousButtonLabel}\n aria-disabled={this.currentSlide === 0 && !this.showFirstSlidePrevButton}>\n </pn-button>\n <pn-button\n appearance=\"light\"\n icon={arrow_right}\n icon-only=\"true\"\n tooltip={this.nextButtonLabel}\n class=\"nav-button\"\n data-nav-button-next\n area-label={this.nextButtonLabel}\n aria-disabled={this.currentSlide === this.totalSlides - 1 && !this.showLastSlideNextButton}>\n </pn-button>\n </div>\n )}\n {this.slidesData && (\n <ul\n class=\"slides-container\"\n data-slides-container\n data-partial={this.slidesToShow === 1 ? 'false' : 'true'}\n aria-live=\"polite\"\n style={{ display: 'flex', transform: 'none' }}\n >\n {this.slidesData.map((slide, index) => (\n <li class=\"slide\" data-slide innerHTML={slide} style={{ width: this.slideWidth + '%' }} aria-hidden={index !== this.currentSlide}></li>\n ))}\n </ul>\n )}\n </section>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{F as t}from"./p-3478f368.js";class s{_endpoint;_market;_language;_currentUrl;fetchHelper=new t("PnChatService");_startChatPath=`/api/sfchat/start-chat`;_fetchChatMessagesPath=`/api/sfchat/get-conversation-entries`;_sendTextPath=`/api/sfchat/send-text-message`;_sendChoicePath=`/api/sfchat/send-choice-message`;_updateLastMessagePath=`/api/sfchat/update-last-message-id`;_hasNewMessagesPath=`/api/sfchat/has-new-messages`;constructor(t,s,e){this._endpoint=this.formatEndpoint(t);this._market=s;this._language=e;this._currentUrl=window.location.href}async startChat(t,s){let e={market:this._market,language:this._language,chatIdString:t,itemId:s,currentUrl:this._currentUrl};const a=this._endpoint+this._startChatPath;const i=await this.fetchHelper.fetchJson(a,this.getRequestInit(e),false);return this.handleResponse(i,t)}async fetchMessages(t,s){if(!t){return s}let e={market:this._market,language:this._language,chatIdString:t};const a=this._endpoint+this._fetchChatMessagesPath;const i=await this.fetchHelper.fetchJson(a,this.getRequestInit(e),false);if(!i){return s}return this.handleResponse(i,s)}async sendMessage(t,s,e,a,i){let h;switch(i){case"Choice":h=await this.sendChoiceMessage(t,s,e,a);break;default:h=await this.sendTextMessage(t,s,e,a);break}if(!h){return a}if(h.includes(",")){h=h.substring(h.lastIndexOf(",")+1)}return h}async updateLastMessageId(t,s){let e={chatIdString:t,latestMessageIdString:s};const a=this._endpoint+this._updateLastMessagePath;await this.fetchHelper.fetchJson(a,this.getRequestInit(e),false)}async hasNewMessages(t){let s={language:this._language,market:this._market,itemId:t,chatIdString:"",currentUrl:this._currentUrl};const e=this._endpoint+this._hasNewMessagesPath;let a=await this.fetchHelper.fetchJson(e,this.getRequestInit(s),false);if(!a){return false}return JSON.parse(a)}async sendTextMessage(t,s,e,a){if(!e||!t){return a}let i={market:this._market,language:this._language,chatIdString:e,content:t,itemId:s,currentUrl:this._currentUrl};const h=this._endpoint+this._sendTextPath;const n=await this.fetchHelper.fetchJson(h,this.getRequestInit(i),false);return this.handleResponse(n,a)?.id??a}async sendChoiceMessage(t,s,e,a){if(!e||!t){return a}let i={market:this._market,language:this._language,chatIdString:e,content:t,itemId:s,currentUrl:this._currentUrl};const h=this._endpoint+this._sendChoicePath;const n=await this.fetchHelper.fetchJson(h,this.getRequestInit(i),false);return this.handleResponse(n,a)?.id??a}formatEndpoint(t){return t.lastIndexOf("/")===t.length-1?t.substring(0,t.length-1):t}handleResponse(t,s,e=false){if(!t){return s}let a=JSON.parse(t);if(!a||e&&!Array.isArray(a)){return s}return a}getRequestInit(t,s="POST",e="cors",a="application/json"){return{mode:e,method:s,headers:{"Content-Type":a,CustomValidateAntiForgeryToken:"01001101010001010100111101010111"},body:JSON.stringify(t)}}GetLastMessageId(t,s){return t?.at(-1)?.messageId??s}}export{s as P};
|
|
2
|
+
//# sourceMappingURL=p-6bec8d72.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["PnChatService","_endpoint","_market","_language","_currentUrl","fetchHelper","FetchHelper","_startChatPath","_fetchChatMessagesPath","_sendTextPath","_sendChoicePath","_updateLastMessagePath","_hasNewMessagesPath","constructor","endpoint","market","language","this","formatEndpoint","window","location","href","startChat","chatId","itemId","model","chatIdString","currentUrl","fetchUrl","data","fetchJson","getRequestInit","handleResponse","fetchMessages","prevMessageData","sendMessage","content","lastMessageId","messageType","newLatestMessageId","sendChoiceMessage","sendTextMessage","includes","substring","lastIndexOf","updateLastMessageId","latestMessageIdString","hasNewMessages","JSON","parse","defaultReturn","id","length","checkForArray","parsedData","Array","isArray","method","mode","contentTypes","headers","CustomValidateAntiForgeryToken","body","stringify","GetLastMessageId","messages","at","messageId"],"sources":["src/components/widgets/pn-chat/pn-chat.service.ts"],"sourcesContent":["import { FetchHelper } from '@/globals/FetchHelper';\nimport { ChatMessage, ChatMessages, MessageType } from './types';\nimport { ChatParameters, ChatStartParameters, ChatMessageParameters, ChatUpdateParameters, ChatLastMessageParameters } from './pn-chat.models';\n\nexport class PnChatService {\n private readonly _endpoint;\n private readonly _market;\n private readonly _language;\n private readonly _currentUrl;\n private fetchHelper = new FetchHelper('PnChatService');\n private readonly _startChatPath = `/api/sfchat/start-chat`;\n private readonly _fetchChatMessagesPath = `/api/sfchat/get-conversation-entries`;\n private readonly _sendTextPath = `/api/sfchat/send-text-message`;\n private readonly _sendChoicePath = `/api/sfchat/send-choice-message`;\n private readonly _updateLastMessagePath = `/api/sfchat/update-last-message-id`;\n private readonly _hasNewMessagesPath = `/api/sfchat/has-new-messages`;\n\n constructor(endpoint: string, market: string, language: string) {\n this._endpoint = this.formatEndpoint(endpoint);\n this._market = market;\n this._language = language;\n this._currentUrl = window.location.href;\n }\n\n async startChat(chatId: string, itemId: string): Promise<string> {\n let model: ChatStartParameters = \n {\n market: this._market,\n language: this._language,\n chatIdString: chatId,\n itemId: itemId,\n currentUrl: this._currentUrl\n };\n\n const fetchUrl = this._endpoint + this._startChatPath;\n const data = (await this.fetchHelper.fetchJson(\n fetchUrl,\n this.getRequestInit(model),\n false\n )) as string;\n\n return this.handleResponse<string>(data, chatId);\n }\n\n async fetchMessages(chatId: string, prevMessageData: ChatMessages) : Promise<ChatMessages> {\n if (!chatId) {\n return prevMessageData;\n }\n\n let model: ChatParameters = {\n market: this._market,\n language: this._language,\n chatIdString: chatId\n };\n\n const fetchUrl = this._endpoint + this._fetchChatMessagesPath;\n const data = (await this.fetchHelper.fetchJson(\n fetchUrl,\n this.getRequestInit(model),\n false,\n )) as string;\n\n if (!data) {\n return prevMessageData;\n }\n \n return this.handleResponse<ChatMessages>(data, prevMessageData);\n }\n\n async sendMessage(content : string, itemId : string, chatId: string, lastMessageId: string, messageType: MessageType) : Promise<string> {\n let newLatestMessageId;\n\n switch (messageType) {\n case 'Choice':\n newLatestMessageId = await this.sendChoiceMessage(content, itemId, chatId, lastMessageId);\n break;\n default:\n newLatestMessageId = await this.sendTextMessage(content, itemId, chatId, lastMessageId);\n break;\n }\n\n if (!newLatestMessageId) {\n return lastMessageId;\n }\n\n if (newLatestMessageId.includes(\",\")) {\n newLatestMessageId = newLatestMessageId.substring(newLatestMessageId.lastIndexOf(\",\") + 1);\n }\n\n return newLatestMessageId;\n }\n\n async updateLastMessageId(chatId: string, lastMessageId: string) {\n let model: ChatLastMessageParameters = {\n chatIdString: chatId,\n latestMessageIdString: lastMessageId\n };\n\n const fetchUrl = this._endpoint + this._updateLastMessagePath;\n await this.fetchHelper.fetchJson(\n fetchUrl,\n this.getRequestInit(model),\n false,\n );\n }\n\n async hasNewMessages(itemId : string) : Promise<boolean> {\n let model: ChatStartParameters = {\n language: this._language,\n market: this._market,\n itemId: itemId,\n chatIdString: \"\",\n currentUrl: this._currentUrl\n };\n\n const fetchUrl = this._endpoint + this._hasNewMessagesPath;\n let data = await this.fetchHelper.fetchJson(\n fetchUrl,\n this.getRequestInit(model),\n false,\n ) as string;\n\n if (!data) {\n return false;\n }\n\n return JSON.parse(data) as boolean;\n }\n\n private async sendTextMessage(content : string, itemId : string, chatId: string, defaultReturn: string) : Promise<string> {\n if (!chatId || !content) {\n return defaultReturn;\n }\n\n let model: ChatMessageParameters = {\n market: this._market,\n language: this._language,\n chatIdString: chatId,\n content: content,\n itemId: itemId,\n currentUrl: this._currentUrl\n };\n\n const fetchUrl = this._endpoint + this._sendTextPath;\n const data = (await this.fetchHelper.fetchJson(\n fetchUrl,\n this.getRequestInit(model),\n false,\n )) as string;\n\n return this.handleResponse<string>(data, defaultReturn)?.id ?? defaultReturn;\n }\n\n private async sendChoiceMessage(content : string, itemId : string, chatId: string, defaultReturn: string) : Promise<string> {\n if (!chatId || !content) {\n return defaultReturn;\n }\n\n let model: ChatMessageParameters = \n {\n market: this._market,\n language: this._language,\n chatIdString: chatId,\n content: content,\n itemId: itemId,\n currentUrl: this._currentUrl\n };\n\n const fetchUrl = this._endpoint + this._sendChoicePath;\n const data = (await this.fetchHelper.fetchJson(\n fetchUrl,\n this.getRequestInit(model),\n false,\n )) as string;\n\n return this.handleResponse<string>(data, defaultReturn)?.id ?? defaultReturn;\n }\n\n private formatEndpoint(endpoint: string) : string {\n return endpoint.lastIndexOf('/') === endpoint.length - 1 ? endpoint.substring(0, endpoint.length - 1) : endpoint;\n }\n\n private handleResponse<T>(data : any, defaultReturn : any, checkForArray: boolean = false) {\n if (!data) {\n return defaultReturn;\n }\n\n let parsedData = JSON.parse(data) as T;\n if (!parsedData || checkForArray && !Array.isArray(parsedData)) {\n return defaultReturn;\n }\n\n return parsedData;\n }\n \n private getRequestInit(model: any, method: string = 'POST', mode: RequestMode = 'cors', contentTypes: string = 'application/json'): RequestInit {\n return {\n mode: mode,\n method: method,\n headers: \n {\n 'Content-Type': contentTypes,\n 'CustomValidateAntiForgeryToken': \"01001101010001010100111101010111\"\n },\n body: JSON.stringify(model)\n };\n }\n\n GetLastMessageId(messages : ChatMessage[], lastMessageId : string) {\n return messages?.at(-1)?.messageId ?? lastMessageId;\n }\n}\n"],"mappings":"0CAIaA,EACMC,UACAC,QACAC,UACAC,YACTC,YAAc,IAAIC,EAAY,iBACrBC,eAAiB,yBACjBC,uBAAyB,uCACzBC,cAAgB,gCAChBC,gBAAkB,kCAClBC,uBAAyB,qCACzBC,oBAAsB,+BAEvC,WAAAC,CAAYC,EAAkBC,EAAgBC,GAC5CC,KAAKhB,UAAYgB,KAAKC,eAAeJ,GACrCG,KAAKf,QAAUa,EACfE,KAAKd,UAAYa,EACjBC,KAAKb,YAAce,OAAOC,SAASC,I,CAGrC,eAAMC,CAAUC,EAAgBC,GAC9B,IAAIC,EACJ,CACEV,OAAQE,KAAKf,QACbc,SAAUC,KAAKd,UACfuB,aAAcH,EACdC,OAAQA,EACRG,WAAYV,KAAKb,aAGnB,MAAMwB,EAAWX,KAAKhB,UAAYgB,KAAKV,eACvC,MAAMsB,QAAcZ,KAAKZ,YAAYyB,UACnCF,EACAX,KAAKc,eAAeN,GACpB,OAGF,OAAOR,KAAKe,eAAuBH,EAAMN,E,CAG3C,mBAAMU,CAAcV,EAAgBW,GAClC,IAAKX,EAAQ,CACX,OAAOW,C,CAGT,IAAIT,EAAwB,CAC1BV,OAAQE,KAAKf,QACbc,SAAUC,KAAKd,UACfuB,aAAcH,GAGhB,MAAMK,EAAWX,KAAKhB,UAAYgB,KAAKT,uBACvC,MAAMqB,QAAcZ,KAAKZ,YAAYyB,UACnCF,EACAX,KAAKc,eAAeN,GACpB,OAGF,IAAKI,EAAM,CACT,OAAOK,C,CAGT,OAAOjB,KAAKe,eAA6BH,EAAMK,E,CAGjD,iBAAMC,CAAYC,EAAkBZ,EAAiBD,EAAgBc,EAAuBC,GAC1F,IAAIC,EAEJ,OAAQD,GACN,IAAK,SACHC,QAA2BtB,KAAKuB,kBAAkBJ,EAASZ,EAAQD,EAAQc,GAC3E,MACF,QACEE,QAA2BtB,KAAKwB,gBAAgBL,EAASZ,EAAQD,EAAQc,GACzE,MAGJ,IAAKE,EAAoB,CACvB,OAAOF,C,CAGT,GAAIE,EAAmBG,SAAS,KAAM,CACpCH,EAAqBA,EAAmBI,UAAUJ,EAAmBK,YAAY,KAAO,E,CAG1F,OAAOL,C,CAGT,yBAAMM,CAAoBtB,EAAgBc,GACxC,IAAIZ,EAAmC,CACrCC,aAAcH,EACduB,sBAAuBT,GAGzB,MAAMT,EAAWX,KAAKhB,UAAYgB,KAAKN,6BACjCM,KAAKZ,YAAYyB,UACrBF,EACAX,KAAKc,eAAeN,GACpB,M,CAIJ,oBAAMsB,CAAevB,GACnB,IAAIC,EAA6B,CAC/BT,SAAUC,KAAKd,UACfY,OAAQE,KAAKf,QACbsB,OAAQA,EACRE,aAAc,GACdC,WAAYV,KAAKb,aAGnB,MAAMwB,EAAWX,KAAKhB,UAAYgB,KAAKL,oBACvC,IAAIiB,QAAaZ,KAAKZ,YAAYyB,UAChCF,EACAX,KAAKc,eAAeN,GACpB,OAGF,IAAKI,EAAM,CACT,OAAO,K,CAGT,OAAOmB,KAAKC,MAAMpB,E,CAGZ,qBAAMY,CAAgBL,EAAkBZ,EAAiBD,EAAgB2B,GAC/E,IAAK3B,IAAWa,EAAS,CACvB,OAAOc,C,CAGT,IAAIzB,EAA+B,CACjCV,OAAQE,KAAKf,QACbc,SAAUC,KAAKd,UACfuB,aAAcH,EACda,QAASA,EACTZ,OAAQA,EACRG,WAAYV,KAAKb,aAGnB,MAAMwB,EAAWX,KAAKhB,UAAYgB,KAAKR,cACvC,MAAMoB,QAAcZ,KAAKZ,YAAYyB,UACnCF,EACAX,KAAKc,eAAeN,GACpB,OAGF,OAAOR,KAAKe,eAAuBH,EAAMqB,IAAgBC,IAAMD,C,CAGzD,uBAAMV,CAAkBJ,EAAkBZ,EAAiBD,EAAgB2B,GACjF,IAAK3B,IAAWa,EAAS,CACvB,OAAOc,C,CAGT,IAAIzB,EACJ,CACEV,OAAQE,KAAKf,QACbc,SAAUC,KAAKd,UACfuB,aAAcH,EACda,QAASA,EACTZ,OAAQA,EACRG,WAAYV,KAAKb,aAGnB,MAAMwB,EAAWX,KAAKhB,UAAYgB,KAAKP,gBACvC,MAAMmB,QAAcZ,KAAKZ,YAAYyB,UACnCF,EACAX,KAAKc,eAAeN,GACpB,OAGF,OAAOR,KAAKe,eAAuBH,EAAMqB,IAAgBC,IAAMD,C,CAGzD,cAAAhC,CAAeJ,GACrB,OAAOA,EAAS8B,YAAY,OAAS9B,EAASsC,OAAS,EAAItC,EAAS6B,UAAU,EAAG7B,EAASsC,OAAS,GAAKtC,C,CAGlG,cAAAkB,CAAkBH,EAAYqB,EAAqBG,EAAyB,OAClF,IAAKxB,EAAM,CACT,OAAOqB,C,CAGT,IAAII,EAAaN,KAAKC,MAAMpB,GAC5B,IAAKyB,GAAcD,IAAkBE,MAAMC,QAAQF,GAAa,CAC9D,OAAOJ,C,CAGT,OAAOI,C,CAGD,cAAAvB,CAAeN,EAAYgC,EAAiB,OAAQC,EAAoB,OAAQC,EAAuB,oBAC7G,MAAO,CACLD,KAAMA,EACND,OAAQA,EACRG,QACA,CACE,eAAgBD,EAChBE,+BAAkC,oCAEpCC,KAAMd,KAAKe,UAAUtC,G,CAIzB,gBAAAuC,CAAiBC,EAA0B5B,GACzC,OAAO4B,GAAUC,IAAI,IAAIC,WAAa9B,C","ignoreList":[]}
|