@columbia-libraries/cul-toolkit 5.1.3 → 5.3.0

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.
@@ -1,284 +1,50 @@
1
1
  /*!
2
- * CUL Menu v5.1.3
2
+ * CUL Menu v5.3.0
3
3
  * (c) 2026
4
4
  */
5
- const b = [
6
- {
7
- href: "https://library.columbia.edu/libraries.html",
8
- value: "Libraries & Affiliates"
9
- },
10
- {
11
- href: "https://library.columbia.edu/libraries/avery.html",
12
- value: "Avery Architectural & Fine Arts Library"
13
- },
14
- {
15
- href: "https://library.columbia.edu/libraries/burke.html",
16
- value: "Burke Library at Union Theological Seminary"
17
- },
18
- {
19
- href: "https://library.columbia.edu/libraries/business.html",
20
- value: "Business & Economics Library in Uris"
21
- },
22
- {
23
- href: "https://library.columbia.edu/libraries/business-manhattanville.html",
24
- value: "Business Library at Manhattanville"
25
- },
26
- {
27
- href: "https://library.columbia.edu/libraries/butler.html",
28
- value: "Butler Library"
29
- },
30
- {
31
- href: "https://library.columbia.edu/libraries/eastasian.html",
32
- value: "C.V. Starr East Asian Library"
33
- },
34
- {
35
- href: "https://library.columbia.edu/libraries/music.html",
36
- value: "Gabe M. Wiener Music & Arts Library"
37
- },
38
- {
39
- href: "https://library.cumc.columbia.edu/",
40
- value: "Health Sciences Library"
41
- },
42
- {
43
- href: "https://library.columbia.edu/libraries/journalism.html",
44
- value: "Journalism Library"
45
- },
46
- {
47
- href: "https://library.columbia.edu/libraries/lehman.html",
48
- value: "Lehman Social Sciences Library"
49
- },
50
- {
51
- href: "http://www.law.columbia.edu/library/",
52
- value: "Li Lu Law Library"
53
- },
54
- {
55
- href: "https://library.columbia.edu/libraries/math.html",
56
- value: "Mathematics Library"
57
- },
58
- {
59
- href: "https://library.columbia.edu/libraries/undergraduate.html",
60
- value: "Milstein Undergraduate Library"
61
- },
62
- {
63
- href: "https://library.columbia.edu/libraries/rbml.html",
64
- value: "Rare Book & Manuscript Library"
65
- },
66
- {
67
- href: "https://library.columbia.edu/libraries/science-engineering.html",
68
- value: "Science & Engineering Library"
69
- },
70
- {
71
- href: "https://library.columbia.edu/libraries/social-work.html",
72
- value: "Social Work Library"
73
- }
74
- ], A = [
75
- {
76
- href: "https://library.columbia.edu/collections.html",
77
- value: "About Our Collections"
78
- },
79
- {
80
- href: "https://academiccommons.columbia.edu/",
81
- value: "Academic Commons"
82
- },
83
- {
84
- href: "https://library.columbia.edu/collections/archives-portal.html",
85
- value: "Archival Collections"
86
- },
87
- {
88
- href: "https://resolver.library.columbia.edu/clio",
89
- value: "CLIO: Columbia Libraries Catalog"
90
- },
91
- {
92
- href: "https://library.columbia.edu/about/policies/collection-development.html",
93
- value: "Collection Development"
94
- },
95
- {
96
- href: "https://library.columbia.edu/collections/digital-collections.html",
97
- value: "Digital Collections & Exhibitions"
98
- },
99
- {
100
- href: "https://library.columbia.edu/collections/eresources.html",
101
- value: "E-Resources"
102
- },
103
- {
104
- href: "https://library.columbia.edu/collections/oral-history-portal.html",
105
- value: "Oral History Collections"
106
- },
107
- {
108
- href: "https://resolver.library.columbia.edu/lweb0004",
109
- value: "Recommend a Title for Purchase"
110
- },
111
- {
112
- href: "https://library.columbia.edu/about/policies/collection-development/repatriation-return.html",
113
- value: "Repatriation"
114
- },
115
- {
116
- href: "https://library.columbia.edu/about/staff/subject-specialists-by-subject.html",
117
- value: "Subject Specialists"
118
- }
119
- ], n = [
120
- {
121
- href: "https://library.columbia.edu/about.html",
122
- value: "About the Libraries"
123
- },
124
- {
125
- href: "https://library.columbia.edu/about/jobs-internships.html",
126
- value: "Jobs & Internships"
127
- },
128
- {
129
- href: "https://library.columbia.edu/about/news/alert.html",
130
- value: "Library Status Updates"
131
- },
132
- {
133
- href: "https://library.columbia.edu/about/news.html",
134
- value: "News"
135
- },
136
- {
137
- href: "https://library.columbia.edu/about/values.html",
138
- value: "Our Values & Commitment in Action"
139
- },
140
- {
141
- href: "https://library.columbia.edu/about/policies.html",
142
- value: "Policies"
143
- },
144
- {
145
- href: "https://library.columbia.edu/about/staff.html",
146
- value: "Staff"
147
- },
148
- {
149
- href: "https://strategicdirections.library.columbia.edu/",
150
- value: "Strategic Directions"
151
- },
152
- {
153
- href: "https://library.columbia.edu/about/student_advisory_committee.html",
154
- value: "Student Library Advisory Committee"
155
- }
156
- ], u = {
157
- "Services & Tools": [
158
- {
159
- href: "https://library.columbia.edu/services.html",
160
- value: "Services & Tools"
161
- },
162
- {
163
- href: "https://library.columbia.edu/services/faq.html",
164
- value: "FAQ"
165
- },
166
- {
167
- href: "https://library.columbia.edu/using-libraries/alumni.html",
168
- value: "For Alumni"
169
- },
170
- {
171
- href: "https://library.columbia.edu/services/faculty.html",
172
- value: "For Faculty"
173
- },
174
- {
175
- href: "https://library.columbia.edu/services.html#audience=student",
176
- value: "For Students"
177
- },
178
- {
179
- href: "https://library.columbia.edu/using-libraries/visitors.html",
180
- value: "For Visitors"
181
- }
182
- ],
5
+ const b = [{ href: "https://library.columbia.edu/libraries.html", value: "Libraries & Affiliates" }, { href: "https://library.columbia.edu/libraries/avery.html", value: "Avery Architectural & Fine Arts Library" }, { href: "https://library.columbia.edu/libraries/burke.html", value: "Burke Library at Union Theological Seminary" }, { href: "https://library.columbia.edu/libraries/business.html", value: "Business & Economics Library in Uris" }, { href: "https://library.columbia.edu/libraries/business-manhattanville.html", value: "Business Library at Manhattanville" }, { href: "https://library.columbia.edu/libraries/butler.html", value: "Butler Library" }, { href: "https://library.columbia.edu/libraries/eastasian.html", value: "C.V. Starr East Asian Library" }, { href: "https://library.columbia.edu/libraries/music.html", value: "Gabe M. Wiener Music & Arts Library" }, { href: "https://library.cumc.columbia.edu/", value: "Health Sciences Library" }, { href: "https://library.columbia.edu/libraries/journalism.html", value: "Journalism Library" }, { href: "https://library.columbia.edu/libraries/lehman.html", value: "Lehman Social Sciences Library" }, { href: "http://www.law.columbia.edu/library/", value: "Li Lu Law Library" }, { href: "https://library.columbia.edu/libraries/math.html", value: "Mathematics Library" }, { href: "https://library.columbia.edu/libraries/rbml.html", value: "Rare Book & Manuscript Library" }, { href: "https://library.columbia.edu/libraries/science-engineering.html", value: "Science & Engineering Library" }, { href: "https://library.columbia.edu/libraries/social-work.html", value: "Social Work Library" }], n = [{ href: "https://library.columbia.edu/collections.html", value: "About Our Collections" }, { href: "https://academiccommons.columbia.edu/", value: "Academic Commons" }, { href: "https://library.columbia.edu/collections/archives-portal.html", value: "Archival Collections" }, { href: "https://resolver.library.columbia.edu/clio", value: "CLIO: Columbia Libraries Catalog" }, { href: "https://library.columbia.edu/about/policies/collection-development.html", value: "Collection Development" }, { href: "https://dlc.library.columbia.edu", value: "Digital Collections" }, { href: "https://library.columbia.edu/collections/eresources.html", value: "E-Resources" }, { href: "https://resolver.library.columbia.edu/lweb0004", value: "Recommend a Title for Purchase" }, { href: "https://library.columbia.edu/about/policies/collection-development/repatriation-return.html", value: "Repatriation" }, { href: "https://library.columbia.edu/about/staff/subject-specialists-by-subject.html", value: "Subject Specialists" }], u = [{ href: "https://library.columbia.edu/about.html", value: "About the Libraries" }, { href: "https://library.columbia.edu/about/jobs-internships.html", value: "Jobs & Internships" }, { href: "https://library.columbia.edu/about/news/alert.html", value: "Library Status Updates" }, { href: "https://library.columbia.edu/about/news.html", value: "News" }, { href: "https://library.columbia.edu/about/values.html", value: "Our Values & Commitment in Action" }, { href: "https://library.columbia.edu/about/policies.html", value: "Policies" }, { href: "https://library.columbia.edu/about/staff.html", value: "Staff" }, { href: "https://strategicdirections.library.columbia.edu/", value: "Strategic Directions" }, { href: "https://library.columbia.edu/about/student_advisory_committee.html", value: "Student Library Advisory Committee" }], A = {
6
+ "Services & Tools": [{ href: "https://library.columbia.edu/services.html", value: "Services & Tools" }, { href: "https://library.columbia.edu/using-libraries/alumni.html", value: "For Alumni" }, { href: "https://library.columbia.edu/services/faculty.html", value: "For Faculty" }, { href: "https://library.columbia.edu/services.html#audience=student", value: "For Students" }, { href: "https://library.columbia.edu/using-libraries/visitors.html", value: "For Visitors" }],
183
7
  Libraries: b,
184
- Collections: A,
185
- "Using the Libraries": [
186
- {
187
- href: "https://library.columbia.edu/using-libraries.html",
188
- value: "Using the Libraries"
189
- },
190
- {
191
- href: "https://library.columbia.edu/using-libraries/access-privileges.html",
192
- value: "Access Privileges"
193
- },
194
- {
195
- href: "https://library.columbia.edu/using-libraries/disability.html",
196
- value: "Accessibility"
197
- },
198
- {
199
- href: "https://library.columbia.edu/using-libraries/borrowing.html",
200
- value: "Borrow, Request, Renew"
201
- },
202
- {
203
- href: "https://library.columbia.edu/services/reserves.html",
204
- value: "Course Reserves"
205
- },
206
- {
207
- href: "https://hours.library.columbia.edu/",
208
- value: "Hours"
209
- },
210
- {
211
- href: "https://library.columbia.edu/using-libraries/printing.html",
212
- value: "Print, Scan, Digitize"
213
- }
214
- ],
215
- "Research & Teaching": [
216
- {
217
- href: "https://library.columbia.edu/research-teaching.html",
218
- value: "Research & Teaching"
219
- },
220
- {
221
- href: "https://copyright.columbia.edu/index.html",
222
- value: "Copyright Advisory Services"
223
- },
224
- {
225
- href: "https://library.columbia.edu/research-teaching/getting-started.html",
226
- value: "Getting Started with the Libraries"
227
- },
228
- {
229
- href: "https://library.columbia.edu/research-teaching/open-scholarship.html",
230
- value: "Open Scholarship Services"
231
- },
232
- {
233
- href: "https://library.columbia.edu/services/research-data-services.html",
234
- value: "Research Data Services"
235
- },
236
- {
237
- href: "https://library.columbia.edu/services/subject-guides.html",
238
- value: "Subject & Course Guides"
239
- },
240
- {
241
- href: "https://library.columbia.edu/research-teaching/workshops.html",
242
- value: "Workshops & Training"
243
- }
244
- ],
245
- About: n
246
- }, d = "data:application/json;base64,ewogICJTZXJ2aWNlcyAmIFRvb2xzIjogWwogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L3NlcnZpY2VzLmh0bWwiLAogICAgICAidmFsdWUiOiAiU2VydmljZXMgJiBUb29scyIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvc2VydmljZXMvZmFxLmh0bWwiLAogICAgICAidmFsdWUiOiAiRkFRIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS91c2luZy1saWJyYXJpZXMvYWx1bW5pLmh0bWwiLAogICAgICAidmFsdWUiOiAiRm9yIEFsdW1uaSIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvc2VydmljZXMvZmFjdWx0eS5odG1sIiwKICAgICAgInZhbHVlIjogIkZvciBGYWN1bHR5IgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9zZXJ2aWNlcy5odG1sI2F1ZGllbmNlPXN0dWRlbnQiLAogICAgICAidmFsdWUiOiAiRm9yIFN0dWRlbnRzIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS91c2luZy1saWJyYXJpZXMvdmlzaXRvcnMuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJGb3IgVmlzaXRvcnMiCiAgICB9CiAgXSwKICAiTGlicmFyaWVzIjogWwogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2xpYnJhcmllcy5odG1sIiwKICAgICAgInZhbHVlIjogIkxpYnJhcmllcyAmIEFmZmlsaWF0ZXMiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2xpYnJhcmllcy9hdmVyeS5odG1sIiwKICAgICAgInZhbHVlIjogIkF2ZXJ5IEFyY2hpdGVjdHVyYWwgJiBGaW5lIEFydHMgTGlicmFyeSIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvbGlicmFyaWVzL2J1cmtlLmh0bWwiLAogICAgICAidmFsdWUiOiAiQnVya2UgTGlicmFyeSBhdCBVbmlvbiBUaGVvbG9naWNhbCBTZW1pbmFyeSIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvbGlicmFyaWVzL2J1c2luZXNzLmh0bWwiLAogICAgICAidmFsdWUiOiAiQnVzaW5lc3MgJiBFY29ub21pY3MgTGlicmFyeSBpbiBVcmlzIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9saWJyYXJpZXMvYnVzaW5lc3MtbWFuaGF0dGFudmlsbGUuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJCdXNpbmVzcyBMaWJyYXJ5IGF0IE1hbmhhdHRhbnZpbGxlIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9saWJyYXJpZXMvYnV0bGVyLmh0bWwiLAogICAgICAidmFsdWUiOiAiQnV0bGVyIExpYnJhcnkiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2xpYnJhcmllcy9lYXN0YXNpYW4uaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJDLlYuIFN0YXJyIEVhc3QgQXNpYW4gTGlicmFyeSIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvbGlicmFyaWVzL211c2ljLmh0bWwiLAogICAgICAidmFsdWUiOiAiR2FiZSBNLiBXaWVuZXIgTXVzaWMgJiBBcnRzIExpYnJhcnkiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY3VtYy5jb2x1bWJpYS5lZHUvIiwKICAgICAgInZhbHVlIjogIkhlYWx0aCBTY2llbmNlcyBMaWJyYXJ5IgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9saWJyYXJpZXMvam91cm5hbGlzbS5odG1sIiwKICAgICAgInZhbHVlIjogIkpvdXJuYWxpc20gTGlicmFyeSIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvbGlicmFyaWVzL2xlaG1hbi5odG1sIiwKICAgICAgInZhbHVlIjogIkxlaG1hbiBTb2NpYWwgU2NpZW5jZXMgTGlicmFyeSIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHA6Ly93d3cubGF3LmNvbHVtYmlhLmVkdS9saWJyYXJ5LyIsCiAgICAgICJ2YWx1ZSI6ICJMaSBMdSBMYXcgTGlicmFyeSIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvbGlicmFyaWVzL21hdGguaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJNYXRoZW1hdGljcyBMaWJyYXJ5IgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9saWJyYXJpZXMvdW5kZXJncmFkdWF0ZS5odG1sIiwKICAgICAgInZhbHVlIjogIk1pbHN0ZWluIFVuZGVyZ3JhZHVhdGUgTGlicmFyeSIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvbGlicmFyaWVzL3JibWwuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJSYXJlIEJvb2sgJiBNYW51c2NyaXB0IExpYnJhcnkiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2xpYnJhcmllcy9zY2llbmNlLWVuZ2luZWVyaW5nLmh0bWwiLAogICAgICAidmFsdWUiOiAiU2NpZW5jZSAmIEVuZ2luZWVyaW5nIExpYnJhcnkiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2xpYnJhcmllcy9zb2NpYWwtd29yay5odG1sIiwKICAgICAgInZhbHVlIjogIlNvY2lhbCBXb3JrIExpYnJhcnkiCiAgICB9CiAgXSwKICAiQ29sbGVjdGlvbnMiOiBbCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvY29sbGVjdGlvbnMuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJBYm91dCBPdXIgQ29sbGVjdGlvbnMiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2FjYWRlbWljY29tbW9ucy5jb2x1bWJpYS5lZHUvIiwKICAgICAgInZhbHVlIjogIkFjYWRlbWljIENvbW1vbnMiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2NvbGxlY3Rpb25zL2FyY2hpdmVzLXBvcnRhbC5odG1sIiwKICAgICAgInZhbHVlIjogIkFyY2hpdmFsIENvbGxlY3Rpb25zIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9yZXNvbHZlci5saWJyYXJ5LmNvbHVtYmlhLmVkdS9jbGlvIiwKICAgICAgInZhbHVlIjogIkNMSU86IENvbHVtYmlhIExpYnJhcmllcyBDYXRhbG9nIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9hYm91dC9wb2xpY2llcy9jb2xsZWN0aW9uLWRldmVsb3BtZW50Lmh0bWwiLAogICAgICAidmFsdWUiOiAiQ29sbGVjdGlvbiBEZXZlbG9wbWVudCIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvY29sbGVjdGlvbnMvZGlnaXRhbC1jb2xsZWN0aW9ucy5odG1sIiwKICAgICAgInZhbHVlIjogIkRpZ2l0YWwgQ29sbGVjdGlvbnMgJiBFeGhpYml0aW9ucyIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvY29sbGVjdGlvbnMvZXJlc291cmNlcy5odG1sIiwKICAgICAgInZhbHVlIjogIkUtUmVzb3VyY2VzIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9jb2xsZWN0aW9ucy9vcmFsLWhpc3RvcnktcG9ydGFsLmh0bWwiLAogICAgICAidmFsdWUiOiAiT3JhbCBIaXN0b3J5IENvbGxlY3Rpb25zIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9yZXNvbHZlci5saWJyYXJ5LmNvbHVtYmlhLmVkdS9sd2ViMDAwNCIsCiAgICAgICJ2YWx1ZSI6ICJSZWNvbW1lbmQgYSBUaXRsZSBmb3IgUHVyY2hhc2UiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2Fib3V0L3BvbGljaWVzL2NvbGxlY3Rpb24tZGV2ZWxvcG1lbnQvcmVwYXRyaWF0aW9uLXJldHVybi5odG1sIiwKICAgICAgInZhbHVlIjogIlJlcGF0cmlhdGlvbiIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvYWJvdXQvc3RhZmYvc3ViamVjdC1zcGVjaWFsaXN0cy1ieS1zdWJqZWN0Lmh0bWwiLAogICAgICAidmFsdWUiOiAiU3ViamVjdCBTcGVjaWFsaXN0cyIKICAgIH0KICBdLAogICJVc2luZyB0aGUgTGlicmFyaWVzIjogWwogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L3VzaW5nLWxpYnJhcmllcy5odG1sIiwKICAgICAgInZhbHVlIjogIlVzaW5nIHRoZSBMaWJyYXJpZXMiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L3VzaW5nLWxpYnJhcmllcy9hY2Nlc3MtcHJpdmlsZWdlcy5odG1sIiwKICAgICAgInZhbHVlIjogIkFjY2VzcyBQcml2aWxlZ2VzIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS91c2luZy1saWJyYXJpZXMvZGlzYWJpbGl0eS5odG1sIiwKICAgICAgInZhbHVlIjogIkFjY2Vzc2liaWxpdHkiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L3VzaW5nLWxpYnJhcmllcy9ib3Jyb3dpbmcuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJCb3Jyb3csIFJlcXVlc3QsIFJlbmV3IgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9zZXJ2aWNlcy9yZXNlcnZlcy5odG1sIiwKICAgICAgInZhbHVlIjogIkNvdXJzZSBSZXNlcnZlcyIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vaG91cnMubGlicmFyeS5jb2x1bWJpYS5lZHUvIiwKICAgICAgInZhbHVlIjogIkhvdXJzIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS91c2luZy1saWJyYXJpZXMvcHJpbnRpbmcuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJQcmludCwgU2NhbiwgRGlnaXRpemUiCiAgICB9CiAgXSwKICAiUmVzZWFyY2ggJiBUZWFjaGluZyI6IFsKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9yZXNlYXJjaC10ZWFjaGluZy5odG1sIiwKICAgICAgInZhbHVlIjogIlJlc2VhcmNoICYgVGVhY2hpbmciCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2NvcHlyaWdodC5jb2x1bWJpYS5lZHUvaW5kZXguaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJDb3B5cmlnaHQgQWR2aXNvcnkgU2VydmljZXMiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L3Jlc2VhcmNoLXRlYWNoaW5nL2dldHRpbmctc3RhcnRlZC5odG1sIiwKICAgICAgInZhbHVlIjogIkdldHRpbmcgU3RhcnRlZCB3aXRoIHRoZSBMaWJyYXJpZXMiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L3Jlc2VhcmNoLXRlYWNoaW5nL29wZW4tc2Nob2xhcnNoaXAuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJPcGVuIFNjaG9sYXJzaGlwIFNlcnZpY2VzIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9zZXJ2aWNlcy9yZXNlYXJjaC1kYXRhLXNlcnZpY2VzLmh0bWwiLAogICAgICAidmFsdWUiOiAiUmVzZWFyY2ggRGF0YSBTZXJ2aWNlcyIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvc2VydmljZXMvc3ViamVjdC1ndWlkZXMuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJTdWJqZWN0ICYgQ291cnNlIEd1aWRlcyIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvcmVzZWFyY2gtdGVhY2hpbmcvd29ya3Nob3BzLmh0bWwiLAogICAgICAidmFsdWUiOiAiV29ya3Nob3BzICYgVHJhaW5pbmciCiAgICB9CiAgXSwKICAiQWJvdXQiOiBbCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvYWJvdXQuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJBYm91dCB0aGUgTGlicmFyaWVzIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9hYm91dC9qb2JzLWludGVybnNoaXBzLmh0bWwiLAogICAgICAidmFsdWUiOiAiSm9icyAmIEludGVybnNoaXBzIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9hYm91dC9uZXdzL2FsZXJ0Lmh0bWwiLAogICAgICAidmFsdWUiOiAiTGlicmFyeSBTdGF0dXMgVXBkYXRlcyIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvYWJvdXQvbmV3cy5odG1sIiwKICAgICAgInZhbHVlIjogIk5ld3MiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2Fib3V0L3ZhbHVlcy5odG1sIiwKICAgICAgInZhbHVlIjogIk91ciBWYWx1ZXMgJiBDb21taXRtZW50IGluIEFjdGlvbiIKICAgIH0sCiAgICAgICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2Fib3V0L3BvbGljaWVzLmh0bWwiLAogICAgICAidmFsdWUiOiAiUG9saWNpZXMiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2Fib3V0L3N0YWZmLmh0bWwiLAogICAgICAidmFsdWUiOiAiU3RhZmYiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL3N0cmF0ZWdpY2RpcmVjdGlvbnMubGlicmFyeS5jb2x1bWJpYS5lZHUvIiwKICAgICAgInZhbHVlIjogIlN0cmF0ZWdpYyBEaXJlY3Rpb25zIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9hYm91dC9zdHVkZW50X2Fkdmlzb3J5X2NvbW1pdHRlZS5odG1sIiwKICAgICAgInZhbHVlIjogIlN0dWRlbnQgTGlicmFyeSBBZHZpc29yeSBDb21taXR0ZWUiCiAgICB9CiAgXQp9Cg==";
247
- async function r(i) {
248
- const l = i || d;
8
+ Collections: n,
9
+ "Using the Libraries": [{ href: "https://library.columbia.edu/using-libraries.html", value: "Using the Libraries" }, { href: "https://library.columbia.edu/using-libraries/access-privileges.html", value: "Access Privileges" }, { href: "https://library.columbia.edu/using-libraries/disability.html", value: "Accessibility" }, { href: "https://library.columbia.edu/using-libraries/borrowing.html", value: "Borrow, Request, Renew" }, { href: "https://library.columbia.edu/services/reserves.html", value: "Course Reserves" }, { href: "https://hours.library.columbia.edu/", value: "Hours" }, { href: "https://library.columbia.edu/using-libraries/printing.html", value: "Print, Scan, Digitize" }],
10
+ "Research & Teaching": [{ href: "https://library.columbia.edu/research-teaching.html", value: "Research & Teaching" }, { href: "https://library.columbia.edu/research-teaching/copyright.html", value: "Copyright Information" }, { href: "https://library.columbia.edu/research-teaching/getting-started.html", value: "Getting Started with the Libraries" }, { href: "https://library.columbia.edu/research-teaching/global.html", value: "Global Studies" }, { href: "https://library.columbia.edu/research-teaching/open-scholarship.html", value: "Open Scholarship Services" }, { href: "https://library.columbia.edu/services/research-data-services.html", value: "Research Data Services" }, { href: "https://library.columbia.edu/services/subject-guides.html", value: "Subject & Course Guides" }, { href: "https://library.columbia.edu/research-teaching/workshops.html", value: "Workshops & Training" }],
11
+ About: u
12
+ }, h = "data:application/json;base64,ewogICJTZXJ2aWNlcyAmIFRvb2xzIjogWwogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L3NlcnZpY2VzLmh0bWwiLAogICAgICAidmFsdWUiOiAiU2VydmljZXMgJiBUb29scyIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvdXNpbmctbGlicmFyaWVzL2FsdW1uaS5odG1sIiwKICAgICAgInZhbHVlIjogIkZvciBBbHVtbmkiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L3NlcnZpY2VzL2ZhY3VsdHkuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJGb3IgRmFjdWx0eSIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvc2VydmljZXMuaHRtbCNhdWRpZW5jZT1zdHVkZW50IiwKICAgICAgInZhbHVlIjogIkZvciBTdHVkZW50cyIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvdXNpbmctbGlicmFyaWVzL3Zpc2l0b3JzLmh0bWwiLAogICAgICAidmFsdWUiOiAiRm9yIFZpc2l0b3JzIgogICAgfQogIF0sCiAgIkxpYnJhcmllcyI6IFsKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9saWJyYXJpZXMuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJMaWJyYXJpZXMgJiBBZmZpbGlhdGVzIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9saWJyYXJpZXMvYXZlcnkuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJBdmVyeSBBcmNoaXRlY3R1cmFsICYgRmluZSBBcnRzIExpYnJhcnkiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2xpYnJhcmllcy9idXJrZS5odG1sIiwKICAgICAgInZhbHVlIjogIkJ1cmtlIExpYnJhcnkgYXQgVW5pb24gVGhlb2xvZ2ljYWwgU2VtaW5hcnkiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2xpYnJhcmllcy9idXNpbmVzcy5odG1sIiwKICAgICAgInZhbHVlIjogIkJ1c2luZXNzICYgRWNvbm9taWNzIExpYnJhcnkgaW4gVXJpcyIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvbGlicmFyaWVzL2J1c2luZXNzLW1hbmhhdHRhbnZpbGxlLmh0bWwiLAogICAgICAidmFsdWUiOiAiQnVzaW5lc3MgTGlicmFyeSBhdCBNYW5oYXR0YW52aWxsZSIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvbGlicmFyaWVzL2J1dGxlci5odG1sIiwKICAgICAgInZhbHVlIjogIkJ1dGxlciBMaWJyYXJ5IgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9saWJyYXJpZXMvZWFzdGFzaWFuLmh0bWwiLAogICAgICAidmFsdWUiOiAiQy5WLiBTdGFyciBFYXN0IEFzaWFuIExpYnJhcnkiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2xpYnJhcmllcy9tdXNpYy5odG1sIiwKICAgICAgInZhbHVlIjogIkdhYmUgTS4gV2llbmVyIE11c2ljICYgQXJ0cyBMaWJyYXJ5IgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmN1bWMuY29sdW1iaWEuZWR1LyIsCiAgICAgICJ2YWx1ZSI6ICJIZWFsdGggU2NpZW5jZXMgTGlicmFyeSIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvbGlicmFyaWVzL2pvdXJuYWxpc20uaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJKb3VybmFsaXNtIExpYnJhcnkiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2xpYnJhcmllcy9sZWhtYW4uaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJMZWhtYW4gU29jaWFsIFNjaWVuY2VzIExpYnJhcnkiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwOi8vd3d3Lmxhdy5jb2x1bWJpYS5lZHUvbGlicmFyeS8iLAogICAgICAidmFsdWUiOiAiTGkgTHUgTGF3IExpYnJhcnkiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2xpYnJhcmllcy9tYXRoLmh0bWwiLAogICAgICAidmFsdWUiOiAiTWF0aGVtYXRpY3MgTGlicmFyeSIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvbGlicmFyaWVzL3JibWwuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJSYXJlIEJvb2sgJiBNYW51c2NyaXB0IExpYnJhcnkiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2xpYnJhcmllcy9zY2llbmNlLWVuZ2luZWVyaW5nLmh0bWwiLAogICAgICAidmFsdWUiOiAiU2NpZW5jZSAmIEVuZ2luZWVyaW5nIExpYnJhcnkiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2xpYnJhcmllcy9zb2NpYWwtd29yay5odG1sIiwKICAgICAgInZhbHVlIjogIlNvY2lhbCBXb3JrIExpYnJhcnkiCiAgICB9CiAgXSwKICAiQ29sbGVjdGlvbnMiOiBbCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvY29sbGVjdGlvbnMuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJBYm91dCBPdXIgQ29sbGVjdGlvbnMiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2FjYWRlbWljY29tbW9ucy5jb2x1bWJpYS5lZHUvIiwKICAgICAgInZhbHVlIjogIkFjYWRlbWljIENvbW1vbnMiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2NvbGxlY3Rpb25zL2FyY2hpdmVzLXBvcnRhbC5odG1sIiwKICAgICAgInZhbHVlIjogIkFyY2hpdmFsIENvbGxlY3Rpb25zIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9yZXNvbHZlci5saWJyYXJ5LmNvbHVtYmlhLmVkdS9jbGlvIiwKICAgICAgInZhbHVlIjogIkNMSU86IENvbHVtYmlhIExpYnJhcmllcyBDYXRhbG9nIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9hYm91dC9wb2xpY2llcy9jb2xsZWN0aW9uLWRldmVsb3BtZW50Lmh0bWwiLAogICAgICAidmFsdWUiOiAiQ29sbGVjdGlvbiBEZXZlbG9wbWVudCIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vZGxjLmxpYnJhcnkuY29sdW1iaWEuZWR1IiwKICAgICAgInZhbHVlIjogIkRpZ2l0YWwgQ29sbGVjdGlvbnMiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2NvbGxlY3Rpb25zL2VyZXNvdXJjZXMuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJFLVJlc291cmNlcyIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vcmVzb2x2ZXIubGlicmFyeS5jb2x1bWJpYS5lZHUvbHdlYjAwMDQiLAogICAgICAidmFsdWUiOiAiUmVjb21tZW5kIGEgVGl0bGUgZm9yIFB1cmNoYXNlIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9hYm91dC9wb2xpY2llcy9jb2xsZWN0aW9uLWRldmVsb3BtZW50L3JlcGF0cmlhdGlvbi1yZXR1cm4uaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJSZXBhdHJpYXRpb24iCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2Fib3V0L3N0YWZmL3N1YmplY3Qtc3BlY2lhbGlzdHMtYnktc3ViamVjdC5odG1sIiwKICAgICAgInZhbHVlIjogIlN1YmplY3QgU3BlY2lhbGlzdHMiCiAgICB9CiAgXSwKICAiVXNpbmcgdGhlIExpYnJhcmllcyI6IFsKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS91c2luZy1saWJyYXJpZXMuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJVc2luZyB0aGUgTGlicmFyaWVzIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS91c2luZy1saWJyYXJpZXMvYWNjZXNzLXByaXZpbGVnZXMuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJBY2Nlc3MgUHJpdmlsZWdlcyIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvdXNpbmctbGlicmFyaWVzL2Rpc2FiaWxpdHkuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJBY2Nlc3NpYmlsaXR5IgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS91c2luZy1saWJyYXJpZXMvYm9ycm93aW5nLmh0bWwiLAogICAgICAidmFsdWUiOiAiQm9ycm93LCBSZXF1ZXN0LCBSZW5ldyIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvc2VydmljZXMvcmVzZXJ2ZXMuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJDb3Vyc2UgUmVzZXJ2ZXMiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2hvdXJzLmxpYnJhcnkuY29sdW1iaWEuZWR1LyIsCiAgICAgICJ2YWx1ZSI6ICJIb3VycyIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvdXNpbmctbGlicmFyaWVzL3ByaW50aW5nLmh0bWwiLAogICAgICAidmFsdWUiOiAiUHJpbnQsIFNjYW4sIERpZ2l0aXplIgogICAgfQogIF0sCiAgIlJlc2VhcmNoICYgVGVhY2hpbmciOiBbCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvcmVzZWFyY2gtdGVhY2hpbmcuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJSZXNlYXJjaCAmIFRlYWNoaW5nIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9yZXNlYXJjaC10ZWFjaGluZy9jb3B5cmlnaHQuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJDb3B5cmlnaHQgSW5mb3JtYXRpb24iCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L3Jlc2VhcmNoLXRlYWNoaW5nL2dldHRpbmctc3RhcnRlZC5odG1sIiwKICAgICAgInZhbHVlIjogIkdldHRpbmcgU3RhcnRlZCB3aXRoIHRoZSBMaWJyYXJpZXMiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L3Jlc2VhcmNoLXRlYWNoaW5nL2dsb2JhbC5odG1sIiwKICAgICAgInZhbHVlIjogIkdsb2JhbCBTdHVkaWVzIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9yZXNlYXJjaC10ZWFjaGluZy9vcGVuLXNjaG9sYXJzaGlwLmh0bWwiLAogICAgICAidmFsdWUiOiAiT3BlbiBTY2hvbGFyc2hpcCBTZXJ2aWNlcyIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvc2VydmljZXMvcmVzZWFyY2gtZGF0YS1zZXJ2aWNlcy5odG1sIiwKICAgICAgInZhbHVlIjogIlJlc2VhcmNoIERhdGEgU2VydmljZXMiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L3NlcnZpY2VzL3N1YmplY3QtZ3VpZGVzLmh0bWwiLAogICAgICAidmFsdWUiOiAiU3ViamVjdCAmIENvdXJzZSBHdWlkZXMiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L3Jlc2VhcmNoLXRlYWNoaW5nL3dvcmtzaG9wcy5odG1sIiwKICAgICAgInZhbHVlIjogIldvcmtzaG9wcyAmIFRyYWluaW5nIgogICAgfQogIF0sCiAgIkFib3V0IjogWwogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2Fib3V0Lmh0bWwiLAogICAgICAidmFsdWUiOiAiQWJvdXQgdGhlIExpYnJhcmllcyIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvYWJvdXQvam9icy1pbnRlcm5zaGlwcy5odG1sIiwKICAgICAgInZhbHVlIjogIkpvYnMgJiBJbnRlcm5zaGlwcyIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvYWJvdXQvbmV3cy9hbGVydC5odG1sIiwKICAgICAgInZhbHVlIjogIkxpYnJhcnkgU3RhdHVzIFVwZGF0ZXMiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2Fib3V0L25ld3MuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJOZXdzIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9hYm91dC92YWx1ZXMuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJPdXIgVmFsdWVzICYgQ29tbWl0bWVudCBpbiBBY3Rpb24iCiAgICB9LAogICAgICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9hYm91dC9wb2xpY2llcy5odG1sIiwKICAgICAgInZhbHVlIjogIlBvbGljaWVzIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9hYm91dC9zdGFmZi5odG1sIiwKICAgICAgInZhbHVlIjogIlN0YWZmIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9zdHJhdGVnaWNkaXJlY3Rpb25zLmxpYnJhcnkuY29sdW1iaWEuZWR1LyIsCiAgICAgICJ2YWx1ZSI6ICJTdHJhdGVnaWMgRGlyZWN0aW9ucyIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvYWJvdXQvc3R1ZGVudF9hZHZpc29yeV9jb21taXR0ZWUuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJTdHVkZW50IExpYnJhcnkgQWR2aXNvcnkgQ29tbWl0dGVlIgogICAgfQogIF0KfQo=";
13
+ async function m(i) {
14
+ const e = i || h;
249
15
  try {
250
- const e = await fetch(h(l), {
16
+ const l = await fetch(d(e), {
251
17
  cache: "no-store",
252
18
  signal: AbortSignal.timeout(3e3)
253
19
  // fail fast
254
20
  });
255
- if (!e.ok) throw new Error("Menu fetch failed");
256
- return await e.json();
257
- } catch (e) {
21
+ if (!l.ok) throw new Error("Menu fetch failed");
22
+ return await l.json();
23
+ } catch (l) {
258
24
  return console.warn(
259
25
  "[CUL Menu] Remote menu unavailable, using bundled example.",
260
- e
261
- ), u;
26
+ l
27
+ ), A;
262
28
  }
263
29
  }
264
- function h(i) {
265
- return i.includes("?") ? i : `${i}?v=5.1.3`;
30
+ function d(i) {
31
+ return i.includes("?") ? i : `${i}?v=5.3.0`;
266
32
  }
267
- async function y(i) {
268
- const l = document.querySelectorAll("[data-cul-menu]");
269
- if (!l.length) return;
270
- const e = await r(i);
271
- l.forEach((a, s) => {
272
- const t = J(a, s), I = p(e, t);
273
- a.replaceChildren(I), W(a);
33
+ async function W(i) {
34
+ const e = document.querySelectorAll("[data-cul-menu]");
35
+ if (!e.length) return;
36
+ const l = await m(i);
37
+ e.forEach((a, g) => {
38
+ const t = J(a, g), I = y(l, t);
39
+ a.replaceChildren(I), p(a);
274
40
  });
275
41
  }
276
- function W(i) {
42
+ function p(i) {
277
43
  i.classList.remove("cul-menu-loading"), i.classList.add("cul-menu-loaded");
278
44
  }
279
- function J(i, l) {
45
+ function J(i, e) {
280
46
  return {
281
- prefix: i.dataset.menuId || `culmenu-${l}`,
47
+ prefix: i.dataset.menuId || `culmenu-${e}`,
282
48
  toggleTag: i.dataset.toggleTag || "button",
283
49
  toggleClasses: i.dataset.toggleClasses || "btn btn-toggle ps-0 d-inline-flex w-100 align-items-center rounded border-0 collapsed",
284
50
  listClasses: i.dataset.listClasses || "list-unstyled w-100",
@@ -286,72 +52,72 @@ function J(i, l) {
286
52
  useCollapse: i.dataset.useCollapse !== "false"
287
53
  };
288
54
  }
289
- function p(i, l) {
290
- const e = document.createElement("ul");
291
- e.className = l.listClasses;
55
+ function y(i, e) {
56
+ const l = document.createElement("ul");
57
+ l.className = e.listClasses;
292
58
  for (const a in i) {
293
- const s = document.createElement("li");
294
- s.className = "mb-1";
295
- const t = `${l.prefix}-${v(a)}-collapse`, I = document.createElement(l.toggleTag);
296
- I.className = l.toggleClasses, I.textContent = a, l.useCollapse && (I.setAttribute("data-bs-toggle", "collapse"), I.setAttribute("data-bs-target", `#${t}`), I.setAttribute("aria-expanded", "false")), s.appendChild(I);
297
- const g = document.createElement("div");
298
- g.className = l.useCollapse ? "collapse" : "", g.id = t;
299
- const o = document.createElement("ul");
300
- o.className = "btn-toggle-nav list-unstyled fw-normal pb-1", i[a].forEach((c) => {
301
- const m = document.createElement("li"), C = document.createElement("a");
302
- C.href = c.href, C.textContent = c.value, C.className = l.itemClasses, m.appendChild(C), o.appendChild(m);
303
- }), g.appendChild(o), s.appendChild(g), e.appendChild(s);
59
+ const g = document.createElement("li");
60
+ g.className = "mb-1";
61
+ const t = `${e.prefix}-${Y(a)}-collapse`, I = document.createElement(e.toggleTag);
62
+ I.className = e.toggleClasses, I.textContent = a, e.useCollapse && (I.setAttribute("data-bs-toggle", "collapse"), I.setAttribute("data-bs-target", `#${t}`), I.setAttribute("aria-expanded", "false")), g.appendChild(I);
63
+ const s = document.createElement("div");
64
+ s.className = e.useCollapse ? "collapse" : "", s.id = t;
65
+ const c = document.createElement("ul");
66
+ c.className = "btn-toggle-nav list-unstyled fw-normal pb-1", i[a].forEach((o) => {
67
+ const r = document.createElement("li"), C = document.createElement("a");
68
+ C.href = o.href, C.textContent = o.value, C.className = e.itemClasses, r.appendChild(C), c.appendChild(r);
69
+ }), s.appendChild(c), g.appendChild(s), l.appendChild(g);
304
70
  }
305
- return e;
71
+ return l;
306
72
  }
307
- function v(i) {
73
+ function Y(i) {
308
74
  return i.toLowerCase().replace(/\s+/g, "-");
309
75
  }
310
- async function Y(i, l) {
311
- const e = document.querySelector(i);
312
- if (!e) return;
313
- const a = e.querySelector("ul");
76
+ async function Z(i, e) {
77
+ const l = document.querySelector(i);
78
+ if (!l) return;
79
+ const a = l.querySelector("ul");
314
80
  if (!a) {
315
81
  console.warn("CUL navbar menu: <ul> not found");
316
82
  return;
317
83
  }
318
- const s = await r(l), t = e.dataset.menuId || "cul-navbar";
319
- a.replaceChildren(Z(s, t)), H(e);
84
+ const g = await m(e), t = l.dataset.menuId || "cul-navbar";
85
+ a.replaceChildren(v(g, t)), H(l);
320
86
  }
321
87
  function H(i) {
322
88
  i.classList.remove("cul-menu-loading"), i.classList.add("cul-menu-loaded");
323
89
  }
324
- function Z(i, l) {
325
- const e = document.createDocumentFragment();
90
+ function v(i, e) {
91
+ const l = document.createDocumentFragment();
326
92
  for (const a in i) {
327
- const s = `${l}-${L(a)}`, t = document.createElement("li");
93
+ const g = `${e}-${L(a)}`, t = document.createElement("li");
328
94
  t.className = "nav-item dropdown position-static d-inline-flex";
329
95
  const I = document.createElement("a");
330
96
  I.href = "#", I.className = "nav-link dropdown-toggle my-2 me-3", I.setAttribute("data-bs-toggle", "dropdown"), I.setAttribute("aria-expanded", "false"), I.textContent = a, t.appendChild(I);
331
- const g = document.createElement("div");
332
- g.id = `${s}-dropdown`, g.className = "dropdown-menu w-100 border-top-0 border-left-0 border-right-0 rounded-0 py-0 my-0";
333
- const o = document.createElement("div");
334
- o.className = "py-3 bg-secondary text-white";
97
+ const s = document.createElement("div");
98
+ s.id = `${g}-dropdown`, s.className = "dropdown-menu w-100 border-top-0 border-left-0 border-right-0 rounded-0 py-0 my-0";
335
99
  const c = document.createElement("div");
336
- c.className = "container cul-cols", i[a].forEach((m) => {
100
+ c.className = "py-3 bg-secondary text-white";
101
+ const o = document.createElement("div");
102
+ o.className = "container cul-cols", i[a].forEach((r) => {
337
103
  const C = document.createElement("a");
338
- C.href = m.href, C.className = "d-block py-1 text-white dropdown-item bg-secondary", C.textContent = m.value, c.appendChild(C);
339
- }), o.appendChild(c), g.appendChild(o), t.appendChild(g), e.appendChild(t);
104
+ C.href = r.href, C.className = "d-block py-1 text-white dropdown-item bg-secondary", C.textContent = r.value, o.appendChild(C);
105
+ }), c.appendChild(o), s.appendChild(c), t.appendChild(s), l.appendChild(t);
340
106
  }
341
- return e;
107
+ return l;
342
108
  }
343
109
  function L(i) {
344
110
  return i.toLowerCase().replace(/\s+/g, "-");
345
111
  }
346
112
  function V(i) {
347
- return y(i.url);
113
+ return W(i.url);
348
114
  }
349
115
  function w(i) {
350
- return Y(i.selector, i.url);
116
+ return Z(i.selector, i.url);
351
117
  }
352
118
  export {
353
119
  V as initCollapse,
354
120
  w as initNavbar,
355
- y as makeCULmenu
121
+ W as makeCULmenu
356
122
  };
357
123
  //# sourceMappingURL=cul-menu.bundle.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cul-menu.bundle.es.js","sources":["../../src/js/cul-main-menu.json?url","../../src/js/culmenu-fetch.js","../../src/js/culmenu.js","../../src/js/culmenu-navbar.js","../../src/js/cul-menu-bundle.js"],"sourcesContent":["export default \"data:application/json;base64,ewogICJTZXJ2aWNlcyAmIFRvb2xzIjogWwogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L3NlcnZpY2VzLmh0bWwiLAogICAgICAidmFsdWUiOiAiU2VydmljZXMgJiBUb29scyIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvc2VydmljZXMvZmFxLmh0bWwiLAogICAgICAidmFsdWUiOiAiRkFRIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS91c2luZy1saWJyYXJpZXMvYWx1bW5pLmh0bWwiLAogICAgICAidmFsdWUiOiAiRm9yIEFsdW1uaSIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvc2VydmljZXMvZmFjdWx0eS5odG1sIiwKICAgICAgInZhbHVlIjogIkZvciBGYWN1bHR5IgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9zZXJ2aWNlcy5odG1sI2F1ZGllbmNlPXN0dWRlbnQiLAogICAgICAidmFsdWUiOiAiRm9yIFN0dWRlbnRzIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS91c2luZy1saWJyYXJpZXMvdmlzaXRvcnMuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJGb3IgVmlzaXRvcnMiCiAgICB9CiAgXSwKICAiTGlicmFyaWVzIjogWwogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2xpYnJhcmllcy5odG1sIiwKICAgICAgInZhbHVlIjogIkxpYnJhcmllcyAmIEFmZmlsaWF0ZXMiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2xpYnJhcmllcy9hdmVyeS5odG1sIiwKICAgICAgInZhbHVlIjogIkF2ZXJ5IEFyY2hpdGVjdHVyYWwgJiBGaW5lIEFydHMgTGlicmFyeSIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvbGlicmFyaWVzL2J1cmtlLmh0bWwiLAogICAgICAidmFsdWUiOiAiQnVya2UgTGlicmFyeSBhdCBVbmlvbiBUaGVvbG9naWNhbCBTZW1pbmFyeSIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvbGlicmFyaWVzL2J1c2luZXNzLmh0bWwiLAogICAgICAidmFsdWUiOiAiQnVzaW5lc3MgJiBFY29ub21pY3MgTGlicmFyeSBpbiBVcmlzIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9saWJyYXJpZXMvYnVzaW5lc3MtbWFuaGF0dGFudmlsbGUuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJCdXNpbmVzcyBMaWJyYXJ5IGF0IE1hbmhhdHRhbnZpbGxlIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9saWJyYXJpZXMvYnV0bGVyLmh0bWwiLAogICAgICAidmFsdWUiOiAiQnV0bGVyIExpYnJhcnkiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2xpYnJhcmllcy9lYXN0YXNpYW4uaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJDLlYuIFN0YXJyIEVhc3QgQXNpYW4gTGlicmFyeSIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvbGlicmFyaWVzL211c2ljLmh0bWwiLAogICAgICAidmFsdWUiOiAiR2FiZSBNLiBXaWVuZXIgTXVzaWMgJiBBcnRzIExpYnJhcnkiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY3VtYy5jb2x1bWJpYS5lZHUvIiwKICAgICAgInZhbHVlIjogIkhlYWx0aCBTY2llbmNlcyBMaWJyYXJ5IgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9saWJyYXJpZXMvam91cm5hbGlzbS5odG1sIiwKICAgICAgInZhbHVlIjogIkpvdXJuYWxpc20gTGlicmFyeSIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvbGlicmFyaWVzL2xlaG1hbi5odG1sIiwKICAgICAgInZhbHVlIjogIkxlaG1hbiBTb2NpYWwgU2NpZW5jZXMgTGlicmFyeSIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHA6Ly93d3cubGF3LmNvbHVtYmlhLmVkdS9saWJyYXJ5LyIsCiAgICAgICJ2YWx1ZSI6ICJMaSBMdSBMYXcgTGlicmFyeSIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvbGlicmFyaWVzL21hdGguaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJNYXRoZW1hdGljcyBMaWJyYXJ5IgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9saWJyYXJpZXMvdW5kZXJncmFkdWF0ZS5odG1sIiwKICAgICAgInZhbHVlIjogIk1pbHN0ZWluIFVuZGVyZ3JhZHVhdGUgTGlicmFyeSIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvbGlicmFyaWVzL3JibWwuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJSYXJlIEJvb2sgJiBNYW51c2NyaXB0IExpYnJhcnkiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2xpYnJhcmllcy9zY2llbmNlLWVuZ2luZWVyaW5nLmh0bWwiLAogICAgICAidmFsdWUiOiAiU2NpZW5jZSAmIEVuZ2luZWVyaW5nIExpYnJhcnkiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2xpYnJhcmllcy9zb2NpYWwtd29yay5odG1sIiwKICAgICAgInZhbHVlIjogIlNvY2lhbCBXb3JrIExpYnJhcnkiCiAgICB9CiAgXSwKICAiQ29sbGVjdGlvbnMiOiBbCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvY29sbGVjdGlvbnMuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJBYm91dCBPdXIgQ29sbGVjdGlvbnMiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2FjYWRlbWljY29tbW9ucy5jb2x1bWJpYS5lZHUvIiwKICAgICAgInZhbHVlIjogIkFjYWRlbWljIENvbW1vbnMiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2NvbGxlY3Rpb25zL2FyY2hpdmVzLXBvcnRhbC5odG1sIiwKICAgICAgInZhbHVlIjogIkFyY2hpdmFsIENvbGxlY3Rpb25zIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9yZXNvbHZlci5saWJyYXJ5LmNvbHVtYmlhLmVkdS9jbGlvIiwKICAgICAgInZhbHVlIjogIkNMSU86IENvbHVtYmlhIExpYnJhcmllcyBDYXRhbG9nIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9hYm91dC9wb2xpY2llcy9jb2xsZWN0aW9uLWRldmVsb3BtZW50Lmh0bWwiLAogICAgICAidmFsdWUiOiAiQ29sbGVjdGlvbiBEZXZlbG9wbWVudCIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvY29sbGVjdGlvbnMvZGlnaXRhbC1jb2xsZWN0aW9ucy5odG1sIiwKICAgICAgInZhbHVlIjogIkRpZ2l0YWwgQ29sbGVjdGlvbnMgJiBFeGhpYml0aW9ucyIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvY29sbGVjdGlvbnMvZXJlc291cmNlcy5odG1sIiwKICAgICAgInZhbHVlIjogIkUtUmVzb3VyY2VzIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9jb2xsZWN0aW9ucy9vcmFsLWhpc3RvcnktcG9ydGFsLmh0bWwiLAogICAgICAidmFsdWUiOiAiT3JhbCBIaXN0b3J5IENvbGxlY3Rpb25zIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9yZXNvbHZlci5saWJyYXJ5LmNvbHVtYmlhLmVkdS9sd2ViMDAwNCIsCiAgICAgICJ2YWx1ZSI6ICJSZWNvbW1lbmQgYSBUaXRsZSBmb3IgUHVyY2hhc2UiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2Fib3V0L3BvbGljaWVzL2NvbGxlY3Rpb24tZGV2ZWxvcG1lbnQvcmVwYXRyaWF0aW9uLXJldHVybi5odG1sIiwKICAgICAgInZhbHVlIjogIlJlcGF0cmlhdGlvbiIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvYWJvdXQvc3RhZmYvc3ViamVjdC1zcGVjaWFsaXN0cy1ieS1zdWJqZWN0Lmh0bWwiLAogICAgICAidmFsdWUiOiAiU3ViamVjdCBTcGVjaWFsaXN0cyIKICAgIH0KICBdLAogICJVc2luZyB0aGUgTGlicmFyaWVzIjogWwogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L3VzaW5nLWxpYnJhcmllcy5odG1sIiwKICAgICAgInZhbHVlIjogIlVzaW5nIHRoZSBMaWJyYXJpZXMiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L3VzaW5nLWxpYnJhcmllcy9hY2Nlc3MtcHJpdmlsZWdlcy5odG1sIiwKICAgICAgInZhbHVlIjogIkFjY2VzcyBQcml2aWxlZ2VzIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS91c2luZy1saWJyYXJpZXMvZGlzYWJpbGl0eS5odG1sIiwKICAgICAgInZhbHVlIjogIkFjY2Vzc2liaWxpdHkiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L3VzaW5nLWxpYnJhcmllcy9ib3Jyb3dpbmcuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJCb3Jyb3csIFJlcXVlc3QsIFJlbmV3IgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9zZXJ2aWNlcy9yZXNlcnZlcy5odG1sIiwKICAgICAgInZhbHVlIjogIkNvdXJzZSBSZXNlcnZlcyIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vaG91cnMubGlicmFyeS5jb2x1bWJpYS5lZHUvIiwKICAgICAgInZhbHVlIjogIkhvdXJzIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS91c2luZy1saWJyYXJpZXMvcHJpbnRpbmcuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJQcmludCwgU2NhbiwgRGlnaXRpemUiCiAgICB9CiAgXSwKICAiUmVzZWFyY2ggJiBUZWFjaGluZyI6IFsKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9yZXNlYXJjaC10ZWFjaGluZy5odG1sIiwKICAgICAgInZhbHVlIjogIlJlc2VhcmNoICYgVGVhY2hpbmciCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2NvcHlyaWdodC5jb2x1bWJpYS5lZHUvaW5kZXguaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJDb3B5cmlnaHQgQWR2aXNvcnkgU2VydmljZXMiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L3Jlc2VhcmNoLXRlYWNoaW5nL2dldHRpbmctc3RhcnRlZC5odG1sIiwKICAgICAgInZhbHVlIjogIkdldHRpbmcgU3RhcnRlZCB3aXRoIHRoZSBMaWJyYXJpZXMiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L3Jlc2VhcmNoLXRlYWNoaW5nL29wZW4tc2Nob2xhcnNoaXAuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJPcGVuIFNjaG9sYXJzaGlwIFNlcnZpY2VzIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9zZXJ2aWNlcy9yZXNlYXJjaC1kYXRhLXNlcnZpY2VzLmh0bWwiLAogICAgICAidmFsdWUiOiAiUmVzZWFyY2ggRGF0YSBTZXJ2aWNlcyIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvc2VydmljZXMvc3ViamVjdC1ndWlkZXMuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJTdWJqZWN0ICYgQ291cnNlIEd1aWRlcyIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvcmVzZWFyY2gtdGVhY2hpbmcvd29ya3Nob3BzLmh0bWwiLAogICAgICAidmFsdWUiOiAiV29ya3Nob3BzICYgVHJhaW5pbmciCiAgICB9CiAgXSwKICAiQWJvdXQiOiBbCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvYWJvdXQuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJBYm91dCB0aGUgTGlicmFyaWVzIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9hYm91dC9qb2JzLWludGVybnNoaXBzLmh0bWwiLAogICAgICAidmFsdWUiOiAiSm9icyAmIEludGVybnNoaXBzIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9hYm91dC9uZXdzL2FsZXJ0Lmh0bWwiLAogICAgICAidmFsdWUiOiAiTGlicmFyeSBTdGF0dXMgVXBkYXRlcyIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvYWJvdXQvbmV3cy5odG1sIiwKICAgICAgInZhbHVlIjogIk5ld3MiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2Fib3V0L3ZhbHVlcy5odG1sIiwKICAgICAgInZhbHVlIjogIk91ciBWYWx1ZXMgJiBDb21taXRtZW50IGluIEFjdGlvbiIKICAgIH0sCiAgICAgICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2Fib3V0L3BvbGljaWVzLmh0bWwiLAogICAgICAidmFsdWUiOiAiUG9saWNpZXMiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2Fib3V0L3N0YWZmLmh0bWwiLAogICAgICAidmFsdWUiOiAiU3RhZmYiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL3N0cmF0ZWdpY2RpcmVjdGlvbnMubGlicmFyeS5jb2x1bWJpYS5lZHUvIiwKICAgICAgInZhbHVlIjogIlN0cmF0ZWdpYyBEaXJlY3Rpb25zIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9hYm91dC9zdHVkZW50X2Fkdmlzb3J5X2NvbW1pdHRlZS5odG1sIiwKICAgICAgInZhbHVlIjogIlN0dWRlbnQgTGlicmFyeSBBZHZpc29yeSBDb21taXR0ZWUiCiAgICB9CiAgXQp9Cg==\"","// handles fetching menu json with fallback and cache-busting\n\n// culmenu-fetch.js\nimport exampleMenu from './cul-main-menu.json';\nimport exampleMenuUrl from './cul-main-menu.json?url';\n\nexport async function fetchCULmenu(url) {\n const runtimeUrl = url || exampleMenuUrl;\n\n try {\n const res = await fetch(addCacheBusting(runtimeUrl), {\n cache: 'no-store',\n signal: AbortSignal.timeout(3000) // fail fast\n });\n\n if (!res.ok) throw new Error('Menu fetch failed');\n return await res.json();\n\n } catch (err) {\n console.warn(\n '[CUL Menu] Remote menu unavailable, using bundled example.',\n err\n );\n return exampleMenu;\n }\n}\n\nfunction addCacheBusting(url) {\n if (url.includes('?')) return url;\n return `${url}?v=${__VERSION__}`;\n}\n\n","/**\n * culmenu.js\n *\n * vertical / collapse-style cul menu renderer.\n * bootstrap 5 dependent.\n */\n\nimport { fetchCULmenu } from './culmenu-fetch.js';\n\n/**\n * initialize all collapse-style menus\n * @param {string} jsonUrl - optional runtime json url\n */\nexport async function makeCULmenu(jsonUrl) {\n const targets = document.querySelectorAll('[data-cul-menu]');\n if (!targets.length) return;\n\n const menuData = await fetchCULmenu(jsonUrl);\n\n targets.forEach((el, index) => {\n const config = getConfig(el, index);\n const menu = buildCollapseMenu(menuData, config);\n el.replaceChildren(menu);\n\n markLoaded(el);\n });\n}\n\n/** mark container as loaded */\nfunction markLoaded(el) {\n el.classList.remove('cul-menu-loading');\n el.classList.add('cul-menu-loaded');\n}\n\n/** read config from data attributes with safe defaults */\nfunction getConfig(el, index) {\n return {\n prefix: el.dataset.menuId || `culmenu-${index}`,\n toggleTag: el.dataset.toggleTag || 'button',\n toggleClasses:\n el.dataset.toggleClasses ||\n 'btn btn-toggle ps-0 d-inline-flex w-100 align-items-center rounded border-0 collapsed',\n listClasses: el.dataset.listClasses || 'list-unstyled w-100',\n itemClasses: el.dataset.itemClasses || 'd-block',\n useCollapse: el.dataset.useCollapse !== 'false'\n };\n}\n\n/** build collapse menu dom */\nfunction buildCollapseMenu(data, config) {\n const ul = document.createElement('ul');\n ul.className = config.listClasses;\n\n for (const section in data) {\n const li = document.createElement('li');\n li.className = 'mb-1';\n\n const collapseId = `${config.prefix}-${slug(section)}-collapse`;\n\n // toggle element\n const toggle = document.createElement(config.toggleTag);\n toggle.className = config.toggleClasses;\n toggle.textContent = section;\n\n if (config.useCollapse) {\n toggle.setAttribute('data-bs-toggle', 'collapse');\n toggle.setAttribute('data-bs-target', `#${collapseId}`);\n toggle.setAttribute('aria-expanded', 'false');\n }\n\n li.appendChild(toggle);\n\n // collapsible content\n const collapseDiv = document.createElement('div');\n collapseDiv.className = config.useCollapse ? 'collapse' : '';\n collapseDiv.id = collapseId;\n\n const subUl = document.createElement('ul');\n subUl.className = 'btn-toggle-nav list-unstyled fw-normal pb-1';\n\n data[section].forEach(item => {\n const li2 = document.createElement('li');\n const a = document.createElement('a');\n a.href = item.href;\n a.textContent = item.value;\n a.className = config.itemClasses;\n li2.appendChild(a);\n subUl.appendChild(li2);\n });\n\n collapseDiv.appendChild(subUl);\n li.appendChild(collapseDiv);\n ul.appendChild(li);\n }\n\n return ul;\n}\n\n/** utility slugify */\nfunction slug(str) {\n return str.toLowerCase().replace(/\\s+/g, '-');\n}\n\n","/**\n * culmenu-navbar.js\n *\n * navbar / dropdown-style cul menu renderer.\n * matches bootstrap 5 navbar + dropdown + mega-menu pattern.\n */\n\nimport { fetchCULmenu } from './culmenu-fetch.js';\n\n/**\n * initialize navbar menus\n * @param {string} selector - container element\n * @param {string} jsonUrl - optional runtime json url\n */\nexport async function makeCULNavbarMenu(selector, jsonUrl) {\n const root = document.querySelector(selector);\n if (!root) return;\n\n const ul = root.querySelector('ul');\n if (!ul) {\n console.warn('CUL navbar menu: <ul> not found');\n return;\n }\n\n const menuData = await fetchCULmenu(jsonUrl);\n const prefix = root.dataset.menuId || 'cul-navbar';\n\n ul.replaceChildren(buildNavbarItems(menuData, prefix));\n markLoaded(root);\n}\n\nfunction markLoaded(el) {\n el.classList.remove('cul-menu-loading');\n el.classList.add('cul-menu-loaded');\n}\n\nfunction buildNavbarItems(data, prefix) {\n const fragment = document.createDocumentFragment();\n\n for (const section in data) {\n const slug = `${prefix}-${slugify(section)}`;\n\n const li = document.createElement('li');\n li.className = 'nav-item dropdown position-static d-inline-flex';\n\n const toggle = document.createElement('a');\n toggle.href = '#';\n toggle.className = 'nav-link dropdown-toggle my-2 me-3';\n toggle.setAttribute('data-bs-toggle', 'dropdown');\n toggle.setAttribute('aria-expanded', 'false');\n toggle.textContent = section;\n\n li.appendChild(toggle);\n\n const dropdown = document.createElement('div');\n dropdown.id = `${slug}-dropdown`;\n dropdown.className =\n 'dropdown-menu w-100 border-top-0 border-left-0 border-right-0 rounded-0 py-0 my-0';\n\n const innerBg = document.createElement('div');\n innerBg.className = 'py-3 bg-secondary text-white';\n\n const container = document.createElement('div');\n container.className = 'container cul-cols';\n\n data[section].forEach(item => {\n const a = document.createElement('a');\n a.href = item.href;\n a.className = 'd-block py-1 text-white dropdown-item bg-secondary';\n a.textContent = item.value;\n container.appendChild(a);\n });\n\n innerBg.appendChild(container);\n dropdown.appendChild(innerBg);\n li.appendChild(dropdown);\n fragment.appendChild(li);\n }\n\n return fragment;\n}\n\nfunction slugify(str) {\n return str.toLowerCase().replace(/\\s+/g, '-');\n}\n\n","/**\n * cul-menu-bundle.js\n *\n * public bundle entry for cul menu.\n * exposed as global `culmenu` (iife) and es module.\n */\n\n// bundled version for external usage via <script>\n\nimport { makeCULmenu } from './culmenu.js';\nimport { makeCULNavbarMenu } from './culmenu-navbar.js';\n\nfunction initCollapse(options) {\n return makeCULmenu(options.url);\n}\n\nfunction initNavbar(options) {\n return makeCULNavbarMenu(options.selector, options.url);\n}\n\nexport { makeCULmenu, initCollapse, initNavbar };\n\n"],"names":["exampleMenuUrl","fetchCULmenu","url","runtimeUrl","res","addCacheBusting","err","exampleMenu","makeCULmenu","jsonUrl","targets","menuData","el","index","config","getConfig","menu","buildCollapseMenu","markLoaded","data","ul","section","li","collapseId","slug","toggle","collapseDiv","subUl","item","li2","a","str","makeCULNavbarMenu","selector","root","prefix","buildNavbarItems","fragment","slugify","dropdown","innerBg","container","initCollapse","options","initNavbar"],"mappings":"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"}
1
+ {"version":3,"file":"cul-menu.bundle.es.js","sources":["../../src/js/cul-main-menu.json?url","../../src/js/culmenu-fetch.js","../../src/js/culmenu.js","../../src/js/culmenu-navbar.js","../../src/js/cul-menu-bundle.js"],"sourcesContent":["export default \"data:application/json;base64,ewogICJTZXJ2aWNlcyAmIFRvb2xzIjogWwogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L3NlcnZpY2VzLmh0bWwiLAogICAgICAidmFsdWUiOiAiU2VydmljZXMgJiBUb29scyIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvdXNpbmctbGlicmFyaWVzL2FsdW1uaS5odG1sIiwKICAgICAgInZhbHVlIjogIkZvciBBbHVtbmkiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L3NlcnZpY2VzL2ZhY3VsdHkuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJGb3IgRmFjdWx0eSIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvc2VydmljZXMuaHRtbCNhdWRpZW5jZT1zdHVkZW50IiwKICAgICAgInZhbHVlIjogIkZvciBTdHVkZW50cyIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvdXNpbmctbGlicmFyaWVzL3Zpc2l0b3JzLmh0bWwiLAogICAgICAidmFsdWUiOiAiRm9yIFZpc2l0b3JzIgogICAgfQogIF0sCiAgIkxpYnJhcmllcyI6IFsKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9saWJyYXJpZXMuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJMaWJyYXJpZXMgJiBBZmZpbGlhdGVzIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9saWJyYXJpZXMvYXZlcnkuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJBdmVyeSBBcmNoaXRlY3R1cmFsICYgRmluZSBBcnRzIExpYnJhcnkiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2xpYnJhcmllcy9idXJrZS5odG1sIiwKICAgICAgInZhbHVlIjogIkJ1cmtlIExpYnJhcnkgYXQgVW5pb24gVGhlb2xvZ2ljYWwgU2VtaW5hcnkiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2xpYnJhcmllcy9idXNpbmVzcy5odG1sIiwKICAgICAgInZhbHVlIjogIkJ1c2luZXNzICYgRWNvbm9taWNzIExpYnJhcnkgaW4gVXJpcyIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvbGlicmFyaWVzL2J1c2luZXNzLW1hbmhhdHRhbnZpbGxlLmh0bWwiLAogICAgICAidmFsdWUiOiAiQnVzaW5lc3MgTGlicmFyeSBhdCBNYW5oYXR0YW52aWxsZSIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvbGlicmFyaWVzL2J1dGxlci5odG1sIiwKICAgICAgInZhbHVlIjogIkJ1dGxlciBMaWJyYXJ5IgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9saWJyYXJpZXMvZWFzdGFzaWFuLmh0bWwiLAogICAgICAidmFsdWUiOiAiQy5WLiBTdGFyciBFYXN0IEFzaWFuIExpYnJhcnkiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2xpYnJhcmllcy9tdXNpYy5odG1sIiwKICAgICAgInZhbHVlIjogIkdhYmUgTS4gV2llbmVyIE11c2ljICYgQXJ0cyBMaWJyYXJ5IgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmN1bWMuY29sdW1iaWEuZWR1LyIsCiAgICAgICJ2YWx1ZSI6ICJIZWFsdGggU2NpZW5jZXMgTGlicmFyeSIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvbGlicmFyaWVzL2pvdXJuYWxpc20uaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJKb3VybmFsaXNtIExpYnJhcnkiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2xpYnJhcmllcy9sZWhtYW4uaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJMZWhtYW4gU29jaWFsIFNjaWVuY2VzIExpYnJhcnkiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwOi8vd3d3Lmxhdy5jb2x1bWJpYS5lZHUvbGlicmFyeS8iLAogICAgICAidmFsdWUiOiAiTGkgTHUgTGF3IExpYnJhcnkiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2xpYnJhcmllcy9tYXRoLmh0bWwiLAogICAgICAidmFsdWUiOiAiTWF0aGVtYXRpY3MgTGlicmFyeSIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvbGlicmFyaWVzL3JibWwuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJSYXJlIEJvb2sgJiBNYW51c2NyaXB0IExpYnJhcnkiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2xpYnJhcmllcy9zY2llbmNlLWVuZ2luZWVyaW5nLmh0bWwiLAogICAgICAidmFsdWUiOiAiU2NpZW5jZSAmIEVuZ2luZWVyaW5nIExpYnJhcnkiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2xpYnJhcmllcy9zb2NpYWwtd29yay5odG1sIiwKICAgICAgInZhbHVlIjogIlNvY2lhbCBXb3JrIExpYnJhcnkiCiAgICB9CiAgXSwKICAiQ29sbGVjdGlvbnMiOiBbCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvY29sbGVjdGlvbnMuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJBYm91dCBPdXIgQ29sbGVjdGlvbnMiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2FjYWRlbWljY29tbW9ucy5jb2x1bWJpYS5lZHUvIiwKICAgICAgInZhbHVlIjogIkFjYWRlbWljIENvbW1vbnMiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2NvbGxlY3Rpb25zL2FyY2hpdmVzLXBvcnRhbC5odG1sIiwKICAgICAgInZhbHVlIjogIkFyY2hpdmFsIENvbGxlY3Rpb25zIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9yZXNvbHZlci5saWJyYXJ5LmNvbHVtYmlhLmVkdS9jbGlvIiwKICAgICAgInZhbHVlIjogIkNMSU86IENvbHVtYmlhIExpYnJhcmllcyBDYXRhbG9nIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9hYm91dC9wb2xpY2llcy9jb2xsZWN0aW9uLWRldmVsb3BtZW50Lmh0bWwiLAogICAgICAidmFsdWUiOiAiQ29sbGVjdGlvbiBEZXZlbG9wbWVudCIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vZGxjLmxpYnJhcnkuY29sdW1iaWEuZWR1IiwKICAgICAgInZhbHVlIjogIkRpZ2l0YWwgQ29sbGVjdGlvbnMiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2NvbGxlY3Rpb25zL2VyZXNvdXJjZXMuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJFLVJlc291cmNlcyIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vcmVzb2x2ZXIubGlicmFyeS5jb2x1bWJpYS5lZHUvbHdlYjAwMDQiLAogICAgICAidmFsdWUiOiAiUmVjb21tZW5kIGEgVGl0bGUgZm9yIFB1cmNoYXNlIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9hYm91dC9wb2xpY2llcy9jb2xsZWN0aW9uLWRldmVsb3BtZW50L3JlcGF0cmlhdGlvbi1yZXR1cm4uaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJSZXBhdHJpYXRpb24iCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2Fib3V0L3N0YWZmL3N1YmplY3Qtc3BlY2lhbGlzdHMtYnktc3ViamVjdC5odG1sIiwKICAgICAgInZhbHVlIjogIlN1YmplY3QgU3BlY2lhbGlzdHMiCiAgICB9CiAgXSwKICAiVXNpbmcgdGhlIExpYnJhcmllcyI6IFsKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS91c2luZy1saWJyYXJpZXMuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJVc2luZyB0aGUgTGlicmFyaWVzIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS91c2luZy1saWJyYXJpZXMvYWNjZXNzLXByaXZpbGVnZXMuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJBY2Nlc3MgUHJpdmlsZWdlcyIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvdXNpbmctbGlicmFyaWVzL2Rpc2FiaWxpdHkuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJBY2Nlc3NpYmlsaXR5IgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS91c2luZy1saWJyYXJpZXMvYm9ycm93aW5nLmh0bWwiLAogICAgICAidmFsdWUiOiAiQm9ycm93LCBSZXF1ZXN0LCBSZW5ldyIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvc2VydmljZXMvcmVzZXJ2ZXMuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJDb3Vyc2UgUmVzZXJ2ZXMiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2hvdXJzLmxpYnJhcnkuY29sdW1iaWEuZWR1LyIsCiAgICAgICJ2YWx1ZSI6ICJIb3VycyIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvdXNpbmctbGlicmFyaWVzL3ByaW50aW5nLmh0bWwiLAogICAgICAidmFsdWUiOiAiUHJpbnQsIFNjYW4sIERpZ2l0aXplIgogICAgfQogIF0sCiAgIlJlc2VhcmNoICYgVGVhY2hpbmciOiBbCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvcmVzZWFyY2gtdGVhY2hpbmcuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJSZXNlYXJjaCAmIFRlYWNoaW5nIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9yZXNlYXJjaC10ZWFjaGluZy9jb3B5cmlnaHQuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJDb3B5cmlnaHQgSW5mb3JtYXRpb24iCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L3Jlc2VhcmNoLXRlYWNoaW5nL2dldHRpbmctc3RhcnRlZC5odG1sIiwKICAgICAgInZhbHVlIjogIkdldHRpbmcgU3RhcnRlZCB3aXRoIHRoZSBMaWJyYXJpZXMiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L3Jlc2VhcmNoLXRlYWNoaW5nL2dsb2JhbC5odG1sIiwKICAgICAgInZhbHVlIjogIkdsb2JhbCBTdHVkaWVzIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9yZXNlYXJjaC10ZWFjaGluZy9vcGVuLXNjaG9sYXJzaGlwLmh0bWwiLAogICAgICAidmFsdWUiOiAiT3BlbiBTY2hvbGFyc2hpcCBTZXJ2aWNlcyIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvc2VydmljZXMvcmVzZWFyY2gtZGF0YS1zZXJ2aWNlcy5odG1sIiwKICAgICAgInZhbHVlIjogIlJlc2VhcmNoIERhdGEgU2VydmljZXMiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L3NlcnZpY2VzL3N1YmplY3QtZ3VpZGVzLmh0bWwiLAogICAgICAidmFsdWUiOiAiU3ViamVjdCAmIENvdXJzZSBHdWlkZXMiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L3Jlc2VhcmNoLXRlYWNoaW5nL3dvcmtzaG9wcy5odG1sIiwKICAgICAgInZhbHVlIjogIldvcmtzaG9wcyAmIFRyYWluaW5nIgogICAgfQogIF0sCiAgIkFib3V0IjogWwogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2Fib3V0Lmh0bWwiLAogICAgICAidmFsdWUiOiAiQWJvdXQgdGhlIExpYnJhcmllcyIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvYWJvdXQvam9icy1pbnRlcm5zaGlwcy5odG1sIiwKICAgICAgInZhbHVlIjogIkpvYnMgJiBJbnRlcm5zaGlwcyIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvYWJvdXQvbmV3cy9hbGVydC5odG1sIiwKICAgICAgInZhbHVlIjogIkxpYnJhcnkgU3RhdHVzIFVwZGF0ZXMiCiAgICB9LAogICAgewogICAgICAiaHJlZiI6ICJodHRwczovL2xpYnJhcnkuY29sdW1iaWEuZWR1L2Fib3V0L25ld3MuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJOZXdzIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9hYm91dC92YWx1ZXMuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJPdXIgVmFsdWVzICYgQ29tbWl0bWVudCBpbiBBY3Rpb24iCiAgICB9LAogICAgICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9hYm91dC9wb2xpY2llcy5odG1sIiwKICAgICAgInZhbHVlIjogIlBvbGljaWVzIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9saWJyYXJ5LmNvbHVtYmlhLmVkdS9hYm91dC9zdGFmZi5odG1sIiwKICAgICAgInZhbHVlIjogIlN0YWZmIgogICAgfSwKICAgIHsKICAgICAgImhyZWYiOiAiaHR0cHM6Ly9zdHJhdGVnaWNkaXJlY3Rpb25zLmxpYnJhcnkuY29sdW1iaWEuZWR1LyIsCiAgICAgICJ2YWx1ZSI6ICJTdHJhdGVnaWMgRGlyZWN0aW9ucyIKICAgIH0sCiAgICB7CiAgICAgICJocmVmIjogImh0dHBzOi8vbGlicmFyeS5jb2x1bWJpYS5lZHUvYWJvdXQvc3R1ZGVudF9hZHZpc29yeV9jb21taXR0ZWUuaHRtbCIsCiAgICAgICJ2YWx1ZSI6ICJTdHVkZW50IExpYnJhcnkgQWR2aXNvcnkgQ29tbWl0dGVlIgogICAgfQogIF0KfQo=\"","// handles fetching menu json with fallback and cache-busting\n\n// culmenu-fetch.js\nimport exampleMenu from './cul-main-menu.json';\nimport exampleMenuUrl from './cul-main-menu.json?url';\n\nexport async function fetchCULmenu(url) {\n const runtimeUrl = url || exampleMenuUrl;\n\n try {\n const res = await fetch(addCacheBusting(runtimeUrl), {\n cache: 'no-store',\n signal: AbortSignal.timeout(3000) // fail fast\n });\n\n if (!res.ok) throw new Error('Menu fetch failed');\n return await res.json();\n\n } catch (err) {\n console.warn(\n '[CUL Menu] Remote menu unavailable, using bundled example.',\n err\n );\n return exampleMenu;\n }\n}\n\nfunction addCacheBusting(url) {\n if (url.includes('?')) return url;\n return `${url}?v=${__VERSION__}`;\n}\n\n","/**\n * culmenu.js\n *\n * vertical / collapse-style cul menu renderer.\n * bootstrap 5 dependent.\n */\n\nimport { fetchCULmenu } from './culmenu-fetch.js';\n\n/**\n * initialize all collapse-style menus\n * @param {string} jsonUrl - optional runtime json url\n */\nexport async function makeCULmenu(jsonUrl) {\n const targets = document.querySelectorAll('[data-cul-menu]');\n if (!targets.length) return;\n\n const menuData = await fetchCULmenu(jsonUrl);\n\n targets.forEach((el, index) => {\n const config = getConfig(el, index);\n const menu = buildCollapseMenu(menuData, config);\n el.replaceChildren(menu);\n\n markLoaded(el);\n });\n}\n\n/** mark container as loaded */\nfunction markLoaded(el) {\n el.classList.remove('cul-menu-loading');\n el.classList.add('cul-menu-loaded');\n}\n\n/** read config from data attributes with safe defaults */\nfunction getConfig(el, index) {\n return {\n prefix: el.dataset.menuId || `culmenu-${index}`,\n toggleTag: el.dataset.toggleTag || 'button',\n toggleClasses:\n el.dataset.toggleClasses ||\n 'btn btn-toggle ps-0 d-inline-flex w-100 align-items-center rounded border-0 collapsed',\n listClasses: el.dataset.listClasses || 'list-unstyled w-100',\n itemClasses: el.dataset.itemClasses || 'd-block',\n useCollapse: el.dataset.useCollapse !== 'false'\n };\n}\n\n/** build collapse menu dom */\nfunction buildCollapseMenu(data, config) {\n const ul = document.createElement('ul');\n ul.className = config.listClasses;\n\n for (const section in data) {\n const li = document.createElement('li');\n li.className = 'mb-1';\n\n const collapseId = `${config.prefix}-${slug(section)}-collapse`;\n\n // toggle element\n const toggle = document.createElement(config.toggleTag);\n toggle.className = config.toggleClasses;\n toggle.textContent = section;\n\n if (config.useCollapse) {\n toggle.setAttribute('data-bs-toggle', 'collapse');\n toggle.setAttribute('data-bs-target', `#${collapseId}`);\n toggle.setAttribute('aria-expanded', 'false');\n }\n\n li.appendChild(toggle);\n\n // collapsible content\n const collapseDiv = document.createElement('div');\n collapseDiv.className = config.useCollapse ? 'collapse' : '';\n collapseDiv.id = collapseId;\n\n const subUl = document.createElement('ul');\n subUl.className = 'btn-toggle-nav list-unstyled fw-normal pb-1';\n\n data[section].forEach(item => {\n const li2 = document.createElement('li');\n const a = document.createElement('a');\n a.href = item.href;\n a.textContent = item.value;\n a.className = config.itemClasses;\n li2.appendChild(a);\n subUl.appendChild(li2);\n });\n\n collapseDiv.appendChild(subUl);\n li.appendChild(collapseDiv);\n ul.appendChild(li);\n }\n\n return ul;\n}\n\n/** utility slugify */\nfunction slug(str) {\n return str.toLowerCase().replace(/\\s+/g, '-');\n}\n\n","/**\n * culmenu-navbar.js\n *\n * navbar / dropdown-style cul menu renderer.\n * matches bootstrap 5 navbar + dropdown + mega-menu pattern.\n */\n\nimport { fetchCULmenu } from './culmenu-fetch.js';\n\n/**\n * initialize navbar menus\n * @param {string} selector - container element\n * @param {string} jsonUrl - optional runtime json url\n */\nexport async function makeCULNavbarMenu(selector, jsonUrl) {\n const root = document.querySelector(selector);\n if (!root) return;\n\n const ul = root.querySelector('ul');\n if (!ul) {\n console.warn('CUL navbar menu: <ul> not found');\n return;\n }\n\n const menuData = await fetchCULmenu(jsonUrl);\n const prefix = root.dataset.menuId || 'cul-navbar';\n\n ul.replaceChildren(buildNavbarItems(menuData, prefix));\n markLoaded(root);\n}\n\nfunction markLoaded(el) {\n el.classList.remove('cul-menu-loading');\n el.classList.add('cul-menu-loaded');\n}\n\nfunction buildNavbarItems(data, prefix) {\n const fragment = document.createDocumentFragment();\n\n for (const section in data) {\n const slug = `${prefix}-${slugify(section)}`;\n\n const li = document.createElement('li');\n li.className = 'nav-item dropdown position-static d-inline-flex';\n\n const toggle = document.createElement('a');\n toggle.href = '#';\n toggle.className = 'nav-link dropdown-toggle my-2 me-3';\n toggle.setAttribute('data-bs-toggle', 'dropdown');\n toggle.setAttribute('aria-expanded', 'false');\n toggle.textContent = section;\n\n li.appendChild(toggle);\n\n const dropdown = document.createElement('div');\n dropdown.id = `${slug}-dropdown`;\n dropdown.className =\n 'dropdown-menu w-100 border-top-0 border-left-0 border-right-0 rounded-0 py-0 my-0';\n\n const innerBg = document.createElement('div');\n innerBg.className = 'py-3 bg-secondary text-white';\n\n const container = document.createElement('div');\n container.className = 'container cul-cols';\n\n data[section].forEach(item => {\n const a = document.createElement('a');\n a.href = item.href;\n a.className = 'd-block py-1 text-white dropdown-item bg-secondary';\n a.textContent = item.value;\n container.appendChild(a);\n });\n\n innerBg.appendChild(container);\n dropdown.appendChild(innerBg);\n li.appendChild(dropdown);\n fragment.appendChild(li);\n }\n\n return fragment;\n}\n\nfunction slugify(str) {\n return str.toLowerCase().replace(/\\s+/g, '-');\n}\n\n","/**\n * cul-menu-bundle.js\n *\n * public bundle entry for cul menu.\n * exposed as global `culmenu` (iife) and es module.\n */\n\n// bundled version for external usage via <script>\n\nimport { makeCULmenu } from './culmenu.js';\nimport { makeCULNavbarMenu } from './culmenu-navbar.js';\n\nfunction initCollapse(options) {\n return makeCULmenu(options.url);\n}\n\nfunction initNavbar(options) {\n return makeCULNavbarMenu(options.selector, options.url);\n}\n\nexport { makeCULmenu, initCollapse, initNavbar };\n\n"],"names":["exampleMenuUrl","fetchCULmenu","url","runtimeUrl","res","addCacheBusting","err","exampleMenu","makeCULmenu","jsonUrl","targets","menuData","el","index","config","getConfig","menu","buildCollapseMenu","markLoaded","data","ul","section","li","collapseId","slug","toggle","collapseDiv","subUl","item","li2","a","str","makeCULNavbarMenu","selector","root","prefix","buildNavbarItems","fragment","slugify","dropdown","innerBg","container","initCollapse","options","initNavbar"],"mappings":"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"}