/*! elementor-pro - v3.6.1 - 09-02-2022 */ (self["webpackChunkelementor_pro"] = self["webpackChunkelementor_pro"] || []).push([["table-of-contents"],{ /***/ "../modules/table-of-contents/assets/js/frontend/handlers/table-of-contents.js": /*!*************************************************************************************!*\ !*** ../modules/table-of-contents/assets/js/frontend/handlers/table-of-contents.js ***! \*************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; /* provided dependency */ var __ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n")["__"]; Object.defineProperty(exports, "__esModule", ({ value: true })); exports.default = void 0; class TOCHandler extends elementorModules.frontend.handlers.Base { getDefaultSettings() { const elementSettings = this.getElementSettings(), listWrapperTag = 'numbers' === elementSettings.marker_view ? 'ol' : 'ul'; return { selectors: { widgetContainer: '.elementor-widget-container', postContentContainer: '.elementor:not([data-elementor-type="header"]):not([data-elementor-type="footer"]):not([data-elementor-type="popup"])', expandButton: '.elementor-toc__toggle-button--expand', collapseButton: '.elementor-toc__toggle-button--collapse', body: '.elementor-toc__body', headerTitle: '.elementor-toc__header-title' }, classes: { anchor: 'elementor-menu-anchor', listWrapper: 'elementor-toc__list-wrapper', listItem: 'elementor-toc__list-item', listTextWrapper: 'elementor-toc__list-item-text-wrapper', firstLevelListItem: 'elementor-toc__top-level', listItemText: 'elementor-toc__list-item-text', activeItem: 'elementor-item-active', headingAnchor: 'elementor-toc__heading-anchor', collapsed: 'elementor-toc--collapsed' }, listWrapperTag }; } getDefaultElements() { const settings = this.getSettings(); return { $pageContainer: this.getContainer(), $widgetContainer: this.$element.find(settings.selectors.widgetContainer), $expandButton: this.$element.find(settings.selectors.expandButton), $collapseButton: this.$element.find(settings.selectors.collapseButton), $tocBody: this.$element.find(settings.selectors.body), $listItems: this.$element.find('.' + settings.classes.listItem) }; } getContainer() { const settings = this.getSettings(), elementSettings = this.getElementSettings(); // If there is a custom container defined by the user, use it as the headings-scan container if (elementSettings.container) { return jQuery(elementSettings.container); } // Get the document wrapper element in which the TOC is located const $documentWrapper = this.$element.parents('.elementor'); // If the TOC container is a popup, only scan the popup for headings if ('popup' === $documentWrapper.attr('data-elementor-type')) { return $documentWrapper; } // If the TOC container is anything other than a popup, scan only the post/page content for headings return jQuery(settings.selectors.postContentContainer); } bindEvents() { const elementSettings = this.getElementSettings(); if (elementSettings.minimize_box) { this.elements.$expandButton.on('click', () => this.expandBox()); this.elements.$collapseButton.on('click', () => this.collapseBox()); } if (elementSettings.collapse_subitems) { this.elements.$listItems.on('hover', event => jQuery(event.target).slideToggle()); } } getHeadings() { // Get all headings from document by user-selected tags const elementSettings = this.getElementSettings(), tags = elementSettings.headings_by_tags.join(','), selectors = this.getSettings('selectors'), excludedSelectors = elementSettings.exclude_headings_by_selector; return this.elements.$pageContainer.find(tags).not(selectors.headerTitle).filter((index, heading) => { return !jQuery(heading).closest(excludedSelectors).length; // Handle excluded selectors if there are any }); } addAnchorsBeforeHeadings() { const classes = this.getSettings('classes'); // Add an anchor element right before each TOC heading to create anchors for TOC links this.elements.$headings.before(index => { // Check if the heading element itself has an ID, or if it is a widget which includes a main heading element, whether the widget wrapper has an ID if (jQuery(this.elements.$headings[index]).data('hasOwnID')) { return; } return ``; }); } activateItem($listItem) { const classes = this.getSettings('classes'); this.deactivateActiveItem($listItem); $listItem.addClass(classes.activeItem); this.$activeItem = $listItem; if (!this.getElementSettings('collapse_subitems')) { return; } let $activeList; if ($listItem.hasClass(classes.firstLevelListItem)) { $activeList = $listItem.parent().next(); } else { $activeList = $listItem.parents('.' + classes.listWrapper).eq(-2); } if (!$activeList.length) { delete this.$activeList; return; } this.$activeList = $activeList; this.$activeList.stop().slideDown(); } deactivateActiveItem($activeToBe) { if (!this.$activeItem || this.$activeItem.is($activeToBe)) { return; } const { classes } = this.getSettings(); this.$activeItem.removeClass(classes.activeItem); if (this.$activeList && (!$activeToBe || !this.$activeList[0].contains($activeToBe[0]))) { this.$activeList.slideUp(); } } followAnchor($element, index) { const anchorSelector = $element[0].hash; let $anchor; try { // `decodeURIComponent` for UTF8 characters in the hash. $anchor = jQuery(decodeURIComponent(anchorSelector)); } catch (e) { return; } elementorFrontend.waypoint($anchor, direction => { if (this.itemClicked) { return; } const id = $anchor.attr('id'); if ('down' === direction) { this.viewportItems[id] = true; this.activateItem($element); } else { delete this.viewportItems[id]; this.activateItem(this.$listItemTexts.eq(index - 1)); } }, { offset: 'bottom-in-view', triggerOnce: false }); elementorFrontend.waypoint($anchor, direction => { if (this.itemClicked) { return; } const id = $anchor.attr('id'); if ('down' === direction) { delete this.viewportItems[id]; if (Object.keys(this.viewportItems).length) { this.activateItem(this.$listItemTexts.eq(index + 1)); } } else { this.viewportItems[id] = true; this.activateItem($element); } }, { offset: 0, triggerOnce: false }); } followAnchors() { this.$listItemTexts.each((index, element) => this.followAnchor(jQuery(element), index)); } populateTOC() { this.listItemPointer = 0; const elementSettings = this.getElementSettings(); if (elementSettings.hierarchical_view) { this.createNestedList(); } else { this.createFlatList(); } this.$listItemTexts = this.$element.find('.elementor-toc__list-item-text'); this.$listItemTexts.on('click', this.onListItemClick.bind(this)); if (!elementorFrontend.isEditMode()) { this.followAnchors(); } } createNestedList() { this.headingsData.forEach((heading, index) => { heading.level = 0; for (let i = index - 1; i >= 0; i--) { const currentOrderedItem = this.headingsData[i]; if (currentOrderedItem.tag <= heading.tag) { heading.level = currentOrderedItem.level; if (currentOrderedItem.tag < heading.tag) { heading.level++; } break; } } }); this.elements.$tocBody.html(this.getNestedLevel(0)); } createFlatList() { this.elements.$tocBody.html(this.getNestedLevel()); } getNestedLevel(level) { const settings = this.getSettings(), elementSettings = this.getElementSettings(), icon = this.getElementSettings('icon'); let renderedIcon; if (icon) { // We generate the icon markup in PHP and make it available via get_frontend_settings(). As a result, the // rendered icon is not available in the editor, so in the editor we use the regular tag. if (elementorFrontend.config.experimentalFeatures.e_font_icon_svg && !elementorFrontend.isEditMode()) { renderedIcon = icon.rendered_tag; } else { renderedIcon = ``; } } // Open new list/nested list let html = `<${settings.listWrapperTag} class="${settings.classes.listWrapper}">`; // for each list item, build its markup. while (this.listItemPointer < this.headingsData.length) { const currentItem = this.headingsData[this.listItemPointer]; let listItemTextClasses = settings.classes.listItemText; if (0 === currentItem.level) { // If the current list item is a top level item, give it the first level class listItemTextClasses += ' ' + settings.classes.firstLevelListItem; } if (level > currentItem.level) { break; } if (level === currentItem.level) { html += `
  • `; html += `
    `; let liContent = `${currentItem.text}`; // If list type is bullets, add the bullet icon as an tag if ('bullets' === elementSettings.marker_view && icon) { liContent = `${renderedIcon}${liContent}`; } html += liContent; html += '
    '; this.listItemPointer++; const nextItem = this.headingsData[this.listItemPointer]; if (nextItem && level < nextItem.level) { // If a new nested list has to be created under the current item, // this entire method is called recursively (outside the while loop, a list wrapper is created) html += this.getNestedLevel(nextItem.level); } html += '
  • '; } } html += ``; return html; } handleNoHeadingsFound() { let noHeadingsText = __('No headings were found on this page.', 'elementor-pro'); return this.elements.$tocBody.html(noHeadingsText); } collapseOnInit() { const minimizedOn = this.getElementSettings('minimized_on'), currentDeviceMode = elementorFrontend.getCurrentDeviceMode(); if ('tablet' === minimizedOn && 'desktop' !== currentDeviceMode || 'mobile' === minimizedOn && 'mobile' === currentDeviceMode) { this.collapseBox(); } } getHeadingAnchorLink(index, classes) { const headingID = this.elements.$headings[index].id, wrapperID = this.elements.$headings[index].closest('.elementor-widget').id; let anchorLink = ''; if (headingID) { anchorLink = headingID; } else if (wrapperID) { // If the heading itself has an ID, we don't want to overwrite it anchorLink = wrapperID; } // If there is no existing ID, use the heading text to create a semantic ID if (headingID || wrapperID) { jQuery(this.elements.$headings[index]).data('hasOwnID', true); } else { anchorLink = `${classes.headingAnchor}-${index}`; } return anchorLink; } setHeadingsData() { this.headingsData = []; const classes = this.getSettings('classes'); // Create an array for simplifying TOC list creation this.elements.$headings.each((index, element) => { const anchorLink = this.getHeadingAnchorLink(index, classes); this.headingsData.push({ tag: +element.nodeName.slice(1), text: element.textContent, anchorLink }); }); } run() { this.elements.$headings = this.getHeadings(); if (!this.elements.$headings.length) { return this.handleNoHeadingsFound(); } this.setHeadingsData(); if (!elementorFrontend.isEditMode()) { this.addAnchorsBeforeHeadings(); } this.populateTOC(); if (this.getElementSettings('minimize_box')) { this.collapseOnInit(); } } expandBox() { const boxHeight = this.getCurrentDeviceSetting('min_height'); this.$element.removeClass(this.getSettings('classes.collapsed')); this.elements.$tocBody.slideDown(); // return container to the full height in case a min-height is defined by the user this.elements.$widgetContainer.css('min-height', boxHeight.size + boxHeight.unit); } collapseBox() { this.$element.addClass(this.getSettings('classes.collapsed')); this.elements.$tocBody.slideUp(); // close container in case a min-height is defined by the user this.elements.$widgetContainer.css('min-height', '0px'); } onInit(...args) { super.onInit(...args); this.viewportItems = []; jQuery(() => this.run()); } onListItemClick(event) { this.itemClicked = true; setTimeout(() => this.itemClicked = false, 2000); const $clickedItem = jQuery(event.target), $list = $clickedItem.parent().next(), collapseNestedList = this.getElementSettings('collapse_subitems'); let listIsActive; if (collapseNestedList && $clickedItem.hasClass(this.getSettings('classes.firstLevelListItem'))) { if ($list.is(':visible')) { listIsActive = true; } } this.activateItem($clickedItem); if (collapseNestedList && listIsActive) { $list.slideUp(); } } } exports.default = TOCHandler; /***/ }) }]); //# sourceMappingURL=table-of-contents.0a449c406e0f405a32d3.bundle.js.map Saroja Cell Service HP Pekalongan – Servis HP Bisa Ditunggu

    PUSAT SERVICE HP PEKALONGAN

    SAROJA CELL – Layanan Reparasi dan Service HP Terpercaya di Kota Pekalongan dan Sekitarnya

    Selamat datang di SAROJA CELL, tujuan utama Anda untuk kebutuhan reparasi dan service HP di Kota Pekalongan dan sekitarnya. Kami berlokasi di Jl. Otto Iskandardinata No.400, Kelurahan Sokoduwet, Pekalongan Selatan, Kota Pekalongan.

    Apa yang membedakan Saroja Cell? Kami bangga menjadi Konter Pertama di Pekalongan yang menyediakan Layanan BISA DITUNGGU. Dengan tim Teknisi yang Profesional, kami berkomitmen untuk memberikan pelayanan terbaik dengan hasil kerja yang cepat. Kecepatan pengerjaan kami didukung oleh keahlian dan pengalaman para teknisi handal kami, sehingga pelanggan kami merasa Puas dengan layanan servis HP di Saroja Cell.

    Jangan ragu untuk menghubungi kami di 0812-2578-9338 atau kunjungi langsung alamat kami untuk mendapatkan solusi terbaik untuk perangkat HP Anda. SAROJA CELL – Kembalikan performa optimal HP Anda dengan layanan reparasi yang handal dan dapat diandalkan!

    Lokasi Dekat Dengan Kota
    Pelanggan Ramai Setiap Hari
    Tidak Pernah Sepi Garapan
    Alat Lengkap Garapan Rapih
    Tombol Rusak Bisa Ditunggu
    LCD Pecah Sehari Jadi
    Ganti Baterai Langsung Jadi
    Rusak Ces Bisa Ditunggu

    Temukan Kami di Google Maps
    Memahami pentingnya instrumentasi industri berkualitas tinggi sangat penting untuk operasi yang efisien. ADM Instrument Engineering mengkhususkan diri dalam menyediakan berbagai peralatan kontrol proses. Ini termasuk flow meter, sensor tekanan, dan pencatat data, yang penting untuk pengukuran yang akurat dan kinerja yang optimal di berbagai industri. Bagi mereka yang mencari instrumentasi yang andal untuk aplikasi industri, memahami peran alat pengukuran yang akurat sangat penting. Peralatan berkualitas memastikan efisiensi dan keamanan berbagai proses manufaktur. Demikian pula, mengenal kasino online terkemuka dapat mendiversifikasi waktu luang Anda dengan permainan dan hadiah yang menarik. Pelajari lebih lanjut tentang penawaran dan bonus terbaru di https://osterreich-casino-spieler.com/online-casinos/slothunter/. Menyediakan akses ke sumber daya terbaik bagi para profesional industri dan penggemar judi memperkaya pengalaman mereka masing-masing. Dengan menggabungkan pentingnya ketepatan alat industri dengan kegembiraan permainan online, seseorang dapat menghargai berbagai alat yang tersedia untuk bekerja dan bermain.

    Apa Kata Pelanggan Tentang Saroja Cell?

    Saroja Cell Duwet Salah satu konter di Pekalongan selatan selain Jasa Top Up pulsa juga Servise HP segala kondisi. Pelayanan Ramah, Harga Terjangkau, dan Bergaransi☺️ Aku sudah membuktikan sendiri, yuk giliran kamu😁😁
    Eli Lutfiyatus Zuhro
    3 Hari yang Lalu
    Saya Ganti Baterai Samsung A03 langsung jadi. Hasil memuaskan,,,servis hp bisa ditunggu. Hasil memuaskan. Harga terjangkau. Puas pokoknya. 👍👍👍
    Paulus Kuncoro
    1 Minggu yang Lalu
    Kemarin HP saya jatuh dan LCD pecah, tak bawa ke Saroja. Tempat service hand phone yang cepat dan tepat bisa menjadi langganan saya terimakasih ya, HP saya sekarang bisa digunakan lagi,
    Ning wa
    Beberapa Hari yang Lalu
    Servis hp bisa ditunggu beneran, punya saya rusak tidak bisa dices, 30 menit jadi rekomendasi banget buat kalian yang mau servis HP tapi gak mau lama
    Wahib Pekok
    1 Bulan yang Lalu

    Berikan UlasanmuTentang Saroja Cell di Google Bisnis

    Apa Saja Yang Ada Di Saroja Cell?

    Pusat Service HP Bisa Ditunggu di Pekalongan, Melayani Perbaikan HP Segala merek, Reparasi HP Merk Oppo, Samsung, Xiaomi, Redmi, Realme, Vivo, Huawei, Iphone, Asus Zenfone, Infinix, Sony, LG, Lava, Apple, Lenovo, HTC, Nokia, Mito, Advan, Polytron dll. Dengan Fasilitas Service HP Bisa ditunggu, Service HP Cepat, Service HP Bergaransi, Service HP Murah, Service HP Terpercaya, Service HP Amanah, Service HP Garansi 100%

    Pusat Service HP Bisa Ditunggu di Pekalongan, Masternya Service HP Segala Kerusaka, Mulai dari LCD Pecah, Mati mesin, layar sentuh / touchscreen, microphone, speaker / speker, kamera HP, bootloop, tidak bias dices, lupa pola, HP Panas, HP Sering Restart, IC Power, IC Emmc, IC Flash, IC CPU, Resistor konslet, HP kena air, HP jatuh, HP Kecemplung air, lupa pola, lupa pin, lupa password, dll Yang Pastinya BISA DITUNGGU, Cepat, Murah dan Bergaransi

    Pusat Service HP Bisa Ditunggu di Pekalongan, Service HP Terdekat Di Pekalongan, Terdekat Di Batang, Terdekat Di Kuripan, Terdekat Di Warungasem, Terdekat Di Sijono, Terdekat Di Kotamu, Terdekat Dari Rumahmu, Terdekat Di Semua Tempat dan Alamat, Melayani Perbaikan HP Semua Merk / Merek Semua Kerusakan Dan Semua Permasalahan, dan Pastinya Dengan Layanan Baik, Amanah, Bergaransi Dan BISA DITUNGGU.

    Scroll to Top