{"version":3,"file":"2593.b77b2b36b716dd64.js","mappings":"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","names":["i0","_r1","ctx_r1","scrollToId","_r3","openTutorial","_r4","openTour","HelpPage_div_46_div_1_Template","emailControl","errors","email","message","PAGE","HelpPage","_HelpPage","constructor","mailerApi","formBuilder","navCtrl","route","store","this","showStudio","showTutorial","showTour","title","sections","feedback","privacy","filmstack","how","project","studio","story","submitAttempt","subscriptions","Subscription","ngOnInit","formGroup","group","name","Validators","required","get","submitForm","value","sendEmail","fromEmail","subject","topic","MailTopic","Feedback","pipe","take","subscribe","next","reset","error","console","log","id","scrollToItem","el","document","getElementById","offsetTop","content","scrollToPoint","scrollToTop","openPrivacy","openPage","openRules","openTerms","dispatch","resetTourSeenOverview","setTimeout","navigateForward","openRootPage","navigateRoot","ionViewWillEnter","handleAnchor","anchor","subQueryParams","queryParamMap","queryParams","subParams","paramMap","params","add","ionViewWillLeave","unsubscribe","i1","i2","i3","i4","i5","selectors","viewQuery","rf","ctx","IonContent","HelpPage_li_24_Template","HelpPage_ion_button_28_Template","HelpPage_ion_button_29_Template","HelpPage_div_46_Template","HelpPage_div_53_Template","HelpPage_dt_77_Template","HelpPage_dd_78_Template","dirty","valid","IonHeader","TopNavbarComponent","IonButton","NgIf","FormsModule","ReactiveFormsModule","IonItem","IonLabel","IonTextarea","IonFabButton","IonIcon","FooterComponent","styles","_FooterComponent","theme","copyrightYear","Date","getFullYear","inputs","standalone","features","decls","vars","consts","template","FooterComponent_ng_container_4_Template","FooterComponent_ng_container_5_Template","NgSwitch","NgSwitchCase","NgSwitchDefault","RouterLink","TranslatePipe"],"ignoreList":[],"sourceRoot":"webpack:///","sources":["./src/app/pages/help/help.page.html","./src/app/pages/help/help.page.ts","./src/app/shared/components/footer/footer.component.html","./src/app/shared/components/footer/footer.component.ts"],"sourcesContent":["<ion-header>\n <app-top-navbar [title]=\"title\">\n <!-- SLOT: anything added here will go below the ion-navbar -->\n </app-top-navbar>\n</ion-header>\n\n<ion-content>\n\n <div id=\"help\" class=\"page limit-width ion-padding\">\n <div class=\"container\">\n <!-- <h1>{{ title }}</h1> -->\n \n <section class=\"help-topics\">\n <h2>Help Topics</h2>\n <ul class=\"faq-list list-unstyled\">\n <li>\n <ion-button (click)=\"scrollToId('feedback_form')\" fill=\"clear\" color=\"light\">\n How do I contact you with questions or feedback?\n </ion-button>\n </li>\n <li>\n <ion-button (click)=\"scrollToId('faq_item-privacy')\" fill=\"clear\" color=\"light\">\n How to you handle my privacy?\n </ion-button>\n </li>\n <li>\n <ion-button (click)=\"scrollToId('faq_item-filmstack')\" fill=\"clear\" color=\"light\">\n What is a Filmstack?\n </ion-button>\n </li>\n <li>\n <ion-button (click)=\"scrollToId('faq_item-how_stack')\" fill=\"clear\" color=\"light\">\n How do I stack?\n </ion-button>\n </li>\n <li>\n <ion-button (click)=\"scrollToId('faq_item-project')\" fill=\"clear\" color=\"light\">\n What is a Project?\n </ion-button>\n </li>\n <li *ngIf=\"showStudio\">\n <ion-button (click)=\"scrollToId('faq_item-studio')\" fill=\"clear\" color=\"light\">\n What is my Studio?\n </ion-button>\n </li>\n <li>\n <ion-button (click)=\"scrollToId('faq_item-tell_story')\" fill=\"clear\" color=\"light\">\n How do I tell a story?\n </ion-button>\n </li>\n </ul>\n \n <ion-button *ngIf=\"showTutorial\" fill=\"clear\" (click)=\"openTutorial()\">\n See the Overview Tutorial\n </ion-button>\n <ion-button *ngIf=\"showTour\" fill=\"clear\" (click)=\"openTour()\">\n Quick Tour\n </ion-button>\n </section>\n \n <section class=\"feedback\" id=\"feedback_form\">\n <h2>Feedback</h2>\n <form [formGroup]=\"formGroup\" (ngSubmit)=\"submitForm()\">\n <ion-item lines=\"none\">\n <ion-input labelPlacement=\"floating\" type=\"text\" formControlName=\"name\">\n <div slot=\"label\">Name <sup>*</sup></div>\n </ion-input>\n </ion-item>\n <ion-item lines=\"none\">\n <ion-input labelPlacement=\"floating\" type=\"email\" formControlName=\"email\">\n <div slot=\"label\">Email <sup>*</sup></div>\n </ion-input>\n </ion-item>\n <div *ngIf=\"emailControl.errors && (emailControl.dirty || submitAttempt)\" class=\"errors ion-text-center\">\n <div *ngIf=\"emailControl.errors.email\">\n Please enter a valid Email.\n </div>\n </div>\n \n <ion-item lines=\"none\">\n <ion-label position=\"floating\">What's on your mind? <sup>*</sup></ion-label>\n <ion-textarea formControlName=\"message\"></ion-textarea>\n </ion-item>\n <div *ngIf=\"message\" class=\"message ion-text-center\">\n {{message}}\n </div>\n <div class=\"ion-text-center\">\n <ion-button type=\"submit\" [disabled]=\"!formGroup.valid\">Send Message</ion-button>\n </div>\n </form>\n </section>\n \n <section class=\"faqs\">\n <h2>FAQ's</h2>\n <dl>\n \n <dt id=\"faq_item-filmstack\">What is a Filmstack?</dt>\n <dd>Your personal arrangement of video clips, shared to your friends, or to the world.</dd>\n \n <dt id=\"faq_item-how_stack\">How do I stack?</dt>\n <dd>\n Watch Stacks, explore pathways. <br>\n Add clips or whole stack pathays to your Stack Editor. <br>\n Arrange the Clips in your Stack, customize, Publish -> Share.\n </dd>\n \n <dt id=\"faq_item-project\">What is Project?</dt>\n <dd>A collection of clips and crew with a shared purpose.</dd>\n \n <dt *ngIf=\"showStudio\" id=\"faq_item-studio\">What is my Studio?</dt>\n <dd *ngIf=\"showStudio\">Go to my dashboard...</dd>\n \n <dt id=\"faq_item-tell_story\">How to tell a story</dt>\n <dd>\n Watch Stacks, explore other pathways. <br>\n Add clips or whole stack pathays to your Stack Editor. <br>\n Arrange the Clips in your Stack, customize, Publish -> Share.\n </dd>\n \n <dt id=\"faq_item-privacy\">How to you handle my privacy?</dt>\n <dd>\n We will not share your private information, we value ours as well.\n <br>\n We only use the information we gather to make your Filmstacker experience better.\n <br>\n We adhere to the General Data Protection Regulation (GDPR) requirements.\n <br>\n You can request a copy of your user information or discuss removal by <a href=\"mailto:privacy@filmstacker.com\">emailing our Privacy Officer</a>.\n \n <div class=\"\">\n <ion-button (click)=\"openPrivacy()\" fill=\"clear\" color=\"light\">\n Read our Privacy Policy\n </ion-button>\n <ion-button (click)=\"openRules()\" fill=\"clear\" color=\"light\">\n Read our Community Rules\n </ion-button>\n <ion-button (click)=\"openTerms()\" fill=\"clear\" color=\"light\">\n Read our Terms of Service\n </ion-button>\n </div>\n </dd>\n \n </dl>\n </section>\n \n \n <div class=\"bottom-actions ion-text-center\">\n <ion-fab-button (click)=\"scrollToTop()\" color=\"light\">\n <ion-icon size=\"large\" name=\"arrow-up\"></ion-icon>\n </ion-fab-button>\n </div>\n \n \n \n </div>\n </div>\n\n <div class=\"tab-bottom-spacer\"></div>\n \n <app-footer></app-footer>\n\n</ion-content>\n","/** @format */\n\nimport { Component, OnInit, ViewChild } from '@angular/core';\nimport { NgIf } from '@angular/common';\nimport { Validators, UntypedFormBuilder, UntypedFormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { ActivatedRoute } from '@angular/router';\nimport {\n NavController,\n IonContent,\n IonHeader,\n IonButton,\n IonItem,\n IonLabel,\n IonTextarea,\n IonFabButton,\n IonIcon,\n} from '@ionic/angular/standalone';\nimport { Subscription } from 'rxjs';\nimport { take } from 'rxjs/operators';\nimport { Store } from '@ngrx/store';\nimport { State } from '@store/reducers';\nimport { resetTourSeenOverview } from '@store/actions/viewstate.actions';\nimport { MailerApiService, MailTopic, SendMail } from '@app/core/api/mailer.api.service';\nimport { FooterComponent } from '@app/shared/components/footer/footer.component';\nimport { TopNavbarComponent } from '@app/shared/components/top-navbar/top-navbar.component';\n\nconst PAGE = '[HelpPage]';\n\n@Component({\n selector: 'app-help',\n templateUrl: './help.page.html',\n styleUrls: ['./help.page.scss'],\n standalone: true,\n imports: [\n IonHeader,\n TopNavbarComponent,\n IonContent,\n IonButton,\n NgIf,\n FormsModule,\n ReactiveFormsModule,\n IonItem,\n IonLabel,\n IonTextarea,\n IonFabButton,\n IonIcon,\n FooterComponent,\n ],\n})\nexport class HelpPage implements OnInit {\n @ViewChild(IonContent) content: IonContent;\n\n showStudio: boolean = false; // show the Studio FAQ\n showTutorial: boolean = true; // show the tutorial button\n showTour: boolean = true; // show the tour button\n\n title: string = 'Help & Feedback';\n\n sections = {\n //TODO: update to variables from strings in template and component\n feedback: 'feedback_form',\n privacy: 'faq_item-privacy',\n filmstack: 'faq_item-filmstack',\n how: 'faq_item-how_stack',\n project: 'faq_item-project',\n studio: 'faq_item-studio',\n story: 'faq_item-tell_story',\n };\n\n formGroup: UntypedFormGroup;\n submitAttempt: boolean = false;\n message = '';\n\n private subscriptions: Subscription = new Subscription();\n\n constructor(\n private mailerApi: MailerApiService,\n private formBuilder: UntypedFormBuilder,\n private navCtrl: NavController,\n private route: ActivatedRoute,\n private store: Store<State>\n ) {}\n\n ngOnInit() {\n this.formGroup = this.formBuilder.group({\n name: ['', Validators.required],\n email: ['', [Validators.required, Validators.email]],\n message: ['', Validators.required],\n });\n }\n\n // getters for form fields\n get emailControl() {\n return this.formGroup.get('email');\n }\n\n submitForm() {\n this.submitAttempt = true;\n // console.log(this.formGroup.value);\n\n const { name, email, message } = this.formGroup.value;\n\n const params: SendMail = {\n fromEmail: email,\n name,\n subject: 'Filmstacker Feedback',\n topic: MailTopic.Feedback,\n // toEmail: 'jd@filmstacker.com',//must be confirmed in AWS SES\n message,\n };\n\n this.mailerApi\n .sendEmail(params)\n .pipe(take(1))\n .subscribe({\n next: () => {\n // console.log(`${PAGE} sendEmail res:`, res);\n this.message = 'Message sent, thanks!';\n this.formGroup.reset();\n },\n error: (error) => {\n console.log(`${PAGE} sendEmail ERROR:`, error);\n this.message = 'Oops! There was a problem - please try again.';\n },\n });\n }\n\n scrollToId(id) {\n // console.log(`${PAGE} scrollToId`, id);\n this.scrollToItem(id);\n }\n\n scrollToItem(id: string) {\n const el = document.getElementById(id);\n if (el && el.offsetTop) {\n // console.log(`${PAGE} el.offsetTop`, el.offsetTop);\n this.content.scrollToPoint(0, el.offsetTop, 1100); //(x, y, duration);\n } else {\n console.log(`${PAGE} scrollToItem NO EL?`, el);\n }\n }\n\n scrollToTop() {\n this.content.scrollToTop();\n }\n\n openPrivacy() {\n this.openPage('privacy');\n }\n openRules() {\n this.openPage('community-rules');\n }\n openTerms() {\n this.openPage('terms');\n }\n\n openTutorial() {\n this.store.dispatch(resetTourSeenOverview());\n setTimeout(() => {\n // force a change detection in tabs-main\n this.openPage('/stack/discover'); // make sure the tabs are showing\n }, 300);\n }\n\n openTour() {\n this.openPage('/tour');\n }\n\n /*\n NAV \n */\n openPage(name: string) {\n // push to the nav stack and get a back button\n this.navCtrl.navigateForward(`/${name}`);\n }\n openRootPage(name: string) {\n // Reset the content nav to have just this page\n // we wouldn't want the back button to show in this scenario\n this.navCtrl.navigateRoot(`/${name}`);\n }\n\n /**\n * fired when entering a page, before it becomes the active one.\n * Use it for tasks you want to do every time you enter in the view\n * (setting event listeners, updating a table, etc.).\n */\n ionViewWillEnter() {\n // console.log(`${PAGE} ionViewWillEnter - check for 'section' queryParam..`);\n\n const handleAnchor = (anchor: string) => {\n switch (anchor) {\n case 'feedback': {\n this.scrollToId('feedback_form');\n break;\n }\n case 'privacy': {\n this.scrollToId('faq_item-privacy');\n break;\n }\n case 'filmstack': {\n this.scrollToId('faq_item-filmstack');\n break;\n }\n case 'how': {\n this.scrollToId('faq_item-how_stack');\n break;\n }\n case 'project': {\n this.scrollToId('faq_item-project');\n break;\n }\n case 'studio': {\n this.scrollToId('faq_item-studio');\n break;\n }\n case 'story': {\n this.scrollToId('faq_item-tell_story');\n break;\n }\n default: {\n console.log(`${PAGE} unhandled section: ${anchor}`);\n }\n }\n };\n\n const subQueryParams = this.route.queryParamMap.subscribe((queryParams) => {\n // console.log(`${PAGE} queryParams:`,queryParams);\n if (queryParams.get('section')) {\n handleAnchor(queryParams.get('section'));\n }\n });\n // in case we pass as page params, this is how:\n const subParams = this.route.paramMap.subscribe((params) => {\n // console.log(`${PAGE} params:`, params);\n if (params.get('section')) {\n handleAnchor(params.get('section'));\n }\n });\n\n this.subscriptions.add(subQueryParams);\n this.subscriptions.add(subParams);\n }\n\n ionViewWillLeave() {\n this.subscriptions.unsubscribe();\n }\n}\n","<!-- @format -->\n\n<footer>\n <div class=\"footer container\">\n <div class=\"footer__side footer__side--left\">\n <div [ngSwitch]=\"theme\">\n <ng-container *ngSwitchCase=\"'light'\">\n <!-- if light theme, use blue logo -->\n <img class=\"logo\" src=\"/assets/images/logos/Filmstacker-logo-teal.png\" alt=\"Filmstacker\" />\n </ng-container>\n <ng-container *ngSwitchDefault>\n <img class=\"logo\" src=\"/assets/images/filmstacker-logo.png\" alt=\"Filmstacker\" />\n </ng-container>\n </div>\n </div>\n <div class=\"footer__side\">\n <div class=\"footer__side__item\">\n <a routerLink=\"/about\">{{ 'COMMON.ABOUT' | translate }}</a>\n </div>\n <!-- <div class=\"footer__side__item\">\n <a routerLink=\"/support\">{{ 'COMMON.SUPPORT' | translate }}</a>\n </div> -->\n <div class=\"footer__side__item\">\n <a routerLink=\"/community-rules\">{{ 'COMMON.COMMUNITY_GUIDELINES' | translate }}</a>\n </div>\n <div class=\"footer__side__item\">\n <a routerLink=\"/privacy\">{{ 'POLICIES.PRIVACY_POLICY' | translate }}</a>\n </div>\n <div class=\"footer__side__item\">\n <a routerLink=\"/terms\">{{ 'POLICIES.TERMS_USE' | translate }}</a>\n </div>\n <div class=\"footer__side__item\">©{{ copyrightYear }} Filmstacker Inc. {{ 'POLICIES.RIGHTS_RESERVED' | translate }}.</div>\n </div>\n </div>\n <div class=\"tab-bottom-spacer\"></div>\n</footer>\n","/** @format */\n\nimport { Component, Input } from '@angular/core';\nimport { NgSwitch, NgSwitchCase, NgSwitchDefault } from '@angular/common';\nimport { RouterLink } from '@angular/router';\nimport { TranslatePipe } from '@ngx-translate/core';\n\n@Component({\n selector: 'app-footer',\n templateUrl: './footer.component.html',\n styleUrls: ['./footer.component.scss'],\n standalone: true,\n imports: [NgSwitch, NgSwitchCase, NgSwitchDefault, RouterLink, TranslatePipe],\n})\nexport class FooterComponent {\n /** manages which logo */\n @Input() theme: 'light' | 'dark' = 'dark';\n\n copyrightYear = new Date().getFullYear();\n}\n"],"x_google_ignoreList":[]}