al_folio_core 1.0.1 → 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (185) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +11 -0
  3. data/README.md +2 -0
  4. data/_includes/head.liquid +4 -3
  5. data/_includes/plugins/al_icons_styles.liquid +4 -0
  6. data/_includes/scripts.liquid +10 -2
  7. data/assets/css/main.scss +0 -4
  8. data/assets/js/tabs.js +242 -0
  9. data/lib/al_folio_core/version.rb +1 -1
  10. metadata +5 -181
  11. data/_includes/audio 2.liquid +0 -30
  12. data/_includes/bib_search 2.liquid +0 -4
  13. data/_includes/calendar 2.liquid +0 -25
  14. data/_includes/citation 2.liquid +0 -26
  15. data/_includes/course_schedule 2.liquid +0 -71
  16. data/_includes/courses 2.liquid +0 -37
  17. data/_includes/disqus 2.liquid +0 -13
  18. data/_includes/figure 2.liquid +0 -86
  19. data/_includes/footer 2.liquid +0 -34
  20. data/_includes/giscus 2.liquid +0 -25
  21. data/_includes/head 2.liquid +0 -147
  22. data/_includes/header 2.liquid +0 -149
  23. data/_includes/latest_posts 2.liquid +0 -48
  24. data/_includes/metadata 2.liquid +0 -247
  25. data/_includes/news 2.liquid +0 -34
  26. data/_includes/newsletter 2.liquid +0 -68
  27. data/_includes/pagination 2.liquid +0 -21
  28. data/_includes/plugins/al_analytics_scripts 2.liquid +0 -4
  29. data/_includes/plugins/al_charts_scripts 2.liquid +0 -4
  30. data/_includes/plugins/al_comments 2.liquid +0 -4
  31. data/_includes/plugins/al_cookie_scripts 2.liquid +0 -4
  32. data/_includes/plugins/al_cookie_styles 2.liquid +0 -4
  33. data/_includes/plugins/al_img_tools_scripts 2.liquid +0 -4
  34. data/_includes/plugins/al_img_tools_styles 2.liquid +0 -4
  35. data/_includes/plugins/al_math_scripts 2.liquid +0 -4
  36. data/_includes/plugins/al_math_styles 2.liquid +0 -4
  37. data/_includes/plugins/al_newsletter_form_center 2.liquid +0 -4
  38. data/_includes/plugins/al_newsletter_form_center_margin 2.liquid +0 -1
  39. data/_includes/plugins/al_newsletter_form_left 2.liquid +0 -1
  40. data/_includes/plugins/al_newsletter_scripts 2.liquid +0 -1
  41. data/_includes/plugins/al_search_assets 2.liquid +0 -5
  42. data/_includes/projects 2.liquid +0 -35
  43. data/_includes/projects_horizontal 2.liquid +0 -34
  44. data/_includes/related_posts 2.liquid +0 -40
  45. data/_includes/repository/repo 2.liquid +0 -47
  46. data/_includes/repository/repo_trophies 2.liquid +0 -42
  47. data/_includes/repository/repo_user 2.liquid +0 -34
  48. data/_includes/scripts 2.liquid +0 -123
  49. data/_includes/selected_papers 2.liquid +0 -3
  50. data/_includes/video 2.liquid +0 -97
  51. data/_layouts/about 2.liquid +0 -84
  52. data/_layouts/archive 2.liquid +0 -38
  53. data/_layouts/bib 2.liquid +0 -395
  54. data/_layouts/book-review 2.liquid +0 -265
  55. data/_layouts/book-shelf 2.liquid +0 -49
  56. data/_layouts/course 2.liquid +0 -75
  57. data/_layouts/cv 2.liquid +0 -18
  58. data/_layouts/default 2.liquid +0 -56
  59. data/_layouts/distill 2.liquid +0 -21
  60. data/_layouts/none 2.liquid +0 -1
  61. data/_layouts/page 2.liquid +0 -31
  62. data/_layouts/post 2.liquid +0 -94
  63. data/_layouts/profiles 2.liquid +0 -36
  64. data/_sass/_blog 2.scss +0 -204
  65. data/_sass/_components 2.scss +0 -261
  66. data/_sass/_footer 2.scss +0 -35
  67. data/_sass/_layout 2.scss +0 -58
  68. data/_sass/_navbar 2.scss +0 -190
  69. data/_sass/_publications 2.scss +0 -188
  70. data/_sass/_tabs 2.scss +0 -48
  71. data/_sass/_teachings 2.scss +0 -77
  72. data/_sass/_themes 2.scss +0 -208
  73. data/_sass/_typograms 2.scss +0 -132
  74. data/_sass/_typography 2.scss +0 -136
  75. data/_sass/_utilities 2.scss +0 -607
  76. data/_sass/_variables 2.scss +0 -52
  77. data/_sass/font-awesome/_animated 2.scss +0 -150
  78. data/_sass/font-awesome/_animated.scss +0 -150
  79. data/_sass/font-awesome/_bordered 2.scss +0 -24
  80. data/_sass/font-awesome/_bordered.scss +0 -24
  81. data/_sass/font-awesome/_core 2.scss +0 -29
  82. data/_sass/font-awesome/_core.scss +0 -29
  83. data/_sass/font-awesome/_fa 2.scss +0 -3
  84. data/_sass/font-awesome/_fa.scss +0 -3
  85. data/_sass/font-awesome/_functions 2.scss +0 -8
  86. data/_sass/font-awesome/_functions.scss +0 -8
  87. data/_sass/font-awesome/_icons 2.scss +0 -15
  88. data/_sass/font-awesome/_icons.scss +0 -15
  89. data/_sass/font-awesome/_list 2.scss +0 -19
  90. data/_sass/font-awesome/_list.scss +0 -19
  91. data/_sass/font-awesome/_mixins 2.scss +0 -28
  92. data/_sass/font-awesome/_mixins.scss +0 -28
  93. data/_sass/font-awesome/_pulled 2.scss +0 -15
  94. data/_sass/font-awesome/_pulled.scss +0 -15
  95. data/_sass/font-awesome/_rotated-flipped 2.scss +0 -32
  96. data/_sass/font-awesome/_rotated-flipped.scss +0 -32
  97. data/_sass/font-awesome/_shims 2.scss +0 -2193
  98. data/_sass/font-awesome/_shims.scss +0 -2193
  99. data/_sass/font-awesome/_sizing 2.scss +0 -18
  100. data/_sass/font-awesome/_sizing.scss +0 -18
  101. data/_sass/font-awesome/_stacked 2.scss +0 -33
  102. data/_sass/font-awesome/_stacked.scss +0 -33
  103. data/_sass/font-awesome/_variables 2.scss +0 -5130
  104. data/_sass/font-awesome/_variables.scss +0 -5130
  105. data/_sass/font-awesome/_widths 2.scss +0 -12
  106. data/_sass/font-awesome/_widths.scss +0 -12
  107. data/_sass/font-awesome/brands 2.scss +0 -45
  108. data/_sass/font-awesome/brands.scss +0 -45
  109. data/_sass/font-awesome/fontawesome 2.scss +0 -18
  110. data/_sass/font-awesome/fontawesome.scss +0 -18
  111. data/_sass/font-awesome/regular 2.scss +0 -51
  112. data/_sass/font-awesome/regular.scss +0 -51
  113. data/_sass/font-awesome/solid 2.scss +0 -51
  114. data/_sass/font-awesome/solid.scss +0 -51
  115. data/_sass/font-awesome/v4-shims 2.scss +0 -11
  116. data/_sass/font-awesome/v4-shims.scss +0 -11
  117. data/_scripts/giscus-setup 2.js +0 -48
  118. data/assets/css/academicons.min 2.css +0 -1
  119. data/assets/css/academicons.min.css +0 -1
  120. data/assets/css/jekyll-pygments-themes-github 2.css +0 -209
  121. data/assets/css/jekyll-pygments-themes-native 2.css +0 -232
  122. data/assets/css/jupyter 2.css +0 -383
  123. data/assets/css/jupyter-grade3 2.css +0 -3758
  124. data/assets/css/jupyter-monokai 2.css +0 -3758
  125. data/assets/css/main 2.scss +0 -37
  126. data/assets/css/scholar-icons 2.css +0 -386
  127. data/assets/css/scholar-icons.css +0 -386
  128. data/assets/css/tailwind 2.css +0 -2
  129. data/assets/js/bibsearch 2.js +0 -70
  130. data/assets/js/calendar-setup 2.js +0 -16
  131. data/assets/js/common 2.js +0 -137
  132. data/assets/js/copy_code 2.js +0 -56
  133. data/assets/js/highlight-search-term 2.js +0 -110
  134. data/assets/js/jupyter_new_tab 2.js +0 -18
  135. data/assets/js/masonry 2.js +0 -12
  136. data/assets/js/nav-toggle 2.js +0 -102
  137. data/assets/js/no_defer 2.js +0 -31
  138. data/assets/js/progress-bar 2.js +0 -69
  139. data/assets/js/search/hotkeys-js/hotkeys.esm.min 2.js +0 -18
  140. data/assets/js/search/hotkeys-js/hotkeys.esm.min.js +0 -18
  141. data/assets/js/search/lit/decorators.min 2.js +0 -7
  142. data/assets/js/search/lit/decorators.min.js +0 -7
  143. data/assets/js/search/lit/directives/class-map.min.js +0 -7
  144. data/assets/js/search/lit/directives/join.min.js +0 -7
  145. data/assets/js/search/lit/directives/live.min.js +0 -7
  146. data/assets/js/search/lit/directives/ref.min.js +0 -7
  147. data/assets/js/search/lit/directives/repeat.min.js +0 -7
  148. data/assets/js/search/lit/directives/unsafe-html.min.js +0 -7
  149. data/assets/js/search/lit/index.min 2.js +0 -7
  150. data/assets/js/search/lit/index.min.js +0 -7
  151. data/assets/js/search/lit-element/lit-element.min 2.js +0 -12
  152. data/assets/js/search/lit-element/lit-element.min.js +0 -12
  153. data/assets/js/search/lit-html/directives/class-map.min.js +0 -22
  154. data/assets/js/search/lit-html/directives/join.min.js +0 -12
  155. data/assets/js/search/lit-html/directives/live.min.js +0 -28
  156. data/assets/js/search/lit-html/directives/ref.min.js +0 -32
  157. data/assets/js/search/lit-html/directives/repeat.min.js +0 -27
  158. data/assets/js/search/lit-html/directives/unsafe-html.min.js +0 -22
  159. data/assets/js/search/lit-html/is-server.min 2.js +0 -12
  160. data/assets/js/search/lit-html/is-server.min.js +0 -12
  161. data/assets/js/search/lit-html/lit-html.min 2.js +0 -12
  162. data/assets/js/search/lit-html/lit-html.min.js +0 -12
  163. data/assets/js/search/reactive-element/decorators/custom-element.min.js +0 -12
  164. data/assets/js/search/reactive-element/decorators/event-options.min.js +0 -12
  165. data/assets/js/search/reactive-element/decorators/property.min.js +0 -22
  166. data/assets/js/search/reactive-element/decorators/query-all.min.js +0 -17
  167. data/assets/js/search/reactive-element/decorators/query-assigned-elements.min.js +0 -17
  168. data/assets/js/search/reactive-element/decorators/query-assigned-nodes.min.js +0 -17
  169. data/assets/js/search/reactive-element/decorators/query-async.min.js +0 -17
  170. data/assets/js/search/reactive-element/decorators/query.min.js +0 -17
  171. data/assets/js/search/reactive-element/decorators/state.min.js +0 -27
  172. data/assets/js/search/reactive-element/reactive-element.min 2.js +0 -17
  173. data/assets/js/search/reactive-element/reactive-element.min.js +0 -17
  174. data/assets/js/tabs.min 2.js +0 -5
  175. data/assets/js/tabs.min.js +0 -5
  176. data/assets/js/theme 2.js +0 -329
  177. data/assets/js/tooltips-setup 2.js +0 -116
  178. data/assets/js/typograms 2.js +0 -1341
  179. data/assets/js/vanilla-back-to-top.min 2.js +0 -1
  180. data/assets/js/vanilla-back-to-top.min.js +0 -1
  181. data/assets/tailwind/app 2.css +0 -855
  182. data/assets/tailwind/bootstrap-compat.input 2.css +0 -54
  183. data/assets/tailwind/input 2.css +0 -2
  184. data/migrations/1.0.0_to_1.1.0 2.yml +0 -26
  185. data/migrations/1.1.0_to_1.2.0 2.yml +0 -17
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3e03872742a7411fd5ba44b1a008305dfec74cd228958a00c29d16304de11898
4
- data.tar.gz: a763fad9c51cecc3f5dae40d48440114c3527cabfd6480d1da3fe9be6594f6fc
3
+ metadata.gz: a15b5c9e5bcd706d7d8fe4905dc6808ff410a61e75ab5e9f56005d55701a09eb
4
+ data.tar.gz: d85d3073a73190a3de3d848f344a963de62a6ddc9820e8d5ef3a7d59a5892721
5
5
  SHA512:
