2.4.9-beta.9 • Published 3 days ago

underline-action v2.4.9-beta.9

Weekly downloads
-
License
-
Repository
github
Last release
3 days ago

Underline-action

这是什么

该库用于选中页面一段富文本并给文本划线,常用于各种划线评论与划线高亮场景

install

npm i underline-action

How to use

import { UnderlineAction } from 'underline-action';

// 初始化
const action = UnderlineAction({
  selector: '#app', // 需要插入划线的祖先dom
  tag: 'span',  // 插入的标签类型
  getKeyByRange({ start, end, props }) {  // 生成划线id的规则
    return `${start}-${end}`;
  },
  needFilterNode(node) {  // 需要过滤的节点
    if (xxx) {
      return NodeFilter.FILTER_REJECT;
    }

    return NodeFilter.FILTER_ACCEPT;
  },
  getAttachNode(node) { // 不计入总字数的节点,但是如果被跨过会被划线,返回true,目前仅支持文本节点
    if (node.parentElement.tagName === 'SUP') {
      return true;
    }
  },
  getRenderInfo(node) {   // 获取节点的用于渲染的信息,会在render方法的patchProps带上
    return {};
  }
});

// 划线
const key = action.insertSpanInRange(start, end, props, temp)
# start 开始划线的位置
# end 结束划线的位置
# props span上要带的属性
# temp boolean 为true返回生成的span数组,为false会存在实例的state里面,这里如果不需要存储状态建议用true

// 用key删除划线
action.removeSpanByKey(key)
# key 划线id

// 直接用span删除划线
action.mergeTextNode(span)
# span 划线span

// 获取起止之间文本
action.getTextByStartEnd(start, end)
# start 开始的位置
# end 结束的位置

// 获取所有span
const spans = action.getSpanByKey(key)
# key 划线id

// 获取dom总字数
const num = action.getTotalCount()

// 获取用于渲染元信息
const renderInfo = action.getRenderInfoByStartEnd(start, end)

// 使用元信息渲染,参考vue调和器
render(renderInfos, renderdom, {
  patchProp(el, key, prevValue, nextValue) {
    switch (key) {
      case 'textContent':
      case 'style':
        el[key] = nextValue;
        break;
      case 'type':
        break;
      default:
        el.setAttribute(key, nextValue);
        break;
    }
  },
  remove(el) {
    el.remove();
  },
  createElement(type) {
    return document.createElement(type);
  },
  createText(text) {
    return document.createTextNode(text);
  },
  insert(node, parent, anchor) {
    if (anchor) {
      parent.insertBefore(node, anchor);
    } else {
      parent.appendChild(node);
    }
  },
});
2.4.9-beta.8

3 days ago

2.4.9-beta.9

3 days ago

2.4.9-beta.2

4 days ago

2.4.9-beta.3

3 days ago

2.4.9-beta.1

4 days ago

2.4.8

4 days ago

2.4.9-beta.6

3 days ago

2.4.9-beta.7

3 days ago

2.4.9-beta.4

3 days ago

2.4.9-beta.5

3 days ago

2.4.8-beta.7

2 months ago

2.4.8-beta.8

2 months ago

2.4.8-beta.6

2 months ago

2.4.8-beta.5

5 months ago

2.4.7

5 months ago

2.4.8-beta.1

5 months ago

2.4.8-beta.2

5 months ago

2.4.8-beta.3

5 months ago

2.4.8-beta.4

5 months ago

2.4.7-beta.11

5 months ago

2.4.7-beta.12

5 months ago

2.4.7-beta.10

5 months ago

2.4.7-beta.7

5 months ago

2.4.7-beta.9

5 months ago

2.4.7-beta.8

5 months ago

2.4.7-beta.1

5 months ago

2.4.7-beta.6

5 months ago

2.4.7-beta.3

5 months ago

2.4.7-beta.2

5 months ago

2.4.7-beta.5

5 months ago

2.4.7-beta.4

5 months ago

2.4.6

7 months ago

2.4.6-beta.16

7 months ago

2.3.8-beta.3

11 months ago

2.3.8-beta.2

11 months ago

