UNPKG

@devexpress/dx-core

Version:
1 lines 21.3 kB
{"version":3,"file":"dx-core.umd.cjs","sources":["../src/utils.ts","../src/plugin-host.ts","../src/event-emitter.ts","../src/shallow-equal.ts","../src/memoize.ts","../src/easings.ts","../src/messages-formatter.ts"],"sourcesContent":["const DELAY = 200;\n\nconst compare = (a, b) => {\n const aPosition = a.position();\n const bPosition = b.position();\n for (let i = 0; i < Math.min(aPosition.length, bPosition.length); i += 1) {\n if (aPosition[i] < bPosition[i]) return -1;\n if (aPosition[i] > bPosition[i]) return 1;\n }\n return aPosition.length - bPosition.length;\n};\n\n/** @internal */\nexport const insertPlugin = (array, newItem) => {\n const result = array.slice();\n const nextItemIndex = array.findIndex(item => compare(newItem, item) <= 0);\n const targetIndex = nextItemIndex < 0 ? array.length : nextItemIndex;\n const alreadyExists = (targetIndex >= 0 && targetIndex < array.length)\n && compare(newItem, array[targetIndex]) === 0;\n let deletedItems = 0;\n if (alreadyExists) {\n deletedItems = 1;\n const targetItemPosition = result[targetIndex].position();\n if (targetItemPosition.length > 1) {\n for (let i = targetIndex + 1; i < result.length; i += 1) {\n const itemPosition = result[i].position();\n if (targetItemPosition.length === itemPosition.length &&\n targetItemPosition[targetItemPosition.length - 2] ===\n itemPosition[itemPosition.length - 2]) {\n deletedItems += 1;\n } else {\n break;\n }\n }\n }\n }\n result.splice(targetIndex, deletedItems, newItem);\n return result;\n};\n\n/** @internal */\nexport const removePlugin = (array, item) => {\n const itemIndex = array.indexOf(item);\n return itemIndex >= 0 ? [...array.slice(0, itemIndex), ...array.slice(itemIndex + 1)] : array;\n};\n\n/** @internal */\nexport const createClickHandlers = (click?, dblClick?) => {\n let timeoutId;\n const events: any = {};\n if (click) {\n events.onClick = (e) => {\n if (!timeoutId) {\n timeoutId = setTimeout(() => {\n clearTimeout(timeoutId);\n click(e);\n }, DELAY);\n }\n };\n }\n if (dblClick) {\n events.onDoubleClick = (e) => {\n clearTimeout(timeoutId);\n dblClick(e);\n };\n }\n return events;\n};\n\n/** @internal */\nexport const slice = arr => Array.prototype.slice.call(arr); // slice can be renamed to copy as well\n\n/** @internal */\nexport const hasWindow = () => typeof window !== 'undefined';\n","import { insertPlugin, removePlugin } from './utils';\nimport { Getters } from '@devexpress/dx-react-core';\n\nconst getDependencyError = (\n pluginName, dependencyName,\n ) => new Error(\n `The '${pluginName}' plugin requires '${dependencyName}' to be defined before it.`,\n );\n\n/** @internal */\nexport type PluginPositionFn = () => number[];\n\nexport interface IDependency { name: string; optional?: boolean; }\n\n/** @internal */\nexport type InnerPlugin = {\n position: PluginPositionFn;\n name?: string;\n dependencies?: IDependency[];\n} & Getters;\n\n/** @internal */\nexport class PluginHost {\n private plugins: InnerPlugin[];\n private subscriptions: Set<any>;\n private gettersCache: object = {};\n private knownKeysCache: object = {};\n private validationRequired: boolean = true;\n\n constructor() {\n this.plugins = [];\n this.subscriptions = new Set();\n }\n\n ensureDependencies() {\n const defined: Set<string> = new Set();\n const knownOptionals: Map<string, string> = new Map();\n this.plugins\n .filter(plugin => plugin.container)\n .forEach((plugin) => {\n const pluginName = plugin.name || '';\n if (knownOptionals.has(pluginName)) {\n throw (getDependencyError(knownOptionals.get(pluginName), pluginName));\n }\n\n (plugin.dependencies || [])\n .forEach((dependency) => {\n if (defined.has(dependency.name)) return;\n if (dependency.optional) {\n if (!knownOptionals.has(dependency.name)) {\n knownOptionals.set(dependency.name, pluginName);\n }\n return;\n }\n throw (getDependencyError(pluginName, dependency.name));\n });\n\n defined.add(pluginName);\n });\n }\n\n registerPlugin(plugin) {\n this.plugins = insertPlugin(this.plugins, plugin);\n this.cleanPluginsCache();\n }\n\n unregisterPlugin(plugin) {\n this.plugins = removePlugin(this.plugins, plugin);\n this.cleanPluginsCache();\n }\n\n knownKeys(postfix) {\n if (!this.knownKeysCache[postfix]) {\n this.knownKeysCache[postfix] = Array.from(this.plugins\n .map(plugin => Object.keys(plugin))\n .map(keys => keys.filter(key => key.endsWith(postfix))[0])\n .filter(key => !!key)\n .reduce((acc, key) => acc.add(key), new Set<string>()))\n .map(key => key.replace(postfix, ''));\n }\n return this.knownKeysCache[postfix];\n }\n\n collect(key, upTo?) {\n if (this.validationRequired) {\n this.ensureDependencies();\n this.validationRequired = false;\n }\n\n let res = this.gettersCache[key];\n if (!res) {\n // Add cache for original plugin indexes\n const indexCache = this.plugins\n .map((plugin, index) => ({ key: plugin[key], index }))\n .filter(plugin => !!plugin.key);\n this.gettersCache[`${key}_i`] = indexCache;\n res = indexCache.map(item => item.key);\n this.gettersCache[key] = res;\n }\n\n if (!upTo) return res;\n\n const upToIndex = this.plugins.indexOf(upTo);\n\n // Try to get a result from upToIndex cache first.\n const upToIndexKey = key + upToIndex;\n let upToRes = this.gettersCache[upToIndexKey];\n\n if (!upToRes) {\n const indexCache = this.gettersCache[`${key}_i`];\n upToRes = this.gettersCache[key]\n .filter((getter, index) => indexCache[index].index < upToIndex);\n this.gettersCache[upToIndexKey] = upToRes;\n }\n\n return upToRes;\n }\n\n get(key, upTo) {\n const plugins = this.collect(key, upTo);\n\n if (!plugins.length) return undefined;\n\n let result;\n // slice creates shallow copy, when do it many times, it costs about 5%\n plugins.forEach((plugin) => {\n result = plugin(result);\n });\n return result;\n }\n\n registerSubscription(subscription) {\n this.subscriptions.add(subscription);\n }\n\n unregisterSubscription(subscription) {\n this.subscriptions.delete(subscription);\n }\n\n broadcast(event, message?: any) {\n this.subscriptions.forEach(subscription => subscription[event] && subscription[event](message));\n }\n\n private cleanPluginsCache() {\n this.validationRequired = true;\n this.gettersCache = {};\n this.knownKeysCache = {};\n }\n}\n","type Handler = (e: object) => void;\n\n/** @internal */\nexport class EventEmitter {\n private handlers: Handler[];\n\n constructor() {\n this.handlers = [];\n }\n\n emit(e) {\n this.handlers.forEach(handler => handler(e));\n }\n\n subscribe(handler) {\n this.handlers.push(handler);\n }\n\n unsubscribe(handler) {\n this.handlers.splice(this.handlers.indexOf(handler), 1);\n }\n}\n","/** @internal */\nexport const shallowEqual = (objA, objB) => {\n if (objA === objB) {\n return true;\n }\n\n const keysA = Object.keys(objA);\n const keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n // Test for A's keys different from B.\n const hasOwn = Object.prototype.hasOwnProperty;\n // tslint:disable-next-line: prefer-for-of\n for (let i = 0; i < keysA.length; i += 1) {\n if (!hasOwn.call(objB, keysA[i])\n || objA[keysA[i]] !== objB[keysA[i]]) {\n return false;\n }\n\n const valA = objA[keysA[i]];\n const valB = objB[keysA[i]];\n\n if (valA !== valB) {\n return false;\n }\n }\n\n return true;\n};\n\n/** @internal */\nexport const argumentsShallowEqual = (prev, next) => {\n if (prev === null || next === null || prev.length !== next.length) {\n return false;\n }\n\n for (let i = 0; i < prev.length; i += 1) {\n if (prev[i] !== next[i]) {\n return false;\n }\n }\n\n return true;\n};\n","import { argumentsShallowEqual } from './shallow-equal';\n\n/** @internal */\nexport const memoize = (func) => {\n let lastArgs: any = null;\n let lastResult: ReturnType<typeof func> = null;\n return (...args) => {\n if (lastArgs === null || !argumentsShallowEqual(lastArgs, args)) {\n lastResult = func(...args);\n }\n lastArgs = args;\n return lastResult;\n };\n};\n","/** @internal */\nexport const easeInQuad = t => t * t;\n/** @internal */\nexport const easeOutQuad = t => t * (2 - t);\n/** @internal */\nexport const easeInOutQuad = t => (t < 0.5\n ? 2 * t * t\n : -1 + ((4 - (2 * t)) * t));\n\n/** @internal */\nexport const easeInCubic = t => t * t * t;\n/** @internal */\nexport const easeOutCubic = t => ((t - 1) * (t - 1) * (t - 1)) + 1;\n/** @internal */\nexport const easeInOutCubic = t => (t < 0.5\n ? 4 * t * t * t\n : ((t - 1) * ((2 * t) - 2) * ((2 * t) - 2)) + 1);\n\n/** @internal */\nexport const easeInQuart = t => t * t * t * t;\n/** @internal */\nexport const easeOutQuart = t => 1 - ((t - 1) * (t - 1) * (t - 1) * (t - 1));\n/** @internal */\nexport const easeInOutQuart = t => (t < 0.5\n ? 8 * t * t * t * t\n : 1 - (8 * (t - 1) * (t - 1) * (t - 1) * (t - 1)));\n\n/** @internal */\nexport const easeInQuint = t => t * t * t * t * t;\n/** @internal */\nexport const easeOutQuint = t => 1 + ((t - 1) * (t - 1) * (t - 1) * (t - 1) * (t - 1));\n/** @internal */\nexport const easeInOutQuint = t => (t < 0.5\n ? 16 * t * t * t * t * t\n : 1 + (16 * (t - 1) * (t - 1) * (t - 1) * (t - 1) * (t - 1)));\n","import { GetMessagesFormatterFn } from './types';\n\nconst processPattern = (pattern, params) => Object.keys(params).reduce(\n (msg, key) => msg.replace(`{${key}}`, params[key]),\n pattern,\n);\n\n/** @internal */\nexport const getMessagesFormatter: GetMessagesFormatterFn = messages => (key, params?) => {\n const message = messages[key];\n\n if (typeof message === 'function') {\n return message(params);\n }\n if (params) {\n return processPattern(message, params);\n }\n return message ?? '';\n};\n"],"names":[],"mappings":"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"}