6
- metadata.gz: 997292c0485633d0a626c747df34e035e651092351740bb277b5bd5b82dd48be6f375f31af7f2ad4002eb62fa42971649d1bf7996b590854ea1a89f5088d2791
7
- data.tar.gz: f8e22a4e64671fbf1f8e494dd5116e57d9e88464241855d1034fddb51bfa88c0942562b0d091a32efcdaf909f590c90890960fd72869533b83e80e8f1a54f06b
6
+ metadata.gz: 682d3c7b5226138717d8519612f8a619a72935dd901ec957375e0497edb1f8558e7ea54bb048d781d8c706e55b58241416488d2f22fa66943d9469db38a8f864
7
+ data.tar.gz: 8112481419f442d856e68349c4e58279fc53c37dd9a03460280b86a7389ce67c8ff2be1a40ff9364866030fe7f4987fb5976f60ce732c0527909e447f1f07dcc
data/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.0.3 - 2026-02-17
4
+
5
+ - Restricted gem packaging to tracked runtime files to prevent accidental inclusion of local/untracked artifacts.
6
+
7
+ ## 1.0.2 - 2026-02-17
8
+
9
+ - Extracted icon runtime ownership from core into plugin include wrappers.
10
+ - Removed duplicated search runtime payload ownership from core (`assets/js/search/**`).
11
+ - Switched back-to-top runtime to pinned CDN contract and fixed script load ordering.
12
+ - Replaced opaque `tabs.min.js` with provenance-tracked `tabs.js`.
13
+
3
14
  ## 1.0.1 - 2026-02-16
