@bnsights/bbsf-utilities 1.0.67 → 1.0.68

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.
@@ -1 +1 @@
1
- {"version":3,"file":"bnsights-bbsf-utilities.mjs","sources":["../../../projects/bbsf-utilities/src/lib/shared/models/UserModel.ts","../../../projects/bbsf-utilities/src/lib/shared/enums/authentication-modes-enums.ts","../../../projects/bbsf-utilities/src/lib/shared/services/appearance-configuration.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/configuration.service.ts","../../../projects/bbsf-utilities/src/lib/shared/models/area-model.ts","../../../projects/bbsf-utilities/src/lib/shared/models/error-model.ts","../../../projects/bbsf-utilities/src/lib/shared/models/request-options-model.ts","../../../projects/bbsf-utilities/src/lib/shared/models/word-document-model.ts","../../../projects/bbsf-utilities/src/lib/shared/models/speech-language.ts","../../../projects/bbsf-utilities/src/lib/shared/services/control-validation.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/master-layout.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/request-handler.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/styles-bundle.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/translate.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/translation-resolver.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/utility.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/services/language.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/speech-recognition.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/preload.service.ts","../../../projects/bbsf-utilities/src/lib/shared/authentication/auth.service.ts","../../../projects/bbsf-utilities/src/lib/bbsf-utilities.module.ts","../../../projects/bbsf-utilities/src/public-api.ts","../../../projects/bbsf-utilities/src/bnsights-bbsf-utilities.ts"],"sourcesContent":["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","export enum AuthenticationModes {\r\n Forms = 'Forms',\r\n UAEPass = \"UAEPass\",\r\n WindowsAD = \"WindowsAD\",\r\n AzureAD = \"AzureAD\",\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { ConfigurationService } from \".\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AppearanceConfigurationService {\r\n\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\r\n getFooterText() {\r\n return this.configService.getConfigurationValue('AnonymousLayout_FooterText');\r\n }\r\n\r\n getPageTitle() {\r\n return this.configService.getConfigurationValue('AnonymousLayout_PageTitle');\r\n }\r\n\r\n getFavIcon() {\r\n return this.configService.getConfigurationValue('AnonymousLayout_FavIcon');\r\n }\r\n\r\n getCustomStyles() {\r\n return this.configService.getConfigurationValue('AnonymousLayout_CustomStyles');\r\n }\r\n\r\n getLogo() {\r\n return this.configService.getConfigurationValue('AnonymousLayout_Logo');\r\n }\r\n \r\n}","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable, Injector, OnInit } from \"@angular/core\";\r\nimport { AuthService } from \"../authentication\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ConfigurationService {\r\n\r\n static JsonData: any[] = [];\r\n private currentUserProfile: any;\r\n private _authService: AuthService;\r\n\r\n constructor(private httpClient: HttpClient, private injector: Injector) {\r\n this.httpClient.get(\"./assets/config/configurations.json\")\r\n .subscribe(data => {\r\n ConfigurationService.JsonData = data as any[];\r\n });\r\n }\r\n\r\n private get authService(): AuthService {\r\n if (!this._authService) {\r\n this._authService = this.injector.get(AuthService);\r\n }\r\n return this._authService;\r\n }\r\n\r\n getConfigurationValue(key: string) {\r\n this.currentUserProfile = this.authService.getCurrentUser()?.profile;\r\n var selectedKey = ConfigurationService.JsonData[key];\r\n if (selectedKey && typeof selectedKey === 'object') {\r\n if (selectedKey.OrganizationConfigurations) {\r\n if (this.currentUserProfile && this.currentUserProfile.organizationGUID_ID) {\r\n let organizationValue = Array(selectedKey.OrganizationConfigurations).find(o => o.OrganizationID_GUID == this.currentUserProfile.organizationGUID_ID);\r\n return organizationValue;\r\n }\r\n } else {\r\n return selectedKey.Value;\r\n }\r\n } else {\r\n return selectedKey;\r\n }\r\n }\r\n\r\n}","export class AreaModel {\r\n permissionSetID: number\r\n areaUrl: string;\r\n}\r\n","export class ErrorModel {\r\n field: string;\r\n controlName: string;\r\n message: string;\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","export class WordDocumentModel {\r\n header: string;\r\n footer: string;\r\n body: string;\r\n options: DocumentOptionsModel = new DocumentOptionsModel()\r\n}\r\n\r\nexport class DocumentOptionsModel {\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","export class LanguageDTO {\r\n name: string;\r\n prefix: string;\r\n dialect: string;\r\n englishName: string;\r\n arabicName: string;\r\n nativeName: string;\r\n detected: string;\r\n searching: string;\r\n elevating: string;\r\n translating: string;\r\n generatingAnswersForYou: string;\r\n isRTL: boolean;\r\n}\r\n","import { HttpErrorResponse } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { BlockUI, NgBlockUI } from 'ng-block-ui';\r\nimport { ErrorModel, RequestOptionsModel } from '../models';\r\nimport { UtilityService } from '.';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ControlValidationService {\r\n\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 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 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 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","// 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({}, (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';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EnvironmentService {\r\n\r\n static areaList: AreaModel[] = [];\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 return environment[\"BBSF_BaseURL\"];\r\n }\r\n\r\n getApiUrl() {\r\n return environment[\"BBSF_ApiUrl\"];\r\n }\r\n\r\n getProductionMode() {\r\n return environment[\"BBSF_IsProduction\"] as boolean;\r\n }\r\n\r\n getDefaultLanguage() {\r\n return environment[\"BBSF_DefaultLanguage\"] as string;\r\n }\r\n\r\n getIdentityServerUrl() {\r\n return environment[\"BBSF_IdentityServerUrl\"];\r\n }\r\n\r\n getIsIdentityServerExternal() {\r\n return environment[\"BBSF_IsExternalIdentityServer\"] as string;\r\n }\r\n\r\n getIsIdentityServerClientId() {\r\n return environment[\"BBSF_IdentityServer_Client_Id\"] as string;\r\n }\r\n\r\n getIsIdentityServerClientSecret() {\r\n return environment[\"BBSF_IdentityServer_Client_Secret\"] as string;\r\n }\r\n\r\n getBBSFAuthenticationMode() {\r\n let Mode = environment[\"BBSF_AuthenticationMode\"] as string;\r\n return Mode;\r\n }\r\n\r\n getUAEPassBaseUrl() {\r\n let Mode = environment[\"UAEPass_BaseUrl\"] as string;\r\n return Mode;\r\n }\r\n getUAEPassClientID() {\r\n let Mode = environment[\"UAEPass_ClientID\"] as string;\r\n return Mode;\r\n }\r\n getUAEPassRedirectUrl() {\r\n let Mode = environment[\"UAEPass_RedirectUrl\"] as string;\r\n return Mode;\r\n }\r\n getUAEPassAuthorizationEndPoint() {\r\n let Mode = environment[\"UAEPass_AuthorizationEndPoint\"] as string;\r\n return Mode;\r\n }\r\n\r\n getUAEPassRedirectLogoutUrl() {\r\n let Mode = environment[\"UAEPass_RedirectLogoutUrl\"] as string;\r\n return Mode;\r\n }\r\n\r\n getUAEPassLogoutEndPoint() {\r\n let Mode = environment[\"UAEPass_LogoutEndPoint\"] as string;\r\n return Mode;\r\n }\r\n\r\n\r\n getIsEnableWindowsAuthentication() {\r\n let Mode = environment[\"BBSF_Enable_WindowsAuthentication\"] as string;\r\n return Mode.toLocaleLowerCase() == 'true';\r\n }\r\n\r\n getAllowMultiTenancy() {\r\n let mode = environment[\"BBSF_AllowMultiTenancy\"] as string;\r\n return mode.toLocaleLowerCase() == 'true';\r\n }\r\n\r\n getCookieName() {\r\n let cookieName = environment[\"BBSF_CookieName\"];\r\n return cookieName;\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 { EnvironmentService, RequestHandlerService, StylesBundleService } from '.';\r\nimport { AuthService } from '../authentication';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class MasterLayoutService {\r\n\r\n apiUrl = '/api/Home/';\r\n\r\n constructor(private router: Router, private http: RequestHandlerService, private authService: AuthService,\r\n private stylesBundleService: StylesBundleService, private translate: TranslateService,\r\n private environmentService: EnvironmentService) { }\r\n\r\n switchLang(lang: string, bundleEnglishName: string, bundleArabicName: string) {\r\n if (this.authService.isAuthenticated()) {\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 else\r\n this.router.navigate(['/Admin/account/login']);\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', 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 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', 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}\r\n","import { HttpClient, HttpErrorResponse, HttpHeaders, HttpParams } from \"@angular/common/http\";\r\nimport { Injectable, OnDestroy } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { plainToClass } from 'class-transformer';\r\nimport { Observable, Subject, throwError } from 'rxjs';\r\nimport { map, takeUntil, tap } from 'rxjs/operators';\r\nimport { BBSFTranslateService, EnvironmentService, UtilityService } from \".\";\r\nimport { AuthService } from '../authentication/auth.service';\r\nimport { RequestOptionsModel } from '../models';\r\n\r\n@Injectable()\r\nexport class RequestHandlerService implements OnDestroy {\r\n\r\n private requestOptions: RequestOptionsModel = new RequestOptionsModel();\r\n private currentLanguage = \"\";\r\n public onDestroy$: Subject<void> = new Subject<void>();\r\n\r\n constructor(\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 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 // Function to check if the internet connection is available\r\n private isOnline(): boolean {\r\n return navigator.onLine || !this.environmentService.getProductionMode();\r\n }\r\n\r\n // ...\r\n get<T>(Url: string, params?: HttpParams, responseType?: new () => T, requestOptions?: RequestOptionsModel): Observable<T> {\r\n if (!this.isOnline()) {\r\n const errorCode = 504; // Custom error code for internet disconnection\r\n const errorMessage = 'Internet connection is disconnected.';\r\n var error = new HttpErrorResponse({ error: { Message: errorMessage }, status: 504 });\r\n this.handleError(error);\r\n return;\r\n }\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.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 if (!this.isOnline()) {\r\n const errorCode = 504; // Custom error code for internet disconnection\r\n const errorMessage = 'Internet connection is disconnected.';\r\n var error = new HttpErrorResponse({ error: { Message: errorMessage }, status: 504 });\r\n this.handleError(error);\r\n return;\r\n }\r\n\r\n if (requestOptions)\r\n this.requestOptions = requestOptions;\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 (!this.isOnline()) {\r\n const errorCode = 504; // Custom error code for internet disconnection\r\n const errorMessage = 'Internet connection is disconnected.';\r\n var error = new HttpErrorResponse({ error: { Message: errorMessage }, status: 504 });\r\n this.handleError(error);\r\n return;\r\n }\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.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 (!this.isOnline()) {\r\n const errorCode = 504; // Custom error code for internet disconnection\r\n const errorMessage = 'Internet connection is disconnected.';\r\n var error = new HttpErrorResponse({ error: { Message: errorMessage }, status: 504 });\r\n this.handleError(error);\r\n return;\r\n }\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.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 if (!this.isOnline()) {\r\n const errorCode = 504; // Custom error code for internet disconnection\r\n const errorMessage = 'Internet connection is disconnected.';\r\n var error = new HttpErrorResponse({ error: { Message: errorMessage }, status: 504 });\r\n this.handleError(error);\r\n return;\r\n }\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\r\n download<T>(Url: string, params?: HttpParams, requestOptions?: RequestOptionsModel): Observable<T> {\r\n if (!this.isOnline()) {\r\n const errorCode = 504; // Custom error code for internet disconnection\r\n const errorMessage = 'Internet connection is disconnected.';\r\n var error = new HttpErrorResponse({ error: { Message: errorMessage }, status: 504 });\r\n this.handleError(error);\r\n return;\r\n }\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.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\r\n Upload<T>(Url: string, model?: any): Observable<any> {\r\n if (!this.isOnline()) {\r\n const errorCode = 504; // Custom error code for internet disconnection\r\n const errorMessage = 'Internet connection is disconnected.';\r\n var error = new HttpErrorResponse({ error: { Message: errorMessage }, status: 504 });\r\n this.handleError(error);\r\n return;\r\n }\r\n\r\n let headers = this.getHeadersUpdated();\r\n return this.http.post(this.environmentService.getApiUrl() + Url, model, { headers: headers, reportProgress: true, observe: 'events' }).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 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 if (err.status == 504)\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 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 getHeadersUpdated() {\r\n return new HttpHeaders({\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 'Video-Upload': 'true',\r\n 'Image-Upload': 'true',\r\n });\r\n\r\n }\r\n}\r\n","import { DOCUMENT } from '@angular/common';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { BBSFTranslateService } from '.';\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 } 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}","import { inject } from \"@angular/core\";\r\nimport { ResolveFn } from \"@angular/router\";\r\nimport { BBSFTranslateService } from \".\";\r\n\r\nexport const TranslationResolverService: ResolveFn<any> = () => {\r\n let translateService = inject(BBSFTranslateService);\r\n return translateService.getTranslation(translateService.currentLang);\r\n}","import { Injectable, Injector } from '@angular/core';\r\nimport { BlockUI, NgBlockUI } from 'ng-block-ui';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { BBSFTranslateService, EnvironmentService } from '.';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UtilityService {\r\n\r\n isCreatedBefore = false;\r\n\r\n @BlockUI() blockUI: NgBlockUI;\r\n\r\n constructor(private translator: BBSFTranslateService, private environmentService: EnvironmentService, private injector: Injector) {\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 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\r\n isCurrentLanguageEnglish() {\r\n return this.getCurrentLanguage() == \"en\"\r\n }\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 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 = this.injector.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 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 = this.injector.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 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 = this.injector.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\r\n stopBlockUI() {\r\n this.blockUI.stop();\r\n }\r\n\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: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument',\r\n corePropertiesRelation: 'http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties',\r\n settingsRelation: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings',\r\n webSettingsRelation: '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 {\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\n// eslint-disable-next-line consistent-return, no-shadow\r\nconst 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\nconst 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\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 buildImage,\r\n buildList\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\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 { vNodeHasChildren } from '../utils/vnode';\r\n\r\nconst convertHTML = HTMLToVDOM({\r\n VNode,\r\n VText,\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 xmlBuilder.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 xmlBuilder.buildList(vNode, docxDocumentInstance, xmlFragment);\r\n return;\r\n case 'img':\r\n const imageFragment = await xmlBuilder.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\nasync 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\nasync 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';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class WordDocumentService {\r\n\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}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { RequestHandlerService } from \"./request-handler.service\";\r\nimport { Observable } from \"rxjs\";\r\nimport { LanguageDTO } from \"../models\";\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n })\r\n export class LanguageService {\r\n apiUrl = '/api/Language/';\r\n constructor(private http: RequestHandlerService) { }\r\n\r\n getLanguages():Observable<LanguageDTO[]> {\r\n return this.http.get(this.apiUrl + 'GetAll', null, null);\r\n }\r\n \r\n }","import { Injectable, NgZone } from '@angular/core';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { UtilityService } from './utility.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SpeechRecognitionService {\r\n recognition: any;\r\n isListening = false;\r\n isSupported = false;\r\n language: string = 'en-US';\r\n\r\n constructor(private zone: NgZone,private utilityService:UtilityService) {\r\n const SpeechRecognition = (window as any).SpeechRecognition || (window as any).webkitSpeechRecognition;\r\n\r\n if (SpeechRecognition) {\r\n this.recognition = new SpeechRecognition();\r\n this.recognition.continuous = true;\r\n this.recognition.interimResults = false;\r\n this.recognition.maxAlternatives = 1;\r\n this.isSupported = true;\r\n }\r\n }\r\n\r\n startListening(language: string = this.language): Observable<string> {\r\n if (!this.isSupported) {\r\n return throwError(() => new Error('Web Speech API is not supported in this browser.'));\r\n }\r\n\r\n return new Observable(observer => {\r\n this.isListening = true;\r\n this.recognition.lang = language;\r\n this.recognition.start();\r\n\r\n this.recognition.onresult = (event: any) => {\r\n this.zone.run(() => {\r\n const transcript = event.results[event.results.length - 1][0].transcript;\r\n observer.next(transcript);\r\n });\r\n };\r\n\r\n this.recognition.onspeechend = () => {\r\n this.stopListening();\r\n };\r\n\r\n this.recognition.onerror = (event: any) => {\r\n this.zone.run(() => {\r\n if (event.error === 'not-allowed') {\r\n this.utilityService.notifyErrorMessage(this.utilityService.getResourceValue(\"MicAccessDenied\"));\r\n observer.error('Microphone access denied by the user.');\r\n } else {\r\n observer.error(event.error);\r\n }\r\n });\r\n };\r\n\r\n this.recognition.onend = () => {\r\n this.zone.run(() => {\r\n if (this.isListening) {\r\n this.recognition.start(); // Automatically restart\r\n } else {\r\n observer.complete();\r\n }\r\n });\r\n };\r\n });\r\n }\r\n\r\n stopListening() {\r\n if (this.isSupported) {\r\n this.isListening = false;\r\n this.recognition.stop();\r\n }\r\n }\r\n\r\n\r\n}\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { lastValueFrom } from 'rxjs';\r\nimport { BBSFTranslateService } from './translate.service';\r\nimport { environment } from '../config/environment';\r\n\r\ndeclare const window: any;\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class FileLoaderService {\r\n private availableLanguages = ['en', 'ar']; // Add more languages as needed\r\n // environment:any;\r\n constructor(private translate: BBSFTranslateService, private http: HttpClient) {\r\n this.translate.addLangs(this.availableLanguages);\r\n }\r\n\r\n loadEnvironment(): Promise<void> {\r\n return new Promise((resolve, reject) => {\r\n const script = document.createElement('script');\r\n script.src = '/assets/config/environment.js';\r\n script.onload = () => {\r\n if (window.Environment) {\r\n Object.assign(environment, window.Environment);\r\n resolve();\r\n } else {\r\n reject('Environment variables not found.');\r\n }\r\n };\r\n script.onerror = () => reject('Failed to load environment.js');\r\n document.head.appendChild(script);\r\n });\r\n }\r\n\r\n async preloadTranslations(): Promise<void> {\r\n console.log('Starting to preload translation files...');\r\n try {\r\n const requests = this.availableLanguages.map(async (lang) => {\r\n const translations = await lastValueFrom(this.http.get(`/assets/i18n/${lang}.json`));\r\n console.log(`Loaded ${lang} translations:`, translations);\r\n this.translate.setTranslation(lang, translations, true);\r\n });\r\n\r\n await Promise.all(requests);\r\n this.translate.use('en'); // Set default language manually\r\n console.log('All translations preloaded.');\r\n } catch (error) {\r\n console.error('Error preloading translations:', error);\r\n }\r\n }\r\n}","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable, Injector } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { Router } from '@angular/router';\r\nimport { JwtHelperService } from '@auth0/angular-jwt';\r\nimport { BBSFTranslateService, EnvironmentService } from '../services';\r\nimport { User } from '../models/UserModel';\r\nimport { CookieService } from 'ngx-cookie-service';\r\nimport { UtilityService } from '../services/utility.service';\r\nimport { AuthenticationModes } from '../enums/authentication-modes-enums';\r\nimport { setTimeout } from 'timers';\r\n\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 private get user(): User | null {\r\n if (!this._user) {\r\n this._user = this.getUserManager();\r\n }\r\n return this._user;\r\n }\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 \r\n }\r\n\r\n private _TOKEN_KEY: string\r\n get TOKEN_KEY() {\r\n if (!this._TOKEN_KEY) {\r\n this._TOKEN_KEY = this.environmentService.getCookieName();\r\n }\r\n return this._TOKEN_KEY;\r\n }\r\n\r\n private hasToken(): boolean {\r\n const token = this.cookieService.get(this.TOKEN_KEY);\r\n return token && !this.jwtHelper.isTokenExpired(token);\r\n }\r\n\r\n getUserManager() {\r\n const token = this.cookieService.get(this.TOKEN_KEY);\r\n if (token) {\r\n if (!this.jwtHelper.isTokenExpired(token))\r\n this.handleAccessTokenWithoutLanguage(token);\r\n else\r\n this.cookieService.delete(this.TOKEN_KEY, '/');\r\n }\r\n else {\r\n AuthService.timers.map(t => clearInterval(t));\r\n AuthService.timers = [];\r\n AuthService.user = null;\r\n this._user = null;\r\n }\r\n return AuthService.user;\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 isAuthenticated(): boolean {\r\n AuthService.user = this.user;\r\n return AuthService.user != null && !this.jwtHelper.isTokenExpired(AuthService.user.access_token);\r\n }\r\n isUserInRole(allowedPermission) {\r\n let selectedPermissionSetID = Number.parseInt(AuthService.user.profile['selectedpermissionsetid']);\r\n return allowedPermission.includes(selectedPermissionSetID);\r\n }\r\n\r\n isUserPermissionSetsInRoles(allowedPermission: number[]): boolean {\r\n const permissionSetSIDString = AuthService.user.profile['permissionSetSID'];\r\n if (!permissionSetSIDString) {\r\n return false;\r\n }\r\n\r\n // Split comma-separated string and convert to numbers\r\n const userPermissionSets = permissionSetSIDString\r\n .split(',')\r\n .map(id => Number.parseInt(id.trim()))\r\n .filter(id => !isNaN(id)); // Filter out invalid numbers\r\n\r\n // Check if any user permission set is in the allowed permissions\r\n return userPermissionSets.some(permissionSetID => allowedPermission.includes(permissionSetID));\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\r\n signOut() {\r\n let isAuthenticated = this.isAuthenticated();\r\n this.cookieService.delete(this.TOKEN_KEY, '/');\r\n AuthService.timers.map(t => clearInterval(t));\r\n AuthService.timers = [];\r\n AuthService.user = null;\r\n this._user = null;\r\n localStorage.removeItem(\"redirectUrl\");\r\n if (isAuthenticated) {\r\n this.logout().subscribe(res => {\r\n if (this.environmentService.getBBSFAuthenticationMode() == AuthenticationModes.UAEPass)\r\n this.logoutFromUAEPass();\r\n else\r\n this.router.navigate(['/Admin/account/login']);\r\n });\r\n }\r\n else {\r\n if (this.environmentService.getBBSFAuthenticationMode() == AuthenticationModes.UAEPass)\r\n this.logoutFromUAEPass();\r\n else\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 async handleAccessToken(response: any): Promise<void> {\r\n this.cookieService.delete(this.TOKEN_KEY, '/');\r\n const token = response;\r\n AuthService.user = null;\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._user = AuthService.user;\r\n localStorage.setItem(\"language\", AuthService.user.profile.locale);\r\n this.cookieService.set(this.TOKEN_KEY, token, AuthService.user.expires_at, \"/\", null, true, 'Lax');\r\n this.isAuthenticatedSubject.next(true);\r\n this.setTokenSeconds();\r\n AuthService.timers.push(this.checkRefreshToken());\r\n await this.updateLanguage();\r\n }\r\n\r\n handleAccessTokenWithoutLanguage(response: any) {\r\n this.cookieService.delete(this.TOKEN_KEY, '/');\r\n const token = response;\r\n AuthService.user = null;\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 localStorage.setItem(\"language\", AuthService.user.profile.locale);\r\n this.cookieService.set(this.TOKEN_KEY, token, AuthService.user.expires_at, \"/\", null, true, 'Lax');\r\n this.isAuthenticatedSubject.next(true);\r\n AuthService.timers.push(this.checkRefreshToken());\r\n }\r\n async updateLanguage() {\r\n if (!localStorage.getItem('language') || localStorage.getItem('language') == this.user.profile.locale)\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.reloadLang(localStorage.getItem('language')).subscribe();\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 AuthService.timers.map(t => clearInterval(t));\r\n AuthService.timers = [];\r\n const token = this.cookieService.get(this.TOKEN_KEY);\r\n if (token) {\r\n this.refresh();\r\n }\r\n }\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 this.cookieService.delete(this.TOKEN_KEY, '/');\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.handleAccessTokenWithoutLanguage(res.val);\r\n });\r\n }\r\n\r\n loginWithUAEPass() {\r\n const authEndpoint = `${this.environmentService.getUAEPassBaseUrl()}${this.environmentService.getUAEPassAuthorizationEndPoint()}`;\r\n const queryParams = {\r\n response_type: 'code',\r\n client_id: `${this.environmentService.getUAEPassClientID()}`,\r\n redirect_uri: `${this.environmentService.getBaseUrl()}${this.environmentService.getUAEPassRedirectUrl()}`,\r\n scope: 'urn:uae:digitalid:profile:general urn:uae:digitalid:profile:general:profileType urn:uae:digitalid:profile:general:unifiedId',\r\n state: this.translateService.currentLang,\r\n acr_values: 'urn:safelayer:tws:policies:authentication:level:low',\r\n ui_locales: this.translateService.currentLang,\r\n };\r\n const queryParamsString = Object.entries(queryParams)\r\n .map(([key, value]) => `${key}=${encodeURIComponent(value)}`)\r\n .join('&');\r\n const loginUrl = `${authEndpoint}?${queryParamsString}`;\r\n window.location.href = loginUrl;\r\n return;\r\n }\r\n\r\n logoutFromUAEPass() {\r\n const logoutEndpoint = `${this.environmentService.getUAEPassBaseUrl()}${this.environmentService.getUAEPassLogoutEndPoint()}`;\r\n const queryParams = {\r\n redirect_uri: `${this.environmentService.getBaseUrl()}`,\r\n };\r\n const queryParamsString = Object.entries(queryParams)\r\n .map(([key, value]) => `${key}=${encodeURIComponent(value)}`)\r\n .join('&');\r\n\r\n const logoutUrl = `${logoutEndpoint}?${queryParamsString}`;\r\n window.location.href = logoutUrl;\r\n return;\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { 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 { CookieService } from 'ngx-cookie-service';\r\nimport {\r\n UtilityService, EnvironmentService, RequestHandlerService, StylesBundleService, BBSFTranslateService,\r\n ControlValidationService, MasterLayoutService, ConfigurationService, AuthService, LanguageService,\r\n SpeechRecognitionService\r\n} from './shared';\r\n\r\n@NgModule({\r\n declarations: [\r\n ],\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n BlockUIModule.forRoot(),\r\n ToastrModule.forRoot(),\r\n\r\n ],\r\n exports: [],\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 LanguageService,\r\n SpeechRecognitionService\r\n ]\r\n})\r\nexport class BBSFUtilitiesModule {\r\n\r\n}\r\n","/*\r\n * Public API Surface of @bnsights/bbsf-utilities\r\n */\r\n\r\n//Module\r\nexport * from './lib/bbsf-utilities.module';\r\n\r\n//#region services\r\n\r\nexport * from './lib/shared/services/utility.service';\r\nexport * from './lib/shared/services/environment.service';\r\nexport * from './lib/shared/services/request-handler.service';\r\nexport * from './lib/shared/services/styles-bundle.service';\r\nexport * from './lib/shared/services/translate.service';\r\nexport * from './lib/shared/services/control-validation.service';\r\nexport * from './lib/shared/services/master-layout.service';\r\nexport * from './lib/shared/services/translation-resolver.service';\r\nexport * from './lib/shared/services/appearance-configuration.service';\r\nexport * from './lib/shared/services/configuration.service';\r\nexport * from './lib/shared/services/word-document.service';\r\nexport * from './lib/shared/authentication/auth.service';\r\nexport * from './lib/shared/services/language.service';\r\nexport * from './lib/shared/services/speech-recognition.service';\r\nexport * from './lib/shared/services/preload.service';\r\n\r\n\r\n\r\n//#endregion\r\n\r\n//#region config\r\nexport * from './lib/shared/config/environment';\r\n//#endregion\r\n\r\n//#region models \r\nexport * from './lib/shared/models/request-options-model';\r\nexport * from './lib/shared/models/word-document-model';\r\nexport * from './lib/shared/models/speech-language';\r\n//#endregion\r\n\r\n//#region export enums\r\nexport * from './lib/shared/enums/authentication-modes-enums';\r\n//#endregion\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ConfigurationService","i1.UtilityService","i1","i2.RequestHandlerService","i3.AuthService","i2.StylesBundleService","i2.EnvironmentService","i2.AuthService","i3.EnvironmentService","i3.UtilityService","i3.BBSFTranslateService","i4","i1.BBSFTranslateService","i1.EnvironmentService","fixupFontSize","convertHTML","VNode","xmlBuilder.buildParagraph","xmlBuilder.buildTable","xmlBuilder.buildImage","xmlBuilder.buildList","xmlBuilder.buildTextElement","contentTypesXML","contentTypesXMLString","settingsXMLString","webSettingsXMLString","fontTableXMLString","documentRelsXMLString","genericRelsXMLString","headerFileType","footerFileType","themeFileType","GenerateDOCX","i1.RequestHandlerService","i2","i2.BBSFTranslateService","i3","i5.UtilityService"],"mappings":"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"}
1
+ {"version":3,"file":"bnsights-bbsf-utilities.mjs","sources":["../../../projects/bbsf-utilities/src/lib/shared/models/UserModel.ts","../../../projects/bbsf-utilities/src/lib/shared/enums/authentication-modes-enums.ts","../../../projects/bbsf-utilities/src/lib/shared/services/appearance-configuration.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/configuration.service.ts","../../../projects/bbsf-utilities/src/lib/shared/models/area-model.ts","../../../projects/bbsf-utilities/src/lib/shared/models/error-model.ts","../../../projects/bbsf-utilities/src/lib/shared/models/request-options-model.ts","../../../projects/bbsf-utilities/src/lib/shared/models/word-document-model.ts","../../../projects/bbsf-utilities/src/lib/shared/models/speech-language.ts","../../../projects/bbsf-utilities/src/lib/shared/services/control-validation.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/master-layout.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/request-handler.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/styles-bundle.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/translate.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/translation-resolver.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/utility.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/services/language.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/speech-recognition.service.ts","../../../projects/bbsf-utilities/src/lib/shared/services/preload.service.ts","../../../projects/bbsf-utilities/src/lib/shared/authentication/auth.service.ts","../../../projects/bbsf-utilities/src/lib/bbsf-utilities.module.ts","../../../projects/bbsf-utilities/src/public-api.ts","../../../projects/bbsf-utilities/src/bnsights-bbsf-utilities.ts"],"sourcesContent":["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","export enum AuthenticationModes {\r\n Forms = 'Forms',\r\n UAEPass = \"UAEPass\",\r\n WindowsAD = \"WindowsAD\",\r\n AzureAD = \"AzureAD\",\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { ConfigurationService } from \".\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AppearanceConfigurationService {\r\n\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\r\n getFooterText() {\r\n return this.configService.getConfigurationValue('AnonymousLayout_FooterText');\r\n }\r\n\r\n getPageTitle() {\r\n return this.configService.getConfigurationValue('AnonymousLayout_PageTitle');\r\n }\r\n\r\n getFavIcon() {\r\n return this.configService.getConfigurationValue('AnonymousLayout_FavIcon');\r\n }\r\n\r\n getCustomStyles() {\r\n return this.configService.getConfigurationValue('AnonymousLayout_CustomStyles');\r\n }\r\n\r\n getLogo() {\r\n return this.configService.getConfigurationValue('AnonymousLayout_Logo');\r\n }\r\n \r\n}","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable, Injector, OnInit } from \"@angular/core\";\r\nimport { AuthService } from \"../authentication\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ConfigurationService {\r\n\r\n static JsonData: any[] = [];\r\n private currentUserProfile: any;\r\n private _authService: AuthService;\r\n\r\n constructor(private httpClient: HttpClient, private injector: Injector) {\r\n this.httpClient.get(\"./assets/config/configurations.json\")\r\n .subscribe(data => {\r\n ConfigurationService.JsonData = data as any[];\r\n });\r\n }\r\n\r\n private get authService(): AuthService {\r\n if (!this._authService) {\r\n this._authService = this.injector.get(AuthService);\r\n }\r\n return this._authService;\r\n }\r\n\r\n getConfigurationValue(key: string) {\r\n this.currentUserProfile = this.authService.getCurrentUser()?.profile;\r\n var selectedKey = ConfigurationService.JsonData[key];\r\n if (selectedKey && typeof selectedKey === 'object') {\r\n if (selectedKey.OrganizationConfigurations) {\r\n if (this.currentUserProfile && this.currentUserProfile.organizationGUID_ID) {\r\n let organizationValue = Array(selectedKey.OrganizationConfigurations).find(o => o.OrganizationID_GUID == this.currentUserProfile.organizationGUID_ID);\r\n return organizationValue;\r\n }\r\n } else {\r\n return selectedKey.Value;\r\n }\r\n } else {\r\n return selectedKey;\r\n }\r\n }\r\n\r\n}","export class AreaModel {\r\n permissionSetID: number\r\n areaUrl: string;\r\n}\r\n","export class ErrorModel {\r\n field: string;\r\n controlName: string;\r\n message: string;\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","export class WordDocumentModel {\r\n header: string;\r\n footer: string;\r\n body: string;\r\n options: DocumentOptionsModel = new DocumentOptionsModel()\r\n}\r\n\r\nexport class DocumentOptionsModel {\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","export class LanguageDTO {\r\n name: string;\r\n prefix: string;\r\n dialect: string;\r\n englishName: string;\r\n arabicName: string;\r\n nativeName: string;\r\n detected: string;\r\n searching: string;\r\n elevating: string;\r\n translating: string;\r\n generatingAnswersForYou: string;\r\n isRTL: boolean;\r\n}\r\n","import { HttpErrorResponse } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { BlockUI, NgBlockUI } from 'ng-block-ui';\r\nimport { ErrorModel, RequestOptionsModel } from '../models';\r\nimport { UtilityService } from '.';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ControlValidationService {\r\n\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 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 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 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","// 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({}, (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';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class EnvironmentService {\r\n\r\n static areaList: AreaModel[] = [];\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 return environment[\"BBSF_BaseURL\"];\r\n }\r\n\r\n getApiUrl() {\r\n return environment[\"BBSF_ApiUrl\"];\r\n }\r\n\r\n getProductionMode() {\r\n return environment[\"BBSF_IsProduction\"] as boolean;\r\n }\r\n\r\n getDefaultLanguage() {\r\n return environment[\"BBSF_DefaultLanguage\"] as string;\r\n }\r\n\r\n getIdentityServerUrl() {\r\n return environment[\"BBSF_IdentityServerUrl\"];\r\n }\r\n\r\n getIsIdentityServerExternal() {\r\n return environment[\"BBSF_IsExternalIdentityServer\"] as string;\r\n }\r\n\r\n getIsIdentityServerClientId() {\r\n return environment[\"BBSF_IdentityServer_Client_Id\"] as string;\r\n }\r\n\r\n getIsIdentityServerClientSecret() {\r\n return environment[\"BBSF_IdentityServer_Client_Secret\"] as string;\r\n }\r\n\r\n getBBSFAuthenticationMode() {\r\n let Mode = environment[\"BBSF_AuthenticationMode\"] as string;\r\n return Mode;\r\n }\r\n\r\n getUAEPassBaseUrl() {\r\n let Mode = environment[\"UAEPass_BaseUrl\"] as string;\r\n return Mode;\r\n }\r\n getUAEPassClientID() {\r\n let Mode = environment[\"UAEPass_ClientID\"] as string;\r\n return Mode;\r\n }\r\n getUAEPassRedirectUrl() {\r\n let Mode = environment[\"UAEPass_RedirectUrl\"] as string;\r\n return Mode;\r\n }\r\n getUAEPassAuthorizationEndPoint() {\r\n let Mode = environment[\"UAEPass_AuthorizationEndPoint\"] as string;\r\n return Mode;\r\n }\r\n\r\n getUAEPassRedirectLogoutUrl() {\r\n let Mode = environment[\"UAEPass_RedirectLogoutUrl\"] as string;\r\n return Mode;\r\n }\r\n\r\n getUAEPassLogoutEndPoint() {\r\n let Mode = environment[\"UAEPass_LogoutEndPoint\"] as string;\r\n return Mode;\r\n }\r\n\r\n\r\n getIsEnableWindowsAuthentication() {\r\n let Mode = environment[\"BBSF_Enable_WindowsAuthentication\"] as string;\r\n return Mode.toLocaleLowerCase() == 'true';\r\n }\r\n\r\n getAllowMultiTenancy() {\r\n let mode = environment[\"BBSF_AllowMultiTenancy\"] as string;\r\n return mode.toLocaleLowerCase() == 'true';\r\n }\r\n\r\n getCookieName() {\r\n let cookieName = environment[\"BBSF_CookieName\"];\r\n return cookieName;\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 { EnvironmentService, RequestHandlerService, StylesBundleService } from '.';\r\nimport { AuthService } from '../authentication';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class MasterLayoutService {\r\n\r\n apiUrl = '/api/Home/';\r\n\r\n constructor(private router: Router, private http: RequestHandlerService, private authService: AuthService,\r\n private stylesBundleService: StylesBundleService, private translate: TranslateService,\r\n private environmentService: EnvironmentService) { }\r\n\r\n switchLang(lang: string, bundleEnglishName: string, bundleArabicName: string) {\r\n if (this.authService.isAuthenticated()) {\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 else\r\n this.router.navigate(['/Admin/account/login']);\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', 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 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', 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}\r\n","import { HttpClient, HttpErrorResponse, HttpHeaders, HttpParams } from \"@angular/common/http\";\r\nimport { Injectable, OnDestroy } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { plainToClass } from 'class-transformer';\r\nimport { Observable, Subject, throwError } from 'rxjs';\r\nimport { map, takeUntil, tap } from 'rxjs/operators';\r\nimport { BBSFTranslateService, EnvironmentService, UtilityService } from \".\";\r\nimport { AuthService } from '../authentication/auth.service';\r\nimport { RequestOptionsModel } from '../models';\r\n\r\n@Injectable()\r\nexport class RequestHandlerService implements OnDestroy {\r\n\r\n private currentLanguage = \"\";\r\n public onDestroy$: Subject<void> = new Subject<void>();\r\n\r\n constructor(\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 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 // Function to check if the internet connection is available\r\n private isOnline(): boolean {\r\n return navigator.onLine || !this.environmentService.getProductionMode();\r\n }\r\n\r\n // ...\r\n get<T>(Url: string, params?: HttpParams, responseType?: new () => T, requestOptions?: RequestOptionsModel): Observable<T> {\r\n if (!this.isOnline()) {\r\n const errorCode = 504; // Custom error code for internet disconnection\r\n const errorMessage = 'Internet connection is disconnected.';\r\n var error = new HttpErrorResponse({ error: { Message: errorMessage }, status: errorCode });\r\n this.handleError(error);\r\n return;\r\n }\r\n\r\n const currentRequestOptions = requestOptions || new RequestOptionsModel();\r\n\r\n let headers = this.getHeaders();\r\n if (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.startBlockUI();\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 (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }, error => {\r\n if (!currentRequestOptions.disableErrorHandler)\r\n this.handleError(error);\r\n }), map((data: T) => {\r\n if (currentRequestOptions.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 if (!this.isOnline()) {\r\n const errorCode = 504; // Custom error code for internet disconnection\r\n const errorMessage = 'Internet connection is disconnected.';\r\n var error = new HttpErrorResponse({ error: { Message: errorMessage }, status: 504 });\r\n this.handleError(error);\r\n return;\r\n }\r\n\r\n const currentRequestOptions = requestOptions || new RequestOptionsModel();\r\n let headers = this.getHeaders();\r\n if (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.startBlockUI();\r\n return this.http.post<T>(this.environmentService.getApiUrl() + Url, model, { headers: headers, params: params, responseType: currentRequestOptions.responseType }).pipe(\r\n takeUntil(this.onDestroy$),\r\n tap((result) => {\r\n if (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }, error => {\r\n if (!currentRequestOptions.disableErrorHandler)\r\n this.handleError(error);\r\n }), map((data: T) => {\r\n if (currentRequestOptions.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 (!this.isOnline()) {\r\n const errorCode = 504; // Custom error code for internet disconnection\r\n const errorMessage = 'Internet connection is disconnected.';\r\n var error = new HttpErrorResponse({ error: { Message: errorMessage }, status: 504 });\r\n this.handleError(error);\r\n return;\r\n }\r\n\r\n const currentRequestOptions = requestOptions || new RequestOptionsModel();\r\n\r\n let headers = this.getHeaders();\r\n if (!currentRequestOptions.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 (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }, error => {\r\n if (!currentRequestOptions.disableErrorHandler)\r\n this.handleError(error);\r\n }), map((data: T) => {\r\n if (currentRequestOptions.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 (!this.isOnline()) {\r\n const errorCode = 504; // Custom error code for internet disconnection\r\n const errorMessage = 'Internet connection is disconnected.';\r\n var error = new HttpErrorResponse({ error: { Message: errorMessage }, status: 504 });\r\n this.handleError(error);\r\n return;\r\n }\r\n\r\n const currentRequestOptions = requestOptions || new RequestOptionsModel();\r\n\r\n let headers = this.getHeaders();\r\n if (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.startBlockUI();\r\n return this.http.put<T>(this.environmentService.getApiUrl() + Url, model, { headers: headers, params: params, responseType: currentRequestOptions.responseType }).pipe(\r\n takeUntil(this.onDestroy$),\r\n tap((result) => {\r\n if (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }, error => {\r\n if (!currentRequestOptions.disableErrorHandler)\r\n this.handleError(error);\r\n }), map((data: T) => {\r\n if (currentRequestOptions.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 if (!this.isOnline()) {\r\n const errorCode = 504; // Custom error code for internet disconnection\r\n const errorMessage = 'Internet connection is disconnected.';\r\n var error = new HttpErrorResponse({ error: { Message: errorMessage }, status: 504 });\r\n this.handleError(error);\r\n return;\r\n }\r\n\r\n const currentRequestOptions = requestOptions || new RequestOptionsModel();\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 (!currentRequestOptions.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: currentRequestOptions.responseType }).pipe(\r\n takeUntil(this.onDestroy$),\r\n tap((result) => {\r\n if (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }, error => {\r\n if (!currentRequestOptions.disableErrorHandler)\r\n this.handleError(error);\r\n }), map((data: T) => {\r\n if (currentRequestOptions.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 download<T>(Url: string, params?: HttpParams, requestOptions?: RequestOptionsModel): Observable<T> {\r\n if (!this.isOnline()) {\r\n const errorCode = 504; // Custom error code for internet disconnection\r\n const errorMessage = 'Internet connection is disconnected.';\r\n var error = new HttpErrorResponse({ error: { Message: errorMessage }, status: 504 });\r\n this.handleError(error);\r\n return;\r\n }\r\n\r\n const currentRequestOptions = requestOptions || new RequestOptionsModel();\r\n\r\n let headers = this.getHeaders();\r\n if (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.startBlockUI();\r\n return this.http.get<T>(this.environmentService.getApiUrl() + Url, { headers: headers, params: params, responseType: currentRequestOptions.responseType }).pipe(\r\n takeUntil(this.onDestroy$),\r\n tap((result) => {\r\n if (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }, error => {\r\n if (!currentRequestOptions.disableErrorHandler)\r\n this.handleError(error);\r\n })\r\n );\r\n }\r\n\r\n\r\n Upload<T>(Url: string, model?: any, requestOptions?: RequestOptionsModel): Observable<any> {\r\n if (!this.isOnline()) {\r\n const errorCode = 504; // Custom error code for internet disconnection\r\n const errorMessage = 'Internet connection is disconnected.';\r\n var error = new HttpErrorResponse({ error: { Message: errorMessage }, status: 504 });\r\n this.handleError(error);\r\n return;\r\n }\r\n\r\n const currentRequestOptions = requestOptions || new RequestOptionsModel();\r\n\r\n let headers = this.getHeadersUpdated();\r\n return this.http.post(this.environmentService.getApiUrl() + Url, model, { headers: headers, reportProgress: true, observe: 'events' }).pipe(\r\n takeUntil(this.onDestroy$),\r\n tap((result) => {\r\n if (!currentRequestOptions.disableBlockUI)\r\n this.utilityService.stopBlockUI();\r\n }, error => {\r\n if (!currentRequestOptions.disableErrorHandler)\r\n this.handleError(error);\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 if (err.status == 504)\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 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 getHeadersUpdated() {\r\n return new HttpHeaders({\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 'Video-Upload': 'true',\r\n 'Image-Upload': 'true',\r\n });\r\n\r\n }\r\n}\r\n","import { DOCUMENT } from '@angular/common';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { BBSFTranslateService } from '.';\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 } 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}","import { inject } from \"@angular/core\";\r\nimport { ResolveFn } from \"@angular/router\";\r\nimport { BBSFTranslateService } from \".\";\r\n\r\nexport const TranslationResolverService: ResolveFn<any> = () => {\r\n let translateService = inject(BBSFTranslateService);\r\n return translateService.getTranslation(translateService.currentLang);\r\n}","import { Injectable, Injector } from '@angular/core';\r\nimport { BlockUI, NgBlockUI } from 'ng-block-ui';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { BBSFTranslateService, EnvironmentService } from '.';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UtilityService {\r\n\r\n isCreatedBefore = false;\r\n\r\n @BlockUI() blockUI: NgBlockUI;\r\n\r\n constructor(private translator: BBSFTranslateService, private environmentService: EnvironmentService, private injector: Injector) {\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 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\r\n isCurrentLanguageEnglish() {\r\n return this.getCurrentLanguage() == \"en\"\r\n }\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 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 = this.injector.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 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 = this.injector.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 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 = this.injector.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\r\n stopBlockUI() {\r\n this.blockUI.stop();\r\n }\r\n\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: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument',\r\n corePropertiesRelation: 'http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties',\r\n settingsRelation: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings',\r\n webSettingsRelation: '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 {\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\n// eslint-disable-next-line consistent-return, no-shadow\r\nconst 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\nconst 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\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 buildImage,\r\n buildList\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\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 { vNodeHasChildren } from '../utils/vnode';\r\n\r\nconst convertHTML = HTMLToVDOM({\r\n VNode,\r\n VText,\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 xmlBuilder.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 xmlBuilder.buildList(vNode, docxDocumentInstance, xmlFragment);\r\n return;\r\n case 'img':\r\n const imageFragment = await xmlBuilder.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\nasync 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\nasync 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';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class WordDocumentService {\r\n\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}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { RequestHandlerService } from \"./request-handler.service\";\r\nimport { Observable } from \"rxjs\";\r\nimport { LanguageDTO } from \"../models\";\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n })\r\n export class LanguageService {\r\n apiUrl = '/api/Language/';\r\n constructor(private http: RequestHandlerService) { }\r\n\r\n getLanguages():Observable<LanguageDTO[]> {\r\n return this.http.get(this.apiUrl + 'GetAll', null, null);\r\n }\r\n \r\n }","import { Injectable, NgZone } from '@angular/core';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { UtilityService } from './utility.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SpeechRecognitionService {\r\n recognition: any;\r\n isListening = false;\r\n isSupported = false;\r\n language: string = 'en-US';\r\n\r\n constructor(private zone: NgZone,private utilityService:UtilityService) {\r\n const SpeechRecognition = (window as any).SpeechRecognition || (window as any).webkitSpeechRecognition;\r\n\r\n if (SpeechRecognition) {\r\n this.recognition = new SpeechRecognition();\r\n this.recognition.continuous = true;\r\n this.recognition.interimResults = false;\r\n this.recognition.maxAlternatives = 1;\r\n this.isSupported = true;\r\n }\r\n }\r\n\r\n startListening(language: string = this.language): Observable<string> {\r\n if (!this.isSupported) {\r\n return throwError(() => new Error('Web Speech API is not supported in this browser.'));\r\n }\r\n\r\n return new Observable(observer => {\r\n this.isListening = true;\r\n this.recognition.lang = language;\r\n this.recognition.start();\r\n\r\n this.recognition.onresult = (event: any) => {\r\n this.zone.run(() => {\r\n const transcript = event.results[event.results.length - 1][0].transcript;\r\n observer.next(transcript);\r\n });\r\n };\r\n\r\n this.recognition.onspeechend = () => {\r\n this.stopListening();\r\n };\r\n\r\n this.recognition.onerror = (event: any) => {\r\n this.zone.run(() => {\r\n if (event.error === 'not-allowed') {\r\n this.utilityService.notifyErrorMessage(this.utilityService.getResourceValue(\"MicAccessDenied\"));\r\n observer.error('Microphone access denied by the user.');\r\n } else {\r\n observer.error(event.error);\r\n }\r\n });\r\n };\r\n\r\n this.recognition.onend = () => {\r\n this.zone.run(() => {\r\n if (this.isListening) {\r\n this.recognition.start(); // Automatically restart\r\n } else {\r\n observer.complete();\r\n }\r\n });\r\n };\r\n });\r\n }\r\n\r\n stopListening() {\r\n if (this.isSupported) {\r\n this.isListening = false;\r\n this.recognition.stop();\r\n }\r\n }\r\n\r\n\r\n}\r\n\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { lastValueFrom } from 'rxjs';\r\nimport { BBSFTranslateService } from './translate.service';\r\nimport { environment } from '../config/environment';\r\n\r\ndeclare const window: any;\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class FileLoaderService {\r\n private availableLanguages = ['en', 'ar']; // Add more languages as needed\r\n // environment:any;\r\n constructor(private translate: BBSFTranslateService, private http: HttpClient) {\r\n this.translate.addLangs(this.availableLanguages);\r\n }\r\n\r\n loadEnvironment(): Promise<void> {\r\n return new Promise((resolve, reject) => {\r\n const script = document.createElement('script');\r\n script.src = '/assets/config/environment.js';\r\n script.onload = () => {\r\n if (window.Environment) {\r\n Object.assign(environment, window.Environment);\r\n resolve();\r\n } else {\r\n reject('Environment variables not found.');\r\n }\r\n };\r\n script.onerror = () => reject('Failed to load environment.js');\r\n document.head.appendChild(script);\r\n });\r\n }\r\n\r\n async preloadTranslations(): Promise<void> {\r\n console.log('Starting to preload translation files...');\r\n try {\r\n const requests = this.availableLanguages.map(async (lang) => {\r\n const translations = await lastValueFrom(this.http.get(`/assets/i18n/${lang}.json`));\r\n console.log(`Loaded ${lang} translations:`, translations);\r\n this.translate.setTranslation(lang, translations, true);\r\n });\r\n\r\n await Promise.all(requests);\r\n this.translate.use('en'); // Set default language manually\r\n console.log('All translations preloaded.');\r\n } catch (error) {\r\n console.error('Error preloading translations:', error);\r\n }\r\n }\r\n}","import { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Injectable, Injector } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { Router } from '@angular/router';\r\nimport { JwtHelperService } from '@auth0/angular-jwt';\r\nimport { BBSFTranslateService, EnvironmentService } from '../services';\r\nimport { User } from '../models/UserModel';\r\nimport { CookieService } from 'ngx-cookie-service';\r\nimport { UtilityService } from '../services/utility.service';\r\nimport { AuthenticationModes } from '../enums/authentication-modes-enums';\r\nimport { setTimeout } from 'timers';\r\n\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 private get user(): User | null {\r\n if (!this._user) {\r\n this._user = this.getUserManager();\r\n }\r\n return this._user;\r\n }\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 \r\n }\r\n\r\n private _TOKEN_KEY: string\r\n get TOKEN_KEY() {\r\n if (!this._TOKEN_KEY) {\r\n this._TOKEN_KEY = this.environmentService.getCookieName();\r\n }\r\n return this._TOKEN_KEY;\r\n }\r\n\r\n private hasToken(): boolean {\r\n const token = this.cookieService.get(this.TOKEN_KEY);\r\n return token && !this.jwtHelper.isTokenExpired(token);\r\n }\r\n\r\n getUserManager() {\r\n const token = this.cookieService.get(this.TOKEN_KEY);\r\n if (token) {\r\n if (!this.jwtHelper.isTokenExpired(token))\r\n this.handleAccessTokenWithoutLanguage(token);\r\n else\r\n this.cookieService.delete(this.TOKEN_KEY, '/');\r\n }\r\n else {\r\n AuthService.timers.map(t => clearInterval(t));\r\n AuthService.timers = [];\r\n AuthService.user = null;\r\n this._user = null;\r\n }\r\n return AuthService.user;\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 isAuthenticated(): boolean {\r\n AuthService.user = this.user;\r\n return AuthService.user != null && !this.jwtHelper.isTokenExpired(AuthService.user.access_token);\r\n }\r\n isUserInRole(allowedPermission) {\r\n let selectedPermissionSetID = Number.parseInt(AuthService.user.profile['selectedpermissionsetid']);\r\n return allowedPermission.includes(selectedPermissionSetID);\r\n }\r\n\r\n isUserPermissionSetsInRoles(allowedPermission: number[]): boolean {\r\n const permissionSetSIDString = AuthService.user.profile['permissionSetSID'];\r\n if (!permissionSetSIDString) {\r\n return false;\r\n }\r\n\r\n // Split comma-separated string and convert to numbers\r\n const userPermissionSets = permissionSetSIDString\r\n .split(',')\r\n .map(id => Number.parseInt(id.trim()))\r\n .filter(id => !isNaN(id)); // Filter out invalid numbers\r\n\r\n // Check if any user permission set is in the allowed permissions\r\n return userPermissionSets.some(permissionSetID => allowedPermission.includes(permissionSetID));\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\r\n signOut() {\r\n let isAuthenticated = this.isAuthenticated();\r\n this.cookieService.delete(this.TOKEN_KEY, '/');\r\n AuthService.timers.map(t => clearInterval(t));\r\n AuthService.timers = [];\r\n AuthService.user = null;\r\n this._user = null;\r\n localStorage.removeItem(\"redirectUrl\");\r\n if (isAuthenticated) {\r\n this.logout().subscribe(res => {\r\n if (this.environmentService.getBBSFAuthenticationMode() == AuthenticationModes.UAEPass)\r\n this.logoutFromUAEPass();\r\n else\r\n this.router.navigate(['/Admin/account/login']);\r\n });\r\n }\r\n else {\r\n if (this.environmentService.getBBSFAuthenticationMode() == AuthenticationModes.UAEPass)\r\n this.logoutFromUAEPass();\r\n else\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 async handleAccessToken(response: any): Promise<void> {\r\n this.cookieService.delete(this.TOKEN_KEY, '/');\r\n const token = response;\r\n AuthService.user = null;\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._user = AuthService.user;\r\n localStorage.setItem(\"language\", AuthService.user.profile.locale);\r\n this.cookieService.set(this.TOKEN_KEY, token, AuthService.user.expires_at, \"/\", null, true, 'Lax');\r\n this.isAuthenticatedSubject.next(true);\r\n this.setTokenSeconds();\r\n AuthService.timers.push(this.checkRefreshToken());\r\n await this.updateLanguage();\r\n }\r\n\r\n handleAccessTokenWithoutLanguage(response: any) {\r\n this.cookieService.delete(this.TOKEN_KEY, '/');\r\n const token = response;\r\n AuthService.user = null;\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 localStorage.setItem(\"language\", AuthService.user.profile.locale);\r\n this.cookieService.set(this.TOKEN_KEY, token, AuthService.user.expires_at, \"/\", null, true, 'Lax');\r\n this.isAuthenticatedSubject.next(true);\r\n AuthService.timers.push(this.checkRefreshToken());\r\n }\r\n async updateLanguage() {\r\n if (!localStorage.getItem('language') || localStorage.getItem('language') == this.user.profile.locale)\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.reloadLang(localStorage.getItem('language')).subscribe();\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 AuthService.timers.map(t => clearInterval(t));\r\n AuthService.timers = [];\r\n const token = this.cookieService.get(this.TOKEN_KEY);\r\n if (token) {\r\n this.refresh();\r\n }\r\n }\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 this.cookieService.delete(this.TOKEN_KEY, '/');\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.handleAccessTokenWithoutLanguage(res.val);\r\n });\r\n }\r\n\r\n loginWithUAEPass() {\r\n const authEndpoint = `${this.environmentService.getUAEPassBaseUrl()}${this.environmentService.getUAEPassAuthorizationEndPoint()}`;\r\n const queryParams = {\r\n response_type: 'code',\r\n client_id: `${this.environmentService.getUAEPassClientID()}`,\r\n redirect_uri: `${this.environmentService.getBaseUrl()}${this.environmentService.getUAEPassRedirectUrl()}`,\r\n scope: 'urn:uae:digitalid:profile:general urn:uae:digitalid:profile:general:profileType urn:uae:digitalid:profile:general:unifiedId',\r\n state: this.translateService.currentLang,\r\n acr_values: 'urn:safelayer:tws:policies:authentication:level:low',\r\n ui_locales: this.translateService.currentLang,\r\n };\r\n const queryParamsString = Object.entries(queryParams)\r\n .map(([key, value]) => `${key}=${encodeURIComponent(value)}`)\r\n .join('&');\r\n const loginUrl = `${authEndpoint}?${queryParamsString}`;\r\n window.location.href = loginUrl;\r\n return;\r\n }\r\n\r\n logoutFromUAEPass() {\r\n const logoutEndpoint = `${this.environmentService.getUAEPassBaseUrl()}${this.environmentService.getUAEPassLogoutEndPoint()}`;\r\n const queryParams = {\r\n redirect_uri: `${this.environmentService.getBaseUrl()}`,\r\n };\r\n const queryParamsString = Object.entries(queryParams)\r\n .map(([key, value]) => `${key}=${encodeURIComponent(value)}`)\r\n .join('&');\r\n\r\n const logoutUrl = `${logoutEndpoint}?${queryParamsString}`;\r\n window.location.href = logoutUrl;\r\n return;\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { 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 { CookieService } from 'ngx-cookie-service';\r\nimport {\r\n UtilityService, EnvironmentService, RequestHandlerService, StylesBundleService, BBSFTranslateService,\r\n ControlValidationService, MasterLayoutService, ConfigurationService, AuthService, LanguageService,\r\n SpeechRecognitionService\r\n} from './shared';\r\n\r\n@NgModule({\r\n declarations: [\r\n ],\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n BlockUIModule.forRoot(),\r\n ToastrModule.forRoot(),\r\n\r\n ],\r\n exports: [],\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 LanguageService,\r\n SpeechRecognitionService\r\n ]\r\n})\r\nexport class BBSFUtilitiesModule {\r\n\r\n}\r\n","/*\r\n * Public API Surface of @bnsights/bbsf-utilities\r\n */\r\n\r\n//Module\r\nexport * from './lib/bbsf-utilities.module';\r\n\r\n//#region services\r\n\r\nexport * from './lib/shared/services/utility.service';\r\nexport * from './lib/shared/services/environment.service';\r\nexport * from './lib/shared/services/request-handler.service';\r\nexport * from './lib/shared/services/styles-bundle.service';\r\nexport * from './lib/shared/services/translate.service';\r\nexport * from './lib/shared/services/control-validation.service';\r\nexport * from './lib/shared/services/master-layout.service';\r\nexport * from './lib/shared/services/translation-resolver.service';\r\nexport * from './lib/shared/services/appearance-configuration.service';\r\nexport * from './lib/shared/services/configuration.service';\r\nexport * from './lib/shared/services/word-document.service';\r\nexport * from './lib/shared/authentication/auth.service';\r\nexport * from './lib/shared/services/language.service';\r\nexport * from './lib/shared/services/speech-recognition.service';\r\nexport * from './lib/shared/services/preload.service';\r\n\r\n\r\n\r\n//#endregion\r\n\r\n//#region config\r\nexport * from './lib/shared/config/environment';\r\n//#endregion\r\n\r\n//#region models \r\nexport * from './lib/shared/models/request-options-model';\r\nexport * from './lib/shared/models/word-document-model';\r\nexport * from './lib/shared/models/speech-language';\r\n//#endregion\r\n\r\n//#region export enums\r\nexport * from './lib/shared/enums/authentication-modes-enums';\r\n//#endregion\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ConfigurationService","i1.UtilityService","i1","i2.RequestHandlerService","i3.AuthService","i2.StylesBundleService","i2.EnvironmentService","i2.AuthService","i3.EnvironmentService","i3.UtilityService","i3.BBSFTranslateService","i4","i1.BBSFTranslateService","i1.EnvironmentService","fixupFontSize","convertHTML","VNode","xmlBuilder.buildParagraph","xmlBuilder.buildTable","xmlBuilder.buildImage","xmlBuilder.buildList","xmlBuilder.buildTextElement","contentTypesXML","contentTypesXMLString","settingsXMLString","webSettingsXMLString","fontTableXMLString","documentRelsXMLString","genericRelsXMLString","headerFileType","footerFileType","themeFileType","GenerateDOCX","i1.RequestHandlerService","i2","i2.BBSFTranslateService","i3","i5.UtilityService"],"mappings":"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"}