@leaflink/stash 44.6.1 → 44.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +106 -74
- package/dist/Image.js +114 -133
- package/dist/Image.js.map +1 -1
- package/dist/Image.vue.d.ts +28 -31
- package/dist/Toast.js +535 -26
- package/dist/Toast.js.map +1 -1
- package/dist/Toast.vue.d.ts +2 -1
- package/dist/Toasts.js +3 -2
- package/dist/Toasts.js.map +1 -1
- package/dist/ToastsPlugin.js +7 -6
- package/dist/ToastsPlugin.js.map +1 -1
- package/dist/components.css +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/useToasts.d.ts +8 -6
- package/dist/useToasts.js.map +1 -1
- package/package.json +14 -2
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../node_modules/vue3-touch-events/index.js","../src/utils/Deferred.ts","../src/composables/useDialog/useDialog.ts","../src/components/Dialogs/Dialogs.vue","../src/plugins/DialogsPlugin.ts","../types/colors.ts","../src/index.ts"],"sourcesContent":["/**\r\n * @project vue3-touch-events\r\n * @author Robin Rodricks, Xavier Julien, Jerry Bendy\r\n * @since 30/4/2021\r\n * @url https://github.com/robinrodricks/vue3-touch-events\r\n */\r\n\r\nfunction touchX(event) {\r\n if(event.type.indexOf('mouse') !== -1){\r\n return event.clientX;\r\n }\r\n return event.touches[0].clientX;\r\n}\r\n\r\nfunction touchY(event) {\r\n if(event.type.indexOf('mouse') !== -1){\r\n return event.clientY;\r\n }\r\n return event.touches[0].clientY;\r\n}\r\n\r\nvar isPassiveSupported = (function() {\r\n var supportsPassive = false;\r\n try {\r\n var opts = Object.defineProperty({}, 'passive', {\r\n get: function() {\r\n supportsPassive = true;\r\n }\r\n });\r\n window.addEventListener('test', null, opts);\r\n } catch (e) {}\r\n return supportsPassive;\r\n})();\r\n\r\nvar vueTouchEvents = {\r\n install: function (app, constructorOptions) {\r\n\t\t\r\n var globalOptions = Object.assign({}, {\r\n disableClick: false,\r\n tapTolerance: 10, // px\r\n swipeTolerance: 30, // px\r\n touchHoldTolerance: 400, // ms\r\n longTapTimeInterval: 400, // ms\r\n touchClass: '',\r\n\t\t\tdragFrequency: 100, // ms\r\n\t\t\trollOverFrequency: 100, // ms\r\n }, constructorOptions);\r\n\r\n function touchStartEvent(event) {\r\n var $this = this.$$touchObj,\r\n isTouchEvent = event.type.indexOf('touch') >= 0,\r\n isMouseEvent = event.type.indexOf('mouse') >= 0,\r\n $el = this;\r\n\r\n if (isTouchEvent) {\r\n $this.lastTouchStartTime = event.timeStamp;\r\n }\r\n\r\n if (isMouseEvent && $this.lastTouchStartTime && event.timeStamp - $this.lastTouchStartTime < 350) {\r\n return;\r\n }\r\n\r\n if ($this.touchStarted) {\r\n return;\r\n }\r\n\r\n addTouchClass(this);\r\n\r\n $this.touchStarted = true; // always true while the element is being PRESSED\r\n\r\n $this.touchMoved = false; // true only when the element is PRESSED and DRAGGED a bit\r\n $this.swipeOutBounded = false;\r\n\r\n $this.startX = touchX(event);\r\n $this.startY = touchY(event);\r\n\r\n $this.currentX = 0; // always updated with the last mouse X/Y while over the element\r\n $this.currentY = 0;\r\n\r\n $this.touchStartTime = event.timeStamp;\r\n\t\t\t\r\n\t\t\t// performance: only process swipe events if `swipe.*` event is registered on this element\r\n\t\t\t$this.hasSwipe = hasEvent(this, 'swipe')\r\n\t\t\t\t|| hasEvent(this, 'swipe.left') || hasEvent(this, 'swipe.right')\r\n\t\t\t\t|| hasEvent(this, 'swipe.top') || hasEvent(this, 'swipe.bottom');\r\n\r\n\t\t\t// performance: only start hold timer if the `hold` event is registered on this element\r\n\t\t\tif (hasEvent(this, 'hold')){\r\n\t\t\t\t\r\n\t\t\t\t// Trigger touchhold event after `touchHoldTolerance` MS\r\n\t\t\t\t$this.touchHoldTimer = setTimeout(function() {\r\n\t\t\t\t\t$this.touchHoldTimer = null;\r\n\t\t\t\t\ttriggerEvent(event, $el, 'hold');\r\n\t\t\t\t}, $this.options.touchHoldTolerance);\r\n\t\t\t}\r\n\t\t\t\r\n triggerEvent(event, this, 'press');\r\n }\r\n\r\n function touchMoveEvent(event) {\r\n var $this = this.$$touchObj;\r\n\t\t\t\r\n\t\t\tvar curX = touchX(event);\r\n\t\t\tvar curY = touchY(event);\r\n\r\n\t\t\tvar movedAgain = ($this.currentX != curX) || ($this.currentY != curY);\r\n\t\t\t\r\n $this.currentX = curX;\r\n $this.currentY = curY;\r\n\r\n if (!$this.touchMoved) {\r\n var tapTolerance = $this.options.tapTolerance;\r\n\r\n $this.touchMoved = Math.abs($this.startX - $this.currentX) > tapTolerance ||\r\n\t\t\t\t\t\t\t\t Math.abs($this.startY - $this.currentY) > tapTolerance;\r\n\r\n\t\t\t\t// trigger `drag.once` only once after mouse FIRST moved while dragging the element\r\n\t\t\t\t// (`touchMoved` is the flag that indicates we no longer need to trigger this)\r\n if($this.touchMoved){\r\n cancelTouchHoldTimer($this);\r\n triggerEvent(event, this, 'drag.once');\r\n }\r\n\r\n\t\t\t// performance: only process swipe events if `swipe.*` event is registered on this element\r\n } else if ($this.hasSwipe && !$this.swipeOutBounded) {\r\n\t\t\t\tvar swipeOutBounded = $this.options.swipeTolerance;\r\n\r\n\t\t\t\t$this.swipeOutBounded = Math.abs($this.startX - $this.currentX) > swipeOutBounded &&\r\n\t\t\t\t\tMath.abs($this.startY - $this.currentY) > swipeOutBounded;\r\n }\r\n\r\n\t\t\t// only trigger `rollover` event if cursor actually moved over this element\r\n if(hasEvent(this, 'rollover') && movedAgain){\r\n\t\t\t\t\r\n\t\t\t\t// throttle the `rollover` event based on `rollOverFrequency`\r\n\t\t\t\tvar now = event.timeStamp;\r\n\t\t\t\tvar throttle = $this.options.rollOverFrequency;\r\n\t\t\t\tif ($this.touchRollTime == null || now > ($this.touchRollTime + throttle)){\r\n\t\t\t\t\t$this.touchRollTime = now;\r\n\t\t\t\t\t\r\n\t\t\t\t\ttriggerEvent(event, this, 'rollover');\r\n\t\t\t\t}\r\n }\r\n\r\n\t\t\t// only trigger `drag` event if cursor actually moved and if we are still dragging this element\r\n if(hasEvent(this, 'drag') && $this.touchStarted && $this.touchMoved && movedAgain){\r\n\t\t\t\t\r\n\t\t\t\t// throttle the `drag` event based on `dragFrequency`\r\n\t\t\t\tvar now = event.timeStamp;\r\n\t\t\t\tvar throttle = $this.options.dragFrequency;\r\n\t\t\t\tif ($this.touchDragTime == null || now > ($this.touchDragTime + throttle)){\r\n\t\t\t\t\t$this.touchDragTime = now;\r\n\t\t\t\t\t\r\n\t\t\t\t\ttriggerEvent(event, this, 'drag');\r\n\t\t\t\t}\r\n }\r\n }\r\n\r\n function touchCancelEvent() {\r\n var $this = this.$$touchObj;\r\n\r\n cancelTouchHoldTimer($this);\r\n removeTouchClass(this);\r\n\r\n $this.touchStarted = $this.touchMoved = false;\r\n $this.startX = $this.startY = 0;\r\n }\r\n\r\n function touchEndEvent(event) {\r\n var $this = this.$$touchObj,\r\n isTouchEvent = event.type.indexOf('touch') >= 0,\r\n isMouseEvent = event.type.indexOf('mouse') >= 0;\r\n\r\n if (isTouchEvent) {\r\n $this.lastTouchEndTime = event.timeStamp;\r\n }\r\n\r\n var touchholdEnd = isTouchEvent && !$this.touchHoldTimer;\r\n cancelTouchHoldTimer($this);\r\n\r\n $this.touchStarted = false;\r\n\r\n removeTouchClass(this);\r\n\r\n if (isMouseEvent && $this.lastTouchEndTime && event.timeStamp - $this.lastTouchEndTime < 350) {\r\n return;\r\n }\r\n\r\n // trigger `end` event when touch stopped\r\n triggerEvent(event, this, 'release');\r\n\r\n if (!$this.touchMoved) {\r\n // detect if this is a longTap event or not\r\n if (hasEvent(this, 'longtap') && event.timeStamp - $this.touchStartTime > $this.options.longTapTimeInterval) {\r\n if (event.cancelable) {\r\n event.preventDefault();\r\n }\r\n triggerEvent(event, this, 'longtap');\r\n\r\n } else if (hasEvent(this, 'hold') && touchholdEnd) {\r\n if (event.cancelable) {\r\n event.preventDefault();\r\n }\r\n return;\r\n } else {\r\n // emit tap event\r\n triggerEvent(event, this, 'tap');\r\n }\r\n\r\n\t\t\t// performance: only process swipe events if `swipe.*` event is registered on this element\r\n } else if ($this.hasSwipe && !$this.swipeOutBounded) {\r\n var swipeOutBounded = $this.options.swipeTolerance,\r\n direction,\r\n distanceY = Math.abs($this.startY - $this.currentY),\r\n distanceX = Math.abs($this.startX - $this.currentX);\r\n\r\n if (distanceY > swipeOutBounded || distanceX > swipeOutBounded) {\r\n if (distanceY > swipeOutBounded) {\r\n direction = $this.startY > $this.currentY ? 'top' : 'bottom';\r\n } else {\r\n direction = $this.startX > $this.currentX ? 'left' : 'right';\r\n }\r\n\r\n // Only emit the specified event when it has modifiers\r\n if (hasEvent(this, 'swipe.' + direction)) {\r\n triggerEvent(event, this, 'swipe.' + direction, direction);\r\n } else {\r\n // Emit a common event when it has no any modifier\r\n triggerEvent(event, this, 'swipe', direction);\r\n }\r\n }\r\n }\r\n }\r\n\r\n function mouseEnterEvent() {\r\n addTouchClass(this);\r\n }\r\n\r\n function mouseLeaveEvent() {\r\n removeTouchClass(this);\r\n }\r\n\r\n function hasEvent($el, eventType) {\r\n var callbacks = $el.$$touchObj.callbacks[eventType];\r\n\t\t\treturn (callbacks != null && callbacks.length > 0);\r\n\t\t}\r\n\t\t\r\n function triggerEvent(e, $el, eventType, param) {\r\n var $this = $el.$$touchObj;\r\n\r\n // get the subscribers for this event\r\n var callbacks = $this.callbacks[eventType];\r\n\t\t\t\r\n\t\t\t// exit if no subscribers to this particular event\r\n if (callbacks == null || callbacks.length === 0) {\r\n return null;\r\n }\r\n\r\n\t\t\t// per callback\r\n for (var i = 0; i < callbacks.length; i++) {\r\n var binding = callbacks[i];\r\n\r\n if (binding.modifiers.stop) {\r\n e.stopPropagation();\r\n }\r\n\r\n if (binding.modifiers.prevent) {\r\n e.preventDefault();\r\n }\r\n\r\n // handle `self` modifier`\r\n if (binding.modifiers.self && e.target !== e.currentTarget) {\r\n continue;\r\n }\r\n\r\n if (typeof binding.value === 'function') {\r\n if (param) {\r\n binding.value(param, e);\r\n } else {\r\n binding.value(e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n function addTouchClass($el) {\r\n var className = $el.$$touchObj.options.touchClass;\r\n className && $el.classList.add(className);\r\n }\r\n\r\n function removeTouchClass($el) {\r\n var className = $el.$$touchObj.options.touchClass;\r\n className && $el.classList.remove(className);\r\n }\r\n\r\n function cancelTouchHoldTimer($this) {\r\n if ($this.touchHoldTimer) {\r\n clearTimeout($this.touchHoldTimer);\r\n $this.touchHoldTimer = null;\r\n }\r\n }\r\n\r\n function buildTouchObj($el, extraOptions) {\r\n var touchObj = $el.$$touchObj || {\r\n // an object contains all callbacks registered,\r\n // key is event name, value is an array\r\n callbacks: {},\r\n // prevent bind twice, set to true when event bound\r\n hasBindTouchEvents: false,\r\n // default options, would be override by v-touch-options\r\n options: globalOptions\r\n };\r\n if (extraOptions) {\r\n touchObj.options = Object.assign({}, touchObj.options, extraOptions);\r\n }\r\n $el.$$touchObj = touchObj;\r\n return $el.$$touchObj;\r\n }\r\n\r\n app.directive('touch', {\r\n beforeMount: function ($el, binding) {\r\n // build a touch configuration object\r\n var $this = buildTouchObj($el);\r\n // declare passive option for the event listener. Defaults to { passive: true } if supported\r\n var passiveOpt = isPassiveSupported ? { passive: true } : false;\r\n // register callback\r\n var eventType = binding.arg || 'tap';\r\n switch (eventType) {\r\n case 'swipe':\r\n var _m = binding.modifiers;\r\n if (_m.left || _m.right || _m.top || _m.bottom) {\r\n for (var i in binding.modifiers) {\r\n if (['left', 'right', 'top', 'bottom'].indexOf(i) >= 0) {\r\n var _e = 'swipe.' + i;\r\n $this.callbacks[_e] = $this.callbacks[_e] || [];\r\n $this.callbacks[_e].push(binding);\r\n }\r\n }\r\n } else {\r\n $this.callbacks.swipe = $this.callbacks.swipe || [];\r\n $this.callbacks.swipe.push(binding);\r\n }\r\n break;\r\n\r\n case 'press':\r\n case 'drag':\r\n if (binding.modifiers.disablePassive) {\r\n // change the passive option for the `drag` event if disablePassive modifier exists\r\n passiveOpt = false;\r\n }\r\n default:\r\n $this.callbacks[eventType] = $this.callbacks[eventType] || [];\r\n $this.callbacks[eventType].push(binding);\r\n }\r\n\r\n // prevent bind twice\r\n if ($this.hasBindTouchEvents) {\r\n return;\r\n }\r\n\r\n $el.addEventListener('touchstart', touchStartEvent, passiveOpt);\r\n $el.addEventListener('touchmove', touchMoveEvent, passiveOpt);\r\n $el.addEventListener('touchcancel', touchCancelEvent);\r\n $el.addEventListener('touchend', touchEndEvent);\r\n\r\n if (!$this.options.disableClick) {\r\n $el.addEventListener('mousedown', touchStartEvent);\r\n $el.addEventListener('mousemove', touchMoveEvent);\r\n $el.addEventListener('mouseup', touchEndEvent);\r\n $el.addEventListener('mouseenter', mouseEnterEvent);\r\n $el.addEventListener('mouseleave', mouseLeaveEvent);\r\n }\r\n\r\n // set bind mark to true\r\n $this.hasBindTouchEvents = true;\r\n },\r\n\r\n unmounted: function ($el) {\r\n $el.removeEventListener('touchstart', touchStartEvent);\r\n $el.removeEventListener('touchmove', touchMoveEvent);\r\n $el.removeEventListener('touchcancel', touchCancelEvent);\r\n $el.removeEventListener('touchend', touchEndEvent);\r\n\r\n if ($el.$$touchObj && !$el.$$touchObj.options.disableClick) {\r\n $el.removeEventListener('mousedown', touchStartEvent);\r\n $el.removeEventListener('mousemove', touchMoveEvent);\r\n $el.removeEventListener('mouseup', touchEndEvent);\r\n $el.removeEventListener('mouseenter', mouseEnterEvent);\r\n $el.removeEventListener('mouseleave', mouseLeaveEvent);\r\n }\r\n\r\n // remove vars\r\n delete $el.$$touchObj;\r\n }\r\n });\r\n\r\n app.directive('touch-class', {\r\n beforeMount: function ($el, binding) {\r\n buildTouchObj($el, {\r\n touchClass: binding.value\r\n });\r\n }\r\n });\r\n\r\n app.directive('touch-options', {\r\n beforeMount: function($el, binding) {\r\n buildTouchObj($el, binding.value);\r\n }\r\n });\r\n }\r\n};\r\n\r\n/*\r\n * Exports\r\n */\r\nexport default vueTouchEvents","export default class Deferred<T> {\n public promise: Promise<T>;\n\n public reject!: (value: T | PromiseLike<T>) => void;\n public resolve!: (value: T | PromiseLike<T>) => void;\n\n constructor() {\n this.promise = new Promise((resolve, reject) => {\n this.reject = reject;\n this.resolve = resolve;\n });\n }\n}\n","import { h, reactive, readonly, ref } from 'vue';\n\nimport { DialogProps } from '../../components/Dialog/Dialog.vue';\nimport Deferred from '../../utils/Deferred';\n\nexport interface Result {\n isConfirmed?: boolean;\n isCanceled?: boolean;\n}\n\nexport interface ActiveDialog extends DialogProps {\n deferred?: Deferred<Result>;\n onConfirm?: () => void;\n onCancel?: () => void;\n slots?: Record<string, typeof h>;\n}\n\nconst active = ref<ActiveDialog>();\n\nexport default function useDialog() {\n function open(dialog: Omit<ActiveDialog, 'deferred'>) {\n if (active.value) {\n throw new Error('A Dialog is already being displayed');\n }\n\n active.value = {\n ...dialog,\n deferred: new Deferred(),\n };\n\n return active.value.deferred?.promise;\n }\n\n function close() {\n active.value = undefined;\n }\n\n return reactive({\n /**\n * The currently open dialog information.\n */\n active: readonly(active),\n\n /**\n * Opens the dialog.\n */\n open,\n\n /**\n * Closes the dialog.\n */\n close,\n });\n}\n","<script setup lang=\"ts\">\n import omit from 'lodash-es/omit';\n import { computed } from 'vue';\n\n import useDialog from '../../composables/useDialog/useDialog';\n import CustomRender from '../CustomRender/CustomRender.vue';\n import Dialog from '../Dialog/Dialog.vue';\n\n const dialog = useDialog();\n\n const attributes = computed(() => {\n if (!dialog.active) return null;\n\n return omit(dialog.active, ['deferred', 'onConfirm', 'onCancel', 'slots']);\n });\n\n function onCancel() {\n if (dialog.active?.onCancel) {\n dialog.active.onCancel();\n }\n\n dialog.active?.deferred?.resolve({\n isCanceled: true,\n });\n\n dialog.close();\n }\n\n async function onConfirm() {\n if (dialog.active?.onConfirm) {\n await dialog.active.onConfirm();\n }\n\n dialog.active?.deferred?.resolve({\n isConfirmed: true,\n });\n\n dialog.close();\n }\n</script>\n\n<template>\n <Dialog :open=\"!!attributes\" v-bind=\"attributes\" @confirm=\"onConfirm\" @cancel=\"onCancel\">\n <template v-for=\"(value, name) in dialog.active?.slots\" :key=\"name\" #[name]>\n <CustomRender :render=\"value\" />\n </template>\n </Dialog>\n</template>\n","import { App, createVNode, h, Plugin, render } from 'vue';\n\nimport Dialogs from '../components/Dialogs/Dialogs.vue';\n\nexport interface DialogsPluginOptions {\n mountNodeClass?: string;\n mountNodeId?: string;\n}\n\nexport default <Plugin>{\n install(app: App, options?: DialogsPluginOptions) {\n const mountNodeId = options?.mountNodeId || 'stash-dialogs-mount-node';\n let mountNode = document.getElementById(mountNodeId);\n\n if (!mountNode) {\n mountNode = document.createElement('div');\n mountNode.id = mountNodeId;\n }\n\n if (options?.mountNodeClass) {\n mountNode.classList.add(options.mountNodeClass);\n }\n\n const vNode = createVNode(h(Dialogs));\n document.body.appendChild(mountNode);\n vNode.appContext = app._context;\n\n render(vNode, mountNode);\n },\n};\n","/**\n * The names of the color groups.\n */\nexport type StashPrimaryColorGroup =\n | 'blue'\n | 'green'\n | 'ice'\n | 'orange'\n | 'purple'\n | 'red'\n | 'royal'\n | 'seafoam'\n | 'teal'\n | 'yellow';\n\n/**\n * Complete list of Stash brand colors & their shades.\n */\nexport enum StashColors {\n Purple900 = 'purple-900',\n Purple800 = 'purple-800',\n Purple700 = 'purple-700',\n Purple600 = 'purple-600',\n Purple500 = 'purple-500',\n Purple400 = 'purple-400',\n Purple300 = 'purple-300',\n Purple200 = 'purple-200',\n Purple100 = 'purple-100',\n\n Royal900 = 'royal-900',\n Royal800 = 'royal-800',\n Royal700 = 'royal-700',\n Royal600 = 'royal-600',\n Royal500 = 'royal-500',\n Royal400 = 'royal-400',\n Royal300 = 'royal-300',\n Royal200 = 'royal-200',\n Royal100 = 'royal-100',\n\n Blue900 = 'blue-900',\n Blue800 = 'blue-800',\n Blue700 = 'blue-700',\n Blue600 = 'blue-600',\n Blue500 = 'blue-500',\n Blue400 = 'blue-400',\n Blue300 = 'blue-300',\n Blue200 = 'blue-200',\n Blue100 = 'blue-100',\n\n Teal900 = 'teal-900',\n Teal800 = 'teal-800',\n Teal700 = 'teal-700',\n Teal600 = 'teal-600',\n Teal500 = 'teal-500',\n Teal400 = 'teal-400',\n Teal300 = 'teal-300',\n Teal200 = 'teal-200',\n Teal100 = 'teal-100',\n\n Green900 = 'green-900',\n Green800 = 'green-800',\n Green700 = 'green-700',\n Green600 = 'green-600',\n Green500 = 'green-500',\n Green400 = 'green-400',\n Green300 = 'green-300',\n Green200 = 'green-200',\n Green100 = 'green-100',\n\n Seafoam900 = 'seafoam-900',\n Seafoam800 = 'seafoam-800',\n Seafoam700 = 'seafoam-700',\n Seafoam600 = 'seafoam-600',\n Seafoam500 = 'seafoam-500',\n Seafoam400 = 'seafoam-400',\n Seafoam300 = 'seafoam-300',\n Seafoam200 = 'seafoam-200',\n Seafoam100 = 'seafoam-100',\n\n Yellow900 = 'yellow-900',\n Yellow800 = 'yellow-800',\n Yellow700 = 'yellow-700',\n Yellow600 = 'yellow-600',\n Yellow500 = 'yellow-500',\n Yellow400 = 'yellow-400',\n Yellow300 = 'yellow-300',\n Yellow200 = 'yellow-200',\n Yellow100 = 'yellow-100',\n\n Orange900 = 'orange-900',\n Orange800 = 'orange-800',\n Orange700 = 'orange-700',\n Orange600 = 'orange-600',\n Orange500 = 'orange-500',\n Orange400 = 'orange-400',\n Orange300 = 'orange-300',\n Orange200 = 'orange-200',\n Orange100 = 'orange-100',\n\n Red900 = 'red-900',\n Red800 = 'red-800',\n Red700 = 'red-700',\n Red600 = 'red-600',\n Red500 = 'red-500',\n Red400 = 'red-400',\n Red300 = 'red-300',\n Red200 = 'red-200',\n Red100 = 'red-100',\n\n Ice900 = 'ice-900',\n Ice800 = 'ice-800',\n Ice700 = 'ice-700',\n Ice600 = 'ice-600',\n Ice500 = 'ice-500',\n Ice400 = 'ice-400',\n Ice300 = 'ice-300',\n Ice200 = 'ice-200',\n Ice100 = 'ice-100',\n\n White = 'white',\n Black = 'black',\n}\n\nexport type StashColor = `${StashColors}`;\n\n/**\n * A limited list of stash brand colors, only including their 100, 500, and 700 shades.\n */\nexport enum StashCommonColors {\n Purple700 = StashColors.Purple700,\n Purple500 = StashColors.Purple500,\n Purple100 = StashColors.Purple100,\n\n Royal700 = StashColors.Royal700,\n Royal500 = StashColors.Royal500,\n Royal100 = StashColors.Royal100,\n\n Blue700 = StashColors.Blue700,\n Blue500 = StashColors.Blue500,\n Blue100 = StashColors.Blue100,\n\n Teal700 = StashColors.Teal700,\n Teal500 = StashColors.Teal500,\n Teal100 = StashColors.Teal100,\n\n Green700 = StashColors.Green700,\n Green500 = StashColors.Green500,\n Green100 = StashColors.Green100,\n\n Seafoam700 = StashColors.Seafoam700,\n Seafoam500 = StashColors.Seafoam500,\n Seafoam100 = StashColors.Seafoam100,\n\n Yellow700 = StashColors.Yellow700,\n Yellow500 = StashColors.Yellow500,\n Yellow100 = StashColors.Yellow100,\n\n Orange700 = StashColors.Orange700,\n Orange500 = StashColors.Orange500,\n Orange100 = StashColors.Orange100,\n\n Red700 = StashColors.Red700,\n Red500 = StashColors.Red500,\n Red100 = StashColors.Red100,\n\n Ice700 = StashColors.Ice700,\n Ice500 = StashColors.Ice500,\n Ice200 = StashColors.Ice200, // This is the one outlier, but it's used purposefully in a few places\n Ice100 = StashColors.Ice100,\n\n White = 'white',\n Black = 'black',\n}\n\nexport type StashCommonColor = `${StashCommonColors}`;\n\n/**\n * A limited list of stash brand colors, only including their primary (500) shade.\n */\nexport enum StashPrimaryColors {\n Blue500 = 'blue-500',\n Green500 = 'green-500',\n Ice500 = 'ice-500',\n Orange500 = 'orange-500',\n Purple500 = 'purple-500',\n Red500 = 'red-500',\n Royal500 = 'royal-500',\n Seafoam500 = 'seafoam-500',\n Teal500 = 'teal-500',\n Yellow500 = 'yellow-500',\n}\n\nexport type StashPrimaryColor = `${StashPrimaryColors}`;\n","import { Plugin } from 'vue';\nimport Vue3TouchEvents from 'vue3-touch-events';\n\nimport { I18nPlugin, StashOptionImages, StashProvideState } from '../types/misc';\nimport locale from './locale';\n// this is valid syntax per the TS docs, but prettier throws an error expecting a comma after `type`\n// eslint-disable-next-line prettier/prettier\nimport DialogsPlugin, { type DialogsPluginOptions } from './plugins/DialogsPlugin';\nimport MenusPlugin, { type MenusPluginOptions } from './plugins/MenusPlugin';\nimport ModalsPlugin, { type ModalsPluginOptions } from './plugins/ModalsPlugin';\nimport ToastsPlugin, { type ToastsPluginOptions } from './plugins/ToastsPlugin';\nimport { overridePersistentStorage, persistentStorage } from './storage';\n\nexport interface StashPluginOptions {\n i18n?: I18nPlugin;\n storage?: {\n set: <T = unknown>(name: string, data: T, options?: { [key: string]: unknown }) => void;\n get: <T = unknown>(name: string, options?: { [key: string]: unknown }) => T;\n };\n staticPath?: string;\n images?: StashOptionImages;\n googleMapsApiKey?: string;\n menus?: false | MenusPluginOptions;\n modals?: false | ModalsPluginOptions;\n toasts?: false | ToastsPluginOptions;\n dialogs?: false | DialogsPluginOptions;\n}\n\nexport default <Plugin>{\n install(\n app,\n {\n i18n = undefined,\n storage = undefined,\n staticPath = '/static',\n images = {\n provider: 'cloudinary',\n staticDomains: [],\n },\n googleMapsApiKey = undefined,\n menus,\n modals,\n toasts,\n dialogs,\n }: StashPluginOptions = {},\n ) {\n app.use(Vue3TouchEvents);\n\n // locale\n if (i18n) {\n locale.use(i18n.locale);\n locale.i18n(i18n && i18n.t);\n }\n\n // persistent storage (localStorage)\n if (storage) {\n overridePersistentStorage(storage);\n }\n\n // expose stash options to the rest of your application\n app.provide<StashProvideState>('stashOptions', {\n i18n,\n images,\n storage,\n staticPath,\n googleMapsApiKey,\n });\n\n if (menus !== false) {\n app.use(MenusPlugin, menus);\n }\n\n if (modals !== false) {\n app.use(ModalsPlugin, modals);\n }\n\n if (toasts !== false) {\n app.use(ToastsPlugin, toasts);\n }\n\n if (dialogs !== false) {\n app.use(DialogsPlugin, dialogs);\n }\n },\n};\n\nexport { persistentStorage };\n\n// Re-export things that are useful for consumers\nexport * from '../types';\nexport * from './storage';\n\n// Todo: Investigate tree-shaking issues to see if we can expose these. Theoritically\n// should be no issue, however test framework startup time, specifically w/ Jest,\n// seems to be the major blocker here.\n// export * from './components';\n// export * from './composables';\n// export * from './constants';\n// export * from './directives';\n// export * from './locale';\n// export * from './plugins';\n// export { default as ToastsPlugin } from './plugins/ToastsPlugin';\n"],"names":["touchX","event","touchY","isPassiveSupported","supportsPassive","opts","vueTouchEvents","app","constructorOptions","globalOptions","touchStartEvent","$this","isTouchEvent","isMouseEvent","$el","addTouchClass","hasEvent","triggerEvent","touchMoveEvent","curX","curY","movedAgain","swipeOutBounded","tapTolerance","cancelTouchHoldTimer","now","throttle","touchCancelEvent","removeTouchClass","touchEndEvent","touchholdEnd","direction","distanceY","distanceX","mouseEnterEvent","mouseLeaveEvent","eventType","callbacks","e","param","i","binding","className","buildTouchObj","extraOptions","touchObj","passiveOpt","_m","_e","Deferred","__publicField","resolve","reject","active","ref","useDialog","open","dialog","_a","close","reactive","readonly","attributes","computed","omit","onCancel","_c","_b","onConfirm","DialogsPlugin","options","mountNodeId","mountNode","vNode","createVNode","h","Dialogs","render","StashColors","StashCommonColors","StashPrimaryColors","index","i18n","storage","staticPath","images","googleMapsApiKey","menus","modals","toasts","dialogs","Vue3TouchEvents","locale","overridePersistentStorage","MenusPlugin","ModalsPlugin","ToastsPlugin"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../node_modules/vue3-touch-events/index.js","../src/utils/Deferred.ts","../src/composables/useDialog/useDialog.ts","../src/components/Dialogs/Dialogs.vue","../src/plugins/DialogsPlugin.ts","../types/colors.ts","../src/index.ts"],"sourcesContent":["/**\r\n * @project vue3-touch-events\r\n * @author Robin Rodricks, Xavier Julien, Jerry Bendy\r\n * @since 30/4/2021\r\n * @url https://github.com/robinrodricks/vue3-touch-events\r\n */\r\n\r\nfunction touchX(event) {\r\n if(event.type.indexOf('mouse') !== -1){\r\n return event.clientX;\r\n }\r\n return event.touches[0].clientX;\r\n}\r\n\r\nfunction touchY(event) {\r\n if(event.type.indexOf('mouse') !== -1){\r\n return event.clientY;\r\n }\r\n return event.touches[0].clientY;\r\n}\r\n\r\nvar isPassiveSupported = (function() {\r\n var supportsPassive = false;\r\n try {\r\n var opts = Object.defineProperty({}, 'passive', {\r\n get: function() {\r\n supportsPassive = true;\r\n }\r\n });\r\n window.addEventListener('test', null, opts);\r\n } catch (e) {}\r\n return supportsPassive;\r\n})();\r\n\r\nvar vueTouchEvents = {\r\n install: function (app, constructorOptions) {\r\n\t\t\r\n var globalOptions = Object.assign({}, {\r\n disableClick: false,\r\n tapTolerance: 10, // px\r\n swipeTolerance: 30, // px\r\n touchHoldTolerance: 400, // ms\r\n longTapTimeInterval: 400, // ms\r\n touchClass: '',\r\n\t\t\tdragFrequency: 100, // ms\r\n\t\t\trollOverFrequency: 100, // ms\r\n }, constructorOptions);\r\n\r\n function touchStartEvent(event) {\r\n var $this = this.$$touchObj,\r\n isTouchEvent = event.type.indexOf('touch') >= 0,\r\n isMouseEvent = event.type.indexOf('mouse') >= 0,\r\n $el = this;\r\n\r\n if (isTouchEvent) {\r\n $this.lastTouchStartTime = event.timeStamp;\r\n }\r\n\r\n if (isMouseEvent && $this.lastTouchStartTime && event.timeStamp - $this.lastTouchStartTime < 350) {\r\n return;\r\n }\r\n\r\n if ($this.touchStarted) {\r\n return;\r\n }\r\n\r\n addTouchClass(this);\r\n\r\n $this.touchStarted = true; // always true while the element is being PRESSED\r\n\r\n $this.touchMoved = false; // true only when the element is PRESSED and DRAGGED a bit\r\n $this.swipeOutBounded = false;\r\n\r\n $this.startX = touchX(event);\r\n $this.startY = touchY(event);\r\n\r\n $this.currentX = 0; // always updated with the last mouse X/Y while over the element\r\n $this.currentY = 0;\r\n\r\n $this.touchStartTime = event.timeStamp;\r\n\t\t\t\r\n\t\t\t// performance: only process swipe events if `swipe.*` event is registered on this element\r\n\t\t\t$this.hasSwipe = hasEvent(this, 'swipe')\r\n\t\t\t\t|| hasEvent(this, 'swipe.left') || hasEvent(this, 'swipe.right')\r\n\t\t\t\t|| hasEvent(this, 'swipe.top') || hasEvent(this, 'swipe.bottom');\r\n\r\n\t\t\t// performance: only start hold timer if the `hold` event is registered on this element\r\n\t\t\tif (hasEvent(this, 'hold')){\r\n\t\t\t\t\r\n\t\t\t\t// Trigger touchhold event after `touchHoldTolerance` MS\r\n\t\t\t\t$this.touchHoldTimer = setTimeout(function() {\r\n\t\t\t\t\t$this.touchHoldTimer = null;\r\n\t\t\t\t\ttriggerEvent(event, $el, 'hold');\r\n\t\t\t\t}, $this.options.touchHoldTolerance);\r\n\t\t\t}\r\n\t\t\t\r\n triggerEvent(event, this, 'press');\r\n }\r\n\r\n function touchMoveEvent(event) {\r\n var $this = this.$$touchObj;\r\n\t\t\t\r\n\t\t\tvar curX = touchX(event);\r\n\t\t\tvar curY = touchY(event);\r\n\r\n\t\t\tvar movedAgain = ($this.currentX != curX) || ($this.currentY != curY);\r\n\t\t\t\r\n $this.currentX = curX;\r\n $this.currentY = curY;\r\n\r\n if (!$this.touchMoved) {\r\n var tapTolerance = $this.options.tapTolerance;\r\n\r\n $this.touchMoved = Math.abs($this.startX - $this.currentX) > tapTolerance ||\r\n\t\t\t\t\t\t\t\t Math.abs($this.startY - $this.currentY) > tapTolerance;\r\n\r\n\t\t\t\t// trigger `drag.once` only once after mouse FIRST moved while dragging the element\r\n\t\t\t\t// (`touchMoved` is the flag that indicates we no longer need to trigger this)\r\n if($this.touchMoved){\r\n cancelTouchHoldTimer($this);\r\n triggerEvent(event, this, 'drag.once');\r\n }\r\n\r\n\t\t\t// performance: only process swipe events if `swipe.*` event is registered on this element\r\n } else if ($this.hasSwipe && !$this.swipeOutBounded) {\r\n\t\t\t\tvar swipeOutBounded = $this.options.swipeTolerance;\r\n\r\n\t\t\t\t$this.swipeOutBounded = Math.abs($this.startX - $this.currentX) > swipeOutBounded &&\r\n\t\t\t\t\tMath.abs($this.startY - $this.currentY) > swipeOutBounded;\r\n }\r\n\r\n\t\t\t// only trigger `rollover` event if cursor actually moved over this element\r\n if(hasEvent(this, 'rollover') && movedAgain){\r\n\t\t\t\t\r\n\t\t\t\t// throttle the `rollover` event based on `rollOverFrequency`\r\n\t\t\t\tvar now = event.timeStamp;\r\n\t\t\t\tvar throttle = $this.options.rollOverFrequency;\r\n\t\t\t\tif ($this.touchRollTime == null || now > ($this.touchRollTime + throttle)){\r\n\t\t\t\t\t$this.touchRollTime = now;\r\n\t\t\t\t\t\r\n\t\t\t\t\ttriggerEvent(event, this, 'rollover');\r\n\t\t\t\t}\r\n }\r\n\r\n\t\t\t// only trigger `drag` event if cursor actually moved and if we are still dragging this element\r\n if(hasEvent(this, 'drag') && $this.touchStarted && $this.touchMoved && movedAgain){\r\n\t\t\t\t\r\n\t\t\t\t// throttle the `drag` event based on `dragFrequency`\r\n\t\t\t\tvar now = event.timeStamp;\r\n\t\t\t\tvar throttle = $this.options.dragFrequency;\r\n\t\t\t\tif ($this.touchDragTime == null || now > ($this.touchDragTime + throttle)){\r\n\t\t\t\t\t$this.touchDragTime = now;\r\n\t\t\t\t\t\r\n\t\t\t\t\ttriggerEvent(event, this, 'drag');\r\n\t\t\t\t}\r\n }\r\n }\r\n\r\n function touchCancelEvent() {\r\n var $this = this.$$touchObj;\r\n\r\n cancelTouchHoldTimer($this);\r\n removeTouchClass(this);\r\n\r\n $this.touchStarted = $this.touchMoved = false;\r\n $this.startX = $this.startY = 0;\r\n }\r\n\r\n function touchEndEvent(event) {\r\n var $this = this.$$touchObj,\r\n isTouchEvent = event.type.indexOf('touch') >= 0,\r\n isMouseEvent = event.type.indexOf('mouse') >= 0;\r\n\r\n if (isTouchEvent) {\r\n $this.lastTouchEndTime = event.timeStamp;\r\n }\r\n\r\n var touchholdEnd = isTouchEvent && !$this.touchHoldTimer;\r\n cancelTouchHoldTimer($this);\r\n\r\n $this.touchStarted = false;\r\n\r\n removeTouchClass(this);\r\n\r\n if (isMouseEvent && $this.lastTouchEndTime && event.timeStamp - $this.lastTouchEndTime < 350) {\r\n return;\r\n }\r\n\r\n // trigger `end` event when touch stopped\r\n triggerEvent(event, this, 'release');\r\n\r\n if (!$this.touchMoved) {\r\n // detect if this is a longTap event or not\r\n if (hasEvent(this, 'longtap') && event.timeStamp - $this.touchStartTime > $this.options.longTapTimeInterval) {\r\n if (event.cancelable) {\r\n event.preventDefault();\r\n }\r\n triggerEvent(event, this, 'longtap');\r\n\r\n } else if (hasEvent(this, 'hold') && touchholdEnd) {\r\n if (event.cancelable) {\r\n event.preventDefault();\r\n }\r\n return;\r\n } else {\r\n // emit tap event\r\n triggerEvent(event, this, 'tap');\r\n }\r\n\r\n\t\t\t// performance: only process swipe events if `swipe.*` event is registered on this element\r\n } else if ($this.hasSwipe && !$this.swipeOutBounded) {\r\n var swipeOutBounded = $this.options.swipeTolerance,\r\n direction,\r\n distanceY = Math.abs($this.startY - $this.currentY),\r\n distanceX = Math.abs($this.startX - $this.currentX);\r\n\r\n if (distanceY > swipeOutBounded || distanceX > swipeOutBounded) {\r\n if (distanceY > swipeOutBounded) {\r\n direction = $this.startY > $this.currentY ? 'top' : 'bottom';\r\n } else {\r\n direction = $this.startX > $this.currentX ? 'left' : 'right';\r\n }\r\n\r\n // Only emit the specified event when it has modifiers\r\n if (hasEvent(this, 'swipe.' + direction)) {\r\n triggerEvent(event, this, 'swipe.' + direction, direction);\r\n } else {\r\n // Emit a common event when it has no any modifier\r\n triggerEvent(event, this, 'swipe', direction);\r\n }\r\n }\r\n }\r\n }\r\n\r\n function mouseEnterEvent() {\r\n addTouchClass(this);\r\n }\r\n\r\n function mouseLeaveEvent() {\r\n removeTouchClass(this);\r\n }\r\n\r\n function hasEvent($el, eventType) {\r\n var callbacks = $el.$$touchObj.callbacks[eventType];\r\n\t\t\treturn (callbacks != null && callbacks.length > 0);\r\n\t\t}\r\n\t\t\r\n function triggerEvent(e, $el, eventType, param) {\r\n var $this = $el.$$touchObj;\r\n\r\n // get the subscribers for this event\r\n var callbacks = $this.callbacks[eventType];\r\n\t\t\t\r\n\t\t\t// exit if no subscribers to this particular event\r\n if (callbacks == null || callbacks.length === 0) {\r\n return null;\r\n }\r\n\r\n\t\t\t// per callback\r\n for (var i = 0; i < callbacks.length; i++) {\r\n var binding = callbacks[i];\r\n\r\n if (binding.modifiers.stop) {\r\n e.stopPropagation();\r\n }\r\n\r\n if (binding.modifiers.prevent) {\r\n e.preventDefault();\r\n }\r\n\r\n // handle `self` modifier`\r\n if (binding.modifiers.self && e.target !== e.currentTarget) {\r\n continue;\r\n }\r\n\r\n if (typeof binding.value === 'function') {\r\n if (param) {\r\n binding.value(param, e);\r\n } else {\r\n binding.value(e);\r\n }\r\n }\r\n }\r\n }\r\n\r\n function addTouchClass($el) {\r\n var className = $el.$$touchObj.options.touchClass;\r\n className && $el.classList.add(className);\r\n }\r\n\r\n function removeTouchClass($el) {\r\n var className = $el.$$touchObj.options.touchClass;\r\n className && $el.classList.remove(className);\r\n }\r\n\r\n function cancelTouchHoldTimer($this) {\r\n if ($this.touchHoldTimer) {\r\n clearTimeout($this.touchHoldTimer);\r\n $this.touchHoldTimer = null;\r\n }\r\n }\r\n\r\n function buildTouchObj($el, extraOptions) {\r\n var touchObj = $el.$$touchObj || {\r\n // an object contains all callbacks registered,\r\n // key is event name, value is an array\r\n callbacks: {},\r\n // prevent bind twice, set to true when event bound\r\n hasBindTouchEvents: false,\r\n // default options, would be override by v-touch-options\r\n options: globalOptions\r\n };\r\n if (extraOptions) {\r\n touchObj.options = Object.assign({}, touchObj.options, extraOptions);\r\n }\r\n $el.$$touchObj = touchObj;\r\n return $el.$$touchObj;\r\n }\r\n\r\n app.directive('touch', {\r\n beforeMount: function ($el, binding) {\r\n // build a touch configuration object\r\n var $this = buildTouchObj($el);\r\n // declare passive option for the event listener. Defaults to { passive: true } if supported\r\n var passiveOpt = isPassiveSupported ? { passive: true } : false;\r\n // register callback\r\n var eventType = binding.arg || 'tap';\r\n switch (eventType) {\r\n case 'swipe':\r\n var _m = binding.modifiers;\r\n if (_m.left || _m.right || _m.top || _m.bottom) {\r\n for (var i in binding.modifiers) {\r\n if (['left', 'right', 'top', 'bottom'].indexOf(i) >= 0) {\r\n var _e = 'swipe.' + i;\r\n $this.callbacks[_e] = $this.callbacks[_e] || [];\r\n $this.callbacks[_e].push(binding);\r\n }\r\n }\r\n } else {\r\n $this.callbacks.swipe = $this.callbacks.swipe || [];\r\n $this.callbacks.swipe.push(binding);\r\n }\r\n break;\r\n\r\n case 'press':\r\n case 'drag':\r\n if (binding.modifiers.disablePassive) {\r\n // change the passive option for the `drag` event if disablePassive modifier exists\r\n passiveOpt = false;\r\n }\r\n default:\r\n $this.callbacks[eventType] = $this.callbacks[eventType] || [];\r\n $this.callbacks[eventType].push(binding);\r\n }\r\n\r\n // prevent bind twice\r\n if ($this.hasBindTouchEvents) {\r\n return;\r\n }\r\n\r\n $el.addEventListener('touchstart', touchStartEvent, passiveOpt);\r\n $el.addEventListener('touchmove', touchMoveEvent, passiveOpt);\r\n $el.addEventListener('touchcancel', touchCancelEvent);\r\n $el.addEventListener('touchend', touchEndEvent);\r\n\r\n if (!$this.options.disableClick) {\r\n $el.addEventListener('mousedown', touchStartEvent);\r\n $el.addEventListener('mousemove', touchMoveEvent);\r\n $el.addEventListener('mouseup', touchEndEvent);\r\n $el.addEventListener('mouseenter', mouseEnterEvent);\r\n $el.addEventListener('mouseleave', mouseLeaveEvent);\r\n }\r\n\r\n // set bind mark to true\r\n $this.hasBindTouchEvents = true;\r\n },\r\n\r\n unmounted: function ($el) {\r\n $el.removeEventListener('touchstart', touchStartEvent);\r\n $el.removeEventListener('touchmove', touchMoveEvent);\r\n $el.removeEventListener('touchcancel', touchCancelEvent);\r\n $el.removeEventListener('touchend', touchEndEvent);\r\n\r\n if ($el.$$touchObj && !$el.$$touchObj.options.disableClick) {\r\n $el.removeEventListener('mousedown', touchStartEvent);\r\n $el.removeEventListener('mousemove', touchMoveEvent);\r\n $el.removeEventListener('mouseup', touchEndEvent);\r\n $el.removeEventListener('mouseenter', mouseEnterEvent);\r\n $el.removeEventListener('mouseleave', mouseLeaveEvent);\r\n }\r\n\r\n // remove vars\r\n delete $el.$$touchObj;\r\n }\r\n });\r\n\r\n app.directive('touch-class', {\r\n beforeMount: function ($el, binding) {\r\n buildTouchObj($el, {\r\n touchClass: binding.value\r\n });\r\n }\r\n });\r\n\r\n app.directive('touch-options', {\r\n beforeMount: function($el, binding) {\r\n buildTouchObj($el, binding.value);\r\n }\r\n });\r\n }\r\n};\r\n\r\n/*\r\n * Exports\r\n */\r\nexport default vueTouchEvents","export default class Deferred<T> {\n public promise: Promise<T>;\n\n public reject!: (value: T | PromiseLike<T>) => void;\n public resolve!: (value: T | PromiseLike<T>) => void;\n\n constructor() {\n this.promise = new Promise((resolve, reject) => {\n this.reject = reject;\n this.resolve = resolve;\n });\n }\n}\n","import { h, reactive, readonly, ref } from 'vue';\n\nimport { DialogProps } from '../../components/Dialog/Dialog.vue';\nimport Deferred from '../../utils/Deferred';\n\nexport interface Result {\n isConfirmed?: boolean;\n isCanceled?: boolean;\n}\n\nexport interface ActiveDialog extends DialogProps {\n deferred?: Deferred<Result>;\n onConfirm?: () => void;\n onCancel?: () => void;\n slots?: Record<string, typeof h>;\n}\n\nconst active = ref<ActiveDialog>();\n\nexport default function useDialog() {\n function open(dialog: Omit<ActiveDialog, 'deferred'>) {\n if (active.value) {\n throw new Error('A Dialog is already being displayed');\n }\n\n active.value = {\n ...dialog,\n deferred: new Deferred(),\n };\n\n return active.value.deferred?.promise;\n }\n\n function close() {\n active.value = undefined;\n }\n\n return reactive({\n /**\n * The currently open dialog information.\n */\n active: readonly(active),\n\n /**\n * Opens the dialog.\n */\n open,\n\n /**\n * Closes the dialog.\n */\n close,\n });\n}\n","<script setup lang=\"ts\">\n import omit from 'lodash-es/omit';\n import { computed } from 'vue';\n\n import useDialog from '../../composables/useDialog/useDialog';\n import CustomRender from '../CustomRender/CustomRender.vue';\n import Dialog from '../Dialog/Dialog.vue';\n\n const dialog = useDialog();\n\n const attributes = computed(() => {\n if (!dialog.active) return null;\n\n return omit(dialog.active, ['deferred', 'onConfirm', 'onCancel', 'slots']);\n });\n\n function onCancel() {\n if (dialog.active?.onCancel) {\n dialog.active.onCancel();\n }\n\n dialog.active?.deferred?.resolve({\n isCanceled: true,\n });\n\n dialog.close();\n }\n\n async function onConfirm() {\n if (dialog.active?.onConfirm) {\n await dialog.active.onConfirm();\n }\n\n dialog.active?.deferred?.resolve({\n isConfirmed: true,\n });\n\n dialog.close();\n }\n</script>\n\n<template>\n <Dialog :open=\"!!attributes\" v-bind=\"attributes\" @confirm=\"onConfirm\" @cancel=\"onCancel\">\n <template v-for=\"(value, name) in dialog.active?.slots\" :key=\"name\" #[name]>\n <CustomRender :render=\"value\" />\n </template>\n </Dialog>\n</template>\n","import { App, createVNode, h, Plugin, render } from 'vue';\n\nimport Dialogs from '../components/Dialogs/Dialogs.vue';\n\nexport interface DialogsPluginOptions {\n mountNodeClass?: string;\n mountNodeId?: string;\n}\n\nexport default <Plugin>{\n install(app: App, options?: DialogsPluginOptions) {\n const mountNodeId = options?.mountNodeId || 'stash-dialogs-mount-node';\n let mountNode = document.getElementById(mountNodeId);\n\n if (!mountNode) {\n mountNode = document.createElement('div');\n mountNode.id = mountNodeId;\n }\n\n if (options?.mountNodeClass) {\n mountNode.classList.add(options.mountNodeClass);\n }\n\n const vNode = createVNode(h(Dialogs));\n document.body.appendChild(mountNode);\n vNode.appContext = app._context;\n\n render(vNode, mountNode);\n },\n};\n","/**\n * The names of the color groups.\n */\nexport type StashPrimaryColorGroup =\n | 'blue'\n | 'green'\n | 'ice'\n | 'orange'\n | 'purple'\n | 'red'\n | 'royal'\n | 'seafoam'\n | 'teal'\n | 'yellow';\n\n/**\n * Complete list of Stash brand colors & their shades.\n */\nexport enum StashColors {\n Purple900 = 'purple-900',\n Purple800 = 'purple-800',\n Purple700 = 'purple-700',\n Purple600 = 'purple-600',\n Purple500 = 'purple-500',\n Purple400 = 'purple-400',\n Purple300 = 'purple-300',\n Purple200 = 'purple-200',\n Purple100 = 'purple-100',\n\n Royal900 = 'royal-900',\n Royal800 = 'royal-800',\n Royal700 = 'royal-700',\n Royal600 = 'royal-600',\n Royal500 = 'royal-500',\n Royal400 = 'royal-400',\n Royal300 = 'royal-300',\n Royal200 = 'royal-200',\n Royal100 = 'royal-100',\n\n Blue900 = 'blue-900',\n Blue800 = 'blue-800',\n Blue700 = 'blue-700',\n Blue600 = 'blue-600',\n Blue500 = 'blue-500',\n Blue400 = 'blue-400',\n Blue300 = 'blue-300',\n Blue200 = 'blue-200',\n Blue100 = 'blue-100',\n\n Teal900 = 'teal-900',\n Teal800 = 'teal-800',\n Teal700 = 'teal-700',\n Teal600 = 'teal-600',\n Teal500 = 'teal-500',\n Teal400 = 'teal-400',\n Teal300 = 'teal-300',\n Teal200 = 'teal-200',\n Teal100 = 'teal-100',\n\n Green900 = 'green-900',\n Green800 = 'green-800',\n Green700 = 'green-700',\n Green600 = 'green-600',\n Green500 = 'green-500',\n Green400 = 'green-400',\n Green300 = 'green-300',\n Green200 = 'green-200',\n Green100 = 'green-100',\n\n Seafoam900 = 'seafoam-900',\n Seafoam800 = 'seafoam-800',\n Seafoam700 = 'seafoam-700',\n Seafoam600 = 'seafoam-600',\n Seafoam500 = 'seafoam-500',\n Seafoam400 = 'seafoam-400',\n Seafoam300 = 'seafoam-300',\n Seafoam200 = 'seafoam-200',\n Seafoam100 = 'seafoam-100',\n\n Yellow900 = 'yellow-900',\n Yellow800 = 'yellow-800',\n Yellow700 = 'yellow-700',\n Yellow600 = 'yellow-600',\n Yellow500 = 'yellow-500',\n Yellow400 = 'yellow-400',\n Yellow300 = 'yellow-300',\n Yellow200 = 'yellow-200',\n Yellow100 = 'yellow-100',\n\n Orange900 = 'orange-900',\n Orange800 = 'orange-800',\n Orange700 = 'orange-700',\n Orange600 = 'orange-600',\n Orange500 = 'orange-500',\n Orange400 = 'orange-400',\n Orange300 = 'orange-300',\n Orange200 = 'orange-200',\n Orange100 = 'orange-100',\n\n Red900 = 'red-900',\n Red800 = 'red-800',\n Red700 = 'red-700',\n Red600 = 'red-600',\n Red500 = 'red-500',\n Red400 = 'red-400',\n Red300 = 'red-300',\n Red200 = 'red-200',\n Red100 = 'red-100',\n\n Ice900 = 'ice-900',\n Ice800 = 'ice-800',\n Ice700 = 'ice-700',\n Ice600 = 'ice-600',\n Ice500 = 'ice-500',\n Ice400 = 'ice-400',\n Ice300 = 'ice-300',\n Ice200 = 'ice-200',\n Ice100 = 'ice-100',\n\n White = 'white',\n Black = 'black',\n}\n\nexport type StashColor = `${StashColors}`;\n\n/**\n * A limited list of stash brand colors, only including their 100, 500, and 700 shades.\n */\nexport enum StashCommonColors {\n Purple700 = StashColors.Purple700,\n Purple500 = StashColors.Purple500,\n Purple100 = StashColors.Purple100,\n\n Royal700 = StashColors.Royal700,\n Royal500 = StashColors.Royal500,\n Royal100 = StashColors.Royal100,\n\n Blue700 = StashColors.Blue700,\n Blue500 = StashColors.Blue500,\n Blue100 = StashColors.Blue100,\n\n Teal700 = StashColors.Teal700,\n Teal500 = StashColors.Teal500,\n Teal100 = StashColors.Teal100,\n\n Green700 = StashColors.Green700,\n Green500 = StashColors.Green500,\n Green100 = StashColors.Green100,\n\n Seafoam700 = StashColors.Seafoam700,\n Seafoam500 = StashColors.Seafoam500,\n Seafoam100 = StashColors.Seafoam100,\n\n Yellow700 = StashColors.Yellow700,\n Yellow500 = StashColors.Yellow500,\n Yellow100 = StashColors.Yellow100,\n\n Orange700 = StashColors.Orange700,\n Orange500 = StashColors.Orange500,\n Orange100 = StashColors.Orange100,\n\n Red700 = StashColors.Red700,\n Red500 = StashColors.Red500,\n Red100 = StashColors.Red100,\n\n Ice700 = StashColors.Ice700,\n Ice500 = StashColors.Ice500,\n Ice200 = StashColors.Ice200, // This is the one outlier, but it's used purposefully in a few places\n Ice100 = StashColors.Ice100,\n\n White = 'white',\n Black = 'black',\n}\n\nexport type StashCommonColor = `${StashCommonColors}`;\n\n/**\n * A limited list of stash brand colors, only including their primary (500) shade.\n */\nexport enum StashPrimaryColors {\n Blue500 = 'blue-500',\n Green500 = 'green-500',\n Ice500 = 'ice-500',\n Orange500 = 'orange-500',\n Purple500 = 'purple-500',\n Red500 = 'red-500',\n Royal500 = 'royal-500',\n Seafoam500 = 'seafoam-500',\n Teal500 = 'teal-500',\n Yellow500 = 'yellow-500',\n}\n\nexport type StashPrimaryColor = `${StashPrimaryColors}`;\n","import { Plugin } from 'vue';\nimport Vue3TouchEvents from 'vue3-touch-events';\n\nimport { I18nPlugin, StashOptionImages, StashProvideState } from '../types/misc';\nimport locale from './locale';\n// this is valid syntax per the TS docs, but prettier throws an error expecting a comma after `type`\n// eslint-disable-next-line prettier/prettier\nimport DialogsPlugin, { type DialogsPluginOptions } from './plugins/DialogsPlugin';\nimport MenusPlugin, { type MenusPluginOptions } from './plugins/MenusPlugin';\nimport ModalsPlugin, { type ModalsPluginOptions } from './plugins/ModalsPlugin';\nimport ToastsPlugin, { type ToastsPluginOptions } from './plugins/ToastsPlugin';\nimport { overridePersistentStorage, persistentStorage } from './storage';\n\nexport interface StashPluginOptions {\n i18n?: I18nPlugin;\n storage?: {\n set: <T = unknown>(name: string, data: T, options?: { [key: string]: unknown }) => void;\n get: <T = unknown>(name: string, options?: { [key: string]: unknown }) => T;\n };\n staticPath?: string;\n images?: StashOptionImages;\n googleMapsApiKey?: string;\n menus?: false | MenusPluginOptions;\n modals?: false | ModalsPluginOptions;\n toasts?: false | ToastsPluginOptions;\n dialogs?: false | DialogsPluginOptions;\n}\n\nexport default <Plugin>{\n install(\n app,\n {\n i18n = undefined,\n storage = undefined,\n staticPath = '/static',\n images = {\n provider: 'static',\n staticDomains: [],\n },\n googleMapsApiKey = undefined,\n menus,\n modals,\n toasts,\n dialogs,\n }: StashPluginOptions = {},\n ) {\n app.use(Vue3TouchEvents);\n\n // locale\n if (i18n) {\n locale.use(i18n.locale);\n locale.i18n(i18n && i18n.t);\n }\n\n // persistent storage (localStorage)\n if (storage) {\n overridePersistentStorage(storage);\n }\n\n // expose stash options to the rest of your application\n app.provide<StashProvideState>('stashOptions', {\n i18n,\n images,\n storage,\n staticPath,\n googleMapsApiKey,\n });\n\n if (menus !== false) {\n app.use(MenusPlugin, menus);\n }\n\n if (modals !== false) {\n app.use(ModalsPlugin, modals);\n }\n\n if (toasts !== false) {\n app.use(ToastsPlugin, toasts);\n }\n\n if (dialogs !== false) {\n app.use(DialogsPlugin, dialogs);\n }\n },\n};\n\nexport { persistentStorage };\n\n// Re-export things that are useful for consumers\nexport * from '../types';\nexport * from './storage';\n\n// Todo: Investigate tree-shaking issues to see if we can expose these. Theoritically\n// should be no issue, however test framework startup time, specifically w/ Jest,\n// seems to be the major blocker here.\n// export * from './components';\n// export * from './composables';\n// export * from './constants';\n// export * from './directives';\n// export * from './locale';\n// export * from './plugins';\n// export { default as ToastsPlugin } from './plugins/ToastsPlugin';\n"],"names":["touchX","event","touchY","isPassiveSupported","supportsPassive","opts","vueTouchEvents","app","constructorOptions","globalOptions","touchStartEvent","$this","isTouchEvent","isMouseEvent","$el","addTouchClass","hasEvent","triggerEvent","touchMoveEvent","curX","curY","movedAgain","swipeOutBounded","tapTolerance","cancelTouchHoldTimer","now","throttle","touchCancelEvent","removeTouchClass","touchEndEvent","touchholdEnd","direction","distanceY","distanceX","mouseEnterEvent","mouseLeaveEvent","eventType","callbacks","e","param","i","binding","className","buildTouchObj","extraOptions","touchObj","passiveOpt","_m","_e","Deferred","__publicField","resolve","reject","active","ref","useDialog","open","dialog","_a","close","reactive","readonly","attributes","computed","omit","onCancel","_c","_b","onConfirm","DialogsPlugin","options","mountNodeId","mountNode","vNode","createVNode","h","Dialogs","render","StashColors","StashCommonColors","StashPrimaryColors","index","i18n","storage","staticPath","images","googleMapsApiKey","menus","modals","toasts","dialogs","Vue3TouchEvents","locale","overridePersistentStorage","MenusPlugin","ModalsPlugin","ToastsPlugin"],"mappings":"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","x_google_ignoreList":[0]}
|
package/dist/useToasts.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { RenderFunction } from 'vue';
|
|
2
|
+
|
|
1
3
|
export declare const DEFAULT_TIMEOUT = 5000;
|
|
2
4
|
|
|
3
5
|
declare enum StatusSeverities {
|
|
@@ -11,7 +13,7 @@ declare type StatusSeverity = `${StatusSeverities}`;
|
|
|
11
13
|
|
|
12
14
|
export declare type Toast = {
|
|
13
15
|
id: string;
|
|
14
|
-
text: string;
|
|
16
|
+
text: string | RenderFunction;
|
|
15
17
|
status: StatusSeverity;
|
|
16
18
|
};
|
|
17
19
|
|
|
@@ -22,16 +24,16 @@ export declare type ToastOptions = {
|
|
|
22
24
|
declare function useToasts(globalOptions?: ToastOptions): {
|
|
23
25
|
active: readonly {
|
|
24
26
|
readonly id: string;
|
|
25
|
-
readonly text: string;
|
|
27
|
+
readonly text: string | RenderFunction;
|
|
26
28
|
readonly status: "error" | "warning" | "info" | "success";
|
|
27
29
|
}[];
|
|
28
30
|
remove: (toastId: Toast['id']) => void;
|
|
29
31
|
create: (text: Toast['text'], status: StatusSeverity, localOptions?: ToastOptions) => Toast['id'];
|
|
30
32
|
removeAll: () => void;
|
|
31
|
-
error: (text:
|
|
32
|
-
info: (text:
|
|
33
|
-
success: (text:
|
|
34
|
-
warning: (text:
|
|
33
|
+
error: (text: Toast['text'], options?: ToastOptions) => string;
|
|
34
|
+
info: (text: Toast['text'], options?: ToastOptions) => string;
|
|
35
|
+
success: (text: Toast['text'], options?: ToastOptions) => string;
|
|
36
|
+
warning: (text: Toast['text'], options?: ToastOptions) => string;
|
|
35
37
|
};
|
|
36
38
|
export default useToasts;
|
|
37
39
|
|
package/dist/useToasts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useToasts.js","sources":["../src/composables/useToasts/useToasts.ts"],"sourcesContent":["import merge from 'lodash-es/merge';\nimport uniqueId from 'lodash-es/uniqueId';\nimport { reactive, readonly, ref } from 'vue';\n\nimport { StatusSeverity } from '../../../types/statusLevels';\n\nexport const DEFAULT_TIMEOUT = 5000;\n\nexport type Toast = {\n id: string;\n text: string;\n status: StatusSeverity;\n};\n\nexport type ToastOptions = {\n timeout?: number | boolean;\n};\n\nconst active = ref<Toast[]>([]);\n\nexport default function useToasts(globalOptions: ToastOptions = { timeout: DEFAULT_TIMEOUT }) {\n function remove(toastId: Toast['id']) {\n active.value = active.value.filter(({ id }) => id !== toastId);\n }\n\n function create(text: Toast['text'], status: StatusSeverity, localOptions?: ToastOptions): Toast['id'] {\n const options = merge({}, globalOptions, localOptions);\n\n const id = uniqueId('toast-');\n\n active.value.push({ text, id, status });\n\n if (typeof options.timeout === 'number') {\n setTimeout(() => remove(id), Math.abs(options.timeout));\n }\n\n return id;\n }\n\n function removeAll() {\n active.value = [];\n }\n\n function error(text:
|
|
1
|
+
{"version":3,"file":"useToasts.js","sources":["../src/composables/useToasts/useToasts.ts"],"sourcesContent":["import merge from 'lodash-es/merge';\nimport uniqueId from 'lodash-es/uniqueId';\nimport { reactive, readonly, ref, RenderFunction } from 'vue';\n\nimport { StatusSeverity } from '../../../types/statusLevels';\n\nexport const DEFAULT_TIMEOUT = 5000;\n\nexport type Toast = {\n id: string;\n text: string | RenderFunction;\n status: StatusSeverity;\n};\n\nexport type ToastOptions = {\n timeout?: number | boolean;\n};\n\nconst active = ref<Toast[]>([]);\n\nexport default function useToasts(globalOptions: ToastOptions = { timeout: DEFAULT_TIMEOUT }) {\n function remove(toastId: Toast['id']) {\n active.value = active.value.filter(({ id }) => id !== toastId);\n }\n\n function create(text: Toast['text'], status: StatusSeverity, localOptions?: ToastOptions): Toast['id'] {\n const options = merge({}, globalOptions, localOptions);\n\n const id = uniqueId('toast-');\n\n active.value.push({ text, id, status });\n\n if (typeof options.timeout === 'number') {\n setTimeout(() => remove(id), Math.abs(options.timeout));\n }\n\n return id;\n }\n\n function removeAll() {\n active.value = [];\n }\n\n function error(text: Toast['text'], options?: ToastOptions) {\n return create(text, 'error', options);\n }\n\n function info(text: Toast['text'], options?: ToastOptions) {\n return create(text, 'info', options);\n }\n\n function success(text: Toast['text'], options?: ToastOptions) {\n return create(text, 'success', options);\n }\n\n function warning(text: Toast['text'], options?: ToastOptions) {\n return create(text, 'warning', options);\n }\n\n return reactive({\n /**\n * The list of toasts that are currently visible.\n */\n active: readonly(active),\n\n /**\n * Removes an active/visible toast.\n */\n remove,\n\n /**\n * Creates a new toast and makes it active/visible.\n */\n create,\n\n /**\n * Removes all active/visible toasts.\n */\n removeAll,\n\n /**\n * Creates a new \"error\" toast.\n */\n error,\n\n /**\n * Creates a new \"info\" toast.\n */\n info,\n\n /**\n * Creates a new \"success\" toast.\n */\n success,\n\n /**\n * Creates a new \"warning\" toast.\n */\n warning,\n });\n}\n"],"names":["DEFAULT_TIMEOUT","active","ref","useToasts","globalOptions","remove","toastId","id","create","text","status","localOptions","options","merge","uniqueId","removeAll","error","info","success","warning","reactive","readonly"],"mappings":";;;AAMO,MAAMA,IAAkB,KAYzBC,IAASC,EAAa,CAAA,CAAE;AAE9B,SAAwBC,EAAUC,IAA8B,EAAE,SAASJ,KAAmB;AAC5F,WAASK,EAAOC,GAAsB;AAC7B,IAAAL,EAAA,QAAQA,EAAO,MAAM,OAAO,CAAC,EAAE,IAAAM,EAAS,MAAAA,MAAOD,CAAO;AAAA,EAC/D;AAES,WAAAE,EAAOC,GAAqBC,GAAwBC,GAA0C;AACrG,UAAMC,IAAUC,EAAM,CAAC,GAAGT,GAAeO,CAAY,GAE/CJ,IAAKO,EAAS,QAAQ;AAE5B,WAAAb,EAAO,MAAM,KAAK,EAAE,MAAAQ,GAAM,IAAAF,GAAI,QAAAG,GAAQ,GAElC,OAAOE,EAAQ,WAAY,YAClB,WAAA,MAAMP,EAAOE,CAAE,GAAG,KAAK,IAAIK,EAAQ,OAAO,CAAC,GAGjDL;AAAA,EACT;AAEA,WAASQ,IAAY;AACnB,IAAAd,EAAO,QAAQ;EACjB;AAES,WAAAe,EAAMP,GAAqBG,GAAwB;AACnD,WAAAJ,EAAOC,GAAM,SAASG,CAAO;AAAA,EACtC;AAES,WAAAK,EAAKR,GAAqBG,GAAwB;AAClD,WAAAJ,EAAOC,GAAM,QAAQG,CAAO;AAAA,EACrC;AAES,WAAAM,EAAQT,GAAqBG,GAAwB;AACrD,WAAAJ,EAAOC,GAAM,WAAWG,CAAO;AAAA,EACxC;AAES,WAAAO,EAAQV,GAAqBG,GAAwB;AACrD,WAAAJ,EAAOC,GAAM,WAAWG,CAAO;AAAA,EACxC;AAEA,SAAOQ,EAAS;AAAA;AAAA;AAAA;AAAA,IAId,QAAQC,EAASpB,CAAM;AAAA;AAAA;AAAA;AAAA,IAKvB,QAAAI;AAAA;AAAA;AAAA;AAAA,IAKA,QAAAG;AAAA;AAAA;AAAA;AAAA,IAKA,WAAAO;AAAA;AAAA;AAAA;AAAA,IAKA,OAAAC;AAAA;AAAA;AAAA;AAAA,IAKA,MAAAC;AAAA;AAAA;AAAA;AAAA,IAKA,SAAAC;AAAA;AAAA;AAAA;AAAA,IAKA,SAAAC;AAAA,EAAA,CACD;AACH;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@leaflink/stash",
|
|
3
|
-
"version": "44.
|
|
3
|
+
"version": "44.8.0",
|
|
4
4
|
"description": "LeafLink's design system.",
|
|
5
5
|
"homepage": "https://stash.leaflink.com",
|
|
6
6
|
"main": "./dist/index.ts",
|
|
@@ -92,7 +92,8 @@
|
|
|
92
92
|
"docs:spritesheet": "svg-sprite --symbol --symbol-dest=docs/public/ --symbol-sprite=spritesheet.svg --svg-namespace-ids=false assets/icons/*.svg",
|
|
93
93
|
"docs": "npm run docs:spritesheet && npm run docs:illustrations && npm run docs:logos && vitepress dev docs",
|
|
94
94
|
"docs:build": "npm run docs:spritesheet && npm run docs:illustrations && npm run docs:logos && vitepress build docs",
|
|
95
|
-
"docs:preview": "vitepress preview docs"
|
|
95
|
+
"docs:preview": "vitepress preview docs",
|
|
96
|
+
"prepare": "husky install"
|
|
96
97
|
},
|
|
97
98
|
"dependencies": {
|
|
98
99
|
"@floating-ui/vue": "^1.0.2",
|
|
@@ -100,6 +101,7 @@
|
|
|
100
101
|
"@leaflink/snitch": "^1.1.1",
|
|
101
102
|
"date-fns": "2.29.3",
|
|
102
103
|
"date-fns-tz": "2.0.0",
|
|
104
|
+
"dompurify": "^3.1.0",
|
|
103
105
|
"flat": "6.0.1",
|
|
104
106
|
"fuzzysort": "2.0.1",
|
|
105
107
|
"medium-zoom": "^1.1.0",
|
|
@@ -128,6 +130,7 @@
|
|
|
128
130
|
"@testing-library/jest-dom": "^6.0.1",
|
|
129
131
|
"@testing-library/user-event": "^14.4.3",
|
|
130
132
|
"@testing-library/vue": "^7.0.0",
|
|
133
|
+
"@types/dompurify": "^3.0.5",
|
|
131
134
|
"@types/google.maps": "^3.53.4",
|
|
132
135
|
"@types/lodash-es": "^4.17.6",
|
|
133
136
|
"@types/plaid-link": "^2.0.11",
|
|
@@ -138,9 +141,12 @@
|
|
|
138
141
|
"@vue/test-utils": "^2.4.1",
|
|
139
142
|
"autoprefixer": "^9.7.4",
|
|
140
143
|
"babel-core": "^7.0.0-bridge.0",
|
|
144
|
+
"doctoc": "^2.2.1",
|
|
141
145
|
"eslint": "^8.41.0",
|
|
142
146
|
"eslint-config-leaflink": "^3.3.0",
|
|
147
|
+
"husky": "^9.0.11",
|
|
143
148
|
"jsdom": "^22.1.0",
|
|
149
|
+
"lint-staged": "^15.2.2",
|
|
144
150
|
"postcss": "^8.4.35",
|
|
145
151
|
"postcss-html": "^1.5.0",
|
|
146
152
|
"postcss-prefix-selector": "^1.16.0",
|
|
@@ -177,5 +183,11 @@
|
|
|
177
183
|
"typescript": {
|
|
178
184
|
"optional": true
|
|
179
185
|
}
|
|
186
|
+
},
|
|
187
|
+
"lint-staged": {
|
|
188
|
+
"{README,CONTRIBUTING,ARCHITECTURE}.md": [
|
|
189
|
+
"prettier --write --config ./node_modules/eslint-config-leaflink/prettier.js",
|
|
190
|
+
"doctoc --title '## Table of Contents'"
|
|
191
|
+
]
|
|
180
192
|
}
|
|
181
193
|
}
|