@aarhus-university/au-lib-react-components 9.11.19 → 10.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (165) hide show
  1. package/.eslintrc.js +44 -0
  2. package/README.md +19 -20
  3. package/babel.config.js +7 -6
  4. package/build/umd/all.css +1 -1
  5. package/build/umd/all.css.map +1 -1
  6. package/build/umd/all.js +1 -1
  7. package/build/umd/all.js.map +1 -1
  8. package/build/umd/alphabox.js +1 -1
  9. package/build/umd/alphabox.js.map +1 -1
  10. package/build/umd/databox.js +1 -2
  11. package/build/umd/databox.js.map +1 -1
  12. package/build/umd/diagramme.js +1 -1
  13. package/build/umd/diagramme.js.map +1 -1
  14. package/build/umd/flowbox.js +1 -1
  15. package/build/umd/flowbox.js.map +1 -1
  16. package/build/umd/universe.js +1 -1
  17. package/build/umd/universe.js.map +1 -1
  18. package/package.json +66 -60
  19. package/src/components/{delphinus/AUAlertComponent.js → AUAlertComponent.tsx} +70 -85
  20. package/src/components/{AutoSuggestComponent.js → AUAutoSuggestComponent.js} +45 -19
  21. package/src/components/AUCalendarComponent.tsx +493 -0
  22. package/src/components/AUContentToggleComponent.tsx +33 -0
  23. package/src/components/AUDatepickerComponent.tsx +117 -0
  24. package/src/components/AUMobilePrefixComponent.tsx +15 -0
  25. package/src/components/{delphinus/AUModalComponent.js → AUModalComponent.tsx} +80 -94
  26. package/src/components/{form/AUReceiptComponent.js → AUReceiptComponent.tsx} +33 -40
  27. package/src/components/AUSpinnerComponent.tsx +67 -0
  28. package/src/components/{delphinus/AUSubNavComponent.js → AUSubNavComponent.tsx} +38 -53
  29. package/src/components/{form/AUSubmitButtonContainerComponent.js → AUSubmitButtonContainerComponent.tsx} +31 -39
  30. package/src/components/{delphinus/AUTabbedContentComponent.js → AUTabbedContentComponent.tsx} +145 -150
  31. package/src/components/{delphinus/AUTableComponent.js → AUTableComponent.tsx} +24 -28
  32. package/src/components/{delphinus/AUToastComponent.js → AUToastComponent.tsx} +104 -91
  33. package/src/components/{delphinus/AUToolbarComponent.js → AUToolbarComponent.tsx} +45 -48
  34. package/src/components/profile/AUProfileActions.js +128 -128
  35. package/src/components/profile/AUProfileAvatarComponent.js +83 -83
  36. package/src/components/profile/AUProfileAvatarV2Component.js +91 -91
  37. package/src/components/profile/AUProfileAvatarV3Component.tsx +42 -0
  38. package/src/components/profile/AUProfileContainerComponent.js +283 -283
  39. package/src/components/profile/AUProfileHooks.js +30 -30
  40. package/src/components/profile/AUProfileItemComponent.js +54 -54
  41. package/src/components/profile/AUProfileLanguageComponent.js +131 -131
  42. package/src/components/profile/{AUProfileLoginComponent.js → AUProfileLoginComponent.tsx} +3 -18
  43. package/src/components/profile/AUProfileMailComponent.js +307 -307
  44. package/src/components/profile/AUProfileMobileComponent.js +164 -164
  45. package/src/components/profile/AUProfileNameComponent.js +253 -253
  46. package/src/components/profile/AUProfileNextOfKinComponent.js +216 -216
  47. package/src/components/profile/AUProfileReducer.js +230 -230
  48. package/src/components/profile/AUProfileWidgetComponent.js +95 -95
  49. package/src/components/profile/AUProfileWidgetV2Component.js +116 -116
  50. package/src/components/profile/{AUProfileWidgetV3Component.js → AUProfileWidgetV3Component.tsx} +122 -130
  51. package/src/components/wrapping/AUEmbedComponent.js +47 -47
  52. package/src/{components → layout-2016/components}/alphabox/AlphaBoxComponent.js +28 -25
  53. package/src/{components → layout-2016/components}/alphabox/AlphaBoxContentComponent.js +25 -14
  54. package/src/{components → layout-2016/components/common}/AUCollapsibleComponent.js +1 -22
  55. package/src/{components → layout-2016/components/common}/AUSpinnerComponent.js +2 -24
  56. package/src/{components → layout-2016/components}/databox/DataBoxAlphabetComponent.js +1 -1
  57. package/src/{components → layout-2016/components}/databox/DataBoxAssociationComponent.js +2 -2
  58. package/src/{components → layout-2016/components}/databox/DataBoxButtonComponent.js +7 -3
  59. package/src/{components → layout-2016/components}/databox/DataBoxComponent.js +2 -2
  60. package/src/{components → layout-2016/components}/databox/DataBoxGroupingComponent.js +2 -0
  61. package/src/{components → layout-2016/components}/databox/DataBoxSearchResultComponent.js +1 -5
  62. package/src/{components → layout-2016/components}/databox/DataBoxStackedAssociationComponent.js +1 -5
  63. package/src/{components → layout-2016/components}/databox/DataBoxSuggestionComponent.js +0 -0
  64. package/src/{components → layout-2016/components/diagramme}/AUDiagrammeComponent.js +5 -6
  65. package/src/{components → layout-2016/components}/flowbox/FlowBoxComponent.js +8 -8
  66. package/src/{components → layout-2016/components}/flowbox/FlowBoxPhoneComponent.js +3 -5
  67. package/src/{components → layout-2016/components}/profile/AUProfileAvatar2016Component.js +6 -2
  68. package/src/{components → layout-2016/components}/universe/StaffTopComponent.js +4 -3
  69. package/src/{components → layout-2016/components}/universe/StudentTopComponent.js +0 -0
  70. package/src/{components → layout-2016/components}/universe/UniverseContainerComponent.js +11 -8
  71. package/src/layout-2016/lib/all.js +3 -0
  72. package/src/{lib → layout-2016/lib}/au-alphabox.js +1 -3
  73. package/src/{lib → layout-2016/lib}/au-databox.js +6 -9
  74. package/src/{lib → layout-2016/lib}/au-diagramme.js +2 -4
  75. package/src/{lib → layout-2016/lib}/au-flowbox.js +1 -3
  76. package/src/{lib → layout-2016/lib}/universe.js +0 -0
  77. package/src/lib/{helpers.js → helpers.ts} +31 -59
  78. package/src/{components/delphinus/hooks.js → lib/hooks.ts} +33 -28
  79. package/src/lib/{i18n.js → i18n.ts} +600 -601
  80. package/src/lib/{tracking.js → tracking.ts} +69 -65
  81. package/src/lib/{wrapping.js → wrapping.ts} +21 -16
  82. package/src/styles/_settings.scss +10 -10
  83. package/src/styles/alphabox.scss +222 -208
  84. package/src/styles/app.scss +7 -13
  85. package/src/styles/autosuggest.scss +57 -57
  86. package/src/styles/databox.scss +563 -563
  87. package/src/styles/diagramme.scss +119 -119
  88. package/src/styles/flowbox.scss +72 -72
  89. package/src/styles/maps.scss +395 -395
  90. package/tsconfig.json +47 -0
  91. package/types/common/interfaces/gui.d.ts +63 -0
  92. package/types/common/interfaces/model.d.ts +29 -0
  93. package/types/common/main.d.ts +5 -0
  94. package/types/common/package.json +5 -0
  95. package/types/common/payloads.d.ts +0 -0
  96. package/types/common/props.d.ts +165 -0
  97. package/{src/config/webpack.umd.config.js → webpack.config.js} +20 -16
  98. package/.eslintrc +0 -19
  99. package/build/dev.html +0 -329
  100. package/build/umd/auAuth.js +0 -2
  101. package/build/umd/auAuth.js.map +0 -1
  102. package/build/umd/databox.js.LICENSE.txt +0 -5
  103. package/build/umd/news.js +0 -2
  104. package/build/umd/news.js.map +0 -1
  105. package/src/all.js +0 -3
  106. package/src/app.js +0 -263
  107. package/src/components/AUAlertComponent.js +0 -158
  108. package/src/components/AUAmountComponent.js +0 -84
  109. package/src/components/AUBannerComponent.js +0 -99
  110. package/src/components/AUCalendarComponent.js +0 -393
  111. package/src/components/AUDatepickerComponent.js +0 -105
  112. package/src/components/AUFilterCheckboxComponent.js +0 -122
  113. package/src/components/AUFocusComponent.js +0 -55
  114. package/src/components/AUModalComponent.js +0 -94
  115. package/src/components/AUPaginationComponent.js +0 -103
  116. package/src/components/context/AUUserContextComponent.js +0 -91
  117. package/src/components/context/ImpersonateComponent.js +0 -54
  118. package/src/components/delphinus/AUCalendarComponent.js +0 -487
  119. package/src/components/delphinus/AUContentToggleComponent.js +0 -32
  120. package/src/components/delphinus/AUDatepickerComponent.js +0 -164
  121. package/src/components/delphinus/AULoginComponent.js +0 -65
  122. package/src/components/delphinus/AUSpinnerComponent.js +0 -114
  123. package/src/components/form/AUMobilePrefixComponent.js +0 -18
  124. package/src/components/news/EventLayout1Component.js +0 -94
  125. package/src/components/news/EventLayout2Component.js +0 -90
  126. package/src/components/news/EventLayout3Component.js +0 -68
  127. package/src/components/news/NewsCategoriesComponent.js +0 -21
  128. package/src/components/news/NewsCollageBannerComponent.js +0 -71
  129. package/src/components/news/NewsCollageBannerRSSComponent.js +0 -79
  130. package/src/components/news/NewsColumnsComponent.js +0 -125
  131. package/src/components/news/NewsLanguageChangeComponent.js +0 -74
  132. package/src/components/news/NewsLayout1Component.js +0 -80
  133. package/src/components/news/NewsLayout2Component.js +0 -80
  134. package/src/components/news/NewsLayout3Component.js +0 -81
  135. package/src/components/news/NewsLayout4Component.js +0 -80
  136. package/src/components/news/NewsLayout5Component.js +0 -61
  137. package/src/components/news/NewsLayout6Component.js +0 -55
  138. package/src/components/news/NewsLayout7Component.js +0 -58
  139. package/src/components/news/NewsLayout8Component.js +0 -57
  140. package/src/components/news/NewsListComponent.js +0 -291
  141. package/src/components/news/NewsPopUpComponent.js +0 -591
  142. package/src/components/news/NewsRSSComponent.js +0 -74
  143. package/src/components/news/NewsSocialComponent.js +0 -104
  144. package/src/components/news/NewsSubHeaderComponent.js +0 -19
  145. package/src/components/password/AUChangePasswordComponent.js +0 -177
  146. package/src/components/password/AUCurrentPasswordComponent.js +0 -72
  147. package/src/components/password/AUNewPasswordComponent.js +0 -143
  148. package/src/components/password/AUPasswordActions.js +0 -101
  149. package/src/components/password/AUPasswordHooks.js +0 -47
  150. package/src/components/password/AUPasswordReducer.js +0 -78
  151. package/src/components/password/AUPasswordRequirementsComponent.js +0 -29
  152. package/src/components/profile/AUProfileAvatarV3Component.js +0 -80
  153. package/src/config/webpack.dev.config.js +0 -47
  154. package/src/index.js +0 -6
  155. package/src/lib/au-auth.js +0 -227
  156. package/src/lib/au-news.js +0 -371
  157. package/src/lib/menu.js +0 -10
  158. package/src/lib/urlHandler.js +0 -63
  159. package/src/lib/validation.js +0 -181
  160. package/src/styles/alert.scss +0 -39
  161. package/src/styles/calendar.scss +0 -112
  162. package/src/styles/filtercheckbox.scss +0 -5
  163. package/src/styles/modal.scss +0 -35
  164. package/src/styles/pagination.scss +0 -11
  165. package/src/styles/spinner.scss +0 -30
