j1-template 2024.3.16 → 2024.3.17

Sign up to get free protection for your applications and to get access to all the features.
Files changed (108) hide show
  1. checksums.yaml +4 -4
  2. data/assets/data/amplitude.html +132 -61
  3. data/assets/data/banner.html +1 -1
  4. data/assets/data/cookieconsent.html +1 -1
  5. data/assets/data/docsearch.html +1 -1
  6. data/assets/data/fab.html +1 -1
  7. data/assets/data/footer.html +1 -1
  8. data/assets/data/galeries.html +1 -1
  9. data/assets/data/gallery_customizer.html +1 -1
  10. data/assets/data/gemini-ui.html +1 -1
  11. data/assets/data/iframes.html +1 -1
  12. data/assets/data/masonry.html +1 -1
  13. data/assets/data/masterslider.html +1 -1
  14. data/assets/data/menu.html +1 -1
  15. data/assets/data/mmenu.html +1 -1
  16. data/assets/data/mmenu_sidebar.html +1 -1
  17. data/assets/data/mmenu_toc.html +1 -1
  18. data/assets/data/panel.html +1 -1
  19. data/assets/data/quicklinks.html +1 -1
  20. data/assets/data/rtext_resizer.html +1 -1
  21. data/assets/data/slick.html +1 -1
  22. data/assets/data/speak2me.html +1 -1
  23. data/assets/data/swiper.html +313 -0
  24. data/assets/theme/j1/adapter/js/amplitude.30.js +1177 -0
  25. data/assets/theme/j1/adapter/js/amplitude.js +152 -121
  26. data/assets/theme/j1/adapter/js/j1.js +3 -3
  27. data/assets/theme/j1/adapter/js/masterslider.js +2 -1
  28. data/assets/theme/j1/adapter/js/swiper.js +231 -0
  29. data/assets/theme/j1/modules/amplitudejs/css/theme/uno/dark/amplitude.css +13 -3
  30. data/assets/theme/j1/modules/amplitudejs/css/theme/uno/dark/amplitude.min.css +1 -1
  31. data/assets/theme/j1/modules/amplitudejs/css/theme/uno/dark/player/large.css +53 -6
  32. data/assets/theme/j1/modules/amplitudejs/css/theme/uno/dark/player/large.min.css +2 -1
  33. data/assets/theme/j1/modules/amplitudejs/js/tech/ytp.15.js +1594 -0
  34. data/assets/theme/j1/modules/amplitudejs/js/tech/ytp.js +1617 -89
  35. data/assets/theme/j1/modules/amplitudejs/js/visualizations/bar.js +1 -1
  36. data/assets/theme/j1/modules/amplitudejs/js/visualizations/circular-equalizer.js +31 -1
  37. data/assets/theme/j1/modules/amplitudejs/js/visualizations/frequency-analyzer.js +1 -1
  38. data/assets/theme/j1/modules/amplitudejs/js/visualizations/michael-bromley.js +1 -1
  39. data/assets/theme/j1/modules/amplitudejs/js/visualizations/template.js +1 -1
  40. data/assets/theme/j1/modules/photoswipe/.version_5.4.4 +6 -0
  41. data/assets/theme/j1/modules/photoswipe/LICENSE +21 -0
  42. data/assets/theme/j1/modules/photoswipe/README.md +32 -0
  43. data/assets/theme/j1/modules/photoswipe/css/org/photoswipe-dynamic-caption-plugin.umd.min.js +5 -0
  44. data/assets/theme/j1/modules/photoswipe/css/org/photoswipe.css +420 -0
  45. data/assets/theme/j1/modules/photoswipe/css/photoswipe-caption-plugin.css +67 -0
  46. data/assets/theme/j1/modules/photoswipe/css/photoswipe-caption-plugin.min.css +16 -0
  47. data/assets/theme/j1/modules/photoswipe/css/photoswipe.css +376 -0
  48. data/assets/theme/j1/modules/photoswipe/css/photoswipe.min.css +17 -0
  49. data/assets/theme/j1/modules/photoswipe/css/scss/photoswipe.scss +427 -0
  50. data/assets/theme/j1/modules/photoswipe/example/photoswipe-caption-plugin.html +237 -0
  51. data/assets/theme/j1/modules/photoswipe/example/test-gallery.html +36 -0
  52. data/assets/theme/j1/modules/photoswipe/js/README.md +43 -0
  53. data/assets/theme/j1/modules/photoswipe/js/photoswipe-caption-plugin.min.js +5 -0
  54. data/assets/theme/j1/modules/photoswipe/js/photoswipe-core.min.js +18 -0
  55. data/assets/theme/j1/modules/photoswipe/js/photoswipe-lightbox.min.js +18 -0
  56. data/assets/theme/j1/modules/swiper/.version_1.2.0 +15 -0
  57. data/assets/theme/j1/modules/swiper/LICENSE +20 -0
  58. data/assets/theme/j1/modules/swiper/README.md +95 -0
  59. data/assets/theme/j1/modules/swiper/css/swiper-bundle.css +740 -0
  60. data/assets/theme/j1/modules/swiper/css/swiper-bundle.min..css +17 -0
  61. data/assets/theme/j1/modules/swiper/css/theme/uno.css +249 -0
  62. data/assets/theme/j1/modules/swiper/css/theme/uno.min.css +154 -0
  63. data/assets/theme/j1/modules/swiper/js/swiper-bundle.js +9785 -0
  64. data/assets/theme/j1/modules/swiper/js/swiper-bundle.min.js +17 -0
  65. data/assets/theme/j1/modules/swiper/swiperjs.com-demos.url +2 -0
  66. data/lib/j1/version.rb +1 -1
  67. data/lib/starter_web/README.md +5 -5
  68. data/lib/starter_web/_config.yml +1 -1
  69. data/lib/starter_web/_data/modules/amplitude.yml +374 -39
  70. data/lib/starter_web/_data/modules/defaults/amplitude.yml +60 -35
  71. data/lib/starter_web/_data/modules/defaults/slick.yml +1 -1
  72. data/lib/starter_web/_data/modules/defaults/swiper.yml +515 -0
  73. data/lib/starter_web/_data/modules/swiper.yml +227 -0
  74. data/lib/starter_web/_data/resources.yml +53 -1
  75. data/lib/starter_web/_data/templates/feed.xml +1 -1
  76. data/lib/starter_web/_plugins/asciidoctor/amplitude-block.rb +1 -0
  77. data/lib/starter_web/_plugins/asciidoctor/videojs-block.rb +0 -4
  78. data/lib/starter_web/_plugins/index/lunr.rb +1 -1
  79. data/lib/starter_web/assets/video/poster/youtube/faelle_des_bnd/der_unverzichtbare_feind.jpg +0 -0
  80. data/lib/starter_web/assets/video/poster/youtube/faelle_des_bnd/ein_diener_vieler_herren.jpg +0 -0
  81. data/lib/starter_web/assets/video/poster/youtube/the_piano/the-piano.jpg +0 -0
  82. data/lib/starter_web/package.json +1 -1
  83. data/lib/starter_web/pages/public/_includes/attributes.asciidoc +45 -0
  84. data/lib/starter_web/pages/public/_includes/documents/photoswipe/200_photoswipe_parameters.asciidoc +510 -0
  85. data/lib/starter_web/pages/public/_includes/documents/photoswipe/210_photoswipe_lightbox_parameters.asciidoc +98 -0
  86. data/lib/starter_web/pages/public/_includes/documents/photoswipe/300_caption_plugin_for_photoSwipe.asciidoc +327 -0
  87. data/lib/starter_web/pages/public/_includes/documents/swiper/100_swiper_features.asciidoc +50 -0
  88. data/lib/starter_web/pages/public/_includes/documents/swiper/100_swiper_html_layout.asciidoc +122 -0
  89. data/lib/starter_web/pages/public/_includes/documents/swiper/100_swiper_initialization.asciidoc +53 -0
  90. data/lib/starter_web/pages/public/_includes/documents/swiper/110_swiper_common_options.asciidoc +43 -0
  91. data/lib/starter_web/pages/public/_includes/documents/swiper/200_swiper_parameters_a_k.asciidoc +994 -0
  92. data/lib/starter_web/pages/public/_includes/documents/swiper/200_swiper_parameters_l_o.asciidoc +473 -0
  93. data/lib/starter_web/pages/public/_includes/documents/swiper/200_swiper_parameters_p_s.asciidoc +700 -0
  94. data/lib/starter_web/pages/public/_includes/documents/swiper/200_swiper_parameters_t_z.asciidoc +413 -0
  95. data/lib/starter_web/pages/public/_includes/documents/swiper/300_swiper_instance_properties.asciidoc +873 -0
  96. data/lib/starter_web/pages/public/_includes/documents/swiper/400_swiper_modules.asciidoc +2514 -0
  97. data/lib/starter_web/pages/public/_includes/documents/swiper/500_swiper_methods.asciidoc +989 -0
  98. data/lib/starter_web/pages/public/_includes/documents/swiper/600_swiper_events.asciidoc +1534 -0
  99. data/lib/starter_web/pages/public/amplitude_yt_tester.adoc +77 -63
  100. data/lib/starter_web/pages/public/photoswipe_api.adoc +150 -0
  101. data/lib/starter_web/pages/public/swiper_api.adoc +128 -0
  102. data/lib/starter_web/pages/public/swiper_tester.adoc +973 -0
  103. data/lib/starter_web/pages/public/tour/modal_extentions.adoc +12 -5
  104. data/lib/starter_web/pages/public/tour/play_audio.adoc +60 -5
  105. data/lib/starter_web/pages/public/tour/play_video.adoc +30 -0
  106. data/lib/starter_web/pages/public/tour/present_images.adoc +5 -5
  107. metadata +56 -3
  108. data/assets/theme/j1/modules/amplitudejs/js/tech/youtube_example.js +0 -211