4
15
 
5
16
  - Fixed cache-bust asset lookup to resolve plugin assets from both Bundler git paths (`bundler/gems/*`) and RubyGems install paths (`gems/*`).
data/README.md CHANGED
@@ -9,6 +9,8 @@ Core runtime/theme gem for al-folio v1.x.
9
9
  - Provide shared theme layout/includes/runtime for starter sites
10
10
  - Delegate CV and Distill rendering to `al_folio_cv` and `al_folio_distill`
11
11
  - Delegate cookie consent runtime to `al_cookie`
12
+ - Delegate icon runtime to `al_icons`
13
+ - Delegate search runtime payload to `al_search`
12
14
  - Provide built-in utility tags/filters (`details`, `file_exists`, `hideCustomBibtex`, `remove_accents`)
13
15
  - Ship migration manifests consumed by `al_folio_upgrade`
14
16
  - Exclude legacy Bootstrap/MDB and plugin-owned duplicate runtime assets
@@ -33,9 +33,10 @@
33
33
  >
34
34
  {% endif %}
35
35
 
36
- <!-- Fonts & Icons -->
37
- <link defer rel="stylesheet" href="{{ '/assets/css/academicons.min.css' | relative_url | bust_file_cache }}">
38
- <link defer rel="stylesheet" href="{{ '/assets/css/scholar-icons.css' | relative_url | bust_file_cache }}">
36
+ <!-- Icons -->
37
+ {% if site.plugins contains 'al_icons' %}
38
+ {% include plugins/al_icons_styles.liquid %}
39
+ {% endif %}
39
40
  <link
40
41
  defer
41
42
  rel="stylesheet"
