]> git.ipfire.org Git - thirdparty/vuejs/core.git/commitdiff
fix(build): make transition tree-shakeable again
authorEvan You <yyx990803@gmail.com>
Mon, 20 Jul 2020 20:13:41 +0000 (16:13 -0400)
committerEvan You <yyx990803@gmail.com>
Mon, 20 Jul 2020 20:17:14 +0000 (16:17 -0400)
packages/runtime-dom/src/components/Transition.ts
packages/runtime-dom/src/components/TransitionGroup.ts

index 2318d19eb9ba2c0b44a1a1b55b8fff2cb8acc8e1..6b3ead4c279ccfec14d21cdf7110e0a55e2d3275 100644 (file)
@@ -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
index 417f0b13eabe350a17bf70133090a0dc21ebc606..e1236cad358b24e1188756fbe469df986a10769b 100644 (file)
@@ -39,7 +39,7 @@ export type TransitionGroupProps = Omit<TransitionProps, 'mode'> & {
 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 (): {