@pimaonline/pimaonline-themepack 3.12.1 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (142) hide show
  1. package/README.md +12 -23
  2. package/dist/css/main.css +1 -1
  3. package/dist/css/plugins/alt-icons.css +1 -1
  4. package/dist/css/plugins/font-awesome.css +1 -1
  5. package/dist/css/routes.css +1 -1
  6. package/dist/css/themes/ait/styles.css +1 -1
  7. package/dist/css/themes/ajs/styles.css +1 -1
  8. package/dist/css/themes/ant/styles.css +1 -0
  9. package/dist/css/themes/art/styles.css +1 -1
  10. package/dist/css/themes/aviation/styles.css +1 -1
  11. package/dist/css/themes/bct/styles.css +1 -1
  12. package/dist/css/themes/bio/styles.css +1 -1
  13. package/dist/css/themes/business/styles.css +1 -1
  14. package/dist/css/themes/cad/styles.css +1 -1
  15. package/dist/css/themes/cards/styles.css +1 -1
  16. package/dist/css/themes/cas/styles.css +1 -0
  17. package/dist/css/themes/cda/styles.css +1 -1
  18. package/dist/css/themes/chm/styles.css +1 -0
  19. package/dist/css/themes/cis/styles.css +1 -1
  20. package/dist/css/themes/communication/styles.css +1 -1
  21. package/dist/css/themes/computer-information-systems/styles.css +1 -1
  22. package/dist/css/themes/culinary/styles.css +1 -1
  23. package/dist/css/themes/culinary/versions/black-marble.css +1 -1
  24. package/dist/css/themes/culinary/versions/stainless.css +1 -1
  25. package/dist/css/themes/culinary/versions/wood.css +1 -1
  26. package/dist/css/themes/dental/styles.css +1 -1
  27. package/dist/css/themes/ece/styles.css +1 -1
  28. package/dist/css/themes/ecn/styles.css +1 -1
  29. package/dist/css/themes/eng/styles.css +1 -1
  30. package/dist/css/themes/fashion/styles.css +1 -1
  31. package/dist/css/themes/fitness/styles.css +1 -1
  32. package/dist/css/themes/fsc/styles.css +1 -1
  33. package/dist/css/themes/geography/styles.css +1 -1
  34. package/dist/css/themes/geology/styles.css +1 -1
  35. package/dist/css/themes/health-it/styles.css +1 -1
  36. package/dist/css/themes/history/styles.css +1 -1
  37. package/dist/css/themes/hrm/styles.css +1 -1
  38. package/dist/css/themes/hrs/styles.css +1 -1
  39. package/dist/css/themes/journalism/styles.css +1 -1
  40. package/dist/css/themes/lang/styles.css +1 -1
  41. package/dist/css/themes/lgm/styles.css +1 -1
  42. package/dist/css/themes/machine/styles.css +1 -1
  43. package/dist/css/themes/math/styles.css +1 -1
  44. package/dist/css/themes/mgt/styles.css +1 -1
  45. package/dist/css/themes/minimalist/styles.css +1 -1
  46. package/dist/css/themes/mkt/styles.css +1 -0
  47. package/dist/css/themes/music/styles.css +1 -1
  48. package/dist/css/themes/nursing/styles.css +1 -0
  49. package/dist/css/themes/philosophy/styles.css +1 -1
  50. package/dist/css/themes/pht/styles.css +1 -1
  51. package/dist/css/themes/phy/styles.css +1 -0
  52. package/dist/css/themes/pos/styles.css +1 -0
  53. package/dist/css/themes/psy/styles.css +1 -1
  54. package/dist/css/themes/reading/styles.css +1 -0
  55. package/dist/css/themes/resort/styles.css +1 -1
  56. package/dist/css/themes/soc/styles.css +1 -1
  57. package/dist/css/themes/ss/styles.css +1 -1
  58. package/dist/css/themes/tps/styles.css +1 -0
  59. package/dist/css/themes/university/styles.css +1 -1
  60. package/dist/css/themes/vet/styles.css +1 -1
  61. package/dist/css/themes/welding/styles.css +1 -1
  62. package/dist/css/themes/writing/styles.css +1 -1
  63. package/dist/img/general/arrow-right-black.svg +1 -0
  64. package/dist/img/general/arrow-right-primary-blue.svg +1 -0
  65. package/dist/img/general/arrow-right-white.svg +1 -0
  66. package/dist/img/theme-images/ant/texture.png +0 -0
  67. package/dist/img/theme-images/cas/city-vector.svg +92 -0
  68. package/dist/img/theme-images/cas/farm-vector.svg +1 -0
  69. package/dist/img/theme-images/cas/ocean-vector.svg +1 -0
  70. package/dist/img/theme-images/cas/recycle-symbol.svg +1 -0
  71. package/dist/img/theme-images/chm/chem-letters/letter-a.png +0 -0
  72. package/dist/img/theme-images/chm/chem-letters/letter-b.png +0 -0
  73. package/dist/img/theme-images/chm/chem-letters/letter-c.png +0 -0
  74. package/dist/img/theme-images/chm/chem-letters/letter-d.png +0 -0
  75. package/dist/img/theme-images/chm/chem-letters/letter-e.png +0 -0
  76. package/dist/img/theme-images/chm/chem-letters/letter-f.png +0 -0
  77. package/dist/img/theme-images/chm/chem-letters/letter-g.png +0 -0
  78. package/dist/img/theme-images/chm/chem-letters/letter-h.png +0 -0
  79. package/dist/img/theme-images/chm/chem-letters/letter-i.png +0 -0
  80. package/dist/img/theme-images/chm/chem-letters/letter-j.png +0 -0
  81. package/dist/img/theme-images/chm/chem-letters/letter-k.png +0 -0
  82. package/dist/img/theme-images/chm/chem-letters/letter-l.png +0 -0
  83. package/dist/img/theme-images/chm/chem-letters/letter-m.png +0 -0
  84. package/dist/img/theme-images/chm/chem-letters/letter-n.png +0 -0
  85. package/dist/img/theme-images/chm/chem-letters/letter-o.png +0 -0
  86. package/dist/img/theme-images/chm/chem-letters/letter-p.png +0 -0
  87. package/dist/img/theme-images/chm/chem-letters/letter-q.png +0 -0
  88. package/dist/img/theme-images/chm/chem-letters/letter-r.png +0 -0
  89. package/dist/img/theme-images/chm/chem-letters/letter-s.png +0 -0
  90. package/dist/img/theme-images/chm/chem-letters/letter-t.png +0 -0
  91. package/dist/img/theme-images/chm/chem-letters/letter-u.png +0 -0
  92. package/dist/img/theme-images/chm/chem-letters/letter-v.png +0 -0
  93. package/dist/img/theme-images/chm/chem-letters/letter-w.png +0 -0
  94. package/dist/img/theme-images/chm/chem-letters/letter-x.png +0 -0
  95. package/dist/img/theme-images/chm/chem-letters/letter-y.png +0 -0
  96. package/dist/img/theme-images/chm/chem-letters/letter-z.png +0 -0
  97. package/dist/img/theme-images/mkt/blue/bluebars.svg +36 -0
  98. package/dist/img/theme-images/mkt/blue/blueheader.jpg +0 -0
  99. package/dist/img/theme-images/mkt/blue/bluepie.svg +42 -0
  100. package/dist/img/theme-images/mkt/green/greenbars.svg +36 -0
  101. package/dist/img/theme-images/mkt/green/greenheader.jpg +0 -0
  102. package/dist/img/theme-images/mkt/green/greenpie.svg +42 -0
  103. package/dist/img/theme-images/mkt/yellow/yellowbars.svg +36 -0
  104. package/dist/img/theme-images/mkt/yellow/yellowheader.jpg +0 -0
  105. package/dist/img/theme-images/mkt/yellow/yellowpie.svg +42 -0
  106. package/dist/img/theme-images/nursing/blue/bottomright-blue.svg +95 -0
  107. package/dist/img/theme-images/nursing/blue/topleft-blue.svg +111 -0
  108. package/dist/img/theme-images/nursing/green/bottomright-green.svg +95 -0
  109. package/dist/img/theme-images/nursing/green/topleft-green.svg +111 -0
  110. package/dist/img/theme-images/nursing/purple/bottomright-purple.svg +95 -0
  111. package/dist/img/theme-images/nursing/purple/topleft-purple.svg +111 -0
  112. package/dist/img/theme-images/nursing/teal/bottomright-teal.svg +95 -0
  113. package/dist/img/theme-images/nursing/teal/topleft-teal.svg +111 -0
  114. package/dist/img/theme-images/phy/background.svg +150 -0
  115. package/dist/img/theme-images/phy/tape-style1.svg +8 -0
  116. package/dist/img/theme-images/reading/bg10.jpg +0 -0
  117. package/dist/js/scripts2.js +1 -1552
  118. package/dist/js/themes/cas.js +1 -0
  119. package/dist/js/themes/chm.js +1 -0
  120. package/dist/js/themes/ecn.js +1 -13
  121. package/dist/js/themes/hrs.js +1 -19
  122. package/dist/js/themes/ss.js +1 -197
  123. package/dist/plugins/fancybox/fancybox-example.html +1 -1
  124. package/dist/plugins/fancybox/helpers/jquery.fancybox-buttons.js +2 -122
  125. package/dist/plugins/fancybox/helpers/jquery.fancybox-media.js +2 -201
  126. package/dist/plugins/fancybox/helpers/jquery.fancybox-thumbs.js +2 -165
  127. package/dist/plugins/fancybox/jquery.fancybox.js +2 -2018
  128. package/dist/plugins/fancybox/jquery.fancybox.pack.js +2 -46
  129. package/dist/plugins/flashcards/flashcards-example.html +1 -1
  130. package/dist/plugins/flashcards/js/flash_cards.min.js +1 -12
  131. package/dist/plugins/flashcards/js/plugins/flash_cards.js +1 -62
  132. package/dist/plugins/flashcards/js/plugins/jquery.cycle.js +2 -1148
  133. package/dist/plugins/flashcards/js/vendor/jquery-1.7.2.js +2 -9404
  134. package/dist/plugins/flashcards/js/vendor/jquery-1.7.2.min.js +2 -4
  135. package/dist/plugins/flashcards/js/vendor/modernizr-2.5.3.min.js +1 -4
  136. package/dist/plugins/floating-particles/floating-particles.js +1 -68
  137. package/dist/plugins/global-homepage-overrides/global-homepage-overrides.js +1 -53
  138. package/dist/plugins/preview-banner/preview-banner.js +1 -57
  139. package/package.json +12 -16
  140. package/dist/js/jumpTo.js +0 -4
  141. package/dist/js/scripts-ts.js +0 -1
  142. package/dist/js/scripts.js +0 -327