@@ -0,0 +1,4 @@
1
+ {% comment %}
2
+ Parse-safe wrapper for al_icons custom tag.
3
+ {% endcomment %}
4
+ {% al_icons_styles %}
@@ -98,12 +98,20 @@
98
98
 
99
99
  {% if page.tabs %}
100
100
  <!-- Jekyll Tabs -->
101
- <script src="{{ '/assets/js/tabs.min.js' | relative_url | bust_file_cache }}"></script>
101
+ <script src="{{ '/assets/js/tabs.js' | relative_url | bust_file_cache }}"></script>
102
102
  {% endif %}
103
103
 
104
104
  {% if site.back_to_top %}
105
105
  <!-- Back to Top -->
106
- <script src="{{ '/assets/js/vanilla-back-to-top.min.js' | relative_url | bust_file_cache }}"></script>
106
+ {% assign back_to_top_js = site.third_party_libraries['vanilla-back-to-top'].url.js
107
+ | default: 'https://cdn.jsdelivr.net/npm/vanilla-back-to-top@7.2.1/dist/vanilla-back-to-top.min.js'
108
+ %}
109
+ {% assign back_to_top_integrity = site.third_party_libraries['vanilla-back-to-top'].integrity.js %}
110
+ {% if back_to_top_integrity %}
111
+ <script src="{{ back_to_top_js }}" integrity="{{ back_to_top_integrity }}" crossorigin="anonymous"></script>
112
+ {% else %}
113
+ <script src="{{ back_to_top_js }}"></script>
114
+ {% endif %}
107
115
  <script>
108
116
  addBackToTop();
109
117
  </script>
data/assets/css/main.scss CHANGED
@@ -31,7 +31,3 @@
31
31
  @use "tabs";
32
32
  @use "teachings";
33
33
  @use "typograms";
