@bnsights/bbsf-utilities 1.0.38 → 1.0.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -0
- package/bnsights-bbsf-utilities-1.0.39.tgz +0 -0
- package/bnsights-bbsf-utilities.metadata.json +1 -1
- package/bundles/bnsights-bbsf-utilities.umd.js +101 -110
- package/bundles/bnsights-bbsf-utilities.umd.js.map +1 -1
- package/esm2015/lib/shared/authentication/auth.service.js +9 -14
- package/esm2015/lib/shared/services/utility.service.js +4 -8
- package/fesm2015/bnsights-bbsf-utilities.js +93 -102
- package/fesm2015/bnsights-bbsf-utilities.js.map +1 -1
- package/lib/shared/authentication/auth.service.d.ts +7 -5
- package/lib/shared/services/utility.service.d.ts +1 -3
- package/package.json +1 -1
- package/bnsights-bbsf-utilities-1.0.38.tgz +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bnsights-bbsf-utilities.js","sources":["../../../projects/bbsf-utilities/src/lib/shared/config/environment.ts","../../../projects/bbsf-utilities/src/lib/shared/services/environment.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/translate.service.ts","../../../projects/bbsf-utilities/src/lib/shared/models/UserModel.ts","../../../projects/bbsf-utilities/src/lib/shared/authentication/auth.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/utility.service.ts","../../../projects/bbsf-utilities/src/lib/shared/models/RequestOptionsModel.ts","../../../projects/bbsf-utilities/src/lib/shared/services/requesthandler.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/stylesbundle.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/controlvalidation.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/masterlayout.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/configuration.service.ts","../../../projects/bbsf-utilities/src/lib/bbsf-utilities.module.ts","../../../projects/bbsf-utilities/src/lib/shared/services/translationresolver.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/AppearanceConfiguration.service.ts","../../../projects/bbsf-utilities/src/lib/shared/config/word/schemas/content-types.js","../../../projects/bbsf-utilities/src/lib/shared/config/word/namespaces.js","../../../projects/bbsf-utilities/src/lib/shared/config/word/constants.js","../../../projects/bbsf-utilities/src/lib/shared/config/word/schemas/core.js","../../../projects/bbsf-utilities/src/lib/shared/config/word/schemas/document-rels.js","../../../projects/bbsf-utilities/src/lib/shared/config/word/schemas/rels.js","../../../projects/bbsf-utilities/src/lib/shared/config/word/schemas/numbering.js","../../../projects/bbsf-utilities/src/lib/shared/config/word/schemas/styles.js","../../../projects/bbsf-utilities/src/lib/shared/config/word/schemas/font-table.js","../../../projects/bbsf-utilities/src/lib/shared/config/word/schemas/theme.js","../../../projects/bbsf-utilities/src/lib/shared/config/word/schemas/settings.js","../../../projects/bbsf-utilities/src/lib/shared/config/word/schemas/web-settings.js","../../../projects/bbsf-utilities/src/lib/shared/config/word/schemas/generic-rels.js","../../../projects/bbsf-utilities/src/lib/shared/config/word/schemas/document.template.js","../../../projects/bbsf-utilities/src/lib/shared/config/word/utils/color-conversion.js","../../../projects/bbsf-utilities/src/lib/shared/config/word/utils/unit-conversion.js","../../../projects/bbsf-utilities/src/lib/shared/config/word/utils/vnode.js","../../../projects/bbsf-utilities/src/lib/shared/config/word/utils/url.js","../../../projects/bbsf-utilities/src/lib/shared/config/word/helpers/xml-builder.js","../../../projects/bbsf-utilities/src/lib/shared/config/word/helpers/render-document-file.js","../../../projects/bbsf-utilities/src/lib/shared/config/word/helpers/index.js","../../../projects/bbsf-utilities/src/lib/shared/config/word/utils/list.js","../../../projects/bbsf-utilities/src/lib/shared/config/word/docx-document.js","../../../projects/bbsf-utilities/src/lib/shared/config/word/word-work/templates/documentTemplate.ts","../../../projects/bbsf-utilities/src/lib/shared/config/word/word-work/templates/mhtDocumentTemplate.ts","../../../projects/bbsf-utilities/src/lib/shared/config/word/word-work/templates/mhtPartTemplate.ts","../../../projects/bbsf-utilities/src/lib/shared/config/word/word-work/utils.ts","../../../projects/bbsf-utilities/src/lib/shared/config/word/html-to-docx.js","../../../projects/bbsf-utilities/src/lib/shared/config/word/index.js","../../../projects/bbsf-utilities/src/lib/shared/services/word-document.service.ts","../../../projects/bbsf-utilities/src/lib/shared/models/WordDocumentModel.ts","../../../projects/bbsf-utilities/src/public-api.ts","../../../projects/bbsf-utilities/src/bnsights-bbsf-utilities.ts"],"sourcesContent":["// This file can be replaced during build by using the `fileReplacements` array.\r\n// `ng build ---prod` replaces `environment.ts` with `environment.prod.ts`.\r\n// The list of file replacements can be found in `angular.json`.\r\n\r\nexport const environment = Object.assign({\r\n},\r\n(window as any).Environment);\r\n\r\n\r\n/*\r\n * In development mode, to ignore zone related error stack frames such as\r\n * `zone.run`, `zoneDelegate.invokeTask` for easier debugging, you can\r\n * import the following file, but please comment it out in production mode\r\n * because it will have performance impact when throw error\r\n */\r\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\r\n","import { Injectable } from '@angular/core';\r\nimport { environment } from '../config/environment';\r\nimport { AreaModel } from '../models/AreaModel';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EnvironmentService {\r\n\r\n\r\n static AreaList: AreaModel[] = []\r\n\r\n getEnvironmentObject() {\r\n return environment;\r\n }\r\n\r\n getBaseUrl() {\r\n let Url = environment[\"BBSF_BaseURL\"]\r\n return Url;\r\n }\r\n getApiUrl() {\r\n let Url = environment[\"BBSF_ApiUrl\"]\r\n return Url;\r\n }\r\n\r\n getProductionMode() {\r\n let Mode = environment[\"BBSF_IsProduction\"] as boolean\r\n\r\n return Mode;\r\n }\r\n\r\n getDefaultLanguage() {\r\n let Mode = environment[\"BBSF_DefaultLanguage\"] as string\r\n return Mode;\r\n }\r\n getIdentityServerUrl() {\r\n let Url = environment[\"BBSF_IdentityServerUrl\"]\r\n return Url;\r\n }\r\n getIsIdentityServerExternal() {\r\n let Mode = environment[\"BBSF_IsExternalIdentityServer\"] as string\r\n return Mode;\r\n }\r\n getIsIdentityServerClientId() {\r\n let Mode = environment[\"BBSF_IdentityServer_Client_Id\"] as string\r\n return Mode;\r\n }\r\n\r\n getIsIdentityServerClientSecret() {\r\n let Mode = environment[\"BBSF_IdentityServer_Client_Secret\"] as string\r\n return Mode;\r\n }\r\n\r\n\r\n\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { TranslateService } from \"@ngx-translate/core\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class BBSFTranslateService extends TranslateService {\r\n}","export class User {\r\n\r\n token_type: string;\r\n access_token: string;\r\n profile: any;\r\n expires_at:any\r\n}\r\n","import { Injectable, Injector } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { BehaviorSubject, Subject } from 'rxjs';\r\nimport { EnvironmentService } from '../services/environment.service';\r\nimport { BBSFTranslateService } from '../services/translate.service';\r\nimport { Router } from '@angular/router';\r\nimport { MasterLayoutService } from '../services/masterlayout.service';\r\nimport { JwtHelperService } from '@auth0/angular-jwt';\r\nimport { User } from '../models/UserModel';\r\nimport { CookieService } from 'ngx-cookie-service';\r\nconst TOKEN_KEY = 'access_token';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AuthService {\r\n public redirectUrl: string = '';\r\n static user: User | null = null;\r\n user: User | null;\r\n static UserClaims: any = null;\r\n private jwtHelper: JwtHelperService = new JwtHelperService();\r\n private isAuthenticatedSubject = new BehaviorSubject<boolean>(this.hasToken());\r\n isAuthenticate$ = this.isAuthenticatedSubject.asObservable();\r\n //refresh\r\n static timers = [];\r\n static seconds = 0;\r\n\r\n constructor(private injector: Injector, private http: HttpClient, private environmentService: EnvironmentService, private translateService: BBSFTranslateService, private router: Router, private cookieService: CookieService) {\r\n this.user = this.getUserManager()\r\n }\r\n\r\n private hasToken(): boolean {\r\n const token = this.cookieService.get(TOKEN_KEY);\r\n return token && !this.jwtHelper.isTokenExpired(token);\r\n }\r\n\r\n getUserManager() {\r\n const token = this.cookieService.get(TOKEN_KEY);\r\n if (token)\r\n this.handleAccessTokenWithoutLanguage(token)\r\n return AuthService.user;\r\n }\r\n\r\n\r\n getUser() {\r\n this.user = AuthService.user;\r\n }\r\n storUser(User: any) {\r\n AuthService.user = this.user = this.user;\r\n }\r\n\r\n getCurrentUser() {\r\n return AuthService.user\r\n }\r\n\r\n async isAuthenticated(): Promise<boolean> {\r\n return AuthService.user != null && !this.jwtHelper.isTokenExpired(AuthService.user.access_token);\r\n }\r\n isUserInRole(allowedPermission: number[]) {\r\n let selectedPermissionSetID: number = Number.parseInt(\r\n this.user.profile['selectedpermissionsetid']\r\n );\r\n return allowedPermission.includes(selectedPermissionSetID);\r\n }\r\n\r\n authorizationHeaderValue(): string {\r\n return AuthService.user\r\n ? `${AuthService.user.token_type} ${AuthService.user.access_token}`\r\n : '';\r\n }\r\n\r\n name(): string {\r\n return AuthService.user != null ? AuthService.user.profile.given_name : '';\r\n }\r\n setUrl(url) {\r\n localStorage.setItem('redirectUrl', url);\r\n }\r\n getUrl() {\r\n return localStorage.getItem('redirectUrl') ?? \"/\";\r\n }\r\n signout() {\r\n AuthService.timers.map(t => clearInterval(t));\r\n AuthService.timers = [];\r\n if (!this.isAuthenticated()) {\r\n this.cookieService.delete(TOKEN_KEY);\r\n this.router.navigate(['/Admin/account/login'])\r\n }\r\n this.logout().subscribe(res => {\r\n this.cookieService.delete(TOKEN_KEY);\r\n this.router.navigate(['/Admin/account/login'])\r\n });\r\n }\r\n\r\n logout() {\r\n const httpOptions = {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n }),\r\n };\r\n let ApiUrl = '/Account/';\r\n return this.http.get(this.environmentService.getApiUrl() + ApiUrl + 'Logout', httpOptions);\r\n }\r\n\r\n\r\n clearUserSessionClaims() {\r\n const httpOptions = {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n }),\r\n };\r\n let ApiUrl = '/api/Home/';\r\n return this.http.get(this.environmentService.getBaseUrl() + ApiUrl + 'ClearCurrentUserSession', httpOptions);\r\n }\r\n\r\n loginForm(model: any) {\r\n const httpOptions = {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n }),\r\n };\r\n let ApiUrl = '/Account/';\r\n return this.http.post(this.environmentService.getApiUrl() + ApiUrl + 'Authenticate', model, httpOptions);\r\n }\r\n async handleAccessToken(response: any): Promise<void> {\r\n const token = response;\r\n AuthService.user = new User();\r\n AuthService.user.token_type = \"Bearer\"\r\n AuthService.user.access_token = token;\r\n AuthService.user.profile = this.jwtHelper.decodeToken(token);\r\n AuthService.user.expires_at = this.jwtHelper.getTokenExpirationDate(token);\r\n AuthService.timers.map(t => clearInterval(t));\r\n AuthService.timers = [];\r\n this.setTokenSeconds()\r\n AuthService.timers.push(this.checkRefreshToken());\r\n this.user = AuthService.user\r\n await this.updateLanguage()\r\n this.cookieService.set(TOKEN_KEY, token, null, null, null, true, 'Strict');\r\n this.isAuthenticatedSubject.next(true);\r\n }\r\n\r\n handleAccessTokenWithoutLanguage(response: any) {\r\n const token = response;\r\n AuthService.user = new User();\r\n AuthService.user.token_type = \"Bearer\"\r\n AuthService.user.access_token = token;\r\n AuthService.user.profile = this.jwtHelper.decodeToken(token);\r\n AuthService.user.expires_at = this.jwtHelper.getTokenExpirationDate(token);\r\n this.setTokenSeconds()\r\n this.user = AuthService.user\r\n this.cookieService.set(TOKEN_KEY, token, null, null, null, true, 'Strict');\r\n this.isAuthenticatedSubject.next(true);\r\n }\r\n async updateLanguage() {\r\n if (\r\n !localStorage.getItem('language') ||\r\n localStorage.getItem('language') == this.user.profile.locale\r\n )\r\n localStorage.setItem('language', this.user.profile.locale);\r\n\r\n if (this.translateService.currentLang != localStorage.getItem('language')) {\r\n this.translateService.resetLang(this.translateService.currentLang);\r\n await this.translateService\r\n .reloadLang(localStorage.getItem('language'))\r\n .subscribe((res) => {\r\n console.log(res);\r\n });\r\n }\r\n }\r\n\r\n checkRefreshToken() {\r\n let date = new Date() as any;\r\n return setInterval(() => {\r\n if (Math.floor(AuthService.seconds) < 120 && this.isAuthenticated())\r\n this.refresh()\r\n AuthService.seconds--;\r\n }, 1000);\r\n }\r\n setTokenSeconds() {\r\n let date = new Date() as any;\r\n AuthService.seconds = (AuthService.user.expires_at - date) / 1000\r\n }\r\n refresh() {\r\n const httpOptions = {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n 'Authorization': this.authorizationHeaderValue(),\r\n }),\r\n };\r\n let ApiUrl = '/api/Home/';\r\n this.http.get(this.environmentService.getApiUrl() + ApiUrl + 'RefreshAccessToken', httpOptions).subscribe((res) => {\r\n this.cookieService.delete(TOKEN_KEY);\r\n this.handleAccessTokenWithoutLanguage(res)\r\n })\r\n }\r\n}\r\n","import { Injectable, Optional, Host, SkipSelf, Component } from '@angular/core';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { BlockUI, NgBlockUI } from 'ng-block-ui';\r\nimport { AuthService } from '../authentication/auth.service';\r\nimport { BBSFTranslateService } from './translate.service';\r\nimport { AppInjector } from '../../bbsf-utilities.module';\r\nimport { EnvironmentService } from './environment.service';\r\n\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UtilityService {\r\n\r\n isCreatedBefore = false;\r\n @BlockUI() blockUI: NgBlockUI;\r\n\r\n constructor(private translator: BBSFTranslateService, private authService: AuthService, private environmentService: EnvironmentService,) {\r\n\r\n }\r\n\r\n\r\n getResourceValue(Key: string): string {\r\n let ResourceValue = this.translator.instant(Key)\r\n return ResourceValue;\r\n\r\n }\r\n\r\n getCurrentLanguage() {\r\n let currentLanguage = this.environmentService.getDefaultLanguage();\r\n let lang = localStorage.getItem('language');\r\n if (lang)\r\n currentLanguage = lang;\r\n else\r\n localStorage.setItem('language', currentLanguage);\r\n return currentLanguage;\r\n }\r\n isCurrentLanguageEnglish() {\r\n return this.getCurrentLanguage() == \"en\"\r\n }\r\n isCurrentLanguageArabic() {\r\n return this.getCurrentLanguage() == \"ar\"\r\n }\r\n\r\n notifySuccessMessage(Message?: string, title?: string, time?: number, showHeader: boolean = true) {\r\n\r\n let MessageTemplate = this.getResourceValue(\"SuccessMessage\");\r\n let titleTemplate: string;\r\n if (Message) {\r\n MessageTemplate = Message;\r\n }\r\n if (title) {\r\n titleTemplate = title;\r\n }\r\n let toaster = AppInjector.get(ToastrService);\r\n showHeader ? toaster.success(MessageTemplate, titleTemplate) : toaster.success(MessageTemplate);\r\n }\r\n\r\n notifyErrorMessage(Message?: string, title?: string, time?: number, showHeader: boolean = true) {\r\n\r\n let MessageTemplate = this.getResourceValue(\"ErrorMessage\");\r\n let titleTemplate = this.getResourceValue(\"Error\");\r\n if (Message) {\r\n MessageTemplate = Message;\r\n }\r\n if (title) {\r\n titleTemplate = title;\r\n }\r\n const toaster = AppInjector.get(ToastrService);\r\n showHeader ? toaster.error(MessageTemplate, titleTemplate) : toaster.error(MessageTemplate);\r\n }\r\n\r\n notifyWarningMessage(Message?: string, title?: string, time?: number, showHeader: boolean = true) {\r\n\r\n let MessageTemplate = this.getResourceValue(\"WarningMessage\");\r\n let titleTemplate = this.getResourceValue(\"Warning\");\r\n if (Message) {\r\n MessageTemplate = Message;\r\n }\r\n if (title) {\r\n titleTemplate = title;\r\n }\r\n const toaster = AppInjector.get(ToastrService);\r\n showHeader ? toaster.warning(MessageTemplate, titleTemplate) : toaster.warning(MessageTemplate);\r\n }\r\n\r\n startBlockUI() {\r\n this.blockUI.start();\r\n }\r\n stopBlockUI() {\r\n this.blockUI.stop();\r\n }\r\n}\r\n","import { FormGroup } from \"@angular/forms\";\r\n\r\nexport class RequestOptionsModel {\r\n disableSuccessNotification: boolean=false;\r\n disableBlockUI: boolean = false;\r\n disableErrorHandler: boolean = false;\r\n customSuccessMessage: string;\r\n customErrorMessage: string;\r\n responseType:any=\"\"\r\n formGroup: FormGroup = null\r\n castResponsetoClass: boolean = true;\r\n\r\n}\r\n","import { Injectable, OnDestroy, Pipe } from '@angular/core';\r\nimport { HttpClient, HttpErrorResponse, HttpHeaders, HttpParams } from \"@angular/common/http\";\r\nimport { RequestOptionsModel } from '../models/RequestOptionsModel';\r\nimport { AuthService } from '../authentication/auth.service';\r\nimport { EnvironmentService } from './environment.service';\r\nimport { Observable, Subject, throwError } from 'rxjs';\r\nimport { UtilityService } from './utility.service';\r\nimport { map, takeUntil, tap } from 'rxjs/operators';\r\nimport { BBSFTranslateService } from './translate.service';\r\nimport { plainToClass } from 'class-transformer';\r\nimport { Router } from '@angular/router';\r\n\r\n\r\n@Injectable()\r\nexport class RequestHandlerService implements OnDestroy {\r\n private requestOptions: RequestOptionsModel = new RequestOptionsModel();\r\n private currentLanguage = \"\";\r\n public onDestroy$: Subject<void> = new Subject<void>();\r\n constructor\r\n (\r\n private http: HttpClient,\r\n private authService: AuthService,\r\n private environmentService: EnvironmentService,\r\n private utilityService: UtilityService,\r\n private bbsfTranslateService: BBSFTranslateService,\r\n private router: Router\r\n ) {\r\n //using localStorage to avoid call getCurrentLanguage() because it is not all to use async in constructor\r\n\r\n this.bbsfTranslateService.onLangChange.subscribe((event) => {\r\n if (this.currentLanguage != event.lang) {\r\n this.currentLanguage = event.lang;\r\n }\r\n })\r\n }\r\n\r\n public getLuckyNumber(): Observable<number> {\r\n\r\n return Observable.create((subject: Subject<number>) => {\r\n setInterval(() => {\r\n const number = Math.floor(Math.random() * 10);\r\n console.log(number)\r\n subject.next(number);\r\n }, 1000);\r\n }).pipe(\r\n takeUntil(this.onDestroy$));\r\n }\r\n\r\n\r\n get<T>(Url: string, params?: HttpParams, responseType?: new () => T, requestOptions?: RequestOptionsModel): Observable<T> {\r\n if (requestOptions)\r\n this.requestOptions = requestOptions;\r\n\r\n let headers = this.getHeaders();\r\n if (!this.requestOptions.disableBlockUI)\r\n this.utilityService.startBlockUI();\r\n let object: T;\r\n return this.http.get<T>(this.environmentService.getApiUrl() + Url, { headers: headers, params: params }).pipe(\r\n takeUntil(this.onDestroy$),\r\n tap((result) => {\r\n if (!this.requestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }, error => {\r\n if (!this.requestOptions.disableErrorHandler)\r\n this.handleError(error);\r\n }), map((data: T) => {\r\n if (this.requestOptions.castResponsetoClass)\r\n return plainToClass(responseType, data, { excludeExtraneousValues: true });\r\n else\r\n return data;\r\n })\r\n ) as Observable<T>;\r\n }\r\n\r\n post<T>(Url: string, model?: any, responseType?: new () => T, params?: HttpParams, requestOptions?: RequestOptionsModel): Observable<T> {\r\n\r\n if (requestOptions)\r\n this.requestOptions = requestOptions;\r\n\r\n let headers = this.getHeaders();\r\n if (!this.requestOptions.disableBlockUI)\r\n this.utilityService.startBlockUI();\r\n return this.http.post<T>(this.environmentService.getApiUrl() + Url, model, { headers: headers, params: params, responseType: this.requestOptions.responseType }).pipe(\r\n takeUntil(this.onDestroy$),\r\n tap((result) => {\r\n if (!this.requestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }, error => {\r\n if (!this.requestOptions.disableErrorHandler)\r\n this.handleError(error);\r\n }), map((data: T) => {\r\n if (this.requestOptions.castResponsetoClass)\r\n return plainToClass(responseType, data, { excludeExtraneousValues: true });\r\n else\r\n return data;\r\n })\r\n );\r\n }\r\n\r\n delete<T>(Url: string, deletedId: string, requestOptions?: RequestOptionsModel, responseType?: new () => T, params?: HttpParams): Observable<T> {\r\n if (requestOptions)\r\n this.requestOptions = requestOptions;\r\n\r\n let headers = this.getHeaders();\r\n if (!this.requestOptions.disableBlockUI)\r\n this.utilityService.startBlockUI();\r\n return this.http.delete<T>(this.environmentService.getApiUrl() + Url + `/${deletedId}`, { headers: headers, params: params }).pipe(\r\n takeUntil(this.onDestroy$),\r\n tap((result) => {\r\n if (!this.requestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }, error => {\r\n if (!this.requestOptions.disableErrorHandler)\r\n this.handleError(error);\r\n }), map((data: T) => {\r\n if (this.requestOptions.castResponsetoClass)\r\n return plainToClass(responseType, data, { excludeExtraneousValues: true });\r\n else\r\n return data;\r\n })\r\n );\r\n }\r\n\r\n put<T>(Url: string, model?: any, params?: HttpParams, responseType?: new () => T, requestOptions?: RequestOptionsModel): Observable<T> {\r\n if (requestOptions)\r\n this.requestOptions = requestOptions;\r\n\r\n let headers = this.getHeaders();\r\n if (!this.requestOptions.disableBlockUI)\r\n this.utilityService.startBlockUI();\r\n return this.http.put<T>(this.environmentService.getApiUrl() + Url, model, { headers: headers, params: params, responseType: this.requestOptions.responseType }).pipe(\r\n takeUntil(this.onDestroy$),\r\n tap((result) => {\r\n if (!this.requestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }, error => {\r\n if (!this.requestOptions.disableErrorHandler)\r\n this.handleError(error);\r\n }), map((data: T) => {\r\n if (this.requestOptions.castResponsetoClass)\r\n return plainToClass(responseType, data, { excludeExtraneousValues: true });\r\n else\r\n return data;\r\n })\r\n );\r\n }\r\n\r\n patch<T>(Url: string, model?: any, responseType?: new () => T, params?: HttpParams, requestOptions?: RequestOptionsModel): Observable<T> {\r\n\r\n if (requestOptions)\r\n this.requestOptions = requestOptions;\r\n\r\n let headers = new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n 'Authorization': this.authService.authorizationHeaderValue(),\r\n\r\n });\r\n this.currentLanguage = localStorage.getItem('language');\r\n headers = headers.set('Accept-Language', this.currentLanguage.toString());\r\n headers = headers.set('ignore-cookies', 'true');\r\n if (!this.requestOptions.disableBlockUI)\r\n this.utilityService.startBlockUI();\r\n\r\n return this.http.patch<T>(this.environmentService.getApiUrl() + Url, model, { headers: headers, params: params, responseType: this.requestOptions.responseType }).pipe(\r\n takeUntil(this.onDestroy$),\r\n tap((result) => {\r\n if (!this.requestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }, error => {\r\n if (!this.requestOptions.disableErrorHandler)\r\n this.handleError(error);\r\n }), map((data: T) => {\r\n if (this.requestOptions.castResponsetoClass)\r\n return plainToClass(responseType, data, { excludeExtraneousValues: true })\r\n else\r\n return data;\r\n })\r\n );\r\n }\r\n download<T>(Url: string, params?: HttpParams, requestOptions?: RequestOptionsModel): Observable<T> {\r\n if (requestOptions)\r\n this.requestOptions = requestOptions;\r\n\r\n let headers = this.getHeaders();\r\n if (!this.requestOptions.disableBlockUI)\r\n this.utilityService.startBlockUI();\r\n return this.http.get<T>(this.environmentService.getApiUrl() + Url, { headers: headers, params: params, responseType: this.requestOptions.responseType }).pipe(\r\n takeUntil(this.onDestroy$),\r\n tap((result) => {\r\n if (!this.requestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }, error => {\r\n if (!this.requestOptions.disableErrorHandler)\r\n this.handleError(error);\r\n })\r\n );\r\n }\r\n\r\n public destroyHandler(): void {\r\n this.onDestroy$.next();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n console.log(\"clearInterval\")\r\n this.destroyHandler()\r\n }\r\n\r\n private handleError(err: HttpErrorResponse) {\r\n var isEnglish = this.utilityService.getCurrentLanguage() == \"en\";\r\n if (err.error instanceof ErrorEvent) {\r\n this.utilityService.notifyErrorMessage()\r\n }\r\n else {\r\n if (err.status == 400)\r\n throwError(err);//error 400 is thrown to be catch by the Form component to handle Fluent validation errors\r\n else if (err.status == 401)\r\n this.router.navigate([\"/Admin/account/login\"])\r\n else if (err.status == 403)\r\n this.utilityService.notifyErrorMessage(isEnglish ? \"Sorry, You're not authorized to access this action\" : \"عذرا ليس لديك الصلاحيه لهذا الطلب\")\r\n else if (err.status == 510)\r\n this.utilityService.notifyErrorMessage(isEnglish ? \"Can not delete this item as it is related to others\" : \"لا يمكن حذف هذا العنصر لأنه مرتبط بعناصر أخرى\")\r\n else if (err.status == 515)\r\n this.utilityService.notifyErrorMessage((err.error ? err.error.Message : err.message))\r\n else {\r\n console.log(`error message is: ${err.error ? err.error.Message : err.message}`)\r\n this.utilityService.notifyErrorMessage(this.utilityService.getResourceValue(\"ErrorMassage\"))\r\n }\r\n }\r\n this.utilityService.stopBlockUI();\r\n }\r\n\r\n private getHeaders() {\r\n return new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n 'Authorization': this.authService.authorizationHeaderValue(),\r\n 'Client-Local-Time-Zone': Intl.DateTimeFormat().resolvedOptions().timeZone,\r\n 'Accept-Language': localStorage.getItem('language'),\r\n 'ignore-cookies': 'true'\r\n });\r\n }\r\n}\r\n","import { DOCUMENT } from '@angular/common';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { BlockUI, NgBlockUI } from 'ng-block-ui';\r\nimport { BBSFTranslateService } from './translate.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class StylesBundleService {\r\n\r\n constructor(@Inject(DOCUMENT) private document: Document, private translateService: BBSFTranslateService) { }\r\n\r\n loadThemes(lang: string, bundleEnglishName: string, bundleArabicName: string) {\r\n if (lang == \"ar\") {\r\n this.loadStyleBundle(bundleArabicName.toString())\r\n document.querySelector('html').setAttribute(\"b-lang\", \"ar\"); //use b-lang instead of lang to fix firefox number inputs in Arabic locale\r\n document.querySelector('html').setAttribute(\"dir\", \"rtl\");\r\n } else {\r\n this.loadStyleBundle(bundleEnglishName.toString())\r\n document.querySelector('html').setAttribute(\"b-lang\", \"en\");\r\n document.querySelector('html').setAttribute(\"dir\", \"ltr\");\r\n }\r\n\r\n }\r\n\r\n loadThemesColor(theme: string, bundleDarkName: string, bundleLightName: string) {\r\n if (theme == \"Light\")\r\n this.loadStyleBundle(bundleLightName.toString());\r\n else\r\n this.loadStyleBundle(bundleDarkName.toString())\r\n }\r\n\r\n loadStyleBundle(styleName: string) {\r\n const head = this.document.getElementsByTagName('head')[0];\r\n\r\n let themeLink = this.document.getElementById('client-theme') as HTMLLinkElement;\r\n\r\n if (themeLink && themeLink.href.includes(styleName)) {\r\n return;\r\n }\r\n else if (themeLink && !themeLink.href.includes(styleName)) {\r\n themeLink.remove();\r\n }\r\n const style = this.document.createElement('link');\r\n style.id = 'client-theme';\r\n style.rel = 'stylesheet';\r\n style.href = `${styleName}`;\r\n head.appendChild(style);\r\n }\r\n\r\n}\r\n\r\n","import { Injectable, Optional, Host, SkipSelf, Component } from '@angular/core';\r\nimport { IndividualConfig, ToastrService } from 'ngx-toastr';\r\nimport { BlockUI, NgBlockUI } from 'ng-block-ui';\r\nimport { AbstractControl, ControlContainer, ControlValueAccessor, NG_VALUE_ACCESSOR, FormControl, FormsModule, FormGroup } from '@angular/forms';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { ErrorModel } from '../models/ErrorModel';\r\nimport { UtilityService } from './utility.service';\r\nimport { RequestOptionsModel } from '../models/RequestOptionsModel';\r\n\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ControlValidationService {\r\n private requestOptions: RequestOptionsModel = new RequestOptionsModel();\r\n\r\n constructor(private utilityService: UtilityService) {\r\n }\r\n\r\n isCreatedBefor = false;\r\n\r\n @BlockUI() blockUI: NgBlockUI;\r\n\r\n showGlobalError(errorMessage?: string | string[], formId?: string, deleteOld?: boolean) {\r\n let globalErorrElement = document.getElementsByClassName('alert alert-InvalidValidation bg-light-danger text-danger')\r\n if (globalErorrElement.length > 0) {\r\n this.removeElementsByClass('alert alert-InvalidValidation bg-light-danger text-danger');\r\n }\r\n if (this.isCreatedBefor == true) {\r\n this.removeElementsByClass('alert alert-InvalidValidation bg-light-danger text-danger');\r\n }\r\n // tslint:disable-next-line: prefer-const\r\n if (!formId)\r\n formId = \"currentForm\"\r\n var object = document.getElementById(formId);\r\n const tagName = 'div';\r\n // tslint:disable-next-line: prefer-const\r\n var elementToAppend = document.createElement(tagName); // Your tag name here\r\n let message: string | string[] = \"\";\r\n\r\n if (!errorMessage || (typeof errorMessage == \"string\")) {\r\n if (localStorage.getItem('language') == \"ar\")\r\n message = errorMessage ? errorMessage : \"لديك بعص الأخطاء . من فضلك قم بالمراجعه \";\r\n else\r\n message = errorMessage ? errorMessage : \"You have some validation errors. Please check below\"\r\n elementToAppend.innerHTML = \"<ul class='list-unstyled m-0 py-3 d-flex align-items-center fs-6'><li><i class='fa fa-times-circle text-danger me-3 fs-2'></i>\" + message + \"</li></ul>\";\r\n elementToAppend.className += 'alert alert-InvalidValidation bg-light-danger text-danger';\r\n elementToAppend.id += 'errorId';\r\n // tslint:disable-next-line: prefer-for-of\r\n const elementToAppen = elementToAppend.cloneNode(true);\r\n // let targetElement = object.getElementsByClassName(\"b-control\")[0];\r\n object.insertBefore(elementToAppen, object.firstChild);\r\n }\r\n else {\r\n let ul = document.createElement(\"ul\");\r\n elementToAppend.appendChild(ul);\r\n\r\n for (const iterator of errorMessage) {\r\n let li = document.createElement(\"li\");\r\n li.innerHTML = iterator;\r\n ul.appendChild(li);\r\n }\r\n\r\n elementToAppend.className += 'alert alert-InvalidValidation bg-light-danger text-danger';\r\n elementToAppend.id += 'errorId';\r\n // tslint:disable-next-line: prefer-for-of\r\n const elementToAppen = elementToAppend.cloneNode(true);\r\n // let targetElement = object.getElementsByClassName(\"b-control\")[0];\r\n object.insertBefore(elementToAppen, object.firstChild);\r\n }\r\n\r\n this.isCreatedBefor = true;\r\n }\r\n\r\n RemoveGlobalError() {\r\n const removedList = document.getElementsByClassName('alert alert-InvalidValidation bg-light-danger text-danger');\r\n // tslint:disable-next-line: prefer-for-of\r\n for (let index = 0; index < removedList.length; index++) {\r\n const element = removedList[index];\r\n element.remove();\r\n }\r\n this.isCreatedBefor = false;\r\n }\r\n\r\n showInputErro(errors: any) {\r\n // show error on top of form \r\n this.showGlobalError();\r\n // remove old error from server\r\n this.removeElementsByClass('errortemplet');\r\n // Looping in error Object\r\n for (const key in errors) {\r\n if (errors.hasOwnProperty(key)) {\r\n for (const iterator of errors[key]) {\r\n const input = document.querySelectorAll('[ng-reflect-name=' + key + ']')[0];\r\n if ((input.attributes['ng-reflect-name'].value as string) === key) {\r\n this.removeElementsByClass('erroclass-' + key);\r\n const tagName = 'p'\r\n const elementToAppend = document.createElement(tagName); // Your tag name here\r\n elementToAppend.innerHTML = iterator;\r\n elementToAppend.style.color = 'red'\r\n elementToAppend.className += 'errortemplet erroclass-' + key;\r\n const elementToappen = elementToAppend.cloneNode(true);\r\n input.parentNode.insertBefore(elementToappen, input.lastChild);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n removeElementsByClass(className) {\r\n const elements = document.getElementsByClassName(className);\r\n while (elements.length > 0) {\r\n elements[0].parentNode.removeChild(elements[0]);\r\n }\r\n }\r\n\r\n renderServerErrors(form: FormGroup, err: HttpErrorResponse, requestOptions: RequestOptionsModel, formId?: string) {\r\n if (err.error == null) {\r\n return;\r\n }\r\n let errorsArray: string[] = [];\r\n\r\n this.requestOptions = requestOptions;\r\n\r\n if (err.error.validation_errors) {\r\n err.error.validation_errors.forEach((element: ErrorModel) => {\r\n let fieldName = element.field;\r\n let controlName = element.controlName;\r\n let message = element.message;\r\n if (form == null) {\r\n this.requestOptions.customErrorMessage ? this.utilityService.notifyErrorMessage(this.requestOptions.customErrorMessage) : this.utilityService.notifyErrorMessage(`${message}`);\r\n }\r\n else if (controlName && !this.hasControlName(form, controlName)) {\r\n errorsArray.push(`${fieldName}: ${message}`);\r\n }\r\n else {\r\n this.setFieldError(form, controlName, fieldName, message);\r\n this.showGlobalError(null, formId);\r\n }\r\n });\r\n\r\n if (errorsArray.length > 0)\r\n this.showGlobalError(errorsArray, formId)\r\n }\r\n\r\n }\r\n\r\n private hasControlName(form: FormGroup, controlName: string): boolean {\r\n let control = form.get(controlName);\r\n return control != null;\r\n }\r\n\r\n private setFieldError(form: FormGroup, controlName: string, fieldName: string, message: string) {\r\n let control = null\r\n\r\n if (controlName)\r\n control = this.getControlFormNameByFieldName(form, controlName);\r\n else\r\n control = this.getControlFormNameByFieldName(form, fieldName.split('.')[0]);\r\n\r\n let errors = { \"errorMassage\": message };\r\n let fieldNameArray = fieldName.split('.');\r\n if (fieldNameArray.length >= 1) {\r\n switch (fieldNameArray[fieldNameArray.length - 1].toLocaleLowerCase()) {\r\n case \"english\":\r\n let englishControl = control.get(\"English\")\r\n englishControl.setErrors(errors);\r\n break;\r\n case \"arabic\":\r\n let arabicControl = control.get(\"Arabic\")\r\n arabicControl.setErrors(errors);\r\n break;\r\n default:\r\n control.setErrors(errors);\r\n }\r\n }\r\n else {\r\n this.requestOptions.customErrorMessage ? this.utilityService.notifyErrorMessage(this.requestOptions.customErrorMessage) : this.utilityService.notifyErrorMessage(`${message}`)\r\n }\r\n }\r\n\r\n private getControlFormNameByFieldName(form: FormGroup, fieldName: string) {\r\n const formControls = form.controls;\r\n let controlName = Object.keys(formControls).find(c => c.toLocaleLowerCase() === fieldName.toLocaleLowerCase());\r\n let control = form.get(controlName);\r\n return control;\r\n }\r\n\r\n\r\n\r\n}\r\n","import { HttpParams } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { AuthService } from '../authentication/auth.service';\r\nimport { EnvironmentService } from './environment.service';\r\nimport { RequestHandlerService } from './requesthandler.service';\r\nimport { StylesBundleService } from './stylesbundle.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class MasterLayoutService {\r\n ApiUrl = '/api/Home/';\r\n constructor(private router: Router, private http: RequestHandlerService, private authService: AuthService, private stylesBundleService: StylesBundleService, private translate: TranslateService, private environmentService: EnvironmentService) { }\r\n\r\n switchLang(lang: string, bundleEnglishName: string, bundleArabicName: string) {\r\n this.changeLanguage(lang).subscribe((result) => {\r\n this.updateUserInfo().subscribe((Value) => {\r\n let UserInfoObject = Value as any;\r\n this.authService.handleAccessToken(UserInfoObject.token)\r\n this.stylesBundleService.loadThemes(\r\n lang,\r\n bundleEnglishName,\r\n bundleArabicName\r\n );\r\n localStorage.setItem('language', lang);\r\n this.translate.use(lang);\r\n });\r\n });\r\n }\r\n\r\n reloadComponent() {\r\n let currentUrl = this.router.url;\r\n this.router.routeReuseStrategy.shouldReuseRoute = () => false;\r\n this.router.onSameUrlNavigation = 'reload';\r\n this.router.navigate([currentUrl]);\r\n }\r\n\r\n private changeLanguage(key: string) {\r\n let params = new HttpParams();\r\n params = params.append('UserId', this.authService.user.profile.id);\r\n params = params.append('LanguageKey', key);\r\n return this.http.post(this.ApiUrl + 'UpdateLanguage', null, null, params);\r\n }\r\n\r\n getUserClaims() {\r\n return this.http.get(this.ApiUrl + 'GetUserClaims', null, null);\r\n }\r\n\r\n logError(error: string) {\r\n let params = new HttpParams();\r\n params = params.append('error', error);\r\n return this.http.post(this.ApiUrl + 'LogError', null, null, params);\r\n }\r\n\r\n private updateUserInfo() {\r\n return this.http.get(this.ApiUrl + 'UpdateUserInfo', null, null);\r\n\r\n }\r\n\r\n switchRole(permissionSetID: string) {\r\n this.updateRole(permissionSetID).subscribe((result) => {\r\n this.updateUserInfo().subscribe((Value) => {\r\n let UserInfoObject = Value as any;\r\n this.authService.handleAccessToken(UserInfoObject.token)\r\n });\r\n });\r\n }\r\n\r\n private updateRole(permissionSetID: string) {\r\n let params = new HttpParams();\r\n params = params.append('UserId', this.authService.user.profile.id);\r\n params = params.append('RoleID', permissionSetID);\r\n return this.http.post(this.ApiUrl + 'SwitchRole', null, null, params);\r\n }\r\n}\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { TranslateService } from \"@ngx-translate/core\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ConfigurationService {\r\n static JsonData:any[]=[]\r\n constructor(private httpClient: HttpClient){\r\n this.httpClient.get(\"./assets/config/configurations.json\").subscribe(data =>{\r\n ConfigurationService.JsonData = data as any[];\r\n })\r\n }\r\n getConfigurationValue(key:string) {\r\n return ConfigurationService.JsonData[key];\r\n }\r\n}","import { HttpClient } from '@angular/common/http';\r\nimport { Injector, NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { BlockUIModule } from 'ng-block-ui';\r\nimport { ToastrModule } from 'ngx-toastr';\r\nimport { HttpModule } from '@angular/http';\r\nimport { UtilityService } from './shared/services/utility.service';\r\nimport { EnvironmentService } from './shared/services/environment.service';\r\nimport { AuthService } from './shared/authentication/auth.service';\r\nimport { RequestHandlerService } from './shared/services/requesthandler.service';\r\nimport { StylesBundleService } from './shared/services/stylesbundle.service';\r\nimport { BBSFTranslateService } from './shared/services/translate.service';\r\nimport { ControlValidationService } from './shared/services/controlvalidation.service';\r\nimport { MasterLayoutService } from './shared/services/masterlayout.service';\r\nimport { ConfigurationService } from './shared/services/configuration.service';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CookieService } from 'ngx-cookie-service';\r\nexport let AppInjector: Injector;\r\n\r\n@NgModule({\r\n declarations: [\r\n ],\r\n imports: [\r\n CommonModule,\r\n BlockUIModule.forRoot(),\r\n HttpModule,\r\n RouterModule,\r\n ToastrModule.forRoot(),\r\n\r\n ],\r\n exports: [\r\n ],\r\n providers: [\r\n UtilityService,\r\n EnvironmentService,\r\n AuthService,\r\n RequestHandlerService,\r\n StylesBundleService,\r\n TranslateService,\r\n BBSFTranslateService,\r\n ControlValidationService,\r\n MasterLayoutService,\r\n ConfigurationService,\r\n CookieService\r\n\r\n ]\r\n})\r\nexport class BBSFUtilitiesModule {\r\n constructor(private injector: Injector) {\r\n AppInjector = this.injector;\r\n\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { Resolve } from \"@angular/router\";\r\nimport { Observable } from \"rxjs\";\r\nimport { BBSFTranslateService } from \"./translate.service\";\r\n\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class TranslationResolverService implements Resolve<any> {\r\n constructor(private translateService: BBSFTranslateService) {}\r\n\r\n resolve(): Observable<any> {\r\n return this.translateService.getTranslation(\r\n this.translateService.currentLang\r\n );\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { TranslateService } from \"@ngx-translate/core\";\r\nimport { ConfigurationService } from \"./configuration.service\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AppearanceConfigurationService {\r\n constructor(private configService: ConfigurationService) {\r\n }\r\n\r\n getLayoutTheme() {\r\n return this.configService.getConfigurationValue('AnonymousLayout_Theme');\r\n }\r\n getFooterText() {\r\n return this.configService.getConfigurationValue('AnonymousLayout_FooterText');\r\n }\r\n getPageTitle() {\r\n return this.configService.getConfigurationValue('AnonymousLayout_PageTitle');\r\n }\r\n getFavIcon() {\r\n return this.configService.getConfigurationValue('AnonymousLayout_FavIcon');\r\n }\r\n getCustomStyles() {\r\n return this.configService.getConfigurationValue('AnonymousLayout_CustomStyles');\r\n }\r\n getLogo() {\r\n return this.configService.getConfigurationValue('AnonymousLayout_Logo');\r\n }\r\n}","const contentTypesXML = `\r\n <?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\r\n\r\n <Types xmlns=\"http://schemas.openxmlformats.org/package/2006/content-types\">\r\n <Default Extension=\"rels\" ContentType=\"application/vnd.openxmlformats-package.relationships+xml\" />\r\n <Default Extension=\"jpeg\" ContentType=\"image/jpeg\"/>\r\n <Default Extension=\"png\" ContentType=\"image/png\"/>\r\n <Default Extension=\"xml\" ContentType=\"application/xml\"/>\r\n <Override PartName=\"/_rels/.rels\" ContentType=\"application/vnd.openxmlformats-package.relationships+xml\"/>\r\n <Override PartName=\"/word/_rels/document.xml.rels\" ContentType=\"application/vnd.openxmlformats-package.relationships+xml\"/>\r\n <Override PartName=\"/word/_rels/footer1.xml.rels\" ContentType=\"application/vnd.openxmlformats-package.relationships+xml\"/>\r\n <Override PartName=\"/word/document.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml\"/>\r\n <Override PartName=\"/word/styles.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml\"/>\r\n <Override PartName=\"/word/numbering.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml\"/>\r\n <Override PartName=\"/word/theme/theme1.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.theme+xml\"/>\r\n <Override PartName=\"/word/fontTable.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.wordprocessingml.fontTable+xml\"/>\r\n <Override PartName=\"/docProps/core.xml\" ContentType=\"application/vnd.openxmlformats-package.core-properties+xml\"/>\r\n <Override PartName=\"/word/settings.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml\"/>\r\n <Override PartName=\"/word/webSettings.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.wordprocessingml.webSettings+xml\"/>\r\n <Override PartName=\"/word/afchunk.mht\" ContentType=\"message/rfc822\"/>\r\n <Override PartName=\"/word/afchunkheader.mht\" ContentType=\"message/rfc822\"/>\r\n <Override PartName=\"/word/afchunkfooter.mht\" ContentType=\"message/rfc822\"/>\r\n </Types>\r\n`;\r\n\r\nexport { contentTypesXML};\r\n","const namespaces = {\r\n a: 'http://schemas.openxmlformats.org/drawingml/2006/main',\r\n b: 'http://schemas.openxmlformats.org/officeDocument/2006/bibliography',\r\n cdr: 'http://schemas.openxmlformats.org/drawingml/2006/chartDrawing',\r\n dc: 'http://purl.org/dc/elements/1.1/',\r\n dcmitype: 'http://purl.org/dc/dcmitype/',\r\n dcterms: 'http://purl.org/dc/terms/',\r\n o: 'urn:schemas-microsoft-com:office:office',\r\n pic: 'http://schemas.openxmlformats.org/drawingml/2006/picture',\r\n r: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships',\r\n v: 'urn:schemas-microsoft-com:vml',\r\n ve: 'http://schemas.openxmlformats.org/markup-compatibility/2006',\r\n vt: 'http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes',\r\n w: 'http://schemas.openxmlformats.org/wordprocessingml/2006/main',\r\n w10: 'urn:schemas-microsoft-com:office:word',\r\n wp: 'http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing',\r\n wne: 'http://schemas.microsoft.com/office/word/2006/wordml',\r\n xsd: 'http://www.w3.org/2001/XMLSchema',\r\n xsi: 'http://www.w3.org/2001/XMLSchema-instance',\r\n numbering: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/numbering',\r\n hyperlinks: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink',\r\n images: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image',\r\n styles: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles',\r\n headers: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/header',\r\n footers: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer',\r\n themes: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme',\r\n coreProperties: 'http://schemas.openxmlformats.org/package/2006/metadata/core-properties',\r\n officeDocumentRelation:\r\n 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument',\r\n corePropertiesRelation:\r\n 'http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties',\r\n settingsRelation: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings',\r\n webSettingsRelation:\r\n 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/webSettings',\r\n sl: 'http://schemas.openxmlformats.org/schemaLibrary/2006/main',\r\n contentTypes: 'http://schemas.openxmlformats.org/package/2006/content-types',\r\n relationship: 'http://schemas.openxmlformats.org/package/2006/relationships',\r\n};\r\n\r\nexport default namespaces;\r\n","import { cloneDeep } from 'lodash';\r\n\r\nconst applicationName = 'html-to-docx';\r\nconst defaultOrientation = 'portrait';\r\nconst landscapeWidth = 15840;\r\nconst landscapeHeight = 12240;\r\nconst landscapeMargins = {\r\n top: 1800,\r\n right: 1440,\r\n bottom: 1800,\r\n left: 1440,\r\n header: 720,\r\n footer: 720,\r\n gutter: 0,\r\n};\r\nconst portraitMargins = {\r\n top: 1440,\r\n right: 1800,\r\n bottom: 1440,\r\n left: 1800,\r\n header: 720,\r\n footer: 720,\r\n gutter: 0,\r\n};\r\nconst defaultFont = 'Times New Roman';\r\nconst defaultFontSize = 22;\r\nconst defaultDocumentOptions = {\r\n orientation: defaultOrientation,\r\n margins: cloneDeep(portraitMargins),\r\n title: '',\r\n subject: '',\r\n creator: applicationName,\r\n keywords: [applicationName],\r\n description: '',\r\n lastModifiedBy: applicationName,\r\n revision: 1,\r\n createdAt: new Date(),\r\n modifiedAt: new Date(),\r\n headerType: 'default',\r\n header: false,\r\n footerType: 'default',\r\n footer: false,\r\n font: defaultFont,\r\n fontSize: defaultFontSize,\r\n complexScriptFontSize: defaultFontSize,\r\n table: {\r\n row: {\r\n cantSplit: false,\r\n },\r\n },\r\n pageSize: {\r\n width: landscapeHeight,\r\n height: landscapeWidth,\r\n },\r\n pageNumber: false,\r\n skipFirstHeaderFooter: false,\r\n lineNumber: false,\r\n lineNumberOptions: {\r\n countBy: 1,\r\n start: 0,\r\n restart: 'continuous',\r\n },\r\n numbering: {\r\n defaultOrderedListStyleType: 'decimal',\r\n },\r\n};\r\nconst defaultHTMLString = '<p></p>';\r\nconst relsFolderName = '_rels';\r\nconst headerFileName = 'header1';\r\nconst footerFileName = 'footer1';\r\nconst themeFileName = 'theme1';\r\nconst documentFileName = 'document';\r\nconst headerType = 'header';\r\nconst footerType = 'footer';\r\nconst themeType = 'theme';\r\nconst hyperlinkType = 'hyperlink';\r\nconst imageType = 'image';\r\nconst internalRelationship = 'Internal';\r\nconst wordFolder = 'word';\r\nconst themeFolder = 'theme';\r\nconst paragraphBordersObject = {\r\n top: {\r\n size: 0,\r\n spacing: 3,\r\n color: 'FFFFFF',\r\n },\r\n left: {\r\n size: 0,\r\n spacing: 3,\r\n color: 'FFFFFF',\r\n },\r\n bottom: {\r\n size: 0,\r\n spacing: 3,\r\n color: 'FFFFFF',\r\n },\r\n right: {\r\n size: 0,\r\n spacing: 3,\r\n color: 'FFFFFF',\r\n },\r\n};\r\nconst colorlessColors = ['transparent', 'auto'];\r\nconst verticalAlignValues = ['top', 'middle', 'bottom'];\r\n\r\nexport {\r\n defaultDocumentOptions,\r\n defaultHTMLString,\r\n relsFolderName,\r\n headerFileName,\r\n footerFileName,\r\n themeFileName,\r\n documentFileName,\r\n headerType,\r\n footerType,\r\n themeType,\r\n internalRelationship,\r\n wordFolder,\r\n themeFolder,\r\n landscapeMargins,\r\n portraitMargins,\r\n defaultOrientation,\r\n landscapeWidth,\r\n landscapeHeight,\r\n applicationName,\r\n defaultFont,\r\n defaultFontSize,\r\n hyperlinkType,\r\n imageType,\r\n paragraphBordersObject,\r\n colorlessColors,\r\n verticalAlignValues,\r\n};\r\n","import namespaces from '../namespaces';\r\nimport { applicationName } from '../constants';\r\n\r\nconst generateCoreXML = (\r\n title = '',\r\n subject = '',\r\n creator = applicationName,\r\n keywords = [applicationName],\r\n description = '',\r\n lastModifiedBy = applicationName,\r\n revision = 1,\r\n createdAt = new Date(),\r\n modifiedAt = new Date()\r\n) => `\r\n <?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\r\n\r\n <cp:coreProperties\r\n xmlns:cp=\"${namespaces.coreProperties}\"\r\n xmlns:dc=\"${namespaces.dc}\"\r\n xmlns:dcterms=\"${namespaces.dcterms}\"\r\n xmlns:dcmitype=\"${namespaces.dcmitype}\"\r\n xmlns:xsi=\"${namespaces.xsi}\"\r\n >\r\n <dc:title>${title}</dc:title>\r\n <dc:subject>${subject}</dc:subject>\r\n <dc:creator>${creator}</dc:creator>\r\n ${\r\n keywords && Array.isArray(keywords)\r\n ? `<cp:keywords>${keywords.join(', ')}</cp:keywords>`\r\n : ''\r\n }\r\n <dc:description>${description}</dc:description>\r\n <cp:lastModifiedBy>${lastModifiedBy}</cp:lastModifiedBy>\r\n <cp:revision>${revision}</cp:revision>\r\n <dcterms:created xsi:type=\"dcterms:W3CDTF\">${\r\n createdAt instanceof Date ? createdAt.toISOString() : new Date().toISOString()\r\n }</dcterms:created>\r\n <dcterms:modified xsi:type=\"dcterms:W3CDTF\">${\r\n modifiedAt instanceof Date ? modifiedAt.toISOString() : new Date().toISOString()\r\n }</dcterms:modified>\r\n </cp:coreProperties>\r\n `;\r\n\r\nexport { generateCoreXML};\r\n","import namespaces from '../namespaces';\r\n\r\nconst documentRelsXML = `\r\n <?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\r\n\r\n <Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">\r\n <Relationship Id=\"rId1\" Type=\"${namespaces.numbering}\" Target=\"numbering.xml\"/>\r\n <Relationship Id=\"rId2\" Type=\"${namespaces.styles}\" Target=\"styles.xml\"/>\r\n <Relationship Id=\"rId3\" Type=\"${namespaces.settingsRelation}\" Target=\"settings.xml\"/>\r\n <Relationship Id=\"rId4\" Type=\"${namespaces.webSettingsRelation}\" Target=\"webSettings.xml\"/>\r\n <Relationship Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/aFChunk\" Target=\"/word/afchunk.mht\" Id=\"htmlChunk\" />\r\n <Relationship Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/aFChunk\" Target=\"/word/afchunkheader.mht\" Id=\"htmlChunkHeader\" />\r\n <Relationship Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/aFChunk\" Target=\"/word/afchunkfooter.mht\" Id=\"htmlChunkFooter\" />\r\n </Relationships>\r\n`;\r\n\r\nexport {documentRelsXML};\r\n","import namespaces from '../namespaces';\r\n\r\nconst relsXML = `\r\n <?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\r\n\r\n <Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">\r\n <Relationship Id=\"rId1\" Type=\"${namespaces.officeDocumentRelation}\" Target=\"word/document.xml\"/>\r\n <Relationship Id=\"rId2\" Type=\"${namespaces.corePropertiesRelation}\" Target=\"docProps/core.xml\"/>\r\n </Relationships>\r\n`;\r\n\r\nexport {relsXML};\r\n","import namespaces from '../namespaces';\r\n\r\nconst generateNumberingXMLTemplate = () => `\r\n <?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\r\n\r\n <w:numbering\r\n xmlns:w=\"${namespaces.w}\"\r\n xmlns:ve=\"${namespaces.ve}\"\r\n xmlns:o=\"${namespaces.o}\"\r\n xmlns:r=\"${namespaces.r}\"\r\n xmlns:v=\"${namespaces.v}\"\r\n xmlns:wp=\"${namespaces.wp}\"\r\n xmlns:w10=\"${namespaces.w10}\"\r\n xmlns:wne=\"${namespaces.wne}\">\r\n </w:numbering>\r\n `;\r\n\r\nexport {generateNumberingXMLTemplate};\r\n","import { defaultFont, defaultFontSize } from '../constants';\r\nimport namespaces from '../namespaces';\r\n\r\nconst generateStylesXML = (\r\n font = defaultFont,\r\n fontSize = defaultFontSize,\r\n complexScriptFontSize = defaultFontSize\r\n) => `\r\n <?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\r\n\r\n <w:styles xmlns:w=\"${namespaces.w}\" xmlns:r=\"${namespaces.r}\">\r\n\t<w:docDefaults>\r\n\t <w:rPrDefault>\r\n\t\t<w:rPr>\r\n\t\t <w:rFonts w:ascii=\"${font}\" w:eastAsiaTheme=\"minorHAnsi\" w:hAnsiTheme=\"minorHAnsi\" w:cstheme=\"minorBidi\" />\r\n\t\t <w:sz w:val=\"${fontSize}\" />\r\n\t\t <w:szCs w:val=\"${complexScriptFontSize}\" />\r\n\t\t <w:lang w:val=\"en-US\" w:eastAsia=\"en-US\" w:bidi=\"ar-SA\" />\r\n\t\t</w:rPr>\r\n\t </w:rPrDefault>\r\n\t <w:pPrDefault>\r\n\t\t<w:pPr>\r\n\t\t <w:spacing w:after=\"120\" w:line=\"240\" w:lineRule=\"atLeast\" />\r\n\t\t</w:pPr>\r\n\t </w:pPrDefault>\r\n\t</w:docDefaults>\r\n\t<w:style w:type=\"character\" w:styleId=\"Hyperlink\">\r\n\t <w:name w:val=\"Hyperlink\" />\r\n\t <w:rPr>\r\n\t\t<w:color w:val=\"0000FF\" />\r\n\t\t<w:u w:val=\"single\" />\r\n\t </w:rPr>\r\n\t</w:style>\r\n\t<w:style w:type=\"paragraph\" w:styleId=\"Heading1\">\r\n\t <w:name w:val=\"heading 1\" />\r\n\t <w:basedOn w:val=\"Normal\" />\r\n\t <w:next w:val=\"Normal\" />\r\n\t <w:uiPriority w:val=\"9\" />\r\n\t <w:qFormat />\r\n\t <w:pPr>\r\n\t\t<w:keepNext />\r\n\t\t<w:keepLines />\r\n\t\t<w:spacing w:before=\"480\" />\r\n\t\t<w:outlineLvl w:val=\"0\" />\r\n\t </w:pPr>\r\n\t <w:rPr>\r\n\t\t<w:b />\r\n\t\t<w:sz w:val=\"48\" />\r\n\t\t<w:szCs w:val=\"48\" />\r\n\t </w:rPr>\r\n\t</w:style>\r\n\t<w:style w:type=\"paragraph\" w:styleId=\"Heading2\">\r\n\t <w:name w:val=\"heading 2\" />\r\n\t <w:basedOn w:val=\"Normal\" />\r\n\t <w:next w:val=\"Normal\" />\r\n\t <w:uiPriority w:val=\"9\" />\r\n\t <w:unhideWhenUsed />\r\n\t <w:qFormat />\r\n\t <w:pPr>\r\n\t\t<w:keepNext />\r\n\t\t<w:keepLines />\r\n\t\t<w:spacing w:before=\"360\" w:after=\"80\" />\r\n\t\t<w:outlineLvl w:val=\"1\" />\r\n\t </w:pPr>\r\n\t <w:rPr>\r\n\t\t<w:b />\r\n\t\t<w:sz w:val=\"36\" />\r\n\t\t<w:szCs w:val=\"36\" />\r\n\t </w:rPr>\r\n\t</w:style>\r\n\t<w:style w:type=\"paragraph\" w:styleId=\"Heading3\">\r\n\t <w:name w:val=\"heading 3\" />\r\n\t <w:basedOn w:val=\"Normal\" />\r\n\t <w:next w:val=\"Normal\" />\r\n\t <w:uiPriority w:val=\"9\" />\r\n\t <w:semiHidden />\r\n\t <w:unhideWhenUsed />\r\n\t <w:qFormat />\r\n\t <w:pPr>\r\n\t\t<w:keepNext />\r\n\t\t<w:keepLines />\r\n\t\t<w:spacing w:before=\"280\" w:after=\"80\" />\r\n\t\t<w:outlineLvl w:val=\"2\" />\r\n\t </w:pPr>\r\n\t <w:rPr>\r\n\t\t<w:b />\r\n\t\t<w:sz w:val=\"28\" />\r\n\t\t<w:szCs w:val=\"28\" />\r\n\t </w:rPr>\r\n\t</w:style>\r\n\t<w:style w:type=\"paragraph\" w:styleId=\"Heading4\">\r\n\t <w:name w:val=\"heading 4\" />\r\n\t <w:basedOn w:val=\"Normal\" />\r\n\t <w:next w:val=\"Normal\" />\r\n\t <w:uiPriority w:val=\"9\" />\r\n\t <w:semiHidden />\r\n\t <w:unhideWhenUsed />\r\n\t <w:qFormat />\r\n\t <w:pPr>\r\n\t\t<w:keepNext />\r\n\t\t<w:keepLines />\r\n\t\t<w:spacing w:before=\"240\" w:after=\"40\" />\r\n\t\t<w:outlineLvl w:val=\"3\" />\r\n\t </w:pPr>\r\n\t <w:rPr>\r\n\t\t<w:b />\r\n\t\t<w:sz w:val=\"24\" />\r\n\t\t<w:szCs w:val=\"24\" />\r\n\t </w:rPr>\r\n\t</w:style>\r\n\t<w:style w:type=\"paragraph\" w:styleId=\"Heading5\">\r\n\t <w:name w:val=\"heading 5\" />\r\n\t <w:basedOn w:val=\"Normal\" />\r\n\t <w:next w:val=\"Normal\" />\r\n\t <w:uiPriority w:val=\"9\" />\r\n\t <w:semiHidden />\r\n\t <w:unhideWhenUsed />\r\n\t <w:qFormat />\r\n\t <w:pPr>\r\n\t\t<w:keepNext />\r\n\t\t<w:keepLines />\r\n\t\t<w:spacing w:before=\"220\" w:after=\"40\" />\r\n\t\t<w:outlineLvl w:val=\"4\" />\r\n\t </w:pPr>\r\n\t <w:rPr>\r\n\t\t<w:b />\r\n\t </w:rPr>\r\n\t</w:style>\r\n\t<w:style w:type=\"paragraph\" w:styleId=\"Heading6\">\r\n\t <w:name w:val=\"heading 6\" />\r\n\t <w:basedOn w:val=\"Normal\" />\r\n\t <w:next w:val=\"Normal\" />\r\n\t <w:uiPriority w:val=\"9\" />\r\n\t <w:semiHidden />\r\n\t <w:unhideWhenUsed />\r\n\t <w:qFormat />\r\n\t <w:pPr>\r\n\t\t<w:keepNext />\r\n\t\t<w:keepLines />\r\n\t\t<w:spacing w:before=\"200\" w:after=\"40\" />\r\n\t\t<w:outlineLvl w:val=\"5\" />\r\n\t </w:pPr>\r\n\t <w:rPr>\r\n\t\t<w:b />\r\n\t\t<w:sz w:val=\"20\" />\r\n\t\t<w:szCs w:val=\"20\" />\r\n\t </w:rPr>\r\n\t</w:style>\r\n </w:styles>\r\n `;\r\n\r\nexport {generateStylesXML};\r\n","import namespaces from '../namespaces';\r\n\r\nconst fontTableXML = `\r\n <?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\r\n\r\n <w:fonts\r\n xmlns:r=\"${namespaces.r}\"\r\n xmlns:w=\"${namespaces.w}\"\r\n >\r\n <w:font w:name=\"Symbol\">\r\n <w:panose1 w:val=\"05050102010706020507\"/>\r\n <w:charset w:val=\"02\"/>\r\n <w:family w:val=\"decorative\"/>\r\n <w:pitch w:val=\"variable\"/>\r\n <w:sig w:usb0=\"00000000\" w:usb1=\"10000000\" w:usb2=\"00000000\" w:usb3=\"00000000\" w:csb0=\"80000000\" w:csb1=\"00000000\"/>\r\n </w:font>\r\n <w:font w:name=\"Calibri\">\r\n <w:panose1 w:val=\"020F0502020204030204\"/>\r\n <w:charset w:val=\"00\"/>\r\n <w:family w:val=\"swiss\"/>\r\n <w:pitch w:val=\"variable\"/>\r\n <w:sig w:usb0=\"E4002EFF\" w:usb1=\"C000247B\" w:usb2=\"00000009\" w:usb3=\"00000000\" w:csb0=\"000001FF\" w:csb1=\"00000000\"/>\r\n </w:font>\r\n <w:font w:name=\"Times New Roman\">\r\n <w:panose1 w:val=\"02020603050405020304\"/>\r\n <w:charset w:val=\"00\"/>\r\n <w:family w:val=\"roman\"/>\r\n <w:pitch w:val=\"variable\"/>\r\n <w:sig w:usb0=\"E0002EFF\" w:usb1=\"C000785B\" w:usb2=\"00000009\" w:usb3=\"00000000\" w:csb0=\"000001FF\" w:csb1=\"00000000\"/>\r\n </w:font>\r\n <w:font w:name=\"Calibri Light\">\r\n <w:panose1 w:val=\"020F0302020204030204\"/>\r\n <w:charset w:val=\"00\"/>\r\n <w:family w:val=\"swiss\"/>\r\n <w:pitch w:val=\"variable\"/>\r\n <w:sig w:usb0=\"E4002EFF\" w:usb1=\"C000247B\" w:usb2=\"00000009\" w:usb3=\"00000000\" w:csb0=\"000001FF\" w:csb1=\"00000000\"/>\r\n </w:font>\r\n </w:fonts>\r\n`;\r\n\r\nexport {fontTableXML};\r\n","import { defaultFont } from '../constants';\r\n\r\nconst generateThemeXML = (font = defaultFont) => `\r\n <?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\r\n\r\n <a:theme xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" name=\"Office Theme\">\r\n <a:themeElements>\r\n <a:clrScheme name=\"Office\">\r\n <a:dk1>\r\n <a:sysClr val=\"windowText\" lastClr=\"000000\"/>\r\n </a:dk1>\r\n <a:lt1>\r\n <a:sysClr val=\"window\" lastClr=\"FFFFFF\"/>\r\n </a:lt1>\r\n <a:dk2>\r\n <a:srgbClr val=\"44546A\"/>\r\n </a:dk2>\r\n <a:lt2>\r\n <a:srgbClr val=\"E7E6E6\"/>\r\n </a:lt2>\r\n <a:accent1>\r\n <a:srgbClr val=\"4472C4\"/>\r\n </a:accent1>\r\n <a:accent2>\r\n <a:srgbClr val=\"ED7D31\"/>\r\n </a:accent2>\r\n <a:accent3>\r\n <a:srgbClr val=\"A5A5A5\"/>\r\n </a:accent3>\r\n <a:accent4>\r\n <a:srgbClr val=\"FFC000\"/>\r\n </a:accent4>\r\n <a:accent5>\r\n <a:srgbClr val=\"5B9BD5\"/>\r\n </a:accent5>\r\n <a:accent6>\r\n <a:srgbClr val=\"70AD47\"/>\r\n </a:accent6>\r\n <a:hlink>\r\n <a:srgbClr val=\"0563C1\"/>\r\n </a:hlink>\r\n <a:folHlink>\r\n <a:srgbClr val=\"954F72\"/>\r\n </a:folHlink>\r\n </a:clrScheme>\r\n <a:fontScheme name=\"Office\">\r\n <a:majorFont>\r\n <a:latin typeface=\"${font}\"/>\r\n <a:ea typeface=\"${font}\"/>\r\n <a:cs typeface=\"\"/>\r\n </a:majorFont>\r\n <a:minorFont>\r\n <a:latin typeface=\"${font}\"/>\r\n <a:ea typeface=\"${font}\"/>\r\n <a:cs typeface=\"\"/>\r\n </a:minorFont>\r\n </a:fontScheme>\r\n <a:fmtScheme name=\"Office\">\r\n <a:fillStyleLst>\r\n <a:solidFill>\r\n <a:schemeClr val=\"phClr\"/>\r\n </a:solidFill>\r\n <a:gradFill rotWithShape=\"1\">\r\n <a:gsLst>\r\n <a:gs pos=\"0\">\r\n <a:schemeClr val=\"phClr\">\r\n <a:lumMod val=\"110000\"/>\r\n <a:satMod val=\"105000\"/>\r\n <a:tint val=\"67000\"/>\r\n </a:schemeClr>\r\n </a:gs>\r\n <a:gs pos=\"50000\">\r\n <a:schemeClr val=\"phClr\">\r\n <a:lumMod val=\"105000\"/>\r\n <a:satMod val=\"103000\"/>\r\n <a:tint val=\"73000\"/>\r\n </a:schemeClr>\r\n </a:gs>\r\n <a:gs pos=\"100000\">\r\n <a:schemeClr val=\"phClr\">\r\n <a:lumMod val=\"105000\"/>\r\n <a:satMod val=\"109000\"/>\r\n <a:tint val=\"81000\"/>\r\n </a:schemeClr>\r\n </a:gs>\r\n </a:gsLst>\r\n <a:lin ang=\"5400000\" scaled=\"0\"/>\r\n </a:gradFill>\r\n <a:gradFill rotWithShape=\"1\">\r\n <a:gsLst>\r\n <a:gs pos=\"0\">\r\n <a:schemeClr val=\"phClr\">\r\n <a:satMod val=\"103000\"/>\r\n <a:lumMod val=\"102000\"/>\r\n <a:tint val=\"94000\"/>\r\n </a:schemeClr>\r\n </a:gs>\r\n <a:gs pos=\"50000\">\r\n <a:schemeClr val=\"phClr\">\r\n <a:satMod val=\"110000\"/>\r\n <a:lumMod val=\"100000\"/>\r\n <a:shade val=\"100000\"/>\r\n </a:schemeClr>\r\n </a:gs>\r\n <a:gs pos=\"100000\">\r\n <a:schemeClr val=\"phClr\">\r\n <a:lumMod val=\"99000\"/>\r\n <a:satMod val=\"120000\"/>\r\n <a:shade val=\"78000\"/>\r\n </a:schemeClr>\r\n </a:gs>\r\n </a:gsLst>\r\n <a:lin ang=\"5400000\" scaled=\"0\"/>\r\n </a:gradFill>\r\n </a:fillStyleLst>\r\n <a:lnStyleLst>\r\n <a:ln w=\"6350\" cap=\"flat\" cmpd=\"sng\" algn=\"ctr\">\r\n <a:solidFill>\r\n <a:schemeClr val=\"phClr\"/>\r\n </a:solidFill>\r\n <a:prstDash val=\"solid\"/>\r\n <a:miter lim=\"800000\"/>\r\n </a:ln>\r\n <a:ln w=\"12700\" cap=\"flat\" cmpd=\"sng\" algn=\"ctr\">\r\n <a:solidFill>\r\n <a:schemeClr val=\"phClr\"/>\r\n </a:solidFill>\r\n <a:prstDash val=\"solid\"/>\r\n <a:miter lim=\"800000\"/>\r\n </a:ln>\r\n <a:ln w=\"19050\" cap=\"flat\" cmpd=\"sng\" algn=\"ctr\">\r\n <a:solidFill>\r\n <a:schemeClr val=\"phClr\"/>\r\n </a:solidFill>\r\n <a:prstDash val=\"solid\"/>\r\n <a:miter lim=\"800000\"/>\r\n </a:ln>\r\n </a:lnStyleLst>\r\n <a:effectStyleLst>\r\n <a:effectStyle>\r\n <a:effectLst/>\r\n </a:effectStyle>\r\n <a:effectStyle>\r\n <a:effectLst/>\r\n </a:effectStyle>\r\n <a:effectStyle>\r\n <a:effectLst>\r\n <a:outerShdw blurRad=\"57150\" dist=\"19050\" dir=\"5400000\" algn=\"ctr\" rotWithShape=\"0\">\r\n <a:srgbClr val=\"000000\">\r\n <a:alpha val=\"63000\"/>\r\n </a:srgbClr>\r\n </a:outerShdw>\r\n </a:effectLst>\r\n </a:effectStyle>\r\n </a:effectStyleLst>\r\n <a:bgFillStyleLst>\r\n <a:solidFill>\r\n <a:schemeClr val=\"phClr\"/>\r\n </a:solidFill>\r\n <a:solidFill>\r\n <a:schemeClr val=\"phClr\">\r\n <a:tint val=\"95000\"/>\r\n <a:satMod val=\"170000\"/>\r\n </a:schemeClr>\r\n </a:solidFill>\r\n <a:gradFill rotWithShape=\"1\">\r\n <a:gsLst>\r\n <a:gs pos=\"0\">\r\n <a:schemeClr val=\"phClr\">\r\n <a:tint val=\"93000\"/>\r\n <a:satMod val=\"150000\"/>\r\n <a:shade val=\"98000\"/>\r\n <a:lumMod val=\"102000\"/>\r\n </a:schemeClr>\r\n </a:gs>\r\n <a:gs pos=\"50000\">\r\n <a:schemeClr val=\"phClr\">\r\n <a:tint val=\"98000\"/>\r\n <a:satMod val=\"130000\"/>\r\n <a:shade val=\"90000\"/>\r\n <a:lumMod val=\"103000\"/>\r\n </a:schemeClr>\r\n </a:gs>\r\n <a:gs pos=\"100000\">\r\n <a:schemeClr val=\"phClr\">\r\n <a:shade val=\"63000\"/>\r\n <a:satMod val=\"120000\"/>\r\n </a:schemeClr>\r\n </a:gs>\r\n </a:gsLst>\r\n <a:lin ang=\"5400000\" scaled=\"0\"/>\r\n </a:gradFill>\r\n </a:bgFillStyleLst>\r\n </a:fmtScheme>\r\n </a:themeElements>\r\n </a:theme>\r\n`;\r\n\r\nexport {generateThemeXML};\r\n","import namespaces from '../namespaces';\r\n\r\nconst settingsXML = `\r\n <?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\r\n\r\n <w:settings xmlns:w=\"${namespaces.w}\" xmlns:o=\"${namespaces.o}\" xmlns:r=\"${namespaces.r}\" xmlns:v=\"${namespaces.v}\" xmlns:w10=\"${namespaces.w10}\" xmlns:sl=\"${namespaces.sl}\">\r\n <w:zoom w:percent=\"100\"/>\r\n <w:defaultTabStop w:val=\"720\"/>\r\n <w:decimalSymbol w:val=\".\"/>\r\n <w:listSeparator w:val=\",\"/>\r\n </w:settings>\r\n`;\r\n\r\nexport {settingsXML};\r\n","import namespaces from '../namespaces';\r\n\r\nconst webSettingsXML = `\r\n <?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\r\n\r\n <w:webSettings xmlns:w=\"${namespaces.w}\" xmlns:r=\"${namespaces.r}\">\r\n </w:webSettings>\r\n`;\r\n\r\nexport {webSettingsXML};\r\n","const genericRelsXML = `\r\n <?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\r\n\r\n <Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">\r\n <Relationship Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/aFChunk\" Target=\"/word/afchunk.mht\" Id=\"htmlChunk\" />\r\n <Relationship Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/aFChunk\" Target=\"/word/afchunkheader.mht\" Id=\"htmlChunkHeader\" />\r\n <Relationship Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/aFChunk\" Target=\"/word/afchunkfooter.mht\" Id=\"htmlChunkFooter\" />\r\n </Relationships>\r\n`;\r\n\r\nexport {genericRelsXML};\r\n","import namespaces from \"../namespaces\";\r\n\r\nconst generateDocumentTemplate = (width, height, orientation, margins) => `\r\n <?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\r\n <w:document\r\n xmlns:a=\"${namespaces.a}\"\r\n xmlns:cdr=\"${namespaces.cdr}\"\r\n xmlns:o=\"${namespaces.o}\"\r\n xmlns:pic=\"${namespaces.pic}\"\r\n xmlns:r=\"${namespaces.r}\"\r\n xmlns:v=\"${namespaces.v}\"\r\n xmlns:ve=\"${namespaces.ve}\"\r\n xmlns:vt=\"${namespaces.vt}\"\r\n xmlns:w=\"${namespaces.w}\"\r\n xmlns:w10=\"${namespaces.w10}\"\r\n xmlns:wp=\"${namespaces.wp}\"\r\n xmlns:wne=\"${namespaces.wne}\"\r\n >\r\n <w:body>\r\n\r\n <w:altChunk r:id=\"htmlChunk\" />\r\n <w:sectPr>\r\n <w:pgSz w:w=\"${width}\" w:h=\"${height}\" w:orient=\"${orientation}\" />\r\n <w:pgMar w:top=\"${margins.top}\"\r\n w:right=\"${margins.right}\"\r\n w:bottom=\"${margins.bottom}\"\r\n w:left=\"${margins.left}\"\r\n w:header=\"${margins.header}\"\r\n w:footer=\"${margins.footer}\"\r\n w:gutter=\"${margins.gutter}\"/>\r\n </w:sectPr>\r\n </w:body>\r\n </w:document>\r\n `;\r\n\r\nconst generateDocumentTemplateHeader = `\r\n<w:hdr\r\nxmlns:a=\"${namespaces.a}\"\r\nxmlns:cdr=\"${namespaces.cdr}\"\r\nxmlns:o=\"${namespaces.o}\"\r\nxmlns:pic=\"${namespaces.pic}\"\r\nxmlns:r=\"${namespaces.r}\"\r\nxmlns:v=\"${namespaces.v}\"\r\nxmlns:ve=\"${namespaces.ve}\"\r\nxmlns:vt=\"${namespaces.vt}\"\r\nxmlns:w=\"${namespaces.w}\"\r\nxmlns:w10=\"${namespaces.w10}\"\r\nxmlns:wp=\"${namespaces.wp}\"\r\nxmlns:wne=\"${namespaces.wne}\"\r\n>\r\n<w:altChunk r:id=\"htmlChunkHeader\" />\r\n</w:hdr>\r\n `;\r\n\r\nconst generateDocumentTemplateFooter = `\r\n <w:ftr\r\n xmlns:a=\"${namespaces.a}\"\r\n xmlns:cdr=\"${namespaces.cdr}\"\r\n xmlns:o=\"${namespaces.o}\"\r\n xmlns:pic=\"${namespaces.pic}\"\r\n xmlns:r=\"${namespaces.r}\"\r\n xmlns:v=\"${namespaces.v}\"\r\n xmlns:ve=\"${namespaces.ve}\"\r\n xmlns:vt=\"${namespaces.vt}\"\r\n xmlns:w=\"${namespaces.w}\"\r\n xmlns:w10=\"${namespaces.w10}\"\r\n xmlns:wp=\"${namespaces.wp}\"\r\n >\r\n <w:altChunk r:id=\"htmlChunkFooter\" />\r\n\t<w:p w:rsidR=\"0014021C\" w:rsidRDefault=\"0014021C\" w:rsidP=\"0014021C\">\r\n\t\t\t<w:pPr>\r\n\t\t\t\t<w:pStyle w:val=\"Footer\"/>\r\n\t\t\t\t<w:jc w:val=\"center\"/>\r\n\t\t\t</w:pPr>\r\n <w:fldSimple xmlns:ns2=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\" ns2:instr=\"PAGE\">\r\n <w:r/>\r\n </w:fldSimple>\r\n\t\t</w:p>\r\n\t</w:ftr>\r\n `;\r\n\r\n const generateDocumentTemplateFooterWithoutPaging = `\r\n <w:ftr\r\n xmlns:a=\"${namespaces.a}\"\r\n xmlns:cdr=\"${namespaces.cdr}\"\r\n xmlns:o=\"${namespaces.o}\"\r\n xmlns:pic=\"${namespaces.pic}\"\r\n xmlns:r=\"${namespaces.r}\"\r\n xmlns:v=\"${namespaces.v}\"\r\n xmlns:ve=\"${namespaces.ve}\"\r\n xmlns:vt=\"${namespaces.vt}\"\r\n xmlns:w=\"${namespaces.w}\"\r\n xmlns:w10=\"${namespaces.w10}\"\r\n xmlns:wp=\"${namespaces.wp}\"\r\n >\r\n <w:altChunk r:id=\"htmlChunkFooter\" />\r\n\t</w:ftr>\r\n `;\r\n\r\nexport {\r\n generateDocumentTemplate,\r\n generateDocumentTemplateHeader,\r\n generateDocumentTemplateFooter,\r\n generateDocumentTemplateFooterWithoutPaging\r\n};\r\n\r\n{/* <w:altChunk r:id=\"htmlChunkFooter\" /> */}\r\n\r\n{\r\n /* <w:altChunk r:id=\"htmlChunkFooter\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" /> */\r\n}\r\n\r\n{\r\n /* <w:ftr xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\">\r\n<fldSimple xmlns:ns2=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\" ns2:instr=\"PAGE\">\r\n</fldSimple>\r\n<w:altChunk r:id=\"htmlChunkFooter\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" />\r\n </w:ftr> */\r\n}\r\n","/* eslint-disable no-param-reassign */\r\n\r\nexport const rgbRegex = /rgb\\((\\d+),\\s*([\\d.]+),\\s*([\\d.]+)\\)/i;\r\nexport const hslRegex = /hsl\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%\\)/i;\r\nexport const hexRegex = /#([0-9A-F]{6})/i;\r\nexport const hex3Regex = /#([0-9A-F])([0-9A-F])([0-9A-F])/i;\r\n\r\n// eslint-disable-next-line import/prefer-default-export\r\nexport const rgbToHex = (red, green, blue) => {\r\n const hexColorCode = [red, green, blue]\r\n .map((x) => {\r\n // eslint-disable-next-line radix, no-param-reassign\r\n x = parseInt(x).toString(16);\r\n return x.length === 1 ? `0${x}` : x;\r\n })\r\n .join('');\r\n\r\n return hexColorCode;\r\n};\r\n\r\nexport const hslToHex = (hue, saturation, luminosity) => {\r\n hue /= 360;\r\n saturation /= 100;\r\n luminosity /= 100;\r\n // eslint-disable-next-line one-var\r\n let red, green, blue;\r\n if (saturation === 0) {\r\n // eslint-disable-next-line no-multi-assign\r\n red = green = blue = luminosity; // achromatic\r\n } else {\r\n const hue2rgb = (p, q, t) => {\r\n if (t < 0) t += 1;\r\n if (t > 1) t -= 1;\r\n if (t < 1 / 6) return p + (q - p) * 6 * t;\r\n if (t < 1 / 2) return q;\r\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\r\n return p;\r\n };\r\n const q =\r\n luminosity < 0.5\r\n ? luminosity * (1 + saturation)\r\n : luminosity + saturation - luminosity * saturation;\r\n const p = 2 * luminosity - q;\r\n red = hue2rgb(p, q, hue + 1 / 3);\r\n green = hue2rgb(p, q, hue);\r\n blue = hue2rgb(p, q, hue - 1 / 3);\r\n }\r\n return [red, green, blue]\r\n .map((x) => {\r\n const hex = Math.round(x * 255).toString(16);\r\n return hex.length === 1 ? `0${hex}` : hex;\r\n })\r\n .join('');\r\n};\r\n\r\nexport const hex3ToHex = (red, green, blue) => {\r\n const hexColorCode = [red, green, blue].map((x) => `${x}${x}`).join('');\r\n\r\n return hexColorCode;\r\n};\r\n","export const pixelRegex = /([\\d.]+)px/i;\r\nexport const percentageRegex = /([\\d.]+)%/i;\r\nexport const pointRegex = /([\\d.]+)pt/i;\r\nexport const cmRegex = /([\\d.]+)cm/i;\r\nexport const inchRegex = /([\\d.]+)in/i;\r\n\r\nexport const pixelToEMU = (pixelValue) => Math.round(pixelValue * 9525);\r\n\r\nexport const EMUToPixel = (EMUValue) => Math.round(EMUValue / 9525);\r\n\r\nexport const TWIPToEMU = (TWIPValue) => Math.round(TWIPValue * 635);\r\n\r\nexport const EMUToTWIP = (EMUValue) => Math.round(EMUValue / 635);\r\n\r\nexport const pointToTWIP = (pointValue) => Math.round(pointValue * 20);\r\n\r\nexport const TWIPToPoint = (TWIPValue) => Math.round(TWIPValue / 20);\r\n\r\nexport const pointToHIP = (pointValue) => Math.round(pointValue * 2);\r\n\r\nexport const HIPToPoint = (HIPValue) => Math.round(HIPValue / 2);\r\n\r\nexport const HIPToTWIP = (HIPValue) => Math.round(HIPValue * 10);\r\n\r\nexport const TWIPToHIP = (TWIPValue) => Math.round(TWIPValue / 10);\r\n\r\nexport const pixelToTWIP = (pixelValue) => EMUToTWIP(pixelToEMU(pixelValue));\r\n\r\nexport const TWIPToPixel = (TWIPValue) => EMUToPixel(TWIPToEMU(TWIPValue));\r\n\r\nexport const pixelToHIP = (pixelValue) => TWIPToHIP(EMUToTWIP(pixelToEMU(pixelValue)));\r\n\r\nexport const HIPToPixel = (HIPValue) => EMUToPixel(TWIPToEMU(HIPToTWIP(HIPValue)));\r\n\r\nexport const inchToPoint = (inchValue) => Math.round(inchValue * 72);\r\n\r\nexport const inchToTWIP = (inchValue) => pointToTWIP(inchToPoint(inchValue));\r\n\r\nexport const cmToInch = (cmValue) => cmValue * 0.3937008;\r\n\r\nexport const cmToTWIP = (cmValue) => inchToTWIP(cmToInch(cmValue));\r\n\r\nexport const pixelToPoint = (pixelValue) => HIPToPoint(pixelToHIP(pixelValue));\r\n\r\nexport const pointToPixel = (pointValue) => HIPToPixel(pointToHIP(pointValue));\r\n\r\nexport const EIPToPoint = (EIPValue) => Math.round(EIPValue / 8);\r\n\r\nexport const pointToEIP = (PointValue) => Math.round(PointValue * 8);\r\n\r\nexport const pixelToEIP = (pixelValue) => pointToEIP(pixelToPoint(pixelValue));\r\n\r\nexport const EIPToPixel = (EIPValue) => pointToPixel(EIPToPoint(EIPValue));\r\n","// eslint-disable-next-line import/prefer-default-export\r\nexport const vNodeHasChildren = (vNode) =>\r\n vNode && vNode.children && Array.isArray(vNode.children) && vNode.children.length;\r\n","const isValidUrl = (urlString) => {\r\n const urlRegex = /http(s)?:\\/\\/(\\w+:?\\w*@)?(\\S+)(:\\d+)?((?<=\\.)\\w+)+(\\/([\\w#!:.?+=&%@!\\-/])*)?/gi;\r\n\r\n return Boolean(urlRegex.test(urlString));\r\n};\r\n\r\n// eslint-disable-next-line import/prefer-default-export\r\nexport { isValidUrl };\r\n","/* eslint-disable no-await-in-loop */\r\n/* eslint-disable radix */\r\n/* eslint-disable no-param-reassign */\r\n/* eslint-disable no-case-declarations */\r\n/* eslint-disable no-plusplus */\r\n/* eslint-disable no-else-return */\r\nimport { fragment } from 'xmlbuilder2';\r\nimport isVNode from 'virtual-dom/vnode/is-vnode';\r\nimport isVText from 'virtual-dom/vnode/is-vtext';\r\nimport colorNames from 'color-name';\r\nimport { cloneDeep } from 'lodash';\r\nimport imageToBase64 from 'image-to-base64';\r\nimport mimeTypes from 'mime-types';\r\nimport sizeOf from 'image-size';\r\n\r\nimport namespaces from '../namespaces';\r\nimport {\r\n rgbToHex,\r\n hslToHex,\r\n hslRegex,\r\n rgbRegex,\r\n hexRegex,\r\n hex3Regex,\r\n hex3ToHex,\r\n} from '../utils/color-conversion';\r\nimport {\r\n pixelToEMU,\r\n pixelRegex,\r\n TWIPToEMU,\r\n percentageRegex,\r\n pointRegex,\r\n pointToHIP,\r\n HIPToTWIP,\r\n pointToTWIP,\r\n pixelToHIP,\r\n pixelToTWIP,\r\n pixelToEIP,\r\n pointToEIP,\r\n cmToTWIP,\r\n cmRegex,\r\n inchRegex,\r\n inchToTWIP,\r\n} from '../utils/unit-conversion';\r\n// FIXME: remove the cyclic dependency\r\n// eslint-disable-next-line import/no-cycle\r\nimport { buildImage, buildList } from './render-document-file';\r\nimport {\r\n defaultFont,\r\n hyperlinkType,\r\n paragraphBordersObject,\r\n colorlessColors,\r\n verticalAlignValues,\r\n imageType,\r\n internalRelationship,\r\n} from '../constants';\r\nimport { vNodeHasChildren } from '../utils/vnode';\r\nimport { isValidUrl } from '../utils/url';\r\n\r\n// eslint-disable-next-line consistent-return\r\nconst fixupColorCode = (colorCodeString) => {\r\n if (Object.prototype.hasOwnProperty.call(colorNames, colorCodeString.toLowerCase())) {\r\n const [red, green, blue] = colorNames[colorCodeString.toLowerCase()];\r\n\r\n return rgbToHex(red, green, blue);\r\n } else if (rgbRegex.test(colorCodeString)) {\r\n const matchedParts = colorCodeString.match(rgbRegex);\r\n const red = matchedParts[1];\r\n const green = matchedParts[2];\r\n const blue = matchedParts[3];\r\n\r\n return rgbToHex(red, green, blue);\r\n } else if (hslRegex.test(colorCodeString)) {\r\n const matchedParts = colorCodeString.match(hslRegex);\r\n const hue = matchedParts[1];\r\n const saturation = matchedParts[2];\r\n const luminosity = matchedParts[3];\r\n\r\n return hslToHex(hue, saturation, luminosity);\r\n } else if (hexRegex.test(colorCodeString)) {\r\n const matchedParts = colorCodeString.match(hexRegex);\r\n\r\n return matchedParts[1];\r\n } else if (hex3Regex.test(colorCodeString)) {\r\n const matchedParts = colorCodeString.match(hex3Regex);\r\n const red = matchedParts[1];\r\n const green = matchedParts[2];\r\n const blue = matchedParts[3];\r\n\r\n return hex3ToHex(red, green, blue);\r\n } else {\r\n return '000000';\r\n }\r\n};\r\n\r\nconst buildRunFontFragment = (fontName = defaultFont) =>\r\n fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'rFonts')\r\n .att('@w', 'ascii', fontName)\r\n .att('@w', 'hAnsi', fontName)\r\n .up();\r\n\r\nconst buildRunStyleFragment = (type = 'Hyperlink') =>\r\n fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'rStyle')\r\n .att('@w', 'val', type)\r\n .up();\r\n\r\nconst buildTableRowHeight = (tableRowHeight) =>\r\n fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'trHeight')\r\n .att('@w', 'val', tableRowHeight)\r\n .att('@w', 'hRule', 'atLeast')\r\n .up();\r\n\r\nconst buildVerticalAlignment = (verticalAlignment) => {\r\n if (verticalAlignment.toLowerCase() === 'middle') {\r\n verticalAlignment = 'center';\r\n }\r\n\r\n return fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'vAlign')\r\n .att('@w', 'val', verticalAlignment)\r\n .up();\r\n};\r\n\r\nconst buildVerticalMerge = (verticalMerge = 'continue') =>\r\n fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'vMerge')\r\n .att('@w', 'val', verticalMerge)\r\n .up();\r\n\r\nconst buildColor = (colorCode) =>\r\n fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'color')\r\n .att('@w', 'val', colorCode)\r\n .up();\r\n\r\nconst buildFontSize = (fontSize) =>\r\n fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'sz')\r\n .att('@w', 'val', fontSize)\r\n .up();\r\n\r\nconst buildShading = (colorCode) =>\r\n fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'shd')\r\n .att('@w', 'val', 'clear')\r\n .att('@w', 'fill', colorCode)\r\n .up();\r\n\r\nconst buildHighlight = (color = 'yellow') =>\r\n fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'highlight')\r\n .att('@w', 'val', color)\r\n .up();\r\n\r\nconst buildVertAlign = (type = 'baseline') =>\r\n fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'vertAlign')\r\n .att('@w', 'val', type)\r\n .up();\r\n\r\nconst buildStrike = () =>\r\n fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'strike')\r\n .att('@w', 'val', true)\r\n .up();\r\n\r\nconst buildBold = () =>\r\n fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'b')\r\n .up();\r\n\r\nconst buildItalics = () =>\r\n fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'i')\r\n .up();\r\n\r\nconst buildUnderline = (type = 'single') =>\r\n fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'u')\r\n .att('@w', 'val', type)\r\n .up();\r\n\r\nconst buildLineBreak = (type = 'textWrapping') =>\r\n fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'br')\r\n .att('@w', 'type', type)\r\n .up();\r\n\r\nconst buildBorder = (\r\n borderSide = 'top',\r\n borderSize = 0,\r\n borderSpacing = 0,\r\n borderColor = fixupColorCode('black'),\r\n borderStroke = 'single'\r\n) =>\r\n fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', borderSide)\r\n .att('@w', 'val', borderStroke)\r\n .att('@w', 'sz', borderSize)\r\n .att('@w', 'space', borderSpacing)\r\n .att('@w', 'color', borderColor)\r\n .up();\r\n\r\nconst buildTextElement = (text) =>\r\n fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 't')\r\n .att('@xml', 'space', 'preserve')\r\n .txt(text)\r\n .up();\r\n\r\n// eslint-disable-next-line consistent-return\r\nconst fixupLineHeight = (lineHeight, fontSize) => {\r\n // FIXME: If line height is anything other than a number\r\n // eslint-disable-next-line no-restricted-globals\r\n if (!isNaN(lineHeight)) {\r\n if (fontSize) {\r\n const actualLineHeight = +lineHeight * fontSize;\r\n\r\n return HIPToTWIP(actualLineHeight);\r\n } else {\r\n // 240 TWIP or 12 point is default line height\r\n return +lineHeight * 240;\r\n }\r\n } else {\r\n // 240 TWIP or 12 point is default line height\r\n return 240;\r\n }\r\n};\r\n\r\n// eslint-disable-next-line consistent-return\r\nconst fixupFontSize = (fontSizeString) => {\r\n if (pointRegex.test(fontSizeString)) {\r\n const matchedParts = fontSizeString.match(pointRegex);\r\n // convert point to half point\r\n return pointToHIP(matchedParts[1]);\r\n } else if (pixelRegex.test(fontSizeString)) {\r\n const matchedParts = fontSizeString.match(pixelRegex);\r\n // convert pixels to half point\r\n return pixelToHIP(matchedParts[1]);\r\n }\r\n};\r\n\r\n// eslint-disable-next-line consistent-return\r\nconst fixupRowHeight = (rowHeightString) => {\r\n if (pointRegex.test(rowHeightString)) {\r\n const matchedParts = rowHeightString.match(pointRegex);\r\n // convert point to half point\r\n return pointToTWIP(matchedParts[1]);\r\n } else if (pixelRegex.test(rowHeightString)) {\r\n const matchedParts = rowHeightString.match(pixelRegex);\r\n // convert pixels to half point\r\n return pixelToTWIP(matchedParts[1]);\r\n } else if (cmRegex.test(rowHeightString)) {\r\n const matchedParts = rowHeightString.match(cmRegex);\r\n return cmToTWIP(matchedParts[1]);\r\n } else if (inchRegex.test(rowHeightString)) {\r\n const matchedParts = rowHeightString.match(inchRegex);\r\n return inchToTWIP(matchedParts[1]);\r\n }\r\n};\r\n\r\n// eslint-disable-next-line consistent-return\r\nconst fixupColumnWidth = (columnWidthString) => {\r\n if (pointRegex.test(columnWidthString)) {\r\n const matchedParts = columnWidthString.match(pointRegex);\r\n return pointToTWIP(matchedParts[1]);\r\n } else if (pixelRegex.test(columnWidthString)) {\r\n const matchedParts = columnWidthString.match(pixelRegex);\r\n return pixelToTWIP(matchedParts[1]);\r\n } else if (cmRegex.test(columnWidthString)) {\r\n const matchedParts = columnWidthString.match(cmRegex);\r\n return cmToTWIP(matchedParts[1]);\r\n } else if (inchRegex.test(columnWidthString)) {\r\n const matchedParts = columnWidthString.match(inchRegex);\r\n return inchToTWIP(matchedParts[1]);\r\n }\r\n};\r\n\r\n// eslint-disable-next-line consistent-return\r\nconst fixupMargin = (marginString) => {\r\n if (pointRegex.test(marginString)) {\r\n const matchedParts = marginString.match(pointRegex);\r\n // convert point to half point\r\n return pointToTWIP(matchedParts[1]);\r\n } else if (pixelRegex.test(marginString)) {\r\n const matchedParts = marginString.match(pixelRegex);\r\n // convert pixels to half point\r\n return pixelToTWIP(matchedParts[1]);\r\n }\r\n};\r\n\r\nconst modifiedStyleAttributesBuilder = (vNode, attributes, options) => {\r\n const modifiedAttributes = { ...attributes };\r\n\r\n // styles\r\n if (isVNode(vNode) && vNode.properties && vNode.properties.style) {\r\n if (vNode.properties.style.color && !colorlessColors.includes(vNode.properties.style.color)) {\r\n modifiedAttributes.color = fixupColorCode(vNode.properties.style.color);\r\n }\r\n\r\n if (\r\n vNode.properties.style['background-color'] &&\r\n !colorlessColors.includes(vNode.properties.style['background-color'])\r\n ) {\r\n modifiedAttributes.backgroundColor = fixupColorCode(\r\n vNode.properties.style['background-color']\r\n );\r\n }\r\n\r\n if (\r\n vNode.properties.style['vertical-align'] &&\r\n verticalAlignValues.includes(vNode.properties.style['vertical-align'])\r\n ) {\r\n modifiedAttributes.verticalAlign = vNode.properties.style['vertical-align'];\r\n }\r\n\r\n if (\r\n vNode.properties.style['text-align'] &&\r\n ['left', 'right', 'center', 'justify'].includes(vNode.properties.style['text-align'])\r\n ) {\r\n modifiedAttributes.textAlign = vNode.properties.style['text-align'];\r\n }\r\n\r\n // FIXME: remove bold check when other font weights are handled.\r\n if (vNode.properties.style['font-weight'] && vNode.properties.style['font-weight'] === 'bold') {\r\n modifiedAttributes.strong = vNode.properties.style['font-weight'];\r\n }\r\n if (vNode.properties.style['font-size']) {\r\n modifiedAttributes.fontSize = fixupFontSize(vNode.properties.style['font-size']);\r\n }\r\n if (vNode.properties.style['line-height']) {\r\n modifiedAttributes.lineHeight = fixupLineHeight(\r\n vNode.properties.style['line-height'],\r\n vNode.properties.style['font-size']\r\n ? fixupFontSize(vNode.properties.style['font-size'])\r\n : null\r\n );\r\n }\r\n if (vNode.properties.style['margin-left'] || vNode.properties.style['margin-right']) {\r\n const leftMargin = fixupMargin(vNode.properties.style['margin-left']);\r\n const rightMargin = fixupMargin(vNode.properties.style['margin-right']);\r\n const indentation = {};\r\n if (leftMargin) {\r\n indentation.left = leftMargin;\r\n }\r\n if (rightMargin) {\r\n indentation.right = rightMargin;\r\n }\r\n if (leftMargin || rightMargin) {\r\n modifiedAttributes.indentation = indentation;\r\n }\r\n }\r\n if (vNode.properties.style.display) {\r\n modifiedAttributes.display = vNode.properties.style.display;\r\n }\r\n\r\n if (vNode.properties.style.width) {\r\n modifiedAttributes.width = vNode.properties.style.width;\r\n }\r\n }\r\n\r\n // paragraph only\r\n if (options && options.isParagraph) {\r\n if (isVNode(vNode) && vNode.tagName === 'blockquote') {\r\n modifiedAttributes.indentation = { left: 284 };\r\n modifiedAttributes.textAlign = 'justify';\r\n } else if (isVNode(vNode) && vNode.tagName === 'code') {\r\n modifiedAttributes.highlightColor = 'lightGray';\r\n } else if (isVNode(vNode) && vNode.tagName === 'pre') {\r\n modifiedAttributes.font = 'Courier';\r\n }\r\n }\r\n\r\n return modifiedAttributes;\r\n};\r\n\r\n// html tag to formatting function\r\n// options are passed to the formatting function if needed\r\nconst buildFormatting = (htmlTag, options) => {\r\n switch (htmlTag) {\r\n case 'strong':\r\n case 'b':\r\n return buildBold();\r\n case 'em':\r\n case 'i':\r\n return buildItalics();\r\n case 'ins':\r\n case 'u':\r\n return buildUnderline();\r\n case 'strike':\r\n case 'del':\r\n case 's':\r\n return buildStrike();\r\n case 'sub':\r\n return buildVertAlign('subscript');\r\n case 'sup':\r\n return buildVertAlign('superscript');\r\n case 'mark':\r\n return buildHighlight();\r\n case 'code':\r\n return buildHighlight('lightGray');\r\n case 'highlightColor':\r\n return buildHighlight(options && options.color ? options.color : 'lightGray');\r\n case 'font':\r\n case 'pre':\r\n return buildRunFontFragment('Courier');\r\n case 'color':\r\n return buildColor(options && options.color ? options.color : 'black');\r\n case 'backgroundColor':\r\n return buildShading(options && options.color ? options.color : 'black');\r\n case 'fontSize':\r\n // does this need a unit of measure?\r\n return buildFontSize(options && options.fontSize ? options.fontSize : 10);\r\n case 'hyperlink':\r\n return buildRunStyleFragment('Hyperlink');\r\n }\r\n\r\n return null;\r\n};\r\n\r\nconst buildRunProperties = (attributes) => {\r\n const runPropertiesFragment = fragment({ namespaceAlias: { w: namespaces.w } }).ele('@w', 'rPr');\r\n if (attributes && attributes.constructor === Object) {\r\n Object.keys(attributes).forEach((key) => {\r\n const options = {};\r\n if (key === 'color' || key === 'backgroundColor' || key === 'highlightColor') {\r\n options.color = attributes[key];\r\n }\r\n\r\n if (key === 'fontSize') {\r\n options.fontSize = attributes[key];\r\n }\r\n\r\n const formattingFragment = buildFormatting(key, options);\r\n if (formattingFragment) {\r\n runPropertiesFragment.import(formattingFragment);\r\n }\r\n });\r\n }\r\n runPropertiesFragment.up();\r\n\r\n return runPropertiesFragment;\r\n};\r\n\r\nconst buildRun = async (vNode, attributes, docxDocumentInstance) => {\r\n const runFragment = fragment({ namespaceAlias: { w: namespaces.w } }).ele('@w', 'r');\r\n const runPropertiesFragment = buildRunProperties(cloneDeep(attributes));\r\n\r\n // case where we have recursive spans representing font changes\r\n if (isVNode(vNode) && vNode.tagName === 'span') {\r\n // eslint-disable-next-line no-use-before-define\r\n return buildRunOrRuns(vNode, attributes, docxDocumentInstance);\r\n }\r\n\r\n if (\r\n isVNode(vNode) &&\r\n [\r\n 'strong',\r\n 'b',\r\n 'em',\r\n 'i',\r\n 'u',\r\n 'ins',\r\n 'strike',\r\n 'del',\r\n 's',\r\n 'sub',\r\n 'sup',\r\n 'mark',\r\n 'blockquote',\r\n 'code',\r\n 'pre',\r\n ].includes(vNode.tagName)\r\n ) {\r\n const runFragmentsArray = [];\r\n\r\n let vNodes = [vNode];\r\n // create temp run fragments to split the paragraph into different runs\r\n let tempAttributes = cloneDeep(attributes);\r\n let tempRunFragment = fragment({ namespaceAlias: { w: namespaces.w } }).ele('@w', 'r');\r\n while (vNodes.length) {\r\n const tempVNode = vNodes.shift();\r\n if (isVText(tempVNode)) {\r\n const textFragment = buildTextElement(tempVNode.text);\r\n const tempRunPropertiesFragment = buildRunProperties({ ...attributes, ...tempAttributes });\r\n tempRunFragment.import(tempRunPropertiesFragment);\r\n tempRunFragment.import(textFragment);\r\n runFragmentsArray.push(tempRunFragment);\r\n\r\n // re initialize temp run fragments with new fragment\r\n tempAttributes = cloneDeep(attributes);\r\n tempRunFragment = fragment({ namespaceAlias: { w: namespaces.w } }).ele('@w', 'r');\r\n } else if (isVNode(tempVNode)) {\r\n if (\r\n [\r\n 'strong',\r\n 'b',\r\n 'em',\r\n 'i',\r\n 'u',\r\n 'ins',\r\n 'strike',\r\n 'del',\r\n 's',\r\n 'sub',\r\n 'sup',\r\n 'mark',\r\n 'code',\r\n 'pre',\r\n ].includes(tempVNode.tagName)\r\n ) {\r\n tempAttributes = {};\r\n switch (tempVNode.tagName) {\r\n case 'strong':\r\n case 'b':\r\n tempAttributes.strong = true;\r\n break;\r\n case 'i':\r\n tempAttributes.i = true;\r\n break;\r\n case 'u':\r\n tempAttributes.u = true;\r\n break;\r\n case 'sub':\r\n tempAttributes.sub = true;\r\n break;\r\n case 'sup':\r\n tempAttributes.sup = true;\r\n break;\r\n }\r\n const formattingFragment = buildFormatting(tempVNode);\r\n\r\n if (formattingFragment) {\r\n runPropertiesFragment.import(formattingFragment);\r\n }\r\n // go a layer deeper if there is a span somewhere in the children\r\n } else if (tempVNode.tagName === 'span') {\r\n // eslint-disable-next-line no-use-before-define\r\n const spanFragment = await buildRunOrRuns(\r\n tempVNode,\r\n { ...attributes, ...tempAttributes },\r\n docxDocumentInstance\r\n );\r\n\r\n // if spanFragment is an array, we need to add each fragment to the runFragmentsArray. If the fragment is an array, perform a depth first search on the array to add each fragment to the runFragmentsArray\r\n if (Array.isArray(spanFragment)) {\r\n spanFragment.flat(Infinity);\r\n runFragmentsArray.push(...spanFragment);\r\n } else {\r\n runFragmentsArray.push(spanFragment);\r\n }\r\n\r\n // do not slice and concat children since this is already accounted for in the buildRunOrRuns function\r\n // eslint-disable-next-line no-continue\r\n continue;\r\n }\r\n }\r\n\r\n if (tempVNode.children && tempVNode.children.length) {\r\n if (tempVNode.children.length > 1) {\r\n attributes = { ...attributes, ...tempAttributes };\r\n }\r\n\r\n vNodes = tempVNode.children.slice().concat(vNodes);\r\n }\r\n }\r\n if (runFragmentsArray.length) {\r\n return runFragmentsArray;\r\n }\r\n }\r\n\r\n runFragment.import(runPropertiesFragment);\r\n if (isVText(vNode)) {\r\n const textFragment = buildTextElement(vNode.text);\r\n runFragment.import(textFragment);\r\n } else if (attributes && attributes.type === 'picture') {\r\n let response = null;\r\n\r\n const base64Uri = decodeURIComponent(vNode.properties.src);\r\n if (base64Uri) {\r\n response = docxDocumentInstance.createMediaFile(base64Uri);\r\n }\r\n\r\n if (response) {\r\n docxDocumentInstance.zip\r\n .folder('word')\r\n .folder('media')\r\n .file(response.fileNameWithExtension, Buffer.from(response.fileContent, 'base64'), {\r\n createFolders: false,\r\n });\r\n\r\n const documentRelsId = docxDocumentInstance.createDocumentRelationships(\r\n docxDocumentInstance.relationshipFilename,\r\n imageType,\r\n `media/${response.fileNameWithExtension}`,\r\n internalRelationship\r\n );\r\n\r\n attributes.inlineOrAnchored = true;\r\n attributes.relationshipId = documentRelsId;\r\n attributes.id = response.id;\r\n attributes.fileContent = response.fileContent;\r\n attributes.fileNameWithExtension = response.fileNameWithExtension;\r\n }\r\n\r\n const { type, inlineOrAnchored, ...otherAttributes } = attributes;\r\n // eslint-disable-next-line no-use-before-define\r\n const imageFragment = buildDrawing(inlineOrAnchored, type, otherAttributes);\r\n runFragment.import(imageFragment);\r\n } else if (isVNode(vNode) && vNode.tagName === 'br') {\r\n const lineBreakFragment = buildLineBreak();\r\n runFragment.import(lineBreakFragment);\r\n }\r\n runFragment.up();\r\n\r\n return runFragment;\r\n};\r\n\r\nconst buildRunOrRuns = async (vNode, attributes, docxDocumentInstance) => {\r\n if (isVNode(vNode) && vNode.tagName === 'span') {\r\n let runFragments = [];\r\n\r\n for (let index = 0; index < vNode.children.length; index++) {\r\n const childVNode = vNode.children[index];\r\n const modifiedAttributes = modifiedStyleAttributesBuilder(vNode, attributes);\r\n const tempRunFragments = await buildRun(childVNode, modifiedAttributes, docxDocumentInstance);\r\n runFragments = runFragments.concat(\r\n Array.isArray(tempRunFragments) ? tempRunFragments : [tempRunFragments]\r\n );\r\n }\r\n\r\n return runFragments;\r\n } else {\r\n const tempRunFragments = await buildRun(vNode, attributes, docxDocumentInstance);\r\n return tempRunFragments;\r\n }\r\n};\r\n\r\nconst buildRunOrHyperLink = async (vNode, attributes, docxDocumentInstance) => {\r\n if (isVNode(vNode) && vNode.tagName === 'a') {\r\n const relationshipId = docxDocumentInstance.createDocumentRelationships(\r\n docxDocumentInstance.relationshipFilename,\r\n hyperlinkType,\r\n vNode.properties && vNode.properties.href ? vNode.properties.href : ''\r\n );\r\n const hyperlinkFragment = fragment({ namespaceAlias: { w: namespaces.w, r: namespaces.r } })\r\n .ele('@w', 'hyperlink')\r\n .att('@r', 'id', `rId${relationshipId}`);\r\n\r\n const modifiedAttributes = { ...attributes };\r\n modifiedAttributes.hyperlink = true;\r\n\r\n const runFragments = await buildRunOrRuns(\r\n vNode.children[0],\r\n modifiedAttributes,\r\n docxDocumentInstance\r\n );\r\n if (Array.isArray(runFragments)) {\r\n for (let index = 0; index < runFragments.length; index++) {\r\n const runFragment = runFragments[index];\r\n\r\n hyperlinkFragment.import(runFragment);\r\n }\r\n } else {\r\n hyperlinkFragment.import(runFragments);\r\n }\r\n hyperlinkFragment.up();\r\n\r\n return hyperlinkFragment;\r\n }\r\n\r\n const runFragments = await buildRunOrRuns(vNode, attributes, docxDocumentInstance);\r\n\r\n return runFragments;\r\n};\r\n\r\nconst buildNumberingProperties = (levelId, numberingId) =>\r\n fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'numPr')\r\n .ele('@w', 'ilvl')\r\n .att('@w', 'val', String(levelId))\r\n .up()\r\n .ele('@w', 'numId')\r\n .att('@w', 'val', String(numberingId))\r\n .up()\r\n .up();\r\n\r\nconst buildNumberingInstances = () =>\r\n fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'num')\r\n .ele('@w', 'abstractNumId')\r\n .up()\r\n .up();\r\n\r\nconst buildSpacing = (lineSpacing, beforeSpacing, afterSpacing) => {\r\n const spacingFragment = fragment({ namespaceAlias: { w: namespaces.w } }).ele('@w', 'spacing');\r\n\r\n if (lineSpacing) {\r\n spacingFragment.att('@w', 'line', lineSpacing);\r\n }\r\n if (beforeSpacing) {\r\n spacingFragment.att('@w', 'before', beforeSpacing);\r\n }\r\n if (afterSpacing) {\r\n spacingFragment.att('@w', 'after', afterSpacing);\r\n }\r\n\r\n spacingFragment.att('@w', 'lineRule', 'auto').up();\r\n\r\n return spacingFragment;\r\n};\r\n\r\nconst buildIndentation = ({ left, right }) => {\r\n const indentationFragment = fragment({\r\n namespaceAlias: { w: namespaces.w },\r\n }).ele('@w', 'ind');\r\n\r\n if (left) {\r\n indentationFragment.att('@w', 'left', left);\r\n }\r\n if (right) {\r\n indentationFragment.att('@w', 'right', right);\r\n }\r\n\r\n indentationFragment.up();\r\n\r\n return indentationFragment;\r\n};\r\n\r\nconst buildPStyle = (style = 'Normal') =>\r\n fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'pStyle')\r\n .att('@w', 'val', style)\r\n .up();\r\n\r\nconst buildHorizontalAlignment = (horizontalAlignment) => {\r\n if (horizontalAlignment === 'justify') {\r\n horizontalAlignment = 'both';\r\n }\r\n return fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'jc')\r\n .att('@w', 'val', horizontalAlignment)\r\n .up();\r\n};\r\n\r\nconst buildParagraphBorder = () => {\r\n const paragraphBorderFragment = fragment({ namespaceAlias: { w: namespaces.w } }).ele(\r\n '@w',\r\n 'pBdr'\r\n );\r\n const bordersObject = cloneDeep(paragraphBordersObject);\r\n\r\n Object.keys(bordersObject).forEach((borderName) => {\r\n if (bordersObject[borderName]) {\r\n const { size, spacing, color } = bordersObject[borderName];\r\n\r\n const borderFragment = buildBorder(borderName, size, spacing, color);\r\n paragraphBorderFragment.import(borderFragment);\r\n }\r\n });\r\n\r\n paragraphBorderFragment.up();\r\n\r\n return paragraphBorderFragment;\r\n};\r\n\r\nconst buildParagraphProperties = (attributes) => {\r\n const paragraphPropertiesFragment = fragment({ namespaceAlias: { w: namespaces.w } }).ele(\r\n '@w',\r\n 'pPr'\r\n );\r\n if (attributes && attributes.constructor === Object) {\r\n Object.keys(attributes).forEach((key) => {\r\n switch (key) {\r\n case 'numbering':\r\n const { levelId, numberingId } = attributes[key];\r\n const numberingPropertiesFragment = buildNumberingProperties(levelId, numberingId);\r\n paragraphPropertiesFragment.import(numberingPropertiesFragment);\r\n // eslint-disable-next-line no-param-reassign\r\n delete attributes.numbering;\r\n break;\r\n case 'textAlign':\r\n const horizontalAlignmentFragment = buildHorizontalAlignment(attributes[key]);\r\n paragraphPropertiesFragment.import(horizontalAlignmentFragment);\r\n // eslint-disable-next-line no-param-reassign\r\n delete attributes.textAlign;\r\n break;\r\n case 'backgroundColor':\r\n // Add shading to Paragraph Properties only if display is block\r\n // Essentially if background color needs to be across the row\r\n if (attributes.display === 'block') {\r\n const shadingFragment = buildShading(attributes[key]);\r\n paragraphPropertiesFragment.import(shadingFragment);\r\n // FIXME: Inner padding in case of shaded paragraphs.\r\n const paragraphBorderFragment = buildParagraphBorder();\r\n paragraphPropertiesFragment.import(paragraphBorderFragment);\r\n // eslint-disable-next-line no-param-reassign\r\n delete attributes.backgroundColor;\r\n }\r\n break;\r\n case 'paragraphStyle':\r\n const pStyleFragment = buildPStyle(attributes.paragraphStyle);\r\n paragraphPropertiesFragment.import(pStyleFragment);\r\n delete attributes.paragraphStyle;\r\n break;\r\n case 'indentation':\r\n const indentationFragment = buildIndentation(attributes[key]);\r\n paragraphPropertiesFragment.import(indentationFragment);\r\n // eslint-disable-next-line no-param-reassign\r\n delete attributes.indentation;\r\n break;\r\n }\r\n });\r\n\r\n const spacingFragment = buildSpacing(\r\n attributes.lineHeight,\r\n attributes.beforeSpacing,\r\n attributes.afterSpacing\r\n );\r\n // eslint-disable-next-line no-param-reassign\r\n delete attributes.lineHeight;\r\n // eslint-disable-next-line no-param-reassign\r\n delete attributes.beforeSpacing;\r\n // eslint-disable-next-line no-param-reassign\r\n delete attributes.afterSpacing;\r\n\r\n paragraphPropertiesFragment.import(spacingFragment);\r\n }\r\n paragraphPropertiesFragment.up();\r\n\r\n return paragraphPropertiesFragment;\r\n};\r\n\r\nconst computeImageDimensions = (vNode, attributes) => {\r\n const { maximumWidth, originalWidth, originalHeight } = attributes;\r\n const aspectRatio = originalWidth / originalHeight;\r\n const maximumWidthInEMU = TWIPToEMU(maximumWidth);\r\n let originalWidthInEMU = pixelToEMU(originalWidth);\r\n let originalHeightInEMU = pixelToEMU(originalHeight);\r\n if (originalWidthInEMU > maximumWidthInEMU) {\r\n originalWidthInEMU = maximumWidthInEMU;\r\n originalHeightInEMU = Math.round(originalWidthInEMU / aspectRatio);\r\n }\r\n let modifiedHeight;\r\n let modifiedWidth;\r\n\r\n if (vNode.properties && vNode.properties.style) {\r\n if (vNode.properties.style.width) {\r\n if (vNode.properties.style.width !== 'auto') {\r\n if (pixelRegex.test(vNode.properties.style.width)) {\r\n modifiedWidth = pixelToEMU(vNode.properties.style.width.match(pixelRegex)[1]);\r\n } else if (percentageRegex.test(vNode.properties.style.width)) {\r\n const percentageValue = vNode.properties.style.width.match(percentageRegex)[1];\r\n\r\n modifiedWidth = Math.round((percentageValue / 100) * originalWidthInEMU);\r\n }\r\n } else {\r\n // eslint-disable-next-line no-lonely-if\r\n if (vNode.properties.style.height && vNode.properties.style.height === 'auto') {\r\n modifiedWidth = originalWidthInEMU;\r\n modifiedHeight = originalHeightInEMU;\r\n }\r\n }\r\n }\r\n if (vNode.properties.style.height) {\r\n if (vNode.properties.style.height !== 'auto') {\r\n if (pixelRegex.test(vNode.properties.style.height)) {\r\n modifiedHeight = pixelToEMU(vNode.properties.style.height.match(pixelRegex)[1]);\r\n } else if (percentageRegex.test(vNode.properties.style.height)) {\r\n const percentageValue = vNode.properties.style.width.match(percentageRegex)[1];\r\n\r\n modifiedHeight = Math.round((percentageValue / 100) * originalHeightInEMU);\r\n if (!modifiedWidth) {\r\n modifiedWidth = Math.round(modifiedHeight * aspectRatio);\r\n }\r\n }\r\n } else {\r\n // eslint-disable-next-line no-lonely-if\r\n if (modifiedWidth) {\r\n if (!modifiedHeight) {\r\n modifiedHeight = Math.round(modifiedWidth / aspectRatio);\r\n }\r\n } else {\r\n modifiedHeight = originalHeightInEMU;\r\n modifiedWidth = originalWidthInEMU;\r\n }\r\n }\r\n }\r\n if (modifiedWidth && !modifiedHeight) {\r\n modifiedHeight = Math.round(modifiedWidth / aspectRatio);\r\n } else if (modifiedHeight && !modifiedWidth) {\r\n modifiedWidth = Math.round(modifiedHeight * aspectRatio);\r\n }\r\n } else {\r\n modifiedWidth = originalWidthInEMU;\r\n modifiedHeight = originalHeightInEMU;\r\n }\r\n\r\n // eslint-disable-next-line no-param-reassign\r\n attributes.width = modifiedWidth;\r\n // eslint-disable-next-line no-param-reassign\r\n attributes.height = modifiedHeight;\r\n};\r\n\r\nconst buildParagraph = async (vNode, attributes, docxDocumentInstance) => {\r\n const paragraphFragment = fragment({ namespaceAlias: { w: namespaces.w } }).ele('@w', 'p');\r\n const modifiedAttributes = modifiedStyleAttributesBuilder(vNode, attributes, {\r\n isParagraph: true,\r\n });\r\n const paragraphPropertiesFragment = buildParagraphProperties(modifiedAttributes);\r\n paragraphFragment.import(paragraphPropertiesFragment);\r\n if (isVNode(vNode) && vNodeHasChildren(vNode)) {\r\n if (\r\n [\r\n 'span',\r\n 'strong',\r\n 'b',\r\n 'em',\r\n 'i',\r\n 'u',\r\n 'ins',\r\n 'strike',\r\n 'del',\r\n 's',\r\n 'sub',\r\n 'sup',\r\n 'mark',\r\n 'a',\r\n 'code',\r\n 'pre',\r\n ].includes(vNode.tagName)\r\n ) {\r\n const runOrHyperlinkFragments = await buildRunOrHyperLink(\r\n vNode,\r\n modifiedAttributes,\r\n docxDocumentInstance\r\n );\r\n if (Array.isArray(runOrHyperlinkFragments)) {\r\n for (\r\n let iteratorIndex = 0;\r\n iteratorIndex < runOrHyperlinkFragments.length;\r\n iteratorIndex++\r\n ) {\r\n const runOrHyperlinkFragment = runOrHyperlinkFragments[iteratorIndex];\r\n\r\n paragraphFragment.import(runOrHyperlinkFragment);\r\n }\r\n } else {\r\n paragraphFragment.import(runOrHyperlinkFragments);\r\n }\r\n } else if (vNode.tagName === 'blockquote') {\r\n const runFragmentOrFragments = await buildRun(vNode, attributes);\r\n if (Array.isArray(runFragmentOrFragments)) {\r\n for (let index = 0; index < runFragmentOrFragments.length; index++) {\r\n paragraphFragment.import(runFragmentOrFragments[index]);\r\n }\r\n } else {\r\n paragraphFragment.import(runFragmentOrFragments);\r\n }\r\n } else {\r\n for (let index = 0; index < vNode.children.length; index++) {\r\n const childVNode = vNode.children[index];\r\n if (childVNode.tagName === 'img') {\r\n let base64String;\r\n const imageSource = childVNode.properties.src;\r\n if (isValidUrl(imageSource)) {\r\n base64String = await imageToBase64(imageSource).catch((error) => {\r\n // eslint-disable-next-line no-console\r\n console.warning(`skipping image download and conversion due to ${error}`);\r\n });\r\n\r\n if (base64String && mimeTypes.lookup(imageSource)) {\r\n childVNode.properties.src = `data:${mimeTypes.lookup(\r\n imageSource\r\n )};base64, ${base64String}`;\r\n } else {\r\n break;\r\n }\r\n } else {\r\n // eslint-disable-next-line no-useless-escape, prefer-destructuring\r\n base64String = imageSource.match(/^data:([A-Za-z-+\\/]+);base64,(.+)$/)[2];\r\n }\r\n const imageBuffer = Buffer.from(decodeURIComponent(base64String), 'base64');\r\n const imageProperties = sizeOf(imageBuffer);\r\n\r\n modifiedAttributes.maximumWidth =\r\n modifiedAttributes.maximumWidth || docxDocumentInstance.availableDocumentSpace;\r\n modifiedAttributes.originalWidth = imageProperties.width;\r\n modifiedAttributes.originalHeight = imageProperties.height;\r\n\r\n computeImageDimensions(childVNode, modifiedAttributes);\r\n }\r\n const runOrHyperlinkFragments = await buildRunOrHyperLink(\r\n childVNode,\r\n isVNode(childVNode) && childVNode.tagName === 'img'\r\n ? { ...modifiedAttributes, type: 'picture' }\r\n : modifiedAttributes,\r\n docxDocumentInstance\r\n );\r\n if (Array.isArray(runOrHyperlinkFragments)) {\r\n for (\r\n let iteratorIndex = 0;\r\n iteratorIndex < runOrHyperlinkFragments.length;\r\n iteratorIndex++\r\n ) {\r\n const runOrHyperlinkFragment = runOrHyperlinkFragments[iteratorIndex];\r\n\r\n paragraphFragment.import(runOrHyperlinkFragment);\r\n }\r\n } else {\r\n paragraphFragment.import(runOrHyperlinkFragments);\r\n }\r\n }\r\n }\r\n } else {\r\n // In case paragraphs has to be rendered where vText is present. Eg. table-cell\r\n // Or in case the vNode is something like img\r\n if (isVNode(vNode) && vNode.tagName === 'img') {\r\n const imageSource = vNode.properties.src;\r\n let base64String = imageSource;\r\n if (isValidUrl(imageSource)) {\r\n base64String = await imageToBase64(imageSource).catch((error) => {\r\n // eslint-disable-next-line no-console\r\n console.warning(`skipping image download and conversion due to ${error}`);\r\n });\r\n\r\n if (base64String && mimeTypes.lookup(imageSource)) {\r\n vNode.properties.src = `data:${mimeTypes.lookup(imageSource)};base64, ${base64String}`;\r\n } else {\r\n paragraphFragment.up();\r\n\r\n return paragraphFragment;\r\n }\r\n } else {\r\n // eslint-disable-next-line no-useless-escape, prefer-destructuring\r\n base64String = base64String.match(/^data:([A-Za-z-+\\/]+);base64,(.+)$/)[2];\r\n }\r\n\r\n const imageBuffer = Buffer.from(decodeURIComponent(base64String), 'base64');\r\n const imageProperties = sizeOf(imageBuffer);\r\n\r\n modifiedAttributes.maximumWidth =\r\n modifiedAttributes.maximumWidth || docxDocumentInstance.availableDocumentSpace;\r\n modifiedAttributes.originalWidth = imageProperties.width;\r\n modifiedAttributes.originalHeight = imageProperties.height;\r\n\r\n computeImageDimensions(vNode, modifiedAttributes);\r\n }\r\n const runFragments = await buildRunOrRuns(vNode, modifiedAttributes, docxDocumentInstance);\r\n if (Array.isArray(runFragments)) {\r\n for (let index = 0; index < runFragments.length; index++) {\r\n const runFragment = runFragments[index];\r\n\r\n paragraphFragment.import(runFragment);\r\n }\r\n } else {\r\n paragraphFragment.import(runFragments);\r\n }\r\n }\r\n paragraphFragment.up();\r\n\r\n return paragraphFragment;\r\n};\r\n\r\nconst buildGridSpanFragment = (spanValue) =>\r\n fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'gridSpan')\r\n .att('@w', 'val', spanValue)\r\n .up();\r\n\r\nconst buildTableCellSpacing = (cellSpacing = 0) =>\r\n fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'tblCellSpacing')\r\n .att('@w', 'w', cellSpacing)\r\n .att('@w', 'type', 'dxa')\r\n .up();\r\n\r\nconst buildTableCellBorders = (tableCellBorder) => {\r\n const tableCellBordersFragment = fragment({ namespaceAlias: { w: namespaces.w } }).ele(\r\n '@w',\r\n 'tcBorders'\r\n );\r\n\r\n const { color, stroke, ...borders } = tableCellBorder;\r\n Object.keys(borders).forEach((border) => {\r\n if (tableCellBorder[border]) {\r\n const borderFragment = buildBorder(border, tableCellBorder[border], 0, color, stroke);\r\n tableCellBordersFragment.import(borderFragment);\r\n }\r\n });\r\n\r\n tableCellBordersFragment.up();\r\n\r\n return tableCellBordersFragment;\r\n};\r\n\r\nconst buildTableCellWidth = (tableCellWidth) =>\r\n fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'tcW')\r\n .att('@w', 'w', fixupColumnWidth(tableCellWidth))\r\n .att('@w', 'type', 'dxa')\r\n .up();\r\n\r\nconst buildTableCellProperties = (attributes) => {\r\n const tableCellPropertiesFragment = fragment({ namespaceAlias: { w: namespaces.w } }).ele(\r\n '@w',\r\n 'tcPr'\r\n );\r\n if (attributes && attributes.constructor === Object) {\r\n Object.keys(attributes).forEach((key) => {\r\n switch (key) {\r\n case 'backgroundColor':\r\n const shadingFragment = buildShading(attributes[key]);\r\n tableCellPropertiesFragment.import(shadingFragment);\r\n // eslint-disable-next-line no-param-reassign\r\n delete attributes.backgroundColor;\r\n break;\r\n case 'verticalAlign':\r\n const verticalAlignmentFragment = buildVerticalAlignment(attributes[key]);\r\n tableCellPropertiesFragment.import(verticalAlignmentFragment);\r\n // eslint-disable-next-line no-param-reassign\r\n delete attributes.verticalAlign;\r\n break;\r\n case 'colSpan':\r\n const gridSpanFragment = buildGridSpanFragment(attributes[key]);\r\n tableCellPropertiesFragment.import(gridSpanFragment);\r\n // eslint-disable-next-line no-param-reassign\r\n delete attributes.colSpan;\r\n break;\r\n case 'tableCellBorder':\r\n const tableCellBorderFragment = buildTableCellBorders(attributes[key]);\r\n tableCellPropertiesFragment.import(tableCellBorderFragment);\r\n // eslint-disable-next-line no-param-reassign\r\n delete attributes.tableCellBorder;\r\n break;\r\n case 'rowSpan':\r\n const verticalMergeFragment = buildVerticalMerge(attributes[key]);\r\n tableCellPropertiesFragment.import(verticalMergeFragment);\r\n\r\n delete attributes.rowSpan;\r\n break;\r\n case 'width':\r\n const widthFragment = buildTableCellWidth(attributes[key]);\r\n tableCellPropertiesFragment.import(widthFragment);\r\n delete attributes.width;\r\n break;\r\n }\r\n });\r\n }\r\n tableCellPropertiesFragment.up();\r\n\r\n return tableCellPropertiesFragment;\r\n};\r\n\r\nconst fixupTableCellBorder = (vNode, attributes) => {\r\n if (Object.prototype.hasOwnProperty.call(vNode.properties.style, 'border')) {\r\n if (vNode.properties.style.border === 'none' || vNode.properties.style.border === 0) {\r\n attributes.tableCellBorder = {};\r\n } else {\r\n // eslint-disable-next-line no-use-before-define\r\n const [borderSize, borderStroke, borderColor] = cssBorderParser(\r\n vNode.properties.style.border\r\n );\r\n\r\n attributes.tableCellBorder = {\r\n top: borderSize,\r\n left: borderSize,\r\n bottom: borderSize,\r\n right: borderSize,\r\n color: borderColor,\r\n stroke: borderStroke,\r\n };\r\n }\r\n }\r\n if (vNode.properties.style['border-top'] && vNode.properties.style['border-top'] === '0') {\r\n attributes.tableCellBorder = {\r\n ...attributes.tableCellBorder,\r\n top: 0,\r\n };\r\n } else if (vNode.properties.style['border-top'] && vNode.properties.style['border-top'] !== '0') {\r\n // eslint-disable-next-line no-use-before-define\r\n const [borderSize, borderStroke, borderColor] = cssBorderParser(\r\n vNode.properties.style['border-top']\r\n );\r\n attributes.tableCellBorder = {\r\n ...attributes.tableCellBorder,\r\n top: borderSize,\r\n color: borderColor,\r\n stroke: borderStroke,\r\n };\r\n }\r\n if (vNode.properties.style['border-left'] && vNode.properties.style['border-left'] === '0') {\r\n attributes.tableCellBorder = {\r\n ...attributes.tableCellBorder,\r\n left: 0,\r\n };\r\n } else if (\r\n vNode.properties.style['border-left'] &&\r\n vNode.properties.style['border-left'] !== '0'\r\n ) {\r\n // eslint-disable-next-line no-use-before-define\r\n const [borderSize, borderStroke, borderColor] = cssBorderParser(\r\n vNode.properties.style['border-left']\r\n );\r\n attributes.tableCellBorder = {\r\n ...attributes.tableCellBorder,\r\n left: borderSize,\r\n color: borderColor,\r\n stroke: borderStroke,\r\n };\r\n }\r\n if (vNode.properties.style['border-bottom'] && vNode.properties.style['border-bottom'] === '0') {\r\n attributes.tableCellBorder = {\r\n ...attributes.tableCellBorder,\r\n bottom: 0,\r\n };\r\n } else if (\r\n vNode.properties.style['border-bottom'] &&\r\n vNode.properties.style['border-bottom'] !== '0'\r\n ) {\r\n // eslint-disable-next-line no-use-before-define\r\n const [borderSize, borderStroke, borderColor] = cssBorderParser(\r\n vNode.properties.style['border-bottom']\r\n );\r\n attributes.tableCellBorder = {\r\n ...attributes.tableCellBorder,\r\n bottom: borderSize,\r\n color: borderColor,\r\n stroke: borderStroke,\r\n };\r\n }\r\n if (vNode.properties.style['border-right'] && vNode.properties.style['border-right'] === '0') {\r\n attributes.tableCellBorder = {\r\n ...attributes.tableCellBorder,\r\n right: 0,\r\n };\r\n } else if (\r\n vNode.properties.style['border-right'] &&\r\n vNode.properties.style['border-right'] !== '0'\r\n ) {\r\n // eslint-disable-next-line no-use-before-define\r\n const [borderSize, borderStroke, borderColor] = cssBorderParser(\r\n vNode.properties.style['border-right']\r\n );\r\n attributes.tableCellBorder = {\r\n ...attributes.tableCellBorder,\r\n right: borderSize,\r\n color: borderColor,\r\n stroke: borderStroke,\r\n };\r\n }\r\n};\r\n\r\nconst buildTableCell = async (vNode, attributes, rowSpanMap, columnIndex, docxDocumentInstance) => {\r\n const tableCellFragment = fragment({ namespaceAlias: { w: namespaces.w } }).ele('@w', 'tc');\r\n\r\n let modifiedAttributes = { ...attributes };\r\n if (isVNode(vNode) && vNode.properties) {\r\n if (vNode.properties.rowSpan) {\r\n rowSpanMap.set(columnIndex.index, { rowSpan: vNode.properties.rowSpan - 1, colSpan: 0 });\r\n modifiedAttributes.rowSpan = 'restart';\r\n } else {\r\n const previousSpanObject = rowSpanMap.get(columnIndex.index);\r\n rowSpanMap.set(\r\n columnIndex.index,\r\n // eslint-disable-next-line prefer-object-spread\r\n Object.assign({}, previousSpanObject, {\r\n rowSpan: 0,\r\n colSpan: (previousSpanObject && previousSpanObject.colSpan) || 0,\r\n })\r\n );\r\n }\r\n if (\r\n vNode.properties.colSpan ||\r\n (vNode.properties.style && vNode.properties.style['column-span'])\r\n ) {\r\n modifiedAttributes.colSpan =\r\n vNode.properties.colSpan ||\r\n (vNode.properties.style && vNode.properties.style['column-span']);\r\n const previousSpanObject = rowSpanMap.get(columnIndex.index);\r\n rowSpanMap.set(\r\n columnIndex.index,\r\n // eslint-disable-next-line prefer-object-spread\r\n Object.assign({}, previousSpanObject, {\r\n colSpan: parseInt(modifiedAttributes.colSpan) || 0,\r\n })\r\n );\r\n columnIndex.index += parseInt(modifiedAttributes.colSpan) - 1;\r\n }\r\n if (vNode.properties.style) {\r\n modifiedAttributes = {\r\n ...modifiedAttributes,\r\n ...modifiedStyleAttributesBuilder(vNode, attributes),\r\n };\r\n\r\n fixupTableCellBorder(vNode, modifiedAttributes);\r\n }\r\n }\r\n const tableCellPropertiesFragment = buildTableCellProperties(modifiedAttributes);\r\n tableCellFragment.import(tableCellPropertiesFragment);\r\n if (vNodeHasChildren(vNode)) {\r\n for (let index = 0; index < vNode.children.length; index++) {\r\n const childVNode = vNode.children[index];\r\n if (isVNode(childVNode) && childVNode.tagName === 'img') {\r\n const imageFragment = await buildImage(\r\n docxDocumentInstance,\r\n childVNode,\r\n modifiedAttributes.maximumWidth\r\n );\r\n if (imageFragment) {\r\n tableCellFragment.import(imageFragment);\r\n }\r\n } else if (isVNode(childVNode) && childVNode.tagName === 'figure') {\r\n if (vNodeHasChildren(childVNode)) {\r\n // eslint-disable-next-line no-plusplus\r\n for (let iteratorIndex = 0; iteratorIndex < childVNode.children.length; iteratorIndex++) {\r\n const grandChildVNode = childVNode.children[iteratorIndex];\r\n if (grandChildVNode.tagName === 'img') {\r\n const imageFragment = await buildImage(\r\n docxDocumentInstance,\r\n grandChildVNode,\r\n modifiedAttributes.maximumWidth\r\n );\r\n if (imageFragment) {\r\n tableCellFragment.import(imageFragment);\r\n }\r\n }\r\n }\r\n }\r\n } else if (isVNode(childVNode) && ['ul', 'ol'].includes(childVNode.tagName)) {\r\n // render list in table\r\n if (vNodeHasChildren(childVNode)) {\r\n await buildList(childVNode, docxDocumentInstance, tableCellFragment);\r\n }\r\n } else {\r\n const paragraphFragment = await buildParagraph(\r\n childVNode,\r\n modifiedAttributes,\r\n docxDocumentInstance\r\n );\r\n\r\n tableCellFragment.import(paragraphFragment);\r\n }\r\n }\r\n } else {\r\n // TODO: Figure out why building with buildParagraph() isn't working\r\n const paragraphFragment = fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'p')\r\n .up();\r\n tableCellFragment.import(paragraphFragment);\r\n }\r\n tableCellFragment.up();\r\n\r\n return tableCellFragment;\r\n};\r\n\r\nconst buildRowSpanCell = (rowSpanMap, columnIndex, attributes) => {\r\n const rowSpanCellFragments = [];\r\n let spanObject = rowSpanMap.get(columnIndex.index);\r\n while (spanObject && spanObject.rowSpan) {\r\n const rowSpanCellFragment = fragment({ namespaceAlias: { w: namespaces.w } }).ele('@w', 'tc');\r\n\r\n const tableCellPropertiesFragment = buildTableCellProperties({\r\n ...attributes,\r\n rowSpan: 'continue',\r\n colSpan: spanObject.colSpan ? spanObject.colSpan : 0,\r\n });\r\n rowSpanCellFragment.import(tableCellPropertiesFragment);\r\n\r\n const paragraphFragment = fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'p')\r\n .up();\r\n rowSpanCellFragment.import(paragraphFragment);\r\n rowSpanCellFragment.up();\r\n\r\n rowSpanCellFragments.push(rowSpanCellFragment);\r\n\r\n if (spanObject.rowSpan - 1 === 0) {\r\n rowSpanMap.delete(columnIndex.index);\r\n } else {\r\n rowSpanMap.set(columnIndex.index, {\r\n rowSpan: spanObject.rowSpan - 1,\r\n colSpan: spanObject.colSpan || 0,\r\n });\r\n }\r\n columnIndex.index += spanObject.colSpan || 1;\r\n spanObject = rowSpanMap.get(columnIndex.index);\r\n }\r\n\r\n return rowSpanCellFragments;\r\n};\r\n\r\nconst buildTableRowProperties = (attributes) => {\r\n const tableRowPropertiesFragment = fragment({ namespaceAlias: { w: namespaces.w } }).ele(\r\n '@w',\r\n 'trPr'\r\n );\r\n if (attributes && attributes.constructor === Object) {\r\n Object.keys(attributes).forEach((key) => {\r\n switch (key) {\r\n case 'tableRowHeight':\r\n const tableRowHeightFragment = buildTableRowHeight(attributes[key]);\r\n tableRowPropertiesFragment.import(tableRowHeightFragment);\r\n // eslint-disable-next-line no-param-reassign\r\n delete attributes.tableRowHeight;\r\n break;\r\n case 'rowCantSplit':\r\n if (attributes.rowCantSplit) {\r\n const cantSplitFragment = fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'cantSplit')\r\n .up();\r\n tableRowPropertiesFragment.import(cantSplitFragment);\r\n // eslint-disable-next-line no-param-reassign\r\n delete attributes.rowCantSplit;\r\n }\r\n break;\r\n }\r\n });\r\n }\r\n tableRowPropertiesFragment.up();\r\n return tableRowPropertiesFragment;\r\n};\r\n\r\nconst buildTableRow = async (vNode, attributes, rowSpanMap, docxDocumentInstance) => {\r\n const tableRowFragment = fragment({ namespaceAlias: { w: namespaces.w } }).ele('@w', 'tr');\r\n const modifiedAttributes = { ...attributes };\r\n if (isVNode(vNode) && vNode.properties) {\r\n // FIXME: find a better way to get row height from cell style\r\n if (\r\n (vNode.properties.style && vNode.properties.style.height) ||\r\n (vNode.children[0] &&\r\n isVNode(vNode.children[0]) &&\r\n vNode.children[0].properties.style &&\r\n vNode.children[0].properties.style.height)\r\n ) {\r\n modifiedAttributes.tableRowHeight = fixupRowHeight(\r\n (vNode.properties.style && vNode.properties.style.height) ||\r\n (vNode.children[0] &&\r\n isVNode(vNode.children[0]) &&\r\n vNode.children[0].properties.style &&\r\n vNode.children[0].properties.style.height\r\n ? vNode.children[0].properties.style.height\r\n : undefined)\r\n );\r\n }\r\n if (vNode.properties.style) {\r\n fixupTableCellBorder(vNode, modifiedAttributes);\r\n }\r\n }\r\n\r\n const tableRowPropertiesFragment = buildTableRowProperties(modifiedAttributes);\r\n tableRowFragment.import(tableRowPropertiesFragment);\r\n\r\n const columnIndex = { index: 0 };\r\n\r\n if (vNodeHasChildren(vNode)) {\r\n const tableColumns = vNode.children.filter((childVNode) =>\r\n ['td', 'th'].includes(childVNode.tagName)\r\n );\r\n const maximumColumnWidth = docxDocumentInstance.availableDocumentSpace / tableColumns.length;\r\n\r\n // eslint-disable-next-line no-restricted-syntax\r\n for (const column of tableColumns) {\r\n const rowSpanCellFragments = buildRowSpanCell(rowSpanMap, columnIndex, modifiedAttributes);\r\n if (Array.isArray(rowSpanCellFragments)) {\r\n for (let iteratorIndex = 0; iteratorIndex < rowSpanCellFragments.length; iteratorIndex++) {\r\n const rowSpanCellFragment = rowSpanCellFragments[iteratorIndex];\r\n\r\n tableRowFragment.import(rowSpanCellFragment);\r\n }\r\n }\r\n const tableCellFragment = await buildTableCell(\r\n column,\r\n { ...modifiedAttributes, maximumWidth: maximumColumnWidth },\r\n rowSpanMap,\r\n columnIndex,\r\n docxDocumentInstance\r\n );\r\n columnIndex.index++;\r\n\r\n tableRowFragment.import(tableCellFragment);\r\n }\r\n }\r\n\r\n if (columnIndex.index < rowSpanMap.size) {\r\n const rowSpanCellFragments = buildRowSpanCell(rowSpanMap, columnIndex, modifiedAttributes);\r\n if (Array.isArray(rowSpanCellFragments)) {\r\n for (let iteratorIndex = 0; iteratorIndex < rowSpanCellFragments.length; iteratorIndex++) {\r\n const rowSpanCellFragment = rowSpanCellFragments[iteratorIndex];\r\n\r\n tableRowFragment.import(rowSpanCellFragment);\r\n }\r\n }\r\n }\r\n\r\n tableRowFragment.up();\r\n\r\n return tableRowFragment;\r\n};\r\n\r\nconst buildTableGridCol = (gridWidth) =>\r\n fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'gridCol')\r\n .att('@w', 'w', String(gridWidth));\r\n\r\nconst buildTableGrid = (vNode, attributes) => {\r\n const tableGridFragment = fragment({ namespaceAlias: { w: namespaces.w } }).ele('@w', 'tblGrid');\r\n if (vNodeHasChildren(vNode)) {\r\n const gridColumns = vNode.children.filter((childVNode) => childVNode.tagName === 'col');\r\n const gridWidth = attributes.maximumWidth / gridColumns.length;\r\n\r\n for (let index = 0; index < gridColumns.length; index++) {\r\n const tableGridColFragment = buildTableGridCol(gridWidth);\r\n tableGridFragment.import(tableGridColFragment);\r\n }\r\n }\r\n tableGridFragment.up();\r\n\r\n return tableGridFragment;\r\n};\r\n\r\nconst buildTableGridFromTableRow = (vNode, attributes) => {\r\n const tableGridFragment = fragment({ namespaceAlias: { w: namespaces.w } }).ele('@w', 'tblGrid');\r\n if (vNodeHasChildren(vNode)) {\r\n const numberOfGridColumns = vNode.children.reduce((accumulator, childVNode) => {\r\n const colSpan =\r\n childVNode.properties.colSpan ||\r\n (childVNode.properties.style && childVNode.properties.style['column-span']);\r\n\r\n return accumulator + (colSpan ? parseInt(colSpan) : 1);\r\n }, 0);\r\n const gridWidth = attributes.maximumWidth / numberOfGridColumns;\r\n\r\n for (let index = 0; index < numberOfGridColumns; index++) {\r\n const tableGridColFragment = buildTableGridCol(gridWidth);\r\n tableGridFragment.import(tableGridColFragment);\r\n }\r\n }\r\n tableGridFragment.up();\r\n\r\n return tableGridFragment;\r\n};\r\n\r\nconst buildTableBorders = (tableBorder) => {\r\n const tableBordersFragment = fragment({ namespaceAlias: { w: namespaces.w } }).ele(\r\n '@w',\r\n 'tblBorders'\r\n );\r\n\r\n const { color, stroke, ...borders } = tableBorder;\r\n\r\n Object.keys(borders).forEach((border) => {\r\n if (borders[border]) {\r\n const borderFragment = buildBorder(border, borders[border], 0, color, stroke);\r\n tableBordersFragment.import(borderFragment);\r\n }\r\n });\r\n\r\n tableBordersFragment.up();\r\n\r\n return tableBordersFragment;\r\n};\r\n\r\nconst buildTableWidth = (tableWidth) =>\r\n fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'tblW')\r\n .att('@w', 'type', 'dxa')\r\n .att('@w', 'w', String(tableWidth))\r\n .up();\r\n\r\nconst buildCellMargin = (side, margin) =>\r\n fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', side)\r\n .att('@w', 'type', 'dxa')\r\n .att('@w', 'w', String(margin))\r\n .up();\r\n\r\nconst buildTableCellMargins = (margin) => {\r\n const tableCellMarFragment = fragment({ namespaceAlias: { w: namespaces.w } }).ele(\r\n '@w',\r\n 'tblCellMar'\r\n );\r\n\r\n ['top', 'bottom'].forEach((side) => {\r\n const marginFragment = buildCellMargin(side, margin / 2);\r\n tableCellMarFragment.import(marginFragment);\r\n });\r\n ['left', 'right'].forEach((side) => {\r\n const marginFragment = buildCellMargin(side, margin);\r\n tableCellMarFragment.import(marginFragment);\r\n });\r\n\r\n return tableCellMarFragment;\r\n};\r\n\r\nconst buildTableProperties = (attributes) => {\r\n const tablePropertiesFragment = fragment({ namespaceAlias: { w: namespaces.w } }).ele(\r\n '@w',\r\n 'tblPr'\r\n );\r\n\r\n if (attributes && attributes.constructor === Object) {\r\n Object.keys(attributes).forEach((key) => {\r\n switch (key) {\r\n case 'tableBorder':\r\n const tableBordersFragment = buildTableBorders(attributes[key]);\r\n tablePropertiesFragment.import(tableBordersFragment);\r\n // eslint-disable-next-line no-param-reassign\r\n delete attributes.tableBorder;\r\n break;\r\n case 'tableCellSpacing':\r\n const tableCellSpacingFragment = buildTableCellSpacing(attributes[key]);\r\n tablePropertiesFragment.import(tableCellSpacingFragment);\r\n // eslint-disable-next-line no-param-reassign\r\n delete attributes.tableCellSpacing;\r\n break;\r\n case 'width':\r\n if (attributes[key]) {\r\n const tableWidthFragment = buildTableWidth(attributes[key]);\r\n tablePropertiesFragment.import(tableWidthFragment);\r\n }\r\n // eslint-disable-next-line no-param-reassign\r\n delete attributes.width;\r\n break;\r\n }\r\n });\r\n }\r\n const tableCellMarginFragment = buildTableCellMargins(160);\r\n tablePropertiesFragment.import(tableCellMarginFragment);\r\n\r\n // by default, all tables are center aligned.\r\n const alignmentFragment = buildHorizontalAlignment('center');\r\n tablePropertiesFragment.import(alignmentFragment);\r\n\r\n tablePropertiesFragment.up();\r\n\r\n return tablePropertiesFragment;\r\n};\r\n\r\nconst cssBorderParser = (borderString) => {\r\n let [size, stroke, color] = borderString.split(' ');\r\n\r\n if (pointRegex.test(size)) {\r\n const matchedParts = size.match(pointRegex);\r\n // convert point to eighth of a point\r\n size = pointToEIP(matchedParts[1]);\r\n } else if (pixelRegex.test(size)) {\r\n const matchedParts = size.match(pixelRegex);\r\n // convert pixels to eighth of a point\r\n size = pixelToEIP(matchedParts[1]);\r\n }\r\n stroke = stroke && ['dashed', 'dotted', 'double'].includes(stroke) ? stroke : 'single';\r\n\r\n color = color && fixupColorCode(color).toUpperCase();\r\n\r\n return [size, stroke, color];\r\n};\r\n\r\nconst buildTable = async (vNode, attributes, docxDocumentInstance) => {\r\n const tableFragment = fragment({ namespaceAlias: { w: namespaces.w } }).ele('@w', 'tbl');\r\n const modifiedAttributes = { ...attributes };\r\n if (isVNode(vNode) && vNode.properties) {\r\n const tableAttributes = vNode.properties.attributes || {};\r\n const tableStyles = vNode.properties.style || {};\r\n const tableBorders = {};\r\n const tableCellBorders = {};\r\n let [borderSize, borderStrike, borderColor] = [2, 'single', '000000'];\r\n\r\n // eslint-disable-next-line no-restricted-globals\r\n if (!isNaN(tableAttributes.border)) {\r\n borderSize = parseInt(tableAttributes.border, 10);\r\n }\r\n\r\n // css style overrides table border properties\r\n if (tableStyles.border) {\r\n const [cssSize, cssStroke, cssColor] = cssBorderParser(tableStyles.border);\r\n borderSize = cssSize || borderSize;\r\n borderColor = cssColor || borderColor;\r\n borderStrike = cssStroke || borderStrike;\r\n }\r\n\r\n tableBorders.top = borderSize;\r\n tableBorders.bottom = borderSize;\r\n tableBorders.left = borderSize;\r\n tableBorders.right = borderSize;\r\n tableBorders.stroke = borderStrike;\r\n tableBorders.color = borderColor;\r\n\r\n if (tableStyles['border-collapse'] === 'collapse') {\r\n tableBorders.insideV = borderSize;\r\n tableBorders.insideH = borderSize;\r\n } else {\r\n tableBorders.insideV = 0;\r\n tableBorders.insideH = 0;\r\n tableCellBorders.top = 1;\r\n tableCellBorders.bottom = 1;\r\n tableCellBorders.left = 1;\r\n tableCellBorders.right = 1;\r\n }\r\n\r\n modifiedAttributes.tableBorder = tableBorders;\r\n modifiedAttributes.tableCellSpacing = 0;\r\n\r\n if (Object.keys(tableCellBorders).length) {\r\n modifiedAttributes.tableCellBorder = tableCellBorders;\r\n }\r\n\r\n let minimumWidth;\r\n let maximumWidth;\r\n let width;\r\n // Calculate minimum width of table\r\n if (pixelRegex.test(tableStyles['min-width'])) {\r\n minimumWidth = pixelToTWIP(tableStyles['min-width'].match(pixelRegex)[1]);\r\n } else if (percentageRegex.test(tableStyles['min-width'])) {\r\n const percentageValue = tableStyles['min-width'].match(percentageRegex)[1];\r\n minimumWidth = Math.round((percentageValue / 100) * attributes.maximumWidth);\r\n }\r\n\r\n // Calculate maximum width of table\r\n if (pixelRegex.test(tableStyles['max-width'])) {\r\n pixelRegex.lastIndex = 0;\r\n maximumWidth = pixelToTWIP(tableStyles['max-width'].match(pixelRegex)[1]);\r\n } else if (percentageRegex.test(tableStyles['max-width'])) {\r\n percentageRegex.lastIndex = 0;\r\n const percentageValue = tableStyles['max-width'].match(percentageRegex)[1];\r\n maximumWidth = Math.round((percentageValue / 100) * attributes.maximumWidth);\r\n }\r\n\r\n // Calculate specified width of table\r\n if (pixelRegex.test(tableStyles.width)) {\r\n pixelRegex.lastIndex = 0;\r\n width = pixelToTWIP(tableStyles.width.match(pixelRegex)[1]);\r\n } else if (percentageRegex.test(tableStyles.width)) {\r\n percentageRegex.lastIndex = 0;\r\n const percentageValue = tableStyles.width.match(percentageRegex)[1];\r\n width = Math.round((percentageValue / 100) * attributes.maximumWidth);\r\n }\r\n\r\n // If width isn't supplied, we should have min-width as the width.\r\n if (width) {\r\n modifiedAttributes.width = width;\r\n if (maximumWidth) {\r\n modifiedAttributes.width = Math.min(modifiedAttributes.width, maximumWidth);\r\n }\r\n if (minimumWidth) {\r\n modifiedAttributes.width = Math.max(modifiedAttributes.width, minimumWidth);\r\n }\r\n } else if (minimumWidth) {\r\n modifiedAttributes.width = minimumWidth;\r\n }\r\n if (modifiedAttributes.width) {\r\n modifiedAttributes.width = Math.min(modifiedAttributes.width, attributes.maximumWidth);\r\n }\r\n }\r\n const tablePropertiesFragment = buildTableProperties(modifiedAttributes);\r\n tableFragment.import(tablePropertiesFragment);\r\n\r\n const rowSpanMap = new Map();\r\n\r\n if (vNodeHasChildren(vNode)) {\r\n for (let index = 0; index < vNode.children.length; index++) {\r\n const childVNode = vNode.children[index];\r\n if (childVNode.tagName === 'colgroup') {\r\n const tableGridFragment = buildTableGrid(childVNode, modifiedAttributes);\r\n tableFragment.import(tableGridFragment);\r\n } else if (childVNode.tagName === 'thead') {\r\n for (let iteratorIndex = 0; iteratorIndex < childVNode.children.length; iteratorIndex++) {\r\n const grandChildVNode = childVNode.children[iteratorIndex];\r\n if (grandChildVNode.tagName === 'tr') {\r\n if (iteratorIndex === 0) {\r\n const tableGridFragment = buildTableGridFromTableRow(\r\n grandChildVNode,\r\n modifiedAttributes\r\n );\r\n tableFragment.import(tableGridFragment);\r\n }\r\n const tableRowFragment = await buildTableRow(\r\n grandChildVNode,\r\n modifiedAttributes,\r\n rowSpanMap,\r\n docxDocumentInstance\r\n );\r\n tableFragment.import(tableRowFragment);\r\n }\r\n }\r\n } else if (childVNode.tagName === 'tbody') {\r\n for (let iteratorIndex = 0; iteratorIndex < childVNode.children.length; iteratorIndex++) {\r\n const grandChildVNode = childVNode.children[iteratorIndex];\r\n if (grandChildVNode.tagName === 'tr') {\r\n if (iteratorIndex === 0) {\r\n const tableGridFragment = buildTableGridFromTableRow(\r\n grandChildVNode,\r\n modifiedAttributes\r\n );\r\n tableFragment.import(tableGridFragment);\r\n }\r\n const tableRowFragment = await buildTableRow(\r\n grandChildVNode,\r\n modifiedAttributes,\r\n rowSpanMap,\r\n docxDocumentInstance\r\n );\r\n tableFragment.import(tableRowFragment);\r\n }\r\n }\r\n } else if (childVNode.tagName === 'tr') {\r\n if (index === 0) {\r\n const tableGridFragment = buildTableGridFromTableRow(childVNode, modifiedAttributes);\r\n tableFragment.import(tableGridFragment);\r\n }\r\n const tableRowFragment = await buildTableRow(\r\n childVNode,\r\n modifiedAttributes,\r\n rowSpanMap,\r\n docxDocumentInstance\r\n );\r\n tableFragment.import(tableRowFragment);\r\n }\r\n }\r\n }\r\n tableFragment.up();\r\n\r\n return tableFragment;\r\n};\r\n\r\nconst buildPresetGeometry = () =>\r\n fragment({ namespaceAlias: { a: namespaces.a } })\r\n .ele('@a', 'prstGeom')\r\n .att('prst', 'rect')\r\n .up();\r\n\r\nconst buildExtents = ({ width, height }) =>\r\n fragment({ namespaceAlias: { a: namespaces.a } })\r\n .ele('@a', 'ext')\r\n .att('cx', width)\r\n .att('cy', height)\r\n .up();\r\n\r\nconst buildOffset = () =>\r\n fragment({ namespaceAlias: { a: namespaces.a } })\r\n .ele('@a', 'off')\r\n .att('x', '0')\r\n .att('y', '0')\r\n .up();\r\n\r\nconst buildGraphicFrameTransform = (attributes) => {\r\n const graphicFrameTransformFragment = fragment({ namespaceAlias: { a: namespaces.a } }).ele(\r\n '@a',\r\n 'xfrm'\r\n );\r\n\r\n const offsetFragment = buildOffset();\r\n graphicFrameTransformFragment.import(offsetFragment);\r\n const extentsFragment = buildExtents(attributes);\r\n graphicFrameTransformFragment.import(extentsFragment);\r\n\r\n graphicFrameTransformFragment.up();\r\n\r\n return graphicFrameTransformFragment;\r\n};\r\n\r\nconst buildShapeProperties = (attributes) => {\r\n const shapeProperties = fragment({ namespaceAlias: { pic: namespaces.pic } }).ele('@pic', 'spPr');\r\n\r\n const graphicFrameTransformFragment = buildGraphicFrameTransform(attributes);\r\n shapeProperties.import(graphicFrameTransformFragment);\r\n const presetGeometryFragment = buildPresetGeometry();\r\n shapeProperties.import(presetGeometryFragment);\r\n\r\n shapeProperties.up();\r\n\r\n return shapeProperties;\r\n};\r\n\r\nconst buildFillRect = () =>\r\n fragment({ namespaceAlias: { a: namespaces.a } })\r\n .ele('@a', 'fillRect')\r\n .up();\r\n\r\nconst buildStretch = () => {\r\n const stretchFragment = fragment({ namespaceAlias: { a: namespaces.a } }).ele('@a', 'stretch');\r\n\r\n const fillRectFragment = buildFillRect();\r\n stretchFragment.import(fillRectFragment);\r\n\r\n stretchFragment.up();\r\n\r\n return stretchFragment;\r\n};\r\n\r\nconst buildSrcRectFragment = () =>\r\n fragment({ namespaceAlias: { a: namespaces.a } })\r\n .ele('@a', 'srcRect')\r\n .att('b', '0')\r\n .att('l', '0')\r\n .att('r', '0')\r\n .att('t', '0')\r\n .up();\r\n\r\nconst buildBinaryLargeImageOrPicture = (relationshipId) =>\r\n fragment({\r\n namespaceAlias: { a: namespaces.a, r: namespaces.r },\r\n })\r\n .ele('@a', 'blip')\r\n .att('@r', 'embed', `rId${relationshipId}`)\r\n // FIXME: possible values 'email', 'none', 'print', 'hqprint', 'screen'\r\n .att('cstate', 'print')\r\n .up();\r\n\r\nconst buildBinaryLargeImageOrPictureFill = (relationshipId) => {\r\n const binaryLargeImageOrPictureFillFragment = fragment({\r\n namespaceAlias: { pic: namespaces.pic },\r\n }).ele('@pic', 'blipFill');\r\n const binaryLargeImageOrPictureFragment = buildBinaryLargeImageOrPicture(relationshipId);\r\n binaryLargeImageOrPictureFillFragment.import(binaryLargeImageOrPictureFragment);\r\n const srcRectFragment = buildSrcRectFragment();\r\n binaryLargeImageOrPictureFillFragment.import(srcRectFragment);\r\n const stretchFragment = buildStretch();\r\n binaryLargeImageOrPictureFillFragment.import(stretchFragment);\r\n\r\n binaryLargeImageOrPictureFillFragment.up();\r\n\r\n return binaryLargeImageOrPictureFillFragment;\r\n};\r\n\r\nconst buildNonVisualPictureDrawingProperties = () =>\r\n fragment({ namespaceAlias: { pic: namespaces.pic } })\r\n .ele('@pic', 'cNvPicPr')\r\n .up();\r\n\r\nconst buildNonVisualDrawingProperties = (\r\n pictureId,\r\n pictureNameWithExtension,\r\n pictureDescription = ''\r\n) =>\r\n fragment({ namespaceAlias: { pic: namespaces.pic } })\r\n .ele('@pic', 'cNvPr')\r\n .att('id', pictureId)\r\n .att('name', pictureNameWithExtension)\r\n .att('descr', pictureDescription)\r\n .up();\r\n\r\nconst buildNonVisualPictureProperties = (\r\n pictureId,\r\n pictureNameWithExtension,\r\n pictureDescription\r\n) => {\r\n const nonVisualPicturePropertiesFragment = fragment({\r\n namespaceAlias: { pic: namespaces.pic },\r\n }).ele('@pic', 'nvPicPr');\r\n // TODO: Handle picture attributes\r\n const nonVisualDrawingPropertiesFragment = buildNonVisualDrawingProperties(\r\n pictureId,\r\n pictureNameWithExtension,\r\n pictureDescription\r\n );\r\n nonVisualPicturePropertiesFragment.import(nonVisualDrawingPropertiesFragment);\r\n const nonVisualPictureDrawingPropertiesFragment = buildNonVisualPictureDrawingProperties();\r\n nonVisualPicturePropertiesFragment.import(nonVisualPictureDrawingPropertiesFragment);\r\n nonVisualPicturePropertiesFragment.up();\r\n\r\n return nonVisualPicturePropertiesFragment;\r\n};\r\n\r\nconst buildPicture = ({\r\n id,\r\n fileNameWithExtension,\r\n description,\r\n relationshipId,\r\n width,\r\n height,\r\n}) => {\r\n const pictureFragment = fragment({ namespaceAlias: { pic: namespaces.pic } }).ele('@pic', 'pic');\r\n const nonVisualPicturePropertiesFragment = buildNonVisualPictureProperties(\r\n id,\r\n fileNameWithExtension,\r\n description\r\n );\r\n pictureFragment.import(nonVisualPicturePropertiesFragment);\r\n const binaryLargeImageOrPictureFill = buildBinaryLargeImageOrPictureFill(relationshipId);\r\n pictureFragment.import(binaryLargeImageOrPictureFill);\r\n const shapeProperties = buildShapeProperties({ width, height });\r\n pictureFragment.import(shapeProperties);\r\n pictureFragment.up();\r\n\r\n return pictureFragment;\r\n};\r\n\r\nconst buildGraphicData = (graphicType, attributes) => {\r\n const graphicDataFragment = fragment({ namespaceAlias: { a: namespaces.a } })\r\n .ele('@a', 'graphicData')\r\n .att('uri', 'http://schemas.openxmlformats.org/drawingml/2006/picture');\r\n if (graphicType === 'picture') {\r\n const pictureFragment = buildPicture(attributes);\r\n graphicDataFragment.import(pictureFragment);\r\n }\r\n graphicDataFragment.up();\r\n\r\n return graphicDataFragment;\r\n};\r\n\r\nconst buildGraphic = (graphicType, attributes) => {\r\n const graphicFragment = fragment({ namespaceAlias: { a: namespaces.a } }).ele('@a', 'graphic');\r\n // TODO: Handle drawing type\r\n const graphicDataFragment = buildGraphicData(graphicType, attributes);\r\n graphicFragment.import(graphicDataFragment);\r\n graphicFragment.up();\r\n\r\n return graphicFragment;\r\n};\r\n\r\nconst buildDrawingObjectNonVisualProperties = (pictureId, pictureName) =>\r\n fragment({ namespaceAlias: { wp: namespaces.wp } })\r\n .ele('@wp', 'docPr')\r\n .att('id', pictureId)\r\n .att('name', pictureName)\r\n .up();\r\n\r\nconst buildWrapSquare = () =>\r\n fragment({ namespaceAlias: { wp: namespaces.wp } })\r\n .ele('@wp', 'wrapSquare')\r\n .att('wrapText', 'bothSides')\r\n .att('distB', '228600')\r\n .att('distT', '228600')\r\n .att('distL', '228600')\r\n .att('distR', '228600')\r\n .up();\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nconst buildWrapNone = () =>\r\n fragment({ namespaceAlias: { wp: namespaces.wp } })\r\n .ele('@wp', 'wrapNone')\r\n .up();\r\n\r\nconst buildEffectExtentFragment = () =>\r\n fragment({ namespaceAlias: { wp: namespaces.wp } })\r\n .ele('@wp', 'effectExtent')\r\n .att('b', '0')\r\n .att('l', '0')\r\n .att('r', '0')\r\n .att('t', '0')\r\n .up();\r\n\r\nconst buildExtent = ({ width, height }) =>\r\n fragment({ namespaceAlias: { wp: namespaces.wp } })\r\n .ele('@wp', 'extent')\r\n .att('cx', width)\r\n .att('cy', height)\r\n .up();\r\n\r\nconst buildPositionV = () =>\r\n fragment({ namespaceAlias: { wp: namespaces.wp } })\r\n .ele('@wp', 'positionV')\r\n .att('relativeFrom', 'paragraph')\r\n .ele('@wp', 'posOffset')\r\n .txt('19050')\r\n .up()\r\n .up();\r\n\r\nconst buildPositionH = () =>\r\n fragment({ namespaceAlias: { wp: namespaces.wp } })\r\n .ele('@wp', 'positionH')\r\n .att('relativeFrom', 'column')\r\n .ele('@wp', 'posOffset')\r\n .txt('19050')\r\n .up()\r\n .up();\r\n\r\nconst buildSimplePos = () =>\r\n fragment({ namespaceAlias: { wp: namespaces.wp } })\r\n .ele('@wp', 'simplePos')\r\n .att('x', '0')\r\n .att('y', '0')\r\n .up();\r\n\r\nconst buildAnchoredDrawing = (graphicType, attributes) => {\r\n const anchoredDrawingFragment = fragment({ namespaceAlias: { wp: namespaces.wp } })\r\n .ele('@wp', 'anchor')\r\n .att('distB', '0')\r\n .att('distL', '0')\r\n .att('distR', '0')\r\n .att('distT', '0')\r\n .att('relativeHeight', '0')\r\n .att('behindDoc', 'false')\r\n .att('locked', 'true')\r\n .att('layoutInCell', 'true')\r\n .att('allowOverlap', 'false')\r\n .att('simplePos', 'false');\r\n // Even though simplePos isnt supported by Word 2007 simplePos is required.\r\n const simplePosFragment = buildSimplePos();\r\n anchoredDrawingFragment.import(simplePosFragment);\r\n const positionHFragment = buildPositionH();\r\n anchoredDrawingFragment.import(positionHFragment);\r\n const positionVFragment = buildPositionV();\r\n anchoredDrawingFragment.import(positionVFragment);\r\n const extentFragment = buildExtent({ width: attributes.width, height: attributes.height });\r\n anchoredDrawingFragment.import(extentFragment);\r\n const effectExtentFragment = buildEffectExtentFragment();\r\n anchoredDrawingFragment.import(effectExtentFragment);\r\n const wrapSquareFragment = buildWrapSquare();\r\n anchoredDrawingFragment.import(wrapSquareFragment);\r\n const drawingObjectNonVisualPropertiesFragment = buildDrawingObjectNonVisualProperties(\r\n attributes.id,\r\n attributes.fileNameWithExtension\r\n );\r\n anchoredDrawingFragment.import(drawingObjectNonVisualPropertiesFragment);\r\n const graphicFragment = buildGraphic(graphicType, attributes);\r\n anchoredDrawingFragment.import(graphicFragment);\r\n\r\n anchoredDrawingFragment.up();\r\n\r\n return anchoredDrawingFragment;\r\n};\r\n\r\nconst buildInlineDrawing = (graphicType, attributes) => {\r\n const inlineDrawingFragment = fragment({ namespaceAlias: { wp: namespaces.wp } })\r\n .ele('@wp', 'inline')\r\n .att('distB', '0')\r\n .att('distL', '0')\r\n .att('distR', '0')\r\n .att('distT', '0');\r\n\r\n const extentFragment = buildExtent({ width: attributes.width, height: attributes.height });\r\n inlineDrawingFragment.import(extentFragment);\r\n const effectExtentFragment = buildEffectExtentFragment();\r\n inlineDrawingFragment.import(effectExtentFragment);\r\n const drawingObjectNonVisualPropertiesFragment = buildDrawingObjectNonVisualProperties(\r\n attributes.id,\r\n attributes.fileNameWithExtension\r\n );\r\n inlineDrawingFragment.import(drawingObjectNonVisualPropertiesFragment);\r\n const graphicFragment = buildGraphic(graphicType, attributes);\r\n inlineDrawingFragment.import(graphicFragment);\r\n\r\n inlineDrawingFragment.up();\r\n\r\n return inlineDrawingFragment;\r\n};\r\n\r\nconst buildDrawing = (inlineOrAnchored = false, graphicType, attributes) => {\r\n const drawingFragment = fragment({ namespaceAlias: { w: namespaces.w } }).ele('@w', 'drawing');\r\n const inlineOrAnchoredDrawingFragment = inlineOrAnchored\r\n ? buildInlineDrawing(graphicType, attributes)\r\n : buildAnchoredDrawing(graphicType, attributes);\r\n drawingFragment.import(inlineOrAnchoredDrawingFragment);\r\n drawingFragment.up();\r\n\r\n return drawingFragment;\r\n};\r\n\r\nexport {\r\n buildParagraph,\r\n buildTable,\r\n buildNumberingInstances,\r\n buildLineBreak,\r\n buildIndentation,\r\n buildTextElement,\r\n buildBold,\r\n buildItalics,\r\n buildUnderline,\r\n buildDrawing,\r\n fixupLineHeight,\r\n};\r\n","/* eslint-disable no-await-in-loop */\r\n/* eslint-disable no-case-declarations */\r\nimport { fragment } from 'xmlbuilder2';\r\nimport VNode from 'virtual-dom/vnode/vnode';\r\nimport VText from 'virtual-dom/vnode/vtext';\r\nimport isVNode from 'virtual-dom/vnode/is-vnode';\r\nimport isVText from 'virtual-dom/vnode/is-vtext';\r\n// eslint-disable-next-line import/no-named-default\r\nimport { default as HTMLToVDOM } from 'html-to-vdom';\r\nimport escape from 'escape-html';\r\nimport sizeOf from 'image-size';\r\nimport imageToBase64 from 'image-to-base64';\r\nimport mimeTypes from 'mime-types';\r\n\r\n// FIXME: remove the cyclic dependency\r\n// eslint-disable-next-line import/no-cycle\r\nimport * as xmlBuilder from './xml-builder';\r\nimport namespaces from '../namespaces';\r\nimport { imageType, internalRelationship } from '../constants';\r\nimport { vNodeHasChildren } from '../utils/vnode';\r\nimport { isValidUrl } from '../utils/url';\r\n\r\nconst convertHTML = HTMLToVDOM({\r\n VNode,\r\n VText,\r\n});\r\n\r\n// eslint-disable-next-line consistent-return, no-shadow\r\nexport const buildImage = async (docxDocumentInstance, vNode, maximumWidth = null) => {\r\n let response = null;\r\n let base64Uri = null;\r\n try {\r\n const imageSource = vNode.properties.src;\r\n if (isValidUrl(imageSource)) {\r\n const base64String = await imageToBase64(imageSource).catch((error) => {\r\n // eslint-disable-next-line no-console\r\n console.warning(`skipping image download and conversion due to ${error}`);\r\n });\r\n\r\n if (base64String) {\r\n base64Uri = `data:${mimeTypes.lookup(imageSource)};base64, ${base64String}`;\r\n }\r\n } else {\r\n base64Uri = decodeURIComponent(vNode.properties.src);\r\n }\r\n if (base64Uri) {\r\n response = docxDocumentInstance.createMediaFile(base64Uri);\r\n }\r\n } catch (error) {\r\n // NOOP\r\n }\r\n if (response) {\r\n docxDocumentInstance.zip\r\n .folder('word')\r\n .folder('media')\r\n .file(response.fileNameWithExtension, Buffer.from(response.fileContent, 'base64'), {\r\n createFolders: false,\r\n });\r\n\r\n const documentRelsId = docxDocumentInstance.createDocumentRelationships(\r\n docxDocumentInstance.relationshipFilename,\r\n imageType,\r\n `media/${response.fileNameWithExtension}`,\r\n internalRelationship\r\n );\r\n\r\n const imageBuffer = Buffer.from(response.fileContent, 'base64');\r\n const imageProperties = sizeOf(imageBuffer);\r\n\r\n const imageFragment = await xmlBuilder.buildParagraph(\r\n vNode,\r\n {\r\n type: 'picture',\r\n inlineOrAnchored: true,\r\n relationshipId: documentRelsId,\r\n ...response,\r\n maximumWidth: maximumWidth || docxDocumentInstance.availableDocumentSpace,\r\n originalWidth: imageProperties.width,\r\n originalHeight: imageProperties.height,\r\n },\r\n docxDocumentInstance\r\n );\r\n\r\n return imageFragment;\r\n }\r\n};\r\n\r\nexport const buildList = async (vNode, docxDocumentInstance, xmlFragment) => {\r\n const listElements = [];\r\n\r\n let vNodeObjects = [\r\n {\r\n node: vNode,\r\n level: 0,\r\n type: vNode.tagName,\r\n numberingId: docxDocumentInstance.createNumbering(vNode.tagName, vNode.properties),\r\n },\r\n ];\r\n while (vNodeObjects.length) {\r\n const tempVNodeObject = vNodeObjects.shift();\r\n\r\n if (\r\n isVText(tempVNodeObject.node) ||\r\n (isVNode(tempVNodeObject.node) && !['ul', 'ol', 'li'].includes(tempVNodeObject.node.tagName))\r\n ) {\r\n const paragraphFragment = await xmlBuilder.buildParagraph(\r\n tempVNodeObject.node,\r\n {\r\n numbering: { levelId: tempVNodeObject.level, numberingId: tempVNodeObject.numberingId },\r\n },\r\n docxDocumentInstance\r\n );\r\n\r\n xmlFragment.import(paragraphFragment);\r\n }\r\n\r\n if (\r\n tempVNodeObject.node.children &&\r\n tempVNodeObject.node.children.length &&\r\n ['ul', 'ol', 'li'].includes(tempVNodeObject.node.tagName)\r\n ) {\r\n const tempVNodeObjects = tempVNodeObject.node.children.reduce((accumulator, childVNode) => {\r\n if (['ul', 'ol'].includes(childVNode.tagName)) {\r\n accumulator.push({\r\n node: childVNode,\r\n level: tempVNodeObject.level + 1,\r\n type: childVNode.tagName,\r\n numberingId: docxDocumentInstance.createNumbering(\r\n childVNode.tagName,\r\n childVNode.properties\r\n ),\r\n });\r\n } else {\r\n // eslint-disable-next-line no-lonely-if\r\n if (\r\n accumulator.length > 0 &&\r\n isVNode(accumulator[accumulator.length - 1].node) &&\r\n accumulator[accumulator.length - 1].node.tagName.toLowerCase() === 'p'\r\n ) {\r\n accumulator[accumulator.length - 1].node.children.push(childVNode);\r\n } else {\r\n const paragraphVNode = new VNode(\r\n 'p',\r\n null,\r\n // eslint-disable-next-line no-nested-ternary\r\n isVText(childVNode)\r\n ? [childVNode]\r\n : // eslint-disable-next-line no-nested-ternary\r\n isVNode(childVNode)\r\n ? childVNode.tagName.toLowerCase() === 'li'\r\n ? [...childVNode.children]\r\n : [childVNode]\r\n : []\r\n );\r\n accumulator.push({\r\n // eslint-disable-next-line prettier/prettier, no-nested-ternary\r\n node: isVNode(childVNode)\r\n ? // eslint-disable-next-line prettier/prettier, no-nested-ternary\r\n childVNode.tagName.toLowerCase() === 'li'\r\n ? childVNode\r\n : childVNode.tagName.toLowerCase() !== 'p'\r\n ? paragraphVNode\r\n : childVNode\r\n : // eslint-disable-next-line prettier/prettier\r\n paragraphVNode,\r\n level: tempVNodeObject.level,\r\n type: tempVNodeObject.type,\r\n numberingId: tempVNodeObject.numberingId,\r\n });\r\n }\r\n }\r\n\r\n return accumulator;\r\n }, []);\r\n vNodeObjects = tempVNodeObjects.concat(vNodeObjects);\r\n }\r\n }\r\n\r\n return listElements;\r\n};\r\n\r\nasync function findXMLEquivalent(docxDocumentInstance, vNode, xmlFragment) {\r\n if (\r\n vNode.tagName === 'div' &&\r\n (vNode.properties.attributes.class === 'page-break' ||\r\n (vNode.properties.style && vNode.properties.style['page-break-after']))\r\n ) {\r\n const paragraphFragment = fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'p')\r\n .ele('@w', 'r')\r\n .ele('@w', 'br')\r\n .att('@w', 'type', 'page')\r\n .up()\r\n .up()\r\n .up();\r\n\r\n xmlFragment.import(paragraphFragment);\r\n return;\r\n }\r\n\r\n switch (vNode.tagName) {\r\n case 'h1':\r\n case 'h2':\r\n case 'h3':\r\n case 'h4':\r\n case 'h5':\r\n case 'h6':\r\n const headingFragment = await xmlBuilder.buildParagraph(\r\n vNode,\r\n {\r\n paragraphStyle: `Heading${vNode.tagName[1]}`,\r\n },\r\n docxDocumentInstance\r\n );\r\n xmlFragment.import(headingFragment);\r\n return;\r\n case 'span':\r\n case 'strong':\r\n case 'b':\r\n case 'em':\r\n case 'i':\r\n case 'u':\r\n case 'ins':\r\n case 'strike':\r\n case 'del':\r\n case 's':\r\n case 'sub':\r\n case 'sup':\r\n case 'mark':\r\n case 'p':\r\n case 'a':\r\n case 'blockquote':\r\n case 'code':\r\n case 'pre':\r\n const paragraphFragment = await xmlBuilder.buildParagraph(vNode, {}, docxDocumentInstance);\r\n xmlFragment.import(paragraphFragment);\r\n return;\r\n case 'figure':\r\n if (vNodeHasChildren(vNode)) {\r\n // eslint-disable-next-line no-plusplus\r\n for (let index = 0; index < vNode.children.length; index++) {\r\n const childVNode = vNode.children[index];\r\n if (childVNode.tagName === 'table') {\r\n const tableFragment = await xmlBuilder.buildTable(\r\n childVNode,\r\n {\r\n maximumWidth: docxDocumentInstance.availableDocumentSpace,\r\n rowCantSplit: docxDocumentInstance.tableRowCantSplit,\r\n },\r\n docxDocumentInstance\r\n );\r\n xmlFragment.import(tableFragment);\r\n // Adding empty paragraph for space after table\r\n const emptyParagraphFragment = await xmlBuilder.buildParagraph(null, {});\r\n xmlFragment.import(emptyParagraphFragment);\r\n } else if (childVNode.tagName === 'img') {\r\n const imageFragment = await buildImage(docxDocumentInstance, childVNode);\r\n if (imageFragment) {\r\n xmlFragment.import(imageFragment);\r\n }\r\n }\r\n }\r\n }\r\n return;\r\n case 'table':\r\n const tableFragment = await xmlBuilder.buildTable(\r\n vNode,\r\n {\r\n maximumWidth: docxDocumentInstance.availableDocumentSpace,\r\n rowCantSplit: docxDocumentInstance.tableRowCantSplit,\r\n },\r\n docxDocumentInstance\r\n );\r\n xmlFragment.import(tableFragment);\r\n // Adding empty paragraph for space after table\r\n const emptyParagraphFragment = await xmlBuilder.buildParagraph(null, {});\r\n xmlFragment.import(emptyParagraphFragment);\r\n return;\r\n case 'ol':\r\n case 'ul':\r\n await buildList(vNode, docxDocumentInstance, xmlFragment);\r\n return;\r\n case 'img':\r\n const imageFragment = await buildImage(docxDocumentInstance, vNode);\r\n if (imageFragment) {\r\n xmlFragment.import(imageFragment);\r\n }\r\n return;\r\n case 'br':\r\n const linebreakFragment = await xmlBuilder.buildParagraph(null, {});\r\n xmlFragment.import(linebreakFragment);\r\n return;\r\n }\r\n if (vNodeHasChildren(vNode)) {\r\n // eslint-disable-next-line no-plusplus\r\n for (let index = 0; index < vNode.children.length; index++) {\r\n const childVNode = vNode.children[index];\r\n // eslint-disable-next-line no-use-before-define\r\n await convertVTreeToXML(docxDocumentInstance, childVNode, xmlFragment);\r\n }\r\n }\r\n}\r\n\r\n// eslint-disable-next-line consistent-return\r\nexport async function convertVTreeToXML(docxDocumentInstance, vTree, xmlFragment) {\r\n if (!vTree) {\r\n // eslint-disable-next-line no-useless-return\r\n return '';\r\n }\r\n if (Array.isArray(vTree) && vTree.length) {\r\n // eslint-disable-next-line no-plusplus\r\n for (let index = 0; index < vTree.length; index++) {\r\n const vNode = vTree[index];\r\n await convertVTreeToXML(docxDocumentInstance, vNode, xmlFragment);\r\n }\r\n } else if (isVNode(vTree)) {\r\n await findXMLEquivalent(docxDocumentInstance, vTree, xmlFragment);\r\n } else if (isVText(vTree)) {\r\n xmlBuilder.buildTextElement(xmlFragment, escape(String(vTree.text)));\r\n }\r\n return xmlFragment;\r\n}\r\n\r\nasync function renderDocumentFile(docxDocumentInstance) {\r\n const vTree = convertHTML(docxDocumentInstance.htmlString);\r\n\r\n const xmlFragment = fragment({ namespaceAlias: { w: namespaces.w } });\r\n\r\n const populatedXmlFragment = await convertVTreeToXML(docxDocumentInstance, vTree, xmlFragment);\r\n\r\n return populatedXmlFragment;\r\n}\r\n\r\nexport{ renderDocumentFile};\r\n","/* eslint-disable import/prefer-default-export */\r\nexport { renderDocumentFile } from './render-document-file';\r\nexport { convertVTreeToXML } from './render-document-file';\r\n","class ListStyleBuilder {\r\n // defaults is an object passed in from constants.js / numbering with the following properties:\r\n // defaultOrderedListStyleType: 'decimal' (unless otherwise specified)\r\n constructor(defaults) {\r\n this.defaults = defaults || { defaultOrderedListStyleType: 'decimal' };\r\n }\r\n\r\n // eslint-disable-next-line class-methods-use-this\r\n getListStyleType(listType) {\r\n switch (listType) {\r\n case 'upper-roman':\r\n return 'upperRoman';\r\n case 'lower-roman':\r\n return 'lowerRoman';\r\n case 'upper-alpha':\r\n case 'upper-alpha-bracket-end':\r\n return 'upperLetter';\r\n case 'lower-alpha':\r\n case 'lower-alpha-bracket-end':\r\n return 'lowerLetter';\r\n case 'decimal':\r\n case 'decimal-bracket':\r\n return 'decimal';\r\n default:\r\n return this.defaults.defaultOrderedListStyleType;\r\n }\r\n }\r\n\r\n getListPrefixSuffix(style, lvl) {\r\n let listType = this.defaults.defaultOrderedListStyleType;\r\n\r\n if (style && style['list-style-type']) {\r\n listType = style['list-style-type'];\r\n }\r\n\r\n switch (listType) {\r\n case 'upper-roman':\r\n case 'lower-roman':\r\n case 'upper-alpha':\r\n case 'lower-alpha':\r\n return `%${lvl + 1}.`;\r\n case 'upper-alpha-bracket-end':\r\n case 'lower-alpha-bracket-end':\r\n case 'decimal-bracket-end':\r\n return `%${lvl + 1})`;\r\n case 'decimal-bracket':\r\n return `(%${lvl + 1})`;\r\n case 'decimal':\r\n default:\r\n return `%${lvl + 1}.`;\r\n }\r\n }\r\n}\r\n\r\nexport {ListStyleBuilder};\r\n","import { create, fragment } from 'xmlbuilder2';\r\nimport { nanoid } from 'nanoid';\r\n\r\nimport {\r\n generateCoreXML,\r\n generateStylesXML,\r\n generateNumberingXMLTemplate,\r\n generateThemeXML,\r\n documentRelsXML as documentRelsXMLString,\r\n settingsXML as settingsXMLString,\r\n webSettingsXML as webSettingsXMLString,\r\n contentTypesXML as contentTypesXMLString,\r\n fontTableXML as fontTableXMLString,\r\n genericRelsXML as genericRelsXMLString,\r\n generateDocumentTemplate,\r\n} from './schemas';\r\nimport { convertVTreeToXML } from './helpers';\r\nimport namespaces from './namespaces';\r\nimport {\r\n footerType as footerFileType,\r\n headerType as headerFileType,\r\n themeType as themeFileType,\r\n landscapeMargins,\r\n portraitMargins,\r\n defaultOrientation,\r\n landscapeWidth,\r\n landscapeHeight,\r\n applicationName,\r\n defaultFont,\r\n defaultFontSize,\r\n hyperlinkType,\r\n documentFileName,\r\n imageType,\r\n defaultDocumentOptions,\r\n} from './constants';\r\nimport {ListStyleBuilder} from './utils/list';\r\n\r\nfunction generateContentTypesFragments(contentTypesXML, type, objects) {\r\n if (objects && Array.isArray(objects)) {\r\n objects.forEach((object) => {\r\n const contentTypesFragment = fragment({ defaultNamespace: { ele: namespaces.contentTypes } })\r\n .ele('Override')\r\n .att('PartName', `/word/${type}${object[`${type}Id`]}.xml`)\r\n .att(\r\n 'ContentType',\r\n `application/vnd.openxmlformats-officedocument.wordprocessingml.${type}+xml`\r\n )\r\n .up();\r\n\r\n contentTypesXML.root().import(contentTypesFragment);\r\n });\r\n }\r\n}\r\n\r\nfunction generateSectionReferenceXML(documentXML, documentSectionType, objects, isEnabled) {\r\n if (isEnabled && objects && Array.isArray(objects) && objects.length) {\r\n const xmlFragment = fragment();\r\n objects.forEach(({ relationshipId, type }) => {\r\n const objectFragment = fragment({ namespaceAlias: { w: namespaces.w, r: namespaces.r } })\r\n .ele('@w', `${documentSectionType}Reference`)\r\n .att('@r', 'id', `rId${relationshipId}`)\r\n .att('@w', 'type', type)\r\n .up();\r\n xmlFragment.import(objectFragment);\r\n });\r\n\r\n documentXML.root().first().first().import(xmlFragment);\r\n }\r\n}\r\n\r\nfunction generateXMLString(xmlString) {\r\n const xmlDocumentString = create({ encoding: 'UTF-8', standalone: true }, xmlString);\r\n return xmlDocumentString.toString({ prettyPrint: true });\r\n}\r\n\r\n async function generateSectionXML(vTree, type = 'header') {\r\n debugger;\r\n const sectionXML = create({\r\n encoding: 'UTF-8',\r\n standalone: true,\r\n namespaceAlias: {\r\n a:namespaces.a,\r\n cdr:namespaces.cdr,\r\n o:namespaces.o,\r\n pic:namespaces.pic,\r\n r:namespaces.r,\r\n v:namespaces.v,\r\n ve:namespaces.ve,\r\n vt:namespaces.vt,\r\n w:namespaces.w,\r\n w10:namespaces.w10,\r\n wp:namespaces.wp,\r\n wne:namespaces.wne\r\n },\r\n }).ele('@w', type === 'header' ? 'hdr' : 'ftr');\r\n\r\n const XMLFragment = fragment();\r\n await convertVTreeToXML(this, vTree, XMLFragment);\r\n if (type === 'footer' && XMLFragment.first().node.tagName === 'p' && this.pageNumber) {\r\n XMLFragment.first().import(\r\n fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'fldSimple')\r\n .att('@w', 'instr', 'PAGE')\r\n .ele('@w', 'r')\r\n .up()\r\n .up()\r\n );\r\n }\r\n sectionXML.root().import(XMLFragment);\r\n\r\n const referenceName = type === 'header' ? 'Header' : 'Footer';\r\n this[`last${referenceName}Id`] += 1;\r\n\r\n return { [`${type}Id`]: this[`last${referenceName}Id`], [`${type}XML`]: sectionXML };\r\n}\r\n\r\nexport class DocxDocument {\r\n constructor(properties) {\r\n this.zip = properties.zip;\r\n this.htmlString = properties.htmlString;\r\n this.orientation = properties.orientation;\r\n this.pageSize = properties.pageSize || defaultDocumentOptions.pageSize;\r\n\r\n const isPortraitOrientation = this.orientation === defaultOrientation;\r\n const height = this.pageSize.height ? this.pageSize.height : landscapeHeight;\r\n const width = this.pageSize.width ? this.pageSize.width : landscapeWidth;\r\n\r\n this.width = isPortraitOrientation ? width : height;\r\n this.height = isPortraitOrientation ? height : width;\r\n\r\n const marginsObject = properties.margins;\r\n this.margins =\r\n // eslint-disable-next-line no-nested-ternary\r\n marginsObject && Object.keys(marginsObject).length\r\n ? marginsObject\r\n : isPortraitOrientation\r\n ? portraitMargins\r\n : landscapeMargins;\r\n\r\n this.availableDocumentSpace = this.width - this.margins.left - this.margins.right;\r\n this.title = properties.title || '';\r\n this.subject = properties.subject || '';\r\n this.creator = properties.creator || applicationName;\r\n this.keywords = properties.keywords || [applicationName];\r\n this.description = properties.description || '';\r\n this.lastModifiedBy = properties.lastModifiedBy || applicationName;\r\n this.revision = properties.revision || 1;\r\n this.createdAt = properties.createdAt || new Date();\r\n this.modifiedAt = properties.modifiedAt || new Date();\r\n this.headerType = properties.headerType || 'default';\r\n this.header = properties.header || false;\r\n this.footerType = properties.footerType || 'default';\r\n this.footer = properties.footer || false;\r\n this.font = properties.font || defaultFont;\r\n this.fontSize = properties.fontSize || defaultFontSize;\r\n this.complexScriptFontSize = properties.complexScriptFontSize || defaultFontSize;\r\n this.tableRowCantSplit =\r\n (properties.table && properties.table.row && properties.table.row.cantSplit) || false;\r\n this.pageNumber = properties.pageNumber || false;\r\n this.skipFirstHeaderFooter = properties.skipFirstHeaderFooter || false;\r\n this.lineNumber = properties.lineNumber ? properties.lineNumberOptions : null;\r\n\r\n this.lastNumberingId = 0;\r\n this.lastMediaId = 0;\r\n this.lastHeaderId = 0;\r\n this.lastFooterId = 0;\r\n this.stylesObjects = [];\r\n this.numberingObjects = [];\r\n this.relationshipFilename = documentFileName;\r\n this.relationships = [{ fileName: documentFileName, lastRelsId: 4, rels: [] }];\r\n this.mediaFiles = [];\r\n this.headerObjects = [];\r\n this.footerObjects = [];\r\n this.documentXML = null;\r\n\r\n this.generateContentTypesXML = this.generateContentTypesXML.bind(this);\r\n this.generateDocumentXML = this.generateDocumentXML.bind(this);\r\n this.generateCoreXML = this.generateCoreXML.bind(this);\r\n this.generateSettingsXML = this.generateSettingsXML.bind(this);\r\n this.generateWebSettingsXML = this.generateWebSettingsXML.bind(this);\r\n this.generateStylesXML = this.generateStylesXML.bind(this);\r\n this.generateFontTableXML = this.generateFontTableXML.bind(this);\r\n this.generateThemeXML = this.generateThemeXML.bind(this);\r\n this.generateNumberingXML = this.generateNumberingXML.bind(this);\r\n this.generateRelsXML = this.generateRelsXML.bind(this);\r\n this.createMediaFile = this.createMediaFile.bind(this);\r\n this.createDocumentRelationships = this.createDocumentRelationships.bind(this);\r\n this.generateHeaderXML = this.generateHeaderXML.bind(this);\r\n this.generateFooterXML = this.generateFooterXML.bind(this);\r\n this.generateSectionXML = generateSectionXML.bind(this);\r\n\r\n this.ListStyleBuilder = new ListStyleBuilder(properties.numbering);\r\n }\r\n\r\n generateContentTypesXML() {\r\n const contentTypesXML = create({ encoding: 'UTF-8', standalone: true }, contentTypesXMLString);\r\n\r\n generateContentTypesFragments(contentTypesXML, 'header', this.headerObjects);\r\n generateContentTypesFragments(contentTypesXML, 'footer', this.footerObjects);\r\n\r\n return contentTypesXML.toString({ prettyPrint: true });\r\n }\r\n\r\n generateDocumentXML() {\r\n const documentXML = create(\r\n { encoding: 'UTF-8', standalone: true },\r\n generateDocumentTemplate(this.width, this.height, this.orientation, this.margins)\r\n );\r\n // documentXML.root().first().import(this.documentXML);\r\n\r\n generateSectionReferenceXML(documentXML, 'header', this.headerObjects, this.header);\r\n generateSectionReferenceXML(documentXML, 'footer', this.footerObjects, this.footer);\r\n\r\n if ((this.header || this.footer) && this.skipFirstHeaderFooter) {\r\n documentXML\r\n .root()\r\n .first()\r\n .first()\r\n .import(fragment({ namespaceAlias: { w: namespaces.w } }).ele('@w', 'titlePg'));\r\n }\r\n if (this.lineNumber) {\r\n const { countBy, start, restart } = this.lineNumber;\r\n documentXML\r\n .root()\r\n .first()\r\n .first()\r\n .import(\r\n fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'lnNumType')\r\n .att('@w', 'countBy', countBy)\r\n .att('@w', 'start', start)\r\n .att('@w', 'restart', restart)\r\n );\r\n }\r\n\r\n return documentXML.toString({ prettyPrint: true });\r\n }\r\n\r\n generateCoreXML() {\r\n return generateXMLString(\r\n generateCoreXML(\r\n this.title,\r\n this.subject,\r\n this.creator,\r\n this.keywords,\r\n this.description,\r\n this.lastModifiedBy,\r\n this.revision,\r\n this.createdAt,\r\n this.modifiedAt\r\n )\r\n );\r\n }\r\n\r\n // eslint-disable-next-line class-methods-use-this\r\n generateSettingsXML() {\r\n return generateXMLString(settingsXMLString);\r\n }\r\n\r\n // eslint-disable-next-line class-methods-use-this\r\n generateWebSettingsXML() {\r\n return generateXMLString(webSettingsXMLString);\r\n }\r\n\r\n generateStylesXML() {\r\n return generateXMLString(\r\n generateStylesXML(this.font, this.fontSize, this.complexScriptFontSize)\r\n );\r\n }\r\n\r\n // eslint-disable-next-line class-methods-use-this\r\n generateFontTableXML() {\r\n return generateXMLString(fontTableXMLString);\r\n }\r\n\r\n generateThemeXML() {\r\n return generateXMLString(generateThemeXML(this.font));\r\n }\r\n\r\n generateNumberingXML() {\r\n const numberingXML = create(\r\n { encoding: 'UTF-8', standalone: true },\r\n generateNumberingXMLTemplate()\r\n );\r\n\r\n const abstractNumberingFragments = fragment();\r\n const numberingFragments = fragment();\r\n\r\n this.numberingObjects.forEach(({ numberingId, type, properties }) => {\r\n const abstractNumberingFragment = fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'abstractNum')\r\n .att('@w', 'abstractNumId', String(numberingId));\r\n\r\n [...Array(8).keys()].forEach((level) => {\r\n const levelFragment = fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'lvl')\r\n .att('@w', 'ilvl', level)\r\n .ele('@w', 'start')\r\n .att(\r\n '@w',\r\n 'val',\r\n type === 'ol'\r\n ? (properties.attributes && properties.attributes['data-start']) || 1\r\n : '1'\r\n )\r\n .up()\r\n .ele('@w', 'numFmt')\r\n .att(\r\n '@w',\r\n 'val',\r\n type === 'ol'\r\n ? this.ListStyleBuilder.getListStyleType(\r\n properties.style && properties.style['list-style-type']\r\n )\r\n : 'bullet'\r\n )\r\n .up()\r\n .ele('@w', 'lvlText')\r\n .att(\r\n '@w',\r\n 'val',\r\n type === 'ol' ? this.ListStyleBuilder.getListPrefixSuffix(properties.style, level) : ''\r\n )\r\n .up()\r\n .ele('@w', 'lvlJc')\r\n .att('@w', 'val', 'left')\r\n .up()\r\n .ele('@w', 'pPr')\r\n .ele('@w', 'tabs')\r\n .ele('@w', 'tab')\r\n .att('@w', 'val', 'num')\r\n .att('@w', 'pos', (level + 1) * 720)\r\n .up()\r\n .up()\r\n .ele('@w', 'ind')\r\n .att('@w', 'left', (level + 1) * 720)\r\n .att('@w', 'hanging', 360)\r\n .up()\r\n .up()\r\n .up();\r\n\r\n if (type === 'ul') {\r\n levelFragment.last().import(\r\n fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'rPr')\r\n .ele('@w', 'rFonts')\r\n .att('@w', 'ascii', 'Symbol')\r\n .att('@w', 'hAnsi', 'Symbol')\r\n .att('@w', 'hint', 'default')\r\n .up()\r\n .up()\r\n );\r\n }\r\n abstractNumberingFragment.import(levelFragment);\r\n });\r\n abstractNumberingFragment.up();\r\n abstractNumberingFragments.import(abstractNumberingFragment);\r\n\r\n numberingFragments.import(\r\n fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'num')\r\n .att('@w', 'numId', String(numberingId))\r\n .ele('@w', 'abstractNumId')\r\n .att('@w', 'val', String(numberingId))\r\n .up()\r\n .up()\r\n );\r\n });\r\n\r\n numberingXML.root().import(abstractNumberingFragments);\r\n numberingXML.root().import(numberingFragments);\r\n\r\n return numberingXML.toString({ prettyPrint: true });\r\n }\r\n\r\n // eslint-disable-next-line class-methods-use-this\r\n appendRelationships(xmlFragment, relationships) {\r\n relationships.forEach(({ relationshipId, type, target, targetMode }) => {\r\n xmlFragment.import(\r\n fragment({ defaultNamespace: { ele: namespaces.relationship } })\r\n .ele('Relationship')\r\n .att('Id', `rId${relationshipId}`)\r\n .att('Type', type)\r\n .att('Target', target)\r\n .att('TargetMode', targetMode)\r\n .up()\r\n );\r\n });\r\n }\r\n\r\n generateRelsXML() {\r\n const relationshipXMLStrings = this.relationships.map(({ fileName, rels }) => {\r\n const xmlFragment = create(\r\n { encoding: 'UTF-8', standalone: true },\r\n fileName === documentFileName ? documentRelsXMLString : genericRelsXMLString\r\n );\r\n this.appendRelationships(xmlFragment.root(), rels);\r\n\r\n return { fileName, xmlString: xmlFragment.toString({ prettyPrint: true }) };\r\n });\r\n return relationshipXMLStrings;\r\n }\r\n\r\n createNumbering(type, properties) {\r\n this.lastNumberingId += 1;\r\n this.numberingObjects.push({ numberingId: this.lastNumberingId, type, properties });\r\n\r\n return this.lastNumberingId;\r\n }\r\n\r\n createMediaFile(base64String) {\r\n // eslint-disable-next-line no-useless-escape\r\n const matches = base64String.match(/^data:([A-Za-z-+\\/]+);base64,(.+)$/);\r\n if (matches.length !== 3) {\r\n throw new Error('Invalid base64 string');\r\n }\r\n\r\n const base64FileContent = matches[2];\r\n // matches array contains file type in base64 format - image/jpeg and base64 stringified data\r\n const fileExtension =\r\n matches[1].match(/\\/(.*?)$/)[1] === 'octet-stream' ? 'png' : matches[1].match(/\\/(.*?)$/)[1];\r\n\r\n const fileNameWithExtension = `image-${nanoid()}.${fileExtension}`;\r\n\r\n this.lastMediaId += 1;\r\n\r\n return { id: this.lastMediaId, fileContent: base64FileContent, fileNameWithExtension };\r\n }\r\n\r\n createDocumentRelationships(fileName = 'document', type, target, targetMode = 'External') {\r\n debugger;\r\n let relationshipObject = this.relationships.find(\r\n (relationship) => relationship.fileName === fileName\r\n );\r\n let lastRelsId = 1;\r\n if (relationshipObject) {\r\n lastRelsId = relationshipObject.lastRelsId + 1;\r\n relationshipObject.lastRelsId = lastRelsId;\r\n } else {\r\n relationshipObject = { fileName, lastRelsId, rels: [] };\r\n this.relationships.push(relationshipObject);\r\n }\r\n let relationshipType;\r\n switch (type) {\r\n case hyperlinkType:\r\n relationshipType = namespaces.hyperlinks;\r\n break;\r\n case imageType:\r\n relationshipType = namespaces.images;\r\n break;\r\n case headerFileType:\r\n relationshipType = namespaces.headers;\r\n break;\r\n case footerFileType:\r\n relationshipType = namespaces.footers;\r\n break;\r\n case themeFileType:\r\n relationshipType = namespaces.themes;\r\n break;\r\n }\r\n\r\n relationshipObject.rels.push({\r\n relationshipId: lastRelsId,\r\n type: relationshipType,\r\n target,\r\n targetMode,\r\n });\r\n\r\n console.log(fileName)\r\n console.log( relationshipObject.rels)\r\n return lastRelsId;\r\n }\r\n\r\n generateHeaderXML(vTree) {\r\n return this.generateSectionXML(vTree, 'header');\r\n }\r\n\r\n generateFooterXML(vTree) {\r\n return this.generateSectionXML(vTree, 'footer');\r\n }\r\n}\r\n\r\n","export const defaultMargins = {\r\n top: 1440,\r\n right: 1440,\r\n bottom: 1440,\r\n left: 1440,\r\n header: 720,\r\n footer: 720,\r\n gutter: 0,\r\n}\r\n\r\nexport type Margins = typeof defaultMargins\r\n\r\nexport type Orient = 'landscape' | 'portrait'\r\n\r\nexport const documentTemplate = (width: number, height: number, orient: string, margins: Margins) => {\r\n return `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\r\n<w:document\r\n xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\"\r\n xmlns:m=\"http://schemas.openxmlformats.org/officeDocument/2006/math\"\r\n xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\"\r\n xmlns:wp=\"http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing\"\r\n xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\"\r\n xmlns:ns6=\"http://schemas.openxmlformats.org/schemaLibrary/2006/main\"\r\n xmlns:c=\"http://schemas.openxmlformats.org/drawingml/2006/chart\"\r\n xmlns:ns8=\"http://schemas.openxmlformats.org/drawingml/2006/chartDrawing\"\r\n xmlns:dgm=\"http://schemas.openxmlformats.org/drawingml/2006/diagram\"\r\n xmlns:pic=\"http://schemas.openxmlformats.org/drawingml/2006/picture\"\r\n xmlns:ns11=\"http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing\"\r\n xmlns:dsp=\"http://schemas.microsoft.com/office/drawing/2008/diagram\"\r\n xmlns:ns13=\"urn:schemas-microsoft-com:office:excel\"\r\n xmlns:o=\"urn:schemas-microsoft-com:office:office\"\r\n xmlns:v=\"urn:schemas-microsoft-com:vml\"\r\n xmlns:w10=\"urn:schemas-microsoft-com:office:word\"\r\n xmlns:ns17=\"urn:schemas-microsoft-com:office:powerpoint\"\r\n xmlns:odx=\"http://opendope.org/xpaths\"\r\n xmlns:odc=\"http://opendope.org/conditions\"\r\n xmlns:odq=\"http://opendope.org/questions\"\r\n xmlns:odi=\"http://opendope.org/components\"\r\n xmlns:odgm=\"http://opendope.org/SmartArt/DataHierarchy\"\r\n xmlns:ns24=\"http://schemas.openxmlformats.org/officeDocument/2006/bibliography\"\r\n xmlns:ns25=\"http://schemas.openxmlformats.org/drawingml/2006/compatibility\"\r\n xmlns:ns26=\"http://schemas.openxmlformats.org/drawingml/2006/lockedCanvas\">\r\n <w:body>\r\n <w:altChunk r:id=\"htmlChunk\" />\r\n <w:sectPr>\r\n <w:pgSz w:w=\"${width}\" w:h=\"${height}\" w:orient=\"${orient}\" />\r\n <w:pgMar w:top=\"${margins.top}\"\r\n w:right=\"${margins.right}\"\r\n w:bottom=\"${margins.bottom}\"\r\n w:left=\"${margins.left}\"\r\n w:header=\"${margins.header}\"\r\n w:footer=\"${margins.footer}\"\r\n w:gutter=\"${margins.gutter}\"/>\r\n </w:sectPr>\r\n </w:body>\r\n</w:document>\r\n`\r\n}\r\n","export const mhtDocumentTemplate = (htmlSource: string, contentParts: string) => {\r\n debugger;\r\n return `MIME-Version: 1.0\r\nContent-Type: multipart/related;\r\n type=\"text/html\";\r\n boundary=\"----=mhtDocumentPart\"\r\n\r\n\r\n------=mhtDocumentPart\r\nContent-Type: text/html;\r\n charset=\"utf-8\"\r\nContent-Transfer-Encoding: quoted-printable\r\nContent-Location: file:///C:/fake/document.html\r\n\r\n${htmlSource}\r\n\r\n${contentParts}\r\n\r\n------=mhtDocumentPart--\r\n`\r\n}\r\n","export const mhtPartTemplate = (\r\n contentType: string,\r\n contentEncoding: string,\r\n contentLocation: string,\r\n encodedContent: string,\r\n) => {\r\n return `------=mhtDocumentPart\r\nContent-Type: ${contentType}\r\nContent-Transfer-Encoding: ${contentEncoding}\r\nContent-Location: ${contentLocation}\r\n\r\n${encodedContent}\r\n`\r\n}\r\n","import { mhtDocumentTemplate, mhtPartTemplate } from './templates'\r\n\r\nexport function getMHTdocument(htmlSource: string) {\r\n debugger\r\n const ref = _prepareImageParts(htmlSource)\r\n const imageContentPartsString = ref.imageContentParts.join('\\n')\r\n htmlSource = ref.htmlSource.replace(/\\=/g, '=3D')\r\n return mhtDocumentTemplate(htmlSource, imageContentPartsString)\r\n}\r\n\r\nfunction _prepareImageParts(htmlSource: string) {\r\n debugger\r\n const imageContentParts: string[] = []\r\n const inlinedSrcPattern = /\"data:(\\w+\\/\\w+);(\\w+),(\\S+)\"/g\r\n const inlinedReplacer = (match: string, contentType: string, contentEncoding: string, encodedContent: string) => {\r\n const index = imageContentParts.length\r\n const extension = contentType.split('/')[1]\r\n const contentLocation = `file:///C:/fake/image${index}.${extension}`\r\n imageContentParts.push(mhtPartTemplate(contentType, contentEncoding, contentLocation, encodedContent))\r\n return `\\\"${contentLocation}\\\"`\r\n }\r\n if (!/<img/g.test(htmlSource)) {\r\n return { htmlSource, imageContentParts }\r\n }\r\n htmlSource = htmlSource.replace(inlinedSrcPattern, inlinedReplacer)\r\n return { htmlSource, imageContentParts }\r\n}\r\n","import { create } from 'xmlbuilder2';\r\nimport VNode from 'virtual-dom/vnode/vnode';\r\nimport VText from 'virtual-dom/vnode/vtext';\r\n// eslint-disable-next-line import/no-named-default\r\nimport { default as HTMLToVDOM } from 'html-to-vdom';\r\n\r\nimport { relsXML } from './schemas';\r\nimport {DocxDocument} from './docx-document';\r\nimport { renderDocumentFile } from './helpers';\r\nimport {getMHTdocument} from \"./word-work/utils\"\r\nimport {\r\n pixelRegex,\r\n pixelToTWIP,\r\n cmRegex,\r\n cmToTWIP,\r\n inchRegex,\r\n inchToTWIP,\r\n pointRegex,\r\n pointToHIP,\r\n} from './utils/unit-conversion';\r\nimport {\r\n defaultDocumentOptions,\r\n defaultHTMLString,\r\n relsFolderName,\r\n headerFileName,\r\n footerFileName,\r\n themeFileName,\r\n documentFileName,\r\n headerType,\r\n footerType,\r\n internalRelationship,\r\n wordFolder,\r\n themeFolder,\r\n themeType,\r\n} from './constants';\r\nimport {generateDocumentTemplateHeader,generateDocumentTemplateFooter,generateDocumentTemplateFooterWithoutPaging }from './schemas/document.template';\r\nconst convertHTML = HTMLToVDOM({\r\n VNode,\r\n VText,\r\n});\r\n\r\nconst mergeOptions = (options, patch) => ({ ...options, ...patch });\r\n\r\nconst fixupFontSize = (fontSize) => {\r\n let normalizedFontSize;\r\n if (pointRegex.test(fontSize)) {\r\n const matchedParts = fontSize.match(pointRegex);\r\n\r\n normalizedFontSize = pointToHIP(matchedParts[1]);\r\n } else if (fontSize) {\r\n // assuming it is already in HIP\r\n normalizedFontSize = fontSize;\r\n } else {\r\n normalizedFontSize = null;\r\n }\r\n\r\n return normalizedFontSize;\r\n};\r\n\r\nconst normalizeUnits = (dimensioningObject, defaultDimensionsProperty) => {\r\n let normalizedUnitResult = {};\r\n if (typeof dimensioningObject === 'object' && dimensioningObject !== null) {\r\n Object.keys(dimensioningObject).forEach((key) => {\r\n if (pixelRegex.test(dimensioningObject[key])) {\r\n const matchedParts = dimensioningObject[key].match(pixelRegex);\r\n normalizedUnitResult[key] = pixelToTWIP(matchedParts[1]);\r\n } else if (cmRegex.test(dimensioningObject[key])) {\r\n const matchedParts = dimensioningObject[key].match(cmRegex);\r\n normalizedUnitResult[key] = cmToTWIP(matchedParts[1]);\r\n } else if (inchRegex.test(dimensioningObject[key])) {\r\n const matchedParts = dimensioningObject[key].match(inchRegex);\r\n normalizedUnitResult[key] = inchToTWIP(matchedParts[1]);\r\n } else if (dimensioningObject[key]) {\r\n normalizedUnitResult[key] = dimensioningObject[key];\r\n } else {\r\n // incase value is something like 0\r\n normalizedUnitResult[key] = defaultDimensionsProperty[key];\r\n }\r\n });\r\n } else {\r\n // eslint-disable-next-line no-param-reassign\r\n normalizedUnitResult = null;\r\n }\r\n\r\n return normalizedUnitResult;\r\n};\r\n\r\nconst normalizeDocumentOptions = (documentOptions) => {\r\n const normalizedDocumentOptions = { ...documentOptions };\r\n Object.keys(documentOptions).forEach((key) => {\r\n // eslint-disable-next-line default-case\r\n switch (key) {\r\n case 'pageSize':\r\n case 'margins':\r\n normalizedDocumentOptions[key] = normalizeUnits(\r\n documentOptions[key],\r\n defaultDocumentOptions[key]\r\n );\r\n break;\r\n case 'fontSize':\r\n case 'complexScriptFontSize':\r\n normalizedDocumentOptions[key] = fixupFontSize(documentOptions[key]);\r\n break;\r\n }\r\n });\r\n\r\n return normalizedDocumentOptions;\r\n};\r\n\r\n// Ref: https://en.wikipedia.org/wiki/Office_Open_XML_file_formats\r\n// http://officeopenxml.com/anatomyofOOXML.php\r\n async function addFilesToContainer(\r\n zip,\r\n htmlString,\r\n suppliedDocumentOptions,\r\n headerHTMLString,\r\n footerHTMLString\r\n) {\r\n debugger;\r\n const normalizedDocumentOptions = normalizeDocumentOptions(suppliedDocumentOptions);\r\n const documentOptions = mergeOptions(defaultDocumentOptions, normalizedDocumentOptions);\r\n\r\n if (documentOptions.header && !headerHTMLString) {\r\n // eslint-disable-next-line no-param-reassign\r\n headerHTMLString = defaultHTMLString;\r\n }\r\n if (documentOptions.footer && !footerHTMLString) {\r\n // eslint-disable-next-line no-param-reassign\r\n footerHTMLString = defaultHTMLString;\r\n }\r\n\r\n const docxDocument = new DocxDocument({ zip, htmlString, ...documentOptions });\r\n // Conversion to Word XML happens here\r\n docxDocument.documentXML = await renderDocumentFile(docxDocument);\r\n debugger;\r\n zip\r\n .folder(relsFolderName)\r\n .file(\r\n '.rels',\r\n create({ encoding: 'UTF-8', standalone: true }, relsXML).toString({ prettyPrint: true }),\r\n { createFolders: false }\r\n );\r\n\r\n zip.folder('docProps').file('core.xml', docxDocument.generateCoreXML(), {\r\n createFolders: false,\r\n });\r\n\r\n if (docxDocument.header && headerHTMLString) {\r\n const vTree = convertHTML(headerHTMLString);\r\n\r\n docxDocument.relationshipFilename = headerFileName;\r\n const { headerId, headerXML } = await docxDocument.generateHeaderXML(vTree);\r\n docxDocument.relationshipFilename = documentFileName;\r\n const fileNameWithExt = `${headerType}${headerId}.xml`;\r\n\r\n const relationshipId = docxDocument.createDocumentRelationships(\r\n docxDocument.relationshipFilename,\r\n headerType,\r\n fileNameWithExt,\r\n internalRelationship\r\n );\r\n\r\n zip.folder(wordFolder).file(fileNameWithExt, generateDocumentTemplateHeader.toString({ prettyPrint: true }), {\r\n createFolders: false,\r\n });\r\n\r\n docxDocument.headerObjects.push({ headerId, relationshipId, type: docxDocument.headerType });\r\n }\r\n if (docxDocument.footer && footerHTMLString) {\r\n const vTree = convertHTML(footerHTMLString);\r\n\r\n docxDocument.relationshipFilename = footerFileName;\r\n const { footerId, footerXML } = await docxDocument.generateFooterXML(vTree);\r\n docxDocument.relationshipFilename = documentFileName;\r\n const fileNameWithExt = `${footerType}${footerId}.xml`;\r\n\r\n const relationshipId = docxDocument.createDocumentRelationships(\r\n docxDocument.relationshipFilename,\r\n footerType,\r\n fileNameWithExt,\r\n internalRelationship\r\n );\r\n console.log(footerXML.toString({ prettyPrint: true }))\r\n\r\n if(suppliedDocumentOptions.pageNumber)\r\n zip.folder(wordFolder).file(fileNameWithExt, generateDocumentTemplateFooter.toString({ prettyPrint: true }), {\r\n createFolders: false,\r\n });\r\n else\r\n zip.folder(wordFolder).file(fileNameWithExt, generateDocumentTemplateFooterWithoutPaging.toString({ prettyPrint: true }), {\r\n createFolders: false,\r\n });\r\n\r\n docxDocument.footerObjects.push({ footerId, relationshipId, type: docxDocument.footerType });\r\n }\r\n const themeFileNameWithExt = `${themeFileName}.xml`;\r\n docxDocument.createDocumentRelationships(\r\n docxDocument.relationshipFilename,\r\n themeType,\r\n `${themeFolder}/${themeFileNameWithExt}`,\r\n internalRelationship\r\n );\r\n zip\r\n .folder(wordFolder)\r\n .folder(themeFolder)\r\n .file(themeFileNameWithExt, docxDocument.generateThemeXML(), {\r\n createFolders: false,\r\n });\r\n\r\n zip\r\n .folder(wordFolder)\r\n .file('document.xml', docxDocument.generateDocumentXML(), { createFolders: false })\r\n .file('afchunk.mht', getMHTdocument(htmlString), {\r\n createFolders: false,\r\n })\r\n .file('afchunkheader.mht', getMHTdocument(headerHTMLString), {\r\n createFolders: false,\r\n })\r\n .file('afchunkfooter.mht', getMHTdocument(footerHTMLString), {\r\n createFolders: false,\r\n })\r\n .file('fontTable.xml', docxDocument.generateFontTableXML(), { createFolders: false })\r\n .file('styles.xml', docxDocument.generateStylesXML(), { createFolders: false })\r\n .file('numbering.xml', docxDocument.generateNumberingXML(), { createFolders: false })\r\n .file('settings.xml', docxDocument.generateSettingsXML(), { createFolders: false })\r\n .file('webSettings.xml', docxDocument.generateWebSettingsXML(), { createFolders: false });\r\n\r\n const relationshipXMLs = docxDocument.generateRelsXML();\r\n if (relationshipXMLs && Array.isArray(relationshipXMLs)) {\r\n relationshipXMLs.forEach(({ fileName, xmlString }) => {\r\n console.log(xmlString)\r\n zip.folder(wordFolder).folder(relsFolderName).file(`${fileName}.xml.rels`, xmlString, {\r\n createFolders: false,\r\n });\r\n });\r\n }\r\n\r\n if (relationshipXMLs && Array.isArray(relationshipXMLs)) {\r\n relationshipXMLs.forEach(({ fileName, xmlString }) => {\r\n zip.folder(wordFolder).folder(relsFolderName).file(`header1.xml.rels`, xmlString, {\r\n createFolders: false,\r\n });\r\n });\r\n }\r\n if (relationshipXMLs && Array.isArray(relationshipXMLs)) {\r\n relationshipXMLs.forEach(({ fileName, xmlString }) => {\r\n zip.folder(wordFolder).folder(relsFolderName).file(`footer1.xml.rels`, xmlString, {\r\n createFolders: false,\r\n });\r\n });\r\n }\r\n\r\n\r\n zip.file('[Content_Types].xml', docxDocument.generateContentTypesXML(), { createFolders: false });\r\n\r\n return zip;\r\n}\r\n\r\nexport { addFilesToContainer};\r\n","/* eslint-disable no-useless-escape */\r\nimport JSZip from 'jszip';\r\nimport {addFilesToContainer} from './html-to-docx';\r\n\r\nconst minifyHTMLString = (htmlString) => {\r\n try {\r\n if (typeof htmlString === 'string' || htmlString instanceof String) {\r\n const minifiedHTMLString = htmlString\r\n .replace(/\\n/g, ' ')\r\n .replace(/\\r/g, ' ')\r\n .replace(/\\r\\n/g, ' ')\r\n .replace(/[\\t]+\\</g, '<')\r\n .replace(/\\>[\\t ]+\\</g, '><')\r\n .replace(/\\>[\\t ]+$/g, '>');\r\n\r\n return minifiedHTMLString;\r\n }\r\n\r\n throw new Error('invalid html string');\r\n } catch (error) {\r\n return null;\r\n }\r\n};\r\n\r\nasync function generateContainer(\r\n htmlString,\r\n headerHTMLString,\r\n documentOptions = {},\r\n footerHTMLString\r\n) {\r\n const zip = new JSZip();\r\n\r\n let contentHTML = htmlString;\r\n let headerHTML = headerHTMLString;\r\n let footerHTML = footerHTMLString;\r\n if (htmlString) {\r\n contentHTML = minifyHTMLString(contentHTML);\r\n }\r\n if (headerHTMLString) {\r\n headerHTML = minifyHTMLString(headerHTML);\r\n }\r\n if (footerHTMLString) {\r\n footerHTML = minifyHTMLString(footerHTML);\r\n }\r\n\r\n await addFilesToContainer(zip, contentHTML, documentOptions, headerHTML, footerHTML);\r\n\r\n const buffer = await zip.generateAsync({ type: 'arraybuffer' });\r\n if (Object.prototype.hasOwnProperty.call(global, 'Buffer')) {\r\n return Buffer.from(new Uint8Array(buffer));\r\n }\r\n if (Object.prototype.hasOwnProperty.call(global, 'Blob')) {\r\n // eslint-disable-next-line no-undef\r\n return new Blob([buffer], {\r\n type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\r\n });\r\n }\r\n throw new Error(\r\n 'Add blob support using a polyfill eg https://github.com/bjornstar/blob-polyfill'\r\n );\r\n}\r\n\r\nexport {generateContainer};\r\n","import { Injectable } from '@angular/core';\r\nimport { generateContainer as GenerateDOCX } from '../config//word/index';\r\nimport { WordDocumentModel } from '../models/WordDocumentModel';\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class WordDocumentService {\r\n async generateWordByteFile(model: WordDocumentModel) {\r\n let documentOptions: any = {};\r\n if (model.options.isLandscape) documentOptions.orientation = 'landscape';\r\n documentOptions.pageSize = {\r\n width: model.options.pageWidth * 15,\r\n height: model.options.pageHeight * 15,\r\n };\r\n documentOptions.margins = {\r\n top: model.options.top * 15,\r\n right: model.options.right * 15,\r\n bottom: model.options.bottom * 15,\r\n left: model.options.left * 15,\r\n header: model.options.top * 15*2,\r\n footer: model.options.bottom * 15*2,\r\n gutter: 0,\r\n };\r\n documentOptions.footer = true;\r\n documentOptions.header = true;\r\n documentOptions.pageNumber = model.options.showPaging;\r\n documentOptions.table = { row: { cantSplit: true } };\r\n var fileBuffer = await GenerateDOCX(\r\n model.body,\r\n model.header,\r\n documentOptions,\r\n model.footer\r\n );\r\n return fileBuffer;\r\n }\r\n}\r\n","export class WordDocumentModel\r\n{\r\n header:string;\r\n footer:string;\r\n body:string;\r\n options:DocumentOptionsModel=new DocumentOptionsModel()\r\n}\r\nexport class DocumentOptionsModel\r\n{\r\n pageHeight:number;\r\n pageWidth:number;\r\n top:number;\r\n bottom:number;\r\n left:number;\r\n right:number;\r\n isLandscape:boolean;\r\n showPaging:boolean;\r\n\r\n}\r\n","/*\r\n * Public API Surface of @bnsights/bbsf-utilities\r\n */\r\n\r\nexport * from './lib/bbsf-utilities.module';\r\n\r\nexport * from './lib/shared/services/utility.service';\r\nexport * from './lib/shared/services/environment.service';\r\nexport * from './lib/shared/services/requesthandler.service'\r\nexport * from './lib/shared/services/stylesbundle.service'\r\nexport * from './lib/shared/services/translate.service'\r\nexport * from './lib/shared/services/controlvalidation.service'\r\nexport * from './lib/shared/services/masterlayout.service'\r\nexport * from './lib/shared/services/translationresolver.service'\r\nexport * from './lib/shared/services/AppearanceConfiguration.service'\r\nexport * from './lib/shared/services/configuration.service'\r\nexport * from './lib/shared/services/word-document.service'\r\n\r\nexport * from './lib/shared/config/environment';\r\n\r\n\r\nexport * from './lib/shared/authentication/auth.service';\r\n\r\n\r\nexport * from './lib/shared/models/RequestOptionsModel';\r\nexport * from './lib/shared/models/WordDocumentModel';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["fixupFontSize","convertHTML","xmlBuilder.buildParagraph","xmlBuilder.buildTable","xmlBuilder.buildTextElement","contentTypesXML","contentTypesXMLString","settingsXMLString","webSettingsXMLString","fontTableXMLString","documentRelsXMLString","genericRelsXMLString","headerFileType","footerFileType","themeFileType","GenerateDOCX"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"bnsights-bbsf-utilities.js","sources":["../../../projects/bbsf-utilities/src/lib/shared/services/translate.service.ts","../../../projects/bbsf-utilities/src/lib/shared/config/environment.ts","../../../projects/bbsf-utilities/src/lib/shared/services/environment.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/utility.service.ts","../../../projects/bbsf-utilities/src/lib/shared/models/UserModel.ts","../../../projects/bbsf-utilities/src/lib/shared/authentication/auth.service.ts","../../../projects/bbsf-utilities/src/lib/shared/models/RequestOptionsModel.ts","../../../projects/bbsf-utilities/src/lib/shared/services/requesthandler.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/stylesbundle.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/controlvalidation.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/masterlayout.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/configuration.service.ts","../../../projects/bbsf-utilities/src/lib/bbsf-utilities.module.ts","../../../projects/bbsf-utilities/src/lib/shared/services/translationresolver.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/AppearanceConfiguration.service.ts","../../../projects/bbsf-utilities/src/lib/shared/config/word/schemas/content-types.js","../../../projects/bbsf-utilities/src/lib/shared/config/word/namespaces.js","../../../projects/bbsf-utilities/src/lib/shared/config/word/constants.js","../../../projects/bbsf-utilities/src/lib/shared/config/word/schemas/core.js","../../../projects/bbsf-utilities/src/lib/shared/config/word/schemas/document-rels.js","../../../projects/bbsf-utilities/src/lib/shared/config/word/schemas/rels.js","../../../projects/bbsf-utilities/src/lib/shared/config/word/schemas/numbering.js","../../../projects/bbsf-utilities/src/lib/shared/config/word/schemas/styles.js","../../../projects/bbsf-utilities/src/lib/shared/config/word/schemas/font-table.js","../../../projects/bbsf-utilities/src/lib/shared/config/word/schemas/theme.js","../../../projects/bbsf-utilities/src/lib/shared/config/word/schemas/settings.js","../../../projects/bbsf-utilities/src/lib/shared/config/word/schemas/web-settings.js","../../../projects/bbsf-utilities/src/lib/shared/config/word/schemas/generic-rels.js","../../../projects/bbsf-utilities/src/lib/shared/config/word/schemas/document.template.js","../../../projects/bbsf-utilities/src/lib/shared/config/word/utils/color-conversion.js","../../../projects/bbsf-utilities/src/lib/shared/config/word/utils/unit-conversion.js","../../../projects/bbsf-utilities/src/lib/shared/config/word/utils/vnode.js","../../../projects/bbsf-utilities/src/lib/shared/config/word/utils/url.js","../../../projects/bbsf-utilities/src/lib/shared/config/word/helpers/xml-builder.js","../../../projects/bbsf-utilities/src/lib/shared/config/word/helpers/render-document-file.js","../../../projects/bbsf-utilities/src/lib/shared/config/word/helpers/index.js","../../../projects/bbsf-utilities/src/lib/shared/config/word/utils/list.js","../../../projects/bbsf-utilities/src/lib/shared/config/word/docx-document.js","../../../projects/bbsf-utilities/src/lib/shared/config/word/word-work/templates/documentTemplate.ts","../../../projects/bbsf-utilities/src/lib/shared/config/word/word-work/templates/mhtDocumentTemplate.ts","../../../projects/bbsf-utilities/src/lib/shared/config/word/word-work/templates/mhtPartTemplate.ts","../../../projects/bbsf-utilities/src/lib/shared/config/word/word-work/utils.ts","../../../projects/bbsf-utilities/src/lib/shared/config/word/html-to-docx.js","../../../projects/bbsf-utilities/src/lib/shared/config/word/index.js","../../../projects/bbsf-utilities/src/lib/shared/services/word-document.service.ts","../../../projects/bbsf-utilities/src/lib/shared/models/WordDocumentModel.ts","../../../projects/bbsf-utilities/src/public-api.ts","../../../projects/bbsf-utilities/src/bnsights-bbsf-utilities.ts"],"sourcesContent":["import { Injectable } from \"@angular/core\";\r\nimport { TranslateService } from \"@ngx-translate/core\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class BBSFTranslateService extends TranslateService {\r\n}","// This file can be replaced during build by using the `fileReplacements` array.\r\n// `ng build ---prod` replaces `environment.ts` with `environment.prod.ts`.\r\n// The list of file replacements can be found in `angular.json`.\r\n\r\nexport const environment = Object.assign({\r\n},\r\n(window as any).Environment);\r\n\r\n\r\n/*\r\n * In development mode, to ignore zone related error stack frames such as\r\n * `zone.run`, `zoneDelegate.invokeTask` for easier debugging, you can\r\n * import the following file, but please comment it out in production mode\r\n * because it will have performance impact when throw error\r\n */\r\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\r\n","import { Injectable } from '@angular/core';\r\nimport { environment } from '../config/environment';\r\nimport { AreaModel } from '../models/AreaModel';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EnvironmentService {\r\n\r\n\r\n static AreaList: AreaModel[] = []\r\n\r\n getEnvironmentObject() {\r\n return environment;\r\n }\r\n\r\n getBaseUrl() {\r\n let Url = environment[\"BBSF_BaseURL\"]\r\n return Url;\r\n }\r\n getApiUrl() {\r\n let Url = environment[\"BBSF_ApiUrl\"]\r\n return Url;\r\n }\r\n\r\n getProductionMode() {\r\n let Mode = environment[\"BBSF_IsProduction\"] as boolean\r\n\r\n return Mode;\r\n }\r\n\r\n getDefaultLanguage() {\r\n let Mode = environment[\"BBSF_DefaultLanguage\"] as string\r\n return Mode;\r\n }\r\n getIdentityServerUrl() {\r\n let Url = environment[\"BBSF_IdentityServerUrl\"]\r\n return Url;\r\n }\r\n getIsIdentityServerExternal() {\r\n let Mode = environment[\"BBSF_IsExternalIdentityServer\"] as string\r\n return Mode;\r\n }\r\n getIsIdentityServerClientId() {\r\n let Mode = environment[\"BBSF_IdentityServer_Client_Id\"] as string\r\n return Mode;\r\n }\r\n\r\n getIsIdentityServerClientSecret() {\r\n let Mode = environment[\"BBSF_IdentityServer_Client_Secret\"] as string\r\n return Mode;\r\n }\r\n\r\n\r\n\r\n}\r\n","import { Injectable, Optional, Host, SkipSelf, Component } from '@angular/core';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { BlockUI, NgBlockUI } from 'ng-block-ui';\r\nimport { BBSFTranslateService } from './translate.service';\r\nimport { AppInjector } from '../../bbsf-utilities.module';\r\nimport { EnvironmentService } from './environment.service';\r\n\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UtilityService {\r\n\r\n isCreatedBefore = false;\r\n @BlockUI() blockUI: NgBlockUI;\r\n\r\n constructor(private translator: BBSFTranslateService, private environmentService: EnvironmentService,) {\r\n\r\n }\r\n\r\n\r\n getResourceValue(Key: string): string {\r\n let ResourceValue = this.translator.instant(Key)\r\n return ResourceValue;\r\n\r\n }\r\n\r\n getCurrentLanguage() {\r\n let currentLanguage = this.environmentService.getDefaultLanguage();\r\n let lang = localStorage.getItem('language');\r\n if (lang)\r\n currentLanguage = lang;\r\n else\r\n localStorage.setItem('language', currentLanguage);\r\n return currentLanguage;\r\n }\r\n isCurrentLanguageEnglish() {\r\n return this.getCurrentLanguage() == \"en\"\r\n }\r\n isCurrentLanguageArabic() {\r\n return this.getCurrentLanguage() == \"ar\"\r\n }\r\n\r\n notifySuccessMessage(Message?: string, title?: string, time?: number, showHeader: boolean = true) {\r\n\r\n let MessageTemplate = this.getResourceValue(\"SuccessMessage\");\r\n let titleTemplate: string;\r\n if (Message) {\r\n MessageTemplate = Message;\r\n }\r\n if (title) {\r\n titleTemplate = title;\r\n }\r\n let toaster = AppInjector.get(ToastrService);\r\n showHeader ? toaster.success(MessageTemplate, titleTemplate) : toaster.success(MessageTemplate);\r\n }\r\n\r\n notifyErrorMessage(Message?: string, title?: string, time?: number, showHeader: boolean = true) {\r\n\r\n let MessageTemplate = this.getResourceValue(\"ErrorMessage\");\r\n let titleTemplate = this.getResourceValue(\"Error\");\r\n if (Message) {\r\n MessageTemplate = Message;\r\n }\r\n if (title) {\r\n titleTemplate = title;\r\n }\r\n const toaster = AppInjector.get(ToastrService);\r\n showHeader ? toaster.error(MessageTemplate, titleTemplate) : toaster.error(MessageTemplate);\r\n }\r\n\r\n notifyWarningMessage(Message?: string, title?: string, time?: number, showHeader: boolean = true) {\r\n\r\n let MessageTemplate = this.getResourceValue(\"WarningMessage\");\r\n let titleTemplate = this.getResourceValue(\"Warning\");\r\n if (Message) {\r\n MessageTemplate = Message;\r\n }\r\n if (title) {\r\n titleTemplate = title;\r\n }\r\n const toaster = AppInjector.get(ToastrService);\r\n showHeader ? toaster.warning(MessageTemplate, titleTemplate) : toaster.warning(MessageTemplate);\r\n }\r\n\r\n startBlockUI() {\r\n this.blockUI.start();\r\n }\r\n stopBlockUI() {\r\n this.blockUI.stop();\r\n }\r\n}\r\n","export class User {\r\n\r\n token_type: string;\r\n access_token: string;\r\n profile: any;\r\n expires_at:any\r\n}\r\n","import { Injectable, Injector } from '@angular/core';\r\nimport { HttpClient, HttpErrorResponse, HttpHeaders } from '@angular/common/http';\r\nimport { BehaviorSubject, Observable, Subject, throwError } from 'rxjs';\r\nimport { EnvironmentService } from '../services/environment.service';\r\nimport { BBSFTranslateService } from '../services/translate.service';\r\nimport { Router } from '@angular/router';\r\nimport { MasterLayoutService } from '../services/masterlayout.service';\r\nimport { JwtHelperService } from '@auth0/angular-jwt';\r\nimport { User } from '../models/UserModel';\r\nimport { CookieService } from 'ngx-cookie-service';\r\nimport { map, takeUntil, tap } from 'rxjs/operators';\r\nimport { UtilityService } from '../services/utility.service';\r\nconst TOKEN_KEY = 'access_token';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class AuthService {\r\n public redirectUrl: string = '';\r\n static user: User | null = null;\r\n user: User | null;\r\n static UserClaims: any = null;\r\n private jwtHelper: JwtHelperService = new JwtHelperService();\r\n private isAuthenticatedSubject = new BehaviorSubject<boolean>(this.hasToken());\r\n isAuthenticate$ = this.isAuthenticatedSubject.asObservable();\r\n //refresh\r\n static timers = [];\r\n static seconds = 0;\r\n\r\n constructor(private injector: Injector, private http: HttpClient, private environmentService: EnvironmentService, private translateService: BBSFTranslateService, private router: Router, private cookieService: CookieService,private utilityService:UtilityService) {\r\n this.user = this.getUserManager()\r\n }\r\n\r\n private hasToken(): boolean {\r\n const token = this.cookieService.get(TOKEN_KEY);\r\n return token && !this.jwtHelper.isTokenExpired(token);\r\n }\r\n\r\n getUserManager() {\r\n const token = this.cookieService.get(TOKEN_KEY);\r\n if (token)\r\n this.handleAccessTokenWithoutLanguage(token)\r\n return AuthService.user;\r\n }\r\n\r\n\r\n getUser() {\r\n this.user = AuthService.user;\r\n }\r\n storUser(User: any) {\r\n AuthService.user = this.user = this.user;\r\n }\r\n\r\n getCurrentUser() {\r\n return AuthService.user\r\n }\r\n\r\n async isAuthenticated(): Promise<boolean> {\r\n return AuthService.user != null && !this.jwtHelper.isTokenExpired(AuthService.user.access_token);\r\n }\r\n isUserInRole(allowedPermission: number[]) {\r\n let selectedPermissionSetID: number = Number.parseInt(\r\n this.user.profile['selectedpermissionsetid']\r\n );\r\n return allowedPermission.includes(selectedPermissionSetID);\r\n }\r\n\r\n authorizationHeaderValue(): string {\r\n return AuthService.user\r\n ? `${AuthService.user.token_type} ${AuthService.user.access_token}`\r\n : '';\r\n }\r\n\r\n name(): string {\r\n return AuthService.user != null ? AuthService.user.profile.given_name : '';\r\n }\r\n setUrl(url) {\r\n localStorage.setItem('redirectUrl', url);\r\n }\r\n getUrl() {\r\n return localStorage.getItem('redirectUrl') ?? \"/\";\r\n }\r\n signout() {\r\n AuthService.timers.map(t => clearInterval(t));\r\n AuthService.timers = [];\r\n if (!this.isAuthenticated()) {\r\n this.cookieService.delete(TOKEN_KEY);\r\n this.router.navigate(['/Admin/account/login'])\r\n }\r\n this.logout().subscribe(res => {\r\n this.cookieService.delete(TOKEN_KEY);\r\n this.router.navigate(['/Admin/account/login'])\r\n });\r\n }\r\n\r\n logout() {\r\n const httpOptions = {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n }),\r\n };\r\n let ApiUrl = '/Account/';\r\n return this.http.get(this.environmentService.getApiUrl() + ApiUrl + 'Logout', httpOptions);\r\n }\r\n\r\n\r\n clearUserSessionClaims() {\r\n const httpOptions = {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n }),\r\n };\r\n let ApiUrl = '/api/Home/';\r\n return this.http.get(this.environmentService.getBaseUrl() + ApiUrl + 'ClearCurrentUserSession', httpOptions);\r\n }\r\n\r\n\r\n async handleAccessToken(response: any): Promise<void> {\r\n const token = response;\r\n AuthService.user = new User();\r\n AuthService.user.token_type = \"Bearer\"\r\n AuthService.user.access_token = token;\r\n AuthService.user.profile = this.jwtHelper.decodeToken(token);\r\n AuthService.user.expires_at = this.jwtHelper.getTokenExpirationDate(token);\r\n AuthService.timers.map(t => clearInterval(t));\r\n AuthService.timers = [];\r\n this.setTokenSeconds()\r\n AuthService.timers.push(this.checkRefreshToken());\r\n this.user = AuthService.user\r\n await this.updateLanguage()\r\n this.cookieService.set(TOKEN_KEY, token, null, null, null, true, 'Strict');\r\n this.isAuthenticatedSubject.next(true);\r\n }\r\n\r\n handleAccessTokenWithoutLanguage(response: any) {\r\n const token = response;\r\n AuthService.user = new User();\r\n AuthService.user.token_type = \"Bearer\"\r\n AuthService.user.access_token = token;\r\n AuthService.user.profile = this.jwtHelper.decodeToken(token);\r\n AuthService.user.expires_at = this.jwtHelper.getTokenExpirationDate(token);\r\n this.setTokenSeconds()\r\n this.user = AuthService.user\r\n this.cookieService.set(TOKEN_KEY, token, null, null, null, true, 'Strict');\r\n this.isAuthenticatedSubject.next(true);\r\n }\r\n async updateLanguage() {\r\n if (\r\n !localStorage.getItem('language') ||\r\n localStorage.getItem('language') == this.user.profile.locale\r\n )\r\n localStorage.setItem('language', this.user.profile.locale);\r\n\r\n if (this.translateService.currentLang != localStorage.getItem('language')) {\r\n this.translateService.resetLang(this.translateService.currentLang);\r\n await this.translateService\r\n .reloadLang(localStorage.getItem('language'))\r\n .subscribe((res) => {\r\n console.log(res);\r\n });\r\n }\r\n }\r\n\r\n checkRefreshToken() {\r\n let date = new Date() as any;\r\n return setInterval(() => {\r\n if (Math.floor(AuthService.seconds) < 120 && this.isAuthenticated())\r\n this.refresh()\r\n AuthService.seconds--;\r\n }, 1000);\r\n }\r\n setTokenSeconds() {\r\n let date = new Date() as any;\r\n AuthService.seconds = (AuthService.user.expires_at - date) / 1000\r\n }\r\n refresh() {\r\n const httpOptions = {\r\n headers: new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n 'Authorization': this.authorizationHeaderValue(),\r\n }),\r\n };\r\n let ApiUrl = '/api/Home/';\r\n this.http.get(this.environmentService.getApiUrl() + ApiUrl + 'RefreshAccessToken', httpOptions).subscribe((res:any) => {\r\n this.cookieService.delete(TOKEN_KEY);\r\n this.handleAccessTokenWithoutLanguage(res.val)\r\n })\r\n }\r\n}\r\n","import { FormGroup } from \"@angular/forms\";\r\n\r\nexport class RequestOptionsModel {\r\n disableSuccessNotification: boolean=false;\r\n disableBlockUI: boolean = false;\r\n disableErrorHandler: boolean = false;\r\n customSuccessMessage: string;\r\n customErrorMessage: string;\r\n responseType:any=\"\"\r\n formGroup: FormGroup = null\r\n castResponsetoClass: boolean = true;\r\n\r\n}\r\n","import { Injectable, OnDestroy, Pipe } from '@angular/core';\r\nimport { HttpClient, HttpErrorResponse, HttpHeaders, HttpParams } from \"@angular/common/http\";\r\nimport { RequestOptionsModel } from '../models/RequestOptionsModel';\r\nimport { AuthService } from '../authentication/auth.service';\r\nimport { EnvironmentService } from './environment.service';\r\nimport { Observable, Subject, throwError } from 'rxjs';\r\nimport { UtilityService } from './utility.service';\r\nimport { map, takeUntil, tap } from 'rxjs/operators';\r\nimport { BBSFTranslateService } from './translate.service';\r\nimport { plainToClass } from 'class-transformer';\r\nimport { Router } from '@angular/router';\r\n\r\n\r\n@Injectable()\r\nexport class RequestHandlerService implements OnDestroy {\r\n private requestOptions: RequestOptionsModel = new RequestOptionsModel();\r\n private currentLanguage = \"\";\r\n public onDestroy$: Subject<void> = new Subject<void>();\r\n constructor\r\n (\r\n private http: HttpClient,\r\n private authService: AuthService,\r\n private environmentService: EnvironmentService,\r\n private utilityService: UtilityService,\r\n private bbsfTranslateService: BBSFTranslateService,\r\n private router: Router\r\n ) {\r\n //using localStorage to avoid call getCurrentLanguage() because it is not all to use async in constructor\r\n\r\n this.bbsfTranslateService.onLangChange.subscribe((event) => {\r\n if (this.currentLanguage != event.lang) {\r\n this.currentLanguage = event.lang;\r\n }\r\n })\r\n }\r\n\r\n public getLuckyNumber(): Observable<number> {\r\n\r\n return Observable.create((subject: Subject<number>) => {\r\n setInterval(() => {\r\n const number = Math.floor(Math.random() * 10);\r\n console.log(number)\r\n subject.next(number);\r\n }, 1000);\r\n }).pipe(\r\n takeUntil(this.onDestroy$));\r\n }\r\n\r\n\r\n get<T>(Url: string, params?: HttpParams, responseType?: new () => T, requestOptions?: RequestOptionsModel): Observable<T> {\r\n if (requestOptions)\r\n this.requestOptions = requestOptions;\r\n\r\n let headers = this.getHeaders();\r\n if (!this.requestOptions.disableBlockUI)\r\n this.utilityService.startBlockUI();\r\n let object: T;\r\n return this.http.get<T>(this.environmentService.getApiUrl() + Url, { headers: headers, params: params }).pipe(\r\n takeUntil(this.onDestroy$),\r\n tap((result) => {\r\n if (!this.requestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }, error => {\r\n if (!this.requestOptions.disableErrorHandler)\r\n this.handleError(error);\r\n }), map((data: T) => {\r\n if (this.requestOptions.castResponsetoClass)\r\n return plainToClass(responseType, data, { excludeExtraneousValues: true });\r\n else\r\n return data;\r\n })\r\n ) as Observable<T>;\r\n }\r\n\r\n post<T>(Url: string, model?: any, responseType?: new () => T, params?: HttpParams, requestOptions?: RequestOptionsModel): Observable<T> {\r\n\r\n if (requestOptions)\r\n this.requestOptions = requestOptions;\r\n\r\n let headers = this.getHeaders();\r\n if (!this.requestOptions.disableBlockUI)\r\n this.utilityService.startBlockUI();\r\n return this.http.post<T>(this.environmentService.getApiUrl() + Url, model, { headers: headers, params: params, responseType: this.requestOptions.responseType }).pipe(\r\n takeUntil(this.onDestroy$),\r\n tap((result) => {\r\n if (!this.requestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }, error => {\r\n if (!this.requestOptions.disableErrorHandler)\r\n this.handleError(error);\r\n }), map((data: T) => {\r\n if (this.requestOptions.castResponsetoClass)\r\n return plainToClass(responseType, data, { excludeExtraneousValues: true });\r\n else\r\n return data;\r\n })\r\n );\r\n }\r\n\r\n delete<T>(Url: string, deletedId: string, requestOptions?: RequestOptionsModel, responseType?: new () => T, params?: HttpParams): Observable<T> {\r\n if (requestOptions)\r\n this.requestOptions = requestOptions;\r\n\r\n let headers = this.getHeaders();\r\n if (!this.requestOptions.disableBlockUI)\r\n this.utilityService.startBlockUI();\r\n return this.http.delete<T>(this.environmentService.getApiUrl() + Url + `/${deletedId}`, { headers: headers, params: params }).pipe(\r\n takeUntil(this.onDestroy$),\r\n tap((result) => {\r\n if (!this.requestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }, error => {\r\n if (!this.requestOptions.disableErrorHandler)\r\n this.handleError(error);\r\n }), map((data: T) => {\r\n if (this.requestOptions.castResponsetoClass)\r\n return plainToClass(responseType, data, { excludeExtraneousValues: true });\r\n else\r\n return data;\r\n })\r\n );\r\n }\r\n\r\n put<T>(Url: string, model?: any, params?: HttpParams, responseType?: new () => T, requestOptions?: RequestOptionsModel): Observable<T> {\r\n if (requestOptions)\r\n this.requestOptions = requestOptions;\r\n\r\n let headers = this.getHeaders();\r\n if (!this.requestOptions.disableBlockUI)\r\n this.utilityService.startBlockUI();\r\n return this.http.put<T>(this.environmentService.getApiUrl() + Url, model, { headers: headers, params: params, responseType: this.requestOptions.responseType }).pipe(\r\n takeUntil(this.onDestroy$),\r\n tap((result) => {\r\n if (!this.requestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }, error => {\r\n if (!this.requestOptions.disableErrorHandler)\r\n this.handleError(error);\r\n }), map((data: T) => {\r\n if (this.requestOptions.castResponsetoClass)\r\n return plainToClass(responseType, data, { excludeExtraneousValues: true });\r\n else\r\n return data;\r\n })\r\n );\r\n }\r\n\r\n patch<T>(Url: string, model?: any, responseType?: new () => T, params?: HttpParams, requestOptions?: RequestOptionsModel): Observable<T> {\r\n\r\n if (requestOptions)\r\n this.requestOptions = requestOptions;\r\n\r\n let headers = new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n 'Authorization': this.authService.authorizationHeaderValue(),\r\n\r\n });\r\n this.currentLanguage = localStorage.getItem('language');\r\n headers = headers.set('Accept-Language', this.currentLanguage.toString());\r\n headers = headers.set('ignore-cookies', 'true');\r\n if (!this.requestOptions.disableBlockUI)\r\n this.utilityService.startBlockUI();\r\n\r\n return this.http.patch<T>(this.environmentService.getApiUrl() + Url, model, { headers: headers, params: params, responseType: this.requestOptions.responseType }).pipe(\r\n takeUntil(this.onDestroy$),\r\n tap((result) => {\r\n if (!this.requestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }, error => {\r\n if (!this.requestOptions.disableErrorHandler)\r\n this.handleError(error);\r\n }), map((data: T) => {\r\n if (this.requestOptions.castResponsetoClass)\r\n return plainToClass(responseType, data, { excludeExtraneousValues: true })\r\n else\r\n return data;\r\n })\r\n );\r\n }\r\n download<T>(Url: string, params?: HttpParams, requestOptions?: RequestOptionsModel): Observable<T> {\r\n if (requestOptions)\r\n this.requestOptions = requestOptions;\r\n\r\n let headers = this.getHeaders();\r\n if (!this.requestOptions.disableBlockUI)\r\n this.utilityService.startBlockUI();\r\n return this.http.get<T>(this.environmentService.getApiUrl() + Url, { headers: headers, params: params, responseType: this.requestOptions.responseType }).pipe(\r\n takeUntil(this.onDestroy$),\r\n tap((result) => {\r\n if (!this.requestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }, error => {\r\n if (!this.requestOptions.disableErrorHandler)\r\n this.handleError(error);\r\n })\r\n );\r\n }\r\n\r\n public destroyHandler(): void {\r\n this.onDestroy$.next();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n console.log(\"clearInterval\")\r\n this.destroyHandler()\r\n }\r\n\r\n private handleError(err: HttpErrorResponse) {\r\n var isEnglish = this.utilityService.getCurrentLanguage() == \"en\";\r\n if (err.error instanceof ErrorEvent) {\r\n this.utilityService.notifyErrorMessage()\r\n }\r\n else {\r\n if (err.status == 400)\r\n throwError(err);//error 400 is thrown to be catch by the Form component to handle Fluent validation errors\r\n else if (err.status == 401)\r\n this.router.navigate([\"/Admin/account/login\"])\r\n else if (err.status == 403)\r\n this.utilityService.notifyErrorMessage(isEnglish ? \"Sorry, You're not authorized to access this action\" : \"عذرا ليس لديك الصلاحيه لهذا الطلب\")\r\n else if (err.status == 510)\r\n this.utilityService.notifyErrorMessage(isEnglish ? \"Can not delete this item as it is related to others\" : \"لا يمكن حذف هذا العنصر لأنه مرتبط بعناصر أخرى\")\r\n else if (err.status == 515)\r\n this.utilityService.notifyErrorMessage((err.error ? err.error.Message : err.message))\r\n else {\r\n console.log(`error message is: ${err.error ? err.error.Message : err.message}`)\r\n this.utilityService.notifyErrorMessage(this.utilityService.getResourceValue(\"ErrorMassage\"))\r\n }\r\n }\r\n this.utilityService.stopBlockUI();\r\n }\r\n\r\n private getHeaders() {\r\n return new HttpHeaders({\r\n 'Content-Type': 'application/json',\r\n 'Authorization': this.authService.authorizationHeaderValue(),\r\n 'Client-Local-Time-Zone': Intl.DateTimeFormat().resolvedOptions().timeZone,\r\n 'Accept-Language': localStorage.getItem('language'),\r\n 'ignore-cookies': 'true'\r\n });\r\n }\r\n}\r\n","import { DOCUMENT } from '@angular/common';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { BlockUI, NgBlockUI } from 'ng-block-ui';\r\nimport { BBSFTranslateService } from './translate.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class StylesBundleService {\r\n\r\n constructor(@Inject(DOCUMENT) private document: Document, private translateService: BBSFTranslateService) { }\r\n\r\n loadThemes(lang: string, bundleEnglishName: string, bundleArabicName: string) {\r\n if (lang == \"ar\") {\r\n this.loadStyleBundle(bundleArabicName.toString())\r\n document.querySelector('html').setAttribute(\"b-lang\", \"ar\"); //use b-lang instead of lang to fix firefox number inputs in Arabic locale\r\n document.querySelector('html').setAttribute(\"dir\", \"rtl\");\r\n } else {\r\n this.loadStyleBundle(bundleEnglishName.toString())\r\n document.querySelector('html').setAttribute(\"b-lang\", \"en\");\r\n document.querySelector('html').setAttribute(\"dir\", \"ltr\");\r\n }\r\n\r\n }\r\n\r\n loadThemesColor(theme: string, bundleDarkName: string, bundleLightName: string) {\r\n if (theme == \"Light\")\r\n this.loadStyleBundle(bundleLightName.toString());\r\n else\r\n this.loadStyleBundle(bundleDarkName.toString())\r\n }\r\n\r\n loadStyleBundle(styleName: string) {\r\n const head = this.document.getElementsByTagName('head')[0];\r\n\r\n let themeLink = this.document.getElementById('client-theme') as HTMLLinkElement;\r\n\r\n if (themeLink && themeLink.href.includes(styleName)) {\r\n return;\r\n }\r\n else if (themeLink && !themeLink.href.includes(styleName)) {\r\n themeLink.remove();\r\n }\r\n const style = this.document.createElement('link');\r\n style.id = 'client-theme';\r\n style.rel = 'stylesheet';\r\n style.href = `${styleName}`;\r\n head.appendChild(style);\r\n }\r\n\r\n}\r\n\r\n","import { Injectable, Optional, Host, SkipSelf, Component } from '@angular/core';\r\nimport { IndividualConfig, ToastrService } from 'ngx-toastr';\r\nimport { BlockUI, NgBlockUI } from 'ng-block-ui';\r\nimport { AbstractControl, ControlContainer, ControlValueAccessor, NG_VALUE_ACCESSOR, FormControl, FormsModule, FormGroup } from '@angular/forms';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\nimport { ErrorModel } from '../models/ErrorModel';\r\nimport { UtilityService } from './utility.service';\r\nimport { RequestOptionsModel } from '../models/RequestOptionsModel';\r\n\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ControlValidationService {\r\n private requestOptions: RequestOptionsModel = new RequestOptionsModel();\r\n\r\n constructor(private utilityService: UtilityService) {\r\n }\r\n\r\n isCreatedBefor = false;\r\n\r\n @BlockUI() blockUI: NgBlockUI;\r\n\r\n showGlobalError(errorMessage?: string | string[], formId?: string, deleteOld?: boolean) {\r\n let globalErorrElement = document.getElementsByClassName('alert alert-InvalidValidation bg-light-danger text-danger')\r\n if (globalErorrElement.length > 0) {\r\n this.removeElementsByClass('alert alert-InvalidValidation bg-light-danger text-danger');\r\n }\r\n if (this.isCreatedBefor == true) {\r\n this.removeElementsByClass('alert alert-InvalidValidation bg-light-danger text-danger');\r\n }\r\n // tslint:disable-next-line: prefer-const\r\n if (!formId)\r\n formId = \"currentForm\"\r\n var object = document.getElementById(formId);\r\n const tagName = 'div';\r\n // tslint:disable-next-line: prefer-const\r\n var elementToAppend = document.createElement(tagName); // Your tag name here\r\n let message: string | string[] = \"\";\r\n\r\n if (!errorMessage || (typeof errorMessage == \"string\")) {\r\n if (localStorage.getItem('language') == \"ar\")\r\n message = errorMessage ? errorMessage : \"لديك بعص الأخطاء . من فضلك قم بالمراجعه \";\r\n else\r\n message = errorMessage ? errorMessage : \"You have some validation errors. Please check below\"\r\n elementToAppend.innerHTML = \"<ul class='list-unstyled m-0 py-3 d-flex align-items-center fs-6'><li><i class='fa fa-times-circle text-danger me-3 fs-2'></i>\" + message + \"</li></ul>\";\r\n elementToAppend.className += 'alert alert-InvalidValidation bg-light-danger text-danger';\r\n elementToAppend.id += 'errorId';\r\n // tslint:disable-next-line: prefer-for-of\r\n const elementToAppen = elementToAppend.cloneNode(true);\r\n // let targetElement = object.getElementsByClassName(\"b-control\")[0];\r\n object.insertBefore(elementToAppen, object.firstChild);\r\n }\r\n else {\r\n let ul = document.createElement(\"ul\");\r\n elementToAppend.appendChild(ul);\r\n\r\n for (const iterator of errorMessage) {\r\n let li = document.createElement(\"li\");\r\n li.innerHTML = iterator;\r\n ul.appendChild(li);\r\n }\r\n\r\n elementToAppend.className += 'alert alert-InvalidValidation bg-light-danger text-danger';\r\n elementToAppend.id += 'errorId';\r\n // tslint:disable-next-line: prefer-for-of\r\n const elementToAppen = elementToAppend.cloneNode(true);\r\n // let targetElement = object.getElementsByClassName(\"b-control\")[0];\r\n object.insertBefore(elementToAppen, object.firstChild);\r\n }\r\n\r\n this.isCreatedBefor = true;\r\n }\r\n\r\n RemoveGlobalError() {\r\n const removedList = document.getElementsByClassName('alert alert-InvalidValidation bg-light-danger text-danger');\r\n // tslint:disable-next-line: prefer-for-of\r\n for (let index = 0; index < removedList.length; index++) {\r\n const element = removedList[index];\r\n element.remove();\r\n }\r\n this.isCreatedBefor = false;\r\n }\r\n\r\n showInputErro(errors: any) {\r\n // show error on top of form \r\n this.showGlobalError();\r\n // remove old error from server\r\n this.removeElementsByClass('errortemplet');\r\n // Looping in error Object\r\n for (const key in errors) {\r\n if (errors.hasOwnProperty(key)) {\r\n for (const iterator of errors[key]) {\r\n const input = document.querySelectorAll('[ng-reflect-name=' + key + ']')[0];\r\n if ((input.attributes['ng-reflect-name'].value as string) === key) {\r\n this.removeElementsByClass('erroclass-' + key);\r\n const tagName = 'p'\r\n const elementToAppend = document.createElement(tagName); // Your tag name here\r\n elementToAppend.innerHTML = iterator;\r\n elementToAppend.style.color = 'red'\r\n elementToAppend.className += 'errortemplet erroclass-' + key;\r\n const elementToappen = elementToAppend.cloneNode(true);\r\n input.parentNode.insertBefore(elementToappen, input.lastChild);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n removeElementsByClass(className) {\r\n const elements = document.getElementsByClassName(className);\r\n while (elements.length > 0) {\r\n elements[0].parentNode.removeChild(elements[0]);\r\n }\r\n }\r\n\r\n renderServerErrors(form: FormGroup, err: HttpErrorResponse, requestOptions: RequestOptionsModel, formId?: string) {\r\n if (err.error == null) {\r\n return;\r\n }\r\n let errorsArray: string[] = [];\r\n\r\n this.requestOptions = requestOptions;\r\n\r\n if (err.error.validation_errors) {\r\n err.error.validation_errors.forEach((element: ErrorModel) => {\r\n let fieldName = element.field;\r\n let controlName = element.controlName;\r\n let message = element.message;\r\n if (form == null) {\r\n this.requestOptions.customErrorMessage ? this.utilityService.notifyErrorMessage(this.requestOptions.customErrorMessage) : this.utilityService.notifyErrorMessage(`${message}`);\r\n }\r\n else if (controlName && !this.hasControlName(form, controlName)) {\r\n errorsArray.push(`${fieldName}: ${message}`);\r\n }\r\n else {\r\n this.setFieldError(form, controlName, fieldName, message);\r\n this.showGlobalError(null, formId);\r\n }\r\n });\r\n\r\n if (errorsArray.length > 0)\r\n this.showGlobalError(errorsArray, formId)\r\n }\r\n\r\n }\r\n\r\n private hasControlName(form: FormGroup, controlName: string): boolean {\r\n let control = form.get(controlName);\r\n return control != null;\r\n }\r\n\r\n private setFieldError(form: FormGroup, controlName: string, fieldName: string, message: string) {\r\n let control = null\r\n\r\n if (controlName)\r\n control = this.getControlFormNameByFieldName(form, controlName);\r\n else\r\n control = this.getControlFormNameByFieldName(form, fieldName.split('.')[0]);\r\n\r\n let errors = { \"errorMassage\": message };\r\n let fieldNameArray = fieldName.split('.');\r\n if (fieldNameArray.length >= 1) {\r\n switch (fieldNameArray[fieldNameArray.length - 1].toLocaleLowerCase()) {\r\n case \"english\":\r\n let englishControl = control.get(\"English\")\r\n englishControl.setErrors(errors);\r\n break;\r\n case \"arabic\":\r\n let arabicControl = control.get(\"Arabic\")\r\n arabicControl.setErrors(errors);\r\n break;\r\n default:\r\n control.setErrors(errors);\r\n }\r\n }\r\n else {\r\n this.requestOptions.customErrorMessage ? this.utilityService.notifyErrorMessage(this.requestOptions.customErrorMessage) : this.utilityService.notifyErrorMessage(`${message}`)\r\n }\r\n }\r\n\r\n private getControlFormNameByFieldName(form: FormGroup, fieldName: string) {\r\n const formControls = form.controls;\r\n let controlName = Object.keys(formControls).find(c => c.toLocaleLowerCase() === fieldName.toLocaleLowerCase());\r\n let control = form.get(controlName);\r\n return control;\r\n }\r\n\r\n\r\n\r\n}\r\n","import { HttpParams } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { AuthService } from '../authentication/auth.service';\r\nimport { EnvironmentService } from './environment.service';\r\nimport { RequestHandlerService } from './requesthandler.service';\r\nimport { StylesBundleService } from './stylesbundle.service';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class MasterLayoutService {\r\n ApiUrl = '/api/Home/';\r\n constructor(private router: Router, private http: RequestHandlerService, private authService: AuthService, private stylesBundleService: StylesBundleService, private translate: TranslateService, private environmentService: EnvironmentService) { }\r\n\r\n switchLang(lang: string, bundleEnglishName: string, bundleArabicName: string) {\r\n this.changeLanguage(lang).subscribe((result) => {\r\n this.updateUserInfo().subscribe((Value) => {\r\n let UserInfoObject = Value as any;\r\n this.authService.handleAccessToken(UserInfoObject.token)\r\n this.stylesBundleService.loadThemes(\r\n lang,\r\n bundleEnglishName,\r\n bundleArabicName\r\n );\r\n localStorage.setItem('language', lang);\r\n this.translate.use(lang);\r\n });\r\n });\r\n }\r\n\r\n reloadComponent() {\r\n let currentUrl = this.router.url;\r\n this.router.routeReuseStrategy.shouldReuseRoute = () => false;\r\n this.router.onSameUrlNavigation = 'reload';\r\n this.router.navigate([currentUrl]);\r\n }\r\n\r\n private changeLanguage(key: string) {\r\n let params = new HttpParams();\r\n params = params.append('UserId', this.authService.user.profile.id);\r\n params = params.append('LanguageKey', key);\r\n return this.http.post(this.ApiUrl + 'UpdateLanguage', null, null, params);\r\n }\r\n\r\n getUserClaims() {\r\n return this.http.get(this.ApiUrl + 'GetUserClaims', null, null);\r\n }\r\n\r\n logError(error: string) {\r\n let params = new HttpParams();\r\n params = params.append('error', error);\r\n return this.http.post(this.ApiUrl + 'LogError', null, null, params);\r\n }\r\n\r\n private updateUserInfo() {\r\n return this.http.get(this.ApiUrl + 'UpdateUserInfo', null, null);\r\n\r\n }\r\n\r\n switchRole(permissionSetID: string) {\r\n this.updateRole(permissionSetID).subscribe((result) => {\r\n this.updateUserInfo().subscribe((Value) => {\r\n let UserInfoObject = Value as any;\r\n this.authService.handleAccessToken(UserInfoObject.token)\r\n });\r\n });\r\n }\r\n\r\n private updateRole(permissionSetID: string) {\r\n let params = new HttpParams();\r\n params = params.append('UserId', this.authService.user.profile.id);\r\n params = params.append('RoleID', permissionSetID);\r\n return this.http.post(this.ApiUrl + 'SwitchRole', null, null, params);\r\n }\r\n}\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { TranslateService } from \"@ngx-translate/core\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ConfigurationService {\r\n static JsonData:any[]=[]\r\n constructor(private httpClient: HttpClient){\r\n this.httpClient.get(\"./assets/config/configurations.json\").subscribe(data =>{\r\n ConfigurationService.JsonData = data as any[];\r\n })\r\n }\r\n getConfigurationValue(key:string) {\r\n return ConfigurationService.JsonData[key];\r\n }\r\n}","import { HttpClient } from '@angular/common/http';\r\nimport { Injector, NgModule } from '@angular/core';\r\nimport { RouterModule } from '@angular/router';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { BlockUIModule } from 'ng-block-ui';\r\nimport { ToastrModule } from 'ngx-toastr';\r\nimport { HttpModule } from '@angular/http';\r\nimport { UtilityService } from './shared/services/utility.service';\r\nimport { EnvironmentService } from './shared/services/environment.service';\r\nimport { AuthService } from './shared/authentication/auth.service';\r\nimport { RequestHandlerService } from './shared/services/requesthandler.service';\r\nimport { StylesBundleService } from './shared/services/stylesbundle.service';\r\nimport { BBSFTranslateService } from './shared/services/translate.service';\r\nimport { ControlValidationService } from './shared/services/controlvalidation.service';\r\nimport { MasterLayoutService } from './shared/services/masterlayout.service';\r\nimport { ConfigurationService } from './shared/services/configuration.service';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CookieService } from 'ngx-cookie-service';\r\nexport let AppInjector: Injector;\r\n\r\n@NgModule({\r\n declarations: [\r\n ],\r\n imports: [\r\n CommonModule,\r\n BlockUIModule.forRoot(),\r\n HttpModule,\r\n RouterModule,\r\n ToastrModule.forRoot(),\r\n\r\n ],\r\n exports: [\r\n ],\r\n providers: [\r\n UtilityService,\r\n EnvironmentService,\r\n AuthService,\r\n RequestHandlerService,\r\n StylesBundleService,\r\n TranslateService,\r\n BBSFTranslateService,\r\n ControlValidationService,\r\n MasterLayoutService,\r\n ConfigurationService,\r\n CookieService\r\n\r\n ]\r\n})\r\nexport class BBSFUtilitiesModule {\r\n constructor(private injector: Injector) {\r\n AppInjector = this.injector;\r\n\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { Resolve } from \"@angular/router\";\r\nimport { Observable } from \"rxjs\";\r\nimport { BBSFTranslateService } from \"./translate.service\";\r\n\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class TranslationResolverService implements Resolve<any> {\r\n constructor(private translateService: BBSFTranslateService) {}\r\n\r\n resolve(): Observable<any> {\r\n return this.translateService.getTranslation(\r\n this.translateService.currentLang\r\n );\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { TranslateService } from \"@ngx-translate/core\";\r\nimport { ConfigurationService } from \"./configuration.service\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AppearanceConfigurationService {\r\n constructor(private configService: ConfigurationService) {\r\n }\r\n\r\n getLayoutTheme() {\r\n return this.configService.getConfigurationValue('AnonymousLayout_Theme');\r\n }\r\n getFooterText() {\r\n return this.configService.getConfigurationValue('AnonymousLayout_FooterText');\r\n }\r\n getPageTitle() {\r\n return this.configService.getConfigurationValue('AnonymousLayout_PageTitle');\r\n }\r\n getFavIcon() {\r\n return this.configService.getConfigurationValue('AnonymousLayout_FavIcon');\r\n }\r\n getCustomStyles() {\r\n return this.configService.getConfigurationValue('AnonymousLayout_CustomStyles');\r\n }\r\n getLogo() {\r\n return this.configService.getConfigurationValue('AnonymousLayout_Logo');\r\n }\r\n}","const contentTypesXML = `\r\n <?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\r\n\r\n <Types xmlns=\"http://schemas.openxmlformats.org/package/2006/content-types\">\r\n <Default Extension=\"rels\" ContentType=\"application/vnd.openxmlformats-package.relationships+xml\" />\r\n <Default Extension=\"jpeg\" ContentType=\"image/jpeg\"/>\r\n <Default Extension=\"png\" ContentType=\"image/png\"/>\r\n <Default Extension=\"xml\" ContentType=\"application/xml\"/>\r\n <Override PartName=\"/_rels/.rels\" ContentType=\"application/vnd.openxmlformats-package.relationships+xml\"/>\r\n <Override PartName=\"/word/_rels/document.xml.rels\" ContentType=\"application/vnd.openxmlformats-package.relationships+xml\"/>\r\n <Override PartName=\"/word/_rels/footer1.xml.rels\" ContentType=\"application/vnd.openxmlformats-package.relationships+xml\"/>\r\n <Override PartName=\"/word/document.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml\"/>\r\n <Override PartName=\"/word/styles.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml\"/>\r\n <Override PartName=\"/word/numbering.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml\"/>\r\n <Override PartName=\"/word/theme/theme1.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.theme+xml\"/>\r\n <Override PartName=\"/word/fontTable.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.wordprocessingml.fontTable+xml\"/>\r\n <Override PartName=\"/docProps/core.xml\" ContentType=\"application/vnd.openxmlformats-package.core-properties+xml\"/>\r\n <Override PartName=\"/word/settings.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml\"/>\r\n <Override PartName=\"/word/webSettings.xml\" ContentType=\"application/vnd.openxmlformats-officedocument.wordprocessingml.webSettings+xml\"/>\r\n <Override PartName=\"/word/afchunk.mht\" ContentType=\"message/rfc822\"/>\r\n <Override PartName=\"/word/afchunkheader.mht\" ContentType=\"message/rfc822\"/>\r\n <Override PartName=\"/word/afchunkfooter.mht\" ContentType=\"message/rfc822\"/>\r\n </Types>\r\n`;\r\n\r\nexport { contentTypesXML};\r\n","const namespaces = {\r\n a: 'http://schemas.openxmlformats.org/drawingml/2006/main',\r\n b: 'http://schemas.openxmlformats.org/officeDocument/2006/bibliography',\r\n cdr: 'http://schemas.openxmlformats.org/drawingml/2006/chartDrawing',\r\n dc: 'http://purl.org/dc/elements/1.1/',\r\n dcmitype: 'http://purl.org/dc/dcmitype/',\r\n dcterms: 'http://purl.org/dc/terms/',\r\n o: 'urn:schemas-microsoft-com:office:office',\r\n pic: 'http://schemas.openxmlformats.org/drawingml/2006/picture',\r\n r: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships',\r\n v: 'urn:schemas-microsoft-com:vml',\r\n ve: 'http://schemas.openxmlformats.org/markup-compatibility/2006',\r\n vt: 'http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes',\r\n w: 'http://schemas.openxmlformats.org/wordprocessingml/2006/main',\r\n w10: 'urn:schemas-microsoft-com:office:word',\r\n wp: 'http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing',\r\n wne: 'http://schemas.microsoft.com/office/word/2006/wordml',\r\n xsd: 'http://www.w3.org/2001/XMLSchema',\r\n xsi: 'http://www.w3.org/2001/XMLSchema-instance',\r\n numbering: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/numbering',\r\n hyperlinks: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink',\r\n images: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/image',\r\n styles: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles',\r\n headers: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/header',\r\n footers: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer',\r\n themes: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme',\r\n coreProperties: 'http://schemas.openxmlformats.org/package/2006/metadata/core-properties',\r\n officeDocumentRelation:\r\n 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument',\r\n corePropertiesRelation:\r\n 'http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties',\r\n settingsRelation: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings',\r\n webSettingsRelation:\r\n 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/webSettings',\r\n sl: 'http://schemas.openxmlformats.org/schemaLibrary/2006/main',\r\n contentTypes: 'http://schemas.openxmlformats.org/package/2006/content-types',\r\n relationship: 'http://schemas.openxmlformats.org/package/2006/relationships',\r\n};\r\n\r\nexport default namespaces;\r\n","import { cloneDeep } from 'lodash';\r\n\r\nconst applicationName = 'html-to-docx';\r\nconst defaultOrientation = 'portrait';\r\nconst landscapeWidth = 15840;\r\nconst landscapeHeight = 12240;\r\nconst landscapeMargins = {\r\n top: 1800,\r\n right: 1440,\r\n bottom: 1800,\r\n left: 1440,\r\n header: 720,\r\n footer: 720,\r\n gutter: 0,\r\n};\r\nconst portraitMargins = {\r\n top: 1440,\r\n right: 1800,\r\n bottom: 1440,\r\n left: 1800,\r\n header: 720,\r\n footer: 720,\r\n gutter: 0,\r\n};\r\nconst defaultFont = 'Times New Roman';\r\nconst defaultFontSize = 22;\r\nconst defaultDocumentOptions = {\r\n orientation: defaultOrientation,\r\n margins: cloneDeep(portraitMargins),\r\n title: '',\r\n subject: '',\r\n creator: applicationName,\r\n keywords: [applicationName],\r\n description: '',\r\n lastModifiedBy: applicationName,\r\n revision: 1,\r\n createdAt: new Date(),\r\n modifiedAt: new Date(),\r\n headerType: 'default',\r\n header: false,\r\n footerType: 'default',\r\n footer: false,\r\n font: defaultFont,\r\n fontSize: defaultFontSize,\r\n complexScriptFontSize: defaultFontSize,\r\n table: {\r\n row: {\r\n cantSplit: false,\r\n },\r\n },\r\n pageSize: {\r\n width: landscapeHeight,\r\n height: landscapeWidth,\r\n },\r\n pageNumber: false,\r\n skipFirstHeaderFooter: false,\r\n lineNumber: false,\r\n lineNumberOptions: {\r\n countBy: 1,\r\n start: 0,\r\n restart: 'continuous',\r\n },\r\n numbering: {\r\n defaultOrderedListStyleType: 'decimal',\r\n },\r\n};\r\nconst defaultHTMLString = '<p></p>';\r\nconst relsFolderName = '_rels';\r\nconst headerFileName = 'header1';\r\nconst footerFileName = 'footer1';\r\nconst themeFileName = 'theme1';\r\nconst documentFileName = 'document';\r\nconst headerType = 'header';\r\nconst footerType = 'footer';\r\nconst themeType = 'theme';\r\nconst hyperlinkType = 'hyperlink';\r\nconst imageType = 'image';\r\nconst internalRelationship = 'Internal';\r\nconst wordFolder = 'word';\r\nconst themeFolder = 'theme';\r\nconst paragraphBordersObject = {\r\n top: {\r\n size: 0,\r\n spacing: 3,\r\n color: 'FFFFFF',\r\n },\r\n left: {\r\n size: 0,\r\n spacing: 3,\r\n color: 'FFFFFF',\r\n },\r\n bottom: {\r\n size: 0,\r\n spacing: 3,\r\n color: 'FFFFFF',\r\n },\r\n right: {\r\n size: 0,\r\n spacing: 3,\r\n color: 'FFFFFF',\r\n },\r\n};\r\nconst colorlessColors = ['transparent', 'auto'];\r\nconst verticalAlignValues = ['top', 'middle', 'bottom'];\r\n\r\nexport {\r\n defaultDocumentOptions,\r\n defaultHTMLString,\r\n relsFolderName,\r\n headerFileName,\r\n footerFileName,\r\n themeFileName,\r\n documentFileName,\r\n headerType,\r\n footerType,\r\n themeType,\r\n internalRelationship,\r\n wordFolder,\r\n themeFolder,\r\n landscapeMargins,\r\n portraitMargins,\r\n defaultOrientation,\r\n landscapeWidth,\r\n landscapeHeight,\r\n applicationName,\r\n defaultFont,\r\n defaultFontSize,\r\n hyperlinkType,\r\n imageType,\r\n paragraphBordersObject,\r\n colorlessColors,\r\n verticalAlignValues,\r\n};\r\n","import namespaces from '../namespaces';\r\nimport { applicationName } from '../constants';\r\n\r\nconst generateCoreXML = (\r\n title = '',\r\n subject = '',\r\n creator = applicationName,\r\n keywords = [applicationName],\r\n description = '',\r\n lastModifiedBy = applicationName,\r\n revision = 1,\r\n createdAt = new Date(),\r\n modifiedAt = new Date()\r\n) => `\r\n <?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\r\n\r\n <cp:coreProperties\r\n xmlns:cp=\"${namespaces.coreProperties}\"\r\n xmlns:dc=\"${namespaces.dc}\"\r\n xmlns:dcterms=\"${namespaces.dcterms}\"\r\n xmlns:dcmitype=\"${namespaces.dcmitype}\"\r\n xmlns:xsi=\"${namespaces.xsi}\"\r\n >\r\n <dc:title>${title}</dc:title>\r\n <dc:subject>${subject}</dc:subject>\r\n <dc:creator>${creator}</dc:creator>\r\n ${\r\n keywords && Array.isArray(keywords)\r\n ? `<cp:keywords>${keywords.join(', ')}</cp:keywords>`\r\n : ''\r\n }\r\n <dc:description>${description}</dc:description>\r\n <cp:lastModifiedBy>${lastModifiedBy}</cp:lastModifiedBy>\r\n <cp:revision>${revision}</cp:revision>\r\n <dcterms:created xsi:type=\"dcterms:W3CDTF\">${\r\n createdAt instanceof Date ? createdAt.toISOString() : new Date().toISOString()\r\n }</dcterms:created>\r\n <dcterms:modified xsi:type=\"dcterms:W3CDTF\">${\r\n modifiedAt instanceof Date ? modifiedAt.toISOString() : new Date().toISOString()\r\n }</dcterms:modified>\r\n </cp:coreProperties>\r\n `;\r\n\r\nexport { generateCoreXML};\r\n","import namespaces from '../namespaces';\r\n\r\nconst documentRelsXML = `\r\n <?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\r\n\r\n <Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">\r\n <Relationship Id=\"rId1\" Type=\"${namespaces.numbering}\" Target=\"numbering.xml\"/>\r\n <Relationship Id=\"rId2\" Type=\"${namespaces.styles}\" Target=\"styles.xml\"/>\r\n <Relationship Id=\"rId3\" Type=\"${namespaces.settingsRelation}\" Target=\"settings.xml\"/>\r\n <Relationship Id=\"rId4\" Type=\"${namespaces.webSettingsRelation}\" Target=\"webSettings.xml\"/>\r\n <Relationship Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/aFChunk\" Target=\"/word/afchunk.mht\" Id=\"htmlChunk\" />\r\n <Relationship Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/aFChunk\" Target=\"/word/afchunkheader.mht\" Id=\"htmlChunkHeader\" />\r\n <Relationship Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/aFChunk\" Target=\"/word/afchunkfooter.mht\" Id=\"htmlChunkFooter\" />\r\n </Relationships>\r\n`;\r\n\r\nexport {documentRelsXML};\r\n","import namespaces from '../namespaces';\r\n\r\nconst relsXML = `\r\n <?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\r\n\r\n <Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">\r\n <Relationship Id=\"rId1\" Type=\"${namespaces.officeDocumentRelation}\" Target=\"word/document.xml\"/>\r\n <Relationship Id=\"rId2\" Type=\"${namespaces.corePropertiesRelation}\" Target=\"docProps/core.xml\"/>\r\n </Relationships>\r\n`;\r\n\r\nexport {relsXML};\r\n","import namespaces from '../namespaces';\r\n\r\nconst generateNumberingXMLTemplate = () => `\r\n <?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\r\n\r\n <w:numbering\r\n xmlns:w=\"${namespaces.w}\"\r\n xmlns:ve=\"${namespaces.ve}\"\r\n xmlns:o=\"${namespaces.o}\"\r\n xmlns:r=\"${namespaces.r}\"\r\n xmlns:v=\"${namespaces.v}\"\r\n xmlns:wp=\"${namespaces.wp}\"\r\n xmlns:w10=\"${namespaces.w10}\"\r\n xmlns:wne=\"${namespaces.wne}\">\r\n </w:numbering>\r\n `;\r\n\r\nexport {generateNumberingXMLTemplate};\r\n","import { defaultFont, defaultFontSize } from '../constants';\r\nimport namespaces from '../namespaces';\r\n\r\nconst generateStylesXML = (\r\n font = defaultFont,\r\n fontSize = defaultFontSize,\r\n complexScriptFontSize = defaultFontSize\r\n) => `\r\n <?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\r\n\r\n <w:styles xmlns:w=\"${namespaces.w}\" xmlns:r=\"${namespaces.r}\">\r\n\t<w:docDefaults>\r\n\t <w:rPrDefault>\r\n\t\t<w:rPr>\r\n\t\t <w:rFonts w:ascii=\"${font}\" w:eastAsiaTheme=\"minorHAnsi\" w:hAnsiTheme=\"minorHAnsi\" w:cstheme=\"minorBidi\" />\r\n\t\t <w:sz w:val=\"${fontSize}\" />\r\n\t\t <w:szCs w:val=\"${complexScriptFontSize}\" />\r\n\t\t <w:lang w:val=\"en-US\" w:eastAsia=\"en-US\" w:bidi=\"ar-SA\" />\r\n\t\t</w:rPr>\r\n\t </w:rPrDefault>\r\n\t <w:pPrDefault>\r\n\t\t<w:pPr>\r\n\t\t <w:spacing w:after=\"120\" w:line=\"240\" w:lineRule=\"atLeast\" />\r\n\t\t</w:pPr>\r\n\t </w:pPrDefault>\r\n\t</w:docDefaults>\r\n\t<w:style w:type=\"character\" w:styleId=\"Hyperlink\">\r\n\t <w:name w:val=\"Hyperlink\" />\r\n\t <w:rPr>\r\n\t\t<w:color w:val=\"0000FF\" />\r\n\t\t<w:u w:val=\"single\" />\r\n\t </w:rPr>\r\n\t</w:style>\r\n\t<w:style w:type=\"paragraph\" w:styleId=\"Heading1\">\r\n\t <w:name w:val=\"heading 1\" />\r\n\t <w:basedOn w:val=\"Normal\" />\r\n\t <w:next w:val=\"Normal\" />\r\n\t <w:uiPriority w:val=\"9\" />\r\n\t <w:qFormat />\r\n\t <w:pPr>\r\n\t\t<w:keepNext />\r\n\t\t<w:keepLines />\r\n\t\t<w:spacing w:before=\"480\" />\r\n\t\t<w:outlineLvl w:val=\"0\" />\r\n\t </w:pPr>\r\n\t <w:rPr>\r\n\t\t<w:b />\r\n\t\t<w:sz w:val=\"48\" />\r\n\t\t<w:szCs w:val=\"48\" />\r\n\t </w:rPr>\r\n\t</w:style>\r\n\t<w:style w:type=\"paragraph\" w:styleId=\"Heading2\">\r\n\t <w:name w:val=\"heading 2\" />\r\n\t <w:basedOn w:val=\"Normal\" />\r\n\t <w:next w:val=\"Normal\" />\r\n\t <w:uiPriority w:val=\"9\" />\r\n\t <w:unhideWhenUsed />\r\n\t <w:qFormat />\r\n\t <w:pPr>\r\n\t\t<w:keepNext />\r\n\t\t<w:keepLines />\r\n\t\t<w:spacing w:before=\"360\" w:after=\"80\" />\r\n\t\t<w:outlineLvl w:val=\"1\" />\r\n\t </w:pPr>\r\n\t <w:rPr>\r\n\t\t<w:b />\r\n\t\t<w:sz w:val=\"36\" />\r\n\t\t<w:szCs w:val=\"36\" />\r\n\t </w:rPr>\r\n\t</w:style>\r\n\t<w:style w:type=\"paragraph\" w:styleId=\"Heading3\">\r\n\t <w:name w:val=\"heading 3\" />\r\n\t <w:basedOn w:val=\"Normal\" />\r\n\t <w:next w:val=\"Normal\" />\r\n\t <w:uiPriority w:val=\"9\" />\r\n\t <w:semiHidden />\r\n\t <w:unhideWhenUsed />\r\n\t <w:qFormat />\r\n\t <w:pPr>\r\n\t\t<w:keepNext />\r\n\t\t<w:keepLines />\r\n\t\t<w:spacing w:before=\"280\" w:after=\"80\" />\r\n\t\t<w:outlineLvl w:val=\"2\" />\r\n\t </w:pPr>\r\n\t <w:rPr>\r\n\t\t<w:b />\r\n\t\t<w:sz w:val=\"28\" />\r\n\t\t<w:szCs w:val=\"28\" />\r\n\t </w:rPr>\r\n\t</w:style>\r\n\t<w:style w:type=\"paragraph\" w:styleId=\"Heading4\">\r\n\t <w:name w:val=\"heading 4\" />\r\n\t <w:basedOn w:val=\"Normal\" />\r\n\t <w:next w:val=\"Normal\" />\r\n\t <w:uiPriority w:val=\"9\" />\r\n\t <w:semiHidden />\r\n\t <w:unhideWhenUsed />\r\n\t <w:qFormat />\r\n\t <w:pPr>\r\n\t\t<w:keepNext />\r\n\t\t<w:keepLines />\r\n\t\t<w:spacing w:before=\"240\" w:after=\"40\" />\r\n\t\t<w:outlineLvl w:val=\"3\" />\r\n\t </w:pPr>\r\n\t <w:rPr>\r\n\t\t<w:b />\r\n\t\t<w:sz w:val=\"24\" />\r\n\t\t<w:szCs w:val=\"24\" />\r\n\t </w:rPr>\r\n\t</w:style>\r\n\t<w:style w:type=\"paragraph\" w:styleId=\"Heading5\">\r\n\t <w:name w:val=\"heading 5\" />\r\n\t <w:basedOn w:val=\"Normal\" />\r\n\t <w:next w:val=\"Normal\" />\r\n\t <w:uiPriority w:val=\"9\" />\r\n\t <w:semiHidden />\r\n\t <w:unhideWhenUsed />\r\n\t <w:qFormat />\r\n\t <w:pPr>\r\n\t\t<w:keepNext />\r\n\t\t<w:keepLines />\r\n\t\t<w:spacing w:before=\"220\" w:after=\"40\" />\r\n\t\t<w:outlineLvl w:val=\"4\" />\r\n\t </w:pPr>\r\n\t <w:rPr>\r\n\t\t<w:b />\r\n\t </w:rPr>\r\n\t</w:style>\r\n\t<w:style w:type=\"paragraph\" w:styleId=\"Heading6\">\r\n\t <w:name w:val=\"heading 6\" />\r\n\t <w:basedOn w:val=\"Normal\" />\r\n\t <w:next w:val=\"Normal\" />\r\n\t <w:uiPriority w:val=\"9\" />\r\n\t <w:semiHidden />\r\n\t <w:unhideWhenUsed />\r\n\t <w:qFormat />\r\n\t <w:pPr>\r\n\t\t<w:keepNext />\r\n\t\t<w:keepLines />\r\n\t\t<w:spacing w:before=\"200\" w:after=\"40\" />\r\n\t\t<w:outlineLvl w:val=\"5\" />\r\n\t </w:pPr>\r\n\t <w:rPr>\r\n\t\t<w:b />\r\n\t\t<w:sz w:val=\"20\" />\r\n\t\t<w:szCs w:val=\"20\" />\r\n\t </w:rPr>\r\n\t</w:style>\r\n </w:styles>\r\n `;\r\n\r\nexport {generateStylesXML};\r\n","import namespaces from '../namespaces';\r\n\r\nconst fontTableXML = `\r\n <?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\r\n\r\n <w:fonts\r\n xmlns:r=\"${namespaces.r}\"\r\n xmlns:w=\"${namespaces.w}\"\r\n >\r\n <w:font w:name=\"Symbol\">\r\n <w:panose1 w:val=\"05050102010706020507\"/>\r\n <w:charset w:val=\"02\"/>\r\n <w:family w:val=\"decorative\"/>\r\n <w:pitch w:val=\"variable\"/>\r\n <w:sig w:usb0=\"00000000\" w:usb1=\"10000000\" w:usb2=\"00000000\" w:usb3=\"00000000\" w:csb0=\"80000000\" w:csb1=\"00000000\"/>\r\n </w:font>\r\n <w:font w:name=\"Calibri\">\r\n <w:panose1 w:val=\"020F0502020204030204\"/>\r\n <w:charset w:val=\"00\"/>\r\n <w:family w:val=\"swiss\"/>\r\n <w:pitch w:val=\"variable\"/>\r\n <w:sig w:usb0=\"E4002EFF\" w:usb1=\"C000247B\" w:usb2=\"00000009\" w:usb3=\"00000000\" w:csb0=\"000001FF\" w:csb1=\"00000000\"/>\r\n </w:font>\r\n <w:font w:name=\"Times New Roman\">\r\n <w:panose1 w:val=\"02020603050405020304\"/>\r\n <w:charset w:val=\"00\"/>\r\n <w:family w:val=\"roman\"/>\r\n <w:pitch w:val=\"variable\"/>\r\n <w:sig w:usb0=\"E0002EFF\" w:usb1=\"C000785B\" w:usb2=\"00000009\" w:usb3=\"00000000\" w:csb0=\"000001FF\" w:csb1=\"00000000\"/>\r\n </w:font>\r\n <w:font w:name=\"Calibri Light\">\r\n <w:panose1 w:val=\"020F0302020204030204\"/>\r\n <w:charset w:val=\"00\"/>\r\n <w:family w:val=\"swiss\"/>\r\n <w:pitch w:val=\"variable\"/>\r\n <w:sig w:usb0=\"E4002EFF\" w:usb1=\"C000247B\" w:usb2=\"00000009\" w:usb3=\"00000000\" w:csb0=\"000001FF\" w:csb1=\"00000000\"/>\r\n </w:font>\r\n </w:fonts>\r\n`;\r\n\r\nexport {fontTableXML};\r\n","import { defaultFont } from '../constants';\r\n\r\nconst generateThemeXML = (font = defaultFont) => `\r\n <?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\r\n\r\n <a:theme xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\" name=\"Office Theme\">\r\n <a:themeElements>\r\n <a:clrScheme name=\"Office\">\r\n <a:dk1>\r\n <a:sysClr val=\"windowText\" lastClr=\"000000\"/>\r\n </a:dk1>\r\n <a:lt1>\r\n <a:sysClr val=\"window\" lastClr=\"FFFFFF\"/>\r\n </a:lt1>\r\n <a:dk2>\r\n <a:srgbClr val=\"44546A\"/>\r\n </a:dk2>\r\n <a:lt2>\r\n <a:srgbClr val=\"E7E6E6\"/>\r\n </a:lt2>\r\n <a:accent1>\r\n <a:srgbClr val=\"4472C4\"/>\r\n </a:accent1>\r\n <a:accent2>\r\n <a:srgbClr val=\"ED7D31\"/>\r\n </a:accent2>\r\n <a:accent3>\r\n <a:srgbClr val=\"A5A5A5\"/>\r\n </a:accent3>\r\n <a:accent4>\r\n <a:srgbClr val=\"FFC000\"/>\r\n </a:accent4>\r\n <a:accent5>\r\n <a:srgbClr val=\"5B9BD5\"/>\r\n </a:accent5>\r\n <a:accent6>\r\n <a:srgbClr val=\"70AD47\"/>\r\n </a:accent6>\r\n <a:hlink>\r\n <a:srgbClr val=\"0563C1\"/>\r\n </a:hlink>\r\n <a:folHlink>\r\n <a:srgbClr val=\"954F72\"/>\r\n </a:folHlink>\r\n </a:clrScheme>\r\n <a:fontScheme name=\"Office\">\r\n <a:majorFont>\r\n <a:latin typeface=\"${font}\"/>\r\n <a:ea typeface=\"${font}\"/>\r\n <a:cs typeface=\"\"/>\r\n </a:majorFont>\r\n <a:minorFont>\r\n <a:latin typeface=\"${font}\"/>\r\n <a:ea typeface=\"${font}\"/>\r\n <a:cs typeface=\"\"/>\r\n </a:minorFont>\r\n </a:fontScheme>\r\n <a:fmtScheme name=\"Office\">\r\n <a:fillStyleLst>\r\n <a:solidFill>\r\n <a:schemeClr val=\"phClr\"/>\r\n </a:solidFill>\r\n <a:gradFill rotWithShape=\"1\">\r\n <a:gsLst>\r\n <a:gs pos=\"0\">\r\n <a:schemeClr val=\"phClr\">\r\n <a:lumMod val=\"110000\"/>\r\n <a:satMod val=\"105000\"/>\r\n <a:tint val=\"67000\"/>\r\n </a:schemeClr>\r\n </a:gs>\r\n <a:gs pos=\"50000\">\r\n <a:schemeClr val=\"phClr\">\r\n <a:lumMod val=\"105000\"/>\r\n <a:satMod val=\"103000\"/>\r\n <a:tint val=\"73000\"/>\r\n </a:schemeClr>\r\n </a:gs>\r\n <a:gs pos=\"100000\">\r\n <a:schemeClr val=\"phClr\">\r\n <a:lumMod val=\"105000\"/>\r\n <a:satMod val=\"109000\"/>\r\n <a:tint val=\"81000\"/>\r\n </a:schemeClr>\r\n </a:gs>\r\n </a:gsLst>\r\n <a:lin ang=\"5400000\" scaled=\"0\"/>\r\n </a:gradFill>\r\n <a:gradFill rotWithShape=\"1\">\r\n <a:gsLst>\r\n <a:gs pos=\"0\">\r\n <a:schemeClr val=\"phClr\">\r\n <a:satMod val=\"103000\"/>\r\n <a:lumMod val=\"102000\"/>\r\n <a:tint val=\"94000\"/>\r\n </a:schemeClr>\r\n </a:gs>\r\n <a:gs pos=\"50000\">\r\n <a:schemeClr val=\"phClr\">\r\n <a:satMod val=\"110000\"/>\r\n <a:lumMod val=\"100000\"/>\r\n <a:shade val=\"100000\"/>\r\n </a:schemeClr>\r\n </a:gs>\r\n <a:gs pos=\"100000\">\r\n <a:schemeClr val=\"phClr\">\r\n <a:lumMod val=\"99000\"/>\r\n <a:satMod val=\"120000\"/>\r\n <a:shade val=\"78000\"/>\r\n </a:schemeClr>\r\n </a:gs>\r\n </a:gsLst>\r\n <a:lin ang=\"5400000\" scaled=\"0\"/>\r\n </a:gradFill>\r\n </a:fillStyleLst>\r\n <a:lnStyleLst>\r\n <a:ln w=\"6350\" cap=\"flat\" cmpd=\"sng\" algn=\"ctr\">\r\n <a:solidFill>\r\n <a:schemeClr val=\"phClr\"/>\r\n </a:solidFill>\r\n <a:prstDash val=\"solid\"/>\r\n <a:miter lim=\"800000\"/>\r\n </a:ln>\r\n <a:ln w=\"12700\" cap=\"flat\" cmpd=\"sng\" algn=\"ctr\">\r\n <a:solidFill>\r\n <a:schemeClr val=\"phClr\"/>\r\n </a:solidFill>\r\n <a:prstDash val=\"solid\"/>\r\n <a:miter lim=\"800000\"/>\r\n </a:ln>\r\n <a:ln w=\"19050\" cap=\"flat\" cmpd=\"sng\" algn=\"ctr\">\r\n <a:solidFill>\r\n <a:schemeClr val=\"phClr\"/>\r\n </a:solidFill>\r\n <a:prstDash val=\"solid\"/>\r\n <a:miter lim=\"800000\"/>\r\n </a:ln>\r\n </a:lnStyleLst>\r\n <a:effectStyleLst>\r\n <a:effectStyle>\r\n <a:effectLst/>\r\n </a:effectStyle>\r\n <a:effectStyle>\r\n <a:effectLst/>\r\n </a:effectStyle>\r\n <a:effectStyle>\r\n <a:effectLst>\r\n <a:outerShdw blurRad=\"57150\" dist=\"19050\" dir=\"5400000\" algn=\"ctr\" rotWithShape=\"0\">\r\n <a:srgbClr val=\"000000\">\r\n <a:alpha val=\"63000\"/>\r\n </a:srgbClr>\r\n </a:outerShdw>\r\n </a:effectLst>\r\n </a:effectStyle>\r\n </a:effectStyleLst>\r\n <a:bgFillStyleLst>\r\n <a:solidFill>\r\n <a:schemeClr val=\"phClr\"/>\r\n </a:solidFill>\r\n <a:solidFill>\r\n <a:schemeClr val=\"phClr\">\r\n <a:tint val=\"95000\"/>\r\n <a:satMod val=\"170000\"/>\r\n </a:schemeClr>\r\n </a:solidFill>\r\n <a:gradFill rotWithShape=\"1\">\r\n <a:gsLst>\r\n <a:gs pos=\"0\">\r\n <a:schemeClr val=\"phClr\">\r\n <a:tint val=\"93000\"/>\r\n <a:satMod val=\"150000\"/>\r\n <a:shade val=\"98000\"/>\r\n <a:lumMod val=\"102000\"/>\r\n </a:schemeClr>\r\n </a:gs>\r\n <a:gs pos=\"50000\">\r\n <a:schemeClr val=\"phClr\">\r\n <a:tint val=\"98000\"/>\r\n <a:satMod val=\"130000\"/>\r\n <a:shade val=\"90000\"/>\r\n <a:lumMod val=\"103000\"/>\r\n </a:schemeClr>\r\n </a:gs>\r\n <a:gs pos=\"100000\">\r\n <a:schemeClr val=\"phClr\">\r\n <a:shade val=\"63000\"/>\r\n <a:satMod val=\"120000\"/>\r\n </a:schemeClr>\r\n </a:gs>\r\n </a:gsLst>\r\n <a:lin ang=\"5400000\" scaled=\"0\"/>\r\n </a:gradFill>\r\n </a:bgFillStyleLst>\r\n </a:fmtScheme>\r\n </a:themeElements>\r\n </a:theme>\r\n`;\r\n\r\nexport {generateThemeXML};\r\n","import namespaces from '../namespaces';\r\n\r\nconst settingsXML = `\r\n <?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\r\n\r\n <w:settings xmlns:w=\"${namespaces.w}\" xmlns:o=\"${namespaces.o}\" xmlns:r=\"${namespaces.r}\" xmlns:v=\"${namespaces.v}\" xmlns:w10=\"${namespaces.w10}\" xmlns:sl=\"${namespaces.sl}\">\r\n <w:zoom w:percent=\"100\"/>\r\n <w:defaultTabStop w:val=\"720\"/>\r\n <w:decimalSymbol w:val=\".\"/>\r\n <w:listSeparator w:val=\",\"/>\r\n </w:settings>\r\n`;\r\n\r\nexport {settingsXML};\r\n","import namespaces from '../namespaces';\r\n\r\nconst webSettingsXML = `\r\n <?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\r\n\r\n <w:webSettings xmlns:w=\"${namespaces.w}\" xmlns:r=\"${namespaces.r}\">\r\n </w:webSettings>\r\n`;\r\n\r\nexport {webSettingsXML};\r\n","const genericRelsXML = `\r\n <?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\r\n\r\n <Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">\r\n <Relationship Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/aFChunk\" Target=\"/word/afchunk.mht\" Id=\"htmlChunk\" />\r\n <Relationship Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/aFChunk\" Target=\"/word/afchunkheader.mht\" Id=\"htmlChunkHeader\" />\r\n <Relationship Type=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/aFChunk\" Target=\"/word/afchunkfooter.mht\" Id=\"htmlChunkFooter\" />\r\n </Relationships>\r\n`;\r\n\r\nexport {genericRelsXML};\r\n","import namespaces from \"../namespaces\";\r\n\r\nconst generateDocumentTemplate = (width, height, orientation, margins) => `\r\n <?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\r\n <w:document\r\n xmlns:a=\"${namespaces.a}\"\r\n xmlns:cdr=\"${namespaces.cdr}\"\r\n xmlns:o=\"${namespaces.o}\"\r\n xmlns:pic=\"${namespaces.pic}\"\r\n xmlns:r=\"${namespaces.r}\"\r\n xmlns:v=\"${namespaces.v}\"\r\n xmlns:ve=\"${namespaces.ve}\"\r\n xmlns:vt=\"${namespaces.vt}\"\r\n xmlns:w=\"${namespaces.w}\"\r\n xmlns:w10=\"${namespaces.w10}\"\r\n xmlns:wp=\"${namespaces.wp}\"\r\n xmlns:wne=\"${namespaces.wne}\"\r\n >\r\n <w:body>\r\n\r\n <w:altChunk r:id=\"htmlChunk\" />\r\n <w:sectPr>\r\n <w:pgSz w:w=\"${width}\" w:h=\"${height}\" w:orient=\"${orientation}\" />\r\n <w:pgMar w:top=\"${margins.top}\"\r\n w:right=\"${margins.right}\"\r\n w:bottom=\"${margins.bottom}\"\r\n w:left=\"${margins.left}\"\r\n w:header=\"${margins.header}\"\r\n w:footer=\"${margins.footer}\"\r\n w:gutter=\"${margins.gutter}\"/>\r\n </w:sectPr>\r\n </w:body>\r\n </w:document>\r\n `;\r\n\r\nconst generateDocumentTemplateHeader = `\r\n<w:hdr\r\nxmlns:a=\"${namespaces.a}\"\r\nxmlns:cdr=\"${namespaces.cdr}\"\r\nxmlns:o=\"${namespaces.o}\"\r\nxmlns:pic=\"${namespaces.pic}\"\r\nxmlns:r=\"${namespaces.r}\"\r\nxmlns:v=\"${namespaces.v}\"\r\nxmlns:ve=\"${namespaces.ve}\"\r\nxmlns:vt=\"${namespaces.vt}\"\r\nxmlns:w=\"${namespaces.w}\"\r\nxmlns:w10=\"${namespaces.w10}\"\r\nxmlns:wp=\"${namespaces.wp}\"\r\nxmlns:wne=\"${namespaces.wne}\"\r\n>\r\n<w:altChunk r:id=\"htmlChunkHeader\" />\r\n</w:hdr>\r\n `;\r\n\r\nconst generateDocumentTemplateFooter = `\r\n <w:ftr\r\n xmlns:a=\"${namespaces.a}\"\r\n xmlns:cdr=\"${namespaces.cdr}\"\r\n xmlns:o=\"${namespaces.o}\"\r\n xmlns:pic=\"${namespaces.pic}\"\r\n xmlns:r=\"${namespaces.r}\"\r\n xmlns:v=\"${namespaces.v}\"\r\n xmlns:ve=\"${namespaces.ve}\"\r\n xmlns:vt=\"${namespaces.vt}\"\r\n xmlns:w=\"${namespaces.w}\"\r\n xmlns:w10=\"${namespaces.w10}\"\r\n xmlns:wp=\"${namespaces.wp}\"\r\n >\r\n <w:altChunk r:id=\"htmlChunkFooter\" />\r\n\t<w:p w:rsidR=\"0014021C\" w:rsidRDefault=\"0014021C\" w:rsidP=\"0014021C\">\r\n\t\t\t<w:pPr>\r\n\t\t\t\t<w:pStyle w:val=\"Footer\"/>\r\n\t\t\t\t<w:jc w:val=\"center\"/>\r\n\t\t\t</w:pPr>\r\n <w:fldSimple xmlns:ns2=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\" ns2:instr=\"PAGE\">\r\n <w:r/>\r\n </w:fldSimple>\r\n\t\t</w:p>\r\n\t</w:ftr>\r\n `;\r\n\r\n const generateDocumentTemplateFooterWithoutPaging = `\r\n <w:ftr\r\n xmlns:a=\"${namespaces.a}\"\r\n xmlns:cdr=\"${namespaces.cdr}\"\r\n xmlns:o=\"${namespaces.o}\"\r\n xmlns:pic=\"${namespaces.pic}\"\r\n xmlns:r=\"${namespaces.r}\"\r\n xmlns:v=\"${namespaces.v}\"\r\n xmlns:ve=\"${namespaces.ve}\"\r\n xmlns:vt=\"${namespaces.vt}\"\r\n xmlns:w=\"${namespaces.w}\"\r\n xmlns:w10=\"${namespaces.w10}\"\r\n xmlns:wp=\"${namespaces.wp}\"\r\n >\r\n <w:altChunk r:id=\"htmlChunkFooter\" />\r\n\t</w:ftr>\r\n `;\r\n\r\nexport {\r\n generateDocumentTemplate,\r\n generateDocumentTemplateHeader,\r\n generateDocumentTemplateFooter,\r\n generateDocumentTemplateFooterWithoutPaging\r\n};\r\n\r\n{/* <w:altChunk r:id=\"htmlChunkFooter\" /> */}\r\n\r\n{\r\n /* <w:altChunk r:id=\"htmlChunkFooter\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" /> */\r\n}\r\n\r\n{\r\n /* <w:ftr xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\">\r\n<fldSimple xmlns:ns2=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\" ns2:instr=\"PAGE\">\r\n</fldSimple>\r\n<w:altChunk r:id=\"htmlChunkFooter\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\" />\r\n </w:ftr> */\r\n}\r\n","/* eslint-disable no-param-reassign */\r\n\r\nexport const rgbRegex = /rgb\\((\\d+),\\s*([\\d.]+),\\s*([\\d.]+)\\)/i;\r\nexport const hslRegex = /hsl\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%\\)/i;\r\nexport const hexRegex = /#([0-9A-F]{6})/i;\r\nexport const hex3Regex = /#([0-9A-F])([0-9A-F])([0-9A-F])/i;\r\n\r\n// eslint-disable-next-line import/prefer-default-export\r\nexport const rgbToHex = (red, green, blue) => {\r\n const hexColorCode = [red, green, blue]\r\n .map((x) => {\r\n // eslint-disable-next-line radix, no-param-reassign\r\n x = parseInt(x).toString(16);\r\n return x.length === 1 ? `0${x}` : x;\r\n })\r\n .join('');\r\n\r\n return hexColorCode;\r\n};\r\n\r\nexport const hslToHex = (hue, saturation, luminosity) => {\r\n hue /= 360;\r\n saturation /= 100;\r\n luminosity /= 100;\r\n // eslint-disable-next-line one-var\r\n let red, green, blue;\r\n if (saturation === 0) {\r\n // eslint-disable-next-line no-multi-assign\r\n red = green = blue = luminosity; // achromatic\r\n } else {\r\n const hue2rgb = (p, q, t) => {\r\n if (t < 0) t += 1;\r\n if (t > 1) t -= 1;\r\n if (t < 1 / 6) return p + (q - p) * 6 * t;\r\n if (t < 1 / 2) return q;\r\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\r\n return p;\r\n };\r\n const q =\r\n luminosity < 0.5\r\n ? luminosity * (1 + saturation)\r\n : luminosity + saturation - luminosity * saturation;\r\n const p = 2 * luminosity - q;\r\n red = hue2rgb(p, q, hue + 1 / 3);\r\n green = hue2rgb(p, q, hue);\r\n blue = hue2rgb(p, q, hue - 1 / 3);\r\n }\r\n return [red, green, blue]\r\n .map((x) => {\r\n const hex = Math.round(x * 255).toString(16);\r\n return hex.length === 1 ? `0${hex}` : hex;\r\n })\r\n .join('');\r\n};\r\n\r\nexport const hex3ToHex = (red, green, blue) => {\r\n const hexColorCode = [red, green, blue].map((x) => `${x}${x}`).join('');\r\n\r\n return hexColorCode;\r\n};\r\n","export const pixelRegex = /([\\d.]+)px/i;\r\nexport const percentageRegex = /([\\d.]+)%/i;\r\nexport const pointRegex = /([\\d.]+)pt/i;\r\nexport const cmRegex = /([\\d.]+)cm/i;\r\nexport const inchRegex = /([\\d.]+)in/i;\r\n\r\nexport const pixelToEMU = (pixelValue) => Math.round(pixelValue * 9525);\r\n\r\nexport const EMUToPixel = (EMUValue) => Math.round(EMUValue / 9525);\r\n\r\nexport const TWIPToEMU = (TWIPValue) => Math.round(TWIPValue * 635);\r\n\r\nexport const EMUToTWIP = (EMUValue) => Math.round(EMUValue / 635);\r\n\r\nexport const pointToTWIP = (pointValue) => Math.round(pointValue * 20);\r\n\r\nexport const TWIPToPoint = (TWIPValue) => Math.round(TWIPValue / 20);\r\n\r\nexport const pointToHIP = (pointValue) => Math.round(pointValue * 2);\r\n\r\nexport const HIPToPoint = (HIPValue) => Math.round(HIPValue / 2);\r\n\r\nexport const HIPToTWIP = (HIPValue) => Math.round(HIPValue * 10);\r\n\r\nexport const TWIPToHIP = (TWIPValue) => Math.round(TWIPValue / 10);\r\n\r\nexport const pixelToTWIP = (pixelValue) => EMUToTWIP(pixelToEMU(pixelValue));\r\n\r\nexport const TWIPToPixel = (TWIPValue) => EMUToPixel(TWIPToEMU(TWIPValue));\r\n\r\nexport const pixelToHIP = (pixelValue) => TWIPToHIP(EMUToTWIP(pixelToEMU(pixelValue)));\r\n\r\nexport const HIPToPixel = (HIPValue) => EMUToPixel(TWIPToEMU(HIPToTWIP(HIPValue)));\r\n\r\nexport const inchToPoint = (inchValue) => Math.round(inchValue * 72);\r\n\r\nexport const inchToTWIP = (inchValue) => pointToTWIP(inchToPoint(inchValue));\r\n\r\nexport const cmToInch = (cmValue) => cmValue * 0.3937008;\r\n\r\nexport const cmToTWIP = (cmValue) => inchToTWIP(cmToInch(cmValue));\r\n\r\nexport const pixelToPoint = (pixelValue) => HIPToPoint(pixelToHIP(pixelValue));\r\n\r\nexport const pointToPixel = (pointValue) => HIPToPixel(pointToHIP(pointValue));\r\n\r\nexport const EIPToPoint = (EIPValue) => Math.round(EIPValue / 8);\r\n\r\nexport const pointToEIP = (PointValue) => Math.round(PointValue * 8);\r\n\r\nexport const pixelToEIP = (pixelValue) => pointToEIP(pixelToPoint(pixelValue));\r\n\r\nexport const EIPToPixel = (EIPValue) => pointToPixel(EIPToPoint(EIPValue));\r\n","// eslint-disable-next-line import/prefer-default-export\r\nexport const vNodeHasChildren = (vNode) =>\r\n vNode && vNode.children && Array.isArray(vNode.children) && vNode.children.length;\r\n","const isValidUrl = (urlString) => {\r\n const urlRegex = /http(s)?:\\/\\/(\\w+:?\\w*@)?(\\S+)(:\\d+)?((?<=\\.)\\w+)+(\\/([\\w#!:.?+=&%@!\\-/])*)?/gi;\r\n\r\n return Boolean(urlRegex.test(urlString));\r\n};\r\n\r\n// eslint-disable-next-line import/prefer-default-export\r\nexport { isValidUrl };\r\n","/* eslint-disable no-await-in-loop */\r\n/* eslint-disable radix */\r\n/* eslint-disable no-param-reassign */\r\n/* eslint-disable no-case-declarations */\r\n/* eslint-disable no-plusplus */\r\n/* eslint-disable no-else-return */\r\nimport { fragment } from 'xmlbuilder2';\r\nimport isVNode from 'virtual-dom/vnode/is-vnode';\r\nimport isVText from 'virtual-dom/vnode/is-vtext';\r\nimport colorNames from 'color-name';\r\nimport { cloneDeep } from 'lodash';\r\nimport imageToBase64 from 'image-to-base64';\r\nimport mimeTypes from 'mime-types';\r\nimport sizeOf from 'image-size';\r\n\r\nimport namespaces from '../namespaces';\r\nimport {\r\n rgbToHex,\r\n hslToHex,\r\n hslRegex,\r\n rgbRegex,\r\n hexRegex,\r\n hex3Regex,\r\n hex3ToHex,\r\n} from '../utils/color-conversion';\r\nimport {\r\n pixelToEMU,\r\n pixelRegex,\r\n TWIPToEMU,\r\n percentageRegex,\r\n pointRegex,\r\n pointToHIP,\r\n HIPToTWIP,\r\n pointToTWIP,\r\n pixelToHIP,\r\n pixelToTWIP,\r\n pixelToEIP,\r\n pointToEIP,\r\n cmToTWIP,\r\n cmRegex,\r\n inchRegex,\r\n inchToTWIP,\r\n} from '../utils/unit-conversion';\r\n// FIXME: remove the cyclic dependency\r\n// eslint-disable-next-line import/no-cycle\r\nimport { buildImage, buildList } from './render-document-file';\r\nimport {\r\n defaultFont,\r\n hyperlinkType,\r\n paragraphBordersObject,\r\n colorlessColors,\r\n verticalAlignValues,\r\n imageType,\r\n internalRelationship,\r\n} from '../constants';\r\nimport { vNodeHasChildren } from '../utils/vnode';\r\nimport { isValidUrl } from '../utils/url';\r\n\r\n// eslint-disable-next-line consistent-return\r\nconst fixupColorCode = (colorCodeString) => {\r\n if (Object.prototype.hasOwnProperty.call(colorNames, colorCodeString.toLowerCase())) {\r\n const [red, green, blue] = colorNames[colorCodeString.toLowerCase()];\r\n\r\n return rgbToHex(red, green, blue);\r\n } else if (rgbRegex.test(colorCodeString)) {\r\n const matchedParts = colorCodeString.match(rgbRegex);\r\n const red = matchedParts[1];\r\n const green = matchedParts[2];\r\n const blue = matchedParts[3];\r\n\r\n return rgbToHex(red, green, blue);\r\n } else if (hslRegex.test(colorCodeString)) {\r\n const matchedParts = colorCodeString.match(hslRegex);\r\n const hue = matchedParts[1];\r\n const saturation = matchedParts[2];\r\n const luminosity = matchedParts[3];\r\n\r\n return hslToHex(hue, saturation, luminosity);\r\n } else if (hexRegex.test(colorCodeString)) {\r\n const matchedParts = colorCodeString.match(hexRegex);\r\n\r\n return matchedParts[1];\r\n } else if (hex3Regex.test(colorCodeString)) {\r\n const matchedParts = colorCodeString.match(hex3Regex);\r\n const red = matchedParts[1];\r\n const green = matchedParts[2];\r\n const blue = matchedParts[3];\r\n\r\n return hex3ToHex(red, green, blue);\r\n } else {\r\n return '000000';\r\n }\r\n};\r\n\r\nconst buildRunFontFragment = (fontName = defaultFont) =>\r\n fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'rFonts')\r\n .att('@w', 'ascii', fontName)\r\n .att('@w', 'hAnsi', fontName)\r\n .up();\r\n\r\nconst buildRunStyleFragment = (type = 'Hyperlink') =>\r\n fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'rStyle')\r\n .att('@w', 'val', type)\r\n .up();\r\n\r\nconst buildTableRowHeight = (tableRowHeight) =>\r\n fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'trHeight')\r\n .att('@w', 'val', tableRowHeight)\r\n .att('@w', 'hRule', 'atLeast')\r\n .up();\r\n\r\nconst buildVerticalAlignment = (verticalAlignment) => {\r\n if (verticalAlignment.toLowerCase() === 'middle') {\r\n verticalAlignment = 'center';\r\n }\r\n\r\n return fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'vAlign')\r\n .att('@w', 'val', verticalAlignment)\r\n .up();\r\n};\r\n\r\nconst buildVerticalMerge = (verticalMerge = 'continue') =>\r\n fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'vMerge')\r\n .att('@w', 'val', verticalMerge)\r\n .up();\r\n\r\nconst buildColor = (colorCode) =>\r\n fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'color')\r\n .att('@w', 'val', colorCode)\r\n .up();\r\n\r\nconst buildFontSize = (fontSize) =>\r\n fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'sz')\r\n .att('@w', 'val', fontSize)\r\n .up();\r\n\r\nconst buildShading = (colorCode) =>\r\n fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'shd')\r\n .att('@w', 'val', 'clear')\r\n .att('@w', 'fill', colorCode)\r\n .up();\r\n\r\nconst buildHighlight = (color = 'yellow') =>\r\n fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'highlight')\r\n .att('@w', 'val', color)\r\n .up();\r\n\r\nconst buildVertAlign = (type = 'baseline') =>\r\n fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'vertAlign')\r\n .att('@w', 'val', type)\r\n .up();\r\n\r\nconst buildStrike = () =>\r\n fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'strike')\r\n .att('@w', 'val', true)\r\n .up();\r\n\r\nconst buildBold = () =>\r\n fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'b')\r\n .up();\r\n\r\nconst buildItalics = () =>\r\n fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'i')\r\n .up();\r\n\r\nconst buildUnderline = (type = 'single') =>\r\n fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'u')\r\n .att('@w', 'val', type)\r\n .up();\r\n\r\nconst buildLineBreak = (type = 'textWrapping') =>\r\n fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'br')\r\n .att('@w', 'type', type)\r\n .up();\r\n\r\nconst buildBorder = (\r\n borderSide = 'top',\r\n borderSize = 0,\r\n borderSpacing = 0,\r\n borderColor = fixupColorCode('black'),\r\n borderStroke = 'single'\r\n) =>\r\n fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', borderSide)\r\n .att('@w', 'val', borderStroke)\r\n .att('@w', 'sz', borderSize)\r\n .att('@w', 'space', borderSpacing)\r\n .att('@w', 'color', borderColor)\r\n .up();\r\n\r\nconst buildTextElement = (text) =>\r\n fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 't')\r\n .att('@xml', 'space', 'preserve')\r\n .txt(text)\r\n .up();\r\n\r\n// eslint-disable-next-line consistent-return\r\nconst fixupLineHeight = (lineHeight, fontSize) => {\r\n // FIXME: If line height is anything other than a number\r\n // eslint-disable-next-line no-restricted-globals\r\n if (!isNaN(lineHeight)) {\r\n if (fontSize) {\r\n const actualLineHeight = +lineHeight * fontSize;\r\n\r\n return HIPToTWIP(actualLineHeight);\r\n } else {\r\n // 240 TWIP or 12 point is default line height\r\n return +lineHeight * 240;\r\n }\r\n } else {\r\n // 240 TWIP or 12 point is default line height\r\n return 240;\r\n }\r\n};\r\n\r\n// eslint-disable-next-line consistent-return\r\nconst fixupFontSize = (fontSizeString) => {\r\n if (pointRegex.test(fontSizeString)) {\r\n const matchedParts = fontSizeString.match(pointRegex);\r\n // convert point to half point\r\n return pointToHIP(matchedParts[1]);\r\n } else if (pixelRegex.test(fontSizeString)) {\r\n const matchedParts = fontSizeString.match(pixelRegex);\r\n // convert pixels to half point\r\n return pixelToHIP(matchedParts[1]);\r\n }\r\n};\r\n\r\n// eslint-disable-next-line consistent-return\r\nconst fixupRowHeight = (rowHeightString) => {\r\n if (pointRegex.test(rowHeightString)) {\r\n const matchedParts = rowHeightString.match(pointRegex);\r\n // convert point to half point\r\n return pointToTWIP(matchedParts[1]);\r\n } else if (pixelRegex.test(rowHeightString)) {\r\n const matchedParts = rowHeightString.match(pixelRegex);\r\n // convert pixels to half point\r\n return pixelToTWIP(matchedParts[1]);\r\n } else if (cmRegex.test(rowHeightString)) {\r\n const matchedParts = rowHeightString.match(cmRegex);\r\n return cmToTWIP(matchedParts[1]);\r\n } else if (inchRegex.test(rowHeightString)) {\r\n const matchedParts = rowHeightString.match(inchRegex);\r\n return inchToTWIP(matchedParts[1]);\r\n }\r\n};\r\n\r\n// eslint-disable-next-line consistent-return\r\nconst fixupColumnWidth = (columnWidthString) => {\r\n if (pointRegex.test(columnWidthString)) {\r\n const matchedParts = columnWidthString.match(pointRegex);\r\n return pointToTWIP(matchedParts[1]);\r\n } else if (pixelRegex.test(columnWidthString)) {\r\n const matchedParts = columnWidthString.match(pixelRegex);\r\n return pixelToTWIP(matchedParts[1]);\r\n } else if (cmRegex.test(columnWidthString)) {\r\n const matchedParts = columnWidthString.match(cmRegex);\r\n return cmToTWIP(matchedParts[1]);\r\n } else if (inchRegex.test(columnWidthString)) {\r\n const matchedParts = columnWidthString.match(inchRegex);\r\n return inchToTWIP(matchedParts[1]);\r\n }\r\n};\r\n\r\n// eslint-disable-next-line consistent-return\r\nconst fixupMargin = (marginString) => {\r\n if (pointRegex.test(marginString)) {\r\n const matchedParts = marginString.match(pointRegex);\r\n // convert point to half point\r\n return pointToTWIP(matchedParts[1]);\r\n } else if (pixelRegex.test(marginString)) {\r\n const matchedParts = marginString.match(pixelRegex);\r\n // convert pixels to half point\r\n return pixelToTWIP(matchedParts[1]);\r\n }\r\n};\r\n\r\nconst modifiedStyleAttributesBuilder = (vNode, attributes, options) => {\r\n const modifiedAttributes = { ...attributes };\r\n\r\n // styles\r\n if (isVNode(vNode) && vNode.properties && vNode.properties.style) {\r\n if (vNode.properties.style.color && !colorlessColors.includes(vNode.properties.style.color)) {\r\n modifiedAttributes.color = fixupColorCode(vNode.properties.style.color);\r\n }\r\n\r\n if (\r\n vNode.properties.style['background-color'] &&\r\n !colorlessColors.includes(vNode.properties.style['background-color'])\r\n ) {\r\n modifiedAttributes.backgroundColor = fixupColorCode(\r\n vNode.properties.style['background-color']\r\n );\r\n }\r\n\r\n if (\r\n vNode.properties.style['vertical-align'] &&\r\n verticalAlignValues.includes(vNode.properties.style['vertical-align'])\r\n ) {\r\n modifiedAttributes.verticalAlign = vNode.properties.style['vertical-align'];\r\n }\r\n\r\n if (\r\n vNode.properties.style['text-align'] &&\r\n ['left', 'right', 'center', 'justify'].includes(vNode.properties.style['text-align'])\r\n ) {\r\n modifiedAttributes.textAlign = vNode.properties.style['text-align'];\r\n }\r\n\r\n // FIXME: remove bold check when other font weights are handled.\r\n if (vNode.properties.style['font-weight'] && vNode.properties.style['font-weight'] === 'bold') {\r\n modifiedAttributes.strong = vNode.properties.style['font-weight'];\r\n }\r\n if (vNode.properties.style['font-size']) {\r\n modifiedAttributes.fontSize = fixupFontSize(vNode.properties.style['font-size']);\r\n }\r\n if (vNode.properties.style['line-height']) {\r\n modifiedAttributes.lineHeight = fixupLineHeight(\r\n vNode.properties.style['line-height'],\r\n vNode.properties.style['font-size']\r\n ? fixupFontSize(vNode.properties.style['font-size'])\r\n : null\r\n );\r\n }\r\n if (vNode.properties.style['margin-left'] || vNode.properties.style['margin-right']) {\r\n const leftMargin = fixupMargin(vNode.properties.style['margin-left']);\r\n const rightMargin = fixupMargin(vNode.properties.style['margin-right']);\r\n const indentation = {};\r\n if (leftMargin) {\r\n indentation.left = leftMargin;\r\n }\r\n if (rightMargin) {\r\n indentation.right = rightMargin;\r\n }\r\n if (leftMargin || rightMargin) {\r\n modifiedAttributes.indentation = indentation;\r\n }\r\n }\r\n if (vNode.properties.style.display) {\r\n modifiedAttributes.display = vNode.properties.style.display;\r\n }\r\n\r\n if (vNode.properties.style.width) {\r\n modifiedAttributes.width = vNode.properties.style.width;\r\n }\r\n }\r\n\r\n // paragraph only\r\n if (options && options.isParagraph) {\r\n if (isVNode(vNode) && vNode.tagName === 'blockquote') {\r\n modifiedAttributes.indentation = { left: 284 };\r\n modifiedAttributes.textAlign = 'justify';\r\n } else if (isVNode(vNode) && vNode.tagName === 'code') {\r\n modifiedAttributes.highlightColor = 'lightGray';\r\n } else if (isVNode(vNode) && vNode.tagName === 'pre') {\r\n modifiedAttributes.font = 'Courier';\r\n }\r\n }\r\n\r\n return modifiedAttributes;\r\n};\r\n\r\n// html tag to formatting function\r\n// options are passed to the formatting function if needed\r\nconst buildFormatting = (htmlTag, options) => {\r\n switch (htmlTag) {\r\n case 'strong':\r\n case 'b':\r\n return buildBold();\r\n case 'em':\r\n case 'i':\r\n return buildItalics();\r\n case 'ins':\r\n case 'u':\r\n return buildUnderline();\r\n case 'strike':\r\n case 'del':\r\n case 's':\r\n return buildStrike();\r\n case 'sub':\r\n return buildVertAlign('subscript');\r\n case 'sup':\r\n return buildVertAlign('superscript');\r\n case 'mark':\r\n return buildHighlight();\r\n case 'code':\r\n return buildHighlight('lightGray');\r\n case 'highlightColor':\r\n return buildHighlight(options && options.color ? options.color : 'lightGray');\r\n case 'font':\r\n case 'pre':\r\n return buildRunFontFragment('Courier');\r\n case 'color':\r\n return buildColor(options && options.color ? options.color : 'black');\r\n case 'backgroundColor':\r\n return buildShading(options && options.color ? options.color : 'black');\r\n case 'fontSize':\r\n // does this need a unit of measure?\r\n return buildFontSize(options && options.fontSize ? options.fontSize : 10);\r\n case 'hyperlink':\r\n return buildRunStyleFragment('Hyperlink');\r\n }\r\n\r\n return null;\r\n};\r\n\r\nconst buildRunProperties = (attributes) => {\r\n const runPropertiesFragment = fragment({ namespaceAlias: { w: namespaces.w } }).ele('@w', 'rPr');\r\n if (attributes && attributes.constructor === Object) {\r\n Object.keys(attributes).forEach((key) => {\r\n const options = {};\r\n if (key === 'color' || key === 'backgroundColor' || key === 'highlightColor') {\r\n options.color = attributes[key];\r\n }\r\n\r\n if (key === 'fontSize') {\r\n options.fontSize = attributes[key];\r\n }\r\n\r\n const formattingFragment = buildFormatting(key, options);\r\n if (formattingFragment) {\r\n runPropertiesFragment.import(formattingFragment);\r\n }\r\n });\r\n }\r\n runPropertiesFragment.up();\r\n\r\n return runPropertiesFragment;\r\n};\r\n\r\nconst buildRun = async (vNode, attributes, docxDocumentInstance) => {\r\n const runFragment = fragment({ namespaceAlias: { w: namespaces.w } }).ele('@w', 'r');\r\n const runPropertiesFragment = buildRunProperties(cloneDeep(attributes));\r\n\r\n // case where we have recursive spans representing font changes\r\n if (isVNode(vNode) && vNode.tagName === 'span') {\r\n // eslint-disable-next-line no-use-before-define\r\n return buildRunOrRuns(vNode, attributes, docxDocumentInstance);\r\n }\r\n\r\n if (\r\n isVNode(vNode) &&\r\n [\r\n 'strong',\r\n 'b',\r\n 'em',\r\n 'i',\r\n 'u',\r\n 'ins',\r\n 'strike',\r\n 'del',\r\n 's',\r\n 'sub',\r\n 'sup',\r\n 'mark',\r\n 'blockquote',\r\n 'code',\r\n 'pre',\r\n ].includes(vNode.tagName)\r\n ) {\r\n const runFragmentsArray = [];\r\n\r\n let vNodes = [vNode];\r\n // create temp run fragments to split the paragraph into different runs\r\n let tempAttributes = cloneDeep(attributes);\r\n let tempRunFragment = fragment({ namespaceAlias: { w: namespaces.w } }).ele('@w', 'r');\r\n while (vNodes.length) {\r\n const tempVNode = vNodes.shift();\r\n if (isVText(tempVNode)) {\r\n const textFragment = buildTextElement(tempVNode.text);\r\n const tempRunPropertiesFragment = buildRunProperties({ ...attributes, ...tempAttributes });\r\n tempRunFragment.import(tempRunPropertiesFragment);\r\n tempRunFragment.import(textFragment);\r\n runFragmentsArray.push(tempRunFragment);\r\n\r\n // re initialize temp run fragments with new fragment\r\n tempAttributes = cloneDeep(attributes);\r\n tempRunFragment = fragment({ namespaceAlias: { w: namespaces.w } }).ele('@w', 'r');\r\n } else if (isVNode(tempVNode)) {\r\n if (\r\n [\r\n 'strong',\r\n 'b',\r\n 'em',\r\n 'i',\r\n 'u',\r\n 'ins',\r\n 'strike',\r\n 'del',\r\n 's',\r\n 'sub',\r\n 'sup',\r\n 'mark',\r\n 'code',\r\n 'pre',\r\n ].includes(tempVNode.tagName)\r\n ) {\r\n tempAttributes = {};\r\n switch (tempVNode.tagName) {\r\n case 'strong':\r\n case 'b':\r\n tempAttributes.strong = true;\r\n break;\r\n case 'i':\r\n tempAttributes.i = true;\r\n break;\r\n case 'u':\r\n tempAttributes.u = true;\r\n break;\r\n case 'sub':\r\n tempAttributes.sub = true;\r\n break;\r\n case 'sup':\r\n tempAttributes.sup = true;\r\n break;\r\n }\r\n const formattingFragment = buildFormatting(tempVNode);\r\n\r\n if (formattingFragment) {\r\n runPropertiesFragment.import(formattingFragment);\r\n }\r\n // go a layer deeper if there is a span somewhere in the children\r\n } else if (tempVNode.tagName === 'span') {\r\n // eslint-disable-next-line no-use-before-define\r\n const spanFragment = await buildRunOrRuns(\r\n tempVNode,\r\n { ...attributes, ...tempAttributes },\r\n docxDocumentInstance\r\n );\r\n\r\n // if spanFragment is an array, we need to add each fragment to the runFragmentsArray. If the fragment is an array, perform a depth first search on the array to add each fragment to the runFragmentsArray\r\n if (Array.isArray(spanFragment)) {\r\n spanFragment.flat(Infinity);\r\n runFragmentsArray.push(...spanFragment);\r\n } else {\r\n runFragmentsArray.push(spanFragment);\r\n }\r\n\r\n // do not slice and concat children since this is already accounted for in the buildRunOrRuns function\r\n // eslint-disable-next-line no-continue\r\n continue;\r\n }\r\n }\r\n\r\n if (tempVNode.children && tempVNode.children.length) {\r\n if (tempVNode.children.length > 1) {\r\n attributes = { ...attributes, ...tempAttributes };\r\n }\r\n\r\n vNodes = tempVNode.children.slice().concat(vNodes);\r\n }\r\n }\r\n if (runFragmentsArray.length) {\r\n return runFragmentsArray;\r\n }\r\n }\r\n\r\n runFragment.import(runPropertiesFragment);\r\n if (isVText(vNode)) {\r\n const textFragment = buildTextElement(vNode.text);\r\n runFragment.import(textFragment);\r\n } else if (attributes && attributes.type === 'picture') {\r\n let response = null;\r\n\r\n const base64Uri = decodeURIComponent(vNode.properties.src);\r\n if (base64Uri) {\r\n response = docxDocumentInstance.createMediaFile(base64Uri);\r\n }\r\n\r\n if (response) {\r\n docxDocumentInstance.zip\r\n .folder('word')\r\n .folder('media')\r\n .file(response.fileNameWithExtension, Buffer.from(response.fileContent, 'base64'), {\r\n createFolders: false,\r\n });\r\n\r\n const documentRelsId = docxDocumentInstance.createDocumentRelationships(\r\n docxDocumentInstance.relationshipFilename,\r\n imageType,\r\n `media/${response.fileNameWithExtension}`,\r\n internalRelationship\r\n );\r\n\r\n attributes.inlineOrAnchored = true;\r\n attributes.relationshipId = documentRelsId;\r\n attributes.id = response.id;\r\n attributes.fileContent = response.fileContent;\r\n attributes.fileNameWithExtension = response.fileNameWithExtension;\r\n }\r\n\r\n const { type, inlineOrAnchored, ...otherAttributes } = attributes;\r\n // eslint-disable-next-line no-use-before-define\r\n const imageFragment = buildDrawing(inlineOrAnchored, type, otherAttributes);\r\n runFragment.import(imageFragment);\r\n } else if (isVNode(vNode) && vNode.tagName === 'br') {\r\n const lineBreakFragment = buildLineBreak();\r\n runFragment.import(lineBreakFragment);\r\n }\r\n runFragment.up();\r\n\r\n return runFragment;\r\n};\r\n\r\nconst buildRunOrRuns = async (vNode, attributes, docxDocumentInstance) => {\r\n if (isVNode(vNode) && vNode.tagName === 'span') {\r\n let runFragments = [];\r\n\r\n for (let index = 0; index < vNode.children.length; index++) {\r\n const childVNode = vNode.children[index];\r\n const modifiedAttributes = modifiedStyleAttributesBuilder(vNode, attributes);\r\n const tempRunFragments = await buildRun(childVNode, modifiedAttributes, docxDocumentInstance);\r\n runFragments = runFragments.concat(\r\n Array.isArray(tempRunFragments) ? tempRunFragments : [tempRunFragments]\r\n );\r\n }\r\n\r\n return runFragments;\r\n } else {\r\n const tempRunFragments = await buildRun(vNode, attributes, docxDocumentInstance);\r\n return tempRunFragments;\r\n }\r\n};\r\n\r\nconst buildRunOrHyperLink = async (vNode, attributes, docxDocumentInstance) => {\r\n if (isVNode(vNode) && vNode.tagName === 'a') {\r\n const relationshipId = docxDocumentInstance.createDocumentRelationships(\r\n docxDocumentInstance.relationshipFilename,\r\n hyperlinkType,\r\n vNode.properties && vNode.properties.href ? vNode.properties.href : ''\r\n );\r\n const hyperlinkFragment = fragment({ namespaceAlias: { w: namespaces.w, r: namespaces.r } })\r\n .ele('@w', 'hyperlink')\r\n .att('@r', 'id', `rId${relationshipId}`);\r\n\r\n const modifiedAttributes = { ...attributes };\r\n modifiedAttributes.hyperlink = true;\r\n\r\n const runFragments = await buildRunOrRuns(\r\n vNode.children[0],\r\n modifiedAttributes,\r\n docxDocumentInstance\r\n );\r\n if (Array.isArray(runFragments)) {\r\n for (let index = 0; index < runFragments.length; index++) {\r\n const runFragment = runFragments[index];\r\n\r\n hyperlinkFragment.import(runFragment);\r\n }\r\n } else {\r\n hyperlinkFragment.import(runFragments);\r\n }\r\n hyperlinkFragment.up();\r\n\r\n return hyperlinkFragment;\r\n }\r\n\r\n const runFragments = await buildRunOrRuns(vNode, attributes, docxDocumentInstance);\r\n\r\n return runFragments;\r\n};\r\n\r\nconst buildNumberingProperties = (levelId, numberingId) =>\r\n fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'numPr')\r\n .ele('@w', 'ilvl')\r\n .att('@w', 'val', String(levelId))\r\n .up()\r\n .ele('@w', 'numId')\r\n .att('@w', 'val', String(numberingId))\r\n .up()\r\n .up();\r\n\r\nconst buildNumberingInstances = () =>\r\n fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'num')\r\n .ele('@w', 'abstractNumId')\r\n .up()\r\n .up();\r\n\r\nconst buildSpacing = (lineSpacing, beforeSpacing, afterSpacing) => {\r\n const spacingFragment = fragment({ namespaceAlias: { w: namespaces.w } }).ele('@w', 'spacing');\r\n\r\n if (lineSpacing) {\r\n spacingFragment.att('@w', 'line', lineSpacing);\r\n }\r\n if (beforeSpacing) {\r\n spacingFragment.att('@w', 'before', beforeSpacing);\r\n }\r\n if (afterSpacing) {\r\n spacingFragment.att('@w', 'after', afterSpacing);\r\n }\r\n\r\n spacingFragment.att('@w', 'lineRule', 'auto').up();\r\n\r\n return spacingFragment;\r\n};\r\n\r\nconst buildIndentation = ({ left, right }) => {\r\n const indentationFragment = fragment({\r\n namespaceAlias: { w: namespaces.w },\r\n }).ele('@w', 'ind');\r\n\r\n if (left) {\r\n indentationFragment.att('@w', 'left', left);\r\n }\r\n if (right) {\r\n indentationFragment.att('@w', 'right', right);\r\n }\r\n\r\n indentationFragment.up();\r\n\r\n return indentationFragment;\r\n};\r\n\r\nconst buildPStyle = (style = 'Normal') =>\r\n fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'pStyle')\r\n .att('@w', 'val', style)\r\n .up();\r\n\r\nconst buildHorizontalAlignment = (horizontalAlignment) => {\r\n if (horizontalAlignment === 'justify') {\r\n horizontalAlignment = 'both';\r\n }\r\n return fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'jc')\r\n .att('@w', 'val', horizontalAlignment)\r\n .up();\r\n};\r\n\r\nconst buildParagraphBorder = () => {\r\n const paragraphBorderFragment = fragment({ namespaceAlias: { w: namespaces.w } }).ele(\r\n '@w',\r\n 'pBdr'\r\n );\r\n const bordersObject = cloneDeep(paragraphBordersObject);\r\n\r\n Object.keys(bordersObject).forEach((borderName) => {\r\n if (bordersObject[borderName]) {\r\n const { size, spacing, color } = bordersObject[borderName];\r\n\r\n const borderFragment = buildBorder(borderName, size, spacing, color);\r\n paragraphBorderFragment.import(borderFragment);\r\n }\r\n });\r\n\r\n paragraphBorderFragment.up();\r\n\r\n return paragraphBorderFragment;\r\n};\r\n\r\nconst buildParagraphProperties = (attributes) => {\r\n const paragraphPropertiesFragment = fragment({ namespaceAlias: { w: namespaces.w } }).ele(\r\n '@w',\r\n 'pPr'\r\n );\r\n if (attributes && attributes.constructor === Object) {\r\n Object.keys(attributes).forEach((key) => {\r\n switch (key) {\r\n case 'numbering':\r\n const { levelId, numberingId } = attributes[key];\r\n const numberingPropertiesFragment = buildNumberingProperties(levelId, numberingId);\r\n paragraphPropertiesFragment.import(numberingPropertiesFragment);\r\n // eslint-disable-next-line no-param-reassign\r\n delete attributes.numbering;\r\n break;\r\n case 'textAlign':\r\n const horizontalAlignmentFragment = buildHorizontalAlignment(attributes[key]);\r\n paragraphPropertiesFragment.import(horizontalAlignmentFragment);\r\n // eslint-disable-next-line no-param-reassign\r\n delete attributes.textAlign;\r\n break;\r\n case 'backgroundColor':\r\n // Add shading to Paragraph Properties only if display is block\r\n // Essentially if background color needs to be across the row\r\n if (attributes.display === 'block') {\r\n const shadingFragment = buildShading(attributes[key]);\r\n paragraphPropertiesFragment.import(shadingFragment);\r\n // FIXME: Inner padding in case of shaded paragraphs.\r\n const paragraphBorderFragment = buildParagraphBorder();\r\n paragraphPropertiesFragment.import(paragraphBorderFragment);\r\n // eslint-disable-next-line no-param-reassign\r\n delete attributes.backgroundColor;\r\n }\r\n break;\r\n case 'paragraphStyle':\r\n const pStyleFragment = buildPStyle(attributes.paragraphStyle);\r\n paragraphPropertiesFragment.import(pStyleFragment);\r\n delete attributes.paragraphStyle;\r\n break;\r\n case 'indentation':\r\n const indentationFragment = buildIndentation(attributes[key]);\r\n paragraphPropertiesFragment.import(indentationFragment);\r\n // eslint-disable-next-line no-param-reassign\r\n delete attributes.indentation;\r\n break;\r\n }\r\n });\r\n\r\n const spacingFragment = buildSpacing(\r\n attributes.lineHeight,\r\n attributes.beforeSpacing,\r\n attributes.afterSpacing\r\n );\r\n // eslint-disable-next-line no-param-reassign\r\n delete attributes.lineHeight;\r\n // eslint-disable-next-line no-param-reassign\r\n delete attributes.beforeSpacing;\r\n // eslint-disable-next-line no-param-reassign\r\n delete attributes.afterSpacing;\r\n\r\n paragraphPropertiesFragment.import(spacingFragment);\r\n }\r\n paragraphPropertiesFragment.up();\r\n\r\n return paragraphPropertiesFragment;\r\n};\r\n\r\nconst computeImageDimensions = (vNode, attributes) => {\r\n const { maximumWidth, originalWidth, originalHeight } = attributes;\r\n const aspectRatio = originalWidth / originalHeight;\r\n const maximumWidthInEMU = TWIPToEMU(maximumWidth);\r\n let originalWidthInEMU = pixelToEMU(originalWidth);\r\n let originalHeightInEMU = pixelToEMU(originalHeight);\r\n if (originalWidthInEMU > maximumWidthInEMU) {\r\n originalWidthInEMU = maximumWidthInEMU;\r\n originalHeightInEMU = Math.round(originalWidthInEMU / aspectRatio);\r\n }\r\n let modifiedHeight;\r\n let modifiedWidth;\r\n\r\n if (vNode.properties && vNode.properties.style) {\r\n if (vNode.properties.style.width) {\r\n if (vNode.properties.style.width !== 'auto') {\r\n if (pixelRegex.test(vNode.properties.style.width)) {\r\n modifiedWidth = pixelToEMU(vNode.properties.style.width.match(pixelRegex)[1]);\r\n } else if (percentageRegex.test(vNode.properties.style.width)) {\r\n const percentageValue = vNode.properties.style.width.match(percentageRegex)[1];\r\n\r\n modifiedWidth = Math.round((percentageValue / 100) * originalWidthInEMU);\r\n }\r\n } else {\r\n // eslint-disable-next-line no-lonely-if\r\n if (vNode.properties.style.height && vNode.properties.style.height === 'auto') {\r\n modifiedWidth = originalWidthInEMU;\r\n modifiedHeight = originalHeightInEMU;\r\n }\r\n }\r\n }\r\n if (vNode.properties.style.height) {\r\n if (vNode.properties.style.height !== 'auto') {\r\n if (pixelRegex.test(vNode.properties.style.height)) {\r\n modifiedHeight = pixelToEMU(vNode.properties.style.height.match(pixelRegex)[1]);\r\n } else if (percentageRegex.test(vNode.properties.style.height)) {\r\n const percentageValue = vNode.properties.style.width.match(percentageRegex)[1];\r\n\r\n modifiedHeight = Math.round((percentageValue / 100) * originalHeightInEMU);\r\n if (!modifiedWidth) {\r\n modifiedWidth = Math.round(modifiedHeight * aspectRatio);\r\n }\r\n }\r\n } else {\r\n // eslint-disable-next-line no-lonely-if\r\n if (modifiedWidth) {\r\n if (!modifiedHeight) {\r\n modifiedHeight = Math.round(modifiedWidth / aspectRatio);\r\n }\r\n } else {\r\n modifiedHeight = originalHeightInEMU;\r\n modifiedWidth = originalWidthInEMU;\r\n }\r\n }\r\n }\r\n if (modifiedWidth && !modifiedHeight) {\r\n modifiedHeight = Math.round(modifiedWidth / aspectRatio);\r\n } else if (modifiedHeight && !modifiedWidth) {\r\n modifiedWidth = Math.round(modifiedHeight * aspectRatio);\r\n }\r\n } else {\r\n modifiedWidth = originalWidthInEMU;\r\n modifiedHeight = originalHeightInEMU;\r\n }\r\n\r\n // eslint-disable-next-line no-param-reassign\r\n attributes.width = modifiedWidth;\r\n // eslint-disable-next-line no-param-reassign\r\n attributes.height = modifiedHeight;\r\n};\r\n\r\nconst buildParagraph = async (vNode, attributes, docxDocumentInstance) => {\r\n const paragraphFragment = fragment({ namespaceAlias: { w: namespaces.w } }).ele('@w', 'p');\r\n const modifiedAttributes = modifiedStyleAttributesBuilder(vNode, attributes, {\r\n isParagraph: true,\r\n });\r\n const paragraphPropertiesFragment = buildParagraphProperties(modifiedAttributes);\r\n paragraphFragment.import(paragraphPropertiesFragment);\r\n if (isVNode(vNode) && vNodeHasChildren(vNode)) {\r\n if (\r\n [\r\n 'span',\r\n 'strong',\r\n 'b',\r\n 'em',\r\n 'i',\r\n 'u',\r\n 'ins',\r\n 'strike',\r\n 'del',\r\n 's',\r\n 'sub',\r\n 'sup',\r\n 'mark',\r\n 'a',\r\n 'code',\r\n 'pre',\r\n ].includes(vNode.tagName)\r\n ) {\r\n const runOrHyperlinkFragments = await buildRunOrHyperLink(\r\n vNode,\r\n modifiedAttributes,\r\n docxDocumentInstance\r\n );\r\n if (Array.isArray(runOrHyperlinkFragments)) {\r\n for (\r\n let iteratorIndex = 0;\r\n iteratorIndex < runOrHyperlinkFragments.length;\r\n iteratorIndex++\r\n ) {\r\n const runOrHyperlinkFragment = runOrHyperlinkFragments[iteratorIndex];\r\n\r\n paragraphFragment.import(runOrHyperlinkFragment);\r\n }\r\n } else {\r\n paragraphFragment.import(runOrHyperlinkFragments);\r\n }\r\n } else if (vNode.tagName === 'blockquote') {\r\n const runFragmentOrFragments = await buildRun(vNode, attributes);\r\n if (Array.isArray(runFragmentOrFragments)) {\r\n for (let index = 0; index < runFragmentOrFragments.length; index++) {\r\n paragraphFragment.import(runFragmentOrFragments[index]);\r\n }\r\n } else {\r\n paragraphFragment.import(runFragmentOrFragments);\r\n }\r\n } else {\r\n for (let index = 0; index < vNode.children.length; index++) {\r\n const childVNode = vNode.children[index];\r\n if (childVNode.tagName === 'img') {\r\n let base64String;\r\n const imageSource = childVNode.properties.src;\r\n if (isValidUrl(imageSource)) {\r\n base64String = await imageToBase64(imageSource).catch((error) => {\r\n // eslint-disable-next-line no-console\r\n console.warning(`skipping image download and conversion due to ${error}`);\r\n });\r\n\r\n if (base64String && mimeTypes.lookup(imageSource)) {\r\n childVNode.properties.src = `data:${mimeTypes.lookup(\r\n imageSource\r\n )};base64, ${base64String}`;\r\n } else {\r\n break;\r\n }\r\n } else {\r\n // eslint-disable-next-line no-useless-escape, prefer-destructuring\r\n base64String = imageSource.match(/^data:([A-Za-z-+\\/]+);base64,(.+)$/)[2];\r\n }\r\n const imageBuffer = Buffer.from(decodeURIComponent(base64String), 'base64');\r\n const imageProperties = sizeOf(imageBuffer);\r\n\r\n modifiedAttributes.maximumWidth =\r\n modifiedAttributes.maximumWidth || docxDocumentInstance.availableDocumentSpace;\r\n modifiedAttributes.originalWidth = imageProperties.width;\r\n modifiedAttributes.originalHeight = imageProperties.height;\r\n\r\n computeImageDimensions(childVNode, modifiedAttributes);\r\n }\r\n const runOrHyperlinkFragments = await buildRunOrHyperLink(\r\n childVNode,\r\n isVNode(childVNode) && childVNode.tagName === 'img'\r\n ? { ...modifiedAttributes, type: 'picture' }\r\n : modifiedAttributes,\r\n docxDocumentInstance\r\n );\r\n if (Array.isArray(runOrHyperlinkFragments)) {\r\n for (\r\n let iteratorIndex = 0;\r\n iteratorIndex < runOrHyperlinkFragments.length;\r\n iteratorIndex++\r\n ) {\r\n const runOrHyperlinkFragment = runOrHyperlinkFragments[iteratorIndex];\r\n\r\n paragraphFragment.import(runOrHyperlinkFragment);\r\n }\r\n } else {\r\n paragraphFragment.import(runOrHyperlinkFragments);\r\n }\r\n }\r\n }\r\n } else {\r\n // In case paragraphs has to be rendered where vText is present. Eg. table-cell\r\n // Or in case the vNode is something like img\r\n if (isVNode(vNode) && vNode.tagName === 'img') {\r\n const imageSource = vNode.properties.src;\r\n let base64String = imageSource;\r\n if (isValidUrl(imageSource)) {\r\n base64String = await imageToBase64(imageSource).catch((error) => {\r\n // eslint-disable-next-line no-console\r\n console.warning(`skipping image download and conversion due to ${error}`);\r\n });\r\n\r\n if (base64String && mimeTypes.lookup(imageSource)) {\r\n vNode.properties.src = `data:${mimeTypes.lookup(imageSource)};base64, ${base64String}`;\r\n } else {\r\n paragraphFragment.up();\r\n\r\n return paragraphFragment;\r\n }\r\n } else {\r\n // eslint-disable-next-line no-useless-escape, prefer-destructuring\r\n base64String = base64String.match(/^data:([A-Za-z-+\\/]+);base64,(.+)$/)[2];\r\n }\r\n\r\n const imageBuffer = Buffer.from(decodeURIComponent(base64String), 'base64');\r\n const imageProperties = sizeOf(imageBuffer);\r\n\r\n modifiedAttributes.maximumWidth =\r\n modifiedAttributes.maximumWidth || docxDocumentInstance.availableDocumentSpace;\r\n modifiedAttributes.originalWidth = imageProperties.width;\r\n modifiedAttributes.originalHeight = imageProperties.height;\r\n\r\n computeImageDimensions(vNode, modifiedAttributes);\r\n }\r\n const runFragments = await buildRunOrRuns(vNode, modifiedAttributes, docxDocumentInstance);\r\n if (Array.isArray(runFragments)) {\r\n for (let index = 0; index < runFragments.length; index++) {\r\n const runFragment = runFragments[index];\r\n\r\n paragraphFragment.import(runFragment);\r\n }\r\n } else {\r\n paragraphFragment.import(runFragments);\r\n }\r\n }\r\n paragraphFragment.up();\r\n\r\n return paragraphFragment;\r\n};\r\n\r\nconst buildGridSpanFragment = (spanValue) =>\r\n fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'gridSpan')\r\n .att('@w', 'val', spanValue)\r\n .up();\r\n\r\nconst buildTableCellSpacing = (cellSpacing = 0) =>\r\n fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'tblCellSpacing')\r\n .att('@w', 'w', cellSpacing)\r\n .att('@w', 'type', 'dxa')\r\n .up();\r\n\r\nconst buildTableCellBorders = (tableCellBorder) => {\r\n const tableCellBordersFragment = fragment({ namespaceAlias: { w: namespaces.w } }).ele(\r\n '@w',\r\n 'tcBorders'\r\n );\r\n\r\n const { color, stroke, ...borders } = tableCellBorder;\r\n Object.keys(borders).forEach((border) => {\r\n if (tableCellBorder[border]) {\r\n const borderFragment = buildBorder(border, tableCellBorder[border], 0, color, stroke);\r\n tableCellBordersFragment.import(borderFragment);\r\n }\r\n });\r\n\r\n tableCellBordersFragment.up();\r\n\r\n return tableCellBordersFragment;\r\n};\r\n\r\nconst buildTableCellWidth = (tableCellWidth) =>\r\n fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'tcW')\r\n .att('@w', 'w', fixupColumnWidth(tableCellWidth))\r\n .att('@w', 'type', 'dxa')\r\n .up();\r\n\r\nconst buildTableCellProperties = (attributes) => {\r\n const tableCellPropertiesFragment = fragment({ namespaceAlias: { w: namespaces.w } }).ele(\r\n '@w',\r\n 'tcPr'\r\n );\r\n if (attributes && attributes.constructor === Object) {\r\n Object.keys(attributes).forEach((key) => {\r\n switch (key) {\r\n case 'backgroundColor':\r\n const shadingFragment = buildShading(attributes[key]);\r\n tableCellPropertiesFragment.import(shadingFragment);\r\n // eslint-disable-next-line no-param-reassign\r\n delete attributes.backgroundColor;\r\n break;\r\n case 'verticalAlign':\r\n const verticalAlignmentFragment = buildVerticalAlignment(attributes[key]);\r\n tableCellPropertiesFragment.import(verticalAlignmentFragment);\r\n // eslint-disable-next-line no-param-reassign\r\n delete attributes.verticalAlign;\r\n break;\r\n case 'colSpan':\r\n const gridSpanFragment = buildGridSpanFragment(attributes[key]);\r\n tableCellPropertiesFragment.import(gridSpanFragment);\r\n // eslint-disable-next-line no-param-reassign\r\n delete attributes.colSpan;\r\n break;\r\n case 'tableCellBorder':\r\n const tableCellBorderFragment = buildTableCellBorders(attributes[key]);\r\n tableCellPropertiesFragment.import(tableCellBorderFragment);\r\n // eslint-disable-next-line no-param-reassign\r\n delete attributes.tableCellBorder;\r\n break;\r\n case 'rowSpan':\r\n const verticalMergeFragment = buildVerticalMerge(attributes[key]);\r\n tableCellPropertiesFragment.import(verticalMergeFragment);\r\n\r\n delete attributes.rowSpan;\r\n break;\r\n case 'width':\r\n const widthFragment = buildTableCellWidth(attributes[key]);\r\n tableCellPropertiesFragment.import(widthFragment);\r\n delete attributes.width;\r\n break;\r\n }\r\n });\r\n }\r\n tableCellPropertiesFragment.up();\r\n\r\n return tableCellPropertiesFragment;\r\n};\r\n\r\nconst fixupTableCellBorder = (vNode, attributes) => {\r\n if (Object.prototype.hasOwnProperty.call(vNode.properties.style, 'border')) {\r\n if (vNode.properties.style.border === 'none' || vNode.properties.style.border === 0) {\r\n attributes.tableCellBorder = {};\r\n } else {\r\n // eslint-disable-next-line no-use-before-define\r\n const [borderSize, borderStroke, borderColor] = cssBorderParser(\r\n vNode.properties.style.border\r\n );\r\n\r\n attributes.tableCellBorder = {\r\n top: borderSize,\r\n left: borderSize,\r\n bottom: borderSize,\r\n right: borderSize,\r\n color: borderColor,\r\n stroke: borderStroke,\r\n };\r\n }\r\n }\r\n if (vNode.properties.style['border-top'] && vNode.properties.style['border-top'] === '0') {\r\n attributes.tableCellBorder = {\r\n ...attributes.tableCellBorder,\r\n top: 0,\r\n };\r\n } else if (vNode.properties.style['border-top'] && vNode.properties.style['border-top'] !== '0') {\r\n // eslint-disable-next-line no-use-before-define\r\n const [borderSize, borderStroke, borderColor] = cssBorderParser(\r\n vNode.properties.style['border-top']\r\n );\r\n attributes.tableCellBorder = {\r\n ...attributes.tableCellBorder,\r\n top: borderSize,\r\n color: borderColor,\r\n stroke: borderStroke,\r\n };\r\n }\r\n if (vNode.properties.style['border-left'] && vNode.properties.style['border-left'] === '0') {\r\n attributes.tableCellBorder = {\r\n ...attributes.tableCellBorder,\r\n left: 0,\r\n };\r\n } else if (\r\n vNode.properties.style['border-left'] &&\r\n vNode.properties.style['border-left'] !== '0'\r\n ) {\r\n // eslint-disable-next-line no-use-before-define\r\n const [borderSize, borderStroke, borderColor] = cssBorderParser(\r\n vNode.properties.style['border-left']\r\n );\r\n attributes.tableCellBorder = {\r\n ...attributes.tableCellBorder,\r\n left: borderSize,\r\n color: borderColor,\r\n stroke: borderStroke,\r\n };\r\n }\r\n if (vNode.properties.style['border-bottom'] && vNode.properties.style['border-bottom'] === '0') {\r\n attributes.tableCellBorder = {\r\n ...attributes.tableCellBorder,\r\n bottom: 0,\r\n };\r\n } else if (\r\n vNode.properties.style['border-bottom'] &&\r\n vNode.properties.style['border-bottom'] !== '0'\r\n ) {\r\n // eslint-disable-next-line no-use-before-define\r\n const [borderSize, borderStroke, borderColor] = cssBorderParser(\r\n vNode.properties.style['border-bottom']\r\n );\r\n attributes.tableCellBorder = {\r\n ...attributes.tableCellBorder,\r\n bottom: borderSize,\r\n color: borderColor,\r\n stroke: borderStroke,\r\n };\r\n }\r\n if (vNode.properties.style['border-right'] && vNode.properties.style['border-right'] === '0') {\r\n attributes.tableCellBorder = {\r\n ...attributes.tableCellBorder,\r\n right: 0,\r\n };\r\n } else if (\r\n vNode.properties.style['border-right'] &&\r\n vNode.properties.style['border-right'] !== '0'\r\n ) {\r\n // eslint-disable-next-line no-use-before-define\r\n const [borderSize, borderStroke, borderColor] = cssBorderParser(\r\n vNode.properties.style['border-right']\r\n );\r\n attributes.tableCellBorder = {\r\n ...attributes.tableCellBorder,\r\n right: borderSize,\r\n color: borderColor,\r\n stroke: borderStroke,\r\n };\r\n }\r\n};\r\n\r\nconst buildTableCell = async (vNode, attributes, rowSpanMap, columnIndex, docxDocumentInstance) => {\r\n const tableCellFragment = fragment({ namespaceAlias: { w: namespaces.w } }).ele('@w', 'tc');\r\n\r\n let modifiedAttributes = { ...attributes };\r\n if (isVNode(vNode) && vNode.properties) {\r\n if (vNode.properties.rowSpan) {\r\n rowSpanMap.set(columnIndex.index, { rowSpan: vNode.properties.rowSpan - 1, colSpan: 0 });\r\n modifiedAttributes.rowSpan = 'restart';\r\n } else {\r\n const previousSpanObject = rowSpanMap.get(columnIndex.index);\r\n rowSpanMap.set(\r\n columnIndex.index,\r\n // eslint-disable-next-line prefer-object-spread\r\n Object.assign({}, previousSpanObject, {\r\n rowSpan: 0,\r\n colSpan: (previousSpanObject && previousSpanObject.colSpan) || 0,\r\n })\r\n );\r\n }\r\n if (\r\n vNode.properties.colSpan ||\r\n (vNode.properties.style && vNode.properties.style['column-span'])\r\n ) {\r\n modifiedAttributes.colSpan =\r\n vNode.properties.colSpan ||\r\n (vNode.properties.style && vNode.properties.style['column-span']);\r\n const previousSpanObject = rowSpanMap.get(columnIndex.index);\r\n rowSpanMap.set(\r\n columnIndex.index,\r\n // eslint-disable-next-line prefer-object-spread\r\n Object.assign({}, previousSpanObject, {\r\n colSpan: parseInt(modifiedAttributes.colSpan) || 0,\r\n })\r\n );\r\n columnIndex.index += parseInt(modifiedAttributes.colSpan) - 1;\r\n }\r\n if (vNode.properties.style) {\r\n modifiedAttributes = {\r\n ...modifiedAttributes,\r\n ...modifiedStyleAttributesBuilder(vNode, attributes),\r\n };\r\n\r\n fixupTableCellBorder(vNode, modifiedAttributes);\r\n }\r\n }\r\n const tableCellPropertiesFragment = buildTableCellProperties(modifiedAttributes);\r\n tableCellFragment.import(tableCellPropertiesFragment);\r\n if (vNodeHasChildren(vNode)) {\r\n for (let index = 0; index < vNode.children.length; index++) {\r\n const childVNode = vNode.children[index];\r\n if (isVNode(childVNode) && childVNode.tagName === 'img') {\r\n const imageFragment = await buildImage(\r\n docxDocumentInstance,\r\n childVNode,\r\n modifiedAttributes.maximumWidth\r\n );\r\n if (imageFragment) {\r\n tableCellFragment.import(imageFragment);\r\n }\r\n } else if (isVNode(childVNode) && childVNode.tagName === 'figure') {\r\n if (vNodeHasChildren(childVNode)) {\r\n // eslint-disable-next-line no-plusplus\r\n for (let iteratorIndex = 0; iteratorIndex < childVNode.children.length; iteratorIndex++) {\r\n const grandChildVNode = childVNode.children[iteratorIndex];\r\n if (grandChildVNode.tagName === 'img') {\r\n const imageFragment = await buildImage(\r\n docxDocumentInstance,\r\n grandChildVNode,\r\n modifiedAttributes.maximumWidth\r\n );\r\n if (imageFragment) {\r\n tableCellFragment.import(imageFragment);\r\n }\r\n }\r\n }\r\n }\r\n } else if (isVNode(childVNode) && ['ul', 'ol'].includes(childVNode.tagName)) {\r\n // render list in table\r\n if (vNodeHasChildren(childVNode)) {\r\n await buildList(childVNode, docxDocumentInstance, tableCellFragment);\r\n }\r\n } else {\r\n const paragraphFragment = await buildParagraph(\r\n childVNode,\r\n modifiedAttributes,\r\n docxDocumentInstance\r\n );\r\n\r\n tableCellFragment.import(paragraphFragment);\r\n }\r\n }\r\n } else {\r\n // TODO: Figure out why building with buildParagraph() isn't working\r\n const paragraphFragment = fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'p')\r\n .up();\r\n tableCellFragment.import(paragraphFragment);\r\n }\r\n tableCellFragment.up();\r\n\r\n return tableCellFragment;\r\n};\r\n\r\nconst buildRowSpanCell = (rowSpanMap, columnIndex, attributes) => {\r\n const rowSpanCellFragments = [];\r\n let spanObject = rowSpanMap.get(columnIndex.index);\r\n while (spanObject && spanObject.rowSpan) {\r\n const rowSpanCellFragment = fragment({ namespaceAlias: { w: namespaces.w } }).ele('@w', 'tc');\r\n\r\n const tableCellPropertiesFragment = buildTableCellProperties({\r\n ...attributes,\r\n rowSpan: 'continue',\r\n colSpan: spanObject.colSpan ? spanObject.colSpan : 0,\r\n });\r\n rowSpanCellFragment.import(tableCellPropertiesFragment);\r\n\r\n const paragraphFragment = fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'p')\r\n .up();\r\n rowSpanCellFragment.import(paragraphFragment);\r\n rowSpanCellFragment.up();\r\n\r\n rowSpanCellFragments.push(rowSpanCellFragment);\r\n\r\n if (spanObject.rowSpan - 1 === 0) {\r\n rowSpanMap.delete(columnIndex.index);\r\n } else {\r\n rowSpanMap.set(columnIndex.index, {\r\n rowSpan: spanObject.rowSpan - 1,\r\n colSpan: spanObject.colSpan || 0,\r\n });\r\n }\r\n columnIndex.index += spanObject.colSpan || 1;\r\n spanObject = rowSpanMap.get(columnIndex.index);\r\n }\r\n\r\n return rowSpanCellFragments;\r\n};\r\n\r\nconst buildTableRowProperties = (attributes) => {\r\n const tableRowPropertiesFragment = fragment({ namespaceAlias: { w: namespaces.w } }).ele(\r\n '@w',\r\n 'trPr'\r\n );\r\n if (attributes && attributes.constructor === Object) {\r\n Object.keys(attributes).forEach((key) => {\r\n switch (key) {\r\n case 'tableRowHeight':\r\n const tableRowHeightFragment = buildTableRowHeight(attributes[key]);\r\n tableRowPropertiesFragment.import(tableRowHeightFragment);\r\n // eslint-disable-next-line no-param-reassign\r\n delete attributes.tableRowHeight;\r\n break;\r\n case 'rowCantSplit':\r\n if (attributes.rowCantSplit) {\r\n const cantSplitFragment = fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'cantSplit')\r\n .up();\r\n tableRowPropertiesFragment.import(cantSplitFragment);\r\n // eslint-disable-next-line no-param-reassign\r\n delete attributes.rowCantSplit;\r\n }\r\n break;\r\n }\r\n });\r\n }\r\n tableRowPropertiesFragment.up();\r\n return tableRowPropertiesFragment;\r\n};\r\n\r\nconst buildTableRow = async (vNode, attributes, rowSpanMap, docxDocumentInstance) => {\r\n const tableRowFragment = fragment({ namespaceAlias: { w: namespaces.w } }).ele('@w', 'tr');\r\n const modifiedAttributes = { ...attributes };\r\n if (isVNode(vNode) && vNode.properties) {\r\n // FIXME: find a better way to get row height from cell style\r\n if (\r\n (vNode.properties.style && vNode.properties.style.height) ||\r\n (vNode.children[0] &&\r\n isVNode(vNode.children[0]) &&\r\n vNode.children[0].properties.style &&\r\n vNode.children[0].properties.style.height)\r\n ) {\r\n modifiedAttributes.tableRowHeight = fixupRowHeight(\r\n (vNode.properties.style && vNode.properties.style.height) ||\r\n (vNode.children[0] &&\r\n isVNode(vNode.children[0]) &&\r\n vNode.children[0].properties.style &&\r\n vNode.children[0].properties.style.height\r\n ? vNode.children[0].properties.style.height\r\n : undefined)\r\n );\r\n }\r\n if (vNode.properties.style) {\r\n fixupTableCellBorder(vNode, modifiedAttributes);\r\n }\r\n }\r\n\r\n const tableRowPropertiesFragment = buildTableRowProperties(modifiedAttributes);\r\n tableRowFragment.import(tableRowPropertiesFragment);\r\n\r\n const columnIndex = { index: 0 };\r\n\r\n if (vNodeHasChildren(vNode)) {\r\n const tableColumns = vNode.children.filter((childVNode) =>\r\n ['td', 'th'].includes(childVNode.tagName)\r\n );\r\n const maximumColumnWidth = docxDocumentInstance.availableDocumentSpace / tableColumns.length;\r\n\r\n // eslint-disable-next-line no-restricted-syntax\r\n for (const column of tableColumns) {\r\n const rowSpanCellFragments = buildRowSpanCell(rowSpanMap, columnIndex, modifiedAttributes);\r\n if (Array.isArray(rowSpanCellFragments)) {\r\n for (let iteratorIndex = 0; iteratorIndex < rowSpanCellFragments.length; iteratorIndex++) {\r\n const rowSpanCellFragment = rowSpanCellFragments[iteratorIndex];\r\n\r\n tableRowFragment.import(rowSpanCellFragment);\r\n }\r\n }\r\n const tableCellFragment = await buildTableCell(\r\n column,\r\n { ...modifiedAttributes, maximumWidth: maximumColumnWidth },\r\n rowSpanMap,\r\n columnIndex,\r\n docxDocumentInstance\r\n );\r\n columnIndex.index++;\r\n\r\n tableRowFragment.import(tableCellFragment);\r\n }\r\n }\r\n\r\n if (columnIndex.index < rowSpanMap.size) {\r\n const rowSpanCellFragments = buildRowSpanCell(rowSpanMap, columnIndex, modifiedAttributes);\r\n if (Array.isArray(rowSpanCellFragments)) {\r\n for (let iteratorIndex = 0; iteratorIndex < rowSpanCellFragments.length; iteratorIndex++) {\r\n const rowSpanCellFragment = rowSpanCellFragments[iteratorIndex];\r\n\r\n tableRowFragment.import(rowSpanCellFragment);\r\n }\r\n }\r\n }\r\n\r\n tableRowFragment.up();\r\n\r\n return tableRowFragment;\r\n};\r\n\r\nconst buildTableGridCol = (gridWidth) =>\r\n fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'gridCol')\r\n .att('@w', 'w', String(gridWidth));\r\n\r\nconst buildTableGrid = (vNode, attributes) => {\r\n const tableGridFragment = fragment({ namespaceAlias: { w: namespaces.w } }).ele('@w', 'tblGrid');\r\n if (vNodeHasChildren(vNode)) {\r\n const gridColumns = vNode.children.filter((childVNode) => childVNode.tagName === 'col');\r\n const gridWidth = attributes.maximumWidth / gridColumns.length;\r\n\r\n for (let index = 0; index < gridColumns.length; index++) {\r\n const tableGridColFragment = buildTableGridCol(gridWidth);\r\n tableGridFragment.import(tableGridColFragment);\r\n }\r\n }\r\n tableGridFragment.up();\r\n\r\n return tableGridFragment;\r\n};\r\n\r\nconst buildTableGridFromTableRow = (vNode, attributes) => {\r\n const tableGridFragment = fragment({ namespaceAlias: { w: namespaces.w } }).ele('@w', 'tblGrid');\r\n if (vNodeHasChildren(vNode)) {\r\n const numberOfGridColumns = vNode.children.reduce((accumulator, childVNode) => {\r\n const colSpan =\r\n childVNode.properties.colSpan ||\r\n (childVNode.properties.style && childVNode.properties.style['column-span']);\r\n\r\n return accumulator + (colSpan ? parseInt(colSpan) : 1);\r\n }, 0);\r\n const gridWidth = attributes.maximumWidth / numberOfGridColumns;\r\n\r\n for (let index = 0; index < numberOfGridColumns; index++) {\r\n const tableGridColFragment = buildTableGridCol(gridWidth);\r\n tableGridFragment.import(tableGridColFragment);\r\n }\r\n }\r\n tableGridFragment.up();\r\n\r\n return tableGridFragment;\r\n};\r\n\r\nconst buildTableBorders = (tableBorder) => {\r\n const tableBordersFragment = fragment({ namespaceAlias: { w: namespaces.w } }).ele(\r\n '@w',\r\n 'tblBorders'\r\n );\r\n\r\n const { color, stroke, ...borders } = tableBorder;\r\n\r\n Object.keys(borders).forEach((border) => {\r\n if (borders[border]) {\r\n const borderFragment = buildBorder(border, borders[border], 0, color, stroke);\r\n tableBordersFragment.import(borderFragment);\r\n }\r\n });\r\n\r\n tableBordersFragment.up();\r\n\r\n return tableBordersFragment;\r\n};\r\n\r\nconst buildTableWidth = (tableWidth) =>\r\n fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'tblW')\r\n .att('@w', 'type', 'dxa')\r\n .att('@w', 'w', String(tableWidth))\r\n .up();\r\n\r\nconst buildCellMargin = (side, margin) =>\r\n fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', side)\r\n .att('@w', 'type', 'dxa')\r\n .att('@w', 'w', String(margin))\r\n .up();\r\n\r\nconst buildTableCellMargins = (margin) => {\r\n const tableCellMarFragment = fragment({ namespaceAlias: { w: namespaces.w } }).ele(\r\n '@w',\r\n 'tblCellMar'\r\n );\r\n\r\n ['top', 'bottom'].forEach((side) => {\r\n const marginFragment = buildCellMargin(side, margin / 2);\r\n tableCellMarFragment.import(marginFragment);\r\n });\r\n ['left', 'right'].forEach((side) => {\r\n const marginFragment = buildCellMargin(side, margin);\r\n tableCellMarFragment.import(marginFragment);\r\n });\r\n\r\n return tableCellMarFragment;\r\n};\r\n\r\nconst buildTableProperties = (attributes) => {\r\n const tablePropertiesFragment = fragment({ namespaceAlias: { w: namespaces.w } }).ele(\r\n '@w',\r\n 'tblPr'\r\n );\r\n\r\n if (attributes && attributes.constructor === Object) {\r\n Object.keys(attributes).forEach((key) => {\r\n switch (key) {\r\n case 'tableBorder':\r\n const tableBordersFragment = buildTableBorders(attributes[key]);\r\n tablePropertiesFragment.import(tableBordersFragment);\r\n // eslint-disable-next-line no-param-reassign\r\n delete attributes.tableBorder;\r\n break;\r\n case 'tableCellSpacing':\r\n const tableCellSpacingFragment = buildTableCellSpacing(attributes[key]);\r\n tablePropertiesFragment.import(tableCellSpacingFragment);\r\n // eslint-disable-next-line no-param-reassign\r\n delete attributes.tableCellSpacing;\r\n break;\r\n case 'width':\r\n if (attributes[key]) {\r\n const tableWidthFragment = buildTableWidth(attributes[key]);\r\n tablePropertiesFragment.import(tableWidthFragment);\r\n }\r\n // eslint-disable-next-line no-param-reassign\r\n delete attributes.width;\r\n break;\r\n }\r\n });\r\n }\r\n const tableCellMarginFragment = buildTableCellMargins(160);\r\n tablePropertiesFragment.import(tableCellMarginFragment);\r\n\r\n // by default, all tables are center aligned.\r\n const alignmentFragment = buildHorizontalAlignment('center');\r\n tablePropertiesFragment.import(alignmentFragment);\r\n\r\n tablePropertiesFragment.up();\r\n\r\n return tablePropertiesFragment;\r\n};\r\n\r\nconst cssBorderParser = (borderString) => {\r\n let [size, stroke, color] = borderString.split(' ');\r\n\r\n if (pointRegex.test(size)) {\r\n const matchedParts = size.match(pointRegex);\r\n // convert point to eighth of a point\r\n size = pointToEIP(matchedParts[1]);\r\n } else if (pixelRegex.test(size)) {\r\n const matchedParts = size.match(pixelRegex);\r\n // convert pixels to eighth of a point\r\n size = pixelToEIP(matchedParts[1]);\r\n }\r\n stroke = stroke && ['dashed', 'dotted', 'double'].includes(stroke) ? stroke : 'single';\r\n\r\n color = color && fixupColorCode(color).toUpperCase();\r\n\r\n return [size, stroke, color];\r\n};\r\n\r\nconst buildTable = async (vNode, attributes, docxDocumentInstance) => {\r\n const tableFragment = fragment({ namespaceAlias: { w: namespaces.w } }).ele('@w', 'tbl');\r\n const modifiedAttributes = { ...attributes };\r\n if (isVNode(vNode) && vNode.properties) {\r\n const tableAttributes = vNode.properties.attributes || {};\r\n const tableStyles = vNode.properties.style || {};\r\n const tableBorders = {};\r\n const tableCellBorders = {};\r\n let [borderSize, borderStrike, borderColor] = [2, 'single', '000000'];\r\n\r\n // eslint-disable-next-line no-restricted-globals\r\n if (!isNaN(tableAttributes.border)) {\r\n borderSize = parseInt(tableAttributes.border, 10);\r\n }\r\n\r\n // css style overrides table border properties\r\n if (tableStyles.border) {\r\n const [cssSize, cssStroke, cssColor] = cssBorderParser(tableStyles.border);\r\n borderSize = cssSize || borderSize;\r\n borderColor = cssColor || borderColor;\r\n borderStrike = cssStroke || borderStrike;\r\n }\r\n\r\n tableBorders.top = borderSize;\r\n tableBorders.bottom = borderSize;\r\n tableBorders.left = borderSize;\r\n tableBorders.right = borderSize;\r\n tableBorders.stroke = borderStrike;\r\n tableBorders.color = borderColor;\r\n\r\n if (tableStyles['border-collapse'] === 'collapse') {\r\n tableBorders.insideV = borderSize;\r\n tableBorders.insideH = borderSize;\r\n } else {\r\n tableBorders.insideV = 0;\r\n tableBorders.insideH = 0;\r\n tableCellBorders.top = 1;\r\n tableCellBorders.bottom = 1;\r\n tableCellBorders.left = 1;\r\n tableCellBorders.right = 1;\r\n }\r\n\r\n modifiedAttributes.tableBorder = tableBorders;\r\n modifiedAttributes.tableCellSpacing = 0;\r\n\r\n if (Object.keys(tableCellBorders).length) {\r\n modifiedAttributes.tableCellBorder = tableCellBorders;\r\n }\r\n\r\n let minimumWidth;\r\n let maximumWidth;\r\n let width;\r\n // Calculate minimum width of table\r\n if (pixelRegex.test(tableStyles['min-width'])) {\r\n minimumWidth = pixelToTWIP(tableStyles['min-width'].match(pixelRegex)[1]);\r\n } else if (percentageRegex.test(tableStyles['min-width'])) {\r\n const percentageValue = tableStyles['min-width'].match(percentageRegex)[1];\r\n minimumWidth = Math.round((percentageValue / 100) * attributes.maximumWidth);\r\n }\r\n\r\n // Calculate maximum width of table\r\n if (pixelRegex.test(tableStyles['max-width'])) {\r\n pixelRegex.lastIndex = 0;\r\n maximumWidth = pixelToTWIP(tableStyles['max-width'].match(pixelRegex)[1]);\r\n } else if (percentageRegex.test(tableStyles['max-width'])) {\r\n percentageRegex.lastIndex = 0;\r\n const percentageValue = tableStyles['max-width'].match(percentageRegex)[1];\r\n maximumWidth = Math.round((percentageValue / 100) * attributes.maximumWidth);\r\n }\r\n\r\n // Calculate specified width of table\r\n if (pixelRegex.test(tableStyles.width)) {\r\n pixelRegex.lastIndex = 0;\r\n width = pixelToTWIP(tableStyles.width.match(pixelRegex)[1]);\r\n } else if (percentageRegex.test(tableStyles.width)) {\r\n percentageRegex.lastIndex = 0;\r\n const percentageValue = tableStyles.width.match(percentageRegex)[1];\r\n width = Math.round((percentageValue / 100) * attributes.maximumWidth);\r\n }\r\n\r\n // If width isn't supplied, we should have min-width as the width.\r\n if (width) {\r\n modifiedAttributes.width = width;\r\n if (maximumWidth) {\r\n modifiedAttributes.width = Math.min(modifiedAttributes.width, maximumWidth);\r\n }\r\n if (minimumWidth) {\r\n modifiedAttributes.width = Math.max(modifiedAttributes.width, minimumWidth);\r\n }\r\n } else if (minimumWidth) {\r\n modifiedAttributes.width = minimumWidth;\r\n }\r\n if (modifiedAttributes.width) {\r\n modifiedAttributes.width = Math.min(modifiedAttributes.width, attributes.maximumWidth);\r\n }\r\n }\r\n const tablePropertiesFragment = buildTableProperties(modifiedAttributes);\r\n tableFragment.import(tablePropertiesFragment);\r\n\r\n const rowSpanMap = new Map();\r\n\r\n if (vNodeHasChildren(vNode)) {\r\n for (let index = 0; index < vNode.children.length; index++) {\r\n const childVNode = vNode.children[index];\r\n if (childVNode.tagName === 'colgroup') {\r\n const tableGridFragment = buildTableGrid(childVNode, modifiedAttributes);\r\n tableFragment.import(tableGridFragment);\r\n } else if (childVNode.tagName === 'thead') {\r\n for (let iteratorIndex = 0; iteratorIndex < childVNode.children.length; iteratorIndex++) {\r\n const grandChildVNode = childVNode.children[iteratorIndex];\r\n if (grandChildVNode.tagName === 'tr') {\r\n if (iteratorIndex === 0) {\r\n const tableGridFragment = buildTableGridFromTableRow(\r\n grandChildVNode,\r\n modifiedAttributes\r\n );\r\n tableFragment.import(tableGridFragment);\r\n }\r\n const tableRowFragment = await buildTableRow(\r\n grandChildVNode,\r\n modifiedAttributes,\r\n rowSpanMap,\r\n docxDocumentInstance\r\n );\r\n tableFragment.import(tableRowFragment);\r\n }\r\n }\r\n } else if (childVNode.tagName === 'tbody') {\r\n for (let iteratorIndex = 0; iteratorIndex < childVNode.children.length; iteratorIndex++) {\r\n const grandChildVNode = childVNode.children[iteratorIndex];\r\n if (grandChildVNode.tagName === 'tr') {\r\n if (iteratorIndex === 0) {\r\n const tableGridFragment = buildTableGridFromTableRow(\r\n grandChildVNode,\r\n modifiedAttributes\r\n );\r\n tableFragment.import(tableGridFragment);\r\n }\r\n const tableRowFragment = await buildTableRow(\r\n grandChildVNode,\r\n modifiedAttributes,\r\n rowSpanMap,\r\n docxDocumentInstance\r\n );\r\n tableFragment.import(tableRowFragment);\r\n }\r\n }\r\n } else if (childVNode.tagName === 'tr') {\r\n if (index === 0) {\r\n const tableGridFragment = buildTableGridFromTableRow(childVNode, modifiedAttributes);\r\n tableFragment.import(tableGridFragment);\r\n }\r\n const tableRowFragment = await buildTableRow(\r\n childVNode,\r\n modifiedAttributes,\r\n rowSpanMap,\r\n docxDocumentInstance\r\n );\r\n tableFragment.import(tableRowFragment);\r\n }\r\n }\r\n }\r\n tableFragment.up();\r\n\r\n return tableFragment;\r\n};\r\n\r\nconst buildPresetGeometry = () =>\r\n fragment({ namespaceAlias: { a: namespaces.a } })\r\n .ele('@a', 'prstGeom')\r\n .att('prst', 'rect')\r\n .up();\r\n\r\nconst buildExtents = ({ width, height }) =>\r\n fragment({ namespaceAlias: { a: namespaces.a } })\r\n .ele('@a', 'ext')\r\n .att('cx', width)\r\n .att('cy', height)\r\n .up();\r\n\r\nconst buildOffset = () =>\r\n fragment({ namespaceAlias: { a: namespaces.a } })\r\n .ele('@a', 'off')\r\n .att('x', '0')\r\n .att('y', '0')\r\n .up();\r\n\r\nconst buildGraphicFrameTransform = (attributes) => {\r\n const graphicFrameTransformFragment = fragment({ namespaceAlias: { a: namespaces.a } }).ele(\r\n '@a',\r\n 'xfrm'\r\n );\r\n\r\n const offsetFragment = buildOffset();\r\n graphicFrameTransformFragment.import(offsetFragment);\r\n const extentsFragment = buildExtents(attributes);\r\n graphicFrameTransformFragment.import(extentsFragment);\r\n\r\n graphicFrameTransformFragment.up();\r\n\r\n return graphicFrameTransformFragment;\r\n};\r\n\r\nconst buildShapeProperties = (attributes) => {\r\n const shapeProperties = fragment({ namespaceAlias: { pic: namespaces.pic } }).ele('@pic', 'spPr');\r\n\r\n const graphicFrameTransformFragment = buildGraphicFrameTransform(attributes);\r\n shapeProperties.import(graphicFrameTransformFragment);\r\n const presetGeometryFragment = buildPresetGeometry();\r\n shapeProperties.import(presetGeometryFragment);\r\n\r\n shapeProperties.up();\r\n\r\n return shapeProperties;\r\n};\r\n\r\nconst buildFillRect = () =>\r\n fragment({ namespaceAlias: { a: namespaces.a } })\r\n .ele('@a', 'fillRect')\r\n .up();\r\n\r\nconst buildStretch = () => {\r\n const stretchFragment = fragment({ namespaceAlias: { a: namespaces.a } }).ele('@a', 'stretch');\r\n\r\n const fillRectFragment = buildFillRect();\r\n stretchFragment.import(fillRectFragment);\r\n\r\n stretchFragment.up();\r\n\r\n return stretchFragment;\r\n};\r\n\r\nconst buildSrcRectFragment = () =>\r\n fragment({ namespaceAlias: { a: namespaces.a } })\r\n .ele('@a', 'srcRect')\r\n .att('b', '0')\r\n .att('l', '0')\r\n .att('r', '0')\r\n .att('t', '0')\r\n .up();\r\n\r\nconst buildBinaryLargeImageOrPicture = (relationshipId) =>\r\n fragment({\r\n namespaceAlias: { a: namespaces.a, r: namespaces.r },\r\n })\r\n .ele('@a', 'blip')\r\n .att('@r', 'embed', `rId${relationshipId}`)\r\n // FIXME: possible values 'email', 'none', 'print', 'hqprint', 'screen'\r\n .att('cstate', 'print')\r\n .up();\r\n\r\nconst buildBinaryLargeImageOrPictureFill = (relationshipId) => {\r\n const binaryLargeImageOrPictureFillFragment = fragment({\r\n namespaceAlias: { pic: namespaces.pic },\r\n }).ele('@pic', 'blipFill');\r\n const binaryLargeImageOrPictureFragment = buildBinaryLargeImageOrPicture(relationshipId);\r\n binaryLargeImageOrPictureFillFragment.import(binaryLargeImageOrPictureFragment);\r\n const srcRectFragment = buildSrcRectFragment();\r\n binaryLargeImageOrPictureFillFragment.import(srcRectFragment);\r\n const stretchFragment = buildStretch();\r\n binaryLargeImageOrPictureFillFragment.import(stretchFragment);\r\n\r\n binaryLargeImageOrPictureFillFragment.up();\r\n\r\n return binaryLargeImageOrPictureFillFragment;\r\n};\r\n\r\nconst buildNonVisualPictureDrawingProperties = () =>\r\n fragment({ namespaceAlias: { pic: namespaces.pic } })\r\n .ele('@pic', 'cNvPicPr')\r\n .up();\r\n\r\nconst buildNonVisualDrawingProperties = (\r\n pictureId,\r\n pictureNameWithExtension,\r\n pictureDescription = ''\r\n) =>\r\n fragment({ namespaceAlias: { pic: namespaces.pic } })\r\n .ele('@pic', 'cNvPr')\r\n .att('id', pictureId)\r\n .att('name', pictureNameWithExtension)\r\n .att('descr', pictureDescription)\r\n .up();\r\n\r\nconst buildNonVisualPictureProperties = (\r\n pictureId,\r\n pictureNameWithExtension,\r\n pictureDescription\r\n) => {\r\n const nonVisualPicturePropertiesFragment = fragment({\r\n namespaceAlias: { pic: namespaces.pic },\r\n }).ele('@pic', 'nvPicPr');\r\n // TODO: Handle picture attributes\r\n const nonVisualDrawingPropertiesFragment = buildNonVisualDrawingProperties(\r\n pictureId,\r\n pictureNameWithExtension,\r\n pictureDescription\r\n );\r\n nonVisualPicturePropertiesFragment.import(nonVisualDrawingPropertiesFragment);\r\n const nonVisualPictureDrawingPropertiesFragment = buildNonVisualPictureDrawingProperties();\r\n nonVisualPicturePropertiesFragment.import(nonVisualPictureDrawingPropertiesFragment);\r\n nonVisualPicturePropertiesFragment.up();\r\n\r\n return nonVisualPicturePropertiesFragment;\r\n};\r\n\r\nconst buildPicture = ({\r\n id,\r\n fileNameWithExtension,\r\n description,\r\n relationshipId,\r\n width,\r\n height,\r\n}) => {\r\n const pictureFragment = fragment({ namespaceAlias: { pic: namespaces.pic } }).ele('@pic', 'pic');\r\n const nonVisualPicturePropertiesFragment = buildNonVisualPictureProperties(\r\n id,\r\n fileNameWithExtension,\r\n description\r\n );\r\n pictureFragment.import(nonVisualPicturePropertiesFragment);\r\n const binaryLargeImageOrPictureFill = buildBinaryLargeImageOrPictureFill(relationshipId);\r\n pictureFragment.import(binaryLargeImageOrPictureFill);\r\n const shapeProperties = buildShapeProperties({ width, height });\r\n pictureFragment.import(shapeProperties);\r\n pictureFragment.up();\r\n\r\n return pictureFragment;\r\n};\r\n\r\nconst buildGraphicData = (graphicType, attributes) => {\r\n const graphicDataFragment = fragment({ namespaceAlias: { a: namespaces.a } })\r\n .ele('@a', 'graphicData')\r\n .att('uri', 'http://schemas.openxmlformats.org/drawingml/2006/picture');\r\n if (graphicType === 'picture') {\r\n const pictureFragment = buildPicture(attributes);\r\n graphicDataFragment.import(pictureFragment);\r\n }\r\n graphicDataFragment.up();\r\n\r\n return graphicDataFragment;\r\n};\r\n\r\nconst buildGraphic = (graphicType, attributes) => {\r\n const graphicFragment = fragment({ namespaceAlias: { a: namespaces.a } }).ele('@a', 'graphic');\r\n // TODO: Handle drawing type\r\n const graphicDataFragment = buildGraphicData(graphicType, attributes);\r\n graphicFragment.import(graphicDataFragment);\r\n graphicFragment.up();\r\n\r\n return graphicFragment;\r\n};\r\n\r\nconst buildDrawingObjectNonVisualProperties = (pictureId, pictureName) =>\r\n fragment({ namespaceAlias: { wp: namespaces.wp } })\r\n .ele('@wp', 'docPr')\r\n .att('id', pictureId)\r\n .att('name', pictureName)\r\n .up();\r\n\r\nconst buildWrapSquare = () =>\r\n fragment({ namespaceAlias: { wp: namespaces.wp } })\r\n .ele('@wp', 'wrapSquare')\r\n .att('wrapText', 'bothSides')\r\n .att('distB', '228600')\r\n .att('distT', '228600')\r\n .att('distL', '228600')\r\n .att('distR', '228600')\r\n .up();\r\n\r\n// eslint-disable-next-line no-unused-vars\r\nconst buildWrapNone = () =>\r\n fragment({ namespaceAlias: { wp: namespaces.wp } })\r\n .ele('@wp', 'wrapNone')\r\n .up();\r\n\r\nconst buildEffectExtentFragment = () =>\r\n fragment({ namespaceAlias: { wp: namespaces.wp } })\r\n .ele('@wp', 'effectExtent')\r\n .att('b', '0')\r\n .att('l', '0')\r\n .att('r', '0')\r\n .att('t', '0')\r\n .up();\r\n\r\nconst buildExtent = ({ width, height }) =>\r\n fragment({ namespaceAlias: { wp: namespaces.wp } })\r\n .ele('@wp', 'extent')\r\n .att('cx', width)\r\n .att('cy', height)\r\n .up();\r\n\r\nconst buildPositionV = () =>\r\n fragment({ namespaceAlias: { wp: namespaces.wp } })\r\n .ele('@wp', 'positionV')\r\n .att('relativeFrom', 'paragraph')\r\n .ele('@wp', 'posOffset')\r\n .txt('19050')\r\n .up()\r\n .up();\r\n\r\nconst buildPositionH = () =>\r\n fragment({ namespaceAlias: { wp: namespaces.wp } })\r\n .ele('@wp', 'positionH')\r\n .att('relativeFrom', 'column')\r\n .ele('@wp', 'posOffset')\r\n .txt('19050')\r\n .up()\r\n .up();\r\n\r\nconst buildSimplePos = () =>\r\n fragment({ namespaceAlias: { wp: namespaces.wp } })\r\n .ele('@wp', 'simplePos')\r\n .att('x', '0')\r\n .att('y', '0')\r\n .up();\r\n\r\nconst buildAnchoredDrawing = (graphicType, attributes) => {\r\n const anchoredDrawingFragment = fragment({ namespaceAlias: { wp: namespaces.wp } })\r\n .ele('@wp', 'anchor')\r\n .att('distB', '0')\r\n .att('distL', '0')\r\n .att('distR', '0')\r\n .att('distT', '0')\r\n .att('relativeHeight', '0')\r\n .att('behindDoc', 'false')\r\n .att('locked', 'true')\r\n .att('layoutInCell', 'true')\r\n .att('allowOverlap', 'false')\r\n .att('simplePos', 'false');\r\n // Even though simplePos isnt supported by Word 2007 simplePos is required.\r\n const simplePosFragment = buildSimplePos();\r\n anchoredDrawingFragment.import(simplePosFragment);\r\n const positionHFragment = buildPositionH();\r\n anchoredDrawingFragment.import(positionHFragment);\r\n const positionVFragment = buildPositionV();\r\n anchoredDrawingFragment.import(positionVFragment);\r\n const extentFragment = buildExtent({ width: attributes.width, height: attributes.height });\r\n anchoredDrawingFragment.import(extentFragment);\r\n const effectExtentFragment = buildEffectExtentFragment();\r\n anchoredDrawingFragment.import(effectExtentFragment);\r\n const wrapSquareFragment = buildWrapSquare();\r\n anchoredDrawingFragment.import(wrapSquareFragment);\r\n const drawingObjectNonVisualPropertiesFragment = buildDrawingObjectNonVisualProperties(\r\n attributes.id,\r\n attributes.fileNameWithExtension\r\n );\r\n anchoredDrawingFragment.import(drawingObjectNonVisualPropertiesFragment);\r\n const graphicFragment = buildGraphic(graphicType, attributes);\r\n anchoredDrawingFragment.import(graphicFragment);\r\n\r\n anchoredDrawingFragment.up();\r\n\r\n return anchoredDrawingFragment;\r\n};\r\n\r\nconst buildInlineDrawing = (graphicType, attributes) => {\r\n const inlineDrawingFragment = fragment({ namespaceAlias: { wp: namespaces.wp } })\r\n .ele('@wp', 'inline')\r\n .att('distB', '0')\r\n .att('distL', '0')\r\n .att('distR', '0')\r\n .att('distT', '0');\r\n\r\n const extentFragment = buildExtent({ width: attributes.width, height: attributes.height });\r\n inlineDrawingFragment.import(extentFragment);\r\n const effectExtentFragment = buildEffectExtentFragment();\r\n inlineDrawingFragment.import(effectExtentFragment);\r\n const drawingObjectNonVisualPropertiesFragment = buildDrawingObjectNonVisualProperties(\r\n attributes.id,\r\n attributes.fileNameWithExtension\r\n );\r\n inlineDrawingFragment.import(drawingObjectNonVisualPropertiesFragment);\r\n const graphicFragment = buildGraphic(graphicType, attributes);\r\n inlineDrawingFragment.import(graphicFragment);\r\n\r\n inlineDrawingFragment.up();\r\n\r\n return inlineDrawingFragment;\r\n};\r\n\r\nconst buildDrawing = (inlineOrAnchored = false, graphicType, attributes) => {\r\n const drawingFragment = fragment({ namespaceAlias: { w: namespaces.w } }).ele('@w', 'drawing');\r\n const inlineOrAnchoredDrawingFragment = inlineOrAnchored\r\n ? buildInlineDrawing(graphicType, attributes)\r\n : buildAnchoredDrawing(graphicType, attributes);\r\n drawingFragment.import(inlineOrAnchoredDrawingFragment);\r\n drawingFragment.up();\r\n\r\n return drawingFragment;\r\n};\r\n\r\nexport {\r\n buildParagraph,\r\n buildTable,\r\n buildNumberingInstances,\r\n buildLineBreak,\r\n buildIndentation,\r\n buildTextElement,\r\n buildBold,\r\n buildItalics,\r\n buildUnderline,\r\n buildDrawing,\r\n fixupLineHeight,\r\n};\r\n","/* eslint-disable no-await-in-loop */\r\n/* eslint-disable no-case-declarations */\r\nimport { fragment } from 'xmlbuilder2';\r\nimport VNode from 'virtual-dom/vnode/vnode';\r\nimport VText from 'virtual-dom/vnode/vtext';\r\nimport isVNode from 'virtual-dom/vnode/is-vnode';\r\nimport isVText from 'virtual-dom/vnode/is-vtext';\r\n// eslint-disable-next-line import/no-named-default\r\nimport { default as HTMLToVDOM } from 'html-to-vdom';\r\nimport escape from 'escape-html';\r\nimport sizeOf from 'image-size';\r\nimport imageToBase64 from 'image-to-base64';\r\nimport mimeTypes from 'mime-types';\r\n\r\n// FIXME: remove the cyclic dependency\r\n// eslint-disable-next-line import/no-cycle\r\nimport * as xmlBuilder from './xml-builder';\r\nimport namespaces from '../namespaces';\r\nimport { imageType, internalRelationship } from '../constants';\r\nimport { vNodeHasChildren } from '../utils/vnode';\r\nimport { isValidUrl } from '../utils/url';\r\n\r\nconst convertHTML = HTMLToVDOM({\r\n VNode,\r\n VText,\r\n});\r\n\r\n// eslint-disable-next-line consistent-return, no-shadow\r\nexport const buildImage = async (docxDocumentInstance, vNode, maximumWidth = null) => {\r\n let response = null;\r\n let base64Uri = null;\r\n try {\r\n const imageSource = vNode.properties.src;\r\n if (isValidUrl(imageSource)) {\r\n const base64String = await imageToBase64(imageSource).catch((error) => {\r\n // eslint-disable-next-line no-console\r\n console.warning(`skipping image download and conversion due to ${error}`);\r\n });\r\n\r\n if (base64String) {\r\n base64Uri = `data:${mimeTypes.lookup(imageSource)};base64, ${base64String}`;\r\n }\r\n } else {\r\n base64Uri = decodeURIComponent(vNode.properties.src);\r\n }\r\n if (base64Uri) {\r\n response = docxDocumentInstance.createMediaFile(base64Uri);\r\n }\r\n } catch (error) {\r\n // NOOP\r\n }\r\n if (response) {\r\n docxDocumentInstance.zip\r\n .folder('word')\r\n .folder('media')\r\n .file(response.fileNameWithExtension, Buffer.from(response.fileContent, 'base64'), {\r\n createFolders: false,\r\n });\r\n\r\n const documentRelsId = docxDocumentInstance.createDocumentRelationships(\r\n docxDocumentInstance.relationshipFilename,\r\n imageType,\r\n `media/${response.fileNameWithExtension}`,\r\n internalRelationship\r\n );\r\n\r\n const imageBuffer = Buffer.from(response.fileContent, 'base64');\r\n const imageProperties = sizeOf(imageBuffer);\r\n\r\n const imageFragment = await xmlBuilder.buildParagraph(\r\n vNode,\r\n {\r\n type: 'picture',\r\n inlineOrAnchored: true,\r\n relationshipId: documentRelsId,\r\n ...response,\r\n maximumWidth: maximumWidth || docxDocumentInstance.availableDocumentSpace,\r\n originalWidth: imageProperties.width,\r\n originalHeight: imageProperties.height,\r\n },\r\n docxDocumentInstance\r\n );\r\n\r\n return imageFragment;\r\n }\r\n};\r\n\r\nexport const buildList = async (vNode, docxDocumentInstance, xmlFragment) => {\r\n const listElements = [];\r\n\r\n let vNodeObjects = [\r\n {\r\n node: vNode,\r\n level: 0,\r\n type: vNode.tagName,\r\n numberingId: docxDocumentInstance.createNumbering(vNode.tagName, vNode.properties),\r\n },\r\n ];\r\n while (vNodeObjects.length) {\r\n const tempVNodeObject = vNodeObjects.shift();\r\n\r\n if (\r\n isVText(tempVNodeObject.node) ||\r\n (isVNode(tempVNodeObject.node) && !['ul', 'ol', 'li'].includes(tempVNodeObject.node.tagName))\r\n ) {\r\n const paragraphFragment = await xmlBuilder.buildParagraph(\r\n tempVNodeObject.node,\r\n {\r\n numbering: { levelId: tempVNodeObject.level, numberingId: tempVNodeObject.numberingId },\r\n },\r\n docxDocumentInstance\r\n );\r\n\r\n xmlFragment.import(paragraphFragment);\r\n }\r\n\r\n if (\r\n tempVNodeObject.node.children &&\r\n tempVNodeObject.node.children.length &&\r\n ['ul', 'ol', 'li'].includes(tempVNodeObject.node.tagName)\r\n ) {\r\n const tempVNodeObjects = tempVNodeObject.node.children.reduce((accumulator, childVNode) => {\r\n if (['ul', 'ol'].includes(childVNode.tagName)) {\r\n accumulator.push({\r\n node: childVNode,\r\n level: tempVNodeObject.level + 1,\r\n type: childVNode.tagName,\r\n numberingId: docxDocumentInstance.createNumbering(\r\n childVNode.tagName,\r\n childVNode.properties\r\n ),\r\n });\r\n } else {\r\n // eslint-disable-next-line no-lonely-if\r\n if (\r\n accumulator.length > 0 &&\r\n isVNode(accumulator[accumulator.length - 1].node) &&\r\n accumulator[accumulator.length - 1].node.tagName.toLowerCase() === 'p'\r\n ) {\r\n accumulator[accumulator.length - 1].node.children.push(childVNode);\r\n } else {\r\n const paragraphVNode = new VNode(\r\n 'p',\r\n null,\r\n // eslint-disable-next-line no-nested-ternary\r\n isVText(childVNode)\r\n ? [childVNode]\r\n : // eslint-disable-next-line no-nested-ternary\r\n isVNode(childVNode)\r\n ? childVNode.tagName.toLowerCase() === 'li'\r\n ? [...childVNode.children]\r\n : [childVNode]\r\n : []\r\n );\r\n accumulator.push({\r\n // eslint-disable-next-line prettier/prettier, no-nested-ternary\r\n node: isVNode(childVNode)\r\n ? // eslint-disable-next-line prettier/prettier, no-nested-ternary\r\n childVNode.tagName.toLowerCase() === 'li'\r\n ? childVNode\r\n : childVNode.tagName.toLowerCase() !== 'p'\r\n ? paragraphVNode\r\n : childVNode\r\n : // eslint-disable-next-line prettier/prettier\r\n paragraphVNode,\r\n level: tempVNodeObject.level,\r\n type: tempVNodeObject.type,\r\n numberingId: tempVNodeObject.numberingId,\r\n });\r\n }\r\n }\r\n\r\n return accumulator;\r\n }, []);\r\n vNodeObjects = tempVNodeObjects.concat(vNodeObjects);\r\n }\r\n }\r\n\r\n return listElements;\r\n};\r\n\r\nasync function findXMLEquivalent(docxDocumentInstance, vNode, xmlFragment) {\r\n if (\r\n vNode.tagName === 'div' &&\r\n (vNode.properties.attributes.class === 'page-break' ||\r\n (vNode.properties.style && vNode.properties.style['page-break-after']))\r\n ) {\r\n const paragraphFragment = fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'p')\r\n .ele('@w', 'r')\r\n .ele('@w', 'br')\r\n .att('@w', 'type', 'page')\r\n .up()\r\n .up()\r\n .up();\r\n\r\n xmlFragment.import(paragraphFragment);\r\n return;\r\n }\r\n\r\n switch (vNode.tagName) {\r\n case 'h1':\r\n case 'h2':\r\n case 'h3':\r\n case 'h4':\r\n case 'h5':\r\n case 'h6':\r\n const headingFragment = await xmlBuilder.buildParagraph(\r\n vNode,\r\n {\r\n paragraphStyle: `Heading${vNode.tagName[1]}`,\r\n },\r\n docxDocumentInstance\r\n );\r\n xmlFragment.import(headingFragment);\r\n return;\r\n case 'span':\r\n case 'strong':\r\n case 'b':\r\n case 'em':\r\n case 'i':\r\n case 'u':\r\n case 'ins':\r\n case 'strike':\r\n case 'del':\r\n case 's':\r\n case 'sub':\r\n case 'sup':\r\n case 'mark':\r\n case 'p':\r\n case 'a':\r\n case 'blockquote':\r\n case 'code':\r\n case 'pre':\r\n const paragraphFragment = await xmlBuilder.buildParagraph(vNode, {}, docxDocumentInstance);\r\n xmlFragment.import(paragraphFragment);\r\n return;\r\n case 'figure':\r\n if (vNodeHasChildren(vNode)) {\r\n // eslint-disable-next-line no-plusplus\r\n for (let index = 0; index < vNode.children.length; index++) {\r\n const childVNode = vNode.children[index];\r\n if (childVNode.tagName === 'table') {\r\n const tableFragment = await xmlBuilder.buildTable(\r\n childVNode,\r\n {\r\n maximumWidth: docxDocumentInstance.availableDocumentSpace,\r\n rowCantSplit: docxDocumentInstance.tableRowCantSplit,\r\n },\r\n docxDocumentInstance\r\n );\r\n xmlFragment.import(tableFragment);\r\n // Adding empty paragraph for space after table\r\n const emptyParagraphFragment = await xmlBuilder.buildParagraph(null, {});\r\n xmlFragment.import(emptyParagraphFragment);\r\n } else if (childVNode.tagName === 'img') {\r\n const imageFragment = await buildImage(docxDocumentInstance, childVNode);\r\n if (imageFragment) {\r\n xmlFragment.import(imageFragment);\r\n }\r\n }\r\n }\r\n }\r\n return;\r\n case 'table':\r\n const tableFragment = await xmlBuilder.buildTable(\r\n vNode,\r\n {\r\n maximumWidth: docxDocumentInstance.availableDocumentSpace,\r\n rowCantSplit: docxDocumentInstance.tableRowCantSplit,\r\n },\r\n docxDocumentInstance\r\n );\r\n xmlFragment.import(tableFragment);\r\n // Adding empty paragraph for space after table\r\n const emptyParagraphFragment = await xmlBuilder.buildParagraph(null, {});\r\n xmlFragment.import(emptyParagraphFragment);\r\n return;\r\n case 'ol':\r\n case 'ul':\r\n await buildList(vNode, docxDocumentInstance, xmlFragment);\r\n return;\r\n case 'img':\r\n const imageFragment = await buildImage(docxDocumentInstance, vNode);\r\n if (imageFragment) {\r\n xmlFragment.import(imageFragment);\r\n }\r\n return;\r\n case 'br':\r\n const linebreakFragment = await xmlBuilder.buildParagraph(null, {});\r\n xmlFragment.import(linebreakFragment);\r\n return;\r\n }\r\n if (vNodeHasChildren(vNode)) {\r\n // eslint-disable-next-line no-plusplus\r\n for (let index = 0; index < vNode.children.length; index++) {\r\n const childVNode = vNode.children[index];\r\n // eslint-disable-next-line no-use-before-define\r\n await convertVTreeToXML(docxDocumentInstance, childVNode, xmlFragment);\r\n }\r\n }\r\n}\r\n\r\n// eslint-disable-next-line consistent-return\r\nexport async function convertVTreeToXML(docxDocumentInstance, vTree, xmlFragment) {\r\n if (!vTree) {\r\n // eslint-disable-next-line no-useless-return\r\n return '';\r\n }\r\n if (Array.isArray(vTree) && vTree.length) {\r\n // eslint-disable-next-line no-plusplus\r\n for (let index = 0; index < vTree.length; index++) {\r\n const vNode = vTree[index];\r\n await convertVTreeToXML(docxDocumentInstance, vNode, xmlFragment);\r\n }\r\n } else if (isVNode(vTree)) {\r\n await findXMLEquivalent(docxDocumentInstance, vTree, xmlFragment);\r\n } else if (isVText(vTree)) {\r\n xmlBuilder.buildTextElement(xmlFragment, escape(String(vTree.text)));\r\n }\r\n return xmlFragment;\r\n}\r\n\r\nasync function renderDocumentFile(docxDocumentInstance) {\r\n const vTree = convertHTML(docxDocumentInstance.htmlString);\r\n\r\n const xmlFragment = fragment({ namespaceAlias: { w: namespaces.w } });\r\n\r\n const populatedXmlFragment = await convertVTreeToXML(docxDocumentInstance, vTree, xmlFragment);\r\n\r\n return populatedXmlFragment;\r\n}\r\n\r\nexport{ renderDocumentFile};\r\n","/* eslint-disable import/prefer-default-export */\r\nexport { renderDocumentFile } from './render-document-file';\r\nexport { convertVTreeToXML } from './render-document-file';\r\n","class ListStyleBuilder {\r\n // defaults is an object passed in from constants.js / numbering with the following properties:\r\n // defaultOrderedListStyleType: 'decimal' (unless otherwise specified)\r\n constructor(defaults) {\r\n this.defaults = defaults || { defaultOrderedListStyleType: 'decimal' };\r\n }\r\n\r\n // eslint-disable-next-line class-methods-use-this\r\n getListStyleType(listType) {\r\n switch (listType) {\r\n case 'upper-roman':\r\n return 'upperRoman';\r\n case 'lower-roman':\r\n return 'lowerRoman';\r\n case 'upper-alpha':\r\n case 'upper-alpha-bracket-end':\r\n return 'upperLetter';\r\n case 'lower-alpha':\r\n case 'lower-alpha-bracket-end':\r\n return 'lowerLetter';\r\n case 'decimal':\r\n case 'decimal-bracket':\r\n return 'decimal';\r\n default:\r\n return this.defaults.defaultOrderedListStyleType;\r\n }\r\n }\r\n\r\n getListPrefixSuffix(style, lvl) {\r\n let listType = this.defaults.defaultOrderedListStyleType;\r\n\r\n if (style && style['list-style-type']) {\r\n listType = style['list-style-type'];\r\n }\r\n\r\n switch (listType) {\r\n case 'upper-roman':\r\n case 'lower-roman':\r\n case 'upper-alpha':\r\n case 'lower-alpha':\r\n return `%${lvl + 1}.`;\r\n case 'upper-alpha-bracket-end':\r\n case 'lower-alpha-bracket-end':\r\n case 'decimal-bracket-end':\r\n return `%${lvl + 1})`;\r\n case 'decimal-bracket':\r\n return `(%${lvl + 1})`;\r\n case 'decimal':\r\n default:\r\n return `%${lvl + 1}.`;\r\n }\r\n }\r\n}\r\n\r\nexport {ListStyleBuilder};\r\n","import { create, fragment } from 'xmlbuilder2';\r\nimport { nanoid } from 'nanoid';\r\n\r\nimport {\r\n generateCoreXML,\r\n generateStylesXML,\r\n generateNumberingXMLTemplate,\r\n generateThemeXML,\r\n documentRelsXML as documentRelsXMLString,\r\n settingsXML as settingsXMLString,\r\n webSettingsXML as webSettingsXMLString,\r\n contentTypesXML as contentTypesXMLString,\r\n fontTableXML as fontTableXMLString,\r\n genericRelsXML as genericRelsXMLString,\r\n generateDocumentTemplate,\r\n} from './schemas';\r\nimport { convertVTreeToXML } from './helpers';\r\nimport namespaces from './namespaces';\r\nimport {\r\n footerType as footerFileType,\r\n headerType as headerFileType,\r\n themeType as themeFileType,\r\n landscapeMargins,\r\n portraitMargins,\r\n defaultOrientation,\r\n landscapeWidth,\r\n landscapeHeight,\r\n applicationName,\r\n defaultFont,\r\n defaultFontSize,\r\n hyperlinkType,\r\n documentFileName,\r\n imageType,\r\n defaultDocumentOptions,\r\n} from './constants';\r\nimport {ListStyleBuilder} from './utils/list';\r\n\r\nfunction generateContentTypesFragments(contentTypesXML, type, objects) {\r\n if (objects && Array.isArray(objects)) {\r\n objects.forEach((object) => {\r\n const contentTypesFragment = fragment({ defaultNamespace: { ele: namespaces.contentTypes } })\r\n .ele('Override')\r\n .att('PartName', `/word/${type}${object[`${type}Id`]}.xml`)\r\n .att(\r\n 'ContentType',\r\n `application/vnd.openxmlformats-officedocument.wordprocessingml.${type}+xml`\r\n )\r\n .up();\r\n\r\n contentTypesXML.root().import(contentTypesFragment);\r\n });\r\n }\r\n}\r\n\r\nfunction generateSectionReferenceXML(documentXML, documentSectionType, objects, isEnabled) {\r\n if (isEnabled && objects && Array.isArray(objects) && objects.length) {\r\n const xmlFragment = fragment();\r\n objects.forEach(({ relationshipId, type }) => {\r\n const objectFragment = fragment({ namespaceAlias: { w: namespaces.w, r: namespaces.r } })\r\n .ele('@w', `${documentSectionType}Reference`)\r\n .att('@r', 'id', `rId${relationshipId}`)\r\n .att('@w', 'type', type)\r\n .up();\r\n xmlFragment.import(objectFragment);\r\n });\r\n\r\n documentXML.root().first().first().import(xmlFragment);\r\n }\r\n}\r\n\r\nfunction generateXMLString(xmlString) {\r\n const xmlDocumentString = create({ encoding: 'UTF-8', standalone: true }, xmlString);\r\n return xmlDocumentString.toString({ prettyPrint: true });\r\n}\r\n\r\n async function generateSectionXML(vTree, type = 'header') {\r\n debugger;\r\n const sectionXML = create({\r\n encoding: 'UTF-8',\r\n standalone: true,\r\n namespaceAlias: {\r\n a:namespaces.a,\r\n cdr:namespaces.cdr,\r\n o:namespaces.o,\r\n pic:namespaces.pic,\r\n r:namespaces.r,\r\n v:namespaces.v,\r\n ve:namespaces.ve,\r\n vt:namespaces.vt,\r\n w:namespaces.w,\r\n w10:namespaces.w10,\r\n wp:namespaces.wp,\r\n wne:namespaces.wne\r\n },\r\n }).ele('@w', type === 'header' ? 'hdr' : 'ftr');\r\n\r\n const XMLFragment = fragment();\r\n await convertVTreeToXML(this, vTree, XMLFragment);\r\n if (type === 'footer' && XMLFragment.first().node.tagName === 'p' && this.pageNumber) {\r\n XMLFragment.first().import(\r\n fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'fldSimple')\r\n .att('@w', 'instr', 'PAGE')\r\n .ele('@w', 'r')\r\n .up()\r\n .up()\r\n );\r\n }\r\n sectionXML.root().import(XMLFragment);\r\n\r\n const referenceName = type === 'header' ? 'Header' : 'Footer';\r\n this[`last${referenceName}Id`] += 1;\r\n\r\n return { [`${type}Id`]: this[`last${referenceName}Id`], [`${type}XML`]: sectionXML };\r\n}\r\n\r\nexport class DocxDocument {\r\n constructor(properties) {\r\n this.zip = properties.zip;\r\n this.htmlString = properties.htmlString;\r\n this.orientation = properties.orientation;\r\n this.pageSize = properties.pageSize || defaultDocumentOptions.pageSize;\r\n\r\n const isPortraitOrientation = this.orientation === defaultOrientation;\r\n const height = this.pageSize.height ? this.pageSize.height : landscapeHeight;\r\n const width = this.pageSize.width ? this.pageSize.width : landscapeWidth;\r\n\r\n this.width = isPortraitOrientation ? width : height;\r\n this.height = isPortraitOrientation ? height : width;\r\n\r\n const marginsObject = properties.margins;\r\n this.margins =\r\n // eslint-disable-next-line no-nested-ternary\r\n marginsObject && Object.keys(marginsObject).length\r\n ? marginsObject\r\n : isPortraitOrientation\r\n ? portraitMargins\r\n : landscapeMargins;\r\n\r\n this.availableDocumentSpace = this.width - this.margins.left - this.margins.right;\r\n this.title = properties.title || '';\r\n this.subject = properties.subject || '';\r\n this.creator = properties.creator || applicationName;\r\n this.keywords = properties.keywords || [applicationName];\r\n this.description = properties.description || '';\r\n this.lastModifiedBy = properties.lastModifiedBy || applicationName;\r\n this.revision = properties.revision || 1;\r\n this.createdAt = properties.createdAt || new Date();\r\n this.modifiedAt = properties.modifiedAt || new Date();\r\n this.headerType = properties.headerType || 'default';\r\n this.header = properties.header || false;\r\n this.footerType = properties.footerType || 'default';\r\n this.footer = properties.footer || false;\r\n this.font = properties.font || defaultFont;\r\n this.fontSize = properties.fontSize || defaultFontSize;\r\n this.complexScriptFontSize = properties.complexScriptFontSize || defaultFontSize;\r\n this.tableRowCantSplit =\r\n (properties.table && properties.table.row && properties.table.row.cantSplit) || false;\r\n this.pageNumber = properties.pageNumber || false;\r\n this.skipFirstHeaderFooter = properties.skipFirstHeaderFooter || false;\r\n this.lineNumber = properties.lineNumber ? properties.lineNumberOptions : null;\r\n\r\n this.lastNumberingId = 0;\r\n this.lastMediaId = 0;\r\n this.lastHeaderId = 0;\r\n this.lastFooterId = 0;\r\n this.stylesObjects = [];\r\n this.numberingObjects = [];\r\n this.relationshipFilename = documentFileName;\r\n this.relationships = [{ fileName: documentFileName, lastRelsId: 4, rels: [] }];\r\n this.mediaFiles = [];\r\n this.headerObjects = [];\r\n this.footerObjects = [];\r\n this.documentXML = null;\r\n\r\n this.generateContentTypesXML = this.generateContentTypesXML.bind(this);\r\n this.generateDocumentXML = this.generateDocumentXML.bind(this);\r\n this.generateCoreXML = this.generateCoreXML.bind(this);\r\n this.generateSettingsXML = this.generateSettingsXML.bind(this);\r\n this.generateWebSettingsXML = this.generateWebSettingsXML.bind(this);\r\n this.generateStylesXML = this.generateStylesXML.bind(this);\r\n this.generateFontTableXML = this.generateFontTableXML.bind(this);\r\n this.generateThemeXML = this.generateThemeXML.bind(this);\r\n this.generateNumberingXML = this.generateNumberingXML.bind(this);\r\n this.generateRelsXML = this.generateRelsXML.bind(this);\r\n this.createMediaFile = this.createMediaFile.bind(this);\r\n this.createDocumentRelationships = this.createDocumentRelationships.bind(this);\r\n this.generateHeaderXML = this.generateHeaderXML.bind(this);\r\n this.generateFooterXML = this.generateFooterXML.bind(this);\r\n this.generateSectionXML = generateSectionXML.bind(this);\r\n\r\n this.ListStyleBuilder = new ListStyleBuilder(properties.numbering);\r\n }\r\n\r\n generateContentTypesXML() {\r\n const contentTypesXML = create({ encoding: 'UTF-8', standalone: true }, contentTypesXMLString);\r\n\r\n generateContentTypesFragments(contentTypesXML, 'header', this.headerObjects);\r\n generateContentTypesFragments(contentTypesXML, 'footer', this.footerObjects);\r\n\r\n return contentTypesXML.toString({ prettyPrint: true });\r\n }\r\n\r\n generateDocumentXML() {\r\n const documentXML = create(\r\n { encoding: 'UTF-8', standalone: true },\r\n generateDocumentTemplate(this.width, this.height, this.orientation, this.margins)\r\n );\r\n // documentXML.root().first().import(this.documentXML);\r\n\r\n generateSectionReferenceXML(documentXML, 'header', this.headerObjects, this.header);\r\n generateSectionReferenceXML(documentXML, 'footer', this.footerObjects, this.footer);\r\n\r\n if ((this.header || this.footer) && this.skipFirstHeaderFooter) {\r\n documentXML\r\n .root()\r\n .first()\r\n .first()\r\n .import(fragment({ namespaceAlias: { w: namespaces.w } }).ele('@w', 'titlePg'));\r\n }\r\n if (this.lineNumber) {\r\n const { countBy, start, restart } = this.lineNumber;\r\n documentXML\r\n .root()\r\n .first()\r\n .first()\r\n .import(\r\n fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'lnNumType')\r\n .att('@w', 'countBy', countBy)\r\n .att('@w', 'start', start)\r\n .att('@w', 'restart', restart)\r\n );\r\n }\r\n\r\n return documentXML.toString({ prettyPrint: true });\r\n }\r\n\r\n generateCoreXML() {\r\n return generateXMLString(\r\n generateCoreXML(\r\n this.title,\r\n this.subject,\r\n this.creator,\r\n this.keywords,\r\n this.description,\r\n this.lastModifiedBy,\r\n this.revision,\r\n this.createdAt,\r\n this.modifiedAt\r\n )\r\n );\r\n }\r\n\r\n // eslint-disable-next-line class-methods-use-this\r\n generateSettingsXML() {\r\n return generateXMLString(settingsXMLString);\r\n }\r\n\r\n // eslint-disable-next-line class-methods-use-this\r\n generateWebSettingsXML() {\r\n return generateXMLString(webSettingsXMLString);\r\n }\r\n\r\n generateStylesXML() {\r\n return generateXMLString(\r\n generateStylesXML(this.font, this.fontSize, this.complexScriptFontSize)\r\n );\r\n }\r\n\r\n // eslint-disable-next-line class-methods-use-this\r\n generateFontTableXML() {\r\n return generateXMLString(fontTableXMLString);\r\n }\r\n\r\n generateThemeXML() {\r\n return generateXMLString(generateThemeXML(this.font));\r\n }\r\n\r\n generateNumberingXML() {\r\n const numberingXML = create(\r\n { encoding: 'UTF-8', standalone: true },\r\n generateNumberingXMLTemplate()\r\n );\r\n\r\n const abstractNumberingFragments = fragment();\r\n const numberingFragments = fragment();\r\n\r\n this.numberingObjects.forEach(({ numberingId, type, properties }) => {\r\n const abstractNumberingFragment = fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'abstractNum')\r\n .att('@w', 'abstractNumId', String(numberingId));\r\n\r\n [...Array(8).keys()].forEach((level) => {\r\n const levelFragment = fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'lvl')\r\n .att('@w', 'ilvl', level)\r\n .ele('@w', 'start')\r\n .att(\r\n '@w',\r\n 'val',\r\n type === 'ol'\r\n ? (properties.attributes && properties.attributes['data-start']) || 1\r\n : '1'\r\n )\r\n .up()\r\n .ele('@w', 'numFmt')\r\n .att(\r\n '@w',\r\n 'val',\r\n type === 'ol'\r\n ? this.ListStyleBuilder.getListStyleType(\r\n properties.style && properties.style['list-style-type']\r\n )\r\n : 'bullet'\r\n )\r\n .up()\r\n .ele('@w', 'lvlText')\r\n .att(\r\n '@w',\r\n 'val',\r\n type === 'ol' ? this.ListStyleBuilder.getListPrefixSuffix(properties.style, level) : ''\r\n )\r\n .up()\r\n .ele('@w', 'lvlJc')\r\n .att('@w', 'val', 'left')\r\n .up()\r\n .ele('@w', 'pPr')\r\n .ele('@w', 'tabs')\r\n .ele('@w', 'tab')\r\n .att('@w', 'val', 'num')\r\n .att('@w', 'pos', (level + 1) * 720)\r\n .up()\r\n .up()\r\n .ele('@w', 'ind')\r\n .att('@w', 'left', (level + 1) * 720)\r\n .att('@w', 'hanging', 360)\r\n .up()\r\n .up()\r\n .up();\r\n\r\n if (type === 'ul') {\r\n levelFragment.last().import(\r\n fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'rPr')\r\n .ele('@w', 'rFonts')\r\n .att('@w', 'ascii', 'Symbol')\r\n .att('@w', 'hAnsi', 'Symbol')\r\n .att('@w', 'hint', 'default')\r\n .up()\r\n .up()\r\n );\r\n }\r\n abstractNumberingFragment.import(levelFragment);\r\n });\r\n abstractNumberingFragment.up();\r\n abstractNumberingFragments.import(abstractNumberingFragment);\r\n\r\n numberingFragments.import(\r\n fragment({ namespaceAlias: { w: namespaces.w } })\r\n .ele('@w', 'num')\r\n .att('@w', 'numId', String(numberingId))\r\n .ele('@w', 'abstractNumId')\r\n .att('@w', 'val', String(numberingId))\r\n .up()\r\n .up()\r\n );\r\n });\r\n\r\n numberingXML.root().import(abstractNumberingFragments);\r\n numberingXML.root().import(numberingFragments);\r\n\r\n return numberingXML.toString({ prettyPrint: true });\r\n }\r\n\r\n // eslint-disable-next-line class-methods-use-this\r\n appendRelationships(xmlFragment, relationships) {\r\n relationships.forEach(({ relationshipId, type, target, targetMode }) => {\r\n xmlFragment.import(\r\n fragment({ defaultNamespace: { ele: namespaces.relationship } })\r\n .ele('Relationship')\r\n .att('Id', `rId${relationshipId}`)\r\n .att('Type', type)\r\n .att('Target', target)\r\n .att('TargetMode', targetMode)\r\n .up()\r\n );\r\n });\r\n }\r\n\r\n generateRelsXML() {\r\n const relationshipXMLStrings = this.relationships.map(({ fileName, rels }) => {\r\n const xmlFragment = create(\r\n { encoding: 'UTF-8', standalone: true },\r\n fileName === documentFileName ? documentRelsXMLString : genericRelsXMLString\r\n );\r\n this.appendRelationships(xmlFragment.root(), rels);\r\n\r\n return { fileName, xmlString: xmlFragment.toString({ prettyPrint: true }) };\r\n });\r\n return relationshipXMLStrings;\r\n }\r\n\r\n createNumbering(type, properties) {\r\n this.lastNumberingId += 1;\r\n this.numberingObjects.push({ numberingId: this.lastNumberingId, type, properties });\r\n\r\n return this.lastNumberingId;\r\n }\r\n\r\n createMediaFile(base64String) {\r\n // eslint-disable-next-line no-useless-escape\r\n const matches = base64String.match(/^data:([A-Za-z-+\\/]+);base64,(.+)$/);\r\n if (matches.length !== 3) {\r\n throw new Error('Invalid base64 string');\r\n }\r\n\r\n const base64FileContent = matches[2];\r\n // matches array contains file type in base64 format - image/jpeg and base64 stringified data\r\n const fileExtension =\r\n matches[1].match(/\\/(.*?)$/)[1] === 'octet-stream' ? 'png' : matches[1].match(/\\/(.*?)$/)[1];\r\n\r\n const fileNameWithExtension = `image-${nanoid()}.${fileExtension}`;\r\n\r\n this.lastMediaId += 1;\r\n\r\n return { id: this.lastMediaId, fileContent: base64FileContent, fileNameWithExtension };\r\n }\r\n\r\n createDocumentRelationships(fileName = 'document', type, target, targetMode = 'External') {\r\n debugger;\r\n let relationshipObject = this.relationships.find(\r\n (relationship) => relationship.fileName === fileName\r\n );\r\n let lastRelsId = 1;\r\n if (relationshipObject) {\r\n lastRelsId = relationshipObject.lastRelsId + 1;\r\n relationshipObject.lastRelsId = lastRelsId;\r\n } else {\r\n relationshipObject = { fileName, lastRelsId, rels: [] };\r\n this.relationships.push(relationshipObject);\r\n }\r\n let relationshipType;\r\n switch (type) {\r\n case hyperlinkType:\r\n relationshipType = namespaces.hyperlinks;\r\n break;\r\n case imageType:\r\n relationshipType = namespaces.images;\r\n break;\r\n case headerFileType:\r\n relationshipType = namespaces.headers;\r\n break;\r\n case footerFileType:\r\n relationshipType = namespaces.footers;\r\n break;\r\n case themeFileType:\r\n relationshipType = namespaces.themes;\r\n break;\r\n }\r\n\r\n relationshipObject.rels.push({\r\n relationshipId: lastRelsId,\r\n type: relationshipType,\r\n target,\r\n targetMode,\r\n });\r\n\r\n console.log(fileName)\r\n console.log( relationshipObject.rels)\r\n return lastRelsId;\r\n }\r\n\r\n generateHeaderXML(vTree) {\r\n return this.generateSectionXML(vTree, 'header');\r\n }\r\n\r\n generateFooterXML(vTree) {\r\n return this.generateSectionXML(vTree, 'footer');\r\n }\r\n}\r\n\r\n","export const defaultMargins = {\r\n top: 1440,\r\n right: 1440,\r\n bottom: 1440,\r\n left: 1440,\r\n header: 720,\r\n footer: 720,\r\n gutter: 0,\r\n}\r\n\r\nexport type Margins = typeof defaultMargins\r\n\r\nexport type Orient = 'landscape' | 'portrait'\r\n\r\nexport const documentTemplate = (width: number, height: number, orient: string, margins: Margins) => {\r\n return `<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\r\n<w:document\r\n xmlns:w=\"http://schemas.openxmlformats.org/wordprocessingml/2006/main\"\r\n xmlns:m=\"http://schemas.openxmlformats.org/officeDocument/2006/math\"\r\n xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\"\r\n xmlns:wp=\"http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing\"\r\n xmlns:a=\"http://schemas.openxmlformats.org/drawingml/2006/main\"\r\n xmlns:ns6=\"http://schemas.openxmlformats.org/schemaLibrary/2006/main\"\r\n xmlns:c=\"http://schemas.openxmlformats.org/drawingml/2006/chart\"\r\n xmlns:ns8=\"http://schemas.openxmlformats.org/drawingml/2006/chartDrawing\"\r\n xmlns:dgm=\"http://schemas.openxmlformats.org/drawingml/2006/diagram\"\r\n xmlns:pic=\"http://schemas.openxmlformats.org/drawingml/2006/picture\"\r\n xmlns:ns11=\"http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing\"\r\n xmlns:dsp=\"http://schemas.microsoft.com/office/drawing/2008/diagram\"\r\n xmlns:ns13=\"urn:schemas-microsoft-com:office:excel\"\r\n xmlns:o=\"urn:schemas-microsoft-com:office:office\"\r\n xmlns:v=\"urn:schemas-microsoft-com:vml\"\r\n xmlns:w10=\"urn:schemas-microsoft-com:office:word\"\r\n xmlns:ns17=\"urn:schemas-microsoft-com:office:powerpoint\"\r\n xmlns:odx=\"http://opendope.org/xpaths\"\r\n xmlns:odc=\"http://opendope.org/conditions\"\r\n xmlns:odq=\"http://opendope.org/questions\"\r\n xmlns:odi=\"http://opendope.org/components\"\r\n xmlns:odgm=\"http://opendope.org/SmartArt/DataHierarchy\"\r\n xmlns:ns24=\"http://schemas.openxmlformats.org/officeDocument/2006/bibliography\"\r\n xmlns:ns25=\"http://schemas.openxmlformats.org/drawingml/2006/compatibility\"\r\n xmlns:ns26=\"http://schemas.openxmlformats.org/drawingml/2006/lockedCanvas\">\r\n <w:body>\r\n <w:altChunk r:id=\"htmlChunk\" />\r\n <w:sectPr>\r\n <w:pgSz w:w=\"${width}\" w:h=\"${height}\" w:orient=\"${orient}\" />\r\n <w:pgMar w:top=\"${margins.top}\"\r\n w:right=\"${margins.right}\"\r\n w:bottom=\"${margins.bottom}\"\r\n w:left=\"${margins.left}\"\r\n w:header=\"${margins.header}\"\r\n w:footer=\"${margins.footer}\"\r\n w:gutter=\"${margins.gutter}\"/>\r\n </w:sectPr>\r\n </w:body>\r\n</w:document>\r\n`\r\n}\r\n","export const mhtDocumentTemplate = (htmlSource: string, contentParts: string) => {\r\n debugger;\r\n return `MIME-Version: 1.0\r\nContent-Type: multipart/related;\r\n type=\"text/html\";\r\n boundary=\"----=mhtDocumentPart\"\r\n\r\n\r\n------=mhtDocumentPart\r\nContent-Type: text/html;\r\n charset=\"utf-8\"\r\nContent-Transfer-Encoding: quoted-printable\r\nContent-Location: file:///C:/fake/document.html\r\n\r\n${htmlSource}\r\n\r\n${contentParts}\r\n\r\n------=mhtDocumentPart--\r\n`\r\n}\r\n","export const mhtPartTemplate = (\r\n contentType: string,\r\n contentEncoding: string,\r\n contentLocation: string,\r\n encodedContent: string,\r\n) => {\r\n return `------=mhtDocumentPart\r\nContent-Type: ${contentType}\r\nContent-Transfer-Encoding: ${contentEncoding}\r\nContent-Location: ${contentLocation}\r\n\r\n${encodedContent}\r\n`\r\n}\r\n","import { mhtDocumentTemplate, mhtPartTemplate } from './templates'\r\n\r\nexport function getMHTdocument(htmlSource: string) {\r\n debugger\r\n const ref = _prepareImageParts(htmlSource)\r\n const imageContentPartsString = ref.imageContentParts.join('\\n')\r\n htmlSource = ref.htmlSource.replace(/\\=/g, '=3D')\r\n return mhtDocumentTemplate(htmlSource, imageContentPartsString)\r\n}\r\n\r\nfunction _prepareImageParts(htmlSource: string) {\r\n debugger\r\n const imageContentParts: string[] = []\r\n const inlinedSrcPattern = /\"data:(\\w+\\/\\w+);(\\w+),(\\S+)\"/g\r\n const inlinedReplacer = (match: string, contentType: string, contentEncoding: string, encodedContent: string) => {\r\n const index = imageContentParts.length\r\n const extension = contentType.split('/')[1]\r\n const contentLocation = `file:///C:/fake/image${index}.${extension}`\r\n imageContentParts.push(mhtPartTemplate(contentType, contentEncoding, contentLocation, encodedContent))\r\n return `\\\"${contentLocation}\\\"`\r\n }\r\n if (!/<img/g.test(htmlSource)) {\r\n return { htmlSource, imageContentParts }\r\n }\r\n htmlSource = htmlSource.replace(inlinedSrcPattern, inlinedReplacer)\r\n return { htmlSource, imageContentParts }\r\n}\r\n","import { create } from 'xmlbuilder2';\r\nimport VNode from 'virtual-dom/vnode/vnode';\r\nimport VText from 'virtual-dom/vnode/vtext';\r\n// eslint-disable-next-line import/no-named-default\r\nimport { default as HTMLToVDOM } from 'html-to-vdom';\r\n\r\nimport { relsXML } from './schemas';\r\nimport {DocxDocument} from './docx-document';\r\nimport { renderDocumentFile } from './helpers';\r\nimport {getMHTdocument} from \"./word-work/utils\"\r\nimport {\r\n pixelRegex,\r\n pixelToTWIP,\r\n cmRegex,\r\n cmToTWIP,\r\n inchRegex,\r\n inchToTWIP,\r\n pointRegex,\r\n pointToHIP,\r\n} from './utils/unit-conversion';\r\nimport {\r\n defaultDocumentOptions,\r\n defaultHTMLString,\r\n relsFolderName,\r\n headerFileName,\r\n footerFileName,\r\n themeFileName,\r\n documentFileName,\r\n headerType,\r\n footerType,\r\n internalRelationship,\r\n wordFolder,\r\n themeFolder,\r\n themeType,\r\n} from './constants';\r\nimport {generateDocumentTemplateHeader,generateDocumentTemplateFooter,generateDocumentTemplateFooterWithoutPaging }from './schemas/document.template';\r\nconst convertHTML = HTMLToVDOM({\r\n VNode,\r\n VText,\r\n});\r\n\r\nconst mergeOptions = (options, patch) => ({ ...options, ...patch });\r\n\r\nconst fixupFontSize = (fontSize) => {\r\n let normalizedFontSize;\r\n if (pointRegex.test(fontSize)) {\r\n const matchedParts = fontSize.match(pointRegex);\r\n\r\n normalizedFontSize = pointToHIP(matchedParts[1]);\r\n } else if (fontSize) {\r\n // assuming it is already in HIP\r\n normalizedFontSize = fontSize;\r\n } else {\r\n normalizedFontSize = null;\r\n }\r\n\r\n return normalizedFontSize;\r\n};\r\n\r\nconst normalizeUnits = (dimensioningObject, defaultDimensionsProperty) => {\r\n let normalizedUnitResult = {};\r\n if (typeof dimensioningObject === 'object' && dimensioningObject !== null) {\r\n Object.keys(dimensioningObject).forEach((key) => {\r\n if (pixelRegex.test(dimensioningObject[key])) {\r\n const matchedParts = dimensioningObject[key].match(pixelRegex);\r\n normalizedUnitResult[key] = pixelToTWIP(matchedParts[1]);\r\n } else if (cmRegex.test(dimensioningObject[key])) {\r\n const matchedParts = dimensioningObject[key].match(cmRegex);\r\n normalizedUnitResult[key] = cmToTWIP(matchedParts[1]);\r\n } else if (inchRegex.test(dimensioningObject[key])) {\r\n const matchedParts = dimensioningObject[key].match(inchRegex);\r\n normalizedUnitResult[key] = inchToTWIP(matchedParts[1]);\r\n } else if (dimensioningObject[key]) {\r\n normalizedUnitResult[key] = dimensioningObject[key];\r\n } else {\r\n // incase value is something like 0\r\n normalizedUnitResult[key] = defaultDimensionsProperty[key];\r\n }\r\n });\r\n } else {\r\n // eslint-disable-next-line no-param-reassign\r\n normalizedUnitResult = null;\r\n }\r\n\r\n return normalizedUnitResult;\r\n};\r\n\r\nconst normalizeDocumentOptions = (documentOptions) => {\r\n const normalizedDocumentOptions = { ...documentOptions };\r\n Object.keys(documentOptions).forEach((key) => {\r\n // eslint-disable-next-line default-case\r\n switch (key) {\r\n case 'pageSize':\r\n case 'margins':\r\n normalizedDocumentOptions[key] = normalizeUnits(\r\n documentOptions[key],\r\n defaultDocumentOptions[key]\r\n );\r\n break;\r\n case 'fontSize':\r\n case 'complexScriptFontSize':\r\n normalizedDocumentOptions[key] = fixupFontSize(documentOptions[key]);\r\n break;\r\n }\r\n });\r\n\r\n return normalizedDocumentOptions;\r\n};\r\n\r\n// Ref: https://en.wikipedia.org/wiki/Office_Open_XML_file_formats\r\n// http://officeopenxml.com/anatomyofOOXML.php\r\n async function addFilesToContainer(\r\n zip,\r\n htmlString,\r\n suppliedDocumentOptions,\r\n headerHTMLString,\r\n footerHTMLString\r\n) {\r\n debugger;\r\n const normalizedDocumentOptions = normalizeDocumentOptions(suppliedDocumentOptions);\r\n const documentOptions = mergeOptions(defaultDocumentOptions, normalizedDocumentOptions);\r\n\r\n if (documentOptions.header && !headerHTMLString) {\r\n // eslint-disable-next-line no-param-reassign\r\n headerHTMLString = defaultHTMLString;\r\n }\r\n if (documentOptions.footer && !footerHTMLString) {\r\n // eslint-disable-next-line no-param-reassign\r\n footerHTMLString = defaultHTMLString;\r\n }\r\n\r\n const docxDocument = new DocxDocument({ zip, htmlString, ...documentOptions });\r\n // Conversion to Word XML happens here\r\n docxDocument.documentXML = await renderDocumentFile(docxDocument);\r\n debugger;\r\n zip\r\n .folder(relsFolderName)\r\n .file(\r\n '.rels',\r\n create({ encoding: 'UTF-8', standalone: true }, relsXML).toString({ prettyPrint: true }),\r\n { createFolders: false }\r\n );\r\n\r\n zip.folder('docProps').file('core.xml', docxDocument.generateCoreXML(), {\r\n createFolders: false,\r\n });\r\n\r\n if (docxDocument.header && headerHTMLString) {\r\n const vTree = convertHTML(headerHTMLString);\r\n\r\n docxDocument.relationshipFilename = headerFileName;\r\n const { headerId, headerXML } = await docxDocument.generateHeaderXML(vTree);\r\n docxDocument.relationshipFilename = documentFileName;\r\n const fileNameWithExt = `${headerType}${headerId}.xml`;\r\n\r\n const relationshipId = docxDocument.createDocumentRelationships(\r\n docxDocument.relationshipFilename,\r\n headerType,\r\n fileNameWithExt,\r\n internalRelationship\r\n );\r\n\r\n zip.folder(wordFolder).file(fileNameWithExt, generateDocumentTemplateHeader.toString({ prettyPrint: true }), {\r\n createFolders: false,\r\n });\r\n\r\n docxDocument.headerObjects.push({ headerId, relationshipId, type: docxDocument.headerType });\r\n }\r\n if (docxDocument.footer && footerHTMLString) {\r\n const vTree = convertHTML(footerHTMLString);\r\n\r\n docxDocument.relationshipFilename = footerFileName;\r\n const { footerId, footerXML } = await docxDocument.generateFooterXML(vTree);\r\n docxDocument.relationshipFilename = documentFileName;\r\n const fileNameWithExt = `${footerType}${footerId}.xml`;\r\n\r\n const relationshipId = docxDocument.createDocumentRelationships(\r\n docxDocument.relationshipFilename,\r\n footerType,\r\n fileNameWithExt,\r\n internalRelationship\r\n );\r\n console.log(footerXML.toString({ prettyPrint: true }))\r\n\r\n if(suppliedDocumentOptions.pageNumber)\r\n zip.folder(wordFolder).file(fileNameWithExt, generateDocumentTemplateFooter.toString({ prettyPrint: true }), {\r\n createFolders: false,\r\n });\r\n else\r\n zip.folder(wordFolder).file(fileNameWithExt, generateDocumentTemplateFooterWithoutPaging.toString({ prettyPrint: true }), {\r\n createFolders: false,\r\n });\r\n\r\n docxDocument.footerObjects.push({ footerId, relationshipId, type: docxDocument.footerType });\r\n }\r\n const themeFileNameWithExt = `${themeFileName}.xml`;\r\n docxDocument.createDocumentRelationships(\r\n docxDocument.relationshipFilename,\r\n themeType,\r\n `${themeFolder}/${themeFileNameWithExt}`,\r\n internalRelationship\r\n );\r\n zip\r\n .folder(wordFolder)\r\n .folder(themeFolder)\r\n .file(themeFileNameWithExt, docxDocument.generateThemeXML(), {\r\n createFolders: false,\r\n });\r\n\r\n zip\r\n .folder(wordFolder)\r\n .file('document.xml', docxDocument.generateDocumentXML(), { createFolders: false })\r\n .file('afchunk.mht', getMHTdocument(htmlString), {\r\n createFolders: false,\r\n })\r\n .file('afchunkheader.mht', getMHTdocument(headerHTMLString), {\r\n createFolders: false,\r\n })\r\n .file('afchunkfooter.mht', getMHTdocument(footerHTMLString), {\r\n createFolders: false,\r\n })\r\n .file('fontTable.xml', docxDocument.generateFontTableXML(), { createFolders: false })\r\n .file('styles.xml', docxDocument.generateStylesXML(), { createFolders: false })\r\n .file('numbering.xml', docxDocument.generateNumberingXML(), { createFolders: false })\r\n .file('settings.xml', docxDocument.generateSettingsXML(), { createFolders: false })\r\n .file('webSettings.xml', docxDocument.generateWebSettingsXML(), { createFolders: false });\r\n\r\n const relationshipXMLs = docxDocument.generateRelsXML();\r\n if (relationshipXMLs && Array.isArray(relationshipXMLs)) {\r\n relationshipXMLs.forEach(({ fileName, xmlString }) => {\r\n console.log(xmlString)\r\n zip.folder(wordFolder).folder(relsFolderName).file(`${fileName}.xml.rels`, xmlString, {\r\n createFolders: false,\r\n });\r\n });\r\n }\r\n\r\n if (relationshipXMLs && Array.isArray(relationshipXMLs)) {\r\n relationshipXMLs.forEach(({ fileName, xmlString }) => {\r\n zip.folder(wordFolder).folder(relsFolderName).file(`header1.xml.rels`, xmlString, {\r\n createFolders: false,\r\n });\r\n });\r\n }\r\n if (relationshipXMLs && Array.isArray(relationshipXMLs)) {\r\n relationshipXMLs.forEach(({ fileName, xmlString }) => {\r\n zip.folder(wordFolder).folder(relsFolderName).file(`footer1.xml.rels`, xmlString, {\r\n createFolders: false,\r\n });\r\n });\r\n }\r\n\r\n\r\n zip.file('[Content_Types].xml', docxDocument.generateContentTypesXML(), { createFolders: false });\r\n\r\n return zip;\r\n}\r\n\r\nexport { addFilesToContainer};\r\n","/* eslint-disable no-useless-escape */\r\nimport JSZip from 'jszip';\r\nimport {addFilesToContainer} from './html-to-docx';\r\n\r\nconst minifyHTMLString = (htmlString) => {\r\n try {\r\n if (typeof htmlString === 'string' || htmlString instanceof String) {\r\n const minifiedHTMLString = htmlString\r\n .replace(/\\n/g, ' ')\r\n .replace(/\\r/g, ' ')\r\n .replace(/\\r\\n/g, ' ')\r\n .replace(/[\\t]+\\</g, '<')\r\n .replace(/\\>[\\t ]+\\</g, '><')\r\n .replace(/\\>[\\t ]+$/g, '>');\r\n\r\n return minifiedHTMLString;\r\n }\r\n\r\n throw new Error('invalid html string');\r\n } catch (error) {\r\n return null;\r\n }\r\n};\r\n\r\nasync function generateContainer(\r\n htmlString,\r\n headerHTMLString,\r\n documentOptions = {},\r\n footerHTMLString\r\n) {\r\n const zip = new JSZip();\r\n\r\n let contentHTML = htmlString;\r\n let headerHTML = headerHTMLString;\r\n let footerHTML = footerHTMLString;\r\n if (htmlString) {\r\n contentHTML = minifyHTMLString(contentHTML);\r\n }\r\n if (headerHTMLString) {\r\n headerHTML = minifyHTMLString(headerHTML);\r\n }\r\n if (footerHTMLString) {\r\n footerHTML = minifyHTMLString(footerHTML);\r\n }\r\n\r\n await addFilesToContainer(zip, contentHTML, documentOptions, headerHTML, footerHTML);\r\n\r\n const buffer = await zip.generateAsync({ type: 'arraybuffer' });\r\n if (Object.prototype.hasOwnProperty.call(global, 'Buffer')) {\r\n return Buffer.from(new Uint8Array(buffer));\r\n }\r\n if (Object.prototype.hasOwnProperty.call(global, 'Blob')) {\r\n // eslint-disable-next-line no-undef\r\n return new Blob([buffer], {\r\n type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\r\n });\r\n }\r\n throw new Error(\r\n 'Add blob support using a polyfill eg https://github.com/bjornstar/blob-polyfill'\r\n );\r\n}\r\n\r\nexport {generateContainer};\r\n","import { Injectable } from '@angular/core';\r\nimport { generateContainer as GenerateDOCX } from '../config//word/index';\r\nimport { WordDocumentModel } from '../models/WordDocumentModel';\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class WordDocumentService {\r\n async generateWordByteFile(model: WordDocumentModel) {\r\n let documentOptions: any = {};\r\n if (model.options.isLandscape) documentOptions.orientation = 'landscape';\r\n documentOptions.pageSize = {\r\n width: model.options.pageWidth * 15,\r\n height: model.options.pageHeight * 15,\r\n };\r\n documentOptions.margins = {\r\n top: model.options.top * 15,\r\n right: model.options.right * 15,\r\n bottom: model.options.bottom * 15,\r\n left: model.options.left * 15,\r\n header: model.options.top * 15*2,\r\n footer: model.options.bottom * 15*2,\r\n gutter: 0,\r\n };\r\n documentOptions.footer = true;\r\n documentOptions.header = true;\r\n documentOptions.pageNumber = model.options.showPaging;\r\n documentOptions.table = { row: { cantSplit: true } };\r\n var fileBuffer = await GenerateDOCX(\r\n model.body,\r\n model.header,\r\n documentOptions,\r\n model.footer\r\n );\r\n return fileBuffer;\r\n }\r\n}\r\n","export class WordDocumentModel\r\n{\r\n header:string;\r\n footer:string;\r\n body:string;\r\n options:DocumentOptionsModel=new DocumentOptionsModel()\r\n}\r\nexport class DocumentOptionsModel\r\n{\r\n pageHeight:number;\r\n pageWidth:number;\r\n top:number;\r\n bottom:number;\r\n left:number;\r\n right:number;\r\n isLandscape:boolean;\r\n showPaging:boolean;\r\n\r\n}\r\n","/*\r\n * Public API Surface of @bnsights/bbsf-utilities\r\n */\r\n\r\nexport * from './lib/bbsf-utilities.module';\r\n\r\nexport * from './lib/shared/services/utility.service';\r\nexport * from './lib/shared/services/environment.service';\r\nexport * from './lib/shared/services/requesthandler.service'\r\nexport * from './lib/shared/services/stylesbundle.service'\r\nexport * from './lib/shared/services/translate.service'\r\nexport * from './lib/shared/services/controlvalidation.service'\r\nexport * from './lib/shared/services/masterlayout.service'\r\nexport * from './lib/shared/services/translationresolver.service'\r\nexport * from './lib/shared/services/AppearanceConfiguration.service'\r\nexport * from './lib/shared/services/configuration.service'\r\nexport * from './lib/shared/services/word-document.service'\r\n\r\nexport * from './lib/shared/config/environment';\r\n\r\n\r\nexport * from './lib/shared/authentication/auth.service';\r\n\r\n\r\nexport * from './lib/shared/models/RequestOptionsModel';\r\nexport * from './lib/shared/models/WordDocumentModel';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["fixupFontSize","convertHTML","xmlBuilder.buildParagraph","xmlBuilder.buildTable","xmlBuilder.buildTextElement","contentTypesXML","contentTypesXMLString","settingsXMLString","webSettingsXMLString","fontTableXMLString","documentRelsXMLString","genericRelsXMLString","headerFileType","footerFileType","themeFileType","GenerateDOCX"],"mappings":"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"}
|