Blame view

天文台pc/tianwentai-ui/node_modules/motion-dom/dist/es/effects/attr/index.mjs 1.42 KB
bc518174   王天杨   提交两个项目文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
  import { camelToDash } from '../../render/dom/utils/camel-to-dash.mjs';
  import { createSelectorEffect } from '../utils/create-dom-effect.mjs';
  import { createEffect } from '../utils/create-effect.mjs';
  
  function canSetAsProperty(element, name) {
      if (!(name in element))
          return false;
      const descriptor = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(element), name) ||
          Object.getOwnPropertyDescriptor(element, name);
      // Check if it has a setter
      return descriptor && typeof descriptor.set === "function";
  }
  const addAttrValue = (element, state, key, value) => {
      const isProp = canSetAsProperty(element, key);
      const name = isProp
          ? key
          : key.startsWith("data") || key.startsWith("aria")
              ? camelToDash(key)
              : key;
      /**
       * Set attribute directly via property if available
       */
      const render = isProp
          ? () => {
              element[name] = state.latest[key];
          }
          : () => {
              const v = state.latest[key];
              if (v === null || v === undefined) {
                  element.removeAttribute(name);
              }
              else {
                  element.setAttribute(name, String(v));
              }
          };
      return state.set(key, value, render);
  };
  const attrEffect = /*@__PURE__*/ createSelectorEffect(
  /*@__PURE__*/ createEffect(addAttrValue));
  
  export { addAttrValue, attrEffect };
  //# sourceMappingURL=index.mjs.map