1/** 2 * wp-components-common.js ï½ 2026ãªãã¥ã¼ã¢ã«ãã¼ã¸å ±éJS 3 * --------------------------------------------------------------------- 4 */ 5(function () { 6 'use strict'; 7 8 /** 9 * FVãã¼ãã¼ç»åã確å®ã«è¡¨ç¤ºããï¼Safari対çï¼ 10 * --------------------------------------------------------------------- 11 * ãã¼ã¸æä¸é¨ã® FV ç»åï¼LCP対象ï¼ããSafari ã§ã確å®ã«è¡¨ç¤ºãããã 12 * 13 * Cocoon ã®é å»¶èªã¿è¾¼ã¿(lozad)ã¯ãç»åã® src ã䏿¦ data-src ã«éé¿ããã 14 * ãã®ç»åãç»é¢å ã«å ¥ã£ãã¿ã¤ãã³ã°ã§ src ã«æ»ãã¦è¡¨ç¤ºããä»çµã¿ã 15 * ã¨ããã FV ç»å㯠PCå¹ (â¥782px)ã§ width:auto ã®ãããsrc ã空ã®ã¾ã¾ã 㨠16 * å¹ ã 0 ã«ãªããSafari ã¯ãå¹ ãé«ãã 0 ã®è¦ç´ ããç»é¢å ã«å ¥ã£ãã¨è¦ãªããã 17 * é å»¶èªã¿è¾¼ã¿ãçºç«ãããªãããã®çµæãsrc ã空ã®ã¾ã¾ï¼data-src ã ããæ®ãï¼ 18 * ã§ç»åãåºãªãã 19 * â» Chrome 㯠0 ãµã¤ãºã§ãçºç«ããããããã®åé¡ã¯èµ·ããªãã 20 * 21 * ã対çã 22 * FV ç»åã¯ããããé å»¶èªã¿è¾¼ã¿ããå¿ è¦ããªãï¼æåããè¦ããä½ç½®ã«ããï¼ã®ã§ã 23 * ããã§ data-src ã src ã«æ»ããlozad ã®çºç«ãå¾ ããã«è¡¨ç¤ºãããã 24 */ 25 function revealFvHeroImage() { 26 var imgs = document.querySelectorAll('.fv__bg-img[data-src]'); 27 for (var i = 0; i < imgs.length; i++) { 28 var img = imgs[i]; 29 var url = img.getAttribute('data-src'); 30 if (!url) continue; 31 if (!img.getAttribute('src')) img.setAttribute('src', url); 32 img.removeAttribute('data-src'); 33 img.classList.remove('lozad', 'lozad-img'); 34 } 35 } 36 if (document.readyState === 'loading') { 37 document.addEventListener('DOMContentLoaded', revealFvHeroImage); 38 } else { 39 revealFvHeroImage(); 40 } 41 42 // ãããã¼ä¸ã«ç¢ºä¿ããä½ç½(px) 43 var GAP = 12; 44 45 // ç´è¿ã«æ¤åºããåºå®ãããã¼è¦ç´ ã®ãã£ãã·ã¥ï¼å ¨è¦ç´ èµ°æ»ã®åæ°ãæå°åï¼ã 46 var _headerEl = null; 47 48 // è¦ç´ ããç»é¢æä¸é¨ã®åºå®ãããã¼ãã®æ¡ä»¶ãæºãããå¤å®ããæºããã°æä¸ç«¯(px)ãè¿ããæºãããªããã° -1ã 49 function headerBottomOf(el) { 50 if (!el || !document.contains(el)) return -1; 51 var cs = window.getComputedStyle(el); 52 if (cs.position !== 'fixed' && cs.position !== 'sticky') return -1; 53 if (cs.visibility === 'hidden' || cs.display === 'none' || parseFloat(cs.opacity) === 0) return -1; 54 var r = el.getBoundingClientRect(); 55 if (r.top <= 2 && r.width >= window.innerWidth * 0.5 && r.height > 4 && r.bottom < window.innerHeight * 0.6) { 56 return r.bottom; 57 } 58 return -1; 59 } 60 61 /** 62 * ç»é¢æä¸é¨ã«åºå®è¡¨ç¤ºããã¦ããè¦ç´ ã®æä¸ç«¯ï¼ï¼è¦åºããé ããé«ãï¼ã宿¸¬ã 63 * ããã©ã¼ãã³ã¹å¯¾çã¨ãã¦ãæ¤åºæ¸ã¿è¦ç´ ããã£ãã·ã¥ããã¾ããããåè©ä¾¡ããã 64 * ç¡å¹ã«ãªã£ã¦ããå ´åã®ã¿å ¨è¦ç´ ãèµ°æ»ãã¦åæ¤åºããï¼ï¼éãèµ°æ»ã¯å®è³ªããæ¯ã«æå¤§1åï¼ã 65 */ 66 function fixedHeaderBottom() { 67 var cached = headerBottomOf(_headerEl); 68 if (cached >= 0) return cached; 69 70 var max = 0; 71 _headerEl = null; 72 var nodes = document.body.getElementsByTagName('*'); 73 for (var i = 0; i < nodes.length; i++) { 74 var b = headerBottomOf(nodes[i]); 75 if (b > max) { max = b; _headerEl = nodes[i]; } 76 } 77 return max; 78 } 79 80 // ã¦ã¼ã¶ã¼æä½ã¨ã¿ãªããã¼ï¼ããããæ¼ããããè£æ£ã䏿¢ãã¦ã¼ã¶ã¼æä½ãåªå ï¼ 81 var SCROLL_KEYS = ['ArrowUp', 'ArrowDown', 'PageUp', 'PageDown', 'Home', 'End', ' ', 'Spacebar']; 82 83 /** 84 * 対象è¦ç´ ã¸ã¹ã¯ãã¼ã«ã 85 * ã¾ãã¹ã ã¼ãºã¹ã¯ãã¼ã«ã§ç§»åãã忢ãã¦ãã宿¸¬ã§çå°ãããè£æ£ããã 86 * ï¼è¿½å¾ãããã¼ã®é«ãå¤åã»ç»åã®é å»¶èªã¿è¾¼ã¿ã«ãããããå¸åï¼ 87 * 88 * éè¦ï¼ 89 * - çå°ï¼è£æ£ä¸è¦ï¼ãããç£è¦ãå¿ ãçµäºããï¼æ»ããç¶ããä¸å ·åã®é²æ¢ï¼ã 90 * - ã¦ã¼ã¶ã¼ãã¹ã¯ãã¼ã«æä½ï¼ãã¤ã¼ã« / ã¿ãã / ã¹ã¯ãã¼ã«ç³»ãã¼ï¼ãããã 91 * ãã®æç¹ã§è£æ£ãå³ä¸æ¢ããã¦ã¼ã¶ã¼æä½ãæåªå ããã 92 * - 念ã®ããæå¤§ 4 ç§ã§ç£è¦ãæã¡åãã 93 * - prefers-reduced-motion æå®æã¯å³æã¹ã¯ãã¼ã«ã 94 */ 95 function scrollToTarget(target) { 96 var reduce = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches; 97 var behavior = reduce ? 'auto' : 'smooth'; 98 99 function targetY() { 100 return Math.max(0, window.pageYOffset + target.getBoundingClientRect().top - fixedHeaderBottom() - GAP); 101 } 102 103 window.scrollTo({ top: targetY(), behavior: behavior }); 104 105 var cancelled = false, last = window.pageYOffset, stable = 0, tries = 0, elapsed
105= 0; 106 var opts = { passive: true }; 107 108 function stop() { 109 if (cancelled) return; 110 cancelled = true; 111 window.clearInterval(id); 112 window.removeEventListener('wheel', onUser, opts); 113 window.removeEventListener('touchstart', onUser, opts); 114 window.removeEventListener('keydown', onUserKey, true); 115 } 116 function onUser() { stop(); } // ãã¤ã¼ã« / ã¿ããï¼ã¦ã¼ã¶ã¼æä½ â è£æ£ä¸æ¢ 117 function onUserKey(e) { if (SCROLL_KEYS.indexOf(e.key) > -1) stop(); } 118 119 window.addEventListener('wheel', onUser, opts); 120 window.addEventListener('touchstart', onUser, opts); 121 window.addEventListener('keydown', onUserKey, true); 122 123 var id = window.setInterval(function () { 124 if (cancelled) return; 125 elapsed += 60; 126 if (elapsed > 4000) { stop(); return; } // å®å ¨å¼ï¼ç¡éç£è¦ã®é²æ¢ï¼ 127 128 var y = window.pageYOffset; 129 var moving = Math.abs(y - last) >= 1; 130 last = y; 131 if (moving) { stable = 0; return; } // ã¾ã ç§»åä¸ï¼ã¹ã ã¼ãºã¹ã¯ãã¼ã«ä¸ï¼ 132 if (++stable < 2) return; // å®å ¨åæ¢ãå¾ ã¤ 133 134 var delta = target.getBoundingClientRect().top - (fixedHeaderBottom() + GAP); 135 if (Math.abs(delta) > 2 && tries < 6) { // çå°ãããå¾®è£æ£ï¼å³æï¼ç®ç«ããªãï¼ 136 tries++; 137 window.scrollBy({ top: delta, behavior: 'auto' }); 138 stable = 0; last = window.pageYOffset; 139 } else { 140 stop(); // çå°å®äº â ç£è¦çµäº 141 } 142 }, 60); 143 } 144 145 /** 146 * ã¯ãªãã¯ããã <a> ããåä¸ãã¼ã¸å ã¢ã³ã«ã¼ããªã対象è¦ç´ ãè¿ãã 147 * å¥ãã¼ã¸ã»å¥ã¯ã¨ãªã»ç©ºããã·ã¥ã¯å¯¾è±¡å¤ã 148 */ 149 function resolveTarget(a) { 150 var href = a.getAttribute('href'); 151 if (!href || href.indexOf('#') < 0) return null; 152 var u; 153 try { 154 u = new URL(a.href, window.location.href); 155 } catch (e) { 156 return null; 157 } 158 if (u.pathname !== window.location.pathname || u.search !== window.location.search) return null; 159 var id = u.hash.slice(1); 160 if (!id) return null; 161 return document.getElementById(id) || document.getElementById(decodeURIComponent(id)); 162 } 163 164 // ã¯ãªãã¯ããã£ããã£æ®µéã§å åããããã¼ãæ¢å®ã®ã¹ã ã¼ãºã¹ã¯ãã¼ã«çããå ã«å¦çã 165 document.addEventListener('click', function (e) { 166 if (e.defaultPrevented || e.button !== 0 || e.metaKey || e.ctrlKey || e.shiftKey || e.altKey) return; 167 var a = e.target.closest ? e.target.closest('a[href]') : null; 168 if (!a) return; 169 var target = resolveTarget(a); 170 if (!target) return; 171 172 e.preventDefault(); 173 e.stopImmediatePropagation(); 174 175 if (window.history && window.history.pushState && target.id) { 176 window.history.pushState(null, '', '#' + target.id); 177 } 178 scrollToTarget(target); 179 }, true); 180 181 // ç´ãªã³ã¯ï¼URL ã« #id ä»ãã§èªã¿è¾¼ã¾ããå ´åï¼ãçå°ãè£æ£ã 182 window.addEventListener('load', function () { 183 var hash = window.location.hash; 184 if (hash && hash.length > 1) { 185 var t = document.getElementById(hash.slice(1)) || 186 document.getElementById(decodeURIComponent(hash.slice(1))); 187 if (t) { 188 window.setTimeout(function () { scrollToTarget(t); }, 100); 189 } 190 } 191 }); 192 193 /** 194 * æ±ç¨ã«ã¼ãã¹ã©ã¤ãã¼ï¼ãã©ãã°/ã¹ã¯ã¤ã + ã»ã°ã¡ã³ãã¿ãã + ä»»æã§ç¢å°ã»ã«ã¼ãï¼ 195 * --------------------------------------------------------------------- 196 * TOP / ãã² ãªã©è¤æ°ãã¼ã¸ã® FLOWã»COLUMNã»PLANS ã¹ã©ã¤ãã¼ã§å ±ç¨ã 197 * step 㯠DOM ã®å®ã«ã¼ãå¹ + gap ããé½åº¦è¨ç®ããã®ã§ãPC/SP ã® vw åæ¿ã«ã追å¾ããã 198 * window.initCardSlider ã¨ãã¦å ¬éããåãã¼ã¸ã® script.js ããåæåããã 199 */ 200 function initCardSlider(opts) { 201 var slider = document.querySelector(opts.slider); 202 var cards = document.querySelector(opts.cards); 203 var segments = document.querySelectorAll(opts.segments); 204 if (!slider || !cards || segments.length === 0) return; 205 206 var ACTIVE = opts.activeClass; 207 var TRACK = opts.track; 208 var MAX_INDEX = segments.length - 1; 209 var currentIndex = 0; 210 var pointerDown = false;
211 var isDragging = false; 212 var didDrag = false; 213 var startX = 0; 214 var startY = 0; 215 var baseTranslate = 0; 216 var lockDir = null; // null | 'h' | 'v' 217 218 function getStep() { 219 var firstCard = cards.children[0]; 220 if (!firstCard) return opts.step || 490; 221 var cs = getComputedStyle(cards); 222 var gap = parseFloat(cs.gap || cs.columnGap || '0'); 223 return firstCard.getBoundingClientRect().width + gap; 224 } 225 226 // åæè¡¨ç¤ºææ°ãCSS ã® --colsï¼PC=3 / â¤1050=1ï¼ããåå¾ãæªæå®ã¯1 227 function getCols() { 228 var v = parseInt(getComputedStyle(slider).getPropertyValue('--cols'), 10); 229 return (v && v > 0) ? v : 1; 230 } 231 232 // å³ç«¯ã®åæ¢ä½ç½® = ã«ã¼ãç·æ° â è¡¨ç¤ºææ°ï¼æå¾ã®ã«ã¼ãã¾ã§è¡¨ç¤ºããã£ãä½ç½®ã§æ¢ããï¼ 233 function getMaxIndex() { 234 var total = cards.children.length; 235 if (!total) return MAX_INDEX; 236 return Math.max(0, total - getCols()); 237 } 238 239 // å é ã«ã¼ããã¹ã©ã¤ãã¼å·¦ç«¯ï¼è¦åºã左端ï¼ã«æãããããä¸å¤®å¯ãã¯ãã常ã«å·¦å¯ãï¼gutter 0ï¼ 240 function getGutter() { 241 return 0; 242 } 243 244 // allowWrap=trueï¼ç¢å°ã»ãã©ãã°ï¼: 端ã§ã«ã¼ããfalseï¼ãããã»ãªãµã¤ãºï¼: 端ã§ã¯ã©ã³ã 245 function setIndex(i, allowWrap) { 246 var maxIdx = opts.loop ? getMaxIndex() : MAX_INDEX; 247 if (opts.loop && allowWrap) { 248 var count = maxIdx + 1; 249 currentIndex = ((i % count) + count) % count; 250 } else { 251 currentIndex = Math.max(0, Math.min(maxIdx, i)); 252 } 253 // loopï¼=ä¸å¤®å¯ã対象ï¼ã¯ gutter ãè¶³ãã¦å¸¸ã«ä¸å¤®ããã以å¤ã¯å¾æ¥ã©ããå·¦åºæº 254 var offset = opts.loop ? getGutter() : 0; 255 var tx = offset - currentIndex * getStep(); 256 257 // alignEdges æå®æï¼FLOWï¼ï¼ 258 // ã»å é ã«ã¼ããã¹ã©ã¤ãã¼å·¦ç«¯ï¼è¦åºãã©ã¤ã³ï¼ã«ãããã 259 // ã»æ«å°¾ã«ã¼ããã¹ã©ã¤ãã¼å³ç«¯ãè¶ããªãä½ç½®ã§ã¯ã©ã³ãï¼å³å´ã®ç©ºç½ï¼åæ¢ä½ç½®ãºã¬ãé²ãï¼ 260 // 宿¸¬å¤ããé½åº¦è¨ç®ãããããPC/SP ã®å¹ å¤åã«ã追å¾ããã 261 if (opts.alignEdges && cards.children.length) { 262 var sr = slider.getBoundingClientRect(); 263 // ç¾å¨é©ç¨æ¸ã¿ã® translateX ãåå¾ï¼ã¢ãã¡éä¸ã§ã tx=0 åºæºã®å®æ¸¬ã«ä½¿ããï¼ 264 var curTx = 0; 265 var cm = window.getComputedStyle(cards).transform; 266 if (cm && cm !== 'none') { 267 var cmm = cm.match(/matrix.*\((.+)\)/); 268 if (cmm) { var cv = cmm[1].split(',').map(parseFloat); curTx = cv.length === 6 ? cv[4] : cv[12]; } 269 } 270 var firstEl = cards.children[0]; 271 var lastEl = cards.children[cards.children.length - 1]; 272 var firstLeft0 = firstEl.getBoundingClientRect().left - curTx; // translateX=0 ã®ã¨ãã®å é å·¦ 273 var lastRight0 = lastEl.getBoundingClientRect().right - curTx; // translateX=0 ã®ã¨ãã®æ«å°¾å³ 274 var startOffset = sr.left - firstLeft0; // å é ãã¹ã©ã¤ãã¼å·¦ç«¯ã¸ããããè£æ£ 275 // ãã«ããªã¼ãå¹ ï¼ã¹ã©ã¤ãã¼ãç»é¢ç«¯ã¾ã§åºããå·¦ã«ä½ç½ãç¡ãï¼ã¿ãã¬ãã/SPçï¼ã§ã¯ã 276 // 左端ãããã ã¨ã«ã¼ããç»é¢ç«¯ã«å¼µãä»ãå·¦ã®ã«ã¼ããåãã¦è¦ããã 277 // ãã®å ´åã¯è£æ£ãããCSS ãä¸ããèªç¶ãªå·¦ã¤ã³ã»ãããå°éããã 278 if (sr.left < 10) startOffset = 0; 279 if (startOffset > 0) startOffset = 0; // å é ãå³ã¸ããããã¨ã¯ããªãï¼è©°ããæ¹åã®ã¿ï¼ 280 var minTx = sr.right - lastRight0; // æ«å°¾ãå³ç«¯ã«ããããä¸éï¼æãå·¦ã«åãããéï¼ 281 if (minTx > 0) minTx = 0; // å ¨ã«ã¼ããç»é¢å ã«åã¾ãå ´åã¯åãããªã 282 tx = startOffset - currentIndex * getStep(); 283 if (tx < minTx) tx = minTx; // å³ç«¯ãè¶ãã¦ã®ã¹ã¯ãã¼ã«ãç¦æ¢ 284 } 285 286 cards.style.transform = 'translateX(' + tx + 'px)';
287 segments.forEach(function (s, idx) { 288 // ã«ã¼ãæã¯ã忢ä½ç½®ã®æ°ï¼maxIdx+1ï¼ãã ããããã表示ããä½ãã¯é ãï¼PC=3å / SP=5åï¼ 289 if (opts.loop) s.style.display = (idx <= maxIdx) ? '' : 'none'; 290 s.classList.toggle(ACTIVE, idx === currentIndex); 291 }); 292 } 293 294 segments.forEach(function (s, idx) { 295 s.addEventListener('click', function () { setIndex(idx, false); }); 296 }); 297 298 // å·¦å³ç¢å°ãã¿ã³ï¼ãªãã·ã§ã³ï¼ 299 // pointerdown ãæ¢ã㦠slider ã®ãã©ãã°ãã³ãã©ã«æ¨ªåããããªãããã«ãã 300 if (opts.prev) { 301 document.querySelectorAll(opts.prev).forEach(function (btn) { 302 btn.addEventListener('pointerdown', function (e) { e.stopPropagation(); }); 303 btn.addEventListener('click', function (e) { e.stopPropagation(); setIndex(currentIndex - 1, true); }); 304 }); 305 } 306 if (opts.next) { 307 document.querySelectorAll(opts.next).forEach(function (btn) { 308 btn.addEventListener('pointerdown', function (e) { e.stopPropagation(); }); 309 btn.addEventListener('click', function (e) { e.stopPropagation(); setIndex(currentIndex + 1, true); }); 310 }); 311 } 312 313 slider.addEventListener('pointerdown', function (e) { 314 if (TRACK && e.target.closest(TRACK)) return; 315 pointerDown = true; 316 isDragging = false; 317 didDrag = false; 318 lockDir = null; 319 startX = e.clientX; 320 startY = e.clientY; 321 // ç¾å¨ã®transformããå®éã®ä½ç½®ãåå¾ï¼ã¢ãã¡éä¸ã§åãã©ãã°ããæã®ã¸ã£ã³ããé²ãï¼ 322 var cs = window.getComputedStyle(cards); 323 var m = cs.transform; 324 if (m && m !== 'none') { 325 var match = m.match(/matrix.*\((.+)\)/); 326 if (match) { 327 var values = match[1].split(',').map(parseFloat); 328 baseTranslate = values.length === 6 ? values[4] : values[12]; 329 } else { 330 baseTranslate = -currentIndex * getStep(); 331 } 332 } else { 333 baseTranslate = -currentIndex * getStep(); 334 } 335 // æ¹åããã¯ç¢ºå®ã¾ã§ã¯ is-dragging ããã¤ã³ã¿ãã£ããã£ãã¾ã ä»ããªã 336 }); 337 338 slider.addEventListener('pointermove', function (e) { 339 if (!pointerDown) return; 340 var dx = e.clientX - startX; 341 var dy = e.clientY - startY; 342 343 // æ¹åããã¯å¤å®ï¼æåã®æ°pxã§æ¨ªåªä½ã縦åªä½ã決ããï¼ 344 if (lockDir === null) { 345 var absDx = Math.abs(dx); 346 var absDy = Math.abs(dy); 347 if (absDx < 6 && absDy < 6) return; // å¾®å°ãªæºãã¯å¾ 㤠348 if (absDx > absDy) { 349 lockDir = 'h'; 350 isDragging = true; 351 cards.classList.add('is-dragging'); 352 try { slider.setPointerCapture(e.pointerId); } catch (_) { } 353 } else { 354 lockDir = 'v'; 355 pointerDown = false; // 縦ã¯ãã©ã¦ã¶ã«ä»»ãããJSã¯éãã 356 return; 357 } 358 } 359 360 if (lockDir === 'h') { 361 if (Math.abs(dx) > 4) didDrag = true; 362 cards.style.transform = 'translateX(' + (baseTranslate + dx) + 'px)'; 363 } 364 }); 365 366 // 横ããã¯ä¸ã¯ãã©ã¦ã¶ã®ããã©ã«ã縦ã¹ã¯ãã¼ã«ãæå¶ 367 slider.addEventListener('touchmove', function (e) { 368 if (lockDir === 'h' && e.cancelable) e.preventDefault(); 369 }, { passive: false }); 370 371 function endDrag(e) { 372 if (!pointerDown && !isDragging) return; 373 pointerDown = false; 374 if (!isDragging) { lockDir = null; return; } 375 isDragging = false; 376 lockDir = null; 377 cards.classList.remove('is-dragging'); 378 var dx = e.clientX - startX; 379 var moved = Math.round(-dx / (getStep() * 0.4)); 380 setIndex(currentIndex + moved, true); 381 } 382 383 slider.addEventListener('pointerup', endDrag); 384 slider.addEventListener('pointercancel', endDrag); 385 386 // ãã©ãã°å¾ã®æå³ããªãã¯ãªãã¯æå¶ 387 slider.addEventListener('click', function (e) { 388 if (didDrag) { e.preventDefault(); e.stopPropagation(); didDrag = false; } 389 }, true); 390 391 // ãã¥ã¼ãã¼ãå¤åï¼PC â SPï¼ã§ãç¾å¨ä½ç½®ãåè¨ç® 392 window.addEventListener('resize', function () { setIndex(currentIndex, false); }); 393 394 // åæä½ç½®ã確å®ï¼ä¸å¤®å¯ã offsetã»ããã表示æ°ãååããåæ ï¼ 395 setIndex(0, false); 396 } 397 398 // åãã¼ã¸ã® script.js ããå¼ã¹ãããã«ã°ãã¼ãã«å ¬é 399 window.initCardSlider = initCardSlider; 400})();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.