34
- @use "font-awesome/fontawesome";
35
- @use "font-awesome/brands";
36
- @use "font-awesome/solid";
37
- @use "font-awesome/regular";
data/assets/js/tabs.js ADDED
@@ -0,0 +1,242 @@
1
+ // Source: jekyll-tabs gem (v1.2.1) docs/tabs.js
2
+ // Provenance: copied during al-folio v1 ownership cleanup
3
+ /**
4
+ * Configure the tabs behavior.
5
+ */
6
+ const jekyllTabsConfiguration = {
7
+ syncTabsWithSameLabels: false,
8
+ activateTabFromUrl: false,
9
+ addCopyToClipboardButton: false,
10
+ copyToClipboardButtonHtml: '<button>Copy</button>',
11
+ };
12
+
13
+ const jekyllTabsModule = (function() {
14
+
15
+ /**
16
+ * Remove all "active" classes on li elements that belong to the given ul element.
17
+ */
18
+ const removeActiveClasses = function (ulElement) {
19
+ const liElements = ulElement.querySelectorAll('ul > li');
20
+
21
+ Array.prototype.forEach.call(liElements, function(liElement) {
22
+ liElement.classList.remove('active');
23
+ });
24
+ }
25
+
26
+ /**
27
+ * Get the element position looking from the perspective of the parent element.
28
+ *
29
+ * Considering the following html:
30
+ *
31
+ * <ul>
32
+ * <li class="zero">0</li>
33
+ * <li class="one">1</li>
34
+ * <li class="two">2</li>
35
+ * </ul>
36
+ *
37
+ * Then getChildPosition(document.querySelector('.one')) would return 1.
38
+ */
39
+ const getChildPosition = function (element) {
40
+ const parent = element.parentNode;
41
+
42
+ for (let i = 0; i < parent.children.length; i++) {
43
+ if (parent.children[i] === element) {
44
+ return i;
45
+ }
46
+ }
47
+
48
+ throw new Error('No parent found');
49
+ }
50
+
51
+ /**
52
+ * Returns a list of elements of the given tag that contains the given text.
53
+ */
54
+ const findElementsContaining = function(elementTag, text) {
55
+ const elements = document.querySelectorAll(elementTag);
56
+ const elementsThatContainText = [];
57
+
58
+ for (let i = 0; i < elements.length; i++) {
59
+ const element = elements[i];
60
+
61
+ if (element.textContent.includes(text)) {
62
+ elementsThatContainText.push(element);
63
+ }
64
+ }
65
+
66
+ return elementsThatContainText;
67
+ }
68
+
69
+ /**
70
+ * Handle adding or removing active classes on tab list items.
71
+ */
72
+ const handleTabClicked = function(link) {
73
+ const liTab = link.parentNode;
74
+ const ulTab = liTab.parentNode;
75
+ const liPositionInUl = getChildPosition(liTab);
76
+
77
+ if (liTab.className.includes('active')) {
78
+ return;
79
+ }
80
+
81
+ const tabContentId = ulTab.getAttribute('data-tab');
82
+ const tabContentElement = document.getElementById(tabContentId);
83
+
84
+ // Remove all "active" classes first.
85
+ removeActiveClasses(ulTab);
86
+ removeActiveClasses(tabContentElement);
87
+
88
+ // Then add back active classes depending on the tab (ul element) that was clicked on.
89
+ tabContentElement.querySelectorAll('ul.tab-content > li')[liPositionInUl].classList.add('active');
90
+ liTab.classList.add('active');
91
+ }
92
+
93
+ /**
94
+ * Create a javascript element from html markup.
95
+ */
96
+ const createElementFromHtml = function(html) {
97
+ const template = document.createElement('template');
98
+ template.innerHTML = html.trim();
99
+
100
+ return template.content.firstChild;
101
+ }
102
+
103
+ /**
104
+ * Copy the given text in the clipboard.
105
+ *
106
+ * See https://stackoverflow.com/questions/51805395/navigator-clipboard-is-undefined
107
+ */
108
+ const copyToClipboard = function(text) {
109
+ if (navigator.clipboard && window.isSecureContext) {
110
+ navigator.clipboard.writeText(text);
111
+ } else {
112
+ // Use the 'out of viewport hidden text area' trick
113
+ const textArea = document.createElement("textarea");
114
+ textArea.value = text;
115
+
116
+ // Move textarea out of the viewport so it's not visible
117
+ textArea.style.position = "absolute";
118
+ textArea.style.left = "-999999px";
119
+
120
+ document.body.prepend(textArea);
121
+ textArea.select();
122
+
123
+ try {
124
+ document.execCommand('copy');
125
+ } catch (error) {
126
+ console.error(error);
127
+ } finally {
128
+ textArea.remove();
129
+ }
130
+ };
131
+ }
132
+
133
+ /**
134
+ * Open the tab specified by a combination of url anchor (#) and query param (?active_tab).
135
+ *
136
+ * For example, considering url http://your-jekyll-website.com/some-page/?active_tab=tab-2#my_tabs
137
+ * Then the tabs with name 'my_tabs' would see tab with label 'tab 2' automatically open.
138
+ */
139
+ const activateTabFromUrl = function() {
140
+ const tabsAnchor = window.location.hash.substring(1);
141
+
142
+ if (!tabsAnchor) {
143
+ return;
144
+ }
145
+
146
+ const targetedTabs = document.getElementById(tabsAnchor);
147
+
148
+ if (!targetedTabs) {
149
+ return;
150
+ }
151
+
152
+ const urlParams = new URLSearchParams(window.location.search);
153
+ const tabIdToActivate = urlParams.get('active_tab');
154
+
155
+ if (!tabIdToActivate) {
156
+ return;
157
+ }
158
+
159
+ const tabLink = targetedTabs.querySelector('li#' + tabIdToActivate + ' > a');
160
+
161
+ if (!tabLink) {
162
+ return;
163
+ }
164
+
165
+ jekyllTabsModule.handleTabClicked(tabLink);
166
+ }
167
+
168
+ /**
169
+ * Update the url when clicking on a tab. See method activateTabFromUrl above.
170
+ */
171
+ const updateUrlWithActiveTab = function(link) {
172
+ const liTab = link.parentNode;
173
+ const ulTab = liTab.parentNode;
174
+
175
+ const searchParams = new URLSearchParams(window.location.search);
176
+ searchParams.set('active_tab', liTab.id);
177
+
178
+ const updatedUrl = window.location.pathname + '?' + searchParams.toString() + '#' + ulTab.id;
179
+ history.replaceState(null, '', updatedUrl);
180
+ };
181
+
182
+ return {
183
+ findElementsContaining,
184
+ handleTabClicked,
185
+ createElementFromHtml,
186
+ copyToClipboard,
187
+ activateTabFromUrl,
188
+ updateUrlWithActiveTab,
189
+ };
190
+
191
+ })();
192
+
193
+ window.addEventListener('load', function () {
194
+ const tabLinks = document.querySelectorAll('ul.tab > li > a');
195
+
196
+ Array.prototype.forEach.call(tabLinks, function(link) {
197
+ link.addEventListener('click', function (event) {
198
+ event.preventDefault();
199
+
200
+ jekyllTabsModule.handleTabClicked(link);
201
+
202
+ if (jekyllTabsConfiguration.activateTabFromUrl) {
203
+ jekyllTabsModule.updateUrlWithActiveTab(link);
204
+ }
205
+
206
+ if (jekyllTabsConfiguration.syncTabsWithSameLabels) {
207
+ const linksWithSameName = jekyllTabsModule.findElementsContaining('a', link.textContent);
208
+
209
+ for(let i = 0; i < linksWithSameName.length; i++) {
210
+ if (linksWithSameName[i] !== link) {
211
+ jekyllTabsModule.handleTabClicked(linksWithSameName[i]);
212
+ }
213
+ }
214
+ }
215
+ }, false);
216
+ });
217
+
218
+ if (jekyllTabsConfiguration.addCopyToClipboardButton) {
219
+ const preElements = document.querySelectorAll('ul.tab-content > li pre');
220
+
221
+ for(let i = 0; i < preElements.length; i++) {
222
+ const preElement = preElements[i];
223
+ const preParentNode = preElement.parentNode;
224
+ const button = jekyllTabsModule.createElementFromHtml(jekyllTabsConfiguration.copyToClipboardButtonHtml);
225
+
226
+ preParentNode.style.position = 'relative';
227
+ button.style.position = 'absolute';
228
+ button.style.top = '0px';
229
+ button.style.right = '0px';
230
+
231
+ preParentNode.appendChild(button);
232
+
233
+ button.addEventListener('click', function () {
234
+ jekyllTabsModule.copyToClipboard(preElement.innerText);
235
+ });
236
+ }
237
+ }
238
+
239
+ if (jekyllTabsConfiguration.activateTabFromUrl) {
240
+ jekyllTabsModule.activateTabFromUrl();
241
+ }
242
+ });
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module AlFolioCore
4
- VERSION = "1.0.1"
4
+ VERSION = "1.0.3"
5
5
  end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: al_folio_core
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - al-folio maintainers
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2026-02-16 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: jekyll
@@ -95,274 +94,101 @@ files:
95
94
  - CHANGELOG.md
