@pobuca/email-builder 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/assets/icons/dribbble.png +0 -0
- package/assets/icons/facebook.png +0 -0
- package/assets/icons/github.png +0 -0
- package/assets/icons/instagram.png +0 -0
- package/assets/icons/linkedin.png +0 -0
- package/assets/icons/medium.png +0 -0
- package/assets/icons/pinterest.png +0 -0
- package/assets/icons/snapchat.png +0 -0
- package/assets/icons/soundcloud.png +0 -0
- package/assets/icons/tumblr.png +0 -0
- package/assets/icons/twitter.png +0 -0
- package/assets/icons/vimeo.png +0 -0
- package/assets/icons/web.png +0 -0
- package/assets/icons/xing.png +0 -0
- package/assets/icons/youtube.png +0 -0
- package/bundles/pobuca-email-builder.umd.js +4664 -0
- package/bundles/pobuca-email-builder.umd.js.map +1 -0
- package/bundles/pobuca-email-builder.umd.min.js +2 -0
- package/bundles/pobuca-email-builder.umd.min.js.map +1 -0
- package/esm2015/lib/classes/DefaultEmail.js +53 -0
- package/esm2015/lib/classes/Elements.js +229 -0
- package/esm2015/lib/classes/Structure.js +89 -0
- package/esm2015/lib/components/block/block.component.js +89 -0
- package/esm2015/lib/components/block-settings/block-settings.component.js +53 -0
- package/esm2015/lib/components/builder-container/builder-container.component.js +114 -0
- package/esm2015/lib/components/dialog.component.js +30 -0
- package/esm2015/lib/components/general-settings/general-settings.component.js +25 -0
- package/esm2015/lib/components/import-dialog/import-dialog.component.js +62 -0
- package/esm2015/lib/components/preview.component.js +89 -0
- package/esm2015/lib/components/structure/structure.component.js +163 -0
- package/esm2015/lib/components/structure-settings/structure-settings.component.js +31 -0
- package/esm2015/lib/components/template-list-dialog/template-list-dialog.component.js +45 -0
- package/esm2015/lib/directives/dynamic-component.directive.js +46 -0
- package/esm2015/lib/elements/abstract-block.js +23 -0
- package/esm2015/lib/elements/button/button.component.js +29 -0
- package/esm2015/lib/elements/divider/divider.component.js +30 -0
- package/esm2015/lib/elements/image/image.component.js +54 -0
- package/esm2015/lib/elements/social/social.component.js +42 -0
- package/esm2015/lib/elements/spacer/spacer.component.js +30 -0
- package/esm2015/lib/elements/text-element/text-element.component.js +80 -0
- package/esm2015/lib/groups/align.js +79 -0
- package/esm2015/lib/groups/back-repeat.js +55 -0
- package/esm2015/lib/groups/border.js +102 -0
- package/esm2015/lib/groups/color.js +139 -0
- package/esm2015/lib/groups/direction.js +63 -0
- package/esm2015/lib/groups/font-styles.js +112 -0
- package/esm2015/lib/groups/gaps.js +45 -0
- package/esm2015/lib/groups/line-height.js +68 -0
- package/esm2015/lib/groups/link.js +67 -0
- package/esm2015/lib/groups/margin.js +45 -0
- package/esm2015/lib/groups/padding.js +53 -0
- package/esm2015/lib/groups/upload-image.js +112 -0
- package/esm2015/lib/groups/width-height.js +94 -0
- package/esm2015/lib/interceptors/pb-interceptor.interceptor.js +51 -0
- package/esm2015/lib/interfaces/interfaces.js +13 -0
- package/esm2015/lib/pb-email-builder.component.js +246 -0
- package/esm2015/lib/pb-email-builder.module.js +291 -0
- package/esm2015/lib/pb-email-builder.service.js +134 -0
- package/esm2015/lib/pipes/slugify.pipe.js +39 -0
- package/esm2015/lib/services/internals/pb-email-object-store/pb-email-object-store.service.js +165 -0
- package/esm2015/lib/services/internals/user-interfaces/user-interface.service.js +122 -0
- package/esm2015/lib/services/pb-storage/FreeUsersStorage.class.js +11 -0
- package/esm2015/lib/services/pb-storage/index.js +7 -0
- package/esm2015/lib/services/pb-storage/pb-storage.service.js +79 -0
- package/esm2015/lib/services/user-image-uploader-service/free-users-image-uploader.service.js +26 -0
- package/esm2015/lib/services/user-image-uploader-service/index.js +8 -0
- package/esm2015/lib/services/user-image-uploader-service/paid-users-image-uploader.service.js +30 -0
- package/esm2015/lib/services/user-image-uploader-service/upload-bottom-sheet-dialog/upload-bottom-sheet-dialog.component.js +112 -0
- package/esm2015/lib/services/user-image-uploader-service/upload-image-gallery/upload-image-gallery.component.js +91 -0
- package/esm2015/lib/services/user-image-uploader-service/user-image-uploader.service.js +26 -0
- package/esm2015/lib/services/user-middleware-service/FreeUsersMiddleware.js +31 -0
- package/esm2015/lib/services/user-middleware-service/PaidUsersMiddleware.js +12 -0
- package/esm2015/lib/services/user-middleware-service/index.js +8 -0
- package/esm2015/lib/services/user-middleware-service/pb-middlewares.service.js +195 -0
- package/esm2015/lib/services/user-rest-api-service/free-users-rest-api.service.js +16 -0
- package/esm2015/lib/services/user-rest-api-service/index.js +7 -0
- package/esm2015/lib/services/user-rest-api-service/user-rest-api.service.js +116 -0
- package/esm2015/lib/tokens/private-tokens.js +17 -0
- package/esm2015/lib/tokens/tokens.js +159 -0
- package/esm2015/lib/utils.js +147 -0
- package/esm2015/pobuca-email-builder.js +43 -0
- package/esm2015/public_api.js +26 -0
- package/fesm2015/pobuca-email-builder.js +4335 -0
- package/fesm2015/pobuca-email-builder.js.map +1 -0
- package/lib/classes/DefaultEmail.d.ts +9 -0
- package/lib/classes/Elements.d.ts +62 -0
- package/lib/classes/Structure.d.ts +11 -0
- package/lib/components/block/block.component.d.ts +25 -0
- package/lib/components/block-settings/block-settings.component.d.ts +18 -0
- package/lib/components/builder-container/builder-container.component.d.ts +36 -0
- package/lib/components/dialog.component.d.ts +10 -0
- package/lib/components/general-settings/general-settings.component.d.ts +6 -0
- package/lib/components/import-dialog/import-dialog.component.d.ts +16 -0
- package/lib/components/preview.component.d.ts +18 -0
- package/lib/components/structure/structure.component.d.ts +43 -0
- package/lib/components/structure-settings/structure-settings.component.d.ts +9 -0
- package/lib/components/template-list-dialog/template-list-dialog.component.d.ts +15 -0
- package/lib/directives/dynamic-component.directive.d.ts +13 -0
- package/lib/elements/abstract-block.d.ts +8 -0
- package/lib/elements/button/button.component.d.ts +18 -0
- package/lib/elements/divider/divider.component.d.ts +10 -0
- package/lib/elements/image/image.component.d.ts +19 -0
- package/lib/elements/social/social.component.d.ts +21 -0
- package/lib/elements/spacer/spacer.component.d.ts +5 -0
- package/lib/elements/text-element/text-element.component.d.ts +52 -0
- package/lib/groups/align.d.ts +17 -0
- package/lib/groups/back-repeat.d.ts +8 -0
- package/lib/groups/border.d.ts +13 -0
- package/lib/groups/color.d.ts +26 -0
- package/lib/groups/direction.d.ts +13 -0
- package/lib/groups/font-styles.d.ts +17 -0
- package/lib/groups/gaps.d.ts +7 -0
- package/lib/groups/line-height.d.ts +12 -0
- package/lib/groups/link.d.ts +11 -0
- package/lib/groups/margin.d.ts +8 -0
- package/lib/groups/padding.d.ts +8 -0
- package/lib/groups/upload-image.d.ts +19 -0
- package/lib/groups/width-height.d.ts +19 -0
- package/lib/interceptors/pb-interceptor.interceptor.d.ts +10 -0
- package/lib/interfaces/interfaces.d.ts +422 -0
- package/lib/pb-email-builder.component.d.ts +67 -0
- package/lib/pb-email-builder.module.d.ts +51 -0
- package/lib/pb-email-builder.service.d.ts +83 -0
- package/lib/pipes/slugify.pipe.d.ts +9 -0
- package/lib/services/internals/pb-email-object-store/pb-email-object-store.service.d.ts +50 -0
- package/lib/services/internals/user-interfaces/user-interface.service.d.ts +46 -0
- package/lib/services/pb-storage/FreeUsersStorage.class.d.ts +6 -0
- package/lib/services/pb-storage/index.d.ts +2 -0
- package/lib/services/pb-storage/pb-storage.service.d.ts +54 -0
- package/lib/services/user-image-uploader-service/free-users-image-uploader.service.d.ts +12 -0
- package/lib/services/user-image-uploader-service/index.d.ts +3 -0
- package/lib/services/user-image-uploader-service/paid-users-image-uploader.service.d.ts +14 -0
- package/lib/services/user-image-uploader-service/upload-bottom-sheet-dialog/upload-bottom-sheet-dialog.component.d.ts +28 -0
- package/lib/services/user-image-uploader-service/upload-image-gallery/upload-image-gallery.component.d.ts +27 -0
- package/lib/services/user-image-uploader-service/user-image-uploader.service.d.ts +26 -0
- package/lib/services/user-middleware-service/FreeUsersMiddleware.d.ts +15 -0
- package/lib/services/user-middleware-service/PaidUsersMiddleware.d.ts +7 -0
- package/lib/services/user-middleware-service/index.d.ts +3 -0
- package/lib/services/user-middleware-service/pb-middlewares.service.d.ts +190 -0
- package/lib/services/user-rest-api-service/free-users-rest-api.service.d.ts +10 -0
- package/lib/services/user-rest-api-service/index.d.ts +2 -0
- package/lib/services/user-rest-api-service/user-rest-api.service.d.ts +82 -0
- package/lib/tokens/private-tokens.d.ts +5 -0
- package/lib/tokens/tokens.d.ts +70 -0
- package/lib/utils.d.ts +88 -0
- package/package.json +37 -0
- package/pobuca-email-builder.d.ts +42 -0
- package/pobuca-email-builder.metadata.json +1 -0
- package/public_api.d.ts +16 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pobuca-email-builder.umd.js","sources":["../../../projects/pb-email-builder/src/lib/interfaces/interfaces.ts","../../../node_modules/tslib/tslib.es6.mjs","../../../projects/pb-email-builder/src/lib/utils.ts","../../../projects/pb-email-builder/src/lib/classes/Structure.ts","../../../projects/pb-email-builder/src/lib/classes/Elements.ts","../../../projects/pb-email-builder/src/lib/tokens/tokens.ts","../../../projects/pb-email-builder/src/lib/classes/DefaultEmail.ts","../../../projects/pb-email-builder/src/lib/services/user-middleware-service/pb-middlewares.service.ts","../../../projects/pb-email-builder/src/lib/services/user-rest-api-service/user-rest-api.service.ts","../../../projects/pb-email-builder/src/lib/services/pb-storage/pb-storage.service.ts","../../../projects/pb-email-builder/src/lib/services/internals/pb-email-object-store/pb-email-object-store.service.ts","../../../projects/pb-email-builder/src/lib/components/template-list-dialog/template-list-dialog.component.ts","../../../projects/pb-email-builder/src/lib/components/dialog.component.ts","../../../projects/pb-email-builder/src/lib/components/import-dialog/import-dialog.component.ts","../../../projects/pb-email-builder/src/lib/services/internals/user-interfaces/user-interface.service.ts","../../../projects/pb-email-builder/src/lib/pb-email-builder.service.ts","../../../projects/pb-email-builder/src/lib/services/user-image-uploader-service/upload-bottom-sheet-dialog/upload-bottom-sheet-dialog.component.ts","../../../projects/pb-email-builder/src/lib/services/user-image-uploader-service/user-image-uploader.service.ts","../../../projects/pb-email-builder/src/lib/services/user-image-uploader-service/free-users-image-uploader.service.ts","../../../projects/pb-email-builder/src/lib/services/user-image-uploader-service/upload-image-gallery/upload-image-gallery.component.ts","../../../projects/pb-email-builder/src/lib/services/user-image-uploader-service/paid-users-image-uploader.service.ts","../../../projects/pb-email-builder/src/lib/services/user-image-uploader-service/index.ts","../../../projects/pb-email-builder/src/lib/components/structure/structure.component.ts","../../../projects/pb-email-builder/src/lib/pipes/slugify.pipe.ts","../../../projects/pb-email-builder/src/lib/pb-email-builder.component.ts","../../../projects/pb-email-builder/src/lib/elements/abstract-block.ts","../../../projects/pb-email-builder/src/lib/elements/text-element/text-element.component.ts","../../../projects/pb-email-builder/src/lib/elements/image/image.component.ts","../../../projects/pb-email-builder/src/lib/elements/button/button.component.ts","../../../projects/pb-email-builder/src/lib/elements/divider/divider.component.ts","../../../projects/pb-email-builder/src/lib/elements/spacer/spacer.component.ts","../../../projects/pb-email-builder/src/lib/elements/social/social.component.ts","../../../projects/pb-email-builder/src/lib/directives/dynamic-component.directive.ts","../../../projects/pb-email-builder/src/lib/components/builder-container/builder-container.component.ts","../../../projects/pb-email-builder/src/lib/groups/font-styles.ts","../../../projects/pb-email-builder/src/lib/groups/padding.ts","../../../projects/pb-email-builder/src/lib/groups/line-height.ts","../../../projects/pb-email-builder/src/lib/groups/width-height.ts","../../../projects/pb-email-builder/src/lib/groups/border.ts","../../../projects/pb-email-builder/src/lib/groups/color.ts","../../../projects/pb-email-builder/src/lib/groups/link.ts","../../../projects/pb-email-builder/src/lib/groups/align.ts","../../../projects/pb-email-builder/src/lib/groups/direction.ts","../../../projects/pb-email-builder/src/lib/groups/back-repeat.ts","../../../projects/pb-email-builder/src/lib/components/preview.component.ts","../../../projects/pb-email-builder/src/lib/components/block/block.component.ts","../../../projects/pb-email-builder/src/lib/groups/upload-image.ts","../../../projects/pb-email-builder/src/lib/components/block-settings/block-settings.component.ts","../../../projects/pb-email-builder/src/lib/components/structure-settings/structure-settings.component.ts","../../../projects/pb-email-builder/src/lib/components/general-settings/general-settings.component.ts","../../../projects/pb-email-builder/src/lib/groups/margin.ts","../../../projects/pb-email-builder/src/lib/groups/gaps.ts","../../../projects/pb-email-builder/src/lib/services/user-middleware-service/FreeUsersMiddleware.ts","../../../projects/pb-email-builder/src/lib/services/user-middleware-service/PaidUsersMiddleware.ts","../../../projects/pb-email-builder/src/lib/services/user-middleware-service/index.ts","../../../projects/pb-email-builder/src/lib/interceptors/pb-interceptor.interceptor.ts","../../../projects/pb-email-builder/src/lib/tokens/private-tokens.ts","../../../projects/pb-email-builder/src/lib/services/user-rest-api-service/free-users-rest-api.service.ts","../../../projects/pb-email-builder/src/lib/services/user-rest-api-service/index.ts","../../../projects/pb-email-builder/src/lib/services/pb-storage/FreeUsersStorage.class.ts","../../../projects/pb-email-builder/src/lib/services/pb-storage/index.ts","../../../projects/pb-email-builder/src/lib/pb-email-builder.module.ts","../../../projects/pb-email-builder/src/public_api.ts","../../../projects/pb-email-builder/src/pobuca-email-builder.ts"],"sourcesContent":["/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport { TBlocks } from '../classes/Elements';\n\n/**\n * Main builder configuration Interface. See also {@link PbEmailBuilderModule#withConfig}.\n */\nexport interface IForRootConf {\n /**\n * Either an [Extended or Commercial License]{@link} key if any, otherwise leave it empty.\n * @default t7HdQfZjGp6R96fOV4P8v18ggf6LLTQZ1puUI2tz\n */\n xApiKey?: string;\n\n /**\n * @deprecated Rewrite PbUserRestApiService in providers instead\n * @ignore\n */\n uploadImagePath?: string;\n /**\n * @deprecated Rewrite PbUserRestApiService in providers instead\n * @ignore\n */\n uploadImageName?: string;\n /**\n * @deprecated Rewrite PbUserRestApiService in providers instead\n * @ignore\n */\n csrf?: { name: string; token: string };\n /**\n * Custom convertor path\n */\n apiPath?: string;\n\n /**\n * Show download button on builder top bar.\n * @default true\n */\n useDownloadButton?: boolean;\n /**\n * Show preview button on builder top bar.\n * @default true\n */\n usePreviewButton?: boolean;\n /**\n * Show save button on builder top bar.\n * @default true\n */\n useSaveButton?: boolean;\n /**\n * Show a button that opens template gallery in case email body is empty.\n * @default true\n */\n templateListIfEmpty?: boolean;\n}\n\n/**\n * Convertor errors response interface, id any.\n */\nexport interface IMjmlServerResponseErrors {\n /**\n * Error message.\n */\n message: string;\n /**\n * MJML TagName error occurred.\n */\n tagName: string;\n}\n\n/**\n * Convertor response interface.\n */\nexport interface IMjmlServerResponse {\n /**\n * Converted HTML Template based on {@link IPBEmail}.\n */\n html: string;\n /**\n * Converted MJML Template based on {@link IPBEmail}.\n */\n mjml: string;\n /**\n * Error representation if any. See {@link IMjmlServerResponseErrors}.\n */\n errors: IMjmlServerResponseErrors[];\n}\n\n/**\n * Builder structure types.\n * @default cols_1\n */\nexport type TStructureTypes = 'cols_1' | 'cols_2' | 'cols_3' | 'cols_4' | 'cols_12' | 'cols_21';\n/**\n * Builder direction types.\n * @default ltr\n */\nexport type TDirection = 'ltr' | 'rtl';\n/**\n * Builder units types.\n * @default px\n */\nexport type TUnits = '%' | 'px' | 'cover' | 'contain';\n/**\n * Builder align types.\n * @default left\n */\nexport type TAlign = 'left' | 'center' | 'right';\n/**\n * Builder vertical align types.\n * @default middle\n */\nexport type TVerticalAlign = 'top' | 'middle' | 'bottom';\n/**\n * Builder Line-height types.\n * @default none\n */\nexport type TLineHeight = '%' | 'px' | 'none';\n/**\n * Builder Link target.\n * @default _blank\n */\nexport type TLinkTarget = '_blank' | '_self' | '_parent' | '_top';\n/**\n * Builder font style types.\n * @default normal\n */\nexport type TFontStyle = 'italic' | 'normal' | 'oblique';\n/**\n * Builder font weight types.\n * @default inherit\n */\nexport type TFontWeight = number | 'bold' | 'bolder' | 'inherit' | 'initial' | 'light' | 'normal';\n/**\n * Builder background-repeat types.\n * @default no-repeat\n */\nexport type TBackgroundRepeat = 'no-repeat' | 'repeat' | 'repeat-x' | 'repeat-y';\n\n/**\n * Builder border styles interface.\n */\nexport interface IBorder {\n /* Border color */\n color?: string;\n /**\n * Border style.\n * @default solid\n */\n style?: 'solid' | 'dotted' | 'dashed' | 'double' | 'groove';\n /**\n * Border width\n */\n width?: number;\n /**\n * Border radius\n */\n radius?: number;\n}\n\n/**\n * Builder padding styles interface.\n */\nexport interface IPadding {\n top?: number;\n right?: number;\n bottom?: number;\n left?: number;\n}\n\n/**\n * Builder margin styles interface.\n */\nexport interface IMargin {\n top?: number;\n bottom?: number;\n}\n\n/**\n * Builder Width and Height styles interface.\n */\nexport interface IWidthHeight {\n value: number;\n /**\n * Width and Height unit type.\n * @default px\n */\n unit: TUnits;\n // Either full width or full height styles.\n auto?: boolean;\n // Units to be shown as options.\n units?: TUnits[];\n}\n\n/**\n * Builder background styles interface.\n */\nexport interface IBackground {\n color?: string;\n url?: string;\n repeat?: TBackgroundRepeat;\n size?: IWidthHeight;\n}\n\n/**\n * Builder font styles interface.\n */\nexport interface IFont {\n family?: string;\n fallback?: string;\n size?: number;\n style?: TFontStyle;\n weight?: TFontWeight;\n}\n\nexport type IFontFamily = Set<string>;\n\n/**\n * Builder line-height styles interface.\n */\nexport interface ILineHeight {\n value?: number;\n unit?: TLineHeight;\n}\n\n/**\n * Builder link styles interface.\n */\nexport interface ILink {\n href: string;\n target: TLinkTarget;\n}\n\n/**\n * Builder structure columns' styles interface.\n */\nexport interface IStructureColumnOptions {\n background?: IBackground;\n border?: IBorder;\n verticalAlign?: TVerticalAlign;\n}\n\n/**\n * Builder structure styles interface.\n */\nexport interface IStructureOptions {\n border?: IBorder;\n background?: IBackground;\n padding?: IPadding;\n margin?: IMargin;\n /**\n * Disable responsive for entire structure\n */\n disableResponsive?: boolean;\n /**\n * Mame section full width\n */\n fullWidth?: boolean;\n /**\n * Mind the GAPS! Gaps between structure's columns.\n */\n gaps?: [number, number];\n columnsWidth?: number[];\n columns?: IStructureColumnOptions[];\n}\n\n/**\n * Builder structure interface.\n */\nexport interface IStructure {\n readonly type: TStructureTypes;\n // unique IDs for unique class attribute\n readonly id: number;\n /**\n * If it's module, it can't be edited within email body.\n * @default false\n */\n isModule?: boolean;\n options: IStructureOptions;\n // Structure columns.\n elements: TBlocks[][];\n readonly columns: number;\n}\n\n/**\n * Builder block state interface. If `disabled: true` it can't be dragged from left sidebar.\n */\nexport interface IBlockState {\n /**\n * @default false\n */\n disabled: boolean;\n /**\n * Show a message in case it's disabled.\n */\n message: string;\n}\n\n/**\n * Builder {@link TextElementComponent} options interface.\n */\nexport interface ITextBlockOptions {\n color?: string;\n font?: IFont;\n lineHeight?: ILineHeight;\n padding?: IPadding;\n}\n\n/**\n * Builder {@link ImageComponent} options interface.\n */\nexport interface IImageBLockOptions {\n border?: IBorder;\n width?: IWidthHeight;\n height?: IWidthHeight;\n link?: ILink;\n align?: TAlign;\n title?: string;\n padding?: IPadding;\n}\n\n/**\n * Builder {@link ButtonComponent} options interface.\n */\nexport interface IButtonBlockOptions {\n backgroundColor?: string;\n border?: IBorder;\n color?: string;\n font?: IFont;\n align?: TAlign;\n fullWidth?: boolean;\n lineHeight?: ILineHeight;\n link?: ILink;\n innerPadding?: IPadding;\n padding?: IPadding;\n}\n\n/**\n * Builder {@link DividerComponent} options interface.\n */\nexport interface IDividerBlockOptions {\n border?: IBorder;\n padding?: IPadding;\n}\n\n/**\n * Builder {@link SpacerComponent} options interface.\n */\nexport interface ISpacerBlockOptions {\n height?: IWidthHeight;\n width?: IWidthHeight;\n}\n\n/**\n * Builder {@link SocialComponent} options interface.\n */\nexport interface ISocialBlockOptions {\n align?: TAlign;\n mode?: 'vertical' | 'horizontal';\n font?: IFont;\n iconSize?: ILineHeight;\n lineHeight?: ILineHeight;\n color?: string;\n innerPadding?: IPadding;\n padding?: IPadding;\n}\n\n/**\n * Builder {@link SocialComponent} network options interface.\n */\nexport interface ISocialNetwork {\n href: string;\n // target?: string;\n label?: string;\n name:\n | 'github'\n | 'instagram'\n | 'web'\n | 'snapchat'\n | 'youtube'\n | 'vimeo'\n | 'medium'\n | 'soundcloud'\n | 'dribbble'\n | 'facebook'\n | 'twitter'\n | 'pinterest'\n | 'linkedin'\n | 'tumblr'\n | 'xing'\n | 'tiktok';\n padding?: IPadding;\n}\n\n/**\n * Builder {@link IPBEmail} general options interface.\n */\nexport interface IGeneralOptions {\n width?: IWidthHeight;\n background?: IBackground;\n padding?: IPadding;\n direction?: TDirection;\n name?: string;\n previewText: string;\n global?: {\n fonts?: string[];\n padding?: IPadding;\n };\n}\n\n/**\n * Main builder Email Object interface.\n */\nexport interface IPBEmail {\n general?: IGeneralOptions;\n structures?: IStructure[];\n}\n\n/**\n * Builder module interface.\n */\nexport interface IUserModule {\n /**\n * @deprecated Add name instead\n * @ignore\n */\n thumb?: string;\n name?: string;\n module: IStructure;\n}\n\n/**\n * @deprecated use IUserModule instead\n * @internal\n */\n// tslint:disable-next-line: no-empty-interface\nexport interface ICustomModule extends IUserModule {}\n\n/**\n * Builder predefined template interface.\n */\nexport interface IUserTemplate {\n id?: string;\n title: string;\n thumbPath: string;\n templateData: IPBEmail;\n}\n\n/**\n * @deprecated use IUserTemplate instead\n * @internal\n */\n// tslint:disable-next-line: no-empty-interface\nexport interface ICustomTemplate extends IUserTemplate {}\n\n/**\n * Builder Template Gallery templates interface.\n */\nexport interface IUserTemplateCategory {\n category: string;\n templates: IUserTemplate[];\n}\n\n/**\n * Builder IMage Gallery images interface.\n */\nexport interface IUserImageCategory {\n category: string;\n images: string[];\n}\n\n/**\n * Template Storage/Cache keys.\n */\nexport enum ETemplatesStorage {\n LATEST_USED = 'NGB_LATEST_USED_TEMPLATES',\n STORAGE = 'NGB_TEMP_TEMPLATES_STORAGE'\n}\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport { IBackground, IBorder, IFont, ILineHeight, IMargin, IPadding, IWidthHeight, TFontWeight } from './interfaces/interfaces';\nimport { defer, Observable, of } from 'rxjs';\n\n// import { getDiff } from 'recursive-diff';\n\n/**\n * An alternative lodash cloneDeep function. Use it on your own risk.\n * @param obj Object to be cloned.\n */\nexport function cloneDeep<T>(obj = {}): T {\n return JSON.parse(JSON.stringify(obj));\n}\n\n/**\n * An alternative lodash isEqual function. Use it on your own risk.\n * @param x Object to be compared\n * @param y the second Object to be compared\n */\nexport function isEqual(x: object, y: object): boolean {\n // return !getDiff(x, y).length;\n return JSON.stringify(x) === JSON.stringify(y);\n}\n\n/**\n * An alternative lodash defaultsDeep function. Use it on your own risk.\n * @param to The object with default properties\n * @param sources An array of objects with default properties\n */\nexport function defaultsDeep<T>(to: T = {} as T, ...sources: T[]): T {\n for (const source of sources) {\n for (const key in source) {\n if (to.hasOwnProperty(key)) {\n continue;\n }\n if (!Array.isArray(source[key]) && typeof source[key] === 'object') {\n to[key] = defaultsDeep(to[key], source[key]);\n } else {\n to[key] = source[key];\n }\n }\n }\n return (to as unknown) as T;\n}\n\n/**\n * Create CSS border styles based on {@link IBorder} object.\n * @param border Border object.\n * @param rule Most likely you won't need it, but for some cases, it can be changed. Default is: `border`.\n *\n * @return CSS Border styles.\n */\nexport function createBorder(border: IBorder, rule = 'border'): { [p: string]: string; borderRadius: string } {\n const { color = '#000000', style = 'solid', width = 4, radius = 0 } = border;\n return {\n [rule]: `${width}px ${style} ${color}`,\n borderRadius: `${radius}px`\n };\n}\n\n/**\n * Create CSS padding styles based on {@link IPadding} object.\n * @param padding Padding object.\n * @param rule Most likely you won't need it, but for some cases, it can be changed. Default is: `padding`.\n */\nexport function createPadding(padding: IPadding, rule = 'padding'): { [p: string]: string } {\n const { top = 10, right = 25, bottom = 10, left = 25 } = padding;\n return {\n [rule]: `${top}px ${right}px ${bottom}px ${left}px`\n };\n}\n\n/**\n * Create CSS margin styles based on {@link IMargin} object.\n * @param margin Margin object.\n */\nexport function createMargin(margin: IMargin): { margin: string } {\n const { top = 0, bottom = 0 } = margin;\n return {\n margin: `${top}px 0 ${bottom}px`\n };\n}\n\n/**\n * Create CSS font styles based on {@link IFont} object.\n * @param font Font object.\n */\nexport function createFont(font: IFont): { fontFamily: string; fontSize: string; fontStyle: string; fontWeight: number | TFontWeight } {\n const { family = '', size = 13, style = 'normal', weight = 'normal' } = font;\n return {\n fontFamily: family,\n fontSize: `${size}px`,\n fontStyle: style,\n fontWeight: weight\n };\n}\n\n/**\n * Create CSS line-height styles based on {@link ILineHeight} object.\n * @param lineHeight Line-height object.\n */\nexport function createLineHeight(lineHeight: ILineHeight): { lineHeight: string } {\n const { value = 22, unit = 'px' } = lineHeight;\n return {\n lineHeight: unit !== 'none' ? `${value}${unit}` : 'normal'\n };\n}\n\n/**\n * Create background styles based on {@link IBackground} object.\n * @param background Background object.\n */\nexport function createBackground(background: IBackground): string {\n const { url = '', color = 'white', repeat = 'no-repeat' } = background;\n return `${color} ${url && `url(${url})`} ${repeat} top center`;\n}\n\n/**\n * Create Width or Height styles based on {@link IWidthHeight} object.\n * @param widthHeight Width or Height object.\n */\nexport function createWidthHeight(widthHeight: IWidthHeight): string {\n const { value = 100, unit = '%', auto = false } = widthHeight;\n return (auto && 'auto') || (['%', 'px'].indexOf(unit) > -1 && `${value}${unit}`) || unit;\n}\n\n/**\n * Convert bytes to KB-YB.\n * @param bytes Bytes number.\n * @param decimals How many decimals to be used. Default: 2.\n */\nexport function bytesToSize(bytes: number, decimals = 2): string {\n if (bytes === 0) {\n return '0 Bytes';\n }\n const k = 1024;\n const dm = decimals < 0 ? 0 : decimals;\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + sizes[i];\n}\n\n/**\n * Get a Social Icon path.\n * @param path Icon path. Ex: facebook.png\n */\nexport function getAssetByPath(path: string): string {\n return `https://www.mailjet.com/images/theme/v1/icons/ico-social/${path}`;\n}\n\n/**\n * A simple and powerful function that allows to create an `Observable` only when it needs to be used.\n * @param args Arguments to send to new Observable.\n */\nexport function deferOf<T>(...args: T[]): Observable<T> {\n return defer(() => of(...args));\n}\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport { IStructure, IStructureColumnOptions, IStructureOptions, TStructureTypes } from '../interfaces/interfaces';\nimport { TBlocks } from './Elements';\nimport { defaultsDeep } from '../utils';\n\nexport const defaultColumnsOptions: IStructureColumnOptions = {\n background: {\n color: 'transparent'\n },\n border: {\n width: 0,\n color: '#cccccc',\n radius: 0,\n style: 'solid'\n },\n verticalAlign: 'top'\n};\n\nexport class Structure implements IStructure {\n columns = 1;\n readonly id = Date.now();\n options: IStructureOptions = {\n fullWidth: false,\n border: {\n color: '#cccccc',\n style: 'solid',\n width: 0,\n radius: 0\n },\n background: {\n color: '#ffffff',\n url: '',\n repeat: 'repeat',\n size: {\n value: 100,\n unit: 'px',\n auto: true,\n units: ['px', '%', 'cover', 'contain']\n }\n },\n padding: {\n top: 4,\n right: 4,\n bottom: 4,\n left: 4\n },\n margin: {\n top: 0,\n bottom: 0\n },\n gaps: [4, 4]\n };\n\n constructor(readonly type: TStructureTypes = 'cols_1', public elements: TBlocks[][] = [], options?: IStructureOptions) {\n if (!elements.length) {\n if (['cols_2', 'cols_12', 'cols_21'].includes(type)) {\n this.columns = 2;\n } else if (type === 'cols_3') {\n this.columns = 3;\n } else if (type === 'cols_4') {\n this.columns = 4;\n }\n }\n\n const columns: IStructureColumnOptions[] = Array.from({ length: this.columns }, () => defaultColumnsOptions);\n\n let columnsWidth = [1];\n if (type === 'cols_21') {\n columnsWidth = [4, 6];\n } else if (type === 'cols_12') {\n columnsWidth = [6, 4];\n } else if (type === 'cols_2') {\n columnsWidth = [5, 5];\n } else if (type === 'cols_3') {\n columnsWidth = [3.33, 3.33, 3.33];\n } else if (type === 'cols_4') {\n columnsWidth = [2.5, 2.5, 2.5, 2.5];\n }\n\n this.options = defaultsDeep(options, this.options, {\n columns,\n columnsWidth\n });\n }\n}\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport { defaultsDeep } from '../utils';\nimport {\n IBlockState,\n IButtonBlockOptions,\n IDividerBlockOptions,\n IImageBLockOptions,\n ISocialBlockOptions,\n ISocialNetwork,\n ISpacerBlockOptions,\n ITextBlockOptions\n} from '../interfaces/interfaces';\n\nexport type TBlocksOptions =\n | ITextBlockOptions\n | IImageBLockOptions\n | IButtonBlockOptions\n | IDividerBlockOptions\n | ISpacerBlockOptions\n | ISocialBlockOptions;\n\nexport abstract class AIPBlock {\n readonly type: string;\n readonly icon: string;\n abstract readonly title: string;\n public options: TBlocksOptions;\n public state: IBlockState;\n}\n\nexport class TextBlock implements AIPBlock {\n readonly type = 'text';\n readonly icon = 'text_format';\n public options: ITextBlockOptions = {\n color: '#000000',\n font: {\n fallback: 'Arial, Helvetica, sans-serif',\n family: 'Roboto',\n style: 'normal',\n size: 16,\n weight: 400\n },\n lineHeight: {\n value: 40,\n unit: 'none'\n },\n padding: {\n top: 10,\n right: 25,\n bottom: 10,\n left: 25\n }\n };\n title = $localize`:@@text_block:Text`;\n\n constructor(\n public innerText?: string,\n options?: ITextBlockOptions,\n public state: IBlockState = {\n disabled: false,\n message: ''\n }\n ) {\n this.options = defaultsDeep(options, this.options);\n }\n}\n\nexport class ImageBlock implements AIPBlock {\n readonly type = 'image';\n readonly icon = 'image';\n public options: IImageBLockOptions = {\n border: {\n color: '#cccccc',\n style: 'solid',\n width: 0,\n radius: 0\n },\n width: {\n value: 100,\n unit: 'px',\n auto: true,\n units: ['px']\n },\n height: {\n value: 100,\n unit: 'px',\n auto: true,\n units: ['px']\n },\n link: {\n href: '',\n target: '_blank'\n },\n align: 'center',\n title: '',\n padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }\n };\n title = $localize`:@@image_block:Image`;\n\n constructor(\n public src = 'https://via.placeholder.com/600x200?text=CHANGE+ME',\n options?: IImageBLockOptions,\n public state: IBlockState = {\n disabled: false,\n message: ''\n }\n ) {\n this.options = defaultsDeep(options, this.options);\n }\n}\n\nexport class ButtonBlock implements AIPBlock {\n readonly type = 'button';\n readonly icon = 'radio_button_checked';\n public options: IButtonBlockOptions = {\n backgroundColor: '#414141',\n border: {\n color: '#414141',\n style: 'solid',\n width: 0,\n radius: 3\n },\n color: '#ffffff',\n font: {\n fallback: 'Arial, Helvetica, sans-serif',\n family: 'Roboto',\n size: 13,\n style: 'normal',\n weight: 400\n },\n\n align: 'center',\n fullWidth: false,\n // verticalAlign: 'middle',\n lineHeight: {\n value: 120,\n unit: '%'\n },\n link: {\n href: '',\n target: '_blank'\n },\n innerPadding: {\n top: 10,\n right: 25,\n bottom: 10,\n left: 25\n },\n padding: {\n top: 10,\n right: 25,\n bottom: 10,\n left: 25\n }\n };\n title = $localize`:@@button_block:Button`;\n\n constructor(\n public innerText: string = 'Click on me',\n options?: IButtonBlockOptions,\n public state: IBlockState = {\n disabled: false,\n message: ''\n }\n ) {\n this.options = defaultsDeep(options, this.options);\n }\n}\n\nexport class DividerBlock implements AIPBlock {\n readonly type = 'divider';\n readonly icon = 'remove';\n public options: IDividerBlockOptions = {\n border: {\n color: '#000000',\n style: 'solid',\n width: 4\n },\n padding: {\n top: 10,\n right: 25,\n bottom: 10,\n left: 25\n }\n };\n title = $localize`:@@divider_block:Divider`;\n\n constructor(\n options?: IDividerBlockOptions,\n public state: IBlockState = {\n disabled: false,\n message: ''\n }\n ) {\n this.options = defaultsDeep(options, this.options);\n }\n}\n\nexport class SpacerBlock implements AIPBlock {\n readonly type = 'spacer';\n readonly icon = 'vertical_align_center';\n title = $localize`:@@spacer_block:Spacer`;\n\n options: ISpacerBlockOptions = {\n height: {\n value: 20,\n unit: 'px',\n units: ['px']\n }\n };\n\n constructor(\n options?: ISpacerBlockOptions,\n public state: IBlockState = {\n disabled: false,\n message: ''\n }\n ) {\n this.options = defaultsDeep(options, this.options);\n }\n}\n\nexport class SocialBlock implements AIPBlock {\n readonly type = 'social';\n readonly icon = 'share';\n title = $localize`:@@share_block:Social`;\n\n options: ISocialBlockOptions = {\n align: 'center',\n mode: 'horizontal',\n font: {\n fallback: 'Arial, Helvetica, sans-serif',\n family: 'Roboto',\n style: 'normal',\n size: 16,\n weight: 400\n },\n iconSize: {\n value: 30,\n unit: 'px'\n },\n lineHeight: {\n value: 16,\n unit: 'px'\n },\n color: '#333333',\n innerPadding: {\n top: 4,\n right: 4,\n bottom: 4,\n left: 4\n },\n padding: {\n top: 10,\n right: 25,\n bottom: 10,\n left: 25\n }\n };\n\n // https://mjml.io/documentation/#mjml-social\n constructor(\n public networks: ISocialNetwork[] = [],\n options?: ISocialBlockOptions,\n public state: IBlockState = {\n disabled: false,\n message: ''\n }\n ) {\n this.options = defaultsDeep(options, this.options);\n }\n}\n\nexport type TBlocks = TextBlock | ImageBlock | ButtonBlock | DividerBlock | SpacerBlock | SocialBlock;\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport { InjectionToken } from '@angular/core';\n\nimport { IForRootConf, IStructure } from '../interfaces/interfaces';\nimport { Structure } from '../classes/Structure';\nimport { ButtonBlock, DividerBlock, ImageBlock, SocialBlock, SpacerBlock, TBlocks, TextBlock } from '../classes/Elements';\n\n/**\n * Some top documentation\n */\n\n/**\n * The default social networks list provided by builder. This list is injected by {@link PB_SOCIAL_NETWORKS}.\n */\nexport const PB_DEFAULT_SOCIAL_NETWORKS: string[] = [\n 'github',\n 'instagram',\n 'web',\n 'snapchat',\n 'youtube',\n 'vimeo',\n 'medium',\n 'soundcloud',\n 'dribbble',\n 'facebook',\n 'twitter',\n 'pinterest',\n 'linkedin',\n 'tumblr',\n 'xing',\n 'tiktok'\n];\n/**\n * The token that injects [default social networks list]{@link PB_DEFAULT_SOCIAL_NETWORKS}.\n * Use it to add or remove social networks within list.\n *\n * @example\n * {provide: PB_SOCIAL_NETWORKS, useValue: PB_DEFAULT_SOCIAL_NETWORKS.filter(network => !['github', 'instagram'].includes(network)}\n */\nexport const PB_SOCIAL_NETWORKS = new InjectionToken<string[]>('PB Social Networks', {\n providedIn: 'any',\n factory: () => PB_DEFAULT_SOCIAL_NETWORKS\n});\n\n/**\n * The default [Google Fonts]{@link https://fonts.google.com} list provided by builder.\n * This list is injected by {@link PB_GOOGLE_FONTS} token.\n */\nexport const PB_DEFAULT_GOOGLE_FONTS: string[] = [\n 'Open+Sans:300,400,500,700',\n 'Droid+Sans:300,400,500,700',\n 'Lato:300,400,500,700',\n 'Roboto:300,400,700,900',\n 'Ubuntu:300,400,500,700',\n 'Fira+Sans:300,400,500,700',\n 'Mansalva:400'\n];\n/**\n * The token that injects [default google fonts]{@link PB_DEFAULT_GOOGLE_FONTS} list.\n */\nexport const PB_GOOGLE_FONTS = new InjectionToken<string[]>('PB Google Fonts', {\n providedIn: 'any',\n factory: () => PB_DEFAULT_GOOGLE_FONTS\n});\n\n/**\n * The default Fallback Fonts list provided by builder. This list is injected by {@link PB_FALLBACK_FONTS} token.\n *\n * A fallback font is a font that takes effect in case a [Google Font]{@link PB_DEFAULT_GOOGLE_FONTS} can't be loaded by some email\n * providers.\n */\nexport const PB_DEFAULT_FALLBACK_FONTS: string[] = [\n 'Palatino Linotype, Book Antiqua, Palatino, serif',\n 'Times New Roman, Times, serif',\n 'Arial, Helvetica, sans-serif',\n 'Arial Black, Gadget, sans-serif',\n 'Comic Sans MS, cursive, sans-serif',\n 'Impact, Charcoal, sans-serif',\n 'Lucida Sans Unicode, Lucida Grande, sans-serif',\n 'Tahoma, Geneva, sans-serif',\n 'Trebuchet MS, Helvetica, sans-serif',\n 'Verdana, Geneva, sans-serif',\n 'Courier New, Courier, monospace',\n 'Lucida Console, Monaco, monospace'\n];\n/**\n * The token that injects {@link PB_DEFAULT_FALLBACK_FONTS} list.\n */\nexport const PB_FALLBACK_FONTS = new InjectionToken<string[]>('PB Fallback Fonts', {\n providedIn: 'any',\n factory: () => PB_DEFAULT_FALLBACK_FONTS\n});\n\n/**\n * The default [Structures]{@link IStructure} list. This list is injected by {@link PB_STRUCTURES} token.\n */\nexport const PB_DEFAULT_STRUCTURES: IStructure[] = [\n new Structure('cols_1'),\n new Structure('cols_2'),\n new Structure('cols_3'),\n new Structure('cols_4'),\n new Structure('cols_12'),\n new Structure('cols_21')\n];\n/**\n * The token that injects {@link PB_DEFAULT_STRUCTURES} list.\n */\nexport const PB_STRUCTURES = new InjectionToken<typeof PB_DEFAULT_STRUCTURES>('PB Structures', {\n providedIn: 'any',\n factory: () => PB_DEFAULT_STRUCTURES\n});\n\n/**\n * The default [Blocks]{@link TBlocks} list. This list is injected by {@link PB_BLOCKS} token.\n */\nexport const PB_DEFAULT_BLOCKS: TBlocks[] = [\n new TextBlock(),\n new ImageBlock(),\n new ButtonBlock(),\n new DividerBlock(),\n new SpacerBlock(),\n new SocialBlock()\n];\n/**\n * The token that injects {@link PB_BLOCKS} list.\n */\nexport const PB_BLOCKS = new InjectionToken<typeof PB_DEFAULT_BLOCKS>('PB Blocks', {\n providedIn: 'any',\n factory: () => PB_DEFAULT_BLOCKS\n});\n\n/**\n * Default builder configuration, injected by {@link PB_CONFIG} token. See {@link IForRootConf} for more info.\n */\nexport const PB_DEFAULT_CONFIG: IForRootConf = Object.freeze({\n xApiKey: 't7HdQfZjGp6R96fOV4P8v18ggf6LLTQZ1puUI2tz',\n // apiPath: 'https://ngb-api.wlocalhost.org/v1',\n useSaveButton: true,\n usePreviewButton: true,\n useDownloadButton: true,\n templateListIfEmpty: true,\n uploadImageName: 'image'\n});\n/**\n * The token that injects [default builder configurations]{@link PB_DEFAULT_CONFIG}.\n */\nexport const PB_CONFIG = new InjectionToken<Partial<IForRootConf>>('PB Builder Configuration', {\n providedIn: 'root',\n factory: () => PB_DEFAULT_CONFIG\n});\n\n/**\n * The default Storage used by builder. It can be either `localStorage` or `sessionStorage`.\n */\nexport const PB_STORAGE_FACTORY = new InjectionToken<Storage>('PB Storage factory token', {\n providedIn: 'any',\n factory: () => sessionStorage\n});\n\n/**\n * The default storage to cache the templates list. It can be either `localStorage` or `sessionStorage`.\n */\nexport const PB_TEMPLATES_TEMPORARY_STORAGE = new InjectionToken<Storage>('PB Token that stores temporary templates cache', {\n providedIn: 'any',\n factory: () => sessionStorage\n});\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport { IStructure, IPBEmail, IGeneralOptions } from '../interfaces/interfaces';\n// import { Structure } from './Structure';\n\nexport class Defaults {\n constructor(\n public structures: IStructure[] = [],\n public general: IGeneralOptions = {\n name: '',\n previewText: '',\n width: {\n value: 600,\n unit: 'px',\n units: ['px']\n },\n background: {\n // url: '',\n color: '#f1f1f1',\n // repeat: 'repeat',\n size: {\n value: 100,\n unit: '%',\n auto: true,\n units: ['px', '%', 'cover', 'contain']\n }\n },\n padding: {\n top: 16,\n right: 10,\n bottom: 10,\n left: 10\n },\n direction: 'ltr',\n global: {\n // TODO Add more global configurations\n // fonts: [],\n padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }\n }\n }\n ) {}\n}\n\nexport class PBEmail extends Defaults {\n constructor({ structures, general }: IPBEmail = {}) {\n super(structures, general);\n }\n}\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport { Injectable } from '@angular/core';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { CdkDrag, CdkDragDrop } from '@angular/cdk/drag-drop';\nimport { MatButtonToggleChange } from '@angular/material/button-toggle';\nimport { Observable } from 'rxjs';\n\nimport { IStructure, IUserTemplate } from '../../interfaces/interfaces';\nimport { TBlocks } from '../../classes/Elements';\nimport { PBEmail } from '../../classes/DefaultEmail';\nimport { TPreviewDevice } from '../../components/preview.component';\nimport { deferOf } from '../../utils';\n\n/**\n * Email editor export file types.\n */\nexport type TExportType = 'html' | 'json' | 'mjml';\n\n/**\n * Email editor import file types. 'mjml' type is under development - don't use it yet.\n */\nexport type TImportType = 'json' | 'mjml';\n\n/**\n * Add new Structure within email body event\n */\nexport interface IAddStructureEvent extends CdkDragDrop<Set<IStructure>, Set<IStructure>> {\n item: CdkDrag<IStructure>;\n}\n\n/**\n * Add new Block within structures' columns event\n */\nexport interface IAddBlockEvent extends CdkDragDrop<TBlocks[], TBlocks[]> {\n item: CdkDrag<TBlocks>;\n}\n\n/**\n * Preview device buttons\n */\nexport interface IPreviewToggleButton extends MatButtonToggleChange {\n value: TPreviewDevice;\n}\n\n/**\n * This service allows you to control all your users' abilities within this builder. Lets say you want to implement user Roles or just\n * need to disable some functionality for certain users based on purchase plan or on something else. You can allow or disallow almost\n * everything.\n *\n * All the methods must return an Observable, so, in my opinion, that's the best part of this service, you can either return an\n * [EMPTY Observable]{@link https://rxjs.dev/api/index/const/EMPTY}, a modified object or an (Info Modal).pipe(mapTo(EMPTY)) - I think you\n * got the idea.\n *\n * I recommend always using a Modal or a Toast for forbidden actions.\n *\n * It won't work if you have a Regular/Free License - you'll get an error on running the project,\n * you need either an [Extended or Commercial License]{@link https://wlocalhost.org} key for this purpose.\n *\n * @example\n * // Create a custom service\n * class YourOwnMiddlewareService extends PbUserMiddlewaresService {}\n *\n * // Rewrite it into AppModule\n * { provide: PbUserMiddlewaresService, useClass: YourOwnMiddlewareService }\n */\n@Injectable()\nexport abstract class PbUserMiddlewaresService {\n /**\n * This method is called before sending the request to MJML Convertor. Use it to add some additional blocks or anything else to\n * the PBEmail object.\n * @param email PBEmail object that's being sent to MJML Convertor.\n */\n createHTMLTemplate(email: PBEmail): Observable<PBEmail> {\n return deferOf(email);\n }\n\n /**\n * Allow or Disallow preview window.\n * @param state Coming Preview state\n */\n togglePreview(state: boolean): Observable<boolean> {\n return deferOf(state);\n }\n\n /**\n * Allow or Disallow preview devices.\n * @param button Device's button that has been clicked\n */\n togglePreviewDevice(button: IPreviewToggleButton): Observable<TPreviewDevice> {\n return deferOf(button.value);\n }\n\n /**\n * Allow or disallow users to select certain templates based either on category or template object.\n * @param category Template's category user has selected\n * @param template Template user has selected\n */\n chooseTemplate(category: string, template: IUserTemplate): Observable<{ category: string; template: IUserTemplate }> {\n return deferOf({ category, template });\n }\n\n /**\n * Allow, disallow or return the same path for all user's uploaded images.\n * @param path Path of uploaded image\n *\n * @TODO Check if this middleware is being called before image has been uploaded\n */\n uploadImage(path: string): Observable<string> {\n return deferOf(path);\n }\n\n /**\n * Allow or disallow users to add blocks within email structures.\n * @param event Event of dropped block\n * @param column Column that block has been dropped\n *\n * @TODO add parent structure as a parameter\n */\n addBlock(event: IAddBlockEvent, column: TBlocks[]): Observable<{ column: TBlocks[]; event: IAddBlockEvent }> {\n return deferOf({ event, column });\n }\n\n /**\n * Prevent user to edit blocks within email body.\n * @param block Block that user intends to edit\n */\n editBlock(block: TBlocks): Observable<TBlocks> {\n return deferOf(block);\n }\n\n /**\n * Prevent user to remove blocks within email body.\n * @param index Block's Index\n * @param column Block's parent column\n * @param block Block that user intends to remove\n */\n removeBlock(index: number, column: TBlocks[], block: TBlocks): Observable<{ index: number; column: TBlocks[] }> {\n return deferOf({ index, column });\n }\n\n /**\n * Prevent user to duplicate blocks within email body.\n * @param index Block's Index\n * @param column Block's parent column\n * @param block Block that user intends to duplicate\n */\n duplicateBlock(index: number, column: TBlocks[], block: TBlocks): Observable<{ index: number; column: TBlocks[]; block: TBlocks }> {\n return deferOf({ index, column, block });\n }\n\n /**\n * Disable Drag and Drop certain blocks from Blocks list to Email body.\n * Return TRUE to disable all blocks - no matter on block's data.\n * @param block Block to allow or disallow from being dragged\n */\n disableBlockDragFromList(block: TBlocks): Observable<boolean> {\n return deferOf(false);\n }\n\n /**\n * Prevent users to sort blocks within email body.\n * @param block Block that user intends to change the order\n */\n disableBlockDragWithinEmailBody(block: TBlocks): Observable<boolean> {\n return deferOf(false);\n }\n\n /**\n * Prevent user to add new structure.\n * @param event Event of dropped structure\n */\n addStructure(event: IAddStructureEvent): Observable<IAddStructureEvent> {\n return deferOf(event);\n }\n\n /**\n * Prevent user to edit the structure.\n * @param structure Structure that user intends to edit\n */\n editStructure(structure: IStructure): Observable<IStructure> {\n return deferOf(structure);\n }\n\n /**\n * Prevent user to remove the structure.\n * @param index Index of the structure\n * @param structure Structure that user intends to remove\n */\n removeStructure(index: number, structure: IStructure): Observable<number> {\n return deferOf(index);\n }\n\n /**\n * Prevent user to duplicate the structure within email body.\n * @param index Index of structure\n * @param structure Structure that user intends to duplicate\n */\n duplicateStructure(index: number, structure: IStructure): Observable<number> {\n return deferOf(index);\n }\n\n /**\n * Disable Drag and Drop certain structures from Structures list to Email body.\n * Return TRUE to disable all structures.\n * @param structure Structure to prevent from being dragged\n */\n disableStructureDragFromList(structure: IStructure): Observable<boolean> {\n return deferOf(false);\n }\n\n /**\n * Allow or disallow users to sort structures within email body.\n * @param structure Structure that user intends to change the order\n */\n disableStructureDragWithinEmailBody(structure: IStructure): Observable<boolean> {\n return deferOf(false);\n }\n\n /**\n * I don't know why would you do that, but you can disable OnExit confirm modal.\n * @param event Window [BeforeUnloadEvent]{@link https://developer.mozilla.org/en-US/docs/Web/API/BeforeUnloadEvent}\n */\n preventWindowExit(event: BeforeUnloadEvent): Observable<BeforeUnloadEvent> {\n return deferOf(event);\n }\n\n /**\n * Allow or disallow user to export certain types of file\n * @param type Type that user intends to download\n */\n exportFile(type: TExportType): Observable<TExportType> {\n return deferOf(type);\n }\n\n /**\n * Allow or disallow user to import certain types of file\n * @param file Web APIs [FILE]{@link https://developer.mozilla.org/en-US/docs/Web/API/File}\n */\n importFile(file: File): Observable<File> {\n return deferOf(file);\n }\n\n /**\n * Catch all errors within email editor, it might not work 100%, it's still on working process.\n * @param error Throwable Error\n */\n catchError(error: Error | HttpErrorResponse): Observable<Error | HttpErrorResponse> {\n return deferOf(error);\n }\n}\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport { Injectable } from '@angular/core';\nimport { HttpClient, HttpEvent } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { map, shareReplay } from 'rxjs/operators';\n\nimport { IPBEmail, IMjmlServerResponse, IUserModule, IUserTemplate, IUserTemplateCategory } from '../../interfaces/interfaces';\nimport { PBEmail } from '../../classes/DefaultEmail';\nimport { deferOf } from '../../utils';\n\n/**\n * Add Google Fonts list to PBEmail object to include into template.\n * MJML Convertor will filter and remove fonts that aren't used.\n */\nexport interface IEmailAndGoogleFonts extends PBEmail {\n googleFonts: string[];\n}\n\n/**\n * Default NGB ROOT API Path\n */\nconst NGB_HOST = 'https://ngb-api.wlocalhost.org/v1';\n\n/**\n * The abstract service that must extend the user's custom REST API service.\n * Contains all required properties needed within project.\n *\n * Rewrite the default methods/properties to get the desired data.\n * We recommend using `shareReplay()` operator if it's just a simple static data.\n *\n * @example\n * // Create a custom service\n * class YourOwnRestApiService extends PbUserRestApiService {}\n *\n * // Rewrite it into AppModule\n * { provide: PbUserRestApiService, useClass: YourOwnRestApiService }\n */\n@Injectable()\nexport abstract class PbUserRestApiService {\n /**\n * Get all user merge fields to inject into text editor.\n */\n getAllUserMergeFields$: Observable<string[]> = deferOf<string[]>([]);\n\n /**\n * Get all Custom Modules to be included into Modules List.\n * We're looking for someone who could create many modules to be included by default, if you feel you can help us, please leave a message!\n */\n getAllUserModules$: Observable<IUserModule[]> = deferOf<IUserModule[]>([]);\n\n /**\n * Get all Predefined Templates and categories.\n * You can leave it to get all default templates from NGB API\n */\n getAllUserTemplates$: Observable<IUserTemplateCategory[]> = this.http\n .get<{ category: string; templates: string[] }[]>(NGB_HOST.concat('/templates'))\n .pipe(\n map(list =>\n list.map<IUserTemplateCategory>(({ category, templates }) => ({\n category,\n templates: templates.map(title => ({\n thumbPath: `https://ngb-templates.s3.amazonaws.com/${category}-${title}.jpg`,\n title,\n templateData: null\n }))\n }))\n ),\n shareReplay()\n );\n\n constructor(public http: HttpClient) {}\n\n /**\n * This method must return the chosen template from Template Gallery List PBEmail object,\n * see {@link PbUserRestApiService#getAllUserTemplates$|getAllUserTemplates$}.\n *\n * Sometimes it can contain 'templateData' property - in this case, just return it.\n *\n * @param category Selected Category from Template Gallery.\n * @param template Selected Template from Template Gallery.\n *\n * @example\n * if (template.templateData) { return template }\n */\n getUserTemplateData$(category: string, template: IUserTemplate): Observable<IUserTemplate> {\n if (template.templateData) {\n return deferOf(template);\n }\n return this.http\n .get<IPBEmail>(NGB_HOST.concat('/templates'), {\n params: { category, template: template.title }\n })\n .pipe(map(email => ({ ...template, templateData: email })));\n }\n\n /**\n * Handle all uploaded images.\n * FormData 'csrf' is deprecated in favor of [HttpClientXsrfModule]{@link https://angular.io/api/common/http/HttpClientXsrfModule}.\n *\n * @param body A FormData that contains 'image' and 'csrf' data.\n * @param uploadImagePath Define a path where NGB have to send the upload request.\n */\n userImageUpload$(body: FormData, uploadImagePath: string): Observable<HttpEvent<{ success: boolean; path: string; message?: string }>> {\n return this.http.request('POST', uploadImagePath, {\n body,\n reportProgress: true,\n responseType: 'json',\n observe: 'events'\n });\n }\n\n /**\n * Get all images to include into Image Gallery.\n */\n getUserImages$(): Observable<string[]> {\n return deferOf<string[]>([]);\n }\n\n /**\n * Rewrite the default request which converts PBEmail to HTML, if you have a paid License,\n * this method allows you to rewrite the default Convertor API Path to yours.\n *\n * You can still use the default Convertor API Path, since you have a valid and active License Key.\n *\n * @param emailAndFonts PBEmail plus Google Fonts List object.\n * @param url Your own Convertor API Path, or leave it empty to use NGB servers.\n */\n createHTMLTemplate$(emailAndFonts: IEmailAndGoogleFonts, url: string = NGB_HOST): Observable<IMjmlServerResponse> {\n return this.http.post<IMjmlServerResponse>(url, emailAndFonts);\n }\n}\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport { Inject, Injectable } from '@angular/core';\n\nimport { PB_TEMPLATES_TEMPORARY_STORAGE } from '../../tokens/tokens';\nimport { ETemplatesStorage, IUserTemplate, IUserTemplateCategory } from '../../interfaces/interfaces';\n\n/**\n * This service allow you rewrite the default Builder Storage methods. It contains all methods builder needs to cache or store objects.\n * Alternatively you can rewrite the [PB_TEMPLATES_TEMPORARY_STORAGE]{@link PB_TEMPLATES_TEMPORARY_STORAGE}\n * or [PB_STORAGE_FACTORY]{@link PB_STORAGE_FACTORY} tokens.\n *\n * In next major updates, it can have some limitations for Regular License.\n *\n * @example\n * // Create a custom service\n * class YourOwnStorageService extends IpStorageService {}\n *\n * // Rewrite it into AppModule\n * { provide: IpStorageService, useClass: YourOwnStorageService }\n */\n@Injectable()\nexport abstract class PbStorageService {\n constructor(\n /**\n * Storage for templates defined by [PB_TEMPLATES_TEMPORARY_STORAGE]{@link PB_TEMPLATES_TEMPORARY_STORAGE} token.\n */\n @Inject(PB_TEMPLATES_TEMPORARY_STORAGE) public templateStorage: Storage\n ) {}\n\n /**\n * Get the latest used templates end user has chosen from templates list.\n * @return Latest used templates by end user.\n */\n getLatestUsedTemplates(): IUserTemplate[] {\n return JSON.parse(this.templateStorage.getItem(ETemplatesStorage.LATEST_USED)) || [];\n }\n\n /**\n * Add a template to end user's chosen templates list.\n * @param template Template end user chosen.\n */\n addTemplateToLatestUsed(template: IUserTemplate): void {\n const latest = this.getLatestUsedTemplates().filter(({ title }) => title !== template.title);\n latest.unshift(template);\n this.templateStorage.setItem(ETemplatesStorage.LATEST_USED, JSON.stringify(latest));\n }\n\n /**\n * Clear all latest used templates cache.\n */\n clearLatestUsed(): void {\n this.templateStorage.removeItem(ETemplatesStorage.LATEST_USED);\n }\n\n /**\n * Cache a fully templates list.\n * @param list Template list to cache\n */\n cacheTemplateList(list: IUserTemplateCategory[]): void {\n this.templateStorage.setItem(ETemplatesStorage.STORAGE, JSON.stringify(list));\n }\n\n /**\n * Get a cached templates list if exists.\n * @return Either a cached templates list or an empty array.\n */\n getCachedTemplateList(): IUserTemplateCategory[] {\n return JSON.parse(this.templateStorage.getItem(ETemplatesStorage.STORAGE)) || [];\n }\n\n /**\n * Clear all templates list cache.\n */\n clearCachedTemplateList(): void {\n this.templateStorage.removeItem(ETemplatesStorage.STORAGE);\n }\n}\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport { Inject, Injectable } from '@angular/core';\nimport { CdkDragDrop, moveItemInArray, transferArrayItem } from '@angular/cdk/drag-drop';\nimport { BehaviorSubject, combineLatest, Subject } from 'rxjs';\nimport { exhaustMap, map, pluck, switchMap, withLatestFrom } from 'rxjs/operators';\n// import { getDiff } from 'recursive-diff';\nimport { IAddBlockEvent, IAddStructureEvent, PbUserMiddlewaresService } from '../../user-middleware-service/pb-middlewares.service';\nimport { IForRootConf, IMjmlServerResponse, IStructure, IUserTemplate } from '../../../interfaces/interfaces';\nimport { TBlocks } from '../../../classes/Elements';\nimport { PBEmail } from '../../../classes/DefaultEmail';\nimport { cloneDeep, createPadding, createWidthHeight, deferOf, isEqual } from '../../../utils';\nimport { PbUserRestApiService } from '../../user-rest-api-service/user-rest-api.service';\nimport { PbStorageService } from '../../pb-storage/pb-storage.service';\nimport { PB_CONFIG, PB_GOOGLE_FONTS } from '../../../tokens/tokens';\n\n// https://www.npmjs.com/package/recursive-diff\n\n/**\n * @internal\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class PbEmailObjectStoreService {\n public Email = new PBEmail();\n private clonedEmail = cloneDeep<PBEmail>(this.Email);\n private _Email$ = new BehaviorSubject<PBEmail>(this.Email);\n readonly emailAsObservable$ = this._Email$.asObservable();\n readonly emailStructuresAsObservable$ = this.emailAsObservable$.pipe(pluck('structures'));\n readonly generalEmailOptionsAsObservable$ = this.emailAsObservable$.pipe(pluck('general'));\n readonly currentEmailHasChanges$ = this.emailAsObservable$.pipe(\n map(current => !isEqual(current, this.clonedEmail))\n // shareReplay(),\n // tap((isDirty) => console.log('IsDirty', isDirty)),\n );\n readonly builderContainerStyles$ = this.generalEmailOptionsAsObservable$.pipe(\n map(({ background, padding, direction }) => ({\n direction,\n backgroundRepeat: background.repeat,\n backgroundColor: background.color,\n backgroundSize: createWidthHeight(background.size),\n backgroundPosition: 'top center',\n ...createPadding(padding)\n }))\n );\n // public readonly emailBodyWidth$ = this.generalEmailOptionsAsObservable$.pipe(map(({ width }) => createWidthHeight(width)));\n private _Mjml$ = new BehaviorSubject<string>('');\n public readonly mjmlAsObservable$ = this._Mjml$.asObservable();\n private _Template$ = new BehaviorSubject<string>('');\n public readonly templateAsObservable$ = this._Template$.asObservable();\n private _onTemplateCreated$ = new Subject<any>();\n public readonly onTemplateCreated$ = this._onTemplateCreated$.pipe(\n withLatestFrom(this._Email$, this._Template$, this._Mjml$),\n map(([_, ...rest]) => rest)\n );\n\n constructor(\n private userRestApi: PbUserRestApiService,\n private pbStorage: PbStorageService,\n private userMiddleware: PbUserMiddlewaresService,\n @Inject(PB_GOOGLE_FONTS) private googleFonts: string[],\n @Inject(PB_CONFIG) readonly config: IForRootConf\n ) {}\n\n createHTMLTemplate$() {\n return this.emailAsObservable$.pipe(\n switchMap(email => {\n if (!email.structures.length) {\n throw new Error('Please add some structures and blocks to perform this action.');\n }\n return deferOf(email);\n }),\n withLatestFrom(combineLatest([this.currentEmailHasChanges$, this.templateAsObservable$])),\n exhaustMap(([email, [hasChanges, currentHtml]]) => {\n if (hasChanges || !currentHtml) {\n return this.userMiddleware.createHTMLTemplate(email).pipe(\n exhaustMap(em => this.userRestApi.createHTMLTemplate$({ ...em, googleFonts: this.googleFonts }, this.config.apiPath)),\n map(res => {\n if (res.errors.length) {\n const error = res.errors.map(({ message, tagName }) => `${tagName} > ${message}`).join('\\n');\n throw new Error(error);\n }\n this._Mjml$.next(res.mjml);\n this._Template$.next(res.html);\n this.clonedEmail = cloneDeep(this.Email);\n this._onTemplateCreated$.next();\n return res;\n })\n );\n }\n return combineLatest([this._Mjml$, this._Template$]).pipe(\n map(([mjml, html]) => ({ html, mjml, errors: [] } as IMjmlServerResponse))\n );\n })\n );\n }\n\n markForCheck() {\n this._Email$.next(this.Email);\n\n if (this.Email.structures.length) {\n this.pbStorage.addTemplateToLatestUsed(\n cloneDeep<IUserTemplate>({\n templateData: this.Email,\n title: 'last-edited',\n thumbPath: 'https://via.placeholder.com/200x300?text=LAST+EDITED'\n })\n );\n }\n // console.log(getDiff(this.clonedEmail, this.Email));\n }\n\n setEmail(newEmail: PBEmail) {\n if (!newEmail.structures || !newEmail.general) {\n throw new Error('Injected object is not a valid PBEmail');\n }\n this.Email = newEmail;\n this.reset();\n }\n\n addStructure({ currentIndex = 0, item }: IAddStructureEvent): IStructure {\n const { structures = [] } = this.Email;\n let isModule = true;\n\n if (!item.data.elements.length) {\n isModule = false;\n item.data.elements = Array.from({ length: item.data.columns }, () => []);\n }\n\n const newStructure = { id: Date.now(), ...cloneDeep<IStructure>(item.data), isModule };\n structures.splice(currentIndex, 0, newStructure);\n this.markForCheck();\n return newStructure;\n }\n\n changeStructureOrder({ previousIndex = 0, currentIndex = 0 }: CdkDragDrop<Set<IStructure>>) {\n moveItemInArray(this.Email.structures, previousIndex, currentIndex);\n this.markForCheck();\n }\n\n duplicateStructure(index: number): IStructure {\n const { structures = [] } = this.Email;\n const newStructure = cloneDeep<IStructure>({ ...structures[index], id: Date.now() });\n structures.splice(index, 0, newStructure);\n this.markForCheck();\n return newStructure;\n }\n\n removeStructure(index: number) {\n const { structures = [] } = this.Email;\n structures.splice(index, 1);\n this.markForCheck();\n }\n\n addBlock({ previousIndex = 0, currentIndex = 0, item, previousContainer: { id, data } }: IAddBlockEvent, column: TBlocks[]) {\n // console.log(id);\n // console.log(item);\n\n if (id === 'block-elements') {\n column.splice(currentIndex, 0, cloneDeep(item.data));\n } else {\n transferArrayItem(data, column, previousIndex, currentIndex);\n }\n this.markForCheck();\n }\n\n changeBlockOrder({ previousIndex = 0, currentIndex = 0 }: CdkDragDrop<TBlocks[]>, column: TBlocks[]) {\n moveItemInArray(column, previousIndex, currentIndex);\n this.markForCheck();\n }\n\n duplicateBlock(key: number, column: TBlocks[], block: TBlocks): TBlocks {\n const newBlock = cloneDeep<TBlocks>(block);\n column.splice(key, 0, newBlock);\n this.markForCheck();\n return newBlock;\n }\n\n removeBlock(key: number, column: TBlocks[]) {\n column.splice(key, 1);\n this.markForCheck();\n }\n\n reset() {\n this._Mjml$.next(null);\n this._Template$.next(null);\n this.clonedEmail = cloneDeep(this.Email);\n this.markForCheck();\n }\n}\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport { Component, Inject, ChangeDetectionStrategy } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { BehaviorSubject } from 'rxjs';\nimport { map, pluck, take } from 'rxjs/operators';\n\nimport { IUserTemplateCategory, IUserTemplate } from '../../interfaces/interfaces';\n\n@Component({\n selector: 'pb-template-list-dialog',\n templateUrl: './template-list-dialog.component.html',\n styleUrls: ['./template-list-dialog.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class TemplateListDialogComponent {\n readonly chooseCategory$ = new BehaviorSubject<string>('latest');\n readonly currentCategoryTemplates$ = this.chooseCategory$.pipe(\n map(category => this.templateList.find(list => list.category === category) || { templates: [] }),\n pluck('templates'),\n map(templates => (templates.length > 0 ? templates : null))\n // map(tmpl => Array.from({ length: 1000 }).map((_, i) => tmpl[0]))\n );\n csdTemplate: IUserTemplate;\n\n constructor(\n private matDialogRef: MatDialogRef<TemplateListDialogComponent>,\n @Inject(MAT_DIALOG_DATA) public templateList: IUserTemplateCategory[]\n ) {}\n\n chooseTemplate(template: IUserTemplate) {\n this.csdTemplate = template;\n }\n\n chageCategory(category: string) {\n this.chooseCategory$.next(category);\n }\n\n getTemplatesList() {\n return this.templateList.filter(({ category }) => category !== 'latest');\n }\n\n startBuilding() {\n this.chooseCategory$.pipe(take(1)).subscribe(category => {\n this.matDialogRef.close({ category, template: this.csdTemplate });\n });\n }\n}\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport { Component, Inject } from '@angular/core';\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\n\n// @dynamic\n@Component({\n selector: 'pb-confirm-dialog',\n template: `\n <h2 mat-dialog-title>Are you sure?</h2>\n <mat-dialog-actions fxLayout fxLayoutAlign=\"space-between center\" fxLayoutGap=\"1rem\">\n <button mat-stroked-button mat-dialog-close=\"0\">No</button>\n <button mat-stroked-button color=\"warn\" mat-dialog-close=\"1\">Yes</button>\n </mat-dialog-actions>\n `\n})\nexport class ConfirmDialogComponent {\n constructor(\n public dialogRef: MatDialogRef<ConfirmDialogComponent>,\n @Inject(MAT_DIALOG_DATA) public data: { message: string }\n ) { }\n}\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport { Component, OnInit, ViewChild, ElementRef, OnDestroy } from '@angular/core';\nimport { MatBottomSheetRef } from '@angular/material/bottom-sheet';\nimport { take, catchError, switchMap } from 'rxjs/operators';\nimport { EMPTY } from 'rxjs';\n\nimport { PbUserMiddlewaresService } from '../../services/user-middleware-service/pb-middlewares.service';\nimport { PBEmail } from '../../classes/DefaultEmail';\n\n@Component({\n selector: 'pb-import-dialog',\n templateUrl: './import-dialog.component.html',\n styleUrls: ['./import-dialog.component.scss']\n})\nexport class ImportDialogComponent implements OnInit, OnDestroy {\n @ViewChild('uploadInput', { read: ElementRef, static: true })\n private uploadInput: ElementRef<HTMLInputElement>;\n\n public importing = false;\n private fileReader = new FileReader();\n\n constructor(private pbMiddlewares: PbUserMiddlewaresService, private bottomSheetRef: MatBottomSheetRef<ImportDialogComponent, PBEmail>) {}\n\n openBrowserModal(event: MouseEvent) {\n event.preventDefault();\n this.uploadInput.nativeElement.click();\n }\n\n startImporting() {\n this.importing = true;\n\n this.pbMiddlewares\n .importFile(this.uploadInput.nativeElement.files.item(0))\n .pipe(\n take(1),\n catchError(error =>\n this.pbMiddlewares.catchError(error).pipe(\n switchMap(() => {\n this.bottomSheetRef.dismiss(error);\n return EMPTY;\n })\n )\n )\n )\n .subscribe(file => {\n this.fileReader.readAsText(file, 'utf-8');\n });\n }\n\n ngOnInit() {\n this.fileReader.addEventListener('loadend', () => {\n this.importing = false;\n try {\n const email = JSON.parse(this.fileReader.result as string);\n this.bottomSheetRef.dismiss(email);\n } catch (error) {\n this.bottomSheetRef.dismiss(null);\n throw new Error(error);\n }\n });\n }\n\n ngOnDestroy() {}\n}\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport { Injectable } from '@angular/core';\nimport { MatSnackBar } from '@angular/material/snack-bar';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatBottomSheet } from '@angular/material/bottom-sheet';\nimport { animationFrameScheduler, BehaviorSubject, Observable, of, ReplaySubject, Subject } from 'rxjs';\nimport {\n catchError,\n distinct,\n distinctUntilChanged,\n distinctUntilKeyChanged,\n filter,\n map,\n shareReplay,\n subscribeOn,\n tap\n} from 'rxjs/operators';\n\nimport { IStructure, IUserTemplate, IUserTemplateCategory } from '../../../interfaces/interfaces';\nimport { TBlocks } from '../../../classes/Elements';\nimport { TemplateListDialogComponent } from '../../../components/template-list-dialog/template-list-dialog.component';\nimport { ConfirmDialogComponent } from '../../../components/dialog.component';\nimport { PbEmailObjectStoreService } from '../pb-email-object-store/pb-email-object-store.service';\nimport { ImportDialogComponent } from '../../../components/import-dialog/import-dialog.component';\nimport { PBEmail } from '../../../classes/DefaultEmail';\n\n/**\n * @internal\n */\n@Injectable()\nexport class PbUserInterfaceService {\n public readonly activeMatProgress$ = new ReplaySubject<boolean>();\n public readonly cdkDropListConnectedTo$ = this.emailObjectStore.emailStructuresAsObservable$.pipe(\n // tap(structures => console.log('Structures Length', structures.length)),\n map(structures =>\n structures.reduce((prev, { elements }, structureKey) => {\n prev.push(...elements.map((_, columnKey) => `column-droplist-${columnKey}-${structureKey}`));\n return prev;\n }, [])\n ),\n distinct(),\n distinctUntilKeyChanged('length'),\n // tap(dropList => console.log('Drop List', dropList)),\n shareReplay()\n );\n private readonly _currentEditingStructure$ = new BehaviorSubject<IStructure>(null);\n public readonly currentEditingStructure$ = this._currentEditingStructure$.pipe(\n subscribeOn(animationFrameScheduler),\n distinctUntilChanged(),\n catchError(() => of(null as IStructure)),\n // tap(editStructure => console.log(editStructure)),\n shareReplay()\n );\n private readonly _currentEditingBlock$ = new BehaviorSubject<TBlocks>(null);\n public readonly currentEditingBlock$ = this._currentEditingBlock$.pipe(\n subscribeOn(animationFrameScheduler),\n distinctUntilChanged(),\n catchError(() => of(null as TBlocks)),\n shareReplay()\n );\n private readonly _editGeneralSettings$ = new Subject<'structure' | 'block' | 'general'>();\n public readonly editGeneralSettings$ = this._editGeneralSettings$.pipe(\n subscribeOn(animationFrameScheduler),\n tap(() => this.changeTabIndex(2)),\n distinctUntilChanged(),\n shareReplay()\n );\n private readonly _currentTabIndex$ = new BehaviorSubject<number>(0);\n public readonly currentTabIndex$ = this._currentTabIndex$.pipe(subscribeOn(animationFrameScheduler), distinctUntilChanged());\n\n constructor(\n private emailObjectStore: PbEmailObjectStoreService,\n private matDialog: MatDialog,\n private bottomSheet: MatBottomSheet,\n private snackBar: MatSnackBar\n ) {}\n\n editBlock(block: TBlocks) {\n this._currentEditingStructure$.next(null);\n this._currentEditingBlock$.next(block);\n this._editGeneralSettings$.next('block');\n }\n\n editStructure(structure: IStructure) {\n this._currentEditingBlock$.next(null);\n this._editGeneralSettings$.next('structure');\n this._currentEditingStructure$.next(structure);\n }\n\n editGeneralSettings() {\n this.resetElements();\n this._editGeneralSettings$.next('general');\n }\n\n changeTabIndex(index: number) {\n this._currentTabIndex$.next(index);\n }\n\n confirmDialog$() {\n return this.matDialog\n .open(ConfirmDialogComponent)\n .afterClosed()\n .pipe(map(res => res === '1'));\n }\n\n templatesListDialog$(templateList: IUserTemplateCategory[]) {\n return this.matDialog\n .open<TemplateListDialogComponent, IUserTemplateCategory[], { category: string; template: IUserTemplate }>(\n TemplateListDialogComponent,\n {\n data: templateList,\n width: '60vw',\n maxWidth: '800px',\n height: '70vh',\n maxHeight: '900px'\n }\n )\n .afterClosed()\n .pipe(filter(tmpl => Boolean(tmpl)));\n }\n\n importDialog$(): Observable<PBEmail> {\n return this.bottomSheet\n .open(ImportDialogComponent, {\n ariaLabel: 'Browse media'\n })\n .afterDismissed();\n }\n\n notify(msg: string, close = 'dismiss', duration = 3000) {\n return this.snackBar.open(msg, close, { duration });\n }\n\n currentEditingBlock() {\n return this._currentEditingBlock$.getValue();\n }\n\n currentEditingStructure() {\n return this._currentEditingStructure$.getValue();\n }\n\n currentStructureEqualWith(structure: IStructure) {\n return this.currentEditingStructure() === structure;\n }\n\n currentBlockEqualWith(block: TBlocks) {\n return this.currentEditingBlock() === block;\n }\n\n currentStructureContainsActiveBlock(structure: IStructure) {\n return structure.elements.some(elems => elems.some(block => block === this.currentEditingBlock()));\n }\n\n resetElements() {\n this._currentEditingStructure$.next(null);\n this._currentEditingBlock$.next(null);\n }\n\n reset() {\n this.resetElements();\n this.changeTabIndex(0);\n }\n}\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport { Injectable, Inject } from '@angular/core';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { Observable, EMPTY } from 'rxjs';\nimport { catchError, switchMap, shareReplay, tap, finalize } from 'rxjs/operators';\n\nimport { IForRootConf, IUserModule, IUserTemplate } from './interfaces/interfaces';\nimport { PBEmail } from './classes/DefaultEmail';\n\nimport { PB_CONFIG, PB_DEFAULT_CONFIG } from './tokens/tokens';\nimport { PbEmailObjectStoreService } from './services/internals/pb-email-object-store/pb-email-object-store.service';\nimport { PbUserMiddlewaresService } from './services/user-middleware-service/pb-middlewares.service';\nimport { PbUserInterfaceService } from './services/internals/user-interfaces/user-interface.service';\n\n/**\n * @deprecated Soon it will be removed\n * @internal\n */\n@Injectable()\nexport class PbEmailBuilderService {\n // private _template = new BehaviorSubject<string>('');\n // private _mjml = new BehaviorSubject<string>('');\n // private readonly _onSave$ = new Subject();\n\n /**\n * @deprecated Please use the new service \"UserRestApiService\" instead\n */\n public modules = new Set<IUserModule>();\n /**\n * @deprecated Please use the new service \"UserRestApiService\" instead\n */\n public readonly customTemplates = new Set<IUserTemplate>();\n /**\n * @deprecated Please use the new service \"UserRestApiService\" instead\n */\n private _mergeTags = new Set<string>();\n\n public readonly onTemplateCreated$ = this.emailObjectStore.onTemplateCreated$.pipe(shareReplay());\n\n /**\n * @deprecated Use onTemplateCreated$ instead\n */\n public readonly onSave$ = this.onTemplateCreated$;\n\n /**\n * @deprecated Use isLoading$ instead\n */\n public readonly isLoading = this.pbUserInterface.activeMatProgress$.asObservable();\n public readonly isLoading$ = this.pbUserInterface.activeMatProgress$.asObservable();\n\n constructor(\n @Inject(PB_CONFIG) public config: IForRootConf,\n // @Inject(PB_GOOGLE_FONTS) private googleFonts: string[],\n private emailObjectStore: PbEmailObjectStoreService,\n private pbMiddleWares: PbUserMiddlewaresService,\n private pbUserInterface: PbUserInterfaceService // private _http: HttpClient,\n ) {\n this.config = { ...PB_DEFAULT_CONFIG, ...this.config };\n }\n\n /**\n * Save current Email Template\n */\n createHTMLTemplate$() {\n this.pbUserInterface.activeMatProgress$.next(true);\n return this.emailObjectStore.createHTMLTemplate$().pipe(\n tap(() => this.pbUserInterface.activeMatProgress$.next(false)),\n catchError((error: HttpErrorResponse) =>\n this.pbMiddleWares.catchError(error).pipe(\n switchMap(() => {\n this.pbUserInterface.notify(error.message);\n this.pbUserInterface.activeMatProgress$.next(false);\n return EMPTY;\n })\n )\n ),\n finalize(() => this.pbUserInterface.activeMatProgress$.next(false))\n );\n }\n\n /**\n * @deprecated Please use ngb.createHTMLTemplate$() instead\n */\n saveEmail() {\n return this.createHTMLTemplate$();\n }\n\n /**\n * Get Email as object\n */\n get Email() {\n return this.emailObjectStore.Email;\n }\n\n /**\n * Set Email saved from database or created with new PBEmail()\n */\n set Email(newEmail: PBEmail) {\n this.emailObjectStore.setEmail(newEmail);\n }\n\n /**\n * @deprecated Use getTemplateAsObservable$() instead\n */\n get Template() {\n return null;\n }\n /**\n * Set HTML output\n */\n // set Template(template: string) {\n // this._template.next(template);\n // }\n\n /**\n * @deprecated Use getMjmlAsObservable$() instead\n */\n get Mjml() {\n return null;\n }\n\n /**\n * Listen Email changes\n */\n getEmailAsObservable$(): Observable<PBEmail> {\n return this.emailObjectStore.emailAsObservable$;\n }\n\n /**\n * Listen Template changes\n */\n getTemplateAsObservable$(): Observable<string> {\n return this.emailObjectStore.templateAsObservable$;\n }\n\n /**\n * Listen MJML changes\n */\n getMjmlAsObservable$() {\n return this.emailObjectStore.mjmlAsObservable$;\n }\n\n /**\n * Listen Email and Template changes\n * @deprecated Use onTemplateCreated$ instead\n */\n onChanges$(): Observable<[PBEmail, string, string]> {\n return this.onTemplateCreated$;\n }\n\n /**\n * Get Set of Structures from aside\n */\n // getSideStructures(): Set<IStructure> {\n // return this._structures;\n // }\n\n /**\n * Get Set of Blocks from aside\n */\n // getSideBlocks(): Set<TBlocks> {\n // return this._blocks;\n // }\n\n /**\n * Get a Set of fonts family\n */\n // get Fonts(): IFontFamily {\n // return this._fontFamily;\n // }\n // set Fonts(fonts: IFontFamily) {\n // this._fontFamily = fonts;\n // }\n\n // get FallbackFonts(): IFontFamily {\n // return this._fallbackFamily;\n // }\n // set FallbackFonts(fonts: IFontFamily) {\n // this._fallbackFamily = fonts;\n // }\n\n /**\n * @deprecated Please use the new service \"UserRestApiService\" instead\n */\n // get MergeTags(): Set<string> {\n // return this._mergeTags;\n // }\n\n // set MergeTags(tags: Set<string>) {\n // this._mergeTags = tags;\n // }\n}\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport { Component, ViewChild, ElementRef, OnDestroy } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { Subject, EMPTY } from 'rxjs';\nimport { HttpEventType, HttpResponse, HttpEvent, HttpErrorResponse } from '@angular/common/http';\nimport { MatBottomSheetRef } from '@angular/material/bottom-sheet';\nimport { catchError, finalize, switchMap } from 'rxjs/operators';\n\nimport { bytesToSize } from '../../../utils';\nimport { PbEmailBuilderService } from '../../../pb-email-builder.service';\nimport { PbUserMiddlewaresService } from '../../user-middleware-service/pb-middlewares.service';\nimport { PbUserInterfaceService } from '../../internals/user-interfaces/user-interface.service';\nimport { PbUserRestApiService } from '../../user-rest-api-service/user-rest-api.service';\n\n@Component({\n selector: 'pb-upload-bottom-sheet-dialog',\n templateUrl: './upload-bottom-sheet-dialog.component.html',\n styleUrls: ['./upload-bottom-sheet-dialog.component.css']\n})\nexport class UploadBottomSheetDialogComponent implements OnDestroy {\n @ViewChild('uploadInput', { static: true }) uploadInput: ElementRef<HTMLInputElement>;\n choosedImage: File;\n uploading = false;\n progress = new Subject<number>();\n private objectUrl: string;\n\n constructor(\n private sanitizer: DomSanitizer,\n private ngb: PbEmailBuilderService,\n private userRestApi: PbUserRestApiService,\n private userInterface: PbUserInterfaceService,\n private middlewares: PbUserMiddlewaresService,\n private bottomSheetRef: MatBottomSheetRef<UploadBottomSheetDialogComponent>\n ) {}\n\n get imageInfo() {\n if (this.choosedImage) {\n const { lastModified, size } = this.choosedImage;\n const modTime = new Date(lastModified);\n return `${modTime.toLocaleString()}, ${bytesToSize(size)}.`;\n }\n return '';\n }\n\n previewLink() {\n return this.sanitizer.bypassSecurityTrustResourceUrl(this.objectUrl);\n }\n\n openBrowserModal(event: MouseEvent) {\n event.preventDefault();\n const { uploadImagePath } = this.ngb.config;\n if (!this.uploading && uploadImagePath) {\n this.uploadInput.nativeElement.click();\n } else if (!uploadImagePath) {\n this.userInterface.notify(`Hm ... this isn't a bug, it seems 'uploadImagePath' is empty!`);\n }\n }\n\n uploadInputChanged() {\n const { nativeElement } = this.uploadInput;\n if (nativeElement.files.length) {\n this._startUploading(nativeElement.files.item(0));\n }\n }\n\n private _startUploading(image: File) {\n if (this.objectUrl) {\n URL.revokeObjectURL(this.objectUrl);\n }\n this.objectUrl = URL.createObjectURL(image);\n this.uploading = true;\n\n const { uploadImagePath, csrf } = this.ngb.config;\n\n const formData = new FormData();\n if (csrf) {\n formData.append(csrf.name, csrf.token);\n }\n formData.append('image', image);\n\n return this.userRestApi\n .userImageUpload$(formData, uploadImagePath)\n .pipe(\n catchError((error: Error | HttpErrorResponse) =>\n this.middlewares.catchError(error).pipe(\n switchMap(() => {\n this.userInterface.notify(error.message);\n return EMPTY;\n })\n )\n ),\n finalize(() => this.progress.complete())\n )\n .subscribe((event: HttpEvent<{ success: boolean; path: string; message?: string }>) => {\n if (event.type === HttpEventType.UploadProgress) {\n const percentDone = Math.round((100 * event.loaded) / event.total);\n this.progress.next(percentDone);\n } else if (event instanceof HttpResponse) {\n if (!event.body.success) {\n this.userInterface.notify(event.body.message, 'Dismiss', null);\n } else {\n this.bottomSheetRef.dismiss(event.body.path);\n this.userInterface.notify('Successfully uploaded.', null, 1000);\n }\n }\n });\n }\n\n ngOnDestroy() {\n if (this.objectUrl) {\n URL.revokeObjectURL(this.objectUrl);\n }\n }\n}\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\n\n/**\n * A service that must be extended in case you want to rewrite the default\n * uploading process. In case you have a Regular License, you'll get a simple upload\n * service, for any other paid Licenses - you get an Image Gallery.\n *\n * It won't work if you have a Regular/Free License - you'll get an error on running the project,\n * you need either an [Extended or Commercial License]{@link https://wlocalhost.org} key for this purpose.\n *\n * @example\n * // Create a custom service\n * class YourOwnUploaderService extends PbUserImageUploaderService {}\n *\n * // Rewrite it into AppModule\n * { provide: PbUserImageUploaderService, useClass: YourOwnUploaderService }\n */\n@Injectable()\nexport abstract class PbUserImageUploaderService {\n /**\n * A method called once end user intends to upload an image.\n * It must returns always an `Observable<string>` - where `string` is the uploaded\n * image path.\n *\n * @return Uploaded image path.\n */\n abstract browse$(): Observable<string>;\n}\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport { MatBottomSheet } from '@angular/material/bottom-sheet';\nimport { switchMap } from 'rxjs/operators';\n\nimport { PbUserMiddlewaresService } from '../user-middleware-service/pb-middlewares.service';\nimport { UploadBottomSheetDialogComponent } from './upload-bottom-sheet-dialog/upload-bottom-sheet-dialog.component';\nimport { PbUserImageUploaderService } from './user-image-uploader.service';\n\n/**\n * @internal\n */\nexport default class ImageUploader extends PbUserImageUploaderService {\n constructor(private matBottomSheet: MatBottomSheet, private userMiddlewaresService: PbUserMiddlewaresService) {\n super();\n }\n\n browse$() {\n return this.matBottomSheet\n .open(UploadBottomSheetDialogComponent, {\n ariaLabel: 'Browse media'\n })\n .afterDismissed()\n .pipe(switchMap(path => this.userMiddlewaresService.uploadImage(path)));\n }\n}\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport { Component, Inject, OnDestroy } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { SafeResourceUrl, DomSanitizer } from '@angular/platform-browser';\nimport { catchError, switchMap } from 'rxjs/operators';\nimport { HttpErrorResponse, HttpEvent, HttpEventType, HttpResponse } from '@angular/common/http';\nimport { EMPTY } from 'rxjs';\n\nimport { PbUserRestApiService } from '../../user-rest-api-service/user-rest-api.service';\nimport { PB_CONFIG } from '../../../tokens/tokens';\nimport { IForRootConf } from '../../../interfaces/interfaces';\nimport { PbUserMiddlewaresService } from '../../user-middleware-service/pb-middlewares.service';\nimport { PbUserInterfaceService } from '../../internals/user-interfaces/user-interface.service';\n\n@Component({\n selector: 'pb-upload-image-gallery',\n templateUrl: './upload-image-gallery.component.html',\n styleUrls: ['./upload-image-gallery.component.scss']\n})\nexport class UploadImageGalleryComponent implements OnDestroy {\n currentMenuItem: 'gallery' | 'upload' = 'gallery';\n choseImage: string;\n uploadImagePreview: SafeResourceUrl;\n private imagePreviewObjectUrl: string;\n private uploadImageFile: File;\n\n constructor(\n @Inject(MAT_DIALOG_DATA) public imageCategoryList: string[],\n @Inject(PB_CONFIG) private userConfig: IForRootConf,\n private matDialogRef: MatDialogRef<UploadImageGalleryComponent, string>,\n private sanitizer: DomSanitizer,\n private userRestApi: PbUserRestApiService,\n private middlewares: PbUserMiddlewaresService,\n private userInterface: PbUserInterfaceService\n ) {}\n\n changeCurrentMenuItem(item: 'gallery' | 'upload') {\n this.currentMenuItem = item;\n }\n\n addImageToTemplate(imagePath = this.choseImage) {\n this.matDialogRef.close(imagePath);\n }\n\n previewImage({ target }: Event) {\n this.uploadImageFile = (target as HTMLInputElement).files.item(0);\n if (this.imagePreviewObjectUrl) {\n URL.revokeObjectURL(this.imagePreviewObjectUrl);\n }\n this.imagePreviewObjectUrl = URL.createObjectURL(this.uploadImageFile);\n this.uploadImagePreview = this.sanitizer.bypassSecurityTrustResourceUrl(this.imagePreviewObjectUrl);\n }\n\n startUploading() {\n const { csrf, uploadImagePath } = this.userConfig;\n const formData = new FormData();\n if (csrf) {\n formData.append(csrf.name, csrf.token);\n }\n formData.append('image', this.uploadImageFile);\n return this.userRestApi\n .userImageUpload$(formData, uploadImagePath)\n .pipe(\n catchError((error: Error | HttpErrorResponse) =>\n this.middlewares.catchError(error).pipe(\n switchMap(() => {\n this.userInterface.notify(error.message);\n return EMPTY;\n })\n )\n )\n )\n .subscribe((event: HttpEvent<{ success: boolean; path: string; message?: string }>) => {\n if (event.type === HttpEventType.UploadProgress) {\n // const percentDone = Math.round((100 * event.loaded) / event.total);\n // this.progress.next(percentDone);\n } else if (event instanceof HttpResponse) {\n if (!event.body.success) {\n this.userInterface.notify(event.body.message, 'Dismiss', null);\n } else {\n this.addImageToTemplate(event.body.path);\n this.userInterface.notify('Successfully uploaded.', null, 1000);\n }\n }\n });\n }\n\n ngOnDestroy() {\n if (this.imagePreviewObjectUrl) {\n URL.revokeObjectURL(this.imagePreviewObjectUrl);\n }\n }\n}\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport { MatDialog } from '@angular/material/dialog';\nimport { exhaustMap, filter, switchMap } from 'rxjs/operators';\n\nimport { PbUserImageUploaderService } from './user-image-uploader.service';\nimport { PbUserMiddlewaresService } from '../user-middleware-service/pb-middlewares.service';\nimport { UploadImageGalleryComponent } from './upload-image-gallery/upload-image-gallery.component';\nimport { PbUserRestApiService } from '../user-rest-api-service/user-rest-api.service';\n\n/**\n * @internal\n */\nexport default class PaidUsersImageUploaderServiceService extends PbUserImageUploaderService {\n constructor(private matDialog: MatDialog, private userMiddleware: PbUserMiddlewaresService, private userRestApi: PbUserRestApiService) {\n super();\n }\n\n browse$() {\n return this.userRestApi.getUserImages$().pipe(\n exhaustMap(imageCategoryList =>\n this.matDialog\n .open(UploadImageGalleryComponent, {\n data: imageCategoryList,\n width: '60vw',\n maxWidth: '800px',\n height: '60vh',\n maxHeight: '800px'\n })\n .afterClosed()\n ),\n filter(path => !!path.length),\n switchMap(path => this.userMiddleware.uploadImage(path))\n );\n }\n}\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport FreeUsersImageUploader from './free-users-image-uploader.service';\nimport PaidUsersImageUploader from './paid-users-image-uploader.service';\n\nexport { FreeUsersImageUploader, PaidUsersImageUploader };\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n DoCheck,\n HostBinding,\n HostListener,\n Input,\n OnDestroy,\n OnInit,\n ViewEncapsulation\n} from '@angular/core';\nimport { ResizeEvent } from 'angular-resizable-element';\nimport { exhaustMap, filter, map, take, takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\n\nimport { defaultColumnsOptions, Structure } from '../../classes/Structure';\nimport { TBlocks } from '../../classes/Elements';\nimport { createBorder } from '../../utils';\nimport { IAddBlockEvent, PbUserMiddlewaresService } from '../../services/user-middleware-service/pb-middlewares.service';\nimport { PbUserInterfaceService } from '../../services/internals/user-interfaces/user-interface.service';\nimport { PbEmailObjectStoreService } from '../../services/internals/pb-email-object-store/pb-email-object-store.service';\n\n@Component({\n selector: 'pb-structure',\n templateUrl: './structure.component.html',\n styleUrls: ['./structure.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.Emulated,\n exportAs: 'structure'\n})\nexport class StructureComponent implements DoCheck, OnInit, OnDestroy {\n @Input() structure = new Structure();\n @Input() index: number;\n public isActive: boolean;\n public cdkDropListConnectedTo$ = this.userInterfaceService.cdkDropListConnectedTo$;\n public fr: number;\n public validate = function ({ rectangle }: ResizeEvent) {\n const colFr = +(rectangle.width / this.fr).toFixed(2);\n return colFr > 1 && colFr <= 10 - this.structure.columns;\n }.bind(this);\n // sectionWidth$ = this.userInterfaceService.currentEditingStructure$.pipe(\n // withLatestFrom(this.emailObjectStore.emailBodyWidth$),\n // map(([{ options }, width]) => {\n // return options.fullWidth ? '100%' : width;\n // })\n // );\n private readonly componentIsDestroyed$ = new Subject();\n\n constructor(\n private userInterfaceService: PbUserInterfaceService,\n private emailObjectStore: PbEmailObjectStoreService,\n private chRef: ChangeDetectorRef,\n private pbMiddlewaresService: PbUserMiddlewaresService\n ) {}\n\n @HostBinding('class.active') get isStructureActive() {\n return this.isActive;\n }\n\n // @HostBinding('style.width') get sectionWidth(): string | number {\n // console.log(this.emailObjectStore.Email.general.width.value);\n // return this.structure.options.fullWidth ? '100%' : this.emailObjectStore.Email.general.width.value;\n // }\n\n // Don't close right panel on structure click\n @HostListener('click', ['$event']) onHostClick(event: MouseEvent) {\n event.stopImmediatePropagation();\n this.editStructure();\n }\n\n removeStructure(event: Event) {\n event.stopPropagation();\n this.pbMiddlewaresService\n .removeStructure(this.index, this.structure)\n .pipe(\n exhaustMap(() => this.userInterfaceService.confirmDialog$()),\n filter(removeAllowed => removeAllowed),\n take(1)\n )\n .subscribe(() => {\n this.emailObjectStore.removeStructure(this.index);\n this.userInterfaceService.resetElements();\n });\n }\n\n duplicateStructure(event: Event) {\n event.stopPropagation();\n this.pbMiddlewaresService\n .duplicateStructure(this.index, this.structure)\n .pipe(\n map(() => this.emailObjectStore.duplicateStructure(this.index)),\n take(1)\n )\n .subscribe(newStructure => {\n this.editStructure(newStructure);\n });\n }\n\n dropNewBlock(event: IAddBlockEvent, column: TBlocks[]) {\n if (event.previousContainer === event.container) {\n this.emailObjectStore.addBlock(event, column);\n } else {\n this.pbMiddlewaresService\n .addBlock(event, column)\n .pipe(map(newData => this.emailObjectStore.addBlock(newData.event, newData.column)))\n .subscribe(() => {\n // this.userInterfaceService.editBlock(newBlock);\n this.chRef.markForCheck();\n });\n }\n }\n\n disableBlockDrag$(block: TBlocks) {\n return this.pbMiddlewaresService.disableBlockDragWithinEmailBody(block).pipe(take(1));\n }\n\n editStructure(structure = this.structure) {\n this.pbMiddlewaresService\n .editStructure(structure)\n .pipe(take(1))\n .subscribe(strctr => {\n this.userInterfaceService.editStructure(strctr);\n });\n }\n\n getResizeEdges(columnKey: number) {\n return {\n right: columnKey + 1 !== this.structure.columns,\n left: columnKey !== 0\n };\n }\n\n createColumnId(columnKey: number) {\n return `column-droplist-${columnKey}-${this.index}`;\n }\n\n getColumnStyles(columnKey: number) {\n const {\n options: { gaps = [4, 4], columns = [] }\n } = this.structure;\n const column = columns[columnKey] || defaultColumnsOptions;\n\n let verticalAlign = 'center';\n if (column.verticalAlign === 'bottom') {\n verticalAlign = 'flex-end';\n } else if (column.verticalAlign === 'top') {\n verticalAlign = 'flex-start';\n }\n\n return {\n padding: gaps.map(gap => `${gap}px`).join(' '),\n backgroundColor: column.background.color,\n placeSelf: `${verticalAlign} stretch`,\n ...createBorder(column.border)\n // ...createBackground(column.background)\n };\n }\n\n onResizeEnd({ rectangle }: ResizeEvent, key: number) {\n this.structure.options.columnsWidth[key] = +(rectangle.width / this.fr).toFixed(2);\n }\n\n ngDoCheck() {\n if (this.isActive || this.userInterfaceService.currentStructureContainsActiveBlock(this.structure)) {\n this.chRef.markForCheck();\n }\n }\n\n ngOnInit() {\n // Add columns options in case of old template\n const { columns, columnsWidth } = this.structure.options;\n if (!columns || !columnsWidth) {\n const { type, elements, options } = this.structure;\n this.editStructure(new Structure(type, elements, options));\n }\n\n const width = this.emailObjectStore.Email.general.width.value;\n const [, horizontalGap] = this.structure.options.gaps;\n this.fr = (width - horizontalGap * this.structure.columns) / 10;\n\n this.userInterfaceService.currentEditingStructure$\n .pipe(\n map(currentEditingStructure => currentEditingStructure === this.structure),\n takeUntil(this.componentIsDestroyed$)\n )\n .subscribe(isActive => {\n this.isActive = isActive;\n });\n }\n\n ngOnDestroy() {\n this.componentIsDestroyed$.next('');\n this.componentIsDestroyed$.complete();\n }\n}\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * @ignore\n *\n * Soon will be removed.\n */\n@Pipe({\n name: 'slugify'\n})\nexport class SlugifyPipe implements PipeTransform {\n transform(input: string): string {\n const trChars = {\n áÁ: 'a',\n éÉ: 'e',\n íÍ: 'i',\n óÓ: 'o',\n úÚ: 'u',\n ñÑ: 'n'\n };\n for (const key of Object.keys(trChars)) {\n input = input.replace(new RegExp('[' + key + ']', 'g'), trChars[key]);\n }\n return input\n .toString()\n .toLowerCase()\n .replace(/\\s+/g, '-') // Replace spaces with -\n .replace(/[^\\w\\-]+/g, '') // Remove all non-word chars\n .replace(/\\-\\-+/g, '-') // Replace multiple - with single -\n .replace(/^-+/, '') // Trim - from start of text\n .replace(/-+$/, ''); // Trim - from end of text\n }\n}\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport {\n Component,\n ChangeDetectionStrategy,\n Input,\n Renderer2,\n OnChanges,\n SimpleChanges,\n OnDestroy,\n OnInit,\n Inject,\n ChangeDetectorRef,\n Output,\n EventEmitter,\n forwardRef\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { fromEvent, Subject, iif, EMPTY } from 'rxjs';\nimport { switchMap, take, takeUntil, filter, catchError, withLatestFrom, exhaustMap, map } from 'rxjs/operators';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { PbEmailBuilderService } from './pb-email-builder.service';\nimport { IStructure } from './interfaces/interfaces';\nimport { PBEmail } from './classes/DefaultEmail';\nimport { SlugifyPipe } from './pipes/slugify.pipe';\nimport { PbUserMiddlewaresService, TExportType } from './services/user-middleware-service/pb-middlewares.service';\nimport { TBlocks } from './classes/Elements';\nimport { PbUserInterfaceService } from './services/internals/user-interfaces/user-interface.service';\nimport { PbEmailObjectStoreService } from './services/internals/pb-email-object-store/pb-email-object-store.service';\nimport { PB_STRUCTURES, PB_BLOCKS, PB_GOOGLE_FONTS } from './tokens/tokens';\nimport { PbUserRestApiService } from './services/user-rest-api-service/user-rest-api.service';\nimport { deferOf } from './utils';\n\n@Component({\n selector: 'pb-email-builder',\n templateUrl: './pb-email-builder.component.html',\n styleUrls: ['./pb-email-builder.component.scss'],\n exportAs: 'pbEmailBuilder',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => PbEmailBuilderComponent),\n multi: true\n },\n SlugifyPipe\n ]\n})\nexport class PbEmailBuilderComponent implements OnChanges, OnDestroy, OnInit, ControlValueAccessor {\n @Input() email?: PBEmail;\n @Output() emailChange = new EventEmitter<PBEmail>();\n\n previewTemplate = false;\n showGeneralSettings$ = this.userInterfaceService.editGeneralSettings$;\n currentTabIndex$ = this.userInterfaceService.currentTabIndex$;\n cdkDropListConnectedTo$ = this.userInterfaceService.cdkDropListConnectedTo$;\n getBuilderContainerStyles$ = this.emailObjectStore.builderContainerStyles$;\n currentHTMLTemplate$ = this.emailObjectStore.templateAsObservable$;\n activeMatProgress$ = this.userInterfaceService.activeMatProgress$.asObservable();\n customModuleList$ = this.userRestApiService.getAllUserModules$;\n\n private readonly _onDestroy$ = new Subject();\n private includedFonts = new Set<HTMLLinkElement>();\n\n constructor(\n public ngb: PbEmailBuilderService,\n private userRestApiService: PbUserRestApiService,\n private userInterfaceService: PbUserInterfaceService,\n private emailObjectStore: PbEmailObjectStoreService,\n private renderer2: Renderer2,\n private slugifyPipe: SlugifyPipe,\n private middlewares: PbUserMiddlewaresService,\n private changeDetectorRef: ChangeDetectorRef,\n @Inject(PB_STRUCTURES) public structures: IStructure[],\n @Inject(PB_BLOCKS) public blocks: TBlocks[],\n @Inject(PB_GOOGLE_FONTS) googleFonts: TBlocks[],\n @Inject(DOCUMENT) private doc: Document\n ) {\n if (this.doc) {\n for (const font of googleFonts) {\n const link = this.doc.createElement('link');\n link.href = `https://fonts.googleapis.com/css?family=${font}`;\n link.rel = 'stylesheet';\n this.includedFonts.add(link);\n this.doc.head.appendChild(link);\n }\n }\n }\n\n // Form Control implementation\n private onChange: (_?: any) => void;\n private onTouched: () => void;\n\n writeValue(email: PBEmail): void {\n try {\n this.emailObjectStore.setEmail(email);\n this.previewTemplate = false;\n this.changeDetectorRef.markForCheck();\n } catch (error) {\n this.userInterfaceService.notify(error.message);\n }\n }\n registerOnChange(fn: any): void {\n this.onChange = fn;\n }\n registerOnTouched(fn: any): void {\n this.onTouched = fn;\n }\n\n /**\n * Not implemented yet\n * @param isDisabled The state of builder\n */\n setDisabledState?(isDisabled: boolean): void {\n // tslint:disable-next-line: no-console\n console.info('[IpEmailBuilderComponent] Method [setDisabledState] is not implemented.');\n }\n\n saveEmail() {\n return this.emailObjectStore.currentEmailHasChanges$\n .pipe(\n exhaustMap(hasChanges => {\n return iif(\n () => hasChanges,\n this.ngb.createHTMLTemplate$(),\n this.userInterfaceService.notify('No changes were detected to be save!').afterDismissed()\n );\n }),\n take(1)\n )\n .subscribe();\n }\n\n disableBlocksList$(block: TBlocks) {\n return iif(\n () => !block.state?.disabled,\n this.emailObjectStore.emailStructuresAsObservable$.pipe(\n map(({ length }) => length > 0),\n exhaustMap(hasStructures => (hasStructures ? this.middlewares.disableBlockDragFromList(block) : deferOf(true)))\n )\n ).pipe(take(1));\n }\n\n disableStructureList$(structure: IStructure) {\n return this.middlewares.disableStructureDragFromList(structure).pipe(take(1));\n }\n\n trackByFn(block: TBlocks | IStructure) {\n return block.type;\n }\n\n changeTabIndex(index: number) {\n this.userInterfaceService.changeTabIndex(index);\n }\n\n download(source: TExportType) {\n return this.middlewares\n .exportFile(source)\n .pipe(\n exhaustMap(() => this.ngb.createHTMLTemplate$().pipe(map(serverResponse => ({ ...serverResponse, type: source })))),\n catchError(error =>\n this.middlewares.catchError(error).pipe(\n switchMap(() => {\n this.userInterfaceService.notify(error.message);\n return EMPTY;\n })\n )\n ),\n take(1)\n )\n .subscribe(({ type, html, mjml }) => {\n const anchor = this.renderer2.createElement('a');\n let download = html;\n if (type === 'mjml') {\n download = mjml;\n } else if (type === 'json') {\n download = JSON.stringify(this.ngb.Email, null, 1);\n }\n const href = URL.createObjectURL(\n new Blob([download], {\n type: type === 'json' ? 'text/json' : 'text/html'\n })\n );\n const fileName = this.slugifyPipe.transform(this.ngb.Email.general.name || 'ngb-template');\n anchor.href = href;\n anchor.target = '_blank';\n anchor.download = `${fileName}.${type}`;\n anchor.click();\n URL.revokeObjectURL(href);\n });\n }\n\n importFile() {\n this.userInterfaceService\n .importDialog$()\n .pipe(\n switchMap(emailOrError => {\n if (emailOrError instanceof Error) {\n throw emailOrError;\n }\n return deferOf(emailOrError);\n }),\n catchError(error =>\n this.middlewares.catchError(error).pipe(\n switchMap(() => {\n this.userInterfaceService.notify(error.message);\n return EMPTY;\n })\n )\n ),\n take(1),\n filter(email => !!email)\n )\n .subscribe(email => {\n this.writeValue(email);\n this.userInterfaceService.notify('Email has been imported successfully.');\n });\n }\n\n // getBackgroundImage(): SafeStyle {\n // const {\n // background: { url }\n // } = this.email.general;\n // return this.sanitizer.bypassSecurityTrustStyle(url && `url(${url})`);\n // }\n\n // getBuilderContainerStyles() {\n // const { background, padding, direction } = this.emailObjectStore.Email.general;\n\n // return {\n // direction,\n // backgroundRepeat: background.repeat,\n // backgroundColor: background.color,\n // backgroundSize: createWidthHeight(background.size),\n // backgroundPosition: 'top center',\n // ...createPadding(padding)\n // };\n // }\n\n createArrayFromStructureColumns({ columns }): string[] {\n return new Array(columns).fill('');\n }\n\n togglePreview() {\n return this.emailObjectStore\n .createHTMLTemplate$()\n .pipe(\n exhaustMap(() => this.middlewares.togglePreview(!this.previewTemplate)),\n catchError(error =>\n this.middlewares.catchError(error).pipe(\n switchMap(() => {\n this.userInterfaceService.notify(error.message);\n return EMPTY;\n })\n )\n ),\n take(1)\n )\n .subscribe(nextState => {\n this.previewTemplate = nextState;\n this.changeDetectorRef.markForCheck();\n });\n }\n\n ngOnInit() {\n fromEvent<BeforeUnloadEvent>(window, 'beforeunload')\n .pipe(\n withLatestFrom(this.emailObjectStore.currentEmailHasChanges$),\n filter(([_, emailIsDirty]) => emailIsDirty),\n switchMap(([event]) => this.middlewares.preventWindowExit(event)),\n takeUntil(this._onDestroy$)\n )\n .subscribe(ev => {\n ev.preventDefault();\n ev.returnValue = '';\n });\n\n this.emailObjectStore.emailAsObservable$.pipe(takeUntil(this._onDestroy$)).subscribe(email => {\n this.onTouched?.();\n this.onChange?.(email);\n this.emailChange.next(email);\n });\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.email) {\n this.writeValue(changes.email.currentValue);\n }\n }\n\n // private setEmail(email: PBEmail) {\n // try {\n // this.emailObjectStore.setEmail(email);\n // this.previewTemplate = false;\n // this.changeDetectorRef.markForCheck();\n // } catch (error) {\n // this.userInterfaceService.notify(error.message);\n // }\n // }\n\n ngOnDestroy() {\n this._onDestroy$.next();\n this._onDestroy$.complete();\n\n // Reset the builder state\n this.userInterfaceService.reset();\n\n if (this.doc) {\n this.includedFonts.forEach(font => font.remove());\n }\n this.includedFonts.clear();\n }\n}\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport { Directive, OnInit, ViewChild } from '@angular/core';\nimport { CdkPortal } from '@angular/cdk/portal';\n\n@Directive()\n// tslint:disable-next-line:no-shadowed-variable directive-class-suffix\nexport abstract class AbstractBlock<AbstractEntityBlock> implements OnInit {\n block: AbstractEntityBlock;\n @ViewChild(CdkPortal, { static: true }) private portal: CdkPortal;\n\n ngOnInit(): void {\n // if (!this.portal) {\n // throw new Error(`Each element should have an options' portal, add *cdkPortal inside of HTML block.`);\n // }\n }\n}\n\nexport abstract class AbstractEntityBlock {}\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport { Component, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { debounceTime, map, mapTo, take, takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\n\nimport { TextBlock } from '../../classes/Elements';\nimport { createFont, createLineHeight, createPadding } from '../../utils';\nimport { PbUserInterfaceService } from '../../services/internals/user-interfaces/user-interface.service';\nimport { PbEmailObjectStoreService } from '../../services/internals/pb-email-object-store/pb-email-object-store.service';\nimport { PbUserRestApiService } from '../../services/user-rest-api-service/user-rest-api.service';\nimport { AbstractBlock } from '../abstract-block';\n\n@Component({\n selector: 'pb-text-element',\n templateUrl: './text-element.component.html',\n styleUrls: ['./text-element.component.scss'],\n encapsulation: ViewEncapsulation.None\n})\nexport class TextElementComponent extends AbstractBlock<TextBlock> implements OnInit, OnDestroy {\n // @Input() block: TextBlock;\n setAsReadOnly$ = this.internalService.currentEditingBlock$.pipe(map(editingBlock => editingBlock !== this.block));\n public staticQuillConfig = {\n toolbar: {\n container: [\n ['bold', 'italic', 'underline', 'strike'],\n [{ header: [1, 2, 3, 4, 5, 6, false] }, { size: ['small', false, 'large', 'huge'] }],\n [{ align: [] }, 'link'],\n [{ list: 'ordered' }, { list: 'bullet' }],\n [{ color: [] }, { background: [] }],\n ['clean']\n ],\n handlers: {\n placeholder(selector: string) {\n const range = this.quill.getSelection();\n const format = this.quill.getFormat();\n const text = this.quill.getText(range.index, range.length);\n this.quill.deleteText(range.index, text.length);\n this.quill.insertText(range.index, selector, format);\n this.quill.setSelection(range.index, selector.length);\n }\n }\n }\n };\n public readonly quillInit$ = this.userRestApi.getAllUserMergeFields$.pipe(\n map(placeholder => {\n // @ts-ignore\n this.staticQuillConfig.toolbar.container.splice(-1, 0, [{ placeholder }]);\n }),\n mapTo(true),\n take(1)\n );\n private textChanged$ = new Subject();\n private componentDestroyed$ = new Subject();\n\n constructor(\n private userRestApi: PbUserRestApiService,\n private emailObject: PbEmailObjectStoreService,\n private internalService: PbUserInterfaceService\n ) {\n super();\n }\n\n getTextStyles() {\n const { color, font, lineHeight, padding } = this.block.options;\n\n return {\n color,\n 'word-break': 'break-all',\n ...createLineHeight(lineHeight),\n ...createFont(font),\n ...createPadding(padding)\n };\n }\n\n contentChanged() {\n this.textChanged$.next();\n }\n\n ngOnInit() {\n this.textChanged$.pipe(debounceTime(600), takeUntil(this.componentDestroyed$)).subscribe(() => {\n this.emailObject.markForCheck();\n });\n }\n\n ngOnDestroy() {\n this.componentDestroyed$.next();\n this.componentDestroyed$.complete();\n }\n}\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport { Component, Input, HostBinding, ChangeDetectorRef } from '@angular/core';\nimport { ImageBlock } from '../../classes/Elements';\nimport { createBorder, createPadding, createWidthHeight } from '../../utils';\nimport { PbUserImageUploaderService } from '../../services/user-image-uploader-service/user-image-uploader.service';\nimport { PbEmailBuilderService } from '../../pb-email-builder.service';\nimport { AbstractBlock } from '../abstract-block';\n\n@Component({\n selector: 'pb-image',\n templateUrl: './image.component.html',\n styleUrls: ['./image.component.css']\n})\nexport class ImageComponent extends AbstractBlock<ImageBlock> {\n // @Input() block = new ImageBlock();\n\n @HostBinding('style.textAlign') get align() {\n return this.block.options.align;\n }\n\n get src() {\n return this.block.src || 'https://via.placeholder.com/600x200?text=CHANGE+ME';\n }\n\n constructor(private imageUploader: PbUserImageUploaderService, private chRef: ChangeDetectorRef, public ngb: PbEmailBuilderService) {\n super();\n }\n\n async uploadImage() {\n const src = await this.imageUploader.browse$().toPromise();\n if (src) {\n this.block.src = src;\n this.chRef.markForCheck();\n }\n }\n\n getImageStyles() {\n const { border, width, height, padding } = this.block.options;\n\n return {\n width: createWidthHeight(width),\n height: createWidthHeight(height),\n ...createPadding(padding),\n ...createBorder(border)\n };\n }\n}\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { ButtonBlock } from '../../classes/Elements';\nimport {\n createFont,\n createPadding,\n createBorder,\n createLineHeight\n} from '../../utils';\nimport {AbstractBlock} from '../abstract-block';\n\n@Component({\n selector: 'pb-button',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.css'],\n encapsulation: ViewEncapsulation.Emulated\n})\nexport class ButtonComponent extends AbstractBlock<ButtonBlock> {\n // @Input() block: ButtonBlock;\n\n getButtonStyles() {\n const {\n backgroundColor,\n border,\n color,\n font,\n lineHeight,\n innerPadding,\n fullWidth\n } = this.block.options;\n\n return {\n color,\n width: fullWidth ? '100%' : 'auto',\n backgroundColor,\n ...createFont(font),\n ...createPadding(innerPadding),\n ...createBorder(border),\n ...createLineHeight(lineHeight)\n };\n }\n\n getParentStyles() {\n const { align, padding } = this.block.options;\n\n return {\n justifyContent:\n (align === 'center' && 'center') ||\n (align === 'right' && 'flex-end') ||\n 'flex-start',\n ...createPadding(padding)\n };\n }\n}\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport {Component, OnInit} from '@angular/core';\nimport {DividerBlock} from '../../classes/Elements';\nimport {createBorder, createPadding} from '../../utils';\nimport {AbstractBlock} from '../abstract-block';\n\n@Component({\n selector: 'pb-divider',\n template: '<div [ngStyle]=\"getDividerStyles()\"></div>',\n styles: [\n `\n :host {\n display: table;\n width: 100%;\n }\n `\n ]\n})\nexport class DividerComponent extends AbstractBlock<DividerBlock> implements OnInit {\n // @Input()\n // block: DividerBlock = new DividerBlock();\n\n getDividerStyles() {\n const {border, padding} = this.block.options;\n return {\n ...createBorder(border, 'borderTop'),\n ...createPadding(padding, 'margin')\n };\n }\n\n ngOnInit() {\n }\n}\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport {ChangeDetectionStrategy, Component, HostBinding} from '@angular/core';\nimport {SpacerBlock} from '../../classes/Elements';\nimport {createWidthHeight} from '../../utils';\n\nimport {AbstractBlock} from '../abstract-block';\n\n@Component({\n selector: 'pb-spacer',\n template: '',\n styles: [\n `\n :host {\n display: table;\n width: 100%;\n transition: all 500ms cubic-bezier(0.445, 0.05, 0.55, 0.95);\n }\n `\n ],\n // changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SpacerComponent extends AbstractBlock<SpacerBlock> {\n // @Input() block: SpacerBlock = new SpacerBlock();\n\n @HostBinding('style.height') get height() {\n return createWidthHeight(this.block.options.height);\n }\n}\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport {ChangeDetectionStrategy, Component} from '@angular/core';\nimport {SocialBlock} from '../../classes/Elements';\nimport {createFont, createLineHeight, createPadding, getAssetByPath} from '../../utils';\nimport {AbstractBlock} from '../abstract-block';\n\n@Component({\n selector: 'pb-social',\n templateUrl: './social.component.html',\n styleUrls: ['./social.component.scss'],\n // changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SocialComponent extends AbstractBlock<SocialBlock> {\n // @Input()\n // block: SocialBlock;\n\n getParentStyles() {\n const { color, font, lineHeight, padding } = this.block.options;\n\n return {\n color,\n ...createLineHeight(lineHeight),\n ...createFont(font),\n ...createPadding(padding)\n };\n }\n\n getLabelStyles() {\n const { innerPadding } = this.block.options;\n return { ...createPadding(innerPadding), lineHeight: 0 };\n }\n\n getSocialListStyles() {\n const { align } = this.block.options;\n return {\n display: 'flex',\n placeContent:\n (align === 'left' && 'flex-start') ||\n (align === 'right' && 'flex-end') ||\n align\n };\n }\n\n getSocialListClasses() {\n return `social-list ${this.block.options.mode}`;\n }\n\n getSocialNetworkIcon(network: string) {\n return getAssetByPath(`${network}.png`);\n }\n}\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport { ComponentFactoryResolver, Directive, Input, Type, ViewContainerRef } from '@angular/core';\nimport { TextElementComponent } from '../elements/text-element/text-element.component';\nimport { ImageComponent } from '../elements/image/image.component';\nimport { ButtonComponent } from '../elements/button/button.component';\nimport { DividerComponent } from '../elements/divider/divider.component';\nimport { SpacerComponent } from '../elements/spacer/spacer.component';\nimport { SocialComponent } from '../elements/social/social.component';\nimport { TBlocks } from '../classes/Elements';\n\nconst cStore: Map<string, Type<any>> = new Map();\n\n/**\n * @internal\n *\n * Soon it must be optimized, and load all components lazily.\n */\n@Directive({\n selector: '[pbDynamicComponent]'\n})\nexport class DynamicComponentDirective {\n constructor(private cResolver: ComponentFactoryResolver, private viewContainerRef: ViewContainerRef) {\n cStore.set('text', TextElementComponent);\n cStore.set('image', ImageComponent);\n cStore.set('button', ButtonComponent);\n cStore.set('divider', DividerComponent);\n cStore.set('spacer', SpacerComponent);\n cStore.set('social', SocialComponent);\n }\n\n @Input() set pbDynamicComponent(block: TBlocks) {\n const component = this.cResolver.resolveComponentFactory(cStore.get(block.type));\n this.viewContainerRef.createComponent(component).instance.block = block;\n }\n}\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport { ChangeDetectionStrategy, Component, HostListener, Inject } from '@angular/core';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { DomSanitizer, SafeStyle } from '@angular/platform-browser';\nimport { catchError, exhaustMap, finalize, map, switchMap, take, tap } from 'rxjs/operators';\nimport { EMPTY, iif, throwError } from 'rxjs';\n\nimport { createBorder, createMargin, createPadding, createWidthHeight, deferOf } from '../../utils';\nimport { IForRootConf, IStructure, IUserTemplate } from '../../interfaces/interfaces';\nimport { PBEmail } from '../../classes/DefaultEmail';\nimport { IAddStructureEvent, PbUserMiddlewaresService } from '../../services/user-middleware-service/pb-middlewares.service';\nimport { PbUserInterfaceService } from '../../services/internals/user-interfaces/user-interface.service';\nimport { PbEmailObjectStoreService } from '../../services/internals/pb-email-object-store/pb-email-object-store.service';\nimport { PbUserRestApiService } from '../../services/user-rest-api-service/user-rest-api.service';\nimport { PB_CONFIG } from '../../tokens/tokens';\nimport { PbStorageService } from '../../services/pb-storage/pb-storage.service';\n\n// import { IpUserRestApiProvider } from '../providers';\n\n@Component({\n selector: 'pb-builder-container',\n templateUrl: './builder-container.component.html',\n styleUrls: ['./builder-container.scss'],\n providers: [\n // IpUserRestApiProvider\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n // encapsulation: ViewEncapsulation.None\n})\nexport class BuilderContainerComponent {\n showTemplateList = this.userConfig.templateListIfEmpty ?? true;\n getStructures$ = this.emailObjectStore.emailStructuresAsObservable$;\n activeMatProgress$ = this.userInterfaceService.activeMatProgress$;\n\n constructor(\n private userInterfaceService: PbUserInterfaceService,\n private emailObjectStore: PbEmailObjectStoreService,\n private userRestApi: PbUserRestApiService,\n private pbStorage: PbStorageService,\n private pbMiddlewaresService: PbUserMiddlewaresService,\n private sanitizer: DomSanitizer,\n @Inject(PB_CONFIG) private userConfig: IForRootConf\n ) {}\n\n @HostListener('click') onHostClick() {\n this.userInterfaceService.editGeneralSettings();\n }\n\n trackBy(structure: IStructure): number {\n return structure.id;\n }\n\n disableStructureDrag$(structure: IStructure) {\n return this.pbMiddlewaresService.disableStructureDragWithinEmailBody(structure).pipe(take(1));\n }\n\n openTemplateDialog(ev: Event) {\n ev.stopImmediatePropagation();\n this.userInterfaceService.activeMatProgress$.next(true);\n const cachedTemplates = this.pbStorage.getCachedTemplateList();\n return iif(\n () => cachedTemplates.length > 0,\n deferOf(cachedTemplates),\n this.userRestApi.getAllUserTemplates$.pipe(tap(list => this.pbStorage.cacheTemplateList(list)))\n )\n .pipe(\n // map(() => []),\n map(templates => {\n return [...templates, { category: 'latest', templates: this.pbStorage.getLatestUsedTemplates() }];\n }),\n finalize(() => this.userInterfaceService.activeMatProgress$.next(false)),\n exhaustMap(list =>\n list?.length > 0 ? this.userInterfaceService.templatesListDialog$(list) : throwError(new Error('The template list is empty'))\n ),\n switchMap(({ category, template }) => this.pbMiddlewaresService.chooseTemplate(category, template)),\n exhaustMap(({ category, template }) =>\n this.userRestApi.getUserTemplateData$(category, template).pipe(\n tap(choosedTemplate => {\n if (category !== 'latest') {\n this.pbStorage.addTemplateToLatestUsed(choosedTemplate);\n }\n })\n )\n ),\n catchError((error: Error | HttpErrorResponse) =>\n this.pbMiddlewaresService.catchError(error).pipe(\n switchMap(() => {\n this.userInterfaceService.notify(error.message);\n return EMPTY;\n })\n )\n ),\n take(1)\n )\n .subscribe((result: IUserTemplate) => {\n if (result) {\n this.emailObjectStore.setEmail(new PBEmail(result.templateData));\n } else {\n this.userInterfaceService.notify('No template was chosen');\n }\n });\n }\n\n dropNewStructure(event: IAddStructureEvent) {\n if (event.previousContainer === event.container) {\n this.emailObjectStore.changeStructureOrder(event);\n } else {\n this.pbMiddlewaresService\n .addStructure(event)\n .pipe(\n tap(newEvent => this.emailObjectStore.addStructure(newEvent)),\n take(1)\n )\n .subscribe();\n }\n }\n\n getStructureStyles(structure: IStructure) {\n const { border, background, padding, margin, columnsWidth, fullWidth } = structure.options;\n\n return {\n // direction,\n width: fullWidth ? '100%' : `${this.emailObjectStore.Email.general.width.value}px`,\n backgroundRepeat: background.repeat,\n backgroundColor: background.color,\n backgroundSize: createWidthHeight(background.size),\n backgroundPosition: 'top center',\n gridTemplateColumns: columnsWidth.map(fr => `${fr}fr`).join(' '),\n ...createBorder(border),\n ...createPadding(padding),\n ...createMargin(margin)\n };\n }\n\n getBackgroundImage(structure: IStructure): SafeStyle {\n const {\n background: { url }\n } = structure.options;\n return this.sanitizer.bypassSecurityTrustStyle(url && `url(${url})`);\n }\n}\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport { ChangeDetectionStrategy, Component, Inject, Input } from '@angular/core';\nimport { IFont } from '../interfaces/interfaces';\nimport { PB_FALLBACK_FONTS, PB_GOOGLE_FONTS } from '../tokens/tokens';\nimport { PbEmailObjectStoreService } from '../services/internals/pb-email-object-store/pb-email-object-store.service';\n\n@Component({\n selector: 'pb-font-styles',\n template: `\n <div class=\"group two\">\n <mat-form-field appearance=\"outline\" *ngIf=\"hasProperty('family')\">\n <mat-label i18n=\"settings|Font Family\">Family</mat-label>\n <mat-select [(value)]=\"font.family\" disableRipple (selectionChange)=\"markForCheck()\">\n <mat-option *ngFor=\"let name of fontFamilyList\" [ngStyle]=\"{ fontFamily: name }\" [value]=\"name\">\n {{ name }}\n </mat-option>\n </mat-select>\n <mat-hint *ngIf=\"isGoogleFont()\" i18n=\"settings|Partial support\">Partial support.</mat-hint>\n <mat-hint *ngIf=\"!isGoogleFont()\" i18n=\"settings|Full support\">Full support.</mat-hint>\n </mat-form-field>\n <mat-form-field appearance=\"outline\" *ngIf=\"hasProperty('fallback')\">\n <mat-label i18n=\"settings|Font Fallback\">Fallback</mat-label>\n <mat-select [(value)]=\"font.fallback\" [disabled]=\"!isGoogleFont()\" disableRipple (selectionChange)=\"markForCheck()\">\n <mat-option *ngFor=\"let name of fallbackFonts\" [ngStyle]=\"{ fontFamily: name }\" [value]=\"name\">\n {{ name }}\n </mat-option>\n </mat-select>\n <mat-hint i18n=\"settings|Full support\">Full support.</mat-hint>\n </mat-form-field>\n </div>\n\n <div class=\"group three\">\n <mat-form-field appearance=\"outline\" *ngIf=\"hasProperty('size')\">\n <mat-label i18n=\"settings|Font Size\">Size</mat-label>\n <input matInput type=\"number\" max=\"30\" min=\"10\" step=\"1\" (input)=\"markForCheck()\" [(ngModel)]=\"font.size\" />\n </mat-form-field>\n <mat-form-field appearance=\"outline\" *ngIf=\"hasProperty('weight')\">\n <mat-label i18n=\"settings|Font Weight\">Weight</mat-label>\n <mat-select placeholder=\"Weight\" [(value)]=\"font.weight\" disableRipple (selectionChange)=\"markForCheck()\">\n <mat-option *ngFor=\"let weight of fontWeightList\" [value]=\"weight\">\n {{ weight }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n <mat-form-field appearance=\"outline\" style=\"min-width: 90px;\">\n <mat-label i18n=\"settings|Font Style\">Style</mat-label>\n <mat-select placeholder=\"Style\" [(value)]=\"font.style\" disableRipple (selectionChange)=\"markForCheck()\">\n <mat-option *ngFor=\"let style of styles\" [value]=\"style\" i18n>\n {{ getStyleLabel(style) }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n }\n `\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class FontStylesComponent {\n @Input() font: IFont;\n private fontsMap = new Map<string, number[]>();\n private stylesMap = new Map<IFont['style'], string>([\n ['normal', $localize`:@@font_style_normal:Normal`],\n ['italic', $localize`:@@font_style_italic:Italic`],\n ['oblique', $localize`:@@font_style_oblique:Oblique`]\n ]);\n\n constructor(\n private pbEmailObject: PbEmailObjectStoreService,\n @Inject(PB_GOOGLE_FONTS) googleFonts: string[],\n @Inject(PB_FALLBACK_FONTS) public fallbackFonts: string[]\n ) {\n googleFonts.forEach(font => {\n const [family, ...weights] = font.match(/[^\\d:,]{2,}|\\d{3}/g);\n this.fontsMap.set(family.replace('+', ' '), [...new Set(weights.map(Number))]);\n });\n }\n\n get fontWeightList() {\n return this.isGoogleFont() ? this.fontsMap.get(this.font.family) : [100, 400, 500, 700, 900];\n }\n\n get fontFamilyList() {\n return [...this.fontsMap.keys(), ...this.fallbackFonts];\n }\n\n get styles(): IFont['style'][] {\n return [...this.stylesMap.keys()];\n }\n\n markForCheck() {\n this.pbEmailObject.markForCheck();\n }\n\n isGoogleFont() {\n return this.fontsMap.has(this.font.family);\n }\n\n getStyleLabel(style: IFont['style']): string {\n // tslint:disable-next-line:no-non-null-assertion\n return this.stylesMap.get(style)!;\n }\n\n hasProperty(property: string) {\n return this.font.hasOwnProperty(property);\n }\n}\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport { Component, Input, ChangeDetectionStrategy } from '@angular/core';\nimport { IPadding } from '../interfaces/interfaces';\nimport { PbEmailObjectStoreService } from '../services/internals/pb-email-object-store/pb-email-object-store.service';\n\n@Component({\n selector: 'pb-padding',\n template: `\n <div class=\"group four\">\n <mat-form-field appearance=\"outline\">\n <mat-label i18n=\"Padding Settings|Padding Top\">Top</mat-label>\n <input matInput type=\"number\" min=\"0\" step=\"1\" (input)=\"markForCheck()\" [(ngModel)]=\"padding.top\" />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label i18n=\"Padding Settings|Padding Right\">Right</mat-label>\n <input matInput type=\"number\" min=\"0\" step=\"1\" (input)=\"markForCheck()\" [(ngModel)]=\"padding.right\" />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label i18n=\"Padding Settings|Padding Bottom\">Bottom</mat-label>\n <input matInput type=\"number\" min=\"0\" step=\"1\" (input)=\"markForCheck()\" [(ngModel)]=\"padding.bottom\" />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label i18n=\"Padding Settings|Padding Left\">Left</mat-label>\n <input matInput type=\"number\" min=\"0\" step=\"1\" (input)=\"markForCheck()\" [(ngModel)]=\"padding.left\" />\n </mat-form-field>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n }\n `\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PaddingComponent {\n @Input() padding: IPadding;\n\n constructor(private emailObject: PbEmailObjectStoreService) {}\n\n markForCheck() {\n this.emailObject.markForCheck();\n }\n}\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { ILineHeight, TLineHeight } from '../interfaces/interfaces';\nimport { PbEmailObjectStoreService } from '../services/internals/pb-email-object-store/pb-email-object-store.service';\n\n@Component({\n selector: 'pb-line-height',\n template: `\n <div class=\"group\">\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ label }}</mat-label>\n <input\n matInput\n [(ngModel)]=\"lineHeight.value\"\n type=\"number\"\n step=\"1\"\n (input)=\"markForCheck()\"\n [disabled]=\"lineHeight.unit === 'none'\"\n />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label i18n=\"Line Height Settings|Change Line Height Unit\">Unit</mat-label>\n <mat-select placeholder=\"Unit\" [(value)]=\"lineHeight.unit\" (selectionChange)=\"markForCheck()\" disableRipple>\n <mat-option *ngFor=\"let unit of units\" [value]=\"unit\" i18n>\n {{ getUnitLabel(unit) }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n }\n `\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LineHeightComponent {\n @Input() lineHeight: ILineHeight;\n @Input() label = $localize`:@@line_height_label:Line Height`;\n @Input() units: TLineHeight[] = ['%', 'px', 'none'];\n private unitsLabels: Map<string, string> = new Map([\n ['%', $localize`:@@unit_percent:Percent`],\n ['px', $localize`:@@unit_pixels:Pixels`],\n ['none', $localize`:@@unit_none:None`]\n ]);\n\n constructor(private emailObject: PbEmailObjectStoreService) {}\n\n markForCheck() {\n this.emailObject.markForCheck();\n }\n\n getUnitLabel(unit: TLineHeight) {\n return this.unitsLabels.get(unit);\n }\n}\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { IWidthHeight } from '../interfaces/interfaces';\nimport { PbEmailObjectStoreService } from '../services/internals/pb-email-object-store/pb-email-object-store.service';\n\n@Component({\n selector: 'pb-width-height',\n template: `\n <div class=\"group\" [ngClass]=\"{ three: showAutoSlider() }\">\n <mat-form-field appearance=\"outline\">\n <mat-label>{{ getLabel() }}</mat-label>\n <input\n matInput\n [(ngModel)]=\"model.value\"\n [disabled]=\"disableValueField() || disabled\"\n type=\"number\"\n [placeholder]=\"getLabel()\"\n (input)=\"markForCheck()\"\n />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label i18n=\"Size Settings|Size Unit\">Unit</mat-label>\n <mat-select [disabled]=\"model.auto || disabled\" [(value)]=\"model.unit\" (selectionChange)=\"markForCheck()\" disableRipple>\n <mat-option *ngFor=\"let unit of getUnits()\" [value]=\"unit\" i18n>\n {{ getUnitLabel(unit) }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n <mat-slide-toggle\n style=\"margin-top: -20px;\"\n *ngIf=\"showAutoSlider()\"\n [checked]=\"model.auto\"\n (change)=\"toggleChange($event)\"\n [disabled]=\"disabled\"\n i18n=\"Size Settings|Size Auto\"\n >\n Auto\n </mat-slide-toggle>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n }\n `\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class WidthHeightComponent {\n @Input() model: IWidthHeight;\n @Input() label: string;\n @Input() disabled = false;\n private units: Map<string, string> = new Map([\n ['%', $localize`:@@unit_percent:Percent`],\n ['px', $localize`:@@unit_pixels:Pixels`],\n ['contain', $localize`:@@unit_contain:Contain`],\n ['cover', $localize`:@@unit_cover:Cover`]\n ]);\n\n constructor(private emailObject: PbEmailObjectStoreService) {}\n\n markForCheck() {\n this.emailObject.markForCheck();\n }\n\n getLabel() {\n return this.label;\n }\n\n toggleChange({ checked }) {\n this.model.auto = checked;\n this.markForCheck();\n }\n\n getUnits() {\n return this.model.units || ['%', 'px'];\n }\n\n disableValueField() {\n return this.model.auto || ['%', 'px'].indexOf(this.model.unit) === -1;\n }\n\n showAutoSlider() {\n return this.model.hasOwnProperty('auto');\n }\n\n getUnitLabel(unit: string): string {\n return this.units.get(unit);\n }\n}\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { IBorder } from '../interfaces/interfaces';\nimport { PbEmailObjectStoreService } from '../services/internals/pb-email-object-store/pb-email-object-store.service';\n\n@Component({\n selector: 'pb-border',\n template: `\n <div class=\"group\" [class.three]=\"isEven()\">\n <mat-form-field appearance=\"outline\" *ngIf=\"hasOwnProperty('width')\">\n <mat-label i18n=\"Border Settings|Change Border Width\">Width</mat-label>\n <input\n matInput\n [(ngModel)]=\"border.width\"\n type=\"number\"\n min=\"0\"\n step=\"1\"\n (input)=\"markForCheck()\"\n i18n-placeholder\n placeholder=\"Border Settings|Change Border Width\"\n />\n </mat-form-field>\n <mat-form-field appearance=\"outline\" *ngIf=\"hasOwnProperty('radius')\">\n <mat-label i18n=\"Border Settings|Change Border Radius\">Radius</mat-label>\n <input\n matInput\n [(ngModel)]=\"border.radius\"\n type=\"number\"\n min=\"0\"\n step=\"1\"\n (input)=\"markForCheck()\"\n i18n-placeholder\n placeholder=\"Border Settings|Change Border Radius\"\n />\n </mat-form-field>\n <mat-form-field appearance=\"outline\" *ngIf=\"hasOwnProperty('style')\" style=\"min-width: 90px\">\n <mat-label i18n=\"Border Settings|Change Border Style\">Style</mat-label>\n <mat-select\n placeholder=\"Style\"\n [disabled]=\"!border.width\"\n [(value)]=\"border.style\"\n (selectionChange)=\"markForCheck()\"\n disableRipple\n >\n <mat-option *ngFor=\"let style of styleLabels\" [value]=\"style\">\n {{ getStyleLabel(style) }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <pb-color [options]=\"border\" [disabled]=\"!border.width\" *ngIf=\"hasOwnProperty('color')\" key=\"color\"></pb-color>\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n }\n\n mat-form-field {\n width: 100%;\n }\n `\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BorderComponent {\n @Input() border: IBorder;\n\n constructor(private emailObject: PbEmailObjectStoreService) {}\n\n private _styleLabels = new Map<IBorder['style'], string>([\n ['solid', $localize`:@@border_style_solid:Solid`],\n ['dotted', $localize`:@@border_style_dotted:Dotted`],\n ['dashed', $localize`:@@border_style_dashed:Dashed`],\n ['double', $localize`:@@border_style_double:Double`],\n ['groove', $localize`:@@border_style_groove:Groove`]\n ]);\n\n get styleLabels(): IBorder['style'][] {\n return [...this._styleLabels.keys()];\n }\n\n getStyleLabel(style: IBorder['style']): string {\n // tslint:disable-next-line:no-non-null-assertion\n return this._styleLabels.get(style)!;\n }\n\n markForCheck() {\n this.emailObject.markForCheck();\n }\n\n isEven(): boolean {\n return Object.keys(this.border).length % 2 === 0;\n }\n\n hasOwnProperty(property: string): boolean {\n return this.border.hasOwnProperty(property);\n }\n}\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport { ChangeDetectionStrategy, Component, HostListener, Input, OnInit } from '@angular/core';\nimport { ColorEvent } from 'ngx-color';\nimport { PbEmailObjectStoreService } from '../services/internals/pb-email-object-store/pb-email-object-store.service';\nimport { TBlocksOptions } from '../classes/Elements';\n// import { PbEmailBuilderService } from '../pb-email-builder.service';\n// import { parseColor } from '../utils';\n\n@Component({\n selector: 'pb-color',\n styles: [\n `\n :host {\n display: block;\n position: relative;\n }\n\n mat-form-field {\n width: 100%;\n }\n\n .choose-color {\n display: block;\n height: 100%;\n width: 100%;\n }\n\n .current-color {\n width: 100%;\n height: 48px;\n border-radius: 5px;\n margin: 0.25em 0;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n border: 1px solid rgba(0, 0, 0, 0.12);\n transition: background-color 500ms cubic-bezier(0.445, 0.05, 0.55, 0.95);\n }\n\n .choose-color.transparent .current-color {\n opacity: 0.5;\n pointer-events: none;\n }\n\n color-chrome {\n position: absolute;\n top: calc(100% - 1em);\n right: 0;\n z-index: 9;\n }\n `\n ],\n template: `\n <div class=\"group\" *ngIf=\"showTransparent\">\n <mat-slide-toggle\n [disabled]=\"disabled\"\n [(ngModel)]=\"transparent\"\n (change)=\"makeTransparentColor()\"\n i18n=\"Color settings|Make color transparent\"\n >\n Transparent\n </mat-slide-toggle>\n </div>\n <div class=\"group two\">\n <mat-form-field appearance=\"outline\">\n <mat-label i18n=\"Color settings|Change color\">Color</mat-label>\n <input matInput [disabled]=\"transparent || disabled\" (focus)=\"showColorPicker = false\" [(ngModel)]=\"currentColor\" type=\"text\" />\n </mat-form-field>\n <div class=\"choose-color\" [class.transparent]=\"transparent || disabled\">\n <div class=\"current-color\" (mouseover)=\"showColorPicker = !transparent\" [style.backgroundColor]=\"currentColor\"></div>\n <color-chrome\n [disableAlpha]=\"true\"\n *ngIf=\"showColorPicker\"\n (onChangeComplete)=\"changeColor($event)\"\n [color]=\"currentColor\"\n ></color-chrome>\n </div>\n </div>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ColorComponent implements OnInit {\n @Input() options: TBlocksOptions & { color?: string; backgroundColor?: string };\n @Input() showTransparent: boolean;\n @Input() disabled = false;\n @Input() key: 'backgroundColor' | 'color' = 'backgroundColor';\n\n transparent = false;\n showColorPicker = false;\n\n private oldValue: string;\n\n constructor(private emailObject: PbEmailObjectStoreService) {}\n\n get currentColorModel() {\n return this.options[this.key];\n }\n\n set currentColorModel(hex: string) {\n this.options[this.key] = hex;\n }\n\n get currentColor() {\n return this.transparent ? this.oldValue : this.currentColorModel;\n }\n\n set currentColor(hex: string) {\n this.currentColorModel = hex;\n }\n\n @HostListener('mouseleave') onHostMouseLeave() {\n this.showColorPicker = false;\n }\n\n changeColor(event: ColorEvent) {\n this.currentColor = event.color.hex;\n this.emailObject.markForCheck();\n }\n\n makeTransparentColor() {\n this.showColorPicker = false;\n if (this.transparent) {\n this.oldValue = this.currentColorModel;\n this.currentColor = 'transparent';\n } else {\n this.currentColor = this.oldValue;\n }\n this.emailObject.markForCheck();\n }\n\n ngOnInit() {\n if (this.currentColor === 'transparent') {\n this.transparent = true;\n this.oldValue = '#ffffff';\n }\n // this.changeContrastColor();\n }\n}\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { ILink, TLinkTarget } from '../interfaces/interfaces';\nimport { PbEmailObjectStoreService } from '../services/internals/pb-email-object-store/pb-email-object-store.service';\n\n@Component({\n selector: 'pb-link',\n template: `\n <div class=\"group f-large\">\n <mat-form-field appearance=\"outline\">\n <mat-label i18n=\"Link Settings|Link\">Link</mat-label>\n <input matInput [(ngModel)]=\"link.href\" type=\"url\" placeholder=\"Link\" (blur)=\"markForCheck()\" />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label i18n=\"Link Settings|Target\">Target</mat-label>\n <mat-select\n placeholder=\"Target\"\n i18n-placeholder=\"Link Settings|Target\"\n [(value)]=\"link.target\"\n disableRipple\n (selectionChange)=\"markForCheck()\"\n >\n <mat-option *ngFor=\"let target of getTargets()\" [value]=\"target\">\n {{ getTargetLabel(target) }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n }\n `\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class LinkComponent {\n @Input() link: ILink;\n\n private targetLabels = new Map([\n ['_blank', $localize`:@@link_target_blank:Blank`],\n ['_self', $localize`:@@link_target_self:Self`],\n ['_parent', $localize`:@@link_target_parent:Parent`],\n ['_top', $localize`:@@link_target_top:Top`]\n ]);\n\n constructor(private emailObject: PbEmailObjectStoreService) {}\n\n markForCheck() {\n this.emailObject.markForCheck();\n }\n\n getTargets(): TLinkTarget[] {\n return ['_blank', '_self', '_parent', '_top'];\n }\n\n getTargetLabel(target: string) {\n return this.targetLabels.get(target);\n }\n}\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { TAlign, TVerticalAlign } from '../interfaces/interfaces';\nimport { PbEmailObjectStoreService } from '../services/internals/pb-email-object-store/pb-email-object-store.service';\n\n@Component({\n selector: 'pb-align',\n template: `\n <mat-form-field appearance=\"outline\">\n <mat-label [ngSwitch]=\"mode\">\n <ng-container *ngSwitchCase=\"'vertical'\" i18n=\"Align Settings|Vertical Align\">Vertical Align</ng-container>\n <ng-container *ngSwitchDefault i18n=\"Align Settings|Align\">Align</ng-container>\n </mat-label>\n <mat-select [(ngModel)]=\"currentModel\" disableRipple [disabled]=\"disabled\">\n <mat-option *ngFor=\"let position of getPositions()\" [value]=\"position\">\n {{ getLabel(position) }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n }\n\n mat-form-field {\n width: 100%;\n }\n `\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AlignComponent {\n @Input() model: { align?: TAlign; verticalAlign?: TVerticalAlign };\n @Input() mode: 'vertical' | 'horizontal' = 'horizontal';\n @Input() disabled: boolean;\n\n private labels = new Map<TAlign | TVerticalAlign, string>([\n ['left', $localize`:@@horizontal_align_left:Left`],\n ['center', $localize`:@@horizontal_align_center:Center`],\n ['right', $localize`:@@horizontal_align_right:Right`],\n ['top', $localize`:@@vertical_align_top:Top`],\n ['middle', $localize`:@@vertical_align_middle:Middle`],\n ['bottom', $localize`:@@vertical_align_bottom:Bottom`]\n ]);\n\n constructor(private emailObject: PbEmailObjectStoreService) {}\n\n get currentModel() {\n return this.model.align || this.model.verticalAlign;\n }\n\n set currentModel(value: TAlign | TVerticalAlign) {\n if (this.model.align) {\n this.model.align = value as TAlign;\n } else {\n this.model.verticalAlign = value as TVerticalAlign;\n }\n this.emailObject.markForCheck();\n }\n\n getLabel(key: TAlign | TVerticalAlign): string {\n return this.labels.get(key);\n }\n\n getPositions(): TAlign[] | TVerticalAlign[] {\n if (this.mode === 'vertical') {\n return ['top', 'middle', 'bottom'];\n }\n return ['left', 'center', 'right'];\n }\n}\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { TDirection } from '../interfaces/interfaces';\nimport { PbEmailObjectStoreService } from '../services/internals/pb-email-object-store/pb-email-object-store.service';\n\n@Component({\n selector: 'pb-direction',\n template: `\n <mat-form-field appearance=\"outline\">\n <mat-label i18n=\"settings|Direction\">Direction</mat-label>\n <mat-select\n i18n-placeholder=\"settings|Direction\"\n placeholder=\"Direction\"\n [(value)]=\"model.direction\"\n (selectionChange)=\"markForCheck()\"\n disableRipple\n >\n <mat-option *ngFor=\"let dir of getDirections()\" [value]=\"dir\">\n {{ getDirectionLabel(dir) }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n }\n\n mat-form-field {\n width: 100%;\n }\n `\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class DirectionComponent {\n @Input() model: {\n direction: TDirection;\n };\n\n private dirLabels: Map<string, string> = new Map([\n ['ltr', $localize`:@@direction_ltr:Left to right`],\n ['rtl', $localize`:@@direction_rtl:Right to left`]\n ]);\n\n constructor(private emailObject: PbEmailObjectStoreService) {}\n\n markForCheck() {\n this.emailObject.markForCheck();\n }\n\n getDirections(): TDirection[] {\n return ['ltr', 'rtl'];\n }\n\n getDirectionLabel(dir: TDirection): string {\n return this.dirLabels.get(dir);\n }\n}\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport { ChangeDetectionStrategy, Component, Input } from '@angular/core';\nimport { IBackground, TBackgroundRepeat } from '../interfaces/interfaces';\n\n@Component({\n selector: 'pb-back-repeat',\n template: `\n <mat-form-field appearance=\"outline\">\n <mat-label i18n=\"settings|Background Repeat\">Repeat</mat-label>\n <mat-select [(value)]=\"model.repeat\" [disabled]=\"disabled\" disableRipple>\n <mat-option *ngFor=\"let repeat of getRepeats()\" [value]=\"repeat\">\n {{ getRepeatLabel(repeat) }}\n </mat-option>\n </mat-select>\n </mat-form-field>\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n }\n\n mat-form-field {\n width: 100%;\n }\n `\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BackRepatComponent {\n @Input() model: IBackground;\n @Input() disabled = false;\n\n private repeatLabels = new Map([\n ['no-repeat', $localize`:@@no_repeat:No`],\n ['repeat', $localize`:@@repeat:Repeat`],\n ['repeat-x', $localize`:@@repeat_x:X`],\n ['repeat-y', $localize`:@@repeat_y:Y`],\n ['round', $localize`:@@repeat_round:Round`],\n ['space', $localize`:@@repeat_space:Space`]\n ]);\n\n getRepeats(): TBackgroundRepeat[] {\n return ['no-repeat', 'repeat', 'repeat-x', 'repeat-y'];\n }\n\n getRepeatLabel(repeat: TBackgroundRepeat): string {\n return this.repeatLabels.get(repeat);\n }\n}\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport { Component, OnInit, Input, ChangeDetectionStrategy, OnDestroy } from '@angular/core';\nimport { MatButtonToggleChange } from '@angular/material/button-toggle';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\nimport { take } from 'rxjs/operators';\n\nimport { PbUserMiddlewaresService } from '../services/user-middleware-service/pb-middlewares.service';\n\nexport type TPreviewDevice = 'desktop' | 'smartphone' | 'tablet';\n\nconst devicesMap = new Map([\n ['desktop', '1 1 100%'],\n ['smartphone', '1 1 360px'],\n ['tablet', '1 1 768px']\n]);\n\n@Component({\n selector: 'pb-preview-template',\n template: `\n <iframe [src]=\"templateSrc\" [fxFlex]=\"getFlexWidth()\"></iframe>\n <mat-button-toggle-group value=\"desktop\" (change)=\"changeDevice($event)\" vertical>\n <mat-button-toggle value=\"desktop\" matTooltip=\"Desktop / 100%\" matTooltipPosition=\"left\">\n <mat-icon>desktop_windows</mat-icon>\n </mat-button-toggle>\n <mat-button-toggle value=\"tablet\" matTooltip=\"Tablet / 768px\" matTooltipPosition=\"left\">\n <mat-icon>tablet</mat-icon>\n </mat-button-toggle>\n <mat-button-toggle value=\"smartphone\" matTooltip=\"Smartphone / 360px\" matTooltipPosition=\"left\">\n <mat-icon>smartphone</mat-icon>\n </mat-button-toggle>\n </mat-button-toggle-group>\n `,\n styles: [\n `\n iframe {\n border: 0;\n will-change: width;\n transition: all 500ms ease-in-out;\n }\n\n /* iframe a[href] {\n pointer-events: none;\n } */\n\n /* iframe.active {\n opacity: 1;\n } */\n\n mat-button-toggle-group {\n position: absolute;\n right: 0;\n background: white;\n }\n `\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class PreviewTemplateComponent implements OnInit, OnDestroy {\n @Input() template: string;\n private src: string;\n private device: TPreviewDevice = 'desktop';\n templateSrc: SafeResourceUrl;\n\n constructor(private middlewares: PbUserMiddlewaresService, private sanitizer: DomSanitizer) {}\n\n changeDevice(button: MatButtonToggleChange) {\n return this.middlewares\n .togglePreviewDevice(button)\n .pipe(take(1))\n .subscribe(device => {\n this.device = device;\n });\n }\n\n getFlexWidth() {\n return devicesMap.get(this.device);\n }\n\n ngOnInit() {\n this.src = URL.createObjectURL(new Blob([this.template], { type: 'text/html' }));\n this.templateSrc = this.sanitizer.bypassSecurityTrustResourceUrl(this.src);\n }\n\n ngOnDestroy() {\n if (this.src) {\n URL.revokeObjectURL(this.src);\n }\n }\n}\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport {\n Component,\n Input,\n DoCheck,\n ChangeDetectionStrategy,\n HostListener,\n HostBinding,\n OnDestroy,\n OnInit,\n ChangeDetectorRef\n} from '@angular/core';\nimport { exhaustMap, take, map, filter, takeUntil } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\nimport { TBlocks } from '../../classes/Elements';\nimport { PbUserInterfaceService } from '../../services/internals/user-interfaces/user-interface.service';\nimport { PbEmailObjectStoreService } from '../../services/internals/pb-email-object-store/pb-email-object-store.service';\nimport { PbUserMiddlewaresService } from '../../services/user-middleware-service/pb-middlewares.service';\n\n@Component({\n selector: 'pb-block',\n templateUrl: './block.component.html',\n styleUrls: ['./block.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class BlockComponent implements DoCheck, OnDestroy, OnInit {\n @Input() block: TBlocks;\n @Input() column: TBlocks[];\n @Input() index: number;\n\n public isActive = false;\n private readonly componentIsDestroyed$ = new Subject();\n\n @HostListener('click', ['$event']) onHostClick(event: MouseEvent) {\n event.stopImmediatePropagation();\n this.editBlock();\n }\n\n @HostBinding('class.active') get isBlockActive() {\n return this.isActive;\n }\n\n constructor(\n private pbMiddlewaresService: PbUserMiddlewaresService,\n private userInterfaceService: PbUserInterfaceService,\n private emailObjectStore: PbEmailObjectStoreService,\n private chRef: ChangeDetectorRef\n ) {}\n\n removeBlock() {\n this.pbMiddlewaresService\n .removeBlock(this.index, this.column, this.block)\n .pipe(\n exhaustMap(() => this.userInterfaceService.confirmDialog$()),\n filter(removeAllowed => removeAllowed),\n take(1)\n )\n .subscribe(() => {\n this.emailObjectStore.removeBlock(this.index, this.column);\n });\n }\n\n duplicateBlock() {\n this.pbMiddlewaresService\n .duplicateBlock(this.index, this.column, this.block)\n .pipe(\n map(data => this.emailObjectStore.duplicateBlock(data.index, data.column, data.block)),\n take(1)\n )\n .subscribe(() => {\n // this.chRef.markForCheck();\n });\n }\n\n editBlock() {\n this.pbMiddlewaresService\n .editBlock(this.block)\n .pipe(take(1))\n .subscribe(block => {\n this.userInterfaceService.editBlock(block);\n });\n }\n\n ngOnInit() {\n this.userInterfaceService.currentEditingBlock$\n .pipe(\n map(currentEditingBlock => currentEditingBlock === this.block),\n takeUntil(this.componentIsDestroyed$)\n )\n .subscribe(isActive => {\n this.isActive = isActive;\n });\n }\n\n ngDoCheck() {\n if (this.isActive) {\n this.chRef.markForCheck();\n }\n }\n\n ngOnDestroy() {\n this.componentIsDestroyed$.next('');\n this.componentIsDestroyed$.complete();\n }\n}\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport { ChangeDetectionStrategy, Component, Input, OnInit } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nimport { PbUserImageUploaderService } from '../services/user-image-uploader-service/user-image-uploader.service';\nimport { ImageBlock } from '../classes/Elements';\nimport { PbEmailObjectStoreService } from '../services/internals/pb-email-object-store/pb-email-object-store.service';\nimport { IBackground } from '../interfaces/interfaces';\n\n@Component({\n selector: 'pb-image-upload',\n styles: [\n `\n :host {\n display: block;\n }\n\n .chose-image {\n width: 100%;\n max-height: 60px;\n overflow: hidden;\n border-radius: 3px;\n line-height: 0;\n }\n\n .chose-image img {\n width: 100%;\n height: 60px;\n object-fit: cover;\n object-position: center;\n }\n\n .size {\n font-size: 80%;\n color: #ccc;\n }\n\n mat-form-field {\n margin-top: 0.5rem;\n }\n `\n ],\n template: `\n <div fxLayout fxLayoutAlign=\"space-between center\">\n <div class=\"image-info\" [fxFlex]=\"source ? '30%' : '60%'\" fxLayout fxLayoutGap=\"0.5em\" fxLayoutAlign=\"center center\">\n <div *ngIf=\"source\" class=\"chose-image\">\n <img [src]=\"source\" alt=\"image source\" />\n </div>\n <span *ngIf=\"!source\" style=\"width: 100%;\" i18n=\"Upload Image Settings|Upload an image\"> Upload an image </span>\n </div>\n <button\n type=\"button\"\n (click)=\"browse()\"\n [disabled]=\"browsing | async\"\n color=\"primary\"\n mat-stroked-button\n i18n=\"Upload Image Settings|Browse\"\n >\n Browse\n </button>\n </div>\n <mat-form-field appearance=\"outline\" style=\"width: 100%\">\n <mat-label i18n=\"Upload Image Settings|Image Source\">Image Source</mat-label>\n <input matInput [(ngModel)]=\"source\" type=\"url\" (input)=\"markForCheck()\" />\n </mat-form-field>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ImageUploadComponent implements OnInit {\n @Input() block: ImageBlock | IBackground;\n @Input() key = 'src';\n browsing = new Subject();\n\n constructor(private imageUpload: PbUserImageUploaderService, private emailObject: PbEmailObjectStoreService) {}\n\n get source() {\n return this.block[this.key];\n }\n\n set source(value: string) {\n this.block[this.key] = value;\n }\n\n markForCheck() {\n this.emailObject.markForCheck();\n }\n\n async browse() {\n this.browsing.next(true);\n try {\n const path = await this.imageUpload.browse$().toPromise();\n if (path) {\n this.source = path;\n this.emailObject.markForCheck();\n }\n } finally {\n this.browsing.next(false);\n }\n }\n\n ngOnInit() {\n this.source = (<ImageBlock>this.block).src || (<IBackground>this.block).url;\n }\n}\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport { Component, ViewEncapsulation, ChangeDetectionStrategy, Inject } from '@angular/core';\nimport { MatSelectChange } from '@angular/material/select';\n\nimport { SocialBlock, TBlocksOptions } from '../../classes/Elements';\nimport { ISocialNetwork } from '../../interfaces/interfaces';\nimport { getAssetByPath } from '../../utils';\nimport { PbUserInterfaceService } from '../../services/internals/user-interfaces/user-interface.service';\nimport { PB_SOCIAL_NETWORKS } from '../../tokens/tokens';\nimport { PbEmailObjectStoreService } from '../../services/internals/pb-email-object-store/pb-email-object-store.service';\n\n@Component({\n selector: 'pb-block-settings',\n templateUrl: './block-settings.component.html',\n styleUrls: ['./block-settings.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class BlockSettingsComponent {\n block$ = this.internalService.currentEditingBlock$;\n\n constructor(\n private internalService: PbUserInterfaceService,\n private emailObject: PbEmailObjectStoreService,\n @Inject(PB_SOCIAL_NETWORKS) private networks: string[]\n ) {}\n\n hasProperty(options: TBlocksOptions, property: string) {\n return options.hasOwnProperty(property);\n }\n\n markForCheck() {\n this.emailObject.markForCheck();\n }\n\n socialNetworks(block: SocialBlock) {\n return this.networks.filter(link => !block.networks.find(({ name }) => name === link)).sort();\n }\n\n addSocialNetwork({ value, source }: MatSelectChange, block: SocialBlock) {\n block.networks.push({ name: value, href: '', label: '' });\n source.value = '';\n this.markForCheck();\n }\n\n removeSocialNetwork(network: ISocialNetwork, block: SocialBlock) {\n block.networks = block.networks.filter(n => n !== network);\n this.markForCheck();\n }\n\n getSocialIcon(network: string) {\n return getAssetByPath(`${network}.png`);\n }\n}\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport { Component, ViewEncapsulation, ChangeDetectionStrategy } from '@angular/core';\nimport { PbUserInterfaceService } from '../../services/internals/user-interfaces/user-interface.service';\nimport { PbEmailObjectStoreService } from '../../services/internals/pb-email-object-store/pb-email-object-store.service';\n\n@Component({\n selector: 'pb-structure-settings',\n templateUrl: './structure-settings.component.html',\n styleUrls: ['./structure-settings.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class StructureSettingsComponent {\n currentStructure$ = this.pbInternalService.currentEditingStructure$;\n\n constructor(private pbInternalService: PbUserInterfaceService, private emailObject: PbEmailObjectStoreService) {}\n\n markForCheck() {\n this.emailObject.markForCheck();\n }\n}\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport { Component, ViewEncapsulation, ChangeDetectionStrategy } from '@angular/core';\nimport { PbEmailObjectStoreService } from '../../services/internals/pb-email-object-store/pb-email-object-store.service';\n\n@Component({\n selector: 'pb-general-settings',\n templateUrl: './general-settings.component.html',\n styleUrls: ['./general-settings.component.css'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n})\nexport class GeneralSettingsComponent {\n generalOptions$ = this.pbEmailObject.generalEmailOptionsAsObservable$;\n\n constructor(private pbEmailObject: PbEmailObjectStoreService) {}\n}\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport { Component, Input, ChangeDetectionStrategy } from '@angular/core';\nimport { IMargin } from '../interfaces/interfaces';\nimport { PbEmailObjectStoreService } from '../services/internals/pb-email-object-store/pb-email-object-store.service';\n\n@Component({\n selector: 'pb-margin',\n template: `\n <div class=\"group\">\n <mat-form-field appearance=\"outline\">\n <mat-label i18n=\"Margin settings|Margin Top\">Margin Top</mat-label>\n <input matInput type=\"number\" min=\"0\" step=\"1\" [(ngModel)]=\"margin.top\" (input)=\"markForCheck()\" />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label i18n=\"Margin settings|Margin Bottom\">Margin Bottom</mat-label>\n <input matInput type=\"number\" min=\"0\" step=\"1\" [(ngModel)]=\"margin.bottom\" (input)=\"markForCheck()\" />\n </mat-form-field>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n }\n `\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MarginComponent {\n @Input() margin: IMargin;\n\n constructor(private emailObject: PbEmailObjectStoreService) {}\n\n markForCheck() {\n this.emailObject.markForCheck();\n }\n}\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport { Component, Input, ChangeDetectionStrategy } from '@angular/core';\nimport { PbEmailObjectStoreService } from '../services/internals/pb-email-object-store/pb-email-object-store.service';\n\n@Component({\n selector: 'pb-gaps',\n template: `\n <div class=\"group\">\n <mat-form-field appearance=\"outline\">\n <mat-label i18n=\"Gaps settings|Vertical Gaps\">Vertical Gaps</mat-label>\n <input matInput type=\"number\" min=\"0\" step=\"1\" [(ngModel)]=\"gaps[0]\" (input)=\"markForCheck()\" />\n </mat-form-field>\n <mat-form-field appearance=\"outline\">\n <mat-label i18n=\"Gaps settings|Horizontal Gaps\">Horizontal Gaps</mat-label>\n <input matInput type=\"number\" min=\"0\" step=\"1\" [(ngModel)]=\"gaps[1]\" (input)=\"markForCheck()\" />\n </mat-form-field>\n </div>\n `,\n styles: [\n `\n :host {\n display: block;\n width: 100%;\n }\n `\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class GapsComponent {\n @Input() gaps: [number, number];\n constructor(private emailObject: PbEmailObjectStoreService) {}\n\n markForCheck() {\n this.emailObject.markForCheck();\n }\n}\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport { Observable, iif, throwError } from 'rxjs';\n\nimport { PbUserMiddlewaresService, TExportType } from './pb-middlewares.service';\nimport { IUserTemplate } from '../../interfaces/interfaces';\nimport { deferOf } from '../../utils';\n\n/**\n * @ignore\n */\nconst NOT_ALLOWED = 'This feature is disabled in free version.';\n/**\n * @internal\n */\nexport default class FreeUsersMiddleware extends PbUserMiddlewaresService {\n constructor() {\n super();\n // tslint:disable-next-line: no-console\n console.warn('You use the Regular License of Angular Email Builder, some limitations are applied. More info on https://wlocalhost.org');\n }\n\n chooseTemplate(): Observable<{ category: string; template: IUserTemplate }> {\n throw new Error(NOT_ALLOWED);\n }\n\n exportFile(type: TExportType): Observable<TExportType> {\n return iif(() => type === 'json', deferOf(type), throwError(new Error(NOT_ALLOWED)));\n }\n\n importFile(file: File): Observable<File> {\n return iif(() => file.type === 'application/json', deferOf(file), throwError(new Error(NOT_ALLOWED)));\n }\n}\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport { PbUserMiddlewaresService } from './pb-middlewares.service';\n\n/**\n * @internal\n * No limitations are applied for Paid users\n */\nexport default class PaidUsersMiddleware extends PbUserMiddlewaresService {}\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport FreeUsersMiddleware from './FreeUsersMiddleware';\nimport PaidUsersMiddleware from './PaidUsersMiddleware';\n\nexport { FreeUsersMiddleware, PaidUsersMiddleware };\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport { Injectable, Inject } from '@angular/core';\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor, HttpResponse, HttpEventType } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { tap } from 'rxjs/operators';\n\nimport { PB_CONFIG, PB_DEFAULT_CONFIG } from '../tokens/tokens';\nimport { IForRootConf } from '../interfaces/interfaces';\nimport { PbUserInterfaceService } from '../services/internals/user-interfaces/user-interface.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class IpInterceptorInterceptor implements HttpInterceptor {\n constructor(@Inject(PB_CONFIG) private userConfig: IForRootConf, private userInterface: PbUserInterfaceService) {}\n\n intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {\n if (request.url.startsWith('https://ngb-api.wlocalhost.org')) {\n const notify = this.userInterface.notify('Loading, please wait ...', null, null);\n const { xApiKey } = { ...PB_DEFAULT_CONFIG, ...this.userConfig };\n return next\n .handle(\n request.clone({\n setHeaders: {\n 'Content-Type': 'application/json',\n 'X-Api-Key': xApiKey\n },\n responseType: 'json'\n })\n )\n .pipe(\n tap((res: HttpResponse<any>) => {\n if (res.type === HttpEventType.Response) {\n notify.dismiss();\n }\n })\n );\n } else {\n return next.handle(request);\n }\n }\n}\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport { inject, InjectionToken } from '@angular/core';\n\nimport { PB_CONFIG, PB_DEFAULT_CONFIG } from './tokens';\n\n/**\n * @internal\n */\nexport const LIBRARY_IS_PRO = new InjectionToken<boolean>('Library environment', {\n providedIn: 'any',\n factory: () => {\n const { xApiKey } = inject(PB_CONFIG);\n return !(!xApiKey || xApiKey.length < 40 || xApiKey === PB_DEFAULT_CONFIG.xApiKey);\n }\n});\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport { HttpClient } from '@angular/common/http';\nimport { PbUserRestApiService } from './user-rest-api.service';\n\n/**\n * @internal\n * The free User Rest API service for Regular license.\n * No differences between other licenses for now, but might be in the future.\n */\nexport default class FreeUsersRestApi extends PbUserRestApiService {\n constructor(http: HttpClient) {\n super(http);\n }\n}\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport FreeUsersRestApi from './free-users-rest-api.service';\nexport {FreeUsersRestApi};\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport { PbStorageService } from './pb-storage.service';\n\n/**\n * @internal\n */\nexport default class FreeUsersPbStorage extends PbStorageService {}\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport FreeUsersPbStorage from './FreeUsersStorage.class';\nexport {FreeUsersPbStorage};\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\nimport { Inject, ModuleWithProviders, NgModule } from '@angular/core';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { FlexLayoutModule } from '@angular/flex-layout';\nimport { MatBottomSheet, MatBottomSheetModule } from '@angular/material/bottom-sheet';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatButtonToggleModule } from '@angular/material/button-toggle';\nimport { MatDialog, MatDialogModule } from '@angular/material/dialog';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatExpansionModule } from '@angular/material/expansion';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatListModule } from '@angular/material/list';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { MatSelectModule } from '@angular/material/select';\nimport { MatSidenavModule } from '@angular/material/sidenav';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatSliderModule } from '@angular/material/slider';\nimport { MatSnackBarModule } from '@angular/material/snack-bar';\nimport { MatTabsModule } from '@angular/material/tabs';\nimport { MatToolbarModule } from '@angular/material/toolbar';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { ResizableModule } from 'angular-resizable-element';\nimport { FormsModule } from '@angular/forms';\nimport { HTTP_INTERCEPTORS, HttpClient, HttpClientModule } from '@angular/common/http';\nimport { CommonModule } from '@angular/common';\nimport { ScrollingModule } from '@angular/cdk/scrolling';\n\nimport 'quill';\nimport { QUILL_CONFIG_TOKEN, QuillModule } from 'ngx-quill';\nimport { ColorChromeModule } from 'ngx-color/chrome';\n\nimport { IForRootConf } from './interfaces/interfaces';\nimport { PB_CONFIG, PB_TEMPLATES_TEMPORARY_STORAGE } from './tokens/tokens';\nimport { StructureComponent } from './components/structure/structure.component';\nimport { PbEmailBuilderComponent } from './pb-email-builder.component';\nimport { DynamicComponentDirective } from './directives/dynamic-component.directive';\n\nimport { ImageComponent } from './elements/image/image.component';\nimport { TextElementComponent } from './elements/text-element/text-element.component';\nimport { ButtonComponent } from './elements/button/button.component';\nimport { DividerComponent } from './elements/divider/divider.component';\nimport { SpacerComponent } from './elements/spacer/spacer.component';\nimport { SocialComponent } from './elements/social/social.component';\n\nimport { BuilderContainerComponent } from './components/builder-container/builder-container.component';\nimport { FontStylesComponent } from './groups/font-styles';\nimport { PaddingComponent } from './groups/padding';\nimport { LineHeightComponent } from './groups/line-height';\nimport { WidthHeightComponent } from './groups/width-height';\nimport { BorderComponent } from './groups/border';\nimport { ColorComponent } from './groups/color';\nimport { LinkComponent } from './groups/link';\nimport { AlignComponent } from './groups/align';\nimport { DirectionComponent } from './groups/direction';\nimport { BackRepatComponent } from './groups/back-repeat';\nimport { ConfirmDialogComponent } from './components/dialog.component';\nimport { PreviewTemplateComponent } from './components/preview.component';\nimport { PbEmailBuilderService } from './pb-email-builder.service';\nimport { BlockComponent } from './components/block/block.component';\nimport { ImageUploadComponent } from './groups/upload-image';\nimport { BlockSettingsComponent } from './components/block-settings/block-settings.component';\nimport { StructureSettingsComponent } from './components/structure-settings/structure-settings.component';\nimport { GeneralSettingsComponent } from './components/general-settings/general-settings.component';\nimport { MarginComponent } from './groups/margin';\nimport { TemplateListDialogComponent } from './components/template-list-dialog/template-list-dialog.component';\nimport { GapsComponent } from './groups/gaps';\n\nimport { SlugifyPipe } from './pipes/slugify.pipe';\n\nimport { FreeUsersMiddleware, PaidUsersMiddleware } from './services/user-middleware-service';\nimport { FreeUsersImageUploader, PaidUsersImageUploader } from './services/user-image-uploader-service';\n\nimport { PbUserMiddlewaresService } from './services/user-middleware-service/pb-middlewares.service';\nimport { PbUserImageUploaderService } from './services/user-image-uploader-service/user-image-uploader.service';\n\nimport { IpInterceptorInterceptor } from './interceptors/pb-interceptor.interceptor';\nimport { ImportDialogComponent } from './components/import-dialog/import-dialog.component';\nimport { UploadBottomSheetDialogComponent } from './services/user-image-uploader-service/upload-bottom-sheet-dialog/upload-bottom-sheet-dialog.component';\nimport { UploadImageGalleryComponent } from './services/user-image-uploader-service/upload-image-gallery/upload-image-gallery.component';\n\nimport { LIBRARY_IS_PRO } from './tokens/private-tokens';\nimport { PbUserInterfaceService } from './services/internals/user-interfaces/user-interface.service';\nimport { PbEmailObjectStoreService } from './services/internals/pb-email-object-store/pb-email-object-store.service';\nimport { FreeUsersRestApi } from './services/user-rest-api-service';\nimport { FreeUsersPbStorage } from './services/pb-storage';\nimport { PbStorageService } from './services/pb-storage/pb-storage.service';\nimport { PbUserRestApiService } from './services/user-rest-api-service/user-rest-api.service';\n\nimport { PortalModule } from '@angular/cdk/portal';\nimport '@angular/localize/init';\n\n/**\n * @internal\n * @param http\n */\nexport function createCustomRestApiService(http: HttpClient) {\n return new FreeUsersRestApi(http);\n}\n\n/**\n * @internal\n * @param libraryIsProEnv\n */\nexport function createUserMiddlewareService(libraryIsProEnv: boolean) {\n if (!libraryIsProEnv) {\n return new FreeUsersMiddleware();\n } else {\n return new PaidUsersMiddleware();\n }\n}\n\n/**\n * @internal\n * @param templateStorage\n */\nexport function createUsersIpStorage(templateStorage: Storage) {\n return new FreeUsersPbStorage(templateStorage);\n}\n\n/**\n * @internal\n * @param libraryIsProEnv\n * @param matBottomSheet\n * @param matDialog\n * @param userMiddleware\n * @param userRestApi\n */\nexport function createUserUploaderService(\n libraryIsProEnv: boolean,\n matBottomSheet: MatBottomSheet,\n matDialog: MatDialog,\n userMiddleware: PbUserMiddlewaresService,\n userRestApi: PbUserRestApiService\n) {\n if (!libraryIsProEnv) {\n return new FreeUsersImageUploader(matBottomSheet, userMiddleware);\n } else {\n return new PaidUsersImageUploader(matDialog, userMiddleware, userRestApi);\n }\n}\n\n@NgModule({\n imports: [\n CommonModule,\n HttpClientModule,\n QuillModule,\n FlexLayoutModule,\n DragDropModule,\n FormsModule,\n ColorChromeModule,\n MatButtonModule,\n\n MatIconModule,\n MatFormFieldModule,\n MatInputModule,\n MatTabsModule,\n MatSliderModule,\n MatSelectModule,\n MatSlideToggleModule,\n MatButtonToggleModule,\n MatDividerModule,\n MatTooltipModule,\n MatDialogModule,\n MatSnackBarModule,\n MatProgressBarModule,\n MatMenuModule,\n MatSidenavModule,\n MatToolbarModule,\n MatListModule,\n MatBottomSheetModule,\n MatDividerModule,\n MatExpansionModule,\n ResizableModule,\n ScrollingModule,\n PortalModule\n ],\n declarations: [\n PbEmailBuilderComponent,\n StructureComponent,\n BlockComponent,\n DynamicComponentDirective,\n PreviewTemplateComponent,\n\n TextElementComponent,\n ImageComponent,\n ButtonComponent,\n DividerComponent,\n SpacerComponent,\n SocialComponent,\n\n BuilderContainerComponent,\n FontStylesComponent,\n PaddingComponent,\n MarginComponent,\n GapsComponent,\n LineHeightComponent,\n WidthHeightComponent,\n BorderComponent,\n ColorComponent,\n LinkComponent,\n AlignComponent,\n DirectionComponent,\n BackRepatComponent,\n ConfirmDialogComponent,\n ImageUploadComponent,\n BlockSettingsComponent,\n StructureSettingsComponent,\n GeneralSettingsComponent,\n UploadBottomSheetDialogComponent,\n UploadImageGalleryComponent,\n TemplateListDialogComponent,\n SlugifyPipe,\n ImportDialogComponent\n ],\n exports: [PbEmailBuilderComponent, PreviewTemplateComponent, SlugifyPipe],\n entryComponents: [\n TextElementComponent,\n ImageComponent,\n ButtonComponent,\n DividerComponent,\n SpacerComponent,\n SocialComponent,\n ConfirmDialogComponent,\n UploadBottomSheetDialogComponent,\n UploadImageGalleryComponent,\n TemplateListDialogComponent,\n ImportDialogComponent\n ],\n providers: [\n {\n provide: QUILL_CONFIG_TOKEN,\n useValue: {\n bounds: 'pb-builder-container',\n theme: 'bubble',\n format: 'html',\n trackChanges: 'all',\n suppressGlobalRegisterWarning: true\n }\n },\n { provide: HTTP_INTERCEPTORS, useClass: IpInterceptorInterceptor, multi: true },\n // { provide: PB_BLOCK_ELEMENT, useClass: TextBlock, multi: true },\n PbEmailBuilderService,\n PbEmailObjectStoreService,\n PbUserInterfaceService\n ]\n})\nexport class PbEmailBuilderModule {\n constructor(\n pbMiddlewaresService: PbUserMiddlewaresService,\n userImageUploader: PbUserImageUploaderService,\n @Inject(LIBRARY_IS_PRO) libraryIsPro: boolean\n ) {\n if (!libraryIsPro && !(pbMiddlewaresService instanceof FreeUsersMiddleware)) {\n throw new Error('Upgrade to an Extended or Commercial License to use Custom Middlewares.');\n }\n if (!libraryIsPro && !(userImageUploader instanceof FreeUsersImageUploader)) {\n throw new Error('Upgrade to an Extended or Commercial License to use Custom Image Uploader.');\n }\n }\n\n /**\n * @deprecated use PbEmailBuilderModule.withConfig(userConfig) instead\n * @internal\n */\n static forRoot(userConfig: IForRootConf = {}): ModuleWithProviders<PbEmailBuilderModule> {\n return PbEmailBuilderModule.withConfig(userConfig);\n }\n\n /**\n * Import module with configurations\n * @param userConfig Configurations\n */\n static withConfig(userConfig: IForRootConf = {}): ModuleWithProviders<PbEmailBuilderModule> {\n return {\n ngModule: PbEmailBuilderModule,\n providers: [\n PbEmailBuilderService,\n PbEmailObjectStoreService,\n PbUserInterfaceService,\n { provide: PB_CONFIG, useValue: userConfig },\n {\n provide: PbUserMiddlewaresService,\n useFactory: createUserMiddlewareService,\n deps: [LIBRARY_IS_PRO]\n },\n {\n provide: PbStorageService,\n useFactory: createUsersIpStorage,\n deps: [PB_TEMPLATES_TEMPORARY_STORAGE]\n },\n {\n provide: PbUserImageUploaderService,\n useFactory: createUserUploaderService,\n deps: [LIBRARY_IS_PRO, MatBottomSheet, MatDialog, PbUserMiddlewaresService, PbUserRestApiService]\n },\n {\n provide: PbUserRestApiService,\n useFactory: createCustomRestApiService,\n deps: [HttpClient]\n }\n ]\n };\n }\n}\n","/*\n * Copyright (c) 2024 Pobuca.\n * All rights reserved.\n */\n\n/*\n * Public API Surface of pb-email-builder\n */\n\nexport * from './lib/interfaces/interfaces';\nexport * from './lib/tokens/tokens';\n// export * from './lib/providers';\nexport * from './lib/utils';\nexport * from './lib/classes/DefaultEmail';\nexport * from './lib/classes/Elements';\nexport * from './lib/classes/Structure';\n\nexport * from './lib/pb-email-builder.service';\nexport * from './lib/services/user-middleware-service/pb-middlewares.service';\nexport * from './lib/services/user-rest-api-service/user-rest-api.service';\nexport * from './lib/services/pb-storage/pb-storage.service';\nexport { FreeUsersImageUploader } from './lib/services/user-image-uploader-service';\nexport * from './lib/services/user-image-uploader-service/user-image-uploader.service';\n\nexport * from './lib/pb-email-builder.module';\n\nexport * from './lib/pb-email-builder.component';\nexport * from './lib/components/preview.component';\n// export * from './lib/components/template-list-dialog/template-list-dialog.component';\n\nexport * from './lib/pipes/slugify.pipe';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n\nexport {BlockSettingsComponent as ɵbd} from './lib/components/block-settings/block-settings.component';\nexport {BlockComponent as ɵf} from './lib/components/block/block.component';\nexport {BuilderContainerComponent as ɵo} from './lib/components/builder-container/builder-container.component';\nexport {ConfirmDialogComponent as ɵbb} from './lib/components/dialog.component';\nexport {GeneralSettingsComponent as ɵbf} from './lib/components/general-settings/general-settings.component';\nexport {ImportDialogComponent as ɵbj} from './lib/components/import-dialog/import-dialog.component';\nexport {StructureSettingsComponent as ɵbe} from './lib/components/structure-settings/structure-settings.component';\nexport {StructureComponent as ɵe} from './lib/components/structure/structure.component';\nexport {TemplateListDialogComponent as ɵbi} from './lib/components/template-list-dialog/template-list-dialog.component';\nexport {DynamicComponentDirective as ɵg} from './lib/directives/dynamic-component.directive';\nexport {AbstractBlock as ɵi} from './lib/elements/abstract-block';\nexport {ButtonComponent as ɵk} from './lib/elements/button/button.component';\nexport {DividerComponent as ɵl} from './lib/elements/divider/divider.component';\nexport {ImageComponent as ɵj} from './lib/elements/image/image.component';\nexport {SocialComponent as ɵn} from './lib/elements/social/social.component';\nexport {SpacerComponent as ɵm} from './lib/elements/spacer/spacer.component';\nexport {TextElementComponent as ɵh} from './lib/elements/text-element/text-element.component';\nexport {AlignComponent as ɵy} from './lib/groups/align';\nexport {BackRepatComponent as ɵba} from './lib/groups/back-repeat';\nexport {BorderComponent as ɵv} from './lib/groups/border';\nexport {ColorComponent as ɵw} from './lib/groups/color';\nexport {DirectionComponent as ɵz} from './lib/groups/direction';\nexport {FontStylesComponent as ɵp} from './lib/groups/font-styles';\nexport {GapsComponent as ɵs} from './lib/groups/gaps';\nexport {LineHeightComponent as ɵt} from './lib/groups/line-height';\nexport {LinkComponent as ɵx} from './lib/groups/link';\nexport {MarginComponent as ɵr} from './lib/groups/margin';\nexport {PaddingComponent as ɵq} from './lib/groups/padding';\nexport {ImageUploadComponent as ɵbc} from './lib/groups/upload-image';\nexport {WidthHeightComponent as ɵu} from './lib/groups/width-height';\nexport {IpInterceptorInterceptor as ɵbk} from './lib/interceptors/pb-interceptor.interceptor';\nexport {PbEmailObjectStoreService as ɵa} from './lib/services/internals/pb-email-object-store/pb-email-object-store.service';\nexport {PbUserInterfaceService as ɵb} from './lib/services/internals/user-interfaces/user-interface.service';\nexport {FreeUsersPbStorage as ɵd} from './lib/services/pb-storage';\nexport {UploadBottomSheetDialogComponent as ɵbg} from './lib/services/user-image-uploader-service/upload-bottom-sheet-dialog/upload-bottom-sheet-dialog.component';\nexport {UploadImageGalleryComponent as ɵbh} from './lib/services/user-image-uploader-service/upload-image-gallery/upload-image-gallery.component';\nexport {FreeUsersRestApi as ɵc} from './lib/services/user-rest-api-service';\nexport {LIBRARY_IS_PRO as ɵbl} from './lib/tokens/private-tokens';"],"names":["ETemplatesStorage","defer","of","templateObject_1","templateObject_2","templateObject_3","templateObject_4","templateObject_5","templateObject_6","InjectionToken","Injectable","map","shareReplay","HttpClient","Inject","BehaviorSubject","pluck","Subject","withLatestFrom","switchMap","combineLatest","exhaustMap","moveItemInArray","transferArrayItem","take","Component","ChangeDetectionStrategy","MatDialogRef","MAT_DIALOG_DATA","catchError","EMPTY","MatBottomSheetRef","ViewChild","ElementRef","ReplaySubject","distinct","distinctUntilKeyChanged","subscribeOn","animationFrameScheduler","distinctUntilChanged","tap","filter","MatDialog","MatBottomSheet","MatSnackBar","finalize","HttpEventType","HttpResponse","DomSanitizer","takeUntil","ViewEncapsulation","ChangeDetectorRef","Input","HostBinding","HostListener","Pipe","EventEmitter","iif","fromEvent","NG_VALUE_ACCESSOR","forwardRef","Renderer2","DOCUMENT","Output","Directive","CdkPortal","mapTo","debounceTime","ComponentFactoryResolver","ViewContainerRef","throwError","inject","FreeUsersImageUploader","PaidUsersImageUploader","NgModule","CommonModule","HttpClientModule","QuillModule","FlexLayoutModule","DragDropModule","FormsModule","ColorChromeModule","MatButtonModule","MatIconModule","MatFormFieldModule","MatInputModule","MatTabsModule","MatSliderModule","MatSelectModule","MatSlideToggleModule","MatButtonToggleModule","MatDividerModule","MatTooltipModule","MatDialogModule","MatSnackBarModule","MatProgressBarModule","MatMenuModule","MatSidenavModule","MatToolbarModule","MatListModule","MatBottomSheetModule","MatExpansionModule","ResizableModule","ScrollingModule","PortalModule","QUILL_CONFIG_TOKEN","HTTP_INTERCEPTORS"],"mappings":"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"}
|