PageSourceSearch

https://www.t-i-forum.co.jp/js/common.js

js t-i-forum.co.jp collected 2026-10-02 05:38:54 UTC 24,851 bytes, 691 lines download raw bytes

1'use strict';
2
3function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
4
5function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
6
7function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
8
9function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
10
11(function (global, $) {
12  var Util = global.Util || {};
13  /* ------------------------------
14  *  Object-fit fix
15  ------------------------------ */
16
17  var objectFitFix = function objectFitFix() {
18    var $target = $('.c-img--ratioFix').find('img');
19    $target = $target.add($('.c-img--ratioFixSquare').find('img'));
20    $target = $target.add($('.c-G_gallery').find('img'));
21    $target = $target.add($('.c-G_gallery-v2').find('img'));
22
23    if ('objectFit' in document.documentElement.style === false) {
24      if ($target.length) objectFitImages($target, {
25        watchMQ: true
26      });
27    }
28  };
29  /* ------------------------------
30  *  telephone unwrapper
31  ------------------------------ */
32
33
34  var telephoneUnwrapper = function telephoneUnwrapper() {
35    var $target = $('a[href*="tel:"]');
36
37    if (!Util.isMobile) {
38      $target.each(function () {
39        var $this = $(this);
40        $this.replaceWith('<span>' + $this.text() + '</span>');
41      });
42    }
43  };
44  /* ------------------------------
45  *  page scroller
46  ------------------------------ */
47
48
49  var pageScroller = function pageScroller() {
50    var $target = $('a[href^="#"]');
51    $target.each(function () {
52      var $this = $(this);
53      $this.on('click', function (e) {
54        e.preventDefault();
55        var headerOffset = 0;
56        var dest = $(this).attr('href');
57        var $dest;
58        var _offset = 0; //ヘッダーの高さ + 余白
59        // let $dest = $(dest === "#" || dest === "" ? 'html' : dest);
60
61        if (dest === "#" || dest === "") {
62          $dest = $('html'); // _offset = 0;
63        } else {
64          $dest = $(dest); // _offset = 0;
65        }
66
67        $dest.velocity('scroll', {
68          duration: 700,
69          easing: 'ease',
70          offset: _offset
71        });
72      });
73    });
74  };
75  /* ------------------------------
76  *  absolute position
77  ------------------------------ */
78
79
80  var absolutePosition = function absolutePosition() {
81    var $target = $('.js-absolute-position');
82    $target.each(function () {
83      var $this = $(this);
84      var $parent = $this.parent();
85      var style = {};
86      if ($this.css('position') !== 'absolute') $this.css('position', 'absolute');
87      if ($parent.css('position') !== 'relative') $parent.css('position', 'relative');
88      style['top'] = $this.attr('data-top') || 'auto';
89      style['left'] = $this.attr('data-left') || 'auto';
90      style['bottom'] = $this.attr('data-bottom') || 'auto';
91      style['right'] = $this.attr('data-right') || 'auto';
92      $this.css(style);
93    });
94  };
95  /* ------------------------------
96  *  image protector
97  ------------------------------ */
98
99
100  var imageProtector = function imageProtector() {
101    var $target = $('.c-img--protected'); // モーダル内の要素にバインディングできないため、あえて属性値として設定
102
103    $target.each(function () {
104      this.setAttribute('oncontextmenu', 'return false');
105    });
106  };
107  /* ------------------------------
108  *  header gnav
109  ------------------------------ */
110
111
112  var GlobalNav = /*#__PURE__*/function () {
113    function GlobalNav() {
114      _classCallCheck(this, GlobalNav);
115
116      this._click;
117      this.init();
118    }
119
120    _createClass(GlobalNav, [{
121      key: "init",
122      value: function init() {
123        var scope = this;
124        scope.setClickOrTap();
125        scope.scrollMonitoring();
126        scope.setDrawerNav();
127        scope.makeAccessible();
128      }
129    }, {
130      key: "makeAccessible",
131      value: function makeAccessible() {
132        var scope = this;
133        var $targetParent = $('.l-gnav__lists:visible');
134        var $target = $targetParent.children('li');
135        var $targetPanes = $target.find('.js-drawer__pane');
136        var isDrawerEnable = Util.isMobile && window.innerWidth < Util.breakpoint;
137
138        if ($target.length) {
139          if (!isDrawerEnable) {
140            $targetPanes.attr('aria-hidden', 'true');
141            $target.each(function () {
142              var $this = $(this);
143              $this.find('a').on('focus', function (e) {
144                var $pane = $(this).siblings('.js-drawer__pane');
145                $targetPanes.filter('[aria-hidden="false"]').attr('aria-hidden', 'true');
146                $target.filter('.is-focus').removeClass('is-focus');
147                $this.addClass('is-focus');
148                $pane.attr('aria-hidden', 'false');
149              }).on('blur', function () {
150                $target.filter('.is-focus').removeClass('is-focus');
151              });
152            });
153            $targetPanes.each(function () {
154              var $this = $(this);
155              $this.find('a').on('focus', function () {
156                $this.attr('aria-hidden', 'false');
157              });
158            });
159          }
160        }
161      }
162    }, {
163      key: "setClickOrTap",
164      value: function setClickOrTap() {
165        var scope = this; // scope._click = (window.ontouchstart === undefined) ? 'click' : 'touchstart';
166
167        scope._click = 'click';
168      }
169    }, {
170      key: "setDrawerNav",
171      value: function setDrawerNav() {
172        var scope = this;
173        var drawer_nav_tgt = $('.js-drawer'); //ドロワー
174
175        var drawer_btn = $('.js-drawer__btn'); //ドロワー開閉ボタン
176
177        var drawer_mask = $('.js-drawer__mask'); //背景
178
179        var drawer_stepper = $('.js-drawer__stepper'); //進むボタン
180
181        var drawer_returner = $('.js-drawer__returner').find('a'); //戻るボタン
182
183        var drawer_pane = $('.js-drawer__pane'); //ペイン
184
185        var drawer_closer = $('.js-drawer__closer'); //閉じるボタン
186
187        var root = $('html');
188        var body = $('body');
189        var isDrawerEnable = Util.isMobile && window.innerWidth < Util.breakpoint;
190        var pos = 0;
191        var isOpen = false;
192        var currentLevel = 0;
193        var local_timer = false; //リサイズイベント用(このブロック内のみ)
194
195        var __close = function __close(e) {
196          //if (/result\.html/.test(location.href)) e.preventDefault();
197          if (root.hasClass('is-fixed')) {
198            root.removeClass('is-fixed');
199            body.css('top', '');
200            drawer_nav_tgt.removeClass('is-inview is-fixed').attr('aria-hidden', 'true');
201            drawer_mask.removeClass('is-inview is-fade');
202            drawer_btn.removeClass('is-inview').attr('aria-expanded', 'false');
203            drawer_pane.removeClass('is-inview');
204            drawer_closer.removeClass('is-inview');
205            $(window).scrollTop(pos);
206            isOpen = false;
207          }
208        };
209
210        var __open = function __open(e) {
211          pos = $(window).scrollTop();
212          root.addClass('is-fixed');
213          body.css('top', -pos + 'px');
214          drawer_nav_tgt.addClass('is-inview').attr('aria-hidden', 'false');
215          drawer_mask.addClass('is-inview');
216          drawer_btn.addClass('is-inview').attr('aria-expanded', 'true');
217          setTimeout(function () {
218            drawer_mask.addClass('is-fade').on('transitionend', function () {
219              drawer_mask.off('transitionend');
220              drawer_closer.addClass('is-inview');
221              isOpen = true;
222            });
223          }, 100); //▼▼▼
224        };
225
226        var init = function init() {
227          isDrawerEnable = Util.isMobile && window.innerWidth < Util.breakpoint;
228          drawer_pane.attr('aria-hidden', 'true');
229          drawer_nav_tgt.attr('aria-hidden', 'true');
230          drawer_btn.attr('aria-expanded', 'false').attr('href', 'javascript:void(0)');
231          drawer_closer.attr('href', 'javascript:void(0)');
232          drawer_stepper.attr('href', 'javascript:void(0)');
233          drawer_returner.attr('href', 'javascript:void(0)');
234
235          if (isDrawerEnable) {
236            drawer_nav_tgt.height(window.innerHeight - 60);
237          } // on toggle click
238
239
240          drawer_btn.on('click', function (e) {
241            e.preventDefault();
242            var f = isOpen ? __close : __open;
243            f.call(this); //▼▼▼
244          }); // on primary category click
245
246          drawer_stepper.on('click', function (e) {
247            var currentPane = $(this).closest('.js-drawer__pane');
248            var nextPane = $(this).next('.js-drawer__pane');
249
250            if (isDrawerEnable && nextPane.length) {
251              e.preventDefault();
252              currentLevel += 1;
253              currentPane.scrollTop(0).addClass('is-fixed');
254              nextPane.height(window.innerHeight);
255              nextPane.addClass('is-inview').attr('aria-hidden', 'false');
256
257              if (currentLevel > 0) {
258                //スクロール位置リセット
259                drawer_nav_tgt.scrollTop(0);
260                drawer_nav_tgt.addClass('is-fixed');
261              }
262            }
263          }); // on subcategory header click
264
265          drawer_returner.on('click', function (e) {
266            if (isDrawerEnable) {
267              e.preventDefault();
268              var currentPane = $(this).closest('.js-drawer__pane');
269              var prevPane = currentPane.parent().closest('.js-drawer__pane');
270              prevPane.removeClass('is-fixed');
271              currentPane.removeClass('is-inview').attr('aria-hidden', 'true');
272              currentLevel -= 1;
273              if (currentLevel == 0) drawer_nav_tgt.removeClass('is-fixed');
274            }
275          }); // close
276
277          drawer_mask.on(scope._click, __close);
278          drawer_closer.on(scope._click, __close);
279          drawer_nav_tgt.find('.mf_finder_searchBox').find('button[type="submit"]').on('click', function () {
280            if (/result\.html/.test(location.href)) {
281              root.removeClass('is-fixed');
282              body.css('top', '');
283              drawer_nav_tgt.removeClass('is-inview is-fixed').attr('aria-hidden', 'true');
284              drawer_mask.removeClass('is-inview is-fade');
285              drawer_btn.removeClass('is-inview').attr('aria-expanded', 'false');
286              drawer_pane.removeClass('is-inview');
287              drawer_closer.removeClass('is-inview');
288              isOpen = false;
289            }
290          }); // on resize
291
292          window.addEventListener("resize", function () {
293            if (local_timer !== false) clearTimeout(local_timer);
294            local_timer = setTimeout(function () {
295              //リサイズ後の処理
296              isDrawerEnable = Util.isMobile && window.innerWidth < Util.breakpoint;
297
298              if (isDrawerEnable) {
299                drawer_pane.filter('.is-inview').height(window.innerHeight);
300                drawer_nav_tgt.height(window.innerHeight - 60);
301              } else {
302                drawer_nav_tgt.height('auto');
303                drawer_pane.height('auto').removeClass('is-fixed').removeClass('is-inview');
304
305                __close();
306              }
307            }, 200);
308          });
309        };
310
311        init();
312      }
313    }, {
314      key: "scrollMonitoring",
315      value: function scrollMonitoring() {
316        var _header = $('.js-header');
317
318        var _headerHeight = _header.height(); // console.log(_headerHeight);
319
320
321        var __monitor = function __monitor() {
322          var _windowTop = $(window).scrollTop();
323
324          if (_headerHeight < _windowTop) {
325            _header.addClass('is-scroll'); // console.log('scroll');
326
327          } else {
328            _header.removeClass('is-scroll'); // console.log('Not scroll');
329
330          }
331        };
332
333        window.addEventListener("scroll", __monitor);
334        window.addEventListener("resize", function () {
335          _headerHeight = _header.height();
336        });
337        setTimeout(__monitor, 0);
338      }
339    }]);
340
341    return GlobalNav;
342  }();
343  /* ------------------------------
344  *  footer menu toggle
345  ------------------------------ */
346
347
348  var footerMenuToggle = function footerMenuToggle() {
349    var $target = $('.js-footer-gnav');
350    var $toggleButton = $target.find('.js-footer-gnav__button');
351    var $navContents = $target.find('.js-footer-gnav__contents');
352    var toggleSpeed = 300;
353    var isOpen = true;
354
355    if ($target.length) {
356      $navContents.hide();
357      $navContents.attr('aria-hidden', 'true');
358      $toggleButton.attr('aria-expanded', 'false');
359      isOpen = false;
360      $toggleButton.on('click', function (e) {
361        e.preventDefault();
362        $target.toggleClass('is-active');
363        $navContents.slideToggle(toggleSpeed);
364
365        if (!isOpen) {
366          isOpen = true;
367          $navContents.attr('aria-hidden', 'false');
368          $toggleButton.attr('aria-expanded', 'true');
369        } else {
370          isOpen = false;
371          $navContents.attr('aria-hidden', 'true');
372          $toggleButton.attr('aria-expanded', 'false');
373        }
374      });
375    }
376  };
377  /* ------------------------------
378  *  video controller
379  ------------------------------ */
380
381
382  var VideoController = /*#__PURE__*/function () {
383    function VideoController() {
384      _classCallCheck(this, VideoController);
385
386      this.currentUA = Util.viewport; //開始時UA取得
387
388      this.$videoWrap = $('.js-video');
389      this.$clickAreaPC = this.$videoWrap.find('.js-video__link--pc'); // this.$clickAreaSP = this.$videoWrap.find('.js-video__link--sp');
390
391      this.video;
392      this.$videoButton = {};
393      this.videoStatus = false; //true:再生中,false:停止中
394
395      this.$modal = $('.js-videoModal');
396      this.resizeTimer = false;
397      this.resizeInterval = 200;
398      this.init();
399    }
400
401    _createClass(VideoController, [{
402      key: "init",
403      value: function init() {
404        var scope = this;
405
406        if (scope.$videoWrap.length) {
407          //要素取得
408          scope.video = scope.$clickAreaPC.find('video')[0]; //videoタグ取得
409
410          scope.$videoButton.play = scope.$clickAreaPC.find('.js-video__play'); //再生ボタン取得
411
412          scope.$videoButton.pause = scope.$clickAreaPC.find('.js-video__pause'); //再生ボタン取得
413          // scope.videoSP = scope.$clickAreaSP.find('video')[0]; //videoタグ取得
414          //関数設定
415
416          scope.setModal(); // on リンクエリア押下時の処理
417
418          scope.$clickAreaPC.on('click', function (e) {
419            e.preventDefault();
420
421            if (!Util.isMobile) {
422              //PCなら
423              if (scope.videoStatus) {
424                //再生時
425                scope.pauseVideoPC();
426              } else {
427                //停止時
428                scope.playVideoPC();
429              }
430            } // else {
431            //SPなら
432            //}
433
434          }); // on 動画再生終了時の処理
435          // 	if PCなら ※リンクエリア(子要素に再生・停止ボタン)
436          // 		→リンクエリアのclass(再生・停止ボタン表示切り替え用)切り替え
437          // on 動画押下時の処理
438          // 	if SPなら ※リンクエリア(子要素にサムネイル画像)
439          // 		→動画再生
440          // →モーダル設定
441          // 	→モーダル開く要素取得
442          // 	→モーダル閉じる要素取得
443          // 		→モーダル閉じる時の処理
444          // 			→動画を停止状態に
445
446          $(window).on('load', scope.onLoad.bind(scope));
447          $(window).on('resize', scope.onResize.bind(scope));
448        }
449      } //ビデオ再生処理(PC)
450
451    }, {
452      key: "playVideoPC",
453      value: function playVideoPC() {
454        var scope = this; //ビデオ再生
455
456        scope.videoStatus = true;
457        scope.video.play(); //ボタン表示切替
458
459        scope.$videoButton.play.attr('aria-hidden', 'true');
460        scope.$videoButton.pause.attr('aria-hidden', '');
461      } //ビデオ停止処理(PC)
462
463    }, {
464      key: "pauseVideoPC",
465      value: function pauseVideoPC() {
466        var scope = this; //ビデオ停止
467
468        scope.videoStatus = false;
469        scope.video.pause(); //ボタン表示切替
470
471        scope.$videoButton.play.attr('aria-hidden', '');
472        scope.$videoButton.pause.attr('aria-hidden', 'true');
473      } //ビデオ再生時(SP)
474
475    }, {
476      key: "playVideoSP",
477      value: function playVideoSP() {
478        var scope = this;
479      } //ビデオ停止時(SP)
480
481    }, {
482      key: "pauseVideoSP",
483      value: function pauseVideoSP() {
484        var scope = this;
485      }
486    }, {
487      key: "setModal",
488      value: function setModal() {
489        var scope = this;
490        var _videoSP = []; //各モーダル初期化
491
492        $('.js-videoModal').each(function (i) {
493          var _$$iziModal;
494
495          // console.log(i);
496          // _videoSP[i] = $(this).find('video')[0]; //videoタグ取得
497          // console.log(_videoSP[i]);
498          // console.log($(this).find('.c-videoModal__body').length);
499          // $(this).find('.c-videoModal__body').on('touchstart click',function(){
500          // 	console.log('click');
501          // });
502          $(this).removeClass('is-hide');
503
504          var _group = $(this).find('.js-videoModal__content').attr('data-modal-group');
505
506          var _buttnNextContent = $(this).next('.js-videoModal');
507
508          $('.js-videoModal__content').iziModal((_$$iziModal = {
509            headerColor: "rgba(255,255,255,0)",
510            background: "rgba(255,255,255,0)",
511            width: "100%",
512            bodyOverflow: true,
513            loop: true,
514            focusInput: true,
515            navigateCaption: false,
516            navigateArrows: false
517          }, _defineProperty(_$$iziModal, "bodyOverflow", true), _defineProperty(_$$iziModal, "overlayColor", "rgba(0, 0, 0, 0.5)"), _defineProperty(_$$iziModal, "transitionIn", "fadeInUp"), _defineProperty(_$$iziModal, "transitionOut", "fadeOutDown"), _defineProperty(_$$iziModal, "appendTo", _buttnNextContent), _defineProperty(_$$iziModal, "appendToOverlay", $('.l-main')), _defineProperty(_$$iziModal, "onOpened", function onOpened() {
518            video = document.getElementById('videoSP');
519            $videoButton.addClass('is-play').removeClass('is-pause');
520            video.play();
521          }), _defineProperty(_$$iziModal, "onClosing", function onClosing() {
522            video = document.getElementById('videoSP');
523            $videoButton.addClass('is-pause').removeClass('is-play');
524            video.pause();
525            video.currentTime = 0;
526          }), _$$iziModal));
527        });
528        var _lastFocusButton = "";
529        var video = document.getElementById('videoSP');
530        var $videoButton = $(video);
531        $videoButton.on('click', function () {
532          var $this = $(this);
533
534          if ($this.hasClass('is-play')) {
535            //再生中→停止
536            // console.log('pause');
537            $this.addClass('is-pause').removeClass('is-play'); // $playButton.attr('aria-hidden','');
538            // $pauseButton.attr('aria-hidden','true');
539
540            video.pause();
541          } else {
542            //停止→再生中
543            // console.log('play');
544            $this.addClass('is-play').removeClass('is-pause'); // $playButton.attr('aria-hidden','true');
545            // $pauseButton.attr('aria-hidden','');
546
547            video.play();
548          }
549        });
550        $(document).on('click', '.iziModal-overlay', function (e) {
551          $('.js-videoModal').iziModal('close');
552        }); //clickしたボタンに応じたモーダルを開く
553
554        $(document).on('click', '[data-izimodal-open]', function (e) {
555          e.preventDefault();
556          $(this).blur();
557          _lastFocusButton = $(this); // ダミーの背景を生成
558
559          $('body').append('<div class="iziModal-overlay-dummy"></div>');
560          $('.iziModal-overlay-dummy').ready(function () {
561            $('.iziModal-overlay-dummy').addClass('is-ready');
562          });
563        }); //フォーカスをモーダルコンテンツにあてる
564
565        $(document).on('opening', '.js-videoModal__content', function (e) {
566          $('.iziModal').scrollTop(0);
567          var $currentModal = $(e.currentTarget);
568          var $img = $currentModal.find('img');
569          var $counter = $currentModal.find('.iziModal-counter');
570          var modalGroup = $currentModal.attr('data-izimodal-group'); // if (modalGroup && $counter.length) {
571          // 	let $modalGroup = $('[data-izimodal-group="' + modalGroup + '"]');
572          // 	let currentIndex = $modalGroup.index($currentModal);
573          // 	let count = (currentIndex+1) + '/' + $modalGroup.length;
574          // 	$counter.html(count);
575          // }
576
577          if ($img.length) {
578            $img.each(function () {
579              var $this = $(this);
580
581              if ($this.hasClass('js-lazy') && !$this.hasClass('is-ready')) {
582                Util.lazyload.call($this, function () {
583                  objectFitImages($this, {
584                    watchMQ: true
585                  });
586                });
587              } else {
588                objectFitImages($this, {
589                  watchMQ: true
590                });
591              }
592            });
593          }
594        }); //フォーカスを戻す
595
596        $(document).on('closed', '.js-videoModal__content', function (e) {
597          _lastFocusButton.focus(); //scope.unlock();
598
599        }); // 閉じるボタンを押下時にダミーの背景も削除
600
601        $(document).on('click', '[data-izimodal-close]', function (e) {
602          e.preventDefault();
603          $('.iziModal-overlay-dummy').remove();
604        }); // ESCキーを押下時にダミーの背景も削除
605
606        $(document).on('keydown', function (e) {
607          if (e.keyCode === 27) {
608            $('.iziModal-overlay-dummy').remove();
609
610            _lastFocusButton.focus();
611          }
612        }); // scope.setVideoControl();
613      }
614    }, {
615      key: "onLoad",
616      value: function onLoad() {
617        var scope = this; // if (Util.viewport !== 'mobile') {
618
619        if (!Util.isMobile) {
620          scope.playVideoPC(); // console.log(Util.viewport,'再生');
621
622          scope.video.addEventListener('ended', function () {
623            scope.videoStatus = false; //ボタン表示切替
624
625            scope.$videoButton.play.attr('aria-hidden', '');
626            scope.$videoButton.pause.attr('aria-hidden', 'true');
627          });
628        }
629      }
630    }, {
631      key: "onResize",
632      value: function onResize() {
633        var scope = this;
634        if (scope.resizeTimer !== false) clearTimeout(scope.resizeTimer);
635        scope.resizeTimer = setTimeout(function () {
636          if (scope.currentUA !== Util.viewport && Util.viewport === 'mobile') {
637            //SP表示に変更
638            scope.currentUA = Util.viewport; //UA情報更新
639            // //→動画要素毎に
640            // 	動画停止
641            // 	動画停止時の時間取得
642            // 	SPの動画に反映
643          } else if (scope.currentUA === 'mobile' && Util.viewport !== 'mobile') {
644            //PC表示に変更
645            scope.currentUA = Util.viewport; //UA情報更新
646            // //→動画要素毎に
647            // 	モーダル閉じる
648            // 	動画停止
649            // 	動画停止時の時間取得
650            // 	PCの動画に反映
651          }
652        }, scope.resizeInterval);
653      }
654    }]);
655
656    return VideoController;
657  }();
658  /* ------------------------------
659  *  URL Unwrapper
660  ------------------------------ */
661
662
663  var urlUnwrapper = function urlUnwrapper() {
664    var $target = $('.l-main a');
665    $target.each(function () {
666      var text = $(this).text();
667      if (/^http/.test(text)) $(this).addClass('unwrap');
668    });
669  };
670  /* ------------------------------
671  *  main
672  ------------------------------ */
673
674
675  var main = function main() {
676    new GlobalNav();
677    new VideoController();
678    objectFitFix();
679    imageProtector();
680    telephoneUnwrapper();
681    urlUnwrapper();
682    pageScroller();
683    absolutePosition();
684    footerMenuToggle();
685  };
686
687  $(document).ready(function () {
688    main();
689    $(window).on('styleguide-loaded', main);
690  });
691})(window, jQuery);

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.