@groovymedia/easy-email-extensions 4.14.1-2

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.
Files changed (188) hide show
  1. package/lib/AttributePanel/AttributePanel.d.ts +3 -0
  2. package/lib/AttributePanel/components/UI/Help/index.d.ts +7 -0
  3. package/lib/AttributePanel/components/UI/HtmlEditor.d.ts +5 -0
  4. package/lib/AttributePanel/components/adapter/Json.adapter.d.ts +4 -0
  5. package/lib/AttributePanel/components/adapter/color.adapter.d.ts +4 -0
  6. package/lib/AttributePanel/components/adapter/image-height.adapter.d.ts +4 -0
  7. package/lib/AttributePanel/components/adapter/index.d.ts +5 -0
  8. package/lib/AttributePanel/components/adapter/pixel.adapter.d.ts +4 -0
  9. package/lib/AttributePanel/components/adapter/slider.adapter.d.ts +4 -0
  10. package/lib/AttributePanel/components/attributes/Align.d.ts +3 -0
  11. package/lib/AttributePanel/components/attributes/AttributesPanelWrapper/index.d.ts +7 -0
  12. package/lib/AttributePanel/components/attributes/Background.d.ts +1 -0
  13. package/lib/AttributePanel/components/attributes/BackgroundColor.d.ts +3 -0
  14. package/lib/AttributePanel/components/attributes/Border.d.ts +1 -0
  15. package/lib/AttributePanel/components/attributes/BorderColor.d.ts +1 -0
  16. package/lib/AttributePanel/components/attributes/BorderStyle.d.ts +5 -0
  17. package/lib/AttributePanel/components/attributes/BorderWidth.d.ts +1 -0
  18. package/lib/AttributePanel/components/attributes/ClassName.d.ts +1 -0
  19. package/lib/AttributePanel/components/attributes/CollapseWrapper/index.d.ts +6 -0
  20. package/lib/AttributePanel/components/attributes/Color.d.ts +4 -0
  21. package/lib/AttributePanel/components/attributes/Condition.d.ts +1 -0
  22. package/lib/AttributePanel/components/attributes/ContainerBackgroundColor.d.ts +3 -0
  23. package/lib/AttributePanel/components/attributes/Decoration.d.ts +1 -0
  24. package/lib/AttributePanel/components/attributes/Direction.d.ts +1 -0
  25. package/lib/AttributePanel/components/attributes/FontFamily.d.ts +3 -0
  26. package/lib/AttributePanel/components/attributes/FontSize.d.ts +1 -0
  27. package/lib/AttributePanel/components/attributes/FontStyle.d.ts +3 -0
  28. package/lib/AttributePanel/components/attributes/FontWeight.d.ts +3 -0
  29. package/lib/AttributePanel/components/attributes/Height.d.ts +5 -0
  30. package/lib/AttributePanel/components/attributes/Iteration.d.ts +1 -0
  31. package/lib/AttributePanel/components/attributes/LetterSpacing.d.ts +3 -0
  32. package/lib/AttributePanel/components/attributes/LineHeight.d.ts +3 -0
  33. package/lib/AttributePanel/components/attributes/Link.d.ts +1 -0
  34. package/lib/AttributePanel/components/attributes/Margin.d.ts +1 -0
  35. package/lib/AttributePanel/components/attributes/MergeTags.d.ts +6 -0
  36. package/lib/AttributePanel/components/attributes/NavbarLinkPadding.d.ts +3 -0
  37. package/lib/AttributePanel/components/attributes/Padding.d.ts +7 -0
  38. package/lib/AttributePanel/components/attributes/TextAlign.d.ts +3 -0
  39. package/lib/AttributePanel/components/attributes/TextDecoration.d.ts +3 -0
  40. package/lib/AttributePanel/components/attributes/TextTransform.d.ts +3 -0
  41. package/lib/AttributePanel/components/attributes/VerticalAlign.d.ts +3 -0
  42. package/lib/AttributePanel/components/attributes/Width.d.ts +7 -0
  43. package/lib/AttributePanel/components/attributes/index.d.ts +32 -0
  44. package/lib/AttributePanel/components/blocks/Accordion/index.d.ts +1 -0
  45. package/lib/AttributePanel/components/blocks/AccordionElement/index.d.ts +1 -0
  46. package/lib/AttributePanel/components/blocks/AccordionText/index.d.ts +1 -0
  47. package/lib/AttributePanel/components/blocks/AccordionTitle/index.d.ts +1 -0
  48. package/lib/AttributePanel/components/blocks/Button/index.d.ts +1 -0
  49. package/lib/AttributePanel/components/blocks/Carousel/index.d.ts +1 -0
  50. package/lib/AttributePanel/components/blocks/Column/index.d.ts +1 -0
  51. package/lib/AttributePanel/components/blocks/Divider/index.d.ts +1 -0
  52. package/lib/AttributePanel/components/blocks/Group/index.d.ts +1 -0
  53. package/lib/AttributePanel/components/blocks/Hero/index.d.ts +1 -0
  54. package/lib/AttributePanel/components/blocks/Image/index.d.ts +1 -0
  55. package/lib/AttributePanel/components/blocks/Navbar/index.d.ts +1 -0
  56. package/lib/AttributePanel/components/blocks/Page/index.d.ts +6 -0
  57. package/lib/AttributePanel/components/blocks/Raw/index.d.ts +1 -0
  58. package/lib/AttributePanel/components/blocks/Section/index.d.ts +1 -0
  59. package/lib/AttributePanel/components/blocks/Social/index.d.ts +1 -0
  60. package/lib/AttributePanel/components/blocks/Spacer/index.d.ts +1 -0
  61. package/lib/AttributePanel/components/blocks/Table/index.d.ts +1 -0
  62. package/lib/AttributePanel/components/blocks/Text/index.d.ts +1 -0
  63. package/lib/AttributePanel/components/blocks/Wrapper/index.d.ts +1 -0
  64. package/lib/AttributePanel/components/blocks/index.d.ts +56 -0
  65. package/lib/AttributePanel/components/provider/PresetColorsProvider/index.d.ts +8 -0
  66. package/lib/AttributePanel/components/provider/SelectionRangeProvider/index.d.ts +8 -0
  67. package/lib/AttributePanel/components/provider/index.d.ts +2 -0
  68. package/lib/AttributePanel/hooks/useSelectionRange.d.ts +7 -0
  69. package/lib/AttributePanel/index.d.ts +5 -0
  70. package/lib/AttributePanel/utils/BlockAttributeConfigurationManager.d.ts +11 -0
  71. package/lib/AttributePanel/utils/InputNumberAdapter.d.ts +2 -0
  72. package/lib/AttributePanel/utils/PromiseEach.d.ts +1 -0
  73. package/lib/AttributePanel/utils/Uploader.d.ts +35 -0
  74. package/lib/AttributePanel/utils/awaitForElement.d.ts +4 -0
  75. package/lib/AttributePanel/utils/classnames.d.ts +1 -0
  76. package/lib/AttributePanel/utils/getImg.d.ts +8 -0
  77. package/lib/AttributePanel/utils/onDrag.d.ts +10 -0
  78. package/lib/AttributePanel/utils/previewLoadImage.d.ts +1 -0
  79. package/lib/BlockLayer/components/BlockTree/index.d.ts +51 -0
  80. package/lib/BlockLayer/components/BlockTree/transparentImage.d.ts +1 -0
  81. package/lib/BlockLayer/components/ContextMenu/index.d.ts +14 -0
  82. package/lib/BlockLayer/components/EyeIcon/index.d.ts +7 -0
  83. package/lib/BlockLayer/hooks/useAvatarWrapperDrop.d.ts +24 -0
  84. package/lib/BlockLayer/index.d.ts +13 -0
  85. package/lib/ConfigurationPanel/index.d.ts +9 -0
  86. package/lib/EditPanel/Blocks/index.d.ts +1 -0
  87. package/lib/EditPanel/ConfigurationDrawer/index.d.ts +7 -0
  88. package/lib/EditPanel/index.d.ts +5 -0
  89. package/lib/InteractivePrompt/components/FocusTooltip.d.ts +1 -0
  90. package/lib/InteractivePrompt/components/HoverTooltip.d.ts +1 -0
  91. package/lib/InteractivePrompt/components/Toolbar.d.ts +1 -0
  92. package/lib/InteractivePrompt/index.d.ts +1 -0
  93. package/lib/InteractivePrompt/utils/awaitForElement.d.ts +4 -0
  94. package/lib/MergeTagBadgePrompt/index.d.ts +1 -0
  95. package/lib/ShortcutToolbar/ShortcutToolbar.d.ts +1 -0
  96. package/lib/ShortcutToolbar/components/BlockMaskWrapper/index.d.ts +7 -0
  97. package/lib/ShortcutToolbar/components/BlocksPanel/index.d.ts +4 -0
  98. package/lib/ShortcutToolbar/components/BlocksPanel/presetTemplate/AccordionBlockItem/index.d.ts +1 -0
  99. package/lib/ShortcutToolbar/components/BlocksPanel/presetTemplate/ButtonBlockItem/index.d.ts +1 -0
  100. package/lib/ShortcutToolbar/components/BlocksPanel/presetTemplate/CarouselBlockItem/index.d.ts +1 -0
  101. package/lib/ShortcutToolbar/components/BlocksPanel/presetTemplate/ColumnBlockItem/index.d.ts +1 -0
  102. package/lib/ShortcutToolbar/components/BlocksPanel/presetTemplate/DividerBlockItem/index.d.ts +1 -0
  103. package/lib/ShortcutToolbar/components/BlocksPanel/presetTemplate/GroupBlockItem/index.d.ts +1 -0
  104. package/lib/ShortcutToolbar/components/BlocksPanel/presetTemplate/HeroBlockItem/index.d.ts +1 -0
  105. package/lib/ShortcutToolbar/components/BlocksPanel/presetTemplate/ImageBlockItem/index.d.ts +1 -0
  106. package/lib/ShortcutToolbar/components/BlocksPanel/presetTemplate/NavbarBlockItem/index.d.ts +1 -0
  107. package/lib/ShortcutToolbar/components/BlocksPanel/presetTemplate/RawBlockItem/index.d.ts +1 -0
  108. package/lib/ShortcutToolbar/components/BlocksPanel/presetTemplate/SectionBlockItem/index.d.ts +1 -0
  109. package/lib/ShortcutToolbar/components/BlocksPanel/presetTemplate/SocialBlockItem/index.d.ts +1 -0
  110. package/lib/ShortcutToolbar/components/BlocksPanel/presetTemplate/SpacerBlockItem/index.d.ts +1 -0
  111. package/lib/ShortcutToolbar/components/BlocksPanel/presetTemplate/TextBlockItem/index.d.ts +1 -0
  112. package/lib/ShortcutToolbar/components/BlocksPanel/presetTemplate/WrapperBlockItem/index.d.ts +1 -0
  113. package/lib/ShortcutToolbar/components/BlocksPanel/presetTemplate/index.d.ts +18 -0
  114. package/lib/ShortcutToolbar/components/DragIcon/index.d.ts +7 -0
  115. package/lib/ShortcutToolbar/components/Picture/index.d.ts +7 -0
  116. package/lib/ShortcutToolbar/index.d.ts +4 -0
  117. package/lib/ShortcutToolbar/utils/BlockMarketManager.d.ts +32 -0
  118. package/lib/ShortcutToolbar/utils/getImg.d.ts +68 -0
  119. package/lib/SimpleLayout/SimpleLayout.d.ts +9 -0
  120. package/lib/SimpleLayout/index.d.ts +1 -0
  121. package/lib/SourceCodePanel/index.d.ts +4 -0
  122. package/lib/StandardLayout/StandardLayout.d.ts +3 -0
  123. package/lib/StandardLayout/index.d.ts +1 -0
  124. package/lib/components/AddToCollection/index.d.ts +5 -0
  125. package/lib/components/Form/AddFont.d.ts +1 -0
  126. package/lib/components/Form/AutoComplete.d.ts +12 -0
  127. package/lib/components/Form/CheckBoxGroup.d.ts +14 -0
  128. package/lib/components/Form/CodemirrorEditor/index.d.ts +8 -0
  129. package/lib/components/Form/ColorPicker/ColorPickerContent.d.ts +5 -0
  130. package/lib/components/Form/ColorPicker/index.d.ts +11 -0
  131. package/lib/components/Form/ColorPicker2.d.ts +10 -0
  132. package/lib/components/Form/ColorPickerField/index.d.ts +5 -0
  133. package/lib/components/Form/EditGridTab.d.ts +10 -0
  134. package/lib/components/Form/EditTab.d.ts +10 -0
  135. package/lib/components/Form/ImageUploader/index.d.ts +13 -0
  136. package/lib/components/Form/InlineTextField/index.d.ts +7 -0
  137. package/lib/components/Form/Input.d.ts +7 -0
  138. package/lib/components/Form/InputWithUnit.d.ts +11 -0
  139. package/lib/components/Form/RadioGroup.d.ts +13 -0
  140. package/lib/components/Form/RichTextField/index.d.ts +2 -0
  141. package/lib/components/Form/RichTextToolBar/RichTextToolBar.d.ts +3 -0
  142. package/lib/components/Form/RichTextToolBar/components/BasicTools.d.ts +1 -0
  143. package/lib/components/Form/RichTextToolBar/components/Bold/index.d.ts +6 -0
  144. package/lib/components/Form/RichTextToolBar/components/FontFamily/index.d.ts +5 -0
  145. package/lib/components/Form/RichTextToolBar/components/FontSize/index.d.ts +5 -0
  146. package/lib/components/Form/RichTextToolBar/components/Heading/index.d.ts +3 -0
  147. package/lib/components/Form/RichTextToolBar/components/Italic/index.d.ts +6 -0
  148. package/lib/components/Form/RichTextToolBar/components/Link/index.d.ts +12 -0
  149. package/lib/components/Form/RichTextToolBar/components/MergeTags/index.d.ts +5 -0
  150. package/lib/components/Form/RichTextToolBar/components/StrikeThrough/index.d.ts +6 -0
  151. package/lib/components/Form/RichTextToolBar/components/ToolItem/index.d.ts +9 -0
  152. package/lib/components/Form/RichTextToolBar/components/Tools/IconBgColor/index.d.ts +5 -0
  153. package/lib/components/Form/RichTextToolBar/components/Tools/IconFontColor/index.d.ts +5 -0
  154. package/lib/components/Form/RichTextToolBar/components/Tools/Tools.d.ts +4 -0
  155. package/lib/components/Form/RichTextToolBar/components/Tools/index.d.ts +1 -0
  156. package/lib/components/Form/RichTextToolBar/components/Underline/index.d.ts +6 -0
  157. package/lib/components/Form/RichTextToolBar/components/Unlink/index.d.ts +12 -0
  158. package/lib/components/Form/RichTextToolBar/index.d.ts +1 -0
  159. package/lib/components/Form/Select.d.ts +11 -0
  160. package/lib/components/Form/UploadField.d.ts +8 -0
  161. package/lib/components/Form/enhancer.d.ts +25 -0
  162. package/lib/components/Form/index.d.ts +34 -0
  163. package/lib/components/FullHeightOverlayScrollbars/index.d.ts +6 -0
  164. package/lib/components/Providers/ExtensionProvider.d.ts +42 -0
  165. package/lib/components/RenderCount/index.d.ts +1 -0
  166. package/lib/components/ShadowDom/index.d.ts +2 -0
  167. package/lib/constants.d.ts +1 -0
  168. package/lib/hooks/useAddToCollection.d.ts +6 -0
  169. package/lib/hooks/useFontFamily.d.ts +6 -0
  170. package/lib/index.d.ts +17 -0
  171. package/lib/index.js +8 -0
  172. package/lib/index.js.map +1 -0
  173. package/lib/index2.js +46382 -0
  174. package/lib/index2.js.map +1 -0
  175. package/lib/index3.js +11646 -0
  176. package/lib/index3.js.map +1 -0
  177. package/lib/style.css +12 -0
  178. package/lib/typings/mjml-browser.d.ts +37 -0
  179. package/lib/utils/MjmlToJson.d.ts +5 -0
  180. package/lib/utils/awaitForElement.d.ts +4 -0
  181. package/lib/utils/classnames.d.ts +1 -0
  182. package/lib/utils/getBlockTitle.d.ts +2 -0
  183. package/lib/utils/getContextMergeTags.d.ts +7 -0
  184. package/lib/utils/getIconNameByBlockType.d.ts +1 -0
  185. package/lib/utils/getPreviewClassName.d.ts +1 -0
  186. package/lib/utils/parseXMLtoBlock.d.ts +2 -0
  187. package/package.json +109 -0
  188. package/readme.md +349 -0