@@ -21,7 +21,7 @@
21
21
  * Simple visualization that shows the waveforms as a bar graph
22
22
  */
23
23
 
24
- function BarVisualization(){
24
+ function BarVisualization() {
25
25
  /*
26
26
  Define the ID, name, and initialize the container. These are a part
27
27
  of the visualization template and are necessary.
@@ -17,4 +17,34 @@
17
17
  # -----------------------------------------------------------------------------
18
18
  */
19
19
 
20
- function CircularEqualizer(){this.id="circular_equalizer",this.name="Circular Equalizer",this.container="",this.preferences={barWidth:2,barHeight:2,barSpacing:5,barColor:"#ffffff",shadowColor:"#ffffff",shadowBlur:10},this.analyser="",this.frequencyData=[],this.canvas=null,this.canvasCtx=null,this.gradient=null,this.getID=function(){return this.id},this.getName=function(){return this.name},this.setPreferences=function(t){for(var e in this.preferences)null!=t[e]&&(this.preferences[e]=t[e])},this.startVisualization=function(t){this.analyser=Amplitude.getAnalyser(),this.container=t,window.cont=this.container,this.canvas=document.createElement("canvas"),this.canvas.width=this.container.offsetWidth,this.canvas.height=this.container.offsetHeight,this.container.appendChild(this.canvas),this.canvasCtx=this.canvas.getContext("2d"),this.frequencyData=new Uint8Array(this.analyser.frequencyBinCount),this.gradient=this.canvasCtx.createLinearGradient(0,0,0,400),this.gradient.addColorStop(0,this.preferences.barColor),this.gradient.addColorStop(1,"orange"),this.canvasCtx.fillStyle=this.gradient,this.canvasCtx.shadowBlur=this.preferences.shadowBlur,this.canvasCtx.shadowColor=this.preferences.shadowColor,requestAnimationFrame(this.renderFrame.bind(this))},this.stopVisualization=function(){this.container.innerHTML="",window.cancelAnimationFrame(this.renderFrame.bind(this))},this.renderFrame=function(){requestAnimationFrame(this.renderFrame.bind(this)),this.analyser.getByteFrequencyData(this.frequencyData),this.canvasCtx.clearRect(0,0,this.canvas.width,this.canvas.height);for(var t=this.canvas.width/2,e=this.canvas.height/2,a=t-27,i=Math.floor(2*a*Math.PI/(this.preferences.barWidth+this.preferences.barSpacing)),s=i-Math.floor(25*i/100),n=Math.floor(this.frequencyData.length/i),r=0;r<s;r++){var h=this.frequencyData[r*n],c=2*r*Math.PI/i+Math.PI,o=(135-this.preferences.barWidth)*Math.PI/180,f=a-(h/12-this.preferences.barHeight),l=this.preferences.barWidth,d=h/6+this.preferences.barHeight;this.canvasCtx.save(),this.canvasCtx.translate(t,e),this.canvasCtx.rotate(c-o),this.canvasCtx.fillRect(0,f,l,d),this.canvasCtx.restore()}}}
20
+ function CircularEqualizer() {
21
+ this.id = "circular_equalizer", this.name = "Circular Equalizer", this.container = "", this.preferences = {
22
+ barWidth: 2,
23
+ barHeight: 2,
24
+ barSpacing: 5,
25
+ barColor: "#ffffff",
26
+ shadowColor: "#ffffff",
27
+ shadowBlur: 10
28
+ }, this.analyser = "", this.frequencyData = [], this.canvas = null, this.canvasCtx = null, this.gradient = null, this.getID = function () {
29
+ return this.id
30
+ }, this.getName = function () {
31
+ return this.name
32
+ }, this.setPreferences = function (t) {
33
+ for (var e in this.preferences) null != t[e] && (this.preferences[e] = t[e])
34
+ }, this.startVisualization = function (t) {
35
+ this.analyser = Amplitude.getAnalyser(), this.container = t, window.cont = this.container, this.canvas = document.createElement("canvas"), this.canvas.width = this.container.offsetWidth, this.canvas.height = this.container.offsetHeight, this.container.appendChild(this.canvas), this.canvasCtx = this.canvas.getContext("2d"), this.frequencyData = new Uint8Array(this.analyser.frequencyBinCount), this.gradient = this.canvasCtx.createLinearGradient(0, 0, 0, 400), this.gradient.addColorStop(0, this.preferences.barColor), this.gradient.addColorStop(1, "orange"), this.canvasCtx.fillStyle = this.gradient, this.canvasCtx.shadowBlur = this.preferences.shadowBlur, this.canvasCtx.shadowColor = this.preferences.shadowColor, requestAnimationFrame(this.renderFrame.bind(this))
36
+ }, this.stopVisualization = function () {
37
+ this.container.innerHTML = "", window.cancelAnimationFrame(this.renderFrame.bind(this))
38
+ }, this.renderFrame = function () {
39
+ requestAnimationFrame(this.renderFrame.bind(this)), this.analyser.getByteFrequencyData(this.frequencyData), this.canvasCtx.clearRect(0, 0, this.canvas.width, this.canvas.height);
40
+ for (var t = this.canvas.width / 2, e = this.canvas.height / 2, a = t - 27, i = Math.floor(2 * a * Math.PI / (this.preferences.barWidth + this.preferences.barSpacing)), s = i - Math.floor(25 * i / 100), n = Math.floor(this.frequencyData.length / i), r = 0; r < s; r++) {
41
+ var h = this.frequencyData[r * n],
42
+ c = 2 * r * Math.PI / i + Math.PI,
43
+ o = (135 - this.preferences.barWidth) * Math.PI / 180,
44
+ f = a - (h / 12 - this.preferences.barHeight),
45
+ l = this.preferences.barWidth,
46
+ d = h / 6 + this.preferences.barHeight;
47
+ this.canvasCtx.save(), this.canvasCtx.translate(t, e), this.canvasCtx.rotate(c - o), this.canvasCtx.fillRect(0, f, l, d), this.canvasCtx.restore()
48
+ }
49
+ }
50
+ }
@@ -17,7 +17,7 @@
17
17
  # -----------------------------------------------------------------------------
18
18
  */
19
19
 
20
- function FrequencyAnalyzerVisualization(){
20
+ function FrequencyAnalyzerVisualization() {
21
21
  /*
22
22
  Define the ID of your visualization. This is used to apply
23
23
  visualizations to songs, playlists, and default. It is a JSON
@@ -22,7 +22,7 @@
22
22
  https://github.com/michaelbromley/soundcloud-visualizer
23
23
  */
24
24
 
25
- function MichaelBromleyVisualization(){
25
+ function MichaelBromleyVisualization() {
26
26
  /*
27
27
  Sets the ID and Name of the visualization.
28
28
  */
@@ -29,7 +29,7 @@
29
29
  name for your visualization.
30
30
  */
31
31
 
32
- function VisualizationObjectName(){
32
+ function VisualizationObjectName() {
33
33
  /*
34
34
  Define the ID of your visualization. This is used to apply
35
35
  visualizations to songs, playlists, and default. It is a JSON
@@ -0,0 +1,6 @@
1
+ /*
2
+ * PhotoSwipe 5.4.4 - https://photoswipe.com
3
+ * (c) 2024 Dmytro Semenov
4
+ */
5
+
6
+ PhotoSwipe v5 — JavaScript image gallery and lightbox
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2014-2022 Dmitry Semenov, https://dimsemenov.com
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
@@ -0,0 +1,32 @@
1
+ [![Stand With Ukraine](https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/banner-direct.svg)](https://savelife.in.ua/en/)
2
+
3
+
4
+ PhotoSwipe v5 — JavaScript image gallery and lightbox
5
+
6
+ **[Demo](https://photoswipe.com)** | **[Documentation](https://photoswipe.com/getting-started/)**
7
+
8
+ [![Sponsor via OpenCollective](https://img.shields.io/opencollective/all/photoswipe?label=Sponsor%20via%20OpenCollective)](https://opencollective.com/photoswipe)
9
+ [![Follow on Twitter](https://img.shields.io/twitter/follow/photoswipe?style=social)](https://twitter.com/intent/user?screen_name=photoswipe)
10
+
11
+
12
+ ### Repo structure
13
+
14
+ - `dist/` - main JS and CSS
15
+ - `src/` - source JS and CSS.
16
+ - `src/js/photoswipe.js` - entry for PhotoSwipe Core.
17
+ - `src/js/lightbox/lightbox.js` - entry for PhotoSwipe Lightbox.
18
+ - `docs/` - documentation markdown files.
19
+ - `demo-docs-website/` - website with documentation, demos and manual tests.
20
+ - `build/` - rollup build config.
21
+
22
+ To build JS and CSS in `dist/` directory, run `npm run build`.
23
+
24
+ To run the demo website and automatically rebuild files during development, run `npm install` in `demo-docs-website/` and `npm run watch` in the root directory.
25
+
26
+ ### Older versions
27
+
28
+ Documentation for the old version (v4) can be found [here](https://photoswipe.com/v4-docs/getting-started.html) and [the code for 4.1.3 is here](https://github.com/dimsemenov/PhotoSwipe/tree/v4.1.3).
29
+
30
+ ---
31
+
32
+ This project is tested with [BrowserStack](https://www.browserstack.com/).
@@ -0,0 +1,5 @@
1
+ /*!
2
+ * PhotoSwipe Dynamic Caption plugin 1.2.7 - https://photoswipe.com
3
+ * (c) 2022 Dmytro Semenov
4
+ */
5
+ !function(t,i){"object"==typeof exports&&"undefined"!=typeof module?module.exports=i():"function"==typeof define&&define.amd?define(i):(t="undefined"!=typeof globalThis?globalThis:t||self).PhotoSwipeDynamicCaption=i()}(this,(function(){"use strict";const t={captionContent:".pswp-caption-content",type:"auto",horizontalEdgeThreshold:20,mobileCaptionOverlapRatio:.3,mobileLayoutBreakpoint:600,verticallyCenterImage:!1};return class{constructor(i,e){this.options={...t,...e},this.lightbox=i,this.lightbox.on("init",(()=>{this.pswp=this.lightbox.pswp,this.initCaption()}))}initCaption(){const{pswp:t}=this;t.on("change",(()=>{this.showCaption(this.pswp.currSlide)})),t.on("calcSlideSize",(t=>this.onCalcSlideSize(t))),t.on("slideDestroy",(t=>{t.slide.dynamicCaption&&(t.slide.dynamicCaption.element&&t.slide.dynamicCaption.element.remove(),delete t.slide.dynamicCaption)})),t.on("zoomPanUpdate",(({slide:i})=>{if(t.opener.isOpen&&i.dynamicCaption){if(i.currZoomLevel>i.zoomLevels.initial?this.hideCaption(i):this.showCaption(i),i.dynamicCaption.element){let t=0;if(i.currZoomLevel<=i.zoomLevels.initial){const e=i.pan.y-i.bounds.center.y;Math.abs(e)>1&&(t=e)}this.setCaptionYOffset(i.dynamicCaption.element,t)}this.adjustPanArea(i,i.currZoomLevel)}})),t.on("beforeZoomTo",(i=>{this.adjustPanArea(t.currSlide,i.destZoomLevel)})),t.on("tapAction",(t=>{t.originalEvent.target.closest(".pswp__dynamic-caption")&&t.preventDefault()}))}adjustPanArea(t,i){t.dynamicCaption&&t.dynamicCaption.adjustedPanAreaSize&&(i>t.zoomLevels.initial?(t.panAreaSize.x=t.dynamicCaption.originalPanAreaSize.x,t.panAreaSize.y=t.dynamicCaption.originalPanAreaSize.y):(t.panAreaSize.x=t.dynamicCaption.adjustedPanAreaSize.x,t.panAreaSize.y=t.dynamicCaption.adjustedPanAreaSize.y))}useMobileLayout(){const{mobileLayoutBreakpoint:t}=this.options;return"function"==typeof t?t.call(this):"number"==typeof t&&window.innerWidth<t}hideCaption(t){if(t.dynamicCaption&&!t.dynamicCaption.hidden){const i=t.dynamicCaption.element;if(!i)return;t.dynamicCaption.hidden=!0,i.classList.add("pswp__dynamic-caption--faded"),t.captionFadeTimeout&&clearTimeout(t.captionFadeTimeout),t.captionFadeTimeout=setTimeout((()=>{i.style.visibility="hidden",delete t.captionFadeTimeout}),400)}}setCaptionYOffset(t,i){t.style.transform=`translateY(${i}px)`}showCaption(t){if(t.dynamicCaption&&t.dynamicCaption.hidden){const i=t.dynamicCaption.element;if(!i)return;t.dynamicCaption.hidden=!1,i.style.visibility="visible",clearTimeout(t.captionFadeTimeout),t.captionFadeTimeout=setTimeout((()=>{i.classList.remove("pswp__dynamic-caption--faded"),delete t.captionFadeTimeout}),50)}}setCaptionPosition(t,i,e){const s=i<=this.options.horizontalEdgeThreshold;t.classList[s?"add":"remove"]("pswp__dynamic-caption--on-hor-edge"),t.style.left=i+"px",t.style.top=e+"px"}setCaptionWidth(t,i){i?t.style.width=i+"px":t.style.removeProperty("width")}setCaptionType(t,i){const e=t.dataset.pswpCaptionType;i!==e&&(t.classList.add("pswp__dynamic-caption--"+i),t.classList.remove("pswp__dynamic-caption--"+e),t.dataset.pswpCaptionType=i)}updateCaptionPosition(t){if(!t.dynamicCaption||!t.dynamicCaption.type||!t.dynamicCaption.element)return;if("mobile"===t.dynamicCaption.type)return this.setCaptionType(t.dynamicCaption.element,t.dynamicCaption.type),t.dynamicCaption.element.style.removeProperty("left"),t.dynamicCaption.element.style.removeProperty("top"),void this.setCaptionWidth(t.dynamicCaption.element,!1);const i=t.zoomLevels.initial,e=Math.ceil(t.width*i),s=Math.ceil(t.height*i);this.setCaptionType(t.dynamicCaption.element,t.dynamicCaption.type),"aside"===t.dynamicCaption.type?(this.setCaptionPosition(t.dynamicCaption.element,t.bounds.center.x+e,t.bounds.center.y),this.setCaptionWidth(t.dynamicCaption.element,!1)):"below"===t.dynamicCaption.type&&(this.setCaptionPosition(t.dynamicCaption.element,t.bounds.center.x,t.bounds.center.y+s),this.setCaptionWidth(t.dynamicCaption.element,e))}onCalcSlideSize(t){const{slide:i}=t;let e,s;if(!i.dynamicCaption){i.dynamicCaption={element:void 0,type:!1,hidden:!1};const t=this.getCaptionHTML(i);if(!t)return;i.dynamicCaption.element=document.createElement("div"),i.dynamicCaption.element.className="pswp__dynamic-caption pswp__hide-on-close",i.dynamicCaption.element.innerHTML=t,this.pswp.dispatch("dynamicCaptionUpdateHTML",{captionElement:i.dynamicCaption.element,slide:i}),i.holderElement.appendChild(i.dynamicCaption.element)}if(!i.dynamicCaption.element)return;this.storeOriginalPanAreaSize(i),i.bounds.update(i.zoomLevels.initial),this.useMobileLayout()?(i.dynamicCaption.type="mobile",s=!0):"auto"===this.options.type?i.bounds.center.x>i.bounds.center.y?i.dynamicCaption.type="aside":i.dynamicCaption.type="below":i.dynamicCaption.type=this.options.type;const o=Math.ceil(i.width*i.zoomLevels.initial),n=Math.ceil(i.height*i.zoomLevels.initial);if(this.setCaptionType(i.dynamicCaption.element,i.dynamicCaption.type),"aside"===i.dynamicCaption.type){this.setCaptionWidth(i.dynamicCaption.element,!1),e=this.measureCaptionSize(i.dynamicCaption.element,t.slide);const s=e.x,n=o+i.bounds.center.x;i.panAreaSize.x-n<=s&&(i.panAreaSize.x-=s,this.recalculateZoomLevelAndBounds(i))}else if("below"===i.dynamicCaption.type||s){this.setCaptionWidth(i.dynamicCaption.element,s?this.pswp.viewportSize.x:o),e=this.measureCaptionSize(i.dynamicCaption.element,t.slide);const a=e.y;if(this.options.verticallyCenterImage)i.panAreaSize.y-=a,this.recalculateZoomLevelAndBounds(i);else{const t=n+i.bounds.center.y,e=i.panAreaSize.y-t,o=i.panAreaSize.y;if(e<=a){i.panAreaSize.y-=Math.min(2*(a-e),a),this.recalculateZoomLevelAndBounds(i);const t=i.panAreaSize.x*this.options.mobileCaptionOverlapRatio/2;s&&i.bounds.center.x>t&&(i.panAreaSize.y=o,this.recalculateZoomLevelAndBounds(i))}}}this.storeAdjustedPanAreaSize(i),this.updateCaptionPosition(i)}measureCaptionSize(t,i){const e=t.getBoundingClientRect();return this.pswp.dispatch("dynamicCaptionMeasureSize",{captionEl:t,slide:i,captionSize:{x:e.width,y:e.height}}).captionSize}recalculateZoomLevelAndBounds(t){t.zoomLevels.update(t.width,t.height,t.panAreaSize),t.bounds.update(t.zoomLevels.initial)}storeAdjustedPanAreaSize(t){t.dynamicCaption&&(t.dynamicCaption.adjustedPanAreaSize||(t.dynamicCaption.adjustedPanAreaSize={}),t.dynamicCaption.adjustedPanAreaSize.x=t.panAreaSize.x,t.dynamicCaption.adjustedPanAreaSize.y=t.panAreaSize.y)}storeOriginalPanAreaSize(t){t.dynamicCaption&&(t.dynamicCaption.originalPanAreaSize||(t.dynamicCaption.originalPanAreaSize={}),t.dynamicCaption.originalPanAreaSize.x=t.panAreaSize.x,t.dynamicCaption.originalPanAreaSize.y=t.panAreaSize.y)}getCaptionHTML(t){if("function"==typeof this.options.captionContent)return this.options.captionContent.call(this,t);const i=t.data.element;let e="";if(i){const t=i.querySelector(this.options.captionContent);if(t)e=t.innerHTML;else{const t=i.querySelector("img");t&&(e=t.getAttribute("alt"))}}return e}}}));
@@ -0,0 +1,420 @@
1
+ /*! PhotoSwipe main CSS by Dmytro Semenov | photoswipe.com */
2
+
3
+ .pswp {
4
+ --pswp-bg: #000;
5
+ --pswp-placeholder-bg: #222;
6
+
7
+
8
+ --pswp-root-z-index: 100000;
9
+
10
+ --pswp-preloader-color: rgba(79, 79, 79, 0.4);
11
+ --pswp-preloader-color-secondary: rgba(255, 255, 255, 0.9);
12
+
13
+ /* defined via js:
14
+ --pswp-transition-duration: 333ms; */
15
+
16
+ --pswp-icon-color: #fff;
17
+ --pswp-icon-color-secondary: #4f4f4f;
18
+ --pswp-icon-stroke-color: #4f4f4f;
19
+ --pswp-icon-stroke-width: 2px;
20
+
21
+ --pswp-error-text-color: var(--pswp-icon-color);
22
+ }
23
+
24
+
25
+ /*
26
+ Styles for basic PhotoSwipe (pswp) functionality (sliding area, open/close transitions)
27
+ */
28
+
29
+ .pswp {
30
+ position: fixed;
31
+ top: 0;
32
+ left: 0;
33
+ width: 100%;
34
+ height: 100%;
35
+ z-index: var(--pswp-root-z-index);
36
+ display: none;
37
+ touch-action: none;
38
+ outline: 0;
39
+ opacity: 0.003;
40
+ contain: layout style size;
41
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
42
+ }
43
+
44
+ /* Prevents focus outline on the root element,
45
+ (it may be focused initially) */
46
+ .pswp:focus {
47
+ outline: 0;
48
+ }
49
+
50
+ .pswp * {
51
+ box-sizing: border-box;
52
+ }
53
+
54
+ .pswp img {
55
+ max-width: none;
56
+ }
57
+
58
+ .pswp--open {
59
+ display: block;
60
+ }
61
+
62
+ .pswp,
63
+ .pswp__bg {
64
+ transform: translateZ(0);
65
+ will-change: opacity;
66
+ }
67
+
68
+ .pswp__bg {
69
+ opacity: 0.005;
70
+ background: var(--pswp-bg);
71
+ }
72
+
73
+ .pswp,
74
+ .pswp__scroll-wrap {
75
+ overflow: hidden;
76
+ }
77
+
78
+ .pswp__scroll-wrap,
79
+ .pswp__bg,
80
+ .pswp__container,
81
+ .pswp__item,
82
+ .pswp__content,
83
+ .pswp__img,
84
+ .pswp__zoom-wrap {
85
+ position: absolute;
86
+ top: 0;
87
+ left: 0;
88
+ width: 100%;
89
+ height: 100%;
90
+ }
91
+
92
+ .pswp__img,
93
+ .pswp__zoom-wrap {
94
+ width: auto;
95
+ height: auto;
96
+ }
97
+
98
+ .pswp--click-to-zoom.pswp--zoom-allowed .pswp__img {
99
+ cursor: -webkit-zoom-in;
100
+ cursor: -moz-zoom-in;
101
+ cursor: zoom-in;
102
+ }
103
+
104
+ .pswp--click-to-zoom.pswp--zoomed-in .pswp__img {
105
+ cursor: move;
106
+ cursor: -webkit-grab;
107
+ cursor: -moz-grab;
108
+ cursor: grab;
109
+ }
110
+
111
+ .pswp--click-to-zoom.pswp--zoomed-in .pswp__img:active {
112
+ cursor: -webkit-grabbing;
113
+ cursor: -moz-grabbing;
114
+ cursor: grabbing;
115
+ }
116
+
117
+ /* :active to override grabbing cursor */
118
+ .pswp--no-mouse-drag.pswp--zoomed-in .pswp__img,
119
+ .pswp--no-mouse-drag.pswp--zoomed-in .pswp__img:active,
120
+ .pswp__img {
121
+ cursor: -webkit-zoom-out;
122
+ cursor: -moz-zoom-out;
123
+ cursor: zoom-out;
124
+ }
125
+
126
+
127
+ /* Prevent selection and tap highlights */
128
+ .pswp__container,
129
+ .pswp__img,
130
+ .pswp__button,
131
+ .pswp__counter {
132
+ -webkit-user-select: none;
133
+ -moz-user-select: none;
134
+ -ms-user-select: none;
135
+ user-select: none;
136
+ }
137
+
138
+ .pswp__item {
139
+ /* z-index for fade transition */
140
+ z-index: 1;
141
+ overflow: hidden;
142
+ }
143
+
144
+ .pswp__hidden {
145
+ display: none !important;
146
+ }
147
+
148
+ /* Allow to click through pswp__content element, but not its children */
149
+ .pswp__content {
150
+ pointer-events: none;
151
+ }
152
+ .pswp__content > * {
153
+ pointer-events: auto;
154
+ }
155
+
156
+
157
+ /*
158
+
159
+ PhotoSwipe UI
160
+
161
+ */
162
+
163
+ /*
164
+ Error message appears when image is not loaded
165
+ (JS option errorMsg controls markup)
166
+ */
167
+ .pswp__error-msg-container {
168
+ display: grid;
169
+ }
170
+ .pswp__error-msg {
171
+ margin: auto;
172
+ font-size: 1em;
173
+ line-height: 1;
174
+ color: var(--pswp-error-text-color);
175
+ }
176
+
177
+ /*
178
+ class pswp__hide-on-close is applied to elements that
179
+ should hide (for example fade out) when PhotoSwipe is closed
180
+ and show (for example fade in) when PhotoSwipe is opened
181
+ */
182
+ .pswp .pswp__hide-on-close {
183
+ opacity: 0.005;
184
+ will-change: opacity;
185
+ transition: opacity var(--pswp-transition-duration) cubic-bezier(0.4, 0, 0.22, 1);
186
+ z-index: 10; /* always overlap slide content */
187
+ pointer-events: none; /* hidden elements should not be clickable */
188
+ }
189
+
190
+ /* class pswp--ui-visible is added when opening or closing transition starts */
191
+ .pswp--ui-visible .pswp__hide-on-close {
192
+ opacity: 1;
193
+ pointer-events: auto;
194
+ }
195
+
196
+ /* <button> styles, including css reset */
197
+ .pswp__button {
198
+ position: relative;
199
+ display: block;
200
+ width: 50px;
201
+ height: 60px;
202
+ padding: 0;
203
+ margin: 0;
204
+ overflow: hidden;
205
+ cursor: pointer;
206
+ background: none;
207
+ border: 0;
208
+ box-shadow: none;
209
+ opacity: 0.85;
210
+ -webkit-appearance: none;
211
+ -webkit-touch-callout: none;
212
+ }
213
+
214
+ .pswp__button:hover,
215
+ .pswp__button:active,
216
+ .pswp__button:focus {
217
+ transition: none;
218
+ padding: 0;
219
+ background: none;
220
+ border: 0;
221
+ box-shadow: none;
222
+ opacity: 1;
223
+ }
224
+
225
+ .pswp__button:disabled {
226
+ opacity: 0.3;
227
+ cursor: auto;
228
+ }
229
+
230
+ .pswp__icn {
231
+ fill: var(--pswp-icon-color);
232
+ color: var(--pswp-icon-color-secondary);
233
+ }
234
+
235
+ .pswp__icn {
236
+ position: absolute;
237
+ top: 14px;
238
+ left: 9px;
239
+ width: 32px;
240
+ height: 32px;
241
+ overflow: hidden;
242
+ pointer-events: none;
243
+ }
244
+
245
+ .pswp__icn-shadow {
246
+ stroke: var(--pswp-icon-stroke-color);
247
+ stroke-width: var(--pswp-icon-stroke-width);
248
+ fill: none;
249
+ }
250
+
251
+ .pswp__icn:focus {
252
+ outline: 0;
253
+ }
254
+
255
+ /*
256
+ div element that matches size of large image,
257
+ large image loads on top of it,
258
+ used when msrc is not provided
259
+ */
260
+ div.pswp__img--placeholder,
261
+ .pswp__img--with-bg {
262
+ background: var(--pswp-placeholder-bg);
263
+ }
264
+
265
+ .pswp__top-bar {
266
+ position: absolute;
267
+ left: 0;
268
+ top: 0;
269
+ width: 100%;
270
+ height: 60px;
271
+ display: flex;
272
+ flex-direction: row;
273
+ justify-content: flex-end;
274
+ z-index: 10;
275
+
276
+ /* allow events to pass through top bar itself */
277
+ pointer-events: none !important;
278
+ }
279
+ .pswp__top-bar > * {
280
+ pointer-events: auto;
281
+ /* this makes transition significantly more smooth,
282
+ even though inner elements are not animated */
283
+ will-change: opacity;
284
+ }
285
+
286
+
287
+ /*
288
+
289
+ Close button
290
+
291
+ */
292
+ .pswp__button--close {
293
+ margin-right: 6px;
294
+ }
295
+
296
+
297
+ /*
298
+
299
+ Arrow buttons
300
+
301
+ */
302
+ .pswp__button--arrow {
303
+ position: absolute;
304
+ top: 0;
305
+ width: 75px;
306
+ height: 100px;
307
+ top: 50%;
308
+ margin-top: -50px;
309
+ }
310
+
311
+ .pswp__button--arrow:disabled {
312
+ display: none;
313
+ cursor: default;
314
+ }
315
+
316
+ .pswp__button--arrow .pswp__icn {
317
+ top: 50%;
318
+ margin-top: -30px;
319
+ width: 60px;
320
+ height: 60px;
321
+ background: none;
322
+ border-radius: 0;
323
+ }
324
+
325
+ .pswp--one-slide .pswp__button--arrow {
326
+ display: none;
327
+ }
328
+
329
+ /* hide arrows on touch screens */
330
+ .pswp--touch .pswp__button--arrow {
331
+ visibility: hidden;
332
+ }
333
+
334
+ /* show arrows only after mouse was used */
335
+ .pswp--has_mouse .pswp__button--arrow {
336
+ visibility: visible;
337
+ }
338
+
339
+ .pswp__button--arrow--prev {
340
+ right: auto;
341
+ left: 0px;
342
+ }
343
+
344
+ .pswp__button--arrow--next {
345
+ right: 0px;
346
+ }
347
+ .pswp__button--arrow--next .pswp__icn {
348
+ left: auto;
349
+ right: 14px;
350
+ /* flip horizontally */
351
+ transform: scale(-1, 1);
352
+ }
353
+
354
+ /*
355
+
356
+ Zoom button
357
+
358
+ */
359
+ .pswp__button--zoom {
360
+ display: none;
361
+ }
362
+
363
+ .pswp--zoom-allowed .pswp__button--zoom {
364
+ display: block;
365
+ }
366
+
367
+ /* "+" => "-" */
368
+ .pswp--zoomed-in .pswp__zoom-icn-bar-v {
369
+ display: none;
370
+ }
371
+
372
+
373
+ /*
374
+
375
+ Loading indicator
376
+
377
+ */
378
+ .pswp__preloader {
379
+ position: relative;
380
+ overflow: hidden;
381
+ width: 50px;
382
+ height: 60px;
383
+ margin-right: auto;
384
+ }
385
+
386
+ .pswp__preloader .pswp__icn {
387
+ opacity: 0;
388
+ transition: opacity 0.2s linear;
389
+ animation: pswp-clockwise 600ms linear infinite;
390
+ }
391
+
392
+ .pswp__preloader--active .pswp__icn {
393
+ opacity: 0.85;
394
+ }
395
+
396
+ @keyframes pswp-clockwise {
397
+ 0% { transform: rotate(0deg); }
398
+ 100% { transform: rotate(360deg); }
399
+ }
400
+
401
+
402
+ /*
403
+
404
+ "1 of 10" counter
405
+
406
+ */
407
+ .pswp__counter {
408
+ height: 30px;
409
+ margin-top: 15px;
410
+ margin-inline-start: 20px;
411
+ font-size: 14px;
412
+ line-height: 30px;
413
+ color: var(--pswp-icon-color);
414
+ text-shadow: 1px 1px 3px var(--pswp-icon-color-secondary);
415
+ opacity: 0.85;
416
+ }
417
+
418
+ .pswp--one-slide .pswp__counter {
419
+ display: none;
420
+ }
@@ -0,0 +1,67 @@
1
+ /*
2
+ # -----------------------------------------------------------------------------
3
+ # ~/assets/theme/j1/modules/photoswipe/css/photoswipe-caption-plugin.css
4
+ # Caption plugin for PhotoSwipe v5
5
+ # -----------------------------------------------------------------------------
6
+ #
7
+ # Product/Info:
8
+ # https://github.com/dimsemenov/photoswipe-dynamic-caption-plugin
9
+ # Copyright (C) 2021 Dmitry Semenov
10
+ #
11
+ # Caption plugin for PhotoSwipe is licensed under the MIT License.
12
+ # See: https://github.com/dimsemenov/photoswipe-dynamic-caption-plugin/blob/main/LICENSE
13
+ # -----------------------------------------------------------------------------
14
+ */
15
+
16
+ .pswp__dynamic-caption {
17
+ color: #fff;
18
+ position: absolute;
19
+ width: 100%;
20
+ left: 0;
21
+ top: 0;
22
+ transition: opacity 120ms linear !important; /* override default */
23
+ }
24
+
25
+ .pswp-caption-content {
26
+ display: none;
27
+ }
28
+
29
+ .pswp__dynamic-caption a {
30
+ color: #fff;
31
+ }
32
+
33
+ .pswp__dynamic-caption--faded {
34
+ opacity: 0 !important;
35
+ }
36
+
37
+ .pswp__dynamic-caption--aside {
38
+ width: auto;
39
+ max-width: 300px;
40
+ padding: 20px 15px 20px 20px;
41
+ margin-top: 70px;
42
+ }
43
+
44
+ .pswp__dynamic-caption--below {
45
+ width: auto;
46
+ max-width: 700px;
47
+ padding: 15px 0 0;
48
+ }
49
+
50
+ .pswp__dynamic-caption--on-hor-edge {
51
+ padding-left: 15px;
52
+ padding-right: 15px;
53
+ }
54
+
55
+ .pswp__dynamic-caption--mobile {
56
+ width: 100%;
57
+ background: rgba(0,0,0,0.5);
58
+ padding: 10px 15px;
59
+
60
+ right: 0;
61
+ bottom: 0;
62
+
63
+ /* override styles that were set via JS.
64
+ as they interfere with size measurement */
65
+ top: auto !important;
66
+ left: 0 !important;
67
+ }
@@ -0,0 +1,16 @@
1
+ /*
2
+ # -----------------------------------------------------------------------------
3
+ # ~/assets/theme/j1/modules/photoswipe/css/photoswipe-caption-plugin.css
4
+ # Caption plugin for PhotoSwipe v5
5
+ # -----------------------------------------------------------------------------
6
+ #
7
+ # Product/Info:
8
+ # https://github.com/dimsemenov/photoswipe-dynamic-caption-plugin
9
+ # Copyright (C) 2021 Dmitry Semenov
10
+ #
11
+ # Caption plugin for PhotoSwipe is licensed under the MIT License.
12
+ # See: https://github.com/dimsemenov/photoswipe-dynamic-caption-plugin/blob/main/LICENSE
13
+ # -----------------------------------------------------------------------------
14
+ */
15
+
16
+ .pswp__dynamic-caption{color:#fff;position:absolute;width:100%;left:0;top:0;transition:opacity .12s linear!important}.pswp-caption-content{display:none}.pswp__dynamic-caption a{color:#fff}.pswp__dynamic-caption--faded{opacity:0!important}.pswp__dynamic-caption--aside{width:auto;max-width:300px;padding:20px 15px 20px 20px;margin-top:70px}.pswp__dynamic-caption--below{width:auto;max-width:700px;padding:15px 0 0}.pswp__dynamic-caption--on-hor-edge{padding-left:15px;padding-right:15px}.pswp__dynamic-caption--mobile{width:100%;background:rgba(0,0,0,.5);padding:10px 15px;right:0;bottom:0;top:auto!important;left:0!important}