فهرست منبع

fix(shared): fix parsing of multi-line inline style (#6777)

三咲智子 Kevin Deng 3 سال پیش
والد
کامیت
9768949ce0
2فایلهای تغییر یافته به همراه29 افزوده شده و 2 حذف شده
  1. 28 1
      packages/shared/__tests__/normalizeProp.spec.ts
  2. 1 1
      packages/shared/src/normalizeProp.ts

+ 28 - 1
packages/shared/__tests__/normalizeProp.spec.ts

@@ -1,4 +1,4 @@
-import { normalizeClass } from '../src'
+import { normalizeClass, parseStringStyle } from '../src'
 
 describe('normalizeClass', () => {
   test('handles string correctly', () => {
@@ -16,4 +16,31 @@ describe('normalizeClass', () => {
       'foo baz'
     )
   })
+
+  // #6777
+  test('parse multi-line inline style', () => {
+    expect(
+      parseStringStyle(`border: 1px solid transparent;
+    background: linear-gradient(white, white) padding-box,
+      repeating-linear-gradient(
+        -45deg,
+        #ccc 0,
+        #ccc 0.5em,
+        white 0,
+        white 0.75em
+      );`)
+    ).toMatchInlineSnapshot(`
+      Object {
+        "background": "linear-gradient(white, white) padding-box,
+            repeating-linear-gradient(
+              -45deg,
+              #ccc 0,
+              #ccc 0.5em,
+              white 0,
+              white 0.75em
+            )",
+        "border": "1px solid transparent",
+      }
+    `)
+  })
 })

+ 1 - 1
packages/shared/src/normalizeProp.ts

@@ -27,7 +27,7 @@ export function normalizeStyle(
 }
 
 const listDelimiterRE = /;(?![^(]*\))/g
-const propertyDelimiterRE = /:(.+)/
+const propertyDelimiterRE = /:([^]+)/
 
 export function parseStringStyle(cssText: string): NormalizedStyle {
   const ret: NormalizedStyle = {}