@geotrekce/geotrek-rando-widget 0.4.1 → 0.4.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 (156) hide show
  1. package/dist/cjs/geotrek-rando-widget.cjs.js +1 -1
  2. package/dist/cjs/geotrek-rando-widget.cjs.js.br +0 -0
  3. package/dist/cjs/geotrek-rando-widget.cjs.js.gz +0 -0
  4. package/dist/cjs/grw-app.cjs.entry.js +7 -5
  5. package/dist/cjs/grw-app.cjs.entry.js.br +0 -0
  6. package/dist/cjs/grw-app.cjs.entry.js.gz +0 -0
  7. package/dist/cjs/grw-app.cjs.entry.js.map +1 -1
  8. package/dist/cjs/{grw-filters_11.cjs.entry.js → grw-filters_12.cjs.entry.js} +56 -5
  9. package/dist/cjs/grw-filters_12.cjs.entry.js.br +0 -0
  10. package/dist/cjs/{grw-filters_11.cjs.entry.js.gz → grw-filters_12.cjs.entry.js.gz} +0 -0
  11. package/dist/cjs/grw-filters_12.cjs.entry.js.map +1 -0
  12. package/dist/cjs/grw-information-desk_6.cjs.entry.js +1 -1
  13. package/dist/cjs/grw-information-desk_6.cjs.entry.js.br +0 -0
  14. package/dist/cjs/grw-information-desk_6.cjs.entry.js.gz +0 -0
  15. package/dist/cjs/grw-information-desk_6.cjs.entry.js.map +1 -1
  16. package/dist/cjs/loader.cjs.js +1 -1
  17. package/dist/cjs/loader.cjs.js.br +0 -0
  18. package/dist/cjs/loader.cjs.js.gz +0 -0
  19. package/dist/collection/components/grw-app/grw-app.css +6 -5
  20. package/dist/collection/components/grw-app/grw-app.css.br +0 -0
  21. package/dist/collection/components/grw-app/grw-app.css.gz +0 -0
  22. package/dist/collection/components/grw-app/grw-app.js +6 -4
  23. package/dist/collection/components/grw-app/grw-app.js.br +0 -0
  24. package/dist/collection/components/grw-app/grw-app.js.gz +0 -0
  25. package/dist/collection/components/grw-app/grw-app.js.map +1 -1
  26. package/dist/collection/components/grw-touristic-content/grw-touristic-content-card.js +1 -1
  27. package/dist/collection/components/grw-touristic-content/grw-touristic-content-card.js.br +0 -0
  28. package/dist/collection/components/grw-touristic-content/grw-touristic-content-card.js.gz +0 -0
  29. package/dist/collection/components/grw-touristic-content/grw-touristic-content-card.js.map +1 -1
  30. package/dist/collection/store/grw-touristic-content-provider.js +1 -1
  31. package/dist/collection/store/grw-touristic-content-provider.js.br +0 -0
  32. package/dist/collection/store/grw-touristic-content-provider.js.gz +0 -0
  33. package/dist/collection/store/grw-touristic-content-provider.js.map +1 -1
  34. package/dist/collection/store/grw-touristic-contents-provider.js +1 -2
  35. package/dist/collection/store/grw-touristic-contents-provider.js.br +0 -0
  36. package/dist/collection/store/grw-touristic-contents-provider.js.gz +0 -0
  37. package/dist/collection/store/grw-touristic-contents-provider.js.map +1 -1
  38. package/dist/collection/store/grw-treks-provider.js +1 -2
  39. package/dist/collection/store/grw-treks-provider.js.br +0 -0
  40. package/dist/collection/store/grw-treks-provider.js.gz +0 -0
  41. package/dist/collection/store/grw-treks-provider.js.map +1 -1
  42. package/dist/esm/geotrek-rando-widget.js +1 -1
  43. package/dist/esm/geotrek-rando-widget.js.br +0 -0
  44. package/dist/esm/geotrek-rando-widget.js.gz +0 -0
  45. package/dist/esm/grw-app.entry.js +7 -5
  46. package/dist/esm/grw-app.entry.js.br +0 -0
  47. package/dist/esm/grw-app.entry.js.gz +0 -0
  48. package/dist/esm/grw-app.entry.js.map +1 -1
  49. package/dist/esm/{grw-filters_11.entry.js → grw-filters_12.entry.js} +56 -6
  50. package/dist/esm/grw-filters_12.entry.js.br +0 -0
  51. package/dist/esm/{grw-filters_11.entry.js.gz → grw-filters_12.entry.js.gz} +0 -0
  52. package/dist/esm/grw-filters_12.entry.js.map +1 -0
  53. package/dist/esm/grw-information-desk_6.entry.js +1 -1
  54. package/dist/esm/grw-information-desk_6.entry.js.br +0 -0
  55. package/dist/esm/grw-information-desk_6.entry.js.gz +0 -0
  56. package/dist/esm/grw-information-desk_6.entry.js.map +1 -1
  57. package/dist/esm/loader.js +1 -1
  58. package/dist/esm/loader.js.br +0 -0
  59. package/dist/esm/loader.js.gz +0 -0
  60. package/dist/esm-es5/geotrek-rando-widget.js +1 -1
  61. package/dist/esm-es5/geotrek-rando-widget.js.br +0 -0
  62. package/dist/esm-es5/geotrek-rando-widget.js.gz +0 -0
  63. package/dist/esm-es5/geotrek-rando-widget.js.map +1 -1
  64. package/dist/esm-es5/grw-app.entry.js +1 -1
  65. package/dist/esm-es5/grw-app.entry.js.br +0 -0
  66. package/dist/esm-es5/grw-app.entry.js.gz +0 -0
  67. package/dist/esm-es5/grw-app.entry.js.map +1 -1
  68. package/dist/esm-es5/{grw-filters_11.entry.js → grw-filters_12.entry.js} +2 -2
  69. package/dist/esm-es5/grw-filters_12.entry.js.br +0 -0
  70. package/dist/esm-es5/{grw-filters_11.entry.js.gz → grw-filters_12.entry.js.gz} +0 -0
  71. package/dist/esm-es5/grw-filters_12.entry.js.map +1 -0
  72. package/dist/esm-es5/grw-information-desk_6.entry.js +1 -1
  73. package/dist/esm-es5/grw-information-desk_6.entry.js.br +0 -0
  74. package/dist/esm-es5/grw-information-desk_6.entry.js.gz +0 -0
  75. package/dist/esm-es5/grw-information-desk_6.entry.js.map +1 -1
  76. package/dist/esm-es5/loader.js +1 -1
  77. package/dist/esm-es5/loader.js.br +0 -0
  78. package/dist/esm-es5/loader.js.gz +0 -0
  79. package/dist/esm-es5/loader.js.map +1 -1
  80. package/dist/geotrek-rando-widget/geotrek-rando-widget.esm.js +1 -1
  81. package/dist/geotrek-rando-widget/geotrek-rando-widget.esm.js.br +0 -0
  82. package/dist/geotrek-rando-widget/geotrek-rando-widget.esm.js.gz +0 -0
  83. package/dist/geotrek-rando-widget/geotrek-rando-widget.esm.js.map +1 -1
  84. package/dist/geotrek-rando-widget/p-3c32c109.system.entry.js +2 -0
  85. package/dist/geotrek-rando-widget/p-3c32c109.system.entry.js.br +0 -0
  86. package/dist/geotrek-rando-widget/p-3c32c109.system.entry.js.gz +0 -0
  87. package/dist/geotrek-rando-widget/p-3c32c109.system.entry.js.map +1 -0
  88. package/dist/geotrek-rando-widget/{p-8d2cad32.system.entry.js → p-638b7451.system.entry.js} +2 -2
  89. package/dist/geotrek-rando-widget/p-638b7451.system.entry.js.br +0 -0
  90. package/dist/geotrek-rando-widget/{p-8d2cad32.system.entry.js.gz → p-638b7451.system.entry.js.gz} +0 -0
  91. package/dist/geotrek-rando-widget/p-638b7451.system.entry.js.map +1 -0
  92. package/dist/geotrek-rando-widget/{p-ccf92c36.entry.js → p-689557e0.entry.js} +2 -2
  93. package/dist/geotrek-rando-widget/p-689557e0.entry.js.br +0 -0
  94. package/dist/geotrek-rando-widget/p-689557e0.entry.js.gz +0 -0
  95. package/dist/geotrek-rando-widget/p-689557e0.entry.js.map +1 -0
  96. package/dist/geotrek-rando-widget/{p-45ef5fe2.entry.js → p-bcd87b5c.entry.js} +2 -2
  97. package/dist/geotrek-rando-widget/p-bcd87b5c.entry.js.br +0 -0
  98. package/dist/geotrek-rando-widget/{p-45ef5fe2.entry.js.gz → p-bcd87b5c.entry.js.gz} +0 -0
  99. package/dist/geotrek-rando-widget/p-bcd87b5c.entry.js.map +1 -0
  100. package/dist/geotrek-rando-widget/p-cc8a7df2.system.js +1 -1
  101. package/dist/geotrek-rando-widget/p-cc8a7df2.system.js.br +0 -0
  102. package/dist/geotrek-rando-widget/p-cc8a7df2.system.js.gz +0 -0
  103. package/dist/geotrek-rando-widget/p-cc8a7df2.system.js.map +1 -1
  104. package/dist/geotrek-rando-widget/p-d5584258.entry.js +2 -0
  105. package/dist/geotrek-rando-widget/p-d5584258.entry.js.br +0 -0
  106. package/dist/geotrek-rando-widget/p-d5584258.entry.js.gz +0 -0
  107. package/dist/geotrek-rando-widget/p-d5584258.entry.js.map +1 -0
  108. package/dist/geotrek-rando-widget/{p-a2afc234.system.entry.js → p-feeb03a9.system.entry.js} +2 -2
  109. package/dist/geotrek-rando-widget/p-feeb03a9.system.entry.js.br +0 -0
  110. package/dist/geotrek-rando-widget/{p-a2afc234.system.entry.js.gz → p-feeb03a9.system.entry.js.gz} +0 -0
  111. package/dist/geotrek-rando-widget/p-feeb03a9.system.entry.js.map +1 -0
  112. package/dist/types/components.d.ts +19 -19
  113. package/package.json +1 -1
  114. package/dist/cjs/grw-filters_11.cjs.entry.js.br +0 -0
  115. package/dist/cjs/grw-filters_11.cjs.entry.js.map +0 -1
  116. package/dist/cjs/grw-touristic-content-card-provider.cjs.entry.js +0 -62
  117. package/dist/cjs/grw-touristic-content-card-provider.cjs.entry.js.br +0 -0
  118. package/dist/cjs/grw-touristic-content-card-provider.cjs.entry.js.gz +0 -0
  119. package/dist/cjs/grw-touristic-content-card-provider.cjs.entry.js.map +0 -1
  120. package/dist/esm/grw-filters_11.entry.js.br +0 -0
  121. package/dist/esm/grw-filters_11.entry.js.map +0 -1
  122. package/dist/esm/grw-touristic-content-card-provider.entry.js +0 -58
  123. package/dist/esm/grw-touristic-content-card-provider.entry.js.br +0 -0
  124. package/dist/esm/grw-touristic-content-card-provider.entry.js.gz +0 -0
  125. package/dist/esm/grw-touristic-content-card-provider.entry.js.map +0 -1
  126. package/dist/esm-es5/grw-filters_11.entry.js.br +0 -0
  127. package/dist/esm-es5/grw-filters_11.entry.js.map +0 -1
  128. package/dist/esm-es5/grw-touristic-content-card-provider.entry.js +0 -2
  129. package/dist/esm-es5/grw-touristic-content-card-provider.entry.js.br +0 -0
  130. package/dist/esm-es5/grw-touristic-content-card-provider.entry.js.gz +0 -0
  131. package/dist/esm-es5/grw-touristic-content-card-provider.entry.js.map +0 -1
  132. package/dist/geotrek-rando-widget/p-25f721ea.entry.js +0 -2
  133. package/dist/geotrek-rando-widget/p-25f721ea.entry.js.br +0 -0
  134. package/dist/geotrek-rando-widget/p-25f721ea.entry.js.gz +0 -0
  135. package/dist/geotrek-rando-widget/p-25f721ea.entry.js.map +0 -1
  136. package/dist/geotrek-rando-widget/p-45ef5fe2.entry.js.br +0 -0
  137. package/dist/geotrek-rando-widget/p-45ef5fe2.entry.js.map +0 -1
  138. package/dist/geotrek-rando-widget/p-4c42d37c.system.entry.js +0 -2
  139. package/dist/geotrek-rando-widget/p-4c42d37c.system.entry.js.br +0 -0
  140. package/dist/geotrek-rando-widget/p-4c42d37c.system.entry.js.gz +0 -0
  141. package/dist/geotrek-rando-widget/p-4c42d37c.system.entry.js.map +0 -1
  142. package/dist/geotrek-rando-widget/p-6aec743d.system.entry.js +0 -2
  143. package/dist/geotrek-rando-widget/p-6aec743d.system.entry.js.br +0 -0
  144. package/dist/geotrek-rando-widget/p-6aec743d.system.entry.js.gz +0 -0
  145. package/dist/geotrek-rando-widget/p-6aec743d.system.entry.js.map +0 -1
  146. package/dist/geotrek-rando-widget/p-779274fa.entry.js +0 -2
  147. package/dist/geotrek-rando-widget/p-779274fa.entry.js.br +0 -0
  148. package/dist/geotrek-rando-widget/p-779274fa.entry.js.gz +0 -0
  149. package/dist/geotrek-rando-widget/p-779274fa.entry.js.map +0 -1
  150. package/dist/geotrek-rando-widget/p-8d2cad32.system.entry.js.br +0 -0
  151. package/dist/geotrek-rando-widget/p-8d2cad32.system.entry.js.map +0 -1
  152. package/dist/geotrek-rando-widget/p-a2afc234.system.entry.js.br +0 -0
  153. package/dist/geotrek-rando-widget/p-a2afc234.system.entry.js.map +0 -1
  154. package/dist/geotrek-rando-widget/p-ccf92c36.entry.js.br +0 -0
  155. package/dist/geotrek-rando-widget/p-ccf92c36.entry.js.gz +0 -0
  156. package/dist/geotrek-rando-widget/p-ccf92c36.entry.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"names":["grwInformationDeskCss","GrwInformationDeskDetail","handleInformationDeskDescription","this","displayShortDescription","handleCenterOnMap","centerOnMap","emit","latitude","informationDesk","longitude","render","h","Host","photo_url","class","src","loading","name","onClick","translate","postal_code","municipality","street","phone","href","email","website","description","innerHTML","grwPoiCss","GrwPoiDetail","componentDidLoad","swiperPoi","Swiper","swiperPoiRef","modules","Navigation","Pagination","Keyboard","navigation","prevEl","prevElPoiRef","nextEl","nextElPoiRef","pagination","el","paginationElPoiRef","allowTouchMove","keyboard","onfullscreenchange","displayFullscreen","enable","disable","handlePoiDescription","handleFullscreen","poi","attachments","url","requestFullscreen","defaultImageSrc","getAssetPath","_a","state","poiTypes","find","poiType","id","type","pictogram","ref","length","filter","attachment","map","thumbnail","grwSensitiveAreaDetailCss","GrwSensitiveAreaDetail","sensitiveArea","practices","sensitiveAreaPractice","index","practice","statePractice","toUpperCase","period","month","Date","toLocaleDateString","slice","contact","grwTouristicContentCardCss","GrwTouristicContentCard","swiperTouristicContentRef","swiperTouristicContent","prevElTouristicContentRef","nextElTouristicContentRef","paginationElTouristicContentRef","touristicContent","handleMouseOver","cardTouristicContentMouseOver","handleMouseLeave","cardTouristicContentMouseLeave","touristicContentCategory","touristicContentCategories","category","style","width","isLargeView","selectedTouristicContentId","isInsideHorizontalList","touristicContentCardPress","label","grwTouristicEventCardCss","GrwTouristicEvent","swiperTouristicEvent","swiperTouristicEventRef","prevElTouristicEventRef","nextElTouristicEventRef","paginationElTouristicEventRef","touristicEvent","touristicEventTypes","touristicEventType","touristicEventCardPress","grwTrekCardCss","GrwTrekCard","connectedCallback","currentTrek","trek","difficulty","difficulties","route","routes","themes","theme","includes","departureCity","cities","city","departure_city","onChange","disconnectedCallback","resetStoreOnDisconnected","reset","cardTrekMouseOver","cardTrekMouseLeave","colorPrimaryApp","colorOnSurface","colorSecondaryContainer","colorOnSecondaryContainer","colorSurfaceContainerLow","isStep","selectedStepId","selectedTrekId","trekCardPress","_b","_c","formatDuration","duration","formatLength","length_2d","formatAscent","ascent","_d","_e","_f","_g"],"sources":["./src/components/grw-information-desk/grw-information-desk.scss?tag=grw-information-desk&encapsulation=shadow","./src/components/grw-information-desk/grw-information-desk.tsx","./src/components/grw-poi-detail/grw-poi.scss?tag=grw-poi&encapsulation=shadow","./src/components/grw-poi-detail/grw-poi.tsx","./src/components/grw-sensitive-area-detail/grw-sensitive-area-detail.scss?tag=grw-sensitive-area-detail&encapsulation=shadow","./src/components/grw-sensitive-area-detail/grw-sensitive-area-detail.tsx","./src/components/grw-touristic-content/grw-touristic-content-card.scss?tag=grw-touristic-content-card&encapsulation=shadow","./src/components/grw-touristic-content/grw-touristic-content-card.tsx","./src/components/grw-touristic-event/grw-touristic-event-card.scss?tag=grw-touristic-event-card&encapsulation=shadow","./src/components/grw-touristic-event/grw-touristic-event-card.tsx","./src/components/grw-trek-card/grw-trek-card.scss?tag=grw-trek-card&encapsulation=shadow","./src/components/grw-trek-card/grw-trek-card.tsx"],"sourcesContent":[".material-symbols {\n font-family: 'Material Symbols Outlined';\n}\n\n.material-symbols-outlined {\n font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 48;\n}\n\n:host {\n display: flex;\n flex-direction: column;\n overflow: hidden;\n border: 1px solid gray;\n border-radius: 12px;\n background-color: var(--color-surface-container-low);\n color: var(--color-on-surface);\n a {\n color: var(--color-primary-app);\n }\n}\n\n.information-desk-img {\n position: relative;\n img {\n width: 100%;\n height: 100%;\n max-height: 200px;\n object-fit: cover;\n }\n}\n\n.information-desk-sub-container {\n display: flex;\n flex-direction: column;\n padding: 12px;\n}\n\n.information-desk-name {\n font-size: 16px;\n line-height: 24px;\n font-weight: 500;\n}\n\n.information-desk-description {\n font-size: 14px;\n line-height: 20px;\n}\n\n.information-desk-description-short {\n font-size: 14px;\n line-height: 20px;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 4;\n overflow: hidden;\n}\n\n.handle-information-desk-description {\n cursor: pointer;\n color: var(--color-primary-app);\n text-decoration: underline;\n margin-top: 12px;\n}\n\n.phone-container,\n.mail-container,\n.link-container {\n display: flex;\n align-items: center;\n span {\n font-size: 16px;\n margin-right: 8px;\n }\n}\n\n.center-on-map-button {\n cursor: pointer;\n background-color: var(--color-primary-container);\n color: var(--color-on-primary-container);\n border-radius: 8px;\n padding: 8px 16px;\n box-shadow: var(--elevation-1);\n height: 32px;\n gap: 8px;\n box-sizing: border-box;\n text-align: start;\n vertical-align: middle;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n position: relative;\n border: none;\n font-size: 14px;\n margin: 12px 0px;\n &:hover {\n box-shadow: var(--elevation-2);\n }\n span {\n font-size: 18px;\n }\n}\n","import { Component, Host, h, Prop, State, Event, EventEmitter } from '@stencil/core';\nimport { InformationDesk } from 'types/types';\n\n@Component({\n tag: 'grw-information-desk',\n styleUrl: 'grw-information-desk.scss',\n shadow: true,\n})\nexport class GrwInformationDeskDetail {\n @Event() centerOnMap: EventEmitter<{ latitude: number; longitude: number }>;\n @State() displayShortDescription = true;\n @Prop() informationDesk: InformationDesk;\n\n handleInformationDeskDescription() {\n this.displayShortDescription = !this.displayShortDescription;\n }\n\n handleCenterOnMap() {\n this.centerOnMap.emit({ latitude: this.informationDesk.latitude, longitude: this.informationDesk.longitude });\n }\n\n render() {\n return (\n <Host>\n {this.informationDesk.photo_url && (\n <div class=\"information-desk-img\">\n <img src={this.informationDesk.photo_url} loading=\"lazy\" />\n </div>\n )}\n <div class=\"information-desk-sub-container\">\n {this.informationDesk.name && <div class=\"information-desk-name\">{this.informationDesk.name}</div>}\n {this.informationDesk.latitude && this.informationDesk.longitude && (\n <button class=\"center-on-map-button\" onClick={() => this.handleCenterOnMap()}>\n {/* @ts-ignore */}\n <span translate={false} class=\"material-symbols material-symbols-outlined\">\n location_searching\n </span>\n Centrer sur la carte\n </button>\n )}\n {(this.informationDesk.postal_code || this.informationDesk.municipality || this.informationDesk.street) && (\n <div>\n {this.informationDesk.postal_code && this.informationDesk.postal_code}\n {this.informationDesk.municipality && ` ${this.informationDesk.municipality}`}\n {this.informationDesk.street && ` ${this.informationDesk.street}`}\n </div>\n )}\n {this.informationDesk.phone && (\n <div class=\"phone-container\">\n {/* @ts-ignore */}\n <span translate={false} class=\"material-symbols material-symbols-outlined\">\n call\n </span>\n <a href={`tel:${this.informationDesk.phone}`}>{this.informationDesk.phone}</a>\n </div>\n )}\n {this.informationDesk.email && (\n <div class=\"mail-container\">\n {/* @ts-ignore */}\n <span translate={false} class=\"material-symbols material-symbols-outlined\">\n mail\n </span>\n <a href={`mailto:${this.informationDesk.email}`}>{this.informationDesk.email}</a>\n </div>\n )}\n {this.informationDesk.website && (\n <div class=\"link-container\">\n {/* @ts-ignore */}\n <span translate={false} class=\"material-symbols material-symbols-outlined\">\n link\n </span>\n <a href={`${this.informationDesk.website}`}>{this.informationDesk.website}</a>\n </div>\n )}\n {this.informationDesk.description && (\n <div class=\"information-desk-description-container\">\n <div class={this.displayShortDescription ? 'information-desk-description-short' : 'information-desk-description'} innerHTML={this.informationDesk.description}></div>\n <div class=\"handle-information-desk-description\" onClick={() => this.handleInformationDeskDescription()}>\n {this.displayShortDescription ? 'Lire plus' : 'Lire moins'}\n </div>\n </div>\n )}\n </div>\n </Host>\n );\n }\n}\n","@use '~swiper/swiper.scss';\n@use '~swiper/modules/navigation/navigation.scss';\n@use '~swiper/modules/pagination/pagination.scss';\n\n.swiper {\n z-index: 0;\n}\n\n.material-symbols-outlined {\n font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 48;\n}\n\n:host {\n display: flex;\n flex-direction: column;\n overflow: hidden;\n border: 1px solid gray;\n border-radius: 12px;\n background-color: var(--color-surface-container-low);\n color: var(--color-on-surface);\n a {\n color: var(--color-primary-app);\n }\n --swiper-navigation-size: 24px;\n --swiper-navigation-color: var(--color-on-primary-container);\n --swiper-pagination-color: var(--color-primary-container);\n --swiper-pagination-bullet-size: 12px;\n .swiper-button-prev,\n .swiper-button-next {\n background-color: var(--color-primary-container);\n padding: 4px;\n width: 32px;\n height: 32px;\n border-radius: 32px;\n box-shadow: var(--elevation-1);\n &:hover {\n box-shadow: var(--elevation-2);\n }\n }\n}\n\n.poi-type-img-container {\n position: relative;\n .poi-img,\n .default-poi-img {\n width: 100%;\n height: 100%;\n max-height: 200px;\n object-fit: cover;\n }\n .poi-img {\n cursor: pointer;\n object-fit: cover;\n }\n .default-poi-img {\n background-color: var(--color-primary-container);\n object-fit: contain;\n }\n .img-fullscreen {\n max-height: none;\n object-fit: contain;\n }\n .poi-type {\n width: 24px;\n height: 24px;\n padding: 4px;\n border: 2px solid #ffffff;\n border-radius: 50%;\n background-color: var(--color-on-surface);\n position: absolute;\n top: 8px;\n left: 8px;\n z-index: 200;\n }\n}\n\n.poi-sub-container {\n display: flex;\n flex-direction: column;\n padding: 12px;\n}\n\n.poi-name {\n font-size: 16px;\n line-height: 24px;\n}\n\n.poi-description {\n font-size: 14px;\n line-height: 20px;\n}\n\n.poi-description-short {\n font-size: 14px;\n line-height: 20px;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 4;\n overflow: hidden;\n}\n\n.handle-poi-description {\n cursor: pointer;\n color: var(--color-primary-app);\n text-decoration: underline;\n margin-top: 12px;\n}\n","import { Component, Host, h, Prop, State, Build, getAssetPath } from '@stencil/core';\nimport Swiper, { Navigation, Pagination, Keyboard } from 'swiper';\nimport state from 'store/store';\nimport { Poi } from 'types/types';\n\n@Component({\n tag: 'grw-poi',\n styleUrl: 'grw-poi.scss',\n shadow: true,\n})\nexport class GrwPoiDetail {\n swiperPoi?: Swiper;\n swiperPoiRef?: HTMLDivElement;\n prevElPoiRef?: HTMLDivElement;\n nextElPoiRef?: HTMLDivElement;\n paginationElPoiRef?: HTMLDivElement;\n @Prop() poi: Poi;\n @State() displayShortDescription = true;\n @State() displayFullscreen = false;\n\n componentDidLoad() {\n this.swiperPoi = new Swiper(this.swiperPoiRef, {\n modules: [Navigation, Pagination, Keyboard],\n navigation: {\n prevEl: this.prevElPoiRef,\n nextEl: this.nextElPoiRef,\n },\n pagination: { el: this.paginationElPoiRef },\n allowTouchMove: false,\n keyboard: false,\n });\n this.swiperPoiRef.onfullscreenchange = () => {\n this.displayFullscreen = !this.displayFullscreen;\n if (this.displayFullscreen) {\n this.swiperPoi.keyboard.enable();\n } else {\n this.swiperPoi.keyboard.disable();\n }\n };\n }\n\n handlePoiDescription() {\n this.displayShortDescription = !this.displayShortDescription;\n }\n\n handleFullscreen() {\n if (this.poi.attachments && this.poi.attachments[0] && this.poi.attachments[0].url) {\n this.swiperPoiRef.requestFullscreen();\n }\n }\n\n render() {\n const defaultImageSrc = getAssetPath(`${Build.isDev ? '/' : ''}assets/default-image.svg`);\n return (\n <Host>\n <div class=\"poi-type-img-container\">\n <img class=\"poi-type\" src={`${state.poiTypes.find(poiType => poiType.id === this.poi.type)?.pictogram}`} />\n <div class=\"swiper\" ref={el => (this.swiperPoiRef = el)}>\n <div class=\"swiper-wrapper\">\n {this.poi.attachments.length > 0 ? (\n this.poi.attachments\n .filter(attachment => attachment.type === 'image')\n .map(attachment => (\n <div class=\"swiper-slide\">\n <img\n class={`poi-img${this.displayFullscreen ? ' img-fullscreen' : ''}`}\n src={this.displayFullscreen ? attachment.url : attachment.thumbnail}\n loading=\"lazy\"\n onClick={() => this.handleFullscreen()}\n />\n </div>\n ))\n ) : (\n <div class=\"swiper-slide\">\n <img class=\"default-poi-img\" src={defaultImageSrc} loading=\"lazy\" />\n </div>\n )}\n </div>\n <div class=\"swiper-pagination\" ref={el => (this.paginationElPoiRef = el)}></div>\n <div class=\"swiper-button-prev\" ref={el => (this.prevElPoiRef = el)}></div>\n <div class=\"swiper-button-next\" ref={el => (this.nextElPoiRef = el)}></div>\n </div>\n </div>\n <div class=\"poi-sub-container\">\n <div class=\"poi-name\">{this.poi.name}</div>\n <div class={this.displayShortDescription ? 'poi-description-short' : 'poi-description'} innerHTML={this.poi.description}></div>\n <div class=\"handle-poi-description\" onClick={() => this.handlePoiDescription()}>\n {this.displayShortDescription ? 'Lire plus' : 'Lire moins'}\n </div>\n </div>\n </Host>\n );\n }\n}\n",":host {\n display: flex;\n flex-direction: column;\n color: var(--color-on-surface);\n a {\n color: var(--color-primary-app);\n }\n}\n\n.sensitive-area-title {\n font-size: 22px;\n line-height: 28px;\n padding: 12px 0px;\n font-weight: 400;\n}\n\n.sensitive-area-description {\n font-size: 16px;\n line-height: 24px;\n}\n\n.sensitive-area-period-container,\n.sensitive-area-practice-container,\n.sensitive-area-contact-container {\n .sensitive-area-period-title,\n .sensitive-area-practice-title,\n .sensitive-area-contact-title {\n font-size: 16px;\n line-height: 24px;\n padding: 12px 0px;\n }\n .sensitive-area-period-values,\n .sensitive-area-practice-values {\n display: flex;\n flex-wrap: wrap;\n }\n}\n","import { Component, Host, h, Prop } from '@stencil/core';\nimport state from 'store/store';\nimport { SensitiveArea } from 'types/types';\n\n@Component({\n tag: 'grw-sensitive-area-detail',\n styleUrl: 'grw-sensitive-area-detail.scss',\n shadow: true,\n})\nexport class GrwSensitiveAreaDetail {\n @Prop() sensitiveArea: SensitiveArea;\n\n render() {\n return (\n <Host>\n <div class=\"sensitive-area-title\">{this.sensitiveArea.name}</div>\n <div class=\"sensitive-area-description\" innerHTML={this.sensitiveArea.description}></div>\n {this.sensitiveArea.practices && this.sensitiveArea.practices.length > 0 && (\n <div class=\"sensitive-area-practice-container\">\n <div class=\"sensitive-area-practice-title\">Domaines d'activités concernés :</div>\n <div class=\"sensitive-area-practice-values\">\n {this.sensitiveArea.practices.map((sensitiveAreaPractice, index) => {\n const practice = state.practices.find(statePractice => statePractice.id === sensitiveAreaPractice);\n if (practice) {\n return <div innerHTML={`${practice.name.toUpperCase()}${index + 1 !== this.sensitiveArea.practices.length ? ' -&nbsp;' : ''}`}></div>;\n }\n })}\n </div>\n </div>\n )}\n {this.sensitiveArea.period && this.sensitiveArea.period.length > 0 && (\n <div class=\"sensitive-area-period-container\">\n <div class=\"sensitive-area-period-title\">Périodes de sensibilité</div>\n <div class=\"sensitive-area-period-values\">\n {this.sensitiveArea.period.map((month, index) => {\n if (month) {\n return (\n <div\n innerHTML={`${new Date(0, index + 1, 0).toLocaleDateString('fr', { month: 'long' }).toUpperCase()}${\n this.sensitiveArea.period.slice(index + 1).find(month => month) ? ' -&nbsp;' : ''\n }`}\n ></div>\n );\n }\n })}\n </div>\n </div>\n )}\n <div class=\"sensitive-area-contact-container\">\n <div class=\"sensitive-area-contact-title\">Contact</div>\n <div innerHTML={this.sensitiveArea.contact} class=\"sensitive-area-contact-value\"></div>\n </div>\n </Host>\n );\n }\n}\n","@use '~swiper/swiper.scss';\n@use '~swiper/modules/navigation/navigation.scss';\n@use '~swiper/modules/pagination/pagination.scss';\n\n.swiper {\n z-index: 0;\n}\n\n.material-symbols-outlined {\n font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 48;\n}\n\n:host {\n display: flex;\n flex-direction: column;\n a {\n color: var(--color-primary-app);\n }\n --swiper-navigation-size: 24px;\n --swiper-navigation-color: var(--color-on-primary-container);\n --swiper-pagination-color: var(--color-primary-container);\n --swiper-pagination-bullet-size: 12px;\n .swiper-button-prev,\n .swiper-button-next {\n background-color: var(--color-primary-container);\n padding: 4px;\n width: 32px;\n height: 32px;\n border-radius: 32px;\n box-shadow: var(--elevation-1);\n &:hover {\n box-shadow: var(--elevation-2);\n }\n }\n}\n\n.touristic-content-type-img-container {\n position: relative;\n .touristic-content-img,\n .default-touristic-content-img {\n width: 100%;\n height: 100%;\n max-height: 200px;\n object-fit: cover;\n }\n .touristic-content-img {\n cursor: pointer;\n object-fit: cover;\n }\n .default-touristic-content-img {\n background-color: var(--color-primary-container);\n object-fit: contain;\n }\n .img-fullscreen {\n max-height: none;\n object-fit: contain;\n }\n .touristic-content-type {\n width: 24px;\n height: 24px;\n padding: 4px;\n border: 2px solid #ffffff;\n border-radius: 50%;\n background-color: var(--color-on-surface);\n position: absolute;\n top: 8px;\n left: 8px;\n z-index: 200;\n }\n}\n\n.touristic-content-sub-container {\n display: flex;\n flex-direction: column;\n padding: 12px;\n .touristic-content-category-container {\n display: flex;\n align-items: center;\n margin-bottom: 12px;\n .touristic-content-category-name {\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 1;\n overflow: hidden;\n }\n img {\n font-size: 24px;\n width: 24px;\n height: 24px;\n margin-right: 8px;\n background-color: var(--color-primary-app);\n }\n }\n .touristic-content-name {\n font-size: 16px;\n line-height: 24px;\n }\n}\n\n.touristic-content-more-detail-container {\n padding: 0px 12px 12px 12px;\n .more-details-button {\n cursor: pointer;\n background-color: var(--color-primary-container);\n color: var(--color-on-primary-container);\n border-radius: 8px;\n padding: 8px 16px;\n box-shadow: var(--elevation-1);\n width: 100%;\n height: 32px;\n gap: 8px;\n box-sizing: border-box;\n text-align: start;\n vertical-align: middle;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n position: relative;\n border: none;\n font-size: 14px;\n &:hover {\n box-shadow: var(--elevation-2);\n }\n span {\n font-size: 18px;\n }\n }\n}\n\n.touristic-content-card-container,\n.touristic-content-card-large-view-container {\n cursor: pointer;\n font-family: 'Roboto';\n border-radius: 12px;\n box-shadow: var(--elevation-1);\n background-color: var(--color-surface-container-low);\n color: var(--color-on-surface);\n .image {\n height: 100%;\n object-fit: cover;\n border-top-left-radius: 12px;\n border-top-right-radius: 12px;\n }\n}\n\n.touristic-content-container {\n width: 100%;\n max-width: 350px;\n .image {\n width: 100%;\n max-height: 200px;\n }\n}\n\n.touristic-content-card-large-view-container {\n width: 100%;\n display: flex;\n flex-direction: row;\n .image {\n width: 250px;\n }\n}\n\n.is-inside-vertical-list {\n cursor: pointer;\n border: none;\n}\n\n.selected-touristic-content-card {\n box-shadow: var(--elevation-2);\n}\n","import { Build, Component, Host, getAssetPath, h, State, Prop, Event, EventEmitter, Listen } from '@stencil/core';\nimport state from 'store/store';\nimport Swiper, { Keyboard, Navigation, Pagination } from 'swiper';\nimport { TouristicContent } from 'types/types';\n\n@Component({\n tag: 'grw-touristic-content-card',\n styleUrl: 'grw-touristic-content-card.scss',\n shadow: true,\n})\nexport class GrwTouristicContentCard {\n @Event() touristicContentCardPress: EventEmitter<number>;\n swiperTouristicContent?: Swiper;\n swiperTouristicContentRef?: HTMLDivElement;\n prevElTouristicContentRef?: HTMLDivElement;\n nextElTouristicContentRef?: HTMLDivElement;\n paginationElTouristicContentRef?: HTMLDivElement;\n @Prop() touristicContent: TouristicContent;\n @Prop() isLargeView = false;\n @Prop() isInsideHorizontalList = false;\n @State() displayFullscreen = false;\n\n @Event() cardTouristicContentMouseOver: EventEmitter<number>;\n @Event() cardTouristicContentMouseLeave: EventEmitter;\n\n componentDidLoad() {\n if (this.swiperTouristicContentRef) {\n this.swiperTouristicContent = new Swiper(this.swiperTouristicContentRef, {\n modules: [Navigation, Pagination, Keyboard],\n navigation: {\n prevEl: this.prevElTouristicContentRef,\n nextEl: this.nextElTouristicContentRef,\n },\n pagination: { el: this.paginationElTouristicContentRef },\n allowTouchMove: false,\n keyboard: false,\n });\n this.swiperTouristicContentRef.onfullscreenchange = () => {\n this.displayFullscreen = !this.displayFullscreen;\n if (this.displayFullscreen) {\n this.swiperTouristicContent.keyboard.enable();\n } else {\n this.swiperTouristicContent.keyboard.disable();\n }\n };\n }\n }\n\n handleFullscreen() {\n if (this.touristicContent.attachments && this.touristicContent.attachments[0] && this.touristicContent.attachments[0].url) {\n this.swiperTouristicContentRef.requestFullscreen();\n }\n }\n\n @Listen('mouseover')\n handleMouseOver() {\n this.cardTouristicContentMouseOver.emit(this.touristicContent.id);\n }\n\n @Listen('mouseleave')\n handleMouseLeave() {\n this.cardTouristicContentMouseLeave.emit();\n }\n\n render() {\n const defaultImageSrc = getAssetPath(`${Build.isDev ? '/' : ''}assets/default-image.svg`);\n const touristicContentCategory = state.touristicContentCategories.find(touristicContentCategory => touristicContentCategory.id === this.touristicContent.category);\n return (\n <Host\n style={{\n width: this.isLargeView ? '100%' : 'auto',\n }}\n >\n <div\n class={\n this.isLargeView\n ? `touristic-content-card-large-view-container${state.selectedTouristicContentId === this.touristicContent.id ? ' selected-touristic-content-card' : ''}${\n !this.isInsideHorizontalList ? ' is-inside-vertical-list' : ''\n }`\n : `touristic-content-card-container${state.selectedTouristicContentId === this.touristicContent.id ? ' selected-touristic-content-card' : ''}${\n !this.isInsideHorizontalList ? ' is-inside-vertical-list' : ''\n }`\n }\n onClick={() => {\n if (!this.isInsideHorizontalList) {\n this.touristicContentCardPress.emit(this.touristicContent.id);\n }\n }}\n >\n <div class=\"touristic-content-type-img-container\">\n {this.isInsideHorizontalList ? (\n <div class=\"swiper\" ref={el => (this.swiperTouristicContentRef = el)}>\n <div class=\"swiper-wrapper\">\n {this.touristicContent.attachments.length > 0 ? (\n this.touristicContent.attachments\n .filter(attachment => attachment.type === 'image')\n .map(attachment => (\n <div class=\"swiper-slide\">\n <img\n class={`touristic-content-img${this.displayFullscreen ? ' img-fullscreen' : ''}`}\n src={this.displayFullscreen ? attachment.url : attachment.thumbnail}\n loading=\"lazy\"\n onClick={() => this.handleFullscreen()}\n />\n </div>\n ))\n ) : (\n <div class=\"swiper-slide\">\n <img class=\"default-touristic-content-img\" src={defaultImageSrc} loading=\"lazy\" />\n </div>\n )}\n </div>\n <div class=\"swiper-pagination\" ref={el => (this.paginationElTouristicContentRef = el)}></div>\n <div class=\"swiper-button-prev\" ref={el => (this.prevElTouristicContentRef = el)}></div>\n <div class=\"swiper-button-next\" ref={el => (this.nextElTouristicContentRef = el)}></div>\n </div>\n ) : this.touristicContent.attachments.filter(attachment => attachment.type === 'image').length > 0 ? (\n <img class=\"image\" src={`${this.touristicContent.attachments.filter(attachment => attachment.type === 'image')[0].thumbnail}`} loading=\"lazy\" />\n ) : (\n <div></div>\n )}\n </div>\n <div class=\"touristic-content-sub-container\">\n <div class=\"touristic-content-category-container\">\n <img src={touristicContentCategory.pictogram} />\n <div class=\"touristic-content-category-name\">{touristicContentCategory.label}</div>\n </div>\n <div class=\"touristic-content-name\">{this.touristicContent.name}</div>\n </div>\n {this.isInsideHorizontalList && (\n <div class=\"touristic-content-more-detail-container\">\n <button class=\"more-details-button\" onClick={() => this.touristicContentCardPress.emit(this.touristicContent.id)}>\n Plus de détails\n </button>\n </div>\n )}\n </div>\n </Host>\n );\n }\n}\n","@use '~swiper/swiper.scss';\n@use '~swiper/modules/navigation/navigation.scss';\n@use '~swiper/modules/pagination/pagination.scss';\n\n.swiper {\n z-index: 0;\n}\n\n.material-symbols-outlined {\n font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 48;\n}\n\n:host {\n display: flex;\n flex-direction: column;\n overflow: hidden;\n border: 1px solid gray;\n border-radius: 12px;\n background-color: var(--color-surface-container-low);\n color: var(--color-on-surface);\n a {\n color: var(--color-primary-app);\n }\n --swiper-navigation-size: 24px;\n --swiper-navigation-color: var(--color-on-primary-container);\n --swiper-pagination-color: var(--color-primary-container);\n --swiper-pagination-bullet-size: 12px;\n .swiper-button-prev,\n .swiper-button-next {\n background-color: var(--color-primary-container);\n padding: 4px;\n width: 32px;\n height: 32px;\n border-radius: 32px;\n box-shadow: var(--elevation-1);\n &:hover {\n box-shadow: var(--elevation-2);\n }\n }\n}\n\n.touristic-event-type-img-container {\n position: relative;\n .touristic-event-img,\n .default-touristic-event-img {\n width: 100%;\n height: 100%;\n max-height: 200px;\n object-fit: cover;\n }\n .touristic-event-img {\n cursor: pointer;\n object-fit: cover;\n }\n .default-touristic-event-img {\n background-color: var(--color-primary-container);\n object-fit: contain;\n }\n .img-fullscreen {\n max-height: none;\n object-fit: contain;\n }\n .touristic-event-type {\n width: 24px;\n height: 24px;\n padding: 4px;\n border: 2px solid #ffffff;\n border-radius: 50%;\n background-color: var(--color-on-surface);\n position: absolute;\n top: 8px;\n left: 8px;\n z-index: 200;\n }\n}\n\n.touristic-event-sub-container {\n display: flex;\n flex-direction: column;\n padding: 12px;\n .touristic-event-type-container {\n display: flex;\n align-items: center;\n margin-bottom: 12px;\n .touristic-event-type-name {\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 1;\n overflow: hidden;\n }\n img {\n font-size: 24px;\n width: 24px;\n height: 24px;\n margin-right: 8px;\n background-color: var(--color-primary-app);\n }\n }\n .touristic-event-name {\n font-size: 16px;\n line-height: 24px;\n }\n}\n\n.touristic-event-more-detail-container {\n padding: 0px 12px 12px 12px;\n .more-details-button {\n cursor: pointer;\n background-color: var(--color-primary-container);\n color: var(--color-on-primary-container);\n border-radius: 8px;\n padding: 8px 16px;\n box-shadow: var(--elevation-1);\n width: 100%;\n height: 32px;\n gap: 8px;\n box-sizing: border-box;\n text-align: start;\n vertical-align: middle;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n position: relative;\n border: none;\n font-size: 14px;\n &:hover {\n box-shadow: var(--elevation-2);\n }\n span {\n font-size: 18px;\n }\n }\n}\n","import { Build, Component, Host, getAssetPath, h, State, Prop, Event, EventEmitter } from '@stencil/core';\nimport state from 'store/store';\nimport Swiper, { Keyboard, Navigation, Pagination } from 'swiper';\nimport { TouristicEvent } from 'types/types';\n\n@Component({\n tag: 'grw-touristic-event-card',\n styleUrl: 'grw-touristic-event-card.scss',\n shadow: true,\n})\nexport class GrwTouristicEvent {\n @Event() touristicEventCardPress: EventEmitter<number>;\n swiperTouristicEvent?: Swiper;\n swiperTouristicEventRef?: HTMLDivElement;\n prevElTouristicEventRef?: HTMLDivElement;\n nextElTouristicEventRef?: HTMLDivElement;\n paginationElTouristicEventRef?: HTMLDivElement;\n @Prop() touristicEvent: TouristicEvent;\n @State() displayFullscreen = false;\n\n componentDidLoad() {\n this.swiperTouristicEvent = new Swiper(this.swiperTouristicEventRef, {\n modules: [Navigation, Pagination, Keyboard],\n navigation: {\n prevEl: this.prevElTouristicEventRef,\n nextEl: this.nextElTouristicEventRef,\n },\n pagination: { el: this.paginationElTouristicEventRef },\n allowTouchMove: false,\n keyboard: false,\n });\n this.swiperTouristicEventRef.onfullscreenchange = () => {\n this.displayFullscreen = !this.displayFullscreen;\n if (this.displayFullscreen) {\n this.swiperTouristicEvent.keyboard.enable();\n } else {\n this.swiperTouristicEvent.keyboard.disable();\n }\n };\n }\n\n handleFullscreen() {\n if (this.touristicEvent.attachments && this.touristicEvent.attachments[0] && this.touristicEvent.attachments[0].url) {\n this.swiperTouristicEventRef.requestFullscreen();\n }\n }\n render() {\n const defaultImageSrc = getAssetPath(`${Build.isDev ? '/' : ''}assets/default-image.svg`);\n const touristicEventTypes = state.touristicEventTypes.find(touristicEventType => touristicEventType.id === this.touristicEvent.type);\n return (\n <Host>\n <div class=\"touristic-event-type-img-container\">\n <div class=\"swiper\" ref={el => (this.swiperTouristicEventRef = el)}>\n <div class=\"swiper-wrapper\">\n {this.touristicEvent.attachments.length > 0 ? (\n this.touristicEvent.attachments\n .filter(attachment => attachment.type === 'image')\n .map(attachment => (\n <div class=\"swiper-slide\">\n <img\n class={`touristic-event-img${this.displayFullscreen ? ' img-fullscreen' : ''}`}\n src={this.displayFullscreen ? attachment.url : attachment.thumbnail}\n loading=\"lazy\"\n onClick={() => this.handleFullscreen()}\n />\n </div>\n ))\n ) : (\n <div class=\"swiper-slide\">\n <img class=\"default-touristic-event-img\" src={defaultImageSrc} loading=\"lazy\" />\n </div>\n )}\n </div>\n <div class=\"swiper-pagination\" ref={el => (this.paginationElTouristicEventRef = el)}></div>\n <div class=\"swiper-button-prev\" ref={el => (this.prevElTouristicEventRef = el)}></div>\n <div class=\"swiper-button-next\" ref={el => (this.nextElTouristicEventRef = el)}></div>\n </div>\n </div>\n <div class=\"touristic-event-sub-container\">\n <div class=\"touristic-event-type-container\">\n <img src={touristicEventTypes.pictogram} />\n <div class=\"touristic-event-type-name\">{touristicEventTypes.type}</div>\n </div>\n <div class=\"touristic-event-name\">{this.touristicEvent.name}</div>\n </div>\n <div class=\"touristic-event-more-detail-container\">\n <button class=\"more-details-button\" onClick={() => this.touristicEventCardPress.emit(this.touristicEvent.id)}>\n Plus de détails\n </button>\n </div>\n </Host>\n );\n }\n}\n",".material-symbols {\n font-family: 'Material Symbols Outlined';\n}\n\n.material-symbols-outlined {\n font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 48;\n}\n\n.trek-card-container,\n.trek-card-large-view-container {\n cursor: pointer;\n font-family: 'Roboto';\n border-radius: 12px;\n box-shadow: var(--elevation-1);\n background-color: var(--color-surface-container-low);\n .image {\n object-fit: cover;\n border-top-left-radius: 12px;\n border-top-right-radius: 12px;\n }\n .sub-container {\n display: flex;\n flex-direction: column;\n justify-content: center;\n padding: 8px 16px;\n .name {\n color: var(--color-on-surface);\n font-size: 22px;\n line-height: 28px;\n font-weight: 400;\n margin-bottom: 8px;\n }\n .departure {\n color: var(--color-on-surface);\n font-size: 16px;\n line-height: 24px;\n font-weight: 500;\n margin-bottom: 4px;\n }\n .themes-container {\n display: flex;\n justify-content: flex-start;\n align-items: center;\n flex-wrap: wrap;\n .theme {\n background-color: var(--color-secondary-container);\n color: var(--color-on-secondary-container);\n border-radius: 8px;\n padding: 8px 16px;\n margin: 0px 8px 8px 0px;\n box-shadow: var(--elevation-0);\n border: 1px solid var(--color-outline);\n height: 32px;\n gap: 8px;\n box-sizing: border-box;\n text-align: start;\n vertical-align: middle;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n position: relative;\n text-wrap: nowrap;\n }\n }\n .icons-labels-container {\n display: flex;\n justify-content: flex-start;\n align-items: center;\n flex-wrap: wrap;\n color: var(--color-on-surface);\n font-size: 14px;\n line-height: 20px;\n font-weight: 500;\n .row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n width: 100%;\n &:not(:last-child) {\n margin-bottom: 12px;\n }\n .icon-label {\n &:nth-child(2) {\n margin: 0px 4px;\n }\n display: flex;\n align-items: center;\n width: 50%;\n img,\n span {\n font-size: 24px;\n width: 24px;\n height: 24px;\n margin-right: 8px;\n }\n }\n .practice {\n img {\n background-color: var(--color-primary-app);\n }\n }\n }\n }\n }\n}\n\n.selected-trek-card {\n box-shadow: var(--elevation-2);\n}\n\n.trek-card-container {\n width: 100%;\n max-width: 350px;\n .image {\n width: 100%;\n max-height: 200px;\n }\n}\n\n.trek-card-large-view-container {\n width: 100%;\n display: flex;\n flex-direction: row;\n .image {\n width: 250px;\n }\n}\n\n.trek-step-card {\n width: auto;\n}\n","import { Component, Host, h, Prop, Event, EventEmitter, State, Listen } from '@stencil/core';\nimport state, { onChange, reset } from 'store/store';\nimport { City, Difficulty, Practice, Route, Themes, Trek } from 'types/types';\nimport { formatDuration, formatLength, formatAscent } from 'utils/utils';\n\n@Component({\n tag: 'grw-trek-card',\n styleUrl: 'grw-trek-card.scss',\n shadow: true,\n})\nexport class GrwTrekCard {\n @Event() trekCardPress: EventEmitter<number>;\n @State() currentTrek: Trek;\n @State() difficulty: Difficulty;\n @State() route: Route;\n @State() practice: Practice;\n @State() themes: Themes;\n @State() departureCity: City;\n @Prop() trek: Trek;\n @Prop() colorPrimaryApp = '#6b0030';\n @Prop() colorOnSurface = '#49454e';\n @Prop() colorSecondaryContainer = '#e8def8';\n @Prop() colorOnSecondaryContainer = '#1d192b';\n @Prop() colorSurfaceContainerLow = '#f7f2fa';\n @Prop() isLargeView = false;\n @Prop() resetStoreOnDisconnected = true;\n @Prop() isStep: false;\n\n @Event() cardTrekMouseOver: EventEmitter<number>;\n @Event() cardTrekMouseLeave: EventEmitter;\n\n connectedCallback() {\n this.currentTrek = this.trek ? this.trek : state.currentTrek;\n if (this.currentTrek) {\n this.difficulty = state.difficulties.find(difficulty => difficulty.id === this.currentTrek.difficulty);\n this.route = state.routes.find(route => route.id === this.currentTrek.route);\n this.practice = state.practices.find(practice => practice.id === this.currentTrek.practice);\n this.themes = state.themes.filter(theme => this.currentTrek.themes.includes(theme.id));\n this.departureCity = state.cities.find(city => city.id === this.currentTrek.departure_city);\n }\n onChange('currentTrek', () => {\n this.currentTrek = this.trek ? this.trek : state.currentTrek;\n if (this.currentTrek) {\n this.difficulty = state.difficulties.find(difficulty => difficulty.id === this.currentTrek.difficulty);\n this.route = state.routes.find(route => route.id === this.currentTrek.route);\n this.practice = state.practices.find(practice => practice.id === this.currentTrek.practice);\n this.themes = state.themes.filter(theme => this.currentTrek.themes.includes(theme.id));\n this.departureCity = state.cities.find(city => city.id === this.currentTrek.departure_city);\n }\n });\n }\n\n disconnectedCallback() {\n if (this.resetStoreOnDisconnected) {\n reset();\n }\n }\n\n @Listen('mouseover')\n handleMouseOver() {\n this.cardTrekMouseOver.emit(this.currentTrek.id);\n }\n\n @Listen('mouseleave')\n handleMouseLeave() {\n this.cardTrekMouseLeave.emit();\n }\n\n render() {\n return (\n <Host\n style={{\n 'width': this.isLargeView ? '100%' : 'auto',\n '--color-primary-app': this.colorPrimaryApp,\n '--color-on-surface': this.colorOnSurface,\n '--color-secondary-container': this.colorSecondaryContainer,\n '--color-on-secondary-container': this.colorOnSecondaryContainer,\n '--color-surface-container-low': this.colorSurfaceContainerLow,\n }}\n >\n {this.currentTrek && (\n <div\n class={\n this.isStep\n ? `trek-card-container trek-step-card${state.selectedStepId === this.currentTrek.id ? ' selected-trek-card' : ''}`\n : this.isLargeView\n ? `trek-card-large-view-container${state.selectedTrekId === this.currentTrek.id ? ' selected-trek-card' : ''}`\n : `trek-card-container${state.selectedTrekId === this.currentTrek.id ? ' selected-trek-card' : ''}`\n }\n onClick={() => this.trekCardPress.emit(this.currentTrek.id)}\n >\n {this.currentTrek.attachments.filter(attachment => attachment.type === 'image').length > 0 && (\n <img class=\"image\" src={`${this.currentTrek.attachments.filter(attachment => attachment.type === 'image')[0].thumbnail}`} loading=\"lazy\" />\n )}\n <div class=\"sub-container\">\n {this.departureCity && <div class=\"departure\">{this.departureCity.name}</div>}\n <div class=\"name\">{this.currentTrek?.name}</div>\n {!this.isStep && (\n <div class=\"themes-container\">\n {this.themes.map(theme => (\n <div class=\"theme\">{theme.label}</div>\n ))}\n </div>\n )}\n <div class=\"icons-labels-container\">\n <div class=\"row\">\n <div class=\"icon-label difficulty\">\n {this.difficulty?.pictogram && <img src={this.difficulty.pictogram} />}\n {this.difficulty?.label}\n </div>\n <div class=\"icon-label duration\">\n {/* @ts-ignore */}\n <span translate={false} class=\"material-symbols material-symbols-outlined\">\n timelapse\n </span>\n {formatDuration(this.currentTrek.duration)}\n </div>\n </div>\n <div class=\"row\">\n <div class=\"icon-label length\">\n {/* @ts-ignore */}\n <span translate={false} class=\"material-symbols material-symbols-outlined\">\n open_in_full\n </span>\n {formatLength(this.currentTrek.length_2d)}\n </div>\n <div class=\"icon-label ascent\">\n {/* @ts-ignore */}\n <span translate={false} class=\"material-symbols material-symbols-outlined\">\n moving\n </span>\n {formatAscent(this.currentTrek.ascent)}\n </div>\n </div>\n {!this.isStep && (\n <div class=\"row\">\n <div class=\"icon-label route\">\n {this.route?.pictogram && <img src={this.route.pictogram} />}\n {this.route?.route}\n </div>\n <div class=\"icon-label practice\">\n {this.practice?.pictogram && <img src={this.practice.pictogram} />}\n {this.practice?.name}\n </div>\n </div>\n )}\n </div>\n </div>\n </div>\n )}\n </Host>\n );\n }\n}\n"],"mappings":"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"}