aboutsummaryrefslogtreecommitdiffstats
path: root/src/modules/optional/data.js
blob: 4c163c0cb4b1b972fa6b1201a16b6855dff38c16 (plain)
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
import { registerMethods } from '../../utils/methods.js'

// Store data values on svg nodes
export function data (a, v, r) {
  if (typeof a === 'object') {
    for (v in a) {
      this.data(v, a[v])
    }
  } else if (arguments.length < 2) {
    try {
      return JSON.parse(this.attr('data-' + a))
    } catch (e) {
      return this.attr('data-' + a)
    }
  } else {
    this.attr('data-' + a,
      v === null ? null
      : r === true || typeof v === 'string' || typeof v === 'number' ? v
      : JSON.stringify(v)
    )
  }

  return this
}

registerMethods('Dom', { data })