@postnord/pn-marketweb-components 4.0.1 → 4.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/dist/cjs/index-b02670c2.js +4 -12
  2. package/dist/cjs/loader.cjs.js +1 -1
  3. package/dist/cjs/pn-chat-message_2.cjs.entry.js +2 -1
  4. package/dist/cjs/pn-chat-message_2.cjs.entry.js.map +1 -1
  5. package/dist/cjs/pn-chat.cjs.entry.js +1 -1
  6. package/dist/cjs/{pn-chat.service-eaf6ed50.js → pn-chat.service-5a8d89b9.js} +2 -4
  7. package/dist/cjs/pn-chat.service-5a8d89b9.js.map +1 -0
  8. package/dist/cjs/pn-market-web-components.cjs.js +1 -1
  9. package/dist/cjs/pn-marketweb-table.cjs.entry.js +37 -29
  10. package/dist/cjs/pn-marketweb-table.cjs.entry.js.map +1 -1
  11. package/dist/cjs/pn-usp-promoter.cjs.entry.js +1 -1
  12. package/dist/collection/collection-manifest.json +1 -3
  13. package/dist/collection/components/widgets/pn-chat/pn-chat-message/pn-chat-message.js +2 -1
  14. package/dist/collection/components/widgets/pn-chat/pn-chat-message/pn-chat-message.js.map +1 -1
  15. package/dist/collection/components/widgets/pn-chat/pn-chat-stories-constants.js +23 -163
  16. package/dist/collection/components/widgets/pn-chat/pn-chat-stories-constants.js.map +1 -1
  17. package/dist/collection/components/widgets/pn-chat/pn-chat.service.js +1 -3
  18. package/dist/collection/components/widgets/pn-chat/pn-chat.service.js.map +1 -1
  19. package/dist/collection/components/widgets/pn-chat/pn-chat.stories.js +4 -4
  20. package/dist/collection/components/widgets/pn-chat/pn-chat.stories.js.map +1 -1
  21. package/dist/collection/components/widgets/pn-marketweb-table/pn-marketweb-table.css +10 -1
  22. package/dist/collection/components/widgets/pn-marketweb-table/pn-marketweb-table.js +2 -2
  23. package/dist/collection/components/widgets/pn-marketweb-table/pn-marketweb-table.js.map +1 -1
  24. package/dist/collection/components/widgets/pn-marketweb-table/pn-marketweb-table.stories.js +37 -1
  25. package/dist/collection/components/widgets/pn-marketweb-table/pn-marketweb-table.stories.js.map +1 -1
  26. package/dist/collection/components/widgets/pn-marketweb-table/translations.js +33 -25
  27. package/dist/collection/components/widgets/pn-marketweb-table/translations.js.map +1 -1
  28. package/dist/collection/components/widgets/pn-usp-promoter/pn-usp-promoter.js +1 -1
  29. package/dist/collection/globals/types.js.map +1 -1
  30. package/dist/components/pn-chat-message2.js +2 -1
  31. package/dist/components/pn-chat-message2.js.map +1 -1
  32. package/dist/components/pn-chat.service.js +1 -3
  33. package/dist/components/pn-chat.service.js.map +1 -1
  34. package/dist/components/pn-marketweb-search.js +126 -1
  35. package/dist/components/pn-marketweb-search.js.map +1 -1
  36. package/dist/components/pn-marketweb-table.js +36 -28
  37. package/dist/components/pn-marketweb-table.js.map +1 -1
  38. package/dist/components/pn-usp-promoter.js +1 -1
  39. package/dist/esm/index-c311acd6.js +4 -12
  40. package/dist/esm/loader.js +1 -1
  41. package/dist/esm/pn-chat-message_2.entry.js +2 -1
  42. package/dist/esm/pn-chat-message_2.entry.js.map +1 -1
  43. package/dist/esm/pn-chat.entry.js +1 -1
  44. package/dist/esm/{pn-chat.service-f4037d6f.js → pn-chat.service-0def5c4e.js} +2 -4
  45. package/dist/esm/pn-chat.service-0def5c4e.js.map +1 -0
  46. package/dist/esm/pn-market-web-components.js +1 -1
  47. package/dist/esm/pn-marketweb-table.entry.js +37 -29
  48. package/dist/esm/pn-marketweb-table.entry.js.map +1 -1
  49. package/dist/esm/pn-usp-promoter.entry.js +1 -1
  50. package/dist/package.json +1 -1
  51. package/dist/pn-market-web-components/p-3a936c5d.entry.js +2 -0
  52. package/dist/pn-market-web-components/p-3a936c5d.entry.js.map +1 -0
  53. package/dist/pn-market-web-components/p-6bec8d72.js +2 -0
  54. package/dist/pn-market-web-components/p-6bec8d72.js.map +1 -0
  55. package/dist/pn-market-web-components/p-923aa6d2.entry.js +2 -0
  56. package/dist/pn-market-web-components/p-923aa6d2.entry.js.map +1 -0
  57. package/dist/pn-market-web-components/{p-cc7c596e.entry.js → p-a298a263.entry.js} +2 -2
  58. package/dist/pn-market-web-components/{p-f21311ad.entry.js → p-da56370b.entry.js} +2 -2
  59. package/dist/pn-market-web-components/pn-market-web-components.esm.js +1 -1
  60. package/dist/pn-market-web-components/pn-market-web-components.esm.js.map +1 -1
  61. package/dist/types/components/widgets/pn-chat/pn-chat-message/pn-chat-message.d.ts +1 -0
  62. package/dist/types/components/widgets/pn-chat/pn-chat-stories-constants.d.ts +6 -127
  63. package/dist/types/components/widgets/pn-marketweb-table/translations.d.ts +8 -0
  64. package/dist/types/components.d.ts +0 -100
  65. package/dist/types/globals/types.d.ts +2 -0
  66. package/dist/vscode-data.json +0 -142
  67. package/package.json +1 -1
  68. package/dist/cjs/pn-chat.service-eaf6ed50.js.map +0 -1
  69. package/dist/cjs/pn-search.cjs.entry.js +0 -54
  70. package/dist/cjs/pn-search.cjs.entry.js.map +0 -1
  71. package/dist/cjs/pn-usp-simple.cjs.entry.js +0 -56
  72. package/dist/cjs/pn-usp-simple.cjs.entry.js.map +0 -1
  73. package/dist/collection/components/widgets/pn-search/pn-search.css +0 -140
  74. package/dist/collection/components/widgets/pn-search/pn-search.js +0 -368
  75. package/dist/collection/components/widgets/pn-search/pn-search.js.map +0 -1
  76. package/dist/collection/components/widgets/pn-search/pn-search.stories.js +0 -54
  77. package/dist/collection/components/widgets/pn-search/pn-search.stories.js.map +0 -1
  78. package/dist/collection/components/widgets/pn-usp-simple/pn-usp-simple.css +0 -116
  79. package/dist/collection/components/widgets/pn-usp-simple/pn-usp-simple.js +0 -269
  80. package/dist/collection/components/widgets/pn-usp-simple/pn-usp-simple.js.map +0 -1
  81. package/dist/collection/components/widgets/pn-usp-simple/pn-usp-simple.stories.js +0 -63
  82. package/dist/collection/components/widgets/pn-usp-simple/pn-usp-simple.stories.js.map +0 -1
  83. package/dist/components/pn-marketweb-search2.js +0 -130
  84. package/dist/components/pn-marketweb-search2.js.map +0 -1
  85. package/dist/components/pn-search.d.ts +0 -11
  86. package/dist/components/pn-search.js +0 -91
  87. package/dist/components/pn-search.js.map +0 -1
  88. package/dist/components/pn-usp-simple.d.ts +0 -11
  89. package/dist/components/pn-usp-simple.js +0 -82
  90. package/dist/components/pn-usp-simple.js.map +0 -1
  91. package/dist/esm/pn-chat.service-f4037d6f.js.map +0 -1
  92. package/dist/esm/pn-search.entry.js +0 -50
  93. package/dist/esm/pn-search.entry.js.map +0 -1
  94. package/dist/esm/pn-usp-simple.entry.js +0 -52
  95. package/dist/esm/pn-usp-simple.entry.js.map +0 -1
  96. package/dist/pn-market-web-components/p-04107723.entry.js +0 -2
  97. package/dist/pn-market-web-components/p-04107723.entry.js.map +0 -1
  98. package/dist/pn-market-web-components/p-10776075.entry.js +0 -2
  99. package/dist/pn-market-web-components/p-10776075.entry.js.map +0 -1
  100. package/dist/pn-market-web-components/p-2fd60147.entry.js +0 -2
  101. package/dist/pn-market-web-components/p-2fd60147.entry.js.map +0 -1
  102. package/dist/pn-market-web-components/p-a079c496.js +0 -2
  103. package/dist/pn-market-web-components/p-a079c496.js.map +0 -1
  104. package/dist/pn-market-web-components/p-e733f44f.entry.js +0 -2
  105. package/dist/pn-market-web-components/p-e733f44f.entry.js.map +0 -1
  106. package/dist/types/components/widgets/pn-search/pn-search.d.ts +0 -29
  107. package/dist/types/components/widgets/pn-search/pn-search.stories.d.ts +0 -7
  108. package/dist/types/components/widgets/pn-usp-simple/pn-usp-simple.d.ts +0 -19
  109. package/dist/types/components/widgets/pn-usp-simple/pn-usp-simple.stories.d.ts +0 -7
  110. /package/dist/pn-market-web-components/{p-cc7c596e.entry.js.map → p-a298a263.entry.js.map} +0 -0
  111. /package/dist/pn-market-web-components/{p-f21311ad.entry.js.map → p-da56370b.entry.js.map} +0 -0
