{"version":3,"file":"bv-lgc-app-start.14a8a9053b41949b.js","mappings":"YAEA,aAQAA,sDACAA,4BAEAC,yCAEAA,0BAEAC,iCACAA,qBACAC,6MACA,iBACAC,aAEAC,EACAC,cACAC,gBACAC,uBACAC,sBACAT,mBACA,IAEAM,cACAC,QACAG,6CACAC,oBACAF,+BAGAH,iBACAC,mBACAG,6CACAD,2BAEAH,eACAC,sBACAG,iDACAD,4BAEAH,gBACAC,kBACAG,+CACAD,wBACAG,MACAD,uBAEAA,wBAEAL,wBACAO,YACAH,gDACAD,+BAEAK,SACAC,wCACA,6BAA2DC,oBAC3D,GACAC,wDAEA,cAA6CC,aAC7C,IAEAC,mBACAnB,mDACA,IAEA,sDACAK,EACAC,6BAEAC,+CAAyCa,EACzCR,MAAoBD,uCACpBG,SACAG,wDAEA,cAA6CC,aAC7C,IAGAG,OACAC,QACAZ,mDACAD,gCAEAc,YACAb,uDACAD,oCAEAe,eACAd,0DACAD,oCAEAgB,cACAC,+BACAC,UACAC,wBAIAT,mBACAnB,wCACA,IAEAM,4BACAC,qKACAK,MAAoBD,uCACpBkB,kBACAR,OACAC,QACAZ,qDACAD,6BAEAc,YACAb,yDACAD,qCAEAe,eACAd,4DACAD,qCAEAgB,cACAC,+BACAC,UACAC,0BAKAtB,oBACAC,8BACAK,MAAoBD,qCACpBF,gCACAC,2DAEAJ,kCACAC,4DACAK,MAAoBD,0CACpBkB,kBACAR,OACAC,QACAZ,yDACAD,iCAEAc,YACAb,6DACAD,yCAEAe,eACAd,gEACAD,yCAEAgB,cACAC,+BACAC,UACAC,0BAKAtB,0BACAC,gCACAK,MAAoBD,qCACpBF,oCACAC,+DAEAJ,cACAC,kCACAG,mDACAD,2BACAG,MACAD,6BAEAG,SACAgB,+CACA,qBACA,GACAC,oDACA,0BACA,MAGAzB,YACAC,cACAC,+FACAC,sBACAT,mCACA,EACAY,MAAoBD,sCAEpBL,yBACAC,qCACAG,uDACAD,gCACAG,MACAD,kCAGAL,qBACAC,uBACAG,oDACAD,6BACAG,MACAD,qCAGAL,cACAC,gBACAG,mDACAD,sBACAG,MACAD,0BAGAL,mBACAC,qBACAG,iDACAD,iDACAuB,2BACAC,QACA,EACA,GACArB,MACAD,4BAGAL,wBACAC,+BACAG,uDACAD,+BACAG,MACAD,gCAEAG,SACAoB,uDACA,qBACA,GACAC,iCACA,aACA,MAGA7B,oBACAC,wBACAG,mDACAD,2BACAG,MACAD,4BAEAG,SACAsB,+CAGA,kBACA,GACAD,iCACA,aACA,MAGA7B,uBACAC,yBACAG,sDACAD,gCAEAH,uBACAC,wBACAG,sDACAD,4BACAE,6BACAG,SACAC,wCACA,uCAAqEC,oBACrE,MAGAV,wBACAC,0BACAG,uDACAD,+BACAG,MACAD,6BACA0B,0BAGA/B,kBACAC,0BACAG,iDACAD,4BAEAH,mBACAC,qBACAG,wDACAC,oCACAF,6BAEAH,0BACAC,yBACAG,yDACAC,oCACAF,mCAEAH,kCACAC,iCACAG,iEACAC,oCACAF,0CAEAH,4BACAC,2BACAG,2DACAC,oCACAF,qCAEAH,+BACAC,8BACAG,8DACAC,oCACAF,wCAEAH,sCACAC,oDACAG,oEACAC,oCACAF,8CAOAH,YACAC,cACAG,mDACAD,uCACAG,MACAD,0BACA2B,iBAEAxB,SAEAC,0DACA,sEAIAwB,gCAAqEvB,sBAHrEwB,0CACA,GAGA,MAGAlC,iBACAC,YACAC,6CAEAF,sBACAC,iBACAG,uDACAE,MACAD,6BAGAL,mBACAC,iBACAG,oDACAD,4BACAG,MACAD,+BAGAL,0BACAC,wBACAG,2DACAD,6BACAG,MACAD,uCAGAL,kBACAC,aACAG,mDACAD,2BACAG,MACAD,2BAGAL,yBACAC,oBACAG,0DACAD,iCACAG,MACAD,mCAGAL,kBACAC,aACAG,mDACAD,2BACAG,MACAD,2BAGAL,sBACAC,iBACAG,uDACAD,+BACAG,MACAD,8BAGAL,oBACAC,eACAG,qDACAD,4BACAG,MACAD,sCAGAL,kBACAC,aACAG,mDACAD,2BACAG,MACAD,2BAEAG,SACA2B,2DACA,eACA,MAGAnC,iBACAC,YACAG,kDACAD,0BACAG,MACAD,0BAGAL,sBACAC,uBACAG,uDAEAE,MACAD,yCAGAL,yBACAC,oBACAG,0DACAD,iCACAG,MACAD,kCAGAL,wBACAC,mBACAG,yDACAD,iCACAG,MACAD,wCAEAG,SACA4B,mEACA,eACA,MAGApC,wBACAC,mBACAG,yDACAD,iCACAG,MACAD,8CAEAG,SACA6B,sEACA,eACA,MAGArC,qBACAC,gBACAG,sDACAD,8BACAG,MACAD,4BAEAG,SACA8B,gEACA,kBACA,MAGAtC,0BACAC,qBACAG,2DACAD,kCACAG,MACAD,yCAEAG,SACA+B,gEACA,mBACA,MAGAvC,kBACAC,aACAG,mDACAD,2BACAG,MACAD,sCAIAL,iBACAC,YACAG,kDACAD,0BACAG,MACAD,wBAEAG,SACAgC,wDACA,kBACA,MAIAxC,qBACAC,gBACAG,4DACAD,8BACAG,MACAD,qCAEAG,SACAiC,+DACA,kBAAkDC,YAAsBC,QACxE,MAIA3C,4BACAC,uBACAC,YACAC,oCACAK,SACAiC,+DACA,kBAAkDC,YAAsBC,QACxE,MAIA3C,6BACAC,oBACAG,8DACAD,oCACAG,MACAD,yCAEAG,SACAoC,+EACA,kBAAkDC,UAAmBF,QACrE,GACAG,8GACA,kBAAkDD,UAAmBF,0BACrE,QACA,EAAqB,YACrB,cAA0CI,qBAC1CC,WACA,EACA,MAGAhD,oBACAC,eACAG,oEACAD,6BACAG,MACAD,iCAEAG,SACAyC,6DACA,uBAAuDC,2BAAqCP,QAC5F,MAGA3C,mBACAC,cACAG,oDACAD,4BACAG,MACAD,6BAEAG,SACA2C,yDACA,0CACA,gCACAC,iCAAoEP,OAAOF,QAC3E,EACA,MAGA3C,iBACAC,uBACAG,kDACAD,gCACAG,MACAD,+BAGAL,sBACAC,mCACAG,qDACAD,iCACAG,MACAD,+BAIAL,aACAC,qBACAG,mDACAD,0BACAG,MACAD,qCAGAL,aACAC,qBACAG,mDACAD,0BACAG,MACAD,gCAKAgD,8BAEAC,gBAIA,+CA4EA,aA1EAC,iEACA,OACAC,oBACA,6DAEA3D,8BACAA,sBAGAA,YACA,EACA4D,qBACA,oBACA,mCACAC,6BAIAC,iDACAC,2BAEAD,sBAEA,CACA,QACA,EAEA,IAwBAJ,+CAEAM,UAEA,GAGA/D,mEACA,aACA,0BACA,WACA,kCACAgE,aACA,GACAC,CACA,EACAC,CACA,IAKAC,gDACAN,kBACAM,0BAEAC,eAGAC,uBAGAC,eAEA,IAACC,IACD,+OACAP,UACAQ,SAMAA,aAA+B,YAK/B,aAHA,CACAC,UAIA,GAGAZ,sBAEA,IACAa,8BAGA,CAFA,MAASC,GACT/E,eACA,CAGAkE,0BACA,sBAEA,GADAlE,gBACA,oBACA,oBACA,2BACAgF,mBACAC,aAEA,4BACAD,mBACAC,YAEA,KACA,sBACAD,mBACAC,aAEA,uBACAD,mBACAC,YAEA,GAEA,6BACAC,IACAC,OAA0B9B,qBAC1B+B,8BAGA,IA2EAC,EA3EAC,0BAwCA,GAvCAA,GACAC,8CACAH,gCAEAE,4BACAC,6CACAH,8BAGAlB,6BACAE,6CACA,GAEAF,4BACAsB,QACA,GACAtB,iCAEAsB,kBACAC,cACAL,oCAEA,GACAlB,mCACAE,kBACA,GAEAF,wBACAA,sBAEAwB,qCACA,4DACAA,wBACAA,gCAGA,GAGAtB,gDACA,yBACAA,qBAEA,uCACAA,gBACAuB,GACA,GAKAvB,WACAsB,6BACAA,4DACA,GAGAxB,8CAMA0B,+BAIAC,iCACAtD,0BACAwC,kBAGA,GAGAb,kCACAmB,IACAA,eAAmDA,QAAyB,KAC5EF,OAA8B9B,mCAE9Bd,4BACAY,MACAZ,UACA6C,qCAEA,EACA,GAEAlB,8CAMA4B,0CACA1B,gBAKAmB,yCAAiER,mBAAoBE,gBAJrFF,mBACAE,eAMA1C,qBACAA,UAEAqD,+BACAb,mBAEAX,4BACA2B,cAEA,GAEA7B,gDAIAe,aACAA,mBACAf,iBAQAE,iDACA4B,mBAEA,mBAA4CrF,aAC5CsF,0CAEA/B,qCAEAgC,8BAAwDC,gBAGxD,iBACA,0BACAjC,wBAEAkC,4EACAlC,wBAGAE,4BACA2B,kBAEA,EAGA,GAIA","names":["console","angular","constant","config","$provide","$stateProvider","state","url","template","controller","templateUrl","pageSubTitle","data","abstract","resolve","resolvedUser","redirectOnFail","searchQuery","fromState","onEnter","searchQueryParams","views","facets","resultlist","searchsummary","querysummary","component","bindings","search","reloadOnSearch","bib","holdings","kohaTagsSvc","$scope","message","view","job","restrict","requiresAuth","userService","window","resolvedLists","resolvedSuggestions","resolvedIllRequests","resolvedMessages","resolvedMsgPrefs","resolvedJobs","resolvedAcqLists","user","$promise","resolvedAcqList","id","resolvedAcqListEntries","msg","$q","resolvedOrders","branch_code","socialMediaAccounts","kwApi","$urlRouterProvider","$locationProvider","$httpProvider","request","response","fh","KOHA","$rootScope","$ocLazyLoadProvider","configService","rv","$delegate","uibPaginationConfig","uibDatepickerPopupConfig","$uibModalProvider","$rootScopeProvider","run","$transitions","marcBibSpec","dayjs","e","event","$state","alertMsg","alertService","$location","sessExpDebounce","ticket","$http","kohaListsSvc","cartService","$","dereg","staffRedirectService","next","toState","loading","$timeout","document","$window","page","toParams"],"sourceRoot":"webpack:///","sources":["app/js/app.js"],"sourcesContent":["\n(function(){\n'use strict';\n\n /* IMPORTANT: This needs to be first legacy wack app that loads after ng-core bundle */\n\n// KOHA.status.configured.then(function(koha){\n // now we have KOHA.config, and all optional modules are included...\n\n\nconsole.log(' declaring KOHAPAC angular module ... ');\nconsole.log(KOHA.ngModules);\n// prob need an await here.\nangular.module('kohapac', KOHA.ngModules);\n\nangular.module('kohapac').\n\n constant( 'VERSION', KOHA.VERSION).\n constant( 'DEBUG', true ).\n config([\"$urlRouterProvider\", \"$stateProvider\", \"$httpProvider\", \"$locationProvider\", \"$provide\", \"$ocLazyLoadProvider\", \"$rootScopeProvider\", \"uibPaginationConfig\", \"uibDatepickerPopupConfig\", \"$uibModalProvider\",\n function($urlRouterProvider, $stateProvider, $httpProvider, $locationProvider,\n $provide, $ocLazyLoadProvider, $rootScopeProvider, uibPaginationConfig, uibDatepickerPopupConfig, $uibModalProvider) {\n\n $stateProvider\n .state('test', {\n url: '/app/test',\n template: 'test',\n controller: function() {\n console.log(\"Test\");\n }\n })\n .state('home', {\n url: '/',\n templateUrl: '/app/static/partials/home.html',\n pageSubTitle: 'Home',\n controller: 'LandingPageCtrl',\n })\n\n .state('version', {\n url: '/app/version',\n templateUrl: '/app/static/partials/home.html',\n controller: 'VersionCtrl'\n })\n .state('error', {\n url: '/app/error?code',\n templateUrl: '/app/static/partials/syserror.html',\n controller: 'AppErrorCtrl'\n })\n .state('search', {\n url: '/app/search',\n templateUrl: '/app/static/partials/search.html',\n controller: 'SearchCtrl',\n data: {\n pageSubTitle: 'Search'\n },\n pageSubTitle: 'Search'\n })\n .state('search-results', {\n abstract: true,\n templateUrl: '/app/static/partials/results.html',\n controller: 'SearchResultsCtrl',\n // reloadOnSearch: true, // parent states are retained -- only the child state reloads.\n resolve: {\n resolvedUser: [\"userService\", function(userService) {\n return userService.whenAnyUserDetails({redirectOnFail: '/'});\n }],\n searchQuery: [\"SearchQuery\", \"$transition$\", function(SearchQuery, $transition$) {\n // fixme: searchquery obj is bv/solr-specific, doesn't really work for federated children\n return new SearchQuery({ fromState: $transition$ });\n }]\n },\n onEnter: function(){\n console.log(\"enter search-results abstract state.\");\n }\n });\n var searchQueryParams = Object.keys(KOHA.config.searchFields).join('&');\n $stateProvider\n .state('search-results.koha', {\n // url: '/app/search/{query:any}?QUERYPARAMS', // cf: https://ui-router.github.io/ng1/docs/latest/classes/params.paramtypes.html#any\n url: '/app/search/{query:any}?fq&page&sort&op&' + searchQueryParams,\n data: { pageSubTitle: 'Catalog Search Results' },\n resolve: {\n searchQuery: [\"SearchQuery\", \"$transition$\", function(SearchQuery, $transition$) {\n // duplicates parent, but this reloads.\n return new SearchQuery({ fromState: $transition$ });\n }],\n\n },\n views: {\n facets : {\n templateUrl: '/app/static/partials/facets-cat.html',\n controller: 'KohaFacetViewCtrl'\n },\n resultlist: {\n templateUrl: '/app/static/partials/resultlist-cat.html',\n controller: 'KohaSearchResultsCtrl'\n },\n searchsummary: {\n templateUrl: '/app/static/partials/searchsummary-cat.html',\n controller: 'KohaSearchSummaryCtrl',\n },\n querysummary: {\n component: 'searchQuerySummary',\n bindings: {\n search : 'searchQuery',\n }\n }\n },\n onEnter: function(){\n console.log(\"enter search-results.koha\");\n }\n })\n .state('search-results.eds', {\n url: '/app/eds-search?query&query-1&publicationid&relatedcontent&highlight&pagenumber&resultsperpage&view&expander&searchmode&limiter&sort&facetfilter&includefacets',\n data: { pageSubTitle: 'Article Search Results' },\n reloadOnSearch: true,\n views: {\n facets : {\n templateUrl: '/app/static/partials/facets-ebsco.html',\n controller: 'EbscoFacetCtrl'\n },\n resultlist: {\n templateUrl: '/app/static/partials/resultlist-ebsco.html',\n controller: 'EbscoSearchResultsCtrl'\n },\n searchsummary: {\n templateUrl: '/app/static/partials/searchsummary-ebsco.html',\n controller: 'EbscoSearchSummaryCtrl'\n },\n querysummary: {\n component: 'searchQuerySummary',\n bindings: {\n search : 'searchQuery',\n }\n }\n },\n })\n .state('eds-detail', {\n url: '/app/eds-detail/:db/:an',\n data: { pageSubTitle: 'Article Details View' },\n controller: 'EbscoBibDetailCtrl',\n templateUrl: '/app/static/partials/bib-detail-ebsco.html',\n })\n .state('search-results.indexdata', {\n url: '/app/indexdata-search?query&pagenumber&resultsperpage',\n data: { pageSubTitle: 'Index Data Search Results' },\n reloadOnSearch: true,\n views: {\n facets : {\n templateUrl: '/app/static/partials/facets-indexdata.html',\n controller: 'IndexDataFacetCtrl'\n },\n resultlist: {\n templateUrl: '/app/static/partials/resultlist-indexdata.html',\n controller: 'IndexDataSearchResultsCtrl'\n },\n searchsummary: {\n templateUrl: '/app/static/partials/searchsummary-indexdata.html',\n controller: 'IndexDataSearchSummaryCtrl'\n },\n querysummary: {\n component: 'searchQuerySummary',\n bindings: {\n search : 'searchQuery',\n }\n }\n },\n })\n .state('indexdata-detail', {\n url: '/app/indexdata-detail/:id',\n data: { pageSubTitle: 'Article Details View' },\n controller: 'IndexDataBibDetailCtrl',\n templateUrl: '/app/static/partials/bib-detail-indexdata.html',\n })\n .state('work', {\n url: '/app/work/:bibid?place_hold',\n templateUrl: '/app/static/partials/bib-detail.html',\n controller: 'BibDetailCtrl',\n data: {\n pageSubTitle: 'Details for ',\n },\n resolve: {\n bib: [\"$stateParams\", \"bibService\", function($stateParams, bibService) {\n return bibService.get($stateParams.bibid);\n }],\n holdings: [\"$stateParams\", \"bibService\", function($stateParams, bibService) {\n return bibService.holdings($stateParams.bibid);\n }]\n },\n })\n .state('kb', {\n url: '/app/kb',\n template: '
... *** ...
',\n controller: function(){\n console.log('kb controller in ajs');\n },\n data: { pageSubTitle: 'Knowledgebase Query' }\n })\n .state('course-reserves', {\n url: '/app/course-reserves?course_id',\n templateUrl: '/app/static/partials/coursereserves.html',\n controller: 'CourseReservesCtrl',\n data: {\n pageSubTitle: 'Course Reserves',\n },\n })\n .state('authorities', {\n url: '/app/authorities', \n templateUrl: '/app/static/partials/authorities.html',\n controller: 'AuthoritiesCtrl',\n data: {\n pageSubTitle: 'Authorities Search',\n },\n })\n .state('cart', {\n url: '/app/cart', \n templateUrl: '/app/static/partials/cart-modal.html', // demodalize.\n controller: 'CartCtrl',\n data: {\n pageSubTitle: 'My Cart',\n },\n })\n .state('tag-cloud', {\n url: '/app/tag-cloud',\n templateUrl: '/app/static/partials/tagcloud.html',\n controller: [\"$scope\", \"kohaTagsSvc\", function ($scope, kohaTagsSvc) {\n kohaTagsSvc.cloud().then(function (tags) {\n $scope.tags = tags;\n });\n }],\n data: {\n pageSubTitle: 'Tag Cloud',\n },\n })\n .state('message-detail', {\n url: '/app/message/:msgid?view',\n templateUrl: '/app/static/partials/message-detail.html',\n controller: 'MessageDetailCtrl',\n data: {\n pageSubTitle: 'Message Details',\n },\n resolve: {\n message: [\"messageService\", \"$stateParams\", function(messageService, $stateParams) {\n return messageService.get($stateParams.msgid);\n }],\n view: [\"$stateParams\", function($stateParams) {\n return $stateParams.view;\n }],\n }\n })\n .state('job-detail', {\n url: '/app/job/:id?view',\n templateUrl: '/app/static/partials/job-detail.html',\n controller: 'JobDetailCtrl',\n data: {\n pageSubTitle: 'Job Details',\n },\n resolve: {\n job: [\"jobService\", \"$stateParams\", function(jobService, $stateParams) {\n // TODO: Just get the descriptive_fields of the run and fetch the return_value of the data later. \n // If the run happens to be a report, it can be huge, and we'll want to paginate.\n return jobService.get($stateParams.id);\n }],\n view: [\"$stateParams\", function($stateParams) {\n return $stateParams.view;\n }],\n }\n })\n .state('self-register', {\n url: '/app/self-register',\n templateUrl: '/app/static/partials/self-register.html',\n controller: 'SelfRegisterCtrl',\n })\n .state('batch-manager', {\n url: '/app/batchManager',\n templateUrl: '/app/static/partials/productUpload.html',\n controller: 'AddProductCtrl',\n pageSubTitle: 'Batch Manager',\n resolve: {\n resolvedUser: [\"userService\", function(userService) {\n return userService.whenAuthenticatedUserDetails({redirectOnFail: '/'});\n }],\n },\n })\n .state('checkout-kiosk', {\n url: '/app/checkout-kiosk',\n templateUrl: '/app/static/partials/checkout-kiosk.html',\n controller: 'CheckoutKioskCtrl',\n data: {\n pageSubTitle: 'Self Checkout',\n restrict: 'KioskSwitch'\n },\n })\n .state('lostpass', {\n url: '/app/lostpass?token',\n templateUrl: '/app/static/partials/lostpass.html',\n controller: 'LostPassCtrl',\n })\n .state('eresource', {\n url: '/app/eresource',\n templateUrl: '/app/static/partials/eresource/index.html',\n pageSubTitle: 'Electronic Resources',\n controller: 'EResourceCtrl',\n })\n .state('eresource.search', {\n url: '/search?query&meta',\n templateUrl: '/app/static/partials/eresource/search.html',\n pageSubTitle: 'Electronic Resources',\n controller: 'EResourceSearchCtrl',\n })\n .state('eresource.search-results', {\n url: '/search-results?query&meta',\n templateUrl: '/app/static/partials/eresource/search-results.html',\n pageSubTitle: 'Electronic Resources',\n controller: 'EResourceSearchResultsCtrl',\n })\n .state('eresource.journals', {\n url: '/journals?query&meta',\n templateUrl: '/app/static/partials/eresource/journals.html',\n pageSubTitle: 'Electronic Resources',\n controller: 'EResourceJournalsCtrl',\n })\n .state('eresource.collections', {\n url: '/collections?query&meta',\n templateUrl: '/app/static/partials/eresource/collections.html',\n pageSubTitle: 'Electronic Resources',\n controller: 'EResourceCollectionsCtrl',\n })\n .state('eresource.collection-entries', {\n url: '/collection-entries?collection&provider&count',\n templateUrl: '/app/static/partials/eresource/search-results-ce.html',\n pageSubTitle: 'Electronic Resources',\n controller: 'EResourceCollectionEntriesCtrl',\n })\n \n // User login\n // Note that child state URLs are RELATIVE by default\n // (this was not obvious to me!)\n\n .state('me', {\n url: '/app/me',\n templateUrl: '/app/static/partials/user/index.html',\n controller: 'UserBaseCtrl as dashboard',\n data: {\n pageSubTitle: 'My Account',\n requiresAuth: true,\n },\n resolve: {\n\n resolvedUser: [\"userService\", \"configService\", function(userService, configService) {\n if(!userService.loggedin && configService.external_auth.saml && !configService.external_auth.saml.iframe){\n window.location.assign('/api/saml/login');\n return {};\n }\n return userService.whenAuthenticatedUserDetails({redirectOnFail: '/'});\n }],\n },\n })\n .state('me.test', {\n url: '/test',\n template: 'Child test with {{user}}',\n })\n .state('me.dashboard', {\n url: '/dashboard',\n templateUrl: '/app/static/partials/user/dashboard.html',\n data: {\n pageSubTitle: 'My Account',\n },\n })\n .state('me.issues', {\n url: '/checkouts',\n templateUrl: '/app/static/partials/user/issues.html',\n controller: 'UserIssuesCtrl',\n data: {\n pageSubTitle: 'My Checkouts',\n },\n })\n .state('me.issue-history', {\n url: '/checkout-history',\n templateUrl: '/app/static/partials/user/issue-history.html',\n controller: 'UserHistoryCtrl',\n data: {\n pageSubTitle: 'My Borrowing History',\n },\n })\n .state('me.holds', {\n url: '/holds',\n templateUrl: '/app/static/partials/user/holds.html',\n controller: 'UserHoldsCtrl',\n data: {\n pageSubTitle: 'My Holds',\n },\n })\n .state('me.hold-history', {\n url: '/hold-history',\n templateUrl: '/app/static/partials/user/hold-history.html',\n controller: 'UserHoldHistoryCtrl',\n data: {\n pageSubTitle: 'My Holds History',\n },\n })\n .state('me.fines', {\n url: '/fines',\n templateUrl: '/app/static/partials/user/fines.html',\n controller: 'UserFinesCtrl',\n data: {\n pageSubTitle: 'My Fines',\n },\n })\n .state('me.callslips', {\n url: '/callslips',\n templateUrl: '/app/static/partials/user/callslips.html',\n controller: 'UserCallslipsCtrl',\n data: {\n pageSubTitle: 'My Requests'\n },\n })\n .state('me.details', {\n url: '/details',\n templateUrl: '/app/static/partials/user/details.html',\n controller: 'UserUpdateCtrl',\n data: {\n pageSubTitle: 'My Personal Details',\n },\n })\n .state('me.lists', {\n url: '/lists',\n templateUrl: '/app/static/partials/user/lists.html',\n controller: 'UserListsCtrl',\n data: {\n pageSubTitle: 'My Shelves',\n },\n resolve: {\n resolvedLists: [\"kohaListsSvc\", \"resolvedUser\", function(kohaListsSvc, resolvedUser) {\n return kohaListsSvc.sync();\n }],\n },\n })\n .state('me.tags', {\n url: '/tags',\n templateUrl: '/app/static/partials/user/tags.html',\n controller: 'UserTagsCtrl',\n data: {\n pageSubTitle: 'My Tags',\n },\n })\n .state('me.proxy-rel', {\n url: '/proxy-relations',\n templateUrl: '/app/static/partials/user/proxy-rel.html',\n // controller: 'UserProxyRelCtrl',\n data: {\n pageSubTitle: 'My Borrowing Relations',\n },\n })\n .state('me.patron-group', {\n url: '/patron-group',\n templateUrl: '/app/static/partials/user/patron-group.html',\n controller: 'UserPatronGroupCtrl',\n data: {\n pageSubTitle: 'My Patron Group',\n },\n })\n .state('me.suggestions', {\n url: '/suggestions',\n templateUrl: '/app/static/partials/user/suggestions.html',\n controller: 'UserSuggestionsCtrl',\n data: {\n pageSubTitle: 'My Purchase Suggestions',\n },\n resolve: {\n resolvedSuggestions: [\"kohaSuggestSvc\", \"resolvedUser\", function(kohaSuggestSvc, resolvedUser) {\n return kohaSuggestSvc.mine();\n }],\n },\n })\n .state('me.illrequests', {\n url: '/illrequests',\n templateUrl: '/app/static/partials/user/illrequests.html',\n controller: 'UserILLRequestsCtrl',\n data: {\n pageSubTitle: 'My Interlibrary Loan Requests',\n },\n resolve: {\n resolvedIllRequests: [\"kohaILLRequestSvc\", \"resolvedUser\", function(kohaILLRequestSvc, resolvedUser) {\n return kohaILLRequestSvc.mine();\n }],\n },\n })\n .state('me.messages', {\n url: '/messages',\n templateUrl: '/app/static/partials/user/messages.html',\n controller: 'UserMessagesCtrl',\n data: {\n pageSubTitle: 'My Messages',\n },\n resolve: {\n resolvedMessages: [\"messageService\", \"resolvedUser\", function(messageService, resolvedUser) {\n return messageService.getList();\n }]\n },\n })\n .state('me.message-prefs', {\n url: '/message-prefs',\n templateUrl: '/app/static/partials/user/message-prefs.html',\n controller: 'UserMessagePrefsCtrl',\n data: {\n pageSubTitle: 'My Messaging Preferences',\n },\n resolve: {\n resolvedMsgPrefs: [\"messageService\", \"resolvedUser\", function(messageService, resolvedUser) {\n return messageService.getPrefs();\n }]\n },\n })\n .state('me.prefs', {\n url: '/prefs',\n templateUrl: '/app/static/partials/user/prefs.html',\n controller: 'UserPrefsCtrl',\n data: {\n pageSubTitle: 'My User Preferences',\n },\n })\n\n .state('me.jobs', {\n url: '/jobs',\n templateUrl: '/app/static/partials/user/jobs.html',\n controller: 'UserJobsCtrl',\n data: {\n pageSubTitle: 'My Jobs',\n },\n resolve: {\n resolvedJobs: [\"jobService\", \"resolvedUser\", function(jobService, resolvedUser) {\n return jobService.getList();\n }]\n },\n })\n\n .state('me.acqlists', {\n url: '/acqlists', \n templateUrl: '/app/static/partials/user/acqlists/index.html',\n controller: 'UserAcqListsCtrl',\n data: {\n pageSubTitle: 'My Acquisition Lists',\n },\n resolve: {\n resolvedAcqLists: [\"resolvedUser\", \"acqListsModel\", function(resolvedUser, acqListsModel) {\n return acqListsModel.forUser({user: resolvedUser.id}).$promise;\n }]\n },\n })\n\n .state('me.acqlists_switch', {\n url: '/acqlists_switch',\n template: '',\n controller: 'UserAcqListsButtonCtrl',\n resolve: {\n resolvedAcqLists: [\"resolvedUser\", \"acqListsModel\", function(resolvedUser, acqListsModel) {\n return acqListsModel.forUser({user: resolvedUser.id}).$promise;\n }]\n },\n })\n\n .state('me.acqlists-details', {\n url: '/acqlists/:id', \n templateUrl: '/app/static/partials/user/acqlists/details.html',\n controller: 'UserAcqListDetailsCtrl',\n data: {\n pageSubTitle: 'Acquisition List Details',\n },\n resolve: {\n resolvedAcqList: [\"resolvedUser\", \"acqListsModel\", \"$stateParams\", function(resolvedUser, acqListsModel, $stateParams) {\n return acqListsModel.details({id:$stateParams.id}).$promise;\n }],\n resolvedAcqListEntries: [\"resolvedUser\", \"acqListsModel\", \"$stateParams\", \"alertService\", \"$q\", function(resolvedUser, acqListsModel, $stateParams, alertService, $q) {\n return acqListsModel.entries({id:$stateParams.id}).$promise.then(function(data) {\n return data;\n }, function(err) {\n alertService.add({msg: err, type: \"error\"});\n return $q.reject(err);\n });\n }]\n },\n })\n .state('me.acqsubs', {\n url: '/acqsubs', \n templateUrl: '/app/static/partials/user/acqlists/subscriptions.html',\n controller: 'UserAcqSubsCtrl',\n data: {\n pageSubTitle: 'My Subscriptions',\n },\n resolve: {\n resolvedOrders: [\"resolvedUser\", \"acqListsModel\", function(resolvedUser, acqListsModel) {\n return acqListsModel.branchOrders({branch_code: resolvedUser.branchcode}).$promise;\n }]\n },\n })\n .state('me.social', {\n url: '/social', \n templateUrl: '/app/static/partials/user/social.html',\n controller: 'UserSocialCtrl',\n data: {\n pageSubTitle: 'Social Login',\n },\n resolve: {\n socialMediaAccounts: [\"kwApi\", \"userService\", function(kwApi, userService) {\n return userService.whenGetUserId().then(function(id) {\n console.log(\"Resolving\");\n return kwApi.Patron.getSocialMediaAccounts({id: id}).$promise;\n });\n }],\n },\n })\n .state('me.bind', {\n url: '/bind/:type?code',\n templateUrl: '/app/static/partials/user/bind.html',\n controller: 'UserSocialBindCtrl',\n data: {\n pageSubTitle: 'Social Login',\n },\n })\n .state('login-social', {\n url: '/app/login-social/:type?code',\n templateUrl: '/app/static/partials/login-social.html',\n controller: 'UserSocialLoginCtrl',\n data: {\n pageSubTitle: 'Social Login',\n },\n })\n\n .state('403', {\n url: '/app/error/403',\n templateUrl: '/app/static/partials/errors/403.html',\n controller: 'Error403Ctrl',\n data: {\n pageSubTitle: '403 Not Authorized',\n },\n })\n .state('404', {\n url: '/app/error/404',\n templateUrl: '/app/static/partials/errors/404.html',\n controller: 'Error404Ctrl',\n data: {\n pageSubTitle: '404 Not Found',\n },\n })\n ;\n\n $urlRouterProvider.otherwise('/app/error/404');\n\n $locationProvider.html5Mode(true);\n\n// $httpProvider.defaults.headers.post['Content-Type'] = \"application/x-www-form-urlencoded; charset=UTF-8\";\n\n var is_static_file = /^\\/app\\/static\\/\\S+\\.(html|js|json:?)$/;\n\n $httpProvider.interceptors.push([\"$q\", \"VERSION\", \"$rootScope\", function($q, VERSION, $rootScope){\n return {\n request: function(config){\n if(config.method == 'GET' && is_static_file.test(config.url) && !KOHA.config.jsDebug){\n // If it's already in cache, then assume it was put there on purpose.\n if(!(config.cache && config.cache.get(config.url))){\n config.url = config.url + \"?v=\" + VERSION;\n }\n }\n return config || $q.when(config);\n },\n response: function(response) {\n if (!response.config.cache) {\n var fh = response.headers('X-Fixtures-Hash');\n if (fh && (fh !== KOHA._fixtures_hash)) {\n //console.log(\"Old fixtures hash: \" + KOHA._fixtures_hash);\n //console.log(\"New fixtures hash (response): \" + fh);\n //console.dir(response.config);\n if (KOHA._fixtures_hash && (KOHA._fixtures_hash !== '{}')) {\n $rootScope.$emit('fixturesExpired');\n }\n KOHA._fixtures_hash = fh;\n }\n }\n return response;\n }\n };\n }]);\n\n\n /*kohaHttpSessInterceptorProvider.authenticated(function(injector){\n\n// console.log(injector.get('userService').whenAuthenticatedUser);\n return injector.get('userService').whenAuthenticatedUser();\n\n }).reauthenticated(function(injector){\n return injector.get('userService').whenAuthenticatedUser();\n }).autoReauthenticate(true).authRequired(function(config){\n\n// console.log(config);\n\n // Note: We can't add properties to the $http config object when we use $resource, but we can when using $http directly.\n\n if(config.authRequired) return true;\n\n var req = [ /app\\/staff\\//, ];\n for (var i = 0; i < req.length; i++) {\n if(req[i].test(config.url)) return true;\n }\n return false;\n });*/\n $httpProvider.interceptors.push('kohaHttpSessInterceptor');\n\n $ocLazyLoadProvider.config({\n // debug: true\n });\n\n\n $provide.decorator('$uibModal', [\"$delegate\", \"configService\", function $uibModalDecorator($delegate, configService){\n var origOpen = $delegate.open;\n $delegate.open = function(options) {\n var rv = origOpen(options);\n rv.rendered.then(function(){\n configService.runUserJs();\n });\n return rv;\n };\n return $delegate;\n }]);\n\n\n\n // Defaults for ui-bootstrap components:\n uibPaginationConfig.itemsPerPage = KOHA.config.OPACnumSearchResults;\n for( var k in KOHA.config.pager ){\n uibPaginationConfig[k] = KOHA.config.pager[k];\n }\n uibDatepickerPopupConfig.showWeeks = false;\n\n // UPGRADE -- animations conflict with bootstrap 5 css . switch to ngbModal\n $uibModalProvider.options.animation = false;\n\n // FIXME - angular sucks at digesting trees\n $rootScopeProvider.digestTtl(15);\n\n}]).run(\n [\"$rootScope\", \"$state\", \"$location\", \"$timeout\", \"$http\", \"$window\", \"userService\", \"$trace\", \"configService\", \"kohaListsSvc\", \"alertService\", \"cartService\", \"staffRedirectService\", \"$transitions\", \"marcBibSpec\", \"loading\", \"$q\", function($rootScope, $state, $location, $timeout, $http, $window, userService, $trace,\n configService, kohaListsSvc, alertService, cartService, staffRedirectService,\n $transitions, marcBibSpec, loading, $q){\n\n // ui-router transition trace.\n // TODO: migrate use of $stateChange* to transition hooks, remove stateEvents.js.\n // $trace.enable('TRANSITION');\n\n $transitions.onStart({}, function(trans){\n\n var jj = [\n marcBibSpec.loaded\n ];\n return $q.all( jj );\n\n });\n\n // Angular has loaded, we can safely reset logging\n KOHA.logIntercept(false);\n\n try {\n dayjs.extend(dayjs_plugin_utc); // eslint-disable-line no-undef\n } catch (e) {\n console.warn(e);\n }\n\n// $rootScope.$on(\"$stateChangeError\", console.log.bind(console));\n $rootScope.$on(\"$stateChangeError\",\n function (event, toState, toParams, fromState, fromParams, error) {\n console.warn(error);\n if (typeof(error) === 'object') {\n if(!error.data) return error;\n if (error.data.substr(0,3) == '404') {\n event.preventDefault();\n $state.go('404');\n }\n else if (error.data.substr(0,3) == '403') {\n event.preventDefault();\n $state.go('403');\n }\n }\n else if ( error.substr(0,3) == '404') {\n event.preventDefault();\n $state.go('404');\n }\n else if ( error.substr(0,3) == '403') {\n event.preventDefault();\n $state.go('403');\n }\n });\n\n var alertMsg = $location.search().alert_error;\n if (alertMsg) {\n alertService.add({msg: alertMsg, type: \"error\"});\n $location.search('alert_error',null);\n }\n \n var ticket = $location.search().proxy_ticket;\n if (ticket) {\n $http.defaults.headers.common['X-Proxy-Ticket'] = ticket;\n $location.search('proxy_ticket', null);\n }\n else if (ticket = $location.search().auth_ticket) { // eslint-disable-line no-cond-assign\n $http.defaults.headers.common['X-Auth-Ticket'] = ticket;\n $location.search('auth_ticket', null);\n }\n\n $rootScope.$on('loggedout', function(){\n if(configService.authRequired) $rootScope.$broadcast('loginRequired');\n });\n\n $rootScope.$on('loggedin', function(){\n kohaListsSvc.sync();\n });\n $rootScope.$on('clearUserData', function(){\n // clear all user data from services.\n kohaListsSvc.clear_private();\n cartService.removeAll();\n if ($location.path().match(/\\/me\\//)) $location.url('/');\n\n });\n $rootScope.$on('fixturesExpired', function() {\n configService.reloadFixtures();\n });\n\n $rootScope.pageTitle = configService.pageTitle;\n $rootScope.pageSubTitle = 'Home'; // Updated on routeChangeSuccess.\n\n $(\"body\").on('click', \"a\", function(el){\n if(/^(http:\\/\\/|https:\\/\\/|\\/\\/)/.test($(this).attr('href'))){\n if (!$(this).attr('target')) {\n $(this).attr('target','_blank');\n }\n }\n });\n\n // Run userJS on setup:\n if(configService.userJS.load && typeof configService.userJS.load === 'function'){\n if (window._mastheadReady){\n configService.userJS.load();\n } else {\n var dereg = $rootScope.$on('MastheadReady', function(){\n configService.userJS.load();\n dereg();\n });\n // window.addEventListener( 'MastheadReady', configService.userJS.load);\n }\n }\n\n if(configService.favicon){\n $(document).ready(function(){\n $('').appendTo('head');\n });\n }\n\n $rootScope.$on(\"$locationChangeStart\", function(e, next, cur){\n // console.log(\"Location change start\");\n // console.log(next);\n // console.log(cur);\n\n // When the state change is suppressed, $location will try to redirect back (so helpful)\n if (staffRedirectService.suppressLocationChange(cur,next)) {\n e.preventDefault();\n }\n\n else if(next.$$route && next.$$route.staffRoute){\n if(userService.loggedin && !userService.is_staff){\n e.preventDefault();\n }\n }\n });\n\n var sessExpDebounce;\n $rootScope.$on('sessionExpired', function(){\n if(!sessExpDebounce){\n sessExpDebounce = $timeout(function(){ sessExpDebounce = null; },100);\n alertService.add({msg: \"You have been logged out.\" });\n }\n userService.whenGetUserId(function(id){\n if(id > 0){\n userService.clear();\n if($location.path().match(/\\/me\\//)) $location.url('/');\n }\n });\n });\n\n $rootScope.$on('$stateChangeStart', function(e, toState, toParams, fromState, fromParams) {\n // console.log(\"State Change Start\");\n // console.dir(toState);\n // console.dir(toParams);\n // console.dir(fromState);\n // console.dir(fromParams);\n if (toState.data && toState.data.restrict === 'KioskSwitch') {\n if (!configService.CheckoutKiosk) {\n e.preventDefault();\n $state.go('home');\n }\n else {\n $http.head('/api/kiosk/-1').catch( function () { e.preventDefault(); $state.go('home'); });\n }\n }\n if( ! userService.hasValidSession() ){\n userService.clear();\n }\n if (staffRedirectService.suppressStateChange(fromState, fromParams, toState, toParams)) {\n e.preventDefault();\n }\n else if (configService.showSpinnerOnStateChange)\n loading.add('state');\n\n });\n\n $rootScope.$on('$stateChangeSuccess', function(e, toState, toParams, fromState, fromParams) {\n // FIXME - this is not an ideal solution\n // see also https://github.com/angular-ui/ui-router/issues/92\n // see also http://plnkr.co/edit/DJH6mQUCbTFfSbdCBYUo?p=preview \n $state.previous = fromState;\n $state.previousParams = fromParams;\n $rootScope.currentState = toState;\n\n// console.log('STATE CHANGE: ');\n// console.log($state.previous);\n// console.log(toState);\n// console.dir(angular.copy(toParams));\n\n // Run userJS on route change:\n if (configService.userJS.page && typeof configService.userJS.page === 'function'){\n $timeout(configService.userJS.page,1); // ensure dom is ready.\n }\n let pageSubTitle = (toState.data||{}).pageSubTitle;\n document.title = $rootScope.pageTitle + ( pageSubTitle ? ' | ' + pageSubTitle : \"\" );\n\n $rootScope.staffRoute = toState.name.match(/staff/) ? true : false;\n\n if($window.ga) $window.ga('send', 'pageview', { page: $location.path() }); //google-analytics\n\n // FIXME - this smells\n if (toParams.query == '*:*') {\n if (toParams.sort == 'popularity desc') {\n $rootScope.viewId = 'most-popular';\n }\n else if (toParams.fq && !angular.isArray(toParams.fq) && toParams.fq.match(/catdate:\\[NOW-\\d+DAYS TO \\*\\]/)) {\n $rootScope.viewId = 'new-titles';\n }\n }\n if (configService.showSpinnerOnStateChange)\n loading.resolve('state');\n\n });\n\n\n}]);\n\n// }, (e) => console.error(e) ); // KOHA.status.configured.then();\n\n})();\n"],"x_google_ignoreList":[]}