| 58 | } |
| 59 | |
| 60 | static from<O, S>( |
| 61 | mark: Mark<O, S>, |
| 62 | renderToReactEmail: MarkRendererComponent, |
| 63 | ): EmailMark<O, S> { |
| 64 | const customMark = EmailMark.create({} as ConfigParameter<O, S>); |
| 65 | // This only makes a shallow copy, so if there's nested objects here mutating things will be dangerous |
| 66 | Object.assign(customMark, { ...mark }); |
| 67 | customMark.config = { ...mark.config, renderToReactEmail }; |
| 68 | return customMark; |
| 69 | } |
| 70 | |
| 71 | // Subclass return types for configure/extend; safe at runtime. TipTap's Mark typings cause TS2416 when returning EmailMark. |
| 72 | // @ts-expect-error - EmailMark is a valid Mark subclass; base typings don't support subclass return types |