diff --git a/packages/runtime-dom/src/components/Transition.ts b/packages/runtime-dom/src/components/Transition.ts index 2318d19eb..6b3ead4c2 100644 --- a/packages/runtime-dom/src/components/Transition.ts +++ b/packages/runtime-dom/src/components/Transition.ts @@ -55,7 +55,7 @@ const DOMTransitionPropsValidators = { leaveToClass: String } -export const TransitionPropsValidators = (Transition.props = extend( +export const TransitionPropsValidators = (Transition.props = /*#__PURE__*/ extend( {}, (BaseTransition as any).props, DOMTransitionPropsValidators diff --git a/packages/runtime-dom/src/components/TransitionGroup.ts b/packages/runtime-dom/src/components/TransitionGroup.ts index 417f0b13e..e1236cad3 100644 --- a/packages/runtime-dom/src/components/TransitionGroup.ts +++ b/packages/runtime-dom/src/components/TransitionGroup.ts @@ -39,7 +39,7 @@ export type TransitionGroupProps = Omit & { const TransitionGroupImpl = { name: 'TransitionGroup', - props: extend({}, TransitionPropsValidators, { + props: /*#__PURE__*/ extend({}, TransitionPropsValidators, { tag: String, moveClass: String }), @@ -130,8 +130,14 @@ const TransitionGroupImpl = { } } -// remove mode props as TransitionGroup doesn't support it -delete TransitionGroupImpl.props.mode +/** + * TransitionGroup does not support "mode" so we need to remove it from the + * props declarations, but direct delete operation is considered a side effect + * and will make the entire transition feature non-tree-shakeable, so we do it + * in a function and mark the function's invocation as pure. + */ +const removeMode = (props: any) => delete props.mode +/*#__PURE__*/ removeMode(TransitionGroupImpl.props) export const TransitionGroup = (TransitionGroupImpl as unknown) as { new (): {