{"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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"}