{"version":3,"file":"main.js","mappings":"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E,IAAI;EAChBC,IAAI,EAAE,MAAM;EACZ3P,OAAO,EAAE;IACP4P,gBAAgB,EAAEJ,MAAM,GAAG,iBAAiB;IAC5CK,KAAK,EAAEN,sDAAc,CAACO,KAAK;IAC3BC,cAAc,EAAER,sDAAc,CAACO;GAChC;EACDtL,IAAI,EAAE;IACJF,WAAW,EAAEkL,MAAM;IACnBC,MAAM,EAAEA,MAAM;IACdhL,MAAM,EAAC;;CAEV;AAED;;;;;;;AAOA;;;;;;;;;;;;;;;;ACzC+C;AAC4B;AAE9B;AACY;AAEzD,IAAIjG,kEAAW,CAACkR,UAAU,EAAE;EAC1BM,6DAAc,EAAE;;AAGlBC,yFAAsB,EAAE,CAACC,eAAe,CAACxQ,sDAAS,CAAC,CAChDyQ,KAAK,CAACC,GAAG,IAAIlO,OAAO,CAACjH,GAAG,CAACmV,GAAG,CAAC,CAAC;;;;;;;;;;ACXjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;;;;;;;;;;AC1OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;;;;;;;;;;ACZA;AACA,4CAA4C,mBAAO,CAAC,qEAA0D;AAC9G,kCAAkC,mBAAO,CAAC,8DAAmD;AAC7F;AACA;AACA,iDAAiD,kEAAkE;AACnH;AACA","sources":["./src/app/app-routing.module.ts","./src/app/app.component.ts","./src/app/app.module.ts","./src/app/code/HttpTokenInterceptor.ts","./src/app/code/MyNav.service.ts","./src/app/code/MyService.ts","./src/app/code/PageHelper.ts","./src/app/code/app-init-service.ts","./src/app/code/auth-service.ts","./src/app/code/component/Swipe.module.ts","./src/app/code/component/SwipeDirective.ts","./src/app/code/globalvar-service.ts","./src/app/code/go-service.ts","./src/app/code/my-config.service.ts","./src/app/code/quiz-service.ts","./src/app/code/search-service.ts","./src/app/code/service-base.ts","./src/app/code/share-module.ts","./src/app/code/storage-service.ts","./src/app/feature.service.ts","./src/environments/environment.ts","./src/main.ts","./node_modules/@ionic/core/dist/esm/ lazy ^\\.\\/.*\\.entry\\.js$ include: \\.entry\\.js$ exclude: \\.system\\.entry\\.js$ namespace object","./node_modules/@stencil/core/internal/client/ lazy ^\\.\\/.*\\.entry\\.js.*$ include: \\.entry\\.js$ exclude: \\.system\\.entry\\.js$ namespace object","./src/app/app.component.scss"],"sourcesContent":["import { NgModule } from '@angular/core';\r\nimport { PreloadAllModules, RouterModule, Routes } from '@angular/router';\r\n\r\nconst routes: Routes = [\r\n {\r\n path: 'home',\r\n loadChildren: () => import('./home/home.module').then(m => m.HomePageModule)\r\n },\r\n \r\n {\r\n path: '',\r\n redirectTo: '/home',\r\n pathMatch: 'full'\r\n },\r\n {\r\n path: 'search-result',\r\n loadChildren: () => import('./pages/search/search-result/search-result.module').then( m => m.SearchResultPageModule)\r\n },\r\n {\r\n path: 'search-detail',\r\n loadChildren: () => import('./pages/search/search-detail/search-detail.module').then( m => m.SearchDetailPageModule)\r\n },\r\n {\r\n path: 'about',\r\n loadChildren: () => import('./pages/about/about/About.module').then( m => m.AboutPageModule)\r\n },\r\n {\r\n path: 'search-img',\r\n loadChildren: () => import('./pages/search/search-img/search-img.module').then( m => m.SearchImgPageModule)\r\n },\r\n {\r\n path: 'quiz',\r\n loadChildren: () => import('./pages/quiz/quiz-start/Quiz.module').then( m => m.QuizPageModule)\r\n },\r\n {\r\n path: 'quizfinish',\r\n loadChildren: () => import('./pages/quiz/quiz-finish/Quizfinish.module').then( m => m.QuizfinishPageModule)\r\n },\r\n {\r\n path: 'learningrecordlist',\r\n loadChildren: () => import('./pages/learning-record/learning-record-list/learning-record-list.module').then( m => m.LearningRecordListPageModule)\r\n },\r\n {\r\n path: 'bind',\r\n loadChildren: () => import('./pages/bind/bind.module').then( m => m.BindPageModule)\r\n },\r\n {\r\n path: 'ios-pwa',\r\n loadChildren: () => import('./pages/ios-pwa/ios-pwa.module').then( m => m.IosPwaPageModule)\r\n },\r\n ,\r\n {\r\n path: 'search-camera',\r\n loadChildren: () => import('./pages/search/search-camera/search-camera.module').then( m => m.SearchCameraPageModule)\r\n },\r\n {\r\n path: 'firefox-pwa',\r\n loadChildren: () => import('./pages/firefox-pwa/firefox-pwa.module').then( m => m.FirefoxPwaPageModule)\r\n },\r\n {\r\n path: 'instruction',\r\n loadChildren: () => import('./pages/instruction/Instructionmodule').then( m => m.InstructionPageModule)\r\n }, {\r\n path: 'samsung-pwa',\r\n loadChildren: () => import('./pages/samsung-pwa/samsung-pwa-routing.module').then( m => m.SamsungPwaPageRoutingModule)\r\n },\r\n { path: '**', redirectTo: '/home', pathMatch: 'full' },\r\n\r\n];\r\n\r\n@NgModule({\r\n imports: [\r\n RouterModule.forRoot(routes, { preloadingStrategy: PreloadAllModules })\r\n ],\r\n exports: [RouterModule]\r\n})\r\n\r\nexport class AppRoutingModule { }\r\n","import { Component, HostListener, ViewChild } from '@angular/core';\r\nimport { IonRouterOutlet, LoadingController, MenuController, ModalController, Platform, ToastController } from '@ionic/angular';\r\nimport { GoogleAuth } from '@codetrix-studio/capacitor-google-auth'\r\nimport { PageHelper } from './code/PageHelper';\r\nimport { App } from '@capacitor/app';\r\nimport { MyService } from './code/MyService';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { SplashScreen } from '@capacitor/splash-screen'\r\nimport { PluginListenerHandle } from '@capacitor/core';\r\nimport { AuthService, UserProfile } from './code/auth-service';\r\nimport { ActivatedRoute, NavigationEnd, Router } from '@angular/router';\r\nimport { GoogleTagManagerService } from 'angular-google-tag-manager';\r\nimport { GlobalVarService } from './code/globalvar-service';\r\nimport { SocialAuthService } from '@abacritt/angularx-social-login';\r\nimport { OnDestroy, OnInit } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\n\r\ndeclare var window: any\r\n\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: 'app.component.html',\r\n styleUrls: ['app.component.scss'],\r\n})\r\nexport class AppComponent {\r\n @ViewChild(IonRouterOutlet) routerOutlet: IonRouterOutlet;\r\n\r\n\r\n\r\n\r\n profile: UserProfile;\r\n backButtonPressedOnceToExit: boolean = false;\r\n private appMargin = 0;\r\n private readonly listenerHandlers: PluginListenerHandle[] = [];\r\n isAgreetSmarklook = false;\r\n\r\n constructor(\r\n public modalCtrl: ModalController,\r\n public toastCtrl: ToastController,\r\n private platform: Platform,\r\n private pageHelper: PageHelper,\r\n public menu: MenuController,\r\n public loadingController: LoadingController,\r\n public myService: MyService,\r\n public log: NGXLogger,\r\n public authService: AuthService,\r\n public router: Router,\r\n private globalVarService: GlobalVarService,\r\n private gtmService: GoogleTagManagerService,\r\n\r\n ) {\r\n //make keyboard push content \r\n window.addEventListener('keyboardDidShow', (e) => {\r\n const elementFocused: any = document.querySelector(':focus');\r\n if (elementFocused) {\r\n elementFocused.blur();\r\n elementFocused.focus();\r\n }\r\n });\r\n\r\n\r\n this.router.events.forEach(item => {\r\n if (item instanceof NavigationEnd) {\r\n //this.log.debug(\"Router Page>>>>>>>>>>>>>>>\" + JSON.stringify(item));\r\n const gtmTag = {\r\n event: 'Router Page',\r\n pageName: this.getPageName(item.url),\r\n };\r\n this.gtmService.pushTag(gtmTag);\r\n }\r\n });\r\n this.initializeApp();\r\n }\r\n getPageName(url: string) {\r\n if (url.includes(\"feedback\")) {\r\n return \"意見回饋\";\r\n }\r\n if (url.includes(\"setting\")) {\r\n return \"設定\";\r\n }\r\n if (url.includes(\"logout\")) {\r\n return \"功能選單\";\r\n }\r\n\r\n\r\n return \"找不到url : \" + url;\r\n }\r\n\r\n initializeApp() {\r\n this.log.trace(\"AppComponent initializeApp start\");\r\n this.platform.ready().then(() => {\r\n SplashScreen.show();\r\n\r\n })\r\n }\r\n\r\n\r\n async ngAfterViewInit() {\r\n\r\n //this.gtmService.addGtmToDom();\r\n // if (this.platform.is(\"capacitor\")) {\r\n // var profile = await this.authService.getUserProfile();\r\n // this.gtmService.getDataLayer().push({ UserId: profile.userId });\r\n // SplashScreen.hide();\r\n // } else {\r\n // //為在本機用web除錯的環境,塞入測試id\r\n // this.gtmService.getDataLayer().push({ UserId: 'inTestUser' });\r\n // }\r\n\r\n }\r\n\r\n}\r\n","import { APP_INITIALIZER, NgModule, isDevMode } from '@angular/core';\r\nimport { BrowserModule, HammerModule } from '@angular/platform-browser';\r\nimport { RouteReuseStrategy } from '@angular/router';\r\nimport { IonicModule, IonicRouteStrategy } from '@ionic/angular';\r\nimport { AuthService } from './code/auth-service';\r\nimport { AppComponent } from './app.component';\r\nimport { AppRoutingModule } from './app-routing.module';\r\nimport { AsyncPipe } from '@angular/common';\r\n\r\nimport { PageHelper } from './code/PageHelper';\r\nimport { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';\r\n\r\nimport { AppInitService } from './code/app-init-service';\r\nimport { LoggerModule, NGXLogger } from 'ngx-logger';\r\nimport { GoogleTagManagerModule } from 'angular-google-tag-manager';\r\nimport { MyNavService } from './code/MyNav.service';\r\nimport { IonicStorageModule } from '@ionic/storage-angular';\r\nimport { StorageService } from './code/storage-service';\r\nimport { ShareModule } from './code/share-module';\r\nimport { environment } from 'src/environments/environment';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SwipeModule } from './code/component/Swipe.module';\r\nimport { MyConfigService } from './code/my-config.service';\r\nimport { Drivers } from '@ionic/storage';\r\n//import { FormsModule } from '@angular/forms';\r\nimport { ServiceWorkerModule } from '@angular/service-worker';\r\nimport { GoService } from './code/go-service';\r\nimport { QuizService } from './code/quiz-service';\r\nimport { SearchService } from './code/search-service';\r\nimport { HttpTokenInterceptor } from './code/HttpTokenInterceptor';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { GlobalVarService } from './code/globalvar-service';\r\nimport { NgxEchartsModule } from 'ngx-echarts';\r\nimport {AutocompleteLibModule} from 'angular-ng-autocomplete';\r\nimport { provideAnimationsAsync } from '@angular/platform-browser/animations/async';\r\nimport { CKEditorModule } from '@ckeditor/ckeditor5-angular';\r\nimport { FeatureService } from './feature.service'; \r\nimport {NgxImageCompressService} from 'ngx-image-compress';\r\n@NgModule({\r\n declarations: [AppComponent],\r\n imports: [\r\n AutocompleteLibModule,\r\n BrowserModule,\r\n CKEditorModule,\r\n CommonModule,\r\n IonicModule.forRoot(),\r\n IonicStorageModule.forRoot({ name: '_ehs_db', driverOrder: [Drivers.IndexedDB, Drivers.LocalStorage] }),\r\n LoggerModule.forRoot(environment.logging),\r\n AppRoutingModule,\r\n HttpClientModule,\r\n SwipeModule,\r\n ShareModule,\r\n HammerModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n GoogleTagManagerModule.forRoot({\r\n id: \"GTM-MN539MC\"\r\n }),\r\n ServiceWorkerModule.register('ngsw-worker.js', {\r\n enabled: !isDevMode(),\r\n // Register the ServiceWorker as soon as the application is stable\r\n // or after 30 seconds (whichever comes first).\r\n registrationStrategy: 'registerWhenStable:30000'\r\n }),\r\n NgxEchartsModule.forRoot({\r\n echarts: () => import('echarts'),\r\n }),\r\n ],\r\n providers: [{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy },\r\n {provide: 'googleTagManagerId', useValue: \"GTM-MN539MC\"},\r\n AsyncPipe, AuthService, PageHelper, StorageService,GoService,QuizService,SearchService,\r\n MyNavService, AppInitService, MyConfigService,GlobalVarService,\r\n { provide: RouteReuseStrategy, useClass: IonicRouteStrategy },\r\n { provide: HTTP_INTERCEPTORS, useClass: HttpTokenInterceptor, multi: true },\r\n {\r\n provide: APP_INITIALIZER,\r\n useFactory: (appInitService: AppInitService, log: NGXLogger) => function () {\r\n return appInitService.load();\r\n },\r\n deps: [AppInitService, NGXLogger, AuthService,GlobalVarService],\r\n multi: true\r\n },\r\n provideAnimationsAsync(),\r\n FeatureService,\r\n NgxImageCompressService,\r\n ],\r\n \r\n bootstrap: [AppComponent],\r\n})\r\nexport class AppModule { }\r\n","import { HttpErrorResponse, HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { ToastController } from '@ionic/angular';\r\nimport { BehaviorSubject, from, Observable, throwError,firstValueFrom } from 'rxjs';\r\nimport { catchError, filter, switchMap, take, takeLast, tap,map } from 'rxjs/operators';\r\nimport { GoService } from './go-service';\r\nimport { AuthService, UserProfile } from './auth-service';\r\nimport { ResultVO } from './vo/CommonVO';\r\n\r\n\r\n// TODO: user jwt token service\r\n@Injectable()\r\nexport class HttpTokenInterceptor implements HttpInterceptor {\r\n\r\n private isRefreshing: boolean = false;\r\n\r\n private refreshTokenSubject: BehaviorSubject = new BehaviorSubject(null);\r\n\r\n private duplicateLoginSubject: BehaviorSubject = new BehaviorSubject(null);\r\n\r\n constructor(\r\n private toastCtrl: ToastController,\r\n private goService: GoService,\r\n private authService: AuthService\r\n\r\n ) { }\r\n\r\n\r\n intercept(request: HttpRequest, next: HttpHandler): Observable> {\r\n console.log(\"................HttpInterceptor...............\");\r\n\r\n return from(this.authService.getUserProfile()).pipe(\r\n switchMap(profile => {\r\n console.log(\"................switchMap...............\" + request);\r\n if (profile && profile.accessToken) {\r\n console.log(\"................profile...............\" + profile.accessToken);\r\n if (request) {\r\n request = this.addHeaderToken(request, profile.accessToken);\r\n }\r\n\r\n return next.handle(request).pipe(\r\n catchError(error => {\r\n \r\n if (error instanceof HttpErrorResponse && error.status === 401) {\r\n console.log(\">>>>>>發生401進行後續處理,執行refresh token 交換\")\r\n return this.error401Handler(profile.userId, request, next);\r\n }else{\r\n alert(\"發生錯誤:\" + JSON.stringify(error));\r\n }\r\n\r\n })\r\n )\r\n } else {\r\n return next.handle(request);\r\n }\r\n // return next.handle(request).pipe(\r\n // catchError(error => {\r\n // alert(\"發生錯誤:\" + JSON.stringify(error));\r\n // if (error instanceof HttpErrorResponse && error.status === 401) {\r\n // return this.error401Handler(request, next);\r\n // }\r\n // // if (error instanceof HttpErrorResponse && error.status === 409) {\r\n // // return from(this.error409Handler(request, next));\r\n // // }\r\n\r\n // throwError(() => error);\r\n // })\r\n // );\r\n }),\r\n catchError(error => {\r\n console.log(\"jwt is null\" + error);\r\n return next.handle(request);\r\n }))\r\n }\r\n\r\n // intercept(req: HttpRequest, next: HttpHandler): Observable> {\r\n // return from(this.interceptHandler(req, next));\r\n // }\r\n\r\n // async interceptHandler(req: HttpRequest, next: HttpHandler) {\r\n // let request = req;\r\n\r\n // const isLoggedin = await this.authService.isLogin$.pipe(\r\n // take(1)\r\n // ).toPromise();\r\n\r\n // if (isLoggedin === true) {\r\n // const token = await this.authService.jwtToken.pipe(\r\n // take(1)\r\n // ).toPromise();\r\n // request = this.addHeaderToken(request, token, this.authService.sessionId);\r\n // }\r\n\r\n // return next.handle(request)\r\n // .pipe(\r\n // catchError((error) => {\r\n // console.log(this.authService.duplicatedLogin);\r\n // console.error(error);\r\n\r\n // if (error instanceof HttpErrorResponse && error.status === 401) {\r\n // return this.error401Handler(request, next);\r\n // }\r\n // if (error instanceof HttpErrorResponse && error.status === 409) {\r\n // return from(this.error409Handler(request, next));\r\n // }\r\n\r\n // return throwError(error);\r\n // }),\r\n // ).toPromise();\r\n // }\r\n\r\n private addHeaderToken(request: HttpRequest, token: string): HttpRequest {\r\n return request.clone({\r\n setHeaders: {\r\n Authorization: `Bearer ${token}`\r\n },\r\n });\r\n }\r\n\r\n\r\n /**\r\n * Token 過期\r\n */\r\n private error401Handler(userId: string, request: HttpRequest, next: HttpHandler): Observable> {\r\n if (this.isRefreshing === true) {\r\n console.log('已有請求正在處理 token 更新');\r\n return this.refreshTokenSubject.pipe(\r\n filter((token) => token !== null),\r\n takeLast(1),\r\n switchMap(() => {\r\n return next.handle(request);\r\n })\r\n );\r\n }\r\n else {\r\n console.log(\"<<<<<<<{\r\n console.log(f);\r\n let profile = await firstValueFrom(from(this.authService.getUserProfile()));\r\n profile.accessToken = f[\"data\"][\"accessToken\"];\r\n profile.refreshToken =f[\"data\"][\"refreshToken\"];\r\n await from(this.authService.setUserPrfolie(profile));\r\n }),\r\n map(dd=>({data:dd.data,req:request})),\r\n switchMap((rr) => {\r\n console.log(\"<<<<<<<>>>>>>>>>>>>>>>>>>>>debbug:\"+JSON.stringify(rr));\r\n let accessToken = rr[\"data\"][\"accessToken\"];\r\n let refreshToken = rr[\"data\"][\"refreshToken\"];\r\n let req = rr[\"req\"];\r\n console.log(\">>>>>>>>>>>>>>>>>>>>>交換後再送出\" + accessToken + \":\" + req);\r\n var request = this.addHeaderToken(req, accessToken);\r\n return next.handle(request);\r\n })\r\n\r\n // switchMap(rr=> {\r\n\r\n // console.log(\">>>>>>>>>>>>>>>>>>>>>aaaa\"+JSON.stringify(rr));\r\n\r\n // return(from(this.authService.getUserProfile())).pipe(\r\n // switchMap((p)=>{\r\n // p.accessToken = rr.data[\"accessToken\"];\r\n // p.refreshToken = rr.data[\"refreshToken\"];\r\n\r\n // //TODO儲存至storge\r\n // console.log(\">>>>>>>>>>>>>>>>>>>>>交換後再送出\"+rr.data[\"accessToken\"]+\":\"+request);\r\n // var request = this.addHeaderToken(request,rr.data[\"accessToken\"]);\r\n // return next.handle(request);\r\n // } )\r\n // )\r\n // // var profile = await this.authService.getUserProfile(); \r\n // })\r\n );\r\n\r\n }\r\n }\r\n\r\n /**\r\n * Token 過期\r\n */\r\n // private error401Handler(request: HttpRequest, next: HttpHandler) {\r\n // if (this.isRefreshing === true) {\r\n // console.log('已有請求正在處理 token 更新');\r\n // return this.refreshTokenSubject.pipe(\r\n // filter((token) => token !== null),\r\n // takeLast(1),\r\n // switchMap(() => {\r\n // return next.handle(request);\r\n // })\r\n // );\r\n // } else {\r\n // this.isRefreshing = true;\r\n // this.refreshTokenSubject.next(null);\r\n // console.log('開始處理 token 更新');\r\n\r\n // return this.authService.refreshJwtToken().pipe(\r\n // tap(() => {\r\n // console.log('run refreshToken action....');\r\n // }),\r\n // catchError(async (error) => {\r\n // this.isRefreshing = false;\r\n // this.duplicateLoginSubject.error('RefreshToken is invalid');\r\n\r\n // if (error instanceof HttpErrorResponse && error.status === 403 && error.statusText == 'RefreshToken is invalid') {\r\n // // authService 移除登入資訊\r\n // await this.authService.userLogOut();\r\n\r\n // const toast = await this.toastCtrl.create({\r\n // color: 'danger',\r\n // message: '由於閒置過久,請重新登入',\r\n // duration: 3000,\r\n // });\r\n // toast.present();\r\n // }\r\n // // 開啟 login modal\r\n // await this.appService.openLoginModal();\r\n // } else {\r\n // console.log(error.message);\r\n // return next.handle(request);\r\n // }\r\n // }),\r\n // switchMap((token: JWToken) => {\r\n // this.isRefreshing = false;\r\n // console.log('>>>>>> 執行 refresh 交換 token');\r\n // this.refreshTokenSubject.next(token.jwt);\r\n // return next.handle(this.addHeaderToken(request, token.jwt, this.authService.sessionId));\r\n // }),\r\n // );\r\n // }\r\n // }\r\n\r\n // /**\r\n // * 帳號重複登入\r\n // */\r\n // private async error409Handler(request: HttpRequest, next: HttpHandler) {\r\n // // console.log(request);\r\n // console.log(this.authService.duplicatedLogin);\r\n // if (this.authService.duplicatedLogin === false) {\r\n // await this.authService.setDuplicatedLogin(true);\r\n // this.duplicateLoginSubject.next(true);\r\n // this.authService.purgeAuth();\r\n // const toast = await this.toastCtrl.create({\r\n // color: 'danger',\r\n // message: '此帳號已於其他裝置登入,若要繼續請重新登入',\r\n // duration: 3000,\r\n // });\r\n\r\n // toast.present();\r\n\r\n // // authService 移除登入資訊\r\n // // this.authService.userLogOut();\r\n\r\n // // 開啟 login modal\r\n // const login = await this.appService.openLoginModal();\r\n // console.log(login);\r\n\r\n // return next.handle(request).toPromise();\r\n // } else {\r\n // console.log('>>>>>>> 進行重覆丟棄');\r\n // return this.duplicateLoginSubject.pipe(\r\n // filter((isDupLogin) => isDupLogin === true),\r\n // takeLast(1),\r\n // switchMap((data) => {\r\n // this.authService.setDuplicatedLogin(false);\r\n // return next.handle(request).toPromise();\r\n // }),\r\n // ).toPromise();\r\n // }\r\n // }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MyNavService {\r\n myParam: any;\r\n myParam2: any;\r\n constructor() { }\r\n}\r\n","import { Injectable, Inject } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { ServiceBase } from './service-base';\r\nimport { ResultVO } from './vo/CommonVO';\r\nimport { environment } from 'src/environments/environment';\r\n\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class MyService extends ServiceBase {\r\n\r\n apiu: string = \"\";\r\n apiEndpoint: string = \"\";\r\n apiPrefix: string = \"\";\r\n\r\n constructor(public http: HttpClient) { \r\n super(http); \r\n this.apiEndpoint = environment.urls.apiEndpoint;\r\n this.apiPrefix = environment.urls.prefix;\r\n this.apiu = this.apiEndpoint+\"/\"+ this.apiPrefix;\r\n }\r\n // apiurl: string = GlobalVar.agapiUrl + \"api/ag/query/marketsByType?type=\";\r\n\r\n /**\r\n * 執行Http Get Request\r\n * @param url 呼叫的網址加?key=value\r\n */\r\n DoGet(url): Observable {\r\n var u = this.apiEndpoint + \"/\" + this.apiPrefix + url;\r\n console.log(\"MyService.DoGet \" + u);\r\n return super.ComonGet(u);\r\n }\r\n\r\n /**\r\n * 執行Http Get Request\r\n * @param url 呼叫的網址加\r\n * @param jsonObject\r\n */\r\n DoGetParams(url, jsonObject): Observable {\r\n var u = this.apiEndpoint + \"/\" + this.apiPrefix + url;\r\n\r\n let pams = \"?\";\r\n\r\n pams += this.generateParams(jsonObject);\r\n \r\n console.log(\"MyService.DoGet \" + u+pams);\r\n \r\n if (pams.length > 1) {\r\n return super.ComonGet(u + pams);\r\n //return this.DoGet(u + pams);\r\n } else {\r\n return super.ComonGet(u);\r\n }\r\n }\r\n\r\n /**\r\n *\r\n * @param url 呼叫的網址\r\n * @param dataJsonFormat data in json format\r\n */\r\n DoPost(url, dataJsonFormat): Observable {\r\n var u = this.apiEndpoint + \"/\" + this.apiPrefix + url;\r\n console.log(\"DoPost \" + u + \"values:\" + JSON.stringify(dataJsonFormat));\r\n return super.CommonPost(u, dataJsonFormat);\r\n }\r\n /**\r\n *\r\n * @param url 呼叫的網址\r\n * @param dataJsonFormat data in json format\r\n */\r\n DoPostRaw(url, data): Observable {\r\n var u = this.apiEndpoint + \"/\" + this.apiPrefix + url;\r\n \r\n return super.CommonPostRaw(u, data);\r\n }\r\n\r\n /**\r\n * 將json物件組成 url後台的參數型式 key1=xxx&key2=xxx&....\r\n * @param jsonObject\r\n */\r\n private generateParams(jsonObject): string {\r\n let i = 0;\r\n let pams = \"\";\r\n Object.keys(jsonObject).forEach(function (key) {\r\n if (i == 0) {\r\n pams += key + \"=\" + encodeURI(jsonObject[key]);\r\n } else {\r\n pams += \"&\" + key + \"=\" + encodeURI(jsonObject[key]);\r\n }\r\n i++;\r\n });\r\n return pams;\r\n }\r\n /**轉換json to x-www-form-urlencoded */\r\n transformRequest(obj) {\r\n var str = [];\r\n for (var p in obj) {\r\n var value: string;\r\n if (obj[p] == null) {\r\n value = \"\";\r\n } else {\r\n value = encodeURIComponent(obj[p])\r\n }\r\n str.push(encodeURIComponent(p) + \"=\" + value);\r\n } return str.join(\"&\");\r\n }\r\n\r\n\r\n \r\n}","import { Injectable } from \"@angular/core\";\r\nimport { Platform, ToastController, AlertController, LoadingController, NavController } from \"@ionic/angular\";\r\nimport { Observable, from ,tap,map} from 'rxjs';\r\nimport { NGXLogger } from \"ngx-logger\";\r\nimport { Device } from '@capacitor/device';\r\nimport { Browser } from '@capacitor/browser';\r\n\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class PageHelper {\r\n\r\n loadingQueue = [];\r\n\r\n constructor(\r\n public alertController: AlertController,\r\n public loadingCtrl: LoadingController,\r\n private platform: Platform,\r\n private nav: NavController,\r\n private toastController: ToastController,\r\n private log: NGXLogger,\r\n ) {\r\n\r\n }\r\n\r\n /** 取回uuid */\r\n getUUid(): Observable {\r\n // const info = await Device.getId();\r\n return from(Device.getId()).pipe(\r\n map(v=>v.identifier),\r\n tap(uuid=>{\r\n this.log.trace(\"最終uuid:\" + uuid);\r\n }) \r\n )\r\n\r\n // //this.log.debug(\"試取得裝置資訊\", JSON.stringify(info));\r\n // const obs1 = new Observable((observer) => {\r\n // //ios的uuid要另外處理,因為有可能會變換\r\n \r\n // var uuid = info.identifier;\r\n \r\n \r\n // observer.next(uuid);\r\n // observer.complete();\r\n \r\n // });\r\n\r\n // return obs1.toPromise();\r\n }\r\n\r\n\r\n\r\n // /**顯示確認視窗 */\r\n // Confirm(msg: string): Promise {\r\n\r\n // return new Promise((resolve, reject) => {\r\n // // alertController.create(...) returns a promise!\r\n // this.alertController\r\n // .create({\r\n // header: '請確認 !',\r\n // message: msg,\r\n // buttons: [\r\n // {\r\n // text: '取消',\r\n // role: 'cancel',\r\n // cssClass: 'secondary',\r\n // handler: () => resolve(false)\r\n // },\r\n // {\r\n // text: '確定',\r\n // handler: () => resolve(true)\r\n // }\r\n // ]\r\n // })\r\n // .then(alert => {\r\n // alert.present();\r\n // });\r\n // });\r\n // }\r\n\r\n\r\n // /**顯示確認視窗 */\r\n // Alert(msg: string, title?: string): Promise {\r\n\r\n // return new Promise((resolve, reject) => {\r\n // // alertController.create(...) returns a promise!\r\n // let titleDefault = \"訊息!\"\r\n // if (title) {\r\n // titleDefault = title;\r\n // }\r\n // this.alertController\r\n // .create({\r\n // header: titleDefault,\r\n // message: msg,\r\n // buttons: [\r\n // {\r\n // text: '確定',\r\n // handler: () => resolve(true)\r\n // }\r\n // ]\r\n // })\r\n // .then(alert => {\r\n // alert.present();\r\n // });\r\n // });\r\n // }\r\n\r\n\r\n /**顯示訊息 */\r\n async toast(msg: string, durationTime?: number, position?: 'top' | 'bottom' | 'middle') {\r\n //預設二秒\r\n var time = 2000;\r\n var positionDefault: 'top' | 'bottom' | 'middle' = \"middle\";\r\n\r\n if (durationTime) {\r\n time = durationTime;\r\n }\r\n\r\n if (position) {\r\n positionDefault = position;\r\n }\r\n\r\n // let toast1 = await this.toastController.create({\r\n // message: msg,\r\n // duration: time,\r\n // position: positionDefault\r\n\r\n // });\r\n\r\n // toast1.present();\r\n\r\n //Toast.show(msg, time + \"\", 'bottom')\r\n // Toast toast = new Toast({\r\n // message: msg,\r\n // duration: time,\r\n // });\r\n // this.nav.present(toast);\r\n }\r\n\r\n // show(msg?: string) {\r\n // let mes = \"載入中\";\r\n // if (msg != null && msg != \"\") {\r\n // mes = msg;\r\n // }\r\n // this.spinnerDialog.show(\"訊息\", mes, false);\r\n\r\n // }\r\n\r\n // hide() {\r\n // this.spinnerDialog.hide();\r\n // }\r\n\r\n async openWin(url: string, locationShow?: boolean) {\r\n await Browser.open({ url: url });\r\n }\r\n\r\n setBackground(path) {\r\n const ionContent = document.querySelectorAll('ion-content');\r\n Object.keys(ionContent).map((key) => {\r\n if (path != null && path != '') {\r\n if (ionContent[key].getAttribute(\"style\").includes(\"--background\")) {\r\n let style = ionContent[key].getAttribute(\"style\");\r\n let startIndex = style.indexOf(\"--background\");\r\n let endIndex = style.indexOf(\";\", startIndex);\r\n style = style.substring(0, startIndex) + style.substring(endIndex + 1);\r\n ionContent[key].setAttribute(\"style\", style + \" --background:url(/assets/imgs/\" + path + \") no-repeat center center / cover;\");\r\n }\r\n else {\r\n ionContent[key].setAttribute(\"style\", ionContent[key].getAttribute(\"style\") + \" --background:url(/assets/imgs/\" + path + \") no-repeat center center / cover;\");\r\n }\r\n }\r\n else {\r\n path = \"background.jpg\";\r\n ionContent[key].setAttribute(\"style\", ionContent[key].getAttribute(\"style\") + \" --background:url(/assets/imgs/\" + path + \") no-repeat center center / cover;\");\r\n }\r\n });\r\n }\r\n}\r\n","import { Inject, Injectable, ViewChild } from '@angular/core';\r\n\r\nimport { forkJoin, from, concat, Observable, firstValueFrom, switchMap, throwError, tap, lastValueFrom } from 'rxjs';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { PageHelper } from './PageHelper';\r\n\r\nimport { MyService } from './MyService';\r\nimport { AuthService, UserProfile } from './auth-service';\r\nimport { ResultVO } from './vo/CommonVO';\r\nimport { AlertController, Platform } from '@ionic/angular';\r\nimport { App } from '@capacitor/app';\r\nimport { StorageService } from './storage-service';\r\nimport { GoService } from './go-service';\r\nimport { map } from 'jquery';\r\nimport { GlobalVarService } from './globalvar-service';\r\n\r\n\r\n@Injectable()\r\nexport class AppInitService {\r\n\r\n constructor(private myService: MyService,\r\n private goService: GoService,\r\n private pageHelper: PageHelper,\r\n private log: NGXLogger,\r\n private authService: AuthService,\r\n private platform: Platform,\r\n private alertCtrl: AlertController,\r\n private storageServie: StorageService,\r\n private globalVarService:GlobalVarService\r\n ) {\r\n }\r\n\r\n load(): Promise {\r\n return (firstValueFrom(this.doInit()));\r\n }\r\n\r\n /**系統初始可以寫在這 */\r\n doInit(): Observable {\r\n\r\n return this.doDeviceLogin();\r\n }\r\n doDeviceLogin(): Observable {\r\n\r\n return (this.pageHelper.getUUid().pipe(\r\n tap(uuid => {\r\n //補捉是否可安裝\r\n addEventListener(\"beforeinstallprompt\",(e)=>{ \r\n this.onbeforeinstallprompt(e);\r\n })\r\n\r\n if (uuid) {\r\n this.storageServie.set(\"uuid\", uuid);\r\n } else {\r\n throwError(() => { new Error('uuid為空') });\r\n }\r\n }),\r\n switchMap((uuid) => {\r\n return (this.goService.DoPost(\"DeviceLogin\", { UUID: uuid }).pipe(\r\n switchMap(resultVO => {\r\n if (resultVO.result) {\r\n return from(this.dologin(resultVO, uuid));\r\n } else {\r\n this.log.error(\"DeviceLogin error \" + uuid);\r\n throwError(() => { new Error('DeviceLogin error :' + uuid) });\r\n }\r\n })\r\n ));\r\n }\r\n )\r\n ))\r\n }\r\n\r\n private async dologin(res: ResultVO, uuid: string) {\r\n var u = new UserProfile();\r\n u.userId = res.data.UserId;\r\n u.email = res.data.Email;\r\n u.userName = res.data.Name;\r\n u.accessToken = res.data.Tokens.accessToken;\r\n u.refreshToken = res.data.Tokens.refreshToken;\r\n u.fackbookID = res.data.FackbookID;\r\n u.googleID = res.data.GoogleID;\r\n u.uuid = uuid;\r\n await this.authService.login(u);\r\n this.log.trace(\"登入帶的資訊\", u);\r\n }\r\n\r\n onbeforeinstallprompt(e) {\r\n console.log(\">>>>>>catch beforeinstallprompt >>>>>>>\");\r\n // Prevent Chrome 67 and earlier from automatically showing the prompt\r\n e.preventDefault();\r\n this.globalVarService.setIsInstalledApp(false);\r\n this.globalVarService.setInstallEvent(e);\r\n }\r\n}","import { Injectable } from '@angular/core';\r\nimport { NGXLogger } from 'ngx-logger';\r\nimport { BehaviorSubject, Observable,from ,switchMap} from 'rxjs';\r\nimport { StorageService } from './storage-service';\r\nimport { MyService } from './MyService';\r\n\r\n\r\n/**\r\n * 身份認證服務與相關 API\r\n */\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthService {\r\n\r\n public PROFILE_VERSION: string =\"hazcom_1.1\";\r\n public constructor(\r\n private storageService: StorageService,\r\n private mySerice:MyService,\r\n private log: NGXLogger\r\n ) {\r\n\r\n }\r\n\r\n //此登入,登出狀態為,是否有用第三方登入,而非device login\r\n isBindingAccountSubject = new BehaviorSubject(false);\r\n\r\n private async hasToken(): Promise {\r\n\r\n var profile = await this.storageService.get('profile');\r\n\r\n return (profile != null);\r\n }\r\n\r\n /**\r\n * 登入使用者,並通知所有訂閱者\r\n */\r\n async login(UserProfile): Promise {\r\n await this.setUserPrfolie(UserProfile);\r\n }\r\n\r\n /**\r\n * 登出使用者,並通知所有訂閱者\r\n */\r\n async logout(): Promise {\r\n //清除第三方的登入\r\n var u = await this.getUserProfile();\r\n this.log.trace(\"登出前的資料\", u);\r\n u.fackbookID = null;\r\n u.googleID = null;\r\n await this.setUserPrfolie(u);\r\n }\r\n\r\n /**\r\n * 是否有綁定帳號(也就是非直接uuid登入,而是有綁fb或google或帳密登入)\r\n * @returns {Observable}\r\n */\r\n isBindingAccount(): Observable {\r\n return this.isBindingAccountSubject.asObservable();\r\n }\r\n\r\n async setUserPrfolie(u: UserProfile) {\r\n u.version = this.PROFILE_VERSION;\r\n await this.storageService.set(\"profile\", u);\r\n if (u.fackbookID || u.googleID ) {\r\n console.log(\"---------------------------true\");\r\n this.isBindingAccountSubject.next(true);\r\n } else {\r\n console.log(\"-----------------false\");\r\n this.isBindingAccountSubject.next(false);\r\n }\r\n }\r\n\r\n async getUserProfile(): Promise {\r\n\r\n var profile = await this.storageService.get(\"profile\");\r\n \r\n if ((!profile)||typeof (profile) != \"object\") {\r\n return null;\r\n } else {\r\n ////檢查版本規格\r\n if(profile.version==this.PROFILE_VERSION){\r\n return profile;\r\n }else{\r\n return null;\r\n } \r\n }\r\n }\r\n\r\n\r\n /**\r\n * 更新 JWToken\r\n *\r\n * @param data 認證資料\r\n * @param data.refreshToken refresh 金鑰\r\n */\r\n public refreshJwtToken(userId) {\r\n console.log('Refresh jwt token');\r\n\r\n return from(this.getUserProfile()).pipe( \r\n \r\n switchMap(profile => {\r\n console.log(\"profile>>>>>>>>>>>>>\"+profile.refreshToken);\r\n return (this.mySerice.DoPostRaw('go/RefreshToken', {\r\n UserId:userId,\r\n RefreshToken: profile.refreshToken \r\n })) \r\n })\r\n );\r\n\r\n // this.getUserProfile()\r\n\r\n// return this.mySerice.DoPost('Refresh', {\r\n// refreshTokenString: this.refreshTokenSubject.getValue(),\r\n \r\n// })\r\n// .pipe(\r\n// tap((tokens) => {\r\n// this.jwtTokenSubject.next(tokens.jwt);\r\n// this.refreshTokenSubject.next(tokens.refreshToken);\r\n// this.isLoginSubject.next(true);\r\n// this.storeJWToken(tokens);\r\n// }),\r\n// );\r\n }\r\n}\r\n\r\nexport class UserProfile {\r\n version:string ;//資料版本,用在序列化還原時,用以比對格式\r\n userId: string; //登入的ID\r\n uuid:string;\r\n userName: string;\r\n fackbookID: string;\r\n googleID: string;\r\n email: string;\r\n accessToken: string;\r\n refreshToken: string;\r\n loginType: string;\r\n }","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SwipeDirective } from './SwipeDirective';\r\n\r\n\r\n@NgModule({\r\n declarations: [SwipeDirective],\r\n imports: [\r\n CommonModule,\r\n ],\r\n exports: [SwipeDirective]\r\n})\r\nexport class SwipeModule { }\r\n","import { AfterViewInit, Directive, ElementRef, EventEmitter, Output, Renderer2 } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[appSwipe]'\r\n })\r\n export class SwipeDirective implements AfterViewInit {\r\n \r\n /** x position at touchstart */\r\n xDown = null;\r\n /** y position at touchstart */\r\n yDown = null;\r\n /** Timestamp at touchstart */\r\n time = 0;\r\n \r\n @Output() swipeLeft: EventEmitter;\r\n @Output() swipeRight: EventEmitter;\r\n // @Output() swipeUp: EventEmitter;\r\n // @Output() swipeDown: EventEmitter;\r\n \r\n constructor(private renderer: Renderer2, private elRef: ElementRef) {\r\n this.swipeRight = new EventEmitter();\r\n this.swipeLeft = new EventEmitter();\r\n // this.swipeUp = new EventEmitter();\r\n // this.swipeDown = new EventEmitter();\r\n }\r\n \r\n ngAfterViewInit() {\r\n /** Listen for touchstart event on element directive is attached to */\r\n this.renderer.listen(this.elRef.nativeElement, 'touchstart', (event: TouchEvent) => {\r\n this.handleTouchStart(event);\r\n });\r\n \r\n /** Listen for touchend event on element directive is attached to */\r\n this.renderer.listen(this.elRef.nativeElement, 'touchend', (event: TouchEvent) => {\r\n this.handleTouchMove(event);\r\n });\r\n }\r\n \r\n private handleTouchStart(event: TouchEvent) {\r\n this.xDown = event.touches[0].pageX;\r\n this.yDown = event.touches[0].pageY;\r\n this.time = event.timeStamp;\r\n }\r\n \r\n handleTouchMove(event: TouchEvent) {\r\n if ( ! this.xDown || ! this.yDown ) {\r\n return;\r\n }\r\n \r\n /** @see https://stackblitz.com/edit/angular-swipe-events-with-hostlistner */\r\n const touch = event.touches[0] || event.changedTouches[0];\r\n \r\n const xUp = touch.pageX;\r\n const yUp = touch.pageY;\r\n \r\n const xDiff = this.xDown - xUp;\r\n const yDiff = this.yDown - yUp;\r\n const timeDiff = event.timeStamp - this.time;\r\n \r\n console.log(\">>>>\"+(xDiff));\r\n \r\n // simulate a swipe -> less than 500 ms and more than 100 px\r\n if (timeDiff < 500) {\r\n // touch movement lasted less than 500 ms\r\n if (Math.abs(xDiff) > 100) {\r\n // delta x is at least 100 pixels\r\n if (xDiff > 0) {\r\n this.swipeLeft.emit(event); \r\n } else {\r\n this.swipeRight.emit(event);\r\n }\r\n }\r\n \r\n /*if (Math.abs(yDiff) > 60) {\r\n // delta y is at least 60 pixels\r\n if (yDiff > 0) {\r\n this.swipeDown.emit(event);\r\n } else {\r\n this.swipeUp.emit(event);\r\n }\r\n }*/\r\n }\r\n \r\n // Reset values.\r\n this.xDown = null;\r\n this.yDown = null;\r\n }\r\n }","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class GlobalVarService {\r\n // 初始化一個 BehaviorSubject,並指定初始值\r\n\r\n private isInstalledApp = new BehaviorSubject(true); //預設有安裝(因為只能從沒有安裝來判斷)\r\n private installSourceEvent = new BehaviorSubject(null);\r\n\r\n // 是否已安裝了\r\n isInstalledApp$ = this.isInstalledApp.asObservable();\r\n\r\n // 安裝事件\r\n installSourceEvent$ = this.installSourceEvent.asObservable();\r\n\r\n /**\r\n * 設定是否有安裝app了\r\n * @param newValue \r\n */\r\n setIsInstalledApp(newValue: boolean) {\r\n console.log(\">>>>>>設定是否有安裝\"+newValue);\r\n this.isInstalledApp.next(newValue);\r\n }\r\n\r\n\r\n /**\r\n * 設定安裝的event\r\n * @param event \r\n */\r\n setInstallEvent(event: any) {\r\n this.installSourceEvent.next(event);\r\n }\r\n}","import { Injectable, Inject } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { ServiceBase } from './service-base';\r\nimport { ResultVO } from './vo/CommonVO';\r\nimport { environment } from 'src/environments/environment';\r\nimport { MyService } from './MyService';\r\n\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class GoService extends MyService {\r\n\r\n\r\n constructor(public http: HttpClient) { \r\n super(http); \r\n // this.apiu = this.apiEndpoint+\"/\"+ this.apiPrefix+\"go/\" ;\r\n this.apiPrefix = environment.urls.prefix+\"Go/\"\r\n }\r\n\r\n \r\n}","import { Injectable } from '@angular/core';\nimport { StorageService } from './storage-service';\n\n@Injectable({\n providedIn: 'root'\n})\n\n/**\n * 用於設定\n */\nexport class MyConfigService {\n\n\n constructor(\n private storageService: StorageService\n ) {\n\n }\n\n async getSetting(): Promise {\n\n var data = await this.storageService.get(\"mySettings\");\n\n if (!data) {\n //若無設定,設定初始值\n return (this.createDefaultValue());\n } else {\n return (JSON.parse(data));\n }\n\n }\n createDefaultValue(): MySetting {\n return { isSeedAns: false ,isAutoNext:false,remindTime:\"\",fontSizeHtml:12};\n }\n\n async setSetting(settedValue: MySetting) {\n\n await this.storageService.set(\"mySettings\", JSON.stringify(settedValue));\n }\n}\n\nexport class MySetting {\n isSeedAns: boolean;//是否要看答案\n isAutoNext: boolean;\n remindTime: string;\n fontSizeHtml:number;\n}\n","import { Injectable, Inject } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { ServiceBase } from './service-base';\r\nimport { ResultVO } from './vo/CommonVO';\r\nimport { environment } from 'src/environments/environment';\r\nimport { MyService } from './MyService';\r\n\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class QuizService extends MyService {\r\n\r\n\r\n constructor(public http: HttpClient) { \r\n super(http); \r\n this.apiPrefix = environment.urls.prefix+\"quiz/\"\r\n }\r\n \r\n \r\n}","import { Injectable, Inject } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { ServiceBase } from './service-base';\r\nimport { ResultVO } from './vo/CommonVO';\r\nimport { environment } from 'src/environments/environment';\r\nimport { MyService } from './MyService';\r\n\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class SearchService extends MyService {\r\n\r\n\r\n constructor(public http: HttpClient) { \r\n super(http); \r\n this.apiPrefix = environment.urls.prefix+\"search/\"\r\n }\r\n\r\n \r\n}","\r\nimport { HttpClient, HttpResponse, HttpParams, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable ,Inject} from '@angular/core';\r\n\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable({providedIn: 'root'})\r\nexport class ServiceBase {\r\n constructor(public http: HttpClient) {\r\n }\r\n\r\n protected CommonGet2(url): Observable> {\r\n // this.httClient.get()\r\n return this.http.get(url, { observe: 'response' });\r\n }\r\n\r\n\r\n ///TODO:\r\n protected CommonGetWithParams(url, params): Observable {\r\n // this.httClient.get()\r\n\r\n let pa = new HttpParams();\r\n // HttpParams {\r\n // private map;\r\n // private encoder;\r\n // private updates;\r\n // private cloneFrom;\r\n // constructor(options?: {\r\n // fromString?: string;\r\n // encoder?: HttpParameterCodec;\r\n // });\r\n\r\n return this.http.get(url, { params: params });\r\n\r\n }\r\n\r\n\r\n /**執行http Get */\r\n protected ComonGet(url): Observable {\r\n\r\n\r\n return this.http.get(url); \r\n \r\n \r\n }\r\n \r\n\r\n /**執行http Get */\r\n protected CommonPatch(url,body): Observable {\r\n\r\n \r\n return this.http.get(url);\r\n \r\n \r\n }\r\n\r\n\r\n\r\n\r\n /**執行http post */\r\n protected CommonPost(url, criteria): Observable {\r\n\r\n var headers = new HttpHeaders();\r\n\r\n headers = headers.append(\r\n \"Content-Type\",\r\n \"application/x-www-form-urlencoded\"\r\n );\r\n\r\n var postData: string = this.transformRequest(criteria);\r\n\r\n return this.http.post(url, postData, { headers: headers });\r\n \r\n }\r\n\r\n\r\n /**執行http post */\r\n protected CommonPostRaw(url, data): Observable {\r\n console.log(url,data);\r\n return this.http.post(url, data);\r\n\r\n }\r\n\r\n\r\n /**轉換json to x-www-form-urlencoded */\r\n transformRequest(obj) {\r\n var str = [];\r\n for (var p in obj) {\r\n var value: string;\r\n if (obj[p] == null) {\r\n value = \"\";\r\n } else {\r\n value = encodeURIComponent(obj[p])\r\n }\r\n str.push(encodeURIComponent(p) + \"=\" + value);\r\n } return str.join(\"&\");\r\n }\r\n\r\n \r\n\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MyService } from './MyService';\r\nimport { LoggerModule } from 'ngx-logger';\r\n\r\nimport { environment } from '../..//environments/environment';\r\nimport { StorageService } from './storage-service';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n LoggerModule.forRoot(environment.logging),\r\n ],\r\n providers:[],\r\n exports: []\r\n})\r\nexport class ShareModule { }\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { Storage } from '@ionic/storage-angular';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class StorageService {\r\n private _storage: Storage | null = null;\r\n\r\n constructor(private storage: Storage) {\r\n\r\n }\r\n\r\n async init() {\r\n // If using, define drivers here: await this.storage.defineDriver(/*...*/);\r\n const storage = await this.storage.create();\r\n this._storage = storage;\r\n }\r\n\r\n // Create and expose methods that users of this service can\r\n // call, for example:\r\n public async set(key: string, value: any) {\r\n if (!this._storage) {\r\n await this.init();\r\n }\r\n \r\n //this.storage.remove()\r\n this._storage.set(key, value);\r\n }\r\n\r\n public async get(key: string): Promise {\r\n\r\n if (!this._storage) {\r\n await this.init();\r\n }\r\n\r\n return (this._storage?.get(key));\r\n }\r\n}","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FeatureService {\r\n private cachedData: any;\r\n data;\r\n constructor() { }\r\n run() {\r\n console.log(\"featureService\");\r\n }\r\n setdata(data) {\r\n this.data=data;\r\n }\r\n getdata(){\r\n return this.data\r\n }\r\n\r\n retrieveData(): any {\r\n return this.cachedData;\r\n }\r\n \r\n storeData(data: any): void {\r\n this.cachedData = data;\r\n }\r\n \r\n clearCache(): void {\r\n this.cachedData = null;\r\n }\r\n}\r\n","// This file can be replaced during build by using the `fileReplacements` array.\r\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\r\n// The list of file replacements can be found in `angular.json`.\r\n\r\nimport { NgxLoggerLevel } from \"ngx-logger\";\r\n\r\n\r\n\r\n//var apiUrl = \"https://localhost:54008\";\r\n//var webUrl = \"https://localhost:54008\";\r\n\r\nvar apiUrl = \"https://ghs.osha.gov.tw/hazcom\";\r\nvar webUrl = \"https://ghs.osha.gov.tw/hazcom\";\r\n\r\n//var apiUrl = \"https://ghs.demo-pro2e.com/HAZCOM\";\r\n//var webUrl = \"https://ghs.demo-pro2e.com/HAZCOM\"\r\n\r\n\r\n\r\nexport const environment = {\r\n production: true,\r\n mode: 'PROD',\r\n logging: {\r\n serverLoggingUrl: apiUrl + '/api/log/LogMsg',\r\n level: NgxLoggerLevel.ERROR,\r\n serverLogLevel: NgxLoggerLevel.ERROR,\r\n },\r\n urls: {\r\n apiEndpoint: apiUrl,\r\n webUrl: webUrl,\r\n prefix:'api/'\r\n }\r\n};\r\n\r\n/*\r\n * For easier debugging in development mode, you can import the following file\r\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\r\n *\r\n * This import should be commented out in production mode because it will have a negative impact\r\n * on performance if an error is thrown.\r\n */\r\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\r\n","import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic().bootstrapModule(AppModule)\r\n .catch(err => console.log(err));\r\n","var map = {\n\t\"./ion-accordion_2.entry.js\": [\n\t\t87512,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-accordion_2_entry_js\"\n\t],\n\t\"./ion-action-sheet.entry.js\": [\n\t\t56470,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-action-sheet_entry_js\"\n\t],\n\t\"./ion-alert.entry.js\": [\n\t\t85690,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-alert_entry_js\"\n\t],\n\t\"./ion-app_8.entry.js\": [\n\t\t68508,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-app_8_entry_js\"\n\t],\n\t\"./ion-avatar_3.entry.js\": [\n\t\t3438,\n\t\t\"node_modules_ionic_core_dist_esm_ion-avatar_3_entry_js\"\n\t],\n\t\"./ion-back-button.entry.js\": [\n\t\t19119,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-back-button_entry_js\"\n\t],\n\t\"./ion-backdrop.entry.js\": [\n\t\t52319,\n\t\t\"node_modules_ionic_core_dist_esm_ion-backdrop_entry_js\"\n\t],\n\t\"./ion-breadcrumb_2.entry.js\": [\n\t\t44848,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-breadcrumb_2_entry_js\"\n\t],\n\t\"./ion-button_2.entry.js\": [\n\t\t94752,\n\t\t\"node_modules_ionic_core_dist_esm_ion-button_2_entry_js\"\n\t],\n\t\"./ion-card_5.entry.js\": [\n\t\t9870,\n\t\t\"node_modules_ionic_core_dist_esm_ion-card_5_entry_js\"\n\t],\n\t\"./ion-checkbox.entry.js\": [\n\t\t85892,\n\t\t\"node_modules_ionic_core_dist_esm_ion-checkbox_entry_js\"\n\t],\n\t\"./ion-chip.entry.js\": [\n\t\t9118,\n\t\t\"node_modules_ionic_core_dist_esm_ion-chip_entry_js\"\n\t],\n\t\"./ion-col_3.entry.js\": [\n\t\t9538,\n\t\t\"node_modules_ionic_core_dist_esm_ion-col_3_entry_js\"\n\t],\n\t\"./ion-datetime-button.entry.js\": [\n\t\t24969,\n\t\t\"default-node_modules_ionic_core_dist_esm_data-775093f5_js\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-datetime-button_entry_js\"\n\t],\n\t\"./ion-datetime_3.entry.js\": [\n\t\t21835,\n\t\t\"default-node_modules_ionic_core_dist_esm_data-775093f5_js\",\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-datetime_3_entry_js\"\n\t],\n\t\"./ion-fab_3.entry.js\": [\n\t\t76719,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-fab_3_entry_js\"\n\t],\n\t\"./ion-img.entry.js\": [\n\t\t3121,\n\t\t\"node_modules_ionic_core_dist_esm_ion-img_entry_js\"\n\t],\n\t\"./ion-infinite-scroll_2.entry.js\": [\n\t\t3025,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-infinite-scroll_2_entry_js\"\n\t],\n\t\"./ion-input.entry.js\": [\n\t\t33914,\n\t\t\"default-node_modules_ionic_core_dist_esm_form-controller-548aa79c_js-node_modules_ionic_core_-fa32c7\",\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-input_entry_js\"\n\t],\n\t\"./ion-item-option_3.entry.js\": [\n\t\t13761,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-item-option_3_entry_js\"\n\t],\n\t\"./ion-item_8.entry.js\": [\n\t\t86138,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-item_8_entry_js\"\n\t],\n\t\"./ion-loading.entry.js\": [\n\t\t12063,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-loading_entry_js\"\n\t],\n\t\"./ion-menu_3.entry.js\": [\n\t\t84950,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-menu_3_entry_js\"\n\t],\n\t\"./ion-modal.entry.js\": [\n\t\t69707,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-modal_entry_js\"\n\t],\n\t\"./ion-nav_2.entry.js\": [\n\t\t60234,\n\t\t\"node_modules_ionic_core_dist_esm_ion-nav_2_entry_js\"\n\t],\n\t\"./ion-picker-column-internal.entry.js\": [\n\t\t37209,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-picker-column-internal_entry_js\"\n\t],\n\t\"./ion-picker-internal.entry.js\": [\n\t\t93068,\n\t\t\"node_modules_ionic_core_dist_esm_ion-picker-internal_entry_js\"\n\t],\n\t\"./ion-popover.entry.js\": [\n\t\t99215,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-popover_entry_js\"\n\t],\n\t\"./ion-progress-bar.entry.js\": [\n\t\t35635,\n\t\t\"node_modules_ionic_core_dist_esm_ion-progress-bar_entry_js\"\n\t],\n\t\"./ion-radio_2.entry.js\": [\n\t\t1497,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-radio_2_entry_js\"\n\t],\n\t\"./ion-range.entry.js\": [\n\t\t15922,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-range_entry_js\"\n\t],\n\t\"./ion-refresher_2.entry.js\": [\n\t\t16199,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-refresher_2_entry_js\"\n\t],\n\t\"./ion-reorder_2.entry.js\": [\n\t\t53549,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-reorder_2_entry_js\"\n\t],\n\t\"./ion-ripple-effect.entry.js\": [\n\t\t45966,\n\t\t\"node_modules_ionic_core_dist_esm_ion-ripple-effect_entry_js\"\n\t],\n\t\"./ion-route_4.entry.js\": [\n\t\t93187,\n\t\t\"node_modules_ionic_core_dist_esm_ion-route_4_entry_js\"\n\t],\n\t\"./ion-searchbar.entry.js\": [\n\t\t59092,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-searchbar_entry_js\"\n\t],\n\t\"./ion-segment_2.entry.js\": [\n\t\t17600,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-segment_2_entry_js\"\n\t],\n\t\"./ion-select_3.entry.js\": [\n\t\t49870,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-select_3_entry_js\"\n\t],\n\t\"./ion-spinner.entry.js\": [\n\t\t81657,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-spinner_entry_js\"\n\t],\n\t\"./ion-split-pane.entry.js\": [\n\t\t88394,\n\t\t\"node_modules_ionic_core_dist_esm_ion-split-pane_entry_js\"\n\t],\n\t\"./ion-tab-bar_2.entry.js\": [\n\t\t44574,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-tab-bar_2_entry_js\"\n\t],\n\t\"./ion-tab_2.entry.js\": [\n\t\t33514,\n\t\t\"node_modules_ionic_core_dist_esm_ion-tab_2_entry_js\"\n\t],\n\t\"./ion-text.entry.js\": [\n\t\t7502,\n\t\t\"node_modules_ionic_core_dist_esm_ion-text_entry_js\"\n\t],\n\t\"./ion-textarea.entry.js\": [\n\t\t97832,\n\t\t\"default-node_modules_ionic_core_dist_esm_form-controller-548aa79c_js-node_modules_ionic_core_-fa32c7\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-textarea_entry_js\"\n\t],\n\t\"./ion-toast.entry.js\": [\n\t\t9805,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-toast_entry_js\"\n\t],\n\t\"./ion-toggle.entry.js\": [\n\t\t57393,\n\t\t\"common\",\n\t\t\"node_modules_ionic_core_dist_esm_ion-toggle_entry_js\"\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(() => {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(() => {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = () => (Object.keys(map));\nwebpackAsyncContext.id = 50863;\nmodule.exports = webpackAsyncContext;","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(() => {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = () => ([]);\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = 41993;\nmodule.exports = webpackEmptyAsyncContext;","// Imports\nvar ___CSS_LOADER_API_SOURCEMAP_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/sourceMaps.js\");\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../node_modules/css-loader/dist/runtime/api.js\");\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, ``, \"\",{\"version\":3,\"sources\":[],\"names\":[],\"mappings\":\"\",\"sourceRoot\":\"\"}]);\n// Exports\nmodule.exports = ___CSS_LOADER_EXPORT___.toString();\n"],"names":["NgModule","PreloadAllModules","RouterModule","routes","path","loadChildren","then","m","HomePageModule","redirectTo","pathMatch","SearchResultPageModule","SearchDetailPageModule","AboutPageModule","SearchImgPageModule","QuizPageModule","QuizfinishPageModule","LearningRecordListPageModule","BindPageModule","IosPwaPageModule","SearchCameraPageModule","FirefoxPwaPageModule","InstructionPageModule","SamsungPwaPageRoutingModule","AppRoutingModule","__decorate","imports","forRoot","preloadingStrategy","exports","Component","ViewChild","IonRouterOutlet","LoadingController","MenuController","ModalController","Platform","ToastController","PageHelper","MyService","NGXLogger","SplashScreen","AuthService","NavigationEnd","Router","GoogleTagManagerService","GlobalVarService","AppComponent","constructor","modalCtrl","toastCtrl","platform","pageHelper","menu","loadingController","myService","log","authService","router","globalVarService","gtmService","backButtonPressedOnceToExit","appMargin","listenerHandlers","isAgreetSmarklook","window","addEventListener","e","elementFocused","document","querySelector","blur","focus","events","forEach","item","gtmTag","event","pageName","getPageName","url","pushTag","initializeApp","includes","trace","ready","show","ngAfterViewInit","_asyncToGenerator","_","args","selector","template","__NG_CLI_RESOURCE__0","APP_INITIALIZER","isDevMode","BrowserModule","HammerModule","RouteReuseStrategy","IonicModule","IonicRouteStrategy","AsyncPipe","HTTP_INTERCEPTORS","HttpClientModule","AppInitService","LoggerModule","GoogleTagManagerModule","MyNavService","IonicStorageModule","StorageService","ShareModule","environment","CommonModule","SwipeModule","MyConfigService","Drivers","ServiceWorkerModule","GoService","QuizService","SearchService","HttpTokenInterceptor","FormsModule","ReactiveFormsModule","NgxEchartsModule","AutocompleteLibModule","provideAnimationsAsync","CKEditorModule","FeatureService","NgxImageCompressService","AppModule","declarations","name","driverOrder","IndexedDB","LocalStorage","logging","id","register","enabled","registrationStrategy","echarts","providers","provide","useClass","useValue","multi","useFactory","appInitService","load","deps","bootstrap","HttpErrorResponse","Injectable","BehaviorSubject","from","firstValueFrom","catchError","filter","switchMap","takeLast","tap","map","goService","isRefreshing","refreshTokenSubject","duplicateLoginSubject","intercept","request","next","console","getUserProfile","pipe","profile","accessToken","addHeaderToken","handle","error","status","error401Handler","userId","alert","JSON","stringify","token","clone","setHeaders","Authorization","_this","refreshJwtToken","_ref","f","refreshToken","setUserPrfolie","_x","apply","arguments","dd","data","req","rr","providedIn","HttpClient","ServiceBase","http","apiu","apiEndpoint","apiPrefix","urls","prefix","DoGet","u","ComonGet","DoGetParams","jsonObject","pams","generateParams","length","DoPost","dataJsonFormat","CommonPost","DoPostRaw","CommonPostRaw","i","Object","keys","key","encodeURI","transformRequest","obj","str","p","value","encodeURIComponent","push","join","AlertController","NavController","Device","Browser","alertController","loadingCtrl","nav","toastController","loadingQueue","getUUid","getId","v","identifier","uuid","toast","msg","durationTime","position","time","positionDefault","openWin","locationShow","open","setBackground","ionContent","querySelectorAll","getAttribute","style","startIndex","indexOf","endIndex","substring","setAttribute","throwError","UserProfile","alertCtrl","storageServie","doInit","doDeviceLogin","onbeforeinstallprompt","set","Error","UUID","resultVO","result","dologin","res","UserId","email","Email","userName","Name","Tokens","fackbookID","FackbookID","googleID","GoogleID","login","preventDefault","setIsInstalledApp","setInstallEvent","storageService","mySerice","PROFILE_VERSION","isBindingAccountSubject","hasToken","get","_this2","logout","_this3","isBindingAccount","asObservable","_this4","version","_this5","RefreshToken","SwipeDirective","Directive","ElementRef","EventEmitter","Output","Renderer2","renderer","elRef","xDown","yDown","swipeRight","swipeLeft","listen","nativeElement","handleTouchStart","handleTouchMove","touches","pageX","pageY","timeStamp","touch","changedTouches","xUp","yUp","xDiff","yDiff","timeDiff","Math","abs","emit","isInstalledApp","installSourceEvent","isInstalledApp$","installSourceEvent$","newValue","getSetting","createDefaultValue","parse","isSeedAns","isAutoNext","remindTime","fontSizeHtml","setSetting","settedValue","MySetting","HttpParams","HttpHeaders","CommonGet2","observe","CommonGetWithParams","params","pa","CommonPatch","body","criteria","headers","append","postData","post","Storage","storage","_storage","init","create","run","setdata","getdata","retrieveData","cachedData","storeData","clearCache","NgxLoggerLevel","apiUrl","webUrl","production","mode","serverLoggingUrl","level","ERROR","serverLogLevel","enableProdMode","platformBrowserDynamic","bootstrapModule","catch","err"],"sourceRoot":"webpack:///","x_google_ignoreList":[22,23]}