@@ -1,68 +1 @@
1
- // JavaScript Document
2
- window.addEventListener("DOMContentLoaded", function() {
3
-
4
- let particleAmount = 75;
5
- const get_body = document.querySelector("body");
6
-
7
- const canvas_elem = document.createElement("canvas");
8
- const ctx = canvas_elem.getContext("2d");
9
-
10
- canvas_elem.id = "animated-bg";
11
- canvas_elem.width = window.innerWidth;
12
- canvas_elem.height = window.innerHeight;
13
- get_body.prepend(canvas_elem);
14
-
15
- const particleArray = [];
16
- let particleFill = "rgba(255, 255, 255, .08)";
17
-
18
- window.addEventListener("resize", function () {
19
- canvas_elem.width = window.innerWidth;
20
- canvas_elem.height = window.innerHeight;
21
- });
22
-
23
- class Particle {
24
- constructor() {
25
- this.x = Math.random() * ( (canvas_elem.width - 5) - 5 ) + 5;
26
- this.y = Math.random() * canvas_elem.height;
27
- this.size = Math.random() * (30 - 10) + 10;
28
- this.speedX = 0;
29
- this.speedY = Math.random() * (5 - 2) + 2 ;
30
- }
31
- update() {
32
- if (this.y + this.size > canvas_elem.height || this.y + this.size < 0) {
33
- this.speedY = -this.speedY;
34
- }
35
- this.x += this.speedX;
36
- this.y += this.speedY;
37
- }
38
- draw() {
39
- ctx.fillStyle = particleFill;
40
- ctx.beginPath();
41
- ctx.arc(this.x, this.y, this.size, 0, Math.PI * 2);
42
- ctx.fill();
43
- }
44
- }
45
-
46
- function init() {
47
- for (let i = 0; i < particleAmount; i++) {
48
- particleArray.push(new Particle());
49
- }
50
- }
51
- init();
52
-
53
- function handleParticles() {
54
- for (let i = 0; i < particleArray.length; i++) {
55
- particleArray[i].update();
56
- particleArray[i].draw();
57
- }
58
- }
59
-
60
- function animate() {
61
- ctx.clearRect(0, 0, canvas_elem.width, canvas_elem.height);
62
- handleParticles();
63
- requestAnimationFrame(animate);
64
- }
65
- animate();
66
-
67
- // end event listener
68
- });
1
+ window.addEventListener("DOMContentLoaded",(function(){const t=document.querySelector("body"),e=document.createElement("canvas"),i=e.getContext("2d");e.id="animated-bg",e.width=window.innerWidth,e.height=window.innerHeight,t.prepend(e);const n=[];window.addEventListener("resize",(function(){e.width=window.innerWidth,e.height=window.innerHeight}));class h{constructor(){this.x=Math.random()*(e.width-5-5)+5,this.y=Math.random()*e.height,this.size=20*Math.random()+10,this.speedX=0,this.speedY=3*Math.random()+2}update(){(this.y+this.size>e.height||this.y+this.size<0)&&(this.speedY=-this.speedY),this.x+=this.speedX,this.y+=this.speedY}draw(){i.fillStyle="rgba(255, 255, 255, .08)",i.beginPath(),i.arc(this.x,this.y,this.size,0,2*Math.PI),i.fill()}}!function(){for(let t=0;t<75;t++)n.push(new h)}(),function t(){i.clearRect(0,0,e.width,e.height),function(){for(let t=0;t<n.length;t++)n[t].update(),n[t].draw()}(),requestAnimationFrame(t)}()}));
@@ -1,53 +1 @@
1
- // This script uses a forEach loop to place a custom stylesheet into every shadow dom (#shadow-root) component,
2
- /// then while still in the loop runs scripts through each component
3
-
4
- window.parent.addEventListener("load", function () {
5
-
6
- // Find all shadow-dom components and create an array
7
- let sRoots = document.querySelectorAll("d2l-html-block");
8
-
9
- // Loop through array
10
- sRoots.forEach((each) => {
11
-
12
- // Set the root element of each shadow component to a variable
13
- let sRoot = each.shadowRoot.querySelector(".d2l-html-block-rendered");
14
-
15
- // Create link element
16
- let link = document.createElement("link");
17
- link.type = "text/css";
18
- link.rel = "stylesheet";
19
- link.href = "https://d2l.pima.edu/shared/webdev/course-files/plugins/global-homepage-overrides/global-homepage-overrides.css";
20
-
21
- // Append link element to root element
22
- sRoot.append(link);
23
-
24
- // BEGIN SCRIPTS *note: still going through forEach loop
25
-
26
- // PCC Quicklinks
27
- /// if the element has both scroll-right/left
28
- if (each.shadowRoot.getElementById("pcc-ql-scroll-right") && each.shadowRoot.getElementById("pcc-ql-scroll-left")) {
29
-
30
- const buttonRight = each.shadowRoot.getElementById("pcc-ql-scroll-right");
31
- const buttonLeft = each.shadowRoot.getElementById("pcc-ql-scroll-left");
32
- const mediaQuery = window.matchMedia("(min-width: 413px)");
33
-
34
- buttonRight.onclick = function () {
35
- if (mediaQuery.matches) {
36
- each.shadowRoot.getElementById("pcc-ql-container").scrollLeft += 490;
37
- } else {
38
- each.shadowRoot.getElementById("pcc-ql-container").scrollLeft += 300;
39
- }
40
- };
41
-
42
- buttonLeft.onclick = function () {
43
- if (mediaQuery.matches) {
44
- each.shadowRoot.getElementById("pcc-ql-container").scrollLeft -= 490;
45
- } else {
46
- each.shadowRoot.getElementById("pcc-ql-container").scrollLeft -= 300;
47
- }
48
- };
49
- };
50
-
51
-
52
- })
53
- });
1
+ window.parent.addEventListener("load",(function(){document.querySelectorAll("d2l-html-block").forEach((e=>{let t=e.shadowRoot.querySelector(".d2l-html-block-rendered"),o=document.createElement("link");if(o.type="text/css",o.rel="stylesheet",o.href="https://d2l.pima.edu/shared/webdev/course-files/plugins/global-homepage-overrides/global-homepage-overrides.css",t.append(o),e.shadowRoot.getElementById("pcc-ql-scroll-right")&&e.shadowRoot.getElementById("pcc-ql-scroll-left")){const t=e.shadowRoot.getElementById("pcc-ql-scroll-right"),o=e.shadowRoot.getElementById("pcc-ql-scroll-left"),l=window.matchMedia("(min-width: 413px)");t.onclick=function(){l.matches?e.shadowRoot.getElementById("pcc-ql-container").scrollLeft+=490:e.shadowRoot.getElementById("pcc-ql-container").scrollLeft+=300},o.onclick=function(){l.matches?e.shadowRoot.getElementById("pcc-ql-container").scrollLeft-=490:e.shadowRoot.getElementById("pcc-ql-container").scrollLeft-=300}}}))}));
@@ -1,57 +1 @@
1
- // This script uses a forEach loop to place a custom stylesheet into every shadow dom (#shadow-root) component
2
-
3
- window.parent.addEventListener("load", function () {
4
-
5
- // Find all shadow-dom components and create an array
6
- let sRoots = document.querySelectorAll("d2l-html-block");
7
-
8
- // Loop through the array
9
- sRoots.forEach((each) => {
10
-
11
- // Set the root-element of each shadow-component to a variable
12
- let sRoot = each.shadowRoot.querySelector(".d2l-html-block-rendered");
13
-
14
- // Create link element
15
- let link = document.createElement("link");
16
- link.type = "text/css";
17
- link.rel = "stylesheet";
18
- link.href = "https://d2l.pima.edu/shared/webdev/course-files/plugins/preview-banner/preview-banner.css";
19
-
20
- // Append link element to root element
21
- sRoot.append(link);
22
-
23
- });
24
-
25
- });
26
-
27
- // Click any of the left navigation links to rerun script above.
28
- // This is done to refresh the CSS inserted into the shadow component
29
- let refresh = document.querySelectorAll(".d2l-le-TreeAccordionItem-anchor");
30
-
31
- refresh.forEach((each_) => {
32
- each_.addEventListener("click", () => {
33
-
34
- setTimeout(() => {
35
- let d2lBlock = document.querySelectorAll("d2l-html-block");
36
-
37
- // Loop through the array
38
- d2lBlock.forEach((_each) => {
39
-
40
- // Set the root-element of each shadow-component to a variable
41
- let innerD2lBlock = _each.shadowRoot.querySelector(".d2l-html-block-rendered");
42
-
43
- // Create link element
44
- let _link = document.createElement("link");
45
- _link.type = "text/css";
46
- _link.rel = "stylesheet";
47
- _link.href = "https://d2l.pima.edu/shared/webdev/course-files/plugins/preview-banner/preview-banner.css";
48
-
49
- // Append link element to root element
50
- innerD2lBlock.append(_link);
51
-
52
- });
53
-
54
- }, 1000);
55
-
56
- })
57
- });
1
+ window.parent.addEventListener("load",(function(){document.querySelectorAll("d2l-html-block").forEach((e=>{let t=e.shadowRoot.querySelector(".d2l-html-block-rendered"),r=document.createElement("link");r.type="text/css",r.rel="stylesheet",r.href="https://d2l.pima.edu/shared/webdev/course-files/plugins/preview-banner/preview-banner.css",t.append(r)}))}));let refresh=document.querySelectorAll(".d2l-le-TreeAccordionItem-anchor");refresh.forEach((e=>{e.addEventListener("click",(()=>{setTimeout((()=>{document.querySelectorAll("d2l-html-block").forEach((e=>{let t=e.shadowRoot.querySelector(".d2l-html-block-rendered"),r=document.createElement("link");r.type="text/css",r.rel="stylesheet",r.href="https://d2l.pima.edu/shared/webdev/course-files/plugins/preview-banner/preview-banner.css",t.append(r)}))}),1e3)}))}));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pimaonline/pimaonline-themepack",
3
- "version": "3.12.1",
3
+ "version": "4.0.0",
4
4
  "description": "A cloud based, course theme-pack for building courses efficiently within the D2L learning environment.",
