dataset.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. const CAPS_REGEX = /[A-Z]/g;
  2. function updateDataset(oldVnode, vnode) {
  3. const elm = vnode.elm;
  4. let oldDataset = oldVnode.data.dataset;
  5. let dataset = vnode.data.dataset;
  6. let key;
  7. if (!oldDataset && !dataset)
  8. return;
  9. if (oldDataset === dataset)
  10. return;
  11. oldDataset = oldDataset || {};
  12. dataset = dataset || {};
  13. const d = elm.dataset;
  14. for (key in oldDataset) {
  15. if (!(key in dataset)) {
  16. if (d) {
  17. if (key in d) {
  18. delete d[key];
  19. }
  20. }
  21. else {
  22. elm.removeAttribute("data-" + key.replace(CAPS_REGEX, "-$&").toLowerCase());
  23. }
  24. }
  25. }
  26. for (key in dataset) {
  27. if (oldDataset[key] !== dataset[key]) {
  28. if (d) {
  29. d[key] = dataset[key];
  30. }
  31. else {
  32. elm.setAttribute("data-" + key.replace(CAPS_REGEX, "-$&").toLowerCase(), dataset[key]);
  33. }
  34. }
  35. }
  36. }
  37. export const datasetModule = {
  38. create: updateDataset,
  39. update: updateDataset
  40. };
  41. //# sourceMappingURL=dataset.js.map