@@ -1,2 +1,2 @@
1
- !function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t(require("axios"),require("react"),require("react-dom"));else if("function"==typeof define&&define.amd)define(["axios","react","react-dom"],t);else{var r="object"==typeof exports?t(require("axios"),require("react"),require("react-dom")):t(e.axios,e.React,e.ReactDOM);for(var a in r)("object"==typeof exports?exports:e)[a]=r[a]}}(self,(function(e,t,r){return(()=>{var a={120:(e,t,r)=>{"use strict";r.r(t);var a=r(383),n=r.n(a),s=r(949),o=r.n(s),i=r(376),l=r.n(i),c=r(697),u=r.n(c);const m={da:{diagramme:{semestre:"semester",kvarterer:"quarter",regulation:"Academic regulations",courseTypes:["Obligatorisk","Valgfag","Tilvalg","Støttefag"],none:"Der er ikke oprettet et studiediagram for",select:"Vælg linje"}},en:{diagramme:{semestre:"semester",kvarterer:"kvarter",regulation:"Studieordning",courseTypes:["Compulsory","Elective","Supplementary subject","Auxiliary subject"],none:"No study diagramme has been created for",select:"Choose track"}}};class d extends n().PureComponent{static diagrammeParse(e,t,r="table"){const a=[];if(e.DiagramMetaData.DATA.length>0){for(let t=0;t<e.DiagramMetaData.DATA[0][1];t+=1)a[t]||a.push([]);e.DiagramStruktur.DATA.forEach((n=>{const s=n[0],o=n[1];for(let e=0;e<o;e+=1)a[s][e]||a[s].push([]);const i="table"===r?1:n[2],l=e.DiagramMetaData.DATA[0][0];for(let e=0;e<i;e+=1)a[s+e][o]={courseId:n[3],name:"da"===t?n[6]:n[7],type:n[4].toLowerCase(),colspan:n[5],rowspan:n[2],ects:e>0?0:l/(l/5/n[5])*n[2],code:n[8]}}))}return a}constructor(e){super(e),this.state={nodes:[],active:e.track}}componentDidMount(){const{print:e,response:t,lang:r}=this.props,a=new Array(t.lines.length),n=[];t.lines.forEach(((e,t)=>{n.push(new Promise((n=>{const s=`https://eddiprod.au.dk/EDDI/webservices/StudieoversigtService2.cfc?method=GetStudiediagramData&lang=en&allowOrigin=true&linjeid=${e.id}`;l().get(s).then((s=>{const o=s.data.DiagramMetaData.DATA[0]?s.data.DiagramMetaData.DATA[0][3]:"",i={name:"da"===r?e.name:e.nameEnglish,periodType:o,table:d.diagrammeParse(s.data,r),list:d.diagrammeParse(s.data,r,"list")};a[t]=i,n(s.data)}))})))})),Promise.all(n).then((()=>{this.setState({nodes:a},(()=>{e&&window.print()}))}))}changeActive(e){this.setState({active:e.target.value})}render(){const{nodes:e,active:t}=this.state,{course:r,lang:a}=this.props;if(0===e.length)return n().createElement("div",null);const{print:s}=this.props,o=`http://kursuskatalog.au.dk/${a}/linkedexams/`,i=`http://kursuskatalog.au.dk/${a}/electivegroups/`,l="http://tilvalg.au.dk",{table:c,list:u,name:d}=e[t],p=c.map(((r,s)=>{const c=s,u=r.map(((e,t)=>{const r=t;if(e.name){let t=o+e.courseId;return"tlv"===e.type?t=l:"val"!==e.type&&"ogr"!==e.type||(t=i+e.code),n().createElement("td",{key:r,className:e.type,colSpan:e.colspan,rowSpan:e.rowspan},n().createElement("a",{target:"_blank",rel:"noreferrer noopener",href:t},e.name,n().createElement("br",null),`(${e.ects} ECTS)`))}return null}));return n().createElement("tr",{key:c},n().createElement("th",null,`${s+1}. `,m[a].diagramme[e[t].periodType]),u)})),g=u.map(((r,s)=>{const c=s,u=r.map(((e,t)=>{const r=t;if(e.name){let t=o+e.courseId;return"tlv"===e.type?t=l:"val"!==e.type&&"ogr"!==e.type||(t=i+e.code),n().createElement("p",{key:r,className:e.type},n().createElement("span",null,n().createElement("a",{target:"_blank",rel:"noreferrer noopener",href:t},e.name)),e.ects>0?n().createElement("span",null,n().createElement("strong",null,e.ects)," ECTS"):n().createElement("span",null,n().createElement("strong",null,"…")))}return null}));return n().createElement("li",{key:c},n().createElement("h3",null,`${s+1}. `,m[a].diagramme[e[t].periodType]),u)})),f=e.map(((e,t)=>n().createElement("option",{key:e.name,value:t},e.name)));return n().createElement("div",null,n().createElement("h2",null,e[t].name),(()=>e.length>1&&!s?[n().createElement("p",{key:0},`${m[a].diagramme.select}:`),n().createElement("select",{key:1,onChange:this.changeActive.bind(this),value:t},f)]:null)(),(()=>{if(!s){const e=`${window.location.href}?coursesprint=${r}|${t}`;return n().createElement("a",{className:"print",href:e,onClick:t=>{t.preventDefault(),window.open(e,"","width=1025,height=600")}},"Print")}return null})(),n().createElement("div",{className:"study-diagramme hide-for-small-only"},c.length<1||u.length<1?n().createElement("div",null,`${m[a].diagramme.none} ${d}`):n().createElement("table",null,n().createElement("tbody",null,p))),n().createElement("div",{className:"study-diagramme list show-for-small-only"},c.length<1||u.length<1?n().createElement("div",null,`${m[a].diagramme.none} ${d}`):n().createElement("ul",{className:"resetlist"},g)),n().createElement("dl",{className:"au_edutable_legend"},n().createElement("dt",{className:"au_edutable_mandatory"},m[a].diagramme.courseTypes[0]),n().createElement("dd",null),n().createElement("dt",{className:"au_edutable_optional"},m[a].diagramme.courseTypes[1]),n().createElement("dd",null),n().createElement("dt",{className:"au_edutable_supplementary"},m[a].diagramme.courseTypes[2]),n().createElement("dd",null),n().createElement("dt",{className:"au_edutable_support"},m[a].diagramme.courseTypes[3]),n().createElement("dd",null)))}}d.propTypes={lang:u().string.isRequired,response:u().shape({lines:u().arrayOf(u().shape({name:u().string.isRequired,nameEnglish:u().string.isRequired})).isRequired}).isRequired,course:u().string.isRequired,track:u().string.isRequired,print:u().bool.isRequired},d.displayName="AUDiagrammeComponent";const p=d,g={config:{container:".au_edutable_eddi_container",courseID:0,track:0}};class f{constructor(e,t){this.tables=t,this.lang=e}static mergeOptions(e){const t=e;t.hasOwnProperty("config")||(t.config={});for(const e in g.config)t.config.hasOwnProperty(e)||(t.config[e]=g.config[e])}init(){const e=AU.helpers.getQuerystring("coursesprint");if(""!==e){const t=e.split(",");for(let e=0;e<t.length;e+=1){const r=t[e].split("|");r.length>1?this.tables.push({config:{container:`#print_course_${e}`,courseID:parseInt(r[0],10),track:parseInt(r[1],10)}}):this.tables.push({config:{container:`#print_course_${e}`,courseID:parseInt(r[0],10)}}),o().render(n().createElement("div",{id:`print_course_${e}`}),document.querySelector("body"))}}for(let t=0;t<this.tables.length;t+=1){const r=this.tables[t];r.id=t,f.mergeOptions(r);const a=`https://eddiprod.au.dk/EDDI/webservices/StudieoversigtService2.cfc?method=getLinjeListByDokordningId&tjekForVisningIstudieDiagram=true&allowOrigin=true&dokordningId=${r.config.courseID}`;l().get(a).then((t=>{const{data:a}=t,s=document.querySelector(r.config.container);s&&o().render(n().createElement(p,{lang:this.lang,response:a,course:r.config.courseID,track:r.config.track,print:""!==e}),s)}))}}}window.AUDiagramme=f},703:(e,t,r)=>{"use strict";var a=r(414);function n(){}function s(){}s.resetWarningCache=n,e.exports=function(){function e(e,t,r,n,s,o){if(o!==a){var i=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw i.name="Invariant Violation",i}}function t(){return e}e.isRequired=e;var r={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:s,resetWarningCache:n};return r.PropTypes=r,r}},697:(e,t,r)=>{e.exports=r(703)()},414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},376:t=>{"use strict";t.exports=e},383:e=>{"use strict";e.exports=t},949:e=>{"use strict";e.exports=r}},n={};function s(e){if(n[e])return n[e].exports;var t=n[e]={exports:{}};return a[e](t,t.exports,s),t.exports}return s.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return s.d(t,{a:t}),t},s.d=(e,t)=>{for(var r in t)s.o(t,r)&&!s.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},s.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),s.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s(120)})()}));
1
+ !function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t(require("react"),require("react-dom"));else if("function"==typeof define&&define.amd)define(["react","react-dom"],t);else{var r="object"==typeof exports?t(require("react"),require("react-dom")):t(e.React,e.ReactDOM);for(var a in r)("object"==typeof exports?exports:e)[a]=r[a]}}(self,((e,t)=>(()=>{var r={703:(e,t,r)=>{"use strict";var a=r(414);function n(){}function s(){}s.resetWarningCache=n,e.exports=function(){function e(e,t,r,n,s,o){if(o!==a){var i=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw i.name="Invariant Violation",i}}function t(){return e}e.isRequired=e;var r={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:s,resetWarningCache:n};return r.PropTypes=r,r}},697:(e,t,r)=>{e.exports=r(703)()},414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},244:t=>{"use strict";t.exports=e},741:e=>{"use strict";e.exports=t}},a={};function n(e){var t=a[e];if(void 0!==t)return t.exports;var s=a[e]={exports:{}};return r[e](s,s.exports,n),s.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var s={};return(()=>{"use strict";n.r(s);var e=n(244),t=n.n(e),r=n(741),a=n.n(r),o=n(697),i=n.n(o);const l={da:{diagramme:{semestre:"semester",kvarterer:"quarter",regulation:"Academic regulations",courseTypes:["Obligatorisk","Valgfag","Tilvalg","Støttefag"],none:"Der er ikke oprettet et studiediagram for",select:"Vælg linje"}},en:{diagramme:{semestre:"semester",kvarterer:"kvarter",regulation:"Studieordning",courseTypes:["Compulsory","Elective","Supplementary subject","Auxiliary subject"],none:"No study diagramme has been created for",select:"Choose track"}}};class c extends t().PureComponent{static diagrammeParse(e,t,r="table"){const a=[];if(e.DiagramMetaData.DATA.length>0){for(let t=0;t<e.DiagramMetaData.DATA[0][1];t+=1)a[t]||a.push([]);e.DiagramStruktur.DATA.forEach((n=>{const s=n[0],o=n[1];for(let e=0;e<o;e+=1)a[s][e]||a[s].push([]);const i="table"===r?1:n[2],l=e.DiagramMetaData.DATA[0][0];for(let e=0;e<i;e+=1)a[s+e][o]={courseId:n[3],name:"da"===t?n[6]:n[7],type:n[4].toLowerCase(),colspan:n[5],rowspan:n[2],ects:e>0?0:l/(l/5/n[5])*n[2],code:n[8]}}))}return a}constructor(e){super(e),this.state={nodes:[],active:e.track}}componentDidMount(){const{print:e,response:t,lang:r}=this.props,a=new Array(t.lines.length),n=[];t.lines.forEach(((e,t)=>{n.push(new Promise((n=>{const s=`https://eddiprod.au.dk/EDDI/webservices/StudieoversigtService2.cfc?method=GetStudiediagramData&lang=en&allowOrigin=true&linjeid=${e.id}`;fetch(s).then((e=>e.json())).then((s=>{const o=s.DiagramMetaData.DATA[0]?s.DiagramMetaData.DATA[0][3]:"",i={name:"da"===r?e.name:e.nameEnglish,periodType:o,table:c.diagrammeParse(s,r),list:c.diagrammeParse(s,r,"list")};a[t]=i,n(s)}))})))})),Promise.all(n).then((()=>{this.setState({nodes:a},(()=>{e&&window.print()}))}))}changeActive(e){this.setState({active:e.target.value})}render(){const{nodes:e,active:r}=this.state,{course:a,lang:n}=this.props;if(0===e.length)return t().createElement("div",null);const{print:s}=this.props,o=`http://kursuskatalog.au.dk/${n}/linkedexams/`,i=`http://kursuskatalog.au.dk/${n}/electivegroups/`,c="http://tilvalg.au.dk",{table:u,list:m,name:p}=e[r],d=u.map(((a,s)=>{const u=s,m=a.map(((e,r)=>{const a=r;if(e.name){let r=o+e.courseId;return"tlv"===e.type?r=c:"val"!==e.type&&"ogr"!==e.type||(r=i+e.code),t().createElement("td",{key:a,className:e.type,colSpan:e.colspan,rowSpan:e.rowspan},t().createElement("a",{target:"_blank",rel:"noreferrer noopener",href:r},e.name,t().createElement("br",null),`(${e.ects} ECTS)`))}return null}));return t().createElement("tr",{key:u},t().createElement("th",null,`${s+1}. `,l[n].diagramme[e[r].periodType]),m)})),g=m.map(((a,s)=>{const u=s,m=a.map(((e,r)=>{const a=r;if(e.name){let r=o+e.courseId;return"tlv"===e.type?r=c:"val"!==e.type&&"ogr"!==e.type||(r=i+e.code),t().createElement("p",{key:a,className:e.type},t().createElement("span",null,t().createElement("a",{target:"_blank",rel:"noreferrer noopener",href:r},e.name)),e.ects>0?t().createElement("span",null,t().createElement("strong",null,e.ects)," ECTS"):t().createElement("span",null,t().createElement("strong",null,"…")))}return null}));return t().createElement("li",{key:u},t().createElement("h3",null,`${s+1}. `,l[n].diagramme[e[r].periodType]),m)})),h=e.map(((e,r)=>t().createElement("option",{key:e.name,value:r},e.name)));return t().createElement("div",null,t().createElement("h2",null,e[r].name),(()=>e.length>1&&!s?[t().createElement("p",{key:0},`${l[n].diagramme.select}:`),t().createElement("select",{key:1,onChange:this.changeActive.bind(this),value:r},h)]:null)(),(()=>{if(!s){const e=`${window.location.href}?coursesprint=${a}|${r}`;return t().createElement("a",{className:"print",href:e,onClick:t=>{t.preventDefault(),window.open(e,"","width=1025,height=600")}},"Print")}return null})(),t().createElement("div",{className:"study-diagramme hide-for-small-only"},u.length<1||m.length<1?t().createElement("div",null,`${l[n].diagramme.none} ${p}`):t().createElement("table",null,t().createElement("tbody",null,d))),t().createElement("div",{className:"study-diagramme list show-for-small-only"},u.length<1||m.length<1?t().createElement("div",null,`${l[n].diagramme.none} ${p}`):t().createElement("ul",{className:"resetlist"},g)),t().createElement("dl",{className:"au_edutable_legend"},t().createElement("dt",{className:"au_edutable_mandatory"},l[n].diagramme.courseTypes[0]),t().createElement("dd",null),t().createElement("dt",{className:"au_edutable_optional"},l[n].diagramme.courseTypes[1]),t().createElement("dd",null),t().createElement("dt",{className:"au_edutable_supplementary"},l[n].diagramme.courseTypes[2]),t().createElement("dd",null),t().createElement("dt",{className:"au_edutable_support"},l[n].diagramme.courseTypes[3]),t().createElement("dd",null)))}}c.propTypes={lang:i().string.isRequired,response:i().shape({lines:i().arrayOf(i().shape({name:i().string.isRequired,nameEnglish:i().string.isRequired})).isRequired}).isRequired,course:i().string.isRequired,track:i().string.isRequired,print:i().bool.isRequired},c.displayName="AUDiagrammeComponent";const u=c,m={config:{container:".au_edutable_eddi_container",courseID:0,track:0}};class p{constructor(e,t){this.tables=t,this.lang=e}static mergeOptions(e){const t=e;t.hasOwnProperty("config")||(t.config={});for(const e in m.config)t.config.hasOwnProperty(e)||(t.config[e]=m.config[e])}init(){const e=AU.helpers.getQuerystring("coursesprint");if(""!==e){const r=e.split(",");for(let e=0;e<r.length;e+=1){const n=r[e].split("|");n.length>1?this.tables.push({config:{container:`#print_course_${e}`,courseID:parseInt(n[0],10),track:parseInt(n[1],10)}}):this.tables.push({config:{container:`#print_course_${e}`,courseID:parseInt(n[0],10)}}),a().render(t().createElement("div",{id:`print_course_${e}`}),document.querySelector("body"))}}for(let r=0;r<this.tables.length;r+=1){const n=this.tables[r];n.id=r,p.mergeOptions(n);const s=`https://eddiprod.au.dk/EDDI/webservices/StudieoversigtService2.cfc?method=getLinjeListByDokordningId&tjekForVisningIstudieDiagram=true&allowOrigin=true&dokordningId=${n.config.courseID}`;fetch(s).then((e=>e.json())).then((r=>{const s=document.querySelector(n.config.container);s&&a().render(t().createElement(u,{lang:this.lang,response:r,course:n.config.courseID,track:n.config.track,print:""!==e}),s)}))}}}window.AUDiagramme=p})(),s})()));
2
2
  //# sourceMappingURL=diagramme.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack://@aarhus-university/au-lib-react-components/webpack/universalModuleDefinition","webpack://@aarhus-university/au-lib-react-components/./src/components/AUDiagrammeComponent.js","webpack://@aarhus-university/au-lib-react-components/./src/lib/au-diagramme.js","webpack://@aarhus-university/au-lib-react-components/./node_modules/prop-types/factoryWithThrowingShims.js","webpack://@aarhus-university/au-lib-react-components/./node_modules/prop-types/index.js","webpack://@aarhus-university/au-lib-react-components/./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://@aarhus-university/au-lib-react-components/external \"axios\"","webpack://@aarhus-university/au-lib-react-components/external {\"root\":\"React\",\"commonjs2\":\"react\",\"commonjs\":\"react\",\"amd\":\"react\",\"umd\":\"react\"}","webpack://@aarhus-university/au-lib-react-components/external {\"root\":\"ReactDOM\",\"commonjs2\":\"react-dom\",\"commonjs\":\"react-dom\",\"amd\":\"react-dom\",\"umd\":\"react-dom\"}","webpack://@aarhus-university/au-lib-react-components/webpack/bootstrap","webpack://@aarhus-university/au-lib-react-components/webpack/startup","webpack://@aarhus-university/au-lib-react-components/webpack/runtime/compat get default export","webpack://@aarhus-university/au-lib-react-components/webpack/runtime/define property getters","webpack://@aarhus-university/au-lib-react-components/webpack/runtime/hasOwnProperty shorthand","webpack://@aarhus-university/au-lib-react-components/webpack/runtime/make namespace object"],"names":["root","factory","exports","module","require","define","amd","a","i","self","__WEBPACK_EXTERNAL_MODULE__376__","__WEBPACK_EXTERNAL_MODULE__383__","__WEBPACK_EXTERNAL_MODULE__949__","diagrammeLabels","da","diagramme","semestre","kvarterer","regulation","courseTypes","none","select","en","AUDiagrammeComponent","React","data","lang","mode","dataArr","DiagramMetaData","DATA","length","j","push","DiagramStruktur","forEach","d","periodIndex","orderIndex","k","rowspan","ectsPrPeriod","courseId","name","type","toLowerCase","colspan","ects","code","constructor","props","super","this","state","nodes","active","track","componentDidMount","print","response","Array","lines","promises","value","key","Promise","resolve","url","id","axios","then","promise","periodType","node","nameEnglish","table","diagrammeParse","list","all","setState","window","changeActive","event","target","render","course","kkLinkedExams","kkElectiveGroup","tilvalg","renderRows","map","r","diaKey","renderCells","c","cellKey","href","className","colSpan","rowSpan","rel","renderList","l","renderEducations","e","eduKey","renderOptions","onChange","bind","printUrl","location","onClick","preventDefault","open","propTypes","PropTypes","isRequired","displayName","defaultOptions","config","container","courseID","AUDiagramme","tables","_table","hasOwnProperty","conf","init","qsCourses","AU","helpers","getQuerystring","coursesSplit","split","trackSplit","parseInt","ReactDOM","document","querySelector","mergeOptions","mountNode","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","propFullName","secret","err","Error","getShim","ReactPropTypes","array","bool","func","number","object","string","symbol","any","arrayOf","element","elementType","instanceOf","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","__webpack_module_cache__","__webpack_require__","moduleId","__webpack_modules__","n","getter","__esModule","definition","o","Object","defineProperty","enumerable","get","obj","prop","prototype","call","Symbol","toStringTag"],"mappings":"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","file":"diagramme.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"axios\"), require(\"react\"), require(\"react-dom\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"axios\", \"react\", \"react-dom\"], factory);\n\telse {\n\t\tvar a = typeof exports === 'object' ? factory(require(\"axios\"), require(\"react\"), require(\"react-dom\")) : factory(root[\"axios\"], root[\"React\"], root[\"ReactDOM\"]);\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function(__WEBPACK_EXTERNAL_MODULE__376__, __WEBPACK_EXTERNAL_MODULE__383__, __WEBPACK_EXTERNAL_MODULE__949__) {\nreturn ","/* eslint-env browser */\n/* eslint no-mixed-operators: 0 */\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport axios from 'axios';\n\nconst diagrammeLabels = {\n da: {\n diagramme: {\n semestre: 'semester',\n kvarterer: 'quarter',\n regulation: 'Academic regulations',\n courseTypes: ['Obligatorisk', 'Valgfag', 'Tilvalg', 'Støttefag'],\n none: 'Der er ikke oprettet et studiediagram for',\n select: 'Vælg linje',\n },\n },\n en: {\n diagramme: {\n semestre: 'semester',\n kvarterer: 'kvarter',\n regulation: 'Studieordning',\n courseTypes: ['Compulsory', 'Elective', 'Supplementary subject', 'Auxiliary subject'],\n none: 'No study diagramme has been created for',\n select: 'Choose track',\n },\n },\n};\n\nclass AUDiagrammeComponent extends React.PureComponent {\n static diagrammeParse(data, lang, mode = 'table') {\n const dataArr = [];\n if (data.DiagramMetaData.DATA.length > 0) {\n for (let j = 0; j < data.DiagramMetaData.DATA[0][1]; j += 1) {\n if (!dataArr[j]) {\n dataArr.push([]);\n }\n }\n\n data.DiagramStruktur.DATA.forEach((d) => {\n const periodIndex = d[0]; // rækkefølge af semester/kvarter\n const orderIndex = d[1]; // rækkefølge i et semester/kvarter\n for (let k = 0; k < orderIndex; k += 1) {\n if (!dataArr[periodIndex][k]) {\n dataArr[periodIndex].push([]);\n }\n }\n\n const rowspan = mode === 'table' ? 1 : d[2]; // lister viser fag, som spænder over flere perioder, i alle perioder - tabeller bruger rowspan\n const ectsPrPeriod = data.DiagramMetaData.DATA[0][0];\n const ectsPrCell = 5;\n for (let i = 0; i < rowspan; i += 1) {\n dataArr[periodIndex + i][orderIndex] = {\n courseId: d[3],\n name: lang === 'da' ? d[6] : d[7],\n type: d[4].toLowerCase(),\n colspan: d[5],\n rowspan: d[2],\n ects: i > 0 ? 0 : ectsPrPeriod / (ectsPrPeriod / ectsPrCell / d[5]) * d[2],\n code: d[8],\n // Fx: 15 ECTS pr. kvarter / 'den samlede colspan'\n // aka antallet af uddannelser på et givent kvarter / colspan * rowspan\n };\n }\n });\n }\n return dataArr;\n }\n\n constructor(props) {\n super(props);\n this.state = {\n nodes: [],\n active: props.track,\n };\n }\n\n componentDidMount() {\n const { print, response, lang } = this.props;\n const nodes = new Array(response.lines.length);\n const promises = [];\n response.lines.forEach((value, key) => {\n promises.push(new Promise((resolve) => {\n const url = `https://eddiprod.au.dk/EDDI/webservices/StudieoversigtService2.cfc?method=GetStudiediagramData&lang=en&allowOrigin=true&linjeid=${value.id}`;\n axios.get(url).then((promise) => {\n const periodType = promise.data.DiagramMetaData.DATA[0] ? promise.data.DiagramMetaData.DATA[0][3] : '';\n const node = {\n name: lang === 'da' ? value.name : value.nameEnglish,\n periodType,\n table: AUDiagrammeComponent.diagrammeParse(promise.data, lang),\n list: AUDiagrammeComponent.diagrammeParse(promise.data, lang, 'list'),\n };\n nodes[key] = node;\n resolve(promise.data);\n });\n }));\n });\n Promise.all(promises).then(() => {\n this.setState({\n nodes,\n }, () => {\n if (print) {\n window.print();\n }\n });\n });\n }\n\n changeActive(event) {\n this.setState({\n active: event.target.value,\n });\n }\n\n render() {\n const { nodes, active } = this.state;\n const { course, lang } = this.props;\n\n if (nodes.length === 0) {\n return <div />;\n }\n\n const { print } = this.props;\n const kkLinkedExams = `http://kursuskatalog.au.dk/${lang}/linkedexams/`;\n const kkElectiveGroup = `http://kursuskatalog.au.dk/${lang}/electivegroups/`;\n const tilvalg = 'http://tilvalg.au.dk';\n\n const { table, list, name } = nodes[active];\n const renderRows = table.map((r, i) => {\n const diaKey = i;\n const renderCells = r.map((c, j) => {\n const cellKey = j;\n if (c.name) {\n let href = kkLinkedExams + c.courseId;\n if (c.type === 'tlv') {\n href = tilvalg;\n } else if (c.type === 'val' || c.type === 'ogr') {\n href = kkElectiveGroup + c.code;\n }\n\n return (\n <td key={cellKey} className={c.type} colSpan={c.colspan} rowSpan={c.rowspan}>\n <a target=\"_blank\" rel=\"noreferrer noopener\" href={href}>\n {c.name}\n <br />\n {`(${c.ects} ECTS)`}\n </a>\n </td>\n );\n }\n return null;\n });\n\n return (\n <tr key={diaKey}>\n <th>\n {`${i + 1}. `}\n {diagrammeLabels[lang].diagramme[nodes[active].periodType]}\n </th>\n {renderCells}\n </tr>\n );\n });\n\n const renderList = list.map((l, i) => {\n const diaKey = i;\n const renderEducations = l.map((e, j) => {\n const eduKey = j;\n if (e.name) {\n let href = kkLinkedExams + e.courseId;\n if (e.type === 'tlv') {\n href = tilvalg;\n } else if (e.type === 'val' || e.type === 'ogr') {\n href = kkElectiveGroup + e.code;\n }\n return (\n <p key={eduKey} className={e.type}>\n <span>\n <a target=\"_blank\" rel=\"noreferrer noopener\" href={href}>\n {e.name}\n </a>\n </span>\n {(() => {\n if (e.ects > 0) {\n return (\n <span>\n <strong>\n {e.ects}\n </strong>\n {' ECTS'}\n </span>\n );\n }\n return (\n <span>\n <strong>\n &hellip;\n </strong>\n </span>\n );\n })()}\n </p>\n );\n }\n return null;\n });\n\n return (\n <li key={diaKey}>\n <h3>\n {`${i + 1}. `}\n {diagrammeLabels[lang].diagramme[nodes[active].periodType]}\n </h3>\n {renderEducations}\n </li>\n );\n });\n\n const renderOptions = nodes.map(\n (node, key) => <option key={node.name} value={key}>{node.name}</option>,\n );\n\n return (\n <div>\n <h2>{nodes[active].name}</h2>\n {(() => {\n if (nodes.length > 1 && !print) {\n return [\n <p key={0}>{`${diagrammeLabels[lang].diagramme.select}:`}</p>,\n <select key={1} onChange={this.changeActive.bind(this)} value={active}>\n {renderOptions}\n </select>,\n ];\n }\n return null;\n })()}\n {(() => {\n if (!print) {\n const printUrl = `${window.location.href}?coursesprint=${course}|${active}`;\n return (\n <a\n className=\"print\"\n href={printUrl}\n onClick={(e) => {\n e.preventDefault();\n window.open(printUrl, '', 'width=1025,height=600');\n }}\n >\n Print\n </a>\n );\n }\n return null;\n })()}\n <div className=\"study-diagramme hide-for-small-only\">\n {(() => {\n if (table.length < 1 || list.length < 1) {\n return <div>{`${diagrammeLabels[lang].diagramme.none} ${name}`}</div>;\n }\n return (\n <table>\n <tbody>\n {renderRows}\n </tbody>\n </table>\n );\n })()}\n </div>\n <div className=\"study-diagramme list show-for-small-only\">\n {(() => {\n if (table.length < 1 || list.length < 1) {\n return <div>{`${diagrammeLabels[lang].diagramme.none} ${name}`}</div>;\n }\n return (\n <ul className=\"resetlist\">\n {renderList}\n </ul>\n );\n })()}\n </div>\n <dl className=\"au_edutable_legend\">\n <dt className=\"au_edutable_mandatory\">{diagrammeLabels[lang].diagramme.courseTypes[0]}</dt>\n <dd />\n <dt className=\"au_edutable_optional\">{diagrammeLabels[lang].diagramme.courseTypes[1]}</dt>\n <dd />\n <dt className=\"au_edutable_supplementary\">{diagrammeLabels[lang].diagramme.courseTypes[2]}</dt>\n <dd />\n <dt className=\"au_edutable_support\">{diagrammeLabels[lang].diagramme.courseTypes[3]}</dt>\n <dd />\n </dl>\n </div>\n );\n }\n}\n\nAUDiagrammeComponent.propTypes = {\n lang: PropTypes.string.isRequired,\n response: PropTypes.shape({\n lines: PropTypes.arrayOf(PropTypes.shape({\n name: PropTypes.string.isRequired,\n nameEnglish: PropTypes.string.isRequired,\n })).isRequired,\n }).isRequired,\n course: PropTypes.string.isRequired,\n track: PropTypes.string.isRequired,\n print: PropTypes.bool.isRequired,\n};\n\nAUDiagrammeComponent.displayName = 'AUDiagrammeComponent';\nexport default AUDiagrammeComponent;\n","/* eslint no-prototype-builtins: 0 */\n/* eslint no-restricted-syntax: 0 */\n/* eslint no-unused-vars: 0 */\n/* eslint-env browser */\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport axios from 'axios';\nimport AUDiagrammeComponent from '../components/AUDiagrammeComponent';\n\nconst defaultOptions = {\n config: {\n container: '.au_edutable_eddi_container',\n courseID: 0,\n track: 0,\n },\n};\n\nclass AUDiagramme {\n constructor(lang, tables) {\n this.tables = tables;\n this.lang = lang;\n }\n\n static mergeOptions(_table) {\n const table = _table;\n if (!table.hasOwnProperty('config')) {\n table.config = {};\n }\n\n for (const conf in defaultOptions.config) {\n if (!table.config.hasOwnProperty(conf)) {\n table.config[conf] = defaultOptions.config[conf];\n }\n }\n }\n\n init() {\n const qsCourses = AU.helpers.getQuerystring('coursesprint');\n if (qsCourses !== '') {\n const coursesSplit = qsCourses.split(',');\n for (let j = 0; j < coursesSplit.length; j += 1) {\n const trackSplit = coursesSplit[j].split('|');\n if (trackSplit.length > 1) {\n this.tables.push({\n config: {\n container: `#print_course_${j}`,\n courseID: parseInt(trackSplit[0], 10),\n track: parseInt(trackSplit[1], 10),\n },\n });\n } else {\n this.tables.push({\n config: {\n container: `#print_course_${j}`,\n courseID: parseInt(trackSplit[0], 10),\n },\n });\n }\n ReactDOM.render(<div id={`print_course_${j}`} />, document.querySelector('body'));\n }\n }\n for (let i = 0; i < this.tables.length; i += 1) {\n const table = this.tables[i];\n table.id = i;\n AUDiagramme.mergeOptions(table);\n const url = `https://eddiprod.au.dk/EDDI/webservices/StudieoversigtService2.cfc?method=getLinjeListByDokordningId&tjekForVisningIstudieDiagram=true&allowOrigin=true&dokordningId=${table.config.courseID}`;\n axios.get(url).then((promise) => {\n const { data } = promise;\n const mountNode = document.querySelector(table.config.container);\n if (mountNode) {\n ReactDOM.render(\n <AUDiagrammeComponent\n lang={this.lang}\n response={data}\n course={table.config.courseID}\n track={table.config.track}\n print={qsCourses !== ''}\n />,\n mountNode,\n );\n }\n });\n }\n }\n}\n\nwindow.AUDiagramme = AUDiagramme;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","module.exports = __WEBPACK_EXTERNAL_MODULE__376__;","module.exports = __WEBPACK_EXTERNAL_MODULE__383__;","module.exports = __WEBPACK_EXTERNAL_MODULE__949__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tif(__webpack_module_cache__[moduleId]) {\n\t\treturn __webpack_module_cache__[moduleId].exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// module exports must be returned from runtime so entry inlining is disabled\n// startup\n// Load entry module and return exports\nreturn __webpack_require__(120);\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => module['default'] :\n\t\t() => module;\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop)","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};"],"sourceRoot":""}
