PageSourceSearch

https://haisla.ca/wp-content/plugins/breakdance/subplugins/breakda…/advanced-tabs.js?bd_ver=2.8.3

js haisla.ca collected 2026-10-02 04:22:26 UTC 2,713 bytes, 93 lines download raw bytes

1"use strict";
2
3(function () {
4  function manageBreakdanceTabs() {
5    const tabContentSelector = ".bde-advanced-tabs-content";
6    const tabsSelector = ".bde-advanced-tabs";
7
8    function getAdvancedTabsParent(selector) {
9      return document.querySelector(selector)?.closest(tabsSelector);
10    }
11
12    function getAdvancedTabsNodeId(selector) {
13      const advancedTabsElement = getAdvancedTabsParent(selector);
14
15      if (advancedTabsElement) {
16        return advancedTabsElement.dataset?.nodeId;
17      }
18
19      return null;
20    }
21
22    function alertIfTabLinkAndTabContentDontMatch(advancedTabsNodeId) {
23      const advancedTabs = document.querySelector(
24        `[data-node-id="${advancedTabsNodeId}"]`
25      );
26      const tabsMenu = advancedTabs.querySelectorAll(".js-tab");
27      const tabsPanels = advancedTabs.querySelectorAll(".js-panel");
28
29      if (!tabsMenu || !tabsPanels) return;
30
31      const tabLinksCount = tabsMenu.length;
32      const tabContentsCount = tabsPanels.length;
33
34      if (tabLinksCount > tabContentsCount) {
35        const plural = tabLinksCount - tabContentsCount > 1 ? "s" : "";
36
37        window.parent.Breakdance.NotificationLogger.log.message(
38          `You're missing ${
39            tabLinksCount - tabContentsCount
40          } "Tab Content" element${plural} in a "Advanced Tabs" element. `,
41          8000
42        );
43      }
44
45      if (tabLinksCount < tabContentsCount) {
46        const plural = tabContentsCount - tabLinksCount > 1 ? "Tabs" : "Tab";
47
48        window.parent.Breakdance.NotificationLogger.log.message(
49          `You're missing ${
50            tabContentsCount - tabLinksCount
51          } "${plural}" in a "Advanced Tabs" element.`,
52          8000
53        );
54      }
55    }
56
57    function activateTabFromStructurePanel(selector) {
58      const advancedTabsNodeId = getAdvancedTabsNodeId(selector);
59
60      const tabsContentElement = document
61        .querySelector(selector)
62        ?.closest(tabContentSelector);
63
64      if (
65        window.breakdanceTabsInstances &&
66        window.breakdanceTabsInstances[advancedTabsNodeId]
67      ) {
68        window.breakdanceTabsInstances[
69          advancedTabsNodeId
70        ].updateAndActivateTabFromSelector(tabsContentElement);
71      }
72    }
73
74    function update(selector) {
75      const advancedTabsNodeId = getAdvancedTabsNodeId(selector);
76
77      if (
78        window.breakdanceTabsInstances &&
79        window.breakdanceTabsInstances[advancedTabsNodeId]
80      ) {
81        window.breakdanceTabsInstances[advancedTabsNodeId].update();
82      }
83    }
84
85    return {
86      alertIfTabLinkAndTabContentDontMatch,
87      activateTabFromStructurePanel,
88      update,
89    };
90  }
91
92  window.manageBreakdanceTabs = manageBreakdanceTabs;
93})();

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.