{"version":3,"file":"sartography-workflow-lib.mjs","sources":["../../../projects/sartography-workflow-lib/src/lib/util/string-clean.ts","../../../projects/sartography-workflow-lib/src/lib/components/api-errors/api-errors.component.ts","../../../projects/sartography-workflow-lib/src/lib/components/api-errors/api-errors.component.html","../../../projects/sartography-workflow-lib/src/lib/components/sartography-workflow-lib.component.ts","../../../projects/sartography-workflow-lib/src/lib/types/approval.ts","../../../projects/sartography-workflow-lib/src/lib/util/is-signed-in.ts","../../../projects/sartography-workflow-lib/src/lib/services/api.service.ts","../../../projects/sartography-workflow-lib/src/lib/components/session-redirect/session-redirect.component.ts","../../../projects/sartography-workflow-lib/src/lib/components/session-redirect/session-redirect.component.html","../../../projects/sartography-workflow-lib/src/lib/testing/formly/component-factory.ts","../../../projects/sartography-workflow-lib/src/lib/testing/mocks/environment.mocks.ts","../../../projects/sartography-workflow-lib/src/lib/sartography-workflow-lib.module.ts","../../../projects/sartography-workflow-lib/src/lib/modules/pipes/clean-up-ldap-properties.pipe.ts","../../../projects/sartography-workflow-lib/src/lib/modules/pipes/ordinal.pipe.ts","../../../projects/sartography-workflow-lib/src/lib/services/python.service.ts","../../../projects/sartography-workflow-lib/src/lib/modules/pipes/to-formly.pipe.ts","../../../projects/sartography-workflow-lib/src/lib/modules/pipes/unescape-line-breaks.pipe.ts","../../../projects/sartography-workflow-lib/src/lib/modules/pipes/sartography-pipes.module.ts","../../../projects/sartography-workflow-lib/src/lib/modules/forms/autocomplete-field/autocomplete-field.component.ts","../../../projects/sartography-workflow-lib/src/lib/modules/forms/autocomplete-field/autocomplete-field.component.html","../../../projects/sartography-workflow-lib/src/lib/modules/forms/file-base/file-base.component.ts","../../../projects/sartography-workflow-lib/src/lib/modules/forms/file-base/file-base.component.html","../../../projects/sartography-workflow-lib/src/lib/types/file.ts","../../../projects/sartography-workflow-lib/src/lib/util/file-type.ts","../../../projects/sartography-workflow-lib/src/lib/util/is-number-defined.ts","../../../projects/sartography-workflow-lib/src/lib/modules/forms/file-upload/file-value-accessor.directive.ts","../../../projects/sartography-workflow-lib/src/lib/modules/forms/file-field/file-field.component.ts","../../../projects/sartography-workflow-lib/src/lib/modules/forms/file-field/file-field.component.html","../../../projects/sartography-workflow-lib/src/lib/modules/forms/file-upload/file-upload.component.ts","../../../projects/sartography-workflow-lib/src/lib/modules/forms/file-upload/file-upload.component.html","../../../projects/sartography-workflow-lib/src/lib/modules/forms/form-printout/form-printout.component.ts","../../../projects/sartography-workflow-lib/src/lib/modules/forms/form-printout/form-printout.component.html","../../../projects/sartography-workflow-lib/src/lib/modules/forms/help-dialog/help-dialog.component.ts","../../../projects/sartography-workflow-lib/src/lib/modules/forms/help-dialog/help-dialog.component.html","../../../projects/sartography-workflow-lib/src/lib/modules/forms/help-wrapper/help-wrapper.component.ts","../../../projects/sartography-workflow-lib/src/lib/modules/forms/help-wrapper/help-wrapper.component.html","../../../projects/sartography-workflow-lib/src/lib/modules/forms/help-wrapper/help-wrapper.extension.ts","../../../projects/sartography-workflow-lib/src/lib/modules/forms/markdown-description-wrapper/markdown-description-wrapper.component.ts","../../../projects/sartography-workflow-lib/src/lib/modules/forms/markdown-description-wrapper/markdown-description-wrapper.component.html","../../../projects/sartography-workflow-lib/src/lib/modules/forms/markdown-description-wrapper/markdown-description-wrapper.extension.ts","../../../projects/sartography-workflow-lib/src/lib/modules/forms/panel-wrapper/panel-wrapper.component.ts","../../../projects/sartography-workflow-lib/src/lib/modules/forms/panel-wrapper/panel-wrapper.component.html","../../../projects/sartography-workflow-lib/src/lib/modules/forms/radio-data-field/radio-data-field.component.ts","../../../projects/sartography-workflow-lib/src/lib/modules/forms/radio-data-field/radio-data-field.component.html","../../../projects/sartography-workflow-lib/src/lib/modules/forms/validators/email.regex.ts","../../../projects/sartography-workflow-lib/src/lib/modules/forms/validators/phone.regex.ts","../../../projects/sartography-workflow-lib/src/lib/modules/forms/validators/url.regex.ts","../../../projects/sartography-workflow-lib/src/lib/modules/forms/validators/formly.validator.ts","../../../projects/sartography-workflow-lib/src/lib/modules/forms/repeat-section-confirm-dialog/repeat-section-confirm-dialog.component.ts","../../../projects/sartography-workflow-lib/src/lib/modules/forms/repeat-section-confirm-dialog/repeat-section-confirm-dialog.component.html","../../../projects/sartography-workflow-lib/src/lib/modules/forms/repeat-type/repeat-type.component.ts","../../../projects/sartography-workflow-lib/src/lib/modules/forms/repeat-type/repeat-type.component.html","../../../projects/sartography-workflow-lib/src/lib/modules/forms/sartography-forms.module.ts","../../../projects/sartography-workflow-lib/src/lib/modules/forms/validators/email.validator.ts","../../../projects/sartography-workflow-lib/src/lib/modules/forms/validators/password_match.validator.ts","../../../projects/sartography-workflow-lib/src/lib/modules/forms/validators/url.validator.ts","../../../projects/sartography-workflow-lib/src/lib/services/google-analytics.service.ts","../../../projects/sartography-workflow-lib/src/lib/services/user.service.ts","../../../projects/sartography-workflow-lib/src/lib/services/auth-interceptor.ts","../../../projects/sartography-workflow-lib/src/lib/services/error-interceptor.ts","../../../projects/sartography-workflow-lib/src/lib/services/interval/interval.service.ts","../../../projects/sartography-workflow-lib/src/lib/services/script.store.ts","../../../projects/sartography-workflow-lib/src/lib/services/script.service.ts","../../../projects/sartography-workflow-lib/src/lib/services/piodide.service.ts","../../../projects/sartography-workflow-lib/src/lib/static/bpmn.ts","../../../projects/sartography-workflow-lib/src/lib/static/dmn.ts","../../../projects/sartography-workflow-lib/src/lib/types/study.ts","../../../projects/sartography-workflow-lib/src/lib/types/workflow.ts","../../../projects/sartography-workflow-lib/src/lib/testing/mocks/stats.mocks.ts","../../../projects/sartography-workflow-lib/src/lib/testing/mocks/workflow-spec-category.mocks.ts","../../../projects/sartography-workflow-lib/src/lib/testing/mocks/study.mocks.ts","../../../projects/sartography-workflow-lib/src/lib/testing/mocks/workflow-spec.mocks.ts","../../../projects/sartography-workflow-lib/src/lib/types/workflow-task.ts","../../../projects/sartography-workflow-lib/src/lib/testing/mocks/workflow-task.mocks.ts","../../../projects/sartography-workflow-lib/src/lib/testing/mocks/workflow-nav.mocks.ts","../../../projects/sartography-workflow-lib/src/lib/testing/mocks/workflow.mocks.ts","../../../projects/sartography-workflow-lib/src/lib/testing/mocks/file.mocks.ts","../../../projects/sartography-workflow-lib/src/lib/testing/mocks/ngzone.mocks.ts","../../../projects/sartography-workflow-lib/src/lib/testing/mocks/study-status.mocks.ts","../../../projects/sartography-workflow-lib/src/lib/types/task-event.ts","../../../projects/sartography-workflow-lib/src/lib/testing/mocks/task-event.mocks.ts","../../../projects/sartography-workflow-lib/src/lib/testing/mocks/user.mocks.ts","../../../projects/sartography-workflow-lib/src/lib/types/irb.ts","../../../projects/sartography-workflow-lib/src/lib/types/study-event.ts","../../../projects/sartography-workflow-lib/src/lib/types/task-log.ts","../../../projects/sartography-workflow-lib/src/lib/util/diagram-type.ts","../../../projects/sartography-workflow-lib/src/lib/util/move-array-element.ts","../../../projects/sartography-workflow-lib/src/lib/util/scroll-to-top.ts","../../../projects/sartography-workflow-lib/src/public-api.ts","../../../projects/sartography-workflow-lib/src/sartography-workflow-lib.ts"],"sourcesContent":["import {FileType} from '../types/file';\n\n/**\n * Trims non-word characters from the ends of the given string.\n * @param str\n */\nexport const trimString = (str: string): string => !str ? '' : String(str).replace(/(^\\W+)|(\\W+$)/gi, '');\n\nexport const toSnakeCase = (str: string): string => {\n  str = trimString(str);\n  return !str ? '' : String(str)\n    .replace(/\\W+/gi, '_')\n    .toLowerCase();\n};\n\nexport const CameltoSnakeCase = (str: string): string => {\n  str = trimString(str);\n  // * https://stackoverflow.com/questions/15369566/putting-space-in-camel-case-string-using-regular-expression\n  const regex = /(?<!^)([A-Z][a-z]|(?<=[a-z])[A-Z])/g;\n  return !str ? '' : String(str)\n  .replace(regex, (match) => '_' + match.toLowerCase())\n    .toLowerCase();\n};\n\nexport const cleanUpFilename = (str: string, extension: FileType|string): string => {\n  const arr = trimString(str).split('.');\n\n  // Add file extension, if necessary\n  if (arr.length < 2) {\n    arr.push(extension);\n  } else {\n    (arr[arr.length - 1]) = extension;\n  }\n\n  return arr.join('.');\n};\n\nexport const snakeToSpace = (codeString: string): string => codeString.replace(/([^A-Za-z0-9])/g, ' ').toLowerCase();\n","import {Component, Inject} from '@angular/core';\nimport {MAT_BOTTOM_SHEET_DATA, MatBottomSheetRef} from '@angular/material/bottom-sheet';\nimport {ApiError} from '../../types/api';\nimport {snakeToSpace} from '../../util/string-clean';\n\nexport interface ApiErrorsBottomSheetData {\n  apiErrors: ApiError[];\n}\n\n@Component({\n  selector: 'lib-api-errors',\n  templateUrl: './api-errors.component.html',\n  styleUrls: ['./api-errors.component.scss']\n})\nexport class ApiErrorsComponent {\n  apiErrors: ApiError[];\n  snakeToSpace = snakeToSpace;\n\n  constructor(\n    @Inject(MAT_BOTTOM_SHEET_DATA) public data: ApiErrorsBottomSheetData,\n    private bottomSheetRef: MatBottomSheetRef<ApiErrorsComponent>\n  ) {\n    if (data && data.apiErrors && data.apiErrors.length > 0) {\n      this.apiErrors = data.apiErrors;\n    }\n  }\n\n  dismiss(event: MouseEvent) {\n    this.bottomSheetRef.dismiss();\n    event.preventDefault();\n  }\n\n}\n","<div fxLayout=\"row\">\n  <h2>Workflow Errors</h2>\n  <span fxFlex></span>\n  <button mat-icon-button (click)=\"dismiss($event)\"><mat-icon>close</mat-icon></button>\n</div>\n\n<mat-accordion>\n  <mat-expansion-panel hideToggle *ngFor=\"let e of apiErrors\" class=\"api-error\">\n    <mat-expansion-panel-header collapsedHeight=\"120px\">\n      <mat-panel-title>\n        <div class=\"title-section\">\n          <h4 *ngIf=\"e.code\" class=\"title-case\">{{snakeToSpace(e.code)}}</h4>\n          <div *ngIf=\"e.task_id && !e.task_name\">Task ID: {{e.task_id}}</div>\n          <div *ngIf=\"e.task_name && !e.task_id\">Task Name: {{e.task_name}}</div>\n          <div *ngIf=\"e.tag\">Tag: {{e.tag}}</div>\n          <div *ngIf=\"e.line_number\">Line #: {{e.line_number}}</div>\n          <div *ngIf=\"e.file_name\">Task Trace(File):\n            <div *ngFor=\"let trace of e.task_trace\">{{trace}}</div>\n          </div>\n\n        </div>\n      </mat-panel-title>\n      <mat-panel-description>\n        <div>\n          <div class=\"message\" *ngIf=\"e.message\">{{e.message}}</div>\n          <div *ngIf=\"e.error_line\">\n            <div>Error on line #{{e.line_number}}</div>\n            <div class=\"line\" *ngIf=\"e.error_line\">{{e.error_line}}</div>\n          </div>\n          <div class=\"hint\" *ngIf=\"e.hint\">{{e.hint}}</div>\n        </div>\n      </mat-panel-description>\n    </mat-expansion-panel-header>\n    <div mat-line class=\"code-viewer-code\">\n      <pre><code id=\"jsonCode\" [highlight]=\"e.task_data | json\" [languages]=\"['json']\"></code></pre>\n    </div>\n  </mat-expansion-panel>\n</mat-accordion>\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n  selector: 'lib-sartography-workflow-lib',\n  template: `\n    <p>\n      sartography-workflow-lib works!\n    </p>\n  `,\n  styles: []\n})\nexport class SartographyWorkflowLibComponent {\n\n  constructor() { }\n\n}\n","export enum ApprovalStatus {\n  PENDING = 'PENDING',\n  AWAITING = 'AWAITING',\n  APPROVED = 'APPROVED',\n  DECLINED = 'DECLINED',\n  CANCELED = 'CANCELED'\n}\n\nexport enum ApprovalStatusLabels {\n  PENDING = 'Pending your approval',\n  AWAITING = 'Awaiting review by another approver',\n  APPROVED = 'Approved',\n  DECLINED = 'Declined',\n  CANCELED = 'Canceled'\n}\n\nexport interface ApprovalFile {\n  id: number;\n  name: string;\n  content_type: string;\n}\n\nexport interface ApprovalPerson {\n  uid: string;\n  display_name: string;\n  given_name?: string;\n  email_address?: string;\n  telephone_number?: string;\n  title: string;\n  department: string;\n  affiliation?: string;\n  sponsor_type?: string;\n}\n\nexport interface Approval {\n  id: number;\n  study_id: number;\n  workflow_id: number;\n  message: string;\n  status: ApprovalStatus;\n  version: number;\n  title: string;\n  associated_files: ApprovalFile[];\n  approver: ApprovalPerson;\n  related_approvals: Approval[];\n  primary_investigator: ApprovalPerson;\n  date_created: Date;\n  date_approved?: Date;\n}\n\nexport interface ApprovalCounts {\n  AWAITING: number;\n  PENDING: number;\n  APPROVED: number;\n  DECLINED: number;\n  CANCELED?: number;  // API doesn't return number of canceled approvals\n}\n","export const isSignedIn = (): boolean => !!localStorage.getItem('token');\n","import { APP_BASE_HREF } from '@angular/common';\nimport { HttpClient, HttpParams, HttpResponse } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { Observable, of, throwError, timer } from 'rxjs';\nimport { catchError, debounce } from 'rxjs/operators';\nimport { ApiError } from '../types/api';\nimport { AppEnvironment } from '../types/app-environment';\nimport { Approval, ApprovalCounts, ApprovalStatus } from '../types/approval';\nimport { DocumentDirectory, FileMeta, FileParams } from '../types/file';\nimport { ScriptInfo } from '../types/script-info';\nimport { Study , StudyAssociate} from '../types/study';\nimport { TaskAction, TaskEvent } from '../types/task-event';\nimport { User } from '../types/user';\nimport { Workflow, WorkflowSpec, WorkflowSpecCategory } from '../types/workflow';\nimport { WorkflowTask } from '../types/workflow-task';\nimport { isSignedIn } from '../util/is-signed-in';\nimport {TaskLogQuery} from '../types/task-log';\nimport {GitRepo} from \"../types/git\";\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ApiService {\n  apiRoot: string;\n\n  endpoints = {\n    // User Files\n    fileList: '/file',\n    file: '/file/{file_id}',\n    fileData: '/file/{file_id}/data',\n    ssDMN: '/dmn_from_ss',\n\n\n    // Workflow Specification Files\n    specFileList: '/workflow-specification/{spec_id}/file',\n    specFile: '/workflow-specification/{spec_id}/file/{file_name}',\n    specFileData: '/workflow-specification/{spec_id}/file/{file_name}/data',\n    specFileFilename: '/workflow-specification/{spec_id}/file/{file_name}/filename',\n\n    // Reference Files\n    referenceFileList: '/reference_file',\n    referenceFile: '/reference_file/{name}',\n    referenceFileData: '/reference_file/{name}/data',\n\n    // Configurator Tools\n    scriptList: '/list_scripts',\n    renderDocx: '/render_docx',\n    renderMarkdown: '/render_markdown',\n\n    // Users\n    login: '/login',\n    user: '/user',\n    userList: '/list_users',\n    ldap: '/ldap',\n\n    // Studies\n    studyList: '/study',\n    study: '/study/{study_id}',\n    studyApprovals: '/study/{study_id}/approvals',\n    studyAssociates: '/study/{study_id}/associates',\n    studyLogs: '/study/{study_id}/log',\n\n    // Approvals\n    approvalCounts: '/approval-counts',\n    approvalList: '/approval',\n    approval: '/approval/{approval_id}',\n\n    // Workflow Specifications\n    workflowSpecList: '/workflow-specification',\n    workflowSpec: '/workflow-specification/{spec_id}',\n    workflowSpecListStandalone: '/workflow-specification?standalone=true',\n    workflowSpecListLibraries: '/workflow-specification?libraries=true',\n    updateWorkflowLibrary: '/workflow-specification/{spec_id}/library/{library_id}',\n    workflowSpecValidate: '/workflow-specification/{spec_id}/validate',\n    reorderWorkflowSpecification: '/workflow-specification/{spec_id}/reorder',\n\n    // Workflow Specification Category\n    workflowSpecCategoryList: '/workflow-specification-category',\n    workflowSpecCategory: '/workflow-specification-category/{cat_id}',\n    reorderWorkflowCategory: '/workflow-specification-category/{cat_id}/reorder',\n\n    // Document Directory\n    documentDirectory: '/document_directory/{study_id}',\n\n    // Workflows and Tasks\n    taskEvents: '/task_events',\n    workflow: '/workflow/{workflow_id}',\n    workflowRestart: '/workflow/{workflow_id}/restart',\n    taskForWorkflow: '/workflow/{workflow_id}/task/{task_id}',\n    taskDataForWorkflow: '/workflow/{workflow_id}/task/{task_id}/data',\n    setCurrentTaskForWorkflow: '/workflow/{workflow_id}/task/{task_id}/set_token',\n    fieldOptionsLookup: '/workflow/{workflow_id}/lookup/{task_spec_name}/{field_id}',\n    workflowLogs: '/workflow/{workflow_id}/log',\n\n    // Git Repo\n    gitRepo: '/git_repo',\n    gitRepoMerge: '/git_repo/merge',\n    gitRepoPush: '/git_repo/push',\n    gitRepoPull: '/git_repo/pull',\n\n    // Tools\n    eval: '/eval',\n\n    // Message\n    messageStatus: '/message/status',\n    messageStatusUp: '/message/status/up',\n    messageStatusDown: '/message/status/down',\n    messageAlternate: '/message/alternate',\n    messageAlternateUp: '/message/alternate/up',\n    messageAlternateDown: '/message/alternate/down',\n\n  };\n\n  constructor(\n    @Inject('APP_ENVIRONMENT') private environment: AppEnvironment,\n    @Inject(APP_BASE_HREF) public baseHref: string,\n    private httpClient: HttpClient,\n  ) {\n    this.apiRoot = environment.api;\n  }\n\n  private static _handleError(error: ApiError): Observable<never> {\n    return throwError(error.message || 'Could not complete your request; please try again later.');\n  }\n\n\n  /** Get the string value from a given URL */\n  getStringFromUrl(url: string): Observable<string> {\n    return this.httpClient\n      .get(url, { responseType: 'text' })\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  /** Get all Studies */\n  getStudies(): Observable<Study[]> {\n    const url = this.apiRoot + this.endpoints.studyList;\n\n    return this.httpClient\n      .get<Study[]>(url)\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  /** Add a Study */\n  addStudy(study: Study): Observable<Study> {\n    const url = this.apiRoot + this.endpoints.studyList;\n\n    return this.httpClient\n      .post<Study>(url, study)\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  getDocumentDirectory(studyId: number, workflowId?: number, includeArchived?: boolean): Observable<DocumentDirectory[]> {\n    let url = this.apiRoot + this.endpoints.documentDirectory\n      .replace('{study_id}', studyId.toString());\n    let params = new HttpParams();\n    if (workflowId) {\n      params = params.set('workflow_id', workflowId);\n    }\n    if (includeArchived) {\n      params = params.set('include_archived', includeArchived);\n    }\n    return this.httpClient\n      .get<DocumentDirectory[]>(url, {params})\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  /** Get a specific Study */\n  getStudy(studyId: number, updateStatus = false): Observable<Study> {\n    let params = new HttpParams();\n    params = params.set('update_status', String(updateStatus));\n\n\n    const url = this.apiRoot + this.endpoints.study\n      .replace('{study_id}', studyId.toString());\n\n    return this.httpClient\n      .get<Study>(url, { params })\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  /** Get logs for a Study */\n  getStudyLogs(studyId: number, query: TaskLogQuery): Observable<TaskLogQuery> {\n    const url = this.apiRoot + this.endpoints.studyLogs\n      .replace('{study_id}', studyId.toString());\n\n    return this.httpClient\n      .put<TaskLogQuery>(url, query)\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n\n  /** Update a specific Study */\n  updateStudy(studyId: number, study: Study): Observable<Study> {\n    const url = this.apiRoot + this.endpoints.study\n      .replace('{study_id}', studyId.toString());\n\n    return this.httpClient\n      .put<Study>(url, study)\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  /** Delete a specific Study */\n  deleteStudy(studyId: number): Observable<null> {\n    const url = this.apiRoot + this.endpoints.study\n      .replace('{study_id}', studyId.toString());\n\n    return this.httpClient\n      .delete<null>(url)\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  /** Delete a library from a workflow */\n  deleteWorkflowLibrary(workflowSpecId: string, librarySpecId: string): Observable<null> {\n    const url = this.apiRoot + this.endpoints.updateWorkflowLibrary\n      .replace('{spec_id}', workflowSpecId)\n      .replace('{library_id}', librarySpecId);\n    return this.httpClient\n      .delete<null>(url)\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  /** Return all users related to a study and their access + role */\n  getStudyAssociates(studyId: number): Observable<StudyAssociate[]> {\n    const url = this.apiRoot + this.endpoints.studyAssociates\n      .replace('{study_id}', studyId.toString());\n\n    return this.httpClient\n      .get<StudyAssociate[]>(url)\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n\n  /** Add a library to a workflow */\n  addWorkflowLibrary(workflowSpecId: string, librarySpecId: string): Observable<null> {\n    const url = this.apiRoot + this.endpoints.updateWorkflowLibrary\n      .replace('{spec_id}', workflowSpecId)\n      .replace('{library_id}', librarySpecId);\n    return this.httpClient\n      .post<null>(url,'')\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n\n\n\n  /** Get a specific Study */\n  getStudyApprovals(studyId: number): Observable<Approval[]> {\n    const url = this.apiRoot + this.endpoints.studyApprovals\n      .replace('{study_id}', studyId.toString());\n\n    return this.httpClient\n      .get<Approval[]>(url)\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  /** Get Approval counts by status */\n  getApprovalCounts(asUser: string): Observable<ApprovalCounts> {\n    let params = new HttpParams();\n    if (asUser) {\n      params = params.set('as_user', asUser);\n    }\n\n    const url = this.apiRoot + this.endpoints.approvalCounts;\n    return this.httpClient\n      .get<ApprovalCounts>(url, { params })\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  /** Get all Approvals */\n  getApprovals(status?: ApprovalStatus, asUser = null): Observable<Approval[]> {\n    let params = new HttpParams();\n    if (status) {\n      params = params.set('status', status.valueOf());\n    } else {\n      params = params.set('status', ApprovalStatus.PENDING.valueOf());\n    }\n    if (asUser) {\n      params = params.set('as_user', asUser);\n    }\n    const url = this.apiRoot + this.endpoints.approvalList;\n    return this.httpClient\n      .get<Approval[]>(url, { params })\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  /** Update a single Approval */\n  updateApproval(approval: Approval): Observable<Approval> {\n    const url = this.apiRoot + this.endpoints.approval\n      .replace('{approval_id}', approval.id.toString());\n    return this.httpClient\n      .put<Approval>(url, approval)\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  /** Get all Workflow Specifications */\n  getWorkflowSpecList(): Observable<WorkflowSpec[]> {\n    const url = this.apiRoot + this.endpoints.workflowSpecList;\n\n    return this.httpClient\n      .get<WorkflowSpec[]>(url)\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  /** Add a Workflow Specification */\n  addWorkflowSpecification(newSpec: WorkflowSpec): Observable<WorkflowSpec> {\n    const url = this.apiRoot + this.endpoints.workflowSpecList;\n\n    return this.httpClient\n      .post<WorkflowSpec>(url, newSpec)\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  /** Get a Workflow Specification */\n  getWorkflowSpecification(specId: string): Observable<WorkflowSpec> {\n    const url = this.apiRoot + this.endpoints.workflowSpec\n      .replace('{spec_id}', specId);\n\n    return this.httpClient\n      .get<WorkflowSpec>(url)\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  /** Get a list of standalone workflows */\n  getWorkflowSpecificationStandalone(): Observable<WorkflowSpec[]> {\n    const url = this.apiRoot + this.endpoints.workflowSpecListStandalone;\n\n    return this.httpClient\n      .get<WorkflowSpec[]>(url)\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  /** Get a list of standalone workflows */\n  getWorkflowSpecificationLibraries(): Observable<WorkflowSpec[]> {\n    const url = this.apiRoot + this.endpoints.workflowSpecListLibraries;\n\n    return this.httpClient\n      .get<WorkflowSpec[]>(url)\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n\n  /** Get a workflow from a workflow spec */\n  getWorkflowFromSpec(workflowSpecId: string): Observable<Workflow> {\n    const url = this.apiRoot + this.endpoints.workflowSpec\n      .replace('{spec_id}', workflowSpecId);\n\n    return this.httpClient\n      .post<Workflow>(url, {})\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  /** Validate a Workflow Specification */\n  validateWorkflowSpecification(specId: string, testUntil: string = '', studyId?: number): Observable<ApiError[]> {\n    let params = new HttpParams();\n\n    if (testUntil !== '') {\n      params = params.set('test_until', String(testUntil));\n    }\n\n    if (studyId) {\n      params = params.set('study_id', studyId.toString());\n    }\n\n    const url = this.apiRoot + this.endpoints.workflowSpecValidate.replace('{spec_id}', specId);\n    return this.httpClient.get<ApiError[]>(url, { params })\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  /** Update a Workflow Specification */\n  updateWorkflowSpecification(specId: string, newSpec: WorkflowSpec): Observable<WorkflowSpec> {\n    const url = this.apiRoot + this.endpoints.workflowSpec\n      .replace('{spec_id}', specId);\n\n    return this.httpClient\n      .put<WorkflowSpec>(url, newSpec)\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  /** Delete a Workflow Specification */\n  deleteWorkflowSpecification(specId: string): Observable<null> {\n    const url = this.apiRoot + this.endpoints.workflowSpec\n      .replace('{spec_id}', specId);\n\n    return this.httpClient\n      .delete<null>(url)\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  /** Get all Workflow Spec Categories */\n  getWorkflowSpecCategoryList(): Observable<WorkflowSpecCategory[]> {\n    const url = this.apiRoot + this.endpoints.workflowSpecCategoryList;\n\n    return this.httpClient\n      .get<WorkflowSpecCategory[]>(url)\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  /** Add a Workflow Specification */\n  addWorkflowSpecCategory(newCat: WorkflowSpecCategory): Observable<WorkflowSpecCategory> {\n    const url = this.apiRoot + this.endpoints.workflowSpecCategoryList;\n\n    return this.httpClient\n      .post<WorkflowSpecCategory>(url, newCat)\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  /** Get a Workflow Spec Category */\n  getWorkflowSpecCategory(catId: string): Observable<WorkflowSpecCategory> {\n    const url = this.apiRoot + this.endpoints.workflowSpecCategory\n      .replace('{cat_id}', catId);\n\n    return this.httpClient\n      .get<WorkflowSpecCategory>(url)\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  /** Update a Workflow Spec Category */\n  updateWorkflowSpecCategory(catId: string, newCat: WorkflowSpecCategory): Observable<WorkflowSpecCategory> {\n    const url = this.apiRoot + this.endpoints.workflowSpecCategory\n      .replace('{cat_id}', catId);\n\n    return this.httpClient\n      .put<WorkflowSpecCategory>(url, newCat)\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  /** Delete a Workflow Spec Category */\n  deleteWorkflowSpecCategory(catId: string): Observable<null> {\n    const url = this.apiRoot + this.endpoints.workflowSpecCategory\n      .replace('{cat_id}', catId);\n\n    return this.httpClient\n      .delete<null>(url)\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  getSpecFileMetas(workflowSpecId: string) {\n    const url = this.apiRoot + this.endpoints.specFileList\n          .replace('{spec_id}', workflowSpecId.toString());\n\n    let params = new HttpParams();\n    params = params.set(\"workflow_spec_id\", workflowSpecId)\n    return this.httpClient\n      .get<FileMeta[]>(url, { params })\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  /** Get all User uploaded File Metadata for a given Workflow Instance, Study, or Task */\n  getFileMetas(fileParams: FileParams): Observable<FileMeta[]> {\n    const url = this.apiRoot + this.endpoints.fileList;\n    const params = this._paramsToHttpParams(fileParams);\n\n    return this.httpClient\n      .get<FileMeta[]>(url, { params })\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n\n  /** Reorder workflow spec categories */\n  reorderWorkflowCategory(catId: string, direction: string): Observable<WorkflowSpecCategory[]> {\n    const url = this.apiRoot + this.endpoints.reorderWorkflowCategory\n      .replace('{cat_id}', catId);\n\n    const params = new HttpParams().set('direction', direction);\n    return this.httpClient\n      .put<WorkflowSpecCategory[]>(url, {},{ params })\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  /** Reorder workflow specs */\n  reorderWorkflowSpecification(specId: string, direction: string): Observable<WorkflowSpec[]> {\n    const url = this.apiRoot + this.endpoints.reorderWorkflowSpecification\n      .replace('{spec_id}', specId);\n\n    const params = new HttpParams().set('direction', direction);\n    return this.httpClient\n      .put<WorkflowSpec[]>(url, {},{ params })\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  /** Get all Files and their File Metadata for a running workflow */\n  listWorkflowFiles(workflowId: number): Observable<FileMeta[]> {\n    const url = this.apiRoot + this.endpoints.fileList;\n    const params = new HttpParams().set('workflow_id', workflowId.toString());\n    return this.httpClient\n      .get<FileMeta[]>(url, { params })\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  addSpecFile(workflowSpec: WorkflowSpec, fileMeta: FileMeta, file: File): Observable<FileMeta> {\n    const fileParams = {workflow_spec_id: workflowSpec.id}\n    const url = this.apiRoot + this.endpoints.specFileList\n      .replace('{spec_id}', workflowSpec.id)\n      .replace('{file_name}', file.name);\n    const params = this._paramsToHttpParams(fileParams);\n    const formData = new FormData();\n    formData.append('file', file);\n\n    return this.httpClient\n      .post<FileMeta>(url, formData, { params })\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  /** Add a File */\n  addFile(fileParams: FileParams, fileMeta: FileMeta, file: File,\n          base_url: string = this.endpoints.fileList): Observable<FileMeta> {\n    const url = this.apiRoot + base_url;\n    const params = this._paramsToHttpParams(fileParams);\n    const formData = new FormData();\n    formData.append('file', file);\n\n    return this.httpClient\n      .post<FileMeta>(url, formData, { params })\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n// TODO: this isnt used anywhere  but fileMetaID is definitely wrong\n  getSpecFileMeta(workflowSpec: WorkflowSpec, fileName: string, fileMetaId: number): Observable<FileMeta> {\n    const url = this.endpoints.specFile\n      .replace('{spec_id}', workflowSpec.id)\n      .replace('{file_name}', fileName)\n    return this.getFileMeta(fileMetaId, url);\n  }\n\n  /** Get metadata for one specific File */\n  getFileMeta(fileMetaId: number, base_url: String = this.endpoints.file): Observable<FileMeta> {\n    const url = this.apiRoot + base_url\n      .replace('{file_id}', fileMetaId.toString());\n\n    return this.httpClient\n      .get<FileMeta>(url)\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  /** Update the File metadata for Workflow Specification File */\n  updateSpecFileMeta(workflowSpec: WorkflowSpec, fileMeta: FileMeta, is_primary: boolean): Observable<FileMeta> {\n        // '/workflow-specification/{spec_id}/file/{file_name}',\n    const url = this.apiRoot + this.endpoints.specFile\n      .replace('{spec_id}', workflowSpec.id)\n      .replace('{file_name}', fileMeta.name)\n\n    const params = new HttpParams().set('is_primary', is_primary);\n\n    return this.httpClient\n      .put<FileMeta>(url, fileMeta, { params })\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  updateSpecFileFilename(workflowSpec: WorkflowSpec, fileMeta: FileMeta, newFilename: string): Observable<FileMeta> {\n    const url = this.apiRoot + this.endpoints.specFileFilename\n      .replace('{spec_id}', workflowSpec.id)\n      .replace('{file_name}', fileMeta.name)\n\n    const params = new HttpParams().set('new_filename', newFilename)\n\n    return this.httpClient\n      .put<FileMeta>(url, fileMeta, { params })\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  /** Update File Metadata */\n  updateFileMeta(fileMeta: FileMeta, base_url: String = this.endpoints.file): Observable<FileMeta> {\n    const url = this.apiRoot + base_url\n      .replace('{file_id}', fileMeta.id.toString());\n\n    return this.httpClient\n      .put<FileMeta>(url, fileMeta)\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  /** Delete the File metadata for Workflow Specification File */\n  deleteSpecFileMeta(workflowSpec: WorkflowSpec, fileName: string): Observable<null> {\n        // '/workflow-specification/{spec_id}/file/{file_name}',\n    const url = this.apiRoot + this.endpoints.specFile\n      .replace('{spec_id}', workflowSpec.id)\n      .replace('{file_name}', fileName);\n\n    return this.httpClient\n      .delete<null>(url)\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  /** Delete the File metadata for Workflow Specification File */\n  deleteRefFileMeta(fileMetaId: number): Observable<null> {\n    return this.deleteFileMeta(fileMetaId, this.endpoints.referenceFile)\n  }\n\n  deleteFile(fileId: number, base_url: String = this.endpoints.file): Observable<null> {\n    const url = this.apiRoot + base_url\n      .replace('{file_id}', fileId.toString());\n\n    return this.httpClient\n      .delete<null>(url)\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  deleteFileMeta(fileMetaId: number, base_url: String = this.endpoints.file): Observable<null> {\n    const url = this.apiRoot + base_url\n      .replace('{file_id}', fileMetaId.toString());\n\n    return this.httpClient\n      .delete<null>(url)\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  /** Get the File metadata for Workflow Specification File */\n  getSpecFileData(workflowSpec: WorkflowSpec, fileName: string): Observable<HttpResponse<ArrayBuffer>> {\n    const url = this.apiRoot + this.endpoints.specFileData\n      .replace('{spec_id}', workflowSpec.id)\n      .replace('{file_name}', fileName)\n\n    return this.httpClient\n      .get(url, {observe: 'response', responseType: 'arraybuffer'})\n      .pipe(catchError(err => ApiService._handleError(err)));\n\n  }\n\n  /** Get the File Data for specific File Metadata */\n  getFileData(fileId: number, base_url: String = this.endpoints.fileData): Observable<HttpResponse<ArrayBuffer>> {\n    const url = this.apiRoot + base_url\n      .replace('{file_id}', fileId.toString());\n\n    return this.httpClient\n      .get(url, { observe: 'response', responseType: 'arraybuffer' })\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  /** Update the File metadata for Workflow Specification File */\n  updateSpecFileData(workflowSpec: WorkflowSpec, fileMeta: FileMeta, file: File): Observable<FileMeta> {\n        // specFileData: '/workflow-specification/{spec_id}/file/{file_name}/data',\n    const url = this.apiRoot + this.endpoints.specFileData\n      .replace('{spec_id}', workflowSpec.id)\n      .replace('{file_name}', fileMeta.name)\n     const formData = new FormData();\n    formData.append('file', file);\n\n    return this.httpClient\n      .put<FileMeta>(url, formData)\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  /** Update the File Data for specific File Metadata */\n  updateFileData(fileMeta: FileMeta, file: File, base_url = this.endpoints.fileData): Observable<FileMeta> {\n    const url = this.apiRoot + base_url\n      .replace('{file_id}', fileMeta.id.toString());\n    const formData = new FormData();\n    formData.append('file', file);\n\n    return this.httpClient\n      .put<FileMeta>(url, formData)\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  /** Create a DMN file from a spreadsheet  */\n  createDMNFromSS(file: File): Observable<HttpResponse<ArrayBuffer>> {\n    const url = this.apiRoot + this.endpoints.ssDMN;\n    const formData = new FormData();\n    formData.append('file', file);\n\n    return this.httpClient\n      .post(url, formData, { observe: 'response', responseType: 'arraybuffer' })\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  /** Get Task Events */\n  getTaskEvents(action?: TaskAction, onlylanes?: boolean, studyId?: number, workflowId?: number): Observable<TaskEvent[]> {\n    const url = this.apiRoot + this.endpoints.taskEvents;\n    let httpParams = new HttpParams();\n    if (action)  { httpParams = httpParams.set('action', action); }\n    if (onlylanes) { httpParams = httpParams.set('onlylanes', onlylanes.toString())}\n    if (studyId) { httpParams = httpParams.set('study', studyId.toString()); }\n    if (workflowId) { httpParams = httpParams.set('workflow', workflowId.toString()); }\n\n    return this.httpClient\n      .get<TaskEvent[]>(url + '?' + httpParams.toString())\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  /** Get a specific Workflow */\n  getWorkflow(workflowId: number, doEngineSteps: boolean = true): Observable<Workflow> {\n    let params = new HttpParams();\n    params = params.set('do_engine_steps', doEngineSteps.toString());\n    const url = this.apiRoot + this.endpoints.workflow\n      .replace('{workflow_id}', workflowId.toString());\n\n    return this.httpClient\n      .get<Workflow>(url, { params })\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  restartWorkflow(workflowId: number, clearData: boolean = false, deleteFiles: boolean = false): Observable<Workflow> {\n    let params = new HttpParams();\n    params = params.set('clear_data', clearData.toString());\n    params = params.set('delete_files', deleteFiles.toString());\n    const url = this.apiRoot + this.endpoints.workflowRestart\n      .replace('{workflow_id}', workflowId.toString());\n\n    return this.httpClient\n      .get<Workflow>(url, { params })\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  /** Get a specific Task for a Workflow */\n  getTaskForWorkflow(workflowId: number, taskId: string): Observable<WorkflowTask> {\n    const url = this.apiRoot + this.endpoints.taskForWorkflow\n      .replace('{workflow_id}', workflowId.toString())\n      .replace('{task_id}', taskId);\n\n    return this.httpClient.get<WorkflowTask>(url)\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  /** Update Task Data for a specific Workflow Task\n   * The updateAll flag will cause all remaining tasks in a multistance task to receive the same values.\n   */\n  updateTaskDataForWorkflow(workflowId: number, taskId: string, data: any, updateAll = false, terminateLoop = false): Observable<Workflow> {\n    let url = this.apiRoot + this.endpoints.taskDataForWorkflow\n      .replace('{workflow_id}', workflowId.toString())\n      .replace('{task_id}', taskId);\n\n    let httpParams = new HttpParams();\n\n    if (updateAll) {\n      httpParams = httpParams.append('update_all', 'True');\n    }\n    if (terminateLoop) {\n      httpParams = httpParams.append('terminate_loop', 'True');\n    }\n\n    if (httpParams.toString() !== '') {\n      url = url + '?' + httpParams.toString();\n    }\n\n    return this.httpClient.put<Workflow>(url, data)\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  /** Update Task Data for a specific Workflow Task */\n  setCurrentTaskForWorkflow(workflowId: number, taskId: string): Observable<Workflow> {\n    const url = this.apiRoot + this.endpoints.setCurrentTaskForWorkflow\n      .replace('{workflow_id}', workflowId.toString())\n      .replace('{task_id}', taskId);\n\n    return this.httpClient.put<Workflow>(url, {})\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  /** Get logs for a Workflow */\n  getWorkflowLogs(workflowId: number, query: TaskLogQuery): Observable<TaskLogQuery> {\n    const url = this.apiRoot + this.endpoints.workflowLogs\n      .replace('{workflow_id}', workflowId.toString());\n\n    return this.httpClient\n      .put<TaskLogQuery>(url, query)\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n\n  /** add Reference File */\n  addReferenceFile(fileMeta: FileMeta, file:File) {\n    const url = this.apiRoot + this.endpoints.referenceFileList;\n    const formData = new FormData();\n    formData.append('file', file);\n\n    return this.httpClient\n      .post<FileMeta>(url, formData)\n      .pipe(catchError(err => ApiService._handleError(err)))\n\n  }\n\n  /** listReferenceFiles */\n  listReferenceFiles(): Observable<FileMeta[]> {\n    const url = this.apiRoot + this.endpoints.referenceFileList;\n\n    return this.httpClient\n      .get<FileMeta[]>(url)\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  /** getReferenceFile */\n  getReferenceFile(name: string): Observable<FileMeta> {\n    const url = this.apiRoot + this.endpoints.referenceFile\n      .replace('{name}', name);\n\n    return this.httpClient\n      .get<FileMeta>(url)\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  /** getReferenceFile */\n  getReferenceFileData(name: string): Observable<HttpResponse<ArrayBuffer>> {\n    const url = this.apiRoot + this.endpoints.referenceFileData\n      .replace('{name}', name);\n\n    return this.httpClient\n      .get(url, { observe: 'response', responseType: 'arraybuffer' })\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  /** updateReferenceFile */\n  updateReferenceFile(name: string, newFile: File): Observable<HttpResponse<ArrayBuffer>> {\n    const url = this.apiRoot + this.endpoints.referenceFileData\n      .replace('{name}', name);\n    const formData = new FormData();\n    formData.append('file', newFile);\n\n    return this.httpClient\n      .put(url, formData, { observe: 'response', responseType: 'arraybuffer' })\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  /** listScripts */\n  listScripts(): Observable<ScriptInfo[]> {\n    const url = this.apiRoot + this.endpoints.scriptList;\n\n    return this.httpClient\n      .get<ScriptInfo[]>(url)\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  /** isSignedIn */\n  isSignedIn(): boolean {\n    if (this.environment.production) {\n      return true;\n    } else {\n      return isSignedIn();\n    }\n  }\n\n  /** listUsers */\n  listUsers(): Observable<User[]> {\n    const url = this.apiRoot + this.endpoints.userList;\n    return this.httpClient\n      .get<User[]>(url)\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  /** getUser\n   *\n   *  adminImpersonateUid: string\n   *    If the currently-logged-in user is an admin, will return the user with the given uid. If the uid\n   *    is not provided or invalid, impersonation mode will be turned off.\n   *\n   */\n  getUser(adminImpersonateUid?: string): Observable<User> {\n    if (isSignedIn()) {\n      const url = this.apiRoot + this.endpoints.user;\n      const httpParams = new HttpParams().append('admin_impersonate_uid', adminImpersonateUid);\n      const queryString = adminImpersonateUid ? '?' + httpParams.toString() : '';\n      return this.httpClient\n        .get<User>(url + queryString)\n        .pipe(catchError(err => ApiService._handleError(err)));\n    } else {\n      return of(null);\n    }\n  }\n\n  /** openSession */\n  redirectToLogin() {\n    // get the url of the page the user is currently on, and save it in\n    // local storage.\n    localStorage.setItem('prev_url', location.href);\n    const returnUrl = location.origin + this.baseHref + 'session';\n    let httpParams = new HttpParams().set('redirect_url', returnUrl);\n    this.openUrl(this.apiRoot + this.endpoints.login + '?' + httpParams.toString());\n  }\n\n  openUrl(url) {\n    location.href = url;\n  }\n\n  /** lookupFieldOptions */\n  lookupFieldOptions(query: string, fileParams?: FileParams, value: string=null, limit = 5): Observable<Object[]> {\n    const url = this.apiRoot + this.endpoints.fieldOptionsLookup\n      .replace('{workflow_id}', fileParams.workflow_id.toString())\n      .replace('{task_spec_name}', fileParams.task_spec_name.toString())\n      .replace('{field_id}', fileParams.irb_doc_code as string);\n\n    if (fileParams.task_spec_name === null) {\n      return throwError('The task spec name is not defined. Lookups will fail');\n    }\n\n    // Initialize Params Object\n    let params = new HttpParams()\n      .append('query', query)\n      .append('limit', limit.toString());\n\n    if(value) {\n      params = params.append('value', value);\n    }\n\n    return this.httpClient\n      .get<Object[]>(url, { params })\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  /** LDAP Lookup without Context */\n  ldapLookup(query: string, limit = 5): Observable<Object[]> {\n    const url = this.apiRoot + this.endpoints.ldap;\n\n    // Initialize Params Object\n    let params = new HttpParams()\n      .append('query', query)\n      .append('limit', limit.toString());\n\n    return this.httpClient\n      .get<Object[]>(url, { params })\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  /** Get the git repo */\n  gitRepo(): Observable<GitRepo> {\n     const url = this.apiRoot + this.endpoints.gitRepo;\n     return this.httpClient\n       .get<GitRepo>(url)\n       .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  gitRepoMerge(branch: string) {\n    const url = this.apiRoot + this.endpoints.gitRepoMerge;\n    let params = new HttpParams()\n      .append('branch', branch)\n\n     return this.httpClient\n       .get<Object[]>(url, { params })\n       .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  gitRepoPush(comment: string)  {\n    const url = this.apiRoot + this.endpoints.gitRepoPush;\n    let params = new HttpParams()\n      .append('comment', comment)\n\n     return this.httpClient\n       .get<Object[]>(url, { params })\n       .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  gitRepoPull(): Observable<Object[]>  {\n    const url = this.apiRoot + this.endpoints.gitRepoPull;\n     return this.httpClient\n       .get<Object[]>(url)\n       .pipe(catchError(err => ApiService._handleError(err)));\n  }\n\n  /** Evaluate an expression using the api, which should return a true or false value */\n  eval(expression: string, data: any, key: string): Observable<any> {\n    const url = this.apiRoot + this.endpoints.eval;\n    const body = {expression, data, key};\n    return this.httpClient.put<any>(url, body)\n      .pipe(debounce(() => timer(10000)));\n  }\n\n  /** Construct HttpParams from params object. Only adds params that have been set. */\n  private _paramsToHttpParams(params: any): HttpParams {\n    const paramsObject = {};\n    Object.keys(params).forEach(k => {\n      const val = params[k];\n      if ((val !== undefined) && (val !== null)) {\n        paramsObject[k] = val.toString();\n      }\n    });\n    return new HttpParams({ fromObject: paramsObject });\n  }\n\n  getMessageStatus(): Observable<any> {\n    const url = this.apiRoot + this.endpoints.messageStatus;\n    return this.httpClient.get<any>(url)\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n  setMessageStatusUp(message: string): Observable<any> {\n    const url = this.apiRoot + this.endpoints.messageStatusUp;\n    return this.httpClient\n      .put<any>(url, { message })\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n  setMessageStatusDown(): Observable<any> {\n    const url = this.apiRoot + this.endpoints.messageStatusDown;\n    return this.httpClient\n      .put<any>(url, { message: null })\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n  getMessageAlternate(): Observable<any> {\n    const url = this.apiRoot + this.endpoints.messageAlternate;\n    return this.httpClient.get<any>(url)\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n  setMessageAlternateUp(message: string): Observable<any> {\n    const url = this.apiRoot + this.endpoints.messageAlternateUp;\n    return this.httpClient\n      .put<any>(url, { message })\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n  setMessageAlternateDown(): Observable<any> {\n    const url = this.apiRoot + this.endpoints.messageAlternateDown;\n    return this.httpClient\n      .put<any>(url, { message: null })\n      .pipe(catchError(err => ApiService._handleError(err)));\n  }\n}\n","import {Component, OnDestroy} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {Subscription} from 'rxjs';\nimport {ApiService} from '../../services/api.service';\n\n@Component({\n  selector: 'lib-session-redirect',\n  templateUrl: 'session-redirect.component.html',\n  styleUrls: ['./session-redirect.component.scss']\n})\nexport class SessionRedirectComponent implements OnDestroy {\n\n  token: string;\n  private sub: Subscription;\n  private TOKEN_KEY = 'token';\n\n  /**\n   * Accepts a token from the server, then redirects the user to the home page.\n   * This allows single sign on through Shibboleth.  Token should be passed as\n   * a get parameter, not on the path.\n   */\n  constructor(\n    private route: ActivatedRoute,\n    private api: ApiService\n  ) {\n    this.sub = this.route.queryParamMap.subscribe(paramMap => {\n      this.token = paramMap.get('token');\n      localStorage.setItem('token', this.token);\n      this.api.getUser().subscribe(_ => this.goPrevUrl());\n    });\n  }\n\n  ngOnDestroy() {\n    this.sub.unsubscribe();\n  }\n\n  goPrevUrl() {\n    const prevUrl = localStorage.getItem('prev_url') || '/';\n    localStorage.removeItem('prev_url');\n    this.api.openUrl(prevUrl);\n  }\n\n}\n","Logging in...\n","/**\n * Utility functions for creating a Formly component for testing, based on:\n * https://github.com/ngx-formly/ngx-formly/tree/main/src/core/testing/src\n *\n * This and other useful testing tools will be included in Formly v6, so\n * this file can be deleted once v6 is released in the 2nd half of 2020:\n * https://github.com/ngx-formly/ngx-formly/milestone/6\n */\nimport { TestBed, ComponentFixture } from '@angular/core/testing';\nimport { Component, DebugElement, APP_INITIALIZER, NgModule } from '@angular/core';\nimport { FormlyModule, FormlyFormBuilder, FormlyFieldConfig, ConfigOption } from '@ngx-formly/core';\nimport {UntypedFormControl, UntypedFormGroup, ReactiveFormsModule} from '@angular/forms';\nimport { By } from '@angular/platform-browser';\nimport { of } from 'rxjs';\n\nfunction setInputs<T>(fixture: ComponentFixture<T>, inputs: T, detectChanges = true) {\n  Object.keys(inputs).forEach((input) => {\n    fixture.componentInstance[input] = inputs[input];\n  });\n\n  if (detectChanges !== false) {\n    fixture.detectChanges();\n  }\n}\n\nexport interface IFormlyDebugElement<E> extends DebugElement {\n  readonly nativeElement: E;\n}\n\nexport interface IComponentOptions<T> extends NgModule {\n  template?: string;\n  inputs?: T;\n  config?: ConfigOption;\n  detectChanges?: boolean;\n}\n\nexport function createComponent<T>({\n  template,\n  inputs,\n  config,\n  detectChanges,\n  imports,\n  declarations,\n  providers,\n}: IComponentOptions<T>) {\n  TestBed.configureTestingModule({\n    declarations: [FormlyTestComponent, ...(declarations || [])],\n    imports: [ReactiveFormsModule, FormlyModule.forRoot(config), ...(imports || [])],\n    providers: providers || [],\n    teardown: { destroyAfterEach: false }\n}).overrideComponent(FormlyTestComponent, {\n    set: {\n      template,\n      inputs: Object.keys(inputs),\n    },\n  });\n\n  const fixture = TestBed.createComponent(FormlyTestComponent);\n  Object.keys(inputs).forEach((input) => {\n    fixture.componentInstance[input] = inputs[input];\n  });\n\n  setInputs(fixture, inputs, detectChanges);\n\n  type FixtureUtils = T & {\n    fixture: ComponentFixture<T>;\n    detectChanges: typeof fixture['detectChanges'];\n    setInputs: (inputs: Partial<T>) => void;\n    query: <E extends Element = Element>(selector: string) => IFormlyDebugElement<E>;\n    queryAll: <E extends Element = Element>(selector: string) => IFormlyDebugElement<E>[];\n  };\n\n  const utils = {\n    fixture,\n    detectChanges: () => fixture.detectChanges(),\n    setInputs: (props) => setInputs(fixture, props),\n    query: (selector: string) => fixture.debugElement.query(By.css(selector)),\n    queryAll: (selector: string) => fixture.debugElement.queryAll(By.css(selector)),\n  } as FixtureUtils;\n\n  Object.keys(inputs).forEach((input) => {\n    Object.defineProperty(utils, input, {\n      get: () => fixture.componentInstance[input],\n    });\n  });\n\n  return utils;\n}\n\nexport function createFormlyFieldComponent(\n  field: FormlyFieldConfig,\n  config: IComponentOptions<{ field: FormlyFieldConfig }> = {},\n) {\n  const model = field && field.model ? field.model : {};\n  if (field && field.model) {\n    delete (field as any).model;\n  }\n  const options = field && field.options ? field.options : {};\n  if (field && field.options) {\n    delete (field as any).options;\n  }\n  return createComponent<{ field: FormlyFieldConfig }>({\n    template: '<formly-field [field]=\"field\"></formly-field>',\n    inputs: { field },\n    ...config,\n    providers: [\n      ...(config.providers || []),\n      {\n        provide: APP_INITIALIZER,\n        useFactory: (builder: FormlyFormBuilder) => () => {\n          const testControl = new UntypedFormControl();\n          builder.buildForm(\n            new UntypedFormGroup({test: testControl}),\n            [field],\n            model,\n            options\n          );\n\n          return of(null);\n        },\n        deps: [FormlyFormBuilder],\n        multi: true,\n      },\n    ],\n  });\n}\n\n@Component({\n  selector: 'lib-formly-test-component',\n  template: '',\n})\nexport class FormlyTestComponent {}\n","import {Injectable} from '@angular/core';\nimport {AppEnvironment} from '../../types/app-environment';\n\n@Injectable()\nexport class MockEnvironment implements AppEnvironment {\n  homeRoute = 'home';\n  production = false;\n  hideDataPane = true;\n  api = 'apiRoot';\n  irbUrl = 'irbUrl';\n  title = 'CRConnect';\n  googleAnalyticsKey = 'some_key';\n  sentryKey = 'some_key';\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {FlexLayoutModule} from '@angular/flex-layout';\nimport {MatButtonModule} from '@angular/material/button';\nimport {MatIconModule} from '@angular/material/icon';\nimport {MatListModule} from '@angular/material/list';\nimport {ApiErrorsComponent} from './components/api-errors/api-errors.component';\nimport {SartographyWorkflowLibComponent} from './components/sartography-workflow-lib.component';\nimport {SessionRedirectComponent} from './components/session-redirect/session-redirect.component';\nimport {FormlyTestComponent} from './testing/formly/component-factory';\nimport {MockEnvironment} from './testing/mocks/environment.mocks';\nimport {HIGHLIGHT_OPTIONS, HighlightModule} from 'ngx-highlightjs';\nimport {MatExpansionModule} from '@angular/material/expansion';\n\n// @dynamic\nexport function import_json() {\n  import('highlight.js/lib/languages/json.js');\n}\n\n@NgModule({\n  declarations: [\n    ApiErrorsComponent,\n    SartographyWorkflowLibComponent,\n    SessionRedirectComponent,\n    FormlyTestComponent,\n  ],\n  imports: [\n    MatListModule,\n    MatIconModule,\n    CommonModule,\n    FlexLayoutModule,\n    MatButtonModule,\n    HighlightModule,\n    MatExpansionModule\n  ],\n  exports: [\n    ApiErrorsComponent,\n    SartographyWorkflowLibComponent,\n    SessionRedirectComponent,\n    FormlyTestComponent,\n  ],\n  providers: [\n    {provide: 'APP_ENVIRONMENT', useClass: MockEnvironment},\n    {\n      provide: HIGHLIGHT_OPTIONS,\n      useValue: {\n        languages: import_json()\n      }\n    },\n  ]\n})\nexport class SartographyWorkflowLibModule {\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'cleanUpLdapProperties'\n})\nexport class CleanUpLdapPropertiesPipe implements PipeTransform {\n\n  // Takes a comma-delimited string from LDAP and returns a human-readable string.\n  transform(value: string, ...args: any[]): any {\n    return this.itemsFromLdap(value).join(', ');\n  }\n\n  // E1:Clinician Physician\n  // E0:Professor\n  // E0:AS-Psychology\n  // E1:UPG-MD-NEUR Neurology\n  // E0:MD-NEUR Neurology\n  // E0:CU-Human Svcs\n  // U1:Arts & Sciences Undergraduate\n  // E0:Unit Paid Employee (Faculty), Instr-Northern Virginia\n  itemsFromLdap(department: string): string[] {\n    const ldapRe = new RegExp(/^([A-Z][0-9]+):([A-Z]+[\\-|\\s])+(.*)$|^([A-Z][0-9]+):[0-9 ]?([A-Za-z&\\-\\(\\)\\, ]+\\s)+(.*)$|^([A-Z][0-9]+):([&\\-\\(\\)\\,\\w]+)$/);\n    const ldapItems = department.split(', ');\n    const items = new Set<string>();\n\n    for (const item of ldapItems) {\n      if (ldapRe.test(item)) {\n        const s = item.replace(ldapRe, (match, p1, p2, p3, p4, p5, p6, p7, p8) => {\n          if (p4 && p5 && p6) {\n            return p5 + p6;\n          } else  if (p7 && p8) {\n            return p8;\n          } else {\n            return p3 || p5 || p7;\n          }\n        });\n        items.add(s.trim());\n      } else {\n        items.add(item.trim());\n      }\n    }\n\n    return Array.from<string>(items);\n  }\n\n\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\nconst ordinals: string[] = ['th', 'st', 'nd', 'rd'];\n\n/**\n * https://gist.github.com/JonCatmull/da9c8bb7367f1f55a4080bbc525c09ac\n * Append ordinal to number (e.g. \"1st\" position)\n * Usage:\n *   value | ordinal:keepNumber\n * Example:\n *   {{ 23 |  ordinal}}\n *   formats to: '23rd'\n * Example:\n *   {{ 23 |  ordinal:false}}\n *   formats to: 'rd'\n */\n@Pipe({name: 'ordinal'})\nexport class OrdinalPipe implements PipeTransform {\n\n  transform(n: number, keepNumber: boolean = true) {\n    const v = n % 100;\n    return (keepNumber ? n : '') + (ordinals[(v - 20) % 10] || ordinals[v] || ordinals[0]);\n  }\n}\n","import { Injectable } from '@angular/core';\nimport {ScriptService} from './script.service';\nimport { cloneDeep } from 'lodash';\nimport {defer, from, Observable, of} from 'rxjs';\nimport {not} from 'rxjs/internal-compatibility';\n\n/**\n * Does a very mediocre effort at evaluating short oneline python expressions in Javascript.\n * I did this using Regular Expressions - which is a terrible way to go about this.  Would be far better to use a lexer.\n * There are good tests, so this is really here to be re-written by a better person than I.\n */\n@Injectable({providedIn: 'root'})\nexport class PythonService {\n\n  constructor() {\n  }\n\n  isReady() {\n    // We are always ready baby. (here because we may want to switch out to the piodide service someday, which is\n    // definitely not \"always ready\"\n    return true\n  }\n\n  public ready(): Observable<any> {\n    return of(null)  // We are always ready.\n  }\n\n\n  /**\n   * I am ashamed of this method. It would be far better to tokenize and process.\n   * @param expression\n   * @param context\n   * @param defaultResult\n   */\n  eval(expression, context, defaultResult = \"\", original= null) {\n    expression = expression.trim()\n    if(!original) {\n      original = expression\n    }\n\n    // If this is True or False, just return that.\n    if (expression === 'True') return true;\n    if (expression === 'False') return false;\n    if (expression === 'None') return null;\n\n    // This is complicated, so we break it into pieces\n    // not(IUD == \"FlashDrive\" and \"HIPAA_Ids0\" not in IUD_HIPPA_Ids)\n    if (expression === \"not(IUD == \\\"FlashDrive\\\" and \\\"HIPAA_Ids0\\\" not in IUD_HIPPA_Ids)\") {\n\n      // IUD == \"FlashDrive\"\n      let exp_a = \"IUD == \\\"FlashDrive\\\"\";\n      let eval_a = this.eval(exp_a, context);\n\n      // \"HIPAA_Ids0\" not in IUD_HIPPA_Ids\n      let exp_b = \"\\\"HIPAA_Ids0\\\" not in IUD_HIPPA_Ids\";\n      let eval_b = this.eval(exp_b, context);\n\n      return !(eval_a && eval_b);\n    }\n\n    // This is complicated, so we break it into pieces\n    // not(IUD == \"Tablet\" or IUD == \"Smartphone\") and \"HIPAA_Ids0\" not in IUD_HIPPA_Ids\n    if (expression === \"not(IUD == \\\"Tablet\\\" or IUD == \\\"Smartphone\\\") and \\\"HIPAA_Ids0\\\" not in IUD_HIPPA_Ids\") {\n\n      // IUD == \"Tablet\"\n      let exp_a = \"IUD == \\\"Tablet\\\"\";\n      let eval_a = this.eval(exp_a, context);\n\n      // IUD == \"Smartphone\"\n      let exp_b = \"IUD == \\\"SmartPhone\\\"\";\n      let eval_b = this.eval(exp_b, context);\n\n      // \"HIPAA_Ids0\" not in IUD_HIPPA_Ids\n      let exp_c = \"\\\"HIPAA_Ids0\\\" not in IUD_HIPPA_Ids\";\n      let eval_c = this.eval(exp_c, context);\n\n      return !((eval_a || eval_b) && eval_c);\n\n    }\n\n    // If this is just a double-quoted string, evaluate it to handle any escaped quotes.\n    let match = expression.match(/^\"(?:[^\"\\\\]|\\\\.)*\"$/)\n    if (match) {\n      return eval(expression);\n    }\n\n    // If this is just a single-quoted string, evaluate it to handle any escaped quotes.\n    let quote_match = expression.match(/^'(?:[^'\\\\]|\\\\.)*'$/)\n    if (quote_match) {\n      return eval(expression);\n    }\n\n    // If this is just numbers, eval it.\n    let number_match = expression.match(/^\\d+$/is)\n    if (number_match) {\n      return eval(expression);\n    }\n\n    // If this is a literal array, eval it.  ie ['a','b']\n    let array_match = expression.match(/^\\[.*\\]$/)\n    if (array_match) {\n      return eval(expression)\n    }\n\n    // If this is surrounded by parens, disregard them.\n    let paren_match = expression.match(/^\\((.*)\\)$/)\n    if (paren_match) {\n      return this.eval(paren_match[1], context, original);\n    }\n\n    // If this is a single world (no spaces).\n    // Also, handle any dot notation in the process.\n    if (expression.match(/^[\\w_\\-.]+$/)) {\n      return expression.split('.').reduce((o, i) => o[i], context)\n    }\n\n    // If this is an expression with bracket syntax, evaluate it.\n    // ie var1['property']  or v1['prop1']['subprop'] or even\n    // var1[var2]['subprop']\n    let braket_match = expression.match(/^(\\w+)(\\[[\\w\\'\\\"-_]+\\])+$/)\n    if (braket_match) {\n      let my_value = context[braket_match[1]]\n      let last_match = braket_match[1]\n      for (let match of expression.matchAll(/\\[(['\"]?)([\\w-_]+)['\"]?\\]+/g)){\n        if (my_value == null) {\n          throw SyntaxError(last_match + \" is none, in expression \" + expression)\n        }\n        if(match[1]) {  // for x['y']  where 'y' is a string.\n          my_value = my_value[match[2]]\n        } else {        // for x[y] where y is a variable.\n          my_value = my_value[this.eval(match[2], context, original)]\n        }\n        last_match = match[2]\n      }\n      return my_value\n    }\n\n    // if this is a start's with expression\n    let starts_with_match = expression.match(/^([\\\"\\w\\.]+)\\.startswith\\((([\"']?)[^)]+\\3)\\)$/)\n    if (starts_with_match) {\n      let base = this.eval(starts_with_match[1], context, original)\n      let start = this.eval(starts_with_match[2], context, original)\n      if (base && start) {\n        return base.startsWith(start)\n      } else {\n        console.log(\"Cant' match starts with, missing base or start:\", base, start)\n      }\n    }\n\n    // If this is a get expression. ie dict.get('abc')\n/*\n    let get_match = expression.match(/^([\\\"\\w\\.]+)\\.get\\((([\"']?)[^)]+\\3)\\)$/)\n    if (get_match) {\n      let base = this.eval(get_match[1], context)\n      let start = this.eval(get_match[2], context)\n      return base.get(start)\n    }\n*/\n\n    // If this is an expression that matches not XXX or not(XXX), where XXX is in the model, eval that.\n    let not_match = expression.match(/^not[ \\(]([\\w\\.]+)\\)?$/)\n    if (not_match) {\n      let base = this.eval(not_match[1], context, original)\n      if (base == null) {\n        return true\n      } else {\n        return !(base)\n      }\n    }\n\n    let len_match = expression.match(/^len\\((.+)\\)$/)\n    if (len_match) {\n      return this.eval(len_match[1], context, original).length\n    }\n\n    let if_else_match = expression.match(/^(.*) if (.*) else (.*)$/)\n    if (if_else_match) {\n      let condition = this.eval(if_else_match[2], context, original)\n      if(condition) {\n        return this.eval(if_else_match[1], context, original)\n      } else {\n        return this.eval(if_else_match[3], context, original)\n      }\n    }\n\n    let or_match = expression.match(/(.*) (or) ?(.*)$/)\n    if (or_match) {\n      let arg1 = this.eval(or_match[1], context, original)\n      if (arg1) {\n        return arg1\n      } else {\n        return this.eval(or_match[3], context, original)\n      }\n    }\n\n\n    // If this contains a comparison, split, eval each side, and compare the two.\n    // Perfer to split on comparisons first.\n    let compare_match = expression.match(/(.*) ?(\\+|==|!=| is ) ?(.*)$/)\n    if (compare_match) {\n      let arg1 = this.eval(compare_match[1], context, original)\n      let arg2 = this.eval(compare_match[3], context, original)\n      let comp = compare_match[2]\n      if (comp == '+')\n        return arg1 + arg2\n      else if (comp == '!=')\n        return arg1 !== arg2\n      else\n        return arg1 === arg2\n    }\n\n    let not_in_match = expression.match(/(.*) ?( not in ) ?(.*)$/)\n    if (not_in_match) {\n      let arg1 = this.eval(not_in_match[1], context, original)\n      let arg2 = this.eval(not_in_match[3], context, original)\n      return !arg2.includes(arg1)\n    }\n\n    let and_in_match = expression.match(/(.*) ?( and | in ) ?(.*)$/)\n    if (and_in_match) {\n      let arg1 = this.eval(and_in_match[1], context, original)\n      let arg2 = this.eval(and_in_match[3], context, original)\n      let comp = and_in_match[2]\n      if (comp == ' and ')\n        return arg1 && arg2\n      else if (comp == ' in ')\n        return arg2.includes(arg1)\n    }\n\n    let error_message = \"unable to evaluate expression \" + expression\n    if(expression != original) {\n      error_message += \".  A portion of original expression \" + original;\n    }\n\n    console.error(error_message)\n    if (defaultResult === \"no_default\") {\n      throw SyntaxError(error_message)\n    } else {\n      return defaultResult\n    }\n  }\n}\n","import {Injectable, Pipe, PipeTransform} from '@angular/core';\nimport {FormlyFieldConfig} from '@ngx-formly/core';\nimport { cloneDeep } from 'lodash';\nimport {defer, from, Observable, of, Subject, timer} from 'rxjs';\nimport {isIterable} from 'rxjs/internal-compatibility';\nimport {FileParams} from '../../types/file';\nimport {BpmnFormJsonField, BpmnFormJsonFieldEnumValue, BpmnFormJsonFieldProperty} from '../../types/json';\nimport isEqual from 'lodash.isequal';\nimport {catchError, debounceTime, mergeMap} from 'rxjs/operators';\nimport {ApiError} from '../../types/api';\nimport {ScriptService} from '../../services/script.service';\nimport {PythonService} from '../../services/python.service';\n\nexport function checkNumeric(field,event){\n  if (event.shiftKey){\n    event.preventDefault();     // Prevent character input\n  }\n\n  if( !(event.keyCode == 9  //Tab!!\n    || event.keyCode == 8    // backspace\n    || event.keyCode == 46      // delete\n    || (event.keyCode >= 35 && event.keyCode <= 40)     // arrow keys/home/end\n    || (event.keyCode >= 48 && event.keyCode <= 57)     // numbers on keyboard\n    || (event.keyCode >= 96 && event.keyCode <= 105))   // number on keypad\n    ) {\n        event.preventDefault();     // Prevent character input\n  }\n}\n\n/***\n * Convert the given BPMN form JSON value to Formly JSON\n * Usage:\n *  value | toFormly\n *\n * Example:\n jsonValue = {\n      field: [\n        {\n          id: 'should_ask_color',\n          label: 'Does color affect your mood?',\n          type: 'boolean',\n          default_value: 'false',\n          validation: [\n            {name: 'required', config: 'true'}\n          ]\n        },\n        {\n          id: 'favorite_color',\n          label: 'What is your favorite color?',\n          type: 'enum',\n          default_value: 'indigo',\n          value: [\n            {id: 'red', name: 'Red'},\n            {id: 'orange', name: 'Orange'},\n            ...\n            {id: 'violet', name: 'Violet'},\n            {id: 'other', name: 'Other'},\n          ],\n          properties: [\n            {id: 'hide_expression', value: '!should_ask_color'},\n            {id: 'description', value: '...'},\n            {id: 'help', value: '...'},\n          ]\n        },\n        {\n          id: 'other_color',\n          label: 'Enter other color',\n          type: 'text',\n          properties: [\n            {id: 'hide_expression', value: '!(should_ask_color && (favorite_color === \"other\"))'},\n            {id: 'required_expression', value: 'should_ask_color && (favorite_color === \"other\")'},\n          ]\n        }\n      ]\n    }\n\n {{ jsonValue | toFormly }}\n\n Outputs: {\n      fields: [\n        {\n          key: 'should_ask_color',\n          type: 'boolean',\n          defaultValue: 'false',\n          templateOptions: {\n            label: 'Does color affect your mood?',\n          },\n        },\n        {\n          key: 'favorite_color',\n          type: 'select',\n          templateOptions: {\n            label: 'What is your favorite color?',\n            options: [\n              {value: 'red', label: 'Red'},\n              {value: 'orange', label: 'Orange'},\n              ...\n              {value: 'violet', label: 'Violet'},\n              {value: 'other', label: 'Other'}\n            ],\n            hideExpression: '!(should_ask_color && (favorite_color === \"other\"))'\n          },\n        },\n        {\n          key: 'other_color',\n          type: 'text',\n          templateOptions: {\n            label: 'Enter other color',\n            hideExpression: '!(should_ask_color && (favorite_color === \"other\"))'\n          }\n          expressionProperties: {\n            'templateOptions.required': 'should_ask_color && (favorite_color === \"other\")'\n          }\n        }\n      ]\n    }\n */\nexport interface PythonEvaluation {\n  expression: string;\n  data?: any;     // Lookup data object, populated by backend LookupService\n  key: string;\n}\n\n@Pipe({\n  name: 'toFormly'\n})\nexport class ToFormlyPipe implements PipeTransform {\n  private defaultFileParams: FileParams = {};\n\n  /**\n   * For evaluations to work correctly, the python service must be loaded, and ready to execute at the time of construction.\n   * @param apiService\n   * @param pythonService\n   */\n  constructor(private pythonService?: PythonService) {\n  }\n\n  transform(value: BpmnFormJsonField[], fileParams = this.defaultFileParams, model: []= [], ...args: any[]): FormlyFieldConfig[] {\n\n    const result: FormlyFieldConfig[] = [];\n    for (const field of value) {\n      const resultField: FormlyFieldConfig = {\n        key: field.id,\n        templateOptions: {\n          workflow_id: fileParams.workflow_id,\n          study_id: fileParams.study_id,\n          task_spec_name:fileParams.task_spec_name,\n        },\n        expressionProperties: {},\n        modelOptions: {}\n      };\n\n      // Convert bpmnjs field type to Formly field type\n      switch (field.type) {\n        case 'enum':\n          resultField.type = 'select';\n          resultField.templateOptions.options = field.options.map((v: BpmnFormJsonFieldEnumValue) => {\n            // Include lookup data object, if available\n            const option: any = {value: v.id, label: v.name};\n            if (v.hasOwnProperty('data')) {\n              option.data = v.data;\n            }\n            return option;\n          });\n          this.setDefaultValue(model, resultField, field, field.default_value);\n          break;\n        case 'string':\n          resultField.type = 'input';\n          this.setDefaultValue(model, resultField, field, field.default_value);\n          resultField.modelOptions.updateOn = 'blur';\n          break;\n        case 'textarea':\n          resultField.type = 'textarea';\n          this.setDefaultValue(model, resultField, field, field.default_value);\n          resultField.templateOptions.rows = 5;\n          resultField.modelOptions.updateOn = 'blur'\n          break;\n        case 'long':\n          resultField.type = 'input';\n          resultField.templateOptions.type = 'number';\n          resultField.templateOptions.keydown= checkNumeric;\n          resultField.templateOptions.attributes= { onpaste: 'return false;'};\n          this.setDefaultValue(model, resultField, field, field.default_value);\n          resultField.modelOptions.updateOn = 'blur'\n          resultField.validators = {validation: ['number']};\n          break;\n        case 'url':\n          resultField.type = 'input';\n          resultField.templateOptions.type = 'url';\n          resultField.modelOptions.updateOn = 'blur'\n          this.setDefaultValue(model, resultField, field, field.default_value);\n          resultField.validators = {validation: ['url']};\n          break;\n        case 'email':\n          resultField.type = 'input';\n          resultField.templateOptions.type = 'email';\n          resultField.modelOptions.updateOn = 'blur'\n          this.setDefaultValue(model, resultField, field, field.default_value);\n          resultField.validators = {validation: ['email']};\n          break;\n        case 'tel':\n          resultField.type = 'input';\n          resultField.templateOptions.type = 'tel';\n          resultField.modelOptions.updateOn = 'blur'\n          this.setDefaultValue(model, resultField, field, field.default_value);\n          resultField.validators = {validation: ['phone']};\n          break;\n        case 'boolean':\n          if (field.properties.find(x => x.id === 'boolean_type' && x.value === 'checkbox')) {\n            resultField.type = 'checkbox';\n            resultField.templateOptions.indeterminate = false;\n            resultField.validators = {validation: ['checked']};\n          }\n          else if (!field.properties.find(x => x.id === 'boolean_type')) {\n            resultField.type = 'radio';\n            resultField.templateOptions.options = [\n              {value: true, label: 'Yes'},\n              {value: false, label: 'No'},\n            ];\n          }\n          this.setDefaultValue(model, resultField, field, field.default_value);\n          break;\n        case 'date':\n          resultField.type = 'datepicker';\n          resultField.modelOptions.updateOn = 'blur'\n          if (field.default_value) {\n            this.setDefaultValue(model, resultField, field, field.default_value);\n            resultField.defaultValue = new Date(resultField.defaultValue);\n          }\n          resultField.templateOptions = {\n            datepickerOptions : { datepickerTogglePosition: 'prefix'}\n          };\n          break;\n        case 'files':\n          resultField.type = 'files';\n          resultField.validators = {validation: ['files']};\n          break;\n        case 'file':\n          resultField.type = 'file';\n          resultField.validators = {validation: ['file']};\n          break;\n        case 'autocomplete':\n          const fieldFileParams = Object.assign({}, fileParams || {});\n          fieldFileParams.irb_doc_code = field.id;\n          resultField.modelOptions.updateOn = 'blur'\n          resultField.type = 'autocomplete';\n          resultField.templateOptions.limit = this._getAutocompleteNumResults(field, 5);\n          resultField.validators = {validation: ['autocomplete']};\n          break;\n        default:\n          console.error('Field type is not supported.');\n          resultField.type = field.type;\n          break;\n      }\n\n      // Resolve the label\n      if(field.label) {\n        resultField.templateOptions.label = \"\"\n        resultField.expressionProperties['templateOptions.label'] =\n          this.getPythonEvalFunction(field, field.label, '');\n      }\n\n      // Convert bpmnjs field validations to Formly field requirements\n      if (field.validation && isIterable(field.validation) && (field.validation.length > 0)) {\n        for (const v of field.validation) {\n          switch (v.name) {\n            case 'regex':\n              resultField.validators = {validation: [{name: 'regex', options: {regex: v.config}}]};\n              break;\n            case 'required':\n              resultField.templateOptions.required = this._stringToBool(v.config);\n              break;\n            case 'repeat_required':\n              resultField.templateOptions.repeatSectionRequired = this._stringToBool(v.config);\n              break;\n            case 'max_length':\n              resultField.templateOptions.maxLength = parseInt(v.config, 10);\n              break;\n            case 'min_length':\n              resultField.templateOptions.minLength = parseInt(v.config, 10);\n              break;\n            case 'max':\n              resultField.templateOptions.max = parseInt(v.config, 10);\n              break;\n            case 'min':\n              resultField.templateOptions.min = parseInt(v.config, 10);\n              break;\n          }\n        }\n      }\n\n      // Convert bpmnjs field properties to Formly template options.\n      if (field.properties && isIterable(field.properties) && (field.properties.length > 0)) {\n        for (const p of field.properties) {\n          switch (p.id) {\n            case 'group':\n              resultField.templateOptions.groupName = p.value;\n              break;\n            case 'repeat':\n              resultField.templateOptions.repeatSectionKey = p.value;\n              break;\n            case 'repeat_title':\n              resultField.templateOptions.repeatSectionTitle = p.value;\n              break;\n            case 'repeat_button_label':\n              resultField.templateOptions.repeatSectionButtonLabel = p.value;\n              break;\n            case 'repeat_edit_only':\n              resultField.templateOptions.repeatSectionEditOnly = this._stringToBool(p.value);\n              break;\n            case 'repeat_hide_expression':\n              resultField.templateOptions.repeatSectionHideExpression = this.getPythonEvalFunction(field, p.value);\n              break;\n            case 'hide_expression':\n              resultField.hideExpression = this.getPythonEvalFunction(field, p.value);\n              break;\n            case 'value_expression':\n              resultField.expressionProperties['model.' + field.id] = this.getPythonEvalFunction(field, p.value);\n              break;\n            case 'repeat_required_expression':\n              resultField.templateOptions.repeatSectionRequiredExpression = this.getPythonEvalFunction(field, p.value);\n              break;\n            case 'required_expression':\n              resultField.expressionProperties['templateOptions.required'] = this.getPythonEvalFunction(field, p.value);\n              break;\n            case 'read_only_expression':\n              resultField.expressionProperties['templateOptions.readonly'] = this.getPythonEvalFunction(field, p.value, false);\n              resultField.expressionProperties['templateOptions.floatLabel'] = `field.templateOptions.readonly ? 'always' : ''`;\n              resultField.expressionProperties.className = this._readonlyClassName;\n              break;\n            case 'read_only':\n              let read_only = this._stringToBool(p.value);\n              resultField.templateOptions.readonly = read_only;\n              if (read_only) {\n                resultField.templateOptions.floatLabel = 'always';\n                resultField.className = this._addClassName(resultField, 'read-only should-float');\n              }\n              break;\n            case 'placeholder':\n              resultField.expressionProperties['templateOptions.placeholder'] = this.getPythonEvalFunction(field, p.value);\n              break;\n            case 'description':\n              resultField.templateOptions.description = p.value;\n              resultField.expressionProperties['templateOptions.description'] = this.getPythonEvalFunction(field, p.value);\n              break;\n            case 'help':\n              resultField.templateOptions.help = p.value;\n              resultField.expressionProperties['templateOptions.help'] = this.getPythonEvalFunction(field, p.value);\n              break;\n            case 'markdown_description':\n              resultField.templateOptions.markdownDescription = p.value;\n              resultField.expressionProperties['templateOptions.markdownDescription'] = this.getPythonEvalFunction(field, p.value);\n              break;\n            case 'autosize':\n              resultField.templateOptions.autosize = this._stringToBool(p.value);\n              break;\n            case 'rows':\n              resultField.templateOptions.rows = parseInt(p.value, 10);\n              resultField.templateOptions.minRows = parseInt(p.value, 10);\n              resultField.templateOptions.autosizeMinRows = parseInt(p.value, 10);\n              break;\n            case 'cols':\n              resultField.className = this._addClassName(resultField, 'textarea-cols');\n              resultField.templateOptions.cols = parseInt(p.value, 10);\n              break;\n            case 'label.column':\n              resultField.templateOptions.label_column = p.value;\n              break;\n            case 'value.column':\n              resultField.templateOptions.value_column = p.value;\n              break;\n            case 'enum_type':\n              if (field.type === 'enum') {\n                if (p.value === 'checkbox') {\n                   resultField.modelOptions.updateOn = 'blur'\n                  if (field.default_value) {\n                    this.setDefaultValue(model, resultField, field, field.default_value);\n                    resultField.defaultValue = new Array(resultField.defaultValue);\n                  } else {\n                    resultField.defaultValue = [];\n                  }\n                  resultField.type = 'select';\n                  resultField.templateOptions.multiple = true;\n                  resultField.templateOptions.selectAllOption = 'Select All';\n                  resultField.className = this._addClassName(resultField, 'vertical-checkbox-group');\n                }\n                if (p.value === 'radio') {\n                  resultField.type = 'radio_data';\n                  resultField.className = this._addClassName(resultField, 'vertical-radio-group');\n                }\n              }\n              break;\n            case 'doc_code':\n              resultField.expressionProperties['templateOptions.doc_code'] = this.getPythonEvalFunction(field, p.value);\n              break;\n            default:\n              break;\n          }\n        }\n      }\n\n      result.push(resultField);\n    }\n\n    return this._makeRepeats(this._makeGroups(result));\n  }\n\n  private _stringToBool(s: string) {\n    return s.toLowerCase() === 'true';\n  }\n\n  /** Convert group names into actual Formly fieldGroups */\n  private _makeGroups(fields: FormlyFieldConfig[]) {\n    const grouped: FormlyFieldConfig[] = [];\n\n    fields.forEach(field => {\n\n      // If the field has a group name, add it to its group\n      if (field.templateOptions.groupName) {\n\n        // look for existing group\n        const groupName = field.templateOptions.groupName;\n        const group = grouped.find(g => g.templateOptions.groupName === groupName);\n\n        if (group) {\n          group.fieldGroup.push(field);\n        } else {\n          // if not found, add the group, then add it to the grouped array\n          const newGroup: FormlyFieldConfig = {\n\n            // Leaving key off so Formly doesn't wrap the group model in a nested object\n            // key: groupName,\n\n            templateOptions: {\n              label: groupName,\n            },\n            fieldGroup: [field],\n            wrappers: ['panel'],\n          };\n\n          // Move repeat section properties (if any) and group name out of the field and into the new group\n          const keys = [\n            'repeatSectionKey',\n            'repeatSectionTitle',\n            'repeatSectionButtonLabel',\n            'repeatSectionEditOnly',\n            'repeatSectionHideExpression',\n            'repeatSectionRequired',\n            'repeatSectionRequiredExpression',\n            'groupName',\n          ];\n\n          keys.forEach(k => {\n            if (field.templateOptions.hasOwnProperty(k)) {\n              newGroup.templateOptions[k] = field.templateOptions[k];\n              delete field.templateOptions[k];\n            }\n          });\n\n          grouped.push(newGroup);\n        }\n      } else {\n        // Field has no group name. Just add it.\n        grouped.push(field);\n      }\n    });\n\n    grouped.forEach(field => {\n      if (field.templateOptions.groupName) {\n        delete field.templateOptions.groupName;\n      }\n    });\n\n    return grouped;\n  }\n\n  /** Convert repeating section names into actual Formly repeating sections */\n  private _makeRepeats(fields: FormlyFieldConfig[]) {\n    const grouped: FormlyFieldConfig[] = [];\n\n    fields.forEach(field => {\n\n      // If the field has a group name, add it to its group\n      if (field.templateOptions.repeatSectionKey) {\n\n        // look for existing group\n        const repeatSectionKey = field.templateOptions.repeatSectionKey;\n        const group = grouped.find(g => {\n          const to = (g.fieldGroup && g.fieldGroup[0] && g.fieldGroup[0].templateOptions);\n          return (to && to.repeatSectionKey === repeatSectionKey);\n        });\n\n        if (group) {\n          group.fieldGroup[0].fieldArray.fieldGroup.push(field);\n        } else {\n          // if not found, add the group, then add it to the grouped array\n          const newGroup: FormlyFieldConfig = {\n            fieldGroup: [\n              {\n                key: repeatSectionKey,\n                wrappers: ['panel'],\n                type: 'repeat',\n                templateOptions: {\n                  label: field.templateOptions.repeatSectionTitle,\n                  buttonLabel: field.templateOptions.repeatSectionButtonLabel,\n                  editOnly: field.templateOptions.repeatSectionEditOnly,\n                },\n                validators: {validation: ['repeat']},\n                fieldArray: {fieldGroup: [field]},\n              }\n            ]\n          };\n          delete field.templateOptions.repeatSectionKey;\n          delete field.templateOptions.repeatSectionTitle;\n          delete field.templateOptions.repeatSectionButtonLabel;\n          delete field.templateOptions.repeatSectionEditOnly;\n\n          newGroup.hideExpression = field.templateOptions.repeatSectionHideExpression;\n          delete field.templateOptions.repeatSectionHideExpression;\n\n          // Hidden field values will be removed on save.\n          // // Clears value when hidden (will be the default in Formly v6?)\n          // (newGroup as any).autoClear = true;\n          newGroup.fieldGroup[0].expressionProperties = {\n            'templateOptions.required': field.templateOptions.repeatSectionRequiredExpression,\n          };\n          delete field.templateOptions.repeatSectionRequiredExpression;\n\n          newGroup.fieldGroup[0].templateOptions.required = field.templateOptions.repeatSectionRequired;\n          delete field.templateOptions.repeatSectionRequired;\n\n          newGroup.fieldGroup[0].templateOptions.repeatSectionKey = repeatSectionKey;\n          delete field.templateOptions.repeatSectionKey;\n          grouped.push(newGroup);\n        }\n      } else {\n        // Field has no group name. Just add it.\n        grouped.push(field);\n      }\n    });\n\n    grouped.forEach(field => {\n      if (field.templateOptions && field.templateOptions.repeatSectionKey) {\n        delete field.templateOptions.repeatSectionKey;\n      }\n    });\n\n    return grouped;\n  }\n\n  protected setDefaultValue(model: any, resultField: FormlyFieldConfig, field: BpmnFormJsonField, def_value: any) {\n    let model_value = resultField.key.toString().split('.').reduce((o,i)=> o[i], model);\n    if (def_value == null || (model_value !== undefined && model_value !== null)) {\n      return;\n    }\n    resultField.defaultValue = this.pythonService.eval(def_value, model)\n  }\n\n\n  protected getPythonEvalFunction(field: BpmnFormJsonField, expression: string, defaultValue:any = false) {\n    // We return a function that can be called many times.\n    return (model: any, formState: any, fieldConfig: FormlyFieldConfig): any => {\n      let data = this.getEvalContext(model, formState, fieldConfig)\n      if (this.pythonService.isReady()) {\n        return this.pythonService.eval(expression, data, defaultValue);\n      } else {\n        return defaultValue;\n      }\n    }\n  }\n\n  /**\n   * The context for any python evaluation will be the model.  But repeating sections really only have a porition of\n   * the model to reference in Formly, so we have to add the parent models context back in so we can make reference\n   * to other data in the model/task.data\n   * @private\n   */\n  private getEvalContext(model:any, formState: any, fieldConfig: FormlyFieldConfig) {\n    let data = cloneDeep(model);\n\n    // Give fields a default value of None (so they can be used in dynamic expressions, and dont error out)\n    for (let field of fieldConfig.parent.fieldGroup) {\n      if (field.key && !(field.key.toString() in data)){\n        data[field['key']] = null;\n      }\n    }\n\n    // Field parent.parent (repeats, groups)\n    if (fieldConfig.parent.parent) {\n      for (let field of fieldConfig.parent.parent.fieldGroup) {\n        if (field.key && !(field.key.toString() in data)) {\n          data[field['key']] = null;\n        }\n      }\n    }\n\n    // Establish the data model that the evaluation will be based upon.  This may be\n    // 'mainModel', if this is being handled in a form that was created in a repeat section, or it\n    // may include the data extracted from a great grandparent, if one exists, which will happen in\n    // repeat sections, where the parent is fieldArray, and the grandparent is a list of field arrays,\n    // and the great grandparent is the original form field.  I AM SORRY, if you are here trying to\n    // debug this.\n    if (formState.hasOwnProperty('mainModel')) {\n      data = {...formState.mainModel, ...data};\n    } else if (\"parent\" in fieldConfig.parent && \"parent\" in fieldConfig.parent.parent) {\n      data = {...fieldConfig.parent.parent.parent.model, ...data};\n    }\n\n    return data\n  }\n\n\n  /** Get num_results property from given field, or return the given default if no num_results property found. */\n  private _getAutocompleteNumResults(field: BpmnFormJsonField, defaultNum: number): number {\n    if (field.properties && isIterable(field.properties) && (field.properties.length > 0)) {\n      const numResultsProperty = field.properties.find(p => p.id === 'autocomplete_num');\n      if (numResultsProperty) {\n        return parseInt(numResultsProperty.value, 10);\n      }\n    }\n\n    return defaultNum;\n  }\n\n  // Returns the className string for the given field, with the given className(s) added\n  private _addClassName(field: FormlyFieldConfig, className: string): string {\n    const newClasses = className ? className.split(' ') : [];\n    const oldClasses = field.className ? field.className.split(' ') : [];\n    return Array.from(new Set(oldClasses.concat(newClasses))).join(' ');\n  }\n\n  // Returns the appropriate className string for the given field, depending on its read-only state\n  private _readonlyClassName(model: any, formState: any, field: FormlyFieldConfig) {\n    const readOnlyClasses = ['read-only', 'should-float'];\n    const oldClasses = field.className ? field.className.split(' ') : [];\n    let classes;\n\n    if (field.templateOptions.readonly) {\n      // Add the classes\n      classes = oldClasses.concat(readOnlyClasses);\n    } else {\n      // Remove the classes\n      classes = oldClasses.filter(c => !readOnlyClasses.includes(c));\n    }\n\n    // Convert to set and back again to remove duplicates\n    return Array.from(new Set(classes)).join(' ');\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n  name: 'unescapeLineBreaks'\n})\nexport class UnescapeLineBreaksPipe implements PipeTransform {\n\n  transform(value: string, ...args: any[]): any {\n    return value\n      .split('\\\\r\\\\n')\n      .join('\\n')\n      .split('\\\\n')\n      .join('\\n');\n  }\n\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {CleanUpLdapPropertiesPipe} from './clean-up-ldap-properties.pipe';\nimport {OrdinalPipe} from './ordinal.pipe';\nimport {ToFormlyPipe} from './to-formly.pipe';\nimport {UnescapeLineBreaksPipe} from './unescape-line-breaks.pipe';\n\n\n@NgModule({\n  declarations: [\n    CleanUpLdapPropertiesPipe,\n    OrdinalPipe,\n    ToFormlyPipe,\n    UnescapeLineBreaksPipe,\n  ],\n  imports: [\n    CommonModule,\n  ],\n  exports: [\n    CleanUpLdapPropertiesPipe,\n    OrdinalPipe,\n    ToFormlyPipe,\n    UnescapeLineBreaksPipe,\n  ]\n})\nexport class SartographyPipesModule {\n}\n","import {AfterViewInit, Component, OnInit} from '@angular/core';\nimport {FieldType} from '@ngx-formly/material';\nimport {EMPTY, Observable} from 'rxjs';\nimport {debounceTime, startWith, switchMap, tap} from 'rxjs/operators';\nimport {ApiService} from '../../../services/api.service';\nimport {FileParams} from '../../../types/file';\nimport {UntypedFormControl} from '@angular/forms';\nimport {MatAutocompleteSelectedEvent} from '@angular/material/autocomplete';\n\n@Component({\n  selector: 'lib-autocomplete-field',\n  templateUrl: './autocomplete-field.component.html',\n  styleUrls: ['./autocomplete-field.component.scss']\n})\nexport class AutocompleteFieldComponent extends FieldType implements OnInit, AfterViewInit {\n  filter: Observable<Object[]>;\n  selectedObject: Object; // The full object returned by the api, when one is selected.\n  label: string;\n  loading = false;\n  fileParams: FileParams;\n  numResults = 0;\n\n  textInputControl = new UntypedFormControl('');\n\n  constructor(\n    protected api: ApiService,\n  ) {\n    super();\n  }\n\n\n\n  ngOnInit(): void {\n    super.ngOnInit();\n\n    this.fileParams = {\n      study_id: this.to.study_id,\n      workflow_id: this.to.workflow_id,\n      task_spec_name: this.to.task_spec_name,\n      irb_doc_code: this.key as string,\n    };\n\n    this.filter = this.textInputControl.valueChanges.pipe(\n      debounceTime(500),\n      startWith(''), // Initially execute this with an empty string to get some results back.\n      switchMap<string, Observable<Object[]>>(term => {\n        if(term === this.selectedObject) {\n          return EMPTY;  // Don't try to search for the selected object, only do this for strings.\n        }\n        if(term.length < 3) {\n          term = \"\";  // Return all the results if we don't have a valid term yet ...\n        }\n\n        this.loading = true;\n        return this.api.lookupFieldOptions(term, this.fileParams, null, this.to.limit);\n      })\n    );\n\n    this.filter.subscribe(results => {\n      this.loading = false;\n      this.numResults = results.length;\n      this.selectedObject = null;\n    })\n  }\n\n  ngAfterViewInit(): void {\n    super.ngAfterViewInit();\n    this.setSelectionFromValue(this.value)\n  }\n\n  state() {\n    if(this.loading) {\n      return \"loading\";\n    } else if (this.selectedObject) {\n      return \"selected\"\n    } else if (this.numResults === 0) {\n      return \"no_results\"\n    } else {\n      return \"results\"\n    }\n  }\n\n  valueChanged(newValue) {\n    this.setSelectionFromValue(newValue)\n  }\n\n  setSelectionFromValue(value) {\n    if(this.textInputControl.value == value || value == false || value == null) {\n      return;\n    }\n\n    this.api.lookupFieldOptions('', this.fileParams, value, 1).subscribe(hits => {\n      if(hits.length > 0) {\n        this.selectedObject = hits[0]\n        this.label = hits[0][this.to.label_column];\n      } else {\n        console.error(\"Failed to locate selection '\" + value + \"' for auto-complete, leaving blank.\")\n      }\n    })\n  }\n\n  newSelection(selected: MatAutocompleteSelectedEvent) {\n    this.selectedObject = selected.option.value;\n    this.value = this.selectedObject[this.to.value_column];\n  }\n\n  displayFn(lookupData: Object): string {\n    if (!lookupData) {\n      return \"\"\n    } else if (typeof lookupData === 'string') {\n      return lookupData\n    } else {\n      return lookupData[this.to.label_column];\n    }\n  }\n}\n","<!-- this is were the real value goes. -->\n<input type=\"hidden\" [formControl]=\"formControl\" (ngModelChange)=\"valueChanged($event)\">\n\n<!-- this input is used to handle the autocomplete and display things correctly -->\n<input\n  type=\"text\"\n  matInput\n  [formControl]=\"textInputControl\"\n  [value]=\"label\"\n  [matAutocomplete]=\"auto\"\n  [formlyAttributes]=\"field\"\n  [placeholder]=\"to.placeholder\"\n>\n<mat-autocomplete\n  autoActiveFirstOption\n  #auto=\"matAutocomplete\"\n  [displayWith]=\"displayFn.bind(this)\"\n  (optionSelected)=newSelection($event)>\n  <mat-option disabled class=\"loading\" *ngIf=\"state()==='loading'\">\n    <mat-spinner diameter=\"35\"></mat-spinner>\n  </mat-option>\n  <mat-option disabled *ngIf=\"state()==='no_results'\">\n    No results match.\n  </mat-option>\n  <mat-option disabled *ngIf=\"state()==='selected'\">\n    {{label}}\n  </mat-option>\n  <mat-option\n    *ngFor=\"let lookupData of filter | async\"\n    [value]=\"lookupData\"\n  >{{displayFn(lookupData)}}</mat-option>\n</mat-autocomplete>\n\n\n","import {Component, OnInit} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {FieldType} from '@ngx-formly/material';\nimport {ApiService} from '../../../services/api.service';\nimport {FileMeta, FileParams} from '../../../types/file';\n\n@Component({\n  selector: 'lib-file-base',\n  templateUrl: './file-base.component.html',\n  styleUrls: ['./file-base.component.scss']\n})\nexport class FileBaseComponent extends FieldType implements OnInit {\n  protected studyId: number;\n  protected workflowId: number;\n  protected workflowSpecId: string;\n  protected fileMeta: FileMeta;\n  protected fileId: number;\n  protected fileParams: FileParams;\n\n  constructor(\n    protected api: ApiService,\n  ) {\n    super();\n  }\n\n  ngOnInit(): void {\n    super.ngOnInit();\n    const key = this.key as string;\n    this.fileParams = {\n      study_id: this.to.study_id,\n      workflow_id: this.to.workflow_id,\n      task_spec_name: this.to.task_spec_name,\n      irb_doc_code: key,\n    };\n    this.fileId = this.model && this.model.hasOwnProperty(key) && this.model[key] ? this.model[key].id : null;\n    this.loadFiles();\n  }\n\n  // To be overridden\n  loadFiles() {\n  }\n\n}\n","<formly-field [field]=\"field\"></formly-field>\n","export enum FileType {\n  AIF = 'aif',\n  AI = 'ai',\n  AVI = 'avi',\n  BPMN = 'bpmn',\n  CSV = 'csv',\n  DMG = 'dmg',\n  DMN = 'dmn',\n  DOC = 'doc',\n  DOCX = 'docx',\n  GIF = 'gif',\n  HTML = 'html',\n  ICS = 'ics',\n  ISO = 'iso',\n  JAVASCRIPT = 'javascript',\n  JPEG = 'jpeg',\n  JPG = 'jpg',\n  JS = 'js',\n  MD = 'md',\n  MOV = 'mov',\n  MP_3 = 'mp3',\n  MP_4 = 'mp4',\n  MPG = 'mpg',\n  MSI = 'msi',\n  OGG = 'ogg',\n  PDF = 'pdf',\n  PHP = 'php',\n  PKGINFO = 'pkginfo',\n  PLAIN = 'plain',\n  PLIST = 'plist',\n  PNG = 'png',\n  POSTSCRIPT = 'postscript',\n  PPT = 'ppt',\n  PPTX = 'pptx',\n  PSD = 'psd',\n  PY = 'py',\n  RTF = 'rtf',\n  SQL = 'sql',\n  SVG = 'svg',\n  SVG_XML = 'svg+xml',\n  TGZ = 'tgz',\n  TIFF = 'tiff',\n  TXT = 'txt',\n  UNKNOWN = 'unknown',\n  WAV = 'wav',\n  XLS = 'xls',\n  XLSX = 'xlsx',\n  XML = 'xml',\n  ZIP = 'zip',\n}\n\nexport interface DocumentDirectory {\n  level: string;\n  file: FileMeta;\n  expanded: boolean;\n  filecount: number;\n  children: DocumentDirectory[];\n}\n\nexport interface FileMeta {\n  content_type: string;\n  id?: number;\n  name: string;\n  primary?: boolean;\n  type: FileType;\n  latest_version?: string;\n  last_modified?: string;\n  user_uid?: string;\n  workflow_spec_id?: string;\n  workflow_id?: number;\n  study_id?: number;\n  task_id?: string;\n  form_field_key?: string | number | string[];\n  is_reference?: boolean;\n  irb_doc_code?: string;\n  category?: string;\n  primary_process_id?: string;\n  is_status?: boolean;\n  size?: number;\n  data_store?: any;\n  file?: File;\n}\n\nexport interface FileParams {\n  workflow_spec_id?: string;\n  workflow_id?: number;\n  study_id?: number;\n  task_spec_name?: string;\n  irb_doc_code?: string | number | string[];\n}\n\n","import {HttpResponse} from '@angular/common/http';\nimport {FileMeta, FileType} from '../types/file';\n\nexport const getFileType = (file: File|FileMeta): FileType => {\n  let key: FileType;\n\n  if (file.type) {\n    key = stringToFileType(file.type, '/');\n  }\n\n  if ((key === undefined) && file.name) {\n    key = stringToFileType(file.name, '.');\n  }\n\n  if (key === undefined) {\n    key = FileType.UNKNOWN;\n  }\n\n  return key;\n};\n\nconst stringToFileType = (s: string, separator: string): FileType | undefined => {\n  const sArray = s.toLowerCase().split(separator);\n  const fileTypes = Object.values(FileType).map(v => v.toString());\n\n  if (sArray.length > 0) {\n    const ext = sArray[sArray.length - 1];\n\n    if (fileTypes.includes(ext)) {\n      return ext as FileType;\n    }\n  }\n};\n\nexport const getFileIcon = (file: File|FileMeta, baseHref = ''): string => baseHref + `assets/icons/file_types/${getFileType(file)}.svg`;\n\nexport const newFileFromResponse = (fm: FileMeta, response: HttpResponse<ArrayBuffer>): File => {\n  const options: FilePropertyBag = {\n    type: fm.content_type,\n    lastModified: new Date(response.headers.get('last-modified')).getTime(),\n  };\n\n  return new File([response.body], fm.name, options);\n};\n","export const isNumberDefined = (n: number): boolean => (typeof n === 'number') && isFinite(n) && !isNaN(n);\n","import {Directive, HostListener} from '@angular/core';\nimport {ControlValueAccessor, NG_VALUE_ACCESSOR} from '@angular/forms';\n\n\n/** Enables file fields to be triggered by change events */\n@Directive({\n  selector: '[libFileValueAccessor], input[type=file]',\n  providers: [\n    {provide: NG_VALUE_ACCESSOR, useExisting: FileValueAccessorDirective, multi: true},\n  ],\n})\nexport class FileValueAccessorDirective implements ControlValueAccessor {\n  value: any;\n\n  @HostListener('change', ['$event.target.files'])\n  onChange = (files: File[]) => {\n  };\n\n  @HostListener('blur', [])\n  onTouched = () => {\n  };\n\n  writeValue(value) {\n  }\n\n  registerOnChange(fn: any) {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: any) {\n    this.onTouched = fn;\n  }\n}\n","import {AfterViewInit, Component, OnInit} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {ApiService} from '../../../services/api.service';\nimport {FileMeta} from '../../../types/file';\nimport {getFileType} from '../../../util/file-type';\nimport {isNumberDefined} from '../../../util/is-number-defined';\nimport {FileBaseComponent} from '../file-base/file-base.component';\n\n@Component({\n  selector: 'lib-file-field',\n  templateUrl: './file-field.component.html',\n  styleUrls: ['./file-field.component.scss']\n})\nexport class FileFieldComponent extends FileBaseComponent implements OnInit  {\n  selectedFile: File;\n  selectedFileMeta: FileMeta;\n  META_EXT = '_file_meta';\n\n  constructor(\n    protected api: ApiService,\n  ) {\n    super(api);\n  }\n\n  get fieldKey(): string {\n    return this.key as string;\n  }\n\n  ngOnInit(): void {\n    super.ngOnInit();\n\n    if (this.field && this.field.defaultValue) {\n      this.selectedFile = this.field.defaultValue as File;\n    }\n  }\n\n  onFileSelected($event: Event) {\n    this.selectedFile = ($event.target as HTMLFormElement).files[0];\n\n    if (this.selectedFile) {\n      this.addFile(this.selectedFile);\n    }\n  }\n\n  getFileName() {\n    return this.selectedFile ? this.selectedFile.name : 'Click to select a file';\n  }\n\n  addFile(file: File) {\n    // First, remove any existing file if it exists.\n    if (this.selectedFileMeta) {\n      this.api.deleteFile(this.selectedFileMeta.id).subscribe(() => {\n        this._addFile(file);\n      });\n    } else {\n      this._addFile(file);\n    }\n  }\n\n  _addFile(file: File) {\n    const fileMeta: FileMeta = {\n      content_type: file.type,\n      name: file.name,\n      type: getFileType(file),\n    };\n\n    let docCode = this.fieldKey;\n    if ('doc_code' in this.field.templateOptions) {\n      docCode = this.field.templateOptions.doc_code;\n    }\n    fileMeta.irb_doc_code = docCode;\n    this.fileParams.irb_doc_code = fileMeta.irb_doc_code;\n\n    this.api.addFile(this.fileParams, fileMeta, file).subscribe(fm => {\n      //\n      this.selectedFile = file;\n      this.selectedFileMeta = fm;\n      this.model[this.fieldKey] = fm;\n      this.fileId = fm.id;\n      this.formControl.setValue(fm);\n    });\n  }\n\n  removeFile() {\n    if (this.selectedFileMeta) {\n      this.api.deleteFile(this.selectedFileMeta.id).subscribe(() => {\n        this.selectedFile = undefined;\n        this.selectedFileMeta = undefined;\n        this.model[this.fieldKey] = undefined;\n        this.fileId = undefined;\n        this.formControl.setValue(undefined);\n      });\n    }\n  }\n\n  private checkField() {\n    (this.options as any)._checkField({\n      fieldGroup: this.field.fieldGroup,\n      model: this.model,\n      formControl: this.form,\n      options: this.options,\n    });\n  }\n\n  loadFiles() {\n    if (isNumberDefined(this.fileId)) {\n      this.api.getFileMeta(this.fileId).subscribe(fm => {\n        const options: FilePropertyBag = {\n          type: fm.content_type,\n          lastModified: new Date(fm.last_modified).getTime(),\n        };\n        this.selectedFile = new File([], fm.name, options);\n        this.selectedFileMeta = fm;\n        if (this.model && this.formControl) {\n          this.model[this.fieldKey] = fm;\n          this.formControl.setValue(fm);\n        }\n      }, error => {\n        this.selectedFile = undefined;\n        this.selectedFileMeta = undefined;\n        this.model[this.fieldKey] = undefined;\n        this.fileId = undefined;\n        this.formControl.setValue(undefined);\n      });\n    }\n  }\n}\n","<div [ngClass]=\"{'file-name': true, 'file-is-selected': !!selectedFile}\" fxLayout=\"row\" fxLayoutAlign=\"start center\">\n  <div (click)=\"fileInput.click()\" fxLayout=\"row\" fxLayoutAlign=\"start center\" fxLayoutGap=\"20px\">\n    <mat-icon>folder_open</mat-icon>\n    <span>{{getFileName()}}</span>\n  </div>\n  <button (click)=\"removeFile()\" *ngIf=\"selectedFileMeta\" color=\"warn\" mat-icon-button>\n    <mat-icon>delete</mat-icon>\n  </button>\n  <input\n    #fileInput\n    (change)=\"onFileSelected($event)\"\n    [formlyAttributes]=\"field\"\n    [formControl]=\"formControl\"\n    accept=\".docx,.gif,.jpg,.pdf,.png,.svg,.xlsx,.zip\" hidden\n    id=\"file\"\n    type=\"file\"\n  >\n</div>\n","import {APP_BASE_HREF} from '@angular/common';\nimport {Component, EventEmitter, Inject, Output} from '@angular/core';\nimport {ActivatedRoute} from '@angular/router';\nimport {FileSystemFileEntry, NgxFileDropEntry} from 'ngx-file-drop';\nimport {ReplaySubject} from 'rxjs';\nimport {ApiService} from '../../../services/api.service';\nimport {AppEnvironment} from '../../../types/app-environment';\nimport {FileMeta} from '../../../types/file';\nimport {getFileIcon, getFileType} from '../../../util/file-type';\nimport {FileBaseComponent} from '../file-base/file-base.component';\n\n@Component({\n  selector: 'lib-file-upload',\n  templateUrl: './file-upload.component.html',\n  styleUrls: ['./file-upload.component.scss']\n})\nexport class FileUploadComponent extends FileBaseComponent {\n  @Output() filesUpdated: EventEmitter<FileMeta[]> = new EventEmitter<FileMeta[]>();\n  droppedFiles: NgxFileDropEntry[] = [];\n  fileMetas = new Set<FileMeta>();\n  updateFileMetasSubject = new ReplaySubject<FileMeta[]>();\n  displayedColumns: string[] = [\n    'type',\n    'name',\n    'size',\n    'lastModifiedDate',\n    'actions'\n  ];\n  dropZoneHover = false;\n  getFileIcon = getFileIcon;\n  baseHref = '/';\n\n  constructor(\n    @Inject('APP_ENVIRONMENT') private environment: AppEnvironment,\n    @Inject(APP_BASE_HREF) public appBaseHref: string,\n    protected api: ApiService,\n  ) {\n    super(api);\n    this.baseHref = appBaseHref;\n  }\n\n  get fieldKey(): string {\n    return this.field.key as string;\n  }\n\n  dropped(droppedFiles: NgxFileDropEntry[]) {\n    this.droppedFiles = droppedFiles;\n    this.dropZoneHover = false;\n    this.droppedFiles.forEach((droppedFile, i) => {\n      if (droppedFile.fileEntry.isFile) {\n        const fileEntry: FileSystemFileEntry = droppedFile.fileEntry as FileSystemFileEntry;\n        fileEntry.file((newFile: File) => this.addFile(newFile));\n      }\n    });\n\n    this.updateFileList();\n  }\n\n  fileOver($event) {\n    this.dropZoneHover = true;\n  }\n\n  fileLeave($event) {\n    this.dropZoneHover = false;\n  }\n\n  formatSize(bytes: number, decimalPlaces = 2): string {\n    const sizes = ['KB', 'MB', 'GB', 'TB'];\n    const factor = Math.pow(2, 10 * decimalPlaces);\n\n    for (let i = 0; i < sizes.length; i++) {\n      const divisor = Math.pow(2, (10 * (i + 1)));\n      const nextDivisor = Math.pow(2, (10 * (i + 2)));\n\n      if (bytes < nextDivisor) {\n        const num = Math.round(bytes / divisor * factor) / factor;\n        return `${num.toFixed(decimalPlaces)} ${sizes[i]}`;\n      }\n    }\n  }\n\n  truncate(s: string, maxLength = 20): string {\n    if (s) {\n      if (s.length > maxLength) {\n        return s.slice(0, maxLength) + '...';\n      } else {\n        return s;\n      }\n    } else {\n      return '';\n    }\n  }\n\n  addFile(file: File) {\n    const fileMeta: FileMeta = {\n      content_type: file.type,\n      name: file.name,\n      type: getFileType(file),\n      study_id: this.studyId,\n      workflow_id: this.workflowId,\n      irb_doc_code: this.fieldKey,\n    };\n    this.api.addFile(this.fileParams, fileMeta, file).subscribe(fm => {\n      this.fileMetas.add(fm);\n      this.updateFileList();\n    });\n  }\n\n  removeFile($event, fileMeta: FileMeta) {\n    $event.preventDefault();\n    const fileMetaId = fileMeta.id;\n\n    this.api.deleteFileMeta(fileMetaId).subscribe(() => {\n      this.fileMetas.delete(fileMeta);\n      this.updateFileList();\n    });\n  }\n\n  updateFileList() {\n    const fileMetasArray = Array.from(this.fileMetas);\n\n    if (this.model && this.formControl) {\n      this.model[this.fieldKey] = fileMetasArray;\n      this.formControl.setValue(fileMetasArray);\n    }\n\n    this.updateFileMetasSubject.next(fileMetasArray);\n    this.filesUpdated.emit(fileMetasArray);\n  }\n\n  loadFiles() {\n    this.api.getFileMetas(this.fileParams).subscribe(fms => {\n      fms.forEach(fm => {\n        this.fileMetas.add(fm);\n      });\n      this.updateFileList();\n    });\n  }\n}\n","<div\n  [ngClass]=\"{'hover': dropZoneHover}\"\n  class=\"mat-typography\"\n  id=\"fileUpload\"\n>\n  <ngx-file-drop\n    (onFileDrop)=\"dropped($event)\"\n    (onFileLeave)=\"fileLeave($event)\"\n    (onFileOver)=\"fileOver($event)\"\n    accept=\".docx,.gif,.jpg,.pdf,.png,.svg,.xlsx,.zip\"\n    class=\"file-upload\"\n    dropZoneLabel=\"Drop files here\"\n    id=\"dropZoneContainer\"\n  >\n    <ng-template let-openFileSelector=\"openFileSelector\" ngx-file-drop-content-tmp>\n      <div id=\"dropFilesInstructions\" fxLayout=\"column\" fxLayoutAlign=\"center center\">\n        <mat-icon>cloud_upload</mat-icon>\n        <h3>Drag & drop <strong>{{to.label}}</strong> files here</h3>\n        <button mat-flat-button color=\"primary\" (click)=\"openFileSelector()\" type=\"button\">Browse Files</button>\n      </div>\n    </ng-template>\n  </ngx-file-drop>\n  <div\n    *ngIf=\"updateFileMetasSubject | async\"\n    id=\"fileQueueContainer\"\n  >\n    <h4 id=\"uploaded_files_table_heading\">Uploaded files</h4>\n    <table\n      [dataSource]=\"updateFileMetasSubject\"\n      class=\"mat-elevation-z8\"\n      mat-table\n      aria-describedby=\"uploaded_files_table_heading\"\n    >\n      <ng-container matColumnDef=\"type\">\n        <th\n          *matHeaderCellDef\n          mat-header-cell\n          id=\"uploaded_files_type\"\n        >Type\n        </th>\n        <td\n          *matCellDef=\"let fileMeta\"\n          mat-cell\n        >\n          <img [alt]=\"fileMeta.type\" [src]=\"getFileIcon(fileMeta, baseHref)\"/>\n        </td>\n      </ng-container>\n      <ng-container matColumnDef=\"name\">\n        <th\n          *matHeaderCellDef\n          mat-header-cell\n          id=\"uploaded_files_name\"\n        >Name\n        </th>\n        <td\n          *matCellDef=\"let fileMeta\"\n          mat-cell\n        > {{truncate((fileMeta.name), 60)}} </td>\n      </ng-container>\n      <ng-container matColumnDef=\"size\">\n        <th\n          *matHeaderCellDef\n          mat-header-cell\n          id=\"uploaded_files_size\"\n        >Size\n        </th>\n        <td\n          *matCellDef=\"let fileMeta\"\n          mat-cell\n        > {{formatSize(fileMeta.size)}} </td>\n      </ng-container>\n      <ng-container matColumnDef=\"lastModifiedDate\">\n        <th\n          *matHeaderCellDef\n          mat-header-cell\n          id=\"uploaded_files_date\"\n        >Date Uploaded\n        </th>\n        <td\n          *matCellDef=\"let fileMeta\"\n          mat-cell\n        > {{fileMeta.last_modified | date:'short'}} </td>\n      </ng-container>\n      <ng-container matColumnDef=\"actions\">\n        <th\n          *matHeaderCellDef\n          mat-header-cell\n          id=\"uploaded_files_actions\"\n        >Actions\n        </th>\n        <td\n          *matCellDef=\"let fileMeta\"\n          mat-cell\n        >\n          <button\n            (click)=\"removeFile($event, fileMeta)\"\n            color=\"warn\"\n            mat-icon-button\n          >\n            <mat-icon>delete</mat-icon>\n          </button>\n        </td>\n      </ng-container>\n\n      <tr\n        *matHeaderRowDef=\"displayedColumns\"\n        mat-header-row\n      ></tr>\n      <tr\n        *matRowDef=\"let row; columns: displayedColumns;\"\n        mat-row\n      ></tr>\n    </table>\n  </div>\n</div>\n","import {formatDate} from '@angular/common';\nimport {AfterViewInit, Component, Input, OnChanges, OnInit, SimpleChanges} from '@angular/core';\nimport {FormlyFieldConfig} from '@ngx-formly/core';\nimport {Observable, of} from 'rxjs';\nimport {ApiService} from '../../../services/api.service';\nimport {map} from 'rxjs/operators';\n\ninterface SelectFieldOption {\n  value: string;\n  label: string;\n}\n\n@Component({\n  selector: 'lib-form-printout',\n  templateUrl: './form-printout.component.html',\n  styleUrls: ['./form-printout.component.scss']\n})\nexport class FormPrintoutComponent implements OnInit, OnChanges {\n  @Input() field: FormlyFieldConfig;\n  @Input() model: object;  // model will get correctly updated onChanges, field does not.\n\n  value: string = \"\";\n  label: string = \"\";\n  key: string = \"\";\n\n  constructor(protected api: ApiService) {\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    this.model = changes['model'].currentValue;\n    this.updateValue();\n    this.label = this.addColon(this.field.templateOptions.label);\n  }\n\n  ngOnInit(): void {\n    this.updateValue();\n    this.label = this.addColon(this.field.templateOptions.label);\n  }\n\n  updateValue() {\n\n    this.key = this.field.key as string;\n    if(!(this.key in this.model)) {\n      this.value = \"\";\n      return \"\"\n    }\n\n    let val = this.model[this.key];\n    const fType = this.field.type;\n\n    switch (fType) {\n      case('autocomplete'):\n        this.getAutcompleteValue().subscribe( val => this.value = val)\n        break;\n      case('radio'):\n      case('select'):\n        this.value = this.getSelectValue();\n        break;\n      case('file'):\n        if(val && 'name' in val) {\n          this.value = val.name;\n        }\n        break;\n      case('datepicker'):\n        if (val) {\n          this.value = formatDate(val, 'mediumDate', 'en-us');\n        }\n        break;\n      default:\n        this.value = val;\n    }\n  }\n\n\n  getAutcompleteValue(): Observable<string> {\n    const fileParams = {\n      study_id: this.field.templateOptions.study_id,\n      workflow_id: this.field.templateOptions.workflow_id,\n      task_spec_name: this.field.templateOptions.task_spec_name,\n      irb_doc_code: this.field.key as string,\n    };\n    return this.api.lookupFieldOptions('', fileParams, this.model[this.key], 1).pipe(\n      map(results => {\n        if (results.length > 0) {\n          return results[0][this.field.templateOptions.label_column] as string\n        } else {\n          return \"I don't know what is going on.\"\n        }\n      })\n    )\n  }\n\n  getSelectValue(): string {\n    const labels = [];\n    const opts = this.field.templateOptions.options as SelectFieldOption[];\n    let val = this.model[this.key];\n    opts.forEach(o => {\n        if (\n          o.value === val || (Array.isArray(val) && val.includes(o.value)) ||\n          (\n            !!val &&\n            typeof val === 'object' &&\n            Object.getPrototypeOf(val) === Object.getPrototypeOf({}) &&\n            val.hasOwnProperty(o.value) &&\n            val[o.value] === true\n          )\n        ) {\n          labels.push(o.label);\n        }\n    });\n\n    if (labels.length > 0) {\n      return labels.join(', ');\n    } else {\n      return \"\";\n    }\n  }\n\n\n  addColon(label: string) {\n    if (!label) {\n      return \"\";\n    }\n    if (label[label.length - 1] === ':' || label.trim().length === 0) {\n      return label;\n    } else {\n      return label + ':';\n    }\n  }\n}\n","\n<ng-container>\n  <ng-container *ngIf=\"!field.hide\">\n    <p>\n      {{label}}\n      <strong>\n          {{value | truncate: 50}}\n      </strong>\n      <mat-error>\n        <formly-validation-message [field]=\"field\"></formly-validation-message>\n      </mat-error>\n    </p>\n  </ng-container>\n</ng-container>\n","import {Component, Inject, OnInit} from '@angular/core';\nimport {MAT_DIALOG_DATA, MatDialogRef} from '@angular/material/dialog';\nimport {MarkdownService} from 'ngx-markdown';\n\nexport interface HelpDialogData {\n  title: string;\n  text: string;\n}\n\n@Component({\n  selector: 'lib-help-dialog',\n  templateUrl: './help-dialog.component.html',\n  styleUrls: ['./help-dialog.component.scss']\n})\nexport class HelpDialogComponent implements OnInit {\n\n  constructor(\n    public dialogRef: MatDialogRef<HelpDialogComponent>,\n    @Inject(MAT_DIALOG_DATA) public data: HelpDialogData,\n    private markdownService: MarkdownService\n    ) {\n  }\n\n  ngOnInit(): void {\n    const linkRenderer = this.markdownService.renderer.link;\n    this.markdownService.renderer.link = (href, title, text) => {\n      const html = linkRenderer.call(this.markdownService.renderer, href, title, text);\n      return html.replace(/^<a /, '<a target=\"_blank\" rel=\"nofollow\" ');\n    };\n  }\n\n  onNoClick(): void {\n    this.dialogRef.close();\n  }\n\n}\n","<div class=\"mat-typography\">\n  <h1 mat-dialog-title>{{data.title}}</h1>\n  <div mat-dialog-content>\n    <markdown>\n      {{data.text | unescapeLineBreaks}}\n    </markdown>\n  </div>\n  <div mat-dialog-actions>\n    <button (click)=\"onNoClick()\" mat-button autofocus>Ok</button>\n  </div>\n</div>\n","import {AfterViewInit, Component, TemplateRef, ViewChild} from '@angular/core';\nimport {MatDialog} from '@angular/material/dialog';\nimport {FieldWrapper} from '@ngx-formly/core';\nimport {HelpDialogComponent} from '../help-dialog/help-dialog.component';\n\n@Component({\n  selector: 'lib-help-wrapper',\n  templateUrl: './help-wrapper.component.html',\n  styleUrls: ['./help-wrapper.component.scss']\n})\nexport class HelpWrapperComponent extends FieldWrapper implements AfterViewInit {\n  @ViewChild('matSuffix', {static: true}) matSuffix: TemplateRef<any>;\n  expanded = false;\n\n  constructor(\n    public dialog: MatDialog\n  ) {\n    super();\n  }\n\n  ngAfterViewInit() {\n    if (this.matSuffix) {\n      Promise.resolve().then(() => {\n        this.to.suffix = this.matSuffix;\n      });\n    }\n  }\n\n  openDialog($event: MouseEvent, title: string, text: string) {\n    $event.preventDefault();\n    $event.stopPropagation();\n    this.dialog.open(HelpDialogComponent, {\n      width: '600px',\n      data: {title, text}\n    });\n  }\n}\n","<ng-container #fieldComponent></ng-container>\n<ng-template #matSuffix>\n  <button\n    *ngIf=\"to.help\"\n    mat-icon-button\n    (click)=\"openDialog($event, to.label, to.help)\"\n  >\n    <mat-icon>info</mat-icon>\n  </button>\n</ng-template>\n","import {FormlyFieldConfig} from '@ngx-formly/core';\n\nexport function helpWrapperExtension(field: FormlyFieldConfig) {\n  if (!field.templateOptions || (field.wrappers && field.wrappers.indexOf('help') !== -1)) {\n    return;\n  }\n\n  if (field.templateOptions.help) {\n    field.wrappers = field.wrappers || [];\n    field.wrappers.push('help');\n  }\n}\n","import {Component, OnInit} from '@angular/core';\nimport {FieldWrapper} from '@ngx-formly/core';\nimport {MarkdownService} from 'ngx-markdown';\n\n@Component({\n  selector: 'lib-markdown-description-wrapper',\n  templateUrl: './markdown-description-wrapper.component.html',\n  styleUrls: ['./markdown-description-wrapper.component.scss']\n})\nexport class MarkdownDescriptionWrapperComponent extends FieldWrapper implements OnInit {\n  constructor(private markdownService: MarkdownService) {\n    super();\n  }\n\n  ngOnInit(): void {\n    const linkRenderer = this.markdownService.renderer.link;\n    this.markdownService.renderer.link = (href, title, text) => {\n      const html = linkRenderer.call(this.markdownService.renderer, href, title, text);\n      return html.replace(/^<a /, '<a target=\"_blank\" rel=\"nofollow\" ');\n    };\n  }\n\n}\n\n","<ng-container #fieldComponent></ng-container>\n<div *ngIf=\"to.markdownDescription\" class=\"markdown-description\">\n  <markdown>\n    {{to.markdownDescription | unescapeLineBreaks}}\n  </markdown>\n</div>\n","import {FormlyFieldConfig} from '@ngx-formly/core';\n\nexport function markdownDescriptionWrapperExtension(field: FormlyFieldConfig) {\n  if (!field.templateOptions || (field.wrappers && field.wrappers.indexOf('markdown_description') !== -1)) {\n    return;\n  }\n\n  if (field.templateOptions.markdownDescription) {\n    if (field.wrappers && (field.wrappers.length > 0)) {\n      const panelIndex = field.wrappers.findIndex(w => w === 'panel');\n\n      if (panelIndex === -1) {\n        // Put it at the beginning\n        field.wrappers.unshift('markdown_description');\n      } else {\n        // Insert it just after the panel\n        field.wrappers.splice(panelIndex + 1, 0, 'markdown_description');\n      }\n    } else {\n      // Wrappers is empty. Just set it\n      field.wrappers = ['markdown_description'];\n    }\n  }\n}\n","import {ChangeDetectionStrategy, Component, OnInit} from '@angular/core';\nimport {FieldWrapper} from '@ngx-formly/core';\n\n@Component({\n  selector: 'lib-panel-wrapper',\n  templateUrl: './panel-wrapper.component.html',\n  styleUrls: ['./panel-wrapper.component.scss']\n})\nexport class PanelWrapperComponent extends FieldWrapper implements OnInit {\n  hide: boolean;\n\n  ngOnInit() {\n    this.hide = this.shouldHide();\n  }\n\n  // Loop through every field in group. If all are hidden, hide the group wrapper\n   shouldHide(): boolean {\n     // Are we in a repeat? If so, evaluate the hide_expression applied to the repeat group:\n     if (this.field.type == 'repeat' && this.field.fieldArray.fieldGroup) {\n       // Loop through every field in this field group.\n       for (let x = 0; x < this.field.fieldArray.fieldGroup.length; x++) {\n         if(this.field.fieldArray.fieldGroup[x].hide != true) {\n           return false;\n        } else  {\n          return false;\n          }\n      }\n    // If everything in the group is hidden, hide the entire group.\n     return true;\n     }\n\n     // If nothing is in the fieldGroup, don't automatically hide the group.\n     if (this.field.fieldGroup && this.field.fieldGroup.length == 0) {\n       return false;\n     }\n     // If anything in the field group is visible, don't hide the group.\n     if (this.field.fieldGroup) {\n       for (let x = 0; x < this.field.fieldGroup.length; x++) {\n         if (this.field.fieldGroup[x].hide !== true ) {\n           return false;\n         }\n       }\n     }\n     // If everything in the group is hidden, hide the entire group.\n     return true;\n   }\n}\n","<div [fxHide]=shouldHide()>\n  <mat-card class=\"mat-elevation-z0\">\n    <mat-card-header>\n      <mat-card-title>{{ to.label }}</mat-card-title>\n    </mat-card-header>\n    <mat-card-content>\n      <ng-container #fieldComponent></ng-container>\n    </mat-card-content>\n  </mat-card>\n</div>\n","import {AfterViewInit, Component, OnInit} from '@angular/core';\nimport {MatRadioChange} from '@angular/material/radio';\nimport {FormlyFieldRadio} from '@ngx-formly/material/radio';\n\n@Component({\n  selector: 'lib-radio-data-field',\n  templateUrl: './radio-data-field.component.html',\n  styleUrls: ['./radio-data-field.component.scss']\n})\nexport class RadioDataFieldComponent extends FormlyFieldRadio {\n  getSelected() {\n    const key = this.key as string;\n\n    if (\n      this.model &&\n      this.key &&\n      this.model.hasOwnProperty(this.key) &&\n      this.model[key] &&\n      this.model[key].hasOwnProperty('value')\n    ) {\n      const storedVal = this.model[key].value;\n\n      if (this.radioGroup && this.radioGroup._radios) {\n        const radios = this.radioGroup._radios.toArray();\n\n        for (const radio of radios) {\n          if (radio.value.value === storedVal) {\n            return radio;\n          }\n        }\n      }\n    }\n    return null;\n  }\n\n  selectRadio(e: MatRadioChange) {\n    this.formControl.patchValue(e.value);\n  }\n}\n","<mat-radio-group\n  [formControl]=\"formControl\"\n  [formlyAttributes]=\"field\"\n  [required]=\"to.required\"\n  [tabindex]=\"to.tabindex\"\n  [selected]=\"getSelected()\"\n  (change)=\"selectRadio($event)\"\n>\n  <mat-radio-button\n    *ngFor=\"let option of to.options | formlySelectOptions: field | async; let i = index\"\n    [color]=\"to.color\"\n    [id]=\"id + '_' + i\"\n    [labelPosition]=\"to.labelPosition\"\n    [value]=\"option.value\"\n  >\n    {{ option.label }}\n  </mat-radio-button>\n</mat-radio-group>\n","// eslint-disable-next-line max-len\nexport const EMAIL_REGEX = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/i;\n\nexport default EMAIL_REGEX;\n","// eslint-disable-next-line max-len\nexport const PHONE_REGEX = /^(?:\\+?1\\s*(?:[.-]\\s*)?)?(?:\\(\\s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\\s*\\)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\\s*(?:[.-]\\s*)?([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\\s*(?:[.-]\\s*)?([0-9]{4})(?:\\s*(?:#|x\\.?|ext\\.?|extension)\\s*(\\d+))?$/i;\n\nexport default PHONE_REGEX;\n","export const URL_REGEX = new RegExp(\n    '^' +\n    '(?:(?:https?|ftp)://)' +\n    '(?:\\\\S+(?::\\\\S*)?@)?' +\n    '(?:' +\n    '(?!(?:10|127)(?:\\\\.\\\\d{1,3}){3})' +\n    '(?!(?:169\\\\.254|192\\\\.168)(?:\\\\.\\\\d{1,3}){2})' +\n    '(?!172\\\\.(?:1[6-9]|2\\\\d|3[0-1])(?:\\\\.\\\\d{1,3}){2})' +\n    '(?:[1-9]\\\\d?|1\\\\d\\\\d|2[01]\\\\d|22[0-3])' +\n    '(?:\\\\.(?:1?\\\\d{1,2}|2[0-4]\\\\d|25[0-5])){2}' +\n    '(?:\\\\.(?:[1-9]\\\\d?|1\\\\d\\\\d|2[0-4]\\\\d|25[0-4]))' +\n    '|' +\n    '(?:(?:[a-z\\\\u00a1-\\\\uffff0-9]-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)' +\n    '(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff0-9]-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)*' +\n    '(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff]{2,}))' +\n    '\\\\.?' +\n    ')' +\n    '(?::\\\\d{2,5})?' +\n    '(?:[/?#]\\\\S*)?' +\n    '$', 'i'\n  );\n\nexport default URL_REGEX;\n","import {UntypedFormControl, ValidationErrors} from '@angular/forms';\nimport {FieldType, FormlyFieldConfig} from '@ngx-formly/core';\nimport isEqual from 'lodash.isequal';\nimport {isNumberDefined} from '../../../util/is-number-defined';\nimport EMAIL_REGEX from './email.regex';\nimport PHONE_REGEX from './phone.regex';\nimport URL_REGEX from './url.regex';\n\nexport function EmailValidator(control: UntypedFormControl): ValidationErrors {\n  return !control.value || EMAIL_REGEX.test(control.value) ? null : {email: true};\n}\n\nexport function EmailValidatorMessage(err, field: FormlyFieldConfig) {\n  return `\"${field.formControl.value}\" is not a valid email address`;\n}\n\nexport function UrlValidator(control: UntypedFormControl): ValidationErrors {\n  return !control.value || URL_REGEX.test(control.value) ? null : {url: true};\n}\n\nexport function UrlValidatorMessage(err, field: FormlyFieldConfig) {\n  return `We cannot save \"${field.formControl.value}\". Please provide the full path, including http:// or https://`;\n}\n\nexport function PhoneValidator(control: UntypedFormControl): ValidationErrors {\n  return !control.value || PHONE_REGEX.test(control.value) ? null : {phone: true};\n}\n\nexport function PhoneValidatorMessage(err, field: FormlyFieldConfig) {\n  return `\"${field.formControl.value}\" is not a valid phone number`;\n}\n\nexport function CheckedValidator(control: UntypedFormControl, field: FormlyFieldConfig): ValidationErrors {\n  if (field.templateOptions.required) {\n    return !control.value == true ? {checked: true} : null;\n  } else {\n    return null\n  }\n}\n\nexport function CheckedValidatorMessage() {\n  return `You must check this box to continue.`;\n}\n\nexport function MinValidationMessage(err, field) {\n  return `This value should be more than ${field.templateOptions.min}`;\n}\n\nexport function MaxValidationMessage(err, field) {\n  return `This value should be less than ${field.templateOptions.max}`;\n}\n\nexport function ShowError(field: FieldType) {\n  return field.formControl &&\n    field.formControl.invalid &&\n    (\n      field.formControl.dirty ||\n      (field.options && field.options.parentForm && field.options.parentForm.submitted) ||\n      (field.field && field.field.validation && field.field.validation.show)\n    );\n}\n\nexport function NumberValidator(control: UntypedFormControl): ValidationErrors {\n  const fields = (control as any)._fields;\n  if (\n    fields &&\n    Array.isArray(fields) &&\n    (fields.length > 0) &&\n    fields[0].templateOptions.required &&\n    !isNumberDefined(control.value)\n  ) {\n    return {required: true};\n  }\n  return !control.value || (typeof control.value === 'number') ? null : {number: true};\n}\n\nexport function NumberValidatorMessage(err, field: FormlyFieldConfig) {\n  return 'Please enter a number.';\n}\n\nexport function AutocompleteValidator(control: UntypedFormControl): ValidationErrors {\n  const fields = (control as any)._fields;\n  const isRequired = (\n    fields &&\n    Array.isArray(fields) &&\n    (fields.length > 0) &&\n    fields[0].templateOptions.required\n  );\n\n  if (isRequired && !control.value) {\n    return {required: true};\n  }\n  if (control.value === 'invalid') {\n    return {autocomplete: true};\n  }\n}\n\nexport function AutocompleteValidatorMessage(err, field: FormlyFieldConfig) {\n  return 'Not a valid selection. Please edit your entry and choose an option from the displayed list.';\n}\n\nexport function FileFieldValidator(control: UntypedFormControl): ValidationErrors {\n  const fields = (control as any)._fields;\n\n  if (\n    fields &&\n    Array.isArray(fields) &&\n    (fields.length > 0) &&\n    fields[0].templateOptions.required &&\n    !control.value\n  ) {\n    return {required: true};\n  }\n  return null;\n}\n\nexport function FileFieldValidatorMessage(err, field: FormlyFieldConfig) {\n  return 'Please upload a file.';\n}\n\nexport function FileUploadValidator(control: UntypedFormControl): ValidationErrors {\n  const fields = (control as any)._fields;\n\n  if (\n    fields &&\n    Array.isArray(fields) &&\n    (fields.length > 0) &&\n    fields[0].templateOptions.required &&\n    !control.value\n  ) {\n    return {required: true};\n  }\n  return null;\n}\n\nexport function FileUploadValidatorMessage(err, field: FormlyFieldConfig) {\n  return 'Please upload a file.';\n}\n\nexport function RepeatSectionValidator(control: UntypedFormControl): ValidationErrors {\n  const fields = (control as any)._fields;\n  if (\n    fields &&\n    Array.isArray(fields) &&\n    (fields.length > 0) &&\n    fields[0].templateOptions.required &&\n    [null, undefined].includes(control.value)\n  ) {\n    return {required: true};\n  }\n  return null;\n}\n\nexport function RepeatSectionValidatorMessage(err, field: FormlyFieldConfig) {\n  return 'Please add at least one.';\n}\n\nexport function RegexValidator(control: UntypedFormControl, field: FormlyFieldConfig, options = {regex: ''}): ValidationErrors {\n  return !control.value || RegExp(options.regex).test(control.value) ? null : {regex: true};\n}\n\nexport function RegexValidatorMessage(err, field: FormlyFieldConfig) {\n  return 'The given input is not valid.';\n}\n","import {Component, Inject, OnInit} from '@angular/core';\nimport {MAT_DIALOG_DATA, MatDialogRef} from '@angular/material/dialog';\n\n@Component({\n  selector: 'lib-repeat-section-confirm-dialog',\n  templateUrl: './repeat-section-confirm-dialog.component.html',\n  styleUrls: ['./repeat-section-confirm-dialog.component.scss']\n})\nexport class RepeatSectionConfirmDialogComponent{\n\n  constructor(\n    public dialogRef: MatDialogRef<RepeatSectionConfirmDialogComponent>\n  ) { }\n\n  onConfirm(): void {\n    // Close the dialog, return true\n    this.dialogRef.close(true);\n  }\n\n  onDismiss(): void {\n    // Close the dialog, return false\n    this.dialogRef.close(false);\n  }\n\n}\n","<mat-card fxLayoutGap>\n  <p mat-dialog-title>Are you sure you want to delete this item?</p>\n  <div mat-dialog-actions>\n    <button mat-button (click)=\"onDismiss()\">No</button>\n    <button mat-raised-button color=\"primary\" (click)=\"onConfirm()\">Yes</button>\n  </div>\n</mat-card>\n","import {ChangeDetectionStrategy, ChangeDetectorRef, Component} from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { FieldArrayType, FormlyFieldConfig, FormlyFormOptions } from '@ngx-formly/core';\nimport { ApiService } from '../../../services/api.service';\nimport { RepeatSectionConfirmDialogComponent } from '../repeat-section-confirm-dialog/repeat-section-confirm-dialog.component';\n\n@Component({\n  selector: 'lib-repeat-section',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  templateUrl: './repeat-type.component.html',\n  styleUrls: ['./repeat-type.component.scss'],\n})\nexport class RepeatTypeComponent extends FieldArrayType {\n  constructor(\n    public dialog: MatDialog,\n    protected api: ApiService,\n    private changeDetector: ChangeDetectorRef\n  ) {\n    super();\n  }\n\n  confirmDelete(i: number, f?: FormlyFieldConfig) {\n    const dialogRef = this.dialog.open(RepeatSectionConfirmDialogComponent, {\n      width: '33vw',\n      maxWidth: '100vw',\n      maxHeight: '100vh',\n    });\n\n    dialogRef.afterClosed().subscribe(result => {\n      if (result == true) {\n        this.remove(i)\n        this.changeDetector.detectChanges()\n      }\n    });\n  }\n\n\n  remove(i: number) {\n    for (const field of this.field.fieldGroup[i].fieldGroup) {\n      const fieldKey = field.key as string;\n      if (field.type === 'file' && fieldKey in this.model[i]) {\n        this.removeFile(this.model[i][fieldKey].id);\n      }\n    }\n    super.remove(i);\n  }\n\n  removeFile(fileId) {\n    this.api.deleteFileMeta(fileId).subscribe();\n  }\n\n}\n","<mat-card class=\"repeat\" *ngFor=\"let field of field.fieldGroup; let i = index;\">\n  <mat-card-content fxLayout=\"row\">\n    <div fxFlex=\"90\">\n      <formly-field class=\"col\" [field]=\"field\"></formly-field>\n    </div>\n    <div\n      fxFlex=\"10\"\n      fxLayout=\"row\"\n      fxLayoutAlign=\"end start\"\n    >\n      <button\n        *ngIf=\"!field.templateOptions.editOnly\"\n        (click)=\"confirmDelete(i)\"\n        mat-icon-button\n        color=\"warn\"\n        type=\"button\"\n      >\n        <mat-icon>close</mat-icon>\n      </button>\n  </div>\n  </mat-card-content>\n</mat-card>\n<div style=\"margin:30px 0;\">\n  <button color=\"accent\"\n          mat-flat-button type=\"button\" (click)=\"add()\">\n    <mat-icon>add</mat-icon>Add {{ to.buttonLabel }}</button>\n</div>\n","import {CommonModule} from '@angular/common';\nimport {Injectable, NgModule} from '@angular/core';\nimport {FlexLayoutModule} from '@angular/flex-layout';\nimport {FormsModule, ReactiveFormsModule} from '@angular/forms';\nimport {MatAutocompleteModule} from '@angular/material/autocomplete';\nimport {MatButtonModule} from '@angular/material/button';\nimport {MatCardModule} from '@angular/material/card';\nimport {MatCheckboxModule} from '@angular/material/checkbox';\nimport {MatDialogModule} from '@angular/material/dialog';\nimport {MatIconModule} from '@angular/material/icon';\nimport {MatInputModule} from '@angular/material/input';\nimport {MatRadioModule} from '@angular/material/radio';\nimport {MatTableModule} from '@angular/material/table';\nimport {FormlyModule} from '@ngx-formly/core';\nimport {FormlySelectModule} from '@ngx-formly/core/select';\nimport {FormlyMaterialModule} from '@ngx-formly/material';\nimport {FormlyMatDatepickerModule} from '@ngx-formly/material/datepicker';\nimport {TruncateModule} from '@yellowspot/ng-truncate';\nimport {NgxFileDropModule} from 'ngx-file-drop';\nimport {MarkdownModule} from 'ngx-markdown';\nimport {SartographyPipesModule} from '../pipes/sartography-pipes.module';\nimport {AutocompleteFieldComponent} from './autocomplete-field/autocomplete-field.component';\nimport {FileBaseComponent} from './file-base/file-base.component';\nimport {FileFieldComponent} from './file-field/file-field.component';\nimport {FileUploadComponent} from './file-upload/file-upload.component';\nimport {FileValueAccessorDirective} from './file-upload/file-value-accessor.directive';\nimport {FormPrintoutComponent} from './form-printout/form-printout.component';\nimport {HelpDialogComponent} from './help-dialog/help-dialog.component';\nimport {HelpWrapperComponent} from './help-wrapper/help-wrapper.component';\nimport {helpWrapperExtension} from './help-wrapper/help-wrapper.extension';\nimport {MarkdownDescriptionWrapperComponent} from './markdown-description-wrapper/markdown-description-wrapper.component';\nimport {markdownDescriptionWrapperExtension} from './markdown-description-wrapper/markdown-description-wrapper.extension';\nimport {PanelWrapperComponent} from './panel-wrapper/panel-wrapper.component';\nimport {RadioDataFieldComponent} from './radio-data-field/radio-data-field.component';\nimport {\n  AutocompleteValidator,\n  AutocompleteValidatorMessage,\n  EmailValidator,\n  EmailValidatorMessage,\n  FileFieldValidator,\n  FileFieldValidatorMessage,\n  FileUploadValidator,\n  FileUploadValidatorMessage,\n  MaxValidationMessage,\n  MinValidationMessage,\n  NumberValidator,\n  NumberValidatorMessage,\n  PhoneValidator,\n  PhoneValidatorMessage,\n  RegexValidator,\n  RegexValidatorMessage,\n  RepeatSectionValidator,\n  RepeatSectionValidatorMessage,\n  ShowError,\n  UrlValidator,\n  UrlValidatorMessage,\n  CheckedValidator,\n  CheckedValidatorMessage,\n} from './validators/formly.validator';\nimport { RepeatSectionConfirmDialogComponent } from './repeat-section-confirm-dialog/repeat-section-confirm-dialog.component';\nimport {MatProgressSpinnerModule, MatSpinner} from '@angular/material/progress-spinner';\nimport {ConfigOption} from '@ngx-formly/core/lib/services/formly.config';\nimport {RepeatTypeComponent} from './repeat-type/repeat-type.component';\n\n\n@Injectable()\nexport class AppFormlyConfig {\n  public static config = {\n    extras: {\n//      checkExpressionOn: 'modelChange' as ConfigOption['extras']['checkExpressionOn'],\n      showError: ShowError,\n    },\n    types: [\n      {name: 'autocomplete', component: AutocompleteFieldComponent, wrappers: ['form-field']},\n      {name: 'file', component: FileFieldComponent, wrappers: ['form-field']},\n      {name: 'files', component: FileUploadComponent, wrappers: ['form-field']},\n      {name: 'radio_data', component: RadioDataFieldComponent, wrappers: ['form-field']},\n      {name: 'repeat', component: RepeatTypeComponent},\n    ],\n    validators: [\n      {name: 'phone', validation: PhoneValidator},\n      {name: 'email', validation: EmailValidator},\n      {name: 'url', validation: UrlValidator},\n      {name: 'number', validation: NumberValidator},\n      {name: 'autocomplete', validation: AutocompleteValidator},\n      {name: 'file', validation: FileFieldValidator},\n      {name: 'files', validation: FileUploadValidator},\n      {name: 'repeat', validation: RepeatSectionValidator},\n      {name: 'checked', validation: CheckedValidator},\n      {name: 'regex', validation: RegexValidator, options: { regex: ''},},\n\n    ],\n    validationMessages: [\n      {name: 'phone', message: PhoneValidatorMessage},\n      {name: 'email', message: EmailValidatorMessage},\n      {name: 'url', message: UrlValidatorMessage},\n      {name: 'number', message: NumberValidatorMessage},\n      {name: 'autocomplete', message: AutocompleteValidatorMessage},\n      {name: 'file', message: FileFieldValidatorMessage},\n      {name: 'files', message: FileUploadValidatorMessage},\n      {name: 'repeat', message: RepeatSectionValidatorMessage},\n      {name: 'required', message: 'This field is required.'},\n      {name: 'min', message: MinValidationMessage},\n      {name: 'max', message: MaxValidationMessage},\n      {name: 'checked', message: CheckedValidatorMessage},\n      {name: 'regex', message: RegexValidatorMessage},\n    ],\n    wrappers: [\n      {name: 'panel', component: PanelWrapperComponent},\n      {name: 'markdown_description', component: MarkdownDescriptionWrapperComponent},\n      {name: 'help', component: HelpWrapperComponent},\n    ],\n    extensions: [\n      {name: 'markdown_description', extension: {onPopulate: markdownDescriptionWrapperExtension}},\n      {name: 'help', extension: {onPopulate: helpWrapperExtension}},\n    ],\n  };\n}\n\n@NgModule({\n    declarations: [\n        AutocompleteFieldComponent,\n        FileBaseComponent,\n        FileFieldComponent,\n        FileUploadComponent,\n        FileValueAccessorDirective,\n        FormPrintoutComponent,\n        HelpDialogComponent,\n        HelpWrapperComponent,\n        MarkdownDescriptionWrapperComponent,\n        PanelWrapperComponent,\n        RadioDataFieldComponent,\n        RepeatSectionConfirmDialogComponent,\n        RepeatTypeComponent\n    ],\n    imports: [\n        CommonModule,\n        FlexLayoutModule,\n        FormlyMatDatepickerModule,\n        FormlyMaterialModule,\n        FormlyModule.forRoot(AppFormlyConfig.config),\n        FormlySelectModule,\n        FormsModule,\n        MarkdownModule.forRoot(),\n        MatAutocompleteModule,\n        MatButtonModule,\n        MatCardModule,\n        MatCheckboxModule,\n        MatDialogModule,\n        MatIconModule,\n        MatInputModule,\n        MatRadioModule,\n        MatTableModule,\n        MatProgressSpinnerModule,\n        NgxFileDropModule,\n        ReactiveFormsModule,\n        SartographyPipesModule,\n        TruncateModule,\n    ],\n    exports: [\n        AutocompleteFieldComponent,\n        FileBaseComponent,\n        FileFieldComponent,\n        FileUploadComponent,\n        FormPrintoutComponent,\n        HelpDialogComponent,\n        HelpWrapperComponent,\n        MarkdownDescriptionWrapperComponent,\n        PanelWrapperComponent,\n        RadioDataFieldComponent,\n        RepeatTypeComponent\n    ],\n    providers: []\n})\nexport class SartographyFormsModule {\n}\n","import { AbstractControl, ValidationErrors } from '@angular/forms';\nimport EMAIL_REGEX from './email.regex';\n\nexport function ValidateEmail(control: AbstractControl): ValidationErrors {\n  if (!EMAIL_REGEX.test(control.value) && control.value && control.value !== '') {\n    const error: ValidationErrors = { email: true };\n    return error;\n  }\n}\n","import { AbstractControl, ValidationErrors } from '@angular/forms';\n\nexport function ValidatePasswordsMatch(control: AbstractControl): ValidationErrors {\n  // Verifies that this field matches a field on the same form called \"password\".\n  const dataForm = control.parent;\n  if (!dataForm) {\n    return null;\n  }\n\n  const password = dataForm.get('password').value;\n  const passwordRepeated = control.value;\n\n  if (password !== passwordRepeated) {\n    /* for newPasswordRepeat from current field \"newPassword\" */\n    const error: ValidationErrors = {MatchPassword: true};\n    return error;\n  } else {\n    return null;\n  }\n}\n","import { AbstractControl, ValidationErrors } from '@angular/forms';\n\nexport function ValidateUrl(control: AbstractControl): ValidationErrors {\n\n  const urlRegEx = new RegExp(\n    '^' +\n    '(?:(?:https?|ftp)://)' +\n    '(?:\\\\S+(?::\\\\S*)?@)?' +\n    '(?:' +\n    '(?!(?:10|127)(?:\\\\.\\\\d{1,3}){3})' +\n    '(?!(?:169\\\\.254|192\\\\.168)(?:\\\\.\\\\d{1,3}){2})' +\n    '(?!172\\\\.(?:1[6-9]|2\\\\d|3[0-1])(?:\\\\.\\\\d{1,3}){2})' +\n    '(?:[1-9]\\\\d?|1\\\\d\\\\d|2[01]\\\\d|22[0-3])' +\n    '(?:\\\\.(?:1?\\\\d{1,2}|2[0-4]\\\\d|25[0-5])){2}' +\n    '(?:\\\\.(?:[1-9]\\\\d?|1\\\\d\\\\d|2[0-4]\\\\d|25[0-4]))' +\n    '|' +\n    '(?:(?:[a-z\\\\u00a1-\\\\uffff0-9]-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)' +\n    '(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff0-9]-*)*[a-z\\\\u00a1-\\\\uffff0-9]+)*' +\n    '(?:\\\\.(?:[a-z\\\\u00a1-\\\\uffff]{2,}))' +\n    '\\\\.?' +\n    ')' +\n    '(?::\\\\d{2,5})?' +\n    '(?:[/?#]\\\\S*)?' +\n    '$', 'i'\n  );\n\n  if (!urlRegEx.test(control.value) && control.value && control.value !== '') {\n    const error: ValidationErrors = { url: true };\n    return error;\n  }\n}\n","import {APP_BASE_HREF} from '@angular/common';\nimport {HttpRequest} from '@angular/common/http';\nimport {Inject, Injectable} from '@angular/core';\nimport {NavigationEnd, Router} from '@angular/router';\nimport {ApiError} from '../types/api';\nimport {AppEnvironment} from '../types/app-environment';\n\ndeclare let gtag;\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class GoogleAnalyticsService {\n  analyticsKey: string;\n\n  constructor(\n    @Inject('APP_ENVIRONMENT') private environment: AppEnvironment,\n    @Inject(APP_BASE_HREF) public baseHref: string,\n    private router: Router,\n  ) {\n    this.analyticsKey = this.environment.googleAnalyticsKey;\n  }\n\n  public authEvent(req: HttpRequest<any>) {\n    this.event('login', 'authentication', req.url);\n  }\n\n  public errorEvent(error: ApiError) {\n    this.event(error.code, 'error_messages', error.message);\n  }\n\n  public setUser(uid) {\n    if (typeof gtag !== 'undefined') {\n      gtag('set', {user_id: uid}); // Set the user ID using signed-in user_id.\n    }\n    this.event('user-id available', 'authentication', uid);\n  }\n\n  public init(analyticsKey) {\n    this.analyticsKey = analyticsKey || this.analyticsKey;\n    this.listenForRouteChanges();\n\n    try {\n      const script1 = document.createElement('script');\n      script1.async = true;\n      script1.src = 'https://www.googletagmanager.com/gtag/js?id=' + this.analyticsKey;\n      document.head.appendChild(script1);\n\n      const script2 = document.createElement('script');\n      script2.innerHTML = `\n        window.dataLayer = window.dataLayer || [];\n        function gtag(){dataLayer.push(arguments);}\n        gtag('js', new Date());\n        gtag('config', '` + this.analyticsKey + `', {'send_page_view': false});\n      `;\n      document.head.appendChild(script2);\n    } catch (ex) {\n      console.error('Error appending google analytics');\n      console.error(ex);\n    }\n  }\n\n  private event(action: string, category: string, label: string) {\n    if (typeof gtag !== 'undefined') {\n      gtag('event', action, {\n        event_category: category,\n        event_label: label\n      });\n    }\n  }\n\n  private listenForRouteChanges() {\n    const analyticsKey = this.environment.googleAnalyticsKey;\n    this.router.events.subscribe(event => {\n      if (gtag && event instanceof NavigationEnd) {\n        gtag('config', analyticsKey, {\n          page_path: event.urlAfterRedirects,\n        });\n      }\n    });\n  }\n}\n","import {EventEmitter, Injectable, Output} from '@angular/core';\nimport {User} from '../types/user';\nimport {ApiService} from './api.service';\n\nimport {GoogleAnalyticsService} from './google-analytics.service';\nimport {BehaviorSubject} from 'rxjs';\n\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class UserService {\n  @Output() userChanged = new EventEmitter<User>();\n  private readonly user = new BehaviorSubject<User>(undefined);\n  private readonly isAdmin = new BehaviorSubject(false);\n  private readonly isImpersonating = new BehaviorSubject(false);\n  private readonly realUser = new BehaviorSubject<User>(undefined);\n  // we give the option to use observables\n  readonly user$ = this.user.asObservable();\n  readonly realUser$ = this.realUser.asObservable();\n  readonly isImpersonating$ = this.isImpersonating.asObservable();\n  readonly isAdmin$ = this.isAdmin.asObservable();\n\n  constructor(private api: ApiService,\n              public googleAnalyticsService: GoogleAnalyticsService) {\n    this._loadUser();\n  }\n\n  private _impersonate() {\n    const impersonateUid = localStorage.getItem('admin_view_as');\n    if ((impersonateUid !== null) &&\n        (impersonateUid !== this.realUser.value.uid) &&\n        this.isAdmin.value) {\n          this.api.getUser(impersonateUid).subscribe(u => {\n            this.user.next(u);\n            this.isImpersonating.next(true);\n            this._afterUserLoad();\n      }, () => this._onLoginError());\n    } else {\n      this.user.next(this.realUser.value);\n      this.isImpersonating.next(false);\n      this._afterUserLoad();\n    }\n  }\n\n  private _loadUser() {\n    this.api.getUser().subscribe(u => {\n      if (u) {\n        this.realUser.next(u);\n        this.isAdmin.next(u.is_admin);\n        this._impersonate();\n      } else {\n        this._onLoginError();\n      }\n    }, () => this._onLoginError());\n  }\n\n  private _afterUserLoad() {\n    if (this.realUser.value && this.realUser.value.uid) {\n      this.googleAnalyticsService.setUser(this.realUser.value.uid);\n    }\n    this.userChanged.emit(this.user.value);\n  }\n\n  viewAs(uid: string) {\n    if (this.isAdmin.value && (uid !== this.realUser.value.uid)) {\n      localStorage.setItem('admin_view_as', uid);\n    } else {\n      localStorage.removeItem('admin_view_as');\n    }\n    this._loadUser();\n  }\n\n  private _onLoginError() {\n    localStorage.removeItem('admin_view_as');\n    localStorage.removeItem('token');\n    this.userChanged.emit(null);\n  }\n\n}\n\n","import {HttpHandler, HttpInterceptor, HttpRequest} from '@angular/common/http';\nimport {Injectable} from '@angular/core';\nimport {GoogleAnalyticsService} from './google-analytics.service';\n\n/**\n * Intercepts all calls to the backend and assigns an\n * authorization code so we know who this nice person is.\n */\n@Injectable()\nexport class AuthInterceptor implements HttpInterceptor {\n  constructor(private googleAnalyticsService: GoogleAnalyticsService) {\n  }\n\n  intercept(req: HttpRequest<any>, next: HttpHandler) {\n    // Get the auth token from the service.\n    const token = localStorage.getItem('token');\n\n    if (token) {\n      req = req.clone({\n        setHeaders: {\n          Authorization: `Bearer ${token}`\n        }\n      });\n    }\n\n    this.googleAnalyticsService.authEvent(req);\n\n    // send cloned request with header to the next handler.\n    return next.handle(req);\n  }\n}\n","import {HttpEvent, HttpHandler, HttpInterceptor, HttpRequest} from '@angular/common/http';\nimport {Inject, Injectable, NgZone} from '@angular/core';\nimport {MatBottomSheet} from '@angular/material/bottom-sheet';\nimport {Router} from '@angular/router';\nimport * as Sentry from '@sentry/browser';\nimport {Observable, throwError} from 'rxjs';\nimport {catchError} from 'rxjs/operators';\nimport {ApiErrorsComponent} from '../components/api-errors/api-errors.component';\nimport {AppEnvironment} from '../types/app-environment';\nimport {ApiService} from './api.service';\nimport {GoogleAnalyticsService} from './google-analytics.service';\n\n@Injectable()\nexport class ErrorInterceptor implements HttpInterceptor {\n\n  constructor(\n    @Inject('APP_ENVIRONMENT') private environment: AppEnvironment,\n    private apiService: ApiService,\n    private googleAnalyticsService: GoogleAnalyticsService,\n    private router: Router,\n    private zone: NgZone,\n    public bottomSheet: MatBottomSheet\n  ) {\n    if (this.environment.production && this.environment.sentryKey) {\n      Sentry.init({dsn: this.environment.sentryKey});\n    }\n  }\n\n  intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n    return next.handle(request).pipe(catchError(err => {\n      // Watch for a redirect on calls to the API, not permission denied.\n      if (err.status === 401 || err.status === 403) {\n\n        // auto logout if 401 or 403 response returned from API\n        localStorage.removeItem('currentUser');\n        this.apiService.redirectToLogin();\n      }\n\n      // Display API Error\n      if (err.status === 400 || err.status === 404 || err.status === 500) {\n        this.zone.run(() => {\n          this.bottomSheet.open(ApiErrorsComponent, {data: {apiErrors: [err.error]}});\n        });\n      }\n\n      // Display API Error\n      if (err.status !== 401 && err.status !== 403) {\n        // Log the error to Sentry on production\n        if (this.environment.production && this.environment.sentryKey) {\n          Sentry.captureException(err.originalError || err);\n        }\n\n        // Log error to Google Analytics\n        if (err.error) {\n          this.googleAnalyticsService.errorEvent(err.error);\n        }\n      }\n\n      const errorMessage = err.message || err.statusText;\n      return throwError(errorMessage);\n    }));\n  }\n}\n","import { Injectable, NgZone } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class IntervalService {\n  interval: number;\n\n  constructor(private ngZone: NgZone) {\n  }\n\n  setInterval(callback: () => void, time: number) {\n    this.ngZone.runOutsideAngular(() => {\n      this.interval = window.setInterval(() => {\n        this.ngZone.run(callback);\n      }, time);\n    });\n  }\n\n  clearInterval() {\n    window.clearInterval(this.interval);\n    this.interval = undefined;\n  }\n}\n","interface Scripts {\n  name: string;\n  src: string;\n}\n\n/**\n * related to the Script Service - Define any external libraries provided over a CDN here,\n * and the Script Service will be able to load them up for you.\n */\nexport const ScriptStore: Scripts[] = [\n  {name: 'pyodide', src: 'https://cdn.jsdelivr.net/pyodide/v0.19.1/full/pyodide.js'},\n];\n","import {Injectable} from \"@angular/core\";\nimport {ScriptStore} from './script.store';\n\ndeclare var document: any;\n\n@Injectable({providedIn: 'root'})\nexport class ScriptService {\n  /**\n   * NOT CURRENTLY IN USE:\n   * *\n   * This script service can be injected to load up externally referenced javascript libraries\n   * from a CDN (content delivery network).  For really large libraries (like pyodide for python\n   * processing) this makes loading the libraries a lot faster, and reduces the overall load time\n   * of this library and whatever it is injected into.\n   * @private\n   */\n\n  private scripts: any = {};\n\n  constructor() {\n    ScriptStore.forEach((script: any) => {\n      this.scripts[script.name] = {\n        loaded: false,\n        src: script.src\n      };\n    });\n  }\n\n  load(...scripts: string[]) {\n    var promises: any[] = [];\n    scripts.forEach((script) => promises.push(this.loadScript(script)));\n    return Promise.all(promises);\n  }\n\n  loadScript(name: string) {\n    return new Promise((resolve, reject) => {\n      //resolve if already loaded\n      if (this.scripts[name].loaded) {\n        resolve({script: name, loaded: true, status: 'Already Loaded'});\n      }\n      else {\n        //load script\n        let script = document.createElement('script');\n        script.type = 'text/javascript';\n        script.src = this.scripts[name].src;\n        if (script.readyState) {  //IE\n          script.onreadystatechange = () => {\n            if (script.readyState === \"loaded\" || script.readyState === \"complete\") {\n              script.onreadystatechange = null;\n              this.scripts[name].loaded = true;\n              resolve({script: name, loaded: true, status: 'Loaded'});\n            }\n          };\n        } else {  //Others\n          script.onload = () => {\n            this.scripts[name].loaded = true;\n            resolve({script: name, loaded: true, status: 'Loaded'});\n          };\n        }\n        script.onerror = (error: any) => resolve({script: name, loaded: false, status: 'Loaded'});\n        document.getElementsByTagName('head')[0].appendChild(script);\n      }\n    });\n  }\n\n}\n","import { Injectable } from '@angular/core';\nimport {ScriptService} from './script.service';\nimport {defer, from, Observable} from 'rxjs';\n\n/**\n * NOT CURRENTLY IN USE:\n * Uses piodide (a Web Assembly based library) to execute python expressions or programs.\n * This proved to be too slow to use in practice, so we had to go a different route for hide-expressions\n * HOWEVER, I suspect this will be very useful to us in the BPMN editor at some point.  So keeping it around.\n */\n@Injectable({providedIn: 'root'})\nexport class PiodideService {\n  private pyodide: any\n  private readyPromise: Promise<any>\n\n  constructor(private scriptService: ScriptService) {\n    this.readyPromise = this.load();\n  }\n\n  /** Use this to determine if the service is ready for use.\n   */\n  public ready(): Observable<any> {\n    return defer(() => from(this.readyPromise));\n  }\n\n  public isReady() {\n    return this.pyodide != null\n  }\n\n  public async load() {\n    await this.scriptService.load('pyodide')\n    let loadPyodide = window[\"loadPyodide\"];\n    let pyodide = await loadPyodide({\n      indexURL: \"https://cdn.jsdelivr.net/pyodide/v0.19.1/full/\",\n    });\n    this.pyodide = pyodide;\n    this.pyodide.runPython(this.python_box_class)\n    return pyodide;\n  }\n\n  eval(expression, context, defaultResult) {\n    if(this.pyodide == null) {\n      throw(\"Pyodide has not completed loading.\")\n    }\n    try {\n      this.setContext(context)\n      let result = this.pyodide.runPython(expression);\n      return result\n    } catch (err) {\n      console.log(\"Failed to evaluate expression.\", expression, err, context)\n      return defaultResult\n    }\n  }\n\n  setContext(context) {\n    this.pyodide.globals.set(\"my_globals\", context)\n    this.pyodide.runPython(`\nglobals_dict = my_globals.to_py()\nfor k, v in globals_dict.items():\n    if isinstance(v, dict):\n        v = Box(v)\n    globals()[k] = v`);\n  }\n\n  /**\n   * Taken from SpiffWorkflow - this is a pythonic way to allow access to a dictionary with dot notation\n   * as well as a dictionary.  so my_box.attribute and my_box['attribute'] are the same thing.\n   */\n  private python_box_class = (`\nclass Box(dict):\n  \"\"\"\n  Example:\n  m = Box({'first_name': 'Eduardo'}, last_name='Pool', age=24, sports=['Soccer'])\n  \"\"\"\n\n  def __init__(self, *args, **kwargs):\n      super(Box, self).__init__(*args, **kwargs)\n      for arg in args:\n          if isinstance(arg, dict):\n              for k, v in arg.items():\n                  if isinstance(v, dict):\n                      self[k] = Box(v)\n                  else:\n                      self[k] = v\n\n      if kwargs:\n          for k, v in kwargs.items():\n              if isinstance(v, dict):\n                  self[k] = Box(v)\n              else:\n                  self[k] = v\n\n  def __deepcopy__(self, memodict=None):\n      if memodict is None:\n          memodict = {}\n      my_copy = Box()\n      for k, v in self.items():\n          my_copy[k] = copy.deepcopy(v)\n      return my_copy\n\n  def __getattr__(self, attr):\n      try:\n          output = self[attr]\n      except:\n          raise AttributeError(\n              \"Dictionary has no attribute '%s' \" % str(attr))\n      return output\n\n  def __setattr__(self, key, value):\n      self.__setitem__(key, value)\n\n  def __setitem__(self, key, value):\n      super(Box, self).__setitem__(key, value)\n      self.__dict__.update({key: value})\n\n  def __getstate__(self):\n      return self.__dict__\n\n  def __setstate__(self, state):\n      self.__init__(state)\n\n  def __delattr__(self, item):\n      self.__delitem__(item)\n\n  def __delitem__(self, key):\n      super(Box, self).__delitem__(key)\n      del self.__dict__[key]\n\n`)\n\n}\n","export const BPMN_DIAGRAM_DEFAULT = `\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<bpmn:definitions\n  xmlns:bpmn=\"http://www.omg.org/spec/BPMN/20100524/MODEL\"\n  xmlns:bpmndi=\"http://www.omg.org/spec/BPMN/20100524/DI\"\n  xmlns:dc=\"http://www.omg.org/spec/DD/20100524/DC\"\n  id=\"Definitions_REPLACE_ME\"\n  targetNamespace=\"http://bpmn.io/schema/bpmn\"\n  exporter=\"Camunda Modeler\"\n  exporterVersion=\"3.0.0-dev\"\n>\n  <bpmn:process id=\"Process_REPLACE_ME\" isExecutable=\"true\">\n    <bpmn:startEvent id=\"StartEvent_1\" />\n  </bpmn:process>\n  <bpmndi:BPMNDiagram id=\"BPMNDiagram_1\">\n    <bpmndi:BPMNPlane id=\"BPMNPlane_1\" bpmnElement=\"Process_REPLACE_ME\">\n      <bpmndi:BPMNShape id=\"_BPMNShape_StartEvent_2\" bpmnElement=\"StartEvent_1\">\n        <dc:Bounds x=\"179\" y=\"159\" width=\"36\" height=\"36\" />\n      </bpmndi:BPMNShape>\n    </bpmndi:BPMNPlane>\n  </bpmndi:BPMNDiagram>\n</bpmn:definitions>\n`;\n","export const DMN_DIAGRAM_DEFAULT = `\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<definitions\n  xmlns=\"http://www.omg.org/spec/DMN/20151101/dmn.xsd\"\n  xmlns:biodi=\"http://bpmn.io/schema/dmn/biodi/1.0\"\n  id=\"Definitions_REPLACE_ME\"\n  name=\"DRD\"\n  namespace=\"http://camunda.org/schema/1.0/dmn\"\n>\n  <decision id=\"Decision_REPLACE_ME\" name=\"Decision 1\">\n    <extensionElements>\n      <biodi:bounds x=\"157\" y=\"81\" width=\"180\" height=\"80\" />\n    </extensionElements>\n    <decisionTable id=\"decisionTable_1\">\n      <input id=\"input_1\">\n        <inputExpression id=\"inputExpression_1\" typeRef=\"string\">\n          <text></text>\n        </inputExpression>\n      </input>\n      <output id=\"output_1\" typeRef=\"string\" />\n    </decisionTable>\n  </decision>\n</definitions>\n`;\n","import {ApiError} from './api';\nimport {Approval} from './approval';\nimport {FileMeta} from './file';\nimport {TaskEvent} from './task-event';\nimport {WorkflowSpecCategory} from './workflow';\nimport {StudyEvent} from './study-event';\nimport {LdapInfo} from './user';\n\nexport enum StudyStatus {\n  IN_PROGRESS = 'in_progress',\n  OPEN_FOR_ENROLLMENT = 'open_for_enrollment',\n  CR_CONNECT_COMPLETE = 'cr_connect_complete',\n  HOLD = 'hold',\n  ABANDONED = 'abandoned',\n}\n\nexport enum StudyStatusLabels {\n  IN_PROGRESS = 'In Progress',\n  OPEN_FOR_ENROLLMENT = 'IRB Open to Enrollment',\n  CR_CONNECT_COMPLETE = 'CRConnect Complete',\n  HOLD = 'Hold',\n  ABANDONED = 'Abandoned',\n}\n\nexport enum ProgressStatus {\n  IN_PROGRESS = 'in_progress',\n  SUBMITTED_FOR_PRE_REVIEW = 'submitted_for_pre_review',\n  IN_PRE_REVIEW = 'in_pre_review',\n  RETURNED_FROM_PRE_REVIEW = 'returned_from_pre_review',\n  PRE_REVIEW_COMPLETE = 'pre_review_complete',\n  AGENDA_DATE_SET = 'agenda_date_set',\n  APPROVED = 'approved',\n  APPROVED_WITH_CONDITIONS = 'approved_with_conditions',\n  DEFERRED = 'deferred',\n  DISAPPROVED = 'disapproved',\n  READY_FOR_PRE_REVIEW = 'ready_for_pre_review',\n  RESUBMITTED_FOR_PRE_REVIEW = 'resubmitted_for_pre_review'\n}\n\nexport enum ProgressStatusLabels {\n  IN_PROGRESS = 'In Progress',\n  SUBMITTED_FOR_PRE_REVIEW = 'Submitted for Pre-Review',\n  IN_PRE_REVIEW = 'In Pre-Review',\n  RETURNED_FROM_PRE_REVIEW = 'Returned from Pre-Review',\n  PRE_REVIEW_COMPLETE = 'Pre-Review Complete',\n  AGENDA_DATE_SET = 'Agenda Date Set',\n  APPROVED = 'Approved',\n  APPROVED_WITH_CONDITIONS = 'Approved with Conditions',\n  DEFERRED = 'Deferred',\n  DISAPPROVED = 'Disapproved',\n  READY_FOR_PRE_REVIEW = 'Ready for Pre-Review',\n  RESUBMITTED_FOR_PRE_REVIEW = 'Resubmitted for Pre-Review',\n  FINANCE_IN_PROGRESS = 'Finance In Progress'\n}\n\n\nexport const ProtocolBuilderRequiredDocs = {\n  1: `Investigators Brochure`,\n  6: `Cancer Center's PRC Approval Form`,\n  8: `SOM CTO IND/IDE Review Letter`,\n  9: `HIRE Approval`,\n  10: `Cancer Center's PRC Approval Waiver`,\n  12: `Certificate of Confidentiality Application`,\n  14: `Institutional Biosafety Committee Approval`,\n  18: `SOM CTO Approval Letter - UVA PI Multisite Trial`,\n  20: `\"IRB Approval or Letter of Approval from Administration: Study Conducted at non- UVA Facilities \"),`,\n  21: `New Medical Device Form`,\n  22: `SOM CTO Review regarding need for IDE`,\n  23: `SOM CTO Review regarding need for IND`,\n  24: `InfoSec Approval`,\n  25: `Scientific Pre-review Documentation`,\n  26: `IBC Number`,\n  32: `IDS - Investigational Drug Service Approval`,\n  36: `RDRC Approval `,\n  40: `SBS/IRB Approval-FERPA`,\n  41: `HIRE Standard Radiation Language`,\n  42: `COI Management Plan `,\n  43: `SOM CTO Approval Letter-Non UVA, Non Industry PI MultiSite Study`,\n  44: `GRIME Approval`,\n  45: `GMEC Approval`,\n  46: `IRB Reliance Agreement Request Form- IRB-HSR is IRB of Record`,\n  47: `Non UVA IRB Approval - Initial and Last Continuation`,\n  48: `MR Physicist Approval- Use of Gadolinium`,\n  49: `SOM CTO Approval- Non- UVA Academia PI of IDE`,\n  51: `IDS Waiver`,\n  52: `Package Inserts`,\n  53: `IRB Reliance Agreement Request Form- IRB-HSR Not IRB of Record`,\n  54: `ESCRO Approval`,\n  57: `Laser Safety Officer Approval`,\n};\n\nexport interface ProtocolBuilderRequirement {\n  [key: number]: string;\n}\n\nexport interface Study {\n  id?: number;\n  title: string;\n  short_title?: string;\n  categories?: WorkflowSpecCategory[];\n  hsr_number?: string;\n  inactive?: boolean;\n  ind_number?: string;\n  last_updated?: Date;\n  primary_investigator?: string;\n  status?: StudyStatus;\n  sponsor?: string;\n  user_uid?: string;\n  create_user_display?: string;\n  last_activity_user?: string;\n  last_activity_date?: Date;\n  warnings?: ApiError[];\n  approvals?: Approval[];\n  files?: FileMeta[];\n  enrollment_date?: Date;\n  comment?: string;\n  events?: TaskEvent[];\n  events_history?: StudyEvent[];\n  progress_status?: ProgressStatus;\n  progress: number;\n\n}\n\nexport interface StudyAssociate {\n  uid: string;\n  access: boolean;\n  role: string;\n  ldap_info?: LdapInfo;\n}\n","import {NavItemType, WorkflowTask, WorkflowTaskState} from './workflow-task';\n\nexport enum WorkflowStatus {\n  NOT_STARTED = 'not_started',\n  USER_INPUT_REQUIRED = 'user_input_required',\n  WAITING = 'waiting',\n  COMPLETE = 'complete',\n}\n\nexport enum WorkflowState {\n  HIDDEN = 'hidden',\n  DISABLED = 'disabled',\n  REQUIRED = 'required',\n  OPTIONAL = 'optional',\n  LOCKED = 'locked',\n}\n\nexport interface WorkflowSpec {\n  id: string;\n  display_name: string;\n  description: string;\n  primary_process_id?: string;\n  primary_file_name?: string;\n  category_id?: string;\n  is_master_spec?: boolean;\n  display_order?: number;\n  standalone?: boolean;\n  library?: boolean;\n  libraries?: string[];\n}\n\nexport interface WorkflowSpecCategory {\n  id?: string;\n  display_name: string;\n  display_order?: number;\n  workflows?: WorkflowMetadata[];\n  meta?: WorkflowCategoryMetadata;\n  admin: boolean;\n}\n\nexport interface WorkflowCategoryMetadata {\n  id?: string;\n  state?: WorkflowState;\n  state_message?: string;\n}\n\nexport interface WorkflowMetadata {\n  state: WorkflowState;\n  category_id: string;\n  category_display_name: string;\n  description: string;\n  display_name: string;\n  id: number;\n  spec_version: string;\n  status: WorkflowStatus;\n  state_message?: string;  // An optional message explaining the state of a workflow.\n  display_order?: number;\n  is_review?: boolean;\n}\n\n\nexport interface Workflow {\n  id: number;\n  bpmn_workflow_json: string;\n  status: WorkflowStatus;\n  navigation: WorkflowNavItem[];\n  study_id: number;\n  workflow_spec_id: string;\n  workflow_spec?: WorkflowSpec;\n  next_task?: WorkflowTask;\n  is_review?: boolean;\n  title?: string;\n  redirect?: number;\n  state?: string;\n  user_id?: string;\n  is_admin_workflow?: boolean;\n}\n\nexport interface WorkflowNavItem {\n  spec_id: number;\n  name: string;\n  spec_type: NavItemType;\n  indent: number;\n  description?: string;\n  lane?: string;\n  backtrack_to?: string;\n  task_id?: string;\n  state?: WorkflowTaskState;\n  children?: WorkflowNavItem[];\n}\n\n\n","import {WorkflowMetadata, WorkflowState, WorkflowStatus} from '../../types/workflow';\n\nexport const mockWorkflowMeta0: WorkflowMetadata = {\n  id: 0,\n  display_name: 'Everything',\n  description: 'Do all the things',\n  spec_version: 'v1.1.1.1 (0.0.0.0)',\n  category_id: '0',\n  state: WorkflowState.REQUIRED,\n  status: WorkflowStatus.USER_INPUT_REQUIRED,\n  category_display_name: '',\n  display_order: 1,\n};\n\nexport const mockWorkflowMeta1: WorkflowMetadata = {\n  id: 1,\n  display_name: 'Some things',\n  description: 'Do a few things',\n  category_display_name: '',\n  spec_version: 'v1.1.1.1 (0.0.0.0)',\n  category_id: '0',\n  state: WorkflowState.REQUIRED,\n  status: WorkflowStatus.USER_INPUT_REQUIRED,\n  display_order: 1,\n};\n\nexport const mockWorkflowMetas: WorkflowMetadata[] = [\n  mockWorkflowMeta0,\n  mockWorkflowMeta1,\n];\n","import {WorkflowCategoryMetadata, WorkflowSpecCategory, WorkflowState} from '../../types/workflow';\nimport {mockWorkflowMetas} from './stats.mocks';\n\nexport const mockCategoryMetaData: WorkflowCategoryMetadata = {\n  id: '0',\n  state: WorkflowState.HIDDEN,\n}\n\nexport const mockCategoryMetaData2: WorkflowCategoryMetadata = {\n  id: null,\n  state: null,\n  state_message: null,\n}\n\nexport const mockWorkflowSpecCategory0: WorkflowSpecCategory = {\n  id: '0',\n  display_name: 'Everything',\n  display_order: 0,\n  workflows: mockWorkflowMetas,\n  admin: false,\n  meta: mockCategoryMetaData2\n};\nexport const mockWorkflowSpecCategory1: WorkflowSpecCategory = {\n  id: '1',\n  display_name: 'Some things',\n  display_order: 1,\n  workflows: mockWorkflowMetas,\n  admin: false,\n  meta: mockCategoryMetaData2\n};\nexport const mockWorkflowSpecCategory2: WorkflowSpecCategory = {\n  id: '2',\n  display_name: 'One thing',\n  display_order: 2,\n  workflows: mockWorkflowMetas,\n  admin: false,\n  meta: mockCategoryMetaData2\n};\nexport const mockWorkflowSpecCategory3: WorkflowSpecCategory = {\n  id: '3',\n  display_name: 'Weird thing',\n  display_order: 3,\n  workflows: mockWorkflowMetas,\n  admin: false,\n  meta: mockCategoryMetaData,\n};\n\nexport const mockWorkflowSpecCategories: WorkflowSpecCategory[] = [\n  mockWorkflowSpecCategory0,\n  mockWorkflowSpecCategory1,\n  mockWorkflowSpecCategory2,\n  mockWorkflowSpecCategory3,\n];\n","import {\n  ProgressStatus,\n  ProtocolBuilderRequiredDocs,\n  ProtocolBuilderRequirement,\n  Study,\n  StudyStatus\n} from '../../types/study';\nimport {mockWorkflowSpecCategories} from './workflow-spec-category.mocks';\n\nexport const mockStudy0: Study = {\n  id: 0,\n  ind_number: '12345',\n  last_updated: new Date(),\n  status: StudyStatus.IN_PROGRESS,\n  sponsor: 'Sirius Cybernetics Corporation',\n  title: 'Phase III Trial of Genuine People Personalities (GPP) Autonomous Intelligent Emotional Agents for Interstellar Spacecraft',\n  short_title: '',\n  inactive: false,\n  categories: mockWorkflowSpecCategories,\n  progress_status: ProgressStatus.APPROVED,\n  progress: 0,\n};\n\nexport const mockStudy1: Study = {\n  id: 1,\n  ind_number: '12345',\n  last_updated: new Date(),\n  status: StudyStatus.IN_PROGRESS,\n  sponsor: 'CamTim',\n  title: 'Pilot Study of Fjord Placement for Single Fraction Outcomes to Cortisol Susceptibility',\n  short_title: '',\n  inactive: false,\n  categories: mockWorkflowSpecCategories,\n  progress_status: ProgressStatus.APPROVED,\n  progress: 0,\n};\n\nexport const mockStudies: Study[] = [\n  mockStudy0,\n  mockStudy1,\n];\n\nexport const newRandomStudy = (): Study => {\n  function _randomNumber(numChars: number): number {\n    const chars = '0987654321';\n    const resultArray = [];\n    for (let i = 0; i < numChars; i++) {\n      resultArray.push(chars.charAt(Math.floor(Math.random() * chars.length)));\n    }\n    return parseInt(resultArray.join(''), 10);\n  }\n\n  function _randomWords(numWords: number): string {\n    const words = [\n      'Reliance Agreement',\n      'Evaluation',\n      'Drug Interactions',\n      'Channel Blockers',\n      'Cortisol',\n      'Trial',\n      'Radiosurgery',\n      'Brain Disease',\n      'Susceptibility',\n      'Strategies',\n      'Outcomes',\n      'Infections',\n      'Neutropenia',\n      'Patients',\n      'Nephrology',\n      'Workforce',\n      'Project',\n      'Ischemia',\n      'Events',\n      'Pilot Study',\n      'Therapy',\n      'Tolerance',\n      'Decisions',\n      'Radiation',\n      'Cancer',\n      'Tolerability'\n    ];\n    const resultArray = [];\n    for (let i = 0; i < numWords; i++) {\n      const index = Math.floor(Math.random() * words.length);\n      resultArray.push(words[index]);\n    }\n    return resultArray.join(' ');\n  }\n\n  function _randomRequirements(): ProtocolBuilderRequirement[] {\n    return Object.entries(ProtocolBuilderRequiredDocs).filter(req => Math.floor(Math.random() * 10) % 2 === 0);\n  }\n\n  return {\n    id: _randomNumber(5),\n    hsr_number: _randomNumber(5).toString(),\n    ind_number: _randomNumber(5).toString(),\n    last_updated: new Date(),\n    status: StudyStatus.IN_PROGRESS,\n    sponsor: _randomWords(2),\n    title: _randomWords(10),\n    inactive: false,\n    progress: 0,\n  };\n};\n","import {WorkflowSpec} from '../../types/workflow';\nimport {\n  mockWorkflowSpecCategory0,\n  mockWorkflowSpecCategory1,\n  mockWorkflowSpecCategory2,\n  mockWorkflowSpecCategory3\n} from './workflow-spec-category.mocks';\n\nexport const mockWorkflowSpec0: WorkflowSpec = {\n  id: 'all_things',\n  display_name: 'Everything',\n  description: 'Do all the things',\n  category_id: '0',\n  display_order: 0,\n  libraries: [],\n  library: false\n};\nexport const mockWorkflowSpec1: WorkflowSpec = {\n  id: 'few_things',\n  display_name: 'Some things',\n  description: 'Do a few things',\n  category_id: '1',\n  display_order: 1,\n  libraries: [],\n  library: false\n};\nexport const mockWorkflowSpec2: WorkflowSpec = {\n  id: 'one_thing',\n  display_name: 'One thing',\n  description: 'Do just one thing',\n  category_id: '2',\n  display_order: 2,\n  libraries: [],\n  library: false\n};\nexport const mockWorkflowSpec3: WorkflowSpec = {\n  id: 'weird_thing',\n  display_name: 'Weird thing',\n  description: 'Do some weird things',\n  category_id: '3',\n  display_order: 2,\n  standalone: false,\n  libraries: [],\n  library: true\n};\n\n\nexport const mockWorkflowSpecs: WorkflowSpec[] = [\n  mockWorkflowSpec0,\n  mockWorkflowSpec1,\n  mockWorkflowSpec2,\n  mockWorkflowSpec3,\n];\n","import {BpmnFormJson, BpmnFormJsonFieldProperty} from './json';\n\nexport enum WorkflowTaskState {\n  FUTURE = 'FUTURE',\n  WAITING = 'WAITING',\n  READY = 'READY',\n  CANCELLED = 'CANCELLED',\n  COMPLETED = 'COMPLETED',\n  LIKELY = 'LIKELY',\n  MAYBE = 'MAYBE',\n  LOCKED = 'LOCKED',\n  NOOP = 'NOOP',\n  NONE = 'None',  // FIXME: Why is this not in all caps?\n}\n\nexport enum WorkflowTaskType {\n  BUSINESS_RULE_TASK = 'BusinessRuleTask',\n  CANCEL_TASK = 'Cancel Task',\n  END_EVENT = 'End Event',\n  MANUAL_TASK = 'Manual Task',\n  NONE_TASK = 'None Task',\n  SCRIPT_TASK = 'Script Task',\n  START_EVENT = 'Start Event',\n  START_TASK = 'Start Task',\n  USER_TASK = 'User Task',\n  TEST_USER_TASK = 'Test User Task',\n}\n\nexport enum NavItemType {\n  BUSINESS_RULE_TASK = 'BusinessRuleTask',\n  CANCEL_TASK = 'CancelTask',\n  END_EVENT = 'EndEvent',\n  MANUAL_TASK = 'ManualTask',\n  NONE_TASK = 'NoneTask',\n  SCRIPT_TASK = 'ScriptTask',\n  START_EVENT = 'StartEvent',\n  START_TASK = 'StartTask',\n  USER_TASK = 'UserTask',\n  SEQUENCE_FLOW = 'SequenceFlow',\n  EXCLUSIVE_GATEWAY = 'ExclusiveGateway',\n  PARALLEL_GATEWAY = 'ParallelGateway',\n  CALL_ACTIVITY = 'CallActivity',\n}\n\nexport enum MultiInstanceType {\n  NONE = 'none',\n  LOOPING = 'looping',\n  PARALLEL = 'parallel',\n  SEQUENTIAL = 'sequential',\n}\n\nconst DISPLAY_NAME_PROP = 'display_name';\n\nexport interface WorkflowTask {\n  data: any;\n  documentation: string;\n  form: BpmnFormJson;\n  id: string;\n  name: string;\n  properties?: object;\n  state: WorkflowTaskState;\n  title: string;\n  type: WorkflowTaskType;\n  process_name: string;\n  multi_instance_type: MultiInstanceType;\n  multi_instance_count: number;\n  multi_instance_index: number;\n}\n","import {MultiInstanceType, WorkflowTask, WorkflowTaskState, WorkflowTaskType} from '../../types/workflow-task';\n\nexport const mockWorkflowTask0: WorkflowTask = {\n  id: '0',\n  name: 'TASK_SPEC_NAME',\n  title: 'Task Spec Title',\n  documentation: '# Markdown Heading\\n\\nSome more Markdown text.',\n  state: WorkflowTaskState.WAITING,\n  type: WorkflowTaskType.USER_TASK,\n  data: {},\n  multi_instance_count: 0,\n  multi_instance_index: 0,\n  multi_instance_type: MultiInstanceType.NONE,\n  process_name: '',\n  form: {\n    key: 'Create a beautiful little sunset.',\n    fields: [\n      {\n        id: 'happyClouds',\n        type: 'string',\n        label: '\\'Happy Clouds\\'',\n        properties: [\n          {id: 'description', value: 'Decide where your cloud lives.'},\n          {\n            id: 'help',\n            value: 'We don\\'t want to set these clouds on fire. We\\'ll play with clouds today.'\n          }\n        ]\n      }\n    ]\n  }\n};\n\nexport const mockWorkflowTask1: WorkflowTask = {\n  id: '1',\n  name: 'TASK_SPEC_NAME',\n  title: 'Task Spec Title',\n  documentation: '# Markdown Heading\\n\\nSome more Markdown text.',\n  state: WorkflowTaskState.READY,\n  type: WorkflowTaskType.USER_TASK,\n  data: {},\n  multi_instance_count: 0,\n  multi_instance_index: 0,\n  multi_instance_type: MultiInstanceType.NONE,\n  process_name: '',\n  form: {\n    key: 'Form 0.0.0.0',\n    fields: [\n      {\n        id: 'should_ask_color',\n        label: '\\'Does color affect your mood?\\'',\n        type: 'boolean',\n        default_value: 'false',\n        validation: [\n          {\n            name: 'required',\n            config: 'true'\n          }\n        ],\n        properties: [\n          {\n            id: 'help',\n            value: '# Markdown Heading\\n\\nSome more Markdown text.'\n          }\n        ]\n      },\n      {\n        id: 'favorite_color',\n        label: '\\'What is your favorite color?\\'',\n        type: 'enum',\n        default_value: 'indigo',\n        options: [\n          {\n            id: 'red',\n            name: 'Red'\n          },\n          {\n            id: 'orange',\n            name: 'Orange'\n          },\n          {\n            id: 'yellow',\n            name: 'Yellow'\n          },\n          {\n            id: 'green',\n            name: 'Green'\n          },\n          {\n            id: 'blue',\n            name: 'Blue'\n          },\n          {\n            id: 'indigo',\n            name: 'Indigo'\n          },\n          {\n            id: 'violet',\n            name: 'Violet'\n          },\n          {\n            id: 'brown',\n            name: 'Brown'\n          },\n          {\n            id: 'black',\n            name: 'Black'\n          },\n          {\n            id: 'white',\n            name: 'White'\n          },\n          {\n            id: 'other',\n            name: 'Other'\n          }\n        ],\n        properties: [\n          {\n            id: 'hide_expression',\n            value: '!model.should_ask_color'\n          },\n          {\n            id: 'description',\n            value: 'If you don\\'t have a favorite color, choose the one you hate least.'\n          },\n          {\n            id: 'help',\n            value: '# Markdown Heading\\n\\nSome more Markdown text.'\n          }\n        ]\n      },\n      {\n        id: 'other_color',\n        label: 'Enter other color',\n        type: 'string',\n        properties: [\n          {\n            id: 'hide_expression',\n            value: '!(model.should_ask_color && (model.favorite_color === \\'other\\'))'\n          },\n          {\n            id: 'required_expression',\n            value: 'model.should_ask_color && (model.favorite_color === \\'other\\')'\n          },\n          {\n            id: 'description',\n            value: 'Van Dyke Brown is a very nice brown, it\\'s almost like a chocolate brown.'\n          },\n          {\n            id: 'help',\n            value: '# Markdown Heading\\n\\nSome more Markdown text.'\n          }\n        ]\n      },\n      {\n        id: 'dessert',\n        label: 'What do you want for dessert?',\n        type: 'enum',\n        options: [\n          {\n            id: 'carrot_cake',\n            name: 'Carrot Cake'\n          },\n          {\n            id: 'apple_pie',\n            name: 'Apple Pie'\n          },\n          {\n            id: 'bread_pudding',\n            name: 'Bread Pudding'\n          },\n          {\n            id: 'creme_brulee',\n            name: 'Crème Brûlée'\n          },\n          {\n            id: 'ice_cream',\n            name: 'Ice Cream'\n          },\n          {\n            id: 'berries_and_cream',\n            name: 'Berries and Cream'\n          }\n        ],\n        properties: [\n          {\n            id: 'enum_type',\n            value: 'multicheckbox'\n          },\n          {\n            id: 'description',\n            value: 'Select all that apply.'\n          },\n          {\n            id: 'help',\n            value: '# Markdown Heading\\n\\nSome more Markdown text.'\n          }\n        ]\n      },\n      {\n        id: 'dietary_restrictions',\n        label: 'Any dietary restrictions?',\n        type: 'enum',\n        options: [\n          {\n            id: 'gf',\n            name: 'Gluten Free'\n          },\n          {\n            id: 'ovo_lacto_vegetarian',\n            name: 'Vegetarian, but Eggs and Milk are OK.'\n          },\n          {\n            id: 'gf_veg',\n            name: 'Gluten Free Vegetarian'\n          },\n          {\n            id: 'vegan',\n            name: 'Vegan'\n          },\n          {\n            id: 'gf_veg',\n            name: 'Gluten Free Vegan'\n          },\n          {\n            id: 'halal',\n            name: 'Halal'\n          },\n          {\n            id: 'kosher',\n            name: 'Kosher'\n          },\n          {\n            id: 'no_red_meat',\n            name: 'I eat all foods except red meat.'\n          },\n          {\n            id: 'only_red_meat',\n            name: 'I only eat red meat. Nothing else.'\n          },\n          {\n            id: 'only_food',\n            name: 'I eat food.'\n          },\n          {\n            id: 'none',\n            name: 'I eat everything. Including things that aren\\'t food.'\n          }\n        ],\n        properties: [\n          {\n            id: 'enum_type',\n            value: 'radio'\n          },\n          {\n            id: 'description',\n            value: 'You can choose only one. Sorry.'\n          },\n          {\n            id: 'help',\n            value: '# Markdown Heading\\n\\nSome more Markdown text.'\n          }\n        ]\n      }\n    ]\n  }\n};\n\nexport const mockWorkflowTasks: WorkflowTask[] = [\n  mockWorkflowTask0,\n  mockWorkflowTask1,\n];\n","import {WorkflowNavItem} from '../../types/workflow';\nimport {NavItemType} from '../../types/workflow-task';\n\nexport const mockNav0: WorkflowNavItem[] = [\n  {\n    spec_id: 0, name: '', spec_type: NavItemType.MANUAL_TASK, indent: 0\n  },\n  {\n    spec_id: 0, name: '', spec_type: NavItemType.NONE_TASK, indent: 0\n  }\n];\n\nexport const mockNav1: WorkflowNavItem[] = [\n  {\n    spec_id: 0, name: '', spec_type: NavItemType.MANUAL_TASK, indent: 0\n  },\n  {\n    spec_id: 0, name: '', spec_type: NavItemType.MANUAL_TASK, indent: 0\n  }\n];\n","import {Workflow, WorkflowMetadata, WorkflowState, WorkflowStatus} from '../../types/workflow';\nimport {mockStudy0} from './study.mocks';\nimport {mockWorkflowSpecCategory0, mockWorkflowSpecCategory1} from './workflow-spec-category.mocks';\nimport {mockWorkflowSpec0, mockWorkflowSpec1} from './workflow-spec.mocks';\nimport {mockWorkflowTask1} from './workflow-task.mocks';\nimport {mockNav0, mockNav1} from './workflow-nav.mocks';\n\nexport const mockWorkflow0: Workflow = {\n  id: 0,\n  bpmn_workflow_json: '\"SequenceFlow_0ik56h0\", 1',\n  status: WorkflowStatus.USER_INPUT_REQUIRED,\n  study_id: mockStudy0.id,\n  workflow_spec_id: mockWorkflowSpec0.id,\n  next_task: mockWorkflowTask1,\n  navigation: mockNav0\n};\n\nexport const mockWorkflow1: Workflow = {\n  id: 1,\n  bpmn_workflow_json: '\"SequenceFlow_0ik56h0\", 1',\n  status: WorkflowStatus.USER_INPUT_REQUIRED,\n  study_id: mockStudy0.id,\n  workflow_spec_id: mockWorkflowSpec1.id,\n  next_task: mockWorkflowTask1,\n  navigation: mockNav1\n};\n\nexport const mockWorkflows: Workflow[] = [\n  mockWorkflow0,\n  mockWorkflow1,\n];\n\nexport const mockWorkflowMetadata0: WorkflowMetadata = {\n  state: WorkflowState.REQUIRED,\n  category_id: mockWorkflowSpecCategory0.id,\n  category_display_name: '',\n  description: '',\n  display_name: '',\n  id: 0,\n  status: WorkflowStatus.USER_INPUT_REQUIRED,\n  display_order: 0,\n  spec_version: 'a'\n};\n\nexport const mockWorkflowMetadata1: WorkflowMetadata = {\n  state: WorkflowState.REQUIRED,\n  category_id: mockWorkflowSpecCategory1.id,\n  category_display_name: '',\n  description: '',\n  display_name: '',\n  id: 1,\n  status: WorkflowStatus.USER_INPUT_REQUIRED,\n  display_order: 1,\n  spec_version: 'a'\n};\n\nexport const mockWorkflowMetadata: WorkflowMetadata[] = [\n  mockWorkflowMetadata0,\n  mockWorkflowMetadata1,\n];\n","import {DocumentDirectory, FileMeta, FileType} from '../../types/file';\nimport {mockStudy0} from './study.mocks';\nimport {mockWorkflowSpec0} from './workflow-spec.mocks';\nimport {mockWorkflowTask0} from './workflow-task.mocks';\nimport {mockWorkflow0} from './workflow.mocks';\n\nconst timeString = '2020-01-23T12:34:12.345Z';\nconst timeCode = new Date(timeString).getTime();\n\nexport const mockFileMeta0: FileMeta = {\n  id: 0,\n  content_type: 'text/xml',\n  name: 'one-fish.bpmn',\n  type: FileType.BPMN,\n  workflow_spec_id: mockWorkflowSpec0.id,\n  task_id: mockWorkflowTask0.id,\n  study_id: mockStudy0.id,\n  latest_version: '1.0',\n  size: 10000,\n  last_modified: timeString,\n};\n\nexport const mockFile0: File = new File([], 'one-fish.bpmn', {\n  type: 'text/xml',\n  lastModified: timeCode,\n});\n\nexport const mockFileMeta1: FileMeta = {\n  id: 1,\n  content_type: 'text/xml',\n  name: 'two-fish.bpmn',\n  type: FileType.BPMN,\n  workflow_spec_id: mockWorkflowSpec0.id,\n  task_id: mockWorkflowTask0.id,\n  study_id: mockStudy0.id,\n  latest_version: '1.0',\n  size: 20,\n  last_modified: timeString\n};\nexport const mockFile1: File = new File([], 'two-fish.bpmn', {\n  type: 'text/xml',\n    lastModified: timeCode,\n});\n\nexport const mockFileMeta2: FileMeta = {\n  id: 2,\n  content_type: 'text/xml',\n  name: 'red-fish.bpmn',\n  type: FileType.BPMN,\n  workflow_spec_id: mockWorkflowSpec0.id,\n  task_id: mockWorkflowTask0.id,\n  study_id: mockStudy0.id,\n  latest_version: '1.0',\n  size: 200000000,\n  last_modified: timeString\n};\nexport const mockFile2: File = new File([], 'red-fish.bpmn', {\n  type: 'text/xml',\n  lastModified: timeCode,\n});\n\nexport const mockFileMeta3: FileMeta = {\n  id: 3,\n  content_type: 'text/xml',\n  name: 'blue-fish.bpmn',\n  type: FileType.BPMN,\n  workflow_spec_id: mockWorkflowSpec0.id,\n  task_id: mockWorkflowTask0.id,\n  study_id: mockStudy0.id,\n  latest_version: '1.0',\n  size: 2,\n  last_modified: timeString\n};\nexport const mockFile3: File = new File([], 'blue-fish.bpmn', {\n  type: 'text/xml',\n  lastModified: timeCode,\n});\n\nexport const mockFileMetaTask0: FileMeta = {\n  id: 4,\n  content_type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n  name: 'my_doc.docx',\n  type: FileType.DOCX,\n  workflow_id: mockWorkflow0.id,\n  study_id: mockWorkflow0.study_id,\n  task_id: mockWorkflowTask0.id,\n  latest_version: '1.0',\n  size: 200000,\n  last_modified: timeString\n};\n\nexport const mockFileMetaReference0: FileMeta = {\n  workflow_spec_id: null,\n  workflow_id: null,\n  latest_version: '1',\n  is_reference: true,\n  content_type: 'application/vnd.ms-excel',\n  study_id: null,\n  irb_doc_code: null,\n  form_field_key: null,\n  primary: false,\n  id: 122,\n  type: FileType.XLSX,\n  task_id: null,\n  primary_process_id: null,\n  is_status: null,\n  name: 'irb_documents.xlsx',\n  size: 200000,\n  last_modified: timeString\n};\n\nexport const mockFileReference0: File =\n  new File([], 'irb_documents.xlsx', {\n    type: 'application/vnd.ms-excel',\n    lastModified: timeCode,\n  });\n\n\nexport const mockFileMetas: FileMeta[] = [\n  mockFileMeta0,\n  mockFileMeta1,\n  mockFileMeta2,\n  mockFileMeta3,\n];\n\nexport const mockFiles: File[] = [\n  mockFile0,\n  mockFile1,\n  mockFile2,\n  mockFile3,\n];\n\nexport const mockDocumentDirectory: DocumentDirectory[] = [\n  {\n    level: 'Document',\n    file: undefined,\n    expanded: true,\n    filecount: 2,\n    children: [\n      {\n        level: 'A',\n        file: undefined,\n        expanded: true,\n        filecount: 1,\n        children: [{\n          level: undefined,\n          file: mockFileMeta0,\n          expanded: true,\n          filecount: 0,\n          children: [],\n        },\n          {\n            level: 'B',\n            file: undefined,\n            expanded: true,\n            filecount: 1,\n            children: [{\n              level: undefined,\n              file: mockFileMeta1,\n              expanded: false,\n              filecount: 0,\n              children: [],\n            }]\n          }\n\n        ]\n\n      }]\n  }\n];\n","import {EventEmitter, Injectable, NgZone} from '@angular/core';\n\n@Injectable()\nexport class MockNgZone extends NgZone {\n  onStable: EventEmitter<any> = new EventEmitter(false);\n\n  constructor() {\n    super({enableLongStackTrace: false});\n  }\n\n  run(fn): any {\n    return fn();\n  }\n\n  runOutsideAngular(fn): any {\n    return fn();\n  }\n\n  simulateZoneExit(): void {\n    this.onStable.emit(null);\n  }\n}\n","import {HttpErrorResponse, HttpResponse} from '@angular/common/http';\n\nexport const mockErrorResponse = new ErrorEvent('oopsie', {\n  message: 'Ooooops!'\n});\n\nexport const mockApiError = {\n  code: 'string',\n  message: 'string',\n  task_id: 'string',\n  task_name: 'string',\n  file_name: 'string',\n  tag: 'string',\n};\n\nexport const mockApiErrorResponse = new HttpErrorResponse({\n  status: 400,\n  statusText: `{\n  \"code\": \"file_integrity_error\",\n  \"task_id\": \"\",\n  \"task_name\": \"\",\n  \"file_name\": \"\",\n  \"task_data\": \"\",\n  \"message\": \"You are attempting to delete a file that is required by other records in the system.\"\n}`\n});\n\nexport const mockUpdatingResponse = new HttpResponse({\n  status: 202,\n  statusText: 'Updating'\n});\n\nexport const mockCompleteResponse = new HttpResponse({\n  status: 304,\n  statusText: 'Up to date'\n});\n","import {Study} from './study';\nimport {WorkflowMetadata} from './workflow';\n\nexport interface TaskEvent {\n  id: number;\n  study: Study;\n  workflow: WorkflowMetadata;\n  user_uid: string;\n  user_display?: string;\n  action: TaskAction;\n  task_id: string;\n  task_title: string;\n  task_name: string;\n  task_type: string;\n  task_state: string;\n  task_lane: string;\n  date: Date;\n}\n\nexport enum TaskAction {\n  COMPLETE = 'COMPLETE',\n  TOKEN_RESET = 'TOKEN_RESET',\n  HARD_RESET = 'HARD_RESET',\n  SOFT_RESET = 'SOFT_RESET',\n  ASSIGNMENT = 'ASSIGNMENT',\n}\n","import {TaskAction, TaskEvent} from '../../types/task-event';\nimport {mockStudy0, mockStudy1} from './study.mocks';\nimport {mockWorkflowTask0, mockWorkflowTask1} from './workflow-task.mocks';\nimport {mockWorkflowMetadata0, mockWorkflowMetadata1} from './workflow.mocks';\n\nexport const mockTaskEvent0: TaskEvent = {\n  id: 0,\n  study: mockStudy0,\n  workflow: mockWorkflowMetadata0,\n  user_uid: 'dhf8r',\n  action: TaskAction.ASSIGNMENT,\n  task_id: mockWorkflowTask0.id,\n  task_title: mockWorkflowTask0.title,\n  task_name: mockWorkflowTask0.name,\n  task_type: mockWorkflowTask0.type,\n  task_state: mockWorkflowTask0.state,\n  task_lane: 'supervisor',\n  date: new Date(),\n};\n\nexport const mockTaskEvent1: TaskEvent = {\n  id: 1,\n  study: mockStudy1,\n  workflow: mockWorkflowMetadata1,\n  user_uid: 'lb3dp',\n  action: TaskAction.ASSIGNMENT,\n  task_id: mockWorkflowTask1.id,\n  task_title: mockWorkflowTask1.title,\n  task_name: mockWorkflowTask1.name,\n  task_type: mockWorkflowTask1.type,\n  task_state: mockWorkflowTask1.state,\n  task_lane: '',\n  date: new Date(),\n};\n\nexport const mockTaskEvents: TaskEvent[] = [\n  mockTaskEvent0,\n  mockTaskEvent1,\n];\n","import {User} from '../../types/user';\n\nexport const mockUser0: User = {\n  id: 1234567890,\n  uid: 'ose3v',\n  is_admin: true,\n  ldap_info: {\n    uid: 'ose3v',\n    given_name: 'Sissix',\n    email_address: 'ose3v@wayfarer.coop',\n    display_name: 'Sissix Seshkethet',\n  }\n};\n\nexport const mockUser1: User = {\n  id: 3456098721,\n  uid: 'rhh7n',\n  is_admin: false,\n  ldap_info: {\n    uid: 'rhh7n',\n    given_name: 'Rosemary',\n    email_address: 'rhh7n@wayfarer.coop',\n    display_name: 'Rosemary Harper',\n  }\n};\n\nexport const mockUsers = [\n  mockUser0,\n  mockUser1,\n];\n","\nexport interface IRBResponse {\n  UVAStudyTrackingNumber?: string;\n  LastIRBChange?: Date;\n  UVA_Study_Tracking?: string;\n  ss_study_id?: string;\n  type?: string;\n  date_modified?: Date;\n  INDNumber?: number;\n  IDENumber?: number;\n  IBCNumber?: number;\n  requirements?: IRBRequirement[];\n}\n\nexport enum IRBReviewType {\n  EXPEDITED = 'Expedited',\n  FULL_BOARD = 'Full Board',\n}\n\nexport enum IRBRequirement {\n  NON_UVA_INSTITUTIONAL_APPROVAL = 'NonUVAInstitutionalApproval',\n  SOM_CTO_REVIEW_NEED_FOR_IND = 'SOM_CTO_Review_Need_for_IND',\n  SOM_CTO_IND_REVIEW_UVA_PI_IND = 'SOM_CTO_IND_Review_UVA_PI_IND',\n  SOM_CTO_IDE_REVIEW = 'SOM_CTO_IDE_Review',\n  SOM_CTO_REVIEW_NEED_FOR_IDE = 'SOM_CTO_Review_need_for_IDE',\n  SOM_CTO_IDE_REVIEW_UVA_PI_IDE = 'SOM_CTO_IDE_Review_UVA_PI_IDE',\n  CENTRAL_INSTITUTIONAL_REVIEW_BOARD_CIRB = 'CentralInstitutionalReviewBoard_CIRB',\n  COI_MANAGEMENT_PLAN = 'COIManagementPlan',\n  CANCER_CENTER_PROTOCOL_REVIEW_COMMITTEE = 'CancerCenterProtocolReviewCommittee',\n  SCIENTIFIC_PRE_REVIEW_NEONATAL_ICU = 'ScientificPreReviewNeonatalICU',\n  RSC_HIRE_LANGUAGE = 'RSC_HireLanguage',\n  NEW_MEDICAL_DEVICE = 'NewMedicalDevice',\n  INVESTIGATION_DRUG_SERVICES_IDS_FEASIBILITY = 'InvestigationDrugServices_IDS_Feasibility',\n  IDS_DEVICE_WITH_DRUG = 'IDSDeviceWithDrug',\n  DISPLAY_IDS_DEVICE_WITH_DRUG = 'Display_IDSDeviceWithDrug',\n  EMBRYONIC_STEM_CELL_RESEARCH_OVERSIGHT = 'EmbryonicStemCellResearchOversight',\n  IS_IRB_OF_RECORD = 'IsIRBofRecord',\n  DISPLAY_RSC_HIRE_APPROVAL = 'Display_RSC_HireApproval',\n  RADIOACTIVE_DRUG_RESEARCH_COMMITTEE = 'RadioactiveDrugResearchCommittee',\n  SIGNED_IRB_AUTHORIZATION_CIRB = 'SignedIRBAuthorizationCIRB',\n  CERTIFICATE_OF_CONFIDENTIALITY = 'CertificateOfConfidentiality',\n  SOM_CTO_UVA_PI_MULTISITE = 'SOM_CTO_UVA_PI_Multisite',\n  FERPA = 'FamilyEducationalRightsAndPrivacyAct_SocialAndBehavioralScience',\n  SOM_CTO_UVA_NON_UVA_PI_NON_INDUSTRY_PI_MULTISITE = 'SOM_CTO_UVA_NonUVA_PI_NonIndustryPIMultisite',\n  INFORMATION_SECURITY_POLICY_AND_RECORDS_OFFICE_ISPRO = 'InformationSecurityPolicyandRecordsOffice_ISPRO',\n  INSTITUTIONAL_BIOSAFETY_COMMITTEE_APPROVAL = 'InstitutionalBiosafetyCommitteeApproval',\n  GRADUATE_MEDICAL_EDUCATION_COMMITTEE_GMEC = 'GraduateMedicalEducationCommittee_GMEC',\n  GROUP_ON_RESEARCH_IN_MEDICAL_EDUCATION_GRIME = 'GroupOnResearchInMedicalEducation_GRIME',\n  IRB_ADMINISTRATIVE_REVIEWER = 'irb_Administrative_Reviewer',\n  INVESTIGATOR_BROCHURE = 'InvestigatorBrochure',\n  INVESTIGATOR_BROCHURE_TWO = 'InvestigatorBrochureTwo',\n  SOM_CTO_APPROVAL_NON_UVA_ACADEMIA_NON_INDUSTRY_PI_OF_IDE = 'SOMCTOApprovalNonUVAAcademiaNonIndustryPIofIDE',\n  SOM_CTO_NEED_FOR_IND_APPROVAL = 'SOMCTO_need_for_IND_Approval',\n}\n","import {StudyStatus} from './study';\n\nexport enum StudyEventType {\n  USER = 'user',\n  AUTOMATIC = 'automatic',\n}\n\nexport enum StudyEventTypeLabels {\n  USER = 'User',\n  AUTOMATIC = 'Automatic',\n}\n\nexport interface StudyEvent {\n  id?: number;\n  create_date: Date;\n  status: StudyStatus;\n  comment: string;\n  event_type: StudyEventType;\n}\n","export enum TaskLogLevel {\n  CRITICAL = 'critical',\n  ERROR = 'error',\n  WARNING = 'warning',\n  INFO = 'info',\n  DEBUG = 'debug'\n}\n\nexport interface TaskLog {\n  id?: number;\n  level: TaskLogLevel;\n  code: string;\n  message: string;\n  study_id: number;\n  workflow: string;\n  workflow_id: number;\n  workflow_spec_id: string;\n  category: string;\n  user_uid: string;\n  timestamp: Date;\n}\n\n/**\n * A paginated, sorted, and filtered query on the Task Logs.  This can\n * be used to both execute a query by posting, and to read the results of a query\n * when it is returned.\n * You can set the code, page, per_page, sort_column and sort_reverse when sending,\n * other values will be overwritten on execution.\n */\nexport interface TaskLogQuery {\n  study_id?: number // Limits the query to study, maybe applied autoamtically for security\n  code?: string; // Limits the task logs to just those that have this code.\n  level?: string; // Limits the task logs to just those that have this level.\n  user?: string; // Limits the task logs to just those that have this user.\n  page: number; // The page number of this set of items in the paginated results.\n  per_page: number; // Number of pages in the results.\n  sort_column?: string; // The column on which to sort results.\n  sort_reverse?: boolean; // whether to set the sort order of the sort_column to desc.\n  items: TaskLog[]; // An array of TaskLogs\n  total: number;  // Total number of results\n  pages: number; // Total number of pages for this query.\n  has_next?: boolean; // True if there is another page after this one.\n  has_prev?: boolean; // True if there is another page before this one.\n  download_url?: string;  // URL for a downloaded version of the query\n}\n","import {FileType} from '../types/file';\n\nexport const getDiagramTypeFromXml = (xml: string): FileType => (xml && xml.includes('dmn.xsd') ? FileType.DMN : FileType.BPMN);\n","/**\n * Given the array `a`, moves element with index `i` one position up.\n * Mutates the given array. Does nothing if `i` is an invalid index.\n */\nexport const moveArrayElementUp = (a: Array<any>, i: number) => {\n  if (i === 0) {\n    return;\n  } else {\n    swapArrayElements(a, i, i - 1);\n  }\n};\n\n/**\n * Given the array `a`, moves element with index `i` one position down.\n * Mutates the given array. Does nothing if `i` is an invalid index.\n */\nexport const moveArrayElementDown = (a: Array<any>, i: number) => {\n  if (i === a.length - 1) {\n    return;\n  } else {\n    swapArrayElements(a, i, i + 1);\n  }\n};\n\n/**\n * Given the array `a`, swaps the positions of elements with indexes `i` and `j`,\n * mutating the given array. Does nothing if `i` or `j` are invalid indexes.\n */\nexport const swapArrayElements = (a: Array<any>, i: number, j: number) => {\n  if (i >= 0 && j >= 0 && (a.length >= i + 1) && (a.length >= j + 1)) {\n    [a[i], a[j]] = [a[j], a[i]]; // Swap items using destructuring\n  }\n};\n","import {DeviceDetectorService} from 'ngx-device-detector';\n\nexport const scrollToTop = (deviceDetectorService: DeviceDetectorService) => {\n  window.scroll({\n    top: 0,\n    left: 0,\n    behavior: 'smooth'\n  });\n  if (deviceDetectorService.browser === 'Safari') {\n    window.scroll(0, 0);\n  } else {\n    window.scroll({behavior: 'smooth', top: 0});\n  }\n};\n\nexport const scrollToFirstInvalidField = (deviceDetectorService: DeviceDetectorService) => {\n  const el: HTMLElement = document.querySelector('mat-form-field.ng-invalid');\n  if (el) {\n    if (deviceDetectorService.browser === 'Safari') {\n      window.scroll(0, el.offsetTop);\n    } else {\n      window.scroll({behavior: 'smooth', top: el.offsetTop});\n    }\n  }\n};\n","/*\n * Public API Surface of sartography-workflow-lib\n */\n\nexport * from './lib/sartography-workflow-lib.module';\nexport * from './lib/components/api-errors/api-errors.component';\nexport * from './lib/components/sartography-workflow-lib.component';\nexport * from './lib/components/session-redirect/session-redirect.component';\n\n// Forms Module\nexport * from './lib/modules/forms/sartography-forms.module';\nexport * from './lib/modules/forms/autocomplete-field/autocomplete-field.component';\nexport * from './lib/modules/forms/file-base/file-base.component';\nexport * from './lib/modules/forms/file-field/file-field.component';\nexport * from './lib/modules/forms/file-upload/file-upload.component';\nexport * from './lib/modules/forms/form-printout/form-printout.component';\nexport * from './lib/modules/forms/help-dialog/help-dialog.component';\nexport * from './lib/modules/forms/help-wrapper/help-wrapper.component';\nexport * from './lib/modules/forms/markdown-description-wrapper/markdown-description-wrapper.component';\nexport * from './lib/modules/forms/panel-wrapper/panel-wrapper.component';\nexport * from './lib/modules/forms/radio-data-field/radio-data-field.component';\nexport * from './lib/modules/forms/repeat-type/repeat-type.component';\nexport * from './lib/modules/forms/validators/email.regex';\nexport * from './lib/modules/forms/validators/email.validator';\nexport * from './lib/modules/forms/validators/formly.validator';\nexport * from './lib/modules/forms/validators/password_match.validator';\nexport * from './lib/modules/forms/validators/phone.regex';\nexport * from './lib/modules/forms/validators/url.regex';\nexport * from './lib/modules/forms/validators/url.validator';\n\n// Pipes Module\nexport * from './lib/modules/pipes/sartography-pipes.module';\nexport * from './lib/modules/pipes/clean-up-ldap-properties.pipe';\nexport * from './lib/modules/pipes/ordinal.pipe';\nexport * from './lib/modules/pipes/to-formly.pipe';\nexport * from './lib/modules/pipes/unescape-line-breaks.pipe';\n\n// Services\nexport * from './lib/services/api.service';\nexport * from './lib/services/user.service';\nexport * from './lib/services/auth-interceptor';\nexport * from './lib/services/error-interceptor';\nexport * from './lib/services/google-analytics.service';\nexport * from './lib/services/interval/interval.service';\nexport * from './lib/services/python.service';\nexport * from './lib/services/piodide.service';\n\n// Static Files\nexport * from './lib/static/bpmn';\nexport * from './lib/static/dmn';\n\n// Testing Mocks\nexport * from './lib/testing/mocks/environment.mocks';\nexport * from './lib/testing/mocks/file.mocks';\nexport * from './lib/testing/mocks/ngzone.mocks';\nexport * from './lib/testing/mocks/stats.mocks';\nexport * from './lib/testing/mocks/study-status.mocks';\nexport * from './lib/testing/mocks/study.mocks';\nexport * from './lib/testing/mocks/task-event.mocks';\nexport * from './lib/testing/mocks/user.mocks';\nexport * from './lib/testing/mocks/workflow-nav.mocks';\nexport * from './lib/testing/mocks/workflow-spec-category.mocks';\nexport * from './lib/testing/mocks/workflow-spec.mocks';\nexport * from './lib/testing/mocks/workflow-task.mocks';\nexport * from './lib/testing/mocks/workflow.mocks';\nexport * from './lib/testing/formly/component-factory';\n\n// Types\nexport * from './lib/types/api';\nexport * from './lib/types/app-environment';\nexport * from './lib/types/approval';\nexport * from './lib/types/file';\nexport * from './lib/types/irb';\nexport * from './lib/types/json';\nexport * from './lib/types/links';\nexport * from './lib/types/script-info';\nexport * from './lib/types/study';\nexport * from './lib/types/study-event';\nexport * from './lib/types/user';\nexport * from './lib/types/task-event';\nexport * from './lib/types/workflow';\nexport * from './lib/types/workflow-task';\nexport * from './lib/types/task-log';\n\n// Utilities\nexport * from './lib/util/diagram-type';\nexport {getFileIcon, getFileType, newFileFromResponse} from './lib/util/file-type';\nexport * from './lib/util/is-number-defined';\nexport * from './lib/util/is-signed-in';\nexport {moveArrayElementUp, moveArrayElementDown, swapArrayElements} from './lib/util/move-array-element';\nexport * from './lib/util/scroll-to-top';\nexport * from './lib/util/string-clean';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3","i4","i5","i6","i8","i1","i2.ApiService","i1.PythonService","i1.ApiService","i2","i7","i9.FileValueAccessorDirective","i4.UnescapeLineBreaksPipe","i3.UnescapeLineBreaksPipe","i2.GoogleAnalyticsService","i1.GoogleAnalyticsService","i1.ScriptService"],"mappings":"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"}