PageSourceSearch

https://mahadewa.ac.id/wp-content/themes/maxcoach/assets/js/main.js

js mahadewa.ac.id collected 2026-10-02 19:33:21 UTC 20,046 bytes, 789 lines download raw bytes

1(
2	function( $ ) {
3		'use strict';
4
5		var $window            = $( window ),
6		    $html              = $( 'html' ),
7		    $body              = $( 'body' ),
8		    $pageHeader        = $( '#page-header' ),
9		    $headerInner       = $( '#page-header-inner' ),
10		    $pageContent       = $( '#page-content' ),
11		    headerStickyHeight = parseInt( $maxcoach.header_sticky_height ),
12		    smoothScrollOffset,
13		    queueResetDelay,
14		    animateQueueDelay  = 200,
15		    wWidth             = window.innerWidth;
16
17		$( window ).on( 'resize', function() {
18			wWidth = window.innerWidth;
19
20			calMobileMenuBreakpoint();
21			initStickyHeader();
22			handlerVerticalHeader();
23		} );
24
25		$( window ).on( 'load', function() {
26			initPreLoader();
27			initStickyHeader();
28			navOnePage();
29			handlerEntranceAnimation();
30			handlerEntranceQueueAnimation();
31		} );
32
33		$( document ).ready( function() {
34			calMobileMenuBreakpoint();
35
36			scrollToTop();
37
38			// Remove empty p tags form wpautop.
39			$( 'p:empty' ).remove();
40
41			initHeaderSplitNavWithCenteredLogo();
42			initSliders();
43			initGridMainQuery();
44			initSmoothScrollLinks();
45			initLightGalleryPopups();
46			initVideoPopups();
47			initSearchPopup();
48			initHeaderRightMoreTools();
49			initOffSidebar();
50
51			initSmartmenu();
52			initOffCanvasMenu();
53			initMobileMenu();
54			initCookieNotice();
55			handlerPageNotFound();
56			handlerVerticalHeader();
57			handlerArchiveFiltering();
58
59
60			$( '.maxcoach-nice-select' ).MaxcoachNiceSelect();
61		} );
62
63		function handlerEntranceAnimation() {
64			var items = $( '.modern-grid' ).children( '.grid-item' );
65
66			items.elementorWaypoint( function() {
67				// Fix for different ver of waypoints plugin.
68				var _self = this.element ? this.element : this;
69				var $self = $( _self );
70				$self.addClass( 'animate' );
71			}, {
72				offset: '100%',
73				triggerOnce: true
74			} );
75		}
76
77		function handlerEntranceQueueAnimation() {
78			$( '.maxcoach-entrance-animation-queue' ).each( function() {
79				var itemQueue  = [],
80				    queueTimer,
81				    queueDelay = $( this ).data( 'animation-delay' ) ? $( this ).data( 'animation-delay' ) : animateQueueDelay;
82
83				$( this ).children( '.item' ).elementorWaypoint( function() {
84					// Fix for different ver of waypoints plugin.
85					var _self = this.element ? this.element : $( this );
86
87					queueResetDelay = setTimeout( function() {
88						queueDelay = animateQueueDelay;
89					}, animateQueueDelay );
90
91					itemQueue.push( _self );
92					processItemQueue( itemQueue, queueDelay, queueTimer );
93					queueDelay += animateQueueDelay;
94				}, {
95					offset: '100%',
96					triggerOnce: true
97				} );
98			} );
99		}
100
101		function processItemQueue( itemQueue, queueDelay, queueTimer, queueResetDelay ) {
102			clearTimeout( queueResetDelay );
103			queueTimer = window.setInterval( function() {
104				if ( itemQueue !== undefined && itemQueue.length ) {
105					$( itemQueue.shift() ).addClass( 'animate' );
106					processItemQueue();
107				} else {
108					window.clearInterval( queueTimer );
109				}
110			}, queueDelay );
111		}
112
113		function initPreLoader() {
114			setTimeout( function() {
115				$body.addClass( 'loaded' );
116			}, 200 );
117
118			var $loader = $( '#page-preloader' );
119
120			setTimeout( function() {
121				$loader.remove();
122			}, 2000 );
123		}
124
125		function initSliders() {
126			$( '.tm-slider' ).each( function() {
127				if ( $( this ).hasClass( 'maxcoach-swiper-linked-yes' ) ) {
128					var mainSlider = $( this ).children( '.maxcoach-main-swiper' ).MaxcoachSwiper();
129					var thumbsSlider = $( this ).children( '.maxcoach-thumbs-swiper' ).MaxcoachSwiper();
130
131					mainSlider.controller.control = thumbsSlider;
132					thumbsSlider.controller.control = mainSlider;
133				} else {
134					$( this ).MaxcoachSwiper();
135				}
136			} );
137		}
138
139		function initLightGalleryPopups() {
140			$( '.maxcoach-light-gallery' ).each( function() {
141				initLightGallery( $( this ) );
142			} );
143		}
144
145		function initVideoPopups() {
146			$( '.tm-popup-video' ).each( function() {
147				handlerPopupVideo( $( this ) );
148			} );
149		}
150
151		function initGridMainQuery() {
152			$( '.maxcoach-main-post' ).MaxcoachGridLayout();
153		}
154
155		function handlerPopupVideo( $popup ) {
156			var options = {
157				selector: 'a',
158				fullScreen: false,
159				zoom: false,
160				getCaptionFromTitleOrAlt: false,
161				counter: false
162			};
163			$popup.lightGallery( options );
164		}
165
166		function navOnePage() {
167			if ( ! $body.hasClass( 'one-page' ) ) {
168				return;
169			}
170
171			var $mainNav = $( '#page-navigation' ).find( '.menu__container' ).first();
172			var $li = $mainNav.children( '.menu-item' );
173			var $links = $li.children( 'a[href*="#"]:not([href="#"])' );
174
175			$li.each( function() {
176				if ( $( this ).hasClass( 'current-menu-item' ) ) {
177					var _link = $( this ).children( 'a' );
178
179					if ( _link[ 0 ].hash !== '' ) {
180						$( this ).removeClass( 'current-menu-item' );
181					}
182				}
183			} );
184
185			// Handler links class when scroll to target section.
186			if ( $.fn.elementorWaypoint ) {
187				$links.each( function() {
188					var $this = $( this );
189					var target = this.hash;
190					var parent = $this.parent();
191
192					if ( isValidSmoothScrollTarget( target ) ) {
193						var $target = $( target );
194
195						if ( $target.length > 0 ) {
196							$target.elementorWaypoint( function( direction ) {
197								if ( direction === 'down' ) {
198									parent.siblings( 'li' ).removeClass( 'current-menu-item' );
199									parent.addClass( 'current-menu-item' );
200								}
201							}, {
202								offset: '25%'
203							} );
204
205							$target.elementorWaypoint( function( direction ) {
206								if ( direction === 'up' ) {
207									parent.siblings( 'li' ).removeClass( 'current-menu-item' );
208									parent.addClass( 'current-menu-item' );
209								}
210							}, {
211								offset: '-25%'
212							} );
213						}
214					}
215				} );
216			}
217
218			// Allows for easy implementation of smooth scrolling for navigation links.
219			$links.on( 'click', function() {
220				var $this = $( this );
221				var target = this.hash;
222				var parent = $this.parent( 'li' );
223
224				parent.siblings( 'li' ).removeClass( 'current-menu-item' );
225				parent.addClass( 'current-menu-item' );
226
227				if ( isValidSmoothScrollTarget( target ) ) {
228					handlerSmoothScroll( target );
229				}
230
231				return false;
232			} );
233
234			// Smooth scroll to section if url has hash tag when page loaded.
235			var hashTag = window.location.hash;
236
237			if ( isValidSmoothScrollTarget( hashTag ) ) {
238				handlerSmoothScroll( hashTag );
239			}
240		}
241
242		function initSmoothScrollLinks() {
243			// Allows for easy implementation of smooth scrolling for buttons.
244			$( '.smooth-scroll-link' ).on( 'click', function( e ) {
245				var target = getSmoothScrollTarget( $( this ) );
246
247				if ( isValidSmoothScrollTarget( target ) ) {
248					e.preventDefault();
249					e.stopPropagation();
250
251					handlerSmoothScroll( target );
252				}
253			} );
254		}
255
256		function getSmoothScrollTarget( $link ) {
257			var target = $link.attr( 'href' );
258
259			if ( ! target ) {
260				target = $link.data( 'href' );
261			}
262
263			return target;
264		}
265
266		function getSmoothScrollOffset() {
267			if ( smoothScrollOffset ) {
268				return smoothScrollOffset
269			}
270
271			var windowWidth = window.innerWidth;
272			smoothScrollOffset = 0;
273
274			// Add offset of header sticky.
275			if ( $maxcoach.header_sticky_enable == 1 && $pageHeader.length > 0 && $headerInner.data( 'sticky' ) == '1' ) {
276
277				if ( $headerInner.data( 'header-vertical' ) == '1' ) {
278					if ( windowWidth < $maxcoach.mobile_menu_breakpoint ) {
279						smoothScrollOffset += headerStickyHeight;
280					}
281				} else {
282					smoothScrollOffset += headerStickyHeight;
283				}
284			}
285
286			// Add offset of admin bar when viewport min-width 600.
287			if ( windowWidth > 600 ) {
288				var adminBarHeight = $( '#wpadminbar' ).height();
289				smoothScrollOffset += adminBarHeight;
290			}
291
292			if ( smoothScrollOffset > 0 ) {
293				smoothScrollOffset = - smoothScrollOffset;
294			}
295
296			return smoothScrollOffset;
297		}
298
299		function isValidSmoothScrollTarget( selector ) {
300			if ( selector.match( /^([.#])(.+)/ ) ) {
301				return true;
302			}
303
304			return false;
305		}
306
307		function handlerSmoothScroll( target ) {
308			var offset = getSmoothScrollOffset();
309
310			$.smoothScroll( {
311				offset: offset,
312				scrollTarget: $( target ),
313				speed: 600,
314				easing: 'linear'
315			} );
316		}
317
318		function initSmartmenu() {
319			var $primaryMenu = $pageHeader.find( '#page-navigation' ).find( 'ul' ).first();
320
321			if ( ! $primaryMenu.hasClass( 'sm' ) ) {
322				return;
323			}
324
325			$primaryMenu.smartmenus( {
326				hideTimeout: 250,
327				subMenusSubOffsetX: 0,
328				subMenusSubOffsetY: - 17
329			} );
330
331			// Add animation for sub menu.
332			$primaryMenu.on( {
333				'show.smapi': function( e, menu ) {
334					$( menu ).removeClass( 'hide-animation' ).addClass( 'show-animation' );
335				},
336				'hide.smapi': function( e, menu ) {
337					$( menu ).removeClass( 'show-animation' ).addClass( 'hide-animation' );
338				}
339			} ).on( 'animationend webkitAnimationEnd oanimationend MSAnimationEnd', 'ul', function( e ) {
340				$( this ).removeClass( 'show-animation hide-animation' );
341				e.stopPropagation();
342			} );
343		}
344
345		function initLightGallery( $gallery ) {
346			var _download   = (
347				    $maxcoach.light_gallery_download === '1'
348			    ),
349			    _autoPlay   = (
350				    $maxcoach.light_gallery_auto_play === '1'
351			    ),
352			    _zoom       = (
353				    $maxcoach.light_gallery_zoom === '1'
354			    ),
355			    _fullScreen = (
356				    $maxcoach.light_gallery_full_screen === '1'
357			    ),
358			    _share      = (
359				    $maxcoach.light_gallery_share === '1'
360			    ),
361			    _thumbnail  = (
362				    $maxcoach.light_gallery_thumbnail === '1'
363			    );
364
365			var options = {
366				selector: '.zoom',
367				mode: 'lg-fade',
368				thumbnail: _thumbnail,
369				download: _download,
370				autoplay: _autoPlay,
371				zoom: _zoom,
372				share: _share,
373				fullScreen: _fullScreen,
374				hash: false,
375				animateThumb: false,
376				showThumbByDefault: false,
377				getCaptionFromTitleOrAlt: false
378			};
379
380			$gallery.lightGallery( options );
381		}
382
383		function scrollToTop() {
384			if ( $maxcoach.scroll_top_enable != 1 ) {
385				return;
386			}
387			var $scrollUp = $( '#page-scroll-up' );
388			var lastScrollTop = 0;
389
390			$window.on( 'scroll', function() {
391				var st = $( this ).scrollTop();
392				if ( st > lastScrollTop ) {
393					$scrollUp.removeClass( 'show' );
394				} else {
395					if ( $window.scrollTop() > 200 ) {
396						$scrollUp.addClass( 'show' );
397					} else {
398						$scrollUp.removeClass( 'show' );
399					}
400				}
401				lastScrollTop = st;
402			} );
403
404			$scrollUp.on( 'click', function( evt ) {
405				$( 'html, body' ).animate( { scrollTop: 0 }, 600 );
406				evt.preventDefault();
407			} );
408		}
409
410		function openMobileMenu() {
411			$body.addClass( 'page-mobile-menu-opened' );
412
413			$html.css( {
414				'overflow': 'hidden'
415			} );
416
417			$( document ).trigger( 'mobileMenuOpen' );
418		}
419
420		function closeMobileMenu() {
421			$body.removeClass( 'page-mobile-menu-opened' );
422
423			$html.css( {
424				'overflow': ''
425			} );
426
427			$( document ).trigger( 'mobileMenuClose' );
428		}
429
430		function calMobileMenuBreakpoint() {
431			var _breakpoint = $maxcoach.mobile_menu_breakpoint;
432			if ( wWidth <= _breakpoint ) {
433				$body.removeClass( 'desktop-menu' ).addClass( 'mobile-menu' );
434			} else {
435				$body.addClass( 'desktop-menu' ).removeClass( 'mobile-menu' );
436			}
437		}
438
439		function initMobileMenu() {
440			$( '#page-open-mobile-menu' ).on( 'click', function( e ) {
441				e.preventDefault();
442				e.stopPropagation();
443
444				openMobileMenu();
445			} );
446
447			$( '#page-close-mobile-menu' ).on( 'click', function( e ) {
448				e.preventDefault();
449				e.stopPropagation();
450
451				closeMobileMenu();
452			} );
453
454			$( '#page-mobile-main-menu' ).on( 'click', function( e ) {
455				if ( e.target !== this ) {
456					return;
457				}
458
459				closeMobileMenu();
460			} );
461
462			var menu = $( '#mobile-menu-primary' );
463
464			menu.on( 'click', 'a', function( e ) {
465				var $this = $( this );
466				var _li = $( this ).parent( 'li' );
467				var target = getSmoothScrollTarget( $this );
468
469				if ( $body.hasClass( 'one-page' ) && isValidSmoothScrollTarget( target ) ) {
470					closeMobileMenu();
471
472					_li.siblings( 'li' ).removeClass( 'current-menu-item' );
473					_li.addClass( 'current-menu-item' );
474
475					setTimeout( function() {
476						handlerSmoothScroll( target );
477					}, 300 );
478
479					return false;
480				}
481			} );
482
483			menu.on( 'click', '.toggle-sub-menu', function( e ) {
484				var _li = $( this ).parents( 'li' ).first();
485
486				e.preventDefault();
487				e.stopPropagation();
488
489				var _friends = _li.siblings( '.opened' );
490				_friends.removeClass( 'opened' );
491				_friends.find( '.opened' ).removeClass( 'opened' );
492				_friends.find( '.sub-menu' ).stop().slideUp();
493
494				if ( _li.hasClass( 'opened' ) ) {
495					_li.removeClass( 'opened' );
496					_li.find( '.opened' ).removeClass( 'opened' );
497					_li.find( '.sub-menu' ).stop().slideUp();
498				} else {
499					_li.addClass( 'opened' );
500					_li.children( '.sub-menu' ).stop().slideDown();
501				}
502			} );
503		}
504
505		function initOffCanvasMenu() {
506			var menu = $( '#off-canvas-menu-primary' );
507			var _lv1 = menu.children( 'li' );
508			var $popup = $( '#popup-canvas-menu' );
509
510			$( '#page-open-main-menu' ).on( 'click', function( e ) {
511				e.preventDefault();
512				$popup.addClass( 'open' );
513				$body.addClass( 'page-popup-open' );
514			} );
515
516			$( '#page-close-main-menu' ).on( 'click', function( e ) {
517				e.preventDefault();
518
519				menu.fadeOut( function() {
520					$body.removeClass( 'page-popup-open' );
521					$popup.removeClass( 'open' );
522					menu.fadeIn();
523					menu.find( '.sub-menu' ).slideUp();
524				} );
525			} );
526
527			var transDelay = 0.4;
528			_lv1.each( function() {
529				$( this )[ 0 ].setAttribute( 'style', '-webkit-transition-delay:' + transDelay + 's; -moz-transition-delay:' + transDelay + 's; -ms-transition-delay:' + transDelay + 's; -o-transition-delay:' + transDelay + 's; transition-delay:' + transDelay + 's' );
530				transDelay += 0.1;
531			} );
532
533			menu.on( 'click', '.menu-item-has-children > a, .page_item_has_children > a', function( e ) {
534				e.preventDefault();
535				e.stopPropagation();
536
537				var _li = $( this ).parent( 'li' );
538				var _friends = _li.siblings( '.opened' );
539				_friends.removeClass( 'opened' );
540				_friends.find( '.opened' ).removeClass( 'opened' );
541				_friends.find( '.sub-menu, .children' ).stop().slideUp();
542
543				if ( _li.hasClass( 'opened' ) ) {
544					_li.removeClass( 'opened' );
545					_li.find( '.opened' ).removeClass( 'opened' );
546					_li.find( '.sub-menu, .children' ).stop().slideUp();
547				} else {
548					_li.addClass( 'opened' );
549					_li.children( '.sub-menu, .children' ).stop().slideDown();
550				}
551			} );
552		}
553
554		function initStickyHeader() {
555			var $headerHolder = $pageHeader.children( '.page-header-place-holder' );
556			if ( $maxcoach.header_sticky_enable == 1 && $pageHeader.length > 0 && $headerInner.data( 'sticky' ) == '1' ) {
557				if ( $headerInner.data( 'header-vertical' ) != '1' ) {
558					var _hOffset = $headerInner.offset().top;
559
560					// Fix offset top return negative value on some devices.
561					if ( _hOffset < 0 ) {
562						_hOffset = 0;
563					}
564
565					var _hHeight = $headerInner.outerHeight();
566					var offset = _hOffset + _hHeight + 100;
567
568					if ( ! $pageHeader.hasClass( 'header-layout-fixed' ) ) {
569						var _hHeight = $headerInner.outerHeight();
570
571						$headerHolder.height( _hHeight );
572						$headerInner.addClass( 'held' );
573					}
574
575					$pageHeader.headroom( {
576						offset: offset,
577						onTop: function() {
578							if ( ! $pageHeader.hasClass( 'header-layout-fixed' ) ) {
579
580								setTimeout( function() {
581									var _hHeight = $headerInner.outerHeight();
582
583									$headerHolder.height( _hHeight );
584								}, 300 );
585							}
586						},
587					} );
588				} else {
589					if ( wWidth <= $maxcoach.mobile_menu_breakpoint ) {
590						if ( ! $pageHeader.data( 'headroom' ) ) {
591							var _hOffset = $headerInner.offset().top;
592
593							// Fix offset top return negative value on some devices.
594							if ( _hOffset < 0 ) {
595								_hOffset = 0;
596							}
597
598							var _hHeight = $headerInner.outerHeight();
599							var offset = _hOffset + _hHeight + 100;
600
601							$pageHeader.headroom( {
602								offset: offset
603							} );
604						}
605					} else {
606						if ( $pageHeader.data( 'headroom' ) ) {
607							$pageHeader.data( 'headroom' ).destroy();
608							$pageHeader.removeData( 'headroom' );
609						}
610					}
611				}
612			}
613		}
614
615		function initSearchPopup() {
616			var popupSearch = $( '#popup-search' );
617
618			$( '#page-open-popup-search' ).on( 'click', function( e ) {
619				e.preventDefault();
620
621				$body.addClass( 'page-search-popup-opened' );
622				popupSearch.addClass( 'open' );
623
624				setTimeout( function() {
625					popupSearch.find( '.search-field' ).focus();
626				}, 500 );
627			} );
628
629			$( '#search-popup-close' ).on( 'click', function( e ) {
630				e.preventDefault();
631
632				$body.removeClass( 'page-search-popup-opened' );
633				popupSearch.removeClass( 'open' );
634			} );
635		}
636
637		function openOffSidebar() {
638			$body.addClass( 'page-off-sidebar-opened' );
639		}
640
641		function closeOffSidebar() {
642			$body.removeClass( 'page-off-sidebar-opened' );
643		}
644
645		function initOffSidebar() {
646			$( '#page-open-off-sidebar' ).on( 'click', function( e ) {
647				e.preventDefault();
648				openOffSidebar();
649			} );
650
651			$( '#page-close-off-sidebar' ).on( 'click', function( e ) {
652				e.preventDefault();
653				closeOffSidebar();
654			} );
655
656			var offSidebar = $( '#page-off-sidebar' );
657
658			offSidebar.on( 'click', function( e ) {
659				if ( e.target !== this ) {
660					return;
661				}
662
663				closeOffSidebar();
664			} );
665		}
666
667		function initHeaderRightMoreTools() {
668			var toggleBtn = $( '#page-open-components' );
669			toggleBtn.on( 'click', function() {
670				$body.toggleClass( 'header-more-tools-opened' );
671			} );
672
673			$( document ).on( 'click', function( evt ) {
674				if ( evt.target.id === 'header-right-inner' ) {
675					return;
676				}
677
678				if ( $( evt.target ).closest( '#header-right-inner' ).length ) {
679					return;
680				}
681
682				if ( $( evt.target ).closest( toggleBtn ).length ) {
683					return;
684				}
685
686				$body.removeClass( 'header-more-tools-opened' );
687			} );
688		}
689
690		function initCookieNotice() {
691			if ( $maxcoach.noticeCookieEnable == 1 && $maxcoach.noticeCookieConfirm != 'yes' && $maxcoach.noticeCookieMessages != '' ) {
692
693				$.growl( {
694					location: 'br',
695					fixed: true,
696					duration: 3600000,
697					size: 'large',
698					title: '',
699					message: $maxcoach.noticeCookieMessages
700				} );
701
702				$( '#tm-button-cookie-notice-ok' ).on( 'click', function() {
703					$( this ).parents( '.growl-message' ).first().siblings( '.growl-close' ).trigger( 'click' );
704
705					var _data = {
706						action: 'notice_cookie_confirm'
707					};
708
709					_data = $.param( _data );
710
711					$.ajax( {
712						url: $maxcoach.ajaxurl,
713						type: 'POST',
714						data: _data,
715						dataType: 'json',
716						success: function( results ) {
717
718						},
719						error: function( errorThrown ) {
720							console.log( errorThrown );
721						}
722					} );
723				} );
724			}
725		}
726
727		function handlerPageNotFound() {
728			if ( ! $body.hasClass( 'error404' ) ) {
729				return;
730			}
731
732			$( '#btn-go-back' ).on( 'click', function( e ) {
733				e.preventDefault();
734
735				window.history.back();
736			} );
737		}
738
739		function handlerVerticalHeader() {
740			if ( $headerInner.data( 'header-vertical' ) != '1' ) {
741				return;
742			}
743
744			var _wWidth = window.innerWidth;
745
746			if ( _wWidth <= $maxcoach.mobile_menu_breakpoint ) {
747				$html.css( {
748					marginLeft: 0
749				} );
750			} else {
751				var headerWidth = $headerInner.outerWidth();
752				$html.css( {
753					marginLeft: headerWidth + 'px'
754				} );
755			}
756		}
757
758		function handlerArchiveFiltering() {
759			var $form = $( '#archive-form-filtering' );
760
761			if ( $form.length > 0 ) {
762				var $select = $form.find( 'select' );
763
764				$select.on( 'change', function() {
765					$( this ).closest( 'form' ).submit();
766				} );
767			}
768		}
769
770		function initHeaderSplitNavWithCenteredLogo() {
771			if ( $pageHeader.data( 'centered-logo' ) !== 1 ) {
772				return;
773			}
774
775			var $logo = $pageHeader.find( '.branding' );
776			var $logoItem = $( '<li id="branding-logo-li" class="menu-item branding-logo-li"></li>' );
777			$logoItem.append( $logo.clone() );
778
779			var $menuContainer = $pageHeader.find( '.menu__container' );
780
781			var menuNum = $menuContainer.children( 'li' ).length;
782			var menuCenter = parseInt( Math.round( menuNum / 2 ), 10 );
783			menuCenter -= 1;
784
785			$menuContainer.children( 'li:eq(' + menuCenter + ')' ).after( $logoItem );
786		}
787
788	}( jQuery )
789);

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.