config.js
2.54 KB
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
import { Vue } from '../vue'
import { DEFAULT_BREAKPOINT, PROP_NAME } from '../constants/config'
import { cloneDeep } from './clone-deep'
import { memoize } from './memoize'
// --- Constants ---
const VueProto = Vue.prototype
// --- Getter methods ---
// All methods return a deep clone (immutable) copy of the config value,
// to prevent mutation of the user config object
// Get the current config
export const getConfig = () => {
const bvConfig = VueProto[PROP_NAME]
return bvConfig ? bvConfig.getConfig() : {}
}
// Method to grab a config value based on a dotted/array notation key
export const getConfigValue = (key, defaultValue = undefined) => {
const bvConfig = VueProto[PROP_NAME]
return bvConfig ? bvConfig.getConfigValue(key, defaultValue) : cloneDeep(defaultValue)
}
// Method to grab a config value for a particular component
export const getComponentConfig = (key, propKey = null, defaultValue = undefined) => {
// Return the particular config value for key if specified,
// otherwise we return the full config (or an empty object if not found)
return propKey ? getConfigValue(`${key}.${propKey}`, defaultValue) : getConfigValue(key, {})
}
// Get all breakpoint names
export const getBreakpoints = () => getConfigValue('breakpoints', DEFAULT_BREAKPOINT)
// Private method for caching breakpoint names
const _getBreakpointsCached = memoize(() => getBreakpoints())
// Get all breakpoint names (cached)
export const getBreakpointsCached = () => cloneDeep(_getBreakpointsCached())
// Get breakpoints with the smallest breakpoint set as ''
// Useful for components that create breakpoint specific props
export const getBreakpointsUp = () => {
const breakpoints = getBreakpoints()
breakpoints[0] = ''
return breakpoints
}
// Get breakpoints with the smallest breakpoint set as '' (cached)
// Useful for components that create breakpoint specific props
export const getBreakpointsUpCached = memoize(() => {
const breakpoints = getBreakpointsCached()
breakpoints[0] = ''
return breakpoints
})
// Get breakpoints with the largest breakpoint set as ''
export const getBreakpointsDown = () => {
const breakpoints = getBreakpoints()
breakpoints[breakpoints.length - 1] = ''
return breakpoints
}
// Get breakpoints with the largest breakpoint set as '' (cached)
// Useful for components that create breakpoint specific props
/* istanbul ignore next: we don't use this method anywhere, yet */
export const getBreakpointsDownCached = () => {
const breakpoints = getBreakpointsCached()
breakpoints[breakpoints.length - 1] = ''
return breakpoints
}