96
95
  - LICENSE
97
96
  - README.md
98
- - _includes/audio 2.liquid
99
97
  - _includes/audio.liquid
100
- - _includes/bib_search 2.liquid
101
98
  - _includes/bib_search.liquid
102
- - _includes/calendar 2.liquid
103
99
  - _includes/calendar.liquid
104
- - _includes/citation 2.liquid
105
100
  - _includes/citation.liquid
106
- - _includes/course_schedule 2.liquid
107
101
  - _includes/course_schedule.liquid
108
- - _includes/courses 2.liquid
109
102
  - _includes/courses.liquid
110
- - _includes/disqus 2.liquid
111
103
  - _includes/disqus.liquid
112
- - _includes/figure 2.liquid
113
104
  - _includes/figure.liquid
114
- - _includes/footer 2.liquid
115
105
  - _includes/footer.liquid
116
- - _includes/giscus 2.liquid
117
106
  - _includes/giscus.liquid
118
- - _includes/head 2.liquid
119
107
  - _includes/head.liquid
120
- - _includes/header 2.liquid
121
108
  - _includes/header.liquid
122
- - _includes/latest_posts 2.liquid
123
109
  - _includes/latest_posts.liquid
124
- - _includes/metadata 2.liquid
125
110
  - _includes/metadata.liquid
126
- - _includes/news 2.liquid
127
111
  - _includes/news.liquid
128
- - _includes/newsletter 2.liquid
129
112
  - _includes/newsletter.liquid
130
- - _includes/pagination 2.liquid
131
113
  - _includes/pagination.liquid
132
- - _includes/plugins/al_analytics_scripts 2.liquid
133
114
  - _includes/plugins/al_analytics_scripts.liquid
134
- - _includes/plugins/al_charts_scripts 2.liquid
135
115
  - _includes/plugins/al_charts_scripts.liquid
136
- - _includes/plugins/al_comments 2.liquid
137
116
  - _includes/plugins/al_comments.liquid
138
- - _includes/plugins/al_cookie_scripts 2.liquid
139
117
  - _includes/plugins/al_cookie_scripts.liquid
140
- - _includes/plugins/al_cookie_styles 2.liquid
141
118
  - _includes/plugins/al_cookie_styles.liquid
142
- - _includes/plugins/al_img_tools_scripts 2.liquid
119
+ - _includes/plugins/al_icons_styles.liquid
143
120
  - _includes/plugins/al_img_tools_scripts.liquid
144
- - _includes/plugins/al_img_tools_styles 2.liquid
145
121
  - _includes/plugins/al_img_tools_styles.liquid
146
- - _includes/plugins/al_math_scripts 2.liquid
147
122
  - _includes/plugins/al_math_scripts.liquid
148
- - _includes/plugins/al_math_styles 2.liquid
149
123
  - _includes/plugins/al_math_styles.liquid
150
- - _includes/plugins/al_newsletter_form_center 2.liquid
151
124
  - _includes/plugins/al_newsletter_form_center.liquid
152
- - _includes/plugins/al_newsletter_form_center_margin 2.liquid
153
125
  - _includes/plugins/al_newsletter_form_center_margin.liquid
154
- - _includes/plugins/al_newsletter_form_left 2.liquid
155
126
  - _includes/plugins/al_newsletter_form_left.liquid
156
- - _includes/plugins/al_newsletter_scripts 2.liquid
157
127
  - _includes/plugins/al_newsletter_scripts.liquid
158
- - _includes/plugins/al_search_assets 2.liquid
159
128
  - _includes/plugins/al_search_assets.liquid
160
- - _includes/projects 2.liquid
161
129
  - _includes/projects.liquid
162
- - _includes/projects_horizontal 2.liquid
163
130
  - _includes/projects_horizontal.liquid
164
- - _includes/related_posts 2.liquid
165
131
  - _includes/related_posts.liquid
166
- - _includes/repository/repo 2.liquid
167
132
  - _includes/repository/repo.liquid
168
- - _includes/repository/repo_trophies 2.liquid
169
133
  - _includes/repository/repo_trophies.liquid
170
- - _includes/repository/repo_user 2.liquid
171
134
  - _includes/repository/repo_user.liquid
172
- - _includes/scripts 2.liquid
173
135
  - _includes/scripts.liquid
174
- - _includes/selected_papers 2.liquid
175
136
  - _includes/selected_papers.liquid
176
- - _includes/video 2.liquid
177
137
  - _includes/video.liquid
178
- - _layouts/about 2.liquid
179
138
  - _layouts/about.liquid
180
- - _layouts/archive 2.liquid
181
139
  - _layouts/archive.liquid
182
- - _layouts/bib 2.liquid
183
140
  - _layouts/bib.liquid
184
- - _layouts/book-review 2.liquid
185
141
  - _layouts/book-review.liquid
186
- - _layouts/book-shelf 2.liquid
187
142
  - _layouts/book-shelf.liquid
188
- - _layouts/course 2.liquid
189
143
  - _layouts/course.liquid
190
- - _layouts/cv 2.liquid
191
144
  - _layouts/cv.liquid
192
- - _layouts/default 2.liquid
193
145
  - _layouts/default.liquid
194
- - _layouts/distill 2.liquid
195
146
  - _layouts/distill.liquid
196
- - _layouts/none 2.liquid
197
147
  - _layouts/none.liquid
