data.js 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import { StringExt } from '../string';
  2. const dataset = new WeakMap();
  3. export function getData(elem, name) {
  4. const key = StringExt.camelCase(name);
  5. const cache = dataset.get(elem);
  6. if (cache) {
  7. return cache[key];
  8. }
  9. }
  10. export function setData(elem, name, value) {
  11. const key = StringExt.camelCase(name);
  12. const cache = dataset.get(elem);
  13. if (cache) {
  14. cache[key] = value;
  15. }
  16. else {
  17. dataset.set(elem, {
  18. [key]: value,
  19. });
  20. }
  21. }
  22. export function data(elem, name, value) {
  23. if (!name) {
  24. const datas = {};
  25. Object.keys(dataset).forEach((key) => {
  26. datas[key] = getData(elem, key);
  27. });
  28. return datas;
  29. }
  30. if (typeof name === 'string') {
  31. if (value === undefined) {
  32. return getData(elem, name);
  33. }
  34. setData(elem, name, value);
  35. return;
  36. }
  37. // eslint-disable-next-line
  38. for (const key in name) {
  39. data(elem, key, name[key]);
  40. }
  41. }
  42. //# sourceMappingURL=data.js.map