Version Description
/ 2022-03-15 =
Bug fixes
- Fix Form block where nonce is unverified and some sanitization #2329
- Fix Gist block to make sure there is no PHPCS error #2323
- Fix Events block timezone problem #2319
Misc
- Lint everything on CI #2311
- Update block-assets syntax #2322
- Update some dependencies #2313
- Enhance restore cache to also install missing deps on build pipeline #2317
Download this release
Release Info
| Developer | Godaddy |
| Plugin | |
| Version | 2.22.4 |
| Comparing to | |
| See all releases | |
Code changes from version 2.22.2 to 2.22.4
- class-coblocks.php +2 -2
- dist/404.js +1 -1
- dist/958.js +1 -1
- dist/js/coblocks-events.asset.php +1 -1
- dist/js/coblocks-events.js +1 -1
- dist/js/coblocks-post-carousel.asset.php +1 -1
- dist/js/coblocks-post-carousel.js +1 -1
- dist/js/coblocks-tinyswiper-initializer.asset.php +1 -1
- dist/js/coblocks-tinyswiper-initializer.js +1 -1
- dist/js/vendors/tiny-swiper.asset.php +1 -1
- dist/js/vendors/tiny-swiper.js +1 -1
- includes/admin/class-coblocks-crop-settings.php +2 -6
- includes/class-coblocks-block-assets.php +11 -7
- includes/class-coblocks-form.php +21 -19
- includes/ical-parser/class-coblocks-ical.php +270 -235
- readme.txt +17 -1
- src/blocks/gist/index.php +2 -3
class-coblocks.php
CHANGED
|
@@ -4,7 +4,7 @@
|
|
| 4 |
* Description: CoBlocks is a suite of professional <strong>page building content blocks</strong> for the WordPress Gutenberg block editor. Our blocks are hyper-focused on empowering makers to build beautifully rich pages in WordPress.
|
| 5 |
* Author: GoDaddy
|
| 6 |
* Author URI: https://www.godaddy.com
|
| 7 |
-
* Version: 2.22.
|
| 8 |
* Text Domain: coblocks
|
| 9 |
* Domain Path: /languages
|
| 10 |
* Tested up to: 5.9
|
|
@@ -25,7 +25,7 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
| 25 |
exit;
|
| 26 |
}
|
| 27 |
|
| 28 |
-
define( 'COBLOCKS_VERSION', '2.22.
|
| 29 |
define( 'COBLOCKS_PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
|
| 30 |
define( 'COBLOCKS_PLUGIN_URL', plugin_dir_url( __FILE__ ) );
|
| 31 |
define( 'COBLOCKS_PLUGIN_FILE', __FILE__ );
|
| 4 |
* Description: CoBlocks is a suite of professional <strong>page building content blocks</strong> for the WordPress Gutenberg block editor. Our blocks are hyper-focused on empowering makers to build beautifully rich pages in WordPress.
|
| 5 |
* Author: GoDaddy
|
| 6 |
* Author URI: https://www.godaddy.com
|
| 7 |
+
* Version: 2.22.4
|
| 8 |
* Text Domain: coblocks
|
| 9 |
* Domain Path: /languages
|
| 10 |
* Tested up to: 5.9
|
| 25 |
exit;
|
| 26 |
}
|
| 27 |
|
| 28 |
+
define( 'COBLOCKS_VERSION', '2.22.4' );
|
| 29 |
define( 'COBLOCKS_PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
|
| 30 |
define( 'COBLOCKS_PLUGIN_URL', plugin_dir_url( __FILE__ ) );
|
| 31 |
define( 'COBLOCKS_PLUGIN_FILE', __FILE__ );
|
dist/404.js
CHANGED
|
@@ -34,4 +34,4 @@ label:(0,p.__)("S","coblocks"),tooltip:(0,p.__)("Small","coblocks"),value:"sml"}
|
|
| 34 |
/* translators: %1$d is the order number of the image, %2$d is the total number of images */
|
| 35 |
(0,p.__)("image %1$d of %2$d in gallery","coblocks"),t+1,f.length);return(0,l.createElement)(l.Fragment,null,(0,l.createElement)($,{ariaLabel:o,handleRemoveImage:H,handleReplaceImage:j,index:t,setAttributes:m}))}))),[T,M,C,I,P,g,h,f,y,_,L,E,S]),Y=()=>{const t=!(!q||"skip"===q)&&(0,p.sprintf)(
|
| 36 |
/* translators: %s: Type of gallery variation */
|
| 37 |
-
(0,p.__)("%s Carousel","coblocks"),q);return(0,l.createElement)(l.Fragment,null,u,(0,l.createElement)(B,(0,n.Z)({},e,{gutter:o.gutter,icon:(0,l.createElement)(re.Z,{icon:s.cX3}),label:(0,p.__)("Carousel","coblocks"),variationLabel:t})))};return f.length||q?!f.length&&q?Y():(0,l.createElement)(l.Fragment,null,c&&(0,l.createElement)(l.Fragment,null,(0,l.createElement)(k,e),(0,l.createElement)(K,e)),u,(0,l.createElement)(b.ResizableBox,{className:i()({"has-responsive-height":w,"is-selected":c}),enable:{bottom:!0,bottomLeft:!1,bottomRight:!1,left:!1,right:!1,top:!1,topLeft:!1,topRight:!1},minHeight:"0",onClick:()=>{c||t(e.clientId)},onResizeStop:(e,t,o,n)=>{m({height:parseInt(v+n.height,10)})},showHandle:c,size:{height:v,width:"100%"},style:{marginBottom:S?"80px":null}},(0,l.createElement)("div",{className:a},(0,l.createElement)("div",{className:F,style:O},Z))),Y()):(0,l.createElement)(se.VF,e)}))},9334:function(e){e.exports=function(){"use strict";function e(){return(e=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var o,n=arguments[t];for(o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e}).apply(this,arguments)}function t(e,t){void 0===t&&(t=[]),Array.isArray(t)||(t=[t]),t.forEach((function(t){return!e.classList.contains(t)&&e.classList.add(t)}))}function o(e,t,o,n){e.addEventListener(t,o,n)}function n(e,t,o){e.removeEventListener(t,o)}function l(e,t,o){return void 0===o&&(o=""),e.setAttribute(t,o),e}function a(e,t,o){return Object.keys(t).forEach((function(o){e.style[o]=t[o]})),o&&getComputedStyle(e),e}var i={direction:"horizontal",touchRatio:1,touchAngle:45,longSwipesRatio:.5,initialSlide:0,loop:!1,freeMode:!1,passiveListeners:!0,resistance:!0,resistanceRatio:.85,speed:300,longSwipesMs:300,spaceBetween:0,slidesPerView:1,centeredSlides:!1,slidePrevClass:"swiper-slide-prev",slideNextClass:"swiper-slide-next",slideActiveClass:"swiper-slide-active",slideClass:"swiper-slide",wrapperClass:"swiper-wrapper",touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchMoveStopPropagation:!1,excludeElements:[],injections:{translate:function(e,t,o,n){a(t.element.$wrapper,{transition:e.isStart?"none":"transform ease "+n+"ms",transform:o.isHorizontal?"translate3d("+e.transforms+"px, 0, 0)":"translate3d(0, "+e.transforms+"px, 0)"})}}};var s=180/Math.PI;function r(){var t=[];return{getDuration:function(){var e=t[0],o=t[t.length-1];return e?o.time-e.time:0},getOffset:function(){var e=t[0],o=t[t.length-1];return e?{x:o.x-e.x,y:o.y-e.y}:{x:0,y:0}},getLogs:function(){return t},vector:function(){return n=(o=t).length-1,l=o[n],o=o[n-1]||l,n={x:l.x-o.x,y:l.y-o.y},l=l.time-o.time,o=n.x/l||0,l=n.y/l||0,e({},n,{angle:Math.atan2(Math.abs(n.y),Math.abs(n.x))*s,velocityX:o,velocityY:l});var o,n,l},clear:function(){t=[]},push:function(o){t.push(e({time:Date.now()},o))}}}function c(){return(performance||Date).now()}function u(){var e=function(){var e,t,o=requestAnimationFrame||webkitRequestAnimationFrame||setTimeout,n=cancelAnimationFrame||webkitCancelAnimationFrame||clearTimeout;return{run:function(n){e=void 0===e?c():e,t=o((function(){var t=c(),o=t-e;e=t,n(o)}))},stop:function(){e=void 0,n(t)}}}();return{run:function t(o){e.run((function(e){t(o),o(e)}))},stop:function(){e.stop()}}}function m(e,t){e=e.tracker,t=t.initStatus,e.clear(),t()}function d(e,t,o,n){var l=n.initLayout,a=n.initStatus,i=n.render,s=n.scrollPixel,r=n.slideTo,c=n.getOffsetSteps,d=u();return{preheat:function(e,t){var n=o.tracker;d.stop(),n.clear(),n.push(e),l(t),a(t),o.isStart=!0,i()},move:function(t){var n,l=o.tracker,a=e.touchRatio,r=e.touchAngle,c=e.isHorizontal;o.isStart&&!o.isScrolling&&(l.push(t),n=l.vector(),((t=l.getOffset()).x||t.y)&&(c&&n.angle<r||!c&&90-n.angle<r||o.isTouching?(a=n[c?"x":"y"]*a,o.isTouching=!0,s(a),i()):(o.isScrolling=!0,l.clear())))},stop:function(){var l,a,u,p=o.index,g=o.tracker,b=t.measure;o.isStart&&(o.isStart=!1,e.freeMode?(l=g.vector()[e.isHorizontal?"velocityX":"velocityY"],d.run((function(e){e*=l,l*=.98,Math.abs(e)<.01?(d.stop(),m(o,n)):(s(e),i(0))}))):(a=g.getDuration(),u=g.getOffset()[e.isHorizontal?"x":"y"],g=Math.ceil(Math.abs(u)/b.boxSize),b=c(u),a>e.longSwipesMs?r(p+b*(0<u?-1:1)):r(0<u?p-g:p+g),m(o,n)))}}}function p(e,t){var o={};return(o.update=function(e){var n,l=function(e,t,o){var n=e.$list,l=t.viewSize,a=t.slideSize,i=t.boxSize,s=-(t=(e=(s=o).loop?Math.ceil(s.slidesPerView):0)*i)+(o.centeredSlides?(l-a)/2:0);return{max:s,min:o.spaceBetween+(o.loop?a:l)+s-i*n.length,base:s,expand:e,buffer:t,minIndex:0,maxIndex:n.length-(o.centeredSlides||o.loop?1:Math.ceil(o.slidesPerView))}}(e,(n=t,a=(l=e).$el,n={boxSize:(a=((l=n.isHorizontal?a.offsetWidth:a.offsetHeight)-Math.ceil(n.slidesPerView-1)*n.spaceBetween)/n.slidesPerView)+n.spaceBetween,viewSize:l,slideSize:a}),t),a=Boolean("ontouchstart"in window||0<navigator.maxTouchPoints||0<navigator.msMaxTouchPoints||window.DocumentTouch&&document instanceof DocumentTouch);Object.assign(o,{touchable:a,element:e,measure:n,limitation:l})})(e),o}var g="data-shallow-slider",b="data-slider";function h(e,o){function n(){e.element.$wrapper.querySelectorAll("["+g+"]").forEach((function(t){return e.element.$wrapper.removeChild(t)}))}function i(){var t=e.element,n=e.measure,l=t.$wrapper,i={display:"flex",willChange:"transform",flexDirection:o.isHorizontal?"row":"column"},s=((t={})[o.isHorizontal?"width":"height"]=n.slideSize+"px",t[o.isHorizontal?"margin-right":"margin-bottom"]=o.spaceBetween+"px",t);a(l,i),l.querySelectorAll("["+b+"]").forEach((function(e){return a(e,s)}))}return{init:function(){(function(){var t,a,i,s,r,c;e.element.$list.forEach((function(e,t){return l(e,b,t)})),n(),o.loop&&(t=e.element,s=e.limitation,a=t.$list,i=t.$wrapper,s=s.expand,r=a.slice(-s).map((function(e){return e.cloneNode(!0)})),c=a.slice(0,s).map((function(e){return e.cloneNode(!0)})),r.forEach((function(e,t){i.appendChild(l(c[t],g)),i.insertBefore(l(r[t],g),a[0])})))})(),i()},render:function(n,l,a,i){var s=e.element.$wrapper;l=void 0===l?o.speed:l,o.injections.translate(n,e,o,l),n.isStart||function(n){var l=e.element.$wrapper,a=n.index;l.querySelectorAll("["+b+"]").forEach((function(e){var n,l,i=~~e.getAttribute(b);n=e,void 0===(l=[o.slidePrevClass,o.slideNextClass,o.slideActiveClass])&&(l=[]),Array.isArray(l)||(l=[l]),l.forEach((function(e){return n.classList.contains(e)&&n.classList.remove(e)})),i===a&&t(e,o.slideActiveClass),i==a-1&&t(e,o.slidePrevClass),i===a+1&&t(e,o.slideNextClass)}))}(n),i&&getComputedStyle(s).transform,a&&setTimeout(a,l)},destroy:function(){var t=e.element,l=t.$list,a=t.$wrapper,i=o.isHorizontal?"margin-right":"margin-bottom";["display","will-change","flex-direction"].forEach((function(e){a.style.removeProperty(e)})),l.forEach((function(e){return e.style.removeProperty(i)})),n()},updateSize:i}}function v(e,t){var o=e-t.max;return t=e-t.min,0<o?o:t<0?t:0}function f(t,o,n,l,a){function i(e){var o=t.measure;return Math.ceil(Math.abs(e)/o.boxSize-n.longSwipesRatio)}function s(e,t,n){l.render(o,e,t,n)}function r(l){var i,s,r=(s=t.limitation).min,c=s.max;r=(s=c-r+(n.loop?t.measure.boxSize:0))+1,o.transforms=l,n.loop?(i=(c-l)%r/s,o.progress=i<0?1+i:1<i?i-1:i):(i=(c-l)/s,o.progress=i<0?0:1<i?1:i),a.emit("scroll",e({},o))}function c(e,l){var c,u,m,d,p,g=t.measure,b=t.limitation,h=b.maxIndex-b.minIndex+1,f=n.loop?(e%h+h)%h:e>b.maxIndex?b.maxIndex:e<b.minIndex?b.minIndex:e,k=-f*g.boxSize+b.base;0!==i(k-o.transforms)&&n.loop&&(c=v(o.transforms,b),u=f-o.index,m=o.index,d=f,p=u,e=(h=b).maxIndex,m=(0<p?1:-1)*(h.minIndex-e-1)+d-m,(p=Math.abs(p)>Math.abs(m)?m:p)===u||c?o.index===f&&r(0<c?b.min-g.boxSize+c:b.max+g.boxSize+c):r(p<0?b.min-g.boxSize:b.max+g.boxSize),s(0,void 0,!0)),a.emit("before-slide",o.index,o,f),o.index=f,r(k),s(l,(function(){a.emit("after-slide",f,o)}))}return{update:function(){c(o.index,0),l.updateSize()},render:s,transform:r,slideTo:c,scrollPixel:function(e){var l,a=o.transforms,i=t.measure,s=t.limitation,c=(l=Number(e.toExponential().split("e")[1]))<=0?Math.pow(10,-(l-1)):1,u=a;n.resistance&&!n.loop&&(0<e&&a>=s.max?e-=Math.pow(e*c,n.resistanceRatio)/c:e<0&&a<=s.min&&(e+=Math.pow(-e*c,n.resistanceRatio)/c)),u+=e,n.loop&&(l=o.tracker.vector(),c=n.isHorizontal?l.velocityX:l.velocityY,(e=v(a,s))&&(l=a,a=s,0<(c=c)&&l>a.max||c<0&&l<a.min)&&(u=0<e?s.min-i.boxSize+e:s.max+i.boxSize+e)),r(u)},initStatus:function(e){void 0===e&&(e=0),o.startTransform=e,o.isStart=!1,o.isScrolling=!1,o.isTouching=!1},initLayout:function(e){r(e)},getOffsetSteps:i}}function k(e,t){var o="string"==typeof e?document.body.querySelector(e):e;return e=o.querySelector("."+t.wrapperClass),t=[].slice.call(o.getElementsByClassName(t.slideClass)),{$el:o,$wrapper:e,$list:t}}function _(t,l){var a=(m=e({},i,m=l),e({},m,{isHorizontal:"horizontal"===m.direction})),s=function(){var e={};return{on:function(t,o){e[t]?e[t].push(o):e[t]=[o]},off:function(t,o){!e[t]||-1<(o=e[t].indexOf(o))&&e[t].splice(o,1)},emit:function(t){for(var o=arguments.length,n=new Array(1<o?o-1:0),l=1;l<o;l++)n[l-1]=arguments[l];e[t]&&e[t].forEach((function(e){return e.apply(void 0,n)}))},clear:function(){e={}}}}(),c=p(k(t,a),a),u={tracker:r(),index:0,startTransform:0,isStart:!1,isScrolling:!1,isTouching:!1,transforms:0,progress:0},m=(l=s.on,s.off),g=s.emit,b={on:l,off:m,env:c,state:u,options:a};(a.plugins||_.plugins||[]).forEach((function(e){return e(b,a)})),g("before-init",b);var v=h(c,a),E=f(c,u,a,v,s),S=function(e,t,l,a){var i=e.touchable,s=["INPUT","SELECT","OPTION","TEXTAREA","BUTTON","VIDEO"],r=(a=d(l,e,t,a)).preheat,c=a.move,u=a.stop;function m(e){return{x:(e=i?e.changedTouches[0]:e).pageX,y:e.pageY}}function p(t){for(var o=0;o<l.excludeElements.length;o++)if(l.excludeElements[o].contains(t.target))return;var n,a=e.element.$wrapper,c=l.touchStartPreventDefault&&-1===s.indexOf(t.target.nodeName)||l.touchStartForcePreventDefault;!i&&c&&t.preventDefault(),r(m(t),(n=a,c=l.isHorizontal,a=getComputedStyle(n).transform.replace(/[a-z]|\(|\)|\s/g,"").split(",").map(parseFloat),n=[],16===a.length?n=a.slice(12,14):6===a.length&&(n=a.slice(4,6)),n[c?0:1]||0))}function g(e){l.touchMoveStopPropagation&&e.stopPropagation(),c(m(e)),t.isTouching&&!1!==e.cancelable&&e.preventDefault()}function b(){u()}return{attach:function(){var t=e.element.$el;i?(o(t,"touchstart",p,{passive:l.passiveListeners,capture:!1}),o(t,"touchmove",g),o(t,"touchend",b),o(t,"touchcancel",b)):(o(t,"mousedown",p),o(document,"mousemove",g),o(document,"mouseup",b))},detach:function(){var t=e.element.$el;n(t,"touchstart",p),n(t,"touchmove",g),n(t,"touchend",b),n(t,"touchcancel",b),n(t,"mousedown",p),n(document,"mousemove",g),n(document,"mouseup",b)}}}(c,u,a,E);return u=E.slideTo,Object.assign(b,{update:function(){v.destroy(),c.update(k(t,a)),v.init(),E.update()},destroy:function(){g("before-destroy",b),S.detach(),v.destroy(),g("after-destroy",b),s.clear()},slideTo:u,updateSize:function(){c.update(k(t,a)),E.update()}}),v.init(),S.attach(),u(a.initialSlide,0),g("after-init",b),b}return _.use=function(e){_.plugins=e},_}()},8608:function(e){e.exports=function(){"use strict";function e(e,t,o,n){e.addEventListener(t,o,n)}function t(e,t,o){e.removeEventListener(t,o)}return function(o,n){function l(e){c(e.target,"next")}function a(e){c(e.target,"prev")}var i=Boolean(n.navigation),s={nextEl:null,prevEl:null},r=Object.assign({disabledClass:"swiper-button-disabled"},n.navigation),c=function(e,t){u(e)&&!o.options.loop||(e=o.state.index,"next"===t&&o.slideTo(e+1),"prev"===t&&o.slideTo(e-1))},u=function(e){return e.classList.contains(r.disabledClass)};o.on("before-slide",(function(e,t,n){var l,a;o.options.loop||(l=n,n=(a=o.env.limitation).minIndex,a=a.maxIndex,s&&s.prevEl&&s.nextEl&&(s.nextEl.classList.contains(r.disabledClass)&&n<=l&&s.nextEl.classList.remove(r.disabledClass),s.prevEl.classList.contains(r.disabledClass)&&l<=a&&s.prevEl.classList.remove(r.disabledClass),l===n&&s.prevEl.classList.add(r.disabledClass),l===a&&s.nextEl.classList.add(r.disabledClass)))})),o.on("after-init",(function(){var t,n,c;i&&(s.nextEl="string"==typeof r.nextEl?document.body.querySelector(r.nextEl):r.nextEl,s.prevEl="string"==typeof r.prevEl?document.body.querySelector(r.prevEl):r.prevEl,o.options.loop||(t=o.state.index,n=o.env.element.$list,t===(c=o.env.limitation.minIndex)&&s.prevEl&&s.prevEl.classList.add(r.disabledClass),n.length===c&&s.nextEl&&s.nextEl.classList.add(r.disabledClass)),e(s.nextEl,"click",l),e(s.prevEl,"click",a))})),o.on("after-destroy",(function(){s&&s.prevEl&&s.nextEl&&(t(s.nextEl,"click",l),t(s.prevEl,"click",a),delete s.nextEl,delete s.prevEl)}))}}()}}]);
|
| 34 |
/* translators: %1$d is the order number of the image, %2$d is the total number of images */
|
| 35 |
(0,p.__)("image %1$d of %2$d in gallery","coblocks"),t+1,f.length);return(0,l.createElement)(l.Fragment,null,(0,l.createElement)($,{ariaLabel:o,handleRemoveImage:H,handleReplaceImage:j,index:t,setAttributes:m}))}))),[T,M,C,I,P,g,h,f,y,_,L,E,S]),Y=()=>{const t=!(!q||"skip"===q)&&(0,p.sprintf)(
|
| 36 |
/* translators: %s: Type of gallery variation */
|
| 37 |
+
(0,p.__)("%s Carousel","coblocks"),q);return(0,l.createElement)(l.Fragment,null,u,(0,l.createElement)(B,(0,n.Z)({},e,{gutter:o.gutter,icon:(0,l.createElement)(re.Z,{icon:s.cX3}),label:(0,p.__)("Carousel","coblocks"),variationLabel:t})))};return f.length||q?!f.length&&q?Y():(0,l.createElement)(l.Fragment,null,c&&(0,l.createElement)(l.Fragment,null,(0,l.createElement)(k,e),(0,l.createElement)(K,e)),u,(0,l.createElement)(b.ResizableBox,{className:i()({"has-responsive-height":w,"is-selected":c}),enable:{bottom:!0,bottomLeft:!1,bottomRight:!1,left:!1,right:!1,top:!1,topLeft:!1,topRight:!1},minHeight:"0",onClick:()=>{c||t(e.clientId)},onResizeStop:(e,t,o,n)=>{m({height:parseInt(v+n.height,10)})},showHandle:c,size:{height:v,width:"100%"},style:{marginBottom:S?"80px":null}},(0,l.createElement)("div",{className:a},(0,l.createElement)("div",{className:F,style:O},Z))),Y()):(0,l.createElement)(se.VF,e)}))},9334:function(e){e.exports=function(){"use strict";function e(){return(e=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var o,n=arguments[t];for(o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e}).apply(this,arguments)}function t(e,t){void 0===t&&(t=[]),Array.isArray(t)||(t=[t]),t.forEach((function(t){return!e.classList.contains(t)&&e.classList.add(t)}))}function o(e,t,o,n){e.addEventListener(t,o,n)}function n(e,t,o){e.removeEventListener(t,o)}function l(e,t,o){return void 0===o&&(o=""),e.setAttribute(t,o),e}function a(e,t,o){return Object.keys(t).forEach((function(o){e.style[o]=t[o]})),o&&getComputedStyle(e),e}var i={direction:"horizontal",touchRatio:1,touchAngle:45,longSwipesRatio:.5,initialSlide:0,loop:!1,freeMode:!1,passiveListeners:!0,resistance:!0,resistanceRatio:.85,speed:300,longSwipesMs:300,spaceBetween:0,slidesPerView:1,centeredSlides:!1,slidePrevClass:"swiper-slide-prev",slideNextClass:"swiper-slide-next",slideActiveClass:"swiper-slide-active",slideClass:"swiper-slide",wrapperClass:"swiper-wrapper",touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchMoveStopPropagation:!1,excludeElements:[],injections:{translate:function(e,t,o,n){a(t.element.$wrapper,{transition:e.isStart?"none":"transform ease "+n+"ms",transform:o.isHorizontal?"translate3d("+e.transforms+"px, 0, 0)":"translate3d(0, "+e.transforms+"px, 0)"})}}};var s=180/Math.PI;function r(){var t=[];return{getDuration:function(){var e=t[0],o=t[t.length-1];return e?o.time-e.time:0},getOffset:function(){var e=t[0],o=t[t.length-1];return e?{x:o.x-e.x,y:o.y-e.y}:{x:0,y:0}},getLogs:function(){return t},vector:function(){return n=(o=t).length-1,l=o[n],o=o[n-1]||l,n={x:l.x-o.x,y:l.y-o.y},l=l.time-o.time,o=n.x/l||0,l=n.y/l||0,e({},n,{angle:Math.atan2(Math.abs(n.y),Math.abs(n.x))*s,velocityX:o,velocityY:l});var o,n,l},clear:function(){t=[]},push:function(o){t.push(e({time:Date.now()},o))}}}function c(){return(performance||Date).now()}var u=requestAnimationFrame||webkitRequestAnimationFrame||setTimeout,m=cancelAnimationFrame||webkitCancelAnimationFrame||clearTimeout;function d(){var e=function(){var e,t;return{run:function(o){e=void 0===e?c():e,t=u((function(){var t=c(),n=t-e;e=t,o(n)}))},stop:function(){e=void 0,m(t)}}}();return{run:function t(o){e.run((function(e){t(o),o(e)}))},stop:function(){e.stop()}}}function p(e,t){e=e.tracker,t=t.initStatus,e.clear(),t()}function g(e,t,o,n){var l=n.initLayout,a=n.initStatus,i=n.render,s=n.scrollPixel,r=n.slideTo,c=n.getOffsetSteps,u=d();return{preheat:function(e,t){var n=o.tracker;u.stop(),n.clear(),n.push(e),l(t),a(t),o.isStart=!0,i()},move:function(t){var n,l=o.tracker,a=e.touchRatio,r=e.touchAngle,c=e.isHorizontal;o.isStart&&!o.isScrolling&&(l.push(t),n=l.vector(),((t=l.getOffset()).x||t.y)&&(c&&n.angle<r||!c&&90-n.angle<r||o.isTouching?(a=n[c?"x":"y"]*a,o.isTouching=!0,s(a),i()):(o.isScrolling=!0,l.clear())))},stop:function(){var l,a,m,d=o.index,g=o.tracker,b=t.measure;o.isStart&&(o.isStart=!1,e.freeMode?(l=g.vector()[e.isHorizontal?"velocityX":"velocityY"],u.run((function(e){e*=l,l*=.98,Math.abs(e)<.01?(u.stop(),p(o,n)):(s(e),i(0))}))):(a=g.getDuration(),m=g.getOffset()[e.isHorizontal?"x":"y"],g=Math.ceil(Math.abs(m)/b.boxSize),b=c(m),a>e.longSwipesMs?r(d+b*(0<m?-1:1)):r(0<m?d-g:d+g),p(o,n)))}}}function b(e,t){var o={};return(o.update=function(e){var n,l=function(e,t,o){var n=e.$list,l=t.viewSize,a=t.slideSize,i=t.boxSize,s=-(t=(e=(s=o).loop?Math.ceil(s.slidesPerView):0)*i)+(o.centeredSlides?(l-a)/2:0);return{max:s,min:o.spaceBetween+(o.loop?a:l)+s-i*n.length,base:s,expand:e,buffer:t,minIndex:0,maxIndex:n.length-(o.centeredSlides||o.loop?1:Math.ceil(o.slidesPerView))}}(e,(n=t,a=(l=e).$el,n={boxSize:(a=((l=n.isHorizontal?a.offsetWidth:a.offsetHeight)-Math.ceil(n.slidesPerView-1)*n.spaceBetween)/n.slidesPerView)+n.spaceBetween,viewSize:l,slideSize:a}),t),a=Boolean("ontouchstart"in window||0<navigator.maxTouchPoints||0<navigator.msMaxTouchPoints||window.DocumentTouch&&document instanceof DocumentTouch);Object.assign(o,{touchable:a,element:e,measure:n,limitation:l})})(e),o}var h="data-shallow-slider",v="data-slider";function f(e,o){function n(){e.element.$wrapper.querySelectorAll("["+h+"]").forEach((function(t){return e.element.$wrapper.removeChild(t)}))}function i(){var t=e.element,n=e.measure,l=t.$wrapper,i={display:"flex",willChange:"transform",flexDirection:o.isHorizontal?"row":"column"},s=((t={})[o.isHorizontal?"width":"height"]=n.slideSize+"px",t[o.isHorizontal?"margin-right":"margin-bottom"]=o.spaceBetween+"px",t);a(l,i),l.querySelectorAll("["+v+"]").forEach((function(e){return a(e,s)}))}return{init:function(){(function(){var t,a,i,s,r,c;e.element.$list.forEach((function(e,t){return l(e,v,t)})),n(),o.loop&&(t=e.element,s=e.limitation,a=t.$list,i=t.$wrapper,s=s.expand,r=a.slice(-s).map((function(e){return e.cloneNode(!0)})),c=a.slice(0,s).map((function(e){return e.cloneNode(!0)})),r.forEach((function(e,t){i.appendChild(l(c[t],h)),i.insertBefore(l(r[t],h),a[0])})))})(),i()},render:function(n,l,a,i){var s=e.element.$wrapper;l=void 0===l?o.speed:l,o.injections.translate(n,e,o,l),n.isStart||function(n){var l=e.element.$wrapper,a=n.index;l.querySelectorAll("["+v+"]").forEach((function(e){var n,l,i=~~e.getAttribute(v);n=e,void 0===(l=[o.slidePrevClass,o.slideNextClass,o.slideActiveClass])&&(l=[]),Array.isArray(l)||(l=[l]),l.forEach((function(e){return n.classList.contains(e)&&n.classList.remove(e)})),i===a&&t(e,o.slideActiveClass),i==a-1&&t(e,o.slidePrevClass),i===a+1&&t(e,o.slideNextClass)}))}(n),i&&getComputedStyle(s).transform,a&&setTimeout(a,l)},destroy:function(){var t=e.element,l=t.$list,a=t.$wrapper,i=o.isHorizontal?"margin-right":"margin-bottom";["display","will-change","flex-direction"].forEach((function(e){a.style.removeProperty(e)})),l.forEach((function(e){return e.style.removeProperty(i)})),n()},updateSize:i}}function k(e,t){var o=e-t.max;return t=e-t.min,0<o?o:t<0?t:0}function _(t,o,n,l,a){function i(e){var o=t.measure;return Math.ceil(Math.abs(e)/o.boxSize-n.longSwipesRatio)}function s(e,t,n){l.render(o,e,t,n)}function r(l){var i,s,r=(s=t.limitation).min,c=s.max;r=(s=c-r+(n.loop?t.measure.boxSize:0))+1,o.transforms=l,n.loop?(i=(c-l)%r/s,o.progress=i<0?1+i:1<i?i-1:i):(i=(c-l)/s,o.progress=i<0?0:1<i?1:i),a.emit("scroll",e({},o))}function c(e,l){var c,u,m,d,p,g=t.measure,b=t.limitation,h=b.maxIndex-b.minIndex+1,v=n.loop?(e%h+h)%h:e>b.maxIndex?b.maxIndex:e<b.minIndex?b.minIndex:e,f=-v*g.boxSize+b.base;0!==i(f-o.transforms)&&n.loop&&(c=k(o.transforms,b),u=v-o.index,m=o.index,d=v,p=u,e=(h=b).maxIndex,m=(0<p?1:-1)*(h.minIndex-e-1)+d-m,(p=Math.abs(p)>Math.abs(m)?m:p)===u||c?o.index===v&&r(0<c?b.min-g.boxSize+c:b.max+g.boxSize+c):r(p<0?b.min-g.boxSize:b.max+g.boxSize),s(0,void 0,!0)),a.emit("before-slide",o.index,o,v),o.index=v,r(f),s(l,(function(){a.emit("after-slide",v,o)}))}return{update:function(){c(o.index,0),l.updateSize()},render:s,transform:r,slideTo:c,scrollPixel:function(e){var l,a=o.transforms,i=t.measure,s=t.limitation,c=(l=Number(e.toExponential().split("e")[1]))<=0?Math.pow(10,-(l-1)):1,u=a;n.resistance&&!n.loop&&(0<e&&a>=s.max?e-=Math.pow(e*c,n.resistanceRatio)/c:e<0&&a<=s.min&&(e+=Math.pow(-e*c,n.resistanceRatio)/c)),u+=e,n.loop&&(l=o.tracker.vector(),c=n.isHorizontal?l.velocityX:l.velocityY,(e=k(a,s))&&(l=a,a=s,0<(c=c)&&l>a.max||c<0&&l<a.min)&&(u=0<e?s.min-i.boxSize+e:s.max+i.boxSize+e)),r(u)},initStatus:function(e){void 0===e&&(e=0),o.startTransform=e,o.isStart=!1,o.isScrolling=!1,o.isTouching=!1},initLayout:function(e){r(e)},getOffsetSteps:i}}function E(e,t){var o="string"==typeof e?document.body.querySelector(e):e;return e=o.querySelector("."+t.wrapperClass),t=[].slice.call(o.getElementsByClassName(t.slideClass)),{$el:o,$wrapper:e,$list:t=t.filter((function(e){return null===e.getAttribute("data-shallow-slider")}))}}function S(t,l){var a=(m=e({},i,m=l),e({},m,{isHorizontal:"horizontal"===m.direction})),s=function(){var e={};return{on:function(t,o){e[t]?e[t].push(o):e[t]=[o]},off:function(t,o){!e[t]||-1<(o=e[t].indexOf(o))&&e[t].splice(o,1)},emit:function(t){for(var o=arguments.length,n=new Array(1<o?o-1:0),l=1;l<o;l++)n[l-1]=arguments[l];e[t]&&e[t].forEach((function(e){return e.apply(void 0,n)}))},clear:function(){e={}}}}(),c=b(E(t,a),a),u={tracker:r(),index:0,startTransform:0,isStart:!1,isScrolling:!1,isTouching:!1,transforms:0,progress:0},m=(l=s.on,s.off),d=s.emit,p={on:l,off:m,env:c,state:u,options:a};(a.plugins||S.plugins||[]).forEach((function(e){return e(p,a)})),d("before-init",p);var h=f(c,a),v=_(c,u,a,h,s),k=function(e,t,l,a){var i=e.touchable,s=["INPUT","SELECT","OPTION","TEXTAREA","BUTTON","VIDEO"],r=(a=g(l,e,t,a)).preheat,c=a.move,u=a.stop;function m(e){return{x:(e=i?e.changedTouches[0]:e).pageX,y:e.pageY}}function d(t){for(var o=0;o<l.excludeElements.length;o++)if(l.excludeElements[o].contains(t.target))return;var n,a=e.element.$wrapper,c=l.touchStartPreventDefault&&-1===s.indexOf(t.target.nodeName)||l.touchStartForcePreventDefault;!i&&c&&t.preventDefault(),r(m(t),(n=a,c=l.isHorizontal,a=getComputedStyle(n).transform.replace(/[a-z]|\(|\)|\s/g,"").split(",").map(parseFloat),n=[],16===a.length?n=a.slice(12,14):6===a.length&&(n=a.slice(4,6)),n[c?0:1]||0))}function p(e){l.touchMoveStopPropagation&&e.stopPropagation(),c(m(e)),t.isTouching&&!1!==e.cancelable&&e.preventDefault()}function b(){u()}return{attach:function(){var t=e.element.$el;i?(o(t,"touchstart",d,{passive:l.passiveListeners,capture:!1}),o(t,"touchmove",p),o(t,"touchend",b),o(t,"touchcancel",b)):(o(t,"mousedown",d),o(document,"mousemove",p),o(document,"mouseup",b))},detach:function(){var t=e.element.$el;n(t,"touchstart",d),n(t,"touchmove",p),n(t,"touchend",b),n(t,"touchcancel",b),n(t,"mousedown",d),n(document,"mousemove",p),n(document,"mouseup",b)}}}(c,u,a,v);return u=v.slideTo,Object.assign(p,{update:function(){h.destroy(),c.update(E(t,a)),h.init(),v.update()},destroy:function(){d("before-destroy",p),k.detach(),h.destroy(),d("after-destroy",p),s.clear()},slideTo:u,updateSize:function(){c.update(E(t,a)),v.update()}}),h.init(),k.attach(),u(a.initialSlide,0),d("after-init",p),p}return S.use=function(e){S.plugins=e},S}()},8608:function(e){e.exports=function(){"use strict";function e(e,t,o,n){e.addEventListener(t,o,n)}function t(e,t,o){e.removeEventListener(t,o)}return function(o,n){function l(e){c(e.target,"next")}function a(e){c(e.target,"prev")}var i=Boolean(n.navigation),s={nextEl:null,prevEl:null},r=Object.assign({disabledClass:"swiper-button-disabled"},n.navigation),c=function(e,t){u(e)&&!o.options.loop||(e=o.state.index,"next"===t&&o.slideTo(e+1),"prev"===t&&o.slideTo(e-1))},u=function(e){return e.classList.contains(r.disabledClass)};o.on("before-slide",(function(e,t,n){var l,a;o.options.loop||(l=n,n=(a=o.env.limitation).minIndex,a=a.maxIndex,s&&s.prevEl&&s.nextEl&&(s.nextEl.classList.contains(r.disabledClass)&&n<=l&&s.nextEl.classList.remove(r.disabledClass),s.prevEl.classList.contains(r.disabledClass)&&l<=a&&s.prevEl.classList.remove(r.disabledClass),l===n&&s.prevEl.classList.add(r.disabledClass),l===a&&s.nextEl.classList.add(r.disabledClass)))})),o.on("after-init",(function(){var t,n,c;i&&(s.nextEl="string"==typeof r.nextEl?document.body.querySelector(r.nextEl):r.nextEl,s.prevEl="string"==typeof r.prevEl?document.body.querySelector(r.prevEl):r.prevEl,o.options.loop||(t=o.state.index,n=o.env.element.$list,t===(c=o.env.limitation.minIndex)&&s.prevEl&&s.prevEl.classList.add(r.disabledClass),n.length===c&&s.nextEl&&s.nextEl.classList.add(r.disabledClass)),e(s.nextEl,"click",l),e(s.prevEl,"click",a))})),o.on("after-destroy",(function(){s&&s.prevEl&&s.nextEl&&(t(s.nextEl,"click",l),t(s.prevEl,"click",a),delete s.nextEl,delete s.prevEl)}))}}()}}]);
|
dist/958.js
CHANGED
|
@@ -1 +1 @@
|
|
| 1 |
-
(self.webpackChunkcoblocks=self.webpackChunkcoblocks||[]).push([[958],{4896:function(e,t,n){"use strict";var i=n(8824);t.Z=i.Z},8824:function(e,t,n){"use strict";var i=n(9307),r=n(444);const o=(0,i.createElement)(r.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},(0,i.createElement)(r.Path,{d:"M20.1 5.1L16.9 2 6.2 12.7l-1.3 4.4 4.5-1.3L20.1 5.1zM4 20.8h8v-1.5H4v1.5z"}));t.Z=o},4184:function(e,t){var n;!function(){"use strict";var i={}.hasOwnProperty;function r(){for(var e=[],t=0;t<arguments.length;t++){var n=arguments[t];if(n){var o=typeof n;if("string"===o||"number"===o)e.push(n);else if(Array.isArray(n)){if(n.length){var a=r.apply(null,n);a&&e.push(a)}}else if("object"===o)if(n.toString===Object.prototype.toString)for(var s in n)i.call(n,s)&&n[s]&&e.push(s);else e.push(n.toString())}}return e.join(" ")}e.exports?(r.default=r,e.exports=r):void 0===(n=function(){return r}.apply(t,[]))||(e.exports=n)}()},2703:function(e,t,n){"use strict";var i=n(414);function r(){}function o(){}o.resetWarningCache=r,e.exports=function(){function e(e,t,n,r,o,a){if(a!==i){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:r};return n.PropTypes=n,n}},5697:function(e,t,n){e.exports=n(2703)()},414:function(e){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},9334:function(e){e.exports=function(){"use strict";function e(){return(e=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n,i=arguments[t];for(n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n])}return e}).apply(this,arguments)}function t(e,t){void 0===t&&(t=[]),Array.isArray(t)||(t=[t]),t.forEach((function(t){return!e.classList.contains(t)&&e.classList.add(t)}))}function n(e,t,n,i){e.addEventListener(t,n,i)}function i(e,t,n){e.removeEventListener(t,n)}function r(e,t,n){return void 0===n&&(n=""),e.setAttribute(t,n),e}function o(e,t,n){return Object.keys(t).forEach((function(n){e.style[n]=t[n]})),n&&getComputedStyle(e),e}var a={direction:"horizontal",touchRatio:1,touchAngle:45,longSwipesRatio:.5,initialSlide:0,loop:!1,freeMode:!1,passiveListeners:!0,resistance:!0,resistanceRatio:.85,speed:300,longSwipesMs:300,spaceBetween:0,slidesPerView:1,centeredSlides:!1,slidePrevClass:"swiper-slide-prev",slideNextClass:"swiper-slide-next",slideActiveClass:"swiper-slide-active",slideClass:"swiper-slide",wrapperClass:"swiper-wrapper",touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchMoveStopPropagation:!1,excludeElements:[],injections:{translate:function(e,t,n,i){o(t.element.$wrapper,{transition:e.isStart?"none":"transform ease "+i+"ms",transform:n.isHorizontal?"translate3d("+e.transforms+"px, 0, 0)":"translate3d(0, "+e.transforms+"px, 0)"})}}};var s=180/Math.PI;function l(){var t=[];return{getDuration:function(){var e=t[0],n=t[t.length-1];return e?n.time-e.time:0},getOffset:function(){var e=t[0],n=t[t.length-1];return e?{x:n.x-e.x,y:n.y-e.y}:{x:0,y:0}},getLogs:function(){return t},vector:function(){return i=(n=t).length-1,r=n[i],n=n[i-1]||r,i={x:r.x-n.x,y:r.y-n.y},r=r.time-n.time,n=i.x/r||0,r=i.y/r||0,e({},i,{angle:Math.atan2(Math.abs(i.y),Math.abs(i.x))*s,velocityX:n,velocityY:r});var n,i,r},clear:function(){t=[]},push:function(n){t.push(e({time:Date.now()},n))}}}function c(){return(performance||Date).now()}function u(){var e=function(){var e,t,n=requestAnimationFrame||webkitRequestAnimationFrame||setTimeout,i=cancelAnimationFrame||webkitCancelAnimationFrame||clearTimeout;return{run:function(i){e=void 0===e?c():e,t=n((function(){var t=c(),n=t-e;e=t,i(n)}))},stop:function(){e=void 0,i(t)}}}();return{run:function t(n){e.run((function(e){t(n),n(e)}))},stop:function(){e.stop()}}}function f(e,t){e=e.tracker,t=t.initStatus,e.clear(),t()}function p(e,t,n,i){var r=i.initLayout,o=i.initStatus,a=i.render,s=i.scrollPixel,l=i.slideTo,c=i.getOffsetSteps,p=u();return{preheat:function(e,t){var i=n.tracker;p.stop(),i.clear(),i.push(e),r(t),o(t),n.isStart=!0,a()},move:function(t){var i,r=n.tracker,o=e.touchRatio,l=e.touchAngle,c=e.isHorizontal;n.isStart&&!n.isScrolling&&(r.push(t),i=r.vector(),((t=r.getOffset()).x||t.y)&&(c&&i.angle<l||!c&&90-i.angle<l||n.isTouching?(o=i[c?"x":"y"]*o,n.isTouching=!0,s(o),a()):(n.isScrolling=!0,r.clear())))},stop:function(){var r,o,u,d=n.index,m=n.tracker,v=t.measure;n.isStart&&(n.isStart=!1,e.freeMode?(r=m.vector()[e.isHorizontal?"velocityX":"velocityY"],p.run((function(e){e*=r,r*=.98,Math.abs(e)<.01?(p.stop(),f(n,i)):(s(e),a(0))}))):(o=m.getDuration(),u=m.getOffset()[e.isHorizontal?"x":"y"],m=Math.ceil(Math.abs(u)/v.boxSize),v=c(u),o>e.longSwipesMs?l(d+v*(0<u?-1:1)):l(0<u?d-m:d+m),f(n,i)))}}}function d(e,t){var n={};return(n.update=function(e){var i,r=function(e,t,n){var i=e.$list,r=t.viewSize,o=t.slideSize,a=t.boxSize,s=-(t=(e=(s=n).loop?Math.ceil(s.slidesPerView):0)*a)+(n.centeredSlides?(r-o)/2:0);return{max:s,min:n.spaceBetween+(n.loop?o:r)+s-a*i.length,base:s,expand:e,buffer:t,minIndex:0,maxIndex:i.length-(n.centeredSlides||n.loop?1:Math.ceil(n.slidesPerView))}}(e,(i=t,o=(r=e).$el,i={boxSize:(o=((r=i.isHorizontal?o.offsetWidth:o.offsetHeight)-Math.ceil(i.slidesPerView-1)*i.spaceBetween)/i.slidesPerView)+i.spaceBetween,viewSize:r,slideSize:o}),t),o=Boolean("ontouchstart"in window||0<navigator.maxTouchPoints||0<navigator.msMaxTouchPoints||window.DocumentTouch&&document instanceof DocumentTouch);Object.assign(n,{touchable:o,element:e,measure:i,limitation:r})})(e),n}var m="data-shallow-slider",v="data-slider";function h(e,n){function i(){e.element.$wrapper.querySelectorAll("["+m+"]").forEach((function(t){return e.element.$wrapper.removeChild(t)}))}function a(){var t=e.element,i=e.measure,r=t.$wrapper,a={display:"flex",willChange:"transform",flexDirection:n.isHorizontal?"row":"column"},s=((t={})[n.isHorizontal?"width":"height"]=i.slideSize+"px",t[n.isHorizontal?"margin-right":"margin-bottom"]=n.spaceBetween+"px",t);o(r,a),r.querySelectorAll("["+v+"]").forEach((function(e){return o(e,s)}))}return{init:function(){(function(){var t,o,a,s,l,c;e.element.$list.forEach((function(e,t){return r(e,v,t)})),i(),n.loop&&(t=e.element,s=e.limitation,o=t.$list,a=t.$wrapper,s=s.expand,l=o.slice(-s).map((function(e){return e.cloneNode(!0)})),c=o.slice(0,s).map((function(e){return e.cloneNode(!0)})),l.forEach((function(e,t){a.appendChild(r(c[t],m)),a.insertBefore(r(l[t],m),o[0])})))})(),a()},render:function(i,r,o,a){var s=e.element.$wrapper;r=void 0===r?n.speed:r,n.injections.translate(i,e,n,r),i.isStart||function(i){var r=e.element.$wrapper,o=i.index;r.querySelectorAll("["+v+"]").forEach((function(e){var i,r,a=~~e.getAttribute(v);i=e,void 0===(r=[n.slidePrevClass,n.slideNextClass,n.slideActiveClass])&&(r=[]),Array.isArray(r)||(r=[r]),r.forEach((function(e){return i.classList.contains(e)&&i.classList.remove(e)})),a===o&&t(e,n.slideActiveClass),a==o-1&&t(e,n.slidePrevClass),a===o+1&&t(e,n.slideNextClass)}))}(i),a&&getComputedStyle(s).transform,o&&setTimeout(o,r)},destroy:function(){var t=e.element,r=t.$list,o=t.$wrapper,a=n.isHorizontal?"margin-right":"margin-bottom";["display","will-change","flex-direction"].forEach((function(e){o.style.removeProperty(e)})),r.forEach((function(e){return e.style.removeProperty(a)})),i()},updateSize:a}}function x(e,t){var n=e-t.max;return t=e-t.min,0<n?n:t<0?t:0}function g(t,n,i,r,o){function a(e){var n=t.measure;return Math.ceil(Math.abs(e)/n.boxSize-i.longSwipesRatio)}function s(e,t,i){r.render(n,e,t,i)}function l(r){var a,s,l=(s=t.limitation).min,c=s.max;l=(s=c-l+(i.loop?t.measure.boxSize:0))+1,n.transforms=r,i.loop?(a=(c-r)%l/s,n.progress=a<0?1+a:1<a?a-1:a):(a=(c-r)/s,n.progress=a<0?0:1<a?1:a),o.emit("scroll",e({},n))}function c(e,r){var c,u,f,p,d,m=t.measure,v=t.limitation,h=v.maxIndex-v.minIndex+1,g=i.loop?(e%h+h)%h:e>v.maxIndex?v.maxIndex:e<v.minIndex?v.minIndex:e,y=-g*m.boxSize+v.base;0!==a(y-n.transforms)&&i.loop&&(c=x(n.transforms,v),u=g-n.index,f=n.index,p=g,d=u,e=(h=v).maxIndex,f=(0<d?1:-1)*(h.minIndex-e-1)+p-f,(d=Math.abs(d)>Math.abs(f)?f:d)===u||c?n.index===g&&l(0<c?v.min-m.boxSize+c:v.max+m.boxSize+c):l(d<0?v.min-m.boxSize:v.max+m.boxSize),s(0,void 0,!0)),o.emit("before-slide",n.index,n,g),n.index=g,l(y),s(r,(function(){o.emit("after-slide",g,n)}))}return{update:function(){c(n.index,0),r.updateSize()},render:s,transform:l,slideTo:c,scrollPixel:function(e){var r,o=n.transforms,a=t.measure,s=t.limitation,c=(r=Number(e.toExponential().split("e")[1]))<=0?Math.pow(10,-(r-1)):1,u=o;i.resistance&&!i.loop&&(0<e&&o>=s.max?e-=Math.pow(e*c,i.resistanceRatio)/c:e<0&&o<=s.min&&(e+=Math.pow(-e*c,i.resistanceRatio)/c)),u+=e,i.loop&&(r=n.tracker.vector(),c=i.isHorizontal?r.velocityX:r.velocityY,(e=x(o,s))&&(r=o,o=s,0<(c=c)&&r>o.max||c<0&&r<o.min)&&(u=0<e?s.min-a.boxSize+e:s.max+a.boxSize+e)),l(u)},initStatus:function(e){void 0===e&&(e=0),n.startTransform=e,n.isStart=!1,n.isScrolling=!1,n.isTouching=!1},initLayout:function(e){l(e)},getOffsetSteps:a}}function y(e,t){var n="string"==typeof e?document.body.querySelector(e):e;return e=n.querySelector("."+t.wrapperClass),t=[].slice.call(n.getElementsByClassName(t.slideClass)),{$el:n,$wrapper:e,$list:t}}function b(t,r){var o=(f=e({},a,f=r),e({},f,{isHorizontal:"horizontal"===f.direction})),s=function(){var e={};return{on:function(t,n){e[t]?e[t].push(n):e[t]=[n]},off:function(t,n){!e[t]||-1<(n=e[t].indexOf(n))&&e[t].splice(n,1)},emit:function(t){for(var n=arguments.length,i=new Array(1<n?n-1:0),r=1;r<n;r++)i[r-1]=arguments[r];e[t]&&e[t].forEach((function(e){return e.apply(void 0,i)}))},clear:function(){e={}}}}(),c=d(y(t,o),o),u={tracker:l(),index:0,startTransform:0,isStart:!1,isScrolling:!1,isTouching:!1,transforms:0,progress:0},f=(r=s.on,s.off),m=s.emit,v={on:r,off:f,env:c,state:u,options:o};(o.plugins||b.plugins||[]).forEach((function(e){return e(v,o)})),m("before-init",v);var x=h(c,o),S=g(c,u,o,x,s),w=function(e,t,r,o){var a=e.touchable,s=["INPUT","SELECT","OPTION","TEXTAREA","BUTTON","VIDEO"],l=(o=p(r,e,t,o)).preheat,c=o.move,u=o.stop;function f(e){return{x:(e=a?e.changedTouches[0]:e).pageX,y:e.pageY}}function d(t){for(var n=0;n<r.excludeElements.length;n++)if(r.excludeElements[n].contains(t.target))return;var i,o=e.element.$wrapper,c=r.touchStartPreventDefault&&-1===s.indexOf(t.target.nodeName)||r.touchStartForcePreventDefault;!a&&c&&t.preventDefault(),l(f(t),(i=o,c=r.isHorizontal,o=getComputedStyle(i).transform.replace(/[a-z]|\(|\)|\s/g,"").split(",").map(parseFloat),i=[],16===o.length?i=o.slice(12,14):6===o.length&&(i=o.slice(4,6)),i[c?0:1]||0))}function m(e){r.touchMoveStopPropagation&&e.stopPropagation(),c(f(e)),t.isTouching&&!1!==e.cancelable&&e.preventDefault()}function v(){u()}return{attach:function(){var t=e.element.$el;a?(n(t,"touchstart",d,{passive:r.passiveListeners,capture:!1}),n(t,"touchmove",m),n(t,"touchend",v),n(t,"touchcancel",v)):(n(t,"mousedown",d),n(document,"mousemove",m),n(document,"mouseup",v))},detach:function(){var t=e.element.$el;i(t,"touchstart",d),i(t,"touchmove",m),i(t,"touchend",v),i(t,"touchcancel",v),i(t,"mousedown",d),i(document,"mousemove",m),i(document,"mouseup",v)}}}(c,u,o,S);return u=S.slideTo,Object.assign(v,{update:function(){x.destroy(),c.update(y(t,o)),x.init(),S.update()},destroy:function(){m("before-destroy",v),w.detach(),x.destroy(),m("after-destroy",v),s.clear()},slideTo:u,updateSize:function(){c.update(y(t,o)),S.update()}}),x.init(),w.attach(),u(o.initialSlide,0),m("after-init",v),v}return b.use=function(e){b.plugins=e},b}()},8608:function(e){e.exports=function(){"use strict";function e(e,t,n,i){e.addEventListener(t,n,i)}function t(e,t,n){e.removeEventListener(t,n)}return function(n,i){function r(e){c(e.target,"next")}function o(e){c(e.target,"prev")}var a=Boolean(i.navigation),s={nextEl:null,prevEl:null},l=Object.assign({disabledClass:"swiper-button-disabled"},i.navigation),c=function(e,t){u(e)&&!n.options.loop||(e=n.state.index,"next"===t&&n.slideTo(e+1),"prev"===t&&n.slideTo(e-1))},u=function(e){return e.classList.contains(l.disabledClass)};n.on("before-slide",(function(e,t,i){var r,o;n.options.loop||(r=i,i=(o=n.env.limitation).minIndex,o=o.maxIndex,s&&s.prevEl&&s.nextEl&&(s.nextEl.classList.contains(l.disabledClass)&&i<=r&&s.nextEl.classList.remove(l.disabledClass),s.prevEl.classList.contains(l.disabledClass)&&r<=o&&s.prevEl.classList.remove(l.disabledClass),r===i&&s.prevEl.classList.add(l.disabledClass),r===o&&s.nextEl.classList.add(l.disabledClass)))})),n.on("after-init",(function(){var t,i,c;a&&(s.nextEl="string"==typeof l.nextEl?document.body.querySelector(l.nextEl):l.nextEl,s.prevEl="string"==typeof l.prevEl?document.body.querySelector(l.prevEl):l.prevEl,n.options.loop||(t=n.state.index,i=n.env.element.$list,t===(c=n.env.limitation.minIndex)&&s.prevEl&&s.prevEl.classList.add(l.disabledClass),i.length===c&&s.nextEl&&s.nextEl.classList.add(l.disabledClass)),e(s.nextEl,"click",r),e(s.prevEl,"click",o))})),n.on("after-destroy",(function(){s&&s.prevEl&&s.nextEl&&(t(s.nextEl,"click",r),t(s.prevEl,"click",o),delete s.nextEl,delete s.prevEl)}))}}()},8893:function(e,t){"use strict";t.Z=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i},3653:function(e,t,n){"use strict";var i;n.d(t,{Z:function(){return o}});var r=new Uint8Array(16);function o(){if(!i&&!(i="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return i(r)}},3958:function(e,t,n){"use strict";for(var i=n(7283),r=[],o=0;o<256;++o)r.push((o+256).toString(16).substr(1));t.Z=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=(r[e[t+0]]+r[e[t+1]]+r[e[t+2]]+r[e[t+3]]+"-"+r[e[t+4]]+r[e[t+5]]+"-"+r[e[t+6]]+r[e[t+7]]+"-"+r[e[t+8]]+r[e[t+9]]+"-"+r[e[t+10]]+r[e[t+11]]+r[e[t+12]]+r[e[t+13]]+r[e[t+14]]+r[e[t+15]]).toLowerCase();if(!(0,i.Z)(n))throw TypeError("Stringified UUID is invalid");return n}},2045:function(e,t,n){"use strict";var i=n(3653),r=n(3958);t.Z=function(e,t,n){var o=(e=e||{}).random||(e.rng||i.Z)();if(o[6]=15&o[6]|64,o[8]=63&o[8]|128,t){n=n||0;for(var a=0;a<16;++a)t[n+a]=o[a];return t}return(0,r.Z)(o)}},7283:function(e,t,n){"use strict";var i=n(8893);t.Z=function(e){return"string"==typeof e&&i.Z.test(e)}},7462:function(e,t,n){"use strict";function i(){return i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},i.apply(this,arguments)}n.d(t,{Z:function(){return i}})}}]);
|
| 1 |
+
(self.webpackChunkcoblocks=self.webpackChunkcoblocks||[]).push([[958],{4896:function(e,t,n){"use strict";var r=n(8824);t.Z=r.Z},8824:function(e,t,n){"use strict";var r=n(9307),i=n(444);const o=(0,r.createElement)(i.SVG,{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},(0,r.createElement)(i.Path,{d:"M20.1 5.1L16.9 2 6.2 12.7l-1.3 4.4 4.5-1.3L20.1 5.1zM4 20.8h8v-1.5H4v1.5z"}));t.Z=o},4184:function(e,t){var n;!function(){"use strict";var r={}.hasOwnProperty;function i(){for(var e=[],t=0;t<arguments.length;t++){var n=arguments[t];if(n){var o=typeof n;if("string"===o||"number"===o)e.push(n);else if(Array.isArray(n)){if(n.length){var a=i.apply(null,n);a&&e.push(a)}}else if("object"===o)if(n.toString===Object.prototype.toString)for(var s in n)r.call(n,s)&&n[s]&&e.push(s);else e.push(n.toString())}}return e.join(" ")}e.exports?(i.default=i,e.exports=i):void 0===(n=function(){return i}.apply(t,[]))||(e.exports=n)}()},2703:function(e,t,n){"use strict";var r=n(414);function i(){}function o(){}o.resetWarningCache=i,e.exports=function(){function e(e,t,n,i,o,a){if(a!==r){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:i};return n.PropTypes=n,n}},5697:function(e,t,n){e.exports=n(2703)()},414:function(e){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},9334:function(e){e.exports=function(){"use strict";function e(){return(e=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n,r=arguments[t];for(n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}function t(e,t){void 0===t&&(t=[]),Array.isArray(t)||(t=[t]),t.forEach((function(t){return!e.classList.contains(t)&&e.classList.add(t)}))}function n(e,t,n,r){e.addEventListener(t,n,r)}function r(e,t,n){e.removeEventListener(t,n)}function i(e,t,n){return void 0===n&&(n=""),e.setAttribute(t,n),e}function o(e,t,n){return Object.keys(t).forEach((function(n){e.style[n]=t[n]})),n&&getComputedStyle(e),e}var a={direction:"horizontal",touchRatio:1,touchAngle:45,longSwipesRatio:.5,initialSlide:0,loop:!1,freeMode:!1,passiveListeners:!0,resistance:!0,resistanceRatio:.85,speed:300,longSwipesMs:300,spaceBetween:0,slidesPerView:1,centeredSlides:!1,slidePrevClass:"swiper-slide-prev",slideNextClass:"swiper-slide-next",slideActiveClass:"swiper-slide-active",slideClass:"swiper-slide",wrapperClass:"swiper-wrapper",touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchMoveStopPropagation:!1,excludeElements:[],injections:{translate:function(e,t,n,r){o(t.element.$wrapper,{transition:e.isStart?"none":"transform ease "+r+"ms",transform:n.isHorizontal?"translate3d("+e.transforms+"px, 0, 0)":"translate3d(0, "+e.transforms+"px, 0)"})}}};var s=180/Math.PI;function l(){var t=[];return{getDuration:function(){var e=t[0],n=t[t.length-1];return e?n.time-e.time:0},getOffset:function(){var e=t[0],n=t[t.length-1];return e?{x:n.x-e.x,y:n.y-e.y}:{x:0,y:0}},getLogs:function(){return t},vector:function(){return r=(n=t).length-1,i=n[r],n=n[r-1]||i,r={x:i.x-n.x,y:i.y-n.y},i=i.time-n.time,n=r.x/i||0,i=r.y/i||0,e({},r,{angle:Math.atan2(Math.abs(r.y),Math.abs(r.x))*s,velocityX:n,velocityY:i});var n,r,i},clear:function(){t=[]},push:function(n){t.push(e({time:Date.now()},n))}}}function c(){return(performance||Date).now()}var u=requestAnimationFrame||webkitRequestAnimationFrame||setTimeout,f=cancelAnimationFrame||webkitCancelAnimationFrame||clearTimeout;function p(){var e=function(){var e,t;return{run:function(n){e=void 0===e?c():e,t=u((function(){var t=c(),r=t-e;e=t,n(r)}))},stop:function(){e=void 0,f(t)}}}();return{run:function t(n){e.run((function(e){t(n),n(e)}))},stop:function(){e.stop()}}}function d(e,t){e=e.tracker,t=t.initStatus,e.clear(),t()}function m(e,t,n,r){var i=r.initLayout,o=r.initStatus,a=r.render,s=r.scrollPixel,l=r.slideTo,c=r.getOffsetSteps,u=p();return{preheat:function(e,t){var r=n.tracker;u.stop(),r.clear(),r.push(e),i(t),o(t),n.isStart=!0,a()},move:function(t){var r,i=n.tracker,o=e.touchRatio,l=e.touchAngle,c=e.isHorizontal;n.isStart&&!n.isScrolling&&(i.push(t),r=i.vector(),((t=i.getOffset()).x||t.y)&&(c&&r.angle<l||!c&&90-r.angle<l||n.isTouching?(o=r[c?"x":"y"]*o,n.isTouching=!0,s(o),a()):(n.isScrolling=!0,i.clear())))},stop:function(){var i,o,f,p=n.index,m=n.tracker,v=t.measure;n.isStart&&(n.isStart=!1,e.freeMode?(i=m.vector()[e.isHorizontal?"velocityX":"velocityY"],u.run((function(e){e*=i,i*=.98,Math.abs(e)<.01?(u.stop(),d(n,r)):(s(e),a(0))}))):(o=m.getDuration(),f=m.getOffset()[e.isHorizontal?"x":"y"],m=Math.ceil(Math.abs(f)/v.boxSize),v=c(f),o>e.longSwipesMs?l(p+v*(0<f?-1:1)):l(0<f?p-m:p+m),d(n,r)))}}}function v(e,t){var n={};return(n.update=function(e){var r,i=function(e,t,n){var r=e.$list,i=t.viewSize,o=t.slideSize,a=t.boxSize,s=-(t=(e=(s=n).loop?Math.ceil(s.slidesPerView):0)*a)+(n.centeredSlides?(i-o)/2:0);return{max:s,min:n.spaceBetween+(n.loop?o:i)+s-a*r.length,base:s,expand:e,buffer:t,minIndex:0,maxIndex:r.length-(n.centeredSlides||n.loop?1:Math.ceil(n.slidesPerView))}}(e,(r=t,o=(i=e).$el,r={boxSize:(o=((i=r.isHorizontal?o.offsetWidth:o.offsetHeight)-Math.ceil(r.slidesPerView-1)*r.spaceBetween)/r.slidesPerView)+r.spaceBetween,viewSize:i,slideSize:o}),t),o=Boolean("ontouchstart"in window||0<navigator.maxTouchPoints||0<navigator.msMaxTouchPoints||window.DocumentTouch&&document instanceof DocumentTouch);Object.assign(n,{touchable:o,element:e,measure:r,limitation:i})})(e),n}var h="data-shallow-slider",x="data-slider";function g(e,n){function r(){e.element.$wrapper.querySelectorAll("["+h+"]").forEach((function(t){return e.element.$wrapper.removeChild(t)}))}function a(){var t=e.element,r=e.measure,i=t.$wrapper,a={display:"flex",willChange:"transform",flexDirection:n.isHorizontal?"row":"column"},s=((t={})[n.isHorizontal?"width":"height"]=r.slideSize+"px",t[n.isHorizontal?"margin-right":"margin-bottom"]=n.spaceBetween+"px",t);o(i,a),i.querySelectorAll("["+x+"]").forEach((function(e){return o(e,s)}))}return{init:function(){(function(){var t,o,a,s,l,c;e.element.$list.forEach((function(e,t){return i(e,x,t)})),r(),n.loop&&(t=e.element,s=e.limitation,o=t.$list,a=t.$wrapper,s=s.expand,l=o.slice(-s).map((function(e){return e.cloneNode(!0)})),c=o.slice(0,s).map((function(e){return e.cloneNode(!0)})),l.forEach((function(e,t){a.appendChild(i(c[t],h)),a.insertBefore(i(l[t],h),o[0])})))})(),a()},render:function(r,i,o,a){var s=e.element.$wrapper;i=void 0===i?n.speed:i,n.injections.translate(r,e,n,i),r.isStart||function(r){var i=e.element.$wrapper,o=r.index;i.querySelectorAll("["+x+"]").forEach((function(e){var r,i,a=~~e.getAttribute(x);r=e,void 0===(i=[n.slidePrevClass,n.slideNextClass,n.slideActiveClass])&&(i=[]),Array.isArray(i)||(i=[i]),i.forEach((function(e){return r.classList.contains(e)&&r.classList.remove(e)})),a===o&&t(e,n.slideActiveClass),a==o-1&&t(e,n.slidePrevClass),a===o+1&&t(e,n.slideNextClass)}))}(r),a&&getComputedStyle(s).transform,o&&setTimeout(o,i)},destroy:function(){var t=e.element,i=t.$list,o=t.$wrapper,a=n.isHorizontal?"margin-right":"margin-bottom";["display","will-change","flex-direction"].forEach((function(e){o.style.removeProperty(e)})),i.forEach((function(e){return e.style.removeProperty(a)})),r()},updateSize:a}}function y(e,t){var n=e-t.max;return t=e-t.min,0<n?n:t<0?t:0}function b(t,n,r,i,o){function a(e){var n=t.measure;return Math.ceil(Math.abs(e)/n.boxSize-r.longSwipesRatio)}function s(e,t,r){i.render(n,e,t,r)}function l(i){var a,s,l=(s=t.limitation).min,c=s.max;l=(s=c-l+(r.loop?t.measure.boxSize:0))+1,n.transforms=i,r.loop?(a=(c-i)%l/s,n.progress=a<0?1+a:1<a?a-1:a):(a=(c-i)/s,n.progress=a<0?0:1<a?1:a),o.emit("scroll",e({},n))}function c(e,i){var c,u,f,p,d,m=t.measure,v=t.limitation,h=v.maxIndex-v.minIndex+1,x=r.loop?(e%h+h)%h:e>v.maxIndex?v.maxIndex:e<v.minIndex?v.minIndex:e,g=-x*m.boxSize+v.base;0!==a(g-n.transforms)&&r.loop&&(c=y(n.transforms,v),u=x-n.index,f=n.index,p=x,d=u,e=(h=v).maxIndex,f=(0<d?1:-1)*(h.minIndex-e-1)+p-f,(d=Math.abs(d)>Math.abs(f)?f:d)===u||c?n.index===x&&l(0<c?v.min-m.boxSize+c:v.max+m.boxSize+c):l(d<0?v.min-m.boxSize:v.max+m.boxSize),s(0,void 0,!0)),o.emit("before-slide",n.index,n,x),n.index=x,l(g),s(i,(function(){o.emit("after-slide",x,n)}))}return{update:function(){c(n.index,0),i.updateSize()},render:s,transform:l,slideTo:c,scrollPixel:function(e){var i,o=n.transforms,a=t.measure,s=t.limitation,c=(i=Number(e.toExponential().split("e")[1]))<=0?Math.pow(10,-(i-1)):1,u=o;r.resistance&&!r.loop&&(0<e&&o>=s.max?e-=Math.pow(e*c,r.resistanceRatio)/c:e<0&&o<=s.min&&(e+=Math.pow(-e*c,r.resistanceRatio)/c)),u+=e,r.loop&&(i=n.tracker.vector(),c=r.isHorizontal?i.velocityX:i.velocityY,(e=y(o,s))&&(i=o,o=s,0<(c=c)&&i>o.max||c<0&&i<o.min)&&(u=0<e?s.min-a.boxSize+e:s.max+a.boxSize+e)),l(u)},initStatus:function(e){void 0===e&&(e=0),n.startTransform=e,n.isStart=!1,n.isScrolling=!1,n.isTouching=!1},initLayout:function(e){l(e)},getOffsetSteps:a}}function S(e,t){var n="string"==typeof e?document.body.querySelector(e):e;return e=n.querySelector("."+t.wrapperClass),t=[].slice.call(n.getElementsByClassName(t.slideClass)),{$el:n,$wrapper:e,$list:t=t.filter((function(e){return null===e.getAttribute("data-shallow-slider")}))}}function w(t,i){var o=(f=e({},a,f=i),e({},f,{isHorizontal:"horizontal"===f.direction})),s=function(){var e={};return{on:function(t,n){e[t]?e[t].push(n):e[t]=[n]},off:function(t,n){!e[t]||-1<(n=e[t].indexOf(n))&&e[t].splice(n,1)},emit:function(t){for(var n=arguments.length,r=new Array(1<n?n-1:0),i=1;i<n;i++)r[i-1]=arguments[i];e[t]&&e[t].forEach((function(e){return e.apply(void 0,r)}))},clear:function(){e={}}}}(),c=v(S(t,o),o),u={tracker:l(),index:0,startTransform:0,isStart:!1,isScrolling:!1,isTouching:!1,transforms:0,progress:0},f=(i=s.on,s.off),p=s.emit,d={on:i,off:f,env:c,state:u,options:o};(o.plugins||w.plugins||[]).forEach((function(e){return e(d,o)})),p("before-init",d);var h=g(c,o),x=b(c,u,o,h,s),y=function(e,t,i,o){var a=e.touchable,s=["INPUT","SELECT","OPTION","TEXTAREA","BUTTON","VIDEO"],l=(o=m(i,e,t,o)).preheat,c=o.move,u=o.stop;function f(e){return{x:(e=a?e.changedTouches[0]:e).pageX,y:e.pageY}}function p(t){for(var n=0;n<i.excludeElements.length;n++)if(i.excludeElements[n].contains(t.target))return;var r,o=e.element.$wrapper,c=i.touchStartPreventDefault&&-1===s.indexOf(t.target.nodeName)||i.touchStartForcePreventDefault;!a&&c&&t.preventDefault(),l(f(t),(r=o,c=i.isHorizontal,o=getComputedStyle(r).transform.replace(/[a-z]|\(|\)|\s/g,"").split(",").map(parseFloat),r=[],16===o.length?r=o.slice(12,14):6===o.length&&(r=o.slice(4,6)),r[c?0:1]||0))}function d(e){i.touchMoveStopPropagation&&e.stopPropagation(),c(f(e)),t.isTouching&&!1!==e.cancelable&&e.preventDefault()}function v(){u()}return{attach:function(){var t=e.element.$el;a?(n(t,"touchstart",p,{passive:i.passiveListeners,capture:!1}),n(t,"touchmove",d),n(t,"touchend",v),n(t,"touchcancel",v)):(n(t,"mousedown",p),n(document,"mousemove",d),n(document,"mouseup",v))},detach:function(){var t=e.element.$el;r(t,"touchstart",p),r(t,"touchmove",d),r(t,"touchend",v),r(t,"touchcancel",v),r(t,"mousedown",p),r(document,"mousemove",d),r(document,"mouseup",v)}}}(c,u,o,x);return u=x.slideTo,Object.assign(d,{update:function(){h.destroy(),c.update(S(t,o)),h.init(),x.update()},destroy:function(){p("before-destroy",d),y.detach(),h.destroy(),p("after-destroy",d),s.clear()},slideTo:u,updateSize:function(){c.update(S(t,o)),x.update()}}),h.init(),y.attach(),u(o.initialSlide,0),p("after-init",d),d}return w.use=function(e){w.plugins=e},w}()},8608:function(e){e.exports=function(){"use strict";function e(e,t,n,r){e.addEventListener(t,n,r)}function t(e,t,n){e.removeEventListener(t,n)}return function(n,r){function i(e){c(e.target,"next")}function o(e){c(e.target,"prev")}var a=Boolean(r.navigation),s={nextEl:null,prevEl:null},l=Object.assign({disabledClass:"swiper-button-disabled"},r.navigation),c=function(e,t){u(e)&&!n.options.loop||(e=n.state.index,"next"===t&&n.slideTo(e+1),"prev"===t&&n.slideTo(e-1))},u=function(e){return e.classList.contains(l.disabledClass)};n.on("before-slide",(function(e,t,r){var i,o;n.options.loop||(i=r,r=(o=n.env.limitation).minIndex,o=o.maxIndex,s&&s.prevEl&&s.nextEl&&(s.nextEl.classList.contains(l.disabledClass)&&r<=i&&s.nextEl.classList.remove(l.disabledClass),s.prevEl.classList.contains(l.disabledClass)&&i<=o&&s.prevEl.classList.remove(l.disabledClass),i===r&&s.prevEl.classList.add(l.disabledClass),i===o&&s.nextEl.classList.add(l.disabledClass)))})),n.on("after-init",(function(){var t,r,c;a&&(s.nextEl="string"==typeof l.nextEl?document.body.querySelector(l.nextEl):l.nextEl,s.prevEl="string"==typeof l.prevEl?document.body.querySelector(l.prevEl):l.prevEl,n.options.loop||(t=n.state.index,r=n.env.element.$list,t===(c=n.env.limitation.minIndex)&&s.prevEl&&s.prevEl.classList.add(l.disabledClass),r.length===c&&s.nextEl&&s.nextEl.classList.add(l.disabledClass)),e(s.nextEl,"click",i),e(s.prevEl,"click",o))})),n.on("after-destroy",(function(){s&&s.prevEl&&s.nextEl&&(t(s.nextEl,"click",i),t(s.prevEl,"click",o),delete s.nextEl,delete s.prevEl)}))}}()},8893:function(e,t){"use strict";t.Z=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i},3653:function(e,t,n){"use strict";var r;n.d(t,{Z:function(){return o}});var i=new Uint8Array(16);function o(){if(!r&&!(r="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return r(i)}},3958:function(e,t,n){"use strict";for(var r=n(7283),i=[],o=0;o<256;++o)i.push((o+256).toString(16).substr(1));t.Z=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=(i[e[t+0]]+i[e[t+1]]+i[e[t+2]]+i[e[t+3]]+"-"+i[e[t+4]]+i[e[t+5]]+"-"+i[e[t+6]]+i[e[t+7]]+"-"+i[e[t+8]]+i[e[t+9]]+"-"+i[e[t+10]]+i[e[t+11]]+i[e[t+12]]+i[e[t+13]]+i[e[t+14]]+i[e[t+15]]).toLowerCase();if(!(0,r.Z)(n))throw TypeError("Stringified UUID is invalid");return n}},2045:function(e,t,n){"use strict";var r=n(3653),i=n(3958);t.Z=function(e,t,n){var o=(e=e||{}).random||(e.rng||r.Z)();if(o[6]=15&o[6]|64,o[8]=63&o[8]|128,t){n=n||0;for(var a=0;a<16;++a)t[n+a]=o[a];return t}return(0,i.Z)(o)}},7283:function(e,t,n){"use strict";var r=n(8893);t.Z=function(e){return"string"==typeof e&&r.Z.test(e)}},7462:function(e,t,n){"use strict";function r(){return r=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},r.apply(this,arguments)}n.d(t,{Z:function(){return r}})}}]);
|
dist/js/coblocks-events.asset.php
CHANGED
|
@@ -1 +1 @@
|
|
| 1 |
-
<?php return array('dependencies' => array(), 'version' => '
|
| 1 |
+
<?php return array('dependencies' => array(), 'version' => '6b31c5c5eb5f1e200e551df6b0be5e0b');
|
dist/js/coblocks-events.js
CHANGED
|
@@ -1 +1 @@
|
|
| 1 |
-
!function(){var e={9334:function(e){e.exports=function(){"use strict";function e(){return(e=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n,i=arguments[t];for(n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n])}return e}).apply(this,arguments)}function t(e,t){void 0===t&&(t=[]),Array.isArray(t)||(t=[t]),t.forEach((function(t){return!e.classList.contains(t)&&e.classList.add(t)}))}function n(e,t,n,i){e.addEventListener(t,n,i)}function i(e,t,n){e.removeEventListener(t,n)}function r(e,t,n){return void 0===n&&(n=""),e.setAttribute(t,n),e}function o(e,t,n){return Object.keys(t).forEach((function(n){e.style[n]=t[n]})),n&&getComputedStyle(e),e}var a={direction:"horizontal",touchRatio:1,touchAngle:45,longSwipesRatio:.5,initialSlide:0,loop:!1,freeMode:!1,passiveListeners:!0,resistance:!0,resistanceRatio:.85,speed:300,longSwipesMs:300,spaceBetween:0,slidesPerView:1,centeredSlides:!1,slidePrevClass:"swiper-slide-prev",slideNextClass:"swiper-slide-next",slideActiveClass:"swiper-slide-active",slideClass:"swiper-slide",wrapperClass:"swiper-wrapper",touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchMoveStopPropagation:!1,excludeElements:[],injections:{translate:function(e,t,n,i){o(t.element.$wrapper,{transition:e.isStart?"none":"transform ease "+i+"ms",transform:n.isHorizontal?"translate3d("+e.transforms+"px, 0, 0)":"translate3d(0, "+e.transforms+"px, 0)"})}}};var s=180/Math.PI;function l(){var t=[];return{getDuration:function(){var e=t[0],n=t[t.length-1];return e?n.time-e.time:0},getOffset:function(){var e=t[0],n=t[t.length-1];return e?{x:n.x-e.x,y:n.y-e.y}:{x:0,y:0}},getLogs:function(){return t},vector:function(){return i=(n=t).length-1,r=n[i],n=n[i-1]||r,i={x:r.x-n.x,y:r.y-n.y},r=r.time-n.time,n=i.x/r||0,r=i.y/r||0,e({},i,{angle:Math.atan2(Math.abs(i.y),Math.abs(i.x))*s,velocityX:n,velocityY:r});var n,i,r},clear:function(){t=[]},push:function(n){t.push(e({time:Date.now()},n))}}}function c(){return(performance||Date).now()}function u(){var e=function(){var e,t,n=requestAnimationFrame||webkitRequestAnimationFrame||setTimeout,i=cancelAnimationFrame||webkitCancelAnimationFrame||clearTimeout;return{run:function(i){e=void 0===e?c():e,t=n((function(){var t=c(),n=t-e;e=t,i(n)}))},stop:function(){e=void 0,i(t)}}}();return{run:function t(n){e.run((function(e){t(n),n(e)}))},stop:function(){e.stop()}}}function d(e,t){e=e.tracker,t=t.initStatus,e.clear(),t()}function p(e,t,n,i){var r=i.initLayout,o=i.initStatus,a=i.render,s=i.scrollPixel,l=i.slideTo,c=i.getOffsetSteps,p=u();return{preheat:function(e,t){var i=n.tracker;p.stop(),i.clear(),i.push(e),r(t),o(t),n.isStart=!0,a()},move:function(t){var i,r=n.tracker,o=e.touchRatio,l=e.touchAngle,c=e.isHorizontal;n.isStart&&!n.isScrolling&&(r.push(t),i=r.vector(),((t=r.getOffset()).x||t.y)&&(c&&i.angle<l||!c&&90-i.angle<l||n.isTouching?(o=i[c?"x":"y"]*o,n.isTouching=!0,s(o),a()):(n.isScrolling=!0,r.clear())))},stop:function(){var r,o,u,f=n.index,m=n.tracker,v=t.measure;n.isStart&&(n.isStart=!1,e.freeMode?(r=m.vector()[e.isHorizontal?"velocityX":"velocityY"],p.run((function(e){e*=r,r*=.98,Math.abs(e)<.01?(p.stop(),d(n,i)):(s(e),a(0))}))):(o=m.getDuration(),u=m.getOffset()[e.isHorizontal?"x":"y"],m=Math.ceil(Math.abs(u)/v.boxSize),v=c(u),o>e.longSwipesMs?l(f+v*(0<u?-1:1)):l(0<u?f-m:f+m),d(n,i)))}}}function f(e,t){var n={};return(n.update=function(e){var i,r=function(e,t,n){var i=e.$list,r=t.viewSize,o=t.slideSize,a=t.boxSize,s=-(t=(e=(s=n).loop?Math.ceil(s.slidesPerView):0)*a)+(n.centeredSlides?(r-o)/2:0);return{max:s,min:n.spaceBetween+(n.loop?o:r)+s-a*i.length,base:s,expand:e,buffer:t,minIndex:0,maxIndex:i.length-(n.centeredSlides||n.loop?1:Math.ceil(n.slidesPerView))}}(e,(i=t,o=(r=e).$el,i={boxSize:(o=((r=i.isHorizontal?o.offsetWidth:o.offsetHeight)-Math.ceil(i.slidesPerView-1)*i.spaceBetween)/i.slidesPerView)+i.spaceBetween,viewSize:r,slideSize:o}),t),o=Boolean("ontouchstart"in window||0<navigator.maxTouchPoints||0<navigator.msMaxTouchPoints||window.DocumentTouch&&document instanceof DocumentTouch);Object.assign(n,{touchable:o,element:e,measure:i,limitation:r})})(e),n}var m="data-shallow-slider",v="data-slider";function x(e,n){function i(){e.element.$wrapper.querySelectorAll("["+m+"]").forEach((function(t){return e.element.$wrapper.removeChild(t)}))}function a(){var t=e.element,i=e.measure,r=t.$wrapper,a={display:"flex",willChange:"transform",flexDirection:n.isHorizontal?"row":"column"},s=((t={})[n.isHorizontal?"width":"height"]=i.slideSize+"px",t[n.isHorizontal?"margin-right":"margin-bottom"]=n.spaceBetween+"px",t);o(r,a),r.querySelectorAll("["+v+"]").forEach((function(e){return o(e,s)}))}return{init:function(){(function(){var t,o,a,s,l,c;e.element.$list.forEach((function(e,t){return r(e,v,t)})),i(),n.loop&&(t=e.element,s=e.limitation,o=t.$list,a=t.$wrapper,s=s.expand,l=o.slice(-s).map((function(e){return e.cloneNode(!0)})),c=o.slice(0,s).map((function(e){return e.cloneNode(!0)})),l.forEach((function(e,t){a.appendChild(r(c[t],m)),a.insertBefore(r(l[t],m),o[0])})))})(),a()},render:function(i,r,o,a){var s=e.element.$wrapper;r=void 0===r?n.speed:r,n.injections.translate(i,e,n,r),i.isStart||function(i){var r=e.element.$wrapper,o=i.index;r.querySelectorAll("["+v+"]").forEach((function(e){var i,r,a=~~e.getAttribute(v);i=e,void 0===(r=[n.slidePrevClass,n.slideNextClass,n.slideActiveClass])&&(r=[]),Array.isArray(r)||(r=[r]),r.forEach((function(e){return i.classList.contains(e)&&i.classList.remove(e)})),a===o&&t(e,n.slideActiveClass),a==o-1&&t(e,n.slidePrevClass),a===o+1&&t(e,n.slideNextClass)}))}(i),a&&getComputedStyle(s).transform,o&&setTimeout(o,r)},destroy:function(){var t=e.element,r=t.$list,o=t.$wrapper,a=n.isHorizontal?"margin-right":"margin-bottom";["display","will-change","flex-direction"].forEach((function(e){o.style.removeProperty(e)})),r.forEach((function(e){return e.style.removeProperty(a)})),i()},updateSize:a}}function h(e,t){var n=e-t.max;return t=e-t.min,0<n?n:t<0?t:0}function g(t,n,i,r,o){function a(e){var n=t.measure;return Math.ceil(Math.abs(e)/n.boxSize-i.longSwipesRatio)}function s(e,t,i){r.render(n,e,t,i)}function l(r){var a,s,l=(s=t.limitation).min,c=s.max;l=(s=c-l+(i.loop?t.measure.boxSize:0))+1,n.transforms=r,i.loop?(a=(c-r)%l/s,n.progress=a<0?1+a:1<a?a-1:a):(a=(c-r)/s,n.progress=a<0?0:1<a?1:a),o.emit("scroll",e({},n))}function c(e,r){var c,u,d,p,f,m=t.measure,v=t.limitation,x=v.maxIndex-v.minIndex+1,g=i.loop?(e%x+x)%x:e>v.maxIndex?v.maxIndex:e<v.minIndex?v.minIndex:e,y=-g*m.boxSize+v.base;0!==a(y-n.transforms)&&i.loop&&(c=h(n.transforms,v),u=g-n.index,d=n.index,p=g,f=u,e=(x=v).maxIndex,d=(0<f?1:-1)*(x.minIndex-e-1)+p-d,(f=Math.abs(f)>Math.abs(d)?d:f)===u||c?n.index===g&&l(0<c?v.min-m.boxSize+c:v.max+m.boxSize+c):l(f<0?v.min-m.boxSize:v.max+m.boxSize),s(0,void 0,!0)),o.emit("before-slide",n.index,n,g),n.index=g,l(y),s(r,(function(){o.emit("after-slide",g,n)}))}return{update:function(){c(n.index,0),r.updateSize()},render:s,transform:l,slideTo:c,scrollPixel:function(e){var r,o=n.transforms,a=t.measure,s=t.limitation,c=(r=Number(e.toExponential().split("e")[1]))<=0?Math.pow(10,-(r-1)):1,u=o;i.resistance&&!i.loop&&(0<e&&o>=s.max?e-=Math.pow(e*c,i.resistanceRatio)/c:e<0&&o<=s.min&&(e+=Math.pow(-e*c,i.resistanceRatio)/c)),u+=e,i.loop&&(r=n.tracker.vector(),c=i.isHorizontal?r.velocityX:r.velocityY,(e=h(o,s))&&(r=o,o=s,0<(c=c)&&r>o.max||c<0&&r<o.min)&&(u=0<e?s.min-a.boxSize+e:s.max+a.boxSize+e)),l(u)},initStatus:function(e){void 0===e&&(e=0),n.startTransform=e,n.isStart=!1,n.isScrolling=!1,n.isTouching=!1},initLayout:function(e){l(e)},getOffsetSteps:a}}function y(e,t){var n="string"==typeof e?document.body.querySelector(e):e;return e=n.querySelector("."+t.wrapperClass),t=[].slice.call(n.getElementsByClassName(t.slideClass)),{$el:n,$wrapper:e,$list:t}}function w(t,r){var o=(d=e({},a,d=r),e({},d,{isHorizontal:"horizontal"===d.direction})),s=function(){var e={};return{on:function(t,n){e[t]?e[t].push(n):e[t]=[n]},off:function(t,n){!e[t]||-1<(n=e[t].indexOf(n))&&e[t].splice(n,1)},emit:function(t){for(var n=arguments.length,i=new Array(1<n?n-1:0),r=1;r<n;r++)i[r-1]=arguments[r];e[t]&&e[t].forEach((function(e){return e.apply(void 0,i)}))},clear:function(){e={}}}}(),c=f(y(t,o),o),u={tracker:l(),index:0,startTransform:0,isStart:!1,isScrolling:!1,isTouching:!1,transforms:0,progress:0},d=(r=s.on,s.off),m=s.emit,v={on:r,off:d,env:c,state:u,options:o};(o.plugins||w.plugins||[]).forEach((function(e){return e(v,o)})),m("before-init",v);var h=x(c,o),b=g(c,u,o,h,s),S=function(e,t,r,o){var a=e.touchable,s=["INPUT","SELECT","OPTION","TEXTAREA","BUTTON","VIDEO"],l=(o=p(r,e,t,o)).preheat,c=o.move,u=o.stop;function d(e){return{x:(e=a?e.changedTouches[0]:e).pageX,y:e.pageY}}function f(t){for(var n=0;n<r.excludeElements.length;n++)if(r.excludeElements[n].contains(t.target))return;var i,o=e.element.$wrapper,c=r.touchStartPreventDefault&&-1===s.indexOf(t.target.nodeName)||r.touchStartForcePreventDefault;!a&&c&&t.preventDefault(),l(d(t),(i=o,c=r.isHorizontal,o=getComputedStyle(i).transform.replace(/[a-z]|\(|\)|\s/g,"").split(",").map(parseFloat),i=[],16===o.length?i=o.slice(12,14):6===o.length&&(i=o.slice(4,6)),i[c?0:1]||0))}function m(e){r.touchMoveStopPropagation&&e.stopPropagation(),c(d(e)),t.isTouching&&!1!==e.cancelable&&e.preventDefault()}function v(){u()}return{attach:function(){var t=e.element.$el;a?(n(t,"touchstart",f,{passive:r.passiveListeners,capture:!1}),n(t,"touchmove",m),n(t,"touchend",v),n(t,"touchcancel",v)):(n(t,"mousedown",f),n(document,"mousemove",m),n(document,"mouseup",v))},detach:function(){var t=e.element.$el;i(t,"touchstart",f),i(t,"touchmove",m),i(t,"touchend",v),i(t,"touchcancel",v),i(t,"mousedown",f),i(document,"mousemove",m),i(document,"mouseup",v)}}}(c,u,o,b);return u=b.slideTo,Object.assign(v,{update:function(){h.destroy(),c.update(y(t,o)),h.init(),b.update()},destroy:function(){m("before-destroy",v),S.detach(),h.destroy(),m("after-destroy",v),s.clear()},slideTo:u,updateSize:function(){c.update(y(t,o)),b.update()}}),h.init(),S.attach(),u(o.initialSlide,0),m("after-init",v),v}return w.use=function(e){w.plugins=e},w}()},8608:function(e){e.exports=function(){"use strict";function e(e,t,n,i){e.addEventListener(t,n,i)}function t(e,t,n){e.removeEventListener(t,n)}return function(n,i){function r(e){c(e.target,"next")}function o(e){c(e.target,"prev")}var a=Boolean(i.navigation),s={nextEl:null,prevEl:null},l=Object.assign({disabledClass:"swiper-button-disabled"},i.navigation),c=function(e,t){u(e)&&!n.options.loop||(e=n.state.index,"next"===t&&n.slideTo(e+1),"prev"===t&&n.slideTo(e-1))},u=function(e){return e.classList.contains(l.disabledClass)};n.on("before-slide",(function(e,t,i){var r,o;n.options.loop||(r=i,i=(o=n.env.limitation).minIndex,o=o.maxIndex,s&&s.prevEl&&s.nextEl&&(s.nextEl.classList.contains(l.disabledClass)&&i<=r&&s.nextEl.classList.remove(l.disabledClass),s.prevEl.classList.contains(l.disabledClass)&&r<=o&&s.prevEl.classList.remove(l.disabledClass),r===i&&s.prevEl.classList.add(l.disabledClass),r===o&&s.nextEl.classList.add(l.disabledClass)))})),n.on("after-init",(function(){var t,i,c;a&&(s.nextEl="string"==typeof l.nextEl?document.body.querySelector(l.nextEl):l.nextEl,s.prevEl="string"==typeof l.prevEl?document.body.querySelector(l.prevEl):l.prevEl,n.options.loop||(t=n.state.index,i=n.env.element.$list,t===(c=n.env.limitation.minIndex)&&s.prevEl&&s.prevEl.classList.add(l.disabledClass),i.length===c&&s.nextEl&&s.nextEl.classList.add(l.disabledClass)),e(s.nextEl,"click",r),e(s.prevEl,"click",o))})),n.on("after-destroy",(function(){s&&s.prevEl&&s.nextEl&&(t(s.nextEl,"click",r),t(s.prevEl,"click",o),delete s.nextEl,delete s.prevEl)}))}}()}},t={};function n(i){var r=t[i];if(void 0!==r)return r.exports;var o=t[i]={exports:{}};return e[i].call(o.exports,o,o.exports,n),o.exports}n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,{a:t}),t},n.d=function(e,t){for(var i in t)n.o(t,i)&&!n.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},function(){"use strict";var e=n(9334),t=n.n(e),i=n(8608),r=n.n(i);document.addEventListener("DOMContentLoaded",(function(){setTimeout((()=>{const e=document.querySelectorAll(".page .wp-block-coblocks-front-events-swiper-container");for(let n=0;n<e.length;n++){const i=e[n];if(!i)return;const o=i.querySelector(".swiper-wrapper-loading"),a=i.querySelectorAll(".swiper-slide"),s=i.parentNode.querySelector("#wp-coblocks-event-swiper-prev"),l=i.parentNode.querySelector("#wp-coblocks-event-swiper-next");a.length>1&&o&&(o.classList.remove("swiper-wrapper-loading"),o.classList.add("swiper-wrapper"),s.style.visibility="visible",l.style.visibility="visible",new(t())(i,{navigation:{nextEl:l,prevEl:s},plugins:[r()],spaceBetween:10,touchable:!1}))}}),500)}),!1)}()}();
|
| 1 |
+
!function(){var e={9334:function(e){e.exports=function(){"use strict";function e(){return(e=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n,i=arguments[t];for(n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n])}return e}).apply(this,arguments)}function t(e,t){void 0===t&&(t=[]),Array.isArray(t)||(t=[t]),t.forEach((function(t){return!e.classList.contains(t)&&e.classList.add(t)}))}function n(e,t,n,i){e.addEventListener(t,n,i)}function i(e,t,n){e.removeEventListener(t,n)}function r(e,t,n){return void 0===n&&(n=""),e.setAttribute(t,n),e}function o(e,t,n){return Object.keys(t).forEach((function(n){e.style[n]=t[n]})),n&&getComputedStyle(e),e}var a={direction:"horizontal",touchRatio:1,touchAngle:45,longSwipesRatio:.5,initialSlide:0,loop:!1,freeMode:!1,passiveListeners:!0,resistance:!0,resistanceRatio:.85,speed:300,longSwipesMs:300,spaceBetween:0,slidesPerView:1,centeredSlides:!1,slidePrevClass:"swiper-slide-prev",slideNextClass:"swiper-slide-next",slideActiveClass:"swiper-slide-active",slideClass:"swiper-slide",wrapperClass:"swiper-wrapper",touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchMoveStopPropagation:!1,excludeElements:[],injections:{translate:function(e,t,n,i){o(t.element.$wrapper,{transition:e.isStart?"none":"transform ease "+i+"ms",transform:n.isHorizontal?"translate3d("+e.transforms+"px, 0, 0)":"translate3d(0, "+e.transforms+"px, 0)"})}}};var s=180/Math.PI;function l(){var t=[];return{getDuration:function(){var e=t[0],n=t[t.length-1];return e?n.time-e.time:0},getOffset:function(){var e=t[0],n=t[t.length-1];return e?{x:n.x-e.x,y:n.y-e.y}:{x:0,y:0}},getLogs:function(){return t},vector:function(){return i=(n=t).length-1,r=n[i],n=n[i-1]||r,i={x:r.x-n.x,y:r.y-n.y},r=r.time-n.time,n=i.x/r||0,r=i.y/r||0,e({},i,{angle:Math.atan2(Math.abs(i.y),Math.abs(i.x))*s,velocityX:n,velocityY:r});var n,i,r},clear:function(){t=[]},push:function(n){t.push(e({time:Date.now()},n))}}}function c(){return(performance||Date).now()}var u=requestAnimationFrame||webkitRequestAnimationFrame||setTimeout,d=cancelAnimationFrame||webkitCancelAnimationFrame||clearTimeout;function p(){var e=function(){var e,t;return{run:function(n){e=void 0===e?c():e,t=u((function(){var t=c(),i=t-e;e=t,n(i)}))},stop:function(){e=void 0,d(t)}}}();return{run:function t(n){e.run((function(e){t(n),n(e)}))},stop:function(){e.stop()}}}function f(e,t){e=e.tracker,t=t.initStatus,e.clear(),t()}function m(e,t,n,i){var r=i.initLayout,o=i.initStatus,a=i.render,s=i.scrollPixel,l=i.slideTo,c=i.getOffsetSteps,u=p();return{preheat:function(e,t){var i=n.tracker;u.stop(),i.clear(),i.push(e),r(t),o(t),n.isStart=!0,a()},move:function(t){var i,r=n.tracker,o=e.touchRatio,l=e.touchAngle,c=e.isHorizontal;n.isStart&&!n.isScrolling&&(r.push(t),i=r.vector(),((t=r.getOffset()).x||t.y)&&(c&&i.angle<l||!c&&90-i.angle<l||n.isTouching?(o=i[c?"x":"y"]*o,n.isTouching=!0,s(o),a()):(n.isScrolling=!0,r.clear())))},stop:function(){var r,o,d,p=n.index,m=n.tracker,v=t.measure;n.isStart&&(n.isStart=!1,e.freeMode?(r=m.vector()[e.isHorizontal?"velocityX":"velocityY"],u.run((function(e){e*=r,r*=.98,Math.abs(e)<.01?(u.stop(),f(n,i)):(s(e),a(0))}))):(o=m.getDuration(),d=m.getOffset()[e.isHorizontal?"x":"y"],m=Math.ceil(Math.abs(d)/v.boxSize),v=c(d),o>e.longSwipesMs?l(p+v*(0<d?-1:1)):l(0<d?p-m:p+m),f(n,i)))}}}function v(e,t){var n={};return(n.update=function(e){var i,r=function(e,t,n){var i=e.$list,r=t.viewSize,o=t.slideSize,a=t.boxSize,s=-(t=(e=(s=n).loop?Math.ceil(s.slidesPerView):0)*a)+(n.centeredSlides?(r-o)/2:0);return{max:s,min:n.spaceBetween+(n.loop?o:r)+s-a*i.length,base:s,expand:e,buffer:t,minIndex:0,maxIndex:i.length-(n.centeredSlides||n.loop?1:Math.ceil(n.slidesPerView))}}(e,(i=t,o=(r=e).$el,i={boxSize:(o=((r=i.isHorizontal?o.offsetWidth:o.offsetHeight)-Math.ceil(i.slidesPerView-1)*i.spaceBetween)/i.slidesPerView)+i.spaceBetween,viewSize:r,slideSize:o}),t),o=Boolean("ontouchstart"in window||0<navigator.maxTouchPoints||0<navigator.msMaxTouchPoints||window.DocumentTouch&&document instanceof DocumentTouch);Object.assign(n,{touchable:o,element:e,measure:i,limitation:r})})(e),n}var x="data-shallow-slider",h="data-slider";function g(e,n){function i(){e.element.$wrapper.querySelectorAll("["+x+"]").forEach((function(t){return e.element.$wrapper.removeChild(t)}))}function a(){var t=e.element,i=e.measure,r=t.$wrapper,a={display:"flex",willChange:"transform",flexDirection:n.isHorizontal?"row":"column"},s=((t={})[n.isHorizontal?"width":"height"]=i.slideSize+"px",t[n.isHorizontal?"margin-right":"margin-bottom"]=n.spaceBetween+"px",t);o(r,a),r.querySelectorAll("["+h+"]").forEach((function(e){return o(e,s)}))}return{init:function(){(function(){var t,o,a,s,l,c;e.element.$list.forEach((function(e,t){return r(e,h,t)})),i(),n.loop&&(t=e.element,s=e.limitation,o=t.$list,a=t.$wrapper,s=s.expand,l=o.slice(-s).map((function(e){return e.cloneNode(!0)})),c=o.slice(0,s).map((function(e){return e.cloneNode(!0)})),l.forEach((function(e,t){a.appendChild(r(c[t],x)),a.insertBefore(r(l[t],x),o[0])})))})(),a()},render:function(i,r,o,a){var s=e.element.$wrapper;r=void 0===r?n.speed:r,n.injections.translate(i,e,n,r),i.isStart||function(i){var r=e.element.$wrapper,o=i.index;r.querySelectorAll("["+h+"]").forEach((function(e){var i,r,a=~~e.getAttribute(h);i=e,void 0===(r=[n.slidePrevClass,n.slideNextClass,n.slideActiveClass])&&(r=[]),Array.isArray(r)||(r=[r]),r.forEach((function(e){return i.classList.contains(e)&&i.classList.remove(e)})),a===o&&t(e,n.slideActiveClass),a==o-1&&t(e,n.slidePrevClass),a===o+1&&t(e,n.slideNextClass)}))}(i),a&&getComputedStyle(s).transform,o&&setTimeout(o,r)},destroy:function(){var t=e.element,r=t.$list,o=t.$wrapper,a=n.isHorizontal?"margin-right":"margin-bottom";["display","will-change","flex-direction"].forEach((function(e){o.style.removeProperty(e)})),r.forEach((function(e){return e.style.removeProperty(a)})),i()},updateSize:a}}function y(e,t){var n=e-t.max;return t=e-t.min,0<n?n:t<0?t:0}function w(t,n,i,r,o){function a(e){var n=t.measure;return Math.ceil(Math.abs(e)/n.boxSize-i.longSwipesRatio)}function s(e,t,i){r.render(n,e,t,i)}function l(r){var a,s,l=(s=t.limitation).min,c=s.max;l=(s=c-l+(i.loop?t.measure.boxSize:0))+1,n.transforms=r,i.loop?(a=(c-r)%l/s,n.progress=a<0?1+a:1<a?a-1:a):(a=(c-r)/s,n.progress=a<0?0:1<a?1:a),o.emit("scroll",e({},n))}function c(e,r){var c,u,d,p,f,m=t.measure,v=t.limitation,x=v.maxIndex-v.minIndex+1,h=i.loop?(e%x+x)%x:e>v.maxIndex?v.maxIndex:e<v.minIndex?v.minIndex:e,g=-h*m.boxSize+v.base;0!==a(g-n.transforms)&&i.loop&&(c=y(n.transforms,v),u=h-n.index,d=n.index,p=h,f=u,e=(x=v).maxIndex,d=(0<f?1:-1)*(x.minIndex-e-1)+p-d,(f=Math.abs(f)>Math.abs(d)?d:f)===u||c?n.index===h&&l(0<c?v.min-m.boxSize+c:v.max+m.boxSize+c):l(f<0?v.min-m.boxSize:v.max+m.boxSize),s(0,void 0,!0)),o.emit("before-slide",n.index,n,h),n.index=h,l(g),s(r,(function(){o.emit("after-slide",h,n)}))}return{update:function(){c(n.index,0),r.updateSize()},render:s,transform:l,slideTo:c,scrollPixel:function(e){var r,o=n.transforms,a=t.measure,s=t.limitation,c=(r=Number(e.toExponential().split("e")[1]))<=0?Math.pow(10,-(r-1)):1,u=o;i.resistance&&!i.loop&&(0<e&&o>=s.max?e-=Math.pow(e*c,i.resistanceRatio)/c:e<0&&o<=s.min&&(e+=Math.pow(-e*c,i.resistanceRatio)/c)),u+=e,i.loop&&(r=n.tracker.vector(),c=i.isHorizontal?r.velocityX:r.velocityY,(e=y(o,s))&&(r=o,o=s,0<(c=c)&&r>o.max||c<0&&r<o.min)&&(u=0<e?s.min-a.boxSize+e:s.max+a.boxSize+e)),l(u)},initStatus:function(e){void 0===e&&(e=0),n.startTransform=e,n.isStart=!1,n.isScrolling=!1,n.isTouching=!1},initLayout:function(e){l(e)},getOffsetSteps:a}}function b(e,t){var n="string"==typeof e?document.body.querySelector(e):e;return e=n.querySelector("."+t.wrapperClass),t=[].slice.call(n.getElementsByClassName(t.slideClass)),{$el:n,$wrapper:e,$list:t=t.filter((function(e){return null===e.getAttribute("data-shallow-slider")}))}}function S(t,r){var o=(d=e({},a,d=r),e({},d,{isHorizontal:"horizontal"===d.direction})),s=function(){var e={};return{on:function(t,n){e[t]?e[t].push(n):e[t]=[n]},off:function(t,n){!e[t]||-1<(n=e[t].indexOf(n))&&e[t].splice(n,1)},emit:function(t){for(var n=arguments.length,i=new Array(1<n?n-1:0),r=1;r<n;r++)i[r-1]=arguments[r];e[t]&&e[t].forEach((function(e){return e.apply(void 0,i)}))},clear:function(){e={}}}}(),c=v(b(t,o),o),u={tracker:l(),index:0,startTransform:0,isStart:!1,isScrolling:!1,isTouching:!1,transforms:0,progress:0},d=(r=s.on,s.off),p=s.emit,f={on:r,off:d,env:c,state:u,options:o};(o.plugins||S.plugins||[]).forEach((function(e){return e(f,o)})),p("before-init",f);var x=g(c,o),h=w(c,u,o,x,s),y=function(e,t,r,o){var a=e.touchable,s=["INPUT","SELECT","OPTION","TEXTAREA","BUTTON","VIDEO"],l=(o=m(r,e,t,o)).preheat,c=o.move,u=o.stop;function d(e){return{x:(e=a?e.changedTouches[0]:e).pageX,y:e.pageY}}function p(t){for(var n=0;n<r.excludeElements.length;n++)if(r.excludeElements[n].contains(t.target))return;var i,o=e.element.$wrapper,c=r.touchStartPreventDefault&&-1===s.indexOf(t.target.nodeName)||r.touchStartForcePreventDefault;!a&&c&&t.preventDefault(),l(d(t),(i=o,c=r.isHorizontal,o=getComputedStyle(i).transform.replace(/[a-z]|\(|\)|\s/g,"").split(",").map(parseFloat),i=[],16===o.length?i=o.slice(12,14):6===o.length&&(i=o.slice(4,6)),i[c?0:1]||0))}function f(e){r.touchMoveStopPropagation&&e.stopPropagation(),c(d(e)),t.isTouching&&!1!==e.cancelable&&e.preventDefault()}function v(){u()}return{attach:function(){var t=e.element.$el;a?(n(t,"touchstart",p,{passive:r.passiveListeners,capture:!1}),n(t,"touchmove",f),n(t,"touchend",v),n(t,"touchcancel",v)):(n(t,"mousedown",p),n(document,"mousemove",f),n(document,"mouseup",v))},detach:function(){var t=e.element.$el;i(t,"touchstart",p),i(t,"touchmove",f),i(t,"touchend",v),i(t,"touchcancel",v),i(t,"mousedown",p),i(document,"mousemove",f),i(document,"mouseup",v)}}}(c,u,o,h);return u=h.slideTo,Object.assign(f,{update:function(){x.destroy(),c.update(b(t,o)),x.init(),h.update()},destroy:function(){p("before-destroy",f),y.detach(),x.destroy(),p("after-destroy",f),s.clear()},slideTo:u,updateSize:function(){c.update(b(t,o)),h.update()}}),x.init(),y.attach(),u(o.initialSlide,0),p("after-init",f),f}return S.use=function(e){S.plugins=e},S}()},8608:function(e){e.exports=function(){"use strict";function e(e,t,n,i){e.addEventListener(t,n,i)}function t(e,t,n){e.removeEventListener(t,n)}return function(n,i){function r(e){c(e.target,"next")}function o(e){c(e.target,"prev")}var a=Boolean(i.navigation),s={nextEl:null,prevEl:null},l=Object.assign({disabledClass:"swiper-button-disabled"},i.navigation),c=function(e,t){u(e)&&!n.options.loop||(e=n.state.index,"next"===t&&n.slideTo(e+1),"prev"===t&&n.slideTo(e-1))},u=function(e){return e.classList.contains(l.disabledClass)};n.on("before-slide",(function(e,t,i){var r,o;n.options.loop||(r=i,i=(o=n.env.limitation).minIndex,o=o.maxIndex,s&&s.prevEl&&s.nextEl&&(s.nextEl.classList.contains(l.disabledClass)&&i<=r&&s.nextEl.classList.remove(l.disabledClass),s.prevEl.classList.contains(l.disabledClass)&&r<=o&&s.prevEl.classList.remove(l.disabledClass),r===i&&s.prevEl.classList.add(l.disabledClass),r===o&&s.nextEl.classList.add(l.disabledClass)))})),n.on("after-init",(function(){var t,i,c;a&&(s.nextEl="string"==typeof l.nextEl?document.body.querySelector(l.nextEl):l.nextEl,s.prevEl="string"==typeof l.prevEl?document.body.querySelector(l.prevEl):l.prevEl,n.options.loop||(t=n.state.index,i=n.env.element.$list,t===(c=n.env.limitation.minIndex)&&s.prevEl&&s.prevEl.classList.add(l.disabledClass),i.length===c&&s.nextEl&&s.nextEl.classList.add(l.disabledClass)),e(s.nextEl,"click",r),e(s.prevEl,"click",o))})),n.on("after-destroy",(function(){s&&s.prevEl&&s.nextEl&&(t(s.nextEl,"click",r),t(s.prevEl,"click",o),delete s.nextEl,delete s.prevEl)}))}}()}},t={};function n(i){var r=t[i];if(void 0!==r)return r.exports;var o=t[i]={exports:{}};return e[i].call(o.exports,o,o.exports,n),o.exports}n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,{a:t}),t},n.d=function(e,t){for(var i in t)n.o(t,i)&&!n.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},function(){"use strict";var e=n(9334),t=n.n(e),i=n(8608),r=n.n(i);document.addEventListener("DOMContentLoaded",(function(){setTimeout((()=>{const e=document.querySelectorAll(".page .wp-block-coblocks-front-events-swiper-container");for(let n=0;n<e.length;n++){const i=e[n];if(!i)return;const o=i.querySelector(".swiper-wrapper-loading"),a=i.querySelectorAll(".swiper-slide"),s=i.parentNode.querySelector("#wp-coblocks-event-swiper-prev"),l=i.parentNode.querySelector("#wp-coblocks-event-swiper-next");a.length>1&&o&&(o.classList.remove("swiper-wrapper-loading"),o.classList.add("swiper-wrapper"),s.style.visibility="visible",l.style.visibility="visible",new(t())(i,{navigation:{nextEl:l,prevEl:s},plugins:[r()],spaceBetween:10,touchable:!1}))}}),500)}),!1)}()}();
|
dist/js/coblocks-post-carousel.asset.php
CHANGED
|
@@ -1 +1 @@
|
|
| 1 |
-
<?php return array('dependencies' => array(), 'version' => '
|
| 1 |
+
<?php return array('dependencies' => array(), 'version' => '7cf69dc8be5853ad381ddcf783d11005');
|
dist/js/coblocks-post-carousel.js
CHANGED
|
@@ -1 +1 @@
|
|
| 1 |
-
!function(){var e={9334:function(e){e.exports=function(){"use strict";function e(){return(e=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n,i=arguments[t];for(n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n])}return e}).apply(this,arguments)}function t(e,t){void 0===t&&(t=[]),Array.isArray(t)||(t=[t]),t.forEach((function(t){return!e.classList.contains(t)&&e.classList.add(t)}))}function n(e,t,n,i){e.addEventListener(t,n,i)}function i(e,t,n){e.removeEventListener(t,n)}function o(e,t,n){return void 0===n&&(n=""),e.setAttribute(t,n),e}function r(e,t,n){return Object.keys(t).forEach((function(n){e.style[n]=t[n]})),n&&getComputedStyle(e),e}var a={direction:"horizontal",touchRatio:1,touchAngle:45,longSwipesRatio:.5,initialSlide:0,loop:!1,freeMode:!1,passiveListeners:!0,resistance:!0,resistanceRatio:.85,speed:300,longSwipesMs:300,spaceBetween:0,slidesPerView:1,centeredSlides:!1,slidePrevClass:"swiper-slide-prev",slideNextClass:"swiper-slide-next",slideActiveClass:"swiper-slide-active",slideClass:"swiper-slide",wrapperClass:"swiper-wrapper",touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchMoveStopPropagation:!1,excludeElements:[],injections:{translate:function(e,t,n,i){r(t.element.$wrapper,{transition:e.isStart?"none":"transform ease "+i+"ms",transform:n.isHorizontal?"translate3d("+e.transforms+"px, 0, 0)":"translate3d(0, "+e.transforms+"px, 0)"})}}};var s=180/Math.PI;function l(){var t=[];return{getDuration:function(){var e=t[0],n=t[t.length-1];return e?n.time-e.time:0},getOffset:function(){var e=t[0],n=t[t.length-1];return e?{x:n.x-e.x,y:n.y-e.y}:{x:0,y:0}},getLogs:function(){return t},vector:function(){return i=(n=t).length-1,o=n[i],n=n[i-1]||o,i={x:o.x-n.x,y:o.y-n.y},o=o.time-n.time,n=i.x/o||0,o=i.y/o||0,e({},i,{angle:Math.atan2(Math.abs(i.y),Math.abs(i.x))*s,velocityX:n,velocityY:o});var n,i,o},clear:function(){t=[]},push:function(n){t.push(e({time:Date.now()},n))}}}function c(){return(performance||Date).now()}function u(){var e=function(){var e,t,n=requestAnimationFrame||webkitRequestAnimationFrame||setTimeout,i=cancelAnimationFrame||webkitCancelAnimationFrame||clearTimeout;return{run:function(i){e=void 0===e?c():e,t=n((function(){var t=c(),n=t-e;e=t,i(n)}))},stop:function(){e=void 0,i(t)}}}();return{run:function t(n){e.run((function(e){t(n),n(e)}))},stop:function(){e.stop()}}}function d(e,t){e=e.tracker,t=t.initStatus,e.clear(),t()}function f(e,t,n,i){var o=i.initLayout,r=i.initStatus,a=i.render,s=i.scrollPixel,l=i.slideTo,c=i.getOffsetSteps,f=u();return{preheat:function(e,t){var i=n.tracker;f.stop(),i.clear(),i.push(e),o(t),r(t),n.isStart=!0,a()},move:function(t){var i,o=n.tracker,r=e.touchRatio,l=e.touchAngle,c=e.isHorizontal;n.isStart&&!n.isScrolling&&(o.push(t),i=o.vector(),((t=o.getOffset()).x||t.y)&&(c&&i.angle<l||!c&&90-i.angle<l||n.isTouching?(r=i[c?"x":"y"]*r,n.isTouching=!0,s(r),a()):(n.isScrolling=!0,o.clear())))},stop:function(){var o,r,u,p=n.index,m=n.tracker,v=t.measure;n.isStart&&(n.isStart=!1,e.freeMode?(o=m.vector()[e.isHorizontal?"velocityX":"velocityY"],f.run((function(e){e*=o,o*=.98,Math.abs(e)<.01?(f.stop(),d(n,i)):(s(e),a(0))}))):(r=m.getDuration(),u=m.getOffset()[e.isHorizontal?"x":"y"],m=Math.ceil(Math.abs(u)/v.boxSize),v=c(u),r>e.longSwipesMs?l(p+v*(0<u?-1:1)):l(0<u?p-m:p+m),d(n,i)))}}}function p(e,t){var n={};return(n.update=function(e){var i,o=function(e,t,n){var i=e.$list,o=t.viewSize,r=t.slideSize,a=t.boxSize,s=-(t=(e=(s=n).loop?Math.ceil(s.slidesPerView):0)*a)+(n.centeredSlides?(o-r)/2:0);return{max:s,min:n.spaceBetween+(n.loop?r:o)+s-a*i.length,base:s,expand:e,buffer:t,minIndex:0,maxIndex:i.length-(n.centeredSlides||n.loop?1:Math.ceil(n.slidesPerView))}}(e,(i=t,r=(o=e).$el,i={boxSize:(r=((o=i.isHorizontal?r.offsetWidth:r.offsetHeight)-Math.ceil(i.slidesPerView-1)*i.spaceBetween)/i.slidesPerView)+i.spaceBetween,viewSize:o,slideSize:r}),t),r=Boolean("ontouchstart"in window||0<navigator.maxTouchPoints||0<navigator.msMaxTouchPoints||window.DocumentTouch&&document instanceof DocumentTouch);Object.assign(n,{touchable:r,element:e,measure:i,limitation:o})})(e),n}var m="data-shallow-slider",v="data-slider";function x(e,n){function i(){e.element.$wrapper.querySelectorAll("["+m+"]").forEach((function(t){return e.element.$wrapper.removeChild(t)}))}function a(){var t=e.element,i=e.measure,o=t.$wrapper,a={display:"flex",willChange:"transform",flexDirection:n.isHorizontal?"row":"column"},s=((t={})[n.isHorizontal?"width":"height"]=i.slideSize+"px",t[n.isHorizontal?"margin-right":"margin-bottom"]=n.spaceBetween+"px",t);r(o,a),o.querySelectorAll("["+v+"]").forEach((function(e){return r(e,s)}))}return{init:function(){(function(){var t,r,a,s,l,c;e.element.$list.forEach((function(e,t){return o(e,v,t)})),i(),n.loop&&(t=e.element,s=e.limitation,r=t.$list,a=t.$wrapper,s=s.expand,l=r.slice(-s).map((function(e){return e.cloneNode(!0)})),c=r.slice(0,s).map((function(e){return e.cloneNode(!0)})),l.forEach((function(e,t){a.appendChild(o(c[t],m)),a.insertBefore(o(l[t],m),r[0])})))})(),a()},render:function(i,o,r,a){var s=e.element.$wrapper;o=void 0===o?n.speed:o,n.injections.translate(i,e,n,o),i.isStart||function(i){var o=e.element.$wrapper,r=i.index;o.querySelectorAll("["+v+"]").forEach((function(e){var i,o,a=~~e.getAttribute(v);i=e,void 0===(o=[n.slidePrevClass,n.slideNextClass,n.slideActiveClass])&&(o=[]),Array.isArray(o)||(o=[o]),o.forEach((function(e){return i.classList.contains(e)&&i.classList.remove(e)})),a===r&&t(e,n.slideActiveClass),a==r-1&&t(e,n.slidePrevClass),a===r+1&&t(e,n.slideNextClass)}))}(i),a&&getComputedStyle(s).transform,r&&setTimeout(r,o)},destroy:function(){var t=e.element,o=t.$list,r=t.$wrapper,a=n.isHorizontal?"margin-right":"margin-bottom";["display","will-change","flex-direction"].forEach((function(e){r.style.removeProperty(e)})),o.forEach((function(e){return e.style.removeProperty(a)})),i()},updateSize:a}}function h(e,t){var n=e-t.max;return t=e-t.min,0<n?n:t<0?t:0}function g(t,n,i,o,r){function a(e){var n=t.measure;return Math.ceil(Math.abs(e)/n.boxSize-i.longSwipesRatio)}function s(e,t,i){o.render(n,e,t,i)}function l(o){var a,s,l=(s=t.limitation).min,c=s.max;l=(s=c-l+(i.loop?t.measure.boxSize:0))+1,n.transforms=o,i.loop?(a=(c-o)%l/s,n.progress=a<0?1+a:1<a?a-1:a):(a=(c-o)/s,n.progress=a<0?0:1<a?1:a),r.emit("scroll",e({},n))}function c(e,o){var c,u,d,f,p,m=t.measure,v=t.limitation,x=v.maxIndex-v.minIndex+1,g=i.loop?(e%x+x)%x:e>v.maxIndex?v.maxIndex:e<v.minIndex?v.minIndex:e,y=-g*m.boxSize+v.base;0!==a(y-n.transforms)&&i.loop&&(c=h(n.transforms,v),u=g-n.index,d=n.index,f=g,p=u,e=(x=v).maxIndex,d=(0<p?1:-1)*(x.minIndex-e-1)+f-d,(p=Math.abs(p)>Math.abs(d)?d:p)===u||c?n.index===g&&l(0<c?v.min-m.boxSize+c:v.max+m.boxSize+c):l(p<0?v.min-m.boxSize:v.max+m.boxSize),s(0,void 0,!0)),r.emit("before-slide",n.index,n,g),n.index=g,l(y),s(o,(function(){r.emit("after-slide",g,n)}))}return{update:function(){c(n.index,0),o.updateSize()},render:s,transform:l,slideTo:c,scrollPixel:function(e){var o,r=n.transforms,a=t.measure,s=t.limitation,c=(o=Number(e.toExponential().split("e")[1]))<=0?Math.pow(10,-(o-1)):1,u=r;i.resistance&&!i.loop&&(0<e&&r>=s.max?e-=Math.pow(e*c,i.resistanceRatio)/c:e<0&&r<=s.min&&(e+=Math.pow(-e*c,i.resistanceRatio)/c)),u+=e,i.loop&&(o=n.tracker.vector(),c=i.isHorizontal?o.velocityX:o.velocityY,(e=h(r,s))&&(o=r,r=s,0<(c=c)&&o>r.max||c<0&&o<r.min)&&(u=0<e?s.min-a.boxSize+e:s.max+a.boxSize+e)),l(u)},initStatus:function(e){void 0===e&&(e=0),n.startTransform=e,n.isStart=!1,n.isScrolling=!1,n.isTouching=!1},initLayout:function(e){l(e)},getOffsetSteps:a}}function y(e,t){var n="string"==typeof e?document.body.querySelector(e):e;return e=n.querySelector("."+t.wrapperClass),t=[].slice.call(n.getElementsByClassName(t.slideClass)),{$el:n,$wrapper:e,$list:t}}function S(t,o){var r=(d=e({},a,d=o),e({},d,{isHorizontal:"horizontal"===d.direction})),s=function(){var e={};return{on:function(t,n){e[t]?e[t].push(n):e[t]=[n]},off:function(t,n){!e[t]||-1<(n=e[t].indexOf(n))&&e[t].splice(n,1)},emit:function(t){for(var n=arguments.length,i=new Array(1<n?n-1:0),o=1;o<n;o++)i[o-1]=arguments[o];e[t]&&e[t].forEach((function(e){return e.apply(void 0,i)}))},clear:function(){e={}}}}(),c=p(y(t,r),r),u={tracker:l(),index:0,startTransform:0,isStart:!1,isScrolling:!1,isTouching:!1,transforms:0,progress:0},d=(o=s.on,s.off),m=s.emit,v={on:o,off:d,env:c,state:u,options:r};(r.plugins||S.plugins||[]).forEach((function(e){return e(v,r)})),m("before-init",v);var h=x(c,r),b=g(c,u,r,h,s),w=function(e,t,o,r){var a=e.touchable,s=["INPUT","SELECT","OPTION","TEXTAREA","BUTTON","VIDEO"],l=(r=f(o,e,t,r)).preheat,c=r.move,u=r.stop;function d(e){return{x:(e=a?e.changedTouches[0]:e).pageX,y:e.pageY}}function p(t){for(var n=0;n<o.excludeElements.length;n++)if(o.excludeElements[n].contains(t.target))return;var i,r=e.element.$wrapper,c=o.touchStartPreventDefault&&-1===s.indexOf(t.target.nodeName)||o.touchStartForcePreventDefault;!a&&c&&t.preventDefault(),l(d(t),(i=r,c=o.isHorizontal,r=getComputedStyle(i).transform.replace(/[a-z]|\(|\)|\s/g,"").split(",").map(parseFloat),i=[],16===r.length?i=r.slice(12,14):6===r.length&&(i=r.slice(4,6)),i[c?0:1]||0))}function m(e){o.touchMoveStopPropagation&&e.stopPropagation(),c(d(e)),t.isTouching&&!1!==e.cancelable&&e.preventDefault()}function v(){u()}return{attach:function(){var t=e.element.$el;a?(n(t,"touchstart",p,{passive:o.passiveListeners,capture:!1}),n(t,"touchmove",m),n(t,"touchend",v),n(t,"touchcancel",v)):(n(t,"mousedown",p),n(document,"mousemove",m),n(document,"mouseup",v))},detach:function(){var t=e.element.$el;i(t,"touchstart",p),i(t,"touchmove",m),i(t,"touchend",v),i(t,"touchcancel",v),i(t,"mousedown",p),i(document,"mousemove",m),i(document,"mouseup",v)}}}(c,u,r,b);return u=b.slideTo,Object.assign(v,{update:function(){h.destroy(),c.update(y(t,r)),h.init(),b.update()},destroy:function(){m("before-destroy",v),w.detach(),h.destroy(),m("after-destroy",v),s.clear()},slideTo:u,updateSize:function(){c.update(y(t,r)),b.update()}}),h.init(),w.attach(),u(r.initialSlide,0),m("after-init",v),v}return S.use=function(e){S.plugins=e},S}()},8608:function(e){e.exports=function(){"use strict";function e(e,t,n,i){e.addEventListener(t,n,i)}function t(e,t,n){e.removeEventListener(t,n)}return function(n,i){function o(e){c(e.target,"next")}function r(e){c(e.target,"prev")}var a=Boolean(i.navigation),s={nextEl:null,prevEl:null},l=Object.assign({disabledClass:"swiper-button-disabled"},i.navigation),c=function(e,t){u(e)&&!n.options.loop||(e=n.state.index,"next"===t&&n.slideTo(e+1),"prev"===t&&n.slideTo(e-1))},u=function(e){return e.classList.contains(l.disabledClass)};n.on("before-slide",(function(e,t,i){var o,r;n.options.loop||(o=i,i=(r=n.env.limitation).minIndex,r=r.maxIndex,s&&s.prevEl&&s.nextEl&&(s.nextEl.classList.contains(l.disabledClass)&&i<=o&&s.nextEl.classList.remove(l.disabledClass),s.prevEl.classList.contains(l.disabledClass)&&o<=r&&s.prevEl.classList.remove(l.disabledClass),o===i&&s.prevEl.classList.add(l.disabledClass),o===r&&s.nextEl.classList.add(l.disabledClass)))})),n.on("after-init",(function(){var t,i,c;a&&(s.nextEl="string"==typeof l.nextEl?document.body.querySelector(l.nextEl):l.nextEl,s.prevEl="string"==typeof l.prevEl?document.body.querySelector(l.prevEl):l.prevEl,n.options.loop||(t=n.state.index,i=n.env.element.$list,t===(c=n.env.limitation.minIndex)&&s.prevEl&&s.prevEl.classList.add(l.disabledClass),i.length===c&&s.nextEl&&s.nextEl.classList.add(l.disabledClass)),e(s.nextEl,"click",o),e(s.prevEl,"click",r))})),n.on("after-destroy",(function(){s&&s.prevEl&&s.nextEl&&(t(s.nextEl,"click",o),t(s.prevEl,"click",r),delete s.nextEl,delete s.prevEl)}))}}()}},t={};function n(i){var o=t[i];if(void 0!==o)return o.exports;var r=t[i]={exports:{}};return e[i].call(r.exports,r,r.exports,n),r.exports}n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,{a:t}),t},n.d=function(e,t){for(var i in t)n.o(t,i)&&!n.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},function(){"use strict";var e=n(9334),t=n.n(e),i=n(8608),o=n.n(i);document.addEventListener("DOMContentLoaded",(function(){setTimeout((()=>{const e=document.querySelectorAll(".wp-block-coblocks-post-carousel");for(let i=0;i<e.length;i++){const r=e[i];if(r){var n;const e=r.querySelector("[data-swiper]"),i=JSON.parse(null==e||null===(n=e.dataset)||void 0===n?void 0:n.swiper),a=r.querySelector("#wp-coblocks-post-carousel-swiper-prev"),s=r.querySelector("#wp-coblocks-post-carousel-swiper-next");r.querySelectorAll(".swiper-slide").length>1&&(a.style.visibility="visible",s.style.visibility="visible",new(t())(e,{centeredSlides:!1,loop:!0,navigation:{nextEl:s,prevEl:a},plugins:[o()],slidesPerView:i.slidesToShow,spaceBetween:35,touchable:!1}))}}}),1500)}))}()}();
|
| 1 |
+
!function(){var e={9334:function(e){e.exports=function(){"use strict";function e(){return(e=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n,i=arguments[t];for(n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n])}return e}).apply(this,arguments)}function t(e,t){void 0===t&&(t=[]),Array.isArray(t)||(t=[t]),t.forEach((function(t){return!e.classList.contains(t)&&e.classList.add(t)}))}function n(e,t,n,i){e.addEventListener(t,n,i)}function i(e,t,n){e.removeEventListener(t,n)}function o(e,t,n){return void 0===n&&(n=""),e.setAttribute(t,n),e}function r(e,t,n){return Object.keys(t).forEach((function(n){e.style[n]=t[n]})),n&&getComputedStyle(e),e}var a={direction:"horizontal",touchRatio:1,touchAngle:45,longSwipesRatio:.5,initialSlide:0,loop:!1,freeMode:!1,passiveListeners:!0,resistance:!0,resistanceRatio:.85,speed:300,longSwipesMs:300,spaceBetween:0,slidesPerView:1,centeredSlides:!1,slidePrevClass:"swiper-slide-prev",slideNextClass:"swiper-slide-next",slideActiveClass:"swiper-slide-active",slideClass:"swiper-slide",wrapperClass:"swiper-wrapper",touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchMoveStopPropagation:!1,excludeElements:[],injections:{translate:function(e,t,n,i){r(t.element.$wrapper,{transition:e.isStart?"none":"transform ease "+i+"ms",transform:n.isHorizontal?"translate3d("+e.transforms+"px, 0, 0)":"translate3d(0, "+e.transforms+"px, 0)"})}}};var s=180/Math.PI;function l(){var t=[];return{getDuration:function(){var e=t[0],n=t[t.length-1];return e?n.time-e.time:0},getOffset:function(){var e=t[0],n=t[t.length-1];return e?{x:n.x-e.x,y:n.y-e.y}:{x:0,y:0}},getLogs:function(){return t},vector:function(){return i=(n=t).length-1,o=n[i],n=n[i-1]||o,i={x:o.x-n.x,y:o.y-n.y},o=o.time-n.time,n=i.x/o||0,o=i.y/o||0,e({},i,{angle:Math.atan2(Math.abs(i.y),Math.abs(i.x))*s,velocityX:n,velocityY:o});var n,i,o},clear:function(){t=[]},push:function(n){t.push(e({time:Date.now()},n))}}}function c(){return(performance||Date).now()}var u=requestAnimationFrame||webkitRequestAnimationFrame||setTimeout,d=cancelAnimationFrame||webkitCancelAnimationFrame||clearTimeout;function f(){var e=function(){var e,t;return{run:function(n){e=void 0===e?c():e,t=u((function(){var t=c(),i=t-e;e=t,n(i)}))},stop:function(){e=void 0,d(t)}}}();return{run:function t(n){e.run((function(e){t(n),n(e)}))},stop:function(){e.stop()}}}function p(e,t){e=e.tracker,t=t.initStatus,e.clear(),t()}function m(e,t,n,i){var o=i.initLayout,r=i.initStatus,a=i.render,s=i.scrollPixel,l=i.slideTo,c=i.getOffsetSteps,u=f();return{preheat:function(e,t){var i=n.tracker;u.stop(),i.clear(),i.push(e),o(t),r(t),n.isStart=!0,a()},move:function(t){var i,o=n.tracker,r=e.touchRatio,l=e.touchAngle,c=e.isHorizontal;n.isStart&&!n.isScrolling&&(o.push(t),i=o.vector(),((t=o.getOffset()).x||t.y)&&(c&&i.angle<l||!c&&90-i.angle<l||n.isTouching?(r=i[c?"x":"y"]*r,n.isTouching=!0,s(r),a()):(n.isScrolling=!0,o.clear())))},stop:function(){var o,r,d,f=n.index,m=n.tracker,v=t.measure;n.isStart&&(n.isStart=!1,e.freeMode?(o=m.vector()[e.isHorizontal?"velocityX":"velocityY"],u.run((function(e){e*=o,o*=.98,Math.abs(e)<.01?(u.stop(),p(n,i)):(s(e),a(0))}))):(r=m.getDuration(),d=m.getOffset()[e.isHorizontal?"x":"y"],m=Math.ceil(Math.abs(d)/v.boxSize),v=c(d),r>e.longSwipesMs?l(f+v*(0<d?-1:1)):l(0<d?f-m:f+m),p(n,i)))}}}function v(e,t){var n={};return(n.update=function(e){var i,o=function(e,t,n){var i=e.$list,o=t.viewSize,r=t.slideSize,a=t.boxSize,s=-(t=(e=(s=n).loop?Math.ceil(s.slidesPerView):0)*a)+(n.centeredSlides?(o-r)/2:0);return{max:s,min:n.spaceBetween+(n.loop?r:o)+s-a*i.length,base:s,expand:e,buffer:t,minIndex:0,maxIndex:i.length-(n.centeredSlides||n.loop?1:Math.ceil(n.slidesPerView))}}(e,(i=t,r=(o=e).$el,i={boxSize:(r=((o=i.isHorizontal?r.offsetWidth:r.offsetHeight)-Math.ceil(i.slidesPerView-1)*i.spaceBetween)/i.slidesPerView)+i.spaceBetween,viewSize:o,slideSize:r}),t),r=Boolean("ontouchstart"in window||0<navigator.maxTouchPoints||0<navigator.msMaxTouchPoints||window.DocumentTouch&&document instanceof DocumentTouch);Object.assign(n,{touchable:r,element:e,measure:i,limitation:o})})(e),n}var x="data-shallow-slider",h="data-slider";function g(e,n){function i(){e.element.$wrapper.querySelectorAll("["+x+"]").forEach((function(t){return e.element.$wrapper.removeChild(t)}))}function a(){var t=e.element,i=e.measure,o=t.$wrapper,a={display:"flex",willChange:"transform",flexDirection:n.isHorizontal?"row":"column"},s=((t={})[n.isHorizontal?"width":"height"]=i.slideSize+"px",t[n.isHorizontal?"margin-right":"margin-bottom"]=n.spaceBetween+"px",t);r(o,a),o.querySelectorAll("["+h+"]").forEach((function(e){return r(e,s)}))}return{init:function(){(function(){var t,r,a,s,l,c;e.element.$list.forEach((function(e,t){return o(e,h,t)})),i(),n.loop&&(t=e.element,s=e.limitation,r=t.$list,a=t.$wrapper,s=s.expand,l=r.slice(-s).map((function(e){return e.cloneNode(!0)})),c=r.slice(0,s).map((function(e){return e.cloneNode(!0)})),l.forEach((function(e,t){a.appendChild(o(c[t],x)),a.insertBefore(o(l[t],x),r[0])})))})(),a()},render:function(i,o,r,a){var s=e.element.$wrapper;o=void 0===o?n.speed:o,n.injections.translate(i,e,n,o),i.isStart||function(i){var o=e.element.$wrapper,r=i.index;o.querySelectorAll("["+h+"]").forEach((function(e){var i,o,a=~~e.getAttribute(h);i=e,void 0===(o=[n.slidePrevClass,n.slideNextClass,n.slideActiveClass])&&(o=[]),Array.isArray(o)||(o=[o]),o.forEach((function(e){return i.classList.contains(e)&&i.classList.remove(e)})),a===r&&t(e,n.slideActiveClass),a==r-1&&t(e,n.slidePrevClass),a===r+1&&t(e,n.slideNextClass)}))}(i),a&&getComputedStyle(s).transform,r&&setTimeout(r,o)},destroy:function(){var t=e.element,o=t.$list,r=t.$wrapper,a=n.isHorizontal?"margin-right":"margin-bottom";["display","will-change","flex-direction"].forEach((function(e){r.style.removeProperty(e)})),o.forEach((function(e){return e.style.removeProperty(a)})),i()},updateSize:a}}function y(e,t){var n=e-t.max;return t=e-t.min,0<n?n:t<0?t:0}function S(t,n,i,o,r){function a(e){var n=t.measure;return Math.ceil(Math.abs(e)/n.boxSize-i.longSwipesRatio)}function s(e,t,i){o.render(n,e,t,i)}function l(o){var a,s,l=(s=t.limitation).min,c=s.max;l=(s=c-l+(i.loop?t.measure.boxSize:0))+1,n.transforms=o,i.loop?(a=(c-o)%l/s,n.progress=a<0?1+a:1<a?a-1:a):(a=(c-o)/s,n.progress=a<0?0:1<a?1:a),r.emit("scroll",e({},n))}function c(e,o){var c,u,d,f,p,m=t.measure,v=t.limitation,x=v.maxIndex-v.minIndex+1,h=i.loop?(e%x+x)%x:e>v.maxIndex?v.maxIndex:e<v.minIndex?v.minIndex:e,g=-h*m.boxSize+v.base;0!==a(g-n.transforms)&&i.loop&&(c=y(n.transforms,v),u=h-n.index,d=n.index,f=h,p=u,e=(x=v).maxIndex,d=(0<p?1:-1)*(x.minIndex-e-1)+f-d,(p=Math.abs(p)>Math.abs(d)?d:p)===u||c?n.index===h&&l(0<c?v.min-m.boxSize+c:v.max+m.boxSize+c):l(p<0?v.min-m.boxSize:v.max+m.boxSize),s(0,void 0,!0)),r.emit("before-slide",n.index,n,h),n.index=h,l(g),s(o,(function(){r.emit("after-slide",h,n)}))}return{update:function(){c(n.index,0),o.updateSize()},render:s,transform:l,slideTo:c,scrollPixel:function(e){var o,r=n.transforms,a=t.measure,s=t.limitation,c=(o=Number(e.toExponential().split("e")[1]))<=0?Math.pow(10,-(o-1)):1,u=r;i.resistance&&!i.loop&&(0<e&&r>=s.max?e-=Math.pow(e*c,i.resistanceRatio)/c:e<0&&r<=s.min&&(e+=Math.pow(-e*c,i.resistanceRatio)/c)),u+=e,i.loop&&(o=n.tracker.vector(),c=i.isHorizontal?o.velocityX:o.velocityY,(e=y(r,s))&&(o=r,r=s,0<(c=c)&&o>r.max||c<0&&o<r.min)&&(u=0<e?s.min-a.boxSize+e:s.max+a.boxSize+e)),l(u)},initStatus:function(e){void 0===e&&(e=0),n.startTransform=e,n.isStart=!1,n.isScrolling=!1,n.isTouching=!1},initLayout:function(e){l(e)},getOffsetSteps:a}}function b(e,t){var n="string"==typeof e?document.body.querySelector(e):e;return e=n.querySelector("."+t.wrapperClass),t=[].slice.call(n.getElementsByClassName(t.slideClass)),{$el:n,$wrapper:e,$list:t=t.filter((function(e){return null===e.getAttribute("data-shallow-slider")}))}}function w(t,o){var r=(d=e({},a,d=o),e({},d,{isHorizontal:"horizontal"===d.direction})),s=function(){var e={};return{on:function(t,n){e[t]?e[t].push(n):e[t]=[n]},off:function(t,n){!e[t]||-1<(n=e[t].indexOf(n))&&e[t].splice(n,1)},emit:function(t){for(var n=arguments.length,i=new Array(1<n?n-1:0),o=1;o<n;o++)i[o-1]=arguments[o];e[t]&&e[t].forEach((function(e){return e.apply(void 0,i)}))},clear:function(){e={}}}}(),c=v(b(t,r),r),u={tracker:l(),index:0,startTransform:0,isStart:!1,isScrolling:!1,isTouching:!1,transforms:0,progress:0},d=(o=s.on,s.off),f=s.emit,p={on:o,off:d,env:c,state:u,options:r};(r.plugins||w.plugins||[]).forEach((function(e){return e(p,r)})),f("before-init",p);var x=g(c,r),h=S(c,u,r,x,s),y=function(e,t,o,r){var a=e.touchable,s=["INPUT","SELECT","OPTION","TEXTAREA","BUTTON","VIDEO"],l=(r=m(o,e,t,r)).preheat,c=r.move,u=r.stop;function d(e){return{x:(e=a?e.changedTouches[0]:e).pageX,y:e.pageY}}function f(t){for(var n=0;n<o.excludeElements.length;n++)if(o.excludeElements[n].contains(t.target))return;var i,r=e.element.$wrapper,c=o.touchStartPreventDefault&&-1===s.indexOf(t.target.nodeName)||o.touchStartForcePreventDefault;!a&&c&&t.preventDefault(),l(d(t),(i=r,c=o.isHorizontal,r=getComputedStyle(i).transform.replace(/[a-z]|\(|\)|\s/g,"").split(",").map(parseFloat),i=[],16===r.length?i=r.slice(12,14):6===r.length&&(i=r.slice(4,6)),i[c?0:1]||0))}function p(e){o.touchMoveStopPropagation&&e.stopPropagation(),c(d(e)),t.isTouching&&!1!==e.cancelable&&e.preventDefault()}function v(){u()}return{attach:function(){var t=e.element.$el;a?(n(t,"touchstart",f,{passive:o.passiveListeners,capture:!1}),n(t,"touchmove",p),n(t,"touchend",v),n(t,"touchcancel",v)):(n(t,"mousedown",f),n(document,"mousemove",p),n(document,"mouseup",v))},detach:function(){var t=e.element.$el;i(t,"touchstart",f),i(t,"touchmove",p),i(t,"touchend",v),i(t,"touchcancel",v),i(t,"mousedown",f),i(document,"mousemove",p),i(document,"mouseup",v)}}}(c,u,r,h);return u=h.slideTo,Object.assign(p,{update:function(){x.destroy(),c.update(b(t,r)),x.init(),h.update()},destroy:function(){f("before-destroy",p),y.detach(),x.destroy(),f("after-destroy",p),s.clear()},slideTo:u,updateSize:function(){c.update(b(t,r)),h.update()}}),x.init(),y.attach(),u(r.initialSlide,0),f("after-init",p),p}return w.use=function(e){w.plugins=e},w}()},8608:function(e){e.exports=function(){"use strict";function e(e,t,n,i){e.addEventListener(t,n,i)}function t(e,t,n){e.removeEventListener(t,n)}return function(n,i){function o(e){c(e.target,"next")}function r(e){c(e.target,"prev")}var a=Boolean(i.navigation),s={nextEl:null,prevEl:null},l=Object.assign({disabledClass:"swiper-button-disabled"},i.navigation),c=function(e,t){u(e)&&!n.options.loop||(e=n.state.index,"next"===t&&n.slideTo(e+1),"prev"===t&&n.slideTo(e-1))},u=function(e){return e.classList.contains(l.disabledClass)};n.on("before-slide",(function(e,t,i){var o,r;n.options.loop||(o=i,i=(r=n.env.limitation).minIndex,r=r.maxIndex,s&&s.prevEl&&s.nextEl&&(s.nextEl.classList.contains(l.disabledClass)&&i<=o&&s.nextEl.classList.remove(l.disabledClass),s.prevEl.classList.contains(l.disabledClass)&&o<=r&&s.prevEl.classList.remove(l.disabledClass),o===i&&s.prevEl.classList.add(l.disabledClass),o===r&&s.nextEl.classList.add(l.disabledClass)))})),n.on("after-init",(function(){var t,i,c;a&&(s.nextEl="string"==typeof l.nextEl?document.body.querySelector(l.nextEl):l.nextEl,s.prevEl="string"==typeof l.prevEl?document.body.querySelector(l.prevEl):l.prevEl,n.options.loop||(t=n.state.index,i=n.env.element.$list,t===(c=n.env.limitation.minIndex)&&s.prevEl&&s.prevEl.classList.add(l.disabledClass),i.length===c&&s.nextEl&&s.nextEl.classList.add(l.disabledClass)),e(s.nextEl,"click",o),e(s.prevEl,"click",r))})),n.on("after-destroy",(function(){s&&s.prevEl&&s.nextEl&&(t(s.nextEl,"click",o),t(s.prevEl,"click",r),delete s.nextEl,delete s.prevEl)}))}}()}},t={};function n(i){var o=t[i];if(void 0!==o)return o.exports;var r=t[i]={exports:{}};return e[i].call(r.exports,r,r.exports,n),r.exports}n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,{a:t}),t},n.d=function(e,t){for(var i in t)n.o(t,i)&&!n.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},function(){"use strict";var e=n(9334),t=n.n(e),i=n(8608),o=n.n(i);document.addEventListener("DOMContentLoaded",(function(){setTimeout((()=>{const e=document.querySelectorAll(".wp-block-coblocks-post-carousel");for(let i=0;i<e.length;i++){const r=e[i];if(r){var n;const e=r.querySelector("[data-swiper]"),i=JSON.parse(null==e||null===(n=e.dataset)||void 0===n?void 0:n.swiper),a=r.querySelector("#wp-coblocks-post-carousel-swiper-prev"),s=r.querySelector("#wp-coblocks-post-carousel-swiper-next");r.querySelectorAll(".swiper-slide").length>1&&(a.style.visibility="visible",s.style.visibility="visible",new(t())(e,{centeredSlides:!1,loop:!0,navigation:{nextEl:s,prevEl:a},plugins:[o()],slidesPerView:i.slidesToShow,spaceBetween:35,touchable:!1}))}}}),1500)}))}()}();
|
dist/js/coblocks-tinyswiper-initializer.asset.php
CHANGED
|
@@ -1 +1 @@
|
|
| 1 |
-
<?php return array('dependencies' => array(), 'version' => '
|
| 1 |
+
<?php return array('dependencies' => array(), 'version' => 'a1582df0ef205f771426dd861dbe4c0d');
|
dist/js/coblocks-tinyswiper-initializer.js
CHANGED
|
@@ -1 +1 @@
|
|
| 1 |
-
!function(){var e={9334:function(e){e.exports=function(){"use strict";function e(){return(e=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n,i=arguments[t];for(n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n])}return e}).apply(this,arguments)}function t(e,t){void 0===t&&(t=[]),Array.isArray(t)||(t=[t]),t.forEach((function(t){return!e.classList.contains(t)&&e.classList.add(t)}))}function n(e,t,n,i){e.addEventListener(t,n,i)}function i(e,t,n){e.removeEventListener(t,n)}function o(e,t,n){return void 0===n&&(n=""),e.setAttribute(t,n),e}function r(e,t,n){return Object.keys(t).forEach((function(n){e.style[n]=t[n]})),n&&getComputedStyle(e),e}var a={direction:"horizontal",touchRatio:1,touchAngle:45,longSwipesRatio:.5,initialSlide:0,loop:!1,freeMode:!1,passiveListeners:!0,resistance:!0,resistanceRatio:.85,speed:300,longSwipesMs:300,spaceBetween:0,slidesPerView:1,centeredSlides:!1,slidePrevClass:"swiper-slide-prev",slideNextClass:"swiper-slide-next",slideActiveClass:"swiper-slide-active",slideClass:"swiper-slide",wrapperClass:"swiper-wrapper",touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchMoveStopPropagation:!1,excludeElements:[],injections:{translate:function(e,t,n,i){r(t.element.$wrapper,{transition:e.isStart?"none":"transform ease "+i+"ms",transform:n.isHorizontal?"translate3d("+e.transforms+"px, 0, 0)":"translate3d(0, "+e.transforms+"px, 0)"})}}};var s=180/Math.PI;function l(){var t=[];return{getDuration:function(){var e=t[0],n=t[t.length-1];return e?n.time-e.time:0},getOffset:function(){var e=t[0],n=t[t.length-1];return e?{x:n.x-e.x,y:n.y-e.y}:{x:0,y:0}},getLogs:function(){return t},vector:function(){return i=(n=t).length-1,o=n[i],n=n[i-1]||o,i={x:o.x-n.x,y:o.y-n.y},o=o.time-n.time,n=i.x/o||0,o=i.y/o||0,e({},i,{angle:Math.atan2(Math.abs(i.y),Math.abs(i.x))*s,velocityX:n,velocityY:o});var n,i,o},clear:function(){t=[]},push:function(n){t.push(e({time:Date.now()},n))}}}function c(){return(performance||Date).now()}function u(){var e=function(){var e,t,n=requestAnimationFrame||webkitRequestAnimationFrame||setTimeout,i=cancelAnimationFrame||webkitCancelAnimationFrame||clearTimeout;return{run:function(i){e=void 0===e?c():e,t=n((function(){var t=c(),n=t-e;e=t,i(n)}))},stop:function(){e=void 0,i(t)}}}();return{run:function t(n){e.run((function(e){t(n),n(e)}))},stop:function(){e.stop()}}}function d(e,t){e=e.tracker,t=t.initStatus,e.clear(),t()}function p(e,t,n,i){var o=i.initLayout,r=i.initStatus,a=i.render,s=i.scrollPixel,l=i.slideTo,c=i.getOffsetSteps,p=u();return{preheat:function(e,t){var i=n.tracker;p.stop(),i.clear(),i.push(e),o(t),r(t),n.isStart=!0,a()},move:function(t){var i,o=n.tracker,r=e.touchRatio,l=e.touchAngle,c=e.isHorizontal;n.isStart&&!n.isScrolling&&(o.push(t),i=o.vector(),((t=o.getOffset()).x||t.y)&&(c&&i.angle<l||!c&&90-i.angle<l||n.isTouching?(r=i[c?"x":"y"]*r,n.isTouching=!0,s(r),a()):(n.isScrolling=!0,o.clear())))},stop:function(){var o,r,u,f=n.index,v=n.tracker,m=t.measure;n.isStart&&(n.isStart=!1,e.freeMode?(o=v.vector()[e.isHorizontal?"velocityX":"velocityY"],p.run((function(e){e*=o,o*=.98,Math.abs(e)<.01?(p.stop(),d(n,i)):(s(e),a(0))}))):(r=v.getDuration(),u=v.getOffset()[e.isHorizontal?"x":"y"],v=Math.ceil(Math.abs(u)/m.boxSize),m=c(u),r>e.longSwipesMs?l(f+m*(0<u?-1:1)):l(0<u?f-v:f+v),d(n,i)))}}}function f(e,t){var n={};return(n.update=function(e){var i,o=function(e,t,n){var i=e.$list,o=t.viewSize,r=t.slideSize,a=t.boxSize,s=-(t=(e=(s=n).loop?Math.ceil(s.slidesPerView):0)*a)+(n.centeredSlides?(o-r)/2:0);return{max:s,min:n.spaceBetween+(n.loop?r:o)+s-a*i.length,base:s,expand:e,buffer:t,minIndex:0,maxIndex:i.length-(n.centeredSlides||n.loop?1:Math.ceil(n.slidesPerView))}}(e,(i=t,r=(o=e).$el,i={boxSize:(r=((o=i.isHorizontal?r.offsetWidth:r.offsetHeight)-Math.ceil(i.slidesPerView-1)*i.spaceBetween)/i.slidesPerView)+i.spaceBetween,viewSize:o,slideSize:r}),t),r=Boolean("ontouchstart"in window||0<navigator.maxTouchPoints||0<navigator.msMaxTouchPoints||window.DocumentTouch&&document instanceof DocumentTouch);Object.assign(n,{touchable:r,element:e,measure:i,limitation:o})})(e),n}var v="data-shallow-slider",m="data-slider";function x(e,n){function i(){e.element.$wrapper.querySelectorAll("["+v+"]").forEach((function(t){return e.element.$wrapper.removeChild(t)}))}function a(){var t=e.element,i=e.measure,o=t.$wrapper,a={display:"flex",willChange:"transform",flexDirection:n.isHorizontal?"row":"column"},s=((t={})[n.isHorizontal?"width":"height"]=i.slideSize+"px",t[n.isHorizontal?"margin-right":"margin-bottom"]=n.spaceBetween+"px",t);r(o,a),o.querySelectorAll("["+m+"]").forEach((function(e){return r(e,s)}))}return{init:function(){(function(){var t,r,a,s,l,c;e.element.$list.forEach((function(e,t){return o(e,m,t)})),i(),n.loop&&(t=e.element,s=e.limitation,r=t.$list,a=t.$wrapper,s=s.expand,l=r.slice(-s).map((function(e){return e.cloneNode(!0)})),c=r.slice(0,s).map((function(e){return e.cloneNode(!0)})),l.forEach((function(e,t){a.appendChild(o(c[t],v)),a.insertBefore(o(l[t],v),r[0])})))})(),a()},render:function(i,o,r,a){var s=e.element.$wrapper;o=void 0===o?n.speed:o,n.injections.translate(i,e,n,o),i.isStart||function(i){var o=e.element.$wrapper,r=i.index;o.querySelectorAll("["+m+"]").forEach((function(e){var i,o,a=~~e.getAttribute(m);i=e,void 0===(o=[n.slidePrevClass,n.slideNextClass,n.slideActiveClass])&&(o=[]),Array.isArray(o)||(o=[o]),o.forEach((function(e){return i.classList.contains(e)&&i.classList.remove(e)})),a===r&&t(e,n.slideActiveClass),a==r-1&&t(e,n.slidePrevClass),a===r+1&&t(e,n.slideNextClass)}))}(i),a&&getComputedStyle(s).transform,r&&setTimeout(r,o)},destroy:function(){var t=e.element,o=t.$list,r=t.$wrapper,a=n.isHorizontal?"margin-right":"margin-bottom";["display","will-change","flex-direction"].forEach((function(e){r.style.removeProperty(e)})),o.forEach((function(e){return e.style.removeProperty(a)})),i()},updateSize:a}}function h(e,t){var n=e-t.max;return t=e-t.min,0<n?n:t<0?t:0}function g(t,n,i,o,r){function a(e){var n=t.measure;return Math.ceil(Math.abs(e)/n.boxSize-i.longSwipesRatio)}function s(e,t,i){o.render(n,e,t,i)}function l(o){var a,s,l=(s=t.limitation).min,c=s.max;l=(s=c-l+(i.loop?t.measure.boxSize:0))+1,n.transforms=o,i.loop?(a=(c-o)%l/s,n.progress=a<0?1+a:1<a?a-1:a):(a=(c-o)/s,n.progress=a<0?0:1<a?1:a),r.emit("scroll",e({},n))}function c(e,o){var c,u,d,p,f,v=t.measure,m=t.limitation,x=m.maxIndex-m.minIndex+1,g=i.loop?(e%x+x)%x:e>m.maxIndex?m.maxIndex:e<m.minIndex?m.minIndex:e,b=-g*v.boxSize+m.base;0!==a(b-n.transforms)&&i.loop&&(c=h(n.transforms,m),u=g-n.index,d=n.index,p=g,f=u,e=(x=m).maxIndex,d=(0<f?1:-1)*(x.minIndex-e-1)+p-d,(f=Math.abs(f)>Math.abs(d)?d:f)===u||c?n.index===g&&l(0<c?m.min-v.boxSize+c:m.max+v.boxSize+c):l(f<0?m.min-v.boxSize:m.max+v.boxSize),s(0,void 0,!0)),r.emit("before-slide",n.index,n,g),n.index=g,l(b),s(o,(function(){r.emit("after-slide",g,n)}))}return{update:function(){c(n.index,0),o.updateSize()},render:s,transform:l,slideTo:c,scrollPixel:function(e){var o,r=n.transforms,a=t.measure,s=t.limitation,c=(o=Number(e.toExponential().split("e")[1]))<=0?Math.pow(10,-(o-1)):1,u=r;i.resistance&&!i.loop&&(0<e&&r>=s.max?e-=Math.pow(e*c,i.resistanceRatio)/c:e<0&&r<=s.min&&(e+=Math.pow(-e*c,i.resistanceRatio)/c)),u+=e,i.loop&&(o=n.tracker.vector(),c=i.isHorizontal?o.velocityX:o.velocityY,(e=h(r,s))&&(o=r,r=s,0<(c=c)&&o>r.max||c<0&&o<r.min)&&(u=0<e?s.min-a.boxSize+e:s.max+a.boxSize+e)),l(u)},initStatus:function(e){void 0===e&&(e=0),n.startTransform=e,n.isStart=!1,n.isScrolling=!1,n.isTouching=!1},initLayout:function(e){l(e)},getOffsetSteps:a}}function b(e,t){var n="string"==typeof e?document.body.querySelector(e):e;return e=n.querySelector("."+t.wrapperClass),t=[].slice.call(n.getElementsByClassName(t.slideClass)),{$el:n,$wrapper:e,$list:t}}function y(t,o){var r=(d=e({},a,d=o),e({},d,{isHorizontal:"horizontal"===d.direction})),s=function(){var e={};return{on:function(t,n){e[t]?e[t].push(n):e[t]=[n]},off:function(t,n){!e[t]||-1<(n=e[t].indexOf(n))&&e[t].splice(n,1)},emit:function(t){for(var n=arguments.length,i=new Array(1<n?n-1:0),o=1;o<n;o++)i[o-1]=arguments[o];e[t]&&e[t].forEach((function(e){return e.apply(void 0,i)}))},clear:function(){e={}}}}(),c=f(b(t,r),r),u={tracker:l(),index:0,startTransform:0,isStart:!1,isScrolling:!1,isTouching:!1,transforms:0,progress:0},d=(o=s.on,s.off),v=s.emit,m={on:o,off:d,env:c,state:u,options:r};(r.plugins||y.plugins||[]).forEach((function(e){return e(m,r)})),v("before-init",m);var h=x(c,r),S=g(c,u,r,h,s),w=function(e,t,o,r){var a=e.touchable,s=["INPUT","SELECT","OPTION","TEXTAREA","BUTTON","VIDEO"],l=(r=p(o,e,t,r)).preheat,c=r.move,u=r.stop;function d(e){return{x:(e=a?e.changedTouches[0]:e).pageX,y:e.pageY}}function f(t){for(var n=0;n<o.excludeElements.length;n++)if(o.excludeElements[n].contains(t.target))return;var i,r=e.element.$wrapper,c=o.touchStartPreventDefault&&-1===s.indexOf(t.target.nodeName)||o.touchStartForcePreventDefault;!a&&c&&t.preventDefault(),l(d(t),(i=r,c=o.isHorizontal,r=getComputedStyle(i).transform.replace(/[a-z]|\(|\)|\s/g,"").split(",").map(parseFloat),i=[],16===r.length?i=r.slice(12,14):6===r.length&&(i=r.slice(4,6)),i[c?0:1]||0))}function v(e){o.touchMoveStopPropagation&&e.stopPropagation(),c(d(e)),t.isTouching&&!1!==e.cancelable&&e.preventDefault()}function m(){u()}return{attach:function(){var t=e.element.$el;a?(n(t,"touchstart",f,{passive:o.passiveListeners,capture:!1}),n(t,"touchmove",v),n(t,"touchend",m),n(t,"touchcancel",m)):(n(t,"mousedown",f),n(document,"mousemove",v),n(document,"mouseup",m))},detach:function(){var t=e.element.$el;i(t,"touchstart",f),i(t,"touchmove",v),i(t,"touchend",m),i(t,"touchcancel",m),i(t,"mousedown",f),i(document,"mousemove",v),i(document,"mouseup",m)}}}(c,u,r,S);return u=S.slideTo,Object.assign(m,{update:function(){h.destroy(),c.update(b(t,r)),h.init(),S.update()},destroy:function(){v("before-destroy",m),w.detach(),h.destroy(),v("after-destroy",m),s.clear()},slideTo:u,updateSize:function(){c.update(b(t,r)),S.update()}}),h.init(),w.attach(),u(r.initialSlide,0),v("after-init",m),m}return y.use=function(e){y.plugins=e},y}()},8608:function(e){e.exports=function(){"use strict";function e(e,t,n,i){e.addEventListener(t,n,i)}function t(e,t,n){e.removeEventListener(t,n)}return function(n,i){function o(e){c(e.target,"next")}function r(e){c(e.target,"prev")}var a=Boolean(i.navigation),s={nextEl:null,prevEl:null},l=Object.assign({disabledClass:"swiper-button-disabled"},i.navigation),c=function(e,t){u(e)&&!n.options.loop||(e=n.state.index,"next"===t&&n.slideTo(e+1),"prev"===t&&n.slideTo(e-1))},u=function(e){return e.classList.contains(l.disabledClass)};n.on("before-slide",(function(e,t,i){var o,r;n.options.loop||(o=i,i=(r=n.env.limitation).minIndex,r=r.maxIndex,s&&s.prevEl&&s.nextEl&&(s.nextEl.classList.contains(l.disabledClass)&&i<=o&&s.nextEl.classList.remove(l.disabledClass),s.prevEl.classList.contains(l.disabledClass)&&o<=r&&s.prevEl.classList.remove(l.disabledClass),o===i&&s.prevEl.classList.add(l.disabledClass),o===r&&s.nextEl.classList.add(l.disabledClass)))})),n.on("after-init",(function(){var t,i,c;a&&(s.nextEl="string"==typeof l.nextEl?document.body.querySelector(l.nextEl):l.nextEl,s.prevEl="string"==typeof l.prevEl?document.body.querySelector(l.prevEl):l.prevEl,n.options.loop||(t=n.state.index,i=n.env.element.$list,t===(c=n.env.limitation.minIndex)&&s.prevEl&&s.prevEl.classList.add(l.disabledClass),i.length===c&&s.nextEl&&s.nextEl.classList.add(l.disabledClass)),e(s.nextEl,"click",o),e(s.prevEl,"click",r))})),n.on("after-destroy",(function(){s&&s.prevEl&&s.nextEl&&(t(s.nextEl,"click",o),t(s.prevEl,"click",r),delete s.nextEl,delete s.prevEl)}))}}()}},t={};function n(i){var o=t[i];if(void 0!==o)return o.exports;var r=t[i]={exports:{}};return e[i].call(r.exports,r,r.exports,n),r.exports}n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,{a:t}),t},n.d=function(e,t){for(var i in t)n.o(t,i)&&!n.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},function(){"use strict";var e=n(9334),t=n.n(e),i=n(8608),o=n.n(i);!function(){const e=document.querySelectorAll(".wp-block-coblocks-gallery-carousel");for(let n=0;n<e.length;n++){let i=null,r=0,a=!1;const s=e[n],l=e=>{const t=s.querySelector(`.wp-block-coblocks-gallery-carousel-thumbnail-${r}`);if(t){t.classList.remove("is-active");const n=s.querySelector(`.wp-block-coblocks-gallery-carousel-thumbnail-${e}`);n&&n.classList.add("is-active")}},c=e=>{var t;null===(t=i)||void 0===t||t.slideTo(e),l(e),r=e},u=e=>{e!==r&&(l(e),r=e)},d=s.querySelector(".swiper-container");if(d){const e=d.getAttribute("data-swiper");if(e){const n=JSON.parse(e),r=s.querySelector(".nav-button__prev"),l=s.querySelector(".nav-button__next"),p={centeredSlides:!1,freeMode:!0,longSwipesRatio:.8,loop:!1,passiveListeners:!0,plugins:[],slidesPerView:1,touchable:!1};if(!0===n.loop&&(p.loop=n.loop),n.slidesPerView&&(p.slidesPerView=n.slidesPerView),n.navigation&&(p.plugins=[...p.plugins,o()],p.navigation={nextEl:l,prevEl:r}),i=new(t())(d,p),new ResizeObserver((()=>{i.update()})).observe(d),n.thumbnails){const e=s.querySelectorAll(".wp-block-coblocks-gallery-carousel-thumbnail");for(const[t,n]of Object.entries(e))n.addEventListener("click",(()=>c(t)));const t=s.querySelector(".wp-block-coblocks-gallery-carousel-thumbnail-0");t&&t.classList.add("is-active")}if(!n.thumbnails&&n.pageDots){const e=s.querySelectorAll(".wp-block-coblocks-gallery-carousel-page-dot-pagination");for(const[t,n]of Object.entries(e))n.addEventListener("click",(()=>c(t)));const t=s.querySelector(".wp-block-coblocks-gallery-carousel-page-dot--0");t&&t.classList.add("is-active")}if(!0!==n.draggable){const e=s.querySelector(".swiper-wrapper");null==e||e.addEventListener("mousedown",(e=>{e.stopPropagation()}))}!0===n.autoPlay&&n.autoPlaySpeed&&(!0===n.pauseHover&&(d.addEventListener("mouseenter",(()=>{a=!0})),d.addEventListener("mouseleave",(()=>{a=!1}))),setInterval((()=>{var e;!0===n.pauseHover&&!0===a||null===(e=i)||void 0===e||e.slideTo(i.state.index+1)}),n.autoPlaySpeed)),i.on("after-slide",u)}}}}()}()}();
|
| 1 |
+
!function(){var e={9334:function(e){e.exports=function(){"use strict";function e(){return(e=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n,i=arguments[t];for(n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n])}return e}).apply(this,arguments)}function t(e,t){void 0===t&&(t=[]),Array.isArray(t)||(t=[t]),t.forEach((function(t){return!e.classList.contains(t)&&e.classList.add(t)}))}function n(e,t,n,i){e.addEventListener(t,n,i)}function i(e,t,n){e.removeEventListener(t,n)}function o(e,t,n){return void 0===n&&(n=""),e.setAttribute(t,n),e}function r(e,t,n){return Object.keys(t).forEach((function(n){e.style[n]=t[n]})),n&&getComputedStyle(e),e}var a={direction:"horizontal",touchRatio:1,touchAngle:45,longSwipesRatio:.5,initialSlide:0,loop:!1,freeMode:!1,passiveListeners:!0,resistance:!0,resistanceRatio:.85,speed:300,longSwipesMs:300,spaceBetween:0,slidesPerView:1,centeredSlides:!1,slidePrevClass:"swiper-slide-prev",slideNextClass:"swiper-slide-next",slideActiveClass:"swiper-slide-active",slideClass:"swiper-slide",wrapperClass:"swiper-wrapper",touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchMoveStopPropagation:!1,excludeElements:[],injections:{translate:function(e,t,n,i){r(t.element.$wrapper,{transition:e.isStart?"none":"transform ease "+i+"ms",transform:n.isHorizontal?"translate3d("+e.transforms+"px, 0, 0)":"translate3d(0, "+e.transforms+"px, 0)"})}}};var s=180/Math.PI;function l(){var t=[];return{getDuration:function(){var e=t[0],n=t[t.length-1];return e?n.time-e.time:0},getOffset:function(){var e=t[0],n=t[t.length-1];return e?{x:n.x-e.x,y:n.y-e.y}:{x:0,y:0}},getLogs:function(){return t},vector:function(){return i=(n=t).length-1,o=n[i],n=n[i-1]||o,i={x:o.x-n.x,y:o.y-n.y},o=o.time-n.time,n=i.x/o||0,o=i.y/o||0,e({},i,{angle:Math.atan2(Math.abs(i.y),Math.abs(i.x))*s,velocityX:n,velocityY:o});var n,i,o},clear:function(){t=[]},push:function(n){t.push(e({time:Date.now()},n))}}}function c(){return(performance||Date).now()}var u=requestAnimationFrame||webkitRequestAnimationFrame||setTimeout,d=cancelAnimationFrame||webkitCancelAnimationFrame||clearTimeout;function p(){var e=function(){var e,t;return{run:function(n){e=void 0===e?c():e,t=u((function(){var t=c(),i=t-e;e=t,n(i)}))},stop:function(){e=void 0,d(t)}}}();return{run:function t(n){e.run((function(e){t(n),n(e)}))},stop:function(){e.stop()}}}function f(e,t){e=e.tracker,t=t.initStatus,e.clear(),t()}function v(e,t,n,i){var o=i.initLayout,r=i.initStatus,a=i.render,s=i.scrollPixel,l=i.slideTo,c=i.getOffsetSteps,u=p();return{preheat:function(e,t){var i=n.tracker;u.stop(),i.clear(),i.push(e),o(t),r(t),n.isStart=!0,a()},move:function(t){var i,o=n.tracker,r=e.touchRatio,l=e.touchAngle,c=e.isHorizontal;n.isStart&&!n.isScrolling&&(o.push(t),i=o.vector(),((t=o.getOffset()).x||t.y)&&(c&&i.angle<l||!c&&90-i.angle<l||n.isTouching?(r=i[c?"x":"y"]*r,n.isTouching=!0,s(r),a()):(n.isScrolling=!0,o.clear())))},stop:function(){var o,r,d,p=n.index,v=n.tracker,m=t.measure;n.isStart&&(n.isStart=!1,e.freeMode?(o=v.vector()[e.isHorizontal?"velocityX":"velocityY"],u.run((function(e){e*=o,o*=.98,Math.abs(e)<.01?(u.stop(),f(n,i)):(s(e),a(0))}))):(r=v.getDuration(),d=v.getOffset()[e.isHorizontal?"x":"y"],v=Math.ceil(Math.abs(d)/m.boxSize),m=c(d),r>e.longSwipesMs?l(p+m*(0<d?-1:1)):l(0<d?p-v:p+v),f(n,i)))}}}function m(e,t){var n={};return(n.update=function(e){var i,o=function(e,t,n){var i=e.$list,o=t.viewSize,r=t.slideSize,a=t.boxSize,s=-(t=(e=(s=n).loop?Math.ceil(s.slidesPerView):0)*a)+(n.centeredSlides?(o-r)/2:0);return{max:s,min:n.spaceBetween+(n.loop?r:o)+s-a*i.length,base:s,expand:e,buffer:t,minIndex:0,maxIndex:i.length-(n.centeredSlides||n.loop?1:Math.ceil(n.slidesPerView))}}(e,(i=t,r=(o=e).$el,i={boxSize:(r=((o=i.isHorizontal?r.offsetWidth:r.offsetHeight)-Math.ceil(i.slidesPerView-1)*i.spaceBetween)/i.slidesPerView)+i.spaceBetween,viewSize:o,slideSize:r}),t),r=Boolean("ontouchstart"in window||0<navigator.maxTouchPoints||0<navigator.msMaxTouchPoints||window.DocumentTouch&&document instanceof DocumentTouch);Object.assign(n,{touchable:r,element:e,measure:i,limitation:o})})(e),n}var x="data-shallow-slider",h="data-slider";function g(e,n){function i(){e.element.$wrapper.querySelectorAll("["+x+"]").forEach((function(t){return e.element.$wrapper.removeChild(t)}))}function a(){var t=e.element,i=e.measure,o=t.$wrapper,a={display:"flex",willChange:"transform",flexDirection:n.isHorizontal?"row":"column"},s=((t={})[n.isHorizontal?"width":"height"]=i.slideSize+"px",t[n.isHorizontal?"margin-right":"margin-bottom"]=n.spaceBetween+"px",t);r(o,a),o.querySelectorAll("["+h+"]").forEach((function(e){return r(e,s)}))}return{init:function(){(function(){var t,r,a,s,l,c;e.element.$list.forEach((function(e,t){return o(e,h,t)})),i(),n.loop&&(t=e.element,s=e.limitation,r=t.$list,a=t.$wrapper,s=s.expand,l=r.slice(-s).map((function(e){return e.cloneNode(!0)})),c=r.slice(0,s).map((function(e){return e.cloneNode(!0)})),l.forEach((function(e,t){a.appendChild(o(c[t],x)),a.insertBefore(o(l[t],x),r[0])})))})(),a()},render:function(i,o,r,a){var s=e.element.$wrapper;o=void 0===o?n.speed:o,n.injections.translate(i,e,n,o),i.isStart||function(i){var o=e.element.$wrapper,r=i.index;o.querySelectorAll("["+h+"]").forEach((function(e){var i,o,a=~~e.getAttribute(h);i=e,void 0===(o=[n.slidePrevClass,n.slideNextClass,n.slideActiveClass])&&(o=[]),Array.isArray(o)||(o=[o]),o.forEach((function(e){return i.classList.contains(e)&&i.classList.remove(e)})),a===r&&t(e,n.slideActiveClass),a==r-1&&t(e,n.slidePrevClass),a===r+1&&t(e,n.slideNextClass)}))}(i),a&&getComputedStyle(s).transform,r&&setTimeout(r,o)},destroy:function(){var t=e.element,o=t.$list,r=t.$wrapper,a=n.isHorizontal?"margin-right":"margin-bottom";["display","will-change","flex-direction"].forEach((function(e){r.style.removeProperty(e)})),o.forEach((function(e){return e.style.removeProperty(a)})),i()},updateSize:a}}function b(e,t){var n=e-t.max;return t=e-t.min,0<n?n:t<0?t:0}function y(t,n,i,o,r){function a(e){var n=t.measure;return Math.ceil(Math.abs(e)/n.boxSize-i.longSwipesRatio)}function s(e,t,i){o.render(n,e,t,i)}function l(o){var a,s,l=(s=t.limitation).min,c=s.max;l=(s=c-l+(i.loop?t.measure.boxSize:0))+1,n.transforms=o,i.loop?(a=(c-o)%l/s,n.progress=a<0?1+a:1<a?a-1:a):(a=(c-o)/s,n.progress=a<0?0:1<a?1:a),r.emit("scroll",e({},n))}function c(e,o){var c,u,d,p,f,v=t.measure,m=t.limitation,x=m.maxIndex-m.minIndex+1,h=i.loop?(e%x+x)%x:e>m.maxIndex?m.maxIndex:e<m.minIndex?m.minIndex:e,g=-h*v.boxSize+m.base;0!==a(g-n.transforms)&&i.loop&&(c=b(n.transforms,m),u=h-n.index,d=n.index,p=h,f=u,e=(x=m).maxIndex,d=(0<f?1:-1)*(x.minIndex-e-1)+p-d,(f=Math.abs(f)>Math.abs(d)?d:f)===u||c?n.index===h&&l(0<c?m.min-v.boxSize+c:m.max+v.boxSize+c):l(f<0?m.min-v.boxSize:m.max+v.boxSize),s(0,void 0,!0)),r.emit("before-slide",n.index,n,h),n.index=h,l(g),s(o,(function(){r.emit("after-slide",h,n)}))}return{update:function(){c(n.index,0),o.updateSize()},render:s,transform:l,slideTo:c,scrollPixel:function(e){var o,r=n.transforms,a=t.measure,s=t.limitation,c=(o=Number(e.toExponential().split("e")[1]))<=0?Math.pow(10,-(o-1)):1,u=r;i.resistance&&!i.loop&&(0<e&&r>=s.max?e-=Math.pow(e*c,i.resistanceRatio)/c:e<0&&r<=s.min&&(e+=Math.pow(-e*c,i.resistanceRatio)/c)),u+=e,i.loop&&(o=n.tracker.vector(),c=i.isHorizontal?o.velocityX:o.velocityY,(e=b(r,s))&&(o=r,r=s,0<(c=c)&&o>r.max||c<0&&o<r.min)&&(u=0<e?s.min-a.boxSize+e:s.max+a.boxSize+e)),l(u)},initStatus:function(e){void 0===e&&(e=0),n.startTransform=e,n.isStart=!1,n.isScrolling=!1,n.isTouching=!1},initLayout:function(e){l(e)},getOffsetSteps:a}}function S(e,t){var n="string"==typeof e?document.body.querySelector(e):e;return e=n.querySelector("."+t.wrapperClass),t=[].slice.call(n.getElementsByClassName(t.slideClass)),{$el:n,$wrapper:e,$list:t=t.filter((function(e){return null===e.getAttribute("data-shallow-slider")}))}}function w(t,o){var r=(d=e({},a,d=o),e({},d,{isHorizontal:"horizontal"===d.direction})),s=function(){var e={};return{on:function(t,n){e[t]?e[t].push(n):e[t]=[n]},off:function(t,n){!e[t]||-1<(n=e[t].indexOf(n))&&e[t].splice(n,1)},emit:function(t){for(var n=arguments.length,i=new Array(1<n?n-1:0),o=1;o<n;o++)i[o-1]=arguments[o];e[t]&&e[t].forEach((function(e){return e.apply(void 0,i)}))},clear:function(){e={}}}}(),c=m(S(t,r),r),u={tracker:l(),index:0,startTransform:0,isStart:!1,isScrolling:!1,isTouching:!1,transforms:0,progress:0},d=(o=s.on,s.off),p=s.emit,f={on:o,off:d,env:c,state:u,options:r};(r.plugins||w.plugins||[]).forEach((function(e){return e(f,r)})),p("before-init",f);var x=g(c,r),h=y(c,u,r,x,s),b=function(e,t,o,r){var a=e.touchable,s=["INPUT","SELECT","OPTION","TEXTAREA","BUTTON","VIDEO"],l=(r=v(o,e,t,r)).preheat,c=r.move,u=r.stop;function d(e){return{x:(e=a?e.changedTouches[0]:e).pageX,y:e.pageY}}function p(t){for(var n=0;n<o.excludeElements.length;n++)if(o.excludeElements[n].contains(t.target))return;var i,r=e.element.$wrapper,c=o.touchStartPreventDefault&&-1===s.indexOf(t.target.nodeName)||o.touchStartForcePreventDefault;!a&&c&&t.preventDefault(),l(d(t),(i=r,c=o.isHorizontal,r=getComputedStyle(i).transform.replace(/[a-z]|\(|\)|\s/g,"").split(",").map(parseFloat),i=[],16===r.length?i=r.slice(12,14):6===r.length&&(i=r.slice(4,6)),i[c?0:1]||0))}function f(e){o.touchMoveStopPropagation&&e.stopPropagation(),c(d(e)),t.isTouching&&!1!==e.cancelable&&e.preventDefault()}function m(){u()}return{attach:function(){var t=e.element.$el;a?(n(t,"touchstart",p,{passive:o.passiveListeners,capture:!1}),n(t,"touchmove",f),n(t,"touchend",m),n(t,"touchcancel",m)):(n(t,"mousedown",p),n(document,"mousemove",f),n(document,"mouseup",m))},detach:function(){var t=e.element.$el;i(t,"touchstart",p),i(t,"touchmove",f),i(t,"touchend",m),i(t,"touchcancel",m),i(t,"mousedown",p),i(document,"mousemove",f),i(document,"mouseup",m)}}}(c,u,r,h);return u=h.slideTo,Object.assign(f,{update:function(){x.destroy(),c.update(S(t,r)),x.init(),h.update()},destroy:function(){p("before-destroy",f),b.detach(),x.destroy(),p("after-destroy",f),s.clear()},slideTo:u,updateSize:function(){c.update(S(t,r)),h.update()}}),x.init(),b.attach(),u(r.initialSlide,0),p("after-init",f),f}return w.use=function(e){w.plugins=e},w}()},8608:function(e){e.exports=function(){"use strict";function e(e,t,n,i){e.addEventListener(t,n,i)}function t(e,t,n){e.removeEventListener(t,n)}return function(n,i){function o(e){c(e.target,"next")}function r(e){c(e.target,"prev")}var a=Boolean(i.navigation),s={nextEl:null,prevEl:null},l=Object.assign({disabledClass:"swiper-button-disabled"},i.navigation),c=function(e,t){u(e)&&!n.options.loop||(e=n.state.index,"next"===t&&n.slideTo(e+1),"prev"===t&&n.slideTo(e-1))},u=function(e){return e.classList.contains(l.disabledClass)};n.on("before-slide",(function(e,t,i){var o,r;n.options.loop||(o=i,i=(r=n.env.limitation).minIndex,r=r.maxIndex,s&&s.prevEl&&s.nextEl&&(s.nextEl.classList.contains(l.disabledClass)&&i<=o&&s.nextEl.classList.remove(l.disabledClass),s.prevEl.classList.contains(l.disabledClass)&&o<=r&&s.prevEl.classList.remove(l.disabledClass),o===i&&s.prevEl.classList.add(l.disabledClass),o===r&&s.nextEl.classList.add(l.disabledClass)))})),n.on("after-init",(function(){var t,i,c;a&&(s.nextEl="string"==typeof l.nextEl?document.body.querySelector(l.nextEl):l.nextEl,s.prevEl="string"==typeof l.prevEl?document.body.querySelector(l.prevEl):l.prevEl,n.options.loop||(t=n.state.index,i=n.env.element.$list,t===(c=n.env.limitation.minIndex)&&s.prevEl&&s.prevEl.classList.add(l.disabledClass),i.length===c&&s.nextEl&&s.nextEl.classList.add(l.disabledClass)),e(s.nextEl,"click",o),e(s.prevEl,"click",r))})),n.on("after-destroy",(function(){s&&s.prevEl&&s.nextEl&&(t(s.nextEl,"click",o),t(s.prevEl,"click",r),delete s.nextEl,delete s.prevEl)}))}}()}},t={};function n(i){var o=t[i];if(void 0!==o)return o.exports;var r=t[i]={exports:{}};return e[i].call(r.exports,r,r.exports,n),r.exports}n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,{a:t}),t},n.d=function(e,t){for(var i in t)n.o(t,i)&&!n.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},function(){"use strict";var e=n(9334),t=n.n(e),i=n(8608),o=n.n(i);!function(){const e=document.querySelectorAll(".wp-block-coblocks-gallery-carousel");for(let n=0;n<e.length;n++){let i=null,r=0,a=!1;const s=e[n],l=e=>{const t=s.querySelector(`.wp-block-coblocks-gallery-carousel-thumbnail-${r}`);if(t){t.classList.remove("is-active");const n=s.querySelector(`.wp-block-coblocks-gallery-carousel-thumbnail-${e}`);n&&n.classList.add("is-active")}},c=e=>{var t;null===(t=i)||void 0===t||t.slideTo(e),l(e),r=e},u=e=>{e!==r&&(l(e),r=e)},d=s.querySelector(".swiper-container");if(d){const e=d.getAttribute("data-swiper");if(e){const n=JSON.parse(e),r=s.querySelector(".nav-button__prev"),l=s.querySelector(".nav-button__next"),p={centeredSlides:!1,freeMode:!0,longSwipesRatio:.8,loop:!1,passiveListeners:!0,plugins:[],slidesPerView:1,touchable:!1};if(!0===n.loop&&(p.loop=n.loop),n.slidesPerView&&(p.slidesPerView=n.slidesPerView),n.navigation&&(p.plugins=[...p.plugins,o()],p.navigation={nextEl:l,prevEl:r}),i=new(t())(d,p),new ResizeObserver((()=>{i.update()})).observe(d),n.thumbnails){const e=s.querySelectorAll(".wp-block-coblocks-gallery-carousel-thumbnail");for(const[t,n]of Object.entries(e))n.addEventListener("click",(()=>c(t)));const t=s.querySelector(".wp-block-coblocks-gallery-carousel-thumbnail-0");t&&t.classList.add("is-active")}if(!n.thumbnails&&n.pageDots){const e=s.querySelectorAll(".wp-block-coblocks-gallery-carousel-page-dot-pagination");for(const[t,n]of Object.entries(e))n.addEventListener("click",(()=>c(t)));const t=s.querySelector(".wp-block-coblocks-gallery-carousel-page-dot--0");t&&t.classList.add("is-active")}if(!0!==n.draggable){const e=s.querySelector(".swiper-wrapper");null==e||e.addEventListener("mousedown",(e=>{e.stopPropagation()}))}!0===n.autoPlay&&n.autoPlaySpeed&&(!0===n.pauseHover&&(d.addEventListener("mouseenter",(()=>{a=!0})),d.addEventListener("mouseleave",(()=>{a=!1}))),setInterval((()=>{var e;!0===n.pauseHover&&!0===a||null===(e=i)||void 0===e||e.slideTo(i.state.index+1)}),n.autoPlaySpeed)),i.on("after-slide",u)}}}}()}()}();
|
dist/js/vendors/tiny-swiper.asset.php
CHANGED
|
@@ -1 +1 @@
|
|
| 1 |
-
<?php return array('dependencies' => array(), 'version' => '
|
| 1 |
+
<?php return array('dependencies' => array(), 'version' => 'a4f008aa068b60065531221cb996fe6f');
|
dist/js/vendors/tiny-swiper.js
CHANGED
|
@@ -1 +1 @@
|
|
| 1 |
-
!function(){var e={7300:function(e){e.exports=function(){"use strict";function e(){return e=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},e.apply(this,arguments)}function t(e,t){void 0===t&&(t=[]),Array.isArray(t)||(t=[t]),t.forEach((function(t){return!e.classList.contains(t)&&e.classList.add(t)}))}function n(e,t,n,i){e.addEventListener(t,n,i)}function i(e,t,n){e.removeEventListener(t,n)}function r(e,t,n){return void 0===n&&(n=""),e.setAttribute(t,n),e}function o(e,t,n){return Object.keys(t).forEach((function(n){e.style[n]=t[n]})),n&&getComputedStyle(e),e}var a={direction:"horizontal",touchRatio:1,touchAngle:45,longSwipesRatio:.5,initialSlide:0,loop:!1,freeMode:!1,passiveListeners:!0,resistance:!0,resistanceRatio:.85,speed:300,longSwipesMs:300,spaceBetween:0,slidesPerView:1,centeredSlides:!1,slidePrevClass:"swiper-slide-prev",slideNextClass:"swiper-slide-next",slideActiveClass:"swiper-slide-active",slideClass:"swiper-slide",wrapperClass:"swiper-wrapper",touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchMoveStopPropagation:!1,excludeElements:[],injections:{translate:function(e,t,n,i){o(t.element.$wrapper,{transition:e.isStart?"none":"transform ease "+i+"ms",transform:n.isHorizontal?"translate3d("+e.transforms+"px, 0, 0)":"translate3d(0, "+e.transforms+"px, 0)"})}}};var s="before-init",c="after-init",u="before-slide",l="scroll",f="after-slide",p="before-destroy",d="after-destroy";var m=180/Math.PI;function v(){var t=[];return{getDuration:function(){var e=t[0],n=t[t.length-1];return e?n.time-e.time:0},getOffset:function(){var e=t[0],n=t[t.length-1];return e?{x:n.x-e.x,y:n.y-e.y}:{x:0,y:0}},getLogs:function(){return t},vector:function(){return function(t,n){var i=t[n],r=t[n-1]||i,o={x:i.x-r.x,y:i.y-r.y},a=i.time-r.time,s=o.x/a||0,c=o.y/a||0;return e({},o,{angle:Math.atan2(Math.abs(o.y),Math.abs(o.x))*m,velocityX:s,velocityY:c})}(t,t.length-1)},clear:function(){t=[]},push:function(n){t.push(e({time:Date.now()},n))}}}function h(){return performance?performance.now():Date.now()}function x(){var e,t,n,i,r=(n=requestAnimationFrame||webkitRequestAnimationFrame||setTimeout,i=cancelAnimationFrame||webkitCancelAnimationFrame||clearTimeout,{run:function(i){e=void 0===e?h():e,t=n((function(){var t=h(),n=t-e;e=t,i(n)}))},stop:function(){e=void 0,i(t)}});return{run:function e(t){r.run((function(n){e(t),t(n)}))},stop:function(){r.stop()}}}function g(e,t){var n=e.tracker,i=t.initStatus;n.clear(),i()}function S(e,t,r,o){var a=e.touchable,s=["INPUT","SELECT","OPTION","TEXTAREA","BUTTON","VIDEO"],c=function(e,t,n,i){var r=i.initLayout,o=i.initStatus,a=i.render,s=i.scrollPixel,c=i.slideTo,u=i.getOffsetSteps,l=x();return{preheat:function(e,t){var i=n.tracker;l.stop(),i.clear(),i.push(e),r(t),o(t),n.isStart=!0,a()},move:function(t){var i=n.tracker,r=e.touchRatio,o=e.touchAngle,c=e.isHorizontal;if(n.isStart&&!n.isScrolling){i.push(t);var u=i.vector(),l=i.getOffset();if(l.x||l.y)if(c&&u.angle<o||!c&&90-u.angle<o||n.isTouching){var f=u[c?"x":"y"]*r;n.isTouching=!0,s(f),a()}else n.isScrolling=!0,i.clear()}},stop:function(){var r=n.index,o=n.tracker,f=t.measure;if(n.isStart)if(n.isStart=!1,e.freeMode){var p=o.vector()[e.isHorizontal?"velocityX":"velocityY"];l.run((function(e){var t=p*e;p*=.98,Math.abs(t)<.01?(l.stop(),g(n,i)):(s(t),a(0))}))}else{var d=o.getDuration(),m=o.getOffset()[e.isHorizontal?"x":"y"],v=Math.ceil(Math.abs(m)/f.boxSize),h=u(m);d>e.longSwipesMs?c(r+h*(m>0?-1:1)):c(m>0?r-v:r+v),g(n,i)}}}}(r,e,t,o),u=c.preheat,l=c.move,f=c.stop;function p(e){var t=a?e.changedTouches[0]:e;return{x:t.pageX,y:t.pageY}}function d(t){for(var n=0;n<r.excludeElements.length;n++)if(r.excludeElements[n].contains(t.target))return;var i,o,c,l,f=e.element.$wrapper,d=r.touchStartPreventDefault&&-1===s.indexOf(t.target.nodeName)||r.touchStartForcePreventDefault;!a&&d&&t.preventDefault(),u(p(t),(i=f,o=r.isHorizontal,c=getComputedStyle(i).transform.replace(/[a-z]|\(|\)|\s/g,"").split(",").map(parseFloat),l=[],16===c.length?l=c.slice(12,14):6===c.length&&(l=c.slice(4,6)),l[o?0:1]||0))}function m(e){r.touchMoveStopPropagation&&e.stopPropagation(),l(p(e)),t.isTouching&&!1!==e.cancelable&&e.preventDefault()}function v(){f()}return{attach:function(){var t=e.element.$el;a?(n(t,"touchstart",d,{passive:r.passiveListeners,capture:!1}),n(t,"touchmove",m),n(t,"touchend",v),n(t,"touchcancel",v)):(n(t,"mousedown",d),n(document,"mousemove",m),n(document,"mouseup",v))},detach:function(){var t=e.element.$el;i(t,"touchstart",d),i(t,"touchmove",m),i(t,"touchend",v),i(t,"touchcancel",v),i(t,"mousedown",d),i(document,"mousemove",m),i(document,"mouseup",v)}}}function w(e,t,n){var i=e.$list,r=t.viewSize,o=t.slideSize,a=t.boxSize,s=function(e){return e.loop?Math.ceil(e.slidesPerView):0}(n),c=s*a,u=-c+(n.centeredSlides?(r-o)/2:0);return{max:u,min:n.spaceBetween+(n.loop?o:r)+u-a*i.length,base:u,expand:s,buffer:c,minIndex:0,maxIndex:i.length-(n.centeredSlides||n.loop?1:Math.ceil(n.slidesPerView))}}function y(e,t){var n={};function i(e){var i=function(e,t){var n=t.$el,i=e.isHorizontal?n.offsetWidth:n.offsetHeight,r=(i-Math.ceil(e.slidesPerView-1)*e.spaceBetween)/e.slidesPerView;return{boxSize:r+e.spaceBetween,viewSize:i,slideSize:r}}(t,e),r=w(e,i,t),o=Boolean("ontouchstart"in window||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0||window.DocumentTouch&&document instanceof DocumentTouch);Object.assign(n,{touchable:o,element:e,measure:i,limitation:r})}return n.update=i,i(e),n}var b="data-shallow-slider",z="data-slider";function T(e,n){function i(i){var r=e.element.$wrapper,o=i.index;r.querySelectorAll("[data-slider]").forEach((function(e){var i,r,a=~~e.getAttribute(z);i=e,void 0===(r=[n.slidePrevClass,n.slideNextClass,n.slideActiveClass])&&(r=[]),Array.isArray(r)||(r=[r]),r.forEach((function(e){return i.classList.contains(e)&&i.classList.remove(e)})),a===o&&t(e,n.slideActiveClass),a===o-1&&t(e,n.slidePrevClass),a===o+1&&t(e,n.slideNextClass)}))}function a(){e.element.$wrapper.querySelectorAll("["+b+"]").forEach((function(t){return e.element.$wrapper.removeChild(t)}))}function s(){e.element.$list.forEach((function(e,t){return r(e,z,t)})),a(),function(){if(n.loop){var t=e.element,i=e.limitation,o=t.$list,a=t.$wrapper,s=i.expand,c=o.slice(-s).map((function(e){return e.cloneNode(!0)})),u=o.slice(0,s).map((function(e){return e.cloneNode(!0)}));c.forEach((function(e,t){a.appendChild(r(u[t],b)),a.insertBefore(r(c[t],b),o[0])}))}}()}function c(){var t,i=e.element,r=e.measure,a=i.$wrapper,s={display:"flex",willChange:"transform",flexDirection:n.isHorizontal?"row":"column"},c=((t={})[n.isHorizontal?"width":"height"]=r.slideSize+"px",t[n.isHorizontal?"margin-right":"margin-bottom"]=n.spaceBetween+"px",t);o(a,s),a.querySelectorAll("[data-slider]").forEach((function(e){return o(e,c)}))}return{init:function(){s(),c()},render:function(t,r,o,a){var s=e.element.$wrapper,c=void 0===r?n.speed:r;n.injections.translate(t,e,n,c),t.isStart||i(t),a&&getComputedStyle(s).transform,o&&setTimeout(o,c)},destroy:function(){var t=e.element,i=t.$list,r=t.$wrapper,o=n.isHorizontal?"margin-right":"margin-bottom";["display","will-change","flex-direction"].forEach((function(e){r.style.removeProperty(e)})),i.forEach((function(e){return e.style.removeProperty(o)})),a()},updateSize:c}}function P(e,t){var n=e-t.max,i=e-t.min;return n>0?n:i<0?i:0}function E(t,n,i,r,o){function a(e){var n=t.measure;return Math.ceil(Math.abs(e)/n.boxSize-i.longSwipesRatio)}function s(e,t,i){r.render(n,e,t,i)}function c(r){var a,s=t.limitation,c=s.min,u=s.max,f=u-c+(i.loop?t.measure.boxSize:0),p=f+1;n.transforms=r,i.loop?(a=(u-r)%p/f,n.progress=a<0?1+a:a>1?a-1:a):(a=(u-r)/f,n.progress=a<0?0:a>1?1:a),o.emit(l,e({},n))}function p(e,r){var l=t.measure,p=t.limitation,d=p.maxIndex-p.minIndex+1,m=i.loop?(e%d+d)%d:e>p.maxIndex?p.maxIndex:e<p.minIndex?p.minIndex:e,v=-m*l.boxSize+p.base;if(0!==a(v-n.transforms)&&i.loop){var h=P(n.transforms,p),x=m-n.index,g=function(e,t,n,i){var r=n.maxIndex,o=(i>0?1:-1)*(n.minIndex-r-1)+t-e;return Math.abs(i)>Math.abs(o)?o:i}(n.index,m,p,x);g===x||h?n.index===m&&c(h>0?p.min-l.boxSize+h:p.max+l.boxSize+h):c(g<0?p.min-l.boxSize:p.max+l.boxSize),s(0,void 0,!0)}o.emit(u,n.index,n,m),n.index=m,c(v),s(r,(function(){o.emit(f,m,n)}))}return{update:function(){p(n.index,0),r.updateSize()},render:s,transform:c,slideTo:p,scrollPixel:function(e){var r=n.transforms,o=t.measure,a=t.limitation,s=Number(e.toExponential().split("e")[1]),u=s<=0?Math.pow(10,-(s-1)):1,l=r;if(i.resistance&&!i.loop&&(e>0&&r>=a.max?e-=Math.pow(e*u,i.resistanceRatio)/u:e<0&&r<=a.min&&(e+=Math.pow(-e*u,i.resistanceRatio)/u)),l+=e,i.loop){var f=n.tracker.vector(),p=i.isHorizontal?f.velocityX:f.velocityY,d=P(r,a);d&&function(e,t,n){return e>0&&t>n.max||e<0&&t<n.min}(p,r,a)&&(l=d>0?a.min-o.boxSize+d:a.max+o.boxSize+d)}c(l)},initStatus:function(e){void 0===e&&(e=0),n.startTransform=e,n.isStart=!1,n.isScrolling=!1,n.isTouching=!1},initLayout:function(e){c(e)},getOffsetSteps:a}}function M(e,t){var n="string"==typeof e?document.body.querySelector(e):e,i=n.querySelector("."+t.wrapperClass),r=[].slice.call(n.getElementsByClassName(t.slideClass));return{$el:n,$wrapper:i,$list:r}}var C=function t(n,i){var r,o=function(t){var n=e({},a,t);return e({},n,{isHorizontal:"horizontal"===n.direction})}(i),u=(r={},{on:function(e,t){r[e]?r[e].push(t):r[e]=[t]},off:function(e,t){if(r[e]){var n=r[e].indexOf(t);n>-1&&r[e].splice(n,1)}},emit:function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];r[e]&&r[e].forEach((function(e){return e.apply(void 0,n)}))},clear:function(){r={}}}),l=y(M(n,o),o),f={tracker:v(),index:0,startTransform:0,isStart:!1,isScrolling:!1,isTouching:!1,transforms:0,progress:0},m=u.on,h=u.off,x=u.emit,g={on:m,off:h,env:l,state:f,options:o};(o.plugins||t.plugins||[]).forEach((function(e){return e(g,o)})),x(s,g);var w=T(l,o),b=E(l,f,o,w,u),z=S(l,f,o,b);var P=b.slideTo;return Object.assign(g,{update:function(){w.destroy(),l.update(M(n,o)),w.init(),b.update()},destroy:function(){x(p,g),z.detach(),w.destroy(),x(d,g),u.clear()},slideTo:P,updateSize:function(){l.update(M(n,o)),b.update()}}),w.init(),z.attach(),P(o.initialSlide,0),x(c,g),g};return C.use=function(e){C.plugins=e},C}()}},t={};!function n(i){var r=t[i];if(void 0!==r)return r.exports;var o=t[i]={exports:{}};return e[i].call(o.exports,o,o.exports,n),o.exports}(7300)}();
|
| 1 |
+
!function(){var e={7300:function(e){e.exports=function(){"use strict";function e(){return e=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},e.apply(this,arguments)}function t(e,t){void 0===t&&(t=[]),Array.isArray(t)||(t=[t]),t.forEach((function(t){return!e.classList.contains(t)&&e.classList.add(t)}))}function n(e,t,n,i){e.addEventListener(t,n,i)}function i(e,t,n){e.removeEventListener(t,n)}function r(e,t,n){return void 0===n&&(n=""),e.setAttribute(t,n),e}function o(e,t,n){return Object.keys(t).forEach((function(n){e.style[n]=t[n]})),n&&getComputedStyle(e),e}var a={direction:"horizontal",touchRatio:1,touchAngle:45,longSwipesRatio:.5,initialSlide:0,loop:!1,freeMode:!1,passiveListeners:!0,resistance:!0,resistanceRatio:.85,speed:300,longSwipesMs:300,spaceBetween:0,slidesPerView:1,centeredSlides:!1,slidePrevClass:"swiper-slide-prev",slideNextClass:"swiper-slide-next",slideActiveClass:"swiper-slide-active",slideClass:"swiper-slide",wrapperClass:"swiper-wrapper",touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchMoveStopPropagation:!1,excludeElements:[],injections:{translate:function(e,t,n,i){o(t.element.$wrapper,{transition:e.isStart?"none":"transform ease "+i+"ms",transform:n.isHorizontal?"translate3d("+e.transforms+"px, 0, 0)":"translate3d(0, "+e.transforms+"px, 0)"})}}};var s="before-init",c="after-init",l="before-slide",u="scroll",f="after-slide",p="before-destroy",d="after-destroy";var m=180/Math.PI;function v(){var t=[];return{getDuration:function(){var e=t[0],n=t[t.length-1];return e?n.time-e.time:0},getOffset:function(){var e=t[0],n=t[t.length-1];return e?{x:n.x-e.x,y:n.y-e.y}:{x:0,y:0}},getLogs:function(){return t},vector:function(){return function(t,n){var i=t[n],r=t[n-1]||i,o={x:i.x-r.x,y:i.y-r.y},a=i.time-r.time,s=o.x/a||0,c=o.y/a||0;return e({},o,{angle:Math.atan2(Math.abs(o.y),Math.abs(o.x))*m,velocityX:s,velocityY:c})}(t,t.length-1)},clear:function(){t=[]},push:function(n){t.push(e({time:Date.now()},n))}}}function h(){return performance?performance.now():Date.now()}var x=requestAnimationFrame||webkitRequestAnimationFrame||setTimeout,g=cancelAnimationFrame||webkitCancelAnimationFrame||clearTimeout;function S(){var e,t,n={run:function(n){e=void 0===e?h():e,t=x((function(){var t=h(),i=t-e;e=t,n(i)}))},stop:function(){e=void 0,g(t)}};return{run:function e(t){n.run((function(n){e(t),t(n)}))},stop:function(){n.stop()}}}function w(e,t){var n=e.tracker,i=t.initStatus;n.clear(),i()}function y(e,t,r,o){var a=e.touchable,s=["INPUT","SELECT","OPTION","TEXTAREA","BUTTON","VIDEO"],c=function(e,t,n,i){var r=i.initLayout,o=i.initStatus,a=i.render,s=i.scrollPixel,c=i.slideTo,l=i.getOffsetSteps,u=S();return{preheat:function(e,t){var i=n.tracker;u.stop(),i.clear(),i.push(e),r(t),o(t),n.isStart=!0,a()},move:function(t){var i=n.tracker,r=e.touchRatio,o=e.touchAngle,c=e.isHorizontal;if(n.isStart&&!n.isScrolling){i.push(t);var l=i.vector(),u=i.getOffset();if(u.x||u.y)if(c&&l.angle<o||!c&&90-l.angle<o||n.isTouching){var f=l[c?"x":"y"]*r;n.isTouching=!0,s(f),a()}else n.isScrolling=!0,i.clear()}},stop:function(){var r=n.index,o=n.tracker,f=t.measure;if(n.isStart)if(n.isStart=!1,e.freeMode){var p=o.vector()[e.isHorizontal?"velocityX":"velocityY"];u.run((function(e){var t=p*e;p*=.98,Math.abs(t)<.01?(u.stop(),w(n,i)):(s(t),a(0))}))}else{var d=o.getDuration(),m=o.getOffset()[e.isHorizontal?"x":"y"],v=Math.ceil(Math.abs(m)/f.boxSize),h=l(m);d>e.longSwipesMs?c(r+h*(m>0?-1:1)):c(m>0?r-v:r+v),w(n,i)}}}}(r,e,t,o),l=c.preheat,u=c.move,f=c.stop;function p(e){var t=a?e.changedTouches[0]:e;return{x:t.pageX,y:t.pageY}}function d(t){for(var n=0;n<r.excludeElements.length;n++)if(r.excludeElements[n].contains(t.target))return;var i,o,c,u,f=e.element.$wrapper,d=r.touchStartPreventDefault&&-1===s.indexOf(t.target.nodeName)||r.touchStartForcePreventDefault;!a&&d&&t.preventDefault(),l(p(t),(i=f,o=r.isHorizontal,c=getComputedStyle(i).transform.replace(/[a-z]|\(|\)|\s/g,"").split(",").map(parseFloat),u=[],16===c.length?u=c.slice(12,14):6===c.length&&(u=c.slice(4,6)),u[o?0:1]||0))}function m(e){r.touchMoveStopPropagation&&e.stopPropagation(),u(p(e)),t.isTouching&&!1!==e.cancelable&&e.preventDefault()}function v(){f()}return{attach:function(){var t=e.element.$el;a?(n(t,"touchstart",d,{passive:r.passiveListeners,capture:!1}),n(t,"touchmove",m),n(t,"touchend",v),n(t,"touchcancel",v)):(n(t,"mousedown",d),n(document,"mousemove",m),n(document,"mouseup",v))},detach:function(){var t=e.element.$el;i(t,"touchstart",d),i(t,"touchmove",m),i(t,"touchend",v),i(t,"touchcancel",v),i(t,"mousedown",d),i(document,"mousemove",m),i(document,"mouseup",v)}}}function b(e,t,n){var i=e.$list,r=t.viewSize,o=t.slideSize,a=t.boxSize,s=function(e){return e.loop?Math.ceil(e.slidesPerView):0}(n),c=s*a,l=-c+(n.centeredSlides?(r-o)/2:0);return{max:l,min:n.spaceBetween+(n.loop?o:r)+l-a*i.length,base:l,expand:s,buffer:c,minIndex:0,maxIndex:i.length-(n.centeredSlides||n.loop?1:Math.ceil(n.slidesPerView))}}function z(e,t){var n={};function i(e){var i=function(e,t){var n=t.$el,i=e.isHorizontal?n.offsetWidth:n.offsetHeight,r=(i-Math.ceil(e.slidesPerView-1)*e.spaceBetween)/e.slidesPerView;return{boxSize:r+e.spaceBetween,viewSize:i,slideSize:r}}(t,e),r=b(e,i,t),o=Boolean("ontouchstart"in window||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0||window.DocumentTouch&&document instanceof DocumentTouch);Object.assign(n,{touchable:o,element:e,measure:i,limitation:r})}return n.update=i,i(e),n}var T="data-shallow-slider",P="data-slider";function E(e,n){function i(i){var r=e.element.$wrapper,o=i.index;r.querySelectorAll("[data-slider]").forEach((function(e){var i,r,a=~~e.getAttribute(P);i=e,void 0===(r=[n.slidePrevClass,n.slideNextClass,n.slideActiveClass])&&(r=[]),Array.isArray(r)||(r=[r]),r.forEach((function(e){return i.classList.contains(e)&&i.classList.remove(e)})),a===o&&t(e,n.slideActiveClass),a===o-1&&t(e,n.slidePrevClass),a===o+1&&t(e,n.slideNextClass)}))}function a(){e.element.$wrapper.querySelectorAll("["+T+"]").forEach((function(t){return e.element.$wrapper.removeChild(t)}))}function s(){e.element.$list.forEach((function(e,t){return r(e,P,t)})),a(),function(){if(n.loop){var t=e.element,i=e.limitation,o=t.$list,a=t.$wrapper,s=i.expand,c=o.slice(-s).map((function(e){return e.cloneNode(!0)})),l=o.slice(0,s).map((function(e){return e.cloneNode(!0)}));c.forEach((function(e,t){a.appendChild(r(l[t],T)),a.insertBefore(r(c[t],T),o[0])}))}}()}function c(){var t,i=e.element,r=e.measure,a=i.$wrapper,s={display:"flex",willChange:"transform",flexDirection:n.isHorizontal?"row":"column"},c=((t={})[n.isHorizontal?"width":"height"]=r.slideSize+"px",t[n.isHorizontal?"margin-right":"margin-bottom"]=n.spaceBetween+"px",t);o(a,s),a.querySelectorAll("[data-slider]").forEach((function(e){return o(e,c)}))}return{init:function(){s(),c()},render:function(t,r,o,a){var s=e.element.$wrapper,c=void 0===r?n.speed:r;n.injections.translate(t,e,n,c),t.isStart||i(t),a&&getComputedStyle(s).transform,o&&setTimeout(o,c)},destroy:function(){var t=e.element,i=t.$list,r=t.$wrapper,o=n.isHorizontal?"margin-right":"margin-bottom";["display","will-change","flex-direction"].forEach((function(e){r.style.removeProperty(e)})),i.forEach((function(e){return e.style.removeProperty(o)})),a()},updateSize:c}}function M(e,t){var n=e-t.max,i=e-t.min;return n>0?n:i<0?i:0}function A(t,n,i,r,o){function a(e){var n=t.measure;return Math.ceil(Math.abs(e)/n.boxSize-i.longSwipesRatio)}function s(e,t,i){r.render(n,e,t,i)}function c(r){var a,s=t.limitation,c=s.min,l=s.max,f=l-c+(i.loop?t.measure.boxSize:0),p=f+1;n.transforms=r,i.loop?(a=(l-r)%p/f,n.progress=a<0?1+a:a>1?a-1:a):(a=(l-r)/f,n.progress=a<0?0:a>1?1:a),o.emit(u,e({},n))}function p(e,r){var u=t.measure,p=t.limitation,d=p.maxIndex-p.minIndex+1,m=i.loop?(e%d+d)%d:e>p.maxIndex?p.maxIndex:e<p.minIndex?p.minIndex:e,v=-m*u.boxSize+p.base;if(0!==a(v-n.transforms)&&i.loop){var h=M(n.transforms,p),x=m-n.index,g=function(e,t,n,i){var r=n.maxIndex,o=(i>0?1:-1)*(n.minIndex-r-1)+t-e;return Math.abs(i)>Math.abs(o)?o:i}(n.index,m,p,x);g===x||h?n.index===m&&c(h>0?p.min-u.boxSize+h:p.max+u.boxSize+h):c(g<0?p.min-u.boxSize:p.max+u.boxSize),s(0,void 0,!0)}o.emit(l,n.index,n,m),n.index=m,c(v),s(r,(function(){o.emit(f,m,n)}))}return{update:function(){p(n.index,0),r.updateSize()},render:s,transform:c,slideTo:p,scrollPixel:function(e){var r=n.transforms,o=t.measure,a=t.limitation,s=Number(e.toExponential().split("e")[1]),l=s<=0?Math.pow(10,-(s-1)):1,u=r;if(i.resistance&&!i.loop&&(e>0&&r>=a.max?e-=Math.pow(e*l,i.resistanceRatio)/l:e<0&&r<=a.min&&(e+=Math.pow(-e*l,i.resistanceRatio)/l)),u+=e,i.loop){var f=n.tracker.vector(),p=i.isHorizontal?f.velocityX:f.velocityY,d=M(r,a);d&&function(e,t,n){return e>0&&t>n.max||e<0&&t<n.min}(p,r,a)&&(u=d>0?a.min-o.boxSize+d:a.max+o.boxSize+d)}c(u)},initStatus:function(e){void 0===e&&(e=0),n.startTransform=e,n.isStart=!1,n.isScrolling=!1,n.isTouching=!1},initLayout:function(e){c(e)},getOffsetSteps:a}}function C(e,t){var n="string"==typeof e?document.body.querySelector(e):e,i=n.querySelector("."+t.wrapperClass),r=[].slice.call(n.getElementsByClassName(t.slideClass));return{$el:n,$wrapper:i,$list:r=r.filter((function(e){return null===e.getAttribute("data-shallow-slider")}))}}var $=function t(n,i){var r,o=function(t){var n=e({},a,t);return e({},n,{isHorizontal:"horizontal"===n.direction})}(i),l=(r={},{on:function(e,t){r[e]?r[e].push(t):r[e]=[t]},off:function(e,t){if(r[e]){var n=r[e].indexOf(t);n>-1&&r[e].splice(n,1)}},emit:function(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];r[e]&&r[e].forEach((function(e){return e.apply(void 0,n)}))},clear:function(){r={}}}),u=z(C(n,o),o),f={tracker:v(),index:0,startTransform:0,isStart:!1,isScrolling:!1,isTouching:!1,transforms:0,progress:0},m=l.on,h=l.off,x=l.emit,g={on:m,off:h,env:u,state:f,options:o};(o.plugins||t.plugins||[]).forEach((function(e){return e(g,o)})),x(s,g);var S=E(u,o),w=A(u,f,o,S,l),b=y(u,f,o,w);var T=w.slideTo;return Object.assign(g,{update:function(){S.destroy(),u.update(C(n,o)),S.init(),w.update()},destroy:function(){x(p,g),b.detach(),S.destroy(),x(d,g),l.clear()},slideTo:T,updateSize:function(){u.update(C(n,o)),w.update()}}),S.init(),b.attach(),T(o.initialSlide,0),x(c,g),g};return $.use=function(e){$.plugins=e},$}()}},t={};!function n(i){var r=t[i];if(void 0!==r)return r.exports;var o=t[i]={exports:{}};return e[i].call(o.exports,o,o.exports,n),o.exports}(7300)}();
|
includes/admin/class-coblocks-crop-settings.php
CHANGED
|
@@ -88,12 +88,10 @@ class CoBlocks_Crop_Settings {
|
|
| 88 |
public function get_original_image() {
|
| 89 |
$nonce = filter_input( INPUT_POST, 'nonce', FILTER_SANITIZE_STRING );
|
| 90 |
|
| 91 |
-
if ( ! $nonce ) {
|
| 92 |
wp_send_json_error( 'No nonce value present' );
|
| 93 |
}
|
| 94 |
|
| 95 |
-
wp_verify_nonce( $nonce, 'cropSettingsOriginalImageNonce' );
|
| 96 |
-
|
| 97 |
$id = filter_input( INPUT_POST, 'id', FILTER_SANITIZE_NUMBER_INT );
|
| 98 |
|
| 99 |
if ( ! $id ) {
|
|
@@ -123,12 +121,10 @@ class CoBlocks_Crop_Settings {
|
|
| 123 |
public function api_crop() {
|
| 124 |
$nonce = filter_input( INPUT_POST, 'nonce', FILTER_SANITIZE_STRING );
|
| 125 |
|
| 126 |
-
if ( ! $nonce ) {
|
| 127 |
wp_send_json_error( 'No nonce value present' );
|
| 128 |
}
|
| 129 |
|
| 130 |
-
wp_verify_nonce( $nonce, 'cropSettingsNonce' );
|
| 131 |
-
|
| 132 |
if (
|
| 133 |
! isset( $_POST['id'] ) ||
|
| 134 |
! isset( $_POST['cropX'] ) ||
|
| 88 |
public function get_original_image() {
|
| 89 |
$nonce = filter_input( INPUT_POST, 'nonce', FILTER_SANITIZE_STRING );
|
| 90 |
|
| 91 |
+
if ( ! $nonce || ! wp_verify_nonce( $nonce, 'cropSettingsOriginalImageNonce' ) ) {
|
| 92 |
wp_send_json_error( 'No nonce value present' );
|
| 93 |
}
|
| 94 |
|
|
|
|
|
|
|
| 95 |
$id = filter_input( INPUT_POST, 'id', FILTER_SANITIZE_NUMBER_INT );
|
| 96 |
|
| 97 |
if ( ! $id ) {
|
| 121 |
public function api_crop() {
|
| 122 |
$nonce = filter_input( INPUT_POST, 'nonce', FILTER_SANITIZE_STRING );
|
| 123 |
|
| 124 |
+
if ( ! $nonce || ! wp_verify_nonce( $nonce, 'cropSettingsNonce' ) ) {
|
| 125 |
wp_send_json_error( 'No nonce value present' );
|
| 126 |
}
|
| 127 |
|
|
|
|
|
|
|
| 128 |
if (
|
| 129 |
! isset( $_POST['id'] ) ||
|
| 130 |
! isset( $_POST['cropX'] ) ||
|
includes/class-coblocks-block-assets.php
CHANGED
|
@@ -522,25 +522,29 @@ class CoBlocks_Block_Assets {
|
|
| 522 |
return false;
|
| 523 |
}
|
| 524 |
|
| 525 |
-
$admin_page = wp_basename( esc_url( $_SERVER['REQUEST_URI'] ) );
|
| 526 |
|
| 527 |
-
if (
|
|
|
|
|
|
|
|
|
|
|
|
|
| 528 |
return true;
|
| 529 |
}
|
| 530 |
|
| 531 |
-
if ( false !== strpos( $admin_page, 'post-new.php' ) && isset( $_GET['post_type'] ) && $this->is_post_type_gutenberg( $_GET['post_type'] ) )
|
| 532 |
return true;
|
| 533 |
}
|
| 534 |
|
| 535 |
-
if ( false !== strpos( $admin_page, 'post.php' ) && isset( $_GET['post'] ) ) {
|
| 536 |
-
$wp_post = get_post( $_GET['post'] )
|
| 537 |
if ( isset( $wp_post ) && isset( $wp_post->post_type ) && $this->is_post_type_gutenberg( $wp_post->post_type ) ) {
|
| 538 |
return true;
|
| 539 |
}
|
| 540 |
}
|
| 541 |
|
| 542 |
-
if ( false !== strpos( $admin_page, 'revision.php' ) && isset( $_GET['revision'] ) ) {
|
| 543 |
-
$wp_post = get_post( $_GET['revision'] )
|
| 544 |
$post_parent = get_post( $wp_post->post_parent );
|
| 545 |
if ( isset( $post_parent ) && isset( $post_parent->post_type ) && $this->is_post_type_gutenberg( $post_parent->post_type ) ) {
|
| 546 |
return true;
|
| 522 |
return false;
|
| 523 |
}
|
| 524 |
|
| 525 |
+
$admin_page = isset( $_SERVER['REQUEST_URI'] ) ? wp_basename( esc_url( filter_var( wp_unslash( $_SERVER['REQUEST_URI'] ), FILTER_SANITIZE_URL ) ) ) : false;
|
| 526 |
|
| 527 |
+
if ( ! $admin_page ) {
|
| 528 |
+
return false;
|
| 529 |
+
}
|
| 530 |
+
|
| 531 |
+
if ( false !== strpos( $admin_page, 'post-new.php' ) && empty( $_GET['post_type'] ) ) {
|
| 532 |
return true;
|
| 533 |
}
|
| 534 |
|
| 535 |
+
if ( false !== strpos( $admin_page, 'post-new.php' ) && isset( $_GET['post_type'] ) && $this->is_post_type_gutenberg( filter_input( INPUT_GET, wp_unslash( $_GET['post_type'] ), FILTER_SANITIZE_STRING ) ) ) {
|
| 536 |
return true;
|
| 537 |
}
|
| 538 |
|
| 539 |
+
if ( false !== strpos( $admin_page, 'post.php' ) && isset( $_GET['post'] ) ) {
|
| 540 |
+
$wp_post = get_post( filter_input( INPUT_GET, wp_unslash( $_GET['post'] ), FILTER_SANITIZE_STRING ) );
|
| 541 |
if ( isset( $wp_post ) && isset( $wp_post->post_type ) && $this->is_post_type_gutenberg( $wp_post->post_type ) ) {
|
| 542 |
return true;
|
| 543 |
}
|
| 544 |
}
|
| 545 |
|
| 546 |
+
if ( false !== strpos( $admin_page, 'revision.php' ) && isset( $_GET['revision'] ) ) {
|
| 547 |
+
$wp_post = get_post( filter_input( INPUT_GET, wp_unslash( $_GET['revision'] ), FILTER_SANITIZE_STRING ) );
|
| 548 |
$post_parent = get_post( $wp_post->post_parent );
|
| 549 |
if ( isset( $post_parent ) && isset( $post_parent->post_type ) && $this->is_post_type_gutenberg( $post_parent->post_type ) ) {
|
| 550 |
return true;
|
includes/class-coblocks-form.php
CHANGED
|
@@ -225,14 +225,14 @@ class CoBlocks_Form {
|
|
| 225 |
?>
|
| 226 |
|
| 227 |
<form action="<?php echo esc_url( sprintf( '%1$s#%2$s', set_url_scheme( get_the_permalink() ), $this->form_hash ) ); ?>" method="post">
|
| 228 |
-
<?php echo do_blocks( $content );
|
| 229 |
<input class="coblocks-field verify" type="email" name="coblocks-verify-email" autocomplete="off" placeholder="<?php esc_attr_e( 'Email', 'coblocks' ); ?>" tabindex="-1">
|
| 230 |
<input type="hidden" name="form-hash" value="<?php echo esc_attr( $this->form_hash ); ?>">
|
| 231 |
|
| 232 |
<?php
|
| 233 |
// Output a submit button if it's not found in the block content.
|
| 234 |
if ( false === strpos( $content, 'coblocks-form__submit' ) ) :
|
| 235 |
-
echo $this->render_field_submit_button( $atts );
|
| 236 |
endif;
|
| 237 |
?>
|
| 238 |
</form>
|
|
@@ -897,8 +897,8 @@ class CoBlocks_Form {
|
|
| 897 |
|
| 898 |
$post_id = filter_input( INPUT_GET, 'post', FILTER_SANITIZE_NUMBER_INT );
|
| 899 |
$post_title = get_bloginfo( 'name' ) . ( ( false === $post_id ) ? '' : sprintf( ' - %s', get_the_title( $post_id ) ) );
|
| 900 |
-
$email_field_id = isset( $_POST['email-field-id'] ) ?
|
| 901 |
-
$name_field_id = isset( $_POST['name-field-id'] ) ?
|
| 902 |
|
| 903 |
$to = isset( $atts['to'] ) ? sanitize_email( $atts['to'] ) : get_option( 'admin_email' );
|
| 904 |
|
|
@@ -907,7 +907,7 @@ class CoBlocks_Form {
|
|
| 907 |
$recaptcha_site_key = get_option( 'coblocks_google_recaptcha_site_key' );
|
| 908 |
$recaptcha_secret_key = get_option( 'coblocks_google_recaptcha_secret_key' );
|
| 909 |
if ( $recaptcha_site_key && $recaptcha_secret_key ) {
|
| 910 |
-
if ( ! isset( $_POST['g-recaptcha-token'] ) || ! $this->verify_recaptcha( $_POST['g-recaptcha-token'] ) ) {
|
| 911 |
|
| 912 |
$this->remove_url_form_hash();
|
| 913 |
|
|
@@ -944,13 +944,19 @@ class CoBlocks_Form {
|
|
| 944 |
*/
|
| 945 |
$to = (string) apply_filters( 'coblocks_form_email_to', $to, $_POST, $post_id );
|
| 946 |
|
|
|
|
|
|
|
| 947 |
/**
|
| 948 |
* Filter the email subject
|
| 949 |
*
|
| 950 |
* @param string $subject Email subject.
|
| 951 |
* @param array $_POST Submitted form data.
|
| 952 |
*/
|
| 953 |
-
$subject = (string) apply_filters(
|
|
|
|
|
|
|
|
|
|
|
|
|
| 954 |
|
| 955 |
/**
|
| 956 |
* Filter the form email content.
|
|
@@ -961,8 +967,8 @@ class CoBlocks_Form {
|
|
| 961 |
*/
|
| 962 |
$email_content = (string) apply_filters( 'coblocks_form_email_content', $this->email_content, $_POST, $post_id );
|
| 963 |
|
| 964 |
-
$sender_email = isset( $_POST[ $email_field_id ]['value'] ) ?
|
| 965 |
-
$sender_name = isset( $_POST[ $name_field_id ]['value'] ) ?
|
| 966 |
|
| 967 |
$headers = array();
|
| 968 |
|
|
@@ -1011,11 +1017,11 @@ class CoBlocks_Form {
|
|
| 1011 |
* [name] will be replaced with the value of field-name etc.
|
| 1012 |
*
|
| 1013 |
* @param array $atts Block attributes array.
|
| 1014 |
-
* @param string $
|
| 1015 |
-
* @param string $
|
| 1016 |
* @return string Email subject.
|
| 1017 |
*/
|
| 1018 |
-
private function setup_email_subject( $atts, $
|
| 1019 |
|
| 1020 |
$subject = isset( $atts['subject'] ) ? sanitize_text_field( $atts['subject'] ) : self::default_subject();
|
| 1021 |
|
|
@@ -1025,17 +1031,13 @@ class CoBlocks_Form {
|
|
| 1025 |
|
| 1026 |
array_walk(
|
| 1027 |
$matches[1],
|
| 1028 |
-
function( $match, $key ) use ( $matches, &$subject, &$
|
| 1029 |
$slug_match = strtolower( str_replace( ' ', '', $match ) );
|
| 1030 |
|
| 1031 |
-
// phpcs:disable WordPress.Security.NonceVerification.Missing
|
| 1032 |
if ( __( 'name', 'coblocks' ) === $slug_match ) {
|
| 1033 |
|
| 1034 |
-
if ( isset( $
|
| 1035 |
-
|
| 1036 |
-
$name_field_value = is_array( $_POST[ $name_field_id ]['value'] ) ? sanitize_text_field( implode( ' ', $_POST[ $name_field_id ]['value'] ) ) : sanitize_text_field( $_POST[ $name_field_id ]['value'] );
|
| 1037 |
-
$value = empty( $name_field_value ) ? $matches[0][ $key ] : $name_field_value;
|
| 1038 |
-
|
| 1039 |
} else {
|
| 1040 |
|
| 1041 |
$value = $matches[0][ $key ];
|
|
@@ -1043,7 +1045,7 @@ class CoBlocks_Form {
|
|
| 1043 |
}
|
| 1044 |
} elseif ( __( 'email', 'coblocks' ) === $slug_match ) {
|
| 1045 |
|
| 1046 |
-
$value = isset( $
|
| 1047 |
|
| 1048 |
}
|
| 1049 |
|
| 225 |
?>
|
| 226 |
|
| 227 |
<form action="<?php echo esc_url( sprintf( '%1$s#%2$s', set_url_scheme( get_the_permalink() ), $this->form_hash ) ); ?>" method="post">
|
| 228 |
+
<?php echo do_blocks( $content ); ?>
|
| 229 |
<input class="coblocks-field verify" type="email" name="coblocks-verify-email" autocomplete="off" placeholder="<?php esc_attr_e( 'Email', 'coblocks' ); ?>" tabindex="-1">
|
| 230 |
<input type="hidden" name="form-hash" value="<?php echo esc_attr( $this->form_hash ); ?>">
|
| 231 |
|
| 232 |
<?php
|
| 233 |
// Output a submit button if it's not found in the block content.
|
| 234 |
if ( false === strpos( $content, 'coblocks-form__submit' ) ) :
|
| 235 |
+
echo $this->render_field_submit_button( $atts );
|
| 236 |
endif;
|
| 237 |
?>
|
| 238 |
</form>
|
| 897 |
|
| 898 |
$post_id = filter_input( INPUT_GET, 'post', FILTER_SANITIZE_NUMBER_INT );
|
| 899 |
$post_title = get_bloginfo( 'name' ) . ( ( false === $post_id ) ? '' : sprintf( ' - %s', get_the_title( $post_id ) ) );
|
| 900 |
+
$email_field_id = isset( $_POST['email-field-id'] ) ? sanitize_text_field( $_POST['email-field-id'] ) : 'field-email';
|
| 901 |
+
$name_field_id = isset( $_POST['name-field-id'] ) ? sanitize_text_field( $_POST['name-field-id'] ) : 'field-name';
|
| 902 |
|
| 903 |
$to = isset( $atts['to'] ) ? sanitize_email( $atts['to'] ) : get_option( 'admin_email' );
|
| 904 |
|
| 907 |
$recaptcha_site_key = get_option( 'coblocks_google_recaptcha_site_key' );
|
| 908 |
$recaptcha_secret_key = get_option( 'coblocks_google_recaptcha_secret_key' );
|
| 909 |
if ( $recaptcha_site_key && $recaptcha_secret_key ) {
|
| 910 |
+
if ( ! isset( $_POST['g-recaptcha-token'] ) || ! $this->verify_recaptcha( sanitize_text_field( $_POST['g-recaptcha-token'] ) ) ) {
|
| 911 |
|
| 912 |
$this->remove_url_form_hash();
|
| 913 |
|
| 944 |
*/
|
| 945 |
$to = (string) apply_filters( 'coblocks_form_email_to', $to, $_POST, $post_id );
|
| 946 |
|
| 947 |
+
$name_field_value = sanitize_text_field( $_POST[ $name_field_id ]['value'] );
|
| 948 |
+
$email_field_value = sanitize_text_field( $_POST[ $email_field_id ]['value'] );
|
| 949 |
/**
|
| 950 |
* Filter the email subject
|
| 951 |
*
|
| 952 |
* @param string $subject Email subject.
|
| 953 |
* @param array $_POST Submitted form data.
|
| 954 |
*/
|
| 955 |
+
$subject = (string) apply_filters(
|
| 956 |
+
'coblocks_form_email_subject',
|
| 957 |
+
$this->setup_email_subject( $atts, $name_field_value, $email_field_value ),
|
| 958 |
+
$_POST
|
| 959 |
+
);
|
| 960 |
|
| 961 |
/**
|
| 962 |
* Filter the form email content.
|
| 967 |
*/
|
| 968 |
$email_content = (string) apply_filters( 'coblocks_form_email_content', $this->email_content, $_POST, $post_id );
|
| 969 |
|
| 970 |
+
$sender_email = isset( $_POST[ $email_field_id ]['value'] ) ? sanitize_text_field( $_POST[ $email_field_id ]['value'] ) : '';
|
| 971 |
+
$sender_name = isset( $_POST[ $name_field_id ]['value'] ) ? sanitize_text_field( $_POST[ $name_field_id ]['value'] ) : '';
|
| 972 |
|
| 973 |
$headers = array();
|
| 974 |
|
| 1017 |
* [name] will be replaced with the value of field-name etc.
|
| 1018 |
*
|
| 1019 |
* @param array $atts Block attributes array.
|
| 1020 |
+
* @param string $name_field_value Name field value.
|
| 1021 |
+
* @param string $email_field_value Email field value.
|
| 1022 |
* @return string Email subject.
|
| 1023 |
*/
|
| 1024 |
+
private function setup_email_subject( $atts, $name_field_value, $email_field_value ) {
|
| 1025 |
|
| 1026 |
$subject = isset( $atts['subject'] ) ? sanitize_text_field( $atts['subject'] ) : self::default_subject();
|
| 1027 |
|
| 1031 |
|
| 1032 |
array_walk(
|
| 1033 |
$matches[1],
|
| 1034 |
+
function( $match, $key ) use ( $matches, &$subject, &$name_field_value, &$email_field_value ) {
|
| 1035 |
$slug_match = strtolower( str_replace( ' ', '', $match ) );
|
| 1036 |
|
|
|
|
| 1037 |
if ( __( 'name', 'coblocks' ) === $slug_match ) {
|
| 1038 |
|
| 1039 |
+
if ( isset( $name_field_value ) ) {
|
| 1040 |
+
$value = empty( $name_field_value ) ? $matches[0][ $key ] : $name_field_value;
|
|
|
|
|
|
|
|
|
|
| 1041 |
} else {
|
| 1042 |
|
| 1043 |
$value = $matches[0][ $key ];
|
| 1045 |
}
|
| 1046 |
} elseif ( __( 'email', 'coblocks' ) === $slug_match ) {
|
| 1047 |
|
| 1048 |
+
$value = isset( $email_field_value ) ? $email_field_value : $matches[0][ $key ];
|
| 1049 |
|
| 1050 |
}
|
| 1051 |
|
includes/ical-parser/class-coblocks-ical.php
CHANGED
|
@@ -8,6 +8,7 @@
|
|
| 8 |
* @author Jonathan Goode <https://github.com/u01jmg3>
|
| 9 |
* @license https://opensource.org/licenses/mit-license.php MIT License
|
| 10 |
* @version 2.1.12
|
|
|
|
| 11 |
*/
|
| 12 |
|
| 13 |
// Exit if accessed directly.
|
|
@@ -15,6 +16,9 @@ if ( ! defined( 'ABSPATH' ) ) {
|
|
| 15 |
exit;
|
| 16 |
}
|
| 17 |
|
|
|
|
|
|
|
|
|
|
| 18 |
class CoBlocks_ICal {
|
| 19 |
|
| 20 |
const DATE_TIME_FORMAT = 'Ymd\THis';
|
|
@@ -502,8 +506,9 @@ class CoBlocks_ICal {
|
|
| 502 |
/**
|
| 503 |
* Creates the ICal object
|
| 504 |
*
|
| 505 |
-
* @param mixed $files
|
| 506 |
-
* @param array $options
|
|
|
|
| 507 |
* @return void
|
| 508 |
*/
|
| 509 |
public function __construct( $files = false, array $options = array() ) {
|
|
@@ -519,7 +524,7 @@ class CoBlocks_ICal {
|
|
| 519 |
);
|
| 520 |
|
| 521 |
// Used only for strtotime(), i18n not needed.
|
| 522 |
-
$this->weekdays
|
| 523 |
'SU' => 'Sunday of',
|
| 524 |
'MO' => 'Monday of',
|
| 525 |
'TU' => 'Tuesday of',
|
|
@@ -561,7 +566,7 @@ class CoBlocks_ICal {
|
|
| 561 |
}
|
| 562 |
}
|
| 563 |
|
| 564 |
-
// Fallback to use the system default time zone
|
| 565 |
if ( ! isset( $this->default_time_zone ) || ! $this->is_valid_timezone_id( $this->default_time_zone ) ) {
|
| 566 |
$this->default_time_zone = date_default_timezone_get();
|
| 567 |
}
|
|
@@ -589,7 +594,8 @@ class CoBlocks_ICal {
|
|
| 589 |
/**
|
| 590 |
* Initialises lines from a string
|
| 591 |
*
|
| 592 |
-
* @param string $string
|
|
|
|
| 593 |
* @return ICal
|
| 594 |
*/
|
| 595 |
public function init_string( $string ) {
|
|
@@ -597,8 +603,6 @@ class CoBlocks_ICal {
|
|
| 597 |
$lines = explode( PHP_EOL, $string );
|
| 598 |
|
| 599 |
$this->init_lines( $lines );
|
| 600 |
-
} else {
|
| 601 |
-
trigger_error( 'ICal::init_string: Calendar already initialised in constructor', E_USER_NOTICE );
|
| 602 |
}
|
| 603 |
|
| 604 |
return $this;
|
|
@@ -607,7 +611,8 @@ class CoBlocks_ICal {
|
|
| 607 |
/**
|
| 608 |
* Initialises lines from a file
|
| 609 |
*
|
| 610 |
-
* @param string $file
|
|
|
|
| 611 |
* @return ICal
|
| 612 |
*/
|
| 613 |
public function init_file( $file ) {
|
|
@@ -615,8 +620,6 @@ class CoBlocks_ICal {
|
|
| 615 |
$lines = $this->file_or_url( $file );
|
| 616 |
|
| 617 |
$this->init_lines( $lines );
|
| 618 |
-
} else {
|
| 619 |
-
trigger_error( 'ICal::init_file: Calendar already initialised in constructor', E_USER_NOTICE );
|
| 620 |
}
|
| 621 |
|
| 622 |
return $this;
|
|
@@ -625,10 +628,11 @@ class CoBlocks_ICal {
|
|
| 625 |
/**
|
| 626 |
* Initialises lines from a URL
|
| 627 |
*
|
| 628 |
-
* @param string $url
|
| 629 |
-
* @param string $username
|
| 630 |
-
* @param string $password
|
| 631 |
-
* @param string $user_agent
|
|
|
|
| 632 |
* @return ICal
|
| 633 |
*/
|
| 634 |
public function init_url( $url, $username = null, $password = null, $user_agent = null ) {
|
|
@@ -650,7 +654,8 @@ class CoBlocks_ICal {
|
|
| 650 |
* Initialises the parser using an array
|
| 651 |
* containing each line of iCal content
|
| 652 |
*
|
| 653 |
-
* @param array $lines
|
|
|
|
| 654 |
* @return void
|
| 655 |
*/
|
| 656 |
protected function init_lines( array $lines ) {
|
|
@@ -659,7 +664,7 @@ class CoBlocks_ICal {
|
|
| 659 |
if ( stristr( $lines[0], 'BEGIN:VCALENDAR' ) !== false ) {
|
| 660 |
$component = '';
|
| 661 |
foreach ( $lines as $line ) {
|
| 662 |
-
$line = rtrim( $line ); // Trim trailing whitespace
|
| 663 |
$line = $this->remove_unprintable_chars( $line );
|
| 664 |
|
| 665 |
if ( ! $this->disable_character_replacement ) {
|
|
@@ -669,26 +674,26 @@ class CoBlocks_ICal {
|
|
| 669 |
$add = $this->key_value_from_string( $line );
|
| 670 |
|
| 671 |
$keyword = $add[0];
|
| 672 |
-
$values = $add[1]; // May be an array containing multiple values
|
| 673 |
|
| 674 |
if ( ! is_array( $values ) ) {
|
| 675 |
if ( ! empty( $values ) ) {
|
| 676 |
-
$values = array( $values ); // Make an array as not already
|
| 677 |
-
$blank_array = array(); // Empty placeholder array
|
| 678 |
array_push( $values, $blank_array );
|
| 679 |
} else {
|
| 680 |
-
$values = array(); // Use blank array to ignore this line
|
| 681 |
}
|
| 682 |
} elseif ( empty( $values[0] ) ) {
|
| 683 |
-
$values = array(); // Use blank array to ignore this line
|
| 684 |
}
|
| 685 |
|
| 686 |
-
// Reverse so that our array of properties is processed first
|
| 687 |
$values = array_reverse( $values );
|
| 688 |
|
| 689 |
foreach ( $values as $value ) {
|
| 690 |
switch ( $line ) {
|
| 691 |
-
|
| 692 |
case 'BEGIN:VTODO':
|
| 693 |
if ( ! is_array( $value ) ) {
|
| 694 |
$this->todo_count++;
|
|
@@ -697,7 +702,7 @@ class CoBlocks_ICal {
|
|
| 697 |
$component = 'VTODO';
|
| 698 |
break;
|
| 699 |
|
| 700 |
-
|
| 701 |
case 'BEGIN:VEVENT':
|
| 702 |
if ( ! is_array( $value ) ) {
|
| 703 |
$this->event_count++;
|
|
@@ -706,7 +711,7 @@ class CoBlocks_ICal {
|
|
| 706 |
$component = 'VEVENT';
|
| 707 |
break;
|
| 708 |
|
| 709 |
-
|
| 710 |
case 'BEGIN:VFREEBUSY':
|
| 711 |
if ( ! is_array( $value ) ) {
|
| 712 |
$this->free_busy_index++;
|
|
@@ -763,7 +768,7 @@ class CoBlocks_ICal {
|
|
| 763 |
if ( ! $this->skip_recurrence ) {
|
| 764 |
$this->process_recurrences();
|
| 765 |
|
| 766 |
-
// Apply changes to altered recurrence instances
|
| 767 |
if ( ! empty( $this->altered_recurrence_instances ) ) {
|
| 768 |
$events = $this->cal['VEVENT'];
|
| 769 |
|
|
@@ -797,7 +802,7 @@ class CoBlocks_ICal {
|
|
| 797 |
$events = $this->cal['VEVENT'];
|
| 798 |
|
| 799 |
if ( ! empty( $events ) ) {
|
| 800 |
-
$last_index =
|
| 801 |
$last_event = $events[ $last_index ];
|
| 802 |
|
| 803 |
if ( ( ! isset( $last_event['RRULE'] ) || '' === $last_event['RRULE'] ) && $this->does_event_start_outside_window( $last_event ) ) {
|
|
@@ -842,7 +847,8 @@ class CoBlocks_ICal {
|
|
| 842 |
* Determines whether the event start date is outside `$window_min_timestamp` / `$window_max_timestamp`.
|
| 843 |
* Returns `true` for invalid dates.
|
| 844 |
*
|
| 845 |
-
* @param array $event
|
|
|
|
| 846 |
* @return boolean
|
| 847 |
*/
|
| 848 |
protected function does_event_start_outside_window( array $event ) {
|
|
@@ -852,9 +858,10 @@ class CoBlocks_ICal {
|
|
| 852 |
/**
|
| 853 |
* Determines whether a valid iCalendar date is within a given range
|
| 854 |
*
|
| 855 |
-
* @param string $calendar_date
|
| 856 |
-
* @param integer $min_timestamp
|
| 857 |
-
* @param integer $max_timestamp
|
|
|
|
| 858 |
* @return boolean
|
| 859 |
*/
|
| 860 |
protected function is_out_of_range( $calendar_date, $min_timestamp, $max_timestamp ) {
|
|
@@ -867,7 +874,8 @@ class CoBlocks_ICal {
|
|
| 867 |
* Unfolds an iCal file in preparation for parsing
|
| 868 |
* (https://icalendar.org/iCalendar-RFC-5545/3-1-content-lines.html)
|
| 869 |
*
|
| 870 |
-
* @param array $lines
|
|
|
|
| 871 |
* @return array
|
| 872 |
*/
|
| 873 |
protected function unfold( array $lines ) {
|
|
@@ -881,9 +889,10 @@ class CoBlocks_ICal {
|
|
| 881 |
/**
|
| 882 |
* Add one key and value pair to the `$this->cal` array
|
| 883 |
*
|
| 884 |
-
* @param string $component
|
| 885 |
-
* @param string|boolean $keyword
|
| 886 |
-
* @param string $value
|
|
|
|
| 887 |
* @return void
|
| 888 |
*/
|
| 889 |
protected function add_calendar_component_with_key_and_value( $component, $keyword, $value ) {
|
|
@@ -902,7 +911,7 @@ class CoBlocks_ICal {
|
|
| 902 |
}
|
| 903 |
|
| 904 |
if ( is_array( $value ) ) {
|
| 905 |
-
// Add array of properties to the end
|
| 906 |
array_push( $this->cal[ $key1 ][ $key2 ][ $key3 ][ "{$keyword}_array" ], $value );
|
| 907 |
} else {
|
| 908 |
if ( ! isset( $this->cal[ $key1 ][ $key2 ][ $key3 ][ $keyword ] ) ) {
|
|
@@ -924,7 +933,7 @@ class CoBlocks_ICal {
|
|
| 924 |
}
|
| 925 |
|
| 926 |
if ( is_array( $value ) ) {
|
| 927 |
-
// Add array of properties to the end
|
| 928 |
array_push( $this->cal[ $key1 ][ $key2 ][ "{$keyword}_array" ], $value );
|
| 929 |
} else {
|
| 930 |
if ( ! isset( $this->cal[ $key1 ][ $key2 ][ $keyword ] ) ) {
|
|
@@ -991,7 +1000,8 @@ class CoBlocks_ICal {
|
|
| 991 |
/**
|
| 992 |
* Gets the key value pair from an iCal string
|
| 993 |
*
|
| 994 |
-
* @param string $text
|
|
|
|
| 995 |
* @return array|boolean
|
| 996 |
*/
|
| 997 |
protected function key_value_from_string( $text ) {
|
|
@@ -1034,66 +1044,68 @@ class CoBlocks_ICal {
|
|
| 1034 |
}
|
| 1035 |
|
| 1036 |
if ( preg_match( '/^([A-Z-]+)([;][\w\W]*)?$/', $matches[1] ) ) {
|
| 1037 |
-
$matches = array_splice( $matches, 1, 2 ); // Remove first match and re-align ordering
|
| 1038 |
|
| 1039 |
-
// Process properties
|
| 1040 |
if ( preg_match( '/([A-Z-]+)[;]([\w\W]*)/', $matches[0], $properties ) ) {
|
| 1041 |
-
// Remove first match
|
| 1042 |
array_shift( $properties );
|
| 1043 |
-
// Fix to ignore everything in keyword after a ; (e.g. Language, TZID, etc.)
|
| 1044 |
$matches[0] = $properties[0];
|
| 1045 |
-
array_shift( $properties ); // Repeat removing first match
|
| 1046 |
|
| 1047 |
$formatted = array();
|
| 1048 |
foreach ( $properties as $property ) {
|
| 1049 |
-
// Match semicolon separator outside of quoted substrings
|
| 1050 |
preg_match_all( '~[^' . PHP_EOL . '";]+(?:"[^"\\\]*(?:\\\.[^"\\\]*)*"[^' . PHP_EOL . '";]*)*~', $property, $attributes );
|
| 1051 |
-
// Remove multi-dimensional array and use the first key
|
| 1052 |
-
$attributes = (
|
| 1053 |
|
| 1054 |
if ( is_array( $attributes ) ) {
|
| 1055 |
foreach ( $attributes as $attribute ) {
|
| 1056 |
-
// Match equals sign separator outside of quoted substrings
|
| 1057 |
preg_match_all(
|
| 1058 |
'~[^' . PHP_EOL . '"=]+(?:"[^"\\\]*(?:\\\.[^"\\\]*)*"[^' . PHP_EOL . '"=]*)*~',
|
| 1059 |
$attribute,
|
| 1060 |
$values
|
| 1061 |
);
|
| 1062 |
-
// Remove multi-dimensional array and use the first key
|
| 1063 |
-
$value = (
|
| 1064 |
|
| 1065 |
if ( is_array( $value ) && isset( $value[1] ) ) {
|
| 1066 |
-
// Remove double quotes from beginning and end only
|
| 1067 |
$formatted[ $value[0] ] = trim( $value[1], '"' );
|
| 1068 |
}
|
| 1069 |
}
|
| 1070 |
}
|
| 1071 |
}
|
| 1072 |
|
| 1073 |
-
// Assign the keyword property information
|
| 1074 |
$properties[0] = $formatted;
|
| 1075 |
|
| 1076 |
-
// Add match to beginning of array
|
| 1077 |
array_unshift( $properties, $matches[1] );
|
| 1078 |
$matches[1] = $properties;
|
| 1079 |
}
|
| 1080 |
|
| 1081 |
return $matches;
|
| 1082 |
} else {
|
| 1083 |
-
return false; // Ignore this match
|
| 1084 |
}
|
| 1085 |
}
|
| 1086 |
|
| 1087 |
/**
|
| 1088 |
* Returns a `DateTime` object from an iCal date time format
|
| 1089 |
*
|
| 1090 |
-
* @param string $ical_date
|
|
|
|
| 1091 |
* @return \DateTime
|
| 1092 |
-
*
|
|
|
|
| 1093 |
*/
|
| 1094 |
public function ical_date_to_date_time( $ical_date ) {
|
| 1095 |
/**
|
| 1096 |
-
* iCal times may be in 3 formats, (https://www.kanzaki.com/docs/ical/dateTime.html)
|
| 1097 |
*
|
| 1098 |
* UTC: Has a trailing 'Z'
|
| 1099 |
* Floating: No time zone reference specified, no trailing 'Z', use local time
|
|
@@ -1102,12 +1114,12 @@ class CoBlocks_ICal {
|
|
| 1102 |
* Use DateTime class objects to get around limitations with `mktime` and `gmmktime`.
|
| 1103 |
* Must have a local time zone set to process floating times.
|
| 1104 |
*/
|
| 1105 |
-
$pattern = '/^(?:TZID=)?([^:]*|".*")'; //
|
| 1106 |
-
$pattern .= ':?'; //
|
| 1107 |
-
$pattern .= '([0-9]{8})'; //
|
| 1108 |
-
$pattern .= 'T?'; //
|
| 1109 |
-
$pattern .= '(?(?<=T)([0-9]{6}))'; //
|
| 1110 |
-
$pattern .= '(Z?)/'; //
|
| 1111 |
|
| 1112 |
preg_match( $pattern, $ical_date, $date );
|
| 1113 |
|
|
@@ -1142,7 +1154,8 @@ class CoBlocks_ICal {
|
|
| 1142 |
/**
|
| 1143 |
* Returns a Unix timestamp from an iCal date time format
|
| 1144 |
*
|
| 1145 |
-
* @param string $ical_date
|
|
|
|
| 1146 |
* @return integer
|
| 1147 |
*/
|
| 1148 |
public function ical_date_to_unix_timestamp( $ical_date ) {
|
|
@@ -1152,9 +1165,10 @@ class CoBlocks_ICal {
|
|
| 1152 |
/**
|
| 1153 |
* Returns a date adapted to the calendar time zone depending on the event `TZID`
|
| 1154 |
*
|
| 1155 |
-
* @param array $event
|
| 1156 |
-
* @param string $key
|
| 1157 |
-
* @param string $format
|
|
|
|
| 1158 |
* @return string|boolean
|
| 1159 |
*/
|
| 1160 |
public function ical_date_with_timezone( array $event, $key, $format = self::DATE_TIME_FORMAT ) {
|
|
@@ -1172,7 +1186,7 @@ class CoBlocks_ICal {
|
|
| 1172 |
$date_time->setTimezone( new \DateTimeZone( $this->calendar_timezone() ) );
|
| 1173 |
}
|
| 1174 |
|
| 1175 |
-
// Force time zone
|
| 1176 |
if ( isset( $date_array[0]['TZID'] ) ) {
|
| 1177 |
$date_time->setTimezone( $this->timezone_string_to_date_timezone( $date_array[0]['TZID'] ) );
|
| 1178 |
}
|
|
@@ -1277,7 +1291,7 @@ class CoBlocks_ICal {
|
|
| 1277 |
if ( ! empty( $events ) ) {
|
| 1278 |
foreach ( $events as $an_event ) {
|
| 1279 |
if ( isset( $an_event['RRULE'] ) && '' !== $an_event['RRULE'] ) {
|
| 1280 |
-
// Tag as generated by a recurrence rule
|
| 1281 |
$an_event['RRULE_array'][2] = self::RECURRENCE_EVENT;
|
| 1282 |
|
| 1283 |
$count_nb = 0;
|
|
@@ -1292,7 +1306,7 @@ class CoBlocks_ICal {
|
|
| 1292 |
$initial_end_timezone_name = $initial_start_timezone_name;
|
| 1293 |
}
|
| 1294 |
|
| 1295 |
-
// Recurring event, parse RRULE and add appropriate duplicate events
|
| 1296 |
$rrules = array();
|
| 1297 |
$rrule_strings = explode( ';', $an_event['RRULE'] );
|
| 1298 |
|
|
@@ -1301,9 +1315,9 @@ class CoBlocks_ICal {
|
|
| 1301 |
$rrules[ $k ] = $v;
|
| 1302 |
}
|
| 1303 |
|
| 1304 |
-
// Get frequency
|
| 1305 |
$frequency = $rrules['FREQ'];
|
| 1306 |
-
// Get Start timestamp
|
| 1307 |
$start_timestamp = $initial_start->getTimestamp();
|
| 1308 |
|
| 1309 |
if ( isset( $an_event['DTEND'] ) ) {
|
|
@@ -1316,20 +1330,20 @@ class CoBlocks_ICal {
|
|
| 1316 |
}
|
| 1317 |
|
| 1318 |
$event_timestamp_offset = $end_timestamp - $start_timestamp;
|
| 1319 |
-
// Get Interval
|
| 1320 |
$interval = ( isset( $rrules['INTERVAL'] ) && '' !== $rrules['INTERVAL'] ) ? $rrules['INTERVAL'] : 1;
|
| 1321 |
|
| 1322 |
$day_number = null;
|
| 1323 |
$weekday = null;
|
| 1324 |
|
| 1325 |
if ( in_array( $frequency, array( 'MONTHLY', 'YEARLY' ), true ) && isset( $rrules['BYDAY'] ) && '' !== $rrules['BYDAY'] ) {
|
| 1326 |
-
// Deal with BYDAY
|
| 1327 |
$by_day = $rrules['BYDAY'];
|
| 1328 |
$day_number = intval( $by_day );
|
| 1329 |
|
| 1330 |
-
if ( empty( $day_number ) ) { // Returns 0 when no number defined in BYDAY
|
| 1331 |
if ( ! isset( $rrules['BYSETPOS'] ) ) {
|
| 1332 |
-
$day_number = 1; // Set first as default
|
| 1333 |
} elseif ( is_numeric( $rrules['BYSETPOS'] ) ) {
|
| 1334 |
$day_number = $rrules['BYSETPOS'];
|
| 1335 |
|
|
@@ -1351,18 +1365,16 @@ class CoBlocks_ICal {
|
|
| 1351 |
if ( is_int( $this->default_span ) ) {
|
| 1352 |
$until_default = date_create( 'now' );
|
| 1353 |
$until_default->modify( $this->default_span . ' year' );
|
| 1354 |
-
$until_default->setTime( 23, 59, 59 ); // End of the day
|
| 1355 |
-
} else {
|
| 1356 |
-
trigger_error( 'ICal::default_span: User defined value is not an integer', E_USER_NOTICE );
|
| 1357 |
}
|
| 1358 |
|
| 1359 |
-
// Compute EXDATEs
|
| 1360 |
$exdates = $this->parse_ex_dates( $an_event );
|
| 1361 |
|
| 1362 |
$count_orig = null;
|
| 1363 |
|
| 1364 |
if ( isset( $rrules['UNTIL'] ) ) {
|
| 1365 |
-
// Get Until
|
| 1366 |
$until = strtotime( $rrules['UNTIL'] );
|
| 1367 |
if ( $until > strtotime( '+' . $this->default_span . ' years' ) ) {
|
| 1368 |
$until = strtotime( '+' . $this->default_span . ' years' );
|
|
@@ -1370,10 +1382,10 @@ class CoBlocks_ICal {
|
|
| 1370 |
} elseif ( isset( $rrules['COUNT'] ) ) {
|
| 1371 |
$count_orig = ( is_numeric( $rrules['COUNT'] ) && $rrules['COUNT'] > 1 ) ? $rrules['COUNT'] : 0;
|
| 1372 |
|
| 1373 |
-
// Increment count by the number of excluded dates
|
| 1374 |
-
$count_orig +=
|
| 1375 |
|
| 1376 |
-
// Remove one to exclude the occurrence that initialises the rule
|
| 1377 |
$count = ( $count_orig - 1 );
|
| 1378 |
|
| 1379 |
if ( $interval >= 2 ) {
|
|
@@ -1400,10 +1412,10 @@ class CoBlocks_ICal {
|
|
| 1400 |
$dtstart->modify( $offset );
|
| 1401 |
}
|
| 1402 |
|
| 1403 |
-
// Jumping X months forwards doesn't mean
|
| 1404 |
-
// the end date will fall on the same day defined in BYDAY
|
| 1405 |
-
// Use the largest of these to ensure we are going far enough
|
| 1406 |
-
// in the future to capture our final end day
|
| 1407 |
$until = max( $until, $dtstart->format( self::UNIX_FORMAT ) );
|
| 1408 |
}
|
| 1409 |
|
|
@@ -1414,17 +1426,17 @@ class CoBlocks_ICal {
|
|
| 1414 |
|
| 1415 |
$until = intval( $until );
|
| 1416 |
|
| 1417 |
-
// Decide how often to add events and do so
|
| 1418 |
switch ( $frequency ) {
|
| 1419 |
case 'DAILY':
|
| 1420 |
-
// Simply add a new event each interval of days until UNTIL is reached
|
| 1421 |
$offset = "+{$interval} day";
|
| 1422 |
$recurring_timestamp = strtotime( $offset, $start_timestamp );
|
| 1423 |
|
| 1424 |
while ( $recurring_timestamp <= $until ) {
|
| 1425 |
$dayrecurring_timestamp = $recurring_timestamp;
|
| 1426 |
|
| 1427 |
-
// Adjust time zone from initial event
|
| 1428 |
$dayrecurring_offset = 0;
|
| 1429 |
if ( $this->use_timezone_with_r_rules ) {
|
| 1430 |
$recurring_timezone = \DateTime::createFromFormat( self::UNIX_FORMAT, $dayrecurring_timestamp );
|
|
@@ -1433,20 +1445,20 @@ class CoBlocks_ICal {
|
|
| 1433 |
$dayrecurring_timestamp += $dayrecurring_offset;
|
| 1434 |
}
|
| 1435 |
|
| 1436 |
-
// Add event
|
| 1437 |
-
$an_event['DTSTART'] =
|
| 1438 |
$an_event['DTSTART_array'][1] = $an_event['DTSTART'];
|
| 1439 |
$an_event['DTSTART_array'][2] = $dayrecurring_timestamp;
|
| 1440 |
$an_event['DTEND_array'] = $an_event['DTSTART_array'];
|
| 1441 |
$an_event['DTEND_array'][2] += $event_timestamp_offset;
|
| 1442 |
-
$an_event['DTEND'] =
|
| 1443 |
self::DATE_TIME_FORMAT,
|
| 1444 |
$an_event['DTEND_array'][2]
|
| 1445 |
) . ( ( 'Z' === $initial_end_timezone_name ) ? 'Z' : '' );
|
| 1446 |
|
| 1447 |
$an_event['DTEND_array'][1] = $an_event['DTEND'];
|
| 1448 |
|
| 1449 |
-
// Exclusions
|
| 1450 |
$is_excluded = array_filter(
|
| 1451 |
$exdates,
|
| 1452 |
function ( $exdate ) use ( $an_event, $dayrecurring_offset ) {
|
|
@@ -1474,7 +1486,7 @@ class CoBlocks_ICal {
|
|
| 1474 |
$recurrence_events[] = $an_event;
|
| 1475 |
$this->event_count++;
|
| 1476 |
|
| 1477 |
-
// If RRULE[COUNT] is reached then break
|
| 1478 |
if ( isset( $rrules['COUNT'] ) ) {
|
| 1479 |
$count_nb++;
|
| 1480 |
|
|
@@ -1484,17 +1496,17 @@ class CoBlocks_ICal {
|
|
| 1484 |
}
|
| 1485 |
}
|
| 1486 |
|
| 1487 |
-
// Move forwards
|
| 1488 |
$recurring_timestamp = strtotime( $offset, $recurring_timestamp );
|
| 1489 |
}
|
| 1490 |
|
| 1491 |
$recurrence_events = $this->trim_to_recurrence_count( $rrules, $recurrence_events );
|
| 1492 |
$all_recurrence_events = array_merge( $all_recurrence_events, $recurrence_events );
|
| 1493 |
-
$recurrence_events = array(); // Reset
|
| 1494 |
break;
|
| 1495 |
|
| 1496 |
case 'WEEKLY':
|
| 1497 |
-
// Create offset
|
| 1498 |
$offset = "+{$interval} week";
|
| 1499 |
|
| 1500 |
$wkst = ( isset( $rrules['WKST'] ) && in_array( $rrules['WKST'], array( 'SA', 'SU', 'MO' ), true ) ) ? $rrules['WKST'] : $this->default_week_start;
|
|
@@ -1505,26 +1517,26 @@ class CoBlocks_ICal {
|
|
| 1505 |
'MO' => 'Monday',
|
| 1506 |
);
|
| 1507 |
|
| 1508 |
-
// Build list of days of week to add events
|
| 1509 |
$weekdays = $a_week;
|
| 1510 |
|
| 1511 |
if ( isset( $rrules['BYDAY'] ) && '' !== $rrules['BYDAY'] ) {
|
| 1512 |
$by_days = explode( ',', $rrules['BYDAY'] );
|
| 1513 |
} else {
|
| 1514 |
-
// A textual representation of a day, two letters (e.g. SU)
|
| 1515 |
$by_days = array( mb_substr( strtoupper( $initial_start->format( 'D' ) ), 0, 2 ) );
|
| 1516 |
}
|
| 1517 |
|
| 1518 |
-
// Get timestamp of first day of start week
|
| 1519 |
$weekrecurring_timestamp = ( strcasecmp( $initial_start->format( 'l' ), explode( ' ', $this->weekdays[ $wkst ] )[0] ) === 0 )
|
| 1520 |
? $start_timestamp
|
| 1521 |
: strtotime( "last {$days[$wkst]} " . $initial_start->format( 'H:i:s' ), $start_timestamp );
|
| 1522 |
|
| 1523 |
-
// Step through weeks
|
| 1524 |
while ( $weekrecurring_timestamp <= $until ) {
|
| 1525 |
$dayrecurring_timestamp = $weekrecurring_timestamp;
|
| 1526 |
|
| 1527 |
-
// Adjust time zone from initial event
|
| 1528 |
$dayrecurring_offset = 0;
|
| 1529 |
if ( $this->use_timezone_with_r_rules ) {
|
| 1530 |
$day_recurring_timezone = \DateTime::createFromFormat( self::UNIX_FORMAT, $dayrecurring_timestamp );
|
|
@@ -1534,24 +1546,24 @@ class CoBlocks_ICal {
|
|
| 1534 |
}
|
| 1535 |
|
| 1536 |
foreach ( $weekdays as $day ) {
|
| 1537 |
-
// Check if day should be added
|
| 1538 |
if ( in_array( $day, $by_days, true ) && $dayrecurring_timestamp > $start_timestamp
|
| 1539 |
&& $dayrecurring_timestamp <= $until
|
| 1540 |
) {
|
| 1541 |
-
// Add event
|
| 1542 |
-
$an_event['DTSTART'] =
|
| 1543 |
$an_event['DTSTART_array'][1] = $an_event['DTSTART'];
|
| 1544 |
$an_event['DTSTART_array'][2] = $dayrecurring_timestamp;
|
| 1545 |
$an_event['DTEND_array'] = $an_event['DTSTART_array'];
|
| 1546 |
$an_event['DTEND_array'][2] += $event_timestamp_offset;
|
| 1547 |
-
$an_event['DTEND'] =
|
| 1548 |
self::DATE_TIME_FORMAT,
|
| 1549 |
$an_event['DTEND_array'][2]
|
| 1550 |
) . ( ( 'Z' === $initial_end_timezone_name ) ? 'Z' : '' );
|
| 1551 |
|
| 1552 |
$an_event['DTEND_array'][1] = $an_event['DTEND'];
|
| 1553 |
|
| 1554 |
-
// Exclusions
|
| 1555 |
$is_excluded = array_filter(
|
| 1556 |
$exdates,
|
| 1557 |
function ( $exdate ) use ( $an_event, $dayrecurring_offset ) {
|
|
@@ -1579,7 +1591,7 @@ class CoBlocks_ICal {
|
|
| 1579 |
$recurrence_events[] = $an_event;
|
| 1580 |
$this->event_count++;
|
| 1581 |
|
| 1582 |
-
// If RRULE[COUNT] is reached then break
|
| 1583 |
if ( isset( $rrules['COUNT'] ) ) {
|
| 1584 |
$count_nb++;
|
| 1585 |
|
|
@@ -1590,26 +1602,26 @@ class CoBlocks_ICal {
|
|
| 1590 |
}
|
| 1591 |
}
|
| 1592 |
|
| 1593 |
-
// Move forwards a day
|
| 1594 |
$dayrecurring_timestamp = strtotime( '+1 day', $dayrecurring_timestamp );
|
| 1595 |
}
|
| 1596 |
|
| 1597 |
-
// Move forwards $interval weeks
|
| 1598 |
$weekrecurring_timestamp = strtotime( $offset, $weekrecurring_timestamp );
|
| 1599 |
}
|
| 1600 |
|
| 1601 |
$recurrence_events = $this->trim_to_recurrence_count( $rrules, $recurrence_events );
|
| 1602 |
$all_recurrence_events = array_merge( $all_recurrence_events, $recurrence_events );
|
| 1603 |
-
$recurrence_events = array(); // Reset
|
| 1604 |
break;
|
| 1605 |
|
| 1606 |
case 'MONTHLY':
|
| 1607 |
-
// Create offset
|
| 1608 |
$recurring_timestamp = $start_timestamp;
|
| 1609 |
$offset = "+{$interval} month";
|
| 1610 |
|
| 1611 |
if ( isset( $rrules['BYMONTHDAY'] ) && '' !== $rrules['BYMONTHDAY'] ) {
|
| 1612 |
-
// Deal with BYMONTHDAY
|
| 1613 |
$monthdays = explode( ',', $rrules['BYMONTHDAY'] );
|
| 1614 |
|
| 1615 |
while ( $recurring_timestamp <= $until ) {
|
|
@@ -1617,7 +1629,7 @@ class CoBlocks_ICal {
|
|
| 1617 |
$month_recurring_timestamp = null;
|
| 1618 |
|
| 1619 |
if ( 0 === $key ) {
|
| 1620 |
-
// Ensure original event conforms to monthday rule
|
| 1621 |
$an_event['DTSTART'] = gmdate(
|
| 1622 |
'Ym' . sprintf( '%02d', $monthday ) . '\T' . self::TIME_FORMAT,
|
| 1623 |
strtotime( $an_event['DTSTART'] )
|
|
@@ -1635,7 +1647,7 @@ class CoBlocks_ICal {
|
|
| 1635 |
$an_event['DTEND_array'][1] = $an_event['DTEND'];
|
| 1636 |
$an_event['DTEND_array'][2] = $this->ical_date_to_unix_timestamp( $an_event['DTEND'] );
|
| 1637 |
|
| 1638 |
-
// Ensure recurring timestamp confirms to BYMONTHDAY rule
|
| 1639 |
$month_recurring_date_time = new \DateTime( '@' . $recurring_timestamp );
|
| 1640 |
$month_recurring_date_time->setDate(
|
| 1641 |
$month_recurring_date_time->format( 'Y' ),
|
|
@@ -1645,7 +1657,7 @@ class CoBlocks_ICal {
|
|
| 1645 |
$month_recurring_timestamp = $month_recurring_date_time->getTimestamp();
|
| 1646 |
}
|
| 1647 |
|
| 1648 |
-
// Adjust time zone from initial event
|
| 1649 |
$monthrecurring_offset = 0;
|
| 1650 |
if ( $this->use_timezone_with_r_rules ) {
|
| 1651 |
$recurring_timezone = \DateTime::createFromFormat( self::UNIX_FORMAT, $month_recurring_timestamp );
|
|
@@ -1655,8 +1667,8 @@ class CoBlocks_ICal {
|
|
| 1655 |
}
|
| 1656 |
|
| 1657 |
if ( ( $month_recurring_timestamp > $start_timestamp ) && ( $month_recurring_timestamp <= $until ) ) {
|
| 1658 |
-
// Add event
|
| 1659 |
-
$an_event['DTSTART'] =
|
| 1660 |
'Ym' . sprintf( '%02d', $monthday ) . '\T' . self::TIME_FORMAT,
|
| 1661 |
$month_recurring_timestamp
|
| 1662 |
) . ( ( 'Z' === $initial_start_timezone_name ) ? 'Z' : '' );
|
|
@@ -1664,13 +1676,13 @@ class CoBlocks_ICal {
|
|
| 1664 |
$an_event['DTSTART_array'][2] = $month_recurring_timestamp;
|
| 1665 |
$an_event['DTEND_array'] = $an_event['DTSTART_array'];
|
| 1666 |
$an_event['DTEND_array'][2] += $event_timestamp_offset;
|
| 1667 |
-
$an_event['DTEND'] =
|
| 1668 |
self::DATE_TIME_FORMAT,
|
| 1669 |
$an_event['DTEND_array'][2]
|
| 1670 |
) . ( ( 'Z' === $initial_end_timezone_name ) ? 'Z' : '' );
|
| 1671 |
$an_event['DTEND_array'][1] = $an_event['DTEND'];
|
| 1672 |
|
| 1673 |
-
// Exclusions
|
| 1674 |
$is_excluded = array_filter(
|
| 1675 |
$exdates,
|
| 1676 |
function ( $exdate ) use ( $an_event, $monthrecurring_offset ) {
|
|
@@ -1698,7 +1710,7 @@ class CoBlocks_ICal {
|
|
| 1698 |
$recurrence_events[] = $an_event;
|
| 1699 |
$this->event_count++;
|
| 1700 |
|
| 1701 |
-
// If RRULE[COUNT] is reached then break
|
| 1702 |
if ( isset( $rrules['COUNT'] ) ) {
|
| 1703 |
$count_nb++;
|
| 1704 |
|
|
@@ -1710,14 +1722,14 @@ class CoBlocks_ICal {
|
|
| 1710 |
}
|
| 1711 |
}
|
| 1712 |
|
| 1713 |
-
// Move forwards
|
| 1714 |
$recurring_timestamp = strtotime( $offset, $recurring_timestamp );
|
| 1715 |
}
|
| 1716 |
} elseif ( isset( $rrules['BYDAY'] ) && '' !== $rrules['BYDAY'] ) {
|
| 1717 |
while ( $recurring_timestamp <= $until ) {
|
| 1718 |
$month_recurring_timestamp = $recurring_timestamp;
|
| 1719 |
|
| 1720 |
-
// Adjust time zone from initial event
|
| 1721 |
$monthrecurring_offset = 0;
|
| 1722 |
|
| 1723 |
if ( $this->use_timezone_with_r_rules ) {
|
|
@@ -1728,25 +1740,25 @@ class CoBlocks_ICal {
|
|
| 1728 |
}
|
| 1729 |
|
| 1730 |
$event_start_desc = "{$this->convert_day_ordinal_to_positive($day_number, $weekday, $month_recurring_timestamp)} {$this->weekdays[$weekday]} "
|
| 1731 |
-
.
|
| 1732 |
$event_start_timestamp = strtotime( $event_start_desc );
|
| 1733 |
|
| 1734 |
if ( intval( $rrules['BYDAY'] ) === 0 ) {
|
| 1735 |
$last_day_desc = "last {$this->weekdays[$weekday]} "
|
| 1736 |
-
.
|
| 1737 |
} else {
|
| 1738 |
$last_day_desc = "{$this->convert_day_ordinal_to_positive($day_number, $weekday, $month_recurring_timestamp)} {$this->weekdays[$weekday]} "
|
| 1739 |
-
.
|
| 1740 |
}
|
| 1741 |
|
| 1742 |
$last_day_time_stamp = strtotime( $last_day_desc );
|
| 1743 |
|
| 1744 |
do {
|
| 1745 |
-
// Prevent 5th day of a month from showing up on the next month
|
| 1746 |
-
// If BYDAY and the event falls outside the current month, skip the event
|
| 1747 |
|
| 1748 |
-
$compare_current_month =
|
| 1749 |
-
$compare_event_month =
|
| 1750 |
|
| 1751 |
if ( $compare_current_month !== $compare_event_month ) {
|
| 1752 |
$month_recurring_timestamp = strtotime( $offset, $month_recurring_timestamp );
|
|
@@ -1754,18 +1766,18 @@ class CoBlocks_ICal {
|
|
| 1754 |
}
|
| 1755 |
|
| 1756 |
if ( $event_start_timestamp > $start_timestamp && $event_start_timestamp <= $until ) {
|
| 1757 |
-
$an_event['DTSTART'] =
|
| 1758 |
$an_event['DTSTART_array'][1] = $an_event['DTSTART'];
|
| 1759 |
$an_event['DTSTART_array'][2] = $event_start_timestamp;
|
| 1760 |
$an_event['DTEND_array'] = $an_event['DTSTART_array'];
|
| 1761 |
$an_event['DTEND_array'][2] += $event_timestamp_offset;
|
| 1762 |
-
$an_event['DTEND'] =
|
| 1763 |
self::DATE_TIME_FORMAT,
|
| 1764 |
$an_event['DTEND_array'][2]
|
| 1765 |
) . ( ( 'Z' === $initial_end_timezone_name ) ? 'Z' : '' );
|
| 1766 |
$an_event['DTEND_array'][1] = $an_event['DTEND'];
|
| 1767 |
|
| 1768 |
-
// Exclusions
|
| 1769 |
$is_excluded = array_filter(
|
| 1770 |
$exdates,
|
| 1771 |
function ( $exdate ) use ( $an_event, $monthrecurring_offset ) {
|
|
@@ -1793,7 +1805,7 @@ class CoBlocks_ICal {
|
|
| 1793 |
$recurrence_events[] = $an_event;
|
| 1794 |
$this->event_count++;
|
| 1795 |
|
| 1796 |
-
// If RRULE[COUNT] is reached then break
|
| 1797 |
if ( isset( $rrules['COUNT'] ) ) {
|
| 1798 |
$count_nb++;
|
| 1799 |
|
|
@@ -1805,8 +1817,8 @@ class CoBlocks_ICal {
|
|
| 1805 |
}
|
| 1806 |
|
| 1807 |
if ( isset( $rrules['BYSETPOS'] ) ) {
|
| 1808 |
-
// BYSETPOS is defined so skip
|
| 1809 |
-
// looping through each week
|
| 1810 |
$last_day_time_stamp = $event_start_timestamp;
|
| 1811 |
}
|
| 1812 |
|
|
@@ -1818,27 +1830,27 @@ class CoBlocks_ICal {
|
|
| 1818 |
|
| 1819 |
$recurrence_events = $this->trim_to_recurrence_count( $rrules, $recurrence_events );
|
| 1820 |
$all_recurrence_events = array_merge( $all_recurrence_events, $recurrence_events );
|
| 1821 |
-
$recurrence_events = array(); // Reset
|
| 1822 |
break;
|
| 1823 |
|
| 1824 |
case 'YEARLY':
|
| 1825 |
-
// Create offset
|
| 1826 |
$recurring_timestamp = $start_timestamp;
|
| 1827 |
$offset = "+{$interval} year";
|
| 1828 |
|
| 1829 |
-
// Deal with BYMONTH
|
| 1830 |
if ( isset( $rrules['BYMONTH'] ) && '' !== $rrules['BYMONTH'] ) {
|
| 1831 |
$bymonths = explode( ',', $rrules['BYMONTH'] );
|
| 1832 |
} else {
|
| 1833 |
$bymonths = array();
|
| 1834 |
}
|
| 1835 |
|
| 1836 |
-
// Check if BYDAY rule exists
|
| 1837 |
if ( isset( $rrules['BYDAY'] ) && '' !== $rrules['BYDAY'] ) {
|
| 1838 |
while ( $recurring_timestamp <= $until ) {
|
| 1839 |
$yearrecurring_timestamp = $recurring_timestamp;
|
| 1840 |
|
| 1841 |
-
// Adjust time zone from initial event
|
| 1842 |
$yearrecurring_offset = 0;
|
| 1843 |
|
| 1844 |
if ( $this->use_timezone_with_r_rules ) {
|
|
@@ -1868,19 +1880,19 @@ class CoBlocks_ICal {
|
|
| 1868 |
|
| 1869 |
do {
|
| 1870 |
if ( $event_start_timestamp > $start_timestamp && $event_start_timestamp <= $until ) {
|
| 1871 |
-
$an_event['DTSTART'] =
|
| 1872 |
$an_event['DTSTART_array'][1] = $an_event['DTSTART'];
|
| 1873 |
$an_event['DTSTART_array'][2] = $event_start_timestamp;
|
| 1874 |
$an_event['DTEND_array'] = $an_event['DTSTART_array'];
|
| 1875 |
$an_event['DTEND_array'][2] += $event_timestamp_offset;
|
| 1876 |
-
$an_event['DTEND'] =
|
| 1877 |
self::DATE_TIME_FORMAT,
|
| 1878 |
$an_event['DTEND_array'][2]
|
| 1879 |
) . ( ( 'Z' === $initial_end_timezone_name ) ? 'Z' : '' );
|
| 1880 |
|
| 1881 |
$an_event['DTEND_array'][1] = $an_event['DTEND'];
|
| 1882 |
|
| 1883 |
-
// Exclusions
|
| 1884 |
$is_excluded = array_filter(
|
| 1885 |
$exdates,
|
| 1886 |
function ( $exdate ) use ( $an_event, $yearrecurring_offset ) {
|
|
@@ -1908,7 +1920,7 @@ class CoBlocks_ICal {
|
|
| 1908 |
$recurrence_events[] = $an_event;
|
| 1909 |
$this->event_count++;
|
| 1910 |
|
| 1911 |
-
// If RRULE[COUNT] is reached then break
|
| 1912 |
if ( isset( $rrules['COUNT'] ) ) {
|
| 1913 |
$count_nb++;
|
| 1914 |
|
|
@@ -1923,17 +1935,17 @@ class CoBlocks_ICal {
|
|
| 1923 |
} while ( $event_start_timestamp <= $last_day_time_stamp );
|
| 1924 |
}
|
| 1925 |
|
| 1926 |
-
// Move forwards
|
| 1927 |
$recurring_timestamp = strtotime( $offset, $recurring_timestamp );
|
| 1928 |
}
|
| 1929 |
} else {
|
| 1930 |
$day = $initial_start->format( 'd' );
|
| 1931 |
|
| 1932 |
-
// Step through years
|
| 1933 |
while ( $recurring_timestamp <= $until ) {
|
| 1934 |
$yearrecurring_timestamp = $recurring_timestamp;
|
| 1935 |
|
| 1936 |
-
// Adjust time zone from initial event
|
| 1937 |
$yearrecurring_offset = 0;
|
| 1938 |
if ( $this->use_timezone_with_r_rules ) {
|
| 1939 |
$recurring_timezone = \DateTime::createFromFormat( self::UNIX_FORMAT, $yearrecurring_timestamp );
|
|
@@ -1955,18 +1967,18 @@ class CoBlocks_ICal {
|
|
| 1955 |
$event_start_timestamp = strtotime( $event_start_desc );
|
| 1956 |
|
| 1957 |
if ( $event_start_timestamp > $start_timestamp && $until >= $event_start_timestamp ) {
|
| 1958 |
-
$an_event['DTSTART'] =
|
| 1959 |
$an_event['DTSTART_array'][1] = $an_event['DTSTART'];
|
| 1960 |
$an_event['DTSTART_array'][2] = $event_start_timestamp;
|
| 1961 |
$an_event['DTEND_array'] = $an_event['DTSTART_array'];
|
| 1962 |
$an_event['DTEND_array'][2] += $event_timestamp_offset;
|
| 1963 |
-
$an_event['DTEND'] =
|
| 1964 |
self::DATE_TIME_FORMAT,
|
| 1965 |
$an_event['DTEND_array'][2]
|
| 1966 |
) . ( ( 'Z' === $initial_end_timezone_name ) ? 'Z' : '' );
|
| 1967 |
$an_event['DTEND_array'][1] = $an_event['DTEND'];
|
| 1968 |
|
| 1969 |
-
// Exclusions
|
| 1970 |
$is_excluded = array_filter(
|
| 1971 |
$exdates,
|
| 1972 |
function ( $exdate ) use ( $an_event, $yearrecurring_offset ) {
|
|
@@ -1994,7 +2006,7 @@ class CoBlocks_ICal {
|
|
| 1994 |
$recurrence_events[] = $an_event;
|
| 1995 |
$this->event_count++;
|
| 1996 |
|
| 1997 |
-
// If RRULE[COUNT] is reached then break
|
| 1998 |
if ( isset( $rrules['COUNT'] ) ) {
|
| 1999 |
$count_nb++;
|
| 2000 |
|
|
@@ -2006,14 +2018,14 @@ class CoBlocks_ICal {
|
|
| 2006 |
}
|
| 2007 |
}
|
| 2008 |
|
| 2009 |
-
// Move forwards
|
| 2010 |
$recurring_timestamp = strtotime( $offset, $recurring_timestamp );
|
| 2011 |
}
|
| 2012 |
}
|
| 2013 |
|
| 2014 |
$recurrence_events = $this->trim_to_recurrence_count( $rrules, $recurrence_events );
|
| 2015 |
$all_recurrence_events = array_merge( $all_recurrence_events, $recurrence_events );
|
| 2016 |
-
$recurrence_events = array(); // Reset
|
| 2017 |
break;
|
| 2018 |
}
|
| 2019 |
}
|
|
@@ -2071,8 +2083,9 @@ class CoBlocks_ICal {
|
|
| 2071 |
* array to include an iCal date time for each event
|
| 2072 |
* (`TZID=Timezone:YYYYMMDD[T]HHMMSS`)
|
| 2073 |
*
|
| 2074 |
-
* @param array $event
|
| 2075 |
-
* @param integer $index
|
|
|
|
| 2076 |
* @return array
|
| 2077 |
*/
|
| 2078 |
protected function process_event_ical_datetime( array $event, $index = 3 ) {
|
|
@@ -2092,8 +2105,7 @@ class CoBlocks_ICal {
|
|
| 2092 |
|
| 2093 |
/**
|
| 2094 |
* Returns an array of Events.
|
| 2095 |
-
* Every event is a class with the event
|
| 2096 |
-
* details being properties within it.
|
| 2097 |
*
|
| 2098 |
* @return array
|
| 2099 |
*/
|
|
@@ -2132,7 +2144,8 @@ class CoBlocks_ICal {
|
|
| 2132 |
/**
|
| 2133 |
* Returns the calendar time zone
|
| 2134 |
*
|
| 2135 |
-
* @param boolean $ignore_utc
|
|
|
|
| 2136 |
* @return string
|
| 2137 |
*/
|
| 2138 |
public function calendar_timezone( $ignore_utc = false ) {
|
|
@@ -2164,17 +2177,16 @@ class CoBlocks_ICal {
|
|
| 2164 |
public function free_busy_events() {
|
| 2165 |
$array = $this->cal;
|
| 2166 |
|
| 2167 |
-
return isset( $array['VFREEBUSY'] ) ? $array['VFREEBUSY'] :
|
| 2168 |
}
|
| 2169 |
|
| 2170 |
/**
|
| 2171 |
-
* Returns a boolean value whether the
|
| 2172 |
-
* current calendar has events or not
|
| 2173 |
*
|
| 2174 |
* @return boolean
|
| 2175 |
*/
|
| 2176 |
public function has_events() {
|
| 2177 |
-
return ( count( $this->events() ) > 0 )
|
| 2178 |
}
|
| 2179 |
|
| 2180 |
/**
|
|
@@ -2195,13 +2207,15 @@ class CoBlocks_ICal {
|
|
| 2195 |
* problem for events on, during, or after 29 Jan 2038.
|
| 2196 |
* See https://en.wikipedia.org/wiki/Unix_time#Representing_the_number
|
| 2197 |
*
|
| 2198 |
-
* @param string|null $range_start
|
| 2199 |
-
* @param string|null $range_end
|
|
|
|
| 2200 |
* @return array
|
| 2201 |
-
*
|
|
|
|
| 2202 |
*/
|
| 2203 |
public function events_from_range( $range_start = null, $range_end = null ) {
|
| 2204 |
-
// Sort events before processing range
|
| 2205 |
$events = $this->sort_events_with_order( $this->events(), SORT_ASC );
|
| 2206 |
|
| 2207 |
if ( empty( $events ) ) {
|
|
@@ -2214,7 +2228,6 @@ class CoBlocks_ICal {
|
|
| 2214 |
try {
|
| 2215 |
$range_start = new \DateTime( $range_start, new \DateTimeZone( $this->default_time_zone ) );
|
| 2216 |
} catch ( \Exception $e ) {
|
| 2217 |
-
error_log( "ICal::events_from_range: Invalid date passed ({$range_start})" );
|
| 2218 |
$range_start = false;
|
| 2219 |
}
|
| 2220 |
} else {
|
|
@@ -2225,7 +2238,6 @@ class CoBlocks_ICal {
|
|
| 2225 |
try {
|
| 2226 |
$range_end = new \DateTime( $range_end, new \DateTimeZone( $this->default_time_zone ) );
|
| 2227 |
} catch ( \Exception $e ) {
|
| 2228 |
-
error_log( "ICal::events_from_range: Invalid date passed ({$range_end})" );
|
| 2229 |
$range_end = false;
|
| 2230 |
}
|
| 2231 |
} else {
|
|
@@ -2245,11 +2257,11 @@ class CoBlocks_ICal {
|
|
| 2245 |
$event_start = $an_event->dtstart_array[2];
|
| 2246 |
$event_end = ( isset( $an_event->dtend_array[2] ) ) ? $an_event->dtend_array[2] : null;
|
| 2247 |
|
| 2248 |
-
if ( ( $event_start >= $range_start && $event_start < $range_end )
|
| 2249 |
|| ( null !== $event_end
|
| 2250 |
&& (
|
| 2251 |
-
( $event_end > $range_start && $event_end <= $range_end )
|
| 2252 |
-
|| ( $event_start < $range_start && $event_end > $range_end ) // Event starts before and finishes after range
|
| 2253 |
)
|
| 2254 |
)
|
| 2255 |
) {
|
|
@@ -2268,7 +2280,8 @@ class CoBlocks_ICal {
|
|
| 2268 |
* Returns a sorted array of the events following a given string,
|
| 2269 |
* or `false` if no events exist in the range.
|
| 2270 |
*
|
| 2271 |
-
* @param string $interval
|
|
|
|
| 2272 |
* @return array
|
| 2273 |
*/
|
| 2274 |
public function events_from_interval( $interval ) {
|
|
@@ -2284,8 +2297,9 @@ class CoBlocks_ICal {
|
|
| 2284 |
/**
|
| 2285 |
* Sorts events based on a given sort order
|
| 2286 |
*
|
| 2287 |
-
* @param array $events
|
| 2288 |
-
* @param integer $sort_order Either SORT_ASC, SORT_DESC, SORT_REGULAR, SORT_NUMERIC, SORT_STRING
|
|
|
|
| 2289 |
* @return array
|
| 2290 |
*/
|
| 2291 |
public function sort_events_with_order( array $events, $sort_order = SORT_ASC ) {
|
|
@@ -2305,7 +2319,8 @@ class CoBlocks_ICal {
|
|
| 2305 |
/**
|
| 2306 |
* Checks if a time zone is valid (IANA, CLDR, or Windows)
|
| 2307 |
*
|
| 2308 |
-
* @param string $timezone
|
|
|
|
| 2309 |
* @return boolean
|
| 2310 |
*/
|
| 2311 |
protected function is_valid_timezone_id( $timezone ) {
|
|
@@ -2317,7 +2332,8 @@ class CoBlocks_ICal {
|
|
| 2317 |
/**
|
| 2318 |
* Checks if a time zone is a valid IANA time zone
|
| 2319 |
*
|
| 2320 |
-
* @param string $timezone
|
|
|
|
| 2321 |
* @return boolean
|
| 2322 |
*/
|
| 2323 |
protected function is_valid_iana_timezone_id( $timezone ) {
|
|
@@ -2348,7 +2364,7 @@ class CoBlocks_ICal {
|
|
| 2348 |
/**
|
| 2349 |
* Checks if a time zone is a valid CLDR time zone
|
| 2350 |
*
|
| 2351 |
-
* @param string $timezone
|
| 2352 |
* @return boolean
|
| 2353 |
*/
|
| 2354 |
public function is_valid_cldr_timezone_id( $timezone ) {
|
|
@@ -2358,7 +2374,7 @@ class CoBlocks_ICal {
|
|
| 2358 |
/**
|
| 2359 |
* Checks if a time zone is a recognised Windows (non-CLDR) time zone
|
| 2360 |
*
|
| 2361 |
-
* @param string $timezone
|
| 2362 |
* @return boolean
|
| 2363 |
*/
|
| 2364 |
public function is_valid_windows_timezone_id( $timezone ) {
|
|
@@ -2368,9 +2384,10 @@ class CoBlocks_ICal {
|
|
| 2368 |
/**
|
| 2369 |
* Parses a duration and applies it to a date
|
| 2370 |
*
|
| 2371 |
-
* @param string $date
|
| 2372 |
-
* @param object $duration
|
| 2373 |
-
* @param string $format
|
|
|
|
| 2374 |
* @return integer|\DateTime
|
| 2375 |
*/
|
| 2376 |
protected function parse_duration( $date, $duration, $format = self::UNIX_FORMAT ) {
|
|
@@ -2398,13 +2415,14 @@ class CoBlocks_ICal {
|
|
| 2398 |
/**
|
| 2399 |
* Gets the number of days between a start and end date
|
| 2400 |
*
|
| 2401 |
-
* @param integer $days
|
| 2402 |
-
* @param integer $start
|
| 2403 |
-
* @param integer $end
|
|
|
|
| 2404 |
* @return integer
|
| 2405 |
*/
|
| 2406 |
protected function number_of_days( $days, $start, $end ) {
|
| 2407 |
-
$w = array(
|
| 2408 |
$base = floor( ( $end - $start ) / self::SECONDS_IN_A_WEEK );
|
| 2409 |
$sum = 0;
|
| 2410 |
|
|
@@ -2421,13 +2439,14 @@ class CoBlocks_ICal {
|
|
| 2421 |
* Converts a negative day ordinal to
|
| 2422 |
* its equivalent positive form
|
| 2423 |
*
|
| 2424 |
-
* @param integer $day_number
|
| 2425 |
-
* @param integer $weekday
|
| 2426 |
-
* @param integer|\DateTime $timestamp
|
|
|
|
| 2427 |
* @return string
|
| 2428 |
*/
|
| 2429 |
protected function convert_day_ordinal_to_positive( $day_number, $weekday, $timestamp ) {
|
| 2430 |
-
// 0 when no number is defined for BYDAY
|
| 2431 |
$day_number = empty( $day_number ) ? 1 : intval( $day_number );
|
| 2432 |
|
| 2433 |
$day_ordinals = $this->day_ordinals;
|
|
@@ -2446,15 +2465,15 @@ class CoBlocks_ICal {
|
|
| 2446 |
$start = strtotime( 'first day of ' . $timestamp->format( self::DATE_TIME_FORMAT_PRETTY ) );
|
| 2447 |
$end = strtotime( 'last day of ' . $timestamp->format( self::DATE_TIME_FORMAT_PRETTY ) );
|
| 2448 |
|
| 2449 |
-
// Used with pow(2, X) so pow(2, 4) is THURSDAY
|
| 2450 |
$weekdays = array_flip( array_keys( $this->weekdays ) );
|
| 2451 |
|
| 2452 |
$number_of_days = $this->number_of_days( pow( 2, $weekdays[ $weekday ] ), $start, $end );
|
| 2453 |
|
| 2454 |
-
// Create subset
|
| 2455 |
$day_ordinals = array_slice( $day_ordinals, 0, $number_of_days, true );
|
| 2456 |
|
| 2457 |
-
// Reverse only the values
|
| 2458 |
$day_ordinals = array_combine( array_keys( $day_ordinals ), array_reverse( array_values( $day_ordinals ) ) );
|
| 2459 |
|
| 2460 |
return $day_ordinals[ $day_number * -1 ];
|
|
@@ -2463,7 +2482,8 @@ class CoBlocks_ICal {
|
|
| 2463 |
/**
|
| 2464 |
* Removes unprintable ASCII and UTF-8 characters
|
| 2465 |
*
|
| 2466 |
-
* @param string $data
|
|
|
|
| 2467 |
* @return string
|
| 2468 |
*/
|
| 2469 |
protected function remove_unprintable_chars( $data ) {
|
|
@@ -2474,13 +2494,14 @@ class CoBlocks_ICal {
|
|
| 2474 |
* Provides a polyfill for PHP 7.2's `mb_chr()`, which is a multibyte safe version of `chr()`.
|
| 2475 |
* Multibyte safe.
|
| 2476 |
*
|
| 2477 |
-
* @param integer $code
|
|
|
|
| 2478 |
* @return string
|
| 2479 |
*/
|
| 2480 |
protected function mb_chr( $code ) {
|
| 2481 |
$code %= 0x200000;
|
| 2482 |
if ( function_exists( 'mb_chr' ) ) {
|
| 2483 |
-
return mb_chr( $code );
|
| 2484 |
} else {
|
| 2485 |
if ( 0x80 > $code ) {
|
| 2486 |
$s = chr( $code );
|
|
@@ -2500,23 +2521,24 @@ class CoBlocks_ICal {
|
|
| 2500 |
* Replace all occurrences of the search string with the replacement string.
|
| 2501 |
* Multibyte safe.
|
| 2502 |
*
|
| 2503 |
-
* @param string|array $search
|
| 2504 |
-
* @param string|array $replace
|
| 2505 |
-
* @param string|array $subject
|
| 2506 |
-
* @param string $encoding
|
| 2507 |
-
* @param integer $count
|
|
|
|
| 2508 |
* @return array|string
|
| 2509 |
*/
|
| 2510 |
protected static function mb_str_replace( $search, $replace, $subject, $encoding = null, &$count = 0 ) {
|
| 2511 |
if ( is_array( $subject ) ) {
|
| 2512 |
-
// Call `mb_str_replace()` for each subject in the array, recursively
|
| 2513 |
foreach ( $subject as $key => $value ) {
|
| 2514 |
$subject[ $key ] = self::mb_str_replace( $search, $replace, $value, $encoding, $count );
|
| 2515 |
}
|
| 2516 |
} else {
|
| 2517 |
-
// Normalize $search and $replace so they are both arrays of the same length
|
| 2518 |
-
$searches = is_array( $search ) ? array_values( $search ) :
|
| 2519 |
-
$replacements = is_array( $replace ) ? array_values( $replace ) :
|
| 2520 |
$replacements = array_pad( $replacements, count( $searches ), '' );
|
| 2521 |
|
| 2522 |
foreach ( $searches as $key => $search ) {
|
|
@@ -2528,7 +2550,7 @@ class CoBlocks_ICal {
|
|
| 2528 |
$search_len = mb_strlen( $search, $encoding );
|
| 2529 |
$offset = mb_strpos( $subject, $search, 0, $encoding );
|
| 2530 |
|
| 2531 |
-
$sb =
|
| 2532 |
while ( false !== $offset ) {
|
| 2533 |
$sb[] = mb_substr( $subject, 0, $offset, $encoding );
|
| 2534 |
$subject = mb_substr( $subject, $offset + $search_len, null, $encoding );
|
|
@@ -2547,7 +2569,7 @@ class CoBlocks_ICal {
|
|
| 2547 |
* Places double-quotes around texts that have characters not permitted
|
| 2548 |
* in parameter-texts, but are permitted in quoted-texts.
|
| 2549 |
*
|
| 2550 |
-
* @param string $candidate_text
|
| 2551 |
* @return string
|
| 2552 |
*/
|
| 2553 |
protected function escape_param_text( $candidate_text ) {
|
|
@@ -2562,7 +2584,8 @@ class CoBlocks_ICal {
|
|
| 2562 |
* Replaces curly quotes and other special characters
|
| 2563 |
* with their standard equivalents
|
| 2564 |
*
|
| 2565 |
-
* @param string $data
|
|
|
|
| 2566 |
* @return string
|
| 2567 |
*/
|
| 2568 |
protected function clean_data( $data ) {
|
|
@@ -2580,26 +2603,27 @@ class CoBlocks_ICal {
|
|
| 2580 |
"\xe2\x80\xa6" => '...', // …
|
| 2581 |
"\xc2\xa0" => ' ',
|
| 2582 |
);
|
| 2583 |
-
// Replace UTF-8 characters
|
| 2584 |
$cleaned_data = strtr( $data, $replacement_chars );
|
| 2585 |
|
| 2586 |
-
// Replace Windows-1252 equivalents
|
| 2587 |
$chars_to_replace = array_map(
|
| 2588 |
function ( $code ) {
|
| 2589 |
return $this->mb_chr( $code );
|
| 2590 |
},
|
| 2591 |
array( 133, 145, 146, 147, 148, 150, 151, 194 )
|
| 2592 |
);
|
| 2593 |
-
|
|
|
|
| 2594 |
|
| 2595 |
return $cleaned_data;
|
| 2596 |
}
|
| 2597 |
|
| 2598 |
/**
|
| 2599 |
-
* Parses a list of excluded dates
|
| 2600 |
-
*
|
|
|
|
| 2601 |
*
|
| 2602 |
-
* @param array $event
|
| 2603 |
* @return array
|
| 2604 |
*/
|
| 2605 |
public function parse_ex_dates( array $event ) {
|
|
@@ -2629,7 +2653,7 @@ class CoBlocks_ICal {
|
|
| 2629 |
$output[] = new \DateTime( $ical_date, new \DateTimeZone( $current_time_zone ) );
|
| 2630 |
|
| 2631 |
if ( $key === $final_key ) {
|
| 2632 |
-
// Reset to default
|
| 2633 |
$current_time_zone = $this->default_time_zone;
|
| 2634 |
}
|
| 2635 |
}
|
|
@@ -2642,9 +2666,11 @@ class CoBlocks_ICal {
|
|
| 2642 |
/**
|
| 2643 |
* Checks if a date string is a valid date
|
| 2644 |
*
|
| 2645 |
-
* @param string $value
|
|
|
|
| 2646 |
* @return boolean
|
| 2647 |
-
*
|
|
|
|
| 2648 |
*/
|
| 2649 |
public function is_valid_date( $value ) {
|
| 2650 |
if ( ! $value ) {
|
|
@@ -2663,21 +2689,26 @@ class CoBlocks_ICal {
|
|
| 2663 |
/**
|
| 2664 |
* Checks if a filename exists as a file or URL
|
| 2665 |
*
|
| 2666 |
-
* @param string $filename
|
|
|
|
| 2667 |
* @return boolean
|
| 2668 |
*/
|
| 2669 |
protected function is_file_or_url( $filename ) {
|
| 2670 |
|
| 2671 |
-
|
|
|
|
|
|
|
| 2672 |
|
| 2673 |
}
|
| 2674 |
|
| 2675 |
/**
|
| 2676 |
* Reads an entire file or URL into an array
|
| 2677 |
*
|
| 2678 |
-
* @param string $filename
|
|
|
|
| 2679 |
* @return array
|
| 2680 |
-
*
|
|
|
|
| 2681 |
*/
|
| 2682 |
protected function file_or_url( $filename ) {
|
| 2683 |
$options = array();
|
|
@@ -2686,9 +2717,10 @@ class CoBlocks_ICal {
|
|
| 2686 |
$options['http']['header'] = array();
|
| 2687 |
|
| 2688 |
if ( ! empty( $this->http_basic_auth ) ) {
|
| 2689 |
-
$username
|
| 2690 |
-
$password
|
| 2691 |
-
|
|
|
|
| 2692 |
|
| 2693 |
array_push( $options['http']['header'], "Authorization: Basic {$basic_auth}" );
|
| 2694 |
}
|
|
@@ -2715,7 +2747,8 @@ class CoBlocks_ICal {
|
|
| 2715 |
*
|
| 2716 |
* Falls back to the default time zone if string passed not a recognised time zone.
|
| 2717 |
*
|
| 2718 |
-
* @param string $timezone_string
|
|
|
|
| 2719 |
* @return \date_timezone
|
| 2720 |
*/
|
| 2721 |
public function timezone_string_to_date_timezone( $timezone_string ) {
|
|
@@ -2743,14 +2776,15 @@ class CoBlocks_ICal {
|
|
| 2743 |
/**
|
| 2744 |
* Ensures the recurrence count is enforced against generated recurrence events.
|
| 2745 |
*
|
| 2746 |
-
* @param array $rrules
|
| 2747 |
-
* @param array $recurrence_events
|
|
|
|
| 2748 |
* @return array
|
| 2749 |
*/
|
| 2750 |
protected function trim_to_recurrence_count( array $rrules, array $recurrence_events ) {
|
| 2751 |
if ( isset( $rrules['COUNT'] ) ) {
|
| 2752 |
$recurrence_count = ( intval( $rrules['COUNT'] ) - 1 );
|
| 2753 |
-
$surplus_count = (
|
| 2754 |
|
| 2755 |
if ( $surplus_count > 0 ) {
|
| 2756 |
$recurrence_events = array_slice( $recurrence_events, 0, $recurrence_count );
|
|
@@ -2764,25 +2798,26 @@ class CoBlocks_ICal {
|
|
| 2764 |
/**
|
| 2765 |
* Checks if an excluded date matches a given date by reconciling time zones.
|
| 2766 |
*
|
| 2767 |
-
* @param DateTime
|
| 2768 |
-
* @param array
|
| 2769 |
-
* @param integer
|
|
|
|
| 2770 |
* @return boolean
|
| 2771 |
*/
|
| 2772 |
protected function is_ex_date_match( $exdate, array $an_event, $recurring_offset ) {
|
| 2773 |
$search_date = $an_event['DTSTART'];
|
| 2774 |
|
| 2775 |
if ( substr( $search_date, -1 ) === 'Z' ) {
|
| 2776 |
-
$timezone = new \DateTimeZone(self::TIME_ZONE_UTC);
|
| 2777 |
} elseif ( isset( $an_event['DTSTART_array'][0]['TZID'] ) ) {
|
| 2778 |
$timezone = $this->timezone_string_to_date_timezone( $an_event['DTSTART_array'][0]['TZID'] );
|
| 2779 |
} else {
|
| 2780 |
-
$timezone = new \DateTimeZone($this->default_time_zone);
|
| 2781 |
}
|
| 2782 |
|
| 2783 |
$a = new \DateTime( $search_date, $timezone );
|
| 2784 |
$b = $exdate->add( \DateInterval::createFromDateString( $recurring_offset . ' seconds' ) );
|
| 2785 |
|
| 2786 |
-
return $a
|
| 2787 |
}
|
| 2788 |
}
|
| 8 |
* @author Jonathan Goode <https://github.com/u01jmg3>
|
| 9 |
* @license https://opensource.org/licenses/mit-license.php MIT License
|
| 10 |
* @version 2.1.12
|
| 11 |
+
* @package CoBlocks
|
| 12 |
*/
|
| 13 |
|
| 14 |
// Exit if accessed directly.
|
| 16 |
exit;
|
| 17 |
}
|
| 18 |
|
| 19 |
+
/**
|
| 20 |
+
* CoBlocks iCal class.
|
| 21 |
+
*/
|
| 22 |
class CoBlocks_ICal {
|
| 23 |
|
| 24 |
const DATE_TIME_FORMAT = 'Ymd\THis';
|
| 506 |
/**
|
| 507 |
* Creates the ICal object
|
| 508 |
*
|
| 509 |
+
* @param mixed $files Files.
|
| 510 |
+
* @param array $options Options array.
|
| 511 |
+
*
|
| 512 |
* @return void
|
| 513 |
*/
|
| 514 |
public function __construct( $files = false, array $options = array() ) {
|
| 524 |
);
|
| 525 |
|
| 526 |
// Used only for strtotime(), i18n not needed.
|
| 527 |
+
$this->weekdays = array(
|
| 528 |
'SU' => 'Sunday of',
|
| 529 |
'MO' => 'Monday of',
|
| 530 |
'TU' => 'Tuesday of',
|
| 566 |
}
|
| 567 |
}
|
| 568 |
|
| 569 |
+
// Fallback to use the system default time zone.
|
| 570 |
if ( ! isset( $this->default_time_zone ) || ! $this->is_valid_timezone_id( $this->default_time_zone ) ) {
|
| 571 |
$this->default_time_zone = date_default_timezone_get();
|
| 572 |
}
|
| 594 |
/**
|
| 595 |
* Initialises lines from a string
|
| 596 |
*
|
| 597 |
+
* @param string $string String value.
|
| 598 |
+
*
|
| 599 |
* @return ICal
|
| 600 |
*/
|
| 601 |
public function init_string( $string ) {
|
| 603 |
$lines = explode( PHP_EOL, $string );
|
| 604 |
|
| 605 |
$this->init_lines( $lines );
|
|
|
|
|
|
|
| 606 |
}
|
| 607 |
|
| 608 |
return $this;
|
| 611 |
/**
|
| 612 |
* Initialises lines from a file
|
| 613 |
*
|
| 614 |
+
* @param string $file File string.
|
| 615 |
+
*
|
| 616 |
* @return ICal
|
| 617 |
*/
|
| 618 |
public function init_file( $file ) {
|
| 620 |
$lines = $this->file_or_url( $file );
|
| 621 |
|
| 622 |
$this->init_lines( $lines );
|
|
|
|
|
|
|
| 623 |
}
|
| 624 |
|
| 625 |
return $this;
|
| 628 |
/**
|
| 629 |
* Initialises lines from a URL
|
| 630 |
*
|
| 631 |
+
* @param string $url URL.
|
| 632 |
+
* @param string $username Username.
|
| 633 |
+
* @param string $password Password.
|
| 634 |
+
* @param string $user_agent User agent.
|
| 635 |
+
*
|
| 636 |
* @return ICal
|
| 637 |
*/
|
| 638 |
public function init_url( $url, $username = null, $password = null, $user_agent = null ) {
|
| 654 |
* Initialises the parser using an array
|
| 655 |
* containing each line of iCal content
|
| 656 |
*
|
| 657 |
+
* @param array $lines Lines array.
|
| 658 |
+
*
|
| 659 |
* @return void
|
| 660 |
*/
|
| 661 |
protected function init_lines( array $lines ) {
|
| 664 |
if ( stristr( $lines[0], 'BEGIN:VCALENDAR' ) !== false ) {
|
| 665 |
$component = '';
|
| 666 |
foreach ( $lines as $line ) {
|
| 667 |
+
$line = rtrim( $line ); // Trim trailing whitespace.
|
| 668 |
$line = $this->remove_unprintable_chars( $line );
|
| 669 |
|
| 670 |
if ( ! $this->disable_character_replacement ) {
|
| 674 |
$add = $this->key_value_from_string( $line );
|
| 675 |
|
| 676 |
$keyword = $add[0];
|
| 677 |
+
$values = $add[1]; // May be an array containing multiple values.
|
| 678 |
|
| 679 |
if ( ! is_array( $values ) ) {
|
| 680 |
if ( ! empty( $values ) ) {
|
| 681 |
+
$values = array( $values ); // Make an array as not already.
|
| 682 |
+
$blank_array = array(); // Empty placeholder array.
|
| 683 |
array_push( $values, $blank_array );
|
| 684 |
} else {
|
| 685 |
+
$values = array(); // Use blank array to ignore this line.
|
| 686 |
}
|
| 687 |
} elseif ( empty( $values[0] ) ) {
|
| 688 |
+
$values = array(); // Use blank array to ignore this line.
|
| 689 |
}
|
| 690 |
|
| 691 |
+
// Reverse so that our array of properties is processed first.
|
| 692 |
$values = array_reverse( $values );
|
| 693 |
|
| 694 |
foreach ( $values as $value ) {
|
| 695 |
switch ( $line ) {
|
| 696 |
+
/* https://www.kanzaki.com/docs/ical/vtodo.html */
|
| 697 |
case 'BEGIN:VTODO':
|
| 698 |
if ( ! is_array( $value ) ) {
|
| 699 |
$this->todo_count++;
|
| 702 |
$component = 'VTODO';
|
| 703 |
break;
|
| 704 |
|
| 705 |
+
/* https://www.kanzaki.com/docs/ical/vevent.html */
|
| 706 |
case 'BEGIN:VEVENT':
|
| 707 |
if ( ! is_array( $value ) ) {
|
| 708 |
$this->event_count++;
|
| 711 |
$component = 'VEVENT';
|
| 712 |
break;
|
| 713 |
|
| 714 |
+
/* https://www.kanzaki.com/docs/ical/vfreebusy.html */
|
| 715 |
case 'BEGIN:VFREEBUSY':
|
| 716 |
if ( ! is_array( $value ) ) {
|
| 717 |
$this->free_busy_index++;
|
| 768 |
if ( ! $this->skip_recurrence ) {
|
| 769 |
$this->process_recurrences();
|
| 770 |
|
| 771 |
+
// Apply changes to altered recurrence instances.
|
| 772 |
if ( ! empty( $this->altered_recurrence_instances ) ) {
|
| 773 |
$events = $this->cal['VEVENT'];
|
| 774 |
|
| 802 |
$events = $this->cal['VEVENT'];
|
| 803 |
|
| 804 |
if ( ! empty( $events ) ) {
|
| 805 |
+
$last_index = count( $events ) - 1;
|
| 806 |
$last_event = $events[ $last_index ];
|
| 807 |
|
| 808 |
if ( ( ! isset( $last_event['RRULE'] ) || '' === $last_event['RRULE'] ) && $this->does_event_start_outside_window( $last_event ) ) {
|
| 847 |
* Determines whether the event start date is outside `$window_min_timestamp` / `$window_max_timestamp`.
|
| 848 |
* Returns `true` for invalid dates.
|
| 849 |
*
|
| 850 |
+
* @param array $event Event data.
|
| 851 |
+
*
|
| 852 |
* @return boolean
|
| 853 |
*/
|
| 854 |
protected function does_event_start_outside_window( array $event ) {
|
| 858 |
/**
|
| 859 |
* Determines whether a valid iCalendar date is within a given range
|
| 860 |
*
|
| 861 |
+
* @param string $calendar_date Calendar date.
|
| 862 |
+
* @param integer $min_timestamp Minimum timestamp value.
|
| 863 |
+
* @param integer $max_timestamp Maximum timestamp value.
|
| 864 |
+
*
|
| 865 |
* @return boolean
|
| 866 |
*/
|
| 867 |
protected function is_out_of_range( $calendar_date, $min_timestamp, $max_timestamp ) {
|
| 874 |
* Unfolds an iCal file in preparation for parsing
|
| 875 |
* (https://icalendar.org/iCalendar-RFC-5545/3-1-content-lines.html)
|
| 876 |
*
|
| 877 |
+
* @param array $lines iCal data.
|
| 878 |
+
*
|
| 879 |
* @return array
|
| 880 |
*/
|
| 881 |
protected function unfold( array $lines ) {
|
| 889 |
/**
|
| 890 |
* Add one key and value pair to the `$this->cal` array
|
| 891 |
*
|
| 892 |
+
* @param string $component Component name.
|
| 893 |
+
* @param string|boolean $keyword Keyword value.
|
| 894 |
+
* @param string $value Value.
|
| 895 |
+
*
|
| 896 |
* @return void
|
| 897 |
*/
|
| 898 |
protected function add_calendar_component_with_key_and_value( $component, $keyword, $value ) {
|
| 911 |
}
|
| 912 |
|
| 913 |
if ( is_array( $value ) ) {
|
| 914 |
+
// Add array of properties to the end.
|
| 915 |
array_push( $this->cal[ $key1 ][ $key2 ][ $key3 ][ "{$keyword}_array" ], $value );
|
| 916 |
} else {
|
| 917 |
if ( ! isset( $this->cal[ $key1 ][ $key2 ][ $key3 ][ $keyword ] ) ) {
|
| 933 |
}
|
| 934 |
|
| 935 |
if ( is_array( $value ) ) {
|
| 936 |
+
// Add array of properties to the end.
|
| 937 |
array_push( $this->cal[ $key1 ][ $key2 ][ "{$keyword}_array" ], $value );
|
| 938 |
} else {
|
| 939 |
if ( ! isset( $this->cal[ $key1 ][ $key2 ][ $keyword ] ) ) {
|
| 1000 |
/**
|
| 1001 |
* Gets the key value pair from an iCal string
|
| 1002 |
*
|
| 1003 |
+
* @param string $text Text value.
|
| 1004 |
+
*
|
| 1005 |
* @return array|boolean
|
| 1006 |
*/
|
| 1007 |
protected function key_value_from_string( $text ) {
|
| 1044 |
}
|
| 1045 |
|
| 1046 |
if ( preg_match( '/^([A-Z-]+)([;][\w\W]*)?$/', $matches[1] ) ) {
|
| 1047 |
+
$matches = array_splice( $matches, 1, 2 ); // Remove first match and re-align ordering.
|
| 1048 |
|
| 1049 |
+
// Process properties.
|
| 1050 |
if ( preg_match( '/([A-Z-]+)[;]([\w\W]*)/', $matches[0], $properties ) ) {
|
| 1051 |
+
// Remove first match.
|
| 1052 |
array_shift( $properties );
|
| 1053 |
+
// Fix to ignore everything in keyword after a ; (e.g. Language, TZID, etc.).
|
| 1054 |
$matches[0] = $properties[0];
|
| 1055 |
+
array_shift( $properties ); // Repeat removing first match.
|
| 1056 |
|
| 1057 |
$formatted = array();
|
| 1058 |
foreach ( $properties as $property ) {
|
| 1059 |
+
// Match semicolon separator outside of quoted substrings.
|
| 1060 |
preg_match_all( '~[^' . PHP_EOL . '";]+(?:"[^"\\\]*(?:\\\.[^"\\\]*)*"[^' . PHP_EOL . '";]*)*~', $property, $attributes );
|
| 1061 |
+
// Remove multi-dimensional array and use the first key.
|
| 1062 |
+
$attributes = ( count( $attributes ) === 0 ) ? array( $property ) : reset( $attributes );
|
| 1063 |
|
| 1064 |
if ( is_array( $attributes ) ) {
|
| 1065 |
foreach ( $attributes as $attribute ) {
|
| 1066 |
+
// Match equals sign separator outside of quoted substrings.
|
| 1067 |
preg_match_all(
|
| 1068 |
'~[^' . PHP_EOL . '"=]+(?:"[^"\\\]*(?:\\\.[^"\\\]*)*"[^' . PHP_EOL . '"=]*)*~',
|
| 1069 |
$attribute,
|
| 1070 |
$values
|
| 1071 |
);
|
| 1072 |
+
// Remove multi-dimensional array and use the first key.
|
| 1073 |
+
$value = ( count( $values ) === 0 ) ? null : reset( $values );
|
| 1074 |
|
| 1075 |
if ( is_array( $value ) && isset( $value[1] ) ) {
|
| 1076 |
+
// Remove double quotes from beginning and end only.
|
| 1077 |
$formatted[ $value[0] ] = trim( $value[1], '"' );
|
| 1078 |
}
|
| 1079 |
}
|
| 1080 |
}
|
| 1081 |
}
|
| 1082 |
|
| 1083 |
+
// Assign the keyword property information.
|
| 1084 |
$properties[0] = $formatted;
|
| 1085 |
|
| 1086 |
+
// Add match to beginning of array.
|
| 1087 |
array_unshift( $properties, $matches[1] );
|
| 1088 |
$matches[1] = $properties;
|
| 1089 |
}
|
| 1090 |
|
| 1091 |
return $matches;
|
| 1092 |
} else {
|
| 1093 |
+
return false; // Ignore this match.
|
| 1094 |
}
|
| 1095 |
}
|
| 1096 |
|
| 1097 |
/**
|
| 1098 |
* Returns a `DateTime` object from an iCal date time format
|
| 1099 |
*
|
| 1100 |
+
* @param string $ical_date iCal date format.
|
| 1101 |
+
*
|
| 1102 |
* @return \DateTime
|
| 1103 |
+
*
|
| 1104 |
+
* @throws \Exception Exception thrown on error.
|
| 1105 |
*/
|
| 1106 |
public function ical_date_to_date_time( $ical_date ) {
|
| 1107 |
/**
|
| 1108 |
+
* The iCal times may be in 3 formats, (https://www.kanzaki.com/docs/ical/dateTime.html).
|
| 1109 |
*
|
| 1110 |
* UTC: Has a trailing 'Z'
|
| 1111 |
* Floating: No time zone reference specified, no trailing 'Z', use local time
|
| 1114 |
* Use DateTime class objects to get around limitations with `mktime` and `gmmktime`.
|
| 1115 |
* Must have a local time zone set to process floating times.
|
| 1116 |
*/
|
| 1117 |
+
$pattern = '/^(?:TZID=)?([^:]*|".*")'; // 1: Time zone
|
| 1118 |
+
$pattern .= ':?'; // Time zone delimiter.
|
| 1119 |
+
$pattern .= '([0-9]{8})'; // 2: YYYYMMDD
|
| 1120 |
+
$pattern .= 'T?'; // Time delimiter.
|
| 1121 |
+
$pattern .= '(?(?<=T)([0-9]{6}))'; // 3: HHMMSS (filled if delimiter present)
|
| 1122 |
+
$pattern .= '(Z?)/'; // 4: UTC flag
|
| 1123 |
|
| 1124 |
preg_match( $pattern, $ical_date, $date );
|
| 1125 |
|
| 1154 |
/**
|
| 1155 |
* Returns a Unix timestamp from an iCal date time format
|
| 1156 |
*
|
| 1157 |
+
* @param string $ical_date iCal date value.
|
| 1158 |
+
*
|
| 1159 |
* @return integer
|
| 1160 |
*/
|
| 1161 |
public function ical_date_to_unix_timestamp( $ical_date ) {
|
| 1165 |
/**
|
| 1166 |
* Returns a date adapted to the calendar time zone depending on the event `TZID`
|
| 1167 |
*
|
| 1168 |
+
* @param array $event Event array.
|
| 1169 |
+
* @param string $key Array key.
|
| 1170 |
+
* @param string $format Date format.
|
| 1171 |
+
*
|
| 1172 |
* @return string|boolean
|
| 1173 |
*/
|
| 1174 |
public function ical_date_with_timezone( array $event, $key, $format = self::DATE_TIME_FORMAT ) {
|
| 1186 |
$date_time->setTimezone( new \DateTimeZone( $this->calendar_timezone() ) );
|
| 1187 |
}
|
| 1188 |
|
| 1189 |
+
// Force time zone.
|
| 1190 |
if ( isset( $date_array[0]['TZID'] ) ) {
|
| 1191 |
$date_time->setTimezone( $this->timezone_string_to_date_timezone( $date_array[0]['TZID'] ) );
|
| 1192 |
}
|
| 1291 |
if ( ! empty( $events ) ) {
|
| 1292 |
foreach ( $events as $an_event ) {
|
| 1293 |
if ( isset( $an_event['RRULE'] ) && '' !== $an_event['RRULE'] ) {
|
| 1294 |
+
// Tag as generated by a recurrence rule.
|
| 1295 |
$an_event['RRULE_array'][2] = self::RECURRENCE_EVENT;
|
| 1296 |
|
| 1297 |
$count_nb = 0;
|
| 1306 |
$initial_end_timezone_name = $initial_start_timezone_name;
|
| 1307 |
}
|
| 1308 |
|
| 1309 |
+
// Recurring event, parse RRULE and add appropriate duplicate events.
|
| 1310 |
$rrules = array();
|
| 1311 |
$rrule_strings = explode( ';', $an_event['RRULE'] );
|
| 1312 |
|
| 1315 |
$rrules[ $k ] = $v;
|
| 1316 |
}
|
| 1317 |
|
| 1318 |
+
// Get frequency.
|
| 1319 |
$frequency = $rrules['FREQ'];
|
| 1320 |
+
// Get Start timestamp.
|
| 1321 |
$start_timestamp = $initial_start->getTimestamp();
|
| 1322 |
|
| 1323 |
if ( isset( $an_event['DTEND'] ) ) {
|
| 1330 |
}
|
| 1331 |
|
| 1332 |
$event_timestamp_offset = $end_timestamp - $start_timestamp;
|
| 1333 |
+
// Get Interval.
|
| 1334 |
$interval = ( isset( $rrules['INTERVAL'] ) && '' !== $rrules['INTERVAL'] ) ? $rrules['INTERVAL'] : 1;
|
| 1335 |
|
| 1336 |
$day_number = null;
|
| 1337 |
$weekday = null;
|
| 1338 |
|
| 1339 |
if ( in_array( $frequency, array( 'MONTHLY', 'YEARLY' ), true ) && isset( $rrules['BYDAY'] ) && '' !== $rrules['BYDAY'] ) {
|
| 1340 |
+
// Deal with BYDAY.
|
| 1341 |
$by_day = $rrules['BYDAY'];
|
| 1342 |
$day_number = intval( $by_day );
|
| 1343 |
|
| 1344 |
+
if ( empty( $day_number ) ) { // Returns 0 when no number defined in BYDAY.
|
| 1345 |
if ( ! isset( $rrules['BYSETPOS'] ) ) {
|
| 1346 |
+
$day_number = 1; // Set first as default.
|
| 1347 |
} elseif ( is_numeric( $rrules['BYSETPOS'] ) ) {
|
| 1348 |
$day_number = $rrules['BYSETPOS'];
|
| 1349 |
|
| 1365 |
if ( is_int( $this->default_span ) ) {
|
| 1366 |
$until_default = date_create( 'now' );
|
| 1367 |
$until_default->modify( $this->default_span . ' year' );
|
| 1368 |
+
$until_default->setTime( 23, 59, 59 ); // End of the day.
|
|
|
|
|
|
|
| 1369 |
}
|
| 1370 |
|
| 1371 |
+
// Compute EXDATEs.
|
| 1372 |
$exdates = $this->parse_ex_dates( $an_event );
|
| 1373 |
|
| 1374 |
$count_orig = null;
|
| 1375 |
|
| 1376 |
if ( isset( $rrules['UNTIL'] ) ) {
|
| 1377 |
+
// Get Until.
|
| 1378 |
$until = strtotime( $rrules['UNTIL'] );
|
| 1379 |
if ( $until > strtotime( '+' . $this->default_span . ' years' ) ) {
|
| 1380 |
$until = strtotime( '+' . $this->default_span . ' years' );
|
| 1382 |
} elseif ( isset( $rrules['COUNT'] ) ) {
|
| 1383 |
$count_orig = ( is_numeric( $rrules['COUNT'] ) && $rrules['COUNT'] > 1 ) ? $rrules['COUNT'] : 0;
|
| 1384 |
|
| 1385 |
+
// Increment count by the number of excluded dates.
|
| 1386 |
+
$count_orig += count( $exdates );
|
| 1387 |
|
| 1388 |
+
// Remove one to exclude the occurrence that initialises the rule.
|
| 1389 |
$count = ( $count_orig - 1 );
|
| 1390 |
|
| 1391 |
if ( $interval >= 2 ) {
|
| 1412 |
$dtstart->modify( $offset );
|
| 1413 |
}
|
| 1414 |
|
| 1415 |
+
// Jumping X months forwards doesn't mean.
|
| 1416 |
+
// the end date will fall on the same day defined in BYDAY.
|
| 1417 |
+
// Use the largest of these to ensure we are going far enough.
|
| 1418 |
+
// in the future to capture our final end day.
|
| 1419 |
$until = max( $until, $dtstart->format( self::UNIX_FORMAT ) );
|
| 1420 |
}
|
| 1421 |
|
| 1426 |
|
| 1427 |
$until = intval( $until );
|
| 1428 |
|
| 1429 |
+
// Decide how often to add events and do so.
|
| 1430 |
switch ( $frequency ) {
|
| 1431 |
case 'DAILY':
|
| 1432 |
+
// Simply add a new event each interval of days until UNTIL is reached.
|
| 1433 |
$offset = "+{$interval} day";
|
| 1434 |
$recurring_timestamp = strtotime( $offset, $start_timestamp );
|
| 1435 |
|
| 1436 |
while ( $recurring_timestamp <= $until ) {
|
| 1437 |
$dayrecurring_timestamp = $recurring_timestamp;
|
| 1438 |
|
| 1439 |
+
// Adjust time zone from initial event.
|
| 1440 |
$dayrecurring_offset = 0;
|
| 1441 |
if ( $this->use_timezone_with_r_rules ) {
|
| 1442 |
$recurring_timezone = \DateTime::createFromFormat( self::UNIX_FORMAT, $dayrecurring_timestamp );
|
| 1445 |
$dayrecurring_timestamp += $dayrecurring_offset;
|
| 1446 |
}
|
| 1447 |
|
| 1448 |
+
// Add event.
|
| 1449 |
+
$an_event['DTSTART'] = gmdate( self::DATE_TIME_FORMAT, $dayrecurring_timestamp ) . ( ( 'Z' === $initial_start_timezone_name ) ? 'Z' : '' );
|
| 1450 |
$an_event['DTSTART_array'][1] = $an_event['DTSTART'];
|
| 1451 |
$an_event['DTSTART_array'][2] = $dayrecurring_timestamp;
|
| 1452 |
$an_event['DTEND_array'] = $an_event['DTSTART_array'];
|
| 1453 |
$an_event['DTEND_array'][2] += $event_timestamp_offset;
|
| 1454 |
+
$an_event['DTEND'] = gmdate(
|
| 1455 |
self::DATE_TIME_FORMAT,
|
| 1456 |
$an_event['DTEND_array'][2]
|
| 1457 |
) . ( ( 'Z' === $initial_end_timezone_name ) ? 'Z' : '' );
|
| 1458 |
|
| 1459 |
$an_event['DTEND_array'][1] = $an_event['DTEND'];
|
| 1460 |
|
| 1461 |
+
// Exclusions.
|
| 1462 |
$is_excluded = array_filter(
|
| 1463 |
$exdates,
|
| 1464 |
function ( $exdate ) use ( $an_event, $dayrecurring_offset ) {
|
| 1486 |
$recurrence_events[] = $an_event;
|
| 1487 |
$this->event_count++;
|
| 1488 |
|
| 1489 |
+
// If RRULE[COUNT] is reached then break.
|
| 1490 |
if ( isset( $rrules['COUNT'] ) ) {
|
| 1491 |
$count_nb++;
|
| 1492 |
|
| 1496 |
}
|
| 1497 |
}
|
| 1498 |
|
| 1499 |
+
// Move forwards.
|
| 1500 |
$recurring_timestamp = strtotime( $offset, $recurring_timestamp );
|
| 1501 |
}
|
| 1502 |
|
| 1503 |
$recurrence_events = $this->trim_to_recurrence_count( $rrules, $recurrence_events );
|
| 1504 |
$all_recurrence_events = array_merge( $all_recurrence_events, $recurrence_events );
|
| 1505 |
+
$recurrence_events = array(); // Reset.
|
| 1506 |
break;
|
| 1507 |
|
| 1508 |
case 'WEEKLY':
|
| 1509 |
+
// Create offset.
|
| 1510 |
$offset = "+{$interval} week";
|
| 1511 |
|
| 1512 |
$wkst = ( isset( $rrules['WKST'] ) && in_array( $rrules['WKST'], array( 'SA', 'SU', 'MO' ), true ) ) ? $rrules['WKST'] : $this->default_week_start;
|
| 1517 |
'MO' => 'Monday',
|
| 1518 |
);
|
| 1519 |
|
| 1520 |
+
// Build list of days of week to add events.
|
| 1521 |
$weekdays = $a_week;
|
| 1522 |
|
| 1523 |
if ( isset( $rrules['BYDAY'] ) && '' !== $rrules['BYDAY'] ) {
|
| 1524 |
$by_days = explode( ',', $rrules['BYDAY'] );
|
| 1525 |
} else {
|
| 1526 |
+
// A textual representation of a day, two letters (e.g. SU).
|
| 1527 |
$by_days = array( mb_substr( strtoupper( $initial_start->format( 'D' ) ), 0, 2 ) );
|
| 1528 |
}
|
| 1529 |
|
| 1530 |
+
// Get timestamp of first day of start week.
|
| 1531 |
$weekrecurring_timestamp = ( strcasecmp( $initial_start->format( 'l' ), explode( ' ', $this->weekdays[ $wkst ] )[0] ) === 0 )
|
| 1532 |
? $start_timestamp
|
| 1533 |
: strtotime( "last {$days[$wkst]} " . $initial_start->format( 'H:i:s' ), $start_timestamp );
|
| 1534 |
|
| 1535 |
+
// Step through weeks.
|
| 1536 |
while ( $weekrecurring_timestamp <= $until ) {
|
| 1537 |
$dayrecurring_timestamp = $weekrecurring_timestamp;
|
| 1538 |
|
| 1539 |
+
// Adjust time zone from initial event.
|
| 1540 |
$dayrecurring_offset = 0;
|
| 1541 |
if ( $this->use_timezone_with_r_rules ) {
|
| 1542 |
$day_recurring_timezone = \DateTime::createFromFormat( self::UNIX_FORMAT, $dayrecurring_timestamp );
|
| 1546 |
}
|
| 1547 |
|
| 1548 |
foreach ( $weekdays as $day ) {
|
| 1549 |
+
// Check if day should be added.
|
| 1550 |
if ( in_array( $day, $by_days, true ) && $dayrecurring_timestamp > $start_timestamp
|
| 1551 |
&& $dayrecurring_timestamp <= $until
|
| 1552 |
) {
|
| 1553 |
+
// Add event.
|
| 1554 |
+
$an_event['DTSTART'] = gmdate( self::DATE_TIME_FORMAT, $dayrecurring_timestamp ) . ( ( 'Z' === $initial_start_timezone_name ) ? 'Z' : '' );
|
| 1555 |
$an_event['DTSTART_array'][1] = $an_event['DTSTART'];
|
| 1556 |
$an_event['DTSTART_array'][2] = $dayrecurring_timestamp;
|
| 1557 |
$an_event['DTEND_array'] = $an_event['DTSTART_array'];
|
| 1558 |
$an_event['DTEND_array'][2] += $event_timestamp_offset;
|
| 1559 |
+
$an_event['DTEND'] = gmdate(
|
| 1560 |
self::DATE_TIME_FORMAT,
|
| 1561 |
$an_event['DTEND_array'][2]
|
| 1562 |
) . ( ( 'Z' === $initial_end_timezone_name ) ? 'Z' : '' );
|
| 1563 |
|
| 1564 |
$an_event['DTEND_array'][1] = $an_event['DTEND'];
|
| 1565 |
|
| 1566 |
+
// Exclusions.
|
| 1567 |
$is_excluded = array_filter(
|
| 1568 |
$exdates,
|
| 1569 |
function ( $exdate ) use ( $an_event, $dayrecurring_offset ) {
|
| 1591 |
$recurrence_events[] = $an_event;
|
| 1592 |
$this->event_count++;
|
| 1593 |
|
| 1594 |
+
// If RRULE[COUNT] is reached then break.
|
| 1595 |
if ( isset( $rrules['COUNT'] ) ) {
|
| 1596 |
$count_nb++;
|
| 1597 |
|
| 1602 |
}
|
| 1603 |
}
|
| 1604 |
|
| 1605 |
+
// Move forwards a day.
|
| 1606 |
$dayrecurring_timestamp = strtotime( '+1 day', $dayrecurring_timestamp );
|
| 1607 |
}
|
| 1608 |
|
| 1609 |
+
// Move forwards $interval weeks.
|
| 1610 |
$weekrecurring_timestamp = strtotime( $offset, $weekrecurring_timestamp );
|
| 1611 |
}
|
| 1612 |
|
| 1613 |
$recurrence_events = $this->trim_to_recurrence_count( $rrules, $recurrence_events );
|
| 1614 |
$all_recurrence_events = array_merge( $all_recurrence_events, $recurrence_events );
|
| 1615 |
+
$recurrence_events = array(); // Reset.
|
| 1616 |
break;
|
| 1617 |
|
| 1618 |
case 'MONTHLY':
|
| 1619 |
+
// Create offset.
|
| 1620 |
$recurring_timestamp = $start_timestamp;
|
| 1621 |
$offset = "+{$interval} month";
|
| 1622 |
|
| 1623 |
if ( isset( $rrules['BYMONTHDAY'] ) && '' !== $rrules['BYMONTHDAY'] ) {
|
| 1624 |
+
// Deal with BYMONTHDAY.
|
| 1625 |
$monthdays = explode( ',', $rrules['BYMONTHDAY'] );
|
| 1626 |
|
| 1627 |
while ( $recurring_timestamp <= $until ) {
|
| 1629 |
$month_recurring_timestamp = null;
|
| 1630 |
|
| 1631 |
if ( 0 === $key ) {
|
| 1632 |
+
// Ensure original event conforms to monthday rule.
|
| 1633 |
$an_event['DTSTART'] = gmdate(
|
| 1634 |
'Ym' . sprintf( '%02d', $monthday ) . '\T' . self::TIME_FORMAT,
|
| 1635 |
strtotime( $an_event['DTSTART'] )
|
| 1647 |
$an_event['DTEND_array'][1] = $an_event['DTEND'];
|
| 1648 |
$an_event['DTEND_array'][2] = $this->ical_date_to_unix_timestamp( $an_event['DTEND'] );
|
| 1649 |
|
| 1650 |
+
// Ensure recurring timestamp confirms to BYMONTHDAY rule.
|
| 1651 |
$month_recurring_date_time = new \DateTime( '@' . $recurring_timestamp );
|
| 1652 |
$month_recurring_date_time->setDate(
|
| 1653 |
$month_recurring_date_time->format( 'Y' ),
|
| 1657 |
$month_recurring_timestamp = $month_recurring_date_time->getTimestamp();
|
| 1658 |
}
|
| 1659 |
|
| 1660 |
+
// Adjust time zone from initial event.
|
| 1661 |
$monthrecurring_offset = 0;
|
| 1662 |
if ( $this->use_timezone_with_r_rules ) {
|
| 1663 |
$recurring_timezone = \DateTime::createFromFormat( self::UNIX_FORMAT, $month_recurring_timestamp );
|
| 1667 |
}
|
| 1668 |
|
| 1669 |
if ( ( $month_recurring_timestamp > $start_timestamp ) && ( $month_recurring_timestamp <= $until ) ) {
|
| 1670 |
+
// Add event.
|
| 1671 |
+
$an_event['DTSTART'] = gmdate(
|
| 1672 |
'Ym' . sprintf( '%02d', $monthday ) . '\T' . self::TIME_FORMAT,
|
| 1673 |
$month_recurring_timestamp
|
| 1674 |
) . ( ( 'Z' === $initial_start_timezone_name ) ? 'Z' : '' );
|
| 1676 |
$an_event['DTSTART_array'][2] = $month_recurring_timestamp;
|
| 1677 |
$an_event['DTEND_array'] = $an_event['DTSTART_array'];
|
| 1678 |
$an_event['DTEND_array'][2] += $event_timestamp_offset;
|
| 1679 |
+
$an_event['DTEND'] = gmdate(
|
| 1680 |
self::DATE_TIME_FORMAT,
|
| 1681 |
$an_event['DTEND_array'][2]
|
| 1682 |
) . ( ( 'Z' === $initial_end_timezone_name ) ? 'Z' : '' );
|
| 1683 |
$an_event['DTEND_array'][1] = $an_event['DTEND'];
|
| 1684 |
|
| 1685 |
+
// Exclusions.
|
| 1686 |
$is_excluded = array_filter(
|
| 1687 |
$exdates,
|
| 1688 |
function ( $exdate ) use ( $an_event, $monthrecurring_offset ) {
|
| 1710 |
$recurrence_events[] = $an_event;
|
| 1711 |
$this->event_count++;
|
| 1712 |
|
| 1713 |
+
// If RRULE[COUNT] is reached then break.
|
| 1714 |
if ( isset( $rrules['COUNT'] ) ) {
|
| 1715 |
$count_nb++;
|
| 1716 |
|
| 1722 |
}
|
| 1723 |
}
|
| 1724 |
|
| 1725 |
+
// Move forwards.
|
| 1726 |
$recurring_timestamp = strtotime( $offset, $recurring_timestamp );
|
| 1727 |
}
|
| 1728 |
} elseif ( isset( $rrules['BYDAY'] ) && '' !== $rrules['BYDAY'] ) {
|
| 1729 |
while ( $recurring_timestamp <= $until ) {
|
| 1730 |
$month_recurring_timestamp = $recurring_timestamp;
|
| 1731 |
|
| 1732 |
+
// Adjust time zone from initial event.
|
| 1733 |
$monthrecurring_offset = 0;
|
| 1734 |
|
| 1735 |
if ( $this->use_timezone_with_r_rules ) {
|
| 1740 |
}
|
| 1741 |
|
| 1742 |
$event_start_desc = "{$this->convert_day_ordinal_to_positive($day_number, $weekday, $month_recurring_timestamp)} {$this->weekdays[$weekday]} "
|
| 1743 |
+
. gmdate( self::DATE_TIME_FORMAT_PRETTY, $month_recurring_timestamp );
|
| 1744 |
$event_start_timestamp = strtotime( $event_start_desc );
|
| 1745 |
|
| 1746 |
if ( intval( $rrules['BYDAY'] ) === 0 ) {
|
| 1747 |
$last_day_desc = "last {$this->weekdays[$weekday]} "
|
| 1748 |
+
. gmdate( self::DATE_TIME_FORMAT_PRETTY, $month_recurring_timestamp );
|
| 1749 |
} else {
|
| 1750 |
$last_day_desc = "{$this->convert_day_ordinal_to_positive($day_number, $weekday, $month_recurring_timestamp)} {$this->weekdays[$weekday]} "
|
| 1751 |
+
. gmdate( self::DATE_TIME_FORMAT_PRETTY, $month_recurring_timestamp );
|
| 1752 |
}
|
| 1753 |
|
| 1754 |
$last_day_time_stamp = strtotime( $last_day_desc );
|
| 1755 |
|
| 1756 |
do {
|
| 1757 |
+
// Prevent 5th day of a month from showing up on the next month.
|
| 1758 |
+
// If BYDAY and the event falls outside the current month, skip the event.
|
| 1759 |
|
| 1760 |
+
$compare_current_month = gmdate( 'F', $month_recurring_timestamp );
|
| 1761 |
+
$compare_event_month = gmdate( 'F', $event_start_timestamp );
|
| 1762 |
|
| 1763 |
if ( $compare_current_month !== $compare_event_month ) {
|
| 1764 |
$month_recurring_timestamp = strtotime( $offset, $month_recurring_timestamp );
|
| 1766 |
}
|
| 1767 |
|
| 1768 |
if ( $event_start_timestamp > $start_timestamp && $event_start_timestamp <= $until ) {
|
| 1769 |
+
$an_event['DTSTART'] = gmdate( self::DATE_TIME_FORMAT, $event_start_timestamp ) . ( ( 'Z' === $initial_start_timezone_name ) ? 'Z' : '' );
|
| 1770 |
$an_event['DTSTART_array'][1] = $an_event['DTSTART'];
|
| 1771 |
$an_event['DTSTART_array'][2] = $event_start_timestamp;
|
| 1772 |
$an_event['DTEND_array'] = $an_event['DTSTART_array'];
|
| 1773 |
$an_event['DTEND_array'][2] += $event_timestamp_offset;
|
| 1774 |
+
$an_event['DTEND'] = gmdate(
|
| 1775 |
self::DATE_TIME_FORMAT,
|
| 1776 |
$an_event['DTEND_array'][2]
|
| 1777 |
) . ( ( 'Z' === $initial_end_timezone_name ) ? 'Z' : '' );
|
| 1778 |
$an_event['DTEND_array'][1] = $an_event['DTEND'];
|
| 1779 |
|
| 1780 |
+
// Exclusions.
|
| 1781 |
$is_excluded = array_filter(
|
| 1782 |
$exdates,
|
| 1783 |
function ( $exdate ) use ( $an_event, $monthrecurring_offset ) {
|
| 1805 |
$recurrence_events[] = $an_event;
|
| 1806 |
$this->event_count++;
|
| 1807 |
|
| 1808 |
+
// If RRULE[COUNT] is reached then break.
|
| 1809 |
if ( isset( $rrules['COUNT'] ) ) {
|
| 1810 |
$count_nb++;
|
| 1811 |
|
| 1817 |
}
|
| 1818 |
|
| 1819 |
if ( isset( $rrules['BYSETPOS'] ) ) {
|
| 1820 |
+
// BYSETPOS is defined so skip.
|
| 1821 |
+
// looping through each week.
|
| 1822 |
$last_day_time_stamp = $event_start_timestamp;
|
| 1823 |
}
|
| 1824 |
|
| 1830 |
|
| 1831 |
$recurrence_events = $this->trim_to_recurrence_count( $rrules, $recurrence_events );
|
| 1832 |
$all_recurrence_events = array_merge( $all_recurrence_events, $recurrence_events );
|
| 1833 |
+
$recurrence_events = array(); // Reset.
|
| 1834 |
break;
|
| 1835 |
|
| 1836 |
case 'YEARLY':
|
| 1837 |
+
// Create offset.
|
| 1838 |
$recurring_timestamp = $start_timestamp;
|
| 1839 |
$offset = "+{$interval} year";
|
| 1840 |
|
| 1841 |
+
// Deal with BYMONTH.
|
| 1842 |
if ( isset( $rrules['BYMONTH'] ) && '' !== $rrules['BYMONTH'] ) {
|
| 1843 |
$bymonths = explode( ',', $rrules['BYMONTH'] );
|
| 1844 |
} else {
|
| 1845 |
$bymonths = array();
|
| 1846 |
}
|
| 1847 |
|
| 1848 |
+
// Check if BYDAY rule exists.
|
| 1849 |
if ( isset( $rrules['BYDAY'] ) && '' !== $rrules['BYDAY'] ) {
|
| 1850 |
while ( $recurring_timestamp <= $until ) {
|
| 1851 |
$yearrecurring_timestamp = $recurring_timestamp;
|
| 1852 |
|
| 1853 |
+
// Adjust time zone from initial event.
|
| 1854 |
$yearrecurring_offset = 0;
|
| 1855 |
|
| 1856 |
if ( $this->use_timezone_with_r_rules ) {
|
| 1880 |
|
| 1881 |
do {
|
| 1882 |
if ( $event_start_timestamp > $start_timestamp && $event_start_timestamp <= $until ) {
|
| 1883 |
+
$an_event['DTSTART'] = gmdate( self::DATE_TIME_FORMAT, $event_start_timestamp ) . ( ( 'Z' === $initial_start_timezone_name ) ? 'Z' : '' );
|
| 1884 |
$an_event['DTSTART_array'][1] = $an_event['DTSTART'];
|
| 1885 |
$an_event['DTSTART_array'][2] = $event_start_timestamp;
|
| 1886 |
$an_event['DTEND_array'] = $an_event['DTSTART_array'];
|
| 1887 |
$an_event['DTEND_array'][2] += $event_timestamp_offset;
|
| 1888 |
+
$an_event['DTEND'] = gmdate(
|
| 1889 |
self::DATE_TIME_FORMAT,
|
| 1890 |
$an_event['DTEND_array'][2]
|
| 1891 |
) . ( ( 'Z' === $initial_end_timezone_name ) ? 'Z' : '' );
|
| 1892 |
|
| 1893 |
$an_event['DTEND_array'][1] = $an_event['DTEND'];
|
| 1894 |
|
| 1895 |
+
// Exclusions.
|
| 1896 |
$is_excluded = array_filter(
|
| 1897 |
$exdates,
|
| 1898 |
function ( $exdate ) use ( $an_event, $yearrecurring_offset ) {
|
| 1920 |
$recurrence_events[] = $an_event;
|
| 1921 |
$this->event_count++;
|
| 1922 |
|
| 1923 |
+
// If RRULE[COUNT] is reached then break.
|
| 1924 |
if ( isset( $rrules['COUNT'] ) ) {
|
| 1925 |
$count_nb++;
|
| 1926 |
|
| 1935 |
} while ( $event_start_timestamp <= $last_day_time_stamp );
|
| 1936 |
}
|
| 1937 |
|
| 1938 |
+
// Move forwards.
|
| 1939 |
$recurring_timestamp = strtotime( $offset, $recurring_timestamp );
|
| 1940 |
}
|
| 1941 |
} else {
|
| 1942 |
$day = $initial_start->format( 'd' );
|
| 1943 |
|
| 1944 |
+
// Step through years.
|
| 1945 |
while ( $recurring_timestamp <= $until ) {
|
| 1946 |
$yearrecurring_timestamp = $recurring_timestamp;
|
| 1947 |
|
| 1948 |
+
// Adjust time zone from initial event.
|
| 1949 |
$yearrecurring_offset = 0;
|
| 1950 |
if ( $this->use_timezone_with_r_rules ) {
|
| 1951 |
$recurring_timezone = \DateTime::createFromFormat( self::UNIX_FORMAT, $yearrecurring_timestamp );
|
| 1967 |
$event_start_timestamp = strtotime( $event_start_desc );
|
| 1968 |
|
| 1969 |
if ( $event_start_timestamp > $start_timestamp && $until >= $event_start_timestamp ) {
|
| 1970 |
+
$an_event['DTSTART'] = gmdate( self::DATE_TIME_FORMAT, $event_start_timestamp ) . ( ( 'Z' === $initial_start_timezone_name ) ? 'Z' : '' );
|
| 1971 |
$an_event['DTSTART_array'][1] = $an_event['DTSTART'];
|
| 1972 |
$an_event['DTSTART_array'][2] = $event_start_timestamp;
|
| 1973 |
$an_event['DTEND_array'] = $an_event['DTSTART_array'];
|
| 1974 |
$an_event['DTEND_array'][2] += $event_timestamp_offset;
|
| 1975 |
+
$an_event['DTEND'] = gmdate(
|
| 1976 |
self::DATE_TIME_FORMAT,
|
| 1977 |
$an_event['DTEND_array'][2]
|
| 1978 |
) . ( ( 'Z' === $initial_end_timezone_name ) ? 'Z' : '' );
|
| 1979 |
$an_event['DTEND_array'][1] = $an_event['DTEND'];
|
| 1980 |
|
| 1981 |
+
// Exclusions.
|
| 1982 |
$is_excluded = array_filter(
|
| 1983 |
$exdates,
|
| 1984 |
function ( $exdate ) use ( $an_event, $yearrecurring_offset ) {
|
| 2006 |
$recurrence_events[] = $an_event;
|
| 2007 |
$this->event_count++;
|
| 2008 |
|
| 2009 |
+
// If RRULE[COUNT] is reached then break.
|
| 2010 |
if ( isset( $rrules['COUNT'] ) ) {
|
| 2011 |
$count_nb++;
|
| 2012 |
|
| 2018 |
}
|
| 2019 |
}
|
| 2020 |
|
| 2021 |
+
// Move forwards.
|
| 2022 |
$recurring_timestamp = strtotime( $offset, $recurring_timestamp );
|
| 2023 |
}
|
| 2024 |
}
|
| 2025 |
|
| 2026 |
$recurrence_events = $this->trim_to_recurrence_count( $rrules, $recurrence_events );
|
| 2027 |
$all_recurrence_events = array_merge( $all_recurrence_events, $recurrence_events );
|
| 2028 |
+
$recurrence_events = array(); // Reset.
|
| 2029 |
break;
|
| 2030 |
}
|
| 2031 |
}
|
| 2083 |
* array to include an iCal date time for each event
|
| 2084 |
* (`TZID=Timezone:YYYYMMDD[T]HHMMSS`)
|
| 2085 |
*
|
| 2086 |
+
* @param array $event Event array.
|
| 2087 |
+
* @param integer $index Index value.
|
| 2088 |
+
*
|
| 2089 |
* @return array
|
| 2090 |
*/
|
| 2091 |
protected function process_event_ical_datetime( array $event, $index = 3 ) {
|
| 2105 |
|
| 2106 |
/**
|
| 2107 |
* Returns an array of Events.
|
| 2108 |
+
* Every event is a class with the event details being properties within it.
|
|
|
|
| 2109 |
*
|
| 2110 |
* @return array
|
| 2111 |
*/
|
| 2144 |
/**
|
| 2145 |
* Returns the calendar time zone
|
| 2146 |
*
|
| 2147 |
+
* @param boolean $ignore_utc Whether or not to ignore UTC.
|
| 2148 |
+
*
|
| 2149 |
* @return string
|
| 2150 |
*/
|
| 2151 |
public function calendar_timezone( $ignore_utc = false ) {
|
| 2177 |
public function free_busy_events() {
|
| 2178 |
$array = $this->cal;
|
| 2179 |
|
| 2180 |
+
return isset( $array['VFREEBUSY'] ) ? $array['VFREEBUSY'] : array();
|
| 2181 |
}
|
| 2182 |
|
| 2183 |
/**
|
| 2184 |
+
* Returns a boolean value whether the current calendar has events or not
|
|
|
|
| 2185 |
*
|
| 2186 |
* @return boolean
|
| 2187 |
*/
|
| 2188 |
public function has_events() {
|
| 2189 |
+
return ( count( $this->events() ) > 0 ) ? true : false;
|
| 2190 |
}
|
| 2191 |
|
| 2192 |
/**
|
| 2207 |
* problem for events on, during, or after 29 Jan 2038.
|
| 2208 |
* See https://en.wikipedia.org/wiki/Unix_time#Representing_the_number
|
| 2209 |
*
|
| 2210 |
+
* @param string|null $range_start Date range start.
|
| 2211 |
+
* @param string|null $range_end Date range end.
|
| 2212 |
+
*
|
| 2213 |
* @return array
|
| 2214 |
+
*
|
| 2215 |
+
* @throws \Exception Exception thrown on error.
|
| 2216 |
*/
|
| 2217 |
public function events_from_range( $range_start = null, $range_end = null ) {
|
| 2218 |
+
// Sort events before processing range.
|
| 2219 |
$events = $this->sort_events_with_order( $this->events(), SORT_ASC );
|
| 2220 |
|
| 2221 |
if ( empty( $events ) ) {
|
| 2228 |
try {
|
| 2229 |
$range_start = new \DateTime( $range_start, new \DateTimeZone( $this->default_time_zone ) );
|
| 2230 |
} catch ( \Exception $e ) {
|
|
|
|
| 2231 |
$range_start = false;
|
| 2232 |
}
|
| 2233 |
} else {
|
| 2238 |
try {
|
| 2239 |
$range_end = new \DateTime( $range_end, new \DateTimeZone( $this->default_time_zone ) );
|
| 2240 |
} catch ( \Exception $e ) {
|
|
|
|
| 2241 |
$range_end = false;
|
| 2242 |
}
|
| 2243 |
} else {
|
| 2257 |
$event_start = $an_event->dtstart_array[2];
|
| 2258 |
$event_end = ( isset( $an_event->dtend_array[2] ) ) ? $an_event->dtend_array[2] : null;
|
| 2259 |
|
| 2260 |
+
if ( ( $event_start >= $range_start && $event_start < $range_end ) // Event start date contained in the range.
|
| 2261 |
|| ( null !== $event_end
|
| 2262 |
&& (
|
| 2263 |
+
( $event_end > $range_start && $event_end <= $range_end ) // Event end date contained in the range.
|
| 2264 |
+
|| ( $event_start < $range_start && $event_end > $range_end ) // Event starts before and finishes after range.
|
| 2265 |
)
|
| 2266 |
)
|
| 2267 |
) {
|
| 2280 |
* Returns a sorted array of the events following a given string,
|
| 2281 |
* or `false` if no events exist in the range.
|
| 2282 |
*
|
| 2283 |
+
* @param string $interval A date with relative parts.
|
| 2284 |
+
*
|
| 2285 |
* @return array
|
| 2286 |
*/
|
| 2287 |
public function events_from_interval( $interval ) {
|
| 2297 |
/**
|
| 2298 |
* Sorts events based on a given sort order
|
| 2299 |
*
|
| 2300 |
+
* @param array $events Events array.
|
| 2301 |
+
* @param integer $sort_order Either SORT_ASC, SORT_DESC, SORT_REGULAR, SORT_NUMERIC, SORT_STRING.
|
| 2302 |
+
*
|
| 2303 |
* @return array
|
| 2304 |
*/
|
| 2305 |
public function sort_events_with_order( array $events, $sort_order = SORT_ASC ) {
|
| 2319 |
/**
|
| 2320 |
* Checks if a time zone is valid (IANA, CLDR, or Windows)
|
| 2321 |
*
|
| 2322 |
+
* @param string $timezone Timezone value.
|
| 2323 |
+
*
|
| 2324 |
* @return boolean
|
| 2325 |
*/
|
| 2326 |
protected function is_valid_timezone_id( $timezone ) {
|
| 2332 |
/**
|
| 2333 |
* Checks if a time zone is a valid IANA time zone
|
| 2334 |
*
|
| 2335 |
+
* @param string $timezone Timezone value.
|
| 2336 |
+
*
|
| 2337 |
* @return boolean
|
| 2338 |
*/
|
| 2339 |
protected function is_valid_iana_timezone_id( $timezone ) {
|
| 2364 |
/**
|
| 2365 |
* Checks if a time zone is a valid CLDR time zone
|
| 2366 |
*
|
| 2367 |
+
* @param string $timezone Timezone value.
|
| 2368 |
* @return boolean
|
| 2369 |
*/
|
| 2370 |
public function is_valid_cldr_timezone_id( $timezone ) {
|
| 2374 |
/**
|
| 2375 |
* Checks if a time zone is a recognised Windows (non-CLDR) time zone
|
| 2376 |
*
|
| 2377 |
+
* @param string $timezone Timezone value.
|
| 2378 |
* @return boolean
|
| 2379 |
*/
|
| 2380 |
public function is_valid_windows_timezone_id( $timezone ) {
|
| 2384 |
/**
|
| 2385 |
* Parses a duration and applies it to a date
|
| 2386 |
*
|
| 2387 |
+
* @param string $date Date string.
|
| 2388 |
+
* @param object $duration Duration value.
|
| 2389 |
+
* @param string $format Format.
|
| 2390 |
+
*
|
| 2391 |
* @return integer|\DateTime
|
| 2392 |
*/
|
| 2393 |
protected function parse_duration( $date, $duration, $format = self::UNIX_FORMAT ) {
|
| 2415 |
/**
|
| 2416 |
* Gets the number of days between a start and end date
|
| 2417 |
*
|
| 2418 |
+
* @param integer $days Number of days.
|
| 2419 |
+
* @param integer $start Start value.
|
| 2420 |
+
* @param integer $end End value.
|
| 2421 |
+
*
|
| 2422 |
* @return integer
|
| 2423 |
*/
|
| 2424 |
protected function number_of_days( $days, $start, $end ) {
|
| 2425 |
+
$w = array( gmdate( 'w', $start ), gmdate( 'w', $end ) );
|
| 2426 |
$base = floor( ( $end - $start ) / self::SECONDS_IN_A_WEEK );
|
| 2427 |
$sum = 0;
|
| 2428 |
|
| 2439 |
* Converts a negative day ordinal to
|
| 2440 |
* its equivalent positive form
|
| 2441 |
*
|
| 2442 |
+
* @param integer $day_number Day number.
|
| 2443 |
+
* @param integer $weekday Weekday value.
|
| 2444 |
+
* @param integer|\DateTime $timestamp Timestamp.
|
| 2445 |
+
*
|
| 2446 |
* @return string
|
| 2447 |
*/
|
| 2448 |
protected function convert_day_ordinal_to_positive( $day_number, $weekday, $timestamp ) {
|
| 2449 |
+
// 0 when no number is defined for BYDAY.
|
| 2450 |
$day_number = empty( $day_number ) ? 1 : intval( $day_number );
|
| 2451 |
|
| 2452 |
$day_ordinals = $this->day_ordinals;
|
| 2465 |
$start = strtotime( 'first day of ' . $timestamp->format( self::DATE_TIME_FORMAT_PRETTY ) );
|
| 2466 |
$end = strtotime( 'last day of ' . $timestamp->format( self::DATE_TIME_FORMAT_PRETTY ) );
|
| 2467 |
|
| 2468 |
+
// Used with pow(2, X) so pow(2, 4) is THURSDAY.
|
| 2469 |
$weekdays = array_flip( array_keys( $this->weekdays ) );
|
| 2470 |
|
| 2471 |
$number_of_days = $this->number_of_days( pow( 2, $weekdays[ $weekday ] ), $start, $end );
|
| 2472 |
|
| 2473 |
+
// Create subset.
|
| 2474 |
$day_ordinals = array_slice( $day_ordinals, 0, $number_of_days, true );
|
| 2475 |
|
| 2476 |
+
// Reverse only the values.
|
| 2477 |
$day_ordinals = array_combine( array_keys( $day_ordinals ), array_reverse( array_values( $day_ordinals ) ) );
|
| 2478 |
|
| 2479 |
return $day_ordinals[ $day_number * -1 ];
|
| 2482 |
/**
|
| 2483 |
* Removes unprintable ASCII and UTF-8 characters
|
| 2484 |
*
|
| 2485 |
+
* @param string $data Data to remove characters from.
|
| 2486 |
+
*
|
| 2487 |
* @return string
|
| 2488 |
*/
|
| 2489 |
protected function remove_unprintable_chars( $data ) {
|
| 2494 |
* Provides a polyfill for PHP 7.2's `mb_chr()`, which is a multibyte safe version of `chr()`.
|
| 2495 |
* Multibyte safe.
|
| 2496 |
*
|
| 2497 |
+
* @param integer $code Value used to determine encoding.
|
| 2498 |
+
*
|
| 2499 |
* @return string
|
| 2500 |
*/
|
| 2501 |
protected function mb_chr( $code ) {
|
| 2502 |
$code %= 0x200000;
|
| 2503 |
if ( function_exists( 'mb_chr' ) ) {
|
| 2504 |
+
return mb_chr( $code ); // phpcs:ignore
|
| 2505 |
} else {
|
| 2506 |
if ( 0x80 > $code ) {
|
| 2507 |
$s = chr( $code );
|
| 2521 |
* Replace all occurrences of the search string with the replacement string.
|
| 2522 |
* Multibyte safe.
|
| 2523 |
*
|
| 2524 |
+
* @param string|array $search Needle to search for.
|
| 2525 |
+
* @param string|array $replace Replace value.
|
| 2526 |
+
* @param string|array $subject Subject text.
|
| 2527 |
+
* @param string $encoding Encoding value.
|
| 2528 |
+
* @param integer $count Index value in the iteration.
|
| 2529 |
+
*
|
| 2530 |
* @return array|string
|
| 2531 |
*/
|
| 2532 |
protected static function mb_str_replace( $search, $replace, $subject, $encoding = null, &$count = 0 ) {
|
| 2533 |
if ( is_array( $subject ) ) {
|
| 2534 |
+
// Call `mb_str_replace()` for each subject in the array, recursively.
|
| 2535 |
foreach ( $subject as $key => $value ) {
|
| 2536 |
$subject[ $key ] = self::mb_str_replace( $search, $replace, $value, $encoding, $count );
|
| 2537 |
}
|
| 2538 |
} else {
|
| 2539 |
+
// Normalize $search and $replace so they are both arrays of the same length.
|
| 2540 |
+
$searches = is_array( $search ) ? array_values( $search ) : array( $search );
|
| 2541 |
+
$replacements = is_array( $replace ) ? array_values( $replace ) : array( $replace );
|
| 2542 |
$replacements = array_pad( $replacements, count( $searches ), '' );
|
| 2543 |
|
| 2544 |
foreach ( $searches as $key => $search ) {
|
| 2550 |
$search_len = mb_strlen( $search, $encoding );
|
| 2551 |
$offset = mb_strpos( $subject, $search, 0, $encoding );
|
| 2552 |
|
| 2553 |
+
$sb = array();
|
| 2554 |
while ( false !== $offset ) {
|
| 2555 |
$sb[] = mb_substr( $subject, 0, $offset, $encoding );
|
| 2556 |
$subject = mb_substr( $subject, $offset + $search_len, null, $encoding );
|
| 2569 |
* Places double-quotes around texts that have characters not permitted
|
| 2570 |
* in parameter-texts, but are permitted in quoted-texts.
|
| 2571 |
*
|
| 2572 |
+
* @param string $candidate_text Candidate text string.
|
| 2573 |
* @return string
|
| 2574 |
*/
|
| 2575 |
protected function escape_param_text( $candidate_text ) {
|
| 2584 |
* Replaces curly quotes and other special characters
|
| 2585 |
* with their standard equivalents
|
| 2586 |
*
|
| 2587 |
+
* @param string $data Data string.
|
| 2588 |
+
*
|
| 2589 |
* @return string
|
| 2590 |
*/
|
| 2591 |
protected function clean_data( $data ) {
|
| 2603 |
"\xe2\x80\xa6" => '...', // …
|
| 2604 |
"\xc2\xa0" => ' ',
|
| 2605 |
);
|
| 2606 |
+
// Replace UTF-8 characters.
|
| 2607 |
$cleaned_data = strtr( $data, $replacement_chars );
|
| 2608 |
|
| 2609 |
+
// Replace Windows-1252 equivalents.
|
| 2610 |
$chars_to_replace = array_map(
|
| 2611 |
function ( $code ) {
|
| 2612 |
return $this->mb_chr( $code );
|
| 2613 |
},
|
| 2614 |
array( 133, 145, 146, 147, 148, 150, 151, 194 )
|
| 2615 |
);
|
| 2616 |
+
|
| 2617 |
+
$cleaned_data = $this->mb_str_replace( $chars_to_replace, $replacement_chars, $cleaned_data );
|
| 2618 |
|
| 2619 |
return $cleaned_data;
|
| 2620 |
}
|
| 2621 |
|
| 2622 |
/**
|
| 2623 |
+
* Parses a list of excluded dates to be applied to an Event
|
| 2624 |
+
*
|
| 2625 |
+
* @param array $event Event array.
|
| 2626 |
*
|
|
|
|
| 2627 |
* @return array
|
| 2628 |
*/
|
| 2629 |
public function parse_ex_dates( array $event ) {
|
| 2653 |
$output[] = new \DateTime( $ical_date, new \DateTimeZone( $current_time_zone ) );
|
| 2654 |
|
| 2655 |
if ( $key === $final_key ) {
|
| 2656 |
+
// Reset to default.
|
| 2657 |
$current_time_zone = $this->default_time_zone;
|
| 2658 |
}
|
| 2659 |
}
|
| 2666 |
/**
|
| 2667 |
* Checks if a date string is a valid date
|
| 2668 |
*
|
| 2669 |
+
* @param string $value Date value.
|
| 2670 |
+
*
|
| 2671 |
* @return boolean
|
| 2672 |
+
*
|
| 2673 |
+
* @throws \Exception Exception thrown on error.
|
| 2674 |
*/
|
| 2675 |
public function is_valid_date( $value ) {
|
| 2676 |
if ( ! $value ) {
|
| 2689 |
/**
|
| 2690 |
* Checks if a filename exists as a file or URL
|
| 2691 |
*
|
| 2692 |
+
* @param string $filename Filename or URL.
|
| 2693 |
+
*
|
| 2694 |
* @return boolean
|
| 2695 |
*/
|
| 2696 |
protected function is_file_or_url( $filename ) {
|
| 2697 |
|
| 2698 |
+
$file_or_url = ( file_exists( $filename ) || filter_var( $filename, FILTER_VALIDATE_URL ) );
|
| 2699 |
+
|
| 2700 |
+
return $file_or_url ? $file_or_url : false;
|
| 2701 |
|
| 2702 |
}
|
| 2703 |
|
| 2704 |
/**
|
| 2705 |
* Reads an entire file or URL into an array
|
| 2706 |
*
|
| 2707 |
+
* @param string $filename The file name.
|
| 2708 |
+
*
|
| 2709 |
* @return array
|
| 2710 |
+
*
|
| 2711 |
+
* @throws \Exception Exception thrown on error.
|
| 2712 |
*/
|
| 2713 |
protected function file_or_url( $filename ) {
|
| 2714 |
$options = array();
|
| 2717 |
$options['http']['header'] = array();
|
| 2718 |
|
| 2719 |
if ( ! empty( $this->http_basic_auth ) ) {
|
| 2720 |
+
$username = $this->http_basic_auth['username'];
|
| 2721 |
+
$password = $this->http_basic_auth['password'];
|
| 2722 |
+
// base64_encode() used to encode auth credentials.
|
| 2723 |
+
$basic_auth = base64_encode( "{$username}:{$password}" ); // phpcs:ignore
|
| 2724 |
|
| 2725 |
array_push( $options['http']['header'], "Authorization: Basic {$basic_auth}" );
|
| 2726 |
}
|
| 2747 |
*
|
| 2748 |
* Falls back to the default time zone if string passed not a recognised time zone.
|
| 2749 |
*
|
| 2750 |
+
* @param string $timezone_string Timezone string.
|
| 2751 |
+
*
|
| 2752 |
* @return \date_timezone
|
| 2753 |
*/
|
| 2754 |
public function timezone_string_to_date_timezone( $timezone_string ) {
|
| 2776 |
/**
|
| 2777 |
* Ensures the recurrence count is enforced against generated recurrence events.
|
| 2778 |
*
|
| 2779 |
+
* @param array $rrules Recurring rules.
|
| 2780 |
+
* @param array $recurrence_events Recurring events array.
|
| 2781 |
+
*
|
| 2782 |
* @return array
|
| 2783 |
*/
|
| 2784 |
protected function trim_to_recurrence_count( array $rrules, array $recurrence_events ) {
|
| 2785 |
if ( isset( $rrules['COUNT'] ) ) {
|
| 2786 |
$recurrence_count = ( intval( $rrules['COUNT'] ) - 1 );
|
| 2787 |
+
$surplus_count = ( count( $recurrence_events ) - $recurrence_count );
|
| 2788 |
|
| 2789 |
if ( $surplus_count > 0 ) {
|
| 2790 |
$recurrence_events = array_slice( $recurrence_events, 0, $recurrence_count );
|
| 2798 |
/**
|
| 2799 |
* Checks if an excluded date matches a given date by reconciling time zones.
|
| 2800 |
*
|
| 2801 |
+
* @param DateTime $exdate Excluded date class.
|
| 2802 |
+
* @param array $an_event Event array.
|
| 2803 |
+
* @param integer $recurring_offset A date with relative parts.
|
| 2804 |
+
*
|
| 2805 |
* @return boolean
|
| 2806 |
*/
|
| 2807 |
protected function is_ex_date_match( $exdate, array $an_event, $recurring_offset ) {
|
| 2808 |
$search_date = $an_event['DTSTART'];
|
| 2809 |
|
| 2810 |
if ( substr( $search_date, -1 ) === 'Z' ) {
|
| 2811 |
+
$timezone = new \DateTimeZone( self::TIME_ZONE_UTC );
|
| 2812 |
} elseif ( isset( $an_event['DTSTART_array'][0]['TZID'] ) ) {
|
| 2813 |
$timezone = $this->timezone_string_to_date_timezone( $an_event['DTSTART_array'][0]['TZID'] );
|
| 2814 |
} else {
|
| 2815 |
+
$timezone = new \DateTimeZone( $this->default_time_zone );
|
| 2816 |
}
|
| 2817 |
|
| 2818 |
$a = new \DateTime( $search_date, $timezone );
|
| 2819 |
$b = $exdate->add( \DateInterval::createFromDateString( $recurring_offset . ' seconds' ) );
|
| 2820 |
|
| 2821 |
+
return $a === $b;
|
| 2822 |
}
|
| 2823 |
}
|
readme.txt
CHANGED
|
@@ -5,7 +5,7 @@ Tags: page builder, Gutenberg blocks, WordPress blocks, gutenberg, blocks
|
|
| 5 |
Requires at least: 5.5
|
| 6 |
Tested up to: 5.9
|
| 7 |
Requires PHP: 5.6
|
| 8 |
-
Stable tag: 2.22.
|
| 9 |
License: GPL-2.0
|
| 10 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
| 11 |
|
|
@@ -112,6 +112,22 @@ Developers can also apply minor style touch-ups to their themes if necessary. If
|
|
| 112 |
|
| 113 |
== Changelog ==
|
| 114 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 115 |
= 2.22.2 / 2022-03-09 =
|
| 116 |
##### Enhancements
|
| 117 |
* Enhance Feature blocks to allow spacer block [#2299](https://github.com/godaddy-wordpress/coblocks/pull/2299)
|
| 5 |
Requires at least: 5.5
|
| 6 |
Tested up to: 5.9
|
| 7 |
Requires PHP: 5.6
|
| 8 |
+
Stable tag: 2.22.4
|
| 9 |
License: GPL-2.0
|
| 10 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
| 11 |
|
| 112 |
|
| 113 |
== Changelog ==
|
| 114 |
|
| 115 |
+
= 2.22.4 / 2022-03-15 =
|
| 116 |
+
##### Bug fixes
|
| 117 |
+
* Fix Form block where nonce is unverified and some sanitization [#2329](https://github.com/godaddy-wordpress/coblocks/pull/2329)
|
| 118 |
+
* Fix Gist block to make sure there is no PHPCS error [#2323](https://github.com/godaddy-wordpress/coblocks/pull/2323)
|
| 119 |
+
* Fix Events block timezone problem [#2319](https://github.com/godaddy-wordpress/coblocks/pull/2319)
|
| 120 |
+
|
| 121 |
+
##### Misc
|
| 122 |
+
* Lint everything on CI [#2311](https://github.com/godaddy-wordpress/coblocks/pull/2311)
|
| 123 |
+
* Update block-assets syntax [#2322](https://github.com/godaddy-wordpress/coblocks/pull/2322)
|
| 124 |
+
* Update some dependencies [#2313](https://github.com/godaddy-wordpress/coblocks/pull/2313)
|
| 125 |
+
* Enhance restore cache to also install missing deps on build pipeline [#2317](https://github.com/godaddy-wordpress/coblocks/pull/2317)
|
| 126 |
+
|
| 127 |
+
= 2.22.3 / 2022-03-10 =
|
| 128 |
+
##### Bug fixes
|
| 129 |
+
* Fix situation where nonce is unverified [#2316](https://github.com/godaddy-wordpress/coblocks/pull/2316)
|
| 130 |
+
|
| 131 |
= 2.22.2 / 2022-03-09 =
|
| 132 |
##### Enhancements
|
| 133 |
* Enhance Feature blocks to allow spacer block [#2299](https://github.com/godaddy-wordpress/coblocks/pull/2299)
|
src/blocks/gist/index.php
CHANGED
|
@@ -76,9 +76,8 @@ function coblocks_block_gist_handler( $matches ) {
|
|
| 76 |
}
|
| 77 |
|
| 78 |
return sprintf(
|
| 79 |
-
|
| 80 |
-
'
|
| 81 |
-
esc_attr( $script_src ),
|
| 82 |
esc_url( $gist_url ),
|
| 83 |
esc_html( __( 'View this gist on GitHub', 'coblocks' ) )
|
| 84 |
);
|
| 76 |
}
|
| 77 |
|
| 78 |
return sprintf(
|
| 79 |
+
'%1$s<noscript><a href="%2$s">%3$s</a></noscript>',
|
| 80 |
+
wp_get_inline_script_tag( null, array( 'src' => esc_url( 'https://gist.github.com/' . $script_src ) ) ),
|
|
|
|
| 81 |
esc_url( $gist_url ),
|
| 82 |
esc_html( __( 'View this gist on GitHub', 'coblocks' ) )
|
| 83 |
);
|