198
- - _layouts/page 2.liquid
199
148
  - _layouts/page.liquid
200
- - _layouts/post 2.liquid
201
149
  - _layouts/post.liquid
202
- - _layouts/profiles 2.liquid
203
150
  - _layouts/profiles.liquid
204
- - _sass/_blog 2.scss
205
151
  - _sass/_blog.scss
206
- - _sass/_components 2.scss
207
152
  - _sass/_components.scss
208
- - _sass/_footer 2.scss
209
153
  - _sass/_footer.scss
210
- - _sass/_layout 2.scss
211
154
  - _sass/_layout.scss
212
- - _sass/_navbar 2.scss
213
155
  - _sass/_navbar.scss
214
- - _sass/_publications 2.scss
215
156
  - _sass/_publications.scss
216
- - _sass/_tabs 2.scss
217
157
  - _sass/_tabs.scss
218
- - _sass/_teachings 2.scss
219
158
  - _sass/_teachings.scss
220
- - _sass/_themes 2.scss
221
159
  - _sass/_themes.scss
222
- - _sass/_typograms 2.scss
223
160
  - _sass/_typograms.scss
224
- - _sass/_typography 2.scss
225
161
  - _sass/_typography.scss
226
- - _sass/_utilities 2.scss
227
162
  - _sass/_utilities.scss
228
- - _sass/_variables 2.scss
229
163
  - _sass/_variables.scss
230
- - _sass/font-awesome/_animated 2.scss
231
- - _sass/font-awesome/_animated.scss
232
- - _sass/font-awesome/_bordered 2.scss
233
- - _sass/font-awesome/_bordered.scss
234
- - _sass/font-awesome/_core 2.scss
235
- - _sass/font-awesome/_core.scss
236
- - _sass/font-awesome/_fa 2.scss
237
- - _sass/font-awesome/_fa.scss
238
- - _sass/font-awesome/_functions 2.scss
239
- - _sass/font-awesome/_functions.scss
240
- - _sass/font-awesome/_icons 2.scss
241
- - _sass/font-awesome/_icons.scss
242
- - _sass/font-awesome/_list 2.scss
243
- - _sass/font-awesome/_list.scss
244
- - _sass/font-awesome/_mixins 2.scss
245
- - _sass/font-awesome/_mixins.scss
246
- - _sass/font-awesome/_pulled 2.scss
247
- - _sass/font-awesome/_pulled.scss
248
- - _sass/font-awesome/_rotated-flipped 2.scss
249
- - _sass/font-awesome/_rotated-flipped.scss
250
- - _sass/font-awesome/_shims 2.scss
251
- - _sass/font-awesome/_shims.scss
252
- - _sass/font-awesome/_sizing 2.scss
253
- - _sass/font-awesome/_sizing.scss
254
- - _sass/font-awesome/_stacked 2.scss
255
- - _sass/font-awesome/_stacked.scss
256
- - _sass/font-awesome/_variables 2.scss
257
- - _sass/font-awesome/_variables.scss
258
- - _sass/font-awesome/_widths 2.scss
259
- - _sass/font-awesome/_widths.scss
260
- - _sass/font-awesome/brands 2.scss
261
- - _sass/font-awesome/brands.scss
262
- - _sass/font-awesome/fontawesome 2.scss
263
- - _sass/font-awesome/fontawesome.scss
264
- - _sass/font-awesome/regular 2.scss
265
- - _sass/font-awesome/regular.scss
266
- - _sass/font-awesome/solid 2.scss
267
- - _sass/font-awesome/solid.scss
268
- - _sass/font-awesome/v4-shims 2.scss
269
- - _sass/font-awesome/v4-shims.scss
270
- - _scripts/giscus-setup 2.js
271
164
  - _scripts/giscus-setup.js
272
- - assets/css/academicons.min 2.css
273
- - assets/css/academicons.min.css
274
- - assets/css/jekyll-pygments-themes-github 2.css
275
165
  - assets/css/jekyll-pygments-themes-github.css
276
- - assets/css/jekyll-pygments-themes-native 2.css
277
166
  - assets/css/jekyll-pygments-themes-native.css
278
- - assets/css/jupyter 2.css
279
- - assets/css/jupyter-grade3 2.css
280
167
  - assets/css/jupyter-grade3.css
281
- - assets/css/jupyter-monokai 2.css
282
168
  - assets/css/jupyter-monokai.css
283
169
  - assets/css/jupyter.css
284
- - assets/css/main 2.scss
285
170
  - assets/css/main.scss
286
- - assets/css/scholar-icons 2.css
287
- - assets/css/scholar-icons.css
288
- - assets/css/tailwind 2.css
289
171
  - assets/css/tailwind.css
290
- - assets/js/bibsearch 2.js
291
172
  - assets/js/bibsearch.js
292
- - assets/js/calendar-setup 2.js
293
173
  - assets/js/calendar-setup.js
294
- - assets/js/common 2.js
295
174
  - assets/js/common.js
296
- - assets/js/copy_code 2.js
297
175
  - assets/js/copy_code.js
298
- - assets/js/highlight-search-term 2.js
299
176
  - assets/js/highlight-search-term.js
300
- - assets/js/jupyter_new_tab 2.js
301
177
  - assets/js/jupyter_new_tab.js
302
- - assets/js/masonry 2.js
303
178
  - assets/js/masonry.js
304
- - assets/js/nav-toggle 2.js
305
179
  - assets/js/nav-toggle.js
306
- - assets/js/no_defer 2.js
307
180
  - assets/js/no_defer.js
