Ver Fonte

feat: support query element inside shadow DOM

Ahmad Kholid há 2 anos atrás
pai
commit
b34a51df24
3 ficheiros alterados com 18 adições e 0 exclusões
  1. 1 0
      package.json
  2. 12 0
      src/utils/FindElement.js
  3. 5 0
      yarn.lock

+ 1 - 0
package.json

@@ -81,6 +81,7 @@
     "prosemirror-history": "^1.3.0",
     "prosemirror-keymap": "^1.2.0",
     "prosemirror-schema-list": "^1.2.2",
+    "query-selector-shadow-dom": "^1.0.1",
     "read-excel-file": "^5.5.3",
     "rxjs": "^7.8.0",
     "sizzle": "^2.3.8",

+ 12 - 0
src/utils/FindElement.js

@@ -1,4 +1,8 @@
 import Sizzle from 'sizzle';
+import {
+  querySelectorAllDeep,
+  querySelectorDeep,
+} from 'query-selector-shadow-dom';
 
 const specialSelectors = [':contains', ':header', ':parent'];
 const specialSelectorsRegex = new RegExp(specialSelectors.join('|'));
@@ -16,6 +20,14 @@ class FindElement {
       return data.multiple ? elements : elements[0];
     }
 
+    if (selector.includes('>>')) {
+      const newSelector = selector.replaceAll('>>', '');
+
+      return data.multiple
+        ? querySelectorAllDeep(newSelector)
+        : querySelectorDeep(newSelector);
+    }
+
     if (data.multiple) {
       const elements = documentCtx.querySelectorAll(selector);
 

+ 5 - 0
yarn.lock

@@ -5773,6 +5773,11 @@ qs@6.11.0:
   dependencies:
     side-channel "^1.0.4"
 
+query-selector-shadow-dom@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/query-selector-shadow-dom/-/query-selector-shadow-dom-1.0.1.tgz#1c7b0058eff4881ac44f45d8f84ede32e9a2f349"
+  integrity sha512-lT5yCqEBgfoMYpf3F2xQRK7zEr1rhIIZuceDK6+xRkJQ4NMbHTwXqk4NkwDwQMNqXgG9r9fyHnzwNVs6zV5KRw==
+
 queue-microtask@^1.2.2:
   version "1.2.3"
   resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"