5
5
  "main": "index.js",
6
6
  "files": [
@@ -16,18 +16,14 @@
16
16
  "/dist/css/routes.css"
17
17
  ],
18
18
  "scripts": {
19
- "dev": "gulp build-dev && gulp connect-watch",
20
- "build": "gulp build",
21
- "build-dev": "gulp build-dev",
19
+ "build": "concurrently \"npm run sass\" \"npm run webpack\"",
20
+ "dev": "concurrently \"npm run sass:watch\" \"npm run webpack:watch\" \"npm run serve\"",
22
21
  "docs": "docsify serve docs",
23
- "ts": "webpack",
24
- "ts:watch": "webpack --watch",
25
22
  "sass": "sass --no-source-map --style=compressed src/scss:dist/css",
26
23
  "sass:watch": "sass --watch --no-source-map --style=compressed src/scss:dist/css",
27
- "pug": "gulp pug-main-themes",
28
- "build:beta": "npm run pug && npm run sass && npm run ts",
29
- "serve:beta": "webpack serve",
30
- "dev:beta": "concurrently \"npm run sass:watch\" \"npm run ts:watch\" \"npm run serve:beta\""
24
+ "serve": "webpack serve",
25
+ "webpack": "webpack",
26
+ "webpack:watch": "webpack --watch"
31
27
  },
