@mhmo91/schmancy 0.4.70 → 0.4.71
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/dist/{animated-text-CMITbL1U.js → animated-text-CBOMltQE.js} +3 -3
- package/dist/{animated-text-CMITbL1U.js.map → animated-text-CBOMltQE.js.map} +1 -1
- package/dist/{animated-text-DefVTtAq.cjs → animated-text-rE-SkQgz.cjs} +2 -2
- package/dist/{animated-text-DefVTtAq.cjs.map → animated-text-rE-SkQgz.cjs.map} +1 -1
- package/dist/animated-text.cjs +1 -1
- package/dist/animated-text.js +1 -1
- package/dist/area.cjs +1 -1
- package/dist/{area.component-CVnJvyK0.js → area.component-C86pi_TT.js} +3 -3
- package/dist/{area.component-CVnJvyK0.js.map → area.component-C86pi_TT.js.map} +1 -1
- package/dist/{area.component-CxVp3gZp.cjs → area.component-nX_dCv4R.cjs} +2 -2
- package/dist/{area.component-CxVp3gZp.cjs.map → area.component-nX_dCv4R.cjs.map} +1 -1
- package/dist/area.js +1 -1
- package/dist/{autocomplete-DTm45vy3.js → autocomplete-BAcf_l63.js} +3 -3
- package/dist/{autocomplete-DTm45vy3.js.map → autocomplete-BAcf_l63.js.map} +1 -1
- package/dist/{autocomplete-DZgp2iwf.cjs → autocomplete-CuO8ztL4.cjs} +2 -2
- package/dist/{autocomplete-DZgp2iwf.cjs.map → autocomplete-CuO8ztL4.cjs.map} +1 -1
- package/dist/autocomplete.cjs +1 -1
- package/dist/autocomplete.js +1 -1
- package/dist/{avatar-Cp3pBHJ0.js → avatar-D3gNBale.js} +50 -50
- package/dist/{avatar-Cp3pBHJ0.js.map → avatar-D3gNBale.js.map} +1 -1
- package/dist/{avatar-Dexe_o7K.cjs → avatar-N3BODeY1.cjs} +2 -2
- package/dist/{avatar-Dexe_o7K.cjs.map → avatar-N3BODeY1.cjs.map} +1 -1
- package/dist/badge.cjs +1 -1
- package/dist/badge.js +1 -1
- package/dist/{boat-DiWtHOng.js → boat-BQoWbDxu.js} +2 -2
- package/dist/{boat-DiWtHOng.js.map → boat-BQoWbDxu.js.map} +1 -1
- package/dist/{boat-DTLpjckT.cjs → boat-CWXlAq65.cjs} +2 -2
- package/dist/{boat-DTLpjckT.cjs.map → boat-CWXlAq65.cjs.map} +1 -1
- package/dist/boat.cjs +1 -1
- package/dist/boat.js +1 -1
- package/dist/busy.cjs +1 -1
- package/dist/busy.js +1 -1
- package/dist/button.cjs +1 -1
- package/dist/button.js +1 -1
- package/dist/card.cjs +1 -1
- package/dist/card.js +1 -1
- package/dist/{checkbox-CatOf2np.js → checkbox-DBO-neG5.js} +2 -2
- package/dist/{checkbox-CatOf2np.js.map → checkbox-DBO-neG5.js.map} +1 -1
- package/dist/{checkbox-DIbnOfL2.cjs → checkbox-DIYmuPtk.cjs} +2 -2
- package/dist/{checkbox-DIbnOfL2.cjs.map → checkbox-DIYmuPtk.cjs.map} +1 -1
- package/dist/checkbox.cjs +1 -1
- package/dist/checkbox.js +1 -1
- package/dist/{chips-DtPe3B90.cjs → chips-BYE5hQQr.cjs} +2 -2
- package/dist/{chips-DtPe3B90.cjs.map → chips-BYE5hQQr.cjs.map} +1 -1
- package/dist/{chips-zrYIeivA.js → chips-C_7proIN.js} +3 -3
- package/dist/{chips-zrYIeivA.js.map → chips-C_7proIN.js.map} +1 -1
- package/dist/chips.cjs +1 -1
- package/dist/chips.js +1 -1
- package/dist/code-highlight.cjs +1 -1
- package/dist/code-highlight.js +1 -1
- package/dist/{code-preview-CnfzlCWq.js → code-preview-CQ-EAz9F.js} +2 -2
- package/dist/{code-preview-CnfzlCWq.js.map → code-preview-CQ-EAz9F.js.map} +1 -1
- package/dist/{code-preview-DMIT_oTX.cjs → code-preview-CzcyBpl-.cjs} +2 -2
- package/dist/{code-preview-DMIT_oTX.cjs.map → code-preview-CzcyBpl-.cjs.map} +1 -1
- package/dist/components.cjs +1 -1
- package/dist/components.js +1 -1
- package/dist/content-drawer.cjs +1 -1
- package/dist/content-drawer.js +1 -1
- package/dist/{date-range-CAAjykaN.cjs → date-range-DCghMsV8.cjs} +2 -2
- package/dist/{date-range-CAAjykaN.cjs.map → date-range-DCghMsV8.cjs.map} +1 -1
- package/dist/{date-range-alXAlxtp.js → date-range-WqwMEh16.js} +4 -4
- package/dist/{date-range-alXAlxtp.js.map → date-range-WqwMEh16.js.map} +1 -1
- package/dist/{date-range-inline-GGJ-b5Ji.js → date-range-inline-JgIiOHQM.js} +3 -3
- package/dist/{date-range-inline-GGJ-b5Ji.js.map → date-range-inline-JgIiOHQM.js.map} +1 -1
- package/dist/{date-range-inline-DCYLf0py.cjs → date-range-inline-Z0ASWN4I.cjs} +2 -2
- package/dist/{date-range-inline-DCYLf0py.cjs.map → date-range-inline-Z0ASWN4I.cjs.map} +1 -1
- package/dist/date-range-inline.cjs +1 -1
- package/dist/date-range-inline.js +1 -1
- package/dist/date-range.cjs +1 -1
- package/dist/date-range.js +1 -1
- package/dist/{delay-DnJcmVMd.cjs → delay-Ew4cphs1.cjs} +2 -2
- package/dist/{delay-DnJcmVMd.cjs.map → delay-Ew4cphs1.cjs.map} +1 -1
- package/dist/{delay-BX1HD8i5.js → delay-LnWlFwkK.js} +2 -2
- package/dist/{delay-BX1HD8i5.js.map → delay-LnWlFwkK.js.map} +1 -1
- package/dist/delay.cjs +1 -1
- package/dist/delay.js +1 -1
- package/dist/{details-DJdIO2Op.js → details-BVEV0hUx.js} +2 -2
- package/dist/{details-DJdIO2Op.js.map → details-BVEV0hUx.js.map} +1 -1
- package/dist/{details-B-SW_Fin.cjs → details-C01m-iWQ.cjs} +2 -2
- package/dist/{details-B-SW_Fin.cjs.map → details-C01m-iWQ.cjs.map} +1 -1
- package/dist/details.cjs +1 -1
- package/dist/details.js +1 -1
- package/dist/{dialog-content-DBlOSail.cjs → dialog-content-BFmy9Sbo.cjs} +2 -2
- package/dist/{dialog-content-DBlOSail.cjs.map → dialog-content-BFmy9Sbo.cjs.map} +1 -1
- package/dist/{dialog-content-CDfCvaaL.js → dialog-content-B_w_iJyW.js} +4 -4
- package/dist/{dialog-content-CDfCvaaL.js.map → dialog-content-B_w_iJyW.js.map} +1 -1
- package/dist/{dialog-service-C4ko20zk.cjs → dialog-service-DS-aEjlX.cjs} +2 -2
- package/dist/{dialog-service-C4ko20zk.cjs.map → dialog-service-DS-aEjlX.cjs.map} +1 -1
- package/dist/{dialog-service-DoKaWw88.js → dialog-service-DwJ_7FB3.js} +2 -2
- package/dist/{dialog-service-DoKaWw88.js.map → dialog-service-DwJ_7FB3.js.map} +1 -1
- package/dist/dialog.cjs +1 -1
- package/dist/dialog.js +2 -2
- package/dist/{divider-xwxPJtAX.cjs → divider-BWG6TAr2.cjs} +2 -2
- package/dist/{divider-xwxPJtAX.cjs.map → divider-BWG6TAr2.cjs.map} +1 -1
- package/dist/{divider-TH_rknPx.js → divider-FkKYlJY3.js} +3 -3
- package/dist/{divider-TH_rknPx.js.map → divider-FkKYlJY3.js.map} +1 -1
- package/dist/divider.cjs +1 -1
- package/dist/divider.js +1 -1
- package/dist/{dropdown-content-CSwcyUQ9.js → dropdown-content-BStJGihR.js} +3 -3
- package/dist/{dropdown-content-CSwcyUQ9.js.map → dropdown-content-BStJGihR.js.map} +1 -1
- package/dist/{dropdown-content-BdHciywm.cjs → dropdown-content-m1aSF-Oh.cjs} +2 -2
- package/dist/{dropdown-content-BdHciywm.cjs.map → dropdown-content-m1aSF-Oh.cjs.map} +1 -1
- package/dist/dropdown.cjs +1 -1
- package/dist/dropdown.js +1 -1
- package/dist/{email-recipients-B9F9tbTi.cjs → email-recipients-CbZNnzoj.cjs} +90 -231
- package/dist/email-recipients-CbZNnzoj.cjs.map +1 -0
- package/dist/{email-recipients-BH3-shuO.js → email-recipients-CpghUhQ1.js} +86 -234
- package/dist/email-recipients-CpghUhQ1.js.map +1 -0
- package/dist/extra.cjs +1 -1
- package/dist/extra.js +1 -1
- package/dist/{flex-DpTCuZUb.cjs → flex-BNVtJlgu.cjs} +2 -2
- package/dist/{flex-DpTCuZUb.cjs.map → flex-BNVtJlgu.cjs.map} +1 -1
- package/dist/{flex-D8gAI_hG.js → flex-C6yj5Sxi.js} +2 -2
- package/dist/{flex-D8gAI_hG.js.map → flex-C6yj5Sxi.js.map} +1 -1
- package/dist/{form-BZjCPbr9.js → form-C85Qev2L.js} +2 -2
- package/dist/{form-BZjCPbr9.js.map → form-C85Qev2L.js.map} +1 -1
- package/dist/{form-CVRfikGe.cjs → form-ns7c4fcj.cjs} +2 -2
- package/dist/{form-CVRfikGe.cjs.map → form-ns7c4fcj.cjs.map} +1 -1
- package/dist/form.cjs +1 -1
- package/dist/form.js +1 -1
- package/dist/{formField.mixin-OMhAnwUx.cjs → formField.mixin-B3CXBJKX.cjs} +2 -2
- package/dist/{formField.mixin-OMhAnwUx.cjs.map → formField.mixin-B3CXBJKX.cjs.map} +1 -1
- package/dist/{formField.mixin-Ljb1niLU.js → formField.mixin-CKb_MTS7.js} +2 -2
- package/dist/{formField.mixin-Ljb1niLU.js.map → formField.mixin-CKb_MTS7.js.map} +1 -1
- package/dist/{icon-P0BSH_XX.js → icon-DKPLcbdu.js} +2 -2
- package/dist/{icon-P0BSH_XX.js.map → icon-DKPLcbdu.js.map} +1 -1
- package/dist/{icon-DX0oxbGd.cjs → icon-DUstfLaC.cjs} +2 -2
- package/dist/{icon-DX0oxbGd.cjs.map → icon-DUstfLaC.cjs.map} +1 -1
- package/dist/{icon-button-CHc7Bgkr.js → icon-button-CIkRej0r.js} +3 -3
- package/dist/{icon-button-CHc7Bgkr.js.map → icon-button-CIkRej0r.js.map} +1 -1
- package/dist/{icon-button-GkluRkNE.cjs → icon-button-DiRex-eZ.cjs} +2 -2
- package/dist/{icon-button-GkluRkNE.cjs.map → icon-button-DiRex-eZ.cjs.map} +1 -1
- package/dist/icons.cjs +1 -1
- package/dist/icons.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +49 -49
- package/dist/{input-qI9CER23.cjs → input-B7MqsI2h.cjs} +2 -2
- package/dist/{input-qI9CER23.cjs.map → input-B7MqsI2h.cjs.map} +1 -1
- package/dist/{input-BxzFCM0j.js → input-DODcsAZu.js} +3 -3
- package/dist/{input-BxzFCM0j.js.map → input-DODcsAZu.js.map} +1 -1
- package/dist/input.cjs +1 -1
- package/dist/input.js +1 -1
- package/dist/layout.cjs +1 -1
- package/dist/layout.js +1 -1
- package/dist/{list-CD6Ue96E.js → list-Cx6tpiFE.js} +2 -2
- package/dist/{list-CD6Ue96E.js.map → list-Cx6tpiFE.js.map} +1 -1
- package/dist/{list-BBCV7EZh.cjs → list-DxduK4sb.cjs} +2 -2
- package/dist/{list-BBCV7EZh.cjs.map → list-DxduK4sb.cjs.map} +1 -1
- package/dist/list.cjs +1 -1
- package/dist/list.js +1 -1
- package/dist/{litElement.mixin-D8xYT3dQ.cjs → litElement.mixin-B12Y4mEr.cjs} +2 -2
- package/dist/{litElement.mixin-D8xYT3dQ.cjs.map → litElement.mixin-B12Y4mEr.cjs.map} +1 -1
- package/dist/{litElement.mixin-BSsJVIyj.js → litElement.mixin-BZ8iGvPl.js} +2 -2
- package/dist/{litElement.mixin-BSsJVIyj.js.map → litElement.mixin-BZ8iGvPl.js.map} +1 -1
- package/dist/mailbox.cjs +1 -1
- package/dist/mailbox.js +1 -1
- package/dist/{map-D637QcQS.js → map-dT8yp1iK.js} +2 -2
- package/dist/{map-D637QcQS.js.map → map-dT8yp1iK.js.map} +1 -1
- package/dist/{map-CVeIZTSC.cjs → map-sgCf8pYD.cjs} +2 -2
- package/dist/{map-CVeIZTSC.cjs.map → map-sgCf8pYD.cjs.map} +1 -1
- package/dist/map.cjs +1 -1
- package/dist/map.js +1 -1
- package/dist/{media-CXv34EUE.js → media-CgH0D5rY.js} +2 -2
- package/dist/{media-CXv34EUE.js.map → media-CgH0D5rY.js.map} +1 -1
- package/dist/{media-ng9D3LV4.cjs → media-CwjupDLj.cjs} +2 -2
- package/dist/{media-ng9D3LV4.cjs.map → media-CwjupDLj.cjs.map} +1 -1
- package/dist/{menu-BKqFx_Sg.cjs → menu-X25Q7tpY.cjs} +2 -2
- package/dist/{menu-BKqFx_Sg.cjs.map → menu-X25Q7tpY.cjs.map} +1 -1
- package/dist/{menu-B5aEANFb.js → menu-oZRtmhVd.js} +3 -3
- package/dist/{menu-B5aEANFb.js.map → menu-oZRtmhVd.js.map} +1 -1
- package/dist/menu.cjs +1 -1
- package/dist/menu.js +1 -1
- package/dist/nav-drawer.cjs +1 -1
- package/dist/nav-drawer.js +1 -1
- package/dist/{notification-service-BL_SA5r6.cjs → notification-service-kLTt3JtW.cjs} +2 -2
- package/dist/{notification-service-BL_SA5r6.cjs.map → notification-service-kLTt3JtW.cjs.map} +1 -1
- package/dist/{notification-service-BO0LiH62.js → notification-service-y0T4rXdS.js} +4 -4
- package/dist/{notification-service-BO0LiH62.js.map → notification-service-y0T4rXdS.js.map} +1 -1
- package/dist/notification.cjs +1 -1
- package/dist/notification.js +2 -2
- package/dist/{notify-sR_wpqSL.js → notify-BnjvURrc.js} +2 -2
- package/dist/{notify-sR_wpqSL.js.map → notify-BnjvURrc.js.map} +1 -1
- package/dist/{notify-DiIsT6_U.cjs → notify-EGStToeW.cjs} +2 -2
- package/dist/{notify-DiIsT6_U.cjs.map → notify-EGStToeW.cjs.map} +1 -1
- package/dist/{option-Wdzvm3xE.js → option-CD1NSUXu.js} +2 -2
- package/dist/{option-Wdzvm3xE.js.map → option-CD1NSUXu.js.map} +1 -1
- package/dist/{option-Bna3I9yk.cjs → option-D4_WBCWz.cjs} +2 -2
- package/dist/{option-Bna3I9yk.cjs.map → option-D4_WBCWz.cjs.map} +1 -1
- package/dist/option.cjs +1 -1
- package/dist/option.js +1 -1
- package/dist/{payment-card-form-D_F0Qk8m.cjs → payment-card-form-96Rw6cLf.cjs} +2 -2
- package/dist/{payment-card-form-D_F0Qk8m.cjs.map → payment-card-form-96Rw6cLf.cjs.map} +1 -1
- package/dist/{payment-card-form-BanESqh4.js → payment-card-form-lWlhuDb3.js} +3 -3
- package/dist/{payment-card-form-BanESqh4.js.map → payment-card-form-lWlhuDb3.js.map} +1 -1
- package/dist/{progress-DWUvgJRQ.cjs → progress-BkxGzGOm.cjs} +2 -2
- package/dist/{progress-DWUvgJRQ.cjs.map → progress-BkxGzGOm.cjs.map} +1 -1
- package/dist/{progress-lCHm-5Qd.js → progress-DGk9tC4y.js} +2 -2
- package/dist/{progress-lCHm-5Qd.js.map → progress-DGk9tC4y.js.map} +1 -1
- package/dist/progress.cjs +1 -1
- package/dist/progress.js +1 -1
- package/dist/{radio-button-CXX8rL5Z.js → radio-button-DHM38A7h.js} +3 -3
- package/dist/{radio-button-CXX8rL5Z.js.map → radio-button-DHM38A7h.js.map} +1 -1
- package/dist/{radio-button-BgvPoY5w.cjs → radio-button-w9ZxzEPa.cjs} +2 -2
- package/dist/{radio-button-BgvPoY5w.cjs.map → radio-button-w9ZxzEPa.cjs.map} +1 -1
- package/dist/radio-group.cjs +1 -1
- package/dist/radio-group.js +1 -1
- package/dist/{schmancy-steps-container-WmpbfnAv.cjs → schmancy-steps-container-CPSL_8H0.cjs} +2 -2
- package/dist/{schmancy-steps-container-WmpbfnAv.cjs.map → schmancy-steps-container-CPSL_8H0.cjs.map} +1 -1
- package/dist/{schmancy-steps-container-dAv2AQ1o.js → schmancy-steps-container-WYO4SOrb.js} +2 -2
- package/dist/{schmancy-steps-container-dAv2AQ1o.js.map → schmancy-steps-container-WYO4SOrb.js.map} +1 -1
- package/dist/{select-C4ysSiyb.cjs → select-CxCcgqW_.cjs} +2 -2
- package/dist/{select-C4ysSiyb.cjs.map → select-CxCcgqW_.cjs.map} +1 -1
- package/dist/{select-BFHRO7D1.js → select-bDAzyQOZ.js} +3 -3
- package/dist/{select-BFHRO7D1.js.map → select-bDAzyQOZ.js.map} +1 -1
- package/dist/select.cjs +1 -1
- package/dist/select.js +1 -1
- package/dist/{sheet-BrWQNETX.cjs → sheet-Bm0ukLXt.cjs} +2 -2
- package/dist/{sheet-BrWQNETX.cjs.map → sheet-Bm0ukLXt.cjs.map} +1 -1
- package/dist/{sheet-Bm7AdMAf.js → sheet-pO6PmiAf.js} +4 -4
- package/dist/{sheet-Bm7AdMAf.js.map → sheet-pO6PmiAf.js.map} +1 -1
- package/dist/sheet.cjs +1 -1
- package/dist/sheet.js +2 -2
- package/dist/{sheet.service-DGYkGKzX.cjs → sheet.service-DV9xNhS8.cjs} +2 -2
- package/dist/{sheet.service-DGYkGKzX.cjs.map → sheet.service-DV9xNhS8.cjs.map} +1 -1
- package/dist/{sheet.service-CgKnOzZN.js → sheet.service-ieSXeqCj.js} +2 -2
- package/dist/{sheet.service-CgKnOzZN.js.map → sheet.service-ieSXeqCj.js.map} +1 -1
- package/dist/{slider-zzIaOtVV.cjs → slider-BwXXp74f.cjs} +2 -2
- package/dist/{slider-zzIaOtVV.cjs.map → slider-BwXXp74f.cjs.map} +1 -1
- package/dist/{slider-DtMki7JS.js → slider-CxZGMYF-.js} +3 -3
- package/dist/{slider-DtMki7JS.js.map → slider-CxZGMYF-.js.map} +1 -1
- package/dist/slider.cjs +1 -1
- package/dist/slider.js +1 -1
- package/dist/{spinner-yQpcUe1F.js → spinner-b3VWC6It.js} +2 -2
- package/dist/{spinner-yQpcUe1F.js.map → spinner-b3VWC6It.js.map} +1 -1
- package/dist/{spinner-DpiguU2b.cjs → spinner-nN77H00p.cjs} +2 -2
- package/dist/{spinner-DpiguU2b.cjs.map → spinner-nN77H00p.cjs.map} +1 -1
- package/dist/steps.cjs +1 -1
- package/dist/steps.js +1 -1
- package/dist/{surface-uQy_g3S3.js → surface-C2WjztRc.js} +2 -2
- package/dist/{surface-uQy_g3S3.js.map → surface-C2WjztRc.js.map} +1 -1
- package/dist/{surface-BQkqeqQL.cjs → surface-Cm8zYK5d.cjs} +2 -2
- package/dist/{surface-BQkqeqQL.cjs.map → surface-Cm8zYK5d.cjs.map} +1 -1
- package/dist/surface.cjs +1 -1
- package/dist/surface.js +1 -1
- package/dist/{table-P5rTnqC_.cjs → table-BfhuaB9J.cjs} +2 -2
- package/dist/{table-P5rTnqC_.cjs.map → table-BfhuaB9J.cjs.map} +1 -1
- package/dist/{table-D_NfwO-r.js → table-Dp7npAuy.js} +2 -2
- package/dist/{table-D_NfwO-r.js.map → table-Dp7npAuy.js.map} +1 -1
- package/dist/table.cjs +1 -1
- package/dist/table.js +1 -1
- package/dist/{tabs-compatibility-BdJ2pRM4.cjs → tabs-compatibility-CA-wWRoe.cjs} +2 -2
- package/dist/{tabs-compatibility-BdJ2pRM4.cjs.map → tabs-compatibility-CA-wWRoe.cjs.map} +1 -1
- package/dist/{tabs-compatibility-8_k_UM2J.js → tabs-compatibility-U4cq8X3I.js} +2 -2
- package/dist/{tabs-compatibility-8_k_UM2J.js.map → tabs-compatibility-U4cq8X3I.js.map} +1 -1
- package/dist/tabs.cjs +1 -1
- package/dist/tabs.js +1 -1
- package/dist/tailwind.mixin-BlZIIaOE.cjs +2 -0
- package/dist/{tailwind.mixin-BFHdirqy.cjs.map → tailwind.mixin-BlZIIaOE.cjs.map} +1 -1
- package/dist/tailwind.mixin-D2DVHS9V.js +43 -0
- package/dist/{tailwind.mixin-C3MkWn0v.js.map → tailwind.mixin-D2DVHS9V.js.map} +1 -1
- package/dist/teleport.cjs +1 -1
- package/dist/teleport.js +1 -1
- package/dist/{textarea-BIa-VJgn.js → textarea-BRNj3tvi.js} +2 -2
- package/dist/{textarea-BIa-VJgn.js.map → textarea-BRNj3tvi.js.map} +1 -1
- package/dist/{textarea-d0QK9I_W.cjs → textarea-CxZKoXaU.cjs} +2 -2
- package/dist/{textarea-d0QK9I_W.cjs.map → textarea-CxZKoXaU.cjs.map} +1 -1
- package/dist/textarea.cjs +1 -1
- package/dist/textarea.js +1 -1
- package/dist/{theme-button-2R4gqt1Z.cjs → theme-button-MrIoOFEB.cjs} +2 -2
- package/dist/{theme-button-2R4gqt1Z.cjs.map → theme-button-MrIoOFEB.cjs.map} +1 -1
- package/dist/{theme-button-BXkmh4nn.js → theme-button-N_Wt3bos.js} +2 -2
- package/dist/{theme-button-BXkmh4nn.js.map → theme-button-N_Wt3bos.js.map} +1 -1
- package/dist/theme-button.cjs +1 -1
- package/dist/theme-button.js +1 -1
- package/dist/theme.cjs +1 -1
- package/dist/{theme.component-Cta_ZGr5.js → theme.component-6VfET_t-.js} +2 -2
- package/dist/{theme.component-Cta_ZGr5.js.map → theme.component-6VfET_t-.js.map} +1 -1
- package/dist/{theme.component-DHuNvHEP.cjs → theme.component-B_EubPsq.cjs} +2 -2
- package/dist/{theme.component-DHuNvHEP.cjs.map → theme.component-B_EubPsq.cjs.map} +1 -1
- package/dist/theme.js +1 -1
- package/dist/{timezone-DZMzss0f.cjs → timezone-BVd9UEba.cjs} +2 -2
- package/dist/{timezone-DZMzss0f.cjs.map → timezone-BVd9UEba.cjs.map} +1 -1
- package/dist/{timezone-DLuRf9_q.js → timezone-DR_4m9Cc.js} +3 -3
- package/dist/{timezone-DLuRf9_q.js.map → timezone-DR_4m9Cc.js.map} +1 -1
- package/dist/{tooltip-BbSE2kUb.js → tooltip-BpPHc8Wr.js} +2 -2
- package/dist/{tooltip-BbSE2kUb.js.map → tooltip-BpPHc8Wr.js.map} +1 -1
- package/dist/{tooltip-CK-XmbzO.cjs → tooltip-DOQVLRaH.cjs} +2 -2
- package/dist/{tooltip-CK-XmbzO.cjs.map → tooltip-DOQVLRaH.cjs.map} +1 -1
- package/dist/tooltip.cjs +1 -1
- package/dist/tooltip.js +1 -1
- package/dist/{tree-COFL10bn.cjs → tree-BANkyLn7.cjs} +2 -2
- package/dist/{tree-COFL10bn.cjs.map → tree-BANkyLn7.cjs.map} +1 -1
- package/dist/{tree-DQJIF5Zw.js → tree-C5zu8wXc.js} +2 -2
- package/dist/{tree-DQJIF5Zw.js.map → tree-C5zu8wXc.js.map} +1 -1
- package/dist/tree.cjs +1 -1
- package/dist/tree.js +1 -1
- package/dist/{typewriter-DWfh9dQx.js → typewriter-CdztqkoR.js} +4 -4
- package/dist/{typewriter-DWfh9dQx.js.map → typewriter-CdztqkoR.js.map} +1 -1
- package/dist/{typewriter-DTuH_jfH.cjs → typewriter-DS0D0UZM.cjs} +2 -2
- package/dist/{typewriter-DTuH_jfH.cjs.map → typewriter-DS0D0UZM.cjs.map} +1 -1
- package/dist/typewriter.cjs +1 -1
- package/dist/typewriter.js +1 -1
- package/dist/{typography-CVIqatrO.cjs → typography-C8vZfuLF.cjs} +2 -2
- package/dist/{typography-CVIqatrO.cjs.map → typography-C8vZfuLF.cjs.map} +1 -1
- package/dist/{typography-CbfOMwD6.js → typography-o9FJ6Lzo.js} +2 -2
- package/dist/{typography-CbfOMwD6.js.map → typography-o9FJ6Lzo.js.map} +1 -1
- package/dist/typography.cjs +1 -1
- package/dist/typography.js +1 -1
- package/package.json +1 -1
- package/types/src/mailbox/email-template-picker.d.ts +4 -14
- package/dist/email-recipients-B9F9tbTi.cjs.map +0 -1
- package/dist/email-recipients-BH3-shuO.js.map +0 -1
- package/dist/tailwind.mixin-BFHdirqy.cjs +0 -2
- package/dist/tailwind.mixin-C3MkWn0v.js +0 -43
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
"use strict";require("rxjs"),require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const
|
|
1
|
+
"use strict";require("rxjs"),require("lit/directives/class-map.js"),require("lit/directives/style-map.js");const $=require("./litElement.mixin-B12Y4mEr.cjs"),R=require("./tailwind.mixin-BlZIIaOE.cjs"),c=require("lit/decorators.js"),o=require("lit"),d=require("lit/directives/when.js"),g=require("lit/directives/ref.js"),S=require("lit/directives/repeat.js"),u=require("./notification-service-kLTt3JtW.cjs");require("./dialog-content-BFmy9Sbo.cjs");const k=require("./dialog-service-DS-aEjlX.cjs"),E=require("./sheet.service-DV9xNhS8.cjs");var C=Object.defineProperty,T=Object.getOwnPropertyDescriptor,m=(e,t,i,s)=>{for(var a,n=s>1?void 0:s?T(t,i):t,r=e.length-1;r>=0;r--)(a=e[r])&&(n=(s?a(t,i,n):a(n))||n);return s&&n&&C(t,i,n),n};exports.SchmancyMailbox=class extends $.$LitElement(o.css`
|
|
2
2
|
:host {
|
|
3
3
|
display: block;
|
|
4
4
|
height: 100%;
|
|
5
5
|
}
|
|
6
|
-
`){constructor(){super(...arguments),this.config={},this.templates=[],this.importSources=[],this.disabled=!1,this.recipientsTitle="Recipients",this.recipientsEmptyTitle="No recipients yet",this.recipientsEmptyMessage="Import from sources or upload a CSV",this.enableCsvImport=!0,this.enableDragDrop=!0,this.recipients=[],this.selectedRecipients=[],this.subject="",this.body="",this.templateId=null,this.attachments=[],this.isSending=!1,this.handleEmailsImported=e=>{const{emails:t}=e.detail,i=[...new Set([...this.recipients,...t])],s=t.filter(a=>!this.recipients.includes(a));this.recipients=i,this.selectedRecipients=[...new Set([...this.selectedRecipients,...s])],this.dispatchEvent(new CustomEvent("emails-imported",{detail:{emails:s,source:e.detail.source},bubbles:!0,composed:!0}))},this.handleRecipientRemoved=e=>{const{email:t}=e.detail;this.recipients=this.recipients.filter(i=>i!==t),this.selectedRecipients=this.selectedRecipients.filter(i=>i!==t),this.dispatchEvent(new CustomEvent("recipient-removed",{detail:{email:t},bubbles:!0,composed:!0}))},this.handleRecipientsCleared=()=>{this.recipients=[],this.selectedRecipients=[],this.dispatchEvent(new CustomEvent("recipients-cleared",{bubbles:!0,composed:!0}))},this.handleSelectionChanged=e=>{const{selectedEmails:t}=e.detail;this.selectedRecipients=t,this.dispatchEvent(new CustomEvent("selection-changed",{detail:{selectedEmails:t},bubbles:!0,composed:!0}))},this.handleEditorChange=e=>{const{subject:t,body:i,templateId:s,attachments:a}=e.detail;this.subject=t,this.body=i,this.templateId=s,this.attachments=a,this.dispatchEvent(new CustomEvent("compose-changed",{detail:{subject:t,body:i,templateId:s,attachments:a},bubbles:!0,composed:!0}))},this.handleSend=async()=>{if(this.selectedRecipients.length!==0)if(this.subject.trim())if(this.body.trim()){this.isSending=!0;try{const e={recipients:this.selectedRecipients,subject:this.subject,body:this.body,attachments:this.attachments,templateId:this.templateId};this.dispatchEvent(new CustomEvent("send-email",{detail:{request:e},bubbles:!0,composed:!0}))}catch(e){this.dispatchEvent(new CustomEvent("send-error",{detail:{error:e instanceof Error?e.message:"Failed to send email"},bubbles:!0,composed:!0}))}finally{this.isSending=!1}}else this.dispatchEvent(new CustomEvent("send-error",{detail:{error:"Please enter a message body"},bubbles:!0,composed:!0}));else this.dispatchEvent(new CustomEvent("send-error",{detail:{error:"Please enter a subject"},bubbles:!0,composed:!0}));else this.dispatchEvent(new CustomEvent("send-error",{detail:{error:"Please select at least one recipient"},bubbles:!0,composed:!0}))}}connectedCallback(){super.connectedCallback(),this.setSending(this.disabled)}updated(e){super.updated(e),e.has("disabled")&&this.setSending(this.disabled)}addRecipients(e){const t=[...new Set([...this.recipients,...e])],i=e.filter(s=>!this.recipients.includes(s));this.recipients=t,this.selectedRecipients=[...new Set([...this.selectedRecipients,...i])]}setSubject(e){this.subject=e}setBody(e){this.body=e}setTemplate(e){this.templateId=e}clearCompose(){this.recipients=[],this.selectedRecipients=[],this.subject="",this.body="",this.templateId=null,this.attachments=[]}setSending(e){this.isSending=e}render(){const e=this.selectedRecipients.length>0&&this.subject.trim()&&this.body.trim()&&!this.isSending&&!this.disabled;return
|
|
6
|
+
`){constructor(){super(...arguments),this.config={},this.templates=[],this.importSources=[],this.disabled=!1,this.recipientsTitle="Recipients",this.recipientsEmptyTitle="No recipients yet",this.recipientsEmptyMessage="Import from sources or upload a CSV",this.enableCsvImport=!0,this.enableDragDrop=!0,this.recipients=[],this.selectedRecipients=[],this.subject="",this.body="",this.templateId=null,this.attachments=[],this.isSending=!1,this.handleEmailsImported=e=>{const{emails:t}=e.detail,i=[...new Set([...this.recipients,...t])],s=t.filter(a=>!this.recipients.includes(a));this.recipients=i,this.selectedRecipients=[...new Set([...this.selectedRecipients,...s])],this.dispatchEvent(new CustomEvent("emails-imported",{detail:{emails:s,source:e.detail.source},bubbles:!0,composed:!0}))},this.handleRecipientRemoved=e=>{const{email:t}=e.detail;this.recipients=this.recipients.filter(i=>i!==t),this.selectedRecipients=this.selectedRecipients.filter(i=>i!==t),this.dispatchEvent(new CustomEvent("recipient-removed",{detail:{email:t},bubbles:!0,composed:!0}))},this.handleRecipientsCleared=()=>{this.recipients=[],this.selectedRecipients=[],this.dispatchEvent(new CustomEvent("recipients-cleared",{bubbles:!0,composed:!0}))},this.handleSelectionChanged=e=>{const{selectedEmails:t}=e.detail;this.selectedRecipients=t,this.dispatchEvent(new CustomEvent("selection-changed",{detail:{selectedEmails:t},bubbles:!0,composed:!0}))},this.handleEditorChange=e=>{const{subject:t,body:i,templateId:s,attachments:a}=e.detail;this.subject=t,this.body=i,this.templateId=s,this.attachments=a,this.dispatchEvent(new CustomEvent("compose-changed",{detail:{subject:t,body:i,templateId:s,attachments:a},bubbles:!0,composed:!0}))},this.handleSend=async()=>{if(this.selectedRecipients.length!==0)if(this.subject.trim())if(this.body.trim()){this.isSending=!0;try{const e={recipients:this.selectedRecipients,subject:this.subject,body:this.body,attachments:this.attachments,templateId:this.templateId};this.dispatchEvent(new CustomEvent("send-email",{detail:{request:e},bubbles:!0,composed:!0}))}catch(e){this.dispatchEvent(new CustomEvent("send-error",{detail:{error:e instanceof Error?e.message:"Failed to send email"},bubbles:!0,composed:!0}))}finally{this.isSending=!1}}else this.dispatchEvent(new CustomEvent("send-error",{detail:{error:"Please enter a message body"},bubbles:!0,composed:!0}));else this.dispatchEvent(new CustomEvent("send-error",{detail:{error:"Please enter a subject"},bubbles:!0,composed:!0}));else this.dispatchEvent(new CustomEvent("send-error",{detail:{error:"Please select at least one recipient"},bubbles:!0,composed:!0}))}}connectedCallback(){super.connectedCallback(),this.setSending(this.disabled)}updated(e){super.updated(e),e.has("disabled")&&this.setSending(this.disabled)}addRecipients(e){const t=[...new Set([...this.recipients,...e])],i=e.filter(s=>!this.recipients.includes(s));this.recipients=t,this.selectedRecipients=[...new Set([...this.selectedRecipients,...i])]}setSubject(e){this.subject=e}setBody(e){this.body=e}setTemplate(e){this.templateId=e}clearCompose(){this.recipients=[],this.selectedRecipients=[],this.subject="",this.body="",this.templateId=null,this.attachments=[]}setSending(e){this.isSending=e}render(){const e=this.selectedRecipients.length>0&&this.subject.trim()&&this.body.trim()&&!this.isSending&&!this.disabled;return o.html`
|
|
7
7
|
<!-- Main Layout Container -->
|
|
8
8
|
<div class="flex flex-col h-full gap-6 p-6">
|
|
9
9
|
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
<schmancy-typography type="body" token="sm" class="font-medium">
|
|
51
51
|
${this.selectedRecipients.length} recipient${this.selectedRecipients.length===1?"":"s"} selected
|
|
52
52
|
</schmancy-typography>
|
|
53
|
-
${d.when(this.attachments.length>0,()=>
|
|
53
|
+
${d.when(this.attachments.length>0,()=>o.html`
|
|
54
54
|
<schmancy-typography type="body" token="xs">
|
|
55
55
|
${this.attachments.length} attachment${this.attachments.length===1?"":"s"}
|
|
56
56
|
</schmancy-typography>
|
|
@@ -90,9 +90,9 @@
|
|
|
90
90
|
@recipients-cleared=${this.handleRecipientsCleared}
|
|
91
91
|
@selection-changed=${this.handleSelectionChanged}
|
|
92
92
|
></schmancy-email-recipients>
|
|
93
|
-
`}},m([
|
|
93
|
+
`}},m([c.property({type:Object})],exports.SchmancyMailbox.prototype,"config",2),m([c.property({type:Array})],exports.SchmancyMailbox.prototype,"templates",2),m([c.property({type:Array})],exports.SchmancyMailbox.prototype,"importSources",2),m([c.property({type:Boolean})],exports.SchmancyMailbox.prototype,"disabled",2),m([c.property({type:String})],exports.SchmancyMailbox.prototype,"recipientsTitle",2),m([c.property({type:String})],exports.SchmancyMailbox.prototype,"recipientsEmptyTitle",2),m([c.property({type:String})],exports.SchmancyMailbox.prototype,"recipientsEmptyMessage",2),m([c.property({type:Boolean})],exports.SchmancyMailbox.prototype,"enableCsvImport",2),m([c.property({type:Boolean})],exports.SchmancyMailbox.prototype,"enableDragDrop",2),m([c.state()],exports.SchmancyMailbox.prototype,"recipients",2),m([c.state()],exports.SchmancyMailbox.prototype,"selectedRecipients",2),m([c.state()],exports.SchmancyMailbox.prototype,"subject",2),m([c.state()],exports.SchmancyMailbox.prototype,"body",2),m([c.state()],exports.SchmancyMailbox.prototype,"templateId",2),m([c.state()],exports.SchmancyMailbox.prototype,"attachments",2),m([c.state()],exports.SchmancyMailbox.prototype,"isSending",2),exports.SchmancyMailbox=m([c.customElement("schmancy-mailbox")],exports.SchmancyMailbox);var I=Object.getOwnPropertyDescriptor;exports.SchmancyEmailLayoutSelector=class extends R.TailwindElement(){constructor(){super(...arguments),this.layouts=[{id:"columns-2",icon:"view_week",label:"2 Col"},{id:"columns-3",icon:"view_column",label:"3 Col"},{id:"sidebar-left",icon:"view_sidebar",label:"Left"},{id:"sidebar-right",icon:"view_sidebar",label:"Right",flipped:!0},{id:"image-row",icon:"collections",label:"Images"}]}selectLayout(e){this.dispatchEvent(new CustomEvent("layout-select",{detail:{layout:e},bubbles:!0,composed:!0}))}render(){return o.html`
|
|
94
94
|
<div class="grid p-3 gap-2">
|
|
95
|
-
${this.layouts.map(e=>
|
|
95
|
+
${this.layouts.map(e=>o.html`
|
|
96
96
|
<schmancy-button
|
|
97
97
|
variant="outlined"
|
|
98
98
|
@click=${()=>this.selectLayout(e.id)}
|
|
@@ -108,20 +108,18 @@
|
|
|
108
108
|
</schmancy-button>
|
|
109
109
|
`)}
|
|
110
110
|
</div>
|
|
111
|
-
`}},exports.SchmancyEmailLayoutSelector=((e,t,i,s)=>{for(var a,n=s>1?void 0:s?I(t,i):t,
|
|
111
|
+
`}},exports.SchmancyEmailLayoutSelector=((e,t,i,s)=>{for(var a,n=s>1?void 0:s?I(t,i):t,r=e.length-1;r>=0;r--)(a=e[r])&&(n=a(n)||n);return n})([c.customElement("schmancy-email-layout-selector")],exports.SchmancyEmailLayoutSelector);var A=Object.defineProperty,D=Object.getOwnPropertyDescriptor,w=(e,t,i,s)=>{for(var a,n=s>1?void 0:s?D(t,i):t,r=e.length-1;r>=0;r--)(a=e[r])&&(n=(s?a(t,i,n):a(n))||n);return s&&n&&A(t,i,n),n};let x=class extends $.$LitElement(o.css`
|
|
112
112
|
:host {
|
|
113
113
|
display: block;
|
|
114
114
|
}
|
|
115
|
-
`){constructor(){super(...arguments),this.templates=[],this.searchQuery="",this.
|
|
115
|
+
`){constructor(){super(...arguments),this.templates=[],this.searchQuery="",this.filteredTemplates=[],this.selectedCategory="all",this.handleSearch=e=>{const t=e.target;this.searchQuery=t.value},this.handleCategorySelect=e=>{this.selectedCategory=e,this.updateFilteredTemplates()},this.selectTemplate=e=>{this.dispatchEvent(new CustomEvent("template-selected",{detail:e,bubbles:!0,composed:!0})),E.sheet.dismiss()},this.close=()=>{E.sheet.dismiss()}}connectedCallback(){super.connectedCallback(),this.updateFilteredTemplates()}updated(e){(e.has("templates")||e.has("searchQuery")||e.has("selectedCategory"))&&this.updateFilteredTemplates()}get categories(){const e=new Set;return this.templates.forEach(t=>{t.category&&e.add(t.category)}),["all",...Array.from(e)]}updateFilteredTemplates(){let e=[...this.templates];if(this.selectedCategory!=="all"&&(e=e.filter(t=>t.category===this.selectedCategory)),this.searchQuery.trim()){const t=this.searchQuery.toLowerCase();e=e.filter(i=>i.name.toLowerCase().includes(t)||i.category?.toLowerCase().includes(t)||i.description?.toLowerCase().includes(t))}this.filteredTemplates=e}render(){return o.html`
|
|
116
116
|
<div class="flex flex-col h-full overflow-hidden">
|
|
117
117
|
<!-- Header -->
|
|
118
118
|
<div class="flex items-center justify-between px-6 py-4 border-b border-outline-variant">
|
|
119
119
|
<div class="flex items-center gap-3">
|
|
120
|
-
<schmancy-icon size="24px" class="text-primary">
|
|
121
|
-
${this.showPreview?"preview":"mail"}
|
|
122
|
-
</schmancy-icon>
|
|
120
|
+
<schmancy-icon size="24px" class="text-primary">mail</schmancy-icon>
|
|
123
121
|
<schmancy-typography type="headline" token="md">
|
|
124
|
-
|
|
122
|
+
Choose Email Template
|
|
125
123
|
</schmancy-typography>
|
|
126
124
|
</div>
|
|
127
125
|
<schmancy-button
|
|
@@ -135,55 +133,23 @@
|
|
|
135
133
|
|
|
136
134
|
<!-- Body -->
|
|
137
135
|
<div class="flex-1 flex flex-col overflow-hidden">
|
|
138
|
-
${
|
|
139
|
-
</div>
|
|
140
|
-
|
|
141
|
-
<!-- Footer -->
|
|
142
|
-
<div class="flex justify-between px-6 py-4 border-t border-outline-variant bg-surface-containerLow">
|
|
143
|
-
${d.when(this.showPreview,()=>c.html`
|
|
144
|
-
<schmancy-button
|
|
145
|
-
variant="outlined"
|
|
146
|
-
@click=${this.backToList}
|
|
147
|
-
class="px-6 py-3"
|
|
148
|
-
>
|
|
149
|
-
<schmancy-icon slot="prefix">arrow_back</schmancy-icon>
|
|
150
|
-
Back to Templates
|
|
151
|
-
</schmancy-button>
|
|
152
|
-
<schmancy-button
|
|
153
|
-
variant="filled"
|
|
154
|
-
@click=${this.confirmSelection}
|
|
155
|
-
class="px-8 py-3 bg-primary text-primary-on shadow-md hover:shadow-lg transition-shadow"
|
|
156
|
-
>
|
|
157
|
-
<schmancy-icon slot="prefix">check_circle</schmancy-icon>
|
|
158
|
-
Use This Template
|
|
159
|
-
</schmancy-button>
|
|
160
|
-
`,()=>c.html`
|
|
161
|
-
<div class="flex gap-3">
|
|
162
|
-
<schmancy-button
|
|
163
|
-
variant="text"
|
|
164
|
-
@click=${this.close}
|
|
165
|
-
class="px-6 py-3"
|
|
166
|
-
>
|
|
167
|
-
Cancel
|
|
168
|
-
</schmancy-button>
|
|
169
|
-
</div>
|
|
170
|
-
`)}
|
|
136
|
+
${this.renderTemplateList()}
|
|
171
137
|
</div>
|
|
172
138
|
</div>
|
|
173
|
-
`}renderTemplateList(){return
|
|
139
|
+
`}renderTemplateList(){return o.html`
|
|
174
140
|
<!-- Search and Filter Bar -->
|
|
175
141
|
<div class="px-6 py-4 border-b border-outline-variant bg-surface-containerLow">
|
|
176
142
|
<div class="flex flex-col gap-4">
|
|
177
143
|
<!-- Search Input -->
|
|
178
144
|
<schmancy-input
|
|
179
145
|
type="search"
|
|
180
|
-
placeholder="Search templates
|
|
146
|
+
placeholder="Search templates..."
|
|
181
147
|
.value=${this.searchQuery}
|
|
182
148
|
@input=${this.handleSearch}
|
|
183
149
|
class="w-full"
|
|
184
150
|
>
|
|
185
151
|
<schmancy-icon slot="prefix" size="20px" class="text-surface-onVariant">search</schmancy-icon>
|
|
186
|
-
${d.when(this.searchQuery,()=>
|
|
152
|
+
${d.when(this.searchQuery,()=>o.html`
|
|
187
153
|
<schmancy-button
|
|
188
154
|
slot="suffix"
|
|
189
155
|
variant="text"
|
|
@@ -196,9 +162,9 @@
|
|
|
196
162
|
</schmancy-input>
|
|
197
163
|
|
|
198
164
|
<!-- Category Filter -->
|
|
199
|
-
${d.when(this.categories.length>1,()=>
|
|
165
|
+
${d.when(this.categories.length>1,()=>o.html`
|
|
200
166
|
<div class="flex gap-2 flex-wrap">
|
|
201
|
-
${
|
|
167
|
+
${S.repeat(this.categories,e=>e,e=>o.html`
|
|
202
168
|
<schmancy-chip
|
|
203
169
|
class="cursor-pointer transition-all hover:shadow-sm ${this.selectedCategory===e?"bg-primary text-primary-on":"border border-outline"}"
|
|
204
170
|
@click=${()=>this.handleCategorySelect(e)}
|
|
@@ -211,66 +177,54 @@
|
|
|
211
177
|
</div>
|
|
212
178
|
</div>
|
|
213
179
|
|
|
214
|
-
<!-- Template List -->
|
|
180
|
+
<!-- Template List with Previews -->
|
|
215
181
|
<div class="flex-1 overflow-y-auto px-6 py-6">
|
|
216
|
-
${d.when(this.filteredTemplates.length>0,()=>
|
|
217
|
-
<div class="space-y-
|
|
218
|
-
${
|
|
182
|
+
${d.when(this.filteredTemplates.length>0,()=>o.html`
|
|
183
|
+
<div class="space-y-6">
|
|
184
|
+
${S.repeat(this.filteredTemplates,e=>e.id,e=>o.html`
|
|
219
185
|
<schmancy-surface
|
|
220
186
|
type="containerLow"
|
|
221
187
|
elevation="1"
|
|
222
188
|
rounded="all"
|
|
223
|
-
class="group cursor-pointer hover:elevation-3 transition-all duration-200
|
|
189
|
+
class="group cursor-pointer hover:elevation-3 transition-all duration-200 overflow-hidden"
|
|
224
190
|
@click=${()=>this.selectTemplate(e)}
|
|
225
191
|
>
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
<div class="flex
|
|
230
|
-
<schmancy-typography type="title" token="md" class="font-semibold leading-tight">
|
|
192
|
+
<!-- Template Header -->
|
|
193
|
+
<div class="p-4 border-b border-outline-variant">
|
|
194
|
+
<div class="flex items-start justify-between">
|
|
195
|
+
<div class="flex-1">
|
|
196
|
+
<schmancy-typography type="title" token="md" class="font-semibold leading-tight mb-1">
|
|
231
197
|
${e.name}
|
|
232
198
|
</schmancy-typography>
|
|
233
|
-
${d.when(e.
|
|
234
|
-
<schmancy-chip class="bg-primary text-primary-on text-xs">
|
|
235
|
-
<schmancy-icon slot="prefix" size="12px">star</schmancy-icon>
|
|
236
|
-
Default
|
|
237
|
-
</schmancy-chip>
|
|
238
|
-
`)}
|
|
239
|
-
</div>
|
|
240
|
-
|
|
241
|
-
<!-- Category Badge -->
|
|
242
|
-
${d.when(e.category,()=>c.html`
|
|
243
|
-
<div class="mb-2">
|
|
199
|
+
${d.when(e.category,()=>o.html`
|
|
244
200
|
<schmancy-chip class="text-xs border border-outline">
|
|
245
201
|
${e.category}
|
|
246
202
|
</schmancy-chip>
|
|
247
|
-
</div>
|
|
248
|
-
`)}
|
|
249
|
-
|
|
250
|
-
<!-- Description -->
|
|
251
|
-
${d.when(e.description,()=>c.html`
|
|
252
|
-
<schmancy-typography type="body" token="sm" class="text-surface-onVariant leading-relaxed">
|
|
253
|
-
${e.description}
|
|
254
|
-
</schmancy-typography>
|
|
255
|
-
`,()=>c.html`
|
|
256
|
-
<schmancy-typography type="body" token="sm" class="text-surface-onVariant opacity-60 italic">
|
|
257
|
-
No description available
|
|
258
|
-
</schmancy-typography>
|
|
259
203
|
`)}
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
204
|
+
</div>
|
|
205
|
+
<schmancy-button
|
|
206
|
+
variant="filled"
|
|
207
|
+
size="sm"
|
|
208
|
+
class="opacity-0 group-hover:opacity-100 transition-opacity"
|
|
209
|
+
>
|
|
210
|
+
Use This
|
|
267
211
|
</schmancy-button>
|
|
268
212
|
</div>
|
|
269
213
|
</div>
|
|
214
|
+
|
|
215
|
+
<!-- Email Preview -->
|
|
216
|
+
<div class="p-4 bg-surface">
|
|
217
|
+
<schmancy-email-viewer
|
|
218
|
+
subject=${e.subject}
|
|
219
|
+
body=${e.body}
|
|
220
|
+
mode="desktop"
|
|
221
|
+
class="max-h-96 overflow-y-auto"
|
|
222
|
+
></schmancy-email-viewer>
|
|
223
|
+
</div>
|
|
270
224
|
</schmancy-surface>
|
|
271
225
|
`)}
|
|
272
226
|
</div>
|
|
273
|
-
`,()=>
|
|
227
|
+
`,()=>o.html`
|
|
274
228
|
<div class="flex flex-col items-center justify-center h-96 text-center">
|
|
275
229
|
<div class="mb-6">
|
|
276
230
|
<schmancy-icon size="64px" class="text-surface-onVariant opacity-20">mail_outline</schmancy-icon>
|
|
@@ -281,9 +235,9 @@
|
|
|
281
235
|
<schmancy-typography type="body" token="md" class="text-surface-onVariant mb-6 max-w-md">
|
|
282
236
|
${this.searchQuery?`No templates match your search for "${this.searchQuery}"`:this.selectedCategory!=="all"?`No templates found in the "${this.selectedCategory}" category`:"Start by creating your first email template"}
|
|
283
237
|
</schmancy-typography>
|
|
284
|
-
${d.when(this.searchQuery||this.selectedCategory!=="all",()=>
|
|
238
|
+
${d.when(this.searchQuery||this.selectedCategory!=="all",()=>o.html`
|
|
285
239
|
<div class="flex gap-3">
|
|
286
|
-
${d.when(this.searchQuery,()=>
|
|
240
|
+
${d.when(this.searchQuery,()=>o.html`
|
|
287
241
|
<schmancy-button
|
|
288
242
|
variant="outlined"
|
|
289
243
|
@click=${()=>{this.searchQuery=""}}
|
|
@@ -292,7 +246,7 @@
|
|
|
292
246
|
Clear Search
|
|
293
247
|
</schmancy-button>
|
|
294
248
|
`)}
|
|
295
|
-
${d.when(this.selectedCategory!=="all",()=>
|
|
249
|
+
${d.when(this.selectedCategory!=="all",()=>o.html`
|
|
296
250
|
<schmancy-button
|
|
297
251
|
variant="filled"
|
|
298
252
|
@click=${()=>this.handleCategorySelect("all")}
|
|
@@ -306,111 +260,16 @@
|
|
|
306
260
|
</div>
|
|
307
261
|
`)}
|
|
308
262
|
</div>
|
|
309
|
-
`}
|
|
310
|
-
<div class="flex-1 overflow-y-auto">
|
|
311
|
-
<!-- Template Header Section -->
|
|
312
|
-
<div class="px-6 py-6 border-b border-outline-variant bg-surface-containerLow">
|
|
313
|
-
<div class="flex items-start gap-6">
|
|
314
|
-
<!-- Template Thumbnail -->
|
|
315
|
-
${d.when(this.selectedTemplate.thumbnail,()=>c.html`
|
|
316
|
-
<div class="flex-shrink-0">
|
|
317
|
-
<schmancy-surface elevation="2" rounded="all" class="overflow-hidden w-32 h-24">
|
|
318
|
-
<img
|
|
319
|
-
src=${this.selectedTemplate.thumbnail}
|
|
320
|
-
alt=${this.selectedTemplate.name}
|
|
321
|
-
class="w-full h-full object-cover"
|
|
322
|
-
/>
|
|
323
|
-
</schmancy-surface>
|
|
324
|
-
</div>
|
|
325
|
-
`,()=>c.html`
|
|
326
|
-
<div class="flex-shrink-0">
|
|
327
|
-
<schmancy-surface elevation="1" rounded="all" class="w-32 h-24 bg-gradient-to-br from-surface-container to-surface-containerLow flex items-center justify-center">
|
|
328
|
-
<schmancy-icon size="32px" class="text-surface-onVariant opacity-40">mail</schmancy-icon>
|
|
329
|
-
</schmancy-surface>
|
|
330
|
-
</div>
|
|
331
|
-
`)}
|
|
332
|
-
|
|
333
|
-
<!-- Template Info -->
|
|
334
|
-
<div class="flex-1">
|
|
335
|
-
<div class="flex items-start justify-between mb-3">
|
|
336
|
-
<schmancy-typography type="headline" token="lg" class="font-semibold">
|
|
337
|
-
${this.selectedTemplate.name}
|
|
338
|
-
</schmancy-typography>
|
|
339
|
-
${d.when(this.selectedTemplate.isDefault,()=>c.html`
|
|
340
|
-
<schmancy-chip class="bg-primary text-primary-on">
|
|
341
|
-
<schmancy-icon slot="prefix" size="12px">star</schmancy-icon>
|
|
342
|
-
Default
|
|
343
|
-
</schmancy-chip>
|
|
344
|
-
`)}
|
|
345
|
-
</div>
|
|
346
|
-
|
|
347
|
-
<div class="flex flex-wrap gap-2 mb-3">
|
|
348
|
-
${d.when(this.selectedTemplate.category,()=>c.html`
|
|
349
|
-
<schmancy-chip class="border border-outline">
|
|
350
|
-
<schmancy-icon slot="prefix" size="12px">category</schmancy-icon>
|
|
351
|
-
${this.selectedTemplate.category}
|
|
352
|
-
</schmancy-chip>
|
|
353
|
-
`)}
|
|
354
|
-
${d.when(this.selectedTemplate.createdAt,()=>c.html`
|
|
355
|
-
<schmancy-chip class="border border-outline">
|
|
356
|
-
<schmancy-icon slot="prefix" size="12px">schedule</schmancy-icon>
|
|
357
|
-
Created ${new Date(this.selectedTemplate.createdAt).toLocaleDateString()}
|
|
358
|
-
</schmancy-chip>
|
|
359
|
-
`)}
|
|
360
|
-
</div>
|
|
361
|
-
|
|
362
|
-
${d.when(this.selectedTemplate.description,()=>c.html`
|
|
363
|
-
<schmancy-typography type="body" token="md" class="text-surface-onVariant leading-relaxed">
|
|
364
|
-
${this.selectedTemplate.description}
|
|
365
|
-
</schmancy-typography>
|
|
366
|
-
`)}
|
|
367
|
-
</div>
|
|
368
|
-
</div>
|
|
369
|
-
</div>
|
|
370
|
-
|
|
371
|
-
<!-- Template Content -->
|
|
372
|
-
<div class="px-6 py-6 space-y-8">
|
|
373
|
-
<!-- Subject Preview -->
|
|
374
|
-
<div>
|
|
375
|
-
<div class="flex items-center gap-2 mb-4">
|
|
376
|
-
<schmancy-icon size="20px" class="text-primary">subject</schmancy-icon>
|
|
377
|
-
<schmancy-typography type="title" token="md" class="text-primary">
|
|
378
|
-
Subject Line
|
|
379
|
-
</schmancy-typography>
|
|
380
|
-
</div>
|
|
381
|
-
<schmancy-surface elevation="1" type="surface" class="p-4 border-l-4 border-primary">
|
|
382
|
-
<schmancy-typography type="body" token="md" class="font-medium">
|
|
383
|
-
${this.selectedTemplate.subject}
|
|
384
|
-
</schmancy-typography>
|
|
385
|
-
</schmancy-surface>
|
|
386
|
-
</div>
|
|
387
|
-
|
|
388
|
-
<!-- Body Preview -->
|
|
389
|
-
<div>
|
|
390
|
-
<div class="flex items-center gap-2 mb-4">
|
|
391
|
-
<schmancy-icon size="20px" class="text-primary">article</schmancy-icon>
|
|
392
|
-
<schmancy-typography type="title" token="md" class="text-primary">
|
|
393
|
-
Email Preview
|
|
394
|
-
</schmancy-typography>
|
|
395
|
-
</div>
|
|
396
|
-
<schmancy-email-viewer
|
|
397
|
-
subject=${this.selectedTemplate.subject}
|
|
398
|
-
body=${this.selectedTemplate.body}
|
|
399
|
-
mode="desktop"
|
|
400
|
-
></schmancy-email-viewer>
|
|
401
|
-
</div>
|
|
402
|
-
</div>
|
|
403
|
-
</div>
|
|
404
|
-
`:null}};w([r.property({type:Array})],v.prototype,"templates",2),w([r.state()],v.prototype,"searchQuery",2),w([r.state()],v.prototype,"selectedTemplate",2),w([r.state()],v.prototype,"filteredTemplates",2),w([r.state()],v.prototype,"showPreview",2),w([r.state()],v.prototype,"selectedCategory",2),v=w([r.customElement("schmancy-email-template-picker")],v);var L=Object.defineProperty,j=Object.getOwnPropertyDescriptor,f=(e,t,i,s)=>{for(var a,n=s>1?void 0:s?j(t,i):t,o=e.length-1;o>=0;o--)(a=e[o])&&(n=(s?a(t,i,n):a(n))||n);return s&&n&&L(t,i,n),n};exports.SchmancyEmailEditor=class extends S.$LitElement(c.css`
|
|
263
|
+
`}};w([c.property({type:Array})],x.prototype,"templates",2),w([c.state()],x.prototype,"searchQuery",2),w([c.state()],x.prototype,"filteredTemplates",2),w([c.state()],x.prototype,"selectedCategory",2),x=w([c.customElement("schmancy-email-template-picker")],x);var L=Object.defineProperty,j=Object.getOwnPropertyDescriptor,f=(e,t,i,s)=>{for(var a,n=s>1?void 0:s?j(t,i):t,r=e.length-1;r>=0;r--)(a=e[r])&&(n=(s?a(t,i,n):a(n))||n);return s&&n&&L(t,i,n),n};exports.SchmancyEmailEditor=class extends $.$LitElement(o.css`
|
|
405
264
|
:host {
|
|
406
265
|
display: block;
|
|
407
266
|
height: 100%;
|
|
408
267
|
}
|
|
409
|
-
`){constructor(){super(...arguments),this.subject="",this.body="",this.disabled=!1,this.attachments=[],this.config={},this.templates=this.getDefaultTemplates(),this.dragOver=!1,this.isUploading=!1,this.subjectInputRef=g.createRef(),this.bodyTextAreaRef=g.createRef(),this.fileInputRef=g.createRef(),this.imageInputRef=g.createRef(),this.handleKeyDown=e=>{if(this.disabled)return;const t=this.bodyTextAreaRef.value?.shadowRoot?.querySelector("textarea");e.key==="Tab"&&e.target===t&&(e.preventDefault(),this.insertAtCursor(" "))},this.handlePaste=e=>{const t=this.bodyTextAreaRef.value?.shadowRoot?.querySelector("textarea");if(this.disabled||document.activeElement!==t)return;const i=e.clipboardData?.items;if(i)for(let s=0;s<i.length;s++){const a=i[s];if(a.type.indexOf("image")!==-1){e.preventDefault();const n=a.getAsFile();n&&this.uploadImage(n);break}}},this.handleSubjectChange=e=>{const t=e.target;this.subject=t.value,this.dispatchChange()},this.handleBodyChange=e=>{this.body=e.detail.value,this.dispatchChange()},this.dispatchChange=()=>{this.dispatchEvent(new CustomEvent("editor-change",{detail:{subject:this.subject,body:this.body,attachments:this.attachments},bubbles:!0,composed:!0}))},this.openLayoutDialog=()=>{
|
|
268
|
+
`){constructor(){super(...arguments),this.subject="",this.body="",this.disabled=!1,this.attachments=[],this.config={},this.templates=this.getDefaultTemplates(),this.dragOver=!1,this.isUploading=!1,this.subjectInputRef=g.createRef(),this.bodyTextAreaRef=g.createRef(),this.fileInputRef=g.createRef(),this.imageInputRef=g.createRef(),this.handleKeyDown=e=>{if(this.disabled)return;const t=this.bodyTextAreaRef.value?.shadowRoot?.querySelector("textarea");e.key==="Tab"&&e.target===t&&(e.preventDefault(),this.insertAtCursor(" "))},this.handlePaste=e=>{const t=this.bodyTextAreaRef.value?.shadowRoot?.querySelector("textarea");if(this.disabled||document.activeElement!==t)return;const i=e.clipboardData?.items;if(i)for(let s=0;s<i.length;s++){const a=i[s];if(a.type.indexOf("image")!==-1){e.preventDefault();const n=a.getAsFile();n&&this.uploadImage(n);break}}},this.handleSubjectChange=e=>{const t=e.target;this.subject=t.value,this.dispatchChange()},this.handleBodyChange=e=>{this.body=e.detail.value,this.dispatchChange()},this.dispatchChange=()=>{this.dispatchEvent(new CustomEvent("editor-change",{detail:{subject:this.subject,body:this.body,attachments:this.attachments},bubbles:!0,composed:!0}))},this.openLayoutDialog=()=>{k.$dialog.component(o.html`
|
|
410
269
|
<schmancy-email-layout-selector
|
|
411
|
-
@layout-select=${e=>{this.applyLayout(e.detail.layout),
|
|
270
|
+
@layout-select=${e=>{this.applyLayout(e.detail.layout),k.$dialog.close()}}
|
|
412
271
|
></schmancy-email-layout-selector>
|
|
413
|
-
`)},this.openTemplatePicker=()=>{const e=new
|
|
272
|
+
`)},this.openTemplatePicker=()=>{const e=new x;e.templates=this.templates,e.addEventListener("template-selected",this.handleTemplateSelected),E.sheet.open({component:e,title:"Choose Email Template"})},this.handleTemplateSelected=e=>{const t=e.detail;this.subject=t.subject,this.body=t.body,this.dispatchChange(),u.$notify.success(`Template "${t.name}" applied successfully`)},this.applyLayout=e=>{const t={"columns-2":`
|
|
414
273
|
:::layout columns-2
|
|
415
274
|
<div class="column">
|
|
416
275
|
{height=300px}
|
|
@@ -500,7 +359,7 @@ Your primary content goes here. This area takes up most of the width while the s
|
|
|
500
359
|
{height=250px}
|
|
501
360
|
</div>
|
|
502
361
|
:::
|
|
503
|
-
`}[e];t&&this.insertAtCursor(t)},this.uploadImage=async e=>{if(!e.type.startsWith("image/"))return void u.$notify.error(`File "${e.name}" is not an image`);if(e.size>10485760)u.$notify.error(`Image "${e.name}" is too large. Maximum size is 10MB.`);else{this.isUploading=!0;try{let t;this.config.imageUploadHandler?t=await this.config.imageUploadHandler(e):this.config.uploadHandler?t=await this.config.uploadHandler(e):(t=await this.createDataUrl(e),u.$notify.warning("No upload handler configured. Using local preview."));const i=await this.getImageDimensions(e);this.insertImageMarkdown(t,e.name,i.width,i.height),u.$notify.success("Image uploaded successfully")}catch{u.$notify.error("Failed to upload image")}finally{this.isUploading=!1}}},this.createDataUrl=e=>new Promise((t,i)=>{const s=new FileReader;s.onload=()=>t(s.result),s.onerror=i,s.readAsDataURL(e)}),this.getImageDimensions=e=>new Promise(t=>{const i=new Image;i.onload=()=>{t({width:i.width,height:i.height}),URL.revokeObjectURL(i.src)},i.onerror=()=>{t({width:400,height:300}),URL.revokeObjectURL(i.src)},i.src=URL.createObjectURL(e)}),this.insertImageMarkdown=(e,t,i,s)=>{const a=this.bodyTextAreaRef.value?.shadowRoot?.querySelector("textarea");if(!a)return;const n=`{width=${Math.min(i,600)}px height=auto}`,
|
|
362
|
+
`}[e];t&&this.insertAtCursor(t)},this.uploadImage=async e=>{if(!e.type.startsWith("image/"))return void u.$notify.error(`File "${e.name}" is not an image`);if(e.size>10485760)u.$notify.error(`Image "${e.name}" is too large. Maximum size is 10MB.`);else{this.isUploading=!0;try{let t;this.config.imageUploadHandler?t=await this.config.imageUploadHandler(e):this.config.uploadHandler?t=await this.config.uploadHandler(e):(t=await this.createDataUrl(e),u.$notify.warning("No upload handler configured. Using local preview."));const i=await this.getImageDimensions(e);this.insertImageMarkdown(t,e.name,i.width,i.height),u.$notify.success("Image uploaded successfully")}catch{u.$notify.error("Failed to upload image")}finally{this.isUploading=!1}}},this.createDataUrl=e=>new Promise((t,i)=>{const s=new FileReader;s.onload=()=>t(s.result),s.onerror=i,s.readAsDataURL(e)}),this.getImageDimensions=e=>new Promise(t=>{const i=new Image;i.onload=()=>{t({width:i.width,height:i.height}),URL.revokeObjectURL(i.src)},i.onerror=()=>{t({width:400,height:300}),URL.revokeObjectURL(i.src)},i.src=URL.createObjectURL(e)}),this.insertImageMarkdown=(e,t,i,s)=>{const a=this.bodyTextAreaRef.value?.shadowRoot?.querySelector("textarea");if(!a)return;const n=`{width=${Math.min(i,600)}px height=auto}`,r=a.selectionStart,l=a.selectionEnd,h=this.body.substring(0,r)+n+this.body.substring(l);this.body=h,this.dispatchChange(),this.updateComplete.then(()=>{const p=this.bodyTextAreaRef.value?.shadowRoot?.querySelector("textarea");if(p){const v=r+n.length;p.setSelectionRange(v,v),p.focus()}})},this.handleFileChange=e=>{const t=e.target,i=t.files;if(i)for(let s=0;s<i.length;s++){const a=i[s];a.type.startsWith("image/")?this.uploadImage(a):this.addFile(a)}t.value=""},this.handleImageSelect=e=>{const t=e.target,i=t.files?.[0];i&&i.type.startsWith("image/")&&this.uploadImage(i),t.value=""},this.handleDrop=e=>{e.preventDefault(),this.dragOver=!1;const t=e.dataTransfer?.files;if(t)for(let i=0;i<t.length;i++){const s=t[i];s.type.startsWith("image/")?this.uploadImage(s):this.addFile(s)}},this.handleDragEnter=e=>{e.preventDefault(),this.dragOver=!0},this.handleDocumentDragLeave=e=>{e.preventDefault(),this.dragOver=!1},this.handleDocumentDrop=e=>{e.preventDefault(),this.dragOver=!1},this.handleDragOver=e=>{e.preventDefault()},this.handleDragLeave=e=>{e.preventDefault()},this.addFile=e=>{if(e.size>10485760)return void u.$notify.error(`File "${e.name}" is too large. Maximum size is 10MB.`);if(this.attachments.some(i=>i.name===e.name&&i.size===e.size))return void u.$notify.warning(`File "${e.name}" is already attached.`);const t={id:crypto.randomUUID(),file:e,name:e.name,size:e.size,type:e.type||"application/octet-stream"};this.attachments=[...this.attachments,t],this.dispatchChange()},this.removeAttachment=e=>{this.attachments=this.attachments.filter(t=>t.id!==e),this.dispatchChange()}}connectedCallback(){super.connectedCallback(),this.addKeyboardListeners(),this.addDragListeners()}disconnectedCallback(){super.disconnectedCallback(),document.removeEventListener("paste",this.handlePaste),document.removeEventListener("dragenter",this.handleDragEnter),document.removeEventListener("dragleave",this.handleDocumentDragLeave),document.removeEventListener("drop",this.handleDocumentDrop)}getDefaultTemplates(){return[{id:"welcome",name:"Welcome Email",subject:"Welcome to Our Community! 🌟",description:"A warm welcome message for new users",category:"onboarding",body:`# Welcome to Our Community!
|
|
504
363
|
|
|
505
364
|
We're thrilled to have you on board. Thank you for joining us on this journey.
|
|
506
365
|
|
|
@@ -689,7 +548,7 @@ You'll receive a tracking number via email once your order ships (usually within
|
|
|
689
548
|
*Questions about your order? Reply to this email or contact our support team.*
|
|
690
549
|
|
|
691
550
|
Thank you for your business,
|
|
692
|
-
The Fulfillment Team`}]}addKeyboardListeners(){this.addEventListener("keydown",this.handleKeyDown),document.addEventListener("paste",this.handlePaste)}addDragListeners(){document.addEventListener("dragenter",this.handleDragEnter),document.addEventListener("dragleave",this.handleDocumentDragLeave),document.addEventListener("drop",this.handleDocumentDrop)}insertAtCursor(e,t){if(!this.bodyTextAreaRef.value)return;const i=this.bodyTextAreaRef.value.shadowRoot?.querySelector("textarea");if(!i)return;const s=i.selectionStart,a=i.selectionEnd,n=i.value.substring(0,s)+e+i.value.substring(a);this.body=n,this.dispatchChange(),this.updateComplete.then(()=>{const
|
|
551
|
+
The Fulfillment Team`}]}addKeyboardListeners(){this.addEventListener("keydown",this.handleKeyDown),document.addEventListener("paste",this.handlePaste)}addDragListeners(){document.addEventListener("dragenter",this.handleDragEnter),document.addEventListener("dragleave",this.handleDocumentDragLeave),document.addEventListener("drop",this.handleDocumentDrop)}insertAtCursor(e,t){if(!this.bodyTextAreaRef.value)return;const i=this.bodyTextAreaRef.value.shadowRoot?.querySelector("textarea");if(!i)return;const s=i.selectionStart,a=i.selectionEnd,n=i.value.substring(0,s)+e+i.value.substring(a);this.body=n,this.dispatchChange(),this.updateComplete.then(()=>{const r=this.bodyTextAreaRef.value?.shadowRoot?.querySelector("textarea");if(r)if(r.focus(),t){const l=s+e.indexOf(t),h=l+t.length;r.setSelectionRange(l,h)}else r.setSelectionRange(s+e.length,s+e.length)})}wrapSelection(e,t,i){if(!this.bodyTextAreaRef.value)return;const s=this.bodyTextAreaRef.value.shadowRoot?.querySelector("textarea");if(!s)return;const a=s.selectionStart,n=s.selectionEnd,r=s.value.substring(a,n),l=e+(r||i)+t,h=s.value.substring(0,a)+l+s.value.substring(n);this.body=h,this.dispatchChange(),this.updateComplete.then(()=>{const p=this.bodyTextAreaRef.value?.shadowRoot?.querySelector("textarea");p&&(p.focus(),r?p.setSelectionRange(a+l.length,a+l.length):p.setSelectionRange(a+e.length,a+e.length+i.length))})}render(){return o.html`
|
|
693
552
|
<schmancy-surface
|
|
694
553
|
type="surface"
|
|
695
554
|
rounded="all"
|
|
@@ -794,7 +653,7 @@ The Fulfillment Team`}]}addKeyboardListeners(){this.addEventListener("keydown",t
|
|
|
794
653
|
?disabled=${this.disabled||this.isUploading}
|
|
795
654
|
@click=${()=>this.imageInputRef.value?.click()}
|
|
796
655
|
>
|
|
797
|
-
${d.when(this.isUploading,()=>
|
|
656
|
+
${d.when(this.isUploading,()=>o.html`<schmancy-progress size="sm" class="w-4 h-4"></schmancy-progress>`,()=>o.html`<schmancy-icon>image</schmancy-icon>`)}
|
|
798
657
|
</schmancy-icon-button>
|
|
799
658
|
<schmancy-icon-button
|
|
800
659
|
size="sm"
|
|
@@ -839,7 +698,7 @@ Tab key inserts 2 spaces for better formatting."
|
|
|
839
698
|
></schmancy-textarea>
|
|
840
699
|
|
|
841
700
|
<!-- Upload Progress Overlay -->
|
|
842
|
-
${d.when(this.isUploading,()=>
|
|
701
|
+
${d.when(this.isUploading,()=>o.html`
|
|
843
702
|
<div class="absolute top-3 right-3 z-10">
|
|
844
703
|
<schmancy-surface type="container" rounded="all" class="p-2">
|
|
845
704
|
<div class="flex items-center gap-2">
|
|
@@ -861,14 +720,14 @@ Tab key inserts 2 spaces for better formatting."
|
|
|
861
720
|
</div>
|
|
862
721
|
|
|
863
722
|
<!-- Attachments Display (if any) -->
|
|
864
|
-
${d.when(this.attachments.length>0,()=>
|
|
723
|
+
${d.when(this.attachments.length>0,()=>o.html`
|
|
865
724
|
<div class="space-y-2">
|
|
866
725
|
<schmancy-typography type="label" token="sm" class="flex items-center gap-2">
|
|
867
726
|
<schmancy-icon size="16px">attach_file</schmancy-icon>
|
|
868
727
|
Attachments (${this.attachments.length})
|
|
869
728
|
</schmancy-typography>
|
|
870
729
|
<div class="flex flex-wrap gap-2">
|
|
871
|
-
${
|
|
730
|
+
${S.repeat(this.attachments,e=>e.id,e=>o.html`
|
|
872
731
|
<schmancy-chip class="text-xs">
|
|
873
732
|
<span class="truncate max-w-32">${e.name}</span>
|
|
874
733
|
<button
|
|
@@ -904,15 +763,15 @@ Tab key inserts 2 spaces for better formatting."
|
|
|
904
763
|
</div>
|
|
905
764
|
</schmancy-surface>
|
|
906
765
|
|
|
907
|
-
`}},f([
|
|
766
|
+
`}},f([c.property({type:String})],exports.SchmancyEmailEditor.prototype,"subject",2),f([c.property({type:String})],exports.SchmancyEmailEditor.prototype,"body",2),f([c.property({type:Boolean})],exports.SchmancyEmailEditor.prototype,"disabled",2),f([c.property({type:Array})],exports.SchmancyEmailEditor.prototype,"attachments",2),f([c.property({type:Object})],exports.SchmancyEmailEditor.prototype,"config",2),f([c.property({type:Array})],exports.SchmancyEmailEditor.prototype,"templates",2),f([c.state()],exports.SchmancyEmailEditor.prototype,"dragOver",2),f([c.state()],exports.SchmancyEmailEditor.prototype,"isUploading",2),exports.SchmancyEmailEditor=f([c.customElement("schmancy-email-editor")],exports.SchmancyEmailEditor);var z=Object.defineProperty,M=Object.getOwnPropertyDescriptor,b=(e,t,i,s)=>{for(var a,n=s>1?void 0:s?M(t,i):t,r=e.length-1;r>=0;r--)(a=e[r])&&(n=(s?a(t,i,n):a(n))||n);return s&&n&&z(t,i,n),n};exports.SchmancyEmailViewer=class extends $.$LitElement(o.css`
|
|
908
767
|
:host {
|
|
909
768
|
display: block;
|
|
910
769
|
}
|
|
911
|
-
`){constructor(){super(...arguments),this.subject="",this.body="",this.attachments=[],this.recipients=[],this.fromAddress="sender@example.com",this.toAddress="recipient@example.com",this.viewMode="html"}parseLayoutBlocks(e){return e.replace(/:::layout\s+([a-zA-Z0-9-]+)\n([\s\S]*?)\n:::/g,(t,i,s)=>{switch(i){case"columns-2":return this.parseColumnsLayout(s,2);case"columns-3":return this.parseColumnsLayout(s,3);case"sidebar-left":return this.parseSidebarLayout(s,"left");case"sidebar-right":return this.parseSidebarLayout(s,"right");case"image-row":return this.parseImageRowLayout(s);default:return s}})}parseColumnsLayout(e,t){const i=/<div class="column">([\s\S]*?)<\/div>/g,s=[];let a;for(;(a=i.exec(e))!==null;)s.push(a[1].trim());if(s.length===0)return e;const n=Math.floor(100/t),
|
|
912
|
-
<td width="${n}%" style="padding: ${h===t-1?"0":
|
|
770
|
+
`){constructor(){super(...arguments),this.subject="",this.body="",this.attachments=[],this.recipients=[],this.fromAddress="sender@example.com",this.toAddress="recipient@example.com",this.viewMode="html"}parseLayoutBlocks(e){return e.replace(/:::layout\s+([a-zA-Z0-9-]+)\n([\s\S]*?)\n:::/g,(t,i,s)=>{switch(i){case"columns-2":return this.parseColumnsLayout(s,2);case"columns-3":return this.parseColumnsLayout(s,3);case"sidebar-left":return this.parseSidebarLayout(s,"left");case"sidebar-right":return this.parseSidebarLayout(s,"right");case"image-row":return this.parseImageRowLayout(s);default:return s}})}parseColumnsLayout(e,t){const i=/<div class="column">([\s\S]*?)<\/div>/g,s=[];let a;for(;(a=i.exec(e))!==null;)s.push(a[1].trim());if(s.length===0)return e;const n=Math.floor(100/t),r="0 10px 0 0";let l="<tr>";for(let h=0;h<t&&h<s.length;h++)l+=`
|
|
771
|
+
<td width="${n}%" style="padding: ${h===t-1?"0":r}; vertical-align: top; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 1.6; color: #333333;">
|
|
913
772
|
${this.parseBasicMarkdown(s[h])}
|
|
914
773
|
</td>`;for(let h=s.length;h<t;h++)l+=`
|
|
915
|
-
<td width="${n}%" style="padding: ${h===t-1?"0":
|
|
774
|
+
<td width="${n}%" style="padding: ${h===t-1?"0":r}; vertical-align: top;">
|
|
916
775
|
|
|
917
776
|
</td>`;return l+="</tr>",`
|
|
918
777
|
<table cellpadding="0" cellspacing="0" border="0" width="100%" style="margin: 16px 0;">
|
|
@@ -926,13 +785,13 @@ Tab key inserts 2 spaces for better formatting."
|
|
|
926
785
|
</td>`;return`
|
|
927
786
|
<table cellpadding="0" cellspacing="0" border="0" width="100%" style="margin: 16px 0;">
|
|
928
787
|
${t==="left"?`<tr>${a}${n}</tr>`:`<tr>${n}${a.replace("0 16px 0 0","0 0 0 16px")}</tr>`}
|
|
929
|
-
</table>`}parseImageRowLayout(e){const t=/<div class="image">([\s\S]*?)<\/div>/g,i=[];let s;for(;(s=t.exec(e))!==null;){const
|
|
788
|
+
</table>`}parseImageRowLayout(e){const t=/<div class="image">([\s\S]*?)<\/div>/g,i=[];let s;for(;(s=t.exec(e))!==null;){const r=s[1].trim().match(/!\[([^\]]*)\]\(([^)]+)\)/);if(r){const[,l,h]=r;i.push(`<img src="${h}" alt="${l||"Image"}" style="display: block; max-width: 100%; height: auto;" border="0">`)}}if(i.length===0)return e;const a=Math.floor(100/i.length);let n="<tr>";return i.forEach((r,l)=>{const h=l===i.length-1;n+=`
|
|
930
789
|
<td width="${a}%" style="padding: ${h?"0":"0 8px 0 0"}; vertical-align: top; text-align: center;">
|
|
931
|
-
${
|
|
790
|
+
${r}
|
|
932
791
|
</td>`}),n+="</tr>",`
|
|
933
792
|
<table cellpadding="0" cellspacing="0" border="0" width="100%" style="margin: 16px 0;">
|
|
934
793
|
${n}
|
|
935
|
-
</table>`}parseImageAttributes(e){const t={};if(!e)return t;const i=e.match(/width=([^\s}]+)/);i&&(t.width=i[1]);const s=e.match(/height=([^\s}]+)/);return s&&(t.height=s[1]),e.includes("cover")&&(t.cover=!0),e.includes("contain")&&(t.contain=!0),t}generateImageStyles(e,t=!1){let i,s,a="display: block; margin: 8px 0; border: 0;";return e.width?e.width==="auto"?a+=t?" max-width: 100%; height: auto;":" height: auto;":e.width.endsWith("%")?(a+=` width: ${e.width}; max-width: 100%;`,e.height||(a+=" height: auto;")):e.width.endsWith("px")&&(i=e.width.replace("px",""),a+=" max-width: 100%;",e.height||(a+=" height: auto;")):a+=t?" width: 100%; max-width: 100%; height: auto;":" max-width: 100%; height: auto;",e.height&&(e.height==="auto"?a+=" height: auto;":e.height.endsWith("px")&&(s=e.height.replace("px",""),e.width||(a+=" max-width: 100%;"))),(e.cover||e.contain)&&(e.width||e.height||(a+=" width: 100%;")),{imgStyle:a,imgWidth:i,imgHeight:s}}parseBasicMarkdown(e){return e.replace(/!\[([^\]]*)\]\(([^)]+)\)(?:\{([^}]+)\})?/g,(t,i,s,a)=>{const n=this.parseImageAttributes(a),{imgStyle:
|
|
794
|
+
</table>`}parseImageAttributes(e){const t={};if(!e)return t;const i=e.match(/width=([^\s}]+)/);i&&(t.width=i[1]);const s=e.match(/height=([^\s}]+)/);return s&&(t.height=s[1]),e.includes("cover")&&(t.cover=!0),e.includes("contain")&&(t.contain=!0),t}generateImageStyles(e,t=!1){let i,s,a="display: block; margin: 8px 0; border: 0;";return e.width?e.width==="auto"?a+=t?" max-width: 100%; height: auto;":" height: auto;":e.width.endsWith("%")?(a+=` width: ${e.width}; max-width: 100%;`,e.height||(a+=" height: auto;")):e.width.endsWith("px")&&(i=e.width.replace("px",""),a+=" max-width: 100%;",e.height||(a+=" height: auto;")):a+=t?" width: 100%; max-width: 100%; height: auto;":" max-width: 100%; height: auto;",e.height&&(e.height==="auto"?a+=" height: auto;":e.height.endsWith("px")&&(s=e.height.replace("px",""),e.width||(a+=" max-width: 100%;"))),(e.cover||e.contain)&&(e.width||e.height||(a+=" width: 100%;")),{imgStyle:a,imgWidth:i,imgHeight:s}}parseBasicMarkdown(e){return e.replace(/!\[([^\]]*)\]\(([^)]+)\)(?:\{([^}]+)\})?/g,(t,i,s,a)=>{const n=this.parseImageAttributes(a),{imgStyle:r,imgWidth:l,imgHeight:h}=this.generateImageStyles(n,!0);let p=`<img src="${s}" alt="${i||"Image"}" style="${r}" border="0"`;return l&&(p+=` width="${l}"`),h&&(p+=` height="${h}"`),p+=">",p}).replace(/\n\n/g,'</p><p style="margin: 0 0 16px 0; padding: 0; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 1.6; color: #333333;">').replace(/\n/g,"<br>").replace(/\*\*(.*?)\*\*/g,'<strong style="font-weight: bold;">$1</strong>').replace(/\*(.*?)\*/g,'<em style="font-style: italic;">$1</em>').replace(/\[([^\]]+)\]\(([^)]+)\)/g,'<a href="$2" style="color: #0066cc; text-decoration: underline;">$1</a>').replace(/^# (.*$)/gim,'<h2 style="margin: 16px 0 8px 0; padding: 0; font-family: Arial, Helvetica, sans-serif; font-size: 18px; font-weight: bold; color: #1a1a1a;">$1</h2>').replace(/^\* (.*$)/gim,'<li style="margin: 4px 0; font-family: Arial, Helvetica, sans-serif; font-size: 14px; color: #333333;">$1</li>').replace(/^\d+\. (.*$)/gim,'<li style="margin: 4px 0; font-family: Arial, Helvetica, sans-serif; font-size: 14px; color: #333333;">$1</li>').replace(/(<li[^>]*>.*?<\/li>(?:\s*<li[^>]*>.*?<\/li>)*)/gs,t=>{const i=/^\d+\./.test(t.replace(/<[^>]*>/g,""))?"ol":"ul";return`<${i} style="margin: 8px 0; padding: 0 0 0 20px; font-family: Arial, Helvetica, sans-serif;">${t}</${i}>`}).replace(/^(?!<[h\d]|<p|<ul|<ol|<li|<img)(.+)$/gim,'<p style="margin: 0 0 16px 0; padding: 0; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 1.6; color: #333333;">$1</p>')}parseExtendedMarkdown(e){let t=e;return t=this.parseLayoutBlocks(t),t=t.replace(/:::images\s+(row|grid(?:=\d+)?)\n((?:!\[.*?\]\(.*?\)(?:\{.*?\})?\s*\n?)*?):::/g,"[Multiple Images - View in web browser]"),t=t.replace(/!\[([^\]]*)\]\(([^)]+)\)(?:\{([^}]+)\})?/g,(i,s,a,n)=>{const r=this.parseImageAttributes(n),{imgStyle:l,imgWidth:h,imgHeight:p}=this.generateImageStyles(r,!1);let v=`<img src="${a}" alt="${s||"Image"}" style="${l}" border="0"`;return h&&(v+=` width="${h}"`),p&&(v+=` height="${p}"`),v+=">",`<table cellpadding="0" cellspacing="0" border="0" style="margin: 16px 0;"><tr><td>${v}</td></tr></table>`}),t=t.replace(/\n\n/g,'</p><p style="margin: 0 0 16px 0; padding: 0; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 1.6; color: #333333;">').replace(/\n/g,"<br>").replace(/\*\*(.*?)\*\*/g,'<strong style="font-weight: bold;">$1</strong>').replace(/\*(.*?)\*/g,'<em style="font-style: italic;">$1</em>').replace(/\[([^\]]+)\]\(([^)]+)\)/g,'<a href="$2" style="color: #0066cc; text-decoration: underline;">$1</a>').replace(/^# (.*$)/gim,'<table cellpadding="0" cellspacing="0" border="0" width="100%" style="margin: 24px 0 16px 0;"><tr><td><h1 style="margin: 0; padding: 0; font-family: Arial, Helvetica, sans-serif; font-size: 24px; font-weight: bold; color: #1a1a1a;">$1</h1></td></tr></table>').replace(/^\* (.*$)/gim,'<li style="margin: 4px 0; font-family: Arial, Helvetica, sans-serif; font-size: 14px; color: #333333;">$1</li>').replace(/^\d+\. (.*$)/gim,'<li style="margin: 4px 0; font-family: Arial, Helvetica, sans-serif; font-size: 14px; color: #333333;">$1</li>').replace(/^---$/gim,'<table cellpadding="0" cellspacing="0" border="0" width="100%" style="margin: 24px 0;"><tr><td style="border-top: 1px solid #e0e0e0; height: 1px; line-height: 1px;"> </td></tr></table>'),t=t.replace(/(<li[^>]*>.*?<\/li>(?:\s*<li[^>]*>.*?<\/li>)*)/gs,i=>{const s=/^\d+\./.test(i.replace(/<[^>]*>/g,"")),a=s?"ol":"ul";return`<table cellpadding="0" cellspacing="0" border="0" width="100%"><tr><td><${a} style="margin: 16px 0; padding: 0 0 0 20px; font-family: Arial, Helvetica, sans-serif;">${i}</${a}></td></tr></table>`}),t.includes("<table>")||t.includes("<h1>")||(t=`<p style="margin: 0 0 16px 0; padding: 0; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 1.6; color: #333333;">${t}</p>`),t=`<table cellpadding="0" cellspacing="0" border="0" width="100%" style="max-width: 600px; margin: 0 auto;">
|
|
936
795
|
<tr>
|
|
937
796
|
<td style="padding: 0; font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 1.6; color: #333333;">
|
|
938
797
|
${t}
|
|
@@ -944,7 +803,7 @@ Tab key inserts 2 spaces for better formatting."
|
|
|
944
803
|
|
|
945
804
|
`).trim()).replace(/:::images\s+(row|grid(?:=\d+)?)\n((?:!\[.*?\]\(.*?\)(?:\{.*?\})?\s*\n?)*?):::/g,"[Images]").replace(/!\[([^\]]*)\]\(([^)]+)\)(?:\{([^}]+)\})?/g,"[Image: $1]").replace(/\*\*(.*?)\*\*/g,"$1").replace(/\*(.*?)\*/g,"$1").replace(/__(.*?)__/g,"$1").replace(/~~(.*?)~~/g,"$1").replace(/`(.*?)`/g,"$1").replace(/^#{1,3} (.*$)/gim,"$1").replace(/^> (.*$)/gim,"$1").replace(/^\* (.*$)/gim,"• $1").replace(/^\d+\. (.*$)/gim,"$1").replace(/\[([^\]]+)\]\(([^)]+)\)/g,"$1 ($2)").replace(/^---$/gim,"---").replace(/\n\n+/g,`
|
|
946
805
|
|
|
947
|
-
`)}formatFileSize(e){if(e===0)return"0 Bytes";const t=Math.floor(Math.log(e)/Math.log(1024));return parseFloat((e/Math.pow(1024,t)).toFixed(2))+" "+["Bytes","KB","MB","GB"][t]}render(){const e=this.parseExtendedMarkdown(this.body),t=this.convertToPlainText(this.body),i=this.recipients[0]||this.toAddress;return
|
|
806
|
+
`)}formatFileSize(e){if(e===0)return"0 Bytes";const t=Math.floor(Math.log(e)/Math.log(1024));return parseFloat((e/Math.pow(1024,t)).toFixed(2))+" "+["Bytes","KB","MB","GB"][t]}render(){const e=this.parseExtendedMarkdown(this.body),t=this.convertToPlainText(this.body),i=this.recipients[0]||this.toAddress;return o.html`
|
|
948
807
|
<schmancy-surface type="surface" rounded="all" class="h-full flex flex-col">
|
|
949
808
|
|
|
950
809
|
<!-- Header Section -->
|
|
@@ -1027,7 +886,7 @@ Tab key inserts 2 spaces for better formatting."
|
|
|
1027
886
|
</schmancy-typography>
|
|
1028
887
|
</div>
|
|
1029
888
|
<schmancy-typography type="body" token="sm" class="font-medium flex-1">
|
|
1030
|
-
${this.subject||
|
|
889
|
+
${this.subject||o.html`<span class="italic text-surface-onVariant">(No subject)</span>`}
|
|
1031
890
|
</schmancy-typography>
|
|
1032
891
|
</div>
|
|
1033
892
|
</div>
|
|
@@ -1035,17 +894,17 @@ Tab key inserts 2 spaces for better formatting."
|
|
|
1035
894
|
|
|
1036
895
|
<!-- Email Body Content -->
|
|
1037
896
|
<div class="flex-1 overflow-y-auto min-h-0">
|
|
1038
|
-
${d.when(this.body,()=>
|
|
1039
|
-
${d.when(this.viewMode==="html",()=>
|
|
897
|
+
${d.when(this.body,()=>o.html`
|
|
898
|
+
${d.when(this.viewMode==="html",()=>o.html`
|
|
1040
899
|
<div class="p-6 bg-white" style="color: #333; line-height: 1.6; font-family: system-ui, -apple-system, sans-serif; font-size: 14px;">
|
|
1041
900
|
<div .innerHTML=${e}></div>
|
|
1042
901
|
</div>
|
|
1043
|
-
`,()=>
|
|
902
|
+
`,()=>o.html`
|
|
1044
903
|
<div class="p-6 bg-white" style="color: #333; line-height: 1.6; font-family: 'Courier New', monospace; font-size: 13px; white-space: pre-wrap;">
|
|
1045
904
|
${t}
|
|
1046
905
|
</div>
|
|
1047
906
|
`)}
|
|
1048
|
-
`,()=>
|
|
907
|
+
`,()=>o.html`
|
|
1049
908
|
<!-- Empty State -->
|
|
1050
909
|
<div class="flex-1 flex items-center justify-center p-8">
|
|
1051
910
|
<div class="text-center space-y-3">
|
|
@@ -1062,7 +921,7 @@ Tab key inserts 2 spaces for better formatting."
|
|
|
1062
921
|
</div>
|
|
1063
922
|
|
|
1064
923
|
<!-- Attachments Section -->
|
|
1065
|
-
${d.when(this.attachments.length>0,()=>
|
|
924
|
+
${d.when(this.attachments.length>0,()=>o.html`
|
|
1066
925
|
<div class="flex-shrink-0 p-4 border-t border-outline-variant bg-surface-containerLowest">
|
|
1067
926
|
<div class="space-y-3">
|
|
1068
927
|
<!-- Attachments Header -->
|
|
@@ -1075,7 +934,7 @@ Tab key inserts 2 spaces for better formatting."
|
|
|
1075
934
|
|
|
1076
935
|
<!-- Attachments List -->
|
|
1077
936
|
<div class="grid gap-2 sm:grid-cols-2 lg:grid-cols-1 xl:grid-cols-2">
|
|
1078
|
-
${
|
|
937
|
+
${S.repeat(this.attachments,s=>s.id,s=>o.html`
|
|
1079
938
|
<schmancy-surface type="container" rounded="all" class="p-3">
|
|
1080
939
|
<div class="flex items-center gap-3">
|
|
1081
940
|
<!-- File Icon -->
|
|
@@ -1103,7 +962,7 @@ Tab key inserts 2 spaces for better formatting."
|
|
|
1103
962
|
</div>
|
|
1104
963
|
|
|
1105
964
|
<!-- Preview Stats -->
|
|
1106
|
-
${d.when(this.body,()=>
|
|
965
|
+
${d.when(this.body,()=>o.html`
|
|
1107
966
|
<div class="flex-shrink-0">
|
|
1108
967
|
<schmancy-surface type="container" rounded="all" class="p-3">
|
|
1109
968
|
<div class="flex items-center justify-center gap-6 text-center">
|
|
@@ -1124,7 +983,7 @@ Tab key inserts 2 spaces for better formatting."
|
|
|
1124
983
|
${this.body.trim()?this.body.trim().split(/\s+/).length:0}
|
|
1125
984
|
</schmancy-typography>
|
|
1126
985
|
</div>
|
|
1127
|
-
${d.when(this.attachments.length>0,()=>
|
|
986
|
+
${d.when(this.attachments.length>0,()=>o.html`
|
|
1128
987
|
<div class="w-px h-8 bg-outline-variant"></div>
|
|
1129
988
|
<div>
|
|
1130
989
|
<schmancy-typography type="body" token="xs" class="text-surface-onVariant">
|
|
@@ -1142,15 +1001,15 @@ Tab key inserts 2 spaces for better formatting."
|
|
|
1142
1001
|
|
|
1143
1002
|
</div>
|
|
1144
1003
|
</schmancy-surface>
|
|
1145
|
-
`}},b([
|
|
1004
|
+
`}},b([c.property({type:String})],exports.SchmancyEmailViewer.prototype,"subject",2),b([c.property({type:String})],exports.SchmancyEmailViewer.prototype,"body",2),b([c.property({type:Array})],exports.SchmancyEmailViewer.prototype,"attachments",2),b([c.property({type:Array})],exports.SchmancyEmailViewer.prototype,"recipients",2),b([c.property({type:String})],exports.SchmancyEmailViewer.prototype,"fromAddress",2),b([c.property({type:String})],exports.SchmancyEmailViewer.prototype,"toAddress",2),b([c.state()],exports.SchmancyEmailViewer.prototype,"viewMode",2),exports.SchmancyEmailViewer=b([c.customElement("schmancy-email-viewer")],exports.SchmancyEmailViewer);var P=Object.defineProperty,F=Object.getOwnPropertyDescriptor,y=(e,t,i,s)=>{for(var a,n=s>1?void 0:s?F(t,i):t,r=e.length-1;r>=0;r--)(a=e[r])&&(n=(s?a(t,i,n):a(n))||n);return s&&n&&P(t,i,n),n};exports.SchmancyEmailRecipients=class extends $.$LitElement(o.css`
|
|
1146
1005
|
:host {
|
|
1147
1006
|
display: block;
|
|
1148
1007
|
height: 100%;
|
|
1149
1008
|
}
|
|
1150
|
-
`){constructor(){super(...arguments),this.disabled=!1,this.recipients=[],this.selectedRecipients=[],this.enableCsvImport=!0,this.enableDragDrop=!0,this.title="Recipients",this.emptyStateTitle="No recipients yet",this.emptyStateMessage="Import from sources or upload a CSV",this.dragOver=!1,this.localSelectedRecipients=new Set,this.searchQuery="",this.filteredRecipients=[],this.boatState="minimized",this.fileInputRef=g.createRef(),this.handleEmailsImported=()=>{this.updateFilteredRecipients(),this.requestUpdate()},this.handleImportFromCSV=()=>{this.enableCsvImport&&this.fileInputRef.value?.click()},this.handleFileSelect=e=>{const t=e.target,i=t.files?.[0];i&&this.processCSVFile(i)},this.handleDrop=e=>{if(!this.enableDragDrop)return;e.preventDefault(),this.dragOver=!1;const t=e.dataTransfer?.files[0];t&&this.processCSVFile(t)},this.processCSVFile=e=>{if(!e.name.endsWith(".csv"))return void u.$notify.error("Please select a CSV file");const t=new FileReader;t.onload=i=>{const s=i.target?.result;try{const a=this.parseCSV(s);if(a.length===0)return void u.$notify.error("No valid email addresses found in CSV");this.dispatchEvent(new CustomEvent("emails-imported",{detail:{emails:a,source:"csv"},bubbles:!0,composed:!0})),u.$notify.success(`Imported ${a.length} emails from CSV file`)}catch{u.$notify.error("Failed to parse CSV file")}},t.readAsText(e)},this.toggleRecipientSelection=e=>{this.localSelectedRecipients.has(e)?this.localSelectedRecipients.delete(e):this.localSelectedRecipients.add(e),this.localSelectedRecipients=new Set(this.localSelectedRecipients),this.dispatchSelectionChange()},this.selectAll=()=>{this.localSelectedRecipients=new Set(this.filteredRecipients),this.dispatchSelectionChange()},this.selectNone=()=>{this.localSelectedRecipients.clear(),this.localSelectedRecipients=new Set,this.dispatchSelectionChange()},this.removeRecipient=e=>{this.dispatchEvent(new CustomEvent("recipient-removed",{detail:{email:e},bubbles:!0,composed:!0}))},this.clearAll=()=>{this.dispatchEvent(new CustomEvent("recipients-cleared",{bubbles:!0,composed:!0}))},this.updateFilteredRecipients=()=>{const e=Array.isArray(this.recipients)?this.recipients:[];if(this.searchQuery.trim()){const t=this.searchQuery.toLowerCase();this.filteredRecipients=e.filter(i=>i.toLowerCase().includes(t))}else this.filteredRecipients=[...e]},this.handleSearchInput=e=>{const t=e.target;this.searchQuery=t.value},this.clearSearch=()=>{this.searchQuery=""},this.dispatchSelectionChange=()=>{this.dispatchEvent(new CustomEvent("selection-changed",{detail:{selectedEmails:Array.from(this.localSelectedRecipients)},bubbles:!0,composed:!0}))},this.handleBoatStateChange=e=>{this.boatState=e.detail}}connectedCallback(){super.connectedCallback(),this.localSelectedRecipients=new Set(this.selectedRecipients),this.updateFilteredRecipients(),this.addEventListener("emails-imported",this.handleEmailsImported)}updated(e){super.updated(e),e.has("selectedRecipients")&&(this.localSelectedRecipients=new Set(this.selectedRecipients)),(e.has("recipients")||e.has("searchQuery"))&&this.updateFilteredRecipients(),e.has("recipients")&&this.requestUpdate()}parseCSV(e){const t=[];let i;i=this.csvParser?this.csvParser.parse(e,{header:!0,skipEmptyLines:!0,dynamicTyping:!0,delimiter:"",transformHeader:l=>l.trim()}):this.simpleCSVParse(e);const s=i.data,a=i.meta.fields||[];let n=a.find(l=>l.toLowerCase().includes("email"));if(!n)for(const l of a){const h=s[0]?.[l]?.toString();if(h&&this.isValidEmail(h)){n=l;break}}if(!n)throw new Error("No email column found in CSV");const
|
|
1151
|
-
`).filter(a=>a.trim());if(t.length===0)return{data:[],meta:{}};const i=t[0].split(",").map(a=>a.trim().replace(/"/g,"")),s=[];for(let a=1;a<t.length;a++){const n=t[a].split(",").map(l=>l.trim().replace(/"/g,"")),
|
|
1009
|
+
`){constructor(){super(...arguments),this.disabled=!1,this.recipients=[],this.selectedRecipients=[],this.enableCsvImport=!0,this.enableDragDrop=!0,this.title="Recipients",this.emptyStateTitle="No recipients yet",this.emptyStateMessage="Import from sources or upload a CSV",this.dragOver=!1,this.localSelectedRecipients=new Set,this.searchQuery="",this.filteredRecipients=[],this.boatState="minimized",this.fileInputRef=g.createRef(),this.handleEmailsImported=()=>{this.updateFilteredRecipients(),this.requestUpdate()},this.handleImportFromCSV=()=>{this.enableCsvImport&&this.fileInputRef.value?.click()},this.handleFileSelect=e=>{const t=e.target,i=t.files?.[0];i&&this.processCSVFile(i)},this.handleDrop=e=>{if(!this.enableDragDrop)return;e.preventDefault(),this.dragOver=!1;const t=e.dataTransfer?.files[0];t&&this.processCSVFile(t)},this.processCSVFile=e=>{if(!e.name.endsWith(".csv"))return void u.$notify.error("Please select a CSV file");const t=new FileReader;t.onload=i=>{const s=i.target?.result;try{const a=this.parseCSV(s);if(a.length===0)return void u.$notify.error("No valid email addresses found in CSV");this.dispatchEvent(new CustomEvent("emails-imported",{detail:{emails:a,source:"csv"},bubbles:!0,composed:!0})),u.$notify.success(`Imported ${a.length} emails from CSV file`)}catch{u.$notify.error("Failed to parse CSV file")}},t.readAsText(e)},this.toggleRecipientSelection=e=>{this.localSelectedRecipients.has(e)?this.localSelectedRecipients.delete(e):this.localSelectedRecipients.add(e),this.localSelectedRecipients=new Set(this.localSelectedRecipients),this.dispatchSelectionChange()},this.selectAll=()=>{this.localSelectedRecipients=new Set(this.filteredRecipients),this.dispatchSelectionChange()},this.selectNone=()=>{this.localSelectedRecipients.clear(),this.localSelectedRecipients=new Set,this.dispatchSelectionChange()},this.removeRecipient=e=>{this.dispatchEvent(new CustomEvent("recipient-removed",{detail:{email:e},bubbles:!0,composed:!0}))},this.clearAll=()=>{this.dispatchEvent(new CustomEvent("recipients-cleared",{bubbles:!0,composed:!0}))},this.updateFilteredRecipients=()=>{const e=Array.isArray(this.recipients)?this.recipients:[];if(this.searchQuery.trim()){const t=this.searchQuery.toLowerCase();this.filteredRecipients=e.filter(i=>i.toLowerCase().includes(t))}else this.filteredRecipients=[...e]},this.handleSearchInput=e=>{const t=e.target;this.searchQuery=t.value},this.clearSearch=()=>{this.searchQuery=""},this.dispatchSelectionChange=()=>{this.dispatchEvent(new CustomEvent("selection-changed",{detail:{selectedEmails:Array.from(this.localSelectedRecipients)},bubbles:!0,composed:!0}))},this.handleBoatStateChange=e=>{this.boatState=e.detail}}connectedCallback(){super.connectedCallback(),this.localSelectedRecipients=new Set(this.selectedRecipients),this.updateFilteredRecipients(),this.addEventListener("emails-imported",this.handleEmailsImported)}updated(e){super.updated(e),e.has("selectedRecipients")&&(this.localSelectedRecipients=new Set(this.selectedRecipients)),(e.has("recipients")||e.has("searchQuery"))&&this.updateFilteredRecipients(),e.has("recipients")&&this.requestUpdate()}parseCSV(e){const t=[];let i;i=this.csvParser?this.csvParser.parse(e,{header:!0,skipEmptyLines:!0,dynamicTyping:!0,delimiter:"",transformHeader:l=>l.trim()}):this.simpleCSVParse(e);const s=i.data,a=i.meta.fields||[];let n=a.find(l=>l.toLowerCase().includes("email"));if(!n)for(const l of a){const h=s[0]?.[l]?.toString();if(h&&this.isValidEmail(h)){n=l;break}}if(!n)throw new Error("No email column found in CSV");const r=new Set;for(const l of s){const h=l[n]?.toString();if(!h)continue;const p=h.toLowerCase().trim();this.isValidEmail(p)&&!r.has(p)&&(r.add(p),t.push(p))}return t}simpleCSVParse(e){const t=e.split(`
|
|
1010
|
+
`).filter(a=>a.trim());if(t.length===0)return{data:[],meta:{}};const i=t[0].split(",").map(a=>a.trim().replace(/"/g,"")),s=[];for(let a=1;a<t.length;a++){const n=t[a].split(",").map(l=>l.trim().replace(/"/g,"")),r={};i.forEach((l,h)=>{r[l]=n[h]||""}),s.push(r)}return{data:s,meta:{fields:i}}}isValidEmail(e){return/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e.trim())}addRecipients(e){if(!e.length)return;const t=[...new Set([...this.recipients,...e])],i=e.filter(s=>!this.recipients.includes(s));this.recipients=t,this.selectedRecipients=[...new Set([...this.selectedRecipients,...i])],this.localSelectedRecipients=new Set(this.selectedRecipients),this.updateFilteredRecipients(),this.requestUpdate()}showBoat(){this.boatState="minimized"}hideBoat(){this.boatState="hidden"}expandBoat(){this.boatState="expanded"}toggleBoat(){this.boatState=this.boatState==="hidden"?"minimized":this.boatState==="minimized"?"expanded":"hidden"}render(){return this.renderBoatLayout()}renderBoatLayout(){return o.html`
|
|
1152
1011
|
<!-- Hidden file input for CSV import -->
|
|
1153
|
-
${d.when(this.enableCsvImport,()=>
|
|
1012
|
+
${d.when(this.enableCsvImport,()=>o.html`
|
|
1154
1013
|
<input
|
|
1155
1014
|
type="file"
|
|
1156
1015
|
accept=".csv"
|
|
@@ -1171,7 +1030,7 @@ Tab key inserts 2 spaces for better formatting."
|
|
|
1171
1030
|
<schmancy-typography type="title" token="md" class="font-semibold">
|
|
1172
1031
|
${this.title}
|
|
1173
1032
|
</schmancy-typography>
|
|
1174
|
-
${d.when(this.recipients.length>0,()=>
|
|
1033
|
+
${d.when(this.recipients.length>0,()=>o.html`
|
|
1175
1034
|
<schmancy-badge>
|
|
1176
1035
|
${this.localSelectedRecipients.size}/${this.recipients.length}
|
|
1177
1036
|
</schmancy-badge>
|
|
@@ -1184,7 +1043,7 @@ Tab key inserts 2 spaces for better formatting."
|
|
|
1184
1043
|
${this.renderBoatContent()}
|
|
1185
1044
|
</div>
|
|
1186
1045
|
</schmancy-boat>
|
|
1187
|
-
`}renderBoatContent(){return
|
|
1046
|
+
`}renderBoatContent(){return o.html`
|
|
1188
1047
|
<!-- Search Bar and CSV Import on one line -->
|
|
1189
1048
|
<div class="p-4 flex gap-3">
|
|
1190
1049
|
<schmancy-input
|
|
@@ -1194,7 +1053,7 @@ Tab key inserts 2 spaces for better formatting."
|
|
|
1194
1053
|
@input=${this.handleSearchInput}
|
|
1195
1054
|
class="flex-1"
|
|
1196
1055
|
>
|
|
1197
|
-
${d.when(this.searchQuery,()=>
|
|
1056
|
+
${d.when(this.searchQuery,()=>o.html`
|
|
1198
1057
|
<schmancy-button
|
|
1199
1058
|
slot="suffix"
|
|
1200
1059
|
variant="text"
|
|
@@ -1205,7 +1064,7 @@ Tab key inserts 2 spaces for better formatting."
|
|
|
1205
1064
|
`)}
|
|
1206
1065
|
</schmancy-input>
|
|
1207
1066
|
|
|
1208
|
-
${d.when(this.enableCsvImport,()=>
|
|
1067
|
+
${d.when(this.enableCsvImport,()=>o.html`
|
|
1209
1068
|
<schmancy-button
|
|
1210
1069
|
variant="outlined"
|
|
1211
1070
|
@click=${this.handleImportFromCSV}
|
|
@@ -1217,7 +1076,7 @@ Tab key inserts 2 spaces for better formatting."
|
|
|
1217
1076
|
`)}
|
|
1218
1077
|
</div>
|
|
1219
1078
|
|
|
1220
|
-
${d.when(this.recipients.length>0,()=>
|
|
1079
|
+
${d.when(this.recipients.length>0,()=>o.html`
|
|
1221
1080
|
<!-- Bulk Actions -->
|
|
1222
1081
|
<div class="px-4 pb-4">
|
|
1223
1082
|
<div class="flex items-center gap-3">
|
|
@@ -1250,9 +1109,9 @@ Tab key inserts 2 spaces for better formatting."
|
|
|
1250
1109
|
|
|
1251
1110
|
<!-- Recipients List -->
|
|
1252
1111
|
<div class="flex-1 overflow-y-auto px-4 pb-4">
|
|
1253
|
-
${d.when(this.filteredRecipients.length>0,()=>
|
|
1112
|
+
${d.when(this.filteredRecipients.length>0,()=>o.html`
|
|
1254
1113
|
<div class="flex flex-wrap gap-3">
|
|
1255
|
-
${
|
|
1114
|
+
${S.repeat(this.filteredRecipients,e=>e,e=>o.html`
|
|
1256
1115
|
<schmancy-button
|
|
1257
1116
|
variant=${this.localSelectedRecipients.has(e)?"filled":"outlined"}
|
|
1258
1117
|
@click=${t=>{t.stopPropagation(),t.preventDefault(),this.toggleRecipientSelection(e)}}
|
|
@@ -1267,7 +1126,7 @@ Tab key inserts 2 spaces for better formatting."
|
|
|
1267
1126
|
</schmancy-button>
|
|
1268
1127
|
`)}
|
|
1269
1128
|
</div>
|
|
1270
|
-
`,()=>
|
|
1129
|
+
`,()=>o.html`
|
|
1271
1130
|
<div class="text-center py-8">
|
|
1272
1131
|
<schmancy-icon size="32px" class="opacity-50 mb-2">search_off</schmancy-icon>
|
|
1273
1132
|
<schmancy-typography type="body" token="sm" class="mb-2">
|
|
@@ -1279,7 +1138,7 @@ Tab key inserts 2 spaces for better formatting."
|
|
|
1279
1138
|
</div>
|
|
1280
1139
|
`)}
|
|
1281
1140
|
</div>
|
|
1282
|
-
`,()=>
|
|
1141
|
+
`,()=>o.html`
|
|
1283
1142
|
<!-- Empty State -->
|
|
1284
1143
|
<div class="flex-1 flex items-center justify-center p-8">
|
|
1285
1144
|
<div class="text-center space-y-4">
|
|
@@ -1295,7 +1154,7 @@ Tab key inserts 2 spaces for better formatting."
|
|
|
1295
1154
|
`)}
|
|
1296
1155
|
|
|
1297
1156
|
<!-- Drag Overlay -->
|
|
1298
|
-
${d.when(this.dragOver&&this.enableDragDrop,()=>
|
|
1157
|
+
${d.when(this.dragOver&&this.enableDragDrop,()=>o.html`
|
|
1299
1158
|
<div
|
|
1300
1159
|
class="absolute inset-4 flex items-center justify-center border-2 border-dashed border-primary rounded-lg z-10"
|
|
1301
1160
|
@dragover=${e=>{e.preventDefault(),this.dragOver=!0}}
|
|
@@ -1310,5 +1169,5 @@ Tab key inserts 2 spaces for better formatting."
|
|
|
1310
1169
|
</schmancy-surface>
|
|
1311
1170
|
</div>
|
|
1312
1171
|
`)}
|
|
1313
|
-
`}},y([
|
|
1314
|
-
//# sourceMappingURL=email-recipients-
|
|
1172
|
+
`}},y([c.property({type:Boolean})],exports.SchmancyEmailRecipients.prototype,"disabled",2),y([c.property({type:Array})],exports.SchmancyEmailRecipients.prototype,"recipients",2),y([c.property({type:Array})],exports.SchmancyEmailRecipients.prototype,"selectedRecipients",2),y([c.property({type:Boolean})],exports.SchmancyEmailRecipients.prototype,"enableCsvImport",2),y([c.property({type:Boolean})],exports.SchmancyEmailRecipients.prototype,"enableDragDrop",2),y([c.property({type:String})],exports.SchmancyEmailRecipients.prototype,"title",2),y([c.property({type:String})],exports.SchmancyEmailRecipients.prototype,"emptyStateTitle",2),y([c.property({type:String})],exports.SchmancyEmailRecipients.prototype,"emptyStateMessage",2),y([c.property({type:Object})],exports.SchmancyEmailRecipients.prototype,"csvParser",2),y([c.state()],exports.SchmancyEmailRecipients.prototype,"dragOver",2),y([c.state()],exports.SchmancyEmailRecipients.prototype,"localSelectedRecipients",2),y([c.state()],exports.SchmancyEmailRecipients.prototype,"searchQuery",2),y([c.state()],exports.SchmancyEmailRecipients.prototype,"filteredRecipients",2),y([c.state()],exports.SchmancyEmailRecipients.prototype,"boatState",2),exports.SchmancyEmailRecipients=y([c.customElement("schmancy-email-recipients")],exports.SchmancyEmailRecipients);
|
|
1173
|
+
//# sourceMappingURL=email-recipients-CbZNnzoj.cjs.map
|