UNPKG

bulma-calendar

Version:

Display a calendar for date/time selection, in different colors and sizes

65 lines (52 loc) 1.51 kB
import * as type from "./type"; import * as dateFns from 'date-fns'; export const uuid = (prefix = '') => prefix + ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, c => (c ^ (window.crypto || window.msCrypto).getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)); export const deepMerge = (...sources) => { let acc = {} for (const source of sources) { if (source instanceof Array) { if (!(acc instanceof Array)) { acc = [] } acc = [...acc, ...source] } else if (source instanceof Object) { for (let [key, value] of Object.entries(source)) { if (value instanceof Object && key in acc) { value = deepMerge(acc[key], value) } acc = { ...acc, [key]: value } } } } return acc; }; export const detectSupportsPassive = () => { let supportsPassive = false; try { let opts = Object.defineProperty({}, 'passive', { get() { supportsPassive = true; } }); window.addEventListener('testPassive', null, opts); window.removeEventListener('testPassive', null, opts); } catch (e) {} return supportsPassive; } export const newDate = (date, format, fallback = 'yyyy-MM-dd HH:mm') => { if (!date) { return undefined; } // Clone Date if (type.isDate(date)) { return new Date(date.getTime()); } // Parse Date let result = dateFns.parse(date, format, new Date()); if (!type.isDate(result)) { result = dateFns.parse(date, fallback, new Date()); } return result; }