
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
{"version":3,"file":"BreadcrumbBar.js","sourceRoot":"","sources":["../../../../../src/.internal/charts/hierarchy/BreadcrumbBar.ts"],"names":[],"mappings":"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","sourcesContent":["import type { DataItem } from \"../../core/render/Component\";\nimport type { IDisposer } from \"../../core/util/Disposer\";\nimport type { Hierarchy, IHierarchyDataItem } from \"./Hierarchy\";\n\nimport { HierarchyDefaultTheme } from \"./HierarchyDefaultTheme\";\nimport { Container, IContainerPrivate, IContainerSettings, IContainerEvents } from \"../../core/render/Container\";\nimport { Label } from \"../../core/render/Label\";\nimport { RoundedRectangle } from \"../../core/render/RoundedRectangle\";\nimport { Template } from \"../../core/util/Template\";\nimport { ListTemplate } from \"../../core/util/List\";\n\nimport * as $utils from \"../../core/util/Utils\";\n\nexport interface IBreadcrumbBarSettings extends IContainerSettings {\n\n\t/**\n\t * A hierarchy series bar will use to build current selection path.\n\t */\n\tseries: Hierarchy;\n\n}\n\nexport interface IBreadcrumbBarPrivate extends IContainerPrivate {\n}\n\nexport interface IBreadcrumbBarEvents extends IContainerEvents {\n}\n\n/**\n * Creates a breadcrumb navigation control.\n *\n * @see {@link https://www.amcharts.com/docs/v5/charts/hierarchy/breadcrumbs/} for more info\n * @important\n */\nexport class BreadcrumbBar extends Container {\n\n\t/**\n\t * @ignore\n\t */\n\tpublic makeLabel(dataItem: DataItem<IHierarchyDataItem>): Label {\n\t\tconst label = this.labels.make();\n\t\tlabel._setDataItem(dataItem);\n\t\tlabel.states.create(\"hover\", {});\n\t\tlabel.states.create(\"down\", {});\n\t\tlabel.events.on(\"click\", () => {\n\t\t\tconst series = this.get(\"series\");\n\t\t\tif (series) {\n\t\t\t\tseries.selectDataItem(dataItem);\n\t\t\t}\n\t\t});\n\n\t\tthis.labels.push(label);\n\n\t\treturn label;\n\t}\n\n\t/**\n\t * A list of labels in the bar.\n\t *\n\t * `labels.template` can be used to configure label apperance and behavior.\n\t *\n\t * @default new ListTemplate<Label>\n\t */\n\tpublic readonly labels: ListTemplate<Label> = new ListTemplate(\n\t\tTemplate.new({}),\n\t\t() => Label._new(this._root, {\n\t\t\tthemeTags: $utils.mergeTags(this.labels.template.get(\"themeTags\", []), [\"label\"]),\n\t\t\tbackground: RoundedRectangle.new(this._root, {\n\t\t\t\tthemeTags: [\"background\"]\n\t\t\t})\n\t\t}, [this.labels.template])\n\t);\n\n\tpublic static className: string = \"BreadcrumbBar\";\n\tpublic static classNames: Array<string> = Container.classNames.concat([BreadcrumbBar.className]);\n\n\tdeclare public _settings: IBreadcrumbBarSettings;\n\tdeclare public _privateSettings: IBreadcrumbBarPrivate;\n\tdeclare public _events: IBreadcrumbBarEvents;\n\n\tprotected _disposer: IDisposer | undefined;\n\n\tprotected _afterNew() {\n\t\tthis._defaultThemes.push(HierarchyDefaultTheme.new(this._root));\n\t\tthis._settings.themeTags = $utils.mergeTags(this._settings.themeTags, [\"breadcrumb\"]);\n\n\t\tsuper._afterNew();\n\t}\n\n\tpublic _changed() {\n\t\tsuper._changed();\n\t\tif (this.isDirty(\"series\")) {\n\t\t\tconst series = this.get(\"series\");\n\t\t\tconst previous = this._prevSettings.series;\n\t\t\tif (series != previous) {\n\t\t\t\tthis._disposer = series.events.on(\"dataitemselected\", (event) => {\n\t\t\t\t\tthis._handleDataItem(event.dataItem)\n\t\t\t\t})\n\t\t\t}\n\t\t\telse if (previous) {\n\t\t\t\tif (this._disposer) {\n\t\t\t\t\tthis._disposer.dispose();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis._handleDataItem(series.get(\"selectedDataItem\"));\n\t\t}\n\t}\n\n\tprotected _handleDataItem(dataItem: DataItem<IHierarchyDataItem> | undefined) {\n\t\tthis.set(\"minHeight\", this.height());\n\t\tthis.children.clear();\n\t\tthis.labels.clear();\n\n\t\tif (dataItem) {\n\t\t\tlet parent = dataItem;\n\n\t\t\twhile (parent) {\n\t\t\t\tlet label = this.makeLabel(parent);\n\t\t\t\tif (parent == dataItem) {\n\t\t\t\t\tlabel.addTag(\"last\");\n\t\t\t\t}\n\t\t\t\tthis.children.moveValue(label, 0);\n\t\t\t\tparent = parent.get(\"parent\");\n\t\t\t}\n\t\t}\n\t}\n}\n"]}