UNPKG

19.2 kBSource Map (JSON)View Raw
1{"version":3,"file":"Registry.js","sourceRoot":"","sources":["../../../../src/.internal/core/Registry.ts"],"names":[],"mappings":"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","sourcesContent":["/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { ITheme } from \"../themes/ITheme\";\r\nimport { EventDispatcher, AMEvent } from \"./utils/EventDispatcher\";\r\nimport { Dictionary } from \"./utils/Dictionary\";\r\nimport { Sprite } from \"./Sprite\";\r\nimport { Container } from \"./Container\";\r\nimport { Component } from \"./Component\";\r\nimport { cache } from \"./utils/Cache\";\r\nimport * as $type from \"./utils/Type\";\r\nimport * as $string from \"./utils/String\";\r\nimport * as $array from \"./utils/Array\";\r\n\r\n\r\n/**\r\n * Define events available for [[Registry]]\r\n */\r\nexport interface IRegistryEvents {\r\n\r\n\t/**\r\n\t * Invoked when update cycle starts. Before invalid elements are re-validated.\r\n\t */\r\n\tenterframe: {};\r\n\r\n\t/**\r\n\t * Invoked when udpate cycle ends. After invalid elements have been\r\n\t * re-validated.\r\n\t */\r\n\texitframe: {};\r\n\r\n}\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Registry is used to store miscellaneous system-wide information, like ids,\r\n * maps, themes, and registered classes.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nexport class Registry {\r\n\r\n\t/**\r\n\t * Unique ID of the object.\r\n\t */\r\n\tpublic uid: string;\r\n\r\n\t/**\r\n\t * Event dispacther.\r\n\t */\r\n\tpublic events: EventDispatcher<AMEvent<Registry, IRegistryEvents>> = new EventDispatcher();\r\n\r\n\t/**\r\n\t * Holds a universal mapping collection, so that elements and their children\r\n\t * can create and look up all kinds of relations between id and object.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _map: $type.Optional<Dictionary<string, any>>;\r\n\r\n\t/**\r\n\t * All currently applied themes. All new chart instances created will\r\n\t * automatically inherit and retain System's themes.\r\n\t */\r\n\tpublic themes: ITheme[] = [];\r\n\r\n\t/**\r\n\t * List of all loaded available themes.\r\n\t *\r\n\t * Whenever a theme loads, it registers itself in System's `loadedThemes`\r\n\t * collection.\r\n\t */\r\n\tpublic loadedThemes: { [index: string]: ITheme } = {};\r\n\r\n\t/**\r\n\t * An indeternal counter used to generate unique IDs.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected _uidCount: number = 0;\r\n\r\n\t/**\r\n\t * Keeps register of class references so that they can be instnatiated using\r\n\t * string key.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic registeredClasses: { [index: string]: any } = {};\r\n\r\n\t/**\r\n\t * Holds all generated placeholders.\r\n\t */\r\n\tprotected _placeholders: { [index: string]: string } = {};\r\n\r\n\t/**\r\n\t * A list of invalid(ated) [[Sprite]] objects that need to be re-validated\r\n\t * during next cycle.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic invalidSprites: { [index: string]: Array<Sprite> } = {};\r\n\r\n\t/**\r\n\t * Components are added to this list when their data provider changes to\r\n\t * a new one or data is added/removed from their data provider.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic invalidDatas: { [index: string]: Array<Component> } = {};\r\n\r\n\t/**\r\n\t * Components are added to this list when values of their raw data change.\r\n\t * Used when we want a smooth animation from one set of values to another.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic invalidRawDatas: Array<Component> = [];\r\n\r\n\t/**\r\n\t * Components are added to this list when values of their data changes\r\n\t * (but not data provider itself).\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic invalidDataItems: Array<Component> = [];\r\n\r\n\t/**\r\n\t * Components are added to this list when their data range (selection) is\r\n\t * changed, e.g. zoomed.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic invalidDataRange: Array<Component> = [];\r\n\r\n\t/**\r\n\t * A list of [[Sprite]] objects that have invalid(ated) positions, that need\r\n\t * to be recalculated.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic invalidPositions: { [index: string]: Array<Sprite> } = {};\r\n\r\n\t/**\r\n\t * A list of [[Container]] objects with invalid(ated) layouts.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic invalidLayouts: { [index: string]: Array<Container> } = {};\r\n\r\n\t/**\r\n\t * An array holding all active (non-disposed) top level elemens.\r\n\t *\r\n\t * When, for example, a new chart is created, its instance will be added to\r\n\t * this array, and will be removed when the chart is disposed.\r\n\t */\r\n\tpublic baseSprites: Array<Sprite> = [];\r\n\r\n\t/**\r\n\t * An UID-based map of base sprites (top-level charts).\r\n\t */\r\n\tpublic baseSpritesByUid: { [index: string]: Sprite } = {};\r\n\r\n\t/**\r\n\t * Queued charts (waiting for their turn) to initialize.\r\n\t * \r\n\t * @see {@link https://www.amcharts.com/docs/v4/concepts/performance/#Daisy_chaining_multiple_charts} for more information\r\n\t */\r\n\tpublic queue: Array<Sprite> = [];\r\n\r\n\t/**\r\n\t * An array of deferred charts that haven't been created yet.\r\n\t *\r\n\t * @see {@link https://www.amcharts.com/docs/v4/concepts/performance/#Deferred_daisy_chained_instantiation} for more information\r\n\t * @since 4.10.0\r\n\t */\r\n\tpublic deferred: Array<{\r\n\t\tcallback: (...args: Array<any>) => Sprite,\r\n\t\tscope?: any,\r\n\t\targs?: Array<any>,\r\n\t\tresolve: any\r\n\t}> = [];\r\n\r\n\tconstructor() {\r\n\t\tthis.uid = this.getUniqueId();\r\n\r\n\t\tthis.invalidSprites.noBase = [];\r\n\t\tthis.invalidDatas.noBase = [];\r\n\t\tthis.invalidLayouts.noBase = [];\r\n\t\tthis.invalidPositions.noBase = [];\r\n\r\n\t\t// This is needed for Angular Universal SSR\r\n\t\tif (typeof addEventListener !== \"undefined\") {\r\n\t\t\t// This is needed to prevent charts from being cut off when printing\r\n\t\t\taddEventListener(\"beforeprint\", () => {\r\n\t\t\t\t$array.each(this.baseSprites, (sprite) => {\r\n\t\t\t\t\tconst svg = sprite.paper.svg;\r\n\t\t\t\t\tsvg.setAttribute(\"viewBox\", \"0 0 \" + svg.clientWidth + \" \" + svg.clientHeight);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\taddEventListener(\"afterprint\", () => {\r\n\t\t\t\t$array.each(this.baseSprites, (sprite) => {\r\n\t\t\t\t\tconst svg = sprite.paper.svg;\r\n\t\t\t\t\tsvg.removeAttribute(\"viewBox\");\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Generates a unique chart system-wide ID.\r\n\t *\r\n\t * @return Generated ID\r\n\t */\r\n\tpublic getUniqueId(): string {\r\n\t\tlet uid = this._uidCount;\r\n\t\tthis._uidCount += 1;\r\n\t\treturn \"id-\" + uid;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a universal collection for mapping ids with objects.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @return Map collection\r\n\t */\r\n\tpublic get map(): Dictionary<string, any> {\r\n\t\tif (!this._map) {\r\n\t\t\tthis._map = new Dictionary<string, any>();\r\n\t\t}\r\n\t\treturn this._map;\r\n\t}\r\n\r\n\t/**\r\n\t * Caches value in object's cache.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param key Key\r\n\t * @param value Value\r\n\t * @param ttl TTL in seconds\r\n\t */\r\n\tpublic setCache(key: string, value: any, ttl?: number): void {\r\n\t\tcache.set(this.uid, key, value, ttl);\r\n\t}\r\n\r\n\t/**\r\n\t * Retrieves cached value.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param key Key\r\n\t * @param value Value to return if cache is not available\r\n\t * @return Value\r\n\t */\r\n\tpublic getCache(key: string, value: any = undefined): any {\r\n\t\treturn cache.get(this.uid, key, value);\r\n\t}\r\n\r\n\t/**\r\n\t * Dispatches an event using own event dispatcher. Will automatically\r\n\t * populate event data object with event type and target (this element).\r\n\t * It also checks if there are any handlers registered for this sepecific\r\n\t * event.\r\n\t *\r\n\t * @param eventType Event type (name)\r\n\t * @param data Data to pass into event handler(s)\r\n\t */\r\n\tpublic dispatch<Key extends keyof IRegistryEvents>(eventType: Key, data?: any): void {\r\n\t\t// @todo Implement proper type check\r\n\t\tif (this.events.isEnabled(eventType)) {\r\n\t\t\tif (data) {\r\n\t\t\t\tdata.type = eventType;\r\n\t\t\t\tdata.target = data.target || this;\r\n\t\t\t\t(<any>this.events).dispatch(eventType, {\r\n\t\t\t\t\ttype: eventType,\r\n\t\t\t\t\ttarget: this\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t(<any>this.events).dispatch(eventType, {\r\n\t\t\t\t\ttype: eventType,\r\n\t\t\t\t\ttarget: this\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Works like `dispatch`, except event is triggered immediately, without\r\n\t * waiting for the next frame cycle.\r\n\t *\r\n\t * @param eventType Event type (name)\r\n\t * @param data Data to pass into event handler(s)\r\n\t */\r\n\tpublic dispatchImmediately<Key extends keyof IRegistryEvents>(eventType: Key, data?: any): void {\r\n\t\t// @todo Implement proper type check\r\n\t\tif (this.events.isEnabled(eventType)) {\r\n\t\t\tif (data) {\r\n\t\t\t\tdata.type = eventType;\r\n\t\t\t\tdata.target = data.target || this;\r\n\t\t\t\t(<any>this.events).dispatchImmediately(eventType, data);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t(<any>this.events).dispatchImmediately(eventType, {\r\n\t\t\t\t\ttype: eventType,\r\n\t\t\t\t\ttarget: this\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a unique placeholder suitable for the key.\r\n\t *\r\n\t * @param key Key\r\n\t * @return Random string to be used as placeholder\r\n\t */\r\n\tpublic getPlaceholder(key: string): string {\r\n\t\tif ($type.hasValue(this._placeholders[key])) {\r\n\t\t\treturn this._placeholders[key];\r\n\t\t}\r\n\t\tthis._placeholders[key] = \"__amcharts_\" + key + \"_\" + $string.random(8) + \"__\";\r\n\t\treturn this._placeholders[key];\r\n\t}\r\n\r\n\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic addToInvalidComponents(component: Component) {\r\n\t\tif (component.baseId) {\r\n\t\t\t$array.move(this.invalidDatas[component.baseId], component);\r\n\t\t}\r\n\t\telse {\r\n\t\t\t$array.move(this.invalidDatas[\"noBase\"], component);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic removeFromInvalidComponents(component: Component) {\r\n\t\tif (component.baseId) {\r\n\t\t\t$array.remove(this.invalidDatas[component.baseId], component);\r\n\t\t}\r\n\r\n\t\t$array.remove(this.invalidDatas[\"noBase\"], component);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic addToInvalidSprites(sprite: Sprite) {\r\n\t\tif (sprite.baseId) {\r\n\t\t\t$array.add(this.invalidSprites[sprite.baseId], sprite);\r\n\t\t}\r\n\t\telse {\r\n\t\t\t$array.add(this.invalidSprites[\"noBase\"], sprite);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic removeFromInvalidSprites(sprite: Sprite) {\r\n\t\tif (sprite.baseId) {\r\n\t\t\t$array.remove(this.invalidSprites[sprite.baseId], sprite);\r\n\t\t}\r\n\r\n\t\t$array.remove(this.invalidSprites[\"noBase\"], sprite);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic addToInvalidPositions(sprite: Sprite) {\r\n\t\tif (sprite.baseId) {\r\n\t\t\t$array.add(this.invalidPositions[sprite.baseId], sprite);\r\n\t\t}\r\n\t\telse {\r\n\t\t\t$array.add(this.invalidPositions[\"noBase\"], sprite);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic removeFromInvalidPositions(sprite: Sprite) {\r\n\t\tif (sprite.baseId) {\r\n\t\t\t$array.remove(this.invalidPositions[sprite.baseId], sprite);\r\n\t\t}\r\n\r\n\t\t$array.remove(this.invalidPositions[\"noBase\"], sprite);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic addToInvalidLayouts(sprite: Container) {\r\n\t\tif (sprite.baseId) {\r\n\t\t\t$array.add(this.invalidLayouts[sprite.baseId], sprite);\r\n\t\t}\r\n\t\telse {\r\n\t\t\t$array.add(this.invalidLayouts[\"noBase\"], sprite);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic removeFromInvalidLayouts(sprite: Container) {\r\n\t\tif (sprite.baseId) {\r\n\t\t\t$array.remove(this.invalidLayouts[sprite.baseId], sprite);\r\n\t\t}\r\n\r\n\t\t$array.remove(this.invalidLayouts[\"noBase\"], sprite);\r\n\t}\r\n}\r\n\r\n/**\r\n * A singleton global instance of [[Registry]].\r\n *\r\n * @ignore Exclude from docs\r\n */\r\nexport let registry = new Registry();\r\n\r\n\r\n/**\r\n * Returns `true` if object is an instance of the class. It's the same as `instanceof` except it doesn't need to import the class.\r\n *\r\n * @param object Object\r\n * @param name Class name\r\n * @return Is instance of class\r\n */\r\nexport function is<A>(object: any, name: string): object is A {\r\n\tconst x = registry.registeredClasses[name];\r\n\treturn x != null && object instanceof x;\r\n}\r\n"]}
\No newline at end of file