32
28
  "repository": {
33
29
  "type": "git",
@@ -40,17 +36,17 @@
40
36
  },
41
37
  "homepage": "https://github.com/franreyn/pimaonline-themepack",
42
38
  "devDependencies": {
39
+ "@types/react": "^18.2.76",
40
+ "@types/react-dom": "^18.2.25",
43
41
  "concurrently": "^8.2.2",
44
42
  "copy-webpack-plugin": "^12.0.2",
45
- "gulp": "^4.0.2",
46
- "gulp-concat": "^2.6.1",
47
- "gulp-connect": "^5.7.0",
48
- "gulp-pug": "^5.0.0",
49
- "gulp-sass": "^5.1.0",
43
+ "html-webpack-plugin": "^5.6.0",
44
+ "react": "^18.2.0",
45
+ "react-dom": "^18.2.0",
50
46
  "sass": "^1.49.9",
51
47
  "ts-loader": "^9.5.1",
52
48
  "typescript": "^5.3.3",
53
- "webpack": "^5.90.1",
49
+ "webpack": "^5.91.0",
54
50
  "webpack-cli": "^5.1.4",
55
51
  "webpack-dev-server": "^4.15.1"
56
52
  }
package/dist/js/jumpTo.js DELETED
@@ -1,4 +0,0 @@
1
- const jumpTo = async (anchor) => {
2
- document.getElementById(anchor).scrollIntoView();
3
- }
4
- console.log("jumpTo loaded");
@@ -1 +0,0 @@
1
- (()=>{"use strict";var e={592:(e,o)=>{Object.defineProperty(o,"__esModule",{value:!0}),o.discardAttributes=void 0,o.discardAttributes=(e,...o)=>{o.forEach((o=>e.removeAttribute(o)))}},92:(e,o,t)=>{Object.defineProperty(o,"__esModule",{value:!0});const n=t(256);[{class:"bi-",cdn:new URL("https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css")},{class:"ri-",cdn:new URL("https://cdn.jsdelivr.net/npm/remixicon@4.0.1/fonts/remixicon.css")}].forEach((e=>{var o;if(document.querySelector(`[class*='${e.class}']`)){const t=null!==(o=null===n.docHead||void 0===n.docHead?void 0:n.docHead.querySelector("meta[name='viewport']"))&&void 0!==o?o:null;t||console.warn("Document error: could not find viewport meta tag");const r=document.createElement("link");r.setAttribute("href",e.cdn.toString()),r.setAttribute("rel","stylesheet"),t&&(null===n.docHead||void 0===n.docHead||n.docHead.insertBefore(r,t.nextSibling))}}))},340:(e,o,t)=>{Object.defineProperty(o,"__esModule",{value:!0});const n=t(256);n.contentWrapper?n.contentWrapper.setAttribute("role","main"):n.contentWrapper||console.log("Document error: does not contain #content-wrapper."),n.secondColumn&&(n.secondColumn.setAttribute("role","region"),n.secondColumn.setAttribute("aria-label","Second column")),n.thirdColumn&&(n.thirdColumn.setAttribute("role","region"),n.thirdColumn.setAttribute("aria-label","Third column"))},452:(e,o,t)=>{Object.defineProperty(o,"__esModule",{value:!0}),o.cleanMarkup=void 0;const n=t(256),r=t(592);o.cleanMarkup=()=>{n.rolePres&&n.rolePres.forEach((e=>e.removeAttribute("role"))),document.querySelectorAll("table, thead, tbody, tr, th, td").forEach((e=>{(0,r.discardAttributes)(e,"cellspacing","cellpadding","width","style")}))},(0,o.cleanMarkup)()},100:()=>{if(document.querySelector("body[focus-reader]")){let t=!1;const n=document.querySelector("#content-wrapper"),r=document.querySelector("body[focus-reader]"),l=document.querySelector("head"),c=document.createElement("link");c.rel="stylesheet",c.href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.1.1/css/all.min.css",l&&l.append(c);const i=document.createElement("script");i.src="https://polyfill.io/v3/polyfill.min.js?features=IntersectionObserver",l&&l.append(i);const a=document.createElement("div");a.className="focus-reader-switches",r&&r.append(a);const d=document.createElement("div");a.append(d);const s=document.createElement("p");s.innerHTML="Focus Text",d.append(s);const u=document.createElement("i");u.classList.add("fa-solid"),u.classList.add("fa-circle-info"),d.append(u);const m=document.createElement("span");m.classList.add("info-tooltip"),m.innerHTML="Highlight text as you scroll",u.append(m);const p=document.createElement("button");p.id="focus-text",p.innerHTML=t?'<i class="fas fa-toggle-on"></i>':'<i class="fas fa-toggle-off"></i>',d.append(p),p.addEventListener("click",(()=>{t?(t=!t,n&&(n.removeAttribute("on"),p.innerHTML=t?'<i class="fas fa-toggle-on"></i>':'<i class="fas fa-toggle-off"></i>',o(n))):(t=!t,n&&(n.setAttribute("on",""),p.innerHTML=t?'<i class="fas fa-toggle-on"></i>':'<i class="fas fa-toggle-off"></i>',document.querySelectorAll("#content-wrapper .content-body :is(p, li, dd, dt, blockquote)").forEach((o=>{e({node:o,focusText:f})}))))}));const f=new IntersectionObserver((e=>{e.forEach((e=>{var o,t;e.isIntersecting?null===(o=e.target.closest("span"))||void 0===o||o.classList.add("focus-text"):null===(t=e.target.closest("span"))||void 0===t||t.classList.remove("focus-text")}))}),{root:null,rootMargin:"-48.9% 0px",threshold:0})}function e({node:o,focusText:t}){var n,r;o.nodeType===Node.TEXT_NODE&&""!==(null===(n=o.textContent)||void 0===n?void 0:n.trim())?(o.textContent.split(" ").forEach((e=>{var n;if(""!==e){const r=document.createElement("span");r.textContent=e+" ",t.observe(r),null===(n=o.parentNode)||void 0===n||n.insertBefore(r,o)}})),null===(r=o.parentNode)||void 0===r||r.removeChild(o)):o.nodeType===Node.ELEMENT_NODE&&Array.from(o.childNodes).forEach((o=>{e({node:o,focusText:t})}))}function o(e){var t,n,r;if(e.nodeType===Node.ELEMENT_NODE){const l=e;if(l instanceof HTMLElement&&"SPAN"===l.tagName&&("focus-text"===l.className||""===l.className||!(null===(t=l.textContent)||void 0===t?void 0:t.trim())||0===l.attributes.length)){const e=document.createTextNode(l.textContent||"");null===(n=l.parentNode)||void 0===n||n.insertBefore(e,l),null===(r=l.parentNode)||void 0===r||r.removeChild(l)}else Array.from(l.childNodes).forEach((e=>{o(e)}))}}},568:(e,o,t)=>{Object.defineProperty(o,"__esModule",{value:!0});const n=t(256);(()=>{if(null!==n.courseBody){n.contentWrapper&&n.secondColumn&&n.thirdColumn?n.courseBody.id="three-column":n.contentWrapper&&n.secondColumn&&!n.columnWidget?n.courseBody.id="two-column":n.contentWrapper&&n.secondColumn&&n.columnWidget?n.courseBody.id="two-col-widget":n.contentWrapper&&n.videoWrapper?n.courseBody.id="video-grid":!n.contentWrapper||n.secondColumn||n.thirdColumn||n.columnWidget||n.videoWrapper?n.contentWrapper&&!n.secondColumn&&(n.thirdColumn||n.columnWidget)?console.log("Document error: <body> is missing id because #second-column doesn't exist."):console.log("Document error: unable to determine the page layout for setting <body> id."):n.courseBody.id="one-column";const e=document.body.children;let o=!1;for(let t=0;t<e.length;t++){const n=e[t];if("content-wrapper"!==n.id&&"second-column"!==n.id&&"third-column"!==n.id&&"column-widget"!==n.id&&"HEADER"!==n.tagName&&"FOOTER"!==n.tagName&&"SCRIPT"!==n.tagName&&"loom-companion-mv3"!==n.id&&"focus-reader-switches"!==n.className){o=!0;break}}o&&console.log("Document error: Additional content outside #content-wrapper, #second-column, #third-column, or footer.")}else console.log("Document error: no <body> element found.")})()},584:(e,o,t)=>{Object.defineProperty(o,"__esModule",{value:!0});const n=t(256),r=document.querySelectorAll(".gallery-wrapper"),l=document.querySelectorAll(".image-box"),c=document.querySelectorAll(".image-gallery");r.length>0&&r.forEach((e=>{const o=e.parentNode;o instanceof Element&&o.classList.contains("image-gallery")||console.warn("Document error: parent of .gallery-wrapper does not have the .image-gallery class.")})),l.length>0&&l.forEach((e=>{const o=e.parentNode;o instanceof Element&&o.classList.contains("gallery-wrapper")||console.log("Document error: parent of .image-box does not have the .gallery-wrapper class.")})),r.length>0&&r.forEach((e=>{Array.from(e.children).every((e=>e instanceof HTMLElement&&e.classList.contains("image-box")))||console.warn("Document error: not all direct children of .gallery-wrapper have the .image-box class.")}));c.length>0&&((()=>{const e=document.createElement("link");e.rel="stylesheet",e.href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.1.1/css/all.min.css",null===n.docHead||void 0===n.docHead||n.docHead.appendChild(e)})(),(()=>{c.forEach((e=>{e.insertAdjacentHTML("afterbegin",'<div class="modal-box invisible">\n <div class="gallery-overlay"></div>\n <figure class="modal-box--image"><i class="fa-solid fa-x close-img"></i> <img src="#" alt="image here" /><figcaption class="img-caption"></figcaption></figure>\n </div>\n <button class="hide-gallery">Hide</button>')}));const e=document.querySelector(".gallery-overlay"),o=document.querySelector(".modal-box"),t=document.querySelector(".modal-box--image img"),n=document.querySelector(".img-caption"),r=document.querySelector(".close-img"),i=document.querySelectorAll(".hide-gallery"),a=e=>{null==o||o.classList.remove("invisible"),t&&(t.src=e.imgSrc),n&&(n.innerHTML=e.imgCaption)},d=()=>{null==o||o.classList.add("invisible")};l.forEach((e=>{e.addEventListener("click",(function(){var e,o;a({imgSrc:(null===(e=this.querySelector("img"))||void 0===e?void 0:e.src)||"",imgCaption:(null===(o=this.querySelector("img"))||void 0===o?void 0:o.alt)||""})})),e.setAttribute("tabindex","0"),e.addEventListener("keydown",(function(e){var o,t;"Enter"===e.key&&a({imgSrc:(null===(o=this.querySelector("img"))||void 0===o?void 0:o.src)||"",imgCaption:(null===(t=this.querySelector("img"))||void 0===t?void 0:t.alt)||""})}))})),e&&(e.onclick=d),window.onkeydown=e=>{27===e.keyCode&&d()},r&&(r.onclick=d),i.forEach((e=>{e.addEventListener("click",(()=>{var o;null===(o=e.nextElementSibling)||void 0===o||o.classList.toggle("invisible"),e.innerHTML="Hide"===e.innerHTML?"Show":"Hide"}))}))})())},315:()=>{const e=document.querySelectorAll(".media-container");e.length>0&&e.forEach(((e,o)=>{let t=String.fromCharCode(o+65).toLowerCase(),n=e.querySelector(".media-object"),r=e.querySelector("iframe"),l=e.querySelector(".media-info");r||console.warn("Document error: no iframe found for media container"),n||console.warn("Document error: no media object found for media container"),r&&!r.hasAttribute("aria-describedby")&&l&&(r.setAttribute("aria-describedby",`${t}`),l.id=`${[t]}`)}))},832:()=>{const e=document.querySelectorAll(".display, .display-lg");e.length>0&&(console.log("Fantastic"),[...e].forEach((e=>{const o=e.querySelectorAll(".display table th, table.display th, .display-lg table th, table.display-lg th"),t=e.querySelector(".display table tbody, table.display tbody, .display-lg table tbody, table.display-lg tbody"),n=[...o].map((e=>{var o;return(null===(o=e.textContent)||void 0===o?void 0:o.replace(/\r?\n|\r/,""))||""}));t&&[...t.rows].forEach((e=>{[...e.cells].forEach(((e,o)=>{e.setAttribute("data-th",n[o])}))}))})))},256:(e,o)=>{Object.defineProperty(o,"__esModule",{value:!0}),o.videoWrapper=o.rolePres=o.thirdColumn=o.secondColumn=o.docHead=o.courseBody=o.contentWrapper=o.columnWidget=void 0,o.columnWidget=document.querySelector("#column-widget"),o.contentWrapper=document.querySelector("#content-wrapper"),o.courseBody=document.querySelector("body"),o.docHead=document.querySelector("head"),o.secondColumn=document.querySelector("#second-column"),o.thirdColumn=document.querySelector("#third-column"),o.rolePres=document.querySelectorAll('[role="presentation"]'),o.videoWrapper=document.querySelector("#video-wrapper")}},o={};function t(n){var r=o[n];if(void 0!==r)return r.exports;var l=o[n]={exports:{}};return e[n](l,l.exports,t),l.exports}t(92),t(340),t(452),t(100),t(568),t(584),t(315),t(832)})();
@@ -1,327 +0,0 @@
1
- /// @description Main JS file for PimaOnline Themepack
2
- /// @dependencies jQuery 3.3.1 or later
3
-
4
- window.addEventListener("DOMContentLoaded", () => {
5
-
6
- const courseBody = document.querySelector("body");
7
- const contentWrapper = document.querySelector("#content-wrapper");
8
- const secondColumn = document.querySelector("#second-column");
9
- const thirdColumn = document.querySelector("#third-column");
10
- const columnWidget = document.querySelector("#column-widget");
11
- const videoWrapper = document.querySelector("#video-wrapper");
12
- const rolePres = document.querySelectorAll('[role="presentation"]');
13
- const imageGallery = document.querySelector(".image-gallery");
14
- const vocabListWidget = document.querySelector("dl.vocab-list");
15
- const vocabTerms = document.querySelectorAll("dl.vocab-list dt");
16
- const vocabDefs = document.querySelectorAll("dl.vocab-list dd");
17
- const vocabCloseBtns = document.querySelectorAll("dl.vocab-list button");
18
- const vocabLists = document.querySelectorAll("dl[class^='vocab-list']");
19
- const mediaContainers = document.querySelectorAll(".media-container");
20
- const tabsWidgets = document.querySelectorAll(".tabs");
21
-
22
- // Grid
23
- const addGrid = () => {
24
- if (secondColumn && thirdColumn) {
25
- courseBody.id = "three-column";
26
- } else if (secondColumn && !columnWidget) {
27
- courseBody.id = "two-column";
28
- } else if (columnWidget) {
29
- courseBody.id = "two-col-widget";
30
- } else if (videoWrapper) {
31
- courseBody.id = "video-grid";
32
- } else {
33
- courseBody.id = "one-column";
34
- }
35
- };
36
- addGrid();
37
-
38
- // JS to add role and aria-label to content-wrapper, second-column, and third-column
39
- const addAria = () => {
40
- contentWrapper.setAttribute("role", "main");
41
- if (secondColumn) {
42
- secondColumn.setAttribute("role", "region");
43
- secondColumn.setAttribute("aria-label", "Second column");
44
- }
45
- if (thirdColumn) {
46
- thirdColumn.setAttribute("role", "region");
47
- thirdColumn.setAttribute("aria-label", "Third column");
48
- }
49
- };
50
- addAria();
51
-
52
- // Clean up HTML
53
- const cleanMarkup = () => {
54
- // Remove role="presentation" attr from any element that has it
55
- if (rolePres) {
56
- rolePres.forEach((roleElem) => roleElem.removeAttribute("role"));
57
- }
58
- // Set functino to remove atrributes from elements
59
- const discardAttributes = (element, ...attributes) => {
60
- attributes.forEach((attribute) => element.removeAttribute(attribute));
61
- }
62
- // Remove attributes from tables
63
- const tableElems = document.querySelectorAll("table, thead, tbody, tr, th, td");
64
- tableElems.forEach((elem) => {
65
- discardAttributes(elem, "cellspacing", "cellpadding", "width", "style");
66
- });
67
- };
68
- cleanMarkup();
69
-
70
- // Helper JS for Responsive Tables
71
- const initResponsiveTables = () => {
72
- const tables = document.querySelectorAll(".display, .display-lg")
73
- for (let table = 0; table < tables.length; table++) {
74
- let headertext = [],
75
- headers = tables[table].querySelectorAll(".display table th, table.display th, .display-lg table th, table.display-lg th"),
76
- tablebody = tables[table].querySelector(".display table tbody, table.display tbody, .display-lg table tbody, table.display-lg tbody");
77
- for (let header = 0; header < headers.length; header++) {
78
- let current = headers[header];
79
- headertext.push(current.textContent.replace(/\r?\n|\r/, ""));
80
- }
81
- for (let y = 0, row; row = tablebody.rows[y]; y++) {
82
- for (let j = 0, col; col = row.cells[j]; j++) {
83
- col.setAttribute("data-th", headertext[j]);
84
- }
85
- }
86
- }
87
- }
88
- initResponsiveTables();
89
-
90
- // This is called by anchor links via onlick="" in the HTML
91
- // Added because default anchor links don't work on all browsers using D2L
92
- const addScript = (script) => {
93
- let newScript = document.createElement("script");
94
- newScript.setAttribute("src", script);
95
-
96
- document.body.append(newScript);
97
- }
98
-
99
- if(document.querySelector("[onclick]")) {
100
- addScript("https://cdn.jsdelivr.net/npm/@pimaonline/pimaonline-themepack/dist/js/jumpTo.js");
101
- }
102
-
103
- // Image gallery
104
- const callImageGallery = () => {
105
- // Create link element with font-awesome cdn and append it to the <head>
106
- const docHead = document.querySelector("head");
107
- const fontAwesomeCdn = document.createElement("link");
108
- fontAwesomeCdn.setAttribute("rel", "stylesheet");
109
- fontAwesomeCdn.setAttribute("href", "https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.1.1/css/all.min.css");
110
- docHead.appendChild(fontAwesomeCdn);
111
- // Begin image gallery
112
- const imgGalleries = document.querySelectorAll(".image-gallery"),
113
- imgBoxes = document.querySelectorAll(".image-box"),
114
- modalBoxContent = `<div class="modal-box invisible">
115
- <div class="gallery-overlay"></div>
116
- <figure class="modal-box--image"><i class="fa-solid fa-x close-img"></i> <img src="#" alt="image here" /><figcaption class="img-caption"></figcaption></figure>
117
- </div>
118
- <button class="hide-gallery">Hide</button>`;
119
-
120
- // createModalBox.innerHTML = modalBoxContent;
121
- for (let imgGallery = 0; imgGallery < imgGalleries.length; imgGallery++) {
122
- imgGalleries[imgGallery].insertAdjacentHTML("afterbegin", modalBoxContent);
123
- }
124
-
125
- if (document.querySelector(".modal-box")) {
126
- const overlay = document.querySelector(".gallery-overlay"),
127
- modalBox = document.querySelector(".modal-box"),
128
- modalImg = document.querySelector(".modal-box--image img"),
129
- modalCaption = document.querySelector(".img-caption"),
130
- closeImg = document.querySelector(".close-img");
131
-
132
- for (let imgBox = 0; imgBox < imgBoxes.length; imgBox++) {
133
- imgBoxes[imgBox].onclick = function () {
134
- modalBox.classList.remove("invisible");
135
- let imgSrc = this.querySelector("img").src;
136
- modalImg.src = imgSrc;
137
- let imgCaption = this.querySelector("img").alt;
138
- modalCaption.innerHTML = imgCaption;
139
- }
140
- }
141
- overlay.onclick = () => {
142
- modalBox.classList.add("invisible");
143
- }
144
- window.onkeydown = (esc) => {
145
- if (esc.keyCode === 27) {
146
- modalBox.classList.add("invisible");
147
- }
148
- }
149
- closeImg.onclick = () => {
150
- modalBox.classList.add("invisible");
151
- }
152
- const hideGalleries = document.querySelectorAll(".hide-gallery");
153
- for (let hideGallery = 0; hideGallery < hideGalleries.length; hideGallery++) {
154
- hideGalleries[hideGallery].addEventListener("click", () => {
155
- hideGalleries[hideGallery].nextElementSibling.classList.toggle("invisible");
156
- if (hideGalleries[hideGallery].innerHTML === "Hide") {
157
- hideGalleries[hideGallery].innerHTML = "Show";
158
- } else {
159
- hideGalleries[hideGallery].innerHTML = "Hide";
160
- }
161
- });
162
- }
163
- };
164
- }
165
- if (imageGallery) {
166
- callImageGallery();
167
- }
168
-
169
- // Vocab list widget
170
- const callVocabList = () => {
171
- if (vocabCloseBtns) {
172
- for(let btn = 0; btn < vocabCloseBtns.length; btn++) {
173
- vocabCloseBtns[btn].addEventListener("click", () => {
174
- for(let node = 0; node < vocabLists[btn].children.length;node++) {
175
- if(vocabLists[btn].children[node].tagName == "DD") {
176
- vocabLists[btn].children[node].removeAttribute("style");
177
- }
178
- if(vocabLists[btn].children[node].tagName == "DT") {
179
- vocabLists[btn].children[node].removeAttribute("class");
180
- }
181
- }});
182
- }
183
- }
184
- for (let activeTerm = 0; activeTerm < vocabTerms.length; activeTerm++) {
185
- vocabTerms[activeTerm].addEventListener("click", function() {
186
- this.classList.toggle("active");
187
- let termPanel = this.nextElementSibling;
188
- if (termPanel.style.display === "block") { termPanel.removeAttribute("style"); }
189
- else { termPanel.style.display = "block"; }
190
- });
191
-
192
- vocabTerms[activeTerm].addEventListener("keydown", function(e) {
193
- if(e.key === "Enter") {
194
- this.classList.toggle("active");
195
- let termPanel = this.nextElementSibling;
196
- if (termPanel.style.display === "block") { termPanel.removeAttribute("style"); }
197
- else { termPanel.style.display = "block"; }
198
- }
199
- });
200
- }
201
- }
202
- if (vocabListWidget) {callVocabList();}
203
-
204
- //
205
- const addMediaContainersAria = () => {
206
- mediaContainers.forEach((eachContainer, index) => {
207
- // loopID: find the current index value, convert it to its letter equivalent, then convert to lowercase
208
- let loopId = String.fromCharCode(index + 65).toLowerCase();
209
- let mediaObject = eachContainer.querySelector(".media-object");
210
- let iframe = mediaObject.firstElementChild;
211
- let mediaInfo = mediaObject.nextElementSibling;
212
-
213
- // If element DOES NOT have "aria-describedby" && it DOES have a sibling element.
214
- if (!iframe.hasAttribute("aria-describedby") && mediaInfo != null) {
215
- iframe.setAttribute("aria-describedby", `${loopId}`);
216
- mediaInfo.id = `${[loopId]}`;
217
- }
218
- });
219
- }
220
- if (mediaContainers) {addMediaContainersAria();}
221
-
222
- //Tabs Widget
223
- const callTabsWidget = () => {
224
-
225
- let tabsWidgetsNum = 0;
226
-
227
- tabsWidgets.forEach((tab,index) => {
228
- let tabInputs = tab.querySelectorAll("input")
229
- let tabLabels = tab.querySelectorAll("label")
230
- let tabDivs = tab.querySelectorAll("div")
231
-
232
- let groupNum = index + 1;
233
-
234
- //Add region and aria-label to parent div
235
- tab.setAttribute("role", "region");
236
- tab.setAttribute("aria-label", `tab group ${groupNum}`)
237
-
238
- for(tabIndex = 0; tabIndex < tabInputs.length; tabIndex++) {
239
-
240
- let tabNum = tabsWidgetsNum + 1;
241
-
242
- //Add class, id, name, and aria-described by for inputs
243
- tabInputs[tabIndex].classList.add("tab-input");
244
- tabInputs[tabIndex].setAttribute("type", "radio")
245
- tabInputs[tabIndex].setAttribute("id", `tab${tabNum}`);
246
- tabInputs[tabIndex].setAttribute("name", `hint-group-${groupNum}` )
247
- tabInputs[tabIndex].setAttribute("aria-describedby", `tabHeading${tabNum}`)
248
- //Add class and for for labels
249
- tabLabels[tabIndex].classList.add("tab-header");
250
- tabLabels[tabIndex].setAttribute("for", `tab${tabNum}`)
251
- //Add class, tabindex, and id for divs
252
- tabDivs[tabIndex].classList.add("tab-panel")
253
- tabDivs[tabIndex].setAttribute("tabindex", 0)
254
- tabDivs[tabIndex].setAttribute("id", `tabHeading${tabNum}`)
255
- //Add attributes for hide tab
256
- if(tabIndex + 1 == tabInputs.length) {
257
- tabLabels[tabIndex].classList.add("hide-tab")
258
- tabInputs[tabIndex].checked = true;
259
- tabDivs[tabIndex].classList.add("hide-panel")
260
- }
261
- tabsWidgetsNum++;
262
- }
263
- })
264
- }
265
- if (tabsWidgets) {callTabsWidget();}
266
-
267
- // Toggle footnotes
268
- const toggleBtns = document.querySelectorAll(".toggle-btn, .toggle-footnotes");
269
-
270
- if (document.querySelector(".toggle-btn") || document.querySelector(".toggle-footnotes")) {
271
- for (let toggleBtn = 0; toggleBtn < toggleBtns.length; toggleBtn++) {
272
- // Add tabindex
273
- toggleBtns[toggleBtn].setAttribute("tabindex", "0");
274
-
275
- // Show/hide on click
276
- toggleBtns[toggleBtn].addEventListener("click", () => {
277
- toggleBtns[toggleBtn].nextElementSibling.classList.toggle("show");
278
- })
279
-
280
- // Show/hide on enter for users who use tab
281
- toggleBtns[toggleBtn].addEventListener("keydown", (enter) => {
282
- if (enter.keyCode === 13) {
283
- toggleBtns[toggleBtn].nextElementSibling.classList.toggle("show");
284
- }
285
- })
286
- }
287
- }
288
-
289
- // Call function with jQuery scripts
290
- const callJquery = () => {
291
- // Toggle Button's Arrow Right Points Down on Click
292
- $('.arrow-right').on('click', function () {
293
- $(this).toggleClass('arrow-down');
294
- });
295
- // TOOLTIP
296
- // Allows Screen readers to toggle a tooltip on click and to say if the tooltip is collapsed or expanded.
297
- $(".tooltip").click(function () {
298
- $(this).children(".tip-hover").toggle();
299
- if ($(this).children(".tip-hover").is(':visible')) {
300
- $(this).attr('aria-expanded', 'true');
301
- $(this).removeClass('hidden');
302
- } else {
303
- $(this).attr('aria-expanded', 'false');
304
- $(this).addClass('hidden');
305
- }
306
- });
307
- let start = 999;
308
- $('.tooltip').each(function (i) {
309
- $(this).css('z-index', start--);
310
- });
311
- $(".tooltip .video-container").parent().css("width", "450px");
312
- }
313
- callJquery();
314
-
315
- // Fancybox
316
- if (document.querySelector(".fancybox")) {
317
- $("[data-fancybox]").fancybox({
318
- idleTime: false,
319
- topRatio: 0.1,
320
- helpers: {
321
- title: {
322
- type: 'inside'
323
- },
324
- }
325
- });
326
- }
327
- });