package/lib/style.css ADDED
@@ -0,0 +1,12 @@
1
+ [arco-theme=dark] .easy-email-editor-tabWrapper,[arco-theme=dark] .arco-layout{background-color:var(--color-bg-3)}[arco-theme=dark] .easy-email-editor-button{background-color:var(--color-secondary);color:var(--color-text-2);border:1px solid transparent}[arco-theme=dark] .easy-email-editor-button:hover{border-color:var(--color-neutral-4);color:var(--color-text-2);background-color:var(--color-fill-3)}[arco-theme=dark] .easy-email-editor-button[disabled],[arco-theme=dark] .easy-email-editor-button[disabled]:hover{background-color:var(--color-secondary);color:var(--color-text-2);border:1px solid transparent}._title_1f523_1{display:flex;flex:1;justify-content:space-between;align-items:center;position:relative}._title_1f523_1 .icon-eye{position:absolute;top:50%;transform:translateY(-50%);right:30px;opacity:0;font-size:14px;color:rgb(var(--primary-6))!important}._title_1f523_1 .icon-eye-invisible{position:absolute;top:50%;transform:translateY(-50%);font-size:14px;right:30px;opacity:1!important;color:rgb(var(--primary-6))!important}#BlockLayerManager .arco-tree-node-expanded{overflow:hidden}#BlockLayerManager .arco-tree-node-selected .arco-tree-node-title{background-color:rgb(var(--primary-1))}#BlockLayerManager .arco-tree-node-title:hover .icon-eye{opacity:1}#BlockLayerManager .arco-tree-node-indent-block{width:8px}#BlockLayerManager .arco-tree-node-drag-icon{cursor:grab}._wrap_1x927_1{position:fixed;left:500px;top:200px;z-index:9999;background-color:var(--color-neutral-2);box-shadow:1px 1px 4px #0000001a;border-radius:8px;overflow:hidden;font-family:"Lato",sans-serif;font-weight:500}._wrap_1x927_1 ._listItem_1x927_13{padding:5px 15px;display:flex;flex-wrap:nowrap;cursor:default!important}._wrap_1x927_1 ._listItem_1x927_13:hover{background-color:var(--color-menu-dark-hover)}._contextmenuMark_1x927_23{position:fixed;width:100vw;height:100vh;left:0;top:0;z-index:9998}._container_jzksr_1{display:flex;flex-wrap:wrap}._error_jzksr_6{border-color:#ff4d4f!important}._item_jzksr_10{margin:0 8px 8px 0;border-radius:4px;border:1px solid #d9d9d9;padding:8px;width:104px;height:104px}._item_jzksr_10 ._info_jzksr_18{position:relative;height:100%;width:100%;display:flex;align-items:center;justify-content:center;overflow:hidden}._item_jzksr_10 ._info_jzksr_18:before{content:" ";position:absolute;z-index:1;background-color:#00000080;-webkit-transition:all .3s;transition:all .3s;width:100%;height:100%;opacity:0}._item_jzksr_10 ._info_jzksr_18 img{width:100%;border:1px solid #f2f2f2;transition:all .3s}._item_jzksr_10 ._info_jzksr_18 ._btn-wrap_jzksr_43{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:10;white-space:nowrap;-webkit-transition:all .3s;transition:all .3s;opacity:0}._item_jzksr_10 ._info_jzksr_18 ._btn-wrap_jzksr_43 a{color:#eee;margin:0 4px}._item_jzksr_10 ._info_jzksr_18 ._btn-wrap_jzksr_43 a:hover{color:#fff}._item_jzksr_10 ._info_jzksr_18:hover:before,._item_jzksr_10 ._info_jzksr_18:hover ._btn-wrap_jzksr_43{opacity:1}._upload_jzksr_68{margin:0 8px 8px 0;border:1px dotted;width:104px;height:104px;display:flex;justify-content:center;align-items:center;flex-direction:column;cursor:pointer}._wrap_jzksr_80 ._urlInput_jzksr_80{display:flex;align-items:center}._helperText_1m9nq_1{color:#6d7175;font-weight:400;line-height:1.3;text-transform:none;letter-spacing:normal}._label-hidden_1m9nq_9{position:absolute!important;top:0;clip:rect(1px,1px,1px,1px)!important;overflow:hidden!important;height:1px!important;width:1px!important;padding:0!important;border:0!important}._editTab_1m9nq_20 .arco-tabs-content{border:none}._editTab_1m9nq_20 .arco-tabs-header-nav{padding-right:15px}._inputWithUnit_1m9nq_27 .arco-select-view{padding:0 5px!important;text-align:center}._inputWithUnit_1m9nq_27 .arco-select-view .arco-select-view-value{overflow:visible}._inputWithUnitSelectOption_1m9nq_35{padding:0 5px!important;text-align:center!important}._colorPicker_1m9nq_40 .sketch-picker .flexbox-fix:nth-child(3){display:none!important}._BlocksPanel_15fho_1 img{max-width:100%}._blockItem_15fho_5{text-align:center;padding:3px 12px;border-radius:15px;min-width:60px}._closeBtn_15fho_12{width:30px;height:30px;display:flex;align-items:center;justify-content:center;border-radius:50%}._closeBtn_15fho_12:hover{background-color:#f7f8f8}._mask_1a0xw_1{width:270px;display:flex;justify-content:flex-end;align-items:center;cursor:default;position:relative;transition:all .3s;pointer-events:auto}._drag_1a0xw_12{background-color:#000000a6}._customTextArea_xcz5w_1[readonly]{color:var(--color-text-2)}._customTextArea_xcz5w_1[readonly]:hover{border-color:var(--color-neutral-3)}._customTextArea_xcz5w_1[readonly]:focus{border-color:var(--color-neutral-3);background-color:transparent;box-shadow:none}._SimpleLayout_pu31r_1 .arco-layout-sider-children{overflow-x:hidden}._SimpleLayout_pu31r_1 .arco-layout-sider-children .arco-tabs-content{padding:0}._SimpleLayout_pu31r_1 .arco-collapse-item-content-expanded{overflow:visible}._SimpleLayout_pu31r_1 *::-webkit-scrollbar{-webkit-appearance:none;width:8px!important}._SimpleLayout_pu31r_1 *::-webkit-scrollbar-thumb{background-color:#00000080;box-shadow:0 0 1px #ffffff80;-webkit-box-shadow:0 0 1px rgba(255,255,255,.5)}._customScrollBar_pu31r_20{overflow:scroll}._customScrollBar_pu31r_20::-webkit-scrollbar{-webkit-appearance:none;width:8px!important}._customScrollBar_pu31r_20::-webkit-scrollbar-thumb{background-color:#00000080;box-shadow:0 0 1px #ffffff80;-webkit-box-shadow:0 0 1px rgba(255,255,255,.5)}._customScrollBar_pu31r_20 .arco-tabs-content{padding:0}._customScrollBarV2_pu31r_36{overflow:scroll}._customScrollBarV2_pu31r_36::-webkit-scrollbar{-webkit-appearance:none;width:8px!important}._customScrollBarV2_pu31r_36::-webkit-scrollbar-thumb{background-color:#00000080;box-shadow:0 0 1px #ffffff80;-webkit-box-shadow:0 0 1px rgba(255,255,255,.5)}._StandardLayout_xv0bc_1 .arco-layout-sider-children{overflow-x:hidden}._StandardLayout_xv0bc_1 .arco-layout-sider-children .arco-tabs-content{padding:0}._StandardLayout_xv0bc_1 .arco-collapse-item-content-expanded{overflow:visible}._StandardLayout_xv0bc_1 .easy-email-editor-tabWrapper{padding:5px}._layoutItem_1ajtj_1 .arco-collapse-item-header{background-color:#fff!important;border-color:transparent!important}._blockItem_1ajtj_6{margin-bottom:20px;box-shadow:#373f470a 0 0 0 1px,#373f4714 0 4px 4px,#373f4714 0 8px 24px;border:2px solid transparent;border-radius:4px;margin-right:15px}._blockItem_1ajtj_6:hover{box-shadow:0 0 2px 2px rgb(var(--primary-4, #1890ff))!important}._blockItem_1ajtj_6 ._blockItemContainer_1ajtj_16{width:96px;height:96px;padding:10px;text-align:center;display:flex;align-items:center;justify-content:center;flex-direction:column}._blockItem_1ajtj_6:nth-child(3n+1){margin-left:15px}._blockItem_1ajtj_6:nth-child(3n+0){margin-right:0}/*!
2
+ * OverlayScrollbars
3
+ * https://github.com/KingSora/OverlayScrollbars
4
+ *
5
+ * Version: 1.13.0
6
+ *
7
+ * Copyright KingSora | Rene Haas.
8
+ * https://github.com/KingSora
9
+ *
10
+ * Released under the MIT license.
11
+ * Date: 02.08.2020
12
+ */html.os-html,html.os-html>.os-host{display:block;overflow:hidden;box-sizing:border-box;height:100%!important;width:100%!important;min-width:100%!important;min-height:100%!important;margin:0!important;position:absolute!important}html.os-html>.os-host>.os-padding{position:absolute}body.os-dragging,body.os-dragging *{cursor:default}.os-host,.os-host-textarea{position:relative;overflow:visible!important;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:nowrap;flex-wrap:nowrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-ms-flex-line-pack:start;align-content:flex-start;-webkit-box-align:start;-ms-flex-align:start;-ms-grid-row-align:flex-start;align-items:flex-start}.os-host-flexbox{overflow:hidden!important;display:-webkit-box;display:-ms-flexbox;display:flex}.os-host-flexbox>.os-size-auto-observer{height:inherit!important}.os-host-flexbox>.os-content-glue{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:0;flex-shrink:0}.os-host-flexbox>.os-size-auto-observer,.os-host-flexbox>.os-content-glue{min-height:0;min-width:0;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:1;flex-shrink:1;-ms-flex-preferred-size:auto;flex-basis:auto}#os-dummy-scrollbar-size{position:fixed;opacity:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";visibility:hidden;overflow:scroll;height:500px;width:500px}#os-dummy-scrollbar-size>div{width:200%;height:200%;margin:10px 0}#os-dummy-scrollbar-size:before,#os-dummy-scrollbar-size:after,.os-content:before,.os-content:after{content:"";display:table;width:.01px;height:.01px;line-height:0;font-size:0;flex-grow:0;flex-shrink:0;visibility:hidden}#os-dummy-scrollbar-size,.os-viewport{-ms-overflow-style:scrollbar!important}.os-viewport-native-scrollbars-invisible#os-dummy-scrollbar-size,.os-viewport-native-scrollbars-invisible.os-viewport{scrollbar-width:none!important}.os-viewport-native-scrollbars-invisible#os-dummy-scrollbar-size::-webkit-scrollbar,.os-viewport-native-scrollbars-invisible.os-viewport::-webkit-scrollbar,.os-viewport-native-scrollbars-invisible#os-dummy-scrollbar-size::-webkit-scrollbar-corner,.os-viewport-native-scrollbars-invisible.os-viewport::-webkit-scrollbar-corner{display:none!important;width:0px!important;height:0px!important;visibility:hidden!important;background:transparent!important}.os-content-glue{box-sizing:inherit;max-height:100%;max-width:100%;width:100%;pointer-events:none}.os-padding{box-sizing:inherit;direction:inherit;position:absolute;overflow:visible;padding:0;margin:0;inset:0;width:auto!important;height:auto!important;z-index:0}.os-host-overflow>.os-padding{overflow:hidden}.os-viewport{direction:inherit!important;box-sizing:inherit!important;resize:none!important;outline:none!important;position:absolute;overflow:hidden;inset:0;padding:0;margin:0;-webkit-overflow-scrolling:touch}.os-content-arrange{position:absolute;z-index:-1;min-height:1px;min-width:1px;pointer-events:none}.os-content{direction:inherit;box-sizing:border-box!important;position:relative;display:block;height:100%;width:100%;visibility:visible}.os-content>.os-textarea{box-sizing:border-box!important;direction:inherit!important;background:transparent!important;outline:0px none transparent!important;overflow:hidden!important;position:absolute!important;display:block!important;top:0!important;left:0!important;margin:0!important;border-radius:0!important;float:none!important;-webkit-filter:none!important;filter:none!important;border:none!important;resize:none!important;-webkit-transform:none!important;transform:none!important;max-width:none!important;max-height:none!important;box-shadow:none!important;-webkit-perspective:none!important;perspective:none!important;opacity:1!important;z-index:1!important;clip:auto!important;vertical-align:baseline!important;padding:0}.os-host-rtl>.os-padding>.os-viewport>.os-content>.os-textarea{right:0!important}.os-content>.os-textarea-cover{z-index:-1;pointer-events:none}.os-content>.os-textarea[wrap=off]{white-space:pre!important;margin:0!important}.os-text-inherit{font-family:inherit;font-size:inherit;font-weight:inherit;font-style:inherit;font-variant:inherit;text-transform:inherit;text-decoration:inherit;text-indent:inherit;text-align:inherit;text-shadow:inherit;text-overflow:inherit;letter-spacing:inherit;word-spacing:inherit;line-height:inherit;unicode-bidi:inherit;direction:inherit;color:inherit;cursor:text}.os-resize-observer,.os-resize-observer-host{box-sizing:inherit;display:block;visibility:hidden;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1}.os-resize-observer-host{padding:inherit;border:inherit;border-color:transparent;border-style:solid;box-sizing:border-box}.os-resize-observer-host.observed{display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start}.os-resize-observer-host>.os-resize-observer,.os-resize-observer-host.observed>.os-resize-observer{height:200%;width:200%;padding:inherit;border:inherit;margin:0;display:block;box-sizing:content-box}.os-resize-observer-host.observed>.os-resize-observer,.os-resize-observer-host.observed>.os-resize-observer:before{display:flex;position:relative;flex-grow:1;flex-shrink:0;flex-basis:auto;box-sizing:border-box}.os-resize-observer-host.observed>.os-resize-observer:before{content:"";box-sizing:content-box;padding:inherit;border:inherit;margin:0}.os-size-auto-observer{box-sizing:inherit!important;height:100%;width:inherit;max-width:1px;position:relative;float:left;max-height:1px;overflow:hidden;z-index:-1;padding:0;margin:0;pointer-events:none;-webkit-box-flex:inherit;-ms-flex-positive:inherit;flex-grow:inherit;-ms-flex-negative:0;flex-shrink:0;-ms-flex-preferred-size:0;flex-basis:0}.os-size-auto-observer>.os-resize-observer{width:1000%;height:1000%;min-height:1px;min-width:1px}.os-resize-observer-item{position:absolute;inset:0;overflow:hidden;z-index:-1;opacity:0;direction:ltr!important;-webkit-box-flex:0!important;-ms-flex:none!important;flex:none!important}.os-resize-observer-item-final{position:absolute;left:0;top:0;-webkit-transition:none!important;transition:none!important;-webkit-box-flex:0!important;-ms-flex:none!important;flex:none!important}.os-resize-observer{-webkit-animation-duration:1ms;animation-duration:1ms;-webkit-animation-name:os-resize-observer-dummy-animation;animation-name:os-resize-observer-dummy-animation}object.os-resize-observer{box-sizing:border-box!important}@-webkit-keyframes os-resize-observer-dummy-animation{0%{cursor:auto}to{cursor:none}}@keyframes os-resize-observer-dummy-animation{0%{cursor:auto}to{cursor:none}}.os-host-transition>.os-scrollbar,.os-host-transition>.os-scrollbar-corner{-webkit-transition:opacity .3s,visibility .3s,top .3s,right .3s,bottom .3s,left .3s;transition:opacity .3s,visibility .3s,top .3s,right .3s,bottom .3s,left .3s}html.os-html>.os-host>.os-scrollbar{position:absolute;z-index:999999}.os-scrollbar,.os-scrollbar-corner{position:absolute;opacity:1;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";z-index:1}.os-scrollbar-corner{bottom:0;right:0}.os-scrollbar{pointer-events:none}.os-scrollbar-track{pointer-events:auto;position:relative;height:100%;width:100%;padding:0!important;border:none!important}.os-scrollbar-handle{pointer-events:auto;position:absolute;width:100%;height:100%}.os-scrollbar-handle-off,.os-scrollbar-track-off{pointer-events:none}.os-scrollbar.os-scrollbar-unusable,.os-scrollbar.os-scrollbar-unusable *{pointer-events:none!important}.os-scrollbar.os-scrollbar-unusable .os-scrollbar-handle{opacity:0!important}.os-scrollbar-horizontal{bottom:0;left:0}.os-scrollbar-vertical{top:0;right:0}.os-host-rtl>.os-scrollbar-horizontal{right:0}.os-host-rtl>.os-scrollbar-vertical,.os-host-rtl>.os-scrollbar-corner{right:auto;left:0}.os-scrollbar-auto-hidden,.os-padding+.os-scrollbar-corner,.os-host-resize-disabled.os-host-scrollbar-horizontal-hidden>.os-scrollbar-corner,.os-host-scrollbar-horizontal-hidden>.os-scrollbar-horizontal,.os-host-resize-disabled.os-host-scrollbar-vertical-hidden>.os-scrollbar-corner,.os-host-scrollbar-vertical-hidden>.os-scrollbar-vertical,.os-scrollbar-horizontal.os-scrollbar-auto-hidden+.os-scrollbar-vertical+.os-scrollbar-corner,.os-scrollbar-horizontal+.os-scrollbar-vertical.os-scrollbar-auto-hidden+.os-scrollbar-corner,.os-scrollbar-horizontal.os-scrollbar-auto-hidden+.os-scrollbar-vertical.os-scrollbar-auto-hidden+.os-scrollbar-corner{opacity:0;visibility:hidden;pointer-events:none}.os-scrollbar-corner-resize-both{cursor:nwse-resize}.os-host-rtl>.os-scrollbar-corner-resize-both{cursor:nesw-resize}.os-scrollbar-corner-resize-horizontal{cursor:ew-resize}.os-scrollbar-corner-resize-vertical{cursor:ns-resize}.os-dragging .os-scrollbar-corner.os-scrollbar-corner-resize{cursor:default}.os-host-resize-disabled.os-host-scrollbar-horizontal-hidden>.os-scrollbar-vertical{top:0;bottom:0}.os-host-resize-disabled.os-host-scrollbar-vertical-hidden>.os-scrollbar-horizontal,.os-host-rtl.os-host-resize-disabled.os-host-scrollbar-vertical-hidden>.os-scrollbar-horizontal{right:0;left:0}.os-scrollbar:hover,.os-scrollbar-corner.os-scrollbar-corner-resize{opacity:1!important;visibility:visible!important}.os-scrollbar-corner.os-scrollbar-corner-resize{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PHN2ZyAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIgICB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgICB3aWR0aD0iMTAiICAgaGVpZ2h0PSIxMCIgICB2ZXJzaW9uPSIxLjEiPiAgPGcgICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAsLTEwNDIuMzYyMikiICAgICBzdHlsZT0iZGlzcGxheTppbmxpbmUiPiAgICA8cGF0aCAgICAgICBzdHlsZT0iZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eTowLjQ5NDExNzY1O2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTpub25lIiAgICAgICBkPSJtIDcuNDI0MjE4NywxMDQyLjM2MjIgYyAtMC43MjM1NzkyLDAgLTEuMzEwMTU2MiwwLjU4NjYgLTEuMzEwMTU2MiwxLjMxMDIgMCwwLjI5OSAwLjEwNDM0MTksMC41NzEgMC4yNzI5NDkyLDAuNzkxNSAwLjIwOTEwMjQsMC4xNDEzIDAuNDY1NjIwNiwwLjIxODQgMC43MzY5NjI5LDAuMjE4NCAwLjcyMzU3OTMsMCAxLjMxMDE1NjMsLTAuNTg2NiAxLjMxMDE1NjMsLTEuMzEwMiAwLC0wLjI3MTMgLTAuMDc3MDkzLC0wLjUyNzggLTAuMjE4MzU5NCwtMC43MzcgLTAuMjIwNDk0MSwtMC4xNjg2IC0wLjQ5MjU0NDMsLTAuMjcyOSAtMC43OTE1NTI4LC0wLjI3MjkgeiBtIDAsMy4wODQzIGMgLTAuNzIzNTc5MiwwIC0xLjMxMDE1NjIsMC41ODY2IC0xLjMxMDE1NjIsMS4zMTAyIDAsMC4yOTkgMC4xMDQzNDE5LDAuNTcxIDAuMjcyOTQ5MiwwLjc5MTUgMC4yMDkxMDI0LDAuMTQxMyAwLjQ2NTYyMDYsMC4yMTg0IDAuNzM2OTYyOSwwLjIxODQgMC43MjM1NzkzLDAgMS4zMTAxNTYzLC0wLjU4NjYgMS4zMTAxNTYzLC0xLjMxMDIgMCwtMC4yNzEzIC0wLjA3NzA5MywtMC41Mjc4IC0wLjIxODM1OTQsLTAuNzM2OSAtMC4yMjA0OTQxLC0wLjE2ODYgLTAuNDkyNTQ0MywtMC4yNzMgLTAuNzkxNTUyOCwtMC4yNzMgeiBtIC0zLjA4NDMyNjEsMCBjIC0wLjcyMzU3OTMsMCAtMS4zMTAxNTYzLDAuNTg2NiAtMS4zMTAxNTYzLDEuMzEwMiAwLDAuMjk5IDAuMTA0MzQxOSwwLjU3MSAwLjI3Mjk0OTIsMC43OTE1IDAuMjA5MTAyNCwwLjE0MTMgMC40NjU2MjA3LDAuMjE4NCAwLjczNjk2MjksMC4yMTg0IDAuNzIzNTc5MywwIDEuMzEwMTU2MywtMC41ODY2IDEuMzEwMTU2MywtMS4zMTAyIDAsLTAuMjcxMyAtMC4wNzcwOTMsLTAuNTI3OCAtMC4yMTgzNTk0LC0wLjczNjkgLTAuMjIwNDk0LC0wLjE2ODYgLTAuNDkyNTQ0MiwtMC4yNzMgLTAuNzkxNTUyNywtMC4yNzMgeiBtIC0zLjAyOTczNjQsMy4wMjk4IEMgMC41ODY1NzY5MywxMDQ4LjQ3NjMgMCwxMDQ5LjA2MjggMCwxMDQ5Ljc4NjQgYyAwLDAuMjk5IDAuMTA0MzQxOSwwLjU3MTEgMC4yNzI5NDkyMiwwLjc5MTYgMC4yMDkxMDIyOSwwLjE0MTIgMC40NjU2MjA2NSwwLjIxODMgMC43MzY5NjI4OCwwLjIxODMgMC43MjM1NzkzLDAgMS4zMTAxNTYzLC0wLjU4NjUgMS4zMTAxNTYzLC0xLjMxMDEgMCwtMC4yNzE0IC0wLjA3NzA5MywtMC41Mjc5IC0wLjIxODM1OTQsLTAuNzM3IC0wLjIyMDQ5NDEsLTAuMTY4NiAtMC40OTI1NDQzLC0wLjI3MjkgLTAuNzkxNTUyOCwtMC4yNzI5IHogbSAzLjAyOTczNjQsMCBjIC0wLjcyMzU3OTMsMCAtMS4zMTAxNTYzLDAuNTg2NSAtMS4zMTAxNTYzLDEuMzEwMSAwLDAuMjk5IDAuMTA0MzQxOSwwLjU3MTEgMC4yNzI5NDkyLDAuNzkxNiAwLjIwOTEwMjQsMC4xNDEyIDAuNDY1NjIwNywwLjIxODMgMC43MzY5NjI5LDAuMjE4MyAwLjcyMzU3OTMsMCAxLjMxMDE1NjMsLTAuNTg2NSAxLjMxMDE1NjMsLTEuMzEwMSAwLC0wLjI3MTQgLTAuMDc3MDkzLC0wLjUyNzkgLTAuMjE4MzU5NCwtMC43MzcgLTAuMjIwNDk0LC0wLjE2ODYgLTAuNDkyNTQ0MiwtMC4yNzI5IC0wLjc5MTU1MjcsLTAuMjcyOSB6IG0gMy4wODQzMjYxLDAgYyAtMC43MjM1NzkyLDAgLTEuMzEwMTU2MiwwLjU4NjUgLTEuMzEwMTU2MiwxLjMxMDEgMCwwLjI5OSAwLjEwNDM0MTksMC41NzExIDAuMjcyOTQ5MiwwLjc5MTYgMC4yMDkxMDI0LDAuMTQxMiAwLjQ2NTYyMDYsMC4yMTgzIDAuNzM2OTYyOSwwLjIxODMgMC43MjM1NzkzLDAgMS4zMTAxNTYzLC0wLjU4NjUgMS4zMTAxNTYzLC0xLjMxMDEgMCwtMC4yNzE0IC0wLjA3NzA5MywtMC41Mjc5IC0wLjIxODM1OTQsLTAuNzM3IC0wLjIyMDQ5NDEsLTAuMTY4NiAtMC40OTI1NDQzLC0wLjI3MjkgLTAuNzkxNTUyOCwtMC4yNzI5IHoiLz4gIDwvZz4gIDxnICAgICBzdHlsZT0iZGlzcGxheTppbmxpbmUiPiAgICA8cGF0aCAgICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTpub25lIiAgICAgICBkPSJtIDguMjE1NzcxNSwwLjI3Mjk0OTIyIGMgMC4xNDEyNjY3LDAuMjA5MTAyMjkgMC4yMTgzNTk0LDAuNDY1NjIwNjUgMC4yMTgzNTk0LDAuNzM2OTYyODggMCwwLjcyMzU3OTMgLTAuNTg2NTc3LDEuMzEwMTU2MyAtMS4zMTAxNTYzLDEuMzEwMTU2MyAtMC4yNzEzNDIzLDAgLTAuNTI3ODYwNSwtMC4wNzcwOTMgLTAuNzM2OTYyOSwtMC4yMTgzNTk0IDAuMjM5NDEwNCwwLjMxMzA4NTkgMC42MTI2MzYyLDAuNTE4NjAzNSAxLjAzNzIwNywwLjUxODYwMzUgMC43MjM1NzkzLDAgMS4zMTAxNTYzLC0wLjU4NjU3NyAxLjMxMDE1NjMsLTEuMzEwMTU2MyAwLC0wLjQyNDU3MDc2IC0wLjIwNTUxNzYsLTAuNzk3Nzk2NTkgLTAuNTE4NjAzNSwtMS4wMzcyMDY5OCB6IG0gMCwzLjA4NDMyNjE4IGMgMC4xNDEyNjY3LDAuMjA5MTAyMyAwLjIxODM1OTQsMC40NjU2MjA2IDAuMjE4MzU5NCwwLjczNjk2MjkgMCwwLjcyMzU3OTMgLTAuNTg2NTc3LDEuMzEwMTU2MiAtMS4zMTAxNTYzLDEuMzEwMTU2MiAtMC4yNzEzNDIzLDAgLTAuNTI3ODYwNSwtMC4wNzcwOTMgLTAuNzM2OTYyOSwtMC4yMTgzNTkzIDAuMjM5NDEwNCwwLjMxMzA4NTkgMC42MTI2MzYyLDAuNTE4NjAzNSAxLjAzNzIwNywwLjUxODYwMzUgMC43MjM1NzkzLDAgMS4zMTAxNTYzLC0wLjU4NjU3NyAxLjMxMDE1NjMsLTEuMzEwMTU2MyAwLC0wLjQyNDU3MDggLTAuMjA1NTE3NiwtMC43OTc3OTY3IC0wLjUxODYwMzUsLTEuMDM3MjA3IHogbSAtMy4wODQzMjYyLDAgYyAwLjE0MTI2NjcsMC4yMDkxMDIzIDAuMjE4MzU5NCwwLjQ2NTYyMDYgMC4yMTgzNTk0LDAuNzM2OTYyOSAwLDAuNzIzNTc5MyAtMC41ODY1NzcsMS4zMTAxNTYyIC0xLjMxMDE1NjMsMS4zMTAxNTYyIC0wLjI3MTM0MjIsMCAtMC41Mjc4NjA1LC0wLjA3NzA5MyAtMC43MzY5NjI5LC0wLjIxODM1OTMgMC4yMzk0MTA0LDAuMzEzMDg1OSAwLjYxMjYzNjMsMC41MTg2MDM1IDEuMDM3MjA3MSwwLjUxODYwMzUgMC43MjM1NzkzLDAgMS4zMTAxNTYyLC0wLjU4NjU3NyAxLjMxMDE1NjIsLTEuMzEwMTU2MyAwLC0wLjQyNDU3MDggLTAuMjA1NTE3NSwtMC43OTc3OTY3IC0wLjUxODYwMzUsLTEuMDM3MjA3IHogTSAyLjEwMTcwOSw2LjM4NzAxMTcgYyAwLjE0MTI2NjcsMC4yMDkxMDI0IDAuMjE4MzU5NCwwLjQ2NTYyMDYgMC4yMTgzNTk0LDAuNzM2OTYyOSAwLDAuNzIzNTc5MyAtMC41ODY1NzcsMS4zMTAxNTYzIC0xLjMxMDE1NjMsMS4zMTAxNTYzIC0wLjI3MTM0MjIzLDAgLTAuNTI3ODYwNTksLTAuMDc3MDkzIC0wLjczNjk2Mjg4LC0wLjIxODM1OTQgMC4yMzk0MTAzOSwwLjMxMzA4NTkgMC42MTI2MzYyMiwwLjUxODYwMzUgMS4wMzcyMDY5OCwwLjUxODYwMzUgMC43MjM1NzkzLDAgMS4zMTAxNTYzLC0wLjU4NjU3NyAxLjMxMDE1NjMsLTEuMzEwMTU2MyAwLC0wLjQyNDU3MDggLTAuMjA1NTE3NiwtMC43OTc3OTY2IC0wLjUxODYwMzUsLTEuMDM3MjA3IHogbSAzLjAyOTczNjMsMCBjIDAuMTQxMjY2NywwLjIwOTEwMjQgMC4yMTgzNTk0LDAuNDY1NjIwNiAwLjIxODM1OTQsMC43MzY5NjI5IDAsMC43MjM1NzkzIC0wLjU4NjU3NywxLjMxMDE1NjMgLTEuMzEwMTU2MywxLjMxMDE1NjMgLTAuMjcxMzQyMiwwIC0wLjUyNzg2MDUsLTAuMDc3MDkzIC0wLjczNjk2MjksLTAuMjE4MzU5NCAwLjIzOTQxMDQsMC4zMTMwODU5IDAuNjEyNjM2MywwLjUxODYwMzUgMS4wMzcyMDcxLDAuNTE4NjAzNSAwLjcyMzU3OTMsMCAxLjMxMDE1NjIsLTAuNTg2NTc3IDEuMzEwMTU2MiwtMS4zMTAxNTYzIDAsLTAuNDI0NTcwOCAtMC4yMDU1MTc1LC0wLjc5Nzc5NjYgLTAuNTE4NjAzNSwtMS4wMzcyMDcgeiBtIDMuMDg0MzI2MiwwIGMgMC4xNDEyNjY3LDAuMjA5MTAyNCAwLjIxODM1OTQsMC40NjU2MjA2IDAuMjE4MzU5NCwwLjczNjk2MjkgMCwwLjcyMzU3OTMgLTAuNTg2NTc3LDEuMzEwMTU2MyAtMS4zMTAxNTYzLDEuMzEwMTU2MyAtMC4yNzEzNDIzLDAgLTAuNTI3ODYwNSwtMC4wNzcwOTMgLTAuNzM2OTYyOSwtMC4yMTgzNTk0IDAuMjM5NDEwNCwwLjMxMzA4NTkgMC42MTI2MzYyLDAuNTE4NjAzNSAxLjAzNzIwNywwLjUxODYwMzUgMC43MjM1NzkzLDAgMS4zMTAxNTYzLC0wLjU4NjU3NyAxLjMxMDE1NjMsLTEuMzEwMTU2MyAwLC0wLjQyNDU3MDggLTAuMjA1NTE3NiwtMC43OTc3OTY2IC0wLjUxODYwMzUsLTEuMDM3MjA3IHoiIC8+ICA8L2c+PC9zdmc+);background-repeat:no-repeat;background-position:100% 100%;pointer-events:auto!important}.os-host-rtl>.os-scrollbar-corner.os-scrollbar-corner-resize{-webkit-transform:scale(-1,1);transform:scaleX(-1)}.os-host-overflow{overflow:hidden!important}.os-theme-none>.os-scrollbar-horizontal,.os-theme-none>.os-scrollbar-vertical,.os-theme-none>.os-scrollbar-corner{display:none!important}.os-theme-none>.os-scrollbar-corner-resize{display:block!important;min-width:10px;min-height:10px}.os-theme-dark>.os-scrollbar-horizontal,.os-theme-light>.os-scrollbar-horizontal{right:10px;height:10px}.os-theme-dark>.os-scrollbar-vertical,.os-theme-light>.os-scrollbar-vertical{bottom:10px;width:10px}.os-theme-dark.os-host-rtl>.os-scrollbar-horizontal,.os-theme-light.os-host-rtl>.os-scrollbar-horizontal{left:10px;right:0}.os-theme-dark>.os-scrollbar-corner,.os-theme-light>.os-scrollbar-corner{height:10px;width:10px}.os-theme-dark>.os-scrollbar-corner,.os-theme-light>.os-scrollbar-corner{background-color:transparent}.os-theme-dark>.os-scrollbar,.os-theme-light>.os-scrollbar{padding:2px;box-sizing:border-box;background:transparent}.os-theme-dark>.os-scrollbar.os-scrollbar-unusable,.os-theme-light>.os-scrollbar.os-scrollbar-unusable,.os-theme-dark>.os-scrollbar>.os-scrollbar-track,.os-theme-light>.os-scrollbar>.os-scrollbar-track{background:transparent}.os-theme-dark>.os-scrollbar-horizontal>.os-scrollbar-track>.os-scrollbar-handle,.os-theme-light>.os-scrollbar-horizontal>.os-scrollbar-track>.os-scrollbar-handle{min-width:30px}.os-theme-dark>.os-scrollbar-vertical>.os-scrollbar-track>.os-scrollbar-handle,.os-theme-light>.os-scrollbar-vertical>.os-scrollbar-track>.os-scrollbar-handle{min-height:30px}.os-theme-dark.os-host-transition>.os-scrollbar>.os-scrollbar-track>.os-scrollbar-handle,.os-theme-light.os-host-transition>.os-scrollbar>.os-scrollbar-track>.os-scrollbar-handle{-webkit-transition:background-color .3s;transition:background-color .3s}.os-theme-dark>.os-scrollbar>.os-scrollbar-track>.os-scrollbar-handle,.os-theme-light>.os-scrollbar>.os-scrollbar-track>.os-scrollbar-handle,.os-theme-dark>.os-scrollbar>.os-scrollbar-track,.os-theme-light>.os-scrollbar>.os-scrollbar-track{border-radius:10px}.os-theme-dark>.os-scrollbar>.os-scrollbar-track>.os-scrollbar-handle{background:rgba(0,0,0,.4)}.os-theme-light>.os-scrollbar>.os-scrollbar-track>.os-scrollbar-handle{background:rgba(255,255,255,.4)}.os-theme-dark>.os-scrollbar:hover>.os-scrollbar-track>.os-scrollbar-handle{background:rgba(0,0,0,.55)}.os-theme-light>.os-scrollbar:hover>.os-scrollbar-track>.os-scrollbar-handle{background:rgba(255,255,255,.55)}.os-theme-dark>.os-scrollbar>.os-scrollbar-track>.os-scrollbar-handle.active{background:rgba(0,0,0,.7)}.os-theme-light>.os-scrollbar>.os-scrollbar-track>.os-scrollbar-handle.active{background:rgba(255,255,255,.7)}.os-theme-dark>.os-scrollbar-horizontal .os-scrollbar-handle:before,.os-theme-dark>.os-scrollbar-vertical .os-scrollbar-handle:before,.os-theme-light>.os-scrollbar-horizontal .os-scrollbar-handle:before,.os-theme-light>.os-scrollbar-vertical .os-scrollbar-handle:before{content:"";position:absolute;inset:0;display:block}.os-theme-dark.os-host-scrollbar-horizontal-hidden>.os-scrollbar-horizontal .os-scrollbar-handle:before,.os-theme-dark.os-host-scrollbar-vertical-hidden>.os-scrollbar-vertical .os-scrollbar-handle:before,.os-theme-light.os-host-scrollbar-horizontal-hidden>.os-scrollbar-horizontal .os-scrollbar-handle:before,.os-theme-light.os-host-scrollbar-vertical-hidden>.os-scrollbar-vertical .os-scrollbar-handle:before{display:none}.os-theme-dark>.os-scrollbar-horizontal .os-scrollbar-handle:before,.os-theme-light>.os-scrollbar-horizontal .os-scrollbar-handle:before{top:-6px;bottom:-2px}.os-theme-dark>.os-scrollbar-vertical .os-scrollbar-handle:before,.os-theme-light>.os-scrollbar-vertical .os-scrollbar-handle:before{left:-6px;right:-2px}.os-host-rtl.os-theme-dark>.os-scrollbar-vertical .os-scrollbar-handle:before,.os-host-rtl.os-theme-light>.os-scrollbar-vertical .os-scrollbar-handle:before{right:-6px;left:-2px}._largeTabsHeader_d2sio_1 .arco-tabs-header{width:100%;display:flex}._largeTabsHeader_d2sio_1 .arco-tabs-header .arco-tabs-header-title{flex:1;margin:0!important;padding:0!important;height:60px;line-height:60px}._largeTabsHeader_d2sio_1 .arco-tabs-header .arco-tabs-header-title .arco-tabs-header-title-text{display:block;text-align:center;width:100%}._largeTabsHeader_d2sio_1 .arco-tabs-header .arco-tabs-header-title .arco-tabs-header-title-text:before{display:none}.CodeMirror{font-family:monospace;height:300px;color:#000;direction:ltr}.CodeMirror-lines{padding:4px 0}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{padding:0 4px}.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{background-color:#fff}.CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid black;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{width:auto;border:0!important;background:#7e7}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-fat-cursor-mark{background-color:#14ff1480;-webkit-animation:blink 1.06s steps(1) infinite;-moz-animation:blink 1.06s steps(1) infinite;animation:blink 1.06s steps(1) infinite}.cm-animate-fat-cursor{width:auto;-webkit-animation:blink 1.06s steps(1) infinite;-moz-animation:blink 1.06s steps(1) infinite;animation:blink 1.06s steps(1) infinite;background-color:#7e7}@-moz-keyframes blink{50%{background-color:transparent}}@-webkit-keyframes blink{50%{background-color:transparent}}@keyframes blink{50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{position:absolute;inset:-50px 0 0;overflow:hidden}.CodeMirror-ruler{border-left:1px solid #ccc;top:0;bottom:0;position:absolute}.cm-s-default .cm-header{color:#00f}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:bold}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-variable-3,.cm-s-default .cm-type{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta,.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-s-default .cm-error,.cm-invalidchar{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{position:relative;overflow:hidden;background:white}.CodeMirror-scroll{overflow:scroll!important;margin-bottom:-50px;margin-right:-50px;padding-bottom:50px;height:100%;outline:none;position:relative}.CodeMirror-sizer{position:relative;border-right:50px solid transparent}.CodeMirror-vscrollbar,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{position:absolute;z-index:6;display:none;outline:none}.CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{position:absolute;left:0;top:0;min-height:100%;z-index:3}.CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;vertical-align:top;margin-bottom:-50px}.CodeMirror-gutter-wrapper{position:absolute;z-index:4;background:none!important;border:none!important}.CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}.CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}.CodeMirror-gutter-wrapper ::selection,.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;border-width:0;background:transparent;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;line-height:inherit;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-tap-highlight-color:transparent;-webkit-font-variant-ligatures:contextual;font-variant-ligatures:contextual}.CodeMirror-wrap pre.CodeMirror-line,.CodeMirror-wrap pre.CodeMirror-line-like{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{position:absolute;inset:0;z-index:0}.CodeMirror-linewidget{position:relative;z-index:2;padding:.1px}.CodeMirror-rtl pre{direction:rtl}.CodeMirror-code{outline:none}.CodeMirror-scroll,.CodeMirror-sizer,.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber{-moz-box-sizing:content-box;box-sizing:content-box}.CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.CodeMirror-cursor{position:absolute;pointer-events:none}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}div.CodeMirror-dragcursors,.CodeMirror-focused div.CodeMirror-cursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection,.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:#ff06}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:""}span.CodeMirror-selectedtext{background:none}.cm-s-material.CodeMirror{background-color:#263238;color:#eff}.cm-s-material .CodeMirror-gutters{background:#263238;color:#546e7a;border:none}.cm-s-material .CodeMirror-guttermarker,.cm-s-material .CodeMirror-guttermarker-subtle,.cm-s-material .CodeMirror-linenumber{color:#546e7a}.cm-s-material .CodeMirror-cursor{border-left:1px solid #FFCC00}.cm-s-material.cm-fat-cursor .CodeMirror-cursor,.cm-s-material .cm-animate-fat-cursor{background-color:#5d6d5c80!important}.cm-s-material div.CodeMirror-selected,.cm-s-material.CodeMirror-focused div.CodeMirror-selected,.cm-s-material .CodeMirror-line::selection,.cm-s-material .CodeMirror-line>span::selection,.cm-s-material .CodeMirror-line>span>span::selection,.cm-s-material .CodeMirror-line::-moz-selection,.cm-s-material .CodeMirror-line>span::-moz-selection,.cm-s-material .CodeMirror-line>span>span::-moz-selection{background:rgba(128,203,196,.2)}.cm-s-material .CodeMirror-activeline-background{background:rgba(0,0,0,.5)}.cm-s-material .cm-keyword{color:#c792ea}.cm-s-material .cm-operator{color:#89ddff}.cm-s-material .cm-variable-2{color:#eff}.cm-s-material .cm-variable-3,.cm-s-material .cm-type{color:#f07178}.cm-s-material .cm-builtin{color:#ffcb6b}.cm-s-material .cm-atom{color:#f78c6c}.cm-s-material .cm-number{color:#ff5370}.cm-s-material .cm-def{color:#82aaff}.cm-s-material .cm-string{color:#c3e88d}.cm-s-material .cm-string-2{color:#f07178}.cm-s-material .cm-comment{color:#546e7a}.cm-s-material .cm-variable{color:#f07178}.cm-s-material .cm-tag{color:#ff5370}.cm-s-material .cm-meta{color:#ffcb6b}.cm-s-material .cm-attribute,.cm-s-material .cm-property{color:#c792ea}.cm-s-material .cm-qualifier,.cm-s-material .cm-variable-3,.cm-s-material .cm-type{color:#decb6b}.cm-s-material .cm-error{color:#fff;background-color:#ff5370}.cm-s-material .CodeMirror-matchingbracket{text-decoration:underline;color:#fff!important}.cm-s-neat span.cm-comment{color:#a86}.cm-s-neat span.cm-keyword{line-height:1em;font-weight:bold;color:#00f}.cm-s-neat span.cm-string{color:#a22}.cm-s-neat span.cm-builtin{line-height:1em;font-weight:bold;color:#077}.cm-s-neat span.cm-special{line-height:1em;font-weight:bold;color:#0aa}.cm-s-neat span.cm-variable{color:#000}.cm-s-neat span.cm-number,.cm-s-neat span.cm-atom{color:#3a3}.cm-s-neat span.cm-meta{color:#555}.cm-s-neat span.cm-link{color:#3a3}.cm-s-neat .CodeMirror-activeline-background{background:#e8f2ff}.cm-s-neat .CodeMirror-matchingbracket{outline:1px solid grey;color:#000!important}._container_13rz9_1,._container_13rz9_1 .CodeMirror{height:100%}
@@ -0,0 +1,37 @@
1
+ declare module 'mjml-browser' {
2
+ const transform: (vml: string, options?: {
3
+ beautify?: boolean;
4
+ minify?: boolean;
5
+ keepComments?: boolean;
6
+ validationLevel: 'strict' | 'soft' | 'skip';
7
+ }) => {
8
+ json: MjmlBlockItem;
9
+ html: string;
10
+ errors: string[];
11
+ };
12
+ export default transform;
13
+ }
14
+ interface MjmlBlockItem {
15
+ file: string;
16
+ absoluteFilePath: string;
17
+ line: number;
18
+ includedIn: any[];
19
+ tagName: string;
20
+ children: IChildrenItem[];
21
+ attributes: IAttributes;
22
+ content?: string;
23
+ }
24
+ interface IChildrenItem {
25
+ file?: string;
26
+ absoluteFilePath?: string;
27
+ line: number;
28
+ includedIn: any[];
29
+ tagName: string;
30
+ children?: IChildrenItem[];
31
+ attributes: IAttributes;
32
+ content?: string;
33
+ inline?: 'inline';
34
+ }
35
+ interface IAttributes {
36
+ [key: string]: any;
37
+ }
@@ -0,0 +1,5 @@
1
+ import { IPage } from 'easy-email-core';
2
+ export declare function MjmlToJson(data: MjmlBlockItem | string): IPage;
3
+ export declare function getMetaDataFromMjml(data?: IChildrenItem): {
4
+ [key: string]: any;
5
+ };
@@ -0,0 +1,4 @@
1
+ export declare function awaitForElement<T extends HTMLElement>(idx: string): {
2
+ cancel: () => void;
3
+ promise: Promise<T>;
4
+ };
@@ -0,0 +1 @@
1
+ export declare function classnames(...rest: any[]): string;
@@ -0,0 +1,2 @@
1
+ import { IBlockData } from 'easy-email-core';
2
+ export declare function getBlockTitle(blockData: IBlockData, isFromContent?: boolean): string;
@@ -0,0 +1,7 @@
1
+ export declare function getContextMergeTags(mergeTags: {
2
+ [key: string]: any;
3
+ }, context: {
4
+ [key: string]: any;
5
+ }, idx: string): {
6
+ [key: string]: any;
7
+ };
@@ -0,0 +1 @@
1
+ export declare function getIconNameByBlockType(type: string): any;
@@ -0,0 +1 @@
1
+ export declare function getPreviewClassName(idx: string | null, type: string): string;
@@ -0,0 +1,2 @@
1
+ import { IBlockData } from 'easy-email-core';
2
+ export declare function parseXMLtoBlock(text: string): IBlockData<any, any>;
package/package.json ADDED
@@ -0,0 +1,109 @@
1
+ {
2
+ "name": "@groovymedia/easy-email-extensions",
3
+ "license": "MIT",
4
+ "description": "Email editor",
5
+ "version": "4.14.1-2",
6
+ "author": "m-Ryan",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+ssh://git@github.com/m-Ryan/easy-email.git"
10
+ },
11
+ "keywords": [
12
+ "email editor core"
13
+ ],
14
+ "files": [
15
+ "lib"
16
+ ],
17
+ "main": "lib/index.js",
18
+ "types": "lib/index.d.ts",
19
+ "scripts": {
20
+ "dev": "vite",
21
+ "typings": "tsc --declaration --emitDeclarationOnly --project tsconfig.lib.json && tsc-alias -p tsconfig.alias.json",
22
+ "build": "rimraf lib && npm run typings && vite build --config vite.config.ts",
23
+ "format": "eslint --fix --ext .tsx,.ts,.tsx src/",
24
+ "test": "jest --coverage"
25
+ },
26
+ "husky": {
27
+ "hooks": {
28
+ "pre-commit": "yarn test && yarn lint-staged"
29
+ }
30
+ },
31
+ "lint-staged": {
32
+ "src/*.{js,jsx,ts,tsx}, example/*.{js,jsx,ts,tsx}": [
33
+ "yarn lint"
34
+ ]
35
+ },
36
+ "devDependencies": {
37
+ "@babel/core": "^7.15.0",
38
+ "@babel/preset-env": "^7.15.0",
39
+ "@babel/preset-react": "^7.14.5",
40
+ "@babel/preset-typescript": "^7.15.0",
41
+ "@types/color": "^3.0.3",
42
+ "@types/jest": "^26.0.24",
43
+ "@types/jsdom": "^16.2.13",
44
+ "@types/lodash": "^4.14.178",
45
+ "@types/node": "^16.11.7",
46
+ "@types/react": "^18.2.2",
47
+ "@types/react-color": "^3.0.6",
48
+ "@types/react-dom": "^18.2.3",
49
+ "@types/uuid": "^8.3.4",
50
+ "@typescript-eslint/eslint-plugin": "^4.28.3",
51
+ "@typescript-eslint/parser": "^4.28.3",
52
+ "@vitejs/plugin-react-refresh": "^1.3.6",
53
+ "babel-jest": "^27.0.6",
54
+ "cross-env": "^7.0.3",
55
+ "eslint": "^7.31.0",
56
+ "eslint-config-prettier": "^8.3.0",
57
+ "eslint-loader": "^4.0.2",
58
+ "eslint-plugin-import": "^2.23.4",
59
+ "eslint-plugin-prettier": "^3.4.0",
60
+ "eslint-plugin-react": "^7.24.0",
61
+ "eslint-plugin-react-hooks": "^4.2.0",
62
+ "jest": "^27.0.6",
63
+ "jsdom": "^17.0.0",
64
+ "lerna": "^4.0.0",
65
+ "less": "^4.1.2",
66
+ "react": "^18.2.0",
67
+ "react-dom": "^18.2.0",
68
+ "react-final-form": "^6.5.7",
69
+ "rollup-plugin-visualizer": "^5.5.2",
70
+ "sass": "^1.43.4",
71
+ "ts-node": "^10.4.0",
72
+ "tsc-alias": "^1.4.1",
73
+ "typescript": "^4.4.4",
74
+ "vite": "^2.6.14",
75
+ "vite-plugin-html": "^2.1.1",
76
+ "vite-plugin-style-import": "^1.3.0"
77
+ },
78
+ "dependencies": {
79
+ "@arco-design/web-react": "^2.36.1",
80
+ "codemirror": "^5.63.3",
81
+ "color": "^4.2.3",
82
+ "final-form": "^4.20.4",
83
+ "final-form-arrays": "^3.0.2",
84
+ "final-form-set-field-touched": "^1.0.1",
85
+ "is-hotkey": "^0.2.0",
86
+ "lodash": "^4.17.21",
87
+ "mjml-browser": "^4.10.4",
88
+ "overlayscrollbars": "^1.13.2",
89
+ "overlayscrollbars-react": "^0.3.0",
90
+ "react-codemirror2": "^7.2.1",
91
+ "react-color": "^2.19.3",
92
+ "react-final-form-arrays": "^3.1.3",
93
+ "react-use": "^17.3.1"
94
+ },
95
+ "peerDependencies": {
96
+ "@groovymedia/easy-email-core": "^4.12.2",
97
+ "@groovymedia/easy-email-editor": "^4.12.2",
98
+ "react": "^18.2.0",
99
+ "react-dom": "^18.2.0",
100
+ "react-final-form": "^6.5.7"
101
+ },
102
+ "bugs": {
103
+ "url": "https://github.com/m-Ryan/easy-email/issues"
104
+ },
105
+ "homepage": "https://github.com/m-Ryan/easy-email#readme",
106
+ "directories": {
107
+ "lib": "lib"
108
+ }
109
+ }
package/readme.md ADDED
@@ -0,0 +1,349 @@
1
+ # Easy-email-extensions
2
+
3
+ ## Introduction
4
+
5
+ Provide default UI components, when they don’t meet your needs, you can refer to it and write your own.
6
+
7
+ It also provides the following utils:
8
+
9
+ - MjmlToJson
10
+
11
+ ## usage
12
+
13
+ ```sh
14
+ $ npm install --save easy-email-extensions
15
+ ```
16
+
17
+ or
18
+
19
+ ```sh
20
+ $ yarn add easy-email-extensions
21
+ ```
22
+
23
+ ```js
24
+ import React from 'react';
25
+ import { BlockManager, BasicType, AdvancedType } from 'easy-email-core';
26
+ import { EmailEditor, EmailEditorProvider } from 'easy-email-editor';
27
+ import { ExtensionProps, StandardLayout } from 'easy-email-extensions';
28
+ import { useWindowSize } from 'react-use';
29
+
30
+ import 'easy-email-editor/lib/style.css';
31
+ import 'easy-email-extensions/lib/style.css';
32
+
33
+ const categories: ExtensionProps['categories'] = [
34
+ {
35
+ label: 'Content',
36
+ active: true,
37
+ blocks: [
38
+ {
39
+ type: AdvancedType.TEXT,
40
+ },
41
+ {
42
+ type: AdvancedType.IMAGE,
43
+ payload: { attributes: { padding: '0px 0px 0px 0px' } },
44
+ },
45
+ {
46
+ type: AdvancedType.BUTTON,
47
+ },
48
+ {
49
+ type: AdvancedType.SOCIAL,
50
+ },
51
+ {
52
+ type: AdvancedType.DIVIDER,
53
+ },
54
+ {
55
+ type: AdvancedType.SPACER,
56
+ },
57
+ {
58
+ type: AdvancedType.HERO,
59
+ },
60
+ {
61
+ type: AdvancedType.WRAPPER,
62
+ },
63
+ ],
64
+ },
65
+ {
66
+ label: 'Layout',
67
+ active: true,
68
+ displayType: 'column',
69
+ blocks: [
70
+ {
71
+ title: '2 columns',
72
+ payload: [
73
+ ['50%', '50%'],
74
+ ['33%', '67%'],
75
+ ['67%', '33%'],
76
+ ['25%', '75%'],
77
+ ['75%', '25%'],
78
+ ],
79
+ },
80
+ {
81
+ title: '3 columns',
82
+ payload: [
83
+ ['33.33%', '33.33%', '33.33%'],
84
+ ['25%', '25%', '50%'],
85
+ ['50%', '25%', '25%'],
86
+ ],
87
+ },
88
+ {
89
+ title: '4 columns',
90
+ payload: [['25%', '25%', '25%', '25%']],
91
+ },
92
+ ],
93
+ },
94
+ ];
95
+
96
+ const initialValues = {
97
+ subject: 'Welcome to Easy-email',
98
+ subTitle: 'Nice to meet you!',
99
+ content: BlockManager.getBlockByType(BasicType.PAGE)!.create({}),
100
+ };
101
+
102
+ export default function App() {
103
+ const { width } = useWindowSize();
104
+
105
+ const smallScene = width < 1400;
106
+
107
+ return (
108
+ <EmailEditorProvider
109
+ data={initialValues}
110
+ height={'calc(100vh - 72px)'}
111
+ autoComplete
112
+ dashed={false}
113
+ >
114
+ {({ values }) => {
115
+ return (
116
+ <StandardLayout
117
+ compact={!smallScene}
118
+ categories={categories}
119
+ showSourceCode={true}
120
+ >
121
+ <EmailEditor />
122
+ </StandardLayout>
123
+ );
124
+ }}
125
+ </EmailEditorProvider>
126
+ );
127
+ }
128
+
129
+ ```
130
+
131
+ ## Extensions
132
+
133
+ - `AttributePanel`
134
+
135
+ - Basic block configuration panel
136
+
137
+ - <img src="https://assets.maocanhua.cn/3e74a61d-ab22-4cf3-afc9-d511b82e08cd-image.png" alt="AttributePanel">
138
+
139
+ - You can add or overwrite
140
+
141
+ ```tsx
142
+ import { BlockAttributeConfigurationManager } from 'easy-email-extensions';
143
+
144
+ BlockAttributeConfigurationManager.add({
145
+ [BasicType.TEXT]: () => <div>will be overwrite `Text`</div>,
146
+ });
147
+ ```
148
+
149
+ - Hide Page block subject & subTitle
150
+
151
+ ```tsx
152
+ const DefaultPageConfigPanel = BlockAttributeConfigurationManager.get(BasicType.PAGE);
153
+ BlockAttributeConfigurationManager.add({
154
+ [BasicType.PAGE]: () => (
155
+ <DefaultPageConfigPanel
156
+ hideSubject
157
+ hideSubTitle
158
+ />
159
+ ),
160
+ });
161
+ ```
162
+
163
+ - `InteractivePrompt`
164
+
165
+ - block hover and focus style
166
+
167
+ - <img src="https://assets.maocanhua.cn/298d72d6-a509-4cd2-85c7-dfb915971620-image.png" alt="InteractivePrompt">
168
+
169
+ - No configuration items
170
+
171
+ - `BlockLayer`
172
+
173
+ - <img src="https://assets.maocanhua.cn/de1f5211-350e-43c9-9c99-d97a2f196e04-image.png" alt="ShortcutToolbar">
174
+ - No configuration items
175
+
176
+ - `ShortcutToolbar`
177
+
178
+ - <img src="https://assets.maocanhua.cn/f0e2ccc6-0627-472b-ad78-bc92bdb46ad1-image.png">
179
+ - You can add or overwrite popover's preset blocks
180
+
181
+ ```tsx
182
+ import { BasicType } from 'easy-email-core';
183
+ import { BlockMarketManager, BlockMaskWrapper } from 'easy-email-extensions';
184
+
185
+ BlockMarketManager.addCategories([
186
+ {
187
+ title: 'Custom',
188
+ name: 'custom',
189
+ blocks: [
190
+ {
191
+ type: BasicType.TEXT,
192
+ title: 'Text',
193
+ description: 'This block allows you to display text in your email.',
194
+ component: () => {
195
+ return (
196
+ <BlockMaskWrapper
197
+ type={BasicType.TEXT}
198
+ payload={{
199
+ attributes: {
200
+ 'font-size': '20px',
201
+ align: 'center',
202
+ padding: '0px 0px 0px 0px',
203
+ color: '#4A90E2',
204
+ },
205
+ data: {
206
+ value: {
207
+ content: '20px',
208
+ },
209
+ },
210
+ }}
211
+ >
212
+ <div style={{ fontSize: 20, width: '100%', paddingLeft: 20 }}>20px</div>
213
+ </BlockMaskWrapper>
214
+ );
215
+ },
216
+ },
217
+ ],
218
+ },
219
+ ]);
220
+ ```
221
+
222
+ - `SimpleLayout`
223
+
224
+ - props
225
+ - showSourceCode
226
+ - mjmlReadOnly
227
+ - defaultShowLayer
228
+
229
+ - `StandardLayout`
230
+
231
+ - props
232
+ - compact
233
+ - categories
234
+ - showSourceCode
235
+ - jsonReadOnly
236
+ - mjmlReadOnly
237
+
238
+ ## transform mjml to json
239
+
240
+ ```ts
241
+ import { MjmlToJson } from 'easy-email-extensions';
242
+
243
+ const json = MjmlToJson(`
244
+ <mjml>
245
+ <mj-body>
246
+ <mj-hero mode="fluid-height" background-width="600px" background-height="469px" background-url="https://cloud.githubusercontent.com/assets/1830348/15354890/1442159a-1cf0-11e6-92b1-b861dadf1750.jpg" background-color="#2a3448" padding="100px 0px">
247
+ <mj-text padding="20px" color="#ffffff" font-family="Helvetica" align="center" font-size="45px" line-height="45px" font-weight="900">
248
+ GO TO SPACE
249
+ </mj-text>
250
+ <mj-button href="https://mjml.io/" align="center">
251
+ ORDER YOUR TICKET NOW
252
+ </mj-button>
253
+ </mj-hero>
254
+ </mj-body>
255
+ </mjml>
256
+ `);
257
+
258
+ console.log(json);
259
+ ```
260
+
261
+ // output
262
+
263
+ ```json
264
+ {
265
+ "type": "page",
266
+ "data": {
267
+ "value": {
268
+ "breakpoint": "480px",
269
+ "headAttributes": "",
270
+ "font-size": "14px",
271
+ "line-height": "1.7",
272
+ "headStyles": [],
273
+ "fonts": [],
274
+ "responsive": true,
275
+ "font-family": "lucida Grande,Verdana,Microsoft YaHei",
276
+ "text-color": "#000000"
277
+ }
278
+ },
279
+ "attributes": {
280
+ "background-color": "#efeeea",
281
+ "width": "600px"
282
+ },
283
+ "children": [
284
+ {
285
+ "type": "hero",
286
+ "data": {
287
+ "value": {}
288
+ },
289
+ "attributes": {
290
+ "padding": "100px 0px 100px 0px",
291
+ "border": "none",
292
+ "direction": "ltr",
293
+ "text-align": "center",
294
+ "background-color": "#2a3448",
295
+ "background-position": "center center",
296
+ "mode": "fluid-height",
297
+ "vertical-align": "top",
298
+ "background-url": "https://cloud.githubusercontent.com/assets/1830348/15354890/1442159a-1cf0-11e6-92b1-b861dadf1750.jpg",
299
+ "background-width": "600px",
300
+ "background-height": "469px"
301
+ },
302
+ "children": [
303
+ {
304
+ "type": "text",
305
+ "data": {
306
+ "value": {
307
+ "content": "GO TO SPACE"
308
+ }
309
+ },
310
+ "attributes": {
311
+ "padding": "20px 20px 20px 20px",
312
+ "align": "center",
313
+ "color": "#ffffff",
314
+ "font-size": "45px",
315
+ "line-height": "45px",
316
+ "font-family": "Helvetica",
317
+ "font-weight": "900"
318
+ },
319
+ "children": []
320
+ },
321
+ {
322
+ "type": "button",
323
+ "data": {
324
+ "value": {
325
+ "content": "ORDER YOUR TICKET NOW"
326
+ }
327
+ },
328
+ "attributes": {
329
+ "align": "center",
330
+ "background-color": "#414141",
331
+ "color": "#ffffff",
332
+ "font-weight": "normal",
333
+ "border-radius": "3px",
334
+ "padding": "10px 25px 10px 25px",
335
+ "inner-padding": "10px 25px 10px 25px",
336
+ "line-height": "120%",
337
+ "target": "_blank",
338
+ "vertical-align": "middle",
339
+ "border": "none",
340
+ "text-align": "center",
341
+ "href": "https://mjml.io/"
342
+ },
343
+ "children": []
344
+ }
345
+ ]
346
+ }
347
+ ]
348
+ }
349
+ ```