308
- - assets/js/progress-bar 2.js
309
181
  - assets/js/progress-bar.js
310
- - assets/js/search/hotkeys-js/hotkeys.esm.min 2.js
311
- - assets/js/search/hotkeys-js/hotkeys.esm.min.js
312
- - assets/js/search/lit-element/lit-element.min 2.js
313
- - assets/js/search/lit-element/lit-element.min.js
314
- - assets/js/search/lit-html/directives/class-map.min.js
315
- - assets/js/search/lit-html/directives/join.min.js
316
- - assets/js/search/lit-html/directives/live.min.js
317
- - assets/js/search/lit-html/directives/ref.min.js
318
- - assets/js/search/lit-html/directives/repeat.min.js
319
- - assets/js/search/lit-html/directives/unsafe-html.min.js
320
- - assets/js/search/lit-html/is-server.min 2.js
321
- - assets/js/search/lit-html/is-server.min.js
322
- - assets/js/search/lit-html/lit-html.min 2.js
323
- - assets/js/search/lit-html/lit-html.min.js
324
- - assets/js/search/lit/decorators.min 2.js
325
- - assets/js/search/lit/decorators.min.js
326
- - assets/js/search/lit/directives/class-map.min.js
327
- - assets/js/search/lit/directives/join.min.js
328
- - assets/js/search/lit/directives/live.min.js
329
- - assets/js/search/lit/directives/ref.min.js
330
- - assets/js/search/lit/directives/repeat.min.js
331
- - assets/js/search/lit/directives/unsafe-html.min.js
332
- - assets/js/search/lit/index.min 2.js
333
- - assets/js/search/lit/index.min.js
334
- - assets/js/search/reactive-element/decorators/custom-element.min.js
335
- - assets/js/search/reactive-element/decorators/event-options.min.js
336
- - assets/js/search/reactive-element/decorators/property.min.js
337
- - assets/js/search/reactive-element/decorators/query-all.min.js
338
- - assets/js/search/reactive-element/decorators/query-assigned-elements.min.js
339
- - assets/js/search/reactive-element/decorators/query-assigned-nodes.min.js
340
- - assets/js/search/reactive-element/decorators/query-async.min.js
341
- - assets/js/search/reactive-element/decorators/query.min.js
342
- - assets/js/search/reactive-element/decorators/state.min.js
343
- - assets/js/search/reactive-element/reactive-element.min 2.js
344
- - assets/js/search/reactive-element/reactive-element.min.js
345
- - assets/js/tabs.min 2.js
346
- - assets/js/tabs.min.js
347
- - assets/js/theme 2.js
182
+ - assets/js/tabs.js
348
183
  - assets/js/theme.js
349
- - assets/js/tooltips-setup 2.js
350
184
  - assets/js/tooltips-setup.js
351
- - assets/js/typograms 2.js
352
185
  - assets/js/typograms.js
353
- - assets/js/vanilla-back-to-top.min 2.js
354
- - assets/js/vanilla-back-to-top.min.js
355
- - assets/tailwind/app 2.css
356
186
  - assets/tailwind/app.css
357
- - assets/tailwind/bootstrap-compat.input 2.css
358
187
  - assets/tailwind/bootstrap-compat.input.css
359
- - assets/tailwind/input 2.css
360
188
  - assets/tailwind/input.css
361
189
  - lib/al_folio_core.rb
362
190
  - lib/al_folio_core/version.rb
363
- - migrations/1.0.0_to_1.1.0 2.yml
364
191
  - migrations/1.0.0_to_1.1.0.yml
365
- - migrations/1.1.0_to_1.2.0 2.yml
366
192
  - migrations/1.1.0_to_1.2.0.yml
367
193
  homepage: https://github.com/al-org-dev/al-folio-core
368
194
  licenses:
@@ -371,7 +197,6 @@ metadata:
371
197
  allowed_push_host: https://rubygems.org
372
198
  homepage_uri: https://github.com/al-org-dev/al-folio-core
373
199
  source_code_uri: https://github.com/al-org-dev/al-folio-core
374
- post_install_message:
375
200
  rdoc_options: []
376
201
  require_paths:
377
202
  - lib
@@ -386,8 +211,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
386
211
  - !ruby/object:Gem::Version
387
212
  version: '0'
388
213
  requirements: []
389
- rubygems_version: 3.4.10
390
- signing_key:
214
+ rubygems_version: 4.0.6
391
215
  specification_version: 4
392
216
  summary: Core runtime plugin for al-folio v1.x
393
217
  test_files: []
@@ -1,30 +0,0 @@
1
- <figure>
2
- <audio
3
- src="{% if include.cache_bust %}{{ include.path | relative_url | bust_file_cache }}{% else %}{{ include.path | relative_url }}{% endif %}"
4
- {% if include.class %}
5
- class="{{ include.class }}"
6
- {% endif %}
7
- {% if include.alt %}
8
- alt="{{ include.alt }}"
9
- {% endif %}
10
- {% if include.title %}
11
- title="{{ include.title }}"
12
- {% endif %}
13
- {% if include.autoplay %}
14
- autoplay
15
- {% endif %}
16
- {% if include.controls %}
17
- controls
18
- {% endif %}
19
- {% if include.loop %}
20
- loop
21
- {% endif %}
22
- {% if include.muted %}
23
- muted
24
- {% endif %}
25
- />
26
-
27
- {% if include.caption %}
28
- <figcaption class="caption">{{ include.caption }}</figcaption>
29
- {% endif %}
30
- </figure>