]> BookStack Code Mirror - bookstack/blobdiff - resources/js/wysiwyg/utils/dom.ts
Lexical: Wired table properties, and other buttons
[bookstack] / resources / js / wysiwyg / utils / dom.ts
index 7426ac5925290dd6d43c1d2863293194e5cd7a76..a307bdd7531986289187cd3e53483cb8d515a178 100644 (file)
@@ -29,4 +29,29 @@ export function formatSizeValue(size: number | string, defaultSuffix: string = '
     }
 
     return size;
+}
+
+export type StyleMap = Map<string, string>;
+
+/**
+ * Creates a map from an element's styles.
+ * Uses direct attribute value string handling since attempting to iterate
+ * over .style will expand out any shorthand properties (like 'padding') making
+ * rather than being representative of the actual properties set.
+ */
+export function extractStyleMapFromElement(element: HTMLElement): StyleMap {
+    const map: StyleMap = new Map();
+    const styleText= element.getAttribute('style') || '';
+
+    const rules = styleText.split(';');
+    for (const rule of rules) {
+        const [name, value] = rule.split(':');
+        if (!name || !value) {
+            continue;
+        }
+
+        map.set(name.trim().toLowerCase(), value.trim());
+    }
+
+    return map;
 }
\ No newline at end of file