processDataSet.js 686 B

12345678910111213141516171819202122232425262728293031323334
  1. /**
  2. * 把props的data属性,处理成dataset
  3. * { 'data-alpha-beta': 3 }
  4. * { alphaBeta: 3 }
  5. */
  6. function processDataSet(e, props = {}) {
  7. if (e.timeStamp === undefined) {
  8. e = {
  9. ...e,
  10. target: {
  11. dataset: {},
  12. },
  13. currentTarget: {
  14. dataset: {},
  15. },
  16. }
  17. }
  18. Object.keys(props)
  19. .forEach((prop) => {
  20. const matched = prop.match(/^data-(.+)/)
  21. if (matched) {
  22. const key = matched[1].replace(/-(\w)/, ($0, $1) => {
  23. return $1.toUpperCase()
  24. })
  25. e.target.dataset[key] = props[prop]
  26. e.currentTarget.dataset[key] = props[prop]
  27. }
  28. })
  29. return e
  30. }
  31. module.exports = processDataSet