@@ -1,2 +0,0 @@
1
- import{r as e,h as t,F as n,d as a}from"./p-82546a44.js";import{H as i}from"./p-0b920554.js";import{b as s,a as o}from"./p-5f4ccd8a.js";import{P as r}from"./p-a079c496.js";import{F as l}from"./p-3478f368.js";const d={mobile:768,tablet:1024,desktop:1025};class c{static instance;breakpoints;callbacks;resizeTimeout;constructor(){this.breakpoints=d;this.callbacks=new Set;this.initializeListeners()}static getInstance(){if(!c.instance){c.instance=new c}return c.instance}setBreakpoints(e){this.breakpoints={...this.breakpoints,...e};this.notifyListeners()}getWidth(){if(typeof window==="undefined")return 0;return window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth||0}isTouch(){if(typeof window==="undefined")return false;return"ontouchstart"in window||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0}getScreenSize(e){if(e<this.breakpoints.mobile)return"mobile";if(e<this.breakpoints.tablet)return"tablet";return"desktop"}getScreenInfo(){const e=this.getWidth();return{width:e,size:this.getScreenSize(e),isTouch:this.isTouch()}}initializeListeners(){if(typeof window==="undefined")return;const e=()=>{if(this.resizeTimeout){window.clearTimeout(this.resizeTimeout)}this.resizeTimeout=window.setTimeout((()=>{this.notifyListeners()}),250)};window.addEventListener("resize",e);window.addEventListener("orientationchange",e)}notifyListeners(){const e=this.getScreenInfo();this.callbacks.forEach((t=>t(e)))}subscribe(e){this.callbacks.add(e);e(this.getScreenInfo());return()=>{this.callbacks.delete(e)}}}const h={sv:{newMessage:"Nytt meddelande",toggleButtonOn:"Visa detaljer",toggleButtonOff:"Dölj detaljer",showMoreLabel:"Visa mer"},en:{newMessage:"New message",toggleButtonOn:"Show details",toggleButtonOff:"Hide details",showMoreLabel:"Show more"},da:{newMessage:"Ny besked",toggleButtonOn:"Vis detaljer",toggleButtonOff:"Skjul detaljer",showMoreLabel:"Vis mere"},no:{newMessage:"Ny melding",toggleButtonOn:"Vis detaljer",toggleButtonOff:"Skjul detaljer",showMoreLabel:"Vis mer"},fi:{newMessage:"Uusi viesti",toggleButtonOn:"Näytä tiedot",toggleButtonOff:"Piilota tiedot",showMoreLabel:"Näytä lisää"},de:{newMessage:"Nytt meddelade",toggleButtonOn:"Visa detaljer",toggleButtonOff:"Dölj detaljer"},zh:{newMessage:"Nytt meddelade",toggleButtonOn:"Visa detaljer",toggleButtonOff:"Dölj detaljer"},it:{newMessage:"Nytt meddelade",toggleButtonOn:"Visa detaljer",toggleButtonOff:"Dölj detaljer"},nl:{newMessage:"Nytt meddelade",toggleButtonOn:"Visa detaljer",toggleButtonOff:"Dölj detaljer"},tr:{newMessage:"Nytt meddelade",toggleButtonOn:"Visa detaljer",toggleButtonOff:"Dölj detaljer"},pt:{newMessage:"Nytt meddelade",toggleButtonOn:"Visa detaljer",toggleButtonOff:"Dölj detaljer"},pl:{newMessage:"Nytt meddelade",toggleButtonOn:"Visa detaljer",toggleButtonOff:"Dölj detaljer"},"pt-BR":{newMessage:"Nytt meddelade",toggleButtonOn:"Visa detaljer",toggleButtonOff:"Dölj detaljer"}};class b{_endpoint;_language;fetchHelper=new l("MarketTableService");_getUserShipmentsPath=`/get-user-shipments`;constructor(e,t){this._endpoint=this.formatEndpoint(e);this._language=t}async getUserShipments(e,t,n,a){let i={skip:t,take:n,isChatEnabled:a,language:this._language,contentId:e};const s=this._endpoint+this._getUserShipmentsPath;const o=await this.fetchHelper.fetchJson(s,this.getRequestInit(i),false);return JSON.parse(o.shipments)}formatEndpoint(e){var t=e.lastIndexOf("/")===e.length-1?e.substring(0,e.length-1):e;return t}getRequestInit(e,t="POST",n="cors",a="application/json"){return{mode:n,method:t,headers:{"Content-Type":a},body:JSON.stringify(e)}}}const p="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: 767px){.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}}";const m=p;const g=class{constructor(t){e(this,t);this.mainHeading=undefined;this.mainHeadingLevel="h2";this.preamble=undefined;this.subHeadingLevel="h3";this.headers=undefined;this.rows=undefined;this.showHeadersInCells=false;this.cellHeaderLevel="h3";this.tableRowCtaActionLabel=undefined;this.imageColAriaHeader=undefined;this.ctaColAriaHeader=undefined;this.checkForNewShipments=false;this.endpoint=undefined;this.language="sv";this.market=undefined;this.toggleDetailLabel="View details";this.checkForChat=false;this.value="";this.shipmentType=undefined;this.contentId="";this.takeAmountRow=2;this.shipmentCount=2;this.i18n=undefined;this._headers=[];this._rows=[];this._allKeys=new Set;this.screenInfo=undefined}screenWidth=c.getInstance();cleanup;_chatService;_chatSegment="#chat";_marketwebTableService;componentWillLoad(){this.setInitialValues();this.setTranslations();this._marketwebTableService=new b(this.endpoint,this.language);this.cleanup=this.screenWidth.subscribe((e=>{this.screenInfo=e}));if(this.checkForNewShipments){this._chatService=new r(this.endpoint,this.market,this.language);setInterval((()=>{this.checkForNewMessages()}),6e4)}}setTranslations(){if(h[this.language]){this.i18n=h[this.language]}else{const e="sv";this.i18n=h[e]}}onLanguageChange(){this.setTranslations()}async componentDidLoad(){if(this.checkForChat){const e=document.querySelector("pn-marketweb-table."+this.shipmentType);const t=e.querySelectorAll('[href*="#chat"]');const n=Array.from(t).filter((e=>e instanceof HTMLAnchorElement));this.OpenChatEvent(n)}}componentDidRender(){const e=document.querySelector("pn-marketweb-table[shipment-type="+this.shipmentType+"]");const t=e?.querySelectorAll("pn-button.toggle-widget");t?.forEach((e=>{const t=e.querySelector(".pn-button-text");if(t&&t.innerHTML!==this.i18n.toggleButtonOn){t.innerHTML=this.i18n.toggleButtonOn}const n=e.querySelector("button");if(n&&!n.hasAttribute("data-toggle-initialized")){n.addEventListener("click",this.toggleButton.bind(this));n.setAttribute("data-toggle-initialized","true")}}))}toggleButton(e){const t=e.currentTarget;const n=t.closest("tr");const a=t.closest("pn-button");const i=n.classList.contains("shipment-id-active");const r=document.querySelectorAll(".widget-row");r.forEach((e=>e.remove()));const l=document.querySelectorAll("tr");l.forEach((e=>e.classList.remove("shipment-id-active")));const d=document.querySelectorAll("pn-button.toggle-widget");d.forEach((e=>{e.setAttribute("icon",s);e.querySelector(".pn-button-text").innerHTML=this.i18n.toggleButtonOn}));if(i){return}t.querySelector(".pn-button-text").innerHTML=this.i18n.toggleButtonOff;n.classList.add("shipment-id-active");const c=document.createElement("tr");c.classList.add("widget-row");const h=document.createElement("td");h.colSpan=n.children.length;const b=document.createElement("div");b.classList.add("pn-widget-wrapper");const p=document.createElement("pn-widget");p.setAttribute("locale",this.language);p.setAttribute("shipment-id",t.id);b.appendChild(p);h.appendChild(b);c.appendChild(h);n.parentNode.insertBefore(c,n.nextSibling);a.setAttribute("icon",o)}handleShowMore=async()=>{let e=this._rows.length;let t=await this._marketwebTableService.getUserShipments(this.contentId,e,this.takeAmountRow,this.checkForChat);if(t){this._rows=[...this._rows,...t]}};async waitForComponent(e,t=10,n=300){for(let a=0;a<t;a++){const t=document.querySelector(e);if(t){return t}await new Promise((e=>setTimeout(e,n)))}return null}disconnectedCallback(){if(this.cleanup){this.cleanup()}}async checkForNewMessages(){for(let e=0;e<this._rows.length;e++){const t=this._rows[e];const n=t.id;if(n){const a=await this._chatService.hasNewMessages(n);if(t.hasNewMessages!==a){this._rows[e]={...t,hasNewMessages:a}}}}this._rows=[...this._rows]}setInitialValues(){try{this.parseRows();this.parseHeaders()}catch(e){console.error("Error parsing table data:",e);this._rows=[];this._headers=[]}}parseRows(){this._rows=typeof this.rows==="string"?JSON.parse(this.rows):this.rows;this._allKeys=new Set(this._rows.flatMap((e=>Object.keys(e))))}parseHeaders(){if(typeof this.headers==="string"){this._headers=JSON.parse(this.headers)}else if(this.headers){this._headers=this.headers}else{this._headers=Array.from(this._allKeys).map((e=>({key:e,label:e})))}}renderCellContent(e,t){const n=e.render?e.render(t):t[e.key]??"-";return n}renderCell(e,a){const s=this.renderCellContent(e,a);if(this.showHeadersInCells||this.screenInfo.width<=d.tablet){return t("div",{class:"cell-content",role:"cell"},t(i,{level:this.cellHeaderLevel,cssClass:"cell-heading",additionalProps:{"aria-hidden":"true",role:"presentation"}},e.label),t("span",{class:"cell-value"},s))}return t(n,null,s)}handleToggleClick=()=>{const e=document.querySelector(".trackandtracewidgetblock");if(e?.parentElement){e.parentElement.classList.toggle("hideRow")}};renderActionButtons(e){if(!e.actionButtons)return null;return t("td",{class:"actions",role:"cell"},t("div",{class:"button-wrapper",role:"group","aria-label":this.tableRowCtaActionLabel,"data-label":this.i18n.newMessage},e.actionButtons.map((e=>t("pn-button",{appearance:e.appearance,class:e.class,variant:e.variant,small:e.small,loading:e.loading,icon:e.icon,leftIcon:e.leftIcon,tooltip:e.tooltip,href:e.href,rel:e.rel,download:e.download,form:e.form,buttonId:e.buttonId,"data-chat":e.customAttribute},e.content)))))}async OpenChatEvent(e){e.forEach((e=>{e.addEventListener("click",(t=>{t.preventDefault();const n=window?.location?.hash??"";const a=/#chat:([a-zA-Z0-9]+)(?=#|$)/;const i=e.href.match(a);const s=i?i[1]:"";const o=`${this._chatSegment}:${s}`;window.location.hash=o;this.waitForComponent("pn-chat").then((t=>{if(s){t.setAttribute("item-id",s)}else{t.setAttribute("item-id","")}let a=t.getAttribute("pn-chat-id");const i="00000000-0000-0000-0000-000000000000";const r="1";const l=a===i?r:i;let d=l;const c=e?.parentElement?.getAttribute("data-chat");if(c){d=c.split("").reverse().join("")}t.setAttribute("is-logged-in","true");t.setAttribute("pn-chat-id",d);if(n.includes(o)){let e=t.getAttribute("force-open")??"true";e=e==="true"?"false":"true";t.setAttribute("force-open",e)}}))}))}))}render(){const e=`table-${Math.random().toString(36)}`;const n=`${e}-main-heading`;return t(a,{key:"9dd9a449fb58560ed8319441a1a17fd0ecb3708c",language:this.language},t("div",{key:"5bf3fef47a8f71254d065a7732a6b53a6c945834",class:"pn-marketweb-table"},t("div",{key:"ae40adf08605764a39e6ab02bb55780c0974c2e7",role:"region","aria-labelledby":this.mainHeading?n:undefined},t("div",{key:"f569e5f4fdbd29b667912557ba2806ac33bfe203",class:"heading-section"},t("div",{key:"bf3280cdf17784cb8237c2204d2286530df28d35",class:"heading-wrapper"},this.mainHeading&&t(i,{key:"923eec130a764bb2d3d14fd507f9d5fa4eff750f",level:this.mainHeadingLevel,cssClass:"main-heading",id:n},this.mainHeading),this.preamble&&t("div",{key:"4c7bc46e41807897ab0e891497e228eef478fff9",class:"preamble-section"},this.preamble))),this._rows.length>0&&t("table",{key:"041f873a19c963f9091ec6bd8bd05cebe98b8cae",class:"pn-marketweb-table__table","aria-labelledby":this.mainHeading?`${e}-main-heading`:undefined},this._headers&&t("thead",{key:"994dff35404141dca8da55223cdeac282aad98ab",class:this.showHeadersInCells?"sr-only":undefined},t("tr",{key:"b9733ffec4696350e82fb319c92a6b186ae3af8c"},this._rows.some((e=>e.imageUrl))&&this.imageColAriaHeader&&t("th",{key:"1ee27305f199b4a21e0c875e24d9b4bee76e3ecb",scope:"col",class:"sr-only"},this.imageColAriaHeader),this._headers.map((e=>t("th",{key:e.key,scope:"col",class:"sr-only-mobile"},e.label))),this._rows.some((e=>e.link1||e.link2))&&this.ctaColAriaHeader&&t("th",{key:"0468730178d3bf9b9197a77b5bd1bb87d5b96706",scope:"col",class:"sr-only"},this.ctaColAriaHeader))),t("tbody",{key:"42c974c7df0a42fa529a478be1164619476171b4"},this._rows.slice(0,this.shipmentCount).map(((e,n)=>t("tr",{key:n,class:e.hasNewMessages?"row-new-message":null},e.imageUrl&&t("td",{class:"cell-image"},t("div",{class:"image-container"},t("img",{src:e.imageUrl,alt:"",class:"row-image"}))),this._headers.map((a=>t("td",{key:`${n}-${a.key}`,class:"cell-content"},this.renderCell(a,e)))),this.renderActionButtons(e)))))),this.shipmentCount>this._rows.length&&t("div",{key:"df77087fd61f9e18ad2dd9f2ffcfcc48ef59fdfc",class:"pn-market-table__show-more-wrapper"},t("pn-button",{key:"7ed292e469b44f7594076ee67d31136e9afcb240",variant:"outlined",appearance:"light",label:this.i18n?.showMoreLabel||"Show More",onClick:()=>this.handleShowMore()})))))}static get watchers(){return{language:["onLanguageChange"]}}};g.style=m;export{g as pn_marketweb_table};
2
- //# sourceMappingURL=p-04107723.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["DEFAULT_BREAKPOINTS","mobile","tablet","desktop","ScreenWidth","static","breakpoints","callbacks","resizeTimeout","constructor","this","Set","initializeListeners","getInstance","instance","setBreakpoints","notifyListeners","getWidth","window","innerWidth","document","documentElement","clientWidth","body","isTouch","navigator","maxTouchPoints","msMaxTouchPoints","getScreenSize","width","getScreenInfo","size","handleResize","clearTimeout","setTimeout","addEventListener","info","forEach","callback","subscribe","add","delete","translations","sv","newMessage","toggleButtonOn","toggleButtonOff","showMoreLabel","en","da","no","fi","de","zh","it","nl","tr","pt","pl","MarketwebTableService","_endpoint","_language","fetchHelper","FetchHelper","_getUserShipmentsPath","endpoint","language","formatEndpoint","getUserShipments","contentId","skip","take","isChatEnabled","model","fetchUrl","data","fetchJson","getRequestInit","JSON","parse","shipments","formattedEndpoint","lastIndexOf","length","substring","method","mode","contentTypes","headers","stringify","pnMarketwebTableCss","PnMarketwebTableStyle0","PnMarketWebTable","screenWidth","cleanup","_chatService","_chatSegment","_marketwebTableService","componentWillLoad","setInitialValues","setTranslations","screenInfo","checkForNewShipments","PnChatService","market","setInterval","checkForNewMessages","i18n","fallbackLang","onLanguageChange","componentDidLoad","checkForChat","thisTable","querySelector","shipmentType","chatHrefs","querySelectorAll","openChatATags","Array","from","filter","el","HTMLAnchorElement","OpenChatEvent","componentDidRender","toggleButtons","pnButton","btnText","innerHTML","button","hasAttribute","toggleButton","bind","setAttribute","event","currentTarget","parentRow","closest","parentPnButton","isActive","classList","contains","existingWidgetRows","row","remove","allRows","allPnButtons","pnBtn","angle_down","widgetRow","createElement","tdElement","colSpan","children","divEl","widget","id","appendChild","parentNode","insertBefore","nextSibling","angle_up","handleShowMore","async","_rows","takeAmountRow","waitForComponent","selector","maxRetries","delay","i","element","Promise","resolve","disconnectedCallback","itemId","hasNewMessages","parseRows","parseHeaders","error","console","_headers","rows","_allKeys","flatMap","Object","keys","map","key","label","renderCellContent","header","content","render","renderCell","showHeadersInCells","h","class","role","HeadingTag","level","cellHeaderLevel","cssClass","additionalProps","Fragment","handleToggleClick","areaToggle","parentElement","toggle","renderActionButtons","actionButtons","tableRowCtaActionLabel","btn","appearance","variant","small","loading","icon","leftIcon","tooltip","href","rel","download","form","buttonId","customAttribute","aTags","aTag","e","preventDefault","previousLocationHash","location","hash","findShipmentIdInUrlRegex","match","shipmentId","shipmentHash","then","chat","oldInitChatId","getAttribute","_defaultChatId","_defaultAlternativeChatId","_defaultTriggerChatId","chatId","reversedChatId","split","reverse","join","includes","forceOpen","tableId","Math","random","toString","headingId","Host","mainHeading","undefined","mainHeadingLevel","preamble","some","imageUrl","imageColAriaHeader","scope","link1","link2","ctaColAriaHeader","slice","shipmentCount","rowIndex","src","alt","onClick"],"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"],"mappings":"gNAcO,MAAMA,EAAmC,CAC9CC,OAAQ,IACRC,OAAQ,KACRC,QAAS,M,MAGEC,EACHC,gBACAC,YACAC,UACAC,cAER,WAAAC,GACEC,KAAKJ,YAAcN,EACnBU,KAAKH,UAAY,IAAII,IACrBD,KAAKE,qB,CAGA,kBAAOC,GACZ,IAAKT,EAAYU,SAAU,CACzBV,EAAYU,SAAW,IAAIV,C,CAE7B,OAAOA,EAAYU,Q,CAGd,cAAAC,CAAeT,GACpBI,KAAKJ,YAAc,IAAKI,KAAKJ,eAAgBA,GAC7CI,KAAKM,iB,CAGC,QAAAC,GACN,UAAWC,SAAW,YAAa,OAAO,EAE1C,OAAOA,OAAOC,YAAcC,SAASC,gBAAgBC,aAAeF,SAASG,KAAKD,aAAe,C,CAG3F,OAAAE,GACN,UAAWN,SAAW,YAAa,OAAO,MAE1C,MACE,iBAAkBA,QAClBO,UAAUC,eAAiB,GAE3BD,UAAUE,iBAAmB,C,CAIzB,aAAAC,CAAcC,GACpB,GAAIA,EAAQnB,KAAKJ,YAAYL,OAAQ,MAAO,SAC5C,GAAI4B,EAAQnB,KAAKJ,YAAYJ,OAAQ,MAAO,SAC5C,MAAO,S,CAGF,aAAA4B,GACL,MAAMD,EAAQnB,KAAKO,WACnB,MAAO,CACLY,QACAE,KAAMrB,KAAKkB,cAAcC,GACzBL,QAASd,KAAKc,U,CAIV,mBAAAZ,GACN,UAAWM,SAAW,YAAa,OAEnC,MAAMc,EAAe,KACnB,GAAItB,KAAKF,cAAe,CACtBU,OAAOe,aAAavB,KAAKF,c,CAG3BE,KAAKF,cAAgBU,OAAOgB,YAAW,KACrCxB,KAAKM,iBAAiB,GACrB,IAAI,EAGTE,OAAOiB,iBAAiB,SAAUH,GAClCd,OAAOiB,iBAAiB,oBAAqBH,E,CAGvC,eAAAhB,GACN,MAAMoB,EAAO1B,KAAKoB,gBAClBpB,KAAKH,UAAU8B,SAAQC,GAAYA,EAASF,I,CAGvC,SAAAG,CAAUD,GACf5B,KAAKH,UAAUiC,IAAIF,GACnBA,EAAS5B,KAAKoB,iBAEd,MAAO,KACLpB,KAAKH,UAAUkC,OAAOH,EAAS,C,ECvG9B,MAAMI,EAAe,CAC1BC,GAAM,CACJC,WAAY,kBACZC,eAAgB,gBAChBC,gBAAiB,gBACjBC,cAAe,YAEjBC,GAAM,CACJJ,WAAY,cACZC,eAAgB,eAChBC,gBAAiB,eACjBC,cAAe,aAEjBE,GAAM,CACJL,WAAY,YACZC,eAAgB,eAChBC,gBAAiB,iBACjBC,cAAe,YAEjBG,GAAM,CACJN,WAAY,aACZC,eAAgB,eAChBC,gBAAiB,iBACjBC,cAAe,WAEjBI,GAAM,CACJP,WAAY,cACZC,eAAgB,eAChBC,gBAAiB,iBACjBC,cAAe,eAEjBK,GAAM,CACJR,WAAY,iBACZC,eAAgB,gBAChBC,gBAAiB,iBAEnBO,GAAM,CACJT,WAAY,iBACZC,eAAgB,gBAChBC,gBAAiB,iBAEnBQ,GAAM,CACJV,WAAY,iBACZC,eAAgB,gBAChBC,gBAAiB,iBAEnBS,GAAM,CACJX,WAAY,iBACZC,eAAgB,gBAChBC,gBAAiB,iBAEnBU,GAAM,CACJZ,WAAY,iBACZC,eAAgB,gBAChBC,gBAAiB,iBAEnBW,GAAM,CACJb,WAAY,iBACZC,eAAgB,gBAChBC,gBAAiB,iBAEnBY,GAAM,CACJd,WAAY,iBACZC,eAAgB,gBAChBC,gBAAiB,iBAEnB,QAAS,CACPF,WAAY,iBACZC,eAAgB,gBAChBC,gBAAiB,kB,MClERa,EACQC,UACAC,UACTC,YAAc,IAAIC,EAAY,sBACrBC,sBAAwB,sBAGzC,WAAAvD,CAAYwD,EAAkBC,GAC1BxD,KAAKkD,UAAYlD,KAAKyD,eAAeF,GACrCvD,KAAKmD,UAAYK,C,CAGrB,sBAAME,CAAiBC,EAAmBC,EAAcC,EAAcC,GAClE,IAAIC,EACJ,CACIH,KAAMA,EACNC,KAAMA,EACNC,cAAeA,EACfN,SAAUxD,KAAKmD,UACfQ,UAAWA,GAGf,MAAMK,EAAWhE,KAAKkD,UAAYlD,KAAKsD,sBAEvC,MAAMW,QAAcjE,KAAKoD,YAAYc,UACjCF,EACAhE,KAAKmE,eAAeJ,GACpB,OAGJ,OAAOK,KAAKC,MAAMJ,EAAKK,U,CAGnB,cAAAb,CAAeF,GACnB,IAAIgB,EAAoBhB,EAASiB,YAAY,OAASjB,EAASkB,OAAS,EAAIlB,EAASmB,UAAU,EAAGnB,EAASkB,OAAS,GAAKlB,EACzH,OAAOgB,C,CAGH,cAAAJ,CAAeJ,EAAYY,EAAiB,OAAQC,EAAoB,OAAQC,EAAuB,oBAC3G,MAAO,CACHD,KAAMA,EACND,OAAQA,EACRG,QACA,CACI,eAAgBD,GAEpBhE,KAAMuD,KAAKW,UAAUhB,G,ECjDjC,MAAMiB,EAAsB,28JAC5B,MAAAC,EAAeD,E,MCcFE,EAAgB,M,0EAEc,K,6CAED,K,mEAGF,M,qBACE,K,kIAIA,M,sCAEb,K,6CAES,e,kBACJ,M,WACwB,G,2CAE5B,G,mBACI,E,mBACA,E,kCAGY,G,WACH,G,cACA,IAAIjF,I,0BAGrCkF,YAAczF,EAAYS,cAC1BiF,QACAC,aACAC,aAAuB,QACvBC,uBAER,iBAAAC,GACExF,KAAKyF,mBACLzF,KAAK0F,kBACL1F,KAAKuF,uBAAyB,IAAItC,EAAsBjD,KAAKuD,SAAUvD,KAAKwD,UAE5ExD,KAAKoF,QAAUpF,KAAKmF,YAAYtD,WAAUH,IACxC1B,KAAK2F,WAAajE,CAAI,IAGxB,GAAI1B,KAAK4F,qBAAsB,CAC7B5F,KAAKqF,aAAe,IAAIQ,EAAc7F,KAAKuD,SAAUvD,KAAK8F,OAAQ9F,KAAKwD,UACvEuC,aAAY,KACV/F,KAAKgG,qBAAqB,GACzB,I,EAIP,eAAAN,GACE,GAAI1D,EAAahC,KAAKwD,UAAW,CAC/BxD,KAAKiG,KAAOjE,EAAahC,KAAKwD,S,KAE3B,CACH,MAAM0C,EAAe,KACrBlG,KAAKiG,KAAOjE,EAAakE,E,EAK7B,gBAAAC,GACEnG,KAAK0F,iB,CAGP,sBAAMU,GACJ,GAAIpG,KAAKqG,aAAc,CACrB,MAAMC,EAAY5F,SAAS6F,cAAc,sBAAwBvG,KAAKwG,cACtE,MAAMC,EAAYH,EAAUI,iBAAiB,mBAC7C,MAAMC,EAAqCC,MAAMC,KAAKJ,GAAWK,QAC9DC,GAAgCA,aAAcC,oBAEjDhH,KAAKiH,cAAcN,E,EAIvB,kBAAAO,GACE,MAAMZ,EAAY5F,SAAS6F,cAAc,oCAAsCvG,KAAKwG,aAAe,KACnG,MAAMW,EAAgBb,GAAWI,iBAAiB,2BAClDS,GAAexF,SAAQyF,IACrB,MAAMC,EAAUD,EAASb,cAAc,mBACvC,GAAIc,GAAWA,EAAQC,YAActH,KAAKiG,KAAK9D,eAAgB,CAC7DkF,EAAQC,UAAYtH,KAAKiG,KAAK9D,c,CAEhC,MAAMoF,EAASH,EAASb,cAAc,UACtC,GAAIgB,IAAWA,EAAOC,aAAa,2BAA4B,CAC7DD,EAAO9F,iBAAiB,QAASzB,KAAKyH,aAAaC,KAAK1H,OACxDuH,EAAOI,aAAa,0BAA2B,O,KAK7C,YAAAF,CAAaG,GACnB,MAAML,EAASK,EAAMC,cACrB,MAAMC,EAAYP,EAAOQ,QAAQ,MACjC,MAAMC,EAAiBT,EAAOQ,QAAQ,aAEtC,MAAME,EAAWH,EAAUI,UAAUC,SAAS,sBAE9C,MAAMC,EAAqB1H,SAASgG,iBAAiB,eACrD0B,EAAmBzG,SAAQ0G,GAAOA,EAAIC,WAEtC,MAAMC,EAAU7H,SAASgG,iBAAiB,MAC1C6B,EAAQ5G,SAAQ0G,GAAOA,EAAIH,UAAUI,OAAO,wBAE5C,MAAME,EAAe9H,SAASgG,iBAAiB,2BAC/C8B,EAAa7G,SAAQ8G,IACnBA,EAAMd,aAAa,OAAQe,GAC3BD,EAAMlC,cAAc,mBAAmBe,UAAYtH,KAAKiG,KAAK9D,cAAc,IAG7E,GAAI8F,EAAU,CACZ,M,CAEFV,EAAOhB,cAAc,mBAAmBe,UAAYtH,KAAKiG,KAAK7D,gBAC9D0F,EAAUI,UAAUpG,IAAI,sBAExB,MAAM6G,EAAYjI,SAASkI,cAAc,MACzCD,EAAUT,UAAUpG,IAAI,cAExB,MAAM+G,EAAYnI,SAASkI,cAAc,MACzCC,EAAUC,QAAUhB,EAAUiB,SAAStE,OAEvC,MAAMuE,EAAQtI,SAASkI,cAAc,OACrCI,EAAMd,UAAUpG,IAAI,qBAEpB,MAAMmH,EAASvI,SAASkI,cAAc,aACtCK,EAAOtB,aAAa,SAAU3H,KAAKwD,UACnCyF,EAAOtB,aAAa,cAAeJ,EAAO2B,IAE1CF,EAAMG,YAAYF,GAClBJ,EAAUM,YAAYH,GACtBL,EAAUQ,YAAYN,GAEtBf,EAAUsB,WAAWC,aAAaV,EAAWb,EAAUwB,aAEvDtB,EAAeL,aAAa,OAAQ4B,E,CAG9BC,eAAiBC,UACvB,IAAI7F,EAAO5D,KAAK0J,MAAMjF,OACtB,IAAIR,QAAajE,KAAKuF,uBAAuB7B,iBAAiB1D,KAAK2D,UAAWC,EAAM5D,KAAK2J,cAAe3J,KAAKqG,cAC7G,GAAIpC,EAAM,CACRjE,KAAK0J,MAAQ,IAAI1J,KAAK0J,SAAUzF,E,GAIpC,sBAAM2F,CAAiBC,EAAkBC,EAAa,GAAIC,EAAQ,KAChE,IAAK,IAAIC,EAAI,EAAGA,EAAIF,EAAYE,IAAK,CACnC,MAAMC,EAAUvJ,SAAS6F,cAAcsD,GACvC,GAAII,EAAS,CACX,OAAOA,C,OAEH,IAAIC,SAAQC,GAAW3I,WAAW2I,EAASJ,I,CAEnD,OAAO,I,CAGT,oBAAAK,GACE,GAAIpK,KAAKoF,QAAS,CAChBpF,KAAKoF,S,EAID,yBAAMY,GACZ,IAAK,IAAIgE,EAAI,EAAGA,EAAIhK,KAAK0J,MAAMjF,OAAQuF,IAAK,CAC1C,MAAM3B,EAAMrI,KAAK0J,MAAMM,GACvB,MAAMK,EAAShC,EAAIa,GAEnB,GAAImB,EAAQ,CACV,MAAMC,QAAuBtK,KAAKqF,aAAaiF,eAAeD,GAE9D,GAAIhC,EAAIiC,iBAAmBA,EAAgB,CACzCtK,KAAK0J,MAAMM,GAAK,IAAK3B,EAAKiC,eAAgBA,E,GAKhDtK,KAAK0J,MAAQ,IAAI1J,KAAK0J,M,CAGhB,gBAAAjE,GACN,IACEzF,KAAKuK,YACLvK,KAAKwK,c,CAEL,MAAOC,GACPC,QAAQD,MAAM,4BAA6BA,GAC3CzK,KAAK0J,MAAQ,GACb1J,KAAK2K,SAAW,E,EAIZ,SAAAJ,GACNvK,KAAK0J,aAAe1J,KAAK4K,OAAS,SAAWxG,KAAKC,MAAMrE,KAAK4K,MAAQ5K,KAAK4K,KAC1E5K,KAAK6K,SAAW,IAAI5K,IAAID,KAAK0J,MAAMoB,SAAQzC,GAAO0C,OAAOC,KAAK3C,K,CAGxD,YAAAmC,GACN,UAAWxK,KAAK8E,UAAY,SAAU,CACpC9E,KAAK2K,SAAWvG,KAAKC,MAAMrE,KAAK8E,Q,MAC3B,GAAI9E,KAAK8E,QAAS,CACvB9E,KAAK2K,SAAW3K,KAAK8E,O,KAChB,CACL9E,KAAK2K,SAAW/D,MAAMC,KAAK7G,KAAK6K,UAAUI,KAAIC,IAAG,CAAOA,MAAKC,MAAOD,K,EAIhE,iBAAAE,CAAkBC,EAAsBhD,GAC9C,MAAMiD,EAAUD,EAAOE,OAASF,EAAOE,OAAOlD,GAAOA,EAAIgD,EAAOH,MAAQ,IACxE,OAAOI,C,CAGD,UAAAE,CAAWH,EAAsBhD,GACvC,MAAMiD,EAAUtL,KAAKoL,kBAAkBC,EAAQhD,GAE/C,GAAIrI,KAAKyL,oBAAsBzL,KAAK2F,WAAWxE,OAAS7B,EAAoBE,OAAQ,CAClF,OACEkM,EAAA,OAAKC,MAAM,eAAeC,KAAK,QAC7BF,EAACG,EAAU,CACTC,MAAO9L,KAAK+L,gBACZC,SAAS,eACTC,gBAAiB,CACf,cAAe,OACfL,KAAQ,iBAGTP,EAAOF,OAEVO,EAAA,QAAMC,MAAM,cAAcL,G,CAKhC,OAAOI,EAAAQ,EAAA,KAAGZ,E,CAGJa,kBAAoB,KAC1B,MAAMC,EAAa1L,SAAS6F,cAAc,6BAC1C,GAAI6F,GAAYC,cAAe,CAC7BD,EAAWC,cAAcnE,UAAUoE,OAAO,U,GAItC,mBAAAC,CAAoBlE,GAC1B,IAAKA,EAAImE,cAAe,OAAO,KAE/B,OACEd,EAAA,MAAIC,MAAM,UAAUC,KAAK,QACvBF,EAAA,OAAKC,MAAM,iBAAiBC,KAAK,QAAO,aAAa5L,KAAKyM,uBAAsB,aAAczM,KAAKiG,KAAK/D,YACrGmG,EAAImE,cAAcvB,KAAIyB,GACrBhB,EAAA,aACEiB,WAAYD,EAAIC,WAChBhB,MAAOe,EAAIf,MACXiB,QAASF,EAAIE,QACbC,MAAOH,EAAIG,MACXC,QAASJ,EAAII,QACbC,KAAML,EAAIK,KACVC,SAAUN,EAAIM,SACdC,QAASP,EAAIO,QACbC,KAAMR,EAAIQ,KACVC,IAAKT,EAAIS,IACTC,SAAUV,EAAIU,SACdC,KAAMX,EAAIW,KACVC,SAAUZ,EAAIY,SAAQ,YACXZ,EAAIa,iBACdb,EAAIpB,Y,CAQT,mBAAMrE,CAAcuG,GAC1BA,EAAM7L,SAAS8L,IACbA,EAAKhM,iBAAiB,SAAUiM,IAC9BA,EAAEC,iBACF,MAAMC,EAAuBpN,QAAQqN,UAAUC,MAAQ,GAEvD,MAAMC,EAA2B,8BACjC,MAAMC,EAAQP,EAAKP,KAAKc,MAAMD,GAC9B,MAAME,EAAaD,EAAQA,EAAM,GAAK,GACtC,MAAME,EAAe,GAAGlO,KAAKsF,gBAAgB2I,IAC7CzN,OAAOqN,SAASC,KAAOI,EAEvBlO,KAAK4J,iBAAiB,WAAWuE,MAAMC,IACrC,GAAIH,EAAY,CACdG,EAAKzG,aAAa,UAAWsG,E,KAE1B,CACHG,EAAKzG,aAAa,UAAW,G,CAG/B,IAAI0G,EAAgBD,EAAKE,aAAa,cAEtC,MAAMC,EAAiB,uCACvB,MAAMC,EAA4B,IAClC,MAAMC,EAAwBJ,IAAkBE,EAAiBC,EAA4BD,EAC7F,IAAIG,EAASD,EACb,MAAME,EAAiBlB,GAAMpB,eAAeiC,aAAa,aAEzD,GAAIK,EAAgB,CAClBD,EAASC,EAAeC,MAAM,IAAIC,UAAUC,KAAK,G,CAGnDV,EAAKzG,aAAa,eAAgB,QAClCyG,EAAKzG,aAAa,aAAc+G,GAEhC,GAAId,EAAqBmB,SAASb,GAAe,CAC/C,IAAIc,EAAYZ,EAAKE,aAAa,eAAiB,OACnDU,EAAYA,IAAc,OAAS,QAAU,OAC7CZ,EAAKzG,aAAa,aAAcqH,E,IAElC,GACF,G,CAIN,MAAAzD,GACE,MAAM0D,EAAU,SAASC,KAAKC,SAASC,SAAS,MAChD,MAAMC,EAAY,GAAGJ,iBAErB,OACEvD,EAAC4D,EAAI,CAAApE,IAAA,2CAAC1H,SAAUxD,KAAKwD,UACnBkI,EAAA,OAAAR,IAAA,2CAAKS,MAAM,sBACTD,EAAA,OAAAR,IAAA,2CAAKU,KAAK,SAAQ,kBAAkB5L,KAAKuP,YAAcF,EAAYG,WACjE9D,EAAA,OAAAR,IAAA,2CAAKS,MAAM,mBACTD,EAAA,OAAAR,IAAA,2CAAKS,MAAM,mBACR3L,KAAKuP,aACJ7D,EAACG,EAAU,CAAAX,IAAA,2CAACY,MAAO9L,KAAKyP,iBAAkBzD,SAAS,eAAe9C,GAAImG,GACnErP,KAAKuP,aAGTvP,KAAK0P,UACJhE,EAAA,OAAAR,IAAA,2CAAKS,MAAM,oBAAoB3L,KAAK0P,YAIzC1P,KAAK0J,MAAMjF,OAAS,GACnBiH,EAAA,SAAAR,IAAA,2CAAOS,MAAM,4BAA2B,kBAAkB3L,KAAKuP,YAAc,GAAGN,iBAAyBO,WACtGxP,KAAK2K,UACJe,EAAA,SAAAR,IAAA,2CAAOS,MAAO3L,KAAKyL,mBAAqB,UAAY+D,WAClD9D,EAAA,MAAAR,IAAA,4CACGlL,KAAK0J,MAAMiG,MAAMtH,GAAQA,EAAIuH,YAAa5P,KAAK6P,oBAC9CnE,EAAA,MAAAR,IAAA,2CAAI4E,MAAM,MAAMnE,MAAM,WACnB3L,KAAK6P,oBAGT7P,KAAK2K,SAASM,KAAKI,GAClBK,EAAA,MAAIR,IAAKG,EAAOH,IAAK4E,MAAM,MAAMnE,MAAM,kBACpCN,EAAOF,SAGXnL,KAAK0J,MAAMiG,MAAMtH,GAAQA,EAAI0H,OAAS1H,EAAI2H,SAAUhQ,KAAKiQ,kBACxDvE,EAAA,MAAAR,IAAA,2CAAI4E,MAAM,MAAMnE,MAAM,WACnB3L,KAAKiQ,oBAMhBvE,EAAA,SAAAR,IAAA,4CACGlL,KAAK0J,MAAMwG,MAAM,EAAGlQ,KAAKmQ,eAAelF,KAAI,CAAC5C,EAAK+H,IACjD1E,EAAA,MAAIR,IAAKkF,EAAUzE,MAAOtD,EAAIiC,eAAiB,kBAAoB,MAChEjC,EAAIuH,UACHlE,EAAA,MAAIC,MAAM,cACRD,EAAA,OAAKC,MAAM,mBACTD,EAAA,OAAK2E,IAAKhI,EAAIuH,SAAUU,IAAI,GAAG3E,MAAM,gBAI1C3L,KAAK2K,SAASM,KAAKI,GAClBK,EAAA,MAAIR,IAAK,GAAGkF,KAAY/E,EAAOH,MAAOS,MAAM,gBACzC3L,KAAKwL,WAAWH,EAAQhD,MAG5BrI,KAAKuM,oBAAoBlE,QAMnCrI,KAAKmQ,cAAgBnQ,KAAK0J,MAAMjF,QAC/BiH,EAAA,OAAAR,IAAA,2CAAKS,MAAM,sCACTD,EAAA,aAAAR,IAAA,2CAAW0B,QAAQ,WAAWD,WAAW,QAAQxB,MAAOnL,KAAKiG,MAAM5D,eAAiB,YAAakO,QAAS,IAAMvQ,KAAKwJ,sB","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- import{r as e,c as a,g as i,h as t,d as n}from"./p-82546a44.js";const r="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-search{background-color:transparent;display:flex;flex-direction:column;align-items:center}.pn-search .graphics-container{padding-bottom:1rem}.pn-search .graphics{border-radius:50%;height:clamp(12rem, 14vw, 16rem);width:clamp(12rem, 14vw, 16rem);aspect-ratio:1/1;object-fit:cover}.pn-search .illustration{--pn-width:12rem;--pn-height:12rem}.pn-search .search-container{margin:clamp(1rem, 3vh, 1.5rem) 0}.pn-search .search-container ::placeholder{color:#5e554a}.pn-search .main{text-align:center;width:100%}.pn-search .heading{color:#000000;font-size:clamp(2rem, 4vw, 3.2rem);line-height:1;margin:0}.pn-search .search-container{display:flex;width:100%}.pn-search .search-container .search-component input,.pn-search .search-container .search-component button{font-size:1.6rem}.pn-search .cta{display:flex;flex-direction:row;justify-content:flex-start;align-items:center;margin-top:2rem;gap:1.2rem;width:100%}.pn-search .btn-mw[data-secondary]{color:#005d92;font-weight:500;text-decoration:underline}@media (min-width: 768px){.pn-search{flex-direction:row;align-items:flex-start}.pn-search .graphics-container{padding-right:clamp(2rem, 3vw, 4rem);padding-bottom:0}.pn-search .illustration{--pn-width:15rem;--pn-height:15rem}.pn-search .main{text-align:left}.pn-search pn-marketweb-search{width:40rem}.pn-search .cta{gap:1.6rem}.pn-search .btn-mw[data-primary]{width:auto;margin-bottom:0}.pn-search .btn-mw[data-secondary]{margin-top:0}}@media (min-width: 1200px){.pn-search{padding:2.4rem}.pn-search .search-container{max-width:400px}.pn-search .illustration{--pn-width:16rem;--pn-height:16rem}}@media (min-width: 1600px){.pn-search{max-width:1400px;margin:0 auto;padding:3.2rem}.pn-search .search-container{max-width:500px}}";const s=r;const d=class{constructor(i){e(this,i);this.pnSearch=a(this,"pnSearch",7);this.componentAriaLabel=undefined;this.heading=undefined;this.pnIllustrationSvg=undefined;this.imageUrl=undefined;this.imageAltText=undefined;this.searchPlaceholder=undefined;this.searchButtonText=undefined;this.searchButtonLabel=undefined;this.searchUrl=undefined;this.primaryButtonText=undefined;this.primaryButtonUrl=undefined;this.primaryButtonIconSvg=undefined;this.secondaryButtonText=undefined;this.secondaryButtonUrl=undefined;this.searchDescriptionAria=undefined;this.ctaActionsLabel=undefined;this.searchType=undefined}get hostElement(){return i(this)}pnSearch;doSearch=e=>{if(!this.searchUrl){console.warn("Search URL is not defined");return}const a={query:e.detail,timestamp:Date.now()};this.pnSearch.emit(a)};render(){const e=this.primaryButtonUrl||this.secondaryButtonUrl;return t(n,{key:"fd8fdc6f6bc5d4743ff328d914a6b2b55d840503"},t("div",{key:"fb4be66b1a38fde9e5b0b0e3fc4abbdf0f1b2f38",class:"pn-search",role:"search","aria-label":this.componentAriaLabel},t("div",{key:"b07dbfb4dcdf54e88ac790d4da6aa97a00356d04",class:"graphics-container","aria-hidden":!this.imageAltText},!this.pnIllustrationSvg&&this.imageUrl&&t("img",{key:"50ad3338cf3912ff74a50a6b72102e6d5e61f4f6",class:"graphics",src:this.imageUrl,alt:this.imageAltText||"",loading:"lazy"}),this.pnIllustrationSvg&&t("pn-illustration",{key:"3956261bb79fbac47239f2091e3d50344e94d555",class:"illustration",illustration:this.pnIllustrationSvg,role:"presentation"})),t("div",{key:"17c6d2c2d1cd812f583f072b17adc3747562ae85",class:"main"},t("h2",{key:"9214e9895160ee1d316f1ee09f4ddacb7c81f452",class:"heading",id:"search-section-heading"},this.heading),t("div",{key:"1db65a02236162c22210981d11d3567e6cc27f58",class:"search-container","aria-labelledby":"search-section-heading"},t("pn-marketweb-search",{key:"a560d93bb4747643a5c81610c2e55d0af0825559",class:"search-component",label:this.searchButtonLabel,name:"search",inputid:"search-field",autocomplete:"off",placeholder:this.searchPlaceholder,button:this.searchButtonText,disabled:false,loading:false,light:false,list:null,onSearch:this.doSearch,"data-search-url":this.searchUrl,"aria-describedby":"search-description"}),this.searchDescriptionAria&&t("div",{key:"3d59bd65947e1ecbdcfb75667135dc40e2482955",id:"search-description",class:"sr-only"},this.searchDescriptionAria)),e&&t("div",{key:"1d9a2bd31084ae806879e6bc9e820591e3bd4b29",class:"cta",role:"group","aria-label":this.ctaActionsLabel},this.primaryButtonUrl&&t("pn-button",{key:"5ddda20fd6846f75e301272e52fc3c200e2c71bb",appearance:"light",variant:"outlined",small:true,icon:this.primaryButtonIconSvg,"left-icon":Boolean(this.primaryButtonIconSvg),class:"btn-mw",href:this.primaryButtonUrl,"data-primary":true},this.primaryButtonText),this.secondaryButtonUrl&&t("a",{key:"a82cf19405f6144f9b5fd789ffa1242128a4c8f1",href:this.secondaryButtonUrl,class:"btn-mw","data-secondary":true,role:"button"},this.secondaryButtonText)))))}};d.style=s;export{d as pn_search};
2
- //# sourceMappingURL=p-10776075.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["pnSearchCss","PnSearchStyle0","PNSearch","pnSearch","doSearch","e","this","searchUrl","console","warn","searchDetail","query","detail","timestamp","Date","now","emit","render","hasButtons","primaryButtonUrl","secondaryButtonUrl","h","Host","key","class","role","componentAriaLabel","imageAltText","pnIllustrationSvg","imageUrl","src","alt","loading","illustration","id","heading","label","searchButtonLabel","name","inputid","autocomplete","placeholder","searchPlaceholder","button","searchButtonText","disabled","light","list","onSearch","searchDescriptionAria","ctaActionsLabel","appearance","variant","small","icon","primaryButtonIconSvg","Boolean","href","primaryButtonText","secondaryButtonText"],"sources":["src/components/widgets/pn-search/pn-search.scss?tag=pn-search","src/components/widgets/pn-search/pn-search.tsx"],"sourcesContent":["@import '../../../globals/main.scss';\n\n.pn-search {\n background-color: transparent;\n display: flex;\n flex-direction: column;\n align-items: center;\n\n .graphics-container {\n padding-bottom: 1rem;\n }\n\n .graphics {\n border-radius: 50%;\n height: clamp(12rem, 14vw, 16rem);\n width: clamp(12rem, 14vw, 16rem);\n aspect-ratio: 1 / 1;\n object-fit: cover;\n }\n\n .illustration {\n --pn-width: #{$illustrationWidth};\n --pn-height: #{$illustrationWidth};\n }\n\n .search-container {\n margin: clamp(1rem, 3vh, 1.5rem) 0;\n\n ::placeholder {\n color: $gray700;\n }\n }\n\n .main {\n text-align: center;\n width: 100%;\n }\n\n .heading {\n color: $black;\n font-size: clamp(2rem, 4vw, 3.2rem);\n line-height: 1;\n margin: 0;\n }\n\n .search-container {\n display: flex;\n width: 100%;\n\n .search-component {\n input,\n button {\n font-size: 1.6rem;\n }\n }\n }\n\n .cta {\n display: flex;\n flex-direction: row;\n justify-content: flex-start;\n align-items: center;\n margin-top: 2rem;\n gap: 1.2rem;\n width: 100%;\n }\n\n .btn-mw[data-secondary] {\n color: $blue700;\n font-weight: 500;\n text-decoration: underline;\n }\n}\n\n@media (min-width: 768px) {\n .pn-search {\n flex-direction: row;\n align-items: flex-start;\n\n .graphics-container {\n padding-right: clamp(2rem, 3vw, 4rem);\n padding-bottom: 0;\n }\n\n .illustration {\n --pn-width: #{$illustrationWidthMd};\n --pn-height: #{$illustrationWidthMd};\n }\n\n .main {\n text-align: left;\n }\n\n pn-marketweb-search {\n width: 40rem;\n }\n\n .cta {\n gap: 1.6rem;\n }\n\n .btn-mw[data-primary] {\n width: auto;\n margin-bottom: 0;\n }\n\n .btn-mw[data-secondary] {\n margin-top: 0;\n }\n }\n}\n\n@media (min-width: 992px) {\n}\n\n@media (min-width: 1200px) {\n .pn-search {\n padding: 2.4rem;\n\n .search-container {\n max-width: 400px;\n }\n\n .illustration {\n --pn-width: #{$illustrationWidthLg};\n --pn-height: #{$illustrationWidthLg};\n }\n }\n}\n\n@media (min-width: 1600px) {\n .pn-search {\n max-width: 1400px;\n margin: 0 auto;\n padding: 3.2rem;\n\n .search-container {\n max-width: 500px;\n }\n }\n}\n","import { Component, Host, Element, Prop, h, Event, EventEmitter } from '@stencil/core';\n\ninterface SearchEventDetail {\n query: string;\n timestamp: number;\n}\n\n@Component({\n tag: 'pn-search',\n styleUrl: 'pn-search.scss',\n})\nexport class PNSearch {\n @Element() hostElement!: HTMLElement;\n\n @Prop() componentAriaLabel!: string;\n @Prop() heading!: string;\n @Prop() pnIllustrationSvg?: string;\n @Prop() imageUrl?: string;\n @Prop() imageAltText?: string;\n @Prop() searchPlaceholder?: string;\n @Prop() searchButtonText?: string;\n @Prop() searchButtonLabel?: string;\n @Prop() searchUrl?: string;\n @Prop() primaryButtonText?: string;\n @Prop() primaryButtonUrl?: string;\n @Prop() primaryButtonIconSvg?: string;\n @Prop() secondaryButtonText?: string;\n @Prop() secondaryButtonUrl?: string;\n @Prop() searchDescriptionAria?: string;\n @Prop() ctaActionsLabel?: string;\n @Prop() searchType: 'shipments' | 'episearch';\n\n @Event() pnSearch!: EventEmitter<SearchEventDetail>;\n\n private doSearch = (e: CustomEvent): void => {\n if (!this.searchUrl) {\n console.warn('Search URL is not defined');\n return;\n }\n\n const searchDetail: SearchEventDetail = {\n query: e.detail,\n timestamp: Date.now(),\n };\n\n this.pnSearch.emit(searchDetail);\n };\n\n render() {\n const hasButtons = this.primaryButtonUrl || this.secondaryButtonUrl;\n\n return (\n <Host>\n <div class=\"pn-search\" role=\"search\" aria-label={this.componentAriaLabel}>\n <div class=\"graphics-container\" aria-hidden={!this.imageAltText}>\n {!this.pnIllustrationSvg && this.imageUrl && <img class=\"graphics\" src={this.imageUrl} alt={this.imageAltText || ''} loading=\"lazy\" />}\n {this.pnIllustrationSvg && <pn-illustration class=\"illustration\" illustration={this.pnIllustrationSvg} role=\"presentation\" />}\n </div>\n\n <div class=\"main\">\n <h2 class=\"heading\" id=\"search-section-heading\">\n {this.heading}\n </h2>\n\n <div class=\"search-container\" aria-labelledby=\"search-section-heading\">\n <pn-marketweb-search\n class=\"search-component\"\n label={this.searchButtonLabel}\n name=\"search\"\n inputid=\"search-field\"\n autocomplete=\"off\"\n placeholder={this.searchPlaceholder}\n button={this.searchButtonText}\n disabled={false}\n loading={false}\n light={false}\n list={null}\n onSearch={this.doSearch}\n data-search-url={this.searchUrl}\n aria-describedby=\"search-description\"\n />\n {this.searchDescriptionAria && (\n <div id=\"search-description\" class=\"sr-only\">\n {this.searchDescriptionAria}\n </div>\n )}\n </div>\n\n {hasButtons && (\n <div class=\"cta\" role=\"group\" aria-label={this.ctaActionsLabel}>\n {this.primaryButtonUrl && (\n <pn-button\n appearance=\"light\"\n variant=\"outlined\"\n small={true}\n icon={this.primaryButtonIconSvg}\n left-icon={Boolean(this.primaryButtonIconSvg)}\n class=\"btn-mw\"\n href={this.primaryButtonUrl}\n data-primary\n >\n {this.primaryButtonText}\n </pn-button>\n )}\n {this.secondaryButtonUrl && (\n <a href={this.secondaryButtonUrl} class=\"btn-mw\" data-secondary role=\"button\">\n {this.secondaryButtonText}\n </a>\n )}\n </div>\n )}\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"gEAAA,MAAMA,EAAc,ylEACpB,MAAAC,EAAeD,E,MCUFE,EAAQ,M,8mBAqBVC,SAEDC,SAAYC,IAClB,IAAKC,KAAKC,UAAW,CACnBC,QAAQC,KAAK,6BACb,M,CAGF,MAAMC,EAAkC,CACtCC,MAAON,EAAEO,OACTC,UAAWC,KAAKC,OAGlBT,KAAKH,SAASa,KAAKN,EAAa,EAGlC,MAAAO,GACE,MAAMC,EAAaZ,KAAKa,kBAAoBb,KAAKc,mBAEjD,OACEC,EAACC,EAAI,CAAAC,IAAA,4CACHF,EAAA,OAAAE,IAAA,2CAAKC,MAAM,YAAYC,KAAK,SAAQ,aAAanB,KAAKoB,oBACpDL,EAAA,OAAAE,IAAA,2CAAKC,MAAM,qBAAoB,eAAelB,KAAKqB,eAC/CrB,KAAKsB,mBAAqBtB,KAAKuB,UAAYR,EAAA,OAAAE,IAAA,2CAAKC,MAAM,WAAWM,IAAKxB,KAAKuB,SAAUE,IAAKzB,KAAKqB,cAAgB,GAAIK,QAAQ,SAC5H1B,KAAKsB,mBAAqBP,EAAA,mBAAAE,IAAA,2CAAiBC,MAAM,eAAeS,aAAc3B,KAAKsB,kBAAmBH,KAAK,kBAG9GJ,EAAA,OAAAE,IAAA,2CAAKC,MAAM,QACTH,EAAA,MAAAE,IAAA,2CAAIC,MAAM,UAAUU,GAAG,0BACpB5B,KAAK6B,SAGRd,EAAA,OAAAE,IAAA,2CAAKC,MAAM,mBAAkB,kBAAiB,0BAC5CH,EAAA,uBAAAE,IAAA,2CACEC,MAAM,mBACNY,MAAO9B,KAAK+B,kBACZC,KAAK,SACLC,QAAQ,eACRC,aAAa,MACbC,YAAanC,KAAKoC,kBAClBC,OAAQrC,KAAKsC,iBACbC,SAAU,MACVb,QAAS,MACTc,MAAO,MACPC,KAAM,KACNC,SAAU1C,KAAKF,SAAQ,kBACNE,KAAKC,UAAS,mBACd,uBAElBD,KAAK2C,uBACJ5B,EAAA,OAAAE,IAAA,2CAAKW,GAAG,qBAAqBV,MAAM,WAChClB,KAAK2C,wBAKX/B,GACCG,EAAA,OAAAE,IAAA,2CAAKC,MAAM,MAAMC,KAAK,QAAO,aAAanB,KAAK4C,iBAC5C5C,KAAKa,kBACJE,EAAA,aAAAE,IAAA,2CACE4B,WAAW,QACXC,QAAQ,WACRC,MAAO,KACPC,KAAMhD,KAAKiD,qBAAoB,YACpBC,QAAQlD,KAAKiD,sBACxB/B,MAAM,SACNiC,KAAMnD,KAAKa,iBAAgB,qBAG1Bb,KAAKoD,mBAGTpD,KAAKc,oBACJC,EAAA,KAAAE,IAAA,2CAAGkC,KAAMnD,KAAKc,mBAAoBI,MAAM,SAAQ,sBAAgBC,KAAK,UAClEnB,KAAKqD,wB","ignoreList":[]}
@@ -1,2 +0,0 @@
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>';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:"b6d8b3fbaa4aa9fff3b73f5551ecc1f3d55d4e6c",class:this.getMessageClass()},t("div",{key:"196dfe9d041e5aa3c0f22c74cf15bdf7c99db8b1",class:`message-container ${a}`},this.getIcon()&&t("span",{key:"333d599b29fbed5b5483cbf23860cdf91cb9c645",class:"category"},t("pn-icon",{key:"922332436e444a7bd95aaf985ad7e15202c7b5a1",icon:this.getIcon(),color:this.category==="User"?"blue700":"blue700","aria-hidden":"true",role:"presentation"})),t("span",{key:"d5c36c5445ec13b4713a133db6c9c7e75c5cd717",class:`message ${e}`},t("slot",{key:"b49928b152d6d7e07f80abc3e86beb53b7f27441"}))))}};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-2fd60147.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["icon","faq","pnChatMessageCss","PnChatMessageStyle0","PnChatMessage","robotIcon","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 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\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.category === 'User' ? 'blue700' : '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":[]}
@@ -1,2 +0,0 @@
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"Text":h=await this.sendTextMessage(t,s,e,a);break;case"Choice":h=await this.sendChoiceMessage(t,s,e,a);break;default:h=await this.sendTextMessage(t,s,e,a)}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-a079c496.js.map
@@ -1 +0,0 @@
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","sendTextMessage","sendChoiceMessage","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 'Text':\n newLatestMessageId = await this.sendTextMessage(content, itemId, chatId, lastMessageId);\n break;\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 }\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":"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","ignoreList":[]}
@@ -1,2 +0,0 @@
1
- import{r as e,h as i,d as t}from"./p-82546a44.js";import{H as n}from"./p-0b920554.js";const a="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}}:root{--usp-preamble-margin:clamp(1.5rem, 3vw, 1.8rem)}.pn-usp-simple{background:linear-gradient(90deg, #ffffff 0%, #effbff 17.44%);color:#2d2013;display:flex;flex-direction:column-reverse;max-width:100%;padding:clamp(2rem, 5vw, 5rem)}.pn-usp-simple .heading{font-size:clamp(2rem, 4vw, 3rem);font-weight:700;margin-bottom:1rem}.pn-usp-simple .preamble{font-size:clamp(1rem, 4vw, 1.6rem);margin-top:var(--usp-preamble-margin);margin-bottom:var(--usp-preamble-margin)}.pn-usp-simple .cta{display:flex;font-size:clamp(1rem, 4vw, 1.6rem);flex-direction:column;gap:clamp(1rem, 4vw, 1.2rem);padding:0 6rem}.pn-usp-simple .image-container{display:flex;align-items:center;justify-content:center;margin-bottom:2rem}.pn-usp-simple .image-container .graphics{--pn-width:12rem !important;--pn-height:12rem !important}.pn-usp-simple .image-container .image{border-radius:50%}@media (min-width: 768px){.pn-usp-simple{flex-direction:row;align-items:center}.pn-usp-simple .content{max-width:60%}.pn-usp-simple .cta{flex-direction:row;gap:clamp(2rem, 3vw, 3rem);padding:0}.pn-usp-simple .image-container{flex:clamp(15rem, 3vw, 20rem);margin-bottom:0}.pn-usp-simple .image-container .graphics{--pn-width:15rem;--pn-height:15rem}}@media (min-width: 1200px){.pn-usp-simple{max-width:1140px;margin:0 auto}.pn-usp-simple .content{max-width:50%}.pn-usp-simple .image-container .graphics{--pn-width:18rem;--pn-height:18rem}}@media (min-width: 1640px){.pn-usp-simple{max-width:1400px}.pn-usp-simple .image-container .graphics{--pn-width:20rem;--pn-height:20rem}}";const s=a;const p=class{constructor(i){e(this,i);this.heading=undefined;this.headingLevel="h2";this.preamble=undefined;this.ctaButtonsLabel=undefined;this.primaryButtonText=undefined;this.primaryButtonUrl=undefined;this.primaryButtonIconSvg=undefined;this.secondaryButtonText=undefined;this.secondaryButtonUrl=undefined;this.pnIllustrationSvg=undefined;this.imageUrl=undefined;this.imageAltText=undefined}get hasPrimaryButton(){return Boolean(this.primaryButtonText&&this.primaryButtonUrl)}get hasSecondaryButton(){return Boolean(this.secondaryButtonText&&this.secondaryButtonUrl)}renderButton(e,t){const n=t?"primary":"secondary";return i("pn-button",{icon:e.iconSvg,"left-icon":Boolean(e.iconSvg),href:e.url,class:"btn","data-button-type":n,appearance:t?"default":"light"},e.text)}render(){const e=this.hasPrimaryButton||this.hasSecondaryButton;const a="usp-heading";return i(t,{key:"86a81876d75377462d4a94cc9ca0d8a7b8150791"},i("div",{key:"59568c012efdb309dc7e9b3ed64a0a344ab28360",class:"pn-usp-simple",role:"region","aria-labelledby":this.heading?a:undefined},i("div",{key:"54685035dc6a2eba2130693961b87fe315023f27",class:"content"},this.heading&&i(n,{key:"1f0b464103fdcbf3b18ab6adf4f82b454e5c81eb",id:a,level:this.headingLevel,cssClass:"heading"},this.heading),this.preamble&&i("div",{key:"d143480b02ecb45130ac2a825e392dbe7c0f3128",class:"preamble"},this.preamble),e&&i("div",{key:"f618b4b041cf79eac3b67dd6d3c26697e29a72c6",class:"cta",role:"group","aria-label":this.ctaButtonsLabel},this.hasPrimaryButton&&this.renderButton({text:this.primaryButtonText,url:this.primaryButtonUrl,iconSvg:this.primaryButtonIconSvg},true),this.hasSecondaryButton&&this.renderButton({text:this.secondaryButtonText,url:this.secondaryButtonUrl},false))),i("div",{key:"cb22f2bd663e90bd009fac12d4662c729bffdd68",class:"image-container","aria-hidden":!this.imageAltText},this.imageUrl&&i("img",{key:"f76f0a6cbdb0cdc8847f062410f7c20c847d8a47",class:"image graphics",src:this.imageUrl,alt:this.imageAltText||"",loading:"lazy"}),!this.imageUrl&&this.pnIllustrationSvg&&i("pn-illustration",{key:"5653434436d33c04820f3ee201fd1e2853008e1b",class:"illustration graphics",illustration:this.pnIllustrationSvg,role:"presentation"}))))}};p.style=s;export{p as pn_usp_simple};
2
- //# sourceMappingURL=p-e733f44f.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["pnUspSimpleCss","PnUspSimpleStyle0","PnUspSimple","hasPrimaryButton","Boolean","this","primaryButtonText","primaryButtonUrl","hasSecondaryButton","secondaryButtonText","secondaryButtonUrl","renderButton","props","isPrimary","buttonType","h","icon","iconSvg","href","url","class","appearance","text","render","hasButtons","headingId","Host","key","role","heading","undefined","HeadingTag","id","level","headingLevel","cssClass","preamble","ctaButtonsLabel","primaryButtonIconSvg","imageAltText","imageUrl","src","alt","loading","pnIllustrationSvg","illustration"],"sources":["src/components/widgets/pn-usp-simple/pn-usp-simple.scss?tag=pn-usp-simple","src/components/widgets/pn-usp-simple/pn-usp-simple.tsx"],"sourcesContent":["@import '../../../globals/main.scss';\n\n:root {\n --usp-preamble-margin: clamp(1.5rem, 3vw, 1.8rem);\n}\n\n.pn-usp-simple {\n background: linear-gradient(90deg, $white 0%, $blue25 17.44%);\n color: $gray900;\n display: flex;\n flex-direction: column-reverse;\n max-width: 100%;\n padding: clamp(2rem, 5vw, 5rem);\n\n .heading {\n font-size: clamp(2rem, 4vw, 3rem);\n font-weight: 700;\n margin-bottom: 1rem;\n }\n\n .preamble {\n font-size: clamp(1rem, 4vw, 1.6rem);\n margin-top: var(--usp-preamble-margin);\n margin-bottom: var(--usp-preamble-margin);\n }\n\n .cta {\n display: flex;\n font-size: clamp(1rem, 4vw, 1.6rem);\n flex-direction: column;\n gap: clamp(1rem, 4vw, 1.2rem);\n padding: 0 6rem;\n }\n\n .image-container {\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 2rem;\n\n .graphics {\n --pn-width: #{$graphicsWidth} !important;\n --pn-height: #{$graphicsWidth} !important;\n }\n\n .image {\n border-radius: 50%;\n }\n }\n}\n\n@media (min-width: 768px) {\n .pn-usp-simple {\n flex-direction: row;\n align-items: center;\n\n .content {\n max-width: 60%;\n }\n\n .cta {\n flex-direction: row;\n gap: clamp(2rem, 3vw, 3rem);\n padding: 0;\n }\n\n .image-container {\n flex: clamp(15rem, 3vw, 20rem);\n margin-bottom: 0;\n\n .graphics {\n --pn-width: #{$graphicsWidthMd};\n --pn-height: #{$graphicsWidthMd};\n }\n }\n }\n}\n\n@media (min-width: 992px) {\n}\n\n@media (min-width: 1200px) {\n .pn-usp-simple {\n max-width: 1140px;\n margin: 0 auto;\n\n .content {\n max-width: 50%;\n }\n\n .image-container {\n .graphics {\n --pn-width: #{$graphicsWidthXl};\n --pn-height: #{$graphicsWidthXl};\n }\n }\n }\n}\n\n@media (min-width: 1640px) {\n .pn-usp-simple {\n max-width: 1400px;\n\n .image-container {\n .graphics {\n --pn-width: #{$graphicsWidthXxl};\n --pn-height: #{$graphicsWidthXxl};\n }\n }\n }\n}\n","import { HeadingLevel } from '@/components';\nimport { HeadingTag } from '@/globals/HeadingTag';\nimport { Component, Host, Prop, h } from '@stencil/core';\n\ninterface ButtonProps {\n text: string;\n url: string;\n iconSvg?: string;\n}\n\n@Component({\n tag: 'pn-usp-simple',\n styleUrl: 'pn-usp-simple.scss',\n})\nexport class PnUspSimple {\n @Prop() heading?: string;\n @Prop() headingLevel: HeadingLevel = 'h2';\n @Prop() preamble?: string;\n @Prop() ctaButtonsLabel?: string;\n @Prop() primaryButtonText?: string;\n @Prop() primaryButtonUrl?: string;\n @Prop() primaryButtonIconSvg?: string;\n @Prop() secondaryButtonText?: string;\n @Prop() secondaryButtonUrl?: string;\n @Prop() pnIllustrationSvg?: string;\n @Prop() imageUrl?: string;\n @Prop() imageAltText?: string;\n\n private get hasPrimaryButton(): boolean {\n return Boolean(this.primaryButtonText && this.primaryButtonUrl);\n }\n\n private get hasSecondaryButton(): boolean {\n return Boolean(this.secondaryButtonText && this.secondaryButtonUrl);\n }\n\n private renderButton(props: ButtonProps, isPrimary: boolean) {\n const buttonType = isPrimary ? 'primary' : 'secondary';\n return (\n <pn-button\n icon={props.iconSvg}\n left-icon={Boolean(props.iconSvg)}\n href={props.url}\n class=\"btn\"\n data-button-type={buttonType}\n appearance={isPrimary ? 'default' : 'light'}\n >\n {props.text}\n </pn-button>\n );\n }\n\n render() {\n const hasButtons = this.hasPrimaryButton || this.hasSecondaryButton;\n const headingId = 'usp-heading';\n\n return (\n <Host>\n <div class=\"pn-usp-simple\" role=\"region\" aria-labelledby={this.heading ? headingId : undefined}>\n <div class=\"content\">\n {this.heading && (\n <HeadingTag id={headingId} level={this.headingLevel} cssClass=\"heading\">\n {this.heading}\n </HeadingTag>\n )}\n\n {this.preamble && (\n <div class=\"preamble\">\n {this.preamble}\n </div>\n )}\n\n {hasButtons && (\n <div class=\"cta\" role=\"group\" aria-label={this.ctaButtonsLabel}>\n {this.hasPrimaryButton &&\n this.renderButton(\n {\n text: this.primaryButtonText!,\n url: this.primaryButtonUrl!,\n iconSvg: this.primaryButtonIconSvg,\n },\n true,\n )}\n {this.hasSecondaryButton &&\n this.renderButton(\n {\n text: this.secondaryButtonText!,\n url: this.secondaryButtonUrl!,\n },\n false,\n )}\n </div>\n )}\n </div>\n <div class=\"image-container\" aria-hidden={!this.imageAltText}>\n {this.imageUrl && <img class=\"image graphics\" src={this.imageUrl} alt={this.imageAltText || ''} loading=\"lazy\" />}\n {!this.imageUrl && this.pnIllustrationSvg && <pn-illustration class=\"illustration graphics\" illustration={this.pnIllustrationSvg} role=\"presentation\" />}\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"sFAAA,MAAMA,EAAiB,45DACvB,MAAAC,EAAeD,E,MCaFE,EAAW,M,kEAEe,K,sTAYrC,oBAAYC,GACV,OAAOC,QAAQC,KAAKC,mBAAqBD,KAAKE,iB,CAGhD,sBAAYC,GACV,OAAOJ,QAAQC,KAAKI,qBAAuBJ,KAAKK,mB,CAG1C,YAAAC,CAAaC,EAAoBC,GACvC,MAAMC,EAAaD,EAAY,UAAY,YAC3C,OACEE,EAAA,aACEC,KAAMJ,EAAMK,QAAO,YACRb,QAAQQ,EAAMK,SACzBC,KAAMN,EAAMO,IACZC,MAAM,MAAK,mBACON,EAClBO,WAAYR,EAAY,UAAY,SAEnCD,EAAMU,K,CAKb,MAAAC,GACE,MAAMC,EAAanB,KAAKF,kBAAoBE,KAAKG,mBACjD,MAAMiB,EAAY,cAElB,OACEV,EAACW,EAAI,CAAAC,IAAA,4CACHZ,EAAA,OAAAY,IAAA,2CAAKP,MAAM,gBAAgBQ,KAAK,SAAQ,kBAAkBvB,KAAKwB,QAAUJ,EAAYK,WACnFf,EAAA,OAAAY,IAAA,2CAAKP,MAAM,WACRf,KAAKwB,SACJd,EAACgB,EAAU,CAAAJ,IAAA,2CAACK,GAAIP,EAAWQ,MAAO5B,KAAK6B,aAAcC,SAAS,WAC3D9B,KAAKwB,SAITxB,KAAK+B,UACJrB,EAAA,OAAAY,IAAA,2CAAKP,MAAM,YACRf,KAAK+B,UAITZ,GACCT,EAAA,OAAAY,IAAA,2CAAKP,MAAM,MAAMQ,KAAK,QAAO,aAAavB,KAAKgC,iBAC5ChC,KAAKF,kBACJE,KAAKM,aACH,CACEW,KAAMjB,KAAKC,kBACXa,IAAKd,KAAKE,iBACVU,QAASZ,KAAKiC,sBAEhB,MAEHjC,KAAKG,oBACJH,KAAKM,aACH,CACEW,KAAMjB,KAAKI,oBACXU,IAAKd,KAAKK,oBAEZ,SAKVK,EAAA,OAAAY,IAAA,2CAAKP,MAAM,kBAAiB,eAAef,KAAKkC,cAC7ClC,KAAKmC,UAAYzB,EAAA,OAAAY,IAAA,2CAAKP,MAAM,iBAAiBqB,IAAKpC,KAAKmC,SAAUE,IAAKrC,KAAKkC,cAAgB,GAAII,QAAQ,UACtGtC,KAAKmC,UAAYnC,KAAKuC,mBAAqB7B,EAAA,mBAAAY,IAAA,2CAAiBP,MAAM,wBAAwByB,aAAcxC,KAAKuC,kBAAmBhB,KAAK,mB","ignoreList":[]}
@@ -1,29 +0,0 @@
1
- import { EventEmitter } from '../../../stencil-public-runtime';
2
- interface SearchEventDetail {
3
- query: string;
4
- timestamp: number;
5
- }
6
- export declare class PNSearch {
7
- hostElement: HTMLElement;
8
- componentAriaLabel: string;
9
- heading: string;
10
- pnIllustrationSvg?: string;
11
- imageUrl?: string;
12
- imageAltText?: string;
13
- searchPlaceholder?: string;
14
- searchButtonText?: string;
15
- searchButtonLabel?: string;
16
- searchUrl?: string;
17
- primaryButtonText?: string;
18
- primaryButtonUrl?: string;
19
- primaryButtonIconSvg?: string;
20
- secondaryButtonText?: string;
21
- secondaryButtonUrl?: string;
22
- searchDescriptionAria?: string;
23
- ctaActionsLabel?: string;
24
- searchType: 'shipments' | 'episearch';
25
- pnSearch: EventEmitter<SearchEventDetail>;
26
- private doSearch;
27
- render(): any;
28
- }
29
- export {};
@@ -1,7 +0,0 @@
1
- import type { Meta, StoryObj } from '@storybook/web-components';
2
- declare const meta: Meta<HTMLPnSearchElement>;
3
- type Story = StoryObj<HTMLPnSearchElement>;
4
- export default meta;
5
- export declare const Search: Story;
6
- export declare const SearchWithImageUrl: Story;
7
- export declare const SearchWithIllustration: Story;
@@ -1,19 +0,0 @@
1
- import { HeadingLevel } from "../../../components";
2
- export declare class PnUspSimple {
3
- heading?: string;
4
- headingLevel: HeadingLevel;
5
- preamble?: string;
6
- ctaButtonsLabel?: string;
7
- primaryButtonText?: string;
8
- primaryButtonUrl?: string;
9
- primaryButtonIconSvg?: string;
10
- secondaryButtonText?: string;
11
- secondaryButtonUrl?: string;
12
- pnIllustrationSvg?: string;
13
- imageUrl?: string;
14
- imageAltText?: string;
15
- private get hasPrimaryButton();
16
- private get hasSecondaryButton();
17
- private renderButton;
18
- render(): any;
19
- }
@@ -1,7 +0,0 @@
1
- import type { Meta, StoryObj } from '@storybook/web-components';
2
- declare const meta: Meta<HTMLPnUspSimpleElement>;
3
- type Story = StoryObj<HTMLPnUspSimpleElement>;
4
- export default meta;
5
- export declare const UspSimple: Story;
6
- export declare const UspSimpleIllustration: Story;
7
- export declare const UspSimpleImage: Story;