1
+ {"version":3,"file":"diagramme.js","mappings":"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","sources":["webpack://@aarhus-university/au-lib-react-components/webpack/universalModuleDefinition","webpack://@aarhus-university/au-lib-react-components/./node_modules/prop-types/factoryWithThrowingShims.js","webpack://@aarhus-university/au-lib-react-components/./node_modules/prop-types/index.js","webpack://@aarhus-university/au-lib-react-components/./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://@aarhus-university/au-lib-react-components/external umd {\"root\":\"React\",\"commonjs2\":\"react\",\"commonjs\":\"react\",\"amd\":\"react\",\"umd\":\"react\"}","webpack://@aarhus-university/au-lib-react-components/external umd {\"root\":\"ReactDOM\",\"commonjs2\":\"react-dom\",\"commonjs\":\"react-dom\",\"amd\":\"react-dom\",\"umd\":\"react-dom\"}","webpack://@aarhus-university/au-lib-react-components/webpack/bootstrap","webpack://@aarhus-university/au-lib-react-components/webpack/runtime/compat get default export","webpack://@aarhus-university/au-lib-react-components/webpack/runtime/define property getters","webpack://@aarhus-university/au-lib-react-components/webpack/runtime/hasOwnProperty shorthand","webpack://@aarhus-university/au-lib-react-components/webpack/runtime/make namespace object","webpack://@aarhus-university/au-lib-react-components/./src/layout-2016/components/diagramme/AUDiagrammeComponent.js","webpack://@aarhus-university/au-lib-react-components/./src/layout-2016/lib/au-diagramme.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"), require(\"react-dom\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\", \"react-dom\"], factory);\n\telse {\n\t\tvar a = typeof exports === 'object' ? factory(require(\"react\"), require(\"react-dom\")) : factory(root[\"React\"], root[\"ReactDOM\"]);\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, (__WEBPACK_EXTERNAL_MODULE__244__, __WEBPACK_EXTERNAL_MODULE__741__) => {\nreturn ","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","module.exports = __WEBPACK_EXTERNAL_MODULE__244__;","module.exports = __WEBPACK_EXTERNAL_MODULE__741__;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/* eslint-env browser */\n/* eslint no-mixed-operators: 0 */\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nconst diagrammeLabels = {\n da: {\n diagramme: {\n semestre: 'semester',\n kvarterer: 'quarter',\n regulation: 'Academic regulations',\n courseTypes: ['Obligatorisk', 'Valgfag', 'Tilvalg', 'Støttefag'],\n none: 'Der er ikke oprettet et studiediagram for',\n select: 'Vælg linje',\n },\n },\n en: {\n diagramme: {\n semestre: 'semester',\n kvarterer: 'kvarter',\n regulation: 'Studieordning',\n courseTypes: ['Compulsory', 'Elective', 'Supplementary subject', 'Auxiliary subject'],\n none: 'No study diagramme has been created for',\n select: 'Choose track',\n },\n },\n};\n\nclass AUDiagrammeComponent extends React.PureComponent {\n static diagrammeParse(data, lang, mode = 'table') {\n const dataArr = [];\n if (data.DiagramMetaData.DATA.length > 0) {\n for (let j = 0; j < data.DiagramMetaData.DATA[0][1]; j += 1) {\n if (!dataArr[j]) {\n dataArr.push([]);\n }\n }\n\n data.DiagramStruktur.DATA.forEach((d) => {\n const periodIndex = d[0]; // rækkefølge af semester/kvarter\n const orderIndex = d[1]; // rækkefølge i et semester/kvarter\n for (let k = 0; k < orderIndex; k += 1) {\n if (!dataArr[periodIndex][k]) {\n dataArr[periodIndex].push([]);\n }\n }\n\n const rowspan = mode === 'table' ? 1 : d[2]; // lister viser fag, som spænder over flere perioder, i alle perioder - tabeller bruger rowspan\n const ectsPrPeriod = data.DiagramMetaData.DATA[0][0];\n const ectsPrCell = 5;\n for (let i = 0; i < rowspan; i += 1) {\n dataArr[periodIndex + i][orderIndex] = {\n courseId: d[3],\n name: lang === 'da' ? d[6] : d[7],\n type: d[4].toLowerCase(),\n colspan: d[5],\n rowspan: d[2],\n ects: i > 0 ? 0 : ectsPrPeriod / (ectsPrPeriod / ectsPrCell / d[5]) * d[2],\n code: d[8],\n // Fx: 15 ECTS pr. kvarter / 'den samlede colspan'\n // aka antallet af uddannelser på et givent kvarter / colspan * rowspan\n };\n }\n });\n }\n return dataArr;\n }\n\n constructor(props) {\n super(props);\n this.state = {\n nodes: [],\n active: props.track,\n };\n }\n\n componentDidMount() {\n const { print, response, lang } = this.props;\n const nodes = new Array(response.lines.length);\n const promises = [];\n response.lines.forEach((value, key) => {\n promises.push(new Promise((resolve) => {\n const url = `https://eddiprod.au.dk/EDDI/webservices/StudieoversigtService2.cfc?method=GetStudiediagramData&lang=en&allowOrigin=true&linjeid=${value.id}`;\n fetch(url).then((promise) => promise.json()).then((data) => {\n const periodType = data.DiagramMetaData.DATA[0] ? data.DiagramMetaData.DATA[0][3] : '';\n const node = {\n name: lang === 'da' ? value.name : value.nameEnglish,\n periodType,\n table: AUDiagrammeComponent.diagrammeParse(data, lang),\n list: AUDiagrammeComponent.diagrammeParse(data, lang, 'list'),\n };\n nodes[key] = node;\n resolve(data);\n });\n }));\n });\n Promise.all(promises).then(() => {\n this.setState({\n nodes,\n }, () => {\n if (print) {\n window.print();\n }\n });\n });\n }\n\n changeActive(event) {\n this.setState({\n active: event.target.value,\n });\n }\n\n render() {\n const { nodes, active } = this.state;\n const { course, lang } = this.props;\n\n if (nodes.length === 0) {\n return <div />;\n }\n\n const { print } = this.props;\n const kkLinkedExams = `http://kursuskatalog.au.dk/${lang}/linkedexams/`;\n const kkElectiveGroup = `http://kursuskatalog.au.dk/${lang}/electivegroups/`;\n const tilvalg = 'http://tilvalg.au.dk';\n\n const { table, list, name } = nodes[active];\n const renderRows = table.map((r, i) => {\n const diaKey = i;\n const renderCells = r.map((c, j) => {\n const cellKey = j;\n if (c.name) {\n let href = kkLinkedExams + c.courseId;\n if (c.type === 'tlv') {\n href = tilvalg;\n } else if (c.type === 'val' || c.type === 'ogr') {\n href = kkElectiveGroup + c.code;\n }\n\n return (\n <td key={cellKey} className={c.type} colSpan={c.colspan} rowSpan={c.rowspan}>\n <a target=\"_blank\" rel=\"noreferrer noopener\" href={href}>\n {c.name}\n <br />\n {`(${c.ects} ECTS)`}\n </a>\n </td>\n );\n }\n return null;\n });\n\n return (\n <tr key={diaKey}>\n <th>\n {`${i + 1}. `}\n {diagrammeLabels[lang].diagramme[nodes[active].periodType]}\n </th>\n {renderCells}\n </tr>\n );\n });\n\n const renderList = list.map((l, i) => {\n const diaKey = i;\n const renderEducations = l.map((e, j) => {\n const eduKey = j;\n if (e.name) {\n let href = kkLinkedExams + e.courseId;\n if (e.type === 'tlv') {\n href = tilvalg;\n } else if (e.type === 'val' || e.type === 'ogr') {\n href = kkElectiveGroup + e.code;\n }\n return (\n <p key={eduKey} className={e.type}>\n <span>\n <a target=\"_blank\" rel=\"noreferrer noopener\" href={href}>\n {e.name}\n </a>\n </span>\n {(() => {\n if (e.ects > 0) {\n return (\n <span>\n <strong>\n {e.ects}\n </strong>\n {' ECTS'}\n </span>\n );\n }\n return (\n <span>\n <strong>\n &hellip;\n </strong>\n </span>\n );\n })()}\n </p>\n );\n }\n return null;\n });\n\n return (\n <li key={diaKey}>\n <h3>\n {`${i + 1}. `}\n {diagrammeLabels[lang].diagramme[nodes[active].periodType]}\n </h3>\n {renderEducations}\n </li>\n );\n });\n\n const renderOptions = nodes.map(\n (node, key) => <option key={node.name} value={key}>{node.name}</option>,\n );\n\n return (\n <div>\n <h2>{nodes[active].name}</h2>\n {(() => {\n if (nodes.length > 1 && !print) {\n return [\n <p key={0}>{`${diagrammeLabels[lang].diagramme.select}:`}</p>,\n <select key={1} onChange={this.changeActive.bind(this)} value={active}>\n {renderOptions}\n </select>,\n ];\n }\n return null;\n })()}\n {(() => {\n if (!print) {\n const printUrl = `${window.location.href}?coursesprint=${course}|${active}`;\n return (\n <a\n className=\"print\"\n href={printUrl}\n onClick={(e) => {\n e.preventDefault();\n window.open(printUrl, '', 'width=1025,height=600');\n }}\n >\n Print\n </a>\n );\n }\n return null;\n })()}\n <div className=\"study-diagramme hide-for-small-only\">\n {(() => {\n if (table.length < 1 || list.length < 1) {\n return <div>{`${diagrammeLabels[lang].diagramme.none} ${name}`}</div>;\n }\n return (\n <table>\n <tbody>\n {renderRows}\n </tbody>\n </table>\n );\n })()}\n </div>\n <div className=\"study-diagramme list show-for-small-only\">\n {(() => {\n if (table.length < 1 || list.length < 1) {\n return <div>{`${diagrammeLabels[lang].diagramme.none} ${name}`}</div>;\n }\n return (\n <ul className=\"resetlist\">\n {renderList}\n </ul>\n );\n })()}\n </div>\n <dl className=\"au_edutable_legend\">\n <dt className=\"au_edutable_mandatory\">{diagrammeLabels[lang].diagramme.courseTypes[0]}</dt>\n <dd />\n <dt className=\"au_edutable_optional\">{diagrammeLabels[lang].diagramme.courseTypes[1]}</dt>\n <dd />\n <dt className=\"au_edutable_supplementary\">{diagrammeLabels[lang].diagramme.courseTypes[2]}</dt>\n <dd />\n <dt className=\"au_edutable_support\">{diagrammeLabels[lang].diagramme.courseTypes[3]}</dt>\n <dd />\n </dl>\n </div>\n );\n }\n}\n\nAUDiagrammeComponent.propTypes = {\n lang: PropTypes.string.isRequired,\n response: PropTypes.shape({\n lines: PropTypes.arrayOf(PropTypes.shape({\n name: PropTypes.string.isRequired,\n nameEnglish: PropTypes.string.isRequired,\n })).isRequired,\n }).isRequired,\n course: PropTypes.string.isRequired,\n track: PropTypes.string.isRequired,\n print: PropTypes.bool.isRequired,\n};\n\nAUDiagrammeComponent.displayName = 'AUDiagrammeComponent';\nexport default AUDiagrammeComponent;\n","/* eslint no-prototype-builtins: 0 */\n/* eslint no-restricted-syntax: 0 */\n/* eslint no-unused-vars: 0 */\n/* eslint-env browser */\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport AUDiagrammeComponent from '../components/diagramme/AUDiagrammeComponent';\n\nconst defaultOptions = {\n config: {\n container: '.au_edutable_eddi_container',\n courseID: 0,\n track: 0,\n },\n};\n\nclass AUDiagramme {\n constructor(lang, tables) {\n this.tables = tables;\n this.lang = lang;\n }\n\n static mergeOptions(_table) {\n const table = _table;\n if (!table.hasOwnProperty('config')) {\n table.config = {};\n }\n\n for (const conf in defaultOptions.config) {\n if (!table.config.hasOwnProperty(conf)) {\n table.config[conf] = defaultOptions.config[conf];\n }\n }\n }\n\n init() {\n const qsCourses = AU.helpers.getQuerystring('coursesprint');\n if (qsCourses !== '') {\n const coursesSplit = qsCourses.split(',');\n for (let j = 0; j < coursesSplit.length; j += 1) {\n const trackSplit = coursesSplit[j].split('|');\n if (trackSplit.length > 1) {\n this.tables.push({\n config: {\n container: `#print_course_${j}`,\n courseID: parseInt(trackSplit[0], 10),\n track: parseInt(trackSplit[1], 10),\n },\n });\n } else {\n this.tables.push({\n config: {\n container: `#print_course_${j}`,\n courseID: parseInt(trackSplit[0], 10),\n },\n });\n }\n ReactDOM.render(<div id={`print_course_${j}`} />, document.querySelector('body'));\n }\n }\n for (let i = 0; i < this.tables.length; i += 1) {\n const table = this.tables[i];\n table.id = i;\n AUDiagramme.mergeOptions(table);\n const url = `https://eddiprod.au.dk/EDDI/webservices/StudieoversigtService2.cfc?method=getLinjeListByDokordningId&tjekForVisningIstudieDiagram=true&allowOrigin=true&dokordningId=${table.config.courseID}`;\n fetch(url).then((promise) => promise.json()).then((data) => {\n const mountNode = document.querySelector(table.config.container);\n if (mountNode) {\n ReactDOM.render(\n <AUDiagrammeComponent\n lang={this.lang}\n response={data}\n course={table.config.courseID}\n track={table.config.track}\n print={qsCourses !== ''}\n />,\n mountNode,\n );\n }\n });\n }\n }\n}\n\nwindow.AUDiagramme = AUDiagramme;\n"],"names":["root","factory","exports","module","require","define","amd","a","i","self","__WEBPACK_EXTERNAL_MODULE__244__","__WEBPACK_EXTERNAL_MODULE__741__","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","props","propName","componentName","location","propFullName","secret","err","Error","name","getShim","isRequired","ReactPropTypes","array","bigint","bool","func","number","object","string","symbol","any","arrayOf","element","elementType","instanceOf","node","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","n","getter","__esModule","d","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","value","diagrammeLabels","da","diagramme","semestre","kvarterer","regulation","courseTypes","none","select","en","AUDiagrammeComponent","React","data","lang","mode","dataArr","DiagramMetaData","DATA","length","j","push","DiagramStruktur","forEach","periodIndex","orderIndex","k","rowspan","ectsPrPeriod","courseId","type","toLowerCase","colspan","ects","code","constructor","super","this","state","nodes","active","track","componentDidMount","print","response","Array","lines","promises","Promise","resolve","url","id","fetch","then","promise","json","periodType","nameEnglish","table","diagrammeParse","list","all","setState","window","changeActive","event","target","render","course","kkLinkedExams","kkElectiveGroup","tilvalg","renderRows","map","diaKey","renderCells","c","cellKey","href","className","colSpan","rowSpan","rel","renderList","l","renderEducations","e","eduKey","renderOptions","onChange","bind","printUrl","onClick","preventDefault","open","propTypes","displayName","defaultOptions","config","container","courseID","AUDiagramme","tables","_table","conf","init","qsCourses","AU","helpers","getQuerystring","coursesSplit","split","trackSplit","parseInt","ReactDOM","document","querySelector","mergeOptions","mountNode"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- !function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t(require("axios"),require("react"),require("react-dom"));else if("function"==typeof define&&define.amd)define(["axios","react","react-dom"],t);else{var n="object"==typeof exports?t(require("axios"),require("react"),require("react-dom")):t(e.axios,e.React,e.ReactDOM);for(var o in n)("object"==typeof exports?exports:e)[o]=n[o]}}(self,(function(e,t,n){return(()=>{var o={683:(e,t,n)=>{"use strict";n.r(t);var o=n(383),a=n.n(o),r=n(949),s=n.n(r),i=n(697),l=n.n(i),c=n(376),d=n.n(c);const{serviceScopeProfile:p}=window;class m extends a().Component{constructor(e){super(e),this.state={loading:!0,visible:e.visible},this.lazyLoad=this.lazyLoad.bind(this)}componentDidMount(){this.lazyLoad(),window.addEventListener("scroll",(()=>{this.lazyLoad()}))}componentDidUpdate(){this.lazyLoad()}static getDerivedStateFromProps(e,t){return e.visible!==t.visible?{visible:e.visible}:null}lazyLoad(){const{loadingCondition:e,loaded:t,domID:n,onLoad:o}=this.props,{loading:a,visible:r}=this.state,s=document.getElementById(n);!t&&a&&e&&(r||(e=>{if(null===e)return!1;const t=e.getBoundingClientRect();return t.bottom>0&&t.right>0&&t.left<(window.innerWidth||document.documentElement.clientWidth)&&t.top<(window.innerHeight||document.documentElement.clientHeight)})(s))&&this.setState({loading:!1},(()=>{o()}))}render(){const{columns:e,content:t,loaded:n,domID:o,children:r}=this.props;return n?r||t:a().createElement("div",{id:o,className:`cell column ${e}`},a().createElement("p",{className:"spinner"}))}}m.defaultProps={domID:"au-spinner-component",visible:!1,columns:"large-12 medium-12 small-12",content:null,children:null,onLoad:()=>{}},m.propTypes={domID:l().string,visible:l().bool,columns:l().string,content:l().element,children:l().element,loaded:l().bool.isRequired,loadingCondition:l().bool.isRequired,onLoad:l().func},m.displayName="AUSpinnerComponent";const u=m,h={da:{select:"Vælg",back:"Tilbage",building:"Bygning",office:"Kontor"},en:{select:"Select",back:"Back",building:"Building",office:"Office"}};class f extends a().Component{constructor(e){super(e),this.state={persons:[]}}componentDidMount(){const{phone:e}=this.props,t=`https://ipure.nfit.au.dk/searchPeople.php?mode=json&q=${e}`;d().get(t).then((t=>{const n=t.data;this.setState({persons:n},(()=>{void 0!==window.flowboxCallback&&window.flowboxCallback.forEach((t=>{t.target===`p-${e}`&&t.func(n)}))}))}))}render(){const{persons:e}=this.state,{lang:t,phone:n}=this.props,o=e.map((e=>{const{departments:n}=e,o=n.length>0?n[0].email:"",r=n.map((e=>[a().createElement("span",{key:0,className:"org"},e.name),a().createElement("br",{key:1}),a().createElement("span",{key:2},`${h[t].building} ${e.address.building.id}, ${h[t].office} ${e.address.building.room}`),a().createElement("br",{key:3}),a().createElement("span",{key:4,className:"adr"},a().createElement("span",{className:"street-address"},e.address.street),a().createElement("span",null,", "),a().createElement("span",{className:"postal-code"},e.address.zip),a().createElement("span",{className:"localityName"},e.address.city)),a().createElement("br",{key:5}),a().createElement("br",{key:6}),a().createElement("span",{key:7},"T: "),a().createElement("span",{key:8,className:"tel"},e.phone),a().createElement("br",{key:9}),a().createElement("span",{key:10},"M: "),a().createElement("span",{key:11,className:"tel"},e.mobile),a().createElement("br",{key:12}),a().createElement("span",{key:13},"E: "),a().createElement("a",{key:14,className:"email",href:`mailto:${e.email}`},e.email),a().createElement("br",{key:15})]));return a().createElement("div",{key:e.id,className:"vcard"},a().createElement("h2",{className:"fn"},a().createElement("a",{className:"url",href:`http://au.dk/${o}`},e.fullName)),a().createElement("p",null,e.photo?a().createElement("a",{className:"photo",href:`http://au.dk/${o}`},a().createElement("img",{style:{width:"70px",float:"right",marginLeft:"1em"},src:e.photo,alt:e.fullName,title:e.fullName})):null,r))}));return a().createElement(u,{loadingCondition:0===e.length,loaded:e.length>0},a().createElement("div",{id:`p-${n}`},o))}}f.propTypes={phone:l().string.isRequired,lang:l().string.isRequired},f.displayName="FlowBoxPhoneComponent";const g=f;class y extends a().Component{constructor(e){super(e);const{box:t}=e;this.state={node:t.item},this.prevNode=this.prevNode.bind(this),this.nextNode=this.nextNode.bind(this),this.handleSelectChange=this.handleSelectChange.bind(this)}nextNode(e){this.setState({node:e})}prevNode(e){this.setState({node:e.parent})}handleSelectChange(e){const{node:t}=this.state,n=t.children.find((t=>t.name===e.target.value));this.setState({node:n})}render(){const{node:e}=this.state,{box:t,lang:n}=this.props,{children:o}=e;return a().createElement("div",null,a().createElement("h2",{dangerouslySetInnerHTML:{__html:`<span>${t.data.prepend} </span>${e.name}`}}),(()=>"select"===t.config.render&&o.filter((e=>e.children.length>0)).length>0?a().createElement("select",{onChange:this.handleSelectChange},a().createElement("option",{value:""},`${h[n].select}...`),o.map((e=>a().createElement("option",{key:e.name,value:e.name},e.name)))):a().createElement("ul",null,o.map((e=>a().createElement("li",{key:e.name},(()=>e.children.length>0?a().createElement("button",{type:"button",onClick:()=>{this.nextNode(e)},dangerouslySetInnerHTML:{__html:e.name}}):-1===e.name.indexOf(" ")&&window.renderVCard?a().createElement(g,{phone:e.name,lang:n}):a().createElement("span",{dangerouslySetInnerHTML:{__html:e.name}}))())))))(),(()=>null!=e.parent?a().createElement("button",{type:"button",className:"button small",onClick:()=>{this.prevNode(e)}},h[n].back):null)())}}y.propTypes={box:l().shape({item:l().shape({name:l().string.isRequired}).isRequired,data:l().shape({prepend:l().string.isRequired}).isRequired,config:l().shape({render:l().string.isRequired}).isRequired}).isRequired,lang:l().string.isRequired},y.displayName="FlowBoxComponent";const b=y,E={config:{container:".au_flowbox",tracking:"/virtual/flowbox/",render:"ul"},data:{mode:"list",source:".au_flowbox_list",headline:"Overskrift",prepend:""}};class x{constructor(e,t){this.boxes=t,this.lang=e}static mergeOptions(e){const t=e;t.hasOwnProperty("config")||(t.config={});for(const e in E.config)t.config.hasOwnProperty(e)||(t.config[e]=E.config[e]);t.hasOwnProperty("data")||(t.data={});for(const e in E.data)t.data.hasOwnProperty(e)||(t.data[e]=E.data[e])}static parse(e){const t=(e,n,o)=>{n.forEach((n=>{n.querySelectorAll(o).forEach((n=>{const o={name:n.innerHTML,children:[],parent:e};e.children.push(o);const a=n.parentElement.querySelectorAll(":scope > ul");a.length>0&&t(o,a,":scope > li > p")}))}))};t(e.item,document.querySelectorAll(e.data.source),window.flowboxScopeSelector||":scope > li > p")}init(){for(let e=0;e<this.boxes.length;e+=1){const t=this.boxes[e];x.mergeOptions(t),t.id=e,t.item={name:t.data.headline,children:[],parent:null},x.parse(t);const n=document.querySelector(t.config.container);s().render(a().createElement(b,{box:t,lang:this.lang}),n)}}}window.AUFlowbox=x},703:(e,t,n)=>{"use strict";var o=n(414);function a(){}function r(){}r.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,r,s){if(s!==o){var i=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw i.name="Invariant Violation",i}}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:r,resetWarningCache:a};return n.PropTypes=n,n}},697:(e,t,n)=>{e.exports=n(703)()},414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},376:t=>{"use strict";t.exports=e},383:e=>{"use strict";e.exports=t},949:e=>{"use strict";e.exports=n}},a={};function r(e){if(a[e])return a[e].exports;var t=a[e]={exports:{}};return o[e](t,t.exports,r),t.exports}return r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r(683)})()}));
1
+ !function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t(require("react"),require("react-dom"));else if("function"==typeof define&&define.amd)define(["react","react-dom"],t);else{var n="object"==typeof exports?t(require("react"),require("react-dom")):t(e.React,e.ReactDOM);for(var a in n)("object"==typeof exports?exports:e)[a]=n[a]}}(self,((e,t)=>(()=>{var n={703:(e,t,n)=>{"use strict";var a=n(414);function o(){}function r(){}r.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,r,s){if(s!==a){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:r,resetWarningCache:o};return n.PropTypes=n,n}},697:(e,t,n)=>{e.exports=n(703)()},414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},244:t=>{"use strict";t.exports=e},741:e=>{"use strict";e.exports=t}},a={};function o(e){var t=a[e];if(void 0!==t)return t.exports;var r=a[e]={exports:{}};return n[e](r,r.exports,o),r.exports}o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},o.d=(e,t)=>{for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r={};return(()=>{"use strict";o.r(r);var e=o(244),t=o.n(e),n=o(741),a=o.n(n),s=o(697),l=o.n(s);class i extends t().Component{constructor(e){super(e),this.state={loading:!0,visible:e.visible},this.lazyLoad=this.lazyLoad.bind(this)}componentDidMount(){this.lazyLoad(),window.addEventListener("scroll",(()=>{this.lazyLoad()}))}componentDidUpdate(){this.lazyLoad()}static getDerivedStateFromProps(e,t){return e.visible!==t.visible?{visible:e.visible}:null}lazyLoad(){const{loadingCondition:e,loaded:t,domID:n,onLoad:a}=this.props,{loading:o,visible:r}=this.state,s=document.getElementById(n);!t&&o&&e&&(r||(e=>{if(null===e)return!1;const t=e.getBoundingClientRect();return t.bottom>0&&t.right>0&&t.left<(window.innerWidth||document.documentElement.clientWidth)&&t.top<(window.innerHeight||document.documentElement.clientHeight)})(s))&&this.setState({loading:!1},(()=>{a()}))}render(){const{columns:e,content:n,loaded:a,domID:o,children:r}=this.props;return a?r||n:t().createElement("div",{id:o,className:`cell column ${e}`},t().createElement("p",{className:"spinner"}))}}i.defaultProps={domID:"au-spinner-component",visible:!1,columns:"large-12 medium-12 small-12",content:null,children:null,onLoad:()=>{}},i.propTypes={domID:l().string,visible:l().bool,columns:l().string,content:l().element,children:l().element,loaded:l().bool.isRequired,loadingCondition:l().bool.isRequired,onLoad:l().func},i.displayName="AUSpinnerComponent";const c=i,d={da:{select:"Vælg",back:"Tilbage",building:"Bygning",office:"Kontor"},en:{select:"Select",back:"Back",building:"Building",office:"Office"}};class p extends t().Component{constructor(e){super(e),this.state={persons:[]}}componentDidMount(){const{phone:e}=this.props;fetch(`https://ipure.nfit.au.dk/searchPeople.php?mode=json&q=${e}`).then((e=>e.json())).then((t=>{this.setState({persons:t},(()=>{void 0!==window.flowboxCallback&&window.flowboxCallback.forEach((n=>{n.target===`p-${e}`&&n.func(t)}))}))}))}render(){const{persons:e}=this.state,{lang:n,phone:a}=this.props,o=e.map((e=>{const{departments:a}=e,o=a.length>0?a[0].email:"",r=a.map((e=>[t().createElement("span",{key:0,className:"org"},e.name),t().createElement("br",{key:1}),t().createElement("span",{key:2},`${d[n].building} ${e.address.building.id}, ${d[n].office} ${e.address.building.room}`),t().createElement("br",{key:3}),t().createElement("span",{key:4,className:"adr"},t().createElement("span",{className:"street-address"},e.address.street),t().createElement("span",null,", "),t().createElement("span",{className:"postal-code"},e.address.zip),t().createElement("span",{className:"localityName"},e.address.city)),t().createElement("br",{key:5}),t().createElement("br",{key:6}),t().createElement("span",{key:7},"T: "),t().createElement("span",{key:8,className:"tel"},e.phone),t().createElement("br",{key:9}),t().createElement("span",{key:10},"M: "),t().createElement("span",{key:11,className:"tel"},e.mobile),t().createElement("br",{key:12}),t().createElement("span",{key:13},"E: "),t().createElement("a",{key:14,className:"email",href:`mailto:${e.email}`},e.email),t().createElement("br",{key:15})]));return t().createElement("div",{key:e.id,className:"vcard"},t().createElement("h2",{className:"fn"},t().createElement("a",{className:"url",href:`http://au.dk/${o}`},e.fullName)),t().createElement("p",null,e.photo?t().createElement("a",{className:"photo",href:`http://au.dk/${o}`},t().createElement("img",{style:{width:"70px",float:"right",marginLeft:"1em"},src:e.photo,alt:e.fullName,title:e.fullName})):null,r))}));return t().createElement(c,{loadingCondition:0===e.length,loaded:e.length>0},t().createElement("div",{id:`p-${a}`},o))}}p.propTypes={phone:l().string.isRequired,lang:l().string.isRequired},p.displayName="FlowBoxPhoneComponent";const m=p;class u extends t().Component{constructor(e){super(e);const{box:t}=e;this.state={node:t.item},this.prevNode=this.prevNode.bind(this),this.nextNode=this.nextNode.bind(this),this.handleSelectChange=this.handleSelectChange.bind(this)}handleSelectChange(e){const{node:t}=this.state,n=t.children.find((t=>t.name===e.target.value));this.setState({node:n})}nextNode(e){this.setState({node:e})}prevNode(e){this.setState({node:e.parent})}render(){const{node:e}=this.state,{box:n,lang:a}=this.props,{children:o}=e;return t().createElement("div",null,t().createElement("h2",{dangerouslySetInnerHTML:{__html:`<span>${n.data.prepend} </span>${e.name}`}}),(()=>"select"===n.config.render&&o.filter((e=>e.children.length>0)).length>0?t().createElement("select",{onChange:this.handleSelectChange},t().createElement("option",{value:""},`${d[a].select}...`),o.map((e=>t().createElement("option",{key:e.name,value:e.name},e.name)))):t().createElement("ul",null,o.map((e=>t().createElement("li",{key:e.name},(()=>e.children.length>0?t().createElement("button",{type:"button",onClick:()=>{this.nextNode(e)},dangerouslySetInnerHTML:{__html:e.name}}):-1===e.name.indexOf(" ")&&window.renderVCard?t().createElement(m,{phone:e.name,lang:a}):t().createElement("span",{dangerouslySetInnerHTML:{__html:e.name}}))())))))(),(()=>null!=e.parent?t().createElement("button",{type:"button",className:"button small",onClick:()=>{this.prevNode(e)}},d[a].back):null)())}}u.propTypes={box:l().shape({item:l().shape({name:l().string.isRequired}).isRequired,data:l().shape({prepend:l().string.isRequired}).isRequired,config:l().shape({render:l().string.isRequired}).isRequired}).isRequired,lang:l().string.isRequired},u.displayName="FlowBoxComponent";const h=u,f={config:{container:".au_flowbox",tracking:"/virtual/flowbox/",render:"ul"},data:{mode:"list",source:".au_flowbox_list",headline:"Overskrift",prepend:""}};class g{constructor(e,t){this.boxes=t,this.lang=e}static mergeOptions(e){const t=e;t.hasOwnProperty("config")||(t.config={});for(const e in f.config)t.config.hasOwnProperty(e)||(t.config[e]=f.config[e]);t.hasOwnProperty("data")||(t.data={});for(const e in f.data)t.data.hasOwnProperty(e)||(t.data[e]=f.data[e])}static parse(e){const t=(e,n,a)=>{n.forEach((n=>{n.querySelectorAll(a).forEach((n=>{const a={name:n.innerHTML,children:[],parent:e};e.children.push(a);const o=n.parentElement.querySelectorAll(":scope > ul");o.length>0&&t(a,o,":scope > li > p")}))}))};t(e.item,document.querySelectorAll(e.data.source),window.flowboxScopeSelector||":scope > li > p")}init(){for(let e=0;e<this.boxes.length;e+=1){const n=this.boxes[e];g.mergeOptions(n),n.id=e,n.item={name:n.data.headline,children:[],parent:null},g.parse(n);const o=document.querySelector(n.config.container);a().render(t().createElement(h,{box:n,lang:this.lang}),o)}}}window.AUFlowbox=g})(),r})()));
2
2
  //# sourceMappingURL=flowbox.js.map