2.4.1

10 months ago

2.4.3

8 months ago

2.4.2

10 months ago

2.4.5

8 months ago

2.4.4

8 months ago

2.4.0-beta.11

10 months ago

2.4.0-beta.10

10 months ago

2.3.0

11 months ago

2.3.2

11 months ago

2.3.1

11 months ago

2.3.4

11 months ago

2.3.3

11 months ago

2.3.5

11 months ago

2.3.6-beta.2

11 months ago

2.3.6-beta.1

11 months ago

2.4.6-beta.14

7 months ago

2.4.6-beta.15

7 months ago

2.4.6-beta.12

7 months ago

2.4.6-beta.13

7 months ago

2.4.6-beta.10

7 months ago

2.4.6-beta.11

7 months ago

2.3.10-beta.0

11 months ago

2.3.10-beta.1

11 months ago

2.3.7

11 months ago

2.3.9

11 months ago

2.4.6-beta.7

7 months ago

2.4.0-beta.8

10 months ago

2.4.6-beta.8

7 months ago

2.4.0-beta.7

10 months ago

2.4.6-beta.5

7 months ago

2.4.5-beta.5

8 months ago

2.4.6-beta.6

7 months ago

2.4.5-beta.4

8 months ago

2.4.0-beta.9

10 months ago

2.4.6-beta.3

7 months ago

2.4.5-beta.3

8 months ago

2.4.0-beta.4

10 months ago

2.4.6-beta.4

7 months ago

2.4.5-beta.2

8 months ago

2.4.0-beta.3

10 months ago

2.4.6-beta.1

7 months ago

2.4.5-beta.1

8 months ago

2.4.0-beta.6

10 months ago

2.4.6-beta.2

7 months ago

2.4.0-beta.5

10 months ago

2.4.0-beta.2

10 months ago

2.4.0-beta.1

10 months ago

2.4.6-beta.9

7 months ago

2.3.8-beta.1

11 months ago

2.3.10

10 months ago

2.2.1

1 year ago

2.3.0-beta.1

12 months ago

2.2.0

1 year ago

2.2.3

1 year ago

2.2.2

1 year ago

2.2.4

1 year ago

2.2.7

12 months ago

2.2.6

12 months ago

2.3.0-beta.2

12 months ago

2.2.3-beta.4

1 year ago

2.2.3-beta.5

1 year ago

2.2.5-beta.1

12 months ago

2.2.3-beta.1

1 year ago

2.2.3-beta.2

1 year ago

2.2.3-beta.3

1 year ago

2.2.2-beta.1

1 year ago

2.2.5-beta.2

12 months ago

2.1.6

1 year ago

2.1.7

1 year ago

2.2.8

12 months ago

2.1.5-beta.1

1 year ago

2.1.4

1 year ago

2.1.3

1 year ago

2.1.2

1 year ago

2.1.1

1 year ago

2.1.1-beta.2

1 year ago

2.1.1-beta.1

1 year ago

2.1.0

1 year ago

2.0.3

1 year ago

2.0.2

1 year ago

2.0.1

1 year ago

2.0.0

1 year ago

2.0.0-beta.14

1 year ago

2.0.0-beta.13

1 year ago

2.0.0-beta.12

1 year ago

2.0.0-beta.11

1 year ago

2.0.0-beta.10

1 year ago

2.0.0-beta.9

1 year ago

2.0.0-beta.8

1 year ago

2.0.0-beta.7

1 year ago

2.0.0-beta.6

1 year ago

2.0.0-beta.5

1 year ago

2.0.0-beta.4

1 year ago

2.0.0-beta.3

1 year ago

2.0.0-beta.2

1 year ago

2.0.0-beta.1

1 year ago

1.1.0-beta.3

1 year ago

1.1.0-beta.2

1 year ago

1.1.0-beta.1

1 year ago

1.0.13

1 year ago

1.0.12

1 year ago

1.0.11

1 year ago

1.0.10

1 year ago

1.0.9

1 year ago

1.0.8

1 year ago

1.0.7

2 years ago

1.0.6

2 years ago

1.0.5

2 years ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago