{"version":3,"file":"9974.f5c655cf10c175311ccb.js","mappings":"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","sources":["webpack://grafana/./public/app/angular/AngularLocationWrapper.ts","webpack://grafana/./public/app/angular/panel/panel_directive.ts","webpack://grafana/./public/app/angular/panel/panel_editor_tab.ts","webpack://grafana/./public/app/angular/panel/query_editor_row.ts","webpack://grafana/./public/app/angular/filters/filters.ts","webpack://grafana/./public/app/angular/services/alert_srv.ts","webpack://grafana/./public/app/angular/services/dynamic_directive_srv.ts","webpack://grafana/./public/app/angular/services/ng_react.ts","webpack://grafana/./public/app/angular/services/segment_srv.ts","webpack://grafana/./public/app/angular/services/popover_srv.ts","webpack://grafana/./public/app/angular/services/timer.ts","webpack://grafana/./public/app/angular/services/AngularLoader.ts","webpack://grafana/./public/app/angular/jquery_extended.ts","webpack://grafana/./public/app/angular/dropdown_typeahead.ts","webpack://grafana/./public/app/angular/autofill_event_fix.ts","webpack://grafana/./public/app/angular/metric_segment.ts","webpack://grafana/./public/app/angular/misc.ts","webpack://grafana/./public/app/angular/bsTooltip.ts","webpack://grafana/./public/app/angular/bsTypeahead.ts","webpack://grafana/./public/app/angular/ng_model_on_blur.ts","webpack://grafana/./public/app/angular/tags.ts","webpack://grafana/./public/app/angular/rebuild_on_change.ts","webpack://grafana/./public/app/angular/give_focus.ts","webpack://grafana/./public/app/angular/diff-view.ts","webpack://grafana/./public/app/angular/array_join.ts","webpack://grafana/./public/app/angular/react2angular.ts","webpack://grafana/./public/app/core/components/PageHeader/PageHeader.tsx","webpack://grafana/./public/app/core/components/Select/MetricSelect.tsx","webpack://grafana/./public/app/angular/angular_wrappers.ts","webpack://grafana/./public/app/angular/components/query_part_editor.ts","webpack://grafana/./public/app/angular/components/form_dropdown/form_dropdown.ts","webpack://grafana/./public/app/angular/components/scroll.ts","webpack://grafana/./public/app/angular/components/jsontree.ts","webpack://grafana/./public/app/angular/components/switch.ts","webpack://grafana/./public/app/angular/components/info_popover.ts","webpack://grafana/./public/app/angular/components/spectrum_picker.ts","webpack://grafana/./public/app/angular/components/code_editor/code_editor.ts","webpack://grafana/./public/app/angular/components/sql_part/sql_part_editor.ts","webpack://grafana/./public/app/angular/components/HttpSettingsCtrl.ts","webpack://grafana/./public/app/angular/components/TlsAuthSettingsCtrl.ts","webpack://grafana/./public/app/angular/components/plugin_component.ts","webpack://grafana/./public/app/angular/GrafanaCtrl.ts","webpack://grafana/./public/app/core/navigation/patch/RouteParamsProvider.ts","webpack://grafana/./public/app/core/navigation/patch/RouteProvider.ts","webpack://grafana/./public/app/angular/bridgeReactAngularRouting.ts","webpack://grafana/./public/app/angular/injectorMonkeyPatch.ts","webpack://grafana/./public/app/angular/services/UtilSrv.ts","webpack://grafana/./public/app/angular/services/annotations_srv.ts","webpack://grafana/./public/app/angular/registerComponents.ts","webpack://grafana/./public/app/angular/AngularApp.ts","webpack://grafana/./public/app/angular/panel/metrics_panel_ctrl.ts","webpack://grafana/./public/app/angular/panel/panel_ctrl.ts","webpack://grafana/./public/app/angular/panel/query_ctrl.ts","webpack://grafana/./public/app/angular/partials.ts","webpack://grafana/./public/app/angular/promiseToDigest.ts","webpack://grafana/./public/app/plugins/sdk.ts","webpack://grafana/./public/vendor/bootstrap/bootstrap.js","webpack://grafana/./public/vendor/tagsinput/bootstrap-tagsinput.js","webpack://grafana/../../opt/drone/yarncache/angular-bindonce-npm-0.3.1-63597abd34-6a9adeb527.zip/node_modules/angular-bindonce/bindonce.js","webpack://grafana/../../opt/drone/yarncache/angular-route-npm-1.8.3-c19e788834-efb1685d03.zip/node_modules/angular-route/angular-route.js","webpack://grafana/../../opt/drone/yarncache/angular-route-npm-1.8.3-c19e788834-efb1685d03.zip/node_modules/angular-route/index.js","webpack://grafana/../../opt/drone/yarncache/angular-sanitize-npm-1.8.3-cdd4180b10-b48d13f6cf.zip/node_modules/angular-sanitize/angular-sanitize.js","webpack://grafana/../../opt/drone/yarncache/angular-sanitize-npm-1.8.3-cdd4180b10-b48d13f6cf.zip/node_modules/angular-sanitize/index.js","webpack://grafana/../../opt/drone/yarncache/baron-npm-3.0.3-255b365962-5fd57232e2.zip/node_modules/baron/src/autoUpdate.js","webpack://grafana/../../opt/drone/yarncache/baron-npm-3.0.3-255b365962-5fd57232e2.zip/node_modules/baron/src/controls.js","webpack://grafana/../../opt/drone/yarncache/baron-npm-3.0.3-255b365962-5fd57232e2.zip/node_modules/baron/src/core.js","webpack://grafana/../../opt/drone/yarncache/baron-npm-3.0.3-255b365962-5fd57232e2.zip/node_modules/baron/src/fix.js","webpack://grafana/../../opt/drone/yarncache/baron-npm-3.0.3-255b365962-5fd57232e2.zip/node_modules/baron/src/log.js","webpack://grafana/../../opt/drone/yarncache/baron-npm-3.0.3-255b365962-5fd57232e2.zip/node_modules/baron/src/utils.js"],"sourcesContent":["import { deprecationWarning, urlUtil } from '@grafana/data';\nimport { locationSearchToObject, locationService, navigationLogger } from '@grafana/runtime';\n\n// Ref: https://github.com/angular/angular.js/blob/ae8e903edf88a83fedd116ae02c0628bf72b150c/src/ng/location.js#L5\nconst DEFAULT_PORTS: Record = { http: 80, https: 443, ftp: 21 };\n\nexport class AngularLocationWrapper {\n constructor() {\n this.absUrl = this.wrapInDeprecationWarning(this.absUrl);\n this.hash = this.wrapInDeprecationWarning(this.hash);\n this.host = this.wrapInDeprecationWarning(this.host);\n this.path = this.wrapInDeprecationWarning(this.path);\n this.port = this.wrapInDeprecationWarning(this.port, 'window.location');\n this.protocol = this.wrapInDeprecationWarning(this.protocol, 'window.location');\n this.replace = this.wrapInDeprecationWarning(this.replace);\n this.search = this.wrapInDeprecationWarning(this.search);\n this.state = this.wrapInDeprecationWarning(this.state);\n this.url = this.wrapInDeprecationWarning(this.url);\n }\n\n wrapInDeprecationWarning(fn: Function, replacement?: string) {\n let self = this;\n\n return function wrapper() {\n deprecationWarning('$location', fn.name, replacement || 'locationService');\n return fn.apply(self, arguments);\n };\n }\n\n absUrl(): string {\n return `${window.location.origin}${this.url()}`;\n }\n\n hash(newHash?: string | null) {\n navigationLogger('AngularLocationWrapper', false, 'Angular compat layer: hash');\n\n if (!newHash) {\n return locationService.getLocation().hash.slice(1);\n } else {\n throw new Error('AngularLocationWrapper method not implemented.');\n }\n }\n\n host(): string {\n return new URL(window.location.href).hostname;\n }\n\n path(pathname?: any) {\n navigationLogger('AngularLocationWrapper', false, 'Angular compat layer: path');\n\n const location = locationService.getLocation();\n\n if (pathname !== undefined && pathname !== null) {\n let parsedPath = String(pathname);\n parsedPath = parsedPath.startsWith('/') ? parsedPath : `/${parsedPath}`;\n const url = new URL(`${window.location.origin}${parsedPath}`);\n\n locationService.push({\n pathname: url.pathname,\n search: url.search.length > 0 ? url.search : location.search,\n hash: url.hash.length > 0 ? url.hash : location.hash,\n });\n return this;\n }\n\n if (pathname === null) {\n locationService.push('/');\n return this;\n }\n\n return location.pathname;\n }\n\n port(): number | null {\n const url = new URL(window.location.href);\n return parseInt(url.port, 10) || DEFAULT_PORTS[url.protocol] || null;\n }\n\n protocol(): string {\n return new URL(window.location.href).protocol.slice(0, -1);\n }\n\n replace() {\n throw new Error('AngularLocationWrapper method not implemented.');\n }\n\n search(search?: any, paramValue?: any) {\n navigationLogger('AngularLocationWrapper', false, 'Angular compat layer: search');\n if (!search) {\n return locationService.getSearchObject();\n }\n\n if (search && arguments.length > 1) {\n locationService.partial({\n [search]: paramValue,\n });\n\n return this;\n }\n\n if (search) {\n let newQuery;\n\n if (typeof search === 'object') {\n newQuery = { ...search };\n } else {\n newQuery = locationSearchToObject(search);\n }\n\n for (const key of Object.keys(newQuery)) {\n // removing params with null | undefined\n if (newQuery[key] === null || newQuery[key] === undefined) {\n delete newQuery[key];\n }\n }\n\n const updatedUrl = urlUtil.renderUrl(locationService.getLocation().pathname, newQuery);\n locationService.push(updatedUrl);\n }\n\n return this;\n }\n\n state(state?: any) {\n navigationLogger('AngularLocationWrapper', false, 'Angular compat layer: state');\n throw new Error('AngularLocationWrapper method not implemented.');\n }\n\n url(newUrl?: any) {\n navigationLogger('AngularLocationWrapper', false, 'Angular compat layer: url');\n\n if (newUrl !== undefined) {\n if (newUrl.startsWith('#')) {\n locationService.push({ ...locationService.getLocation(), hash: newUrl });\n } else if (newUrl.startsWith('?')) {\n locationService.push({ ...locationService.getLocation(), search: newUrl });\n } else if (newUrl.trim().length === 0) {\n locationService.push('/');\n } else {\n locationService.push(newUrl);\n }\n\n return locationService;\n }\n\n const location = locationService.getLocation();\n return `${location.pathname}${location.search}${location.hash}`;\n }\n}\n","// @ts-ignore\nimport baron from 'baron';\nimport { Subscription } from 'rxjs';\n\nimport { PanelEvents } from '@grafana/data';\nimport { RefreshEvent } from '@grafana/runtime';\nimport { coreModule } from 'app/angular/core_module';\nimport { PanelDirectiveReadyEvent, RenderEvent } from 'app/types/events';\n\nimport { PanelModel } from '../../features/dashboard/state';\n\nimport { PanelCtrl } from './panel_ctrl';\n\nconst panelTemplate = `\n \n`;\n\ncoreModule.directive('grafanaPanel', [\n '$timeout',\n ($timeout) => {\n return {\n restrict: 'E',\n template: panelTemplate,\n transclude: true,\n scope: { ctrl: '=' },\n link: (scope: any, elem) => {\n const ctrl: PanelCtrl = scope.ctrl;\n const panel: PanelModel = scope.ctrl.panel;\n const subs = new Subscription();\n\n let panelScrollbar: any;\n\n function resizeScrollableContent() {\n if (panelScrollbar) {\n panelScrollbar.update();\n }\n }\n\n ctrl.events.on(PanelEvents.componentDidMount, () => {\n if ((ctrl as any).__proto__.constructor.scrollable) {\n const scrollRootClass = 'baron baron__root baron__clipper panel-content--scrollable';\n const scrollerClass = 'baron__scroller';\n const scrollBarHTML = `\n
\n
\n
\n `;\n\n const scrollRoot = elem;\n const scroller = elem.find(':first').find(':first');\n\n scrollRoot.addClass(scrollRootClass);\n $(scrollBarHTML).appendTo(scrollRoot);\n scroller.addClass(scrollerClass);\n\n panelScrollbar = baron({\n root: scrollRoot[0],\n scroller: scroller[0],\n bar: '.baron__bar',\n barOnCls: '_scrollbar',\n scrollingCls: '_scrolling',\n });\n\n panelScrollbar.scroll();\n }\n });\n\n function updateDimensionsFromParentScope() {\n ctrl.height = scope.$parent.$parent.size.height;\n ctrl.width = scope.$parent.$parent.size.width;\n }\n\n updateDimensionsFromParentScope();\n\n // Pass PanelModel events down to angular controller event emitter\n subs.add(\n panel.events.subscribe(RefreshEvent, () => {\n updateDimensionsFromParentScope();\n ctrl.events.emit('refresh');\n })\n );\n\n subs.add(\n panel.events.subscribe(RenderEvent, (event) => {\n // this event originated from angular so no need to bubble it back\n if (event.payload?.fromAngular) {\n return;\n }\n\n updateDimensionsFromParentScope();\n\n $timeout(() => {\n resizeScrollableContent();\n ctrl.events.emit('render');\n });\n })\n );\n\n subs.add(\n ctrl.events.subscribe(RenderEvent, (event) => {\n // this event originated from angular so bubble it to react so the PanelChromeAngular can update the panel header alert state\n if (event.payload) {\n event.payload.fromAngular = true;\n panel.events.publish(event);\n }\n })\n );\n\n scope.$on('$destroy', () => {\n elem.off();\n\n // Remove PanelModel.event subs\n subs.unsubscribe();\n // Remove Angular controller event subs\n ctrl.events.emit(PanelEvents.panelTeardown);\n ctrl.events.removeAllListeners();\n\n if (panelScrollbar) {\n panelScrollbar.dispose();\n }\n });\n\n panel.events.publish(PanelDirectiveReadyEvent);\n },\n };\n },\n]);\n","import angular from 'angular';\n\nconst directiveModule = angular.module('grafana.directives');\nconst directiveCache: any = {};\n\ndirectiveModule.directive('panelEditorTab', ['dynamicDirectiveSrv', panelEditorTab]);\n\nfunction panelEditorTab(dynamicDirectiveSrv: any) {\n return dynamicDirectiveSrv.create({\n scope: {\n ctrl: '=',\n editorTab: '=',\n },\n directive: (scope: any) => {\n const pluginId = scope.ctrl.pluginId;\n const tabName = scope.editorTab.title\n .toLowerCase()\n .replace(' ', '-')\n .replace('&', '')\n .replace(' ', '')\n .replace(' ', '-');\n\n if (directiveCache[pluginId]) {\n if (directiveCache[pluginId][tabName]) {\n return directiveCache[pluginId][tabName];\n }\n } else {\n directiveCache[pluginId] = [];\n }\n\n const result = {\n fn: () => scope.editorTab.directiveFn(),\n name: `panel-editor-tab-${pluginId}${tabName}`,\n };\n\n directiveCache[pluginId][tabName] = result;\n\n return result;\n },\n });\n}\n","import { coreModule } from 'app/angular/core_module';\n\nexport class QueryRowCtrl {\n target: any;\n queryCtrl: any;\n panelCtrl: any;\n panel: any;\n hasTextEditMode = false;\n\n $onInit() {\n this.panelCtrl = this.queryCtrl.panelCtrl;\n this.target = this.queryCtrl.target;\n this.panel = this.panelCtrl.panel;\n\n if (this.hasTextEditMode && this.queryCtrl.toggleEditorMode) {\n // expose this function to react parent component\n this.panelCtrl.toggleEditorMode = this.queryCtrl.toggleEditorMode.bind(this.queryCtrl);\n }\n\n if (this.queryCtrl.getCollapsedText) {\n // expose this function to react parent component\n this.panelCtrl.getCollapsedText = this.queryCtrl.getCollapsedText.bind(this.queryCtrl);\n }\n }\n}\n\ncoreModule.directive('queryEditorRow', queryEditorRowDirective);\n\nfunction queryEditorRowDirective() {\n return {\n restrict: 'E',\n controller: QueryRowCtrl,\n bindToController: true,\n controllerAs: 'ctrl',\n templateUrl: 'public/app/angular/panel/partials/query_editor_row.html',\n transclude: true,\n scope: {\n queryCtrl: '=',\n canCollapse: '=',\n hasTextEditMode: '=',\n },\n };\n}\n","import angular from 'angular';\nimport { isArray, isNull, isObject, isUndefined } from 'lodash';\n\nimport { dateTime } from '@grafana/data';\nimport { getTemplateSrv, TemplateSrv } from 'app/features/templating/template_srv';\n\nimport coreModule from '../core_module';\n\ncoreModule.filter('stringSort', () => {\n return (input: any) => {\n return input.sort();\n };\n});\n\ncoreModule.filter('slice', () => {\n return (arr: any[], start: any, end: any) => {\n if (!isUndefined(arr)) {\n return arr.slice(start, end);\n }\n return arr;\n };\n});\n\ncoreModule.filter('stringify', () => {\n return (arr: any[]) => {\n if (isObject(arr) && !isArray(arr)) {\n return angular.toJson(arr);\n } else {\n return isNull(arr) ? null : arr.toString();\n }\n };\n});\n\ncoreModule.filter('moment', () => {\n return (date: string, mode: string) => {\n switch (mode) {\n case 'ago':\n return dateTime(date).fromNow();\n }\n return dateTime(date).fromNow();\n };\n});\n\nfunction interpolateTemplateVars(templateSrv: TemplateSrv = getTemplateSrv()) {\n const filterFunc: any = (text: string, scope: any) => {\n let scopedVars;\n if (scope.ctrl) {\n scopedVars = (scope.ctrl.panel || scope.ctrl.row).scopedVars;\n } else {\n scopedVars = scope.row.scopedVars;\n }\n\n return templateSrv.replaceWithText(text, scopedVars);\n };\n\n filterFunc.$stateful = true;\n return filterFunc;\n}\n\ncoreModule.filter('interpolateTemplateVars', interpolateTemplateVars);\nexport default {};\n","import coreModule from 'app/angular/core_module';\n\nexport class AlertSrv {\n constructor() {}\n\n set() {\n console.warn('old deprecated alert srv being used');\n }\n}\n\n// this is just added to not break old plugins that might be using it\ncoreModule.service('alertSrv', AlertSrv);\n","import angular from 'angular';\n\nimport coreModule from '../core_module';\n\nclass DynamicDirectiveSrv {\n static $inject = ['$compile'];\n\n constructor(private $compile: angular.ICompileService) {}\n\n addDirective(element: any, name: string, scope: any) {\n const child = angular.element(document.createElement(name));\n this.$compile(child)(scope);\n\n element.empty();\n element.append(child);\n }\n\n link(scope: any, elem: JQLite, attrs: any, options: any) {\n const directiveInfo = options.directive(scope);\n if (!directiveInfo || !directiveInfo.fn) {\n elem.empty();\n return;\n }\n\n if (!directiveInfo.fn.registered) {\n coreModule.directive(attrs.$normalize(directiveInfo.name), directiveInfo.fn);\n directiveInfo.fn.registered = true;\n }\n\n this.addDirective(elem, directiveInfo.name, scope);\n }\n\n create(options: any) {\n const directiveDef = {\n restrict: 'E',\n scope: options.scope,\n link: (scope: any, elem: JQLite, attrs: any) => {\n if (options.watchPath) {\n let childScope: any = null;\n scope.$watch(options.watchPath, () => {\n if (childScope) {\n childScope.$destroy();\n }\n childScope = scope.$new();\n this.link(childScope, elem, attrs, options);\n });\n } else {\n this.link(scope, elem, attrs, options);\n }\n },\n };\n\n return directiveDef;\n }\n}\n\ncoreModule.service('dynamicDirectiveSrv', DynamicDirectiveSrv);\n","//\n// This is using ng-react with this PR applied https://github.com/ngReact/ngReact/pull/199\n//\n\n// # ngReact\n// ### Use React Components inside of your Angular applications\n//\n// Composed of\n// - reactComponent (generic directive for delegating off to React Components)\n// - reactDirective (factory for creating specific directives that correspond to reactComponent directives)\n\nimport angular, { auto } from 'angular';\nimport { kebabCase } from 'lodash';\nimport React, { ComponentType } from 'react';\nimport { createRoot, Root } from 'react-dom/client';\n\n// get a react component from name (components can be an angular injectable e.g. value, factory or\n// available on window\nfunction getReactComponent(\n name: string | Function,\n $injector: auto.IInjectorService\n): ComponentType> {\n // if name is a function assume it is component and return it\n if (angular.isFunction(name)) {\n return name as unknown as ComponentType>;\n }\n\n // a React component name must be specified\n if (!name) {\n throw new Error('ReactComponent name attribute must be specified');\n }\n\n // ensure the specified React component is accessible, and fail fast if it's not\n let reactComponent;\n try {\n reactComponent = $injector.get(name);\n } catch (e) {}\n\n if (!reactComponent) {\n try {\n reactComponent = name.split('.').reduce((current, namePart) => {\n // @ts-ignore\n return current[namePart];\n }, window);\n } catch (e) {}\n }\n\n if (!reactComponent) {\n throw Error('Cannot find react component ' + name);\n }\n\n return reactComponent as unknown as ComponentType>;\n}\n\n// wraps a function with scope.$apply, if already applied just return\nfunction applied(fn: any, scope: any) {\n if (fn.wrappedInApply) {\n return fn;\n }\n // this had the equivalent of `eslint-disable-next-line prefer-arrow/prefer-arrow-functions`\n const wrapped: any = function () {\n const args = arguments;\n const phase = scope.$root.$$phase;\n if (phase === '$apply' || phase === '$digest') {\n return fn.apply(null, args);\n } else {\n return scope.$apply(() => {\n return fn.apply(null, args);\n });\n }\n };\n wrapped.wrappedInApply = true;\n return wrapped;\n}\n\n/**\n * wraps functions on obj in scope.$apply\n *\n * keeps backwards compatibility, as if propsConfig is not passed, it will\n * work as before, wrapping all functions and won't wrap only when specified.\n *\n * @version 0.4.1\n * @param obj react component props\n * @param scope current scope\n * @param propsConfig configuration object for all properties\n * @returns {Object} props with the functions wrapped in scope.$apply\n */\nfunction applyFunctions(obj: any, scope: any, propsConfig?: any): object {\n return Object.keys(obj || {}).reduce((prev, key) => {\n const value = obj[key];\n const config = (propsConfig || {})[key] || {};\n /**\n * wrap functions in a function that ensures they are scope.$applied\n * ensures that when function is called from a React component\n * the Angular digest cycle is run\n */\n // @ts-ignore\n prev[key] = angular.isFunction(value) && config.wrapApply !== false ? applied(value, scope) : value;\n\n return prev;\n }, {});\n}\n\n/**\n *\n * @param watchDepth (value of HTML watch-depth attribute)\n * @param scope (angular scope)\n *\n * Uses the watchDepth attribute to determine how to watch props on scope.\n * If watchDepth attribute is NOT reference or collection, watchDepth defaults to deep watching by value\n */\nfunction watchProps(watchDepth: string, scope: any, watchExpressions: any[], listener: any) {\n const supportsWatchCollection = angular.isFunction(scope.$watchCollection);\n const supportsWatchGroup = angular.isFunction(scope.$watchGroup);\n\n const watchGroupExpressions = [];\n\n for (const expr of watchExpressions) {\n const actualExpr = getPropExpression(expr);\n const exprWatchDepth = getPropWatchDepth(watchDepth, expr);\n\n // ignore empty expressions & expressions with functions\n if (!actualExpr || actualExpr.match(/\\(.*\\)/) || exprWatchDepth === 'one-time') {\n continue;\n }\n\n if (exprWatchDepth === 'collection' && supportsWatchCollection) {\n scope.$watchCollection(actualExpr, listener);\n } else if (exprWatchDepth === 'reference' && supportsWatchGroup) {\n watchGroupExpressions.push(actualExpr);\n } else {\n scope.$watch(actualExpr, listener, exprWatchDepth !== 'reference');\n }\n }\n\n if (watchDepth === 'one-time') {\n listener();\n }\n\n if (watchGroupExpressions.length) {\n scope.$watchGroup(watchGroupExpressions, listener);\n }\n}\n\n// render React component, with scope[attrs.props] being passed in as the component props\nfunction renderComponent(component: any, props: object, scope: any, root: Root) {\n scope.$evalAsync(() => {\n root.render(React.createElement(component, props));\n });\n}\n\n// get prop name from prop (string or array)\nfunction getPropName(prop: any) {\n return Array.isArray(prop) ? prop[0] : prop;\n}\n\n// get prop name from prop (string or array)\nfunction getPropConfig(prop: any) {\n return Array.isArray(prop) ? prop[1] : {};\n}\n\n// get prop expression from prop (string or array)\nfunction getPropExpression(prop: any) {\n return Array.isArray(prop) ? prop[0] : prop;\n}\n\n/**\n * Finds the normalized attribute knowing that React props accept any type of capitalization and it also handles\n * kabab case attributes which can be used in case the attribute would also be a standard html attribute and would be\n * evaluated by the browser as such.\n * @param attrs All attributes of the component.\n * @param propName Name of the prop that react component expects.\n */\nfunction findAttribute(attrs: object, propName: string): string {\n const index = Object.keys(attrs).find((attr: any) => {\n return attr.toLowerCase() === propName.toLowerCase() || kebabCase(attr) === kebabCase(propName);\n });\n // @ts-ignore\n return attrs[index];\n}\n\n// get watch depth of prop (string or array)\nfunction getPropWatchDepth(defaultWatch: string, prop: string | any[]) {\n const customWatchDepth = Array.isArray(prop) && angular.isObject(prop[1]) && prop[1].watchDepth;\n return customWatchDepth || defaultWatch;\n}\n\n// # reactComponent\n// Directive that allows React components to be used in Angular templates.\n//\n// Usage:\n// \n//\n// This requires that there exists an injectable or globally available 'Hello' React component.\n// The 'props' attribute is optional and is passed to the component.\n//\n// The following would would create and register the component:\n//\n// var module = angular.module('ace.react.components');\n// module.value('Hello', React.createClass({\n// render: function() {\n// return
Hello {this.props.name}
;\n// }\n// }));\n//\nconst reactComponent = ($injector: any): any => {\n return {\n restrict: 'E',\n replace: true,\n link: function (scope: any, elem: Element[], attrs: any) {\n const reactComponent = getReactComponent(attrs.name, $injector);\n\n const root = createRoot(elem[0]);\n const renderMyComponent = () => {\n const scopeProps = scope.$eval(attrs.props);\n const props = applyFunctions(scopeProps, scope);\n\n renderComponent(reactComponent, props, scope, root);\n };\n\n // If there are props, re-render when they change\n attrs.props ? watchProps(attrs.watchDepth, scope, [attrs.props], renderMyComponent) : renderMyComponent();\n\n // cleanup when scope is destroyed\n scope.$on('$destroy', () => {\n if (!attrs.onScopeDestroy) {\n root.unmount();\n } else {\n scope.$eval(attrs.onScopeDestroy, {\n unmountComponent: root.unmount.bind(this),\n });\n }\n });\n },\n };\n};\n\n// # reactDirective\n// Factory function to create directives for React components.\n//\n// With a component like this:\n//\n// var module = angular.module('ace.react.components');\n// module.value('Hello', React.createClass({\n// render: function() {\n// return
Hello {this.props.name}
;\n// }\n// }));\n//\n// A directive can be created and registered with:\n//\n// module.directive('hello', function(reactDirective) {\n// return reactDirective('Hello', ['name']);\n// });\n//\n// Where the first argument is the injectable or globally accessible name of the React component\n// and the second argument is an array of property names to be watched and passed to the React component\n// as props.\n//\n// This directive can then be used like this:\n//\n// \n//\nconst reactDirective = ($injector: auto.IInjectorService) => {\n return (reactComponentName: string, props: string[], conf: any, injectableProps: any) => {\n const directive = {\n restrict: 'E',\n replace: true,\n link: function (scope: any, elem: Element[], attrs: any) {\n const reactComponent = getReactComponent(reactComponentName, $injector);\n const root = createRoot(elem[0]);\n\n // if props is not defined, fall back to use the React component's propTypes if present\n props = props || Object.keys(reactComponent.propTypes || {});\n\n // for each of the properties, get their scope value and set it to scope.props\n const renderMyComponent = () => {\n let scopeProps: any = {};\n const config: any = {};\n\n props.forEach((prop) => {\n const propName = getPropName(prop);\n scopeProps[propName] = scope.$eval(findAttribute(attrs, propName));\n config[propName] = getPropConfig(prop);\n });\n\n scopeProps = applyFunctions(scopeProps, scope, config);\n scopeProps = angular.extend({}, scopeProps, injectableProps);\n renderComponent(reactComponent, scopeProps, scope, root);\n };\n\n // watch each property name and trigger an update whenever something changes,\n // to update scope.props with new values\n const propExpressions = props.map((prop) => {\n return Array.isArray(prop)\n ? [findAttribute(attrs, prop[0]), getPropConfig(prop)]\n : findAttribute(attrs, prop);\n });\n\n // If we don't have any props, then our watch statement won't fire.\n props.length ? watchProps(attrs.watchDepth, scope, propExpressions, renderMyComponent) : renderMyComponent();\n\n // cleanup when scope is destroyed\n scope.$on('$destroy', () => {\n if (!attrs.onScopeDestroy) {\n root.unmount();\n } else {\n scope.$eval(attrs.onScopeDestroy, {\n unmountComponent: root.unmount.bind(this),\n });\n }\n });\n },\n };\n return angular.extend(directive, conf);\n };\n};\n\nconst ngModule = angular.module('react', []);\nngModule.directive('reactComponent', ['$injector', reactComponent]);\nngModule.factory('reactDirective', ['$injector', reactDirective]);\n","import { each, isString, map } from 'lodash';\n\nimport coreModule from '../core_module';\n\ncoreModule.service('uiSegmentSrv', ['$sce', 'templateSrv', uiSegmentSrv]);\n\nexport function uiSegmentSrv(this: any, $sce: any, templateSrv: any) {\n const self = this;\n\n class MetricSegment {\n value: string;\n html: any;\n type: any;\n expandable?: boolean;\n text?: string;\n cssClass?: string;\n fake?: boolean;\n custom?: boolean;\n selectMode?: any;\n\n constructor(options: any) {\n if (options === '*' || options.value === '*') {\n this.value = '*';\n this.html = $sce.trustAsHtml('');\n this.type = options.type;\n this.expandable = true;\n return;\n }\n\n if (isString(options)) {\n this.value = options;\n this.html = $sce.trustAsHtml(templateSrv.highlightVariablesAsHtml(this.value));\n return;\n }\n\n // temp hack to work around legacy inconsistency in segment model\n this.text = options.value;\n\n this.cssClass = options.cssClass;\n this.custom = options.custom;\n this.type = options.type;\n this.fake = options.fake;\n this.value = options.value;\n this.selectMode = options.selectMode;\n this.expandable = options.expandable;\n this.html = options.html || $sce.trustAsHtml(templateSrv.highlightVariablesAsHtml(this.value));\n }\n }\n\n this.getSegmentForValue = function (value: string, fallbackText: string) {\n if (value) {\n return this.newSegment(value);\n } else {\n return this.newSegment({ value: fallbackText, fake: true });\n }\n };\n\n this.newSelectMeasurement = () => {\n return new MetricSegment({ value: 'select measurement', fake: true });\n };\n\n this.newFake = (text: string, type: string, cssClass: string) => {\n return new MetricSegment({ value: text, fake: true, type: type, cssClass: cssClass });\n };\n\n this.newSegment = (options: any) => {\n return new MetricSegment(options);\n };\n\n this.newKey = (key: string) => {\n return new MetricSegment({ value: key, type: 'key', cssClass: 'query-segment-key' });\n };\n\n this.newKeyValue = (value: string) => {\n return new MetricSegment({ value: value, type: 'value', cssClass: 'query-segment-value' });\n };\n\n this.newCondition = (condition: string) => {\n return new MetricSegment({ value: condition, type: 'condition', cssClass: 'query-keyword' });\n };\n\n this.newOperator = (op: string) => {\n return new MetricSegment({ value: op, type: 'operator', cssClass: 'query-segment-operator' });\n };\n\n this.newOperators = (ops: string[]) => {\n return map(ops, (op) => {\n return new MetricSegment({ value: op, type: 'operator', cssClass: 'query-segment-operator' });\n });\n };\n\n this.transformToSegments = (addTemplateVars: boolean, variableTypeFilter: string) => {\n return (results: any[]) => {\n const segments = map(results, (segment) => {\n return self.newSegment({ value: segment.text, expandable: segment.expandable });\n });\n\n if (addTemplateVars) {\n each(templateSrv.getVariables(), (variable) => {\n if (variableTypeFilter === void 0 || variableTypeFilter === variable.type) {\n segments.unshift(self.newSegment({ type: 'value', value: '$' + variable.name, expandable: true }));\n }\n });\n }\n\n return segments;\n };\n };\n\n this.newSelectMetric = () => {\n return new MetricSegment({ value: 'select metric', fake: true });\n };\n\n this.newPlusButton = () => {\n return new MetricSegment({\n fake: true,\n html: '',\n type: 'plus-button',\n cssClass: 'query-part',\n });\n };\n}\n","import { extend } from 'lodash';\n// @ts-ignore\nimport Drop from 'tether-drop';\n\nimport { GrafanaRootScope } from 'app/angular/GrafanaCtrl';\nimport coreModule from 'app/angular/core_module';\n\ncoreModule.service('popoverSrv', ['$compile', '$rootScope', '$timeout', popoverSrv]);\n\nfunction popoverSrv(this: any, $compile: any, $rootScope: GrafanaRootScope, $timeout: any) {\n let openDrop: any = null;\n\n this.close = () => {\n if (openDrop) {\n openDrop.close();\n }\n };\n\n this.show = (options: any) => {\n if (openDrop) {\n openDrop.close();\n openDrop = null;\n }\n\n const scope = extend($rootScope.$new(true), options.model);\n let drop: any;\n\n const cleanUp = () => {\n setTimeout(() => {\n scope.$destroy();\n\n if (drop.tether) {\n drop.destroy();\n }\n\n if (options.onClose) {\n options.onClose();\n }\n });\n\n openDrop = null;\n };\n\n scope.dismiss = () => {\n drop.close();\n };\n\n const contentElement = document.createElement('div');\n contentElement.innerHTML = options.template;\n\n $compile(contentElement)(scope);\n\n $timeout(() => {\n drop = new Drop({\n target: options.element,\n content: contentElement,\n position: options.position,\n classes: options.classNames || 'drop-popover',\n openOn: options.openOn,\n hoverCloseDelay: 200,\n tetherOptions: {\n constraints: [{ to: 'scrollParent', attachment: 'together' }],\n },\n });\n\n drop.on('close', () => {\n cleanUp();\n });\n\n openDrop = drop;\n openDrop.open();\n }, 100);\n\n // return close function\n return () => {\n if (drop) {\n drop.close();\n }\n };\n };\n}\n","import { ITimeoutService } from 'angular';\nimport { without, each } from 'lodash';\n\nimport coreModule from 'app/angular/core_module';\n\n// This service really just tracks a list of $timeout promises to give us a\n// method for canceling them all when we need to\nexport class Timer {\n timers: Array> = [];\n\n static $inject = ['$timeout'];\n\n constructor(private $timeout: ITimeoutService) {}\n\n register(promise: angular.IPromise) {\n this.timers.push(promise);\n return promise;\n }\n\n cancel(promise: angular.IPromise) {\n this.timers = without(this.timers, promise);\n this.$timeout.cancel(promise);\n }\n\n cancelAll() {\n each(this.timers, (t) => {\n this.$timeout.cancel(t);\n });\n this.timers = [];\n }\n}\n\ncoreModule.service('timer', Timer);\n","import angular from 'angular';\nimport { assign } from 'lodash';\n\nimport { AngularComponent, AngularLoader as AngularLoaderInterface } from '@grafana/runtime';\nimport { GrafanaRootScope } from 'app/angular/GrafanaCtrl';\nimport coreModule from 'app/angular/core_module';\n\nexport class AngularLoader implements AngularLoaderInterface {\n static $inject = ['$compile', '$rootScope'];\n\n constructor(private $compile: any, private $rootScope: GrafanaRootScope) {}\n\n load(elem: any, scopeProps: any, template: string): AngularComponent {\n const scope = this.$rootScope.$new();\n\n assign(scope, scopeProps);\n\n const compiledElem = this.$compile(template)(scope);\n const rootNode = angular.element(elem);\n rootNode.append(compiledElem);\n\n return {\n destroy: () => {\n scope.$destroy();\n compiledElem.remove();\n },\n digest: () => {\n if (!scope.$$phase) {\n scope.$digest();\n }\n },\n getScope: () => {\n return scope;\n },\n };\n }\n}\n\ncoreModule.service('angularLoader', AngularLoader);\n","import angular from 'angular';\nimport $ from 'jquery';\nimport { extend } from 'lodash';\n\nconst $win = $(window);\n\n$.fn.place_tt = (() => {\n const defaults = {\n offset: 5,\n };\n\n return function (this: any, x: number, y: number, opts: any) {\n opts = $.extend(true, {}, defaults, opts);\n\n return this.each(() => {\n const $tooltip = $(this);\n let width, height;\n\n $tooltip.addClass('grafana-tooltip');\n\n $('#tooltip').remove();\n $tooltip.appendTo(document.body);\n\n if (opts.compile) {\n angular\n .element(document)\n .injector()\n .invoke([\n '$compile',\n '$rootScope',\n ($compile, $rootScope) => {\n const tmpScope = $rootScope.$new(true);\n extend(tmpScope, opts.scopeData);\n\n $compile($tooltip)(tmpScope);\n tmpScope.$digest();\n tmpScope.$destroy();\n },\n ]);\n }\n\n width = $tooltip.outerWidth(true)!;\n height = $tooltip.outerHeight(true)!;\n\n const left = x + opts.offset + width > $win.width()! ? x - opts.offset - width : x + opts.offset;\n const top = y + opts.offset + height > $win.height()! ? y - opts.offset - height : y + opts.offset;\n\n $tooltip.css('left', left > 0 ? left : 0);\n $tooltip.css('top', top > 0 ? top : 0);\n });\n };\n})();\n","import $ from 'jquery';\nimport { each, reduce } from 'lodash';\n\nimport coreModule from './core_module';\n\nexport function dropdownTypeahead($compile: any) {\n const inputTemplate =\n '';\n\n const buttonTemplate =\n '';\n\n return {\n scope: {\n menuItems: '=dropdownTypeahead',\n dropdownTypeaheadOnSelect: '&dropdownTypeaheadOnSelect',\n model: '=ngModel',\n },\n link: ($scope: any, elem: any, attrs: any) => {\n const $input = $(inputTemplate);\n const $button = $(buttonTemplate);\n $input.appendTo(elem);\n $button.appendTo(elem);\n\n if (attrs.linkText) {\n $button.html(attrs.linkText);\n }\n\n if (attrs.ngModel) {\n $scope.$watch('model', (newValue: any) => {\n each($scope.menuItems, (item) => {\n each(item.submenu, (subItem) => {\n if (subItem.value === newValue) {\n $button.html(subItem.text);\n }\n });\n });\n });\n }\n\n const typeaheadValues = reduce(\n $scope.menuItems,\n (memo: any[], value, index) => {\n if (!value.submenu) {\n value.click = 'menuItemSelected(' + index + ')';\n memo.push(value.text);\n } else {\n each(value.submenu, (item, subIndex) => {\n item.click = 'menuItemSelected(' + index + ',' + subIndex + ')';\n memo.push(value.text + ' ' + item.text);\n });\n }\n return memo;\n },\n []\n );\n\n const closeDropdownMenu = () => {\n $input.hide();\n $input.val('');\n $button.show();\n $button.focus();\n elem.removeClass('open');\n };\n\n $scope.menuItemSelected = (index: number, subIndex: number) => {\n const menuItem = $scope.menuItems[index];\n const payload: any = { $item: menuItem };\n if (menuItem.submenu && subIndex !== void 0) {\n payload.$subItem = menuItem.submenu[subIndex];\n }\n $scope.dropdownTypeaheadOnSelect(payload);\n closeDropdownMenu();\n };\n\n $input.attr('data-provide', 'typeahead');\n $input.typeahead({\n source: typeaheadValues,\n minLength: 1,\n items: 10,\n updater: (value: string) => {\n const result: any = {};\n each($scope.menuItems, (menuItem) => {\n each(menuItem.submenu, (submenuItem) => {\n if (value === menuItem.text + ' ' + submenuItem.text) {\n result.$subItem = submenuItem;\n result.$item = menuItem;\n }\n });\n });\n\n if (result.$item) {\n $scope.$apply(() => {\n $scope.dropdownTypeaheadOnSelect(result);\n });\n }\n\n $input.trigger('blur');\n return '';\n },\n });\n\n $button.click(() => {\n $button.hide();\n $input.show();\n $input.focus();\n });\n\n $input.keyup(() => {\n elem.toggleClass('open', $input.val() === '');\n });\n\n elem.mousedown((evt: Event) => {\n evt.preventDefault();\n });\n\n $input.blur(() => {\n $input.hide();\n $input.val('');\n $button.show();\n $button.focus();\n // clicking the function dropdown menu won't\n // work if you remove class at once\n setTimeout(() => {\n elem.removeClass('open');\n }, 200);\n });\n\n $compile(elem.contents())($scope);\n },\n };\n}\n\nexport function dropdownTypeahead2($compile: any) {\n const inputTemplate =\n '';\n\n const buttonTemplate =\n '';\n\n return {\n scope: {\n menuItems: '=dropdownTypeahead2',\n dropdownTypeaheadOnSelect: '&dropdownTypeaheadOnSelect',\n model: '=ngModel',\n buttonTemplateClass: '@',\n },\n link: ($scope: any, elem: any, attrs: any) => {\n const $input = $(inputTemplate);\n\n if (!$scope.buttonTemplateClass) {\n $scope.buttonTemplateClass = 'gf-form-input';\n }\n\n const $button = $(buttonTemplate);\n const timeoutId = {\n blur: null as any,\n };\n $input.appendTo(elem);\n $button.appendTo(elem);\n\n if (attrs.linkText) {\n $button.html(attrs.linkText);\n }\n\n if (attrs.ngModel) {\n $scope.$watch('model', (newValue: any) => {\n each($scope.menuItems, (item) => {\n each(item.submenu, (subItem) => {\n if (subItem.value === newValue) {\n $button.html(subItem.text);\n }\n });\n });\n });\n }\n\n const typeaheadValues = reduce(\n $scope.menuItems,\n (memo: any[], value, index) => {\n if (!value.submenu) {\n value.click = 'menuItemSelected(' + index + ')';\n memo.push(value.text);\n } else {\n each(value.submenu, (item, subIndex) => {\n item.click = 'menuItemSelected(' + index + ',' + subIndex + ')';\n memo.push(value.text + ' ' + item.text);\n });\n }\n return memo;\n },\n []\n );\n\n const closeDropdownMenu = () => {\n $input.hide();\n $input.val('');\n $button.show();\n $button.focus();\n elem.removeClass('open');\n };\n\n $scope.menuItemSelected = (index: number, subIndex: number) => {\n const menuItem = $scope.menuItems[index];\n const payload: any = { $item: menuItem };\n if (menuItem.submenu && subIndex !== void 0) {\n payload.$subItem = menuItem.submenu[subIndex];\n }\n $scope.dropdownTypeaheadOnSelect(payload);\n closeDropdownMenu();\n };\n\n $input.attr('data-provide', 'typeahead');\n $input.typeahead({\n source: typeaheadValues,\n minLength: 1,\n items: 10,\n updater: (value: string) => {\n const result: any = {};\n each($scope.menuItems, (menuItem) => {\n each(menuItem.submenu, (submenuItem) => {\n if (value === menuItem.text + ' ' + submenuItem.text) {\n result.$subItem = submenuItem;\n result.$item = menuItem;\n }\n });\n });\n\n if (result.$item) {\n $scope.$apply(() => {\n $scope.dropdownTypeaheadOnSelect(result);\n });\n }\n\n $input.trigger('blur');\n return '';\n },\n });\n\n $button.click(() => {\n $button.hide();\n $input.show();\n $input.focus();\n });\n\n $input.keyup(() => {\n elem.toggleClass('open', $input.val() === '');\n });\n\n elem.mousedown((evt: Event) => {\n evt.preventDefault();\n timeoutId.blur = null;\n });\n\n $input.blur(() => {\n timeoutId.blur = setTimeout(() => {\n closeDropdownMenu();\n }, 1);\n });\n\n $compile(elem.contents())($scope);\n },\n };\n}\n\ncoreModule.directive('dropdownTypeahead', ['$compile', dropdownTypeahead]);\ncoreModule.directive('dropdownTypeahead2', ['$compile', dropdownTypeahead2]);\n","import coreModule from './core_module';\n\nexport function autofillEventFix($compile: any) {\n return {\n link: ($scope: any, elem: any) => {\n const input = elem[0];\n const dispatchChangeEvent = () => {\n const event = new Event('change');\n return input.dispatchEvent(event);\n };\n const onAnimationStart = ({ animationName }: AnimationEvent) => {\n switch (animationName) {\n case 'onAutoFillStart':\n return dispatchChangeEvent();\n case 'onAutoFillCancel':\n return dispatchChangeEvent();\n }\n return null;\n };\n\n // const onChange = (evt: Event) => console.log(evt);\n\n input.addEventListener('animationstart', onAnimationStart);\n // input.addEventListener('change', onChange);\n\n $scope.$on('$destroy', () => {\n input.removeEventListener('animationstart', onAnimationStart);\n // input.removeEventListener('change', onChange);\n });\n },\n };\n}\n\ncoreModule.directive('autofillEventFix', ['$compile', autofillEventFix]);\n","import $ from 'jquery';\nimport { debounce, find, indexOf, map, escape, unescape } from 'lodash';\n\nimport { TemplateSrv } from 'app/features/templating/template_srv';\n\nimport coreModule from './core_module';\n\nexport function metricSegment($compile: any, $sce: any, templateSrv: TemplateSrv) {\n const inputTemplate =\n '';\n\n const linkTemplate =\n '';\n\n const selectTemplate =\n '';\n\n return {\n scope: {\n segment: '=',\n getOptions: '&',\n onChange: '&',\n debounce: '@',\n },\n link: ($scope: any, elem: any) => {\n const $input = $(inputTemplate);\n const segment = $scope.segment;\n const $button = $(segment.selectMode ? selectTemplate : linkTemplate);\n let options = null;\n let cancelBlur: any = null;\n let linkMode = true;\n const debounceLookup = $scope.debounce;\n\n $input.appendTo(elem);\n $button.appendTo(elem);\n\n $scope.updateVariableValue = (value: string) => {\n if (value === '' || segment.value === value) {\n return;\n }\n\n $scope.$apply(() => {\n const selected: any = find($scope.altSegments, { value: value });\n if (selected) {\n segment.value = selected.value;\n segment.html = selected.html || $sce.trustAsHtml(templateSrv.highlightVariablesAsHtml(selected.value));\n segment.fake = false;\n segment.expandable = selected.expandable;\n\n if (selected.type) {\n segment.type = selected.type;\n }\n } else if (segment.custom !== 'false') {\n segment.value = value;\n segment.html = $sce.trustAsHtml(templateSrv.highlightVariablesAsHtml(value));\n segment.expandable = true;\n segment.fake = false;\n }\n\n $scope.onChange();\n });\n };\n\n $scope.switchToLink = (fromClick: boolean) => {\n if (linkMode && !fromClick) {\n return;\n }\n\n clearTimeout(cancelBlur);\n cancelBlur = null;\n linkMode = true;\n $input.hide();\n $button.show();\n $scope.updateVariableValue($input.val());\n };\n\n $scope.inputBlur = () => {\n // happens long before the click event on the typeahead options\n // need to have long delay because the blur\n cancelBlur = setTimeout($scope.switchToLink, 200);\n };\n\n $scope.source = (query: string, callback: any) => {\n $scope.$apply(() => {\n $scope.getOptions({ $query: query }).then((altSegments: any) => {\n $scope.altSegments = altSegments;\n options = map($scope.altSegments, (alt) => {\n return escape(alt.value);\n });\n\n // add custom values\n if (segment.custom !== 'false') {\n if (!segment.fake && indexOf(options, segment.value) === -1) {\n options.unshift(escape(segment.value));\n }\n }\n\n callback(options);\n });\n });\n };\n\n $scope.updater = (value: string) => {\n value = unescape(value);\n if (value === segment.value) {\n clearTimeout(cancelBlur);\n $input.focus();\n return value;\n }\n\n $input.val(value);\n $scope.switchToLink(true);\n\n return value;\n };\n\n $scope.matcher = function (item: string) {\n if (linkMode) {\n return false;\n }\n let str = this.query;\n if (str[0] === '/') {\n str = str.substring(1);\n }\n if (str[str.length - 1] === '/') {\n str = str.substring(0, str.length - 1);\n }\n try {\n return item.toLowerCase().match(str.toLowerCase());\n } catch (e) {\n return false;\n }\n };\n\n $input.attr('data-provide', 'typeahead');\n $input.typeahead({\n source: $scope.source,\n minLength: 0,\n items: 10000,\n updater: $scope.updater,\n matcher: $scope.matcher,\n });\n\n const typeahead = $input.data('typeahead');\n typeahead.lookup = function () {\n this.query = this.$element.val() || '';\n const items = this.source(this.query, $.proxy(this.process, this));\n return items ? this.process(items) : items;\n };\n\n if (debounceLookup) {\n typeahead.lookup = debounce(typeahead.lookup, 500, { leading: true });\n }\n\n $button.keydown((evt) => {\n // trigger typeahead on down arrow or enter key\n if (evt.keyCode === 40 || evt.keyCode === 13) {\n $button.click();\n }\n });\n\n $button.click(() => {\n options = null;\n $input.css('width', Math.max($button.width()!, 80) + 16 + 'px');\n\n $button.hide();\n $input.show();\n $input.focus();\n\n linkMode = false;\n\n const typeahead = $input.data('typeahead');\n if (typeahead) {\n $input.val('');\n typeahead.lookup();\n }\n });\n\n $input.blur($scope.inputBlur);\n\n $compile(elem.contents())($scope);\n },\n };\n}\n\nexport function metricSegmentModel(uiSegmentSrv: any) {\n return {\n template:\n '',\n restrict: 'E',\n scope: {\n property: '=',\n options: '=',\n getOptions: '&',\n onChange: '&',\n },\n link: {\n pre: function postLink($scope: any, elem: any, attrs: any) {\n let cachedOptions: any;\n\n $scope.valueToSegment = (value: any) => {\n const option: any = find($scope.options, { value: value });\n const segment = {\n cssClass: attrs.cssClass,\n custom: attrs.custom,\n value: option ? option.text : value,\n selectMode: attrs.selectMode,\n };\n\n return uiSegmentSrv.newSegment(segment);\n };\n\n $scope.getOptionsInternal = () => {\n if ($scope.options) {\n cachedOptions = $scope.options;\n return Promise.resolve(\n map($scope.options, (option) => {\n return { value: option.text };\n })\n );\n } else {\n return $scope.getOptions().then((options: any) => {\n cachedOptions = options;\n return map(options, (option) => {\n if (option.html) {\n return option;\n }\n return { value: option.text };\n });\n });\n }\n };\n\n $scope.onSegmentChange = () => {\n if (cachedOptions) {\n const option: any = find(cachedOptions, { text: $scope.segment.value });\n if (option && option.value !== $scope.property) {\n $scope.property = option.value;\n } else if (attrs.custom !== 'false') {\n $scope.property = $scope.segment.value;\n }\n } else {\n $scope.property = $scope.segment.value;\n }\n\n // needs to call this after digest so\n // property is synced with outerscope\n $scope.$$postDigest(() => {\n $scope.$apply(() => {\n $scope.onChange();\n });\n });\n };\n\n $scope.segment = $scope.valueToSegment($scope.property);\n },\n },\n };\n}\n\ncoreModule.directive('metricSegment', ['$compile', '$sce', 'templateSrv', metricSegment]);\ncoreModule.directive('metricSegmentModel', ['uiSegmentSrv', metricSegmentModel]);\n","import angular from 'angular';\n\nimport coreModule from './core_module';\n\ncoreModule.directive('tip', ['$compile', tip]);\n\nfunction tip($compile: any) {\n return {\n restrict: 'E',\n link: (scope: any, elem: any, attrs: any) => {\n let _t =\n '&]/g, (m: string) => '&#' + m.charCodeAt(0) + ';') +\n '\\'\">';\n elem.replaceWith($compile(angular.element(_t))(scope));\n },\n };\n}\n\ncoreModule.directive('compile', ['$compile', compile]);\n\nfunction compile($compile: any) {\n return {\n restrict: 'A',\n link: (scope: any, element: any, attrs: any) => {\n scope.$watch(\n (scope: any) => {\n return scope.$eval(attrs.compile);\n },\n (value: any) => {\n element.html(value);\n $compile(element.contents())(scope);\n }\n );\n },\n };\n}\n\ncoreModule.directive('watchChange', watchChange);\n\nfunction watchChange() {\n return {\n scope: { onchange: '&watchChange' },\n link: (scope: any, element: any) => {\n element.on('input', () => {\n scope.$apply(() => {\n scope.onchange({ inputValue: element.val() });\n });\n });\n },\n };\n}\n\ncoreModule.directive('editorOptBool', ['$compile', editorOptBool]);\n\nfunction editorOptBool($compile: any) {\n return {\n restrict: 'E',\n link: (scope: any, elem: any, attrs: any) => {\n const ngchange = attrs.change ? ' ng-change=\"' + attrs.change + '\"' : '';\n const tip = attrs.tip ? ' ' + attrs.tip + '' : '';\n const showIf = attrs.showIf ? ' ng-show=\"' + attrs.showIf + '\" ' : '';\n\n const template =\n '
' +\n ' ' +\n '' +\n ' ';\n elem.replaceWith($compile(angular.element(template))(scope));\n },\n };\n}\n\ncoreModule.directive('editorCheckbox', ['$compile, $interpolate', editorCheckbox]);\n\nfunction editorCheckbox($compile: any, $interpolate: any) {\n return {\n restrict: 'E',\n link: (scope: any, elem: any, attrs: any) => {\n const text = $interpolate(attrs.text)(scope);\n const model = $interpolate(attrs.model)(scope);\n const ngchange = attrs.change ? ' ng-change=\"' + attrs.change + '\"' : '';\n const tip = attrs.tip ? ' ' + attrs.tip + '' : '';\n const label = '';\n\n let template =\n '' +\n ' ';\n\n template = template + label;\n elem.addClass('gf-form-checkbox');\n elem.html($compile(angular.element(template))(scope));\n },\n };\n}\n\ncoreModule.directive('gfDropdown', ['$parse', '$compile', '$timeout', gfDropdown]);\n\nfunction gfDropdown($parse: any, $compile: any, $timeout: any) {\n function buildTemplate(items: any, placement?: any) {\n const upclass = placement === 'top' ? 'dropup' : '';\n const ul = ['
    ', '
'];\n\n for (let index = 0; index < items.length; index++) {\n const item = items[index];\n\n if (item.divider) {\n ul.splice(index + 1, 0, '
  • ');\n continue;\n }\n\n let li =\n '' +\n '' +\n (item.text || '') +\n '';\n\n if (item.submenu && item.submenu.length) {\n li += buildTemplate(item.submenu).join('\\n');\n }\n\n li += '';\n ul.splice(index + 1, 0, li);\n }\n\n return ul;\n }\n\n return {\n restrict: 'EA',\n scope: true,\n link: function postLink(scope: any, iElement: any, iAttrs: any) {\n const getter = $parse(iAttrs.gfDropdown),\n items = getter(scope);\n $timeout(() => {\n const placement = iElement.data('placement');\n const dropdown = angular.element(buildTemplate(items, placement).join(''));\n dropdown.insertAfter(iElement);\n $compile(iElement.next('ul.dropdown-menu'))(scope);\n });\n\n iElement.addClass('dropdown-toggle').attr('data-toggle', 'dropdown');\n },\n };\n}\n","import angular from 'angular';\nimport $ from 'jquery';\n\nimport coreModule from './core_module';\n\ncoreModule.directive('bsTooltip', [\n '$parse',\n '$compile',\n function ($parse: any, $compile: any) {\n return {\n restrict: 'A',\n scope: true,\n link: function postLink(scope: any, element: any, attrs: any) {\n let getter = $parse(attrs.bsTooltip),\n value = getter(scope);\n scope.$watch(attrs.bsTooltip, function (newValue: any, oldValue: any) {\n if (newValue !== oldValue) {\n value = newValue;\n }\n });\n // Grafana change, always hide other tooltips\n if (true) {\n element.on('show', function (ev: any) {\n $('.tooltip.in').each(function () {\n const $this = $(this),\n tooltip = $this.data('tooltip');\n if (tooltip && !tooltip.$element.is(element)) {\n $this.tooltip('hide');\n }\n });\n });\n }\n element.tooltip({\n title: function () {\n return angular.isFunction(value) ? value.apply(null, arguments) : value;\n },\n html: true,\n container: 'body', // Grafana change\n });\n const tooltip = element.data('tooltip');\n tooltip.show = function () {\n const r = $.fn.tooltip.Constructor.prototype.show.apply(this, arguments);\n this.tip().data('tooltip', this);\n return r;\n };\n scope._tooltip = function (event: any) {\n element.tooltip(event);\n };\n scope.hide = function () {\n element.tooltip('hide');\n };\n scope.show = function () {\n element.tooltip('show');\n };\n scope.dismiss = scope.hide;\n },\n };\n },\n]);\n","import angular from 'angular';\nimport $ from 'jquery';\nimport { isFunction } from 'lodash';\n\nimport coreModule from './core_module';\n\ncoreModule.directive('bsTypeahead', [\n '$parse',\n function ($parse: any) {\n return {\n restrict: 'A',\n require: '?ngModel',\n link: function postLink(scope: any, element: any, attrs: any, controller: any) {\n let getter = $parse(attrs.bsTypeahead),\n value = getter(scope);\n scope.$watch(attrs.bsTypeahead, function (newValue: any, oldValue: any) {\n if (newValue !== oldValue) {\n value = newValue;\n }\n });\n element.attr('data-provide', 'typeahead');\n element.typeahead({\n source: function () {\n return angular.isFunction(value) ? value.apply(null, arguments) : value;\n },\n minLength: attrs.minLength || 1,\n items: attrs.item,\n updater: function (value: any) {\n if (controller) {\n scope.$apply(function () {\n controller.$setViewValue(value);\n });\n }\n scope.$emit('typeahead-updated', value);\n return value;\n },\n });\n const typeahead = element.data('typeahead');\n typeahead.lookup = function () {\n let items;\n this.query = this.$element.val() || '';\n if (this.query.length < this.options.minLength) {\n return this.shown ? this.hide() : this;\n }\n items = isFunction(this.source) ? this.source(this.query, $.proxy(this.process, this)) : this.source;\n return items ? this.process(items) : this;\n };\n if (!!attrs.matchAll) {\n typeahead.matcher = function () {\n return true;\n };\n }\n if (attrs.minLength === '0') {\n setTimeout(function () {\n element.on('focus', function () {\n element.val().length === 0 && setTimeout(element.typeahead.bind(element, 'lookup'), 200);\n });\n });\n }\n },\n };\n },\n]);\n","import { rangeUtil } from '@grafana/data';\n\nimport coreModule from './core_module';\n\nfunction ngModelOnBlur() {\n return {\n restrict: 'A',\n priority: 1,\n require: 'ngModel',\n link: (scope: any, elm: any, attr: any, ngModelCtrl: any) => {\n if (attr.type === 'radio' || attr.type === 'checkbox') {\n return;\n }\n\n elm.off('input keydown change');\n elm.bind('blur', () => {\n scope.$apply(() => {\n ngModelCtrl.$setViewValue(elm.val());\n });\n });\n },\n };\n}\n\nfunction emptyToNull() {\n return {\n restrict: 'A',\n require: 'ngModel',\n link: (scope: any, elm: any, attrs: any, ctrl: any) => {\n ctrl.$parsers.push((viewValue: any) => {\n if (viewValue === '') {\n return null;\n }\n return viewValue;\n });\n },\n };\n}\n\nfunction validTimeSpan() {\n return {\n require: 'ngModel',\n link: (scope: any, elm: any, attrs: any, ctrl: any) => {\n ctrl.$validators.integer = (modelValue: any, viewValue: any) => {\n if (ctrl.$isEmpty(modelValue)) {\n return true;\n }\n if (viewValue.indexOf('$') === 0 || viewValue.indexOf('+$') === 0) {\n return true; // allow template variable\n }\n const info = rangeUtil.describeTextRange(viewValue);\n return info.invalid !== true;\n };\n },\n };\n}\n\ncoreModule.directive('ngModelOnblur', ngModelOnBlur);\ncoreModule.directive('emptyToNull', emptyToNull);\ncoreModule.directive('validTimeSpan', validTimeSpan);\n","import angular from 'angular';\nimport $ from 'jquery';\n\nimport { getTagColorsFromName } from '@grafana/ui';\n\nimport coreModule from './core_module';\nimport 'vendor/tagsinput/bootstrap-tagsinput.js';\n\nfunction setColor(name: string, element: JQuery) {\n const { color, borderColor } = getTagColorsFromName(name);\n element.css('background-color', color);\n element.css('border-color', borderColor);\n}\n\nfunction tagColorFromName() {\n return {\n scope: { tagColorFromName: '=' },\n link: (scope: any, element: any) => {\n setColor(scope.tagColorFromName, element);\n },\n };\n}\n\nfunction bootstrapTagsinput() {\n function getItemProperty(scope: any, property: any) {\n if (!property) {\n return undefined;\n }\n\n if (angular.isFunction(scope.$parent[property])) {\n return scope.$parent[property];\n }\n\n return (item: any) => {\n return item[property];\n };\n }\n\n return {\n restrict: 'EA',\n scope: {\n model: '=ngModel',\n onTagsUpdated: '&',\n },\n template: '',\n replace: false,\n link: function (scope: any, element: any, attrs: any) {\n if (!angular.isArray(scope.model)) {\n scope.model = [];\n }\n\n const select = $('select', element);\n\n if (attrs.placeholder) {\n select.attr('placeholder', attrs.placeholder);\n }\n\n select.tagsinput({\n typeahead: {\n source: angular.isFunction(scope.$parent[attrs.typeaheadSource])\n ? scope.$parent[attrs.typeaheadSource]\n : null,\n },\n widthClass: attrs.widthClass,\n itemValue: getItemProperty(scope, attrs.itemvalue),\n itemText: getItemProperty(scope, attrs.itemtext),\n tagClass: angular.isFunction(scope.$parent[attrs.tagclass])\n ? scope.$parent[attrs.tagclass]\n : () => {\n return attrs.tagclass;\n },\n });\n\n select.on('itemAdded', (event: any) => {\n if (scope.model.indexOf(event.item) === -1) {\n scope.model.push(event.item);\n if (scope.onTagsUpdated) {\n scope.onTagsUpdated();\n }\n }\n const tagElement = select\n .next()\n .children('span')\n .filter(() => {\n return $(this).text() === event.item;\n });\n setColor(event.item, tagElement);\n });\n\n select.on('itemRemoved', (event: any) => {\n const idx = scope.model.indexOf(event.item);\n if (idx !== -1) {\n scope.model.splice(idx, 1);\n if (scope.onTagsUpdated) {\n scope.onTagsUpdated();\n }\n }\n });\n\n scope.$watch(\n 'model',\n () => {\n if (!angular.isArray(scope.model)) {\n scope.model = [];\n }\n\n select.tagsinput('removeAll');\n\n for (let i = 0; i < scope.model.length; i++) {\n select.tagsinput('add', scope.model[i]);\n }\n },\n true\n );\n },\n };\n}\n\ncoreModule.directive('tagColorFromName', tagColorFromName);\ncoreModule.directive('bootstrapTagsinput', bootstrapTagsinput);\n","import $ from 'jquery';\n\nimport coreModule from './core_module';\n\nfunction getBlockNodes(nodes: any[]) {\n let node = nodes[0];\n const endNode = nodes[nodes.length - 1];\n let blockNodes: any[] | undefined;\n node = node.nextSibling;\n\n for (let i = 1; node !== endNode && node; i++) {\n if (blockNodes || nodes[i] !== node) {\n if (!blockNodes) {\n blockNodes = $([].slice.call(nodes, 0, i)) as any;\n }\n\n blockNodes!.push(node);\n }\n node = node.nextSibling;\n }\n\n return blockNodes || nodes;\n}\n\ncoreModule.directive('rebuildOnChange', ['$animate', rebuildOnChange]);\n\nfunction rebuildOnChange($animate: any) {\n return {\n multiElement: true,\n terminal: true,\n transclude: true,\n priority: 600,\n restrict: 'E',\n link: (scope: any, elem: any, attrs: any, ctrl: any, transclude: any) => {\n let block: any, childScope: any, previousElements: any;\n\n function cleanUp() {\n if (previousElements) {\n previousElements.remove();\n previousElements = null;\n }\n if (childScope) {\n childScope.$destroy();\n childScope = null;\n }\n if (block) {\n previousElements = getBlockNodes(block.clone);\n $animate.leave(previousElements).then(() => {\n previousElements = null;\n });\n block = null;\n }\n }\n\n scope.$watch(attrs.property, function rebuildOnChangeAction(value: any, oldValue: any) {\n if (childScope && value !== oldValue) {\n cleanUp();\n }\n\n if (!childScope && (value || attrs.showNull)) {\n transclude((clone: any, newScope: any) => {\n childScope = newScope;\n clone[clone.length++] = document.createComment(' end rebuild on change ');\n block = { clone: clone };\n $animate.enter(clone, elem.parent(), elem);\n });\n } else {\n cleanUp();\n }\n });\n },\n };\n}\n","import coreModule from './core_module';\n\ncoreModule.directive('giveFocus', () => {\n return (scope: any, element: any, attrs: any) => {\n element.click((e: any) => {\n e.stopPropagation();\n });\n\n scope.$watch(\n attrs.giveFocus,\n (newValue: any) => {\n if (!newValue) {\n return;\n }\n setTimeout(() => {\n element.focus();\n const domEl: any = element[0];\n if (domEl.setSelectionRange) {\n const pos = element.val().length * 2;\n domEl.setSelectionRange(pos, pos);\n }\n }, 200);\n },\n true\n );\n };\n});\n\nexport default {};\n","import angular from 'angular';\n\nimport { GrafanaRootScope } from 'app/angular/GrafanaCtrl';\n\nimport coreModule from './core_module';\n\nexport class DeltaCtrl {\n observer: any;\n\n constructor() {\n const waitForCompile = () => {};\n\n this.observer = new MutationObserver(waitForCompile);\n\n const observerConfig = {\n attributes: true,\n attributeFilter: ['class'],\n characterData: false,\n childList: true,\n subtree: false,\n };\n\n this.observer.observe(angular.element('.delta-html')[0], observerConfig);\n }\n\n $onDestroy() {\n this.observer.disconnect();\n }\n}\n\nexport function delta() {\n return {\n controller: DeltaCtrl,\n replace: false,\n restrict: 'A',\n };\n}\n\ncoreModule.directive('diffDelta', delta);\n\n// Link to JSON line number\nexport class LinkJSONCtrl {\n static $inject = ['$scope', '$rootScope', '$anchorScroll'];\n\n constructor(private $scope: any, private $rootScope: GrafanaRootScope, private $anchorScroll: any) {}\n\n goToLine(line: number) {\n let unbind: () => void;\n\n const scroll = () => {\n this.$anchorScroll(`l${line}`);\n unbind();\n };\n\n this.$scope.switchView().then(() => {\n unbind = this.$rootScope.$on('json-diff-ready', scroll.bind(this));\n });\n }\n}\n\nexport function linkJson() {\n return {\n controller: LinkJSONCtrl,\n controllerAs: 'ctrl',\n replace: true,\n restrict: 'E',\n scope: {\n line: '@lineDisplay',\n link: '@lineLink',\n switchView: '&',\n },\n template: `Line {{ line }}`,\n };\n}\n\ncoreModule.directive('diffLinkJson', linkJson);\n","import { isArray } from 'lodash';\n\nimport coreModule from './core_module';\n\nexport function arrayJoin() {\n 'use strict';\n\n return {\n restrict: 'A',\n require: 'ngModel',\n link: (scope: any, element: any, attr: any, ngModel: any) => {\n function split_array(text: string) {\n return (text || '').split(',');\n }\n\n function join_array(text: string) {\n if (isArray(text)) {\n return ((text || '') as any).join(',');\n } else {\n return text;\n }\n }\n\n ngModel.$parsers.push(split_array);\n ngModel.$formatters.push(join_array);\n },\n };\n}\n\ncoreModule.directive('arrayJoin', arrayJoin);\n","import { config } from '@grafana/runtime';\nimport coreModule from 'app/angular/core_module';\nimport { provideTheme } from 'app/core/utils/ConfigProvider';\n\nexport function react2AngularDirective(name: string, component: any, options: any) {\n coreModule.directive(name, [\n 'reactDirective',\n (reactDirective) => {\n return reactDirective(provideTheme(component, config.theme2), options);\n },\n ]);\n}\n","import { css, cx } from '@emotion/css';\nimport React from 'react';\n\nimport { NavModelItem, NavModelBreadcrumb, GrafanaTheme2 } from '@grafana/data';\nimport { Tab, TabsBar, Icon, useStyles2, toIconName } from '@grafana/ui';\nimport { PanelHeaderMenuItem } from 'app/features/dashboard/dashgrid/PanelHeader/PanelHeaderMenuItem';\n\nimport { PageInfoItem } from '../Page/types';\nimport { PageInfo } from '../PageInfo/PageInfo';\nimport { ProBadge } from '../Upgrade/ProBadge';\n\nexport interface Props {\n navItem: NavModelItem;\n renderTitle?: (title: string) => React.ReactNode;\n actions?: React.ReactNode;\n info?: PageInfoItem[];\n subTitle?: React.ReactNode;\n}\n\nconst SelectNav = ({ children, customCss }: { children: NavModelItem[]; customCss: string }) => {\n if (!children || children.length === 0) {\n return null;\n }\n\n const defaultSelectedItem = children.find((navItem) => {\n return navItem.active === true;\n });\n\n return (\n
    \n
    \n \n {defaultSelectedItem?.text}\n \n
      \n {children.map((navItem: NavModelItem) => {\n if (navItem.hideFromTabs) {\n // TODO: Rename hideFromTabs => hideFromNav\n return null;\n }\n return (\n \n );\n })}\n
    \n
    \n
    \n );\n};\n\nconst Navigation = ({ children }: { children: NavModelItem[] }) => {\n if (!children || children.length === 0) {\n return null;\n }\n\n return (\n \n );\n};\n\nexport const PageHeader = ({ navItem: model, renderTitle, actions, info, subTitle }: Props) => {\n const styles = useStyles2(getStyles);\n\n if (!model) {\n return null;\n }\n\n const renderHeader = (main: NavModelItem) => {\n const marginTop = main.icon === 'grafana' ? 12 : 14;\n const icon = main.icon && toIconName(main.icon);\n const sub = subTitle ?? main.subTitle;\n\n return (\n
    \n \n {icon && }\n {main.img && \"\"}\n \n\n
    \n {renderTitle\n ? renderTitle(main.text)\n : renderHeaderTitle(main.text, main.breadcrumbs ?? [], main.highlightText)}\n {info && }\n {sub &&
    {sub}
    }\n {actions &&
    {actions}
    }\n
    \n
    \n );\n };\n\n return (\n
    \n
    \n
    \n {renderHeader(model)}\n {model.children && model.children.length > 0 && {model.children}}\n
    \n
    \n
    \n );\n};\n\nfunction renderHeaderTitle(\n title: string,\n breadcrumbs: NavModelBreadcrumb[],\n highlightText: NavModelItem['highlightText']\n) {\n if (!title && (!breadcrumbs || breadcrumbs.length === 0)) {\n return null;\n }\n\n if (!breadcrumbs || breadcrumbs.length === 0) {\n return (\n

    \n {title}\n {highlightText && (\n \n )}\n

    \n );\n }\n\n const breadcrumbsResult = [];\n for (const bc of breadcrumbs) {\n if (bc.url) {\n breadcrumbsResult.push(\n \n {bc.title}\n \n );\n } else {\n breadcrumbsResult.push( / {bc.title});\n }\n }\n breadcrumbsResult.push( / {title});\n\n return

    {breadcrumbsResult}

    ;\n}\n\nconst getStyles = (theme: GrafanaTheme2) => ({\n actions: css({\n display: 'flex',\n flexDirection: 'row',\n gap: theme.spacing(1),\n }),\n headerText: css({\n display: 'flex',\n flexDirection: 'column',\n gap: theme.spacing(1),\n }),\n headerCanvas: css`\n background: ${theme.colors.background.canvas};\n `,\n});\n","import { flatten } from 'lodash';\nimport React, { useMemo, useCallback } from 'react';\n\nimport { SelectableValue } from '@grafana/data';\nimport { LegacyForms } from '@grafana/ui';\nimport { Variable } from 'app/types/templates';\nconst { Select } = LegacyForms;\n\nexport interface Props {\n onChange: (value: string | undefined) => void;\n options: Array>;\n isSearchable: boolean;\n value: string;\n placeholder?: string;\n className?: string;\n variables?: Variable[];\n}\n\nexport const MetricSelect = (props: Props) => {\n const { value, placeholder, className, isSearchable, onChange } = props;\n const options = useSelectOptions(props);\n const selected = useSelectedOption(options, value);\n const onChangeValue = useCallback((selectable: SelectableValue) => onChange(selectable.value), [onChange]);\n\n return (\n 'No options found'}\n value={selected}\n />\n );\n};\n\nconst useSelectOptions = ({ variables = [], options }: Props): Array> => {\n return useMemo(() => {\n if (!Array.isArray(variables) || variables.length === 0) {\n return options;\n }\n\n return [\n {\n label: 'Template Variables',\n options: variables.map(({ name }) => ({\n label: `$${name}`,\n value: `$${name}`,\n })),\n },\n ...options,\n ];\n }, [variables, options]);\n};\n\nconst useSelectedOption = (options: Array>, value: string): SelectableValue => {\n return useMemo(() => {\n const allOptions = options.every((o) => o.options) ? flatten(options.map((o) => o.options)) : options;\n return allOptions.find((option) => option.value === value);\n }, [options, value]);\n};\n","import {\n ClipboardButton,\n ColorPicker,\n DataLinksInlineEditor,\n DataSourceHttpSettings,\n GraphContextMenu,\n Icon,\n LegacyForms,\n SeriesColorPickerPopoverWithTheme,\n Spinner,\n UnitPicker,\n} from '@grafana/ui';\nimport { react2AngularDirective } from 'app/angular/react2angular';\nimport { FolderPicker } from 'app/core/components/Select/FolderPicker';\nimport { TimePickerSettings } from 'app/features/dashboard/components/DashboardSettings/TimePickerSettings';\nimport { QueryEditor as CloudMonitoringQueryEditor } from 'app/plugins/datasource/cloud-monitoring/components/QueryEditor';\n\nimport EmptyListCTA from '../core/components/EmptyListCTA/EmptyListCTA';\nimport { Footer } from '../core/components/Footer/Footer';\nimport { PageHeader } from '../core/components/PageHeader/PageHeader';\nimport { MetricSelect } from '../core/components/Select/MetricSelect';\nimport { TagFilter } from '../core/components/TagFilter/TagFilter';\nimport { HelpModal } from '../core/components/help/HelpModal';\n\nconst { SecretFormField } = LegacyForms;\n\nexport function registerAngularDirectives() {\n react2AngularDirective('footer', Footer, []);\n react2AngularDirective('icon', Icon, [\n 'name',\n 'size',\n 'type',\n ['onClick', { watchDepth: 'reference', wrapApply: true }],\n ]);\n react2AngularDirective('spinner', Spinner, ['inline']);\n react2AngularDirective('helpModal', HelpModal, []);\n react2AngularDirective('pageHeader', PageHeader, ['model', 'noTabs']);\n react2AngularDirective('emptyListCta', EmptyListCTA, [\n 'title',\n 'buttonIcon',\n 'buttonLink',\n 'buttonTitle',\n ['onClick', { watchDepth: 'reference', wrapApply: true }],\n 'proTip',\n 'proTipLink',\n 'proTipLinkTitle',\n 'proTipTarget',\n 'infoBox',\n 'infoBoxTitle',\n ]);\n react2AngularDirective('tagFilter', TagFilter, [\n 'tags',\n ['onChange', { watchDepth: 'reference' }],\n ['tagOptions', { watchDepth: 'reference' }],\n ]);\n react2AngularDirective('colorPicker', ColorPicker, [\n 'color',\n ['onChange', { watchDepth: 'reference', wrapApply: true }],\n ]);\n react2AngularDirective('seriesColorPickerPopover', SeriesColorPickerPopoverWithTheme, [\n 'color',\n 'series',\n 'onColorChange',\n 'onToggleAxis',\n ]);\n react2AngularDirective('unitPicker', UnitPicker, [\n 'value',\n 'width',\n ['onChange', { watchDepth: 'reference', wrapApply: true }],\n ]);\n react2AngularDirective('metricSelect', MetricSelect, [\n 'options',\n 'onChange',\n 'value',\n 'isSearchable',\n 'className',\n 'placeholder',\n ['variables', { watchDepth: 'reference' }],\n ]);\n react2AngularDirective('cloudMonitoringQueryEditor', CloudMonitoringQueryEditor, [\n 'target',\n 'onQueryChange',\n 'onExecuteQuery',\n ['events', { watchDepth: 'reference' }],\n ['datasource', { watchDepth: 'reference' }],\n ['templateSrv', { watchDepth: 'reference' }],\n ]);\n react2AngularDirective('secretFormField', SecretFormField, [\n 'value',\n 'isConfigured',\n 'inputWidth',\n 'labelWidth',\n 'aria-label',\n ['onReset', { watchDepth: 'reference', wrapApply: true }],\n ['onChange', { watchDepth: 'reference', wrapApply: true }],\n ]);\n react2AngularDirective('graphContextMenu', GraphContextMenu, [\n 'x',\n 'y',\n 'itemsGroup',\n ['onClose', { watchDepth: 'reference', wrapApply: true }],\n ['getContextMenuSource', { watchDepth: 'reference', wrapApply: true }],\n ['timeZone', { watchDepth: 'reference', wrapApply: true }],\n ]);\n\n // We keep the drilldown terminology here because of as using data-* directive\n // being in conflict with HTML data attributes\n react2AngularDirective('drilldownLinksEditor', DataLinksInlineEditor, [\n 'value',\n 'links',\n 'suggestions',\n ['onChange', { watchDepth: 'reference', wrapApply: true }],\n ]);\n\n react2AngularDirective('datasourceHttpSettingsNext', DataSourceHttpSettings, [\n 'defaultUrl',\n 'showAccessOptions',\n 'dataSourceConfig',\n 'showForwardOAuthIdentityOption',\n ['onChange', { watchDepth: 'reference', wrapApply: true }],\n ]);\n react2AngularDirective('folderPicker', FolderPicker, [\n 'labelClass',\n 'rootName',\n 'enableCreateNew',\n 'enableReset',\n 'initialTitle',\n 'initialFolderId',\n 'dashboardId',\n 'onCreateFolder',\n ['enterFolderCreation', { watchDepth: 'reference', wrapApply: true }],\n ['exitFolderCreation', { watchDepth: 'reference', wrapApply: true }],\n ['onLoad', { watchDepth: 'reference', wrapApply: true }],\n ['onChange', { watchDepth: 'reference', wrapApply: true }],\n ]);\n\n react2AngularDirective('timePickerSettings', TimePickerSettings, [\n 'renderCount',\n 'refreshIntervals',\n 'timePickerHidden',\n 'nowDelay',\n 'timezone',\n ['onTimeZoneChange', { watchDepth: 'reference', wrapApply: true }],\n ['onRefreshIntervalChange', { watchDepth: 'reference', wrapApply: true }],\n ['onNowDelayChange', { watchDepth: 'reference', wrapApply: true }],\n ['onHideTimePickerChange', { watchDepth: 'reference', wrapApply: true }],\n ]);\n\n react2AngularDirective('clipboardButton', ClipboardButton, [\n ['getText', { watchDepth: 'reference', wrapApply: true }],\n ]);\n}\n","import $ from 'jquery';\nimport { debounce, each, map, partial, escape, unescape } from 'lodash';\n\nimport coreModule from 'app/angular/core_module';\n\nimport { promiseToDigest } from '../promiseToDigest';\n\nconst template = `\n
    \n{{part.def.type}}\n()\n\n`;\n\ncoreModule.directive('queryPartEditor', ['templateSrv', queryPartEditorDirective]);\n\nexport function queryPartEditorDirective(templateSrv: any) {\n const paramTemplate = '';\n\n return {\n restrict: 'E',\n template: template,\n scope: {\n part: '=',\n handleEvent: '&',\n debounce: '@',\n },\n link: function postLink($scope: any, elem: any) {\n const part = $scope.part;\n const partDef = part.def;\n const $paramsContainer = elem.find('.query-part-parameters');\n const debounceLookup = $scope.debounce;\n\n $scope.partActions = [];\n\n function clickFuncParam(this: any, paramIndex: number) {\n const $link = $(this);\n const $input = $link.next();\n\n $input.val(part.params[paramIndex]);\n $input.css('width', $link.width()! + 16 + 'px');\n\n $link.hide();\n $input.show();\n $input.focus();\n $input.select();\n\n const typeahead = $input.data('typeahead');\n if (typeahead) {\n $input.val('');\n typeahead.lookup();\n }\n }\n\n function inputBlur(this: any, paramIndex: number) {\n const $input = $(this);\n const $link = $input.prev();\n const newValue = $input.val();\n\n if (newValue !== '' || part.def.params[paramIndex].optional) {\n $link.html(templateSrv.highlightVariablesAsHtml(newValue));\n\n part.updateParam($input.val(), paramIndex);\n $scope.$apply(() => {\n $scope.handleEvent({ $event: { name: 'part-param-changed' } });\n });\n }\n\n $input.hide();\n $link.show();\n }\n\n function inputKeyPress(this: any, paramIndex: number, e: any) {\n if (e.which === 13) {\n inputBlur.call(this, paramIndex);\n }\n }\n\n function inputKeyDown(this: any) {\n this.style.width = (3 + this.value.length) * 8 + 'px';\n }\n\n function addTypeahead($input: JQuery, param: any, paramIndex: number) {\n if (!param.options && !param.dynamicLookup) {\n return;\n }\n\n const typeaheadSource = (query: string, callback: any) => {\n if (param.options) {\n let options = param.options;\n if (param.type === 'int') {\n options = map(options, (val) => {\n return val.toString();\n });\n }\n return options;\n }\n\n $scope.$apply(() => {\n $scope.handleEvent({ $event: { name: 'get-param-options' } }).then((result: any) => {\n const dynamicOptions = map(result, (op) => {\n return escape(op.value);\n });\n callback(dynamicOptions);\n });\n });\n };\n\n $input.attr('data-provide', 'typeahead');\n\n $input.typeahead({\n source: typeaheadSource,\n minLength: 0,\n items: 1000,\n updater: (value: string) => {\n value = unescape(value);\n setTimeout(() => {\n inputBlur.call($input[0], paramIndex);\n }, 0);\n return value;\n },\n });\n\n const typeahead = $input.data('typeahead');\n typeahead.lookup = function () {\n this.query = this.$element.val() || '';\n const items = this.source(this.query, $.proxy(this.process, this));\n return items ? this.process(items) : items;\n };\n\n if (debounceLookup) {\n typeahead.lookup = debounce(typeahead.lookup, 500, { leading: true });\n }\n }\n\n $scope.showActionsMenu = () => {\n promiseToDigest($scope)(\n $scope.handleEvent({ $event: { name: 'get-part-actions' } }).then((res: any) => {\n $scope.partActions = res;\n })\n );\n };\n\n $scope.triggerPartAction = (action: string) => {\n $scope.handleEvent({ $event: { name: 'action', action: action } });\n };\n\n function addElementsAndCompile() {\n each(partDef.params, (param: any, index: number) => {\n if (param.optional && part.params.length <= index) {\n return;\n }\n\n if (index > 0) {\n $(', ').appendTo($paramsContainer);\n }\n\n const paramValue = templateSrv.highlightVariablesAsHtml(part.params[index]);\n const $paramLink = $('' + paramValue + '');\n const $input = $(paramTemplate);\n\n $paramLink.appendTo($paramsContainer);\n $input.appendTo($paramsContainer);\n\n $input.blur(partial(inputBlur, index));\n $input.keyup(inputKeyDown);\n $input.keypress(partial(inputKeyPress, index));\n $paramLink.click(partial(clickFuncParam, index));\n\n addTypeahead($input, param, index);\n });\n }\n\n function relink() {\n $paramsContainer.empty();\n addElementsAndCompile();\n }\n\n relink();\n },\n };\n}\n","import { ISCEService } from 'angular';\nimport { debounce, find, indexOf, map, isObject, escape, unescape } from 'lodash';\n\nimport coreModule from '../../core_module';\nimport { promiseToDigest } from '../../promiseToDigest';\n\nfunction typeaheadMatcher(this: any, item: string) {\n let str = this.query;\n if (str === '') {\n return true;\n }\n if (str[0] === '/') {\n str = str.substring(1);\n }\n if (str[str.length - 1] === '/') {\n str = str.substring(0, str.length - 1);\n }\n return item.toLowerCase().match(str.toLowerCase());\n}\n\nexport class FormDropdownCtrl {\n inputElement: JQLite;\n linkElement: JQLite;\n model: any;\n display: any;\n text: any;\n options: any;\n cssClass: any;\n cssClasses: any;\n allowCustom: any;\n labelMode: boolean;\n linkMode: boolean;\n cancelBlur: any;\n onChange: any;\n getOptions: any;\n optionCache: any;\n lookupText: boolean;\n placeholder: any;\n startOpen: any;\n debounce: boolean;\n\n static $inject = ['$scope', '$element', '$sce', 'templateSrv'];\n\n constructor(private $scope: any, $element: JQLite, private $sce: ISCEService, private templateSrv: any) {\n this.inputElement = $element.find('input').first();\n this.linkElement = $element.find('a').first();\n this.linkMode = true;\n this.cancelBlur = null;\n this.labelMode = false;\n this.lookupText = false;\n this.debounce = false;\n\n // listen to model changes\n $scope.$watch('ctrl.model', this.modelChanged.bind(this));\n }\n\n $onInit() {\n if (this.labelMode) {\n this.cssClasses = 'gf-form-label ' + this.cssClass;\n } else {\n this.cssClasses = 'gf-form-input gf-form-input--dropdown ' + this.cssClass;\n }\n\n if (this.placeholder) {\n this.inputElement.attr('placeholder', this.placeholder);\n }\n\n this.inputElement.attr('data-provide', 'typeahead');\n this.inputElement.typeahead({\n source: this.typeaheadSource.bind(this),\n minLength: 0,\n items: 10000,\n updater: this.typeaheadUpdater.bind(this),\n matcher: typeaheadMatcher,\n });\n\n // modify typeahead lookup\n // this = typeahead\n const typeahead = this.inputElement.data('typeahead');\n typeahead.lookup = function () {\n this.query = this.$element.val() || '';\n this.source(this.query, this.process.bind(this));\n };\n\n if (this.debounce) {\n typeahead.lookup = debounce(typeahead.lookup, 500, { leading: true });\n }\n\n this.linkElement.keydown((evt) => {\n // trigger typeahead on down arrow or enter key\n if (evt.keyCode === 40 || evt.keyCode === 13) {\n this.linkElement.click();\n }\n });\n\n this.inputElement.keydown((evt) => {\n if (evt.keyCode === 13) {\n setTimeout(() => {\n this.inputElement.blur();\n }, 300);\n }\n });\n\n this.inputElement.blur(this.inputBlur.bind(this));\n\n if (this.startOpen) {\n setTimeout(this.open.bind(this), 0);\n }\n }\n\n getOptionsInternal(query: string) {\n return promiseToDigest(this.$scope)(Promise.resolve(this.getOptions({ $query: query })));\n }\n\n isPromiseLike(obj: any) {\n return obj && typeof obj.then === 'function';\n }\n\n modelChanged() {\n if (isObject(this.model)) {\n this.updateDisplay((this.model as any).text);\n } else {\n // if we have text use it\n if (this.lookupText) {\n this.getOptionsInternal('').then((options: any) => {\n const item: any = find(options, { value: this.model });\n this.updateDisplay(item ? item.text : this.model);\n });\n } else {\n this.updateDisplay(this.model);\n }\n }\n }\n\n typeaheadSource(query: string, callback: (res: any) => void) {\n this.getOptionsInternal(query).then((options: any) => {\n this.optionCache = options;\n\n // extract texts\n const optionTexts = map(options, (op: any) => {\n return escape(op.text);\n });\n\n // add custom values\n if (this.allowCustom && this.text !== '') {\n if (indexOf(optionTexts, this.text) === -1) {\n optionTexts.unshift(this.text);\n }\n }\n\n callback(optionTexts);\n });\n }\n\n typeaheadUpdater(text: string) {\n if (text === this.text) {\n clearTimeout(this.cancelBlur);\n this.inputElement.focus();\n return text;\n }\n\n this.inputElement.val(text);\n this.switchToLink(true);\n return text;\n }\n\n switchToLink(fromClick: boolean) {\n if (this.linkMode && !fromClick) {\n return;\n }\n\n clearTimeout(this.cancelBlur);\n this.cancelBlur = null;\n this.linkMode = true;\n this.inputElement.hide();\n this.linkElement.show();\n this.updateValue(this.inputElement.val() as string);\n }\n\n inputBlur() {\n // happens long before the click event on the typeahead options\n // need to have long delay because the blur\n this.cancelBlur = setTimeout(this.switchToLink.bind(this), 200);\n }\n\n updateValue(text: string) {\n text = unescape(text);\n\n if (text === '' || this.text === text) {\n return;\n }\n\n this.$scope.$apply(() => {\n const option: any = find(this.optionCache, { text: text });\n\n if (option) {\n if (isObject(this.model)) {\n this.model = option;\n } else {\n this.model = option.value;\n }\n this.text = option.text;\n } else if (this.allowCustom) {\n if (isObject(this.model)) {\n (this.model as any).text = (this.model as any).value = text;\n } else {\n this.model = text;\n }\n this.text = text;\n }\n\n // needs to call this after digest so\n // property is synced with outerscope\n this.$scope.$$postDigest(() => {\n this.$scope.$apply(() => {\n this.onChange({ $option: option });\n });\n });\n });\n }\n\n updateDisplay(text: string) {\n this.text = text;\n this.display = this.$sce.trustAsHtml(this.templateSrv.highlightVariablesAsHtml(text));\n }\n\n open() {\n this.inputElement.css('width', Math.max(this.linkElement.width()!, 80) + 16 + 'px');\n\n this.inputElement.show();\n this.inputElement.focus();\n\n this.linkElement.hide();\n this.linkMode = false;\n\n const typeahead = this.inputElement.data('typeahead');\n if (typeahead) {\n this.inputElement.val('');\n typeahead.lookup();\n }\n }\n}\n\nconst template = `\n\n\n\n\n`;\n\nexport function formDropdownDirective() {\n return {\n restrict: 'E',\n template: template,\n controller: FormDropdownCtrl,\n bindToController: true,\n controllerAs: 'ctrl',\n scope: {\n model: '=',\n getOptions: '&',\n onChange: '&',\n cssClass: '@',\n allowCustom: '@',\n labelMode: '@',\n lookupText: '@',\n placeholder: '@',\n startOpen: '@',\n debounce: '@',\n },\n };\n}\n\ncoreModule.directive('gfFormDropdown', formDropdownDirective);\n","// @ts-ignore\nimport baron from 'baron';\nimport $ from 'jquery';\n\nimport coreModule from 'app/angular/core_module';\n\nconst scrollBarHTML = `\n
    \n
    \n
    \n`;\n\nconst scrollRootClass = 'baron baron__root';\nconst scrollerClass = 'baron__scroller';\n\nexport function geminiScrollbar() {\n return {\n restrict: 'A',\n link: (scope: any, elem: any, attrs: any) => {\n let scrollRoot = elem.parent();\n const scroller = elem;\n\n if (attrs.grafanaScrollbar && attrs.grafanaScrollbar === 'scrollonroot') {\n scrollRoot = scroller;\n }\n\n scrollRoot.addClass(scrollRootClass);\n $(scrollBarHTML).appendTo(scrollRoot);\n elem.addClass(scrollerClass);\n\n const scrollParams = {\n root: scrollRoot[0],\n scroller: scroller[0],\n bar: '.baron__bar',\n barOnCls: '_scrollbar',\n scrollingCls: '_scrolling',\n track: '.baron__track',\n direction: 'v',\n };\n\n const scrollbar = baron(scrollParams);\n\n scope.$on('$destroy', () => {\n scrollbar.dispose();\n });\n },\n };\n}\n\ncoreModule.directive('grafanaScrollbar', geminiScrollbar);\n","import { JsonExplorer } from '@grafana/ui';\nimport coreModule from 'app/angular/core_module';\n\ncoreModule.directive('jsonTree', [\n function jsonTreeDirective() {\n return {\n restrict: 'E',\n scope: {\n object: '=',\n startExpanded: '@',\n rootName: '@',\n },\n link: (scope: any, elem) => {\n let expansionLevel = scope.startExpanded;\n if (scope.startExpanded === 'true') {\n expansionLevel = 2;\n } else if (scope.startExpanded === 'false') {\n expansionLevel = 1;\n }\n const jsonObject = { [scope.rootName]: scope.object };\n const jsonExp = new JsonExplorer(jsonObject, expansionLevel, {\n animateOpen: true,\n });\n const html = jsonExp.render(true);\n elem.append(html);\n },\n };\n },\n]);\n","import coreModule from 'app/angular/core_module';\n\nconst template = `\n\n`;\n\nconst checkboxTemplate = `\n\n`;\n\nexport class SwitchCtrl {\n onChange: any;\n checked: any;\n show: any;\n id: any;\n label?: string;\n\n static $inject = ['$scope', '$timeout'];\n\n constructor($scope: any, private $timeout: any) {\n this.show = true;\n this.id = $scope.$id;\n }\n\n internalOnChange() {\n return this.$timeout(() => {\n return this.onChange();\n });\n }\n}\n\nexport function switchDirective() {\n return {\n restrict: 'E',\n controller: SwitchCtrl,\n controllerAs: 'ctrl',\n bindToController: true,\n scope: {\n checked: '=',\n label: '@',\n labelClass: '@',\n tooltip: '@',\n switchClass: '@',\n onChange: '&',\n },\n template: template,\n };\n}\n\nexport function checkboxDirective() {\n return {\n restrict: 'E',\n controller: SwitchCtrl,\n controllerAs: 'ctrl',\n bindToController: true,\n scope: {\n checked: '=',\n label: '@',\n labelClass: '@',\n tooltip: '@',\n switchClass: '@',\n onChange: '&',\n },\n template: checkboxTemplate,\n };\n}\n\ncoreModule.directive('gfFormSwitch', switchDirective);\ncoreModule.directive('gfFormCheckbox', checkboxDirective);\n","import { each } from 'lodash';\n// @ts-ignore\nimport Drop from 'tether-drop';\n\nimport coreModule from 'app/angular/core_module';\n\nexport function infoPopover() {\n return {\n restrict: 'E',\n template: ``,\n transclude: true,\n link: (scope: any, elem: any, attrs: any, ctrl: any, transclude: any) => {\n const offset = attrs.offset || '0 -10px';\n const position = attrs.position || 'right middle';\n let classes = 'drop-help drop-hide-out-of-bounds';\n const openOn = 'hover';\n\n elem.addClass('gf-form-help-icon');\n\n if (attrs.wide) {\n classes += ' drop-wide';\n }\n\n if (attrs.mode) {\n elem.addClass('gf-form-help-icon--' + attrs.mode);\n }\n\n transclude((clone: any, newScope: any) => {\n const content = document.createElement('div');\n content.className = 'markdown-html';\n\n each(clone, (node) => {\n content.appendChild(node);\n });\n\n const dropOptions = {\n target: elem[0],\n content: content,\n position: position,\n classes: classes,\n openOn: openOn,\n hoverOpenDelay: 400,\n tetherOptions: {\n offset: offset,\n constraints: [\n {\n to: 'window',\n attachment: 'together',\n pin: true,\n },\n ],\n },\n };\n\n // Create drop in next digest after directive content is rendered.\n scope.$applyAsync(() => {\n const drop = new Drop(dropOptions);\n\n const unbind = scope.$on('$destroy', () => {\n drop.destroy();\n unbind();\n });\n });\n });\n },\n };\n}\n\ncoreModule.directive('infoPopover', infoPopover);\n","/**\n * Wrapper for the new ngReact directive for backward compatibility.\n * Allows remaining untouched in outdated plugins.\n * Technically, it's just a wrapper for react component with two-way data binding support.\n */\nimport coreModule from '../core_module';\n\ncoreModule.directive('spectrumPicker', spectrumPicker);\n\nexport function spectrumPicker() {\n return {\n restrict: 'E',\n require: 'ngModel',\n scope: true,\n replace: true,\n template: '',\n link: (scope: any, element: any, attrs: any, ngModel: any) => {\n scope.ngModel = ngModel;\n scope.onColorChange = (color: string) => {\n ngModel.$setViewValue(color);\n };\n },\n };\n}\n","/**\n * codeEditor directive based on Ace code editor\n * https://github.com/ajaxorg/ace\n *\n * Basic usage:\n * \n * \n *\n * Params:\n * content: Editor content.\n * onChange: Function called on content change (invoked on editor blur, ctrl+enter, not on every change).\n * getCompleter: Function returned external completer. Completer is an object implemented getCompletions() method,\n * see Prometheus Data Source implementation for details.\n *\n * Some Ace editor options available via data-* attributes:\n * data-mode - Language mode (text, sql, javascript, etc.). Default is 'text'.\n * data-theme - Editor theme (eg 'solarized_dark').\n * data-max-lines - Max editor height in lines. Editor grows automatically from 1 to maxLines.\n * data-show-gutter - Show gutter (contains line numbers and additional info).\n * data-tab-size - Tab size, default is 2.\n * data-behaviours-enabled - Specifies whether to use behaviors or not. \"Behaviors\" in this case is the auto-pairing of\n * special characters, like quotation marks, parenthesis, or brackets.\n * data-snippets-enabled - Specifies whether to use snippets or not. \"Snippets\" are small pieces of code that can be\n * inserted via the completion box.\n *\n * Keybindings:\n * Ctrl-Enter (Command-Enter): run onChange() function\n */\n\nimport coreModule from 'app/angular/core_module';\nimport config from 'app/core/config';\n\nconst DEFAULT_THEME_DARK = 'ace/theme/grafana-dark';\nconst DEFAULT_THEME_LIGHT = 'ace/theme/textmate';\nconst DEFAULT_MODE = 'text';\nconst DEFAULT_MAX_LINES = 10;\nconst DEFAULT_TAB_SIZE = 2;\nconst DEFAULT_BEHAVIORS = true;\nconst DEFAULT_SNIPPETS = true;\n\nconst editorTemplate = `
    `;\n\nasync function link(scope: any, elem: any, attrs: any) {\n // Options\n const langMode = attrs.mode || DEFAULT_MODE;\n const maxLines = attrs.maxLines || DEFAULT_MAX_LINES;\n const showGutter = attrs.showGutter !== undefined;\n const tabSize = attrs.tabSize || DEFAULT_TAB_SIZE;\n const behavioursEnabled = attrs.behavioursEnabled ? attrs.behavioursEnabled === 'true' : DEFAULT_BEHAVIORS;\n const snippetsEnabled = attrs.snippetsEnabled ? attrs.snippetsEnabled === 'true' : DEFAULT_SNIPPETS;\n\n // Initialize editor\n const aceElem = elem.get(0);\n const { default: ace } = await import(/* webpackChunkName: \"brace\" */ 'brace');\n await import('brace/ext/language_tools');\n await import('brace/theme/textmate');\n await import('brace/mode/text');\n await import('brace/snippets/text');\n await import('brace/mode/sql');\n await import('brace/snippets/sql');\n await import('brace/mode/sqlserver');\n await import('brace/snippets/sqlserver');\n await import('brace/mode/markdown');\n await import('brace/snippets/markdown');\n await import('brace/mode/json');\n await import('brace/snippets/json');\n\n // @ts-ignore\n await import('./theme-grafana-dark');\n\n const codeEditor = ace.edit(aceElem);\n const editorSession = codeEditor.getSession();\n\n const editorOptions = {\n maxLines: maxLines,\n showGutter: showGutter,\n tabSize: tabSize,\n behavioursEnabled: behavioursEnabled,\n highlightActiveLine: false,\n showPrintMargin: false,\n autoScrollEditorIntoView: true, // this is needed if editor is inside scrollable page\n };\n\n // Set options\n codeEditor.setOptions(editorOptions);\n // disable depreacation warning\n codeEditor.$blockScrolling = Infinity;\n // Padding hacks\n (codeEditor.renderer as any).setScrollMargin(10, 10);\n codeEditor.renderer.setPadding(10);\n\n setThemeMode();\n setLangMode(langMode);\n setEditorContent(scope.content);\n\n // Add classes\n elem.addClass('gf-code-editor');\n const textarea = elem.find('textarea');\n textarea.addClass('gf-form-input');\n\n // All aria-label to be set for accessibility\n textarea.attr('aria-label', attrs.textareaLabel);\n\n if (scope.codeEditorFocus) {\n setTimeout(() => {\n textarea.focus();\n const domEl = textarea[0];\n if (domEl.setSelectionRange) {\n const pos = textarea.val().length * 2;\n domEl.setSelectionRange(pos, pos);\n }\n }, 100);\n }\n\n // Event handlers\n editorSession.on('change', (e) => {\n scope.$apply(() => {\n const newValue = codeEditor.getValue();\n scope.content = newValue;\n });\n });\n\n // Sync with outer scope - update editor content if model has been changed from outside of directive.\n scope.$watch('content', (newValue: any, oldValue: any) => {\n const editorValue = codeEditor.getValue();\n if (newValue !== editorValue && newValue !== oldValue) {\n scope.$$postDigest(() => {\n setEditorContent(newValue);\n });\n }\n });\n\n codeEditor.on('blur', () => {\n scope.onChange();\n });\n\n scope.$on('$destroy', () => {\n codeEditor.destroy();\n });\n\n // Keybindings\n codeEditor.commands.addCommand({\n name: 'executeQuery',\n bindKey: { win: 'Ctrl-Enter', mac: 'Command-Enter' },\n exec: () => {\n scope.onChange();\n },\n });\n\n function setLangMode(lang: string) {\n ace.acequire('ace/ext/language_tools');\n codeEditor.setOptions({\n enableBasicAutocompletion: true,\n enableLiveAutocompletion: true,\n enableSnippets: snippetsEnabled,\n });\n\n if (scope.getCompleter()) {\n // make copy of array as ace seems to share completers array between instances\n const anyEditor = codeEditor as any;\n anyEditor.completers = anyEditor.completers.slice();\n anyEditor.completers.push(scope.getCompleter());\n }\n\n const aceModeName = `ace/mode/${lang}`;\n editorSession.setMode(aceModeName);\n }\n\n function setThemeMode() {\n let theme = DEFAULT_THEME_DARK;\n if (config.bootData.user.lightTheme) {\n theme = DEFAULT_THEME_LIGHT;\n }\n\n codeEditor.setTheme(theme);\n }\n\n function setEditorContent(value: string) {\n codeEditor.setValue(value);\n codeEditor.clearSelection();\n }\n}\n\nexport function codeEditorDirective() {\n return {\n restrict: 'E',\n template: editorTemplate,\n scope: {\n content: '=',\n datasource: '=',\n codeEditorFocus: '<',\n onChange: '&',\n getCompleter: '&',\n },\n link: link,\n };\n}\n\ncoreModule.directive('codeEditor', codeEditorDirective);\n","import $ from 'jquery';\nimport { debounce, each, indexOf, map, partial, escape, unescape } from 'lodash';\n\nimport coreModule from 'app/angular/core_module';\n\nconst template = `\n
    \n{{part.label}}\n{{part.def.wrapOpen}}{{part.def.wrapClose}}\n\n`;\n\ncoreModule.directive('sqlPartEditor', ['templateSrv', sqlPartEditorDirective]);\n\nexport function sqlPartEditorDirective(templateSrv: any) {\n const paramTemplate = '';\n\n return {\n restrict: 'E',\n template: template,\n scope: {\n part: '=',\n handleEvent: '&',\n debounce: '@',\n },\n link: function postLink($scope: any, elem: any) {\n const part = $scope.part;\n const partDef = part.def;\n const $paramsContainer = elem.find('.query-part-parameters');\n const debounceLookup = $scope.debounce;\n let cancelBlur: any = null;\n\n $scope.partActions = [];\n\n function clickFuncParam(this: any, paramIndex: number) {\n const $link = $(this);\n const $input = $link.next();\n\n $input.val(part.params[paramIndex]);\n $input.css('width', $link.width()! + 16 + 'px');\n\n $link.hide();\n $input.show();\n $input.focus();\n $input.select();\n\n const typeahead = $input.data('typeahead');\n if (typeahead) {\n $input.val('');\n typeahead.lookup();\n }\n }\n\n function inputBlur($input: JQuery, paramIndex: number) {\n cancelBlur = setTimeout(() => {\n switchToLink($input, paramIndex);\n }, 200);\n }\n\n function switchToLink($input: JQuery, paramIndex: number) {\n const $link = $input.prev();\n const newValue = $input.val();\n\n if (newValue !== '' || part.def.params[paramIndex].optional) {\n $link.html(templateSrv.highlightVariablesAsHtml(newValue));\n\n part.updateParam($input.val(), paramIndex);\n $scope.$apply(() => {\n $scope.handleEvent({ $event: { name: 'part-param-changed' } });\n });\n }\n\n $input.hide();\n $link.show();\n }\n\n function inputKeyPress(this: any, paramIndex: number, e: any) {\n if (e.which === 13) {\n switchToLink($(this), paramIndex);\n }\n }\n\n function inputKeyDown(this: any) {\n this.style.width = (3 + this.value.length) * 8 + 'px';\n }\n\n function addTypeahead($input: JQuery, param: any, paramIndex: number) {\n if (!param.options && !param.dynamicLookup) {\n return;\n }\n\n const typeaheadSource = (query: string, callback: any) => {\n if (param.options) {\n let options = param.options;\n if (param.type === 'int') {\n options = map(options, (val) => {\n return val.toString();\n });\n }\n return options;\n }\n\n $scope.$apply(() => {\n $scope.handleEvent({ $event: { name: 'get-param-options', param: param } }).then((result: any) => {\n const dynamicOptions = map(result, (op) => {\n return escape(op.value);\n });\n\n // add current value to dropdown if it's not in dynamicOptions\n if (indexOf(dynamicOptions, part.params[paramIndex]) === -1) {\n dynamicOptions.unshift(escape(part.params[paramIndex]));\n }\n\n callback(dynamicOptions);\n });\n });\n };\n\n $input.attr('data-provide', 'typeahead');\n\n $input.typeahead({\n source: typeaheadSource,\n minLength: 0,\n items: 1000,\n updater: (value: string) => {\n value = unescape(value);\n if (value === part.params[paramIndex]) {\n clearTimeout(cancelBlur);\n $input.focus();\n return value;\n }\n return value;\n },\n });\n\n const typeahead = $input.data('typeahead');\n typeahead.lookup = function () {\n this.query = this.$element.val() || '';\n const items = this.source(this.query, $.proxy(this.process, this));\n return items ? this.process(items) : items;\n };\n\n if (debounceLookup) {\n typeahead.lookup = debounce(typeahead.lookup, 500, { leading: true });\n }\n }\n\n $scope.showActionsMenu = () => {\n $scope.handleEvent({ $event: { name: 'get-part-actions' } }).then((res: any) => {\n $scope.partActions = res;\n });\n };\n\n $scope.triggerPartAction = (action: string) => {\n $scope.handleEvent({ $event: { name: 'action', action: action } });\n };\n\n function addElementsAndCompile() {\n each(partDef.params, (param: any, index: number) => {\n if (param.optional && part.params.length <= index) {\n return;\n }\n\n if (index > 0) {\n $('' + partDef.separator + '').appendTo($paramsContainer);\n }\n\n const paramValue = templateSrv.highlightVariablesAsHtml(part.params[index]);\n const $paramLink = $('' + paramValue + '');\n const $input = $(paramTemplate);\n\n $paramLink.appendTo($paramsContainer);\n $input.appendTo($paramsContainer);\n\n $input.blur(partial(inputBlur, $input, index));\n $input.keyup(inputKeyDown);\n $input.keypress(partial(inputKeyPress, index));\n $paramLink.click(partial(clickFuncParam, index));\n\n addTypeahead($input, param, index);\n });\n }\n\n function relink() {\n $paramsContainer.empty();\n addElementsAndCompile();\n }\n\n relink();\n },\n };\n}\n","import { coreModule } from 'app/angular/core_module';\n\ncoreModule.directive('datasourceHttpSettings', () => {\n return {\n scope: {\n current: '=',\n suggestUrl: '@',\n noDirectAccess: '@',\n showForwardOAuthIdentityOption: '@',\n },\n templateUrl: 'public/app/angular/partials/http_settings_next.html',\n link: {\n pre: ($scope: any) => {\n // do not show access option if direct access is disabled\n $scope.showAccessOption = $scope.noDirectAccess !== 'true';\n $scope.onChange = (datasourceSetting: any) => {\n $scope.current = datasourceSetting;\n };\n },\n },\n };\n});\n","import { coreModule } from 'app/angular/core_module';\n\ncoreModule.directive('datasourceTlsAuthSettings', () => {\n return {\n scope: {\n current: '=',\n },\n templateUrl: 'public/app/angular/partials/tls_auth_settings.html',\n };\n});\n","import angular, { ILocationService } from 'angular';\nimport { each } from 'lodash';\n\nimport { DataSourceApi, PanelEvents } from '@grafana/data';\nimport coreModule from 'app/angular/core_module';\nimport config from 'app/core/config';\n\nimport { importPanelPlugin } from '../../features/plugins/importPanelPlugin';\nimport { importDataSourcePlugin, importAppPlugin } from '../../features/plugins/plugin_loader';\n\nexport function relativeTemplateUrlToCDN(templateUrl: string, baseUrl: string) {\n if (!templateUrl) {\n return undefined;\n }\n\n // the templateUrl may have already been updated with the hostname\n if (templateUrl.startsWith(config.pluginsCDNBaseURL)) {\n return templateUrl;\n }\n\n // use the 'plugin-cdn' key to load via cdn\n return `${baseUrl.replace('plugin-cdn/', `${config.pluginsCDNBaseURL}/`)}/${templateUrl}`;\n}\n\ncoreModule.directive('pluginComponent', ['$compile', '$http', '$templateCache', '$location', pluginDirectiveLoader]);\n\nfunction pluginDirectiveLoader($compile: any, $http: any, $templateCache: any, $location: ILocationService) {\n function getTemplate(component: { template: any; templateUrl: any }) {\n if (component.template) {\n return Promise.resolve(component.template);\n }\n const cached = $templateCache.get(component.templateUrl);\n if (cached) {\n return Promise.resolve(cached);\n }\n return $http.get(component.templateUrl).then((res: any) => {\n return res.data;\n });\n }\n\n function relativeTemplateUrlToAbs(templateUrl: string, baseUrl: string) {\n if (!templateUrl) {\n return undefined;\n }\n if (templateUrl.indexOf('public') === 0) {\n return templateUrl;\n }\n\n return baseUrl + '/' + templateUrl;\n }\n\n function getPluginComponentDirective(options: any) {\n if (options.baseUrl.includes('plugin-cdn')) {\n options.Component.templateUrl = relativeTemplateUrlToCDN(options.Component.templateUrl, options.baseUrl);\n } else {\n // handle relative template urls for plugin templates\n options.Component.templateUrl = relativeTemplateUrlToAbs(options.Component.templateUrl, options.baseUrl);\n }\n\n return () => {\n return {\n templateUrl: options.Component.templateUrl,\n template: options.Component.template,\n restrict: 'E',\n controller: options.Component,\n controllerAs: 'ctrl',\n bindToController: true,\n scope: options.bindings,\n link: (scope: any, elem: any, attrs: any, ctrl: any) => {\n if (ctrl.link) {\n ctrl.link(scope, elem, attrs, ctrl);\n }\n if (ctrl.init) {\n ctrl.init();\n }\n },\n };\n };\n }\n\n function loadPanelComponentInfo(scope: any, attrs: any) {\n const componentInfo: any = {\n name: 'panel-plugin-' + scope.panel.type,\n bindings: { dashboard: '=', panel: '=', row: '=' },\n attrs: {\n dashboard: 'dashboard',\n panel: 'panel',\n class: 'panel-height-helper',\n },\n };\n\n const panelInfo = config.panels[scope.panel.type];\n return importPanelPlugin(panelInfo.id).then((panelPlugin) => {\n const PanelCtrl = panelPlugin.angularPanelCtrl;\n componentInfo.Component = PanelCtrl;\n\n if (!PanelCtrl || PanelCtrl.registered) {\n return componentInfo;\n }\n\n if (PanelCtrl.templatePromise) {\n return PanelCtrl.templatePromise.then((res: any) => {\n return componentInfo;\n });\n }\n\n if (panelInfo) {\n if (panelInfo.baseUrl.includes('plugin-cdn')) {\n PanelCtrl.templateUrl = relativeTemplateUrlToCDN(PanelCtrl.templateUrl, panelInfo.baseUrl);\n } else {\n PanelCtrl.templateUrl = relativeTemplateUrlToAbs(PanelCtrl.templateUrl, panelInfo.baseUrl);\n }\n }\n\n PanelCtrl.templatePromise = getTemplate(PanelCtrl).then((template: any) => {\n PanelCtrl.templateUrl = null;\n PanelCtrl.template = `${template}`;\n return { ...componentInfo, baseUrl: panelInfo.baseUrl };\n });\n\n return PanelCtrl.templatePromise;\n });\n }\n\n function getModule(scope: any, attrs: any): any {\n switch (attrs.type) {\n // QueryCtrl\n case 'query-ctrl': {\n const ds: DataSourceApi = scope.ctrl.datasource as DataSourceApi;\n\n return Promise.resolve({\n baseUrl: ds.meta.baseUrl,\n name: 'query-ctrl-' + ds.meta.id,\n bindings: { target: '=', panelCtrl: '=', datasource: '=' },\n attrs: {\n target: 'ctrl.target',\n 'panel-ctrl': 'ctrl',\n datasource: 'ctrl.datasource',\n },\n Component: ds.components!.QueryCtrl,\n });\n }\n // Annotations\n case 'annotations-query-ctrl': {\n const baseUrl = scope.ctrl.currentDatasource.meta.baseUrl;\n const pluginId = scope.ctrl.currentDatasource.meta.id;\n\n return importDataSourcePlugin(scope.ctrl.currentDatasource.meta).then((dsPlugin) => {\n return {\n baseUrl,\n name: 'annotations-query-ctrl-' + pluginId,\n bindings: { annotation: '=', datasource: '=' },\n attrs: {\n annotation: 'ctrl.currentAnnotation',\n datasource: 'ctrl.currentDatasource',\n },\n Component: dsPlugin.components.AnnotationsQueryCtrl,\n };\n });\n }\n // Datasource ConfigCtrl\n case 'datasource-config-ctrl': {\n const dsMeta = scope.ctrl.datasourceMeta;\n const angularUrl = $location.url();\n return importDataSourcePlugin(dsMeta).then((dsPlugin) => {\n scope.$watch(\n 'ctrl.current',\n () => {\n // This watcher can trigger when we navigate away due to late digests\n // This check is to stop onModelChanged from being called when navigating away\n // as it triggers a redux action which comes before the angular $routeChangeSucces and\n // This makes the bridgeSrv think location changed from redux before detecting it was actually\n // changed from angular.\n if (angularUrl === $location.url()) {\n scope.onModelChanged(scope.ctrl.current);\n }\n },\n true\n );\n\n return {\n baseUrl: dsMeta.baseUrl,\n name: 'ds-config-' + dsMeta.id,\n bindings: { meta: '=', current: '=' },\n attrs: { meta: 'ctrl.datasourceMeta', current: 'ctrl.current' },\n Component: dsPlugin.angularConfigCtrl,\n };\n });\n }\n // AppConfigCtrl\n case 'app-config-ctrl': {\n const model = scope.ctrl.model;\n return importAppPlugin(model).then((appPlugin) => {\n return {\n baseUrl: model.baseUrl,\n name: 'app-config-' + model.id,\n bindings: { appModel: '=', appEditCtrl: '=' },\n attrs: { 'app-model': 'ctrl.model', 'app-edit-ctrl': 'ctrl' },\n Component: appPlugin.angularConfigCtrl,\n };\n });\n }\n // Panel\n case 'panel': {\n return loadPanelComponentInfo(scope, attrs);\n }\n default: {\n return Promise.reject({\n message: 'Could not find component type: ' + attrs.type,\n });\n }\n }\n }\n\n function appendAndCompile(scope: any, elem: JQuery, componentInfo: any) {\n const child = angular.element(document.createElement(componentInfo.name));\n each(componentInfo.attrs, (value, key) => {\n child.attr(key, value);\n });\n\n $compile(child)(scope);\n elem.empty();\n\n // let a binding digest cycle complete before adding to dom\n setTimeout(() => {\n scope.$applyAsync(() => {\n elem.append(child);\n setTimeout(() => {\n scope.$applyAsync(() => {\n scope.$broadcast(PanelEvents.componentDidMount.name);\n });\n });\n });\n });\n }\n\n function registerPluginComponent(scope: any, elem: JQuery, attrs: any, componentInfo: any) {\n if (componentInfo.notFound) {\n elem.empty();\n return;\n }\n\n if (!componentInfo.Component) {\n throw {\n message: 'Failed to find exported plugin component for ' + componentInfo.name,\n };\n }\n\n if (!componentInfo.Component.registered) {\n const directiveName = attrs.$normalize(componentInfo.name);\n const directiveFn = getPluginComponentDirective(componentInfo);\n coreModule.directive(directiveName, directiveFn);\n componentInfo.Component.registered = true;\n }\n\n appendAndCompile(scope, elem, componentInfo);\n }\n\n return {\n restrict: 'E',\n link: (scope: any, elem: JQuery, attrs: any) => {\n getModule(scope, attrs)\n .then((componentInfo: any) => {\n registerPluginComponent(scope, elem, attrs, componentInfo);\n })\n .catch((err: any) => {\n console.error('Plugin component error', err);\n });\n },\n };\n}\n","import { IRootScopeService, IAngularEvent, auto } from 'angular';\nimport $ from 'jquery';\nimport _ from 'lodash'; // eslint-disable-line lodash/import-scope\n\nimport { AppEvent } from '@grafana/data';\nimport { setLegacyAngularInjector, setAngularLoader } from '@grafana/runtime';\nimport { colors } from '@grafana/ui';\nimport coreModule from 'app/angular/core_module';\nimport { AngularLoader } from 'app/angular/services/AngularLoader';\nimport appEvents from 'app/core/app_events';\nimport config from 'app/core/config';\nimport { ContextSrv } from 'app/core/services/context_srv';\nimport { AppEventEmitter, AppEventConsumer } from 'app/types';\n\nimport { UtilSrv } from './services/UtilSrv';\n\nexport type GrafanaRootScope = IRootScopeService & AppEventEmitter & AppEventConsumer & { colors: string[] };\n\nexport class GrafanaCtrl {\n static $inject = ['$scope', 'utilSrv', '$rootScope', 'contextSrv', 'angularLoader', '$injector'];\n\n constructor(\n $scope: any,\n utilSrv: UtilSrv,\n $rootScope: GrafanaRootScope,\n contextSrv: ContextSrv,\n angularLoader: AngularLoader,\n $injector: auto.IInjectorService\n ) {\n // make angular loader service available to react components\n setAngularLoader(angularLoader);\n setLegacyAngularInjector($injector);\n\n $scope.init = () => {\n $scope.contextSrv = contextSrv;\n $scope.appSubUrl = config.appSubUrl;\n $scope._ = _;\n utilSrv.init();\n };\n\n $rootScope.colors = colors;\n\n $rootScope.onAppEvent = function (\n event: AppEvent | string,\n callback: (event: IAngularEvent, ...args: any[]) => void,\n localScope?: any\n ) {\n let unbind;\n if (typeof event === 'string') {\n unbind = $rootScope.$on(event, callback);\n } else {\n unbind = $rootScope.$on(event.name, callback);\n }\n\n let callerScope = this;\n if (callerScope.$id === 1 && !localScope) {\n console.warn('warning rootScope onAppEvent called without localscope');\n }\n if (localScope) {\n callerScope = localScope;\n }\n callerScope.$on('$destroy', unbind);\n };\n\n $rootScope.appEvent = (event: AppEvent | string, payload?: T | any) => {\n if (typeof event === 'string') {\n $rootScope.$emit(event, payload);\n appEvents.emit(event, payload);\n } else {\n $rootScope.$emit(event.name, payload);\n appEvents.emit(event, payload);\n }\n };\n\n $scope.init();\n }\n}\n\nexport function grafanaAppDirective() {\n return {\n restrict: 'E',\n controller: GrafanaCtrl,\n link: (scope: IRootScopeService & AppEventEmitter, elem: JQuery) => {\n const body = $('body');\n // see https://github.com/zenorocha/clipboard.js/issues/155\n $.fn.modal.Constructor.prototype.enforceFocus = () => {};\n\n // handle in active view state class\n let lastActivity = new Date().getTime();\n let activeUser = true;\n const inActiveTimeLimit = 60 * 5000;\n\n function checkForInActiveUser() {\n if (!activeUser) {\n return;\n }\n // only go to activity low mode on dashboard page\n if (!body.hasClass('page-dashboard')) {\n return;\n }\n\n if (new Date().getTime() - lastActivity > inActiveTimeLimit) {\n activeUser = false;\n body.addClass('view-mode--inactive');\n }\n }\n\n function userActivityDetected() {\n lastActivity = new Date().getTime();\n if (!activeUser) {\n activeUser = true;\n body.removeClass('view-mode--inactive');\n }\n }\n\n // mouse and keyboard is user activity\n body.mousemove(userActivityDetected);\n body.keydown(userActivityDetected);\n // set useCapture = true to catch event here\n document.addEventListener('wheel', userActivityDetected, { capture: true, passive: true });\n // treat tab change as activity\n document.addEventListener('visibilitychange', userActivityDetected);\n\n // check every 2 seconds\n setInterval(checkForInActiveUser, 2000);\n\n // handle document clicks that should hide things\n body.click((evt) => {\n const target = $(evt.target);\n if (target.parents().length === 0) {\n return;\n }\n\n // ensure dropdown menu doesn't impact on z-index\n body.find('.dropdown-menu-open').removeClass('dropdown-menu-open');\n\n // for stuff that animates, slides out etc, clicking it needs to\n // hide it right away\n const clickAutoHide = target.closest('[data-click-hide]');\n if (clickAutoHide.length) {\n const clickAutoHideParent = clickAutoHide.parent();\n clickAutoHide.detach();\n setTimeout(() => {\n clickAutoHideParent.append(clickAutoHide);\n }, 100);\n }\n\n // hide popovers\n const popover = elem.find('.popover');\n if (popover.length > 0 && target.parents('.graph-legend').length === 0) {\n popover.hide();\n }\n });\n },\n };\n}\n\ncoreModule.directive('grafanaApp', grafanaAppDirective);\n","// This is empty for now, as I think it's not going to be necessary.\n// This replaces Angular RouteParamsProvider implementation with a dummy one to keep the ball rolling\n\nimport { navigationLogger } from '@grafana/runtime';\n\nexport class RouteParamsProvider {\n constructor() {\n navigationLogger('Patch angular', false, 'RouteParamsProvider');\n }\n $get = () => {\n // throw new Error('TODO: Refactor $routeParams');\n };\n}\n","// This is empty for now, as I think it's not going to be necessary.\n// This replaces Angular RouteProvider implementation with a dummy one to keep the ball rolling\n\nimport { navigationLogger } from '@grafana/runtime';\n\nexport class RouteProvider {\n constructor() {\n navigationLogger('Patch angular', false, 'RouteProvider');\n }\n\n $get() {\n return this;\n }\n}\n","import { ILocationService } from 'angular';\n\nimport { RouteParamsProvider } from '../core/navigation/patch/RouteParamsProvider';\nimport { RouteProvider } from '../core/navigation/patch/RouteProvider';\n\nimport { AngularLocationWrapper } from './AngularLocationWrapper';\nimport { coreModule } from './core_module';\n\n// Neutralizing Angular’s location tampering\n// https://stackoverflow.com/a/19825756\nconst tamperAngularLocation = () => {\n coreModule.config([\n '$provide',\n ($provide: any) => {\n $provide.decorator('$browser', [\n '$delegate',\n ($delegate: any) => {\n $delegate.onUrlChange = () => {};\n $delegate.url = () => '';\n\n return $delegate;\n },\n ]);\n },\n ]);\n};\n\n// Intercepting $location service with implementation based on history\nconst interceptAngularLocation = () => {\n coreModule.config([\n '$provide',\n ($provide: any) => {\n $provide.decorator('$location', [\n '$delegate',\n ($delegate: ILocationService) => {\n $delegate = new AngularLocationWrapper() as unknown as ILocationService;\n return $delegate;\n },\n ]);\n },\n ]);\n coreModule.provider('$route', RouteProvider);\n coreModule.provider('$routeParams', RouteParamsProvider);\n};\n\nexport function initAngularRoutingBridge() {\n tamperAngularLocation();\n interceptAngularLocation();\n}\n","export function monkeyPatchInjectorWithPreAssignedBindings(injector: any) {\n injector.oldInvoke = injector.invoke;\n injector.invoke = (fn: any, self: any, locals: any, serviceName: any) => {\n const parentScope = locals?.$scope?.$parent;\n\n if (parentScope) {\n // PanelCtrl\n if (parentScope.panel) {\n self.panel = parentScope.panel;\n }\n\n // Panels & dashboard SettingsCtrl\n if (parentScope.dashboard) {\n self.dashboard = parentScope.dashboard;\n }\n\n // Query editors\n if (parentScope.ctrl?.target) {\n self.panelCtrl = parentScope.ctrl;\n self.datasource = parentScope.ctrl.datasource;\n self.target = parentScope.ctrl.target;\n }\n\n // Data source ConfigCtrl\n if (parentScope.ctrl?.datasourceMeta) {\n self.meta = parentScope.ctrl.datasourceMeta;\n self.current = parentScope.ctrl.current;\n }\n\n // Data source AnnotationsQueryCtrl\n if (parentScope.ctrl?.currentAnnotation) {\n self.annotation = parentScope.ctrl.currentAnnotation;\n self.datasource = parentScope.ctrl.currentDatasource;\n }\n\n // App config ctrl\n if (parentScope.isAppConfigCtrl) {\n self.appEditCtrl = parentScope.ctrl;\n self.appModel = parentScope.ctrl.model;\n }\n\n // App page ctrl\n if (parentScope.$parent?.$parent?.ctrl?.appModel) {\n self.appModel = parentScope.$parent?.$parent?.ctrl?.appModel;\n }\n }\n\n return injector.oldInvoke(fn, self, locals, serviceName);\n };\n}\n","import { deprecationWarning } from '@grafana/data';\nimport { appEvents } from 'app/core/app_events';\n\nimport { HideModalEvent, ShowModalEvent } from '../../types/events';\n\n/**\n * Old legacy utilSrv exposed to angular services and handles angular modals.\n * Not used by any core or known external plugin.\n */\nexport class UtilSrv {\n modalScope: any;\n\n constructor() {}\n\n init() {\n appEvents.subscribe(ShowModalEvent, (e) => this.showModal(e.payload));\n appEvents.subscribe(HideModalEvent, this.hideModal.bind(this));\n }\n\n /**\n * @deprecated use showModalReact instead that has this capability built in\n */\n hideModal() {\n deprecationWarning('UtilSrv', 'hideModal', '');\n if (this.modalScope && this.modalScope.dismiss) {\n this.modalScope.dismiss();\n }\n }\n\n /**\n * @deprecated\n */\n showModal(options: any) {\n deprecationWarning('UtilSrv', 'showModal', 'publish ShowModalReactEvent');\n }\n}\n","import { cloneDeep } from 'lodash';\n\nimport { AnnotationEvent, deprecationWarning } from '@grafana/data';\nimport { deleteAnnotation, saveAnnotation, updateAnnotation } from 'app/features/annotations/api';\nimport { AnnotationQueryOptions } from 'app/features/annotations/types';\n\n/**\n * @deprecated AnnotationsSrv is deprecated in favor of DashboardQueryRunner\n */\nexport class AnnotationsSrv {\n /**\n * @deprecated clearPromiseCaches is deprecated\n */\n clearPromiseCaches() {\n deprecationWarning('annotations_srv.ts', 'clearPromiseCaches', 'DashboardQueryRunner');\n }\n\n /**\n * @deprecated getAnnotations is deprecated in favor of DashboardQueryRunner.getResult\n */\n getAnnotations(options: AnnotationQueryOptions) {\n deprecationWarning('annotations_srv.ts', 'getAnnotations', 'DashboardQueryRunner.getResult');\n return Promise.resolve({ annotations: [], alertState: undefined });\n }\n\n /**\n * @deprecated getAlertStates is deprecated in favor of DashboardQueryRunner.getResult\n */\n getAlertStates(options: any) {\n deprecationWarning('annotations_srv.ts', 'getAlertStates', 'DashboardQueryRunner.getResult');\n return Promise.resolve(undefined);\n }\n\n /**\n * @deprecated getGlobalAnnotations is deprecated in favor of DashboardQueryRunner.getResult\n */\n getGlobalAnnotations(options: AnnotationQueryOptions) {\n deprecationWarning('annotations_srv.ts', 'getGlobalAnnotations', 'DashboardQueryRunner.getResult');\n return Promise.resolve([]);\n }\n\n /**\n * @deprecated saveAnnotationEvent is deprecated\n */\n saveAnnotationEvent(annotation: AnnotationEvent) {\n deprecationWarning('annotations_srv.ts', 'saveAnnotationEvent', 'api/saveAnnotation');\n return saveAnnotation(annotation);\n }\n\n /**\n * @deprecated updateAnnotationEvent is deprecated\n */\n updateAnnotationEvent(annotation: AnnotationEvent) {\n deprecationWarning('annotations_srv.ts', 'updateAnnotationEvent', 'api/updateAnnotation');\n return updateAnnotation(annotation);\n }\n\n /**\n * @deprecated deleteAnnotationEvent is deprecated\n */\n deleteAnnotationEvent(annotation: AnnotationEvent) {\n deprecationWarning('annotations_srv.ts', 'deleteAnnotationEvent', 'api/deleteAnnotation');\n return deleteAnnotation(annotation);\n }\n\n /**\n * @deprecated translateQueryResult is deprecated in favor of DashboardQueryRunner/utils/translateQueryResult\n */\n translateQueryResult(annotation: any, results: any) {\n deprecationWarning('annotations_srv.ts', 'translateQueryResult', 'DashboardQueryRunner/utils/translateQueryResult');\n // if annotation has snapshotData\n // make clone and remove it\n if (annotation.snapshotData) {\n annotation = cloneDeep(annotation);\n delete annotation.snapshotData;\n }\n\n for (const item of results) {\n item.source = annotation;\n item.color = annotation.iconColor;\n item.type = annotation.name;\n item.isRegion = item.timeEnd && item.time !== item.timeEnd;\n }\n\n return results;\n }\n}\n","import { getBackendSrv, getDataSourceSrv } from '@grafana/runtime';\nimport { contextSrv } from 'app/core/core';\nimport { getDashboardSrv } from 'app/features/dashboard/services/DashboardSrv';\nimport { validationSrv } from 'app/features/manage-dashboards/services/ValidationSrv';\nimport { getLinkSrv } from 'app/features/panel/panellinks/link_srv';\n\nimport coreModule from './core_module';\nimport { UtilSrv } from './services/UtilSrv';\nimport { AnnotationsSrv } from './services/annotations_srv';\n\nexport function registerComponents() {\n coreModule.factory('backendSrv', () => getBackendSrv());\n coreModule.factory('contextSrv', () => contextSrv);\n coreModule.factory('dashboardSrv', () => getDashboardSrv());\n coreModule.factory('datasourceSrv', () => getDataSourceSrv());\n coreModule.factory('linkSrv', () => getLinkSrv());\n coreModule.factory('validationSrv', () => validationSrv);\n coreModule.service('annotationsSrv', AnnotationsSrv);\n coreModule.service('utilSrv', UtilSrv);\n}\n","import 'angular';\nimport 'angular-route';\nimport 'angular-sanitize';\nimport 'angular-bindonce';\nimport 'vendor/bootstrap/bootstrap';\n\nimport angular from 'angular'; // eslint-disable-line no-duplicate-imports\nimport { extend } from 'lodash';\n\nimport { getTemplateSrv } from '@grafana/runtime';\nimport coreModule, { angularModules } from 'app/angular/core_module';\nimport appEvents from 'app/core/app_events';\nimport { config } from 'app/core/config';\nimport { contextSrv } from 'app/core/services/context_srv';\nimport { DashboardLoaderSrv } from 'app/features/dashboard/services/DashboardLoaderSrv';\nimport { getTimeSrv } from 'app/features/dashboard/services/TimeSrv';\nimport { exposeToPlugin } from 'app/features/plugins/plugin_loader';\nimport * as sdk from 'app/plugins/sdk';\n\nimport { registerAngularDirectives } from './angular_wrappers';\nimport { initAngularRoutingBridge } from './bridgeReactAngularRouting';\nimport { monkeyPatchInjectorWithPreAssignedBindings } from './injectorMonkeyPatch';\nimport { promiseToDigest } from './promiseToDigest';\nimport { registerComponents } from './registerComponents';\n\nexport class AngularApp {\n ngModuleDependencies: any[];\n preBootModules: any[];\n registerFunctions: any;\n\n constructor() {\n this.preBootModules = [];\n this.ngModuleDependencies = [];\n this.registerFunctions = {};\n }\n\n init() {\n const app = angular.module('grafana', []);\n\n app.config([\n '$controllerProvider',\n '$compileProvider',\n '$filterProvider',\n '$httpProvider',\n '$provide',\n '$sceDelegateProvider',\n (\n $controllerProvider: angular.IControllerProvider,\n $compileProvider: angular.ICompileProvider,\n $filterProvider: angular.IFilterProvider,\n $httpProvider: angular.IHttpProvider,\n $provide: angular.auto.IProvideService,\n $sceDelegateProvider: angular.ISCEDelegateProvider\n ) => {\n if (config.buildInfo.env !== 'development') {\n $compileProvider.debugInfoEnabled(false);\n }\n\n $httpProvider.useApplyAsync(true);\n\n if (Boolean(config.pluginsCDNBaseURL)) {\n $sceDelegateProvider.trustedResourceUrlList(['self', `${config.pluginsCDNBaseURL}/**`]);\n }\n\n this.registerFunctions.controller = $controllerProvider.register;\n this.registerFunctions.directive = $compileProvider.directive;\n this.registerFunctions.factory = $provide.factory;\n this.registerFunctions.service = $provide.service;\n this.registerFunctions.filter = $filterProvider.register;\n\n $provide.decorator('$http', [\n '$delegate',\n '$templateCache',\n ($delegate: any, $templateCache: any) => {\n const get = $delegate.get;\n $delegate.get = (url: string, config: any) => {\n if (url.match(/\\.html$/)) {\n // some template's already exist in the cache\n if (!$templateCache.get(url)) {\n url += '?v=' + new Date().getTime();\n }\n }\n return get(url, config);\n };\n return $delegate;\n },\n ]);\n },\n ]);\n\n this.ngModuleDependencies = ['grafana.core', 'ngSanitize', 'grafana', 'pasvaz.bindonce', 'react'];\n\n // makes it possible to add dynamic stuff\n angularModules.forEach((m: angular.IModule) => {\n this.useModule(m);\n });\n\n // register react angular wrappers\n angular.module('grafana.services').service('dashboardLoaderSrv', DashboardLoaderSrv);\n\n coreModule.factory('timeSrv', () => getTimeSrv());\n coreModule.factory('templateSrv', () => getTemplateSrv());\n\n registerAngularDirectives();\n registerComponents();\n initAngularRoutingBridge();\n\n // Angular plugins import this\n exposeToPlugin('angular', angular);\n exposeToPlugin('app/core/utils/promiseToDigest', { promiseToDigest, __esModule: true });\n exposeToPlugin('app/plugins/sdk', sdk);\n exposeToPlugin('app/core/core_module', coreModule);\n exposeToPlugin('app/core/core', {\n coreModule: coreModule,\n appEvents: appEvents,\n contextSrv: contextSrv,\n __esModule: true,\n });\n\n // disable tool tip animation\n $.fn.tooltip.defaults.animation = false;\n }\n\n useModule(module: angular.IModule) {\n if (this.preBootModules) {\n this.preBootModules.push(module);\n } else {\n extend(module, this.registerFunctions);\n }\n this.ngModuleDependencies.push(module.name);\n return module;\n }\n\n bootstrap() {\n const injector = angular.bootstrap(document.getElementById('ngRoot')!, this.ngModuleDependencies);\n\n monkeyPatchInjectorWithPreAssignedBindings(injector);\n\n injector.invoke(() => {\n this.preBootModules.forEach((module) => {\n extend(module, this.registerFunctions);\n });\n\n // I don't know\n return () => {};\n });\n\n return injector;\n }\n}\n","import { isArray } from 'lodash';\nimport { Unsubscribable } from 'rxjs';\n\nimport {\n DataFrame,\n DataQueryResponse,\n DataSourceApi,\n LegacyResponseData,\n LoadingState,\n PanelData,\n PanelEvents,\n TimeRange,\n toDataFrameDTO,\n toLegacyResponseData,\n} from '@grafana/data';\nimport { PanelCtrl } from 'app/angular/panel/panel_ctrl';\nimport { ContextSrv } from 'app/core/services/context_srv';\nimport { PanelModel } from 'app/features/dashboard/state';\nimport { applyPanelTimeOverrides } from 'app/features/dashboard/utils/panel';\n\nimport { PanelQueryRunner } from '../../features/query/state/PanelQueryRunner';\n\nclass MetricsPanelCtrl extends PanelCtrl {\n declare datasource: DataSourceApi;\n declare range: TimeRange;\n\n contextSrv: ContextSrv;\n datasourceSrv: any;\n timeSrv: any;\n templateSrv: any;\n interval: any;\n intervalMs: any;\n resolution: any;\n timeInfo?: string;\n skipDataOnInit = false;\n dataList: LegacyResponseData[] = [];\n querySubscription?: Unsubscribable | null;\n useDataFrames = false;\n panelData?: PanelData;\n\n constructor($scope: any, $injector: any) {\n super($scope, $injector);\n\n this.contextSrv = $injector.get('contextSrv');\n this.datasourceSrv = $injector.get('datasourceSrv');\n this.timeSrv = $injector.get('timeSrv');\n this.templateSrv = $injector.get('templateSrv');\n this.panel.datasource = this.panel.datasource || null;\n\n this.events.on(PanelEvents.refresh, this.onMetricsPanelRefresh.bind(this));\n this.events.on(PanelEvents.panelTeardown, this.onPanelTearDown.bind(this));\n this.events.on(PanelEvents.componentDidMount, this.onMetricsPanelMounted.bind(this));\n }\n\n private onMetricsPanelMounted() {\n const queryRunner = this.panel.getQueryRunner() as PanelQueryRunner;\n this.querySubscription = queryRunner\n .getData({ withTransforms: true, withFieldConfig: true })\n .subscribe(this.panelDataObserver);\n }\n\n private onPanelTearDown() {\n if (this.querySubscription) {\n this.querySubscription.unsubscribe();\n this.querySubscription = null;\n }\n }\n\n private onMetricsPanelRefresh() {\n // ignore fetching data if another panel is in fullscreen\n if (this.otherPanelInFullscreenMode()) {\n return;\n }\n\n // if we have snapshot data use that\n if (this.panel.snapshotData) {\n this.updateTimeRange();\n let data = this.panel.snapshotData;\n // backward compatibility\n if (!isArray(data)) {\n data = data.data;\n }\n\n this.panelData = {\n state: LoadingState.Done,\n series: data,\n timeRange: this.range,\n };\n\n // Defer panel rendering till the next digest cycle.\n // For some reason snapshot panels don't init at this time, so this helps to avoid rendering issues.\n return this.$timeout(() => {\n this.events.emit(PanelEvents.dataSnapshotLoad, data);\n });\n }\n\n // clear loading/error state\n delete this.error;\n this.loading = true;\n\n // load datasource service\n return this.datasourceSrv\n .get(this.panel.datasource, this.panel.scopedVars)\n .then(this.issueQueries.bind(this))\n .catch((err: any) => {\n this.processDataError(err);\n });\n }\n\n processDataError(err: any) {\n // if canceled keep loading set to true\n if (err.cancelled) {\n console.log('Panel request cancelled', err);\n return;\n }\n\n this.error = err.message || 'Request Error';\n\n if (err.data) {\n if (err.data.message) {\n this.error = err.data.message;\n } else if (err.data.error) {\n this.error = err.data.error;\n }\n }\n\n this.angularDirtyCheck();\n }\n\n angularDirtyCheck() {\n if (!this.$scope.$root.$$phase) {\n this.$scope.$digest();\n }\n }\n\n // Updates the response with information from the stream\n panelDataObserver = {\n next: (data: PanelData) => {\n this.panelData = data;\n\n if (data.state === LoadingState.Error) {\n this.loading = false;\n this.processDataError(data.error);\n }\n\n // Ignore data in loading state\n if (data.state === LoadingState.Loading) {\n this.loading = true;\n this.angularDirtyCheck();\n return;\n }\n\n if (data.request) {\n const { timeInfo } = data.request;\n if (timeInfo) {\n this.timeInfo = timeInfo;\n }\n }\n\n if (data.timeRange) {\n this.range = data.timeRange;\n }\n\n if (this.useDataFrames) {\n this.handleDataFrames(data.series);\n } else {\n // Make the results look as if they came directly from a <6.2 datasource request\n const legacy = data.series.map((v) => toLegacyResponseData(v));\n this.handleQueryResult({ data: legacy });\n }\n\n this.angularDirtyCheck();\n },\n };\n\n updateTimeRange(datasource?: DataSourceApi) {\n this.datasource = datasource || this.datasource;\n this.range = this.timeSrv.timeRange();\n\n const newTimeData = applyPanelTimeOverrides(this.panel, this.range);\n this.timeInfo = newTimeData.timeInfo;\n this.range = newTimeData.timeRange;\n }\n\n issueQueries(datasource: DataSourceApi) {\n this.updateTimeRange(datasource);\n\n this.datasource = datasource;\n\n const panel = this.panel as PanelModel;\n const queryRunner = panel.getQueryRunner();\n\n return queryRunner.run({\n datasource: panel.datasource,\n queries: panel.targets,\n panelId: panel.id,\n dashboardUID: this.dashboard.uid,\n timezone: this.dashboard.getTimezone(),\n timeInfo: this.timeInfo,\n timeRange: this.range,\n maxDataPoints: panel.maxDataPoints || this.width,\n minInterval: panel.interval,\n publicDashboardAccessToken: this.dashboard.meta.publicDashboardAccessToken,\n scopedVars: panel.scopedVars,\n cacheTimeout: panel.cacheTimeout,\n queryCachingTTL: panel.queryCachingTTL,\n transformations: panel.transformations,\n });\n }\n\n handleDataFrames(data: DataFrame[]) {\n this.loading = false;\n\n if (this.dashboard && this.dashboard.snapshot) {\n this.panel.snapshotData = data.map((frame) => toDataFrameDTO(frame));\n }\n\n try {\n this.events.emit(PanelEvents.dataFramesReceived, data);\n } catch (err) {\n this.processDataError(err);\n }\n }\n\n handleQueryResult(result: DataQueryResponse) {\n this.loading = false;\n\n if (this.dashboard.snapshot) {\n this.panel.snapshotData = result.data;\n }\n\n if (!result || !result.data) {\n console.log('Data source query result invalid, missing data field:', result);\n result = { data: [] };\n }\n\n try {\n this.events.emit(PanelEvents.dataReceived, result.data);\n } catch (err) {\n this.processDataError(err);\n }\n }\n}\n\nexport { MetricsPanelCtrl };\n","import { auto } from 'angular';\nimport { isString } from 'lodash';\n\nimport {\n AppEvent,\n PanelEvents,\n PanelPluginMeta,\n AngularPanelMenuItem,\n EventBusExtended,\n EventBusSrv,\n} from '@grafana/data';\nimport { AngularLocationWrapper } from 'app/angular/AngularLocationWrapper';\nimport config from 'app/core/config';\nimport { profiler } from 'app/core/core';\n\nimport { DashboardModel } from '../../features/dashboard/state';\n\nexport class PanelCtrl {\n panel: any;\n error: any;\n declare dashboard: DashboardModel;\n pluginName = '';\n pluginId = '';\n editorTabs: any;\n $scope: any;\n $injector: auto.IInjectorService;\n $timeout: any;\n editModeInitiated = false;\n declare height: number;\n declare width: number;\n containerHeight: any;\n events: EventBusExtended;\n loading = false;\n timing: any;\n $location: AngularLocationWrapper;\n\n constructor($scope: any, $injector: auto.IInjectorService) {\n this.panel = this.panel ?? $scope.$parent.panel;\n this.dashboard = this.dashboard ?? $scope.$parent.dashboard;\n this.$injector = $injector;\n this.$scope = $scope;\n this.$timeout = $injector.get('$timeout');\n this.editorTabs = [];\n this.$location = new AngularLocationWrapper();\n this.events = new EventBusSrv();\n this.timing = {}; // not used but here to not break plugins\n\n const plugin = config.panels[this.panel.type];\n if (plugin) {\n this.pluginId = plugin.id;\n this.pluginName = plugin.name;\n }\n\n $scope.$on(PanelEvents.componentDidMount.name, () => this.panelDidMount());\n }\n\n panelDidMount() {\n this.events.emit(PanelEvents.componentDidMount);\n this.events.emit(PanelEvents.initialized);\n this.dashboard.panelInitialized(this.panel);\n }\n\n renderingCompleted() {\n profiler.renderingCompleted();\n }\n\n refresh() {\n this.panel.refresh();\n }\n\n publishAppEvent(event: AppEvent, payload?: T) {\n this.$scope.$root.appEvent(event, payload);\n }\n\n initEditMode() {\n if (!this.editModeInitiated) {\n this.editModeInitiated = true;\n this.events.emit(PanelEvents.editModeInitialized);\n }\n }\n\n addEditorTab(title: string, directiveFn: any, index?: number, icon?: any) {\n const editorTab = { title, directiveFn, icon };\n\n if (isString(directiveFn)) {\n editorTab.directiveFn = () => {\n return { templateUrl: directiveFn };\n };\n }\n\n if (index) {\n this.editorTabs.splice(index, 0, editorTab);\n } else {\n this.editorTabs.push(editorTab);\n }\n }\n\n getExtendedMenu() {\n const menu: AngularPanelMenuItem[] = [];\n this.events.emit(PanelEvents.initPanelActions, menu);\n return menu;\n }\n\n // Override in sub-class to add items before extended menu\n async getAdditionalMenuItems(): Promise {\n return [];\n }\n\n otherPanelInFullscreenMode() {\n return this.dashboard.otherPanelInFullscreen(this.panel);\n }\n\n render(payload?: any) {\n this.events.emit(PanelEvents.render, payload);\n }\n\n // overriden from react\n onPluginTypeChange = (plugin: PanelPluginMeta) => {};\n}\n","import { auto } from 'angular';\nimport { indexOf } from 'lodash';\n\nexport class QueryCtrl {\n target!: T;\n datasource!: any;\n panelCtrl!: any;\n panel: any;\n hasRawMode!: boolean;\n error?: string | null;\n isLastQuery: boolean;\n\n constructor(public $scope: any, public $injector: auto.IInjectorService) {\n this.panelCtrl = this.panelCtrl ?? $scope.ctrl.panelCtrl;\n this.target = this.target ?? $scope.ctrl.target;\n this.datasource = this.datasource ?? $scope.ctrl.datasource;\n this.panel = this.panelCtrl?.panel ?? $scope.ctrl.panelCtrl.panel;\n this.isLastQuery = indexOf(this.panel.targets, this.target) === this.panel.targets.length - 1;\n }\n\n refresh() {\n this.panelCtrl.refresh();\n }\n}\n","let templates = (require as any).context('../', true, /\\.html$/);\ntemplates.keys().forEach((key: string) => {\n templates(key);\n});\n","import { IScope } from 'angular';\n\nexport const promiseToDigest = ($scope: IScope) => (promise: Promise) => promise.finally($scope.$evalAsync);\n","import { makeClassES5Compatible } from '@grafana/data';\nimport { loadPluginCss } from '@grafana/runtime';\nimport { MetricsPanelCtrl as MetricsPanelCtrlES6 } from 'app/angular/panel/metrics_panel_ctrl';\nimport { PanelCtrl as PanelCtrlES6 } from 'app/angular/panel/panel_ctrl';\nimport { QueryCtrl as QueryCtrlES6 } from 'app/angular/panel/query_ctrl';\n\nconst PanelCtrl = makeClassES5Compatible(PanelCtrlES6);\nconst MetricsPanelCtrl = makeClassES5Compatible(MetricsPanelCtrlES6);\nconst QueryCtrl = makeClassES5Compatible(QueryCtrlES6);\n\nexport { PanelCtrl, MetricsPanelCtrl, QueryCtrl, loadPluginCss };\n","/* ===================================================\n * bootstrap-transition.js v2.3.2\n * http://getbootstrap.com/2.3.2/javascript.html#transitions\n * ===================================================\n * Copyright 2013 Twitter, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ========================================================== */\n\n\n!function($) {\n\n \"use strict\"; // jshint ;_;\n\n\n /* CSS TRANSITION SUPPORT (http://www.modernizr.com/)\n * ======================================================= */\n\n $(function() {\n\n $.support.transition = (function() {\n\n var transitionEnd = (function() {\n\n var el = document.createElement('bootstrap')\n , transEndEventNames = {\n 'WebkitTransition': 'webkitTransitionEnd'\n , 'MozTransition': 'transitionend'\n , 'OTransition': 'oTransitionEnd otransitionend'\n , 'transition': 'transitionend'\n }\n , name\n\n for (name in transEndEventNames) {\n if (el.style[name] !== undefined) {\n return transEndEventNames[name]\n }\n }\n\n }())\n\n return transitionEnd && {\n end: transitionEnd\n }\n\n })()\n\n })\n\n}(window.jQuery);/* ==========================================================\n * bootstrap-alert.js v2.3.2\n * http://getbootstrap.com/2.3.2/javascript.html#alerts\n * ==========================================================\n * Copyright 2013 Twitter, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ========================================================== */\n\n\n!function($) {\n\n \"use strict\"; // jshint ;_;\n\n /* ============================================================\n * bootstrap-dropdown.js v2.3.2\n * http://getbootstrap.com/2.3.2/javascript.html#dropdowns\n * ============================================================\n * Copyright 2013 Twitter, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ============================================================ */\n\n\n /* DROPDOWN CLASS DEFINITION\n * ========================= */\n\n var toggle = '[data-toggle=dropdown]'\n , Dropdown = function(element) {\n var $el = $(element).on('click.dropdown.data-api', this.toggle)\n $('html').on('click.dropdown.data-api', function() {\n $el.parent().removeClass('open')\n })\n }\n\n Dropdown.prototype = {\n\n constructor: Dropdown\n\n , toggle: function(e) {\n var $this = $(this)\n , $parent\n , isActive\n\n if ($this.is('.disabled, :disabled')) return\n\n $parent = getParent($this)\n\n isActive = $parent.hasClass('open')\n\n clearMenus()\n\n if (!isActive) {\n if ('ontouchstart' in document.documentElement) {\n // if mobile we we use a backdrop because click events don't delegate\n $('
    ').insertBefore($(this)).on('click', clearMenus)\n }\n $parent.toggleClass('open')\n }\n\n $this.focus()\n\n return false\n }\n\n , keydown: function(e) {\n var $this\n , $items\n , $active\n , $parent\n , isActive\n , index\n\n if (!/(38|40|27)/.test(e.keyCode)) return\n\n $this = $(this)\n\n e.preventDefault()\n e.stopPropagation()\n\n if ($this.is('.disabled, :disabled')) return\n\n $parent = getParent($this)\n\n isActive = $parent.hasClass('open')\n\n if (!isActive || (isActive && e.keyCode == 27)) {\n if (e.which == 27) $parent.find(toggle).focus()\n return $this.click()\n }\n\n $items = $('[role=menu] li:not(.divider):visible a', $parent)\n\n if (!$items.length) return\n\n index = $items.index($items.filter(':focus'))\n\n if (e.keyCode == 38 && index > 0) index-- // up\n if (e.keyCode == 40 && index < $items.length - 1) index++ // down\n if (!~index) index = 0\n\n $items\n .eq(index)\n .focus()\n }\n\n }\n\n function clearMenus() {\n $('.dropdown-backdrop').remove()\n $(toggle).each(function() {\n getParent($(this)).removeClass('open')\n })\n }\n\n function getParent($this) {\n var selector = $this.attr('data-target')\n , $parent\n\n if (!selector) {\n selector = $this.attr('href')\n // grafana backport fix from bootstrap 3\n selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\\s]*$)/, '') //strip for ie7\n }\n\n $parent = selector && $.find(selector)\n\n if (!$parent || !$parent.length) $parent = $this.parent()\n\n return $parent\n }\n\n\n /* DROPDOWN PLUGIN DEFINITION\n * ========================== */\n\n var old = $.fn.dropdown\n\n $.fn.dropdown = function(option) {\n return this.each(function() {\n var $this = $(this)\n , data = $this.data('dropdown')\n if (!data) $this.data('dropdown', (data = new Dropdown(this)))\n if (typeof option == 'string') data[option].call($this)\n })\n }\n\n $.fn.dropdown.Constructor = Dropdown\n\n\n /* DROPDOWN NO CONFLICT\n * ==================== */\n\n $.fn.dropdown.noConflict = function() {\n $.fn.dropdown = old\n return this\n }\n\n\n /* APPLY TO STANDARD DROPDOWN ELEMENTS\n * =================================== */\n\n $(document)\n .on('click.dropdown.data-api', clearMenus)\n .on('click.dropdown.data-api', '.dropdown form', function(e) { e.stopPropagation() })\n .on('click.dropdown.data-api', toggle, Dropdown.prototype.toggle)\n .on('keydown.dropdown.data-api', toggle + ', [role=menu]', Dropdown.prototype.keydown)\n\n}(window.jQuery);\n/* =========================================================\n * bootstrap-modal.js v2.3.2\n * http://getbootstrap.com/2.3.2/javascript.html#modals\n * =========================================================\n * Copyright 2013 Twitter, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ========================================================= */\n\n\n!function($) {\n\n \"use strict\"; // jshint ;_;\n\n\n /* MODAL CLASS DEFINITION\n * ====================== */\n\n var Modal = function(element, options) {\n this.options = options\n this.$element = $(element)\n .delegate('[data-dismiss=\"modal\"]', 'click.dismiss.modal', $.proxy(this.hide, this))\n this.options.remote && this.$element.find('.modal-body').load(this.options.remote)\n }\n\n Modal.prototype = {\n\n constructor: Modal\n\n , toggle: function() {\n return this[!this.isShown ? 'show' : 'hide']()\n }\n\n , show: function() {\n var that = this\n , e = $.Event('show')\n\n this.$element.trigger(e)\n\n if (this.isShown || e.isDefaultPrevented()) return\n\n this.isShown = true\n\n this.escape()\n\n this.backdrop(function() {\n var transition = $.support.transition && that.$element.hasClass('fade')\n\n if (!that.$element.parent().length) {\n that.$element.appendTo(document.body) //don't move modals dom position\n }\n\n that.$element.show()\n\n if (transition) {\n that.$element[0].offsetWidth // force reflow\n }\n\n that.$element\n .addClass('in')\n .attr('aria-hidden', false)\n\n that.enforceFocus()\n\n transition ?\n that.$element.one($.support.transition.end, function() { that.$element.focus().trigger('shown') }) :\n that.$element.focus().trigger('shown')\n\n })\n }\n\n , hide: function(e) {\n e && e.preventDefault()\n\n var that = this\n\n e = $.Event('hide')\n\n this.$element.trigger(e)\n\n if (!this.isShown || e.isDefaultPrevented()) return\n\n this.isShown = false\n\n this.escape()\n\n $(document).off('focusin.modal')\n\n this.$element\n .removeClass('in')\n .attr('aria-hidden', true)\n\n $.support.transition && this.$element.hasClass('fade') ?\n this.hideWithTransition() :\n this.hideModal()\n }\n\n , enforceFocus: function() {\n var that = this\n $(document).on('focusin.modal', function(e) {\n if (that.$element[0] !== e.target && !that.$element.has(e.target).length) {\n that.$element.focus()\n }\n })\n }\n\n , escape: function() {\n var that = this\n if (this.isShown && this.options.keyboard) {\n this.$element.on('keyup.dismiss.modal', function(e) {\n e.which == 27 && that.hide()\n })\n } else if (!this.isShown) {\n this.$element.off('keyup.dismiss.modal')\n }\n }\n\n , hideWithTransition: function() {\n var that = this\n , timeout = setTimeout(function() {\n that.$element.off($.support.transition.end)\n that.hideModal()\n }, 500)\n\n this.$element.one($.support.transition.end, function() {\n clearTimeout(timeout)\n that.hideModal()\n })\n }\n\n , hideModal: function() {\n var that = this\n this.$element.hide()\n this.backdrop(function() {\n that.removeBackdrop()\n that.$element.trigger('hidden')\n })\n }\n\n , removeBackdrop: function() {\n this.$backdrop && this.$backdrop.remove()\n this.$backdrop = null\n }\n\n , backdrop: function(callback) {\n var that = this\n , animate = this.$element.hasClass('fade') ? 'fade' : ''\n\n if (this.isShown && this.options.backdrop) {\n var doAnimate = $.support.transition && animate\n\n this.$backdrop = $('
    ')\n .appendTo(document.body)\n\n this.$backdrop.click(\n this.options.backdrop == 'static' ?\n $.proxy(this.$element[0].focus, this.$element[0])\n : $.proxy(this.hide, this)\n )\n\n if (doAnimate) this.$backdrop[0].offsetWidth // force reflow\n\n this.$backdrop.addClass('in')\n\n if (!callback) return\n\n doAnimate ?\n this.$backdrop.one($.support.transition.end, callback) :\n callback()\n\n } else if (!this.isShown && this.$backdrop) {\n this.$backdrop.removeClass('in')\n\n $.support.transition && this.$element.hasClass('fade') ?\n this.$backdrop.one($.support.transition.end, callback) :\n callback()\n\n } else if (callback) {\n callback()\n }\n }\n }\n\n\n /* MODAL PLUGIN DEFINITION\n * ======================= */\n\n var old = $.fn.modal\n\n $.fn.modal = function(option) {\n return this.each(function() {\n var $this = $(this)\n , data = $this.data('modal')\n , options = $.extend({}, $.fn.modal.defaults, $this.data(), typeof option == 'object' && option)\n if (!data) $this.data('modal', (data = new Modal(this, options)))\n if (typeof option == 'string') data[option]()\n else if (options.show) data.show()\n })\n }\n\n $.fn.modal.defaults = {\n backdrop: true\n , keyboard: true\n , show: true\n }\n\n $.fn.modal.Constructor = Modal\n\n\n /* MODAL NO CONFLICT\n * ================= */\n\n $.fn.modal.noConflict = function() {\n $.fn.modal = old\n return this\n }\n\n\n /* MODAL DATA-API\n * ============== */\n\n $(document).on('click.modal.data-api', '[data-toggle=\"modal\"]', function(e) {\n var $this = $(this)\n , href = $this.attr('href')\n , $target = $.find($this.attr('data-target') || (href && href.replace(/.*(?=#[^\\s]+$)/, ''))) //strip for ie7\n , option = $target.data('modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())\n\n e.preventDefault()\n\n $target\n .modal(option)\n .one('hide', function() {\n $this.focus()\n })\n })\n\n}(window.jQuery);\n/* ===========================================================\n * bootstrap-tooltip.js v2.3.2\n * http://getbootstrap.com/2.3.2/javascript.html#tooltips\n * Inspired by the original jQuery.tipsy by Jason Frame\n * ===========================================================\n * Copyright 2013 Twitter, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ========================================================== */\n\n\n!function($) {\n\n \"use strict\"; // jshint ;_;\n\n\n /* TOOLTIP PUBLIC CLASS DEFINITION\n * =============================== */\n\n var Tooltip = function(element, options) {\n this.init('tooltip', element, options)\n }\n\n Tooltip.prototype = {\n\n constructor: Tooltip\n\n , init: function(type, element, options) {\n var eventIn\n , eventOut\n , triggers\n , trigger\n , i\n\n this.type = type\n this.$element = $(element)\n this.options = this.getOptions(options)\n this.enabled = true\n\n triggers = this.options.trigger.split(' ')\n\n for (i = triggers.length; i--;) {\n trigger = triggers[i]\n if (trigger == 'click') {\n this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))\n } else if (trigger != 'manual') {\n eventIn = trigger == 'hover' ? 'mouseenter' : 'focus'\n eventOut = trigger == 'hover' ? 'mouseleave' : 'blur'\n this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))\n this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))\n }\n }\n\n this.options.selector ?\n (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :\n this.fixTitle()\n }\n\n , getOptions: function(options) {\n options = $.extend({}, $.fn[this.type].defaults, this.$element.data(), options)\n\n if (options.delay && typeof options.delay == 'number') {\n options.delay = {\n show: options.delay\n , hide: options.delay\n }\n }\n\n return options\n }\n\n , enter: function(e) {\n var defaults = $.fn[this.type].defaults\n , options = {}\n , self\n\n this._options && $.each(this._options, function(key, value) {\n if (defaults[key] != value) options[key] = value\n }, this)\n\n self = $(e.currentTarget)[this.type](options).data(this.type)\n\n if (!self.options.delay || !self.options.delay.show) return self.show()\n\n clearTimeout(this.timeout)\n self.hoverState = 'in'\n this.timeout = setTimeout(function() {\n if (self.hoverState == 'in') self.show()\n }, self.options.delay.show)\n }\n\n , leave: function(e) {\n var self = $(e.currentTarget)[this.type](this._options).data(this.type)\n\n if (this.timeout) clearTimeout(this.timeout)\n if (!self.options.delay || !self.options.delay.hide) return self.hide()\n\n self.hoverState = 'out'\n this.timeout = setTimeout(function() {\n if (self.hoverState == 'out') self.hide()\n }, self.options.delay.hide)\n }\n\n , show: function() {\n var $tip\n , pos\n , actualWidth\n , actualHeight\n , placement\n , tp\n , e = $.Event('show')\n\n if (this.hasContent() && this.enabled) {\n this.$element.trigger(e)\n if (e.isDefaultPrevented()) return\n $tip = this.tip()\n this.setContent()\n\n if (this.options.animation) {\n $tip.addClass('fade')\n }\n\n placement = typeof this.options.placement == 'function' ?\n this.options.placement.call(this, $tip[0], this.$element[0]) :\n this.options.placement\n\n $tip\n .detach()\n .css({ top: 0, left: 0, display: 'block' })\n\n if (this.options.container) {\n $tip.appendTo($.find(this.options.container));\n } else {\n $tip.insertAfter(this.$element)\n }\n\n pos = this.getPosition()\n\n actualWidth = $tip[0].offsetWidth\n actualHeight = $tip[0].offsetHeight\n\n switch (placement) {\n case 'bottom':\n tp = { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 }\n break\n case 'top':\n tp = { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 }\n break\n case 'left':\n tp = { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth }\n break\n case 'right':\n tp = { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }\n break\n\n // extend placements (top)\n case 'topLeft':\n tp = { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - (actualWidth * .10) };\n break;\n case 'topRight':\n tp = { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - (actualWidth * .90) };\n break;\n\n // extend placements (right)\n case 'rightTop':\n tp = { top: pos.top + pos.height / 2 - (actualHeight * .10), left: pos.left + pos.width };\n break;\n case 'rightBottom':\n tp = { top: pos.top + pos.height / 2 - (actualHeight * .90), left: pos.left + pos.width };\n break;\n\n // extend placements (bottom)\n case 'bottomLeft':\n tp = { top: pos.top + pos.height, left: pos.left + pos.width / 2 - (actualWidth * .10) };\n break;\n case 'bottomRight':\n tp = { top: pos.top + pos.height, left: pos.left + pos.width / 2 - (actualWidth * .90) };\n break;\n\n // extend placements (left)\n case 'leftTop':\n tp = { top: pos.top + pos.height / 2 - (actualHeight * .10), left: pos.left - actualWidth };\n break;\n case 'leftBottom':\n tp = { top: pos.top + pos.height / 2 - (actualHeight * .90), left: pos.left - actualWidth };\n break;\n\n\n }\n\n this.applyPlacement(tp, placement)\n this.$element.trigger('shown')\n }\n }\n\n , applyPlacement: function(offset, placement) {\n var $tip = this.tip()\n , width = $tip[0].offsetWidth\n , height = $tip[0].offsetHeight\n , actualWidth\n , actualHeight\n , delta\n , replace\n\n $tip\n .offset(offset)\n .addClass(placement)\n .addClass('in')\n\n actualWidth = $tip[0].offsetWidth\n actualHeight = $tip[0].offsetHeight\n\n if (placement == 'top' && actualHeight != height) {\n offset.top = offset.top + height - actualHeight\n replace = true\n }\n\n if (placement == 'bottom' || placement == 'top') {\n delta = 0\n\n if (offset.left < 0) {\n delta = offset.left * -2\n offset.left = 0\n $tip.offset(offset)\n actualWidth = $tip[0].offsetWidth\n actualHeight = $tip[0].offsetHeight\n }\n\n this.replaceArrow(delta - width + actualWidth, actualWidth, 'left')\n } else {\n this.replaceArrow(actualHeight - height, actualHeight, 'top')\n }\n\n if (replace) $tip.offset(offset)\n }\n\n , replaceArrow: function(delta, dimension, position) {\n this\n .arrow()\n .css(position, delta ? (50 * (1 - delta / dimension) + \"%\") : '')\n }\n\n , setContent: function() {\n var $tip = this.tip()\n , title = this.getTitle()\n\n //$tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)\n $tip.find('.tooltip-inner').text(title)\n $tip.removeClass('fade in top bottom left right')\n }\n\n , hide: function() {\n var that = this\n , $tip = this.tip()\n , e = $.Event('hide')\n\n this.$element.trigger(e)\n if (e.isDefaultPrevented()) return\n\n $tip.removeClass('in')\n\n function removeWithAnimation() {\n var timeout = setTimeout(function() {\n $tip.off($.support.transition.end).detach()\n }, 500)\n\n $tip.one($.support.transition.end, function() {\n clearTimeout(timeout)\n $tip.detach()\n })\n }\n\n $.support.transition && this.$tip.hasClass('fade') ?\n removeWithAnimation() :\n $tip.detach()\n\n this.$element.trigger('hidden')\n\n return this\n }\n\n , fixTitle: function() {\n var $e = this.$element\n if ($e.attr('title') || typeof ($e.attr('data-original-title')) != 'string') {\n $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')\n }\n }\n\n , hasContent: function() {\n return this.getTitle()\n }\n\n , getPosition: function() {\n var el = this.$element[0]\n return $.extend({}, (typeof el.getBoundingClientRect == 'function') ? el.getBoundingClientRect() : {\n width: el.offsetWidth\n , height: el.offsetHeight\n }, this.$element.offset())\n }\n\n , getTitle: function() {\n var title\n , $e = this.$element\n , o = this.options\n\n title = $e.attr('data-original-title')\n || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)\n\n return title\n }\n\n , tip: function() {\n return this.$tip = this.$tip || $(this.options.template)\n }\n\n , arrow: function() {\n return this.$arrow = this.$arrow || this.tip().find(\".tooltip-arrow\")\n }\n\n , validate: function() {\n if (!this.$element[0].parentNode) {\n this.hide()\n this.$element = null\n this.options = null\n }\n }\n\n , enable: function() {\n this.enabled = true\n }\n\n , disable: function() {\n this.enabled = false\n }\n\n , toggleEnabled: function() {\n this.enabled = !this.enabled\n }\n\n , toggle: function(e) {\n var self = e ? $(e.currentTarget)[this.type](this._options).data(this.type) : this\n self.tip().hasClass('in') ? self.hide() : self.show()\n }\n\n , destroy: function() {\n this.hide().$element.off('.' + this.type).removeData(this.type)\n }\n\n }\n\n\n /* TOOLTIP PLUGIN DEFINITION\n * ========================= */\n\n var old = $.fn.tooltip\n\n $.fn.tooltip = function(option) {\n return this.each(function() {\n var $this = $(this)\n , data = $this.data('tooltip')\n , options = typeof option == 'object' && option\n if (!data) $this.data('tooltip', (data = new Tooltip(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n $.fn.tooltip.Constructor = Tooltip\n\n $.fn.tooltip.defaults = {\n animation: true\n , placement: 'top'\n , selector: false\n , template: '
    '\n , trigger: 'hover focus'\n , title: ''\n , delay: 0\n , html: false\n , container: false\n }\n\n\n /* TOOLTIP NO CONFLICT\n * =================== */\n\n $.fn.tooltip.noConflict = function() {\n $.fn.tooltip = old\n return this\n }\n\n}(window.jQuery);\n\n/* ========================================================\n * bootstrap-tab.js v2.3.2\n * http://getbootstrap.com/2.3.2/javascript.html#tabs\n * ========================================================\n * Copyright 2013 Twitter, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ======================================================== */\n\n\n!function($) {\n\n \"use strict\"; // jshint ;_;\n\n\n /* TAB CLASS DEFINITION\n * ==================== */\n\n var Tab = function(element) {\n this.element = $(element)\n }\n\n Tab.prototype = {\n\n constructor: Tab\n\n , show: function() {\n var $this = this.element\n , $ul = $this.closest('ul:not(.dropdown-menu)')\n , selector = $this.attr('data-target')\n , previous\n , $target\n , e\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') //strip for ie7\n }\n\n if ($this.parent('li').hasClass('active')) return\n\n previous = $ul.find('.active:last a')[0]\n\n e = $.Event('show', {\n relatedTarget: previous\n })\n\n $this.trigger(e)\n\n if (e.isDefaultPrevented()) return\n\n $target = $.find(selector)\n\n this.activate($this.parent('li'), $ul)\n this.activate($target, $target.parent(), function() {\n $this.trigger({\n type: 'shown'\n , relatedTarget: previous\n })\n })\n }\n\n , activate: function(element, container, callback) {\n var $active = container.find('> .active')\n , transition = callback\n && $.support.transition\n && $active.hasClass('fade')\n\n function next() {\n $active\n .removeClass('active')\n .find('> .dropdown-menu > .active')\n .removeClass('active')\n\n element.addClass('active')\n\n if (transition) {\n element[0].offsetWidth // reflow for transition\n element.addClass('in')\n } else {\n element.removeClass('fade')\n }\n\n if (element.parent('.dropdown-menu')) {\n element.closest('li.dropdown').addClass('active')\n }\n\n callback && callback()\n }\n\n transition ?\n $active.one($.support.transition.end, next) :\n next()\n\n $active.removeClass('in')\n }\n }\n\n\n /* TAB PLUGIN DEFINITION\n * ===================== */\n\n var old = $.fn.tab\n\n $.fn.tab = function(option) {\n return this.each(function() {\n var $this = $(this)\n , data = $this.data('tab')\n if (!data) $this.data('tab', (data = new Tab(this)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n $.fn.tab.Constructor = Tab\n\n\n /* TAB NO CONFLICT\n * =============== */\n\n $.fn.tab.noConflict = function() {\n $.fn.tab = old\n return this\n }\n\n\n /* TAB DATA-API\n * ============ */\n\n $(document).on('click.tab.data-api', '[data-toggle=\"tab\"], [data-toggle=\"pill\"]', function(e) {\n e.preventDefault()\n $(this).tab('show')\n })\n\n}(window.jQuery);/* =============================================================\n * bootstrap-typeahead.js v2.3.2\n * http://getbootstrap.com/2.3.2/javascript.html#typeahead\n * =============================================================\n * Copyright 2013 Twitter, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ============================================================ */\n\n\n!function($) {\n\n \"use strict\"; // jshint ;_;\n\n\n /* TYPEAHEAD PUBLIC CLASS DEFINITION\n * ================================= */\n\n var Typeahead = function(element, options) {\n this.$element = $(element)\n this.options = $.extend({}, $.fn.typeahead.defaults, options)\n this.matcher = this.options.matcher || this.matcher\n this.sorter = this.options.sorter || this.sorter\n this.highlighter = this.options.highlighter || this.highlighter\n this.updater = this.options.updater || this.updater\n this.source = this.options.source\n this.$menu = $(this.options.menu)\n this.shown = false\n this.listen()\n }\n\n Typeahead.prototype = {\n\n constructor: Typeahead\n\n , select: function() {\n // CHANGE (rashidkpc) If nothing is selected, use existing value\n var val = this.$menu.find('.active').attr('data-value') || this.$element.val();\n this.$element\n .val(this.updater(val))\n .change()\n return this.hide()\n }\n\n , updater: function(item) {\n return item\n }\n\n , show: function() {\n var pos = $.extend({}, this.$element.position(), {\n height: this.$element[0].offsetHeight\n })\n\n this.$menu\n .insertAfter(this.$element)\n .css({\n top: pos.top + pos.height\n , left: pos.left\n })\n .show()\n\n this.shown = true\n return this\n }\n\n , hide: function() {\n this.$menu.hide()\n this.shown = false\n return this\n }\n\n , lookup: function(event) {\n var items\n\n this.query = this.$element.val()\n\n if (!this.query || this.query.length < this.options.minLength) {\n return this.shown ? this.hide() : this\n }\n\n items = $.isFunction(this.source) ? this.source(this.query, $.proxy(this.process, this)) : this.source\n\n return items ? this.process(items) : this\n }\n\n , process: function(items) {\n var that = this\n\n items = $.grep(items, function(item) {\n return that.matcher(item)\n })\n\n items = this.sorter(items)\n\n if (!items.length) {\n return this.shown ? this.hide() : this\n }\n\n return this.render(items.slice(0, this.options.items)).show()\n }\n\n , matcher: function(item) {\n return ~item.toLowerCase().indexOf(this.query.toLowerCase())\n }\n\n , sorter: function(items) {\n var beginswith = []\n , caseSensitive = []\n , caseInsensitive = []\n , item\n\n while (item = items.shift()) {\n if (!item.toLowerCase().indexOf(this.query.toLowerCase())) beginswith.push(item)\n else if (~item.indexOf(this.query)) caseSensitive.push(item)\n else caseInsensitive.push(item)\n }\n\n return beginswith.concat(caseSensitive, caseInsensitive)\n }\n\n , highlighter: function(item) {\n var query = this.query.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, '\\\\$&')\n if (!query) {\n return item;\n }\n return item.replace(new RegExp('(' + query + ')', 'ig'), function($1, match) {\n return '' + match + ''\n });\n }\n\n , render: function(items) {\n var that = this\n\n items = $(items).map(function(i, item) {\n i = $(that.options.item).attr('data-value', item)\n i.find('a').html(that.highlighter(item))\n return i[0]\n })\n\n // CHANGE (rashidpc) Do not select first element by default\n // items.first().addClass('active')\n this.$menu.html(items)\n return this\n }\n\n , next: function(event) {\n var active = this.$menu.find('.active').removeClass('active')\n , next = active.next()\n\n if (!next.length) {\n next = $(this.$menu.find('li')[0])\n }\n\n next.addClass('active')\n }\n\n , prev: function(event) {\n var active = this.$menu.find('.active').removeClass('active')\n , prev = active.prev()\n\n if (!prev.length) {\n prev = this.$menu.find('li').last()\n }\n\n prev.addClass('active')\n }\n\n , listen: function() {\n this.$element\n .on('focus', $.proxy(this.focus, this))\n .on('blur', $.proxy(this.blur, this))\n .on('keypress', $.proxy(this.keypress, this))\n .on('keyup', $.proxy(this.keyup, this))\n\n if (this.eventSupported('keydown')) {\n this.$element.on('keydown', $.proxy(this.keydown, this))\n }\n\n this.$menu\n .on('click', $.proxy(this.click, this))\n .on('mouseenter', 'li', $.proxy(this.mouseenter, this))\n .on('mouseleave', 'li', $.proxy(this.mouseleave, this))\n },\n\n destroy: function() {\n this.$element.off().removeData('typeahead');\n this.$menu.off();\n }\n\n , eventSupported: function(eventName) {\n var isSupported = eventName in this.$element\n if (!isSupported) {\n this.$element.setAttribute(eventName, 'return;')\n isSupported = typeof this.$element[eventName] === 'function'\n }\n return isSupported\n }\n\n , move: function(e) {\n if (!this.shown) return\n\n // grafana change, shift+left parenthesis\n if (e.shiftKey && e.keyCode === 40) {\n return;\n }\n\n switch (e.keyCode) {\n case 9: // tab\n case 13: // enter\n case 27: // escape\n e.preventDefault()\n break\n\n case 38: // up arrow\n e.preventDefault()\n this.prev()\n break\n\n case 40: // down arrow\n e.preventDefault()\n this.next()\n break\n }\n\n e.stopPropagation()\n }\n\n , keydown: function(e) {\n this.suppressKeyPressRepeat = ~$.inArray(e.keyCode, [40, 38, 9, 13, 27, 57])\n this.move(e)\n }\n\n , keypress: function(e) {\n if (this.suppressKeyPressRepeat) return\n this.move(e)\n }\n\n , keyup: function(e) {\n switch (e.keyCode) {\n case 40: // down arrow\n case 38: // up arrow\n case 16: // shift\n case 17: // ctrl\n case 18: // alt\n break\n\n case 9: // tab\n case 13: // enter\n if (!this.shown) return\n this.select()\n break\n\n case 27: // escape\n if (!this.shown) return\n this.hide()\n break\n\n default:\n this.lookup();\n }\n\n if (e.keyCode === 13 && typeof this.$menu.find('.active').attr('data-value') === 'undefined') {\n // CHANGE (rashidkpc). Enter was hit, nothing was selected from typeahead, submit form\n this.$element.submit();\n } else {\n e.stopPropagation()\n e.preventDefault()\n }\n\n }\n\n , focus: function(e) {\n this.focused = true\n }\n\n , blur: function(e) {\n this.focused = false\n if (!this.mousedover && this.shown) this.hide()\n }\n\n , click: function(e) {\n e.stopPropagation()\n e.preventDefault()\n this.select()\n this.$element.focus()\n }\n\n , mouseenter: function(e) {\n this.mousedover = true\n this.$menu.find('.active').removeClass('active')\n $(e.currentTarget).addClass('active')\n }\n\n , mouseleave: function(e) {\n this.mousedover = false\n if (!this.focused && this.shown) this.hide()\n }\n\n }\n\n\n /* TYPEAHEAD PLUGIN DEFINITION\n * =========================== */\n\n var old = $.fn.typeahead\n\n $.fn.typeahead = function(option) {\n return this.each(function() {\n var $this = $(this)\n , data = $this.data('typeahead')\n , options = typeof option == 'object' && option\n if (!data) $this.data('typeahead', (data = new Typeahead(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n $.fn.typeahead.defaults = {\n source: []\n , items: 8\n , menu: '
      '\n , item: '
    • '\n , minLength: 1\n }\n\n $.fn.typeahead.Constructor = Typeahead\n\n\n /* TYPEAHEAD NO CONFLICT\n * =================== */\n\n $.fn.typeahead.noConflict = function() {\n $.fn.typeahead = old\n return this\n }\n\n\n /* TYPEAHEAD DATA-API\n * ================== */\n\n $(document).on('focus.typeahead.data-api', '[data-provide=\"typeahead\"]', function(e) {\n var $this = $(this)\n if ($this.data('typeahead')) return\n $this.typeahead($this.data())\n })\n\n}(window.jQuery);\n/* ==========================================================\n * bootstrap-affix.js v2.3.2\n * http://getbootstrap.com/2.3.2/javascript.html#affix\n * ==========================================================\n * Copyright 2013 Twitter, Inc.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * ========================================================== */\n\n\n!function($) {\n\n \"use strict\"; // jshint ;_;\n\n\n /* AFFIX CLASS DEFINITION\n * ====================== */\n\n var Affix = function(element, options) {\n this.options = $.extend({}, $.fn.affix.defaults, options)\n this.$window = $(window)\n .on('scroll.affix.data-api', $.proxy(this.checkPosition, this))\n .on('click.affix.data-api', $.proxy(function() { setTimeout($.proxy(this.checkPosition, this), 1) }, this))\n this.$element = $(element)\n this.checkPosition()\n }\n\n Affix.prototype.checkPosition = function() {\n if (!this.$element.is(':visible')) return\n\n var scrollHeight = $(document).height()\n , scrollTop = this.$window.scrollTop()\n , position = this.$element.offset()\n , offset = this.options.offset\n , offsetBottom = offset.bottom\n , offsetTop = offset.top\n , reset = 'affix affix-top affix-bottom'\n , affix\n\n if (typeof offset != 'object') offsetBottom = offsetTop = offset\n if (typeof offsetTop == 'function') offsetTop = offset.top()\n if (typeof offsetBottom == 'function') offsetBottom = offset.bottom()\n\n affix = this.unpin != null && (scrollTop + this.unpin <= position.top) ?\n false : offsetBottom != null && (position.top + this.$element.height() >= scrollHeight - offsetBottom) ?\n 'bottom' : offsetTop != null && scrollTop <= offsetTop ?\n 'top' : false\n\n if (this.affixed === affix) return\n\n this.affixed = affix\n this.unpin = affix == 'bottom' ? position.top - scrollTop : null\n\n this.$element.removeClass(reset).addClass('affix' + (affix ? '-' + affix : ''))\n }\n\n\n /* AFFIX PLUGIN DEFINITION\n * ======================= */\n\n var old = $.fn.affix\n\n $.fn.affix = function(option) {\n return this.each(function() {\n var $this = $(this)\n , data = $this.data('affix')\n , options = typeof option == 'object' && option\n if (!data) $this.data('affix', (data = new Affix(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n $.fn.affix.Constructor = Affix\n\n $.fn.affix.defaults = {\n offset: 0\n }\n\n\n /* AFFIX NO CONFLICT\n * ================= */\n\n $.fn.affix.noConflict = function() {\n $.fn.affix = old\n return this\n }\n\n\n /* AFFIX DATA-API\n * ============== */\n\n $(window).on('load', function() {\n $('[data-spy=\"affix\"]').each(function() {\n var $spy = $(this)\n , data = $spy.data()\n\n data.offset = data.offset || {}\n\n data.offsetBottom && (data.offset.bottom = data.offsetBottom)\n data.offsetTop && (data.offset.top = data.offsetTop)\n\n $spy.affix(data)\n })\n })\n\n\n}(window.jQuery);\n","(function ($) {\n \"use strict\";\n\n var defaultOptions = {\n tagClass: function(item) {\n return 'label label-info';\n },\n itemValue: function(item) {\n return item ? item.toString() : item;\n },\n itemText: function(item) {\n return this.itemValue(item);\n },\n freeInput: true,\n maxTags: undefined,\n confirmKeys: [13],\n onTagExists: function(item, $tag) {\n $tag.hide().fadeIn();\n }\n };\n\n /**\n * Constructor function\n */\n function TagsInput(element, options) {\n this.itemsArray = [];\n\n this.$element = $(element);\n this.$element.hide();\n\n this.widthClass = options.widthClass || 'width-9';\n this.isSelect = (element.tagName === 'SELECT');\n this.multiple = (this.isSelect && element.hasAttribute('multiple'));\n this.objectItems = options && options.itemValue;\n this.placeholderText = element.hasAttribute('placeholder') ? this.$element.attr('placeholder') : '';\n\n this.$container = $('
      ');\n this.$input = $('').appendTo(this.$container);\n\n this.$element.after(this.$container);\n\n this.build(options);\n }\n\n TagsInput.prototype = {\n constructor: TagsInput,\n\n /**\n * Adds the given item as a new tag. Pass true to dontPushVal to prevent\n * updating the elements val()\n */\n add: function(item, dontPushVal) {\n var self = this;\n\n if (self.options.maxTags && self.itemsArray.length >= self.options.maxTags)\n return;\n\n // Ignore falsey values, except false\n if (item !== false && !item)\n return;\n\n // Throw an error when trying to add an object while the itemValue option was not set\n if (typeof item === \"object\" && !self.objectItems)\n throw(\"Can't add objects when itemValue option is not set\");\n\n // Ignore strings only containg whitespace\n if (item.toString().match(/^\\s*$/))\n return;\n\n // If SELECT but not multiple, remove current tag\n if (self.isSelect && !self.multiple && self.itemsArray.length > 0)\n self.remove(self.itemsArray[0]);\n\n if (typeof item === \"string\" && this.$element[0].tagName === 'INPUT') {\n var items = item.split(',');\n if (items.length > 1) {\n for (var i = 0; i < items.length; i++) {\n this.add(items[i], true);\n }\n\n if (!dontPushVal)\n self.pushVal();\n return;\n }\n }\n\n var itemValue = self.options.itemValue(item),\n itemText = self.options.itemText(item),\n tagClass = self.options.tagClass(item);\n\n // Ignore items already added\n var existing = $.grep(self.itemsArray, function(item) { return self.options.itemValue(item) === itemValue; } )[0];\n if (existing) {\n // Invoke onTagExists\n if (self.options.onTagExists) {\n var $existingTag = $(\".tag\", self.$container).filter(function() { return $(this).data(\"item\") === existing; });\n self.options.onTagExists(item, $existingTag);\n }\n return;\n }\n\n // register item in internal array and map\n self.itemsArray.push(item);\n\n // add a tag element\n var $tag = $('' + htmlEncode(itemText) + '');\n $tag.data('item', item);\n self.findInputWrapper().before($tag);\n $tag.after(' ');\n\n // add
      \n \n \n it('should sanitize the html snippet by default', function() {\n expect(element(by.css('#bind-html-with-sanitize div')).getAttribute('innerHTML')).\n toBe('

      an html\\nclick here\\nsnippet

      ');\n });\n\n it('should inline raw snippet if bound to a trusted value', function() {\n expect(element(by.css('#bind-html-with-trust div')).getAttribute('innerHTML')).\n toBe(\"

      an html\\n\" +\n \"click here\\n\" +\n \"snippet

      \");\n });\n\n it('should escape snippet without any filter', function() {\n expect(element(by.css('#bind-default div')).getAttribute('innerHTML')).\n toBe(\"<p style=\\\"color:blue\\\">an html\\n\" +\n \"<em onmouseover=\\\"this.textContent='PWN3D!'\\\">click here</em>\\n\" +\n \"snippet</p>\");\n });\n\n it('should update', function() {\n element(by.model('snippet')).clear();\n element(by.model('snippet')).sendKeys('new text');\n expect(element(by.css('#bind-html-with-sanitize div')).getAttribute('innerHTML')).\n toBe('new text');\n expect(element(by.css('#bind-html-with-trust div')).getAttribute('innerHTML')).toBe(\n 'new text');\n expect(element(by.css('#bind-default div')).getAttribute('innerHTML')).toBe(\n \"new <b onclick=\\\"alert(1)\\\">text</b>\");\n });\n
      \n \n */\n\n\n/**\n * @ngdoc provider\n * @name $sanitizeProvider\n * @this\n *\n * @description\n * Creates and configures {@link $sanitize} instance.\n */\nfunction $SanitizeProvider() {\n var hasBeenInstantiated = false;\n var svgEnabled = false;\n\n this.$get = ['$$sanitizeUri', function($$sanitizeUri) {\n hasBeenInstantiated = true;\n if (svgEnabled) {\n extend(validElements, svgElements);\n }\n return function(html) {\n var buf = [];\n htmlParser(html, htmlSanitizeWriter(buf, function(uri, isImage) {\n return !/^unsafe:/.test($$sanitizeUri(uri, isImage));\n }));\n return buf.join('');\n };\n }];\n\n\n /**\n * @ngdoc method\n * @name $sanitizeProvider#enableSvg\n * @kind function\n *\n * @description\n * Enables a subset of svg to be supported by the sanitizer.\n *\n *
      \n *

      By enabling this setting without taking other precautions, you might expose your\n * application to click-hijacking attacks. In these attacks, sanitized svg elements could be positioned\n * outside of the containing element and be rendered over other elements on the page (e.g. a login\n * link). Such behavior can then result in phishing incidents.

      \n *\n *

      To protect against these, explicitly setup `overflow: hidden` css rule for all potential svg\n * tags within the sanitized content:

      \n *\n *
      \n *\n *
      \n   *   .rootOfTheIncludedContent svg {\n   *     overflow: hidden !important;\n   *   }\n   *   
      \n *
      \n *\n * @param {boolean=} flag Enable or disable SVG support in the sanitizer.\n * @returns {boolean|$sanitizeProvider} Returns the currently configured value if called\n * without an argument or self for chaining otherwise.\n */\n this.enableSvg = function(enableSvg) {\n if (isDefined(enableSvg)) {\n svgEnabled = enableSvg;\n return this;\n } else {\n return svgEnabled;\n }\n };\n\n\n /**\n * @ngdoc method\n * @name $sanitizeProvider#addValidElements\n * @kind function\n *\n * @description\n * Extends the built-in lists of valid HTML/SVG elements, i.e. elements that are considered safe\n * and are not stripped off during sanitization. You can extend the following lists of elements:\n *\n * - `htmlElements`: A list of elements (tag names) to extend the current list of safe HTML\n * elements. HTML elements considered safe will not be removed during sanitization. All other\n * elements will be stripped off.\n *\n * - `htmlVoidElements`: This is similar to `htmlElements`, but marks the elements as\n * \"void elements\" (similar to HTML\n * [void elements](https://rawgit.com/w3c/html/html5.1-2/single-page.html#void-elements)). These\n * elements have no end tag and cannot have content.\n *\n * - `svgElements`: This is similar to `htmlElements`, but for SVG elements. This list is only\n * taken into account if SVG is {@link ngSanitize.$sanitizeProvider#enableSvg enabled} for\n * `$sanitize`.\n *\n *
      \n * This method must be called during the {@link angular.Module#config config} phase. Once the\n * `$sanitize` service has been instantiated, this method has no effect.\n *
      \n *\n *
      \n * Keep in mind that extending the built-in lists of elements may expose your app to XSS or\n * other vulnerabilities. Be very mindful of the elements you add.\n *
      \n *\n * @param {Array|Object} elements - A list of valid HTML elements or an object with one or\n * more of the following properties:\n * - **htmlElements** - `{Array}` - A list of elements to extend the current list of\n * HTML elements.\n * - **htmlVoidElements** - `{Array}` - A list of elements to extend the current list of\n * void HTML elements; i.e. elements that do not have an end tag.\n * - **svgElements** - `{Array}` - A list of elements to extend the current list of SVG\n * elements. The list of SVG elements is only taken into account if SVG is\n * {@link ngSanitize.$sanitizeProvider#enableSvg enabled} for `$sanitize`.\n *\n * Passing an array (`[...]`) is equivalent to passing `{htmlElements: [...]}`.\n *\n * @return {$sanitizeProvider} Returns self for chaining.\n */\n this.addValidElements = function(elements) {\n if (!hasBeenInstantiated) {\n if (isArray(elements)) {\n elements = {htmlElements: elements};\n }\n\n addElementsTo(svgElements, elements.svgElements);\n addElementsTo(voidElements, elements.htmlVoidElements);\n addElementsTo(validElements, elements.htmlVoidElements);\n addElementsTo(validElements, elements.htmlElements);\n }\n\n return this;\n };\n\n\n /**\n * @ngdoc method\n * @name $sanitizeProvider#addValidAttrs\n * @kind function\n *\n * @description\n * Extends the built-in list of valid attributes, i.e. attributes that are considered safe and are\n * not stripped off during sanitization.\n *\n * **Note**:\n * The new attributes will not be treated as URI attributes, which means their values will not be\n * sanitized as URIs using `$compileProvider`'s\n * {@link ng.$compileProvider#aHrefSanitizationTrustedUrlList aHrefSanitizationTrustedUrlList} and\n * {@link ng.$compileProvider#imgSrcSanitizationTrustedUrlList imgSrcSanitizationTrustedUrlList}.\n *\n *
      \n * This method must be called during the {@link angular.Module#config config} phase. Once the\n * `$sanitize` service has been instantiated, this method has no effect.\n *
      \n *\n *
      \n * Keep in mind that extending the built-in list of attributes may expose your app to XSS or\n * other vulnerabilities. Be very mindful of the attributes you add.\n *
      \n *\n * @param {Array} attrs - A list of valid attributes.\n *\n * @returns {$sanitizeProvider} Returns self for chaining.\n */\n this.addValidAttrs = function(attrs) {\n if (!hasBeenInstantiated) {\n extend(validAttrs, arrayToMap(attrs, true));\n }\n return this;\n };\n\n //////////////////////////////////////////////////////////////////////////////////////////////////\n // Private stuff\n //////////////////////////////////////////////////////////////////////////////////////////////////\n\n bind = angular.bind;\n extend = angular.extend;\n forEach = angular.forEach;\n isArray = angular.isArray;\n isDefined = angular.isDefined;\n lowercase = angular.$$lowercase;\n noop = angular.noop;\n\n htmlParser = htmlParserImpl;\n htmlSanitizeWriter = htmlSanitizeWriterImpl;\n\n nodeContains = window.Node.prototype.contains || /** @this */ function(arg) {\n // eslint-disable-next-line no-bitwise\n return !!(this.compareDocumentPosition(arg) & 16);\n };\n\n // Regular Expressions for parsing tags and attributes\n var SURROGATE_PAIR_REGEXP = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g,\n // Match everything outside of normal chars and \" (quote character)\n NON_ALPHANUMERIC_REGEXP = /([^#-~ |!])/g;\n\n\n // Good source of info about elements and attributes\n // http://dev.w3.org/html5/spec/Overview.html#semantics\n // http://simon.html5.org/html-elements\n\n // Safe Void Elements - HTML5\n // http://dev.w3.org/html5/spec/Overview.html#void-elements\n var voidElements = stringToMap('area,br,col,hr,img,wbr');\n\n // Elements that you can, intentionally, leave open (and which close themselves)\n // http://dev.w3.org/html5/spec/Overview.html#optional-tags\n var optionalEndTagBlockElements = stringToMap('colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr'),\n optionalEndTagInlineElements = stringToMap('rp,rt'),\n optionalEndTagElements = extend({},\n optionalEndTagInlineElements,\n optionalEndTagBlockElements);\n\n // Safe Block Elements - HTML5\n var blockElements = extend({}, optionalEndTagBlockElements, stringToMap('address,article,' +\n 'aside,blockquote,caption,center,del,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,' +\n 'h6,header,hgroup,hr,ins,map,menu,nav,ol,pre,section,table,ul'));\n\n // Inline Elements - HTML5\n var inlineElements = extend({}, optionalEndTagInlineElements, stringToMap('a,abbr,acronym,b,' +\n 'bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,q,ruby,rp,rt,s,' +\n 'samp,small,span,strike,strong,sub,sup,time,tt,u,var'));\n\n // SVG Elements\n // https://wiki.whatwg.org/wiki/Sanitization_rules#svg_Elements\n // Note: the elements animate,animateColor,animateMotion,animateTransform,set are intentionally omitted.\n // They can potentially allow for arbitrary javascript to be executed. See #11290\n var svgElements = stringToMap('circle,defs,desc,ellipse,font-face,font-face-name,font-face-src,g,glyph,' +\n 'hkern,image,linearGradient,line,marker,metadata,missing-glyph,mpath,path,polygon,polyline,' +\n 'radialGradient,rect,stop,svg,switch,text,title,tspan');\n\n // Blocked Elements (will be stripped)\n var blockedElements = stringToMap('script,style');\n\n var validElements = extend({},\n voidElements,\n blockElements,\n inlineElements,\n optionalEndTagElements);\n\n //Attributes that have href and hence need to be sanitized\n var uriAttrs = stringToMap('background,cite,href,longdesc,src,xlink:href,xml:base');\n\n var htmlAttrs = stringToMap('abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,' +\n 'color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,' +\n 'ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,' +\n 'scope,scrolling,shape,size,span,start,summary,tabindex,target,title,type,' +\n 'valign,value,vspace,width');\n\n // SVG attributes (without \"id\" and \"name\" attributes)\n // https://wiki.whatwg.org/wiki/Sanitization_rules#svg_Attributes\n var svgAttrs = stringToMap('accent-height,accumulate,additive,alphabetic,arabic-form,ascent,' +\n 'baseProfile,bbox,begin,by,calcMode,cap-height,class,color,color-rendering,content,' +\n 'cx,cy,d,dx,dy,descent,display,dur,end,fill,fill-rule,font-family,font-size,font-stretch,' +\n 'font-style,font-variant,font-weight,from,fx,fy,g1,g2,glyph-name,gradientUnits,hanging,' +\n 'height,horiz-adv-x,horiz-origin-x,ideographic,k,keyPoints,keySplines,keyTimes,lang,' +\n 'marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mathematical,' +\n 'max,min,offset,opacity,orient,origin,overline-position,overline-thickness,panose-1,' +\n 'path,pathLength,points,preserveAspectRatio,r,refX,refY,repeatCount,repeatDur,' +\n 'requiredExtensions,requiredFeatures,restart,rotate,rx,ry,slope,stemh,stemv,stop-color,' +\n 'stop-opacity,strikethrough-position,strikethrough-thickness,stroke,stroke-dasharray,' +\n 'stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,' +\n 'stroke-width,systemLanguage,target,text-anchor,to,transform,type,u1,u2,underline-position,' +\n 'underline-thickness,unicode,unicode-range,units-per-em,values,version,viewBox,visibility,' +\n 'width,widths,x,x-height,x1,x2,xlink:actuate,xlink:arcrole,xlink:role,xlink:show,xlink:title,' +\n 'xlink:type,xml:base,xml:lang,xml:space,xmlns,xmlns:xlink,y,y1,y2,zoomAndPan', true);\n\n var validAttrs = extend({},\n uriAttrs,\n svgAttrs,\n htmlAttrs);\n\n function stringToMap(str, lowercaseKeys) {\n return arrayToMap(str.split(','), lowercaseKeys);\n }\n\n function arrayToMap(items, lowercaseKeys) {\n var obj = {}, i;\n for (i = 0; i < items.length; i++) {\n obj[lowercaseKeys ? lowercase(items[i]) : items[i]] = true;\n }\n return obj;\n }\n\n function addElementsTo(elementsMap, newElements) {\n if (newElements && newElements.length) {\n extend(elementsMap, arrayToMap(newElements));\n }\n }\n\n /**\n * Create an inert document that contains the dirty HTML that needs sanitizing.\n * We use the DOMParser API by default and fall back to createHTMLDocument if DOMParser is not\n * available.\n */\n var getInertBodyElement /* function(html: string): HTMLBodyElement */ = (function(window, document) {\n if (isDOMParserAvailable()) {\n return getInertBodyElement_DOMParser;\n }\n\n if (!document || !document.implementation) {\n throw $sanitizeMinErr('noinert', 'Can\\'t create an inert html document');\n }\n var inertDocument = document.implementation.createHTMLDocument('inert');\n var inertBodyElement = (inertDocument.documentElement || inertDocument.getDocumentElement()).querySelector('body');\n return getInertBodyElement_InertDocument;\n\n function isDOMParserAvailable() {\n try {\n return !!getInertBodyElement_DOMParser('');\n } catch (e) {\n return false;\n }\n }\n\n function getInertBodyElement_DOMParser(html) {\n // We add this dummy element to ensure that the rest of the content is parsed as expected\n // e.g. leading whitespace is maintained and tags like `` do not get hoisted to the `` tag.\n html = '' + html;\n try {\n var body = new window.DOMParser().parseFromString(html, 'text/html').body;\n body.firstChild.remove();\n return body;\n } catch (e) {\n return undefined;\n }\n }\n\n function getInertBodyElement_InertDocument(html) {\n inertBodyElement.innerHTML = html;\n\n // Support: IE 9-11 only\n // strip custom-namespaced attributes on IE<=11\n if (document.documentMode) {\n stripCustomNsAttrs(inertBodyElement);\n }\n\n return inertBodyElement;\n }\n })(window, window.document);\n\n /**\n * @example\n * htmlParser(htmlString, {\n * start: function(tag, attrs) {},\n * end: function(tag) {},\n * chars: function(text) {},\n * comment: function(text) {}\n * });\n *\n * @param {string} html string\n * @param {object} handler\n */\n function htmlParserImpl(html, handler) {\n if (html === null || html === undefined) {\n html = '';\n } else if (typeof html !== 'string') {\n html = '' + html;\n }\n\n var inertBodyElement = getInertBodyElement(html);\n if (!inertBodyElement) return '';\n\n //mXSS protection\n var mXSSAttempts = 5;\n do {\n if (mXSSAttempts === 0) {\n throw $sanitizeMinErr('uinput', 'Failed to sanitize html because the input is unstable');\n }\n mXSSAttempts--;\n\n // trigger mXSS if it is going to happen by reading and writing the innerHTML\n html = inertBodyElement.innerHTML;\n inertBodyElement = getInertBodyElement(html);\n } while (html !== inertBodyElement.innerHTML);\n\n var node = inertBodyElement.firstChild;\n while (node) {\n switch (node.nodeType) {\n case 1: // ELEMENT_NODE\n handler.start(node.nodeName.toLowerCase(), attrToMap(node.attributes));\n break;\n case 3: // TEXT NODE\n handler.chars(node.textContent);\n break;\n }\n\n var nextNode;\n if (!(nextNode = node.firstChild)) {\n if (node.nodeType === 1) {\n handler.end(node.nodeName.toLowerCase());\n }\n nextNode = getNonDescendant('nextSibling', node);\n if (!nextNode) {\n while (nextNode == null) {\n node = getNonDescendant('parentNode', node);\n if (node === inertBodyElement) break;\n nextNode = getNonDescendant('nextSibling', node);\n if (node.nodeType === 1) {\n handler.end(node.nodeName.toLowerCase());\n }\n }\n }\n }\n node = nextNode;\n }\n\n while ((node = inertBodyElement.firstChild)) {\n inertBodyElement.removeChild(node);\n }\n }\n\n function attrToMap(attrs) {\n var map = {};\n for (var i = 0, ii = attrs.length; i < ii; i++) {\n var attr = attrs[i];\n map[attr.name] = attr.value;\n }\n return map;\n }\n\n\n /**\n * Escapes all potentially dangerous characters, so that the\n * resulting string can be safely inserted into attribute or\n * element text.\n * @param value\n * @returns {string} escaped text\n */\n function encodeEntities(value) {\n return value.\n replace(/&/g, '&').\n replace(SURROGATE_PAIR_REGEXP, function(value) {\n var hi = value.charCodeAt(0);\n var low = value.charCodeAt(1);\n return '&#' + (((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000) + ';';\n }).\n replace(NON_ALPHANUMERIC_REGEXP, function(value) {\n return '&#' + value.charCodeAt(0) + ';';\n }).\n replace(//g, '>');\n }\n\n /**\n * create an HTML/XML writer which writes to buffer\n * @param {Array} buf use buf.join('') to get out sanitized html string\n * @returns {object} in the form of {\n * start: function(tag, attrs) {},\n * end: function(tag) {},\n * chars: function(text) {},\n * comment: function(text) {}\n * }\n */\n function htmlSanitizeWriterImpl(buf, uriValidator) {\n var ignoreCurrentElement = false;\n var out = bind(buf, buf.push);\n return {\n start: function(tag, attrs) {\n tag = lowercase(tag);\n if (!ignoreCurrentElement && blockedElements[tag]) {\n ignoreCurrentElement = tag;\n }\n if (!ignoreCurrentElement && validElements[tag] === true) {\n out('<');\n out(tag);\n forEach(attrs, function(value, key) {\n var lkey = lowercase(key);\n var isImage = (tag === 'img' && lkey === 'src') || (lkey === 'background');\n if (validAttrs[lkey] === true &&\n (uriAttrs[lkey] !== true || uriValidator(value, isImage))) {\n out(' ');\n out(key);\n out('=\"');\n out(encodeEntities(value));\n out('\"');\n }\n });\n out('>');\n }\n },\n end: function(tag) {\n tag = lowercase(tag);\n if (!ignoreCurrentElement && validElements[tag] === true && voidElements[tag] !== true) {\n out('');\n }\n // eslint-disable-next-line eqeqeq\n if (tag == ignoreCurrentElement) {\n ignoreCurrentElement = false;\n }\n },\n chars: function(chars) {\n if (!ignoreCurrentElement) {\n out(encodeEntities(chars));\n }\n }\n };\n }\n\n\n /**\n * When IE9-11 comes across an unknown namespaced attribute e.g. 'xlink:foo' it adds 'xmlns:ns1' attribute to declare\n * ns1 namespace and prefixes the attribute with 'ns1' (e.g. 'ns1:xlink:foo'). This is undesirable since we don't want\n * to allow any of these custom attributes. This method strips them all.\n *\n * @param node Root element to process\n */\n function stripCustomNsAttrs(node) {\n while (node) {\n if (node.nodeType === window.Node.ELEMENT_NODE) {\n var attrs = node.attributes;\n for (var i = 0, l = attrs.length; i < l; i++) {\n var attrNode = attrs[i];\n var attrName = attrNode.name.toLowerCase();\n if (attrName === 'xmlns:ns1' || attrName.lastIndexOf('ns1:', 0) === 0) {\n node.removeAttributeNode(attrNode);\n i--;\n l--;\n }\n }\n }\n\n var nextNode = node.firstChild;\n if (nextNode) {\n stripCustomNsAttrs(nextNode);\n }\n\n node = getNonDescendant('nextSibling', node);\n }\n }\n\n function getNonDescendant(propName, node) {\n // An element is clobbered if its `propName` property points to one of its descendants\n var nextNode = node[propName];\n if (nextNode && nodeContains.call(node, nextNode)) {\n throw $sanitizeMinErr('elclob', 'Failed to sanitize html because the element is clobbered: {0}', node.outerHTML || node.outerText);\n }\n return nextNode;\n }\n}\n\nfunction sanitizeText(chars) {\n var buf = [];\n var writer = htmlSanitizeWriter(buf, noop);\n writer.chars(chars);\n return buf.join('');\n}\n\n\n// define ngSanitize module and register $sanitize service\nangular.module('ngSanitize', [])\n .provider('$sanitize', $SanitizeProvider)\n .info({ angularVersion: '1.8.3' });\n\n/**\n * @ngdoc filter\n * @name linky\n * @kind function\n *\n * @description\n * Finds links in text input and turns them into html links. Supports `http/https/ftp/sftp/mailto` and\n * plain email address links.\n *\n * Requires the {@link ngSanitize `ngSanitize`} module to be installed.\n *\n * @param {string} text Input text.\n * @param {string} [target] Window (`_blank|_self|_parent|_top`) or named frame to open links in.\n * @param {object|function(url)} [attributes] Add custom attributes to the link element.\n *\n * Can be one of:\n *\n * - `object`: A map of attributes\n * - `function`: Takes the url as a parameter and returns a map of attributes\n *\n * If the map of attributes contains a value for `target`, it overrides the value of\n * the target parameter.\n *\n *\n * @returns {string} Html-linkified and {@link $sanitize sanitized} text.\n *\n * @usage\n \n *\n * @example\n \n \n
      \n Snippet: \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
      FilterSourceRendered
      linky filter\n
      <div ng-bind-html=\"snippet | linky\">
      </div>
      \n
      \n
      \n
      linky target\n
      <div ng-bind-html=\"snippetWithSingleURL | linky:'_blank'\">
      </div>
      \n
      \n
      \n
      linky custom attributes\n
      <div ng-bind-html=\"snippetWithSingleURL | linky:'_self':{rel: 'nofollow'}\">
      </div>
      \n
      \n
      \n
      no filter
      <div ng-bind=\"snippet\">
      </div>
      \n \n \n angular.module('linkyExample', ['ngSanitize'])\n .controller('ExampleController', ['$scope', function($scope) {\n $scope.snippet =\n 'Pretty text with some links:\\n' +\n 'http://angularjs.org/,\\n' +\n 'mailto:us@somewhere.org,\\n' +\n 'another@somewhere.org,\\n' +\n 'and one more: ftp://127.0.0.1/.';\n $scope.snippetWithSingleURL = 'http://angularjs.org/';\n }]);\n \n \n it('should linkify the snippet with urls', function() {\n expect(element(by.id('linky-filter')).element(by.binding('snippet | linky')).getText()).\n toBe('Pretty text with some links: http://angularjs.org/, us@somewhere.org, ' +\n 'another@somewhere.org, and one more: ftp://127.0.0.1/.');\n expect(element.all(by.css('#linky-filter a')).count()).toEqual(4);\n });\n\n it('should not linkify snippet without the linky filter', function() {\n expect(element(by.id('escaped-html')).element(by.binding('snippet')).getText()).\n toBe('Pretty text with some links: http://angularjs.org/, mailto:us@somewhere.org, ' +\n 'another@somewhere.org, and one more: ftp://127.0.0.1/.');\n expect(element.all(by.css('#escaped-html a')).count()).toEqual(0);\n });\n\n it('should update', function() {\n element(by.model('snippet')).clear();\n element(by.model('snippet')).sendKeys('new http://link.');\n expect(element(by.id('linky-filter')).element(by.binding('snippet | linky')).getText()).\n toBe('new http://link.');\n expect(element.all(by.css('#linky-filter a')).count()).toEqual(1);\n expect(element(by.id('escaped-html')).element(by.binding('snippet')).getText())\n .toBe('new http://link.');\n });\n\n it('should work with the target property', function() {\n expect(element(by.id('linky-target')).\n element(by.binding(\"snippetWithSingleURL | linky:'_blank'\")).getText()).\n toBe('http://angularjs.org/');\n expect(element(by.css('#linky-target a')).getAttribute('target')).toEqual('_blank');\n });\n\n it('should optionally add custom attributes', function() {\n expect(element(by.id('linky-custom-attributes')).\n element(by.binding(\"snippetWithSingleURL | linky:'_self':{rel: 'nofollow'}\")).getText()).\n toBe('http://angularjs.org/');\n expect(element(by.css('#linky-custom-attributes a')).getAttribute('rel')).toEqual('nofollow');\n });\n \n \n */\nangular.module('ngSanitize').filter('linky', ['$sanitize', function($sanitize) {\n var LINKY_URL_REGEXP =\n /((s?ftp|https?):\\/\\/|(www\\.)|(mailto:)?[A-Za-z0-9._%+-]+@)\\S*[^\\s.;,(){}<>\"\\u201d\\u2019]/i,\n MAILTO_REGEXP = /^mailto:/i;\n\n var linkyMinErr = angular.$$minErr('linky');\n var isDefined = angular.isDefined;\n var isFunction = angular.isFunction;\n var isObject = angular.isObject;\n var isString = angular.isString;\n\n return function(text, target, attributes) {\n if (text == null || text === '') return text;\n if (!isString(text)) throw linkyMinErr('notstring', 'Expected string but received: {0}', text);\n\n var attributesFn =\n isFunction(attributes) ? attributes :\n isObject(attributes) ? function getAttributesObject() {return attributes;} :\n function getEmptyAttributesObject() {return {};};\n\n var match;\n var raw = text;\n var html = [];\n var url;\n var i;\n while ((match = raw.match(LINKY_URL_REGEXP))) {\n // We can not end in these as they are sometimes found at the end of the sentence\n url = match[0];\n // if we did not match ftp/http/www/mailto then assume mailto\n if (!match[2] && !match[4]) {\n url = (match[3] ? 'http://' : 'mailto:') + url;\n }\n i = match.index;\n addText(raw.substr(0, i));\n addLink(url, match[0].replace(MAILTO_REGEXP, ''));\n raw = raw.substring(i + match[0].length);\n }\n addText(raw);\n return $sanitize(html.join(''));\n\n function addText(text) {\n if (!text) {\n return;\n }\n html.push(sanitizeText(text));\n }\n\n function addLink(url, text) {\n var key, linkAttributes = attributesFn(url);\n html.push('');\n addText(text);\n html.push('');\n }\n };\n}]);\n\n\n})(window, window.angular);\n","require('./angular-sanitize');\nmodule.exports = 'ngSanitize';\n","'use strict'\n\n/* Autoupdate plugin for baron 0.6+ */\n\nfunction autoUpdateOne(MutationObserver) {\n var self = this\n var watcher\n\n if (this._au) {\n return\n }\n\n function actualizeWatcher() {\n if (!self.root[self.origin.offset]) {\n startWatch()\n } else {\n stopWatch()\n }\n }\n\n // Set interval timeout for watching when root node will be visible\n function startWatch() {\n if (watcher) return\n\n watcher = setInterval(function() {\n if (self.root[self.origin.offset]) {\n stopWatch()\n self.update()\n }\n }, 300) // is it good enought for you?)\n }\n\n function stopWatch() {\n clearInterval(watcher)\n watcher = null\n }\n\n var debouncedUpdater = self._debounce(function() {\n self.update()\n }, 300)\n\n this._observer = new MutationObserver(function() {\n actualizeWatcher()\n self.update()\n debouncedUpdater()\n })\n\n this.on('init', function() {\n self._observer.observe(self.root, {\n childList: true,\n subtree: true,\n characterData: true\n // attributes: true\n // No reasons to set attributes to true\n // The case when root/child node with already properly inited baron toggled to hidden and then back to visible,\n // and the size of parent was changed during that hidden state, is very rare\n // Other cases are covered by watcher, and you still can do .update by yourself\n })\n\n actualizeWatcher()\n })\n\n this.on('dispose', function() {\n self._observer.disconnect()\n stopWatch()\n delete self._observer\n })\n\n this._au = true\n}\n\nmodule.exports = function autoUpdateCreator(win) {\n var MutationObserver = win.MutationObserver || win.WebKitMutationObserver || win.MozMutationObserver || null\n\n return function autoUpdate() {\n if (!MutationObserver) return this\n\n autoUpdateOne.call(this, MutationObserver)\n\n return this\n }\n}\n","'use strict'\n\n/* Controls plugin for baron */\n\nvar qs = require('./utils').qs\n\nmodule.exports = function controls(params) {\n var forward, backward, track, screen,\n self = this,\n event\n\n screen = params.screen || 0.9\n\n if (params.forward) {\n forward = qs(params.forward, this.clipper)\n\n event = {\n element: forward,\n\n handler: function() {\n var y = self.pos() + (params.delta || 30)\n\n self.pos(y)\n },\n\n type: 'click'\n }\n\n this._eventHandlers.push(event) // For auto-dispose\n this.event(event.element, event.type, event.handler, 'on')\n }\n\n if (params.backward) {\n backward = qs(params.backward, this.clipper)\n\n event = {\n element: backward,\n\n handler: function() {\n var y = self.pos() - (params.delta || 30)\n\n self.pos(y)\n },\n\n type: 'click'\n }\n\n this._eventHandlers.push(event) // For auto-dispose\n this.event(event.element, event.type, event.handler, 'on')\n }\n\n if (params.track) {\n if (params.track === true) {\n track = this.track\n } else {\n track = qs(params.track, this.clipper)\n }\n\n if (track) {\n event = {\n element: track,\n\n handler: function(e) {\n // https://github.com/Diokuz/baron/issues/121\n if (e.target != track) return\n\n var x = e['offset' + self.origin.x],\n xBar = self.bar[self.origin.offsetPos],\n sign = 0\n\n if (x < xBar) {\n sign = -1\n } else if (x > xBar + self.bar[self.origin.offset]) {\n sign = 1\n }\n\n var y = self.pos() + sign * screen * self.scroller[self.origin.client]\n\n self.pos(y)\n },\n\n type: 'mousedown'\n }\n\n this._eventHandlers.push(event) // For auto-dispose\n this.event(event.element, event.type, event.handler, 'on')\n }\n }\n}\n","'use strict'\n\nvar g = (function() {\n return this || (1, eval)('this')\n}())\nvar scopedWindow = g && g.window || g\n\nvar event = require('./utils').event\nvar css = require('./utils').css\nvar add = require('./utils').add\nvar has = require('./utils').has\nvar rm = require('./utils').rm\nvar clone = require('./utils').clone\nvar qs = require('./utils').qs\n\nvar _baron = baron // Stored baron value for noConflict usage\n// var Item = {}\nvar pos = ['left', 'top', 'right', 'bottom', 'width', 'height']\n// Global store for all baron instances (to be able to dispose them on html-nodes)\nvar instances = []\nvar origin = {\n v: { // Vertical\n x: 'Y', pos: pos[1], oppos: pos[3], crossPos: pos[0], crossOpPos: pos[2],\n size: pos[5],\n crossSize: pos[4], crossMinSize: 'min-' + pos[4], crossMaxSize: 'max-' + pos[4],\n client: 'clientHeight', crossClient: 'clientWidth',\n scrollEdge: 'scrollLeft',\n offset: 'offsetHeight', crossOffset: 'offsetWidth', offsetPos: 'offsetTop',\n scroll: 'scrollTop', scrollSize: 'scrollHeight'\n },\n h: { // Horizontal\n x: 'X', pos: pos[0], oppos: pos[2], crossPos: pos[1], crossOpPos: pos[3],\n size: pos[4],\n crossSize: pos[5], crossMinSize: 'min-' + pos[5], crossMaxSize: 'max-' + pos[5],\n client: 'clientWidth', crossClient: 'clientHeight',\n scrollEdge: 'scrollTop',\n offset: 'offsetWidth', crossOffset: 'offsetHeight', offsetPos: 'offsetLeft',\n scroll: 'scrollLeft', scrollSize: 'scrollWidth'\n }\n}\n\n// Some ugly vars\nvar opera12maxScrollbarSize = 17\n// I hate you https://github.com/Diokuz/baron/issues/110\nvar macmsxffScrollbarSize = 15\nvar macosxffRe = /[\\s\\S]*Macintosh[\\s\\S]*\\) Gecko[\\s\\S]*/\nvar isMacFF = macosxffRe.test(scopedWindow.navigator && scopedWindow.navigator.userAgent)\n\nvar log, liveBarons, shownErrors\n\nif (process.env.NODE_ENV !== 'production') {\n log = require('./log')\n liveBarons = 0\n shownErrors = {\n liveTooMany: false,\n allTooMany: false\n }\n}\n\n// window.baron and jQuery.fn.baron points to this function\nfunction baron(user) {\n var withParams = !!user\n var tryNode = (user && user[0]) || user\n var isNode = typeof user == 'string' || tryNode instanceof HTMLElement\n var params = isNode ? { root: user } : clone(user)\n var jQueryMode\n var rootNode\n var defaultParams = {\n direction: 'v',\n barOnCls: '_scrollbar',\n resizeDebounce: 0,\n event: event,\n cssGuru: false,\n impact: 'scroller',\n position: 'static'\n }\n\n params = params || {}\n\n // Extending default params by user-defined params\n for (var key in defaultParams) {\n if (params[key] == null) { // eslint-disable-line\n params[key] = defaultParams[key]\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (params.position == 'absolute' && params.impact == 'clipper') {\n log('error', [\n 'Simultaneous use of `absolute` position and `clipper` impact values detected.',\n 'Those values cannot be used together.',\n 'See more https://github.com/Diokuz/baron/issues/138'\n ].join(' '), params)\n }\n }\n\n // `this` could be a jQuery instance\n jQueryMode = this && this instanceof scopedWindow.jQuery\n\n if (params._chain) {\n rootNode = params.root\n } else if (jQueryMode) {\n params.root = rootNode = this[0]\n } else {\n rootNode = qs(params.root || params.scroller)\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (!rootNode) {\n log('error', [\n 'Baron initialization failed: root node not found.'\n ].join(', '), params)\n\n return // or return baron-shell?\n }\n }\n\n var attr = manageAttr(rootNode, params.direction)\n var id = +attr // Could be NaN\n\n params.index = id\n\n // baron() can return existing instances,\n // @TODO update params on-the-fly\n // https://github.com/Diokuz/baron/issues/124\n if (id == id && attr !== null && instances[id]) {\n if (process.env.NODE_ENV !== 'production') {\n if (withParams) {\n log('error', [\n 'repeated initialization for html-node detected',\n 'https://github.com/Diokuz/baron/blob/master/docs/logs/repeated.md'\n ].join(', '), params.root)\n }\n }\n\n return instances[id]\n }\n\n // root and scroller can be different nodes\n if (params.root && params.scroller) {\n params.scroller = qs(params.scroller, rootNode)\n if (process.env.NODE_ENV !== 'production') {\n if (!params.scroller) {\n log('error', 'Scroller not found!', rootNode, params.scroller)\n }\n }\n } else {\n params.scroller = rootNode\n }\n\n params.root = rootNode\n\n var instance = init(params)\n\n if (instance.autoUpdate) {\n instance.autoUpdate()\n }\n\n return instance\n}\n\nfunction arrayEach(_obj, iterator) {\n var i = 0\n var obj = _obj\n\n if (obj.length === undefined || obj === scopedWindow) obj = [obj]\n\n while (obj[i]) {\n iterator.call(this, obj[i], i)\n i++\n }\n}\n\n// shortcut for getTime\nfunction getTime() {\n return new Date().getTime()\n}\n\nif (process.env.NODE_ENV !== 'production') {\n baron._instances = instances\n}\n\nfunction manageEvents(item, eventManager, mode) {\n // Creating new functions for one baron item only one time\n item._eventHandlers = item._eventHandlers || [\n {\n // onScroll:\n element: item.scroller,\n\n handler: function(e) {\n item.scroll(e)\n },\n\n type: 'scroll'\n }, {\n // css transitions & animations\n element: item.root,\n\n handler: function() {\n item.update()\n },\n\n type: 'transitionend animationend'\n }, {\n // onKeyup (textarea):\n element: item.scroller,\n\n handler: function() {\n item.update()\n },\n\n type: 'keyup'\n }, {\n // onMouseDown:\n element: item.bar,\n\n handler: function(e) {\n e.preventDefault() // Text selection disabling in Opera\n item.selection() // Disable text selection in ie8\n item.drag.now = 1 // Save private byte\n if (item.draggingCls) {\n add(item.root, item.draggingCls)\n }\n },\n\n type: 'touchstart mousedown'\n }, {\n // onMouseUp:\n element: document,\n\n handler: function() {\n item.selection(1) // Enable text selection\n item.drag.now = 0\n if (item.draggingCls) {\n rm(item.root, item.draggingCls)\n }\n },\n\n type: 'mouseup blur touchend'\n }, {\n // onCoordinateReset:\n element: document,\n\n handler: function(e) {\n if (e.button != 2) { // Not RM\n item._pos0(e)\n }\n },\n\n type: 'touchstart mousedown'\n }, {\n // onMouseMove:\n element: document,\n\n handler: function(e) {\n if (item.drag.now) {\n item.drag(e)\n }\n },\n\n type: 'mousemove touchmove'\n }, {\n // @TODO make one global listener\n // onResize:\n element: scopedWindow,\n\n handler: function() {\n item.update()\n },\n\n type: 'resize'\n }, {\n // @todo remove\n // sizeChange:\n element: item.root,\n\n handler: function() {\n item.update()\n },\n\n type: 'sizeChange'\n }, {\n // Clipper onScroll bug https://github.com/Diokuz/baron/issues/116\n element: item.clipper,\n\n handler: function() {\n item.clipperOnScroll()\n },\n\n type: 'scroll'\n }\n ]\n\n arrayEach(item._eventHandlers, function(evt) {\n if (evt.element) {\n // workaround for element-elements in `fix` plugin\n // @todo dispose `fix` in proper way and remove workaround\n if (evt.element.length && evt.element !== scopedWindow) {\n for (var i = 0; i < evt.element.length; i++) {\n eventManager(evt.element[i], evt.type, evt.handler, mode)\n }\n } else {\n eventManager(evt.element, evt.type, evt.handler, mode)\n }\n }\n })\n\n // if (item.scroller) {\n // event(item.scroller, 'scroll', item._eventHandlers.onScroll, mode)\n // }\n // if (item.bar) {\n // event(item.bar, 'touchstart mousedown', item._eventHandlers.onMouseDown, mode)\n // }\n // event(document, 'mouseup blur touchend', item._eventHandlers.onMouseUp, mode)\n // event(document, 'touchstart mousedown', item._eventHandlers.onCoordinateReset, mode)\n // event(document, 'mousemove touchmove', item._eventHandlers.onMouseMove, mode)\n // event(window, 'resize', item._eventHandlers.onResize, mode)\n // if (item.root) {\n // event(item.root, 'sizeChange', item._eventHandlers.onResize, mode)\n // // Custon event for alternate baron update mechanism\n // }\n}\n\n// set, remove or read baron-specific id-attribute\n// @returns {String|null} - id node value, or null, if there is no attr\nfunction manageAttr(node, direction, mode, id) {\n var attrName = 'data-baron-' + direction + '-id'\n\n if (mode == 'on') {\n node.setAttribute(attrName, id)\n } else if (mode == 'off') {\n node.removeAttribute(attrName)\n }\n\n return node.getAttribute(attrName)\n}\n\nfunction init(params) {\n var out = new baron.prototype.constructor(params)\n\n manageEvents(out, params.event, 'on')\n\n manageAttr(out.root, params.direction, 'on', instances.length)\n instances.push(out)\n\n if (process.env.NODE_ENV !== 'production') {\n liveBarons++\n if (liveBarons > 100 && !shownErrors.liveTooMany) {\n log('warn', [\n 'You have too many live baron instances on page (' + liveBarons + ')!',\n 'Are you forget to dispose some of them?',\n 'All baron instances can be found in baron._instances:'\n ].join(' '), instances)\n shownErrors.liveTooMany = true\n }\n if (instances.length > 1000 && !shownErrors.allTooMany) {\n log('warn', [\n 'You have too many inited baron instances on page (' + instances.length + ')!',\n 'Some of them are disposed, and thats good news.',\n 'but baron.init was call too many times, and thats is bad news.',\n 'All baron instances can be found in baron._instances:'\n ].join(' '), instances)\n shownErrors.allTooMany = true\n }\n }\n\n out.update()\n\n return out\n}\n\nfunction fire(eventName) {\n if (this.events && this.events[eventName]) {\n for (var i = 0; i < this.events[eventName].length; i++) {\n var args = Array.prototype.slice.call( arguments, 1 )\n\n this.events[eventName][i].apply(this, args)\n }\n }\n}\n\nbaron.prototype = {\n // underscore.js realization\n // used in autoUpdate plugin\n _debounce: function(func, wait) {\n var self = this,\n timeout,\n // args, // right now there is no need for arguments\n // context, // and for context\n timestamp\n // result // and for result\n\n var later = function() {\n if (self._disposed) {\n clearTimeout(timeout)\n timeout = self = null\n return\n }\n\n var last = getTime() - timestamp\n\n if (last < wait && last >= 0) {\n timeout = setTimeout(later, wait - last)\n } else {\n timeout = null\n // result = func.apply(context, args)\n func()\n // context = args = null\n }\n }\n\n return function() {\n // context = this\n // args = arguments\n timestamp = getTime()\n\n if (!timeout) {\n timeout = setTimeout(later, wait)\n }\n\n // return result\n }\n },\n\n constructor: function(params) {\n var barPos,\n scrollerPos0,\n track,\n resizePauseTimer,\n scrollingTimer,\n resizeLastFire,\n oldBarSize\n\n resizeLastFire = getTime()\n\n this.params = params\n this.event = params.event\n this.events = {}\n\n // DOM elements\n this.root = params.root // Always html node, not just selector\n this.scroller = qs(params.scroller)\n if (process.env.NODE_ENV !== 'production') {\n if (this.scroller.tagName == 'body') {\n log('error', [\n 'Please, do not use BODY as a scroller.',\n 'https://github.com/Diokuz/baron/blob/master/docs/logs/do-not-use-body.md'\n ].join(', '), params)\n }\n }\n this.bar = qs(params.bar, this.root)\n track = this.track = qs(params.track, this.root)\n if (!this.track && this.bar) {\n track = this.bar.parentNode\n }\n this.clipper = this.scroller.parentNode\n\n // Parameters\n this.direction = params.direction\n this.rtl = params.rtl\n this.origin = origin[this.direction]\n this.barOnCls = params.barOnCls\n this.scrollingCls = params.scrollingCls\n this.draggingCls = params.draggingCls\n this.impact = params.impact\n this.position = params.position\n this.rtl = params.rtl\n this.barTopLimit = 0\n this.resizeDebounce = params.resizeDebounce\n\n // Updating height or width of bar\n function setBarSize(_size) {\n var barMinSize = this.barMinSize || 20\n var size = _size\n\n if (size > 0 && size < barMinSize) {\n size = barMinSize\n }\n\n if (this.bar) {\n css(this.bar, this.origin.size, parseInt(size, 10) + 'px')\n }\n }\n\n // Updating top or left bar position\n function posBar(_pos) {\n if (this.bar) {\n var was = css(this.bar, this.origin.pos),\n will = +_pos + 'px'\n\n if (will && will != was) {\n css(this.bar, this.origin.pos, will)\n }\n }\n }\n\n // Free path for bar\n function k() {\n return track[this.origin.client] - this.barTopLimit - this.bar[this.origin.offset]\n }\n\n // Relative content top position to bar top position\n function relToPos(r) {\n return r * k.call(this) + this.barTopLimit\n }\n\n // Bar position to relative content position\n function posToRel(t) {\n return (t - this.barTopLimit) / k.call(this)\n }\n\n // Cursor position in main direction in px // Now with iOs support\n this.cursor = function(e) {\n return e['client' + this.origin.x] ||\n (((e.originalEvent || e).touches || {})[0] || {})['page' + this.origin.x]\n }\n\n // Text selection pos preventing\n function dontPosSelect() {\n return false\n }\n\n this.pos = function(x) { // Absolute scroller position in px\n var ie = 'page' + this.origin.x + 'Offset',\n key = (this.scroller[ie]) ? ie : this.origin.scroll\n\n if (x !== undefined) this.scroller[key] = x\n\n return this.scroller[key]\n }\n\n this.rpos = function(r) { // Relative scroller position (0..1)\n var free = this.scroller[this.origin.scrollSize] - this.scroller[this.origin.client],\n x\n\n if (r) {\n x = this.pos(r * free)\n } else {\n x = this.pos()\n }\n\n return x / (free || 1)\n }\n\n // Switch on the bar by adding user-defined CSS classname to scroller\n this.barOn = function(dispose) {\n if (this.barOnCls) {\n var noScroll = this.scroller[this.origin.client] >= this.scroller[this.origin.scrollSize]\n\n if (dispose || noScroll) {\n if (has(this.root, this.barOnCls)) {\n rm(this.root, this.barOnCls)\n }\n } else if (!has(this.root, this.barOnCls)) {\n add(this.root, this.barOnCls)\n }\n }\n }\n\n this._pos0 = function(e) {\n scrollerPos0 = this.cursor(e) - barPos\n }\n\n this.drag = function(e) {\n var rel = posToRel.call(this, this.cursor(e) - scrollerPos0)\n var sub = (this.scroller[this.origin.scrollSize] - this.scroller[this.origin.client])\n\n this.scroller[this.origin.scroll] = rel * sub\n }\n\n // Text selection preventing on drag\n this.selection = function(enable) {\n this.event(document, 'selectpos selectstart', dontPosSelect, enable ? 'off' : 'on')\n }\n\n // onResize & DOM modified handler\n // also fires on init\n // Note: max/min-size didnt sets if size did not really changed (for example, on init in Chrome)\n this.resize = function() {\n var self = this\n var minPeriod = (self.resizeDebounce === undefined) ? 300 : self.resizeDebounce\n var delay = 0\n\n if (getTime() - resizeLastFire < minPeriod) {\n clearTimeout(resizePauseTimer)\n delay = minPeriod\n }\n\n function upd() {\n var offset = self.scroller[self.origin.crossOffset]\n var client = self.scroller[self.origin.crossClient]\n var padding = 0\n var was, will\n\n // https://github.com/Diokuz/baron/issues/110\n if (isMacFF) {\n padding = macmsxffScrollbarSize\n\n // Opera 12 bug https://github.com/Diokuz/baron/issues/105\n } else if (client > 0 && offset === 0) {\n // Only Opera 12 in some rare nested flexbox cases goes here\n // Sorry guys for magic,\n // but I dont want to create temporary html-nodes set\n // just for measuring scrollbar size in Opera 12.\n // 17px for Windows XP-8.1, 15px for Mac (really rare).\n offset = client + opera12maxScrollbarSize\n }\n\n if (offset) { // if there is no size, css should not be set\n self.barOn()\n\n if (self.impact == 'scroller') { // scroller\n var delta = offset - client + padding\n\n // `static` position works only for `scroller` impact\n if (self.position == 'static') { // static\n was = css(self.scroller, self.origin.crossSize)\n will = self.clipper[self.origin.crossClient] + delta + 'px'\n\n if (was != will) {\n self._setCrossSizes(self.scroller, will)\n }\n } else { // absolute\n var styles = {}\n var key = self.rtl ? 'Left' : 'Right'\n\n if (self.direction == 'h') {\n key = 'Bottom'\n }\n\n styles['padding' + key] = delta + 'px'\n css(self.scroller, styles)\n }\n } else { // clipper\n was = css(self.clipper, self.origin.crossSize)\n will = client + 'px'\n\n if (was != will) {\n self._setCrossSizes(self.clipper, will)\n }\n }\n } else {\n // do nothing (display: none, or something)\n }\n\n Array.prototype.unshift.call(arguments, 'resize')\n fire.apply(self, arguments)\n\n resizeLastFire = getTime()\n }\n\n if (delay) {\n resizePauseTimer = setTimeout(upd, delay)\n } else {\n upd()\n }\n }\n\n this.updatePositions = function(force) {\n var newBarSize,\n self = this\n\n if (self.bar) {\n newBarSize = (track[self.origin.client] - self.barTopLimit) *\n self.scroller[self.origin.client] / self.scroller[self.origin.scrollSize]\n\n // Positioning bar\n if (force || parseInt(oldBarSize, 10) != parseInt(newBarSize, 10)) {\n setBarSize.call(self, newBarSize)\n oldBarSize = newBarSize\n }\n\n barPos = relToPos.call(self, self.rpos())\n\n posBar.call(self, barPos)\n }\n\n Array.prototype.unshift.call( arguments, 'scroll' )\n fire.apply(self, arguments)\n }\n\n // onScroll handler\n this.scroll = function() {\n var self = this\n\n self.updatePositions()\n\n if (self.scrollingCls) {\n if (!scrollingTimer) {\n add(self.root, self.scrollingCls)\n }\n clearTimeout(scrollingTimer)\n scrollingTimer = setTimeout(function() {\n rm(self.root, self.scrollingCls)\n scrollingTimer = undefined\n }, 300)\n }\n }\n\n // https://github.com/Diokuz/baron/issues/116\n this.clipperOnScroll = function() {\n // WTF is this line? https://github.com/Diokuz/baron/issues/134\n // if (this.direction == 'h') return\n\n // assign `initial scroll position` to `clipper.scrollLeft` (0 for ltr, ~20 for rtl)\n if (!this.rtl) {\n this.clipper[this.origin.scrollEdge] = 0\n } else {\n this.clipper[this.origin.scrollEdge] = this.clipper[this.origin.scrollSize]\n }\n }\n\n // Flexbox `align-items: stretch` (default) requires to set min-width for vertical\n // and max-height for horizontal scroll. Just set them all.\n // http://www.w3.org/TR/css-flexbox-1/#valdef-align-items-stretch\n this._setCrossSizes = function(node, size) {\n var styles = {}\n\n styles[this.origin.crossSize] = size\n styles[this.origin.crossMinSize] = size\n styles[this.origin.crossMaxSize] = size\n\n css(node, styles)\n }\n\n // Set common css rules\n this._dumbCss = function(on) {\n if (params.cssGuru) return\n\n var overflow = on ? 'hidden' : null\n var msOverflowStyle = on ? 'none' : null\n\n css(this.clipper, {\n overflow: overflow,\n msOverflowStyle: msOverflowStyle,\n position: this.position == 'static' ? '' : 'relative'\n })\n\n var scroll = on ? 'scroll' : null\n var axis = this.direction == 'v' ? 'y' : 'x'\n var scrollerCss = {}\n\n scrollerCss['overflow-' + axis] = scroll\n scrollerCss['box-sizing'] = 'border-box'\n scrollerCss.margin = '0'\n scrollerCss.border = '0'\n\n if (this.position == 'absolute') {\n scrollerCss.position = 'absolute'\n scrollerCss.top = '0'\n\n if (this.direction == 'h') {\n scrollerCss.left = scrollerCss.right = '0'\n } else {\n scrollerCss.bottom = '0'\n scrollerCss.right = this.rtl ? '0' : ''\n scrollerCss.left = this.rtl ? '' : '0'\n }\n }\n\n css(this.scroller, scrollerCss)\n }\n\n // onInit actions\n this._dumbCss(true)\n\n if (isMacFF) {\n var padding = 'paddingRight'\n var styles = {}\n // getComputedStyle is ie9+, but we here only in f ff\n var paddingWas = scopedWindow.getComputedStyle(this.scroller)[[padding]]\n\n if (params.direction == 'h') {\n padding = 'paddingBottom'\n } else if (params.rtl) {\n padding = 'paddingLeft'\n }\n\n var numWas = parseInt(paddingWas, 10)\n\n if (numWas != numWas) numWas = 0\n styles[padding] = (macmsxffScrollbarSize + numWas) + 'px'\n css(this.scroller, styles)\n }\n\n return this\n },\n\n // fires on any update and on init\n update: function(params) {\n if (process.env.NODE_ENV !== 'production') {\n if (this._disposed) {\n log('error', [\n 'Update on disposed baron instance detected.',\n 'You should clear your stored baron value for this instance:',\n this\n ].join(' '), params)\n }\n }\n\n fire.call(this, 'upd', params) // Update all plugins' params\n\n this.resize(1)\n this.updatePositions(1)\n\n return this\n },\n\n // One instance\n dispose: function() {\n if (process.env.NODE_ENV !== 'production') {\n if (this._disposed) {\n log('error', 'Already disposed:', this)\n }\n\n liveBarons--\n }\n\n manageEvents(this, this.event, 'off')\n manageAttr(this.root, this.params.direction, 'off')\n if (this.params.direction == 'v') {\n this._setCrossSizes(this.scroller, '')\n } else {\n this._setCrossSizes(this.clipper, '')\n }\n this._dumbCss(false)\n this.barOn(true)\n fire.call(this, 'dispose')\n instances[this.params.index] = null\n this.params = null\n this._disposed = true\n },\n\n on: function(eventName, func, arg) {\n var names = eventName.split(' ')\n\n for (var i = 0; i < names.length; i++) {\n if (names[i] == 'init') {\n func.call(this, arg)\n } else {\n this.events[names[i]] = this.events[names[i]] || []\n\n this.events[names[i]].push(function(userArg) {\n func.call(this, userArg || arg)\n })\n }\n }\n },\n\n baron: function(params) {\n params.root = this.params.root\n params.scroller = this.params.scroller\n params.direction = (this.params.direction == 'v') ? 'h' : 'v'\n params._chain = true\n\n return baron(params)\n }\n}\n\n// baron.fn.constructor.prototype = baron.fn\nbaron.prototype.constructor.prototype = baron.prototype\n\n// Use when you need \"baron\" global var for another purposes\nbaron.noConflict = function() {\n scopedWindow.baron = _baron // Restoring original value of \"baron\" global var\n\n return baron\n}\n\nbaron.version = '3.0.1'\n\nbaron.prototype.autoUpdate = require('./autoUpdate')(scopedWindow)\nbaron.prototype.fix = require('./fix')\nbaron.prototype.controls = require('./controls')\n\nmodule.exports = baron\n","'use strict'\n\n/* Fixable elements plugin for baron */\n\nvar log = require('./log')\nvar css = require('./utils').css\nvar add = require('./utils').add\nvar rm = require('./utils').rm\n\nmodule.exports = function fix(userParams) {\n var elements,\n viewPortSize,\n params = { // Default params\n outside: '',\n inside: '',\n before: '',\n after: '',\n past: '',\n future: '',\n radius: 0,\n minView: 0\n },\n topFixHeights = [], // inline style for element\n topRealHeights = [], // ? something related to negative margins for fixable elements\n headerTops = [], // offset positions when not fixed\n scroller = this.scroller,\n eventManager = this.event,\n self = this\n\n if (process.env.NODE_ENV !== 'production') {\n if (this.position != 'static') {\n log('error', [\n 'Fix plugin cannot work properly in non-static baron position.',\n 'See more https://github.com/Diokuz/baron/issues/135'\n ].join(' '), this.params)\n }\n }\n\n // i - number of fixing element, pos - fix-position in px, flag - 1: top, 2: bottom\n // Invocation only in case when fix-state changed\n function fixElement(i, _pos, flag) {\n var pos = _pos\n var ori = flag == 1 ? 'pos' : 'oppos'\n\n if (viewPortSize < (params.minView || 0)) { // No headers fixing when no enought space for viewport\n pos = undefined\n }\n\n // Removing all fixing stuff - we can do this because fixElement triggers only when fixState really changed\n css(elements[i], this.origin.pos, '')\n css(elements[i], this.origin.oppos, '')\n rm(elements[i], params.outside)\n\n // Fixing if needed\n if (pos !== undefined) {\n pos += 'px'\n css(elements[i], this.origin[ori], pos)\n add(elements[i], params.outside)\n }\n }\n\n function bubbleWheel(e) {\n try {\n var i = document.createEvent('WheelEvent') // i - for extra byte\n\n // evt.initWebKitWheelEvent(deltaX, deltaY, window, screenX, screenY, clientX, clientY, ctrlKey, altKey, shiftKey, metaKey)\n i.initWebKitWheelEvent(e.originalEvent.wheelDeltaX, e.originalEvent.wheelDeltaY)\n scroller.dispatchEvent(i)\n e.preventDefault()\n } catch (ex) {\n //\n }\n }\n\n function init(_params) {\n var pos\n\n for (var key in _params) {\n params[key] = _params[key]\n }\n\n if (params.elements instanceof HTMLElement) {\n elements = [params.elements]\n } else if (typeof params.elements == 'string') {\n elements = this.scroller.querySelectorAll(params.elements)\n } else if (params.elements && params.elements[0] instanceof HTMLElement) {\n elements = params.elements\n }\n\n if (elements) {\n viewPortSize = this.scroller[this.origin.client]\n for (var i = 0; i < elements.length; i++) {\n // Variable header heights\n pos = {}\n pos[this.origin.size] = elements[i][this.origin.offset] + 'px'\n if (elements[i].parentNode !== this.scroller) {\n css(elements[i].parentNode, pos)\n }\n pos = {}\n pos[this.origin.crossSize] = elements[i].parentNode[this.origin.crossClient] + 'px'\n css(elements[i], pos)\n\n // Between fixed headers\n viewPortSize -= elements[i][this.origin.offset]\n\n headerTops[i] = elements[i].parentNode[this.origin.offsetPos] // No paddings for parentNode\n\n // Summary elements height above current\n topFixHeights[i] = (topFixHeights[i - 1] || 0) // Not zero because of negative margins\n topRealHeights[i] = (topRealHeights[i - 1] || Math.min(headerTops[i], 0))\n\n if (elements[i - 1]) {\n topFixHeights[i] += elements[i - 1][this.origin.offset]\n topRealHeights[i] += elements[i - 1][this.origin.offset]\n }\n\n if ( !(i == 0 && headerTops[i] == 0)/* && force */) {\n this.event(elements[i], 'mousewheel', bubbleWheel, 'off')\n this.event(elements[i], 'mousewheel', bubbleWheel)\n }\n }\n\n if (params.limiter && elements[0]) { // Bottom edge of first header as top limit for track\n if (this.track && this.track != this.scroller) {\n pos = {}\n pos[this.origin.pos] = elements[0].parentNode[this.origin.offset] + 'px'\n css(this.track, pos)\n } else {\n this.barTopLimit = elements[0].parentNode[this.origin.offset]\n }\n // this.barTopLimit = elements[0].parentNode[this.origin.offset]\n this.scroll()\n }\n\n if (params.limiter === false) { // undefined (in second fix instance) should have no influence on bar limit\n this.barTopLimit = 0\n }\n }\n\n var event = {\n element: elements,\n\n handler: function() {\n var parent = this.parentNode,\n top = parent.offsetTop,\n num\n\n // finding num -> elements[num] === this\n for (var j = 0; j < elements.length; j++ ) {\n if (elements[j] === this) num = j\n }\n\n var locPos = top - topFixHeights[num]\n\n if (params.scroll) { // User defined callback\n params.scroll({\n x1: self.scroller.scrollTop,\n x2: locPos\n })\n } else {\n self.scroller.scrollTop = locPos\n }\n },\n\n type: 'click'\n }\n\n if (params.clickable) {\n this._eventHandlers.push(event) // For auto-dispose\n // eventManager(event.element, event.type, event.handler, 'off')\n for (var j = 0; j < event.element.length; j++) {\n eventManager(event.element[j], event.type, event.handler, 'on')\n }\n }\n }\n\n this.on('init', init, userParams)\n\n var fixFlag = [], // 1 - past, 2 - future, 3 - current (not fixed)\n gradFlag = []\n\n this.on('init scroll', function() {\n var fixState, hTop, gradState\n var i\n\n if (elements) {\n var change\n\n // fixFlag update\n for (i = 0; i < elements.length; i++) {\n fixState = 0\n if (headerTops[i] - this.pos() < topRealHeights[i] + params.radius) {\n // Header trying to go up\n fixState = 1\n hTop = topFixHeights[i]\n } else if (headerTops[i] - this.pos() > topRealHeights[i] + viewPortSize - params.radius) {\n // Header trying to go down\n fixState = 2\n // console.log('topFixHeights[i] + viewPortSize + topRealHeights[i]', topFixHeights[i], this.scroller[this.origin.client], topRealHeights[i])\n hTop = this.scroller[this.origin.client] - elements[i][this.origin.offset] - topFixHeights[i] - viewPortSize\n // console.log('hTop', hTop, viewPortSize, elements[this.origin.offset], topFixHeights[i])\n // (topFixHeights[i] + viewPortSize + elements[this.origin.offset]) - this.scroller[this.origin.client]\n } else {\n // Header in viewport\n fixState = 3\n hTop = undefined\n }\n\n gradState = false\n if (headerTops[i] - this.pos() < topRealHeights[i] || headerTops[i] - this.pos() > topRealHeights[i] + viewPortSize) {\n gradState = true\n }\n\n if (fixState != fixFlag[i] || gradState != gradFlag[i]) {\n fixElement.call(this, i, hTop, fixState)\n fixFlag[i] = fixState\n gradFlag[i] = gradState\n change = true\n }\n }\n\n // Adding positioning classes (on last top and first bottom header)\n if (change) { // At leats one change in elements flag structure occured\n for (i = 0; i < elements.length; i++) {\n if (fixFlag[i] == 1 && params.past) {\n add(elements[i], params.past)\n rm(elements[i], params.future)\n }\n\n if (fixFlag[i] == 2 && params.future) {\n add(elements[i], params.future)\n rm(elements[i], params.past)\n }\n\n if (fixFlag[i] == 3) {\n rm(elements[i], params.past)\n rm(elements[i], params.future)\n add(elements[i], params.inside)\n }\n\n if (fixFlag[i] != fixFlag[i + 1] && fixFlag[i] == 1) {\n add(elements[i], params.before)\n rm(elements[i], params.after) // Last top fixed header\n } else if (fixFlag[i] != fixFlag[i - 1] && fixFlag[i] == 2) {\n add(elements[i], params.after)\n rm(elements[i], params.before) // First bottom fixed header\n } else {\n rm(elements[i], params.before)\n rm(elements[i], params.after)\n }\n\n if (params.grad) {\n if (gradFlag[i]) {\n add(elements[i], params.grad)\n } else {\n rm(elements[i], params.grad)\n }\n }\n }\n }\n }\n })\n\n this.on('resize upd', function(updParams) {\n init.call(this, updParams && updParams.fix)\n })\n\n return this\n}\n","module.exports = function log(level, msg, more) {\n var func = console[level] || console.log\n var args = [\n 'Baron: ' + msg,\n more\n ]\n\n Function.prototype.apply.call(func, console, args)\n}\n","'use strict'\n\n// Test via a getter in the options object to see if the passive property is accessed\n// https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md#feature-detection\nvar supportsPassive = false\n\ntry {\n var opts = Object.defineProperty({}, 'passive', {\n get: function() {\n supportsPassive = true\n }\n })\n\n window.addEventListener('test', null, opts)\n} catch (e) {\n // pass\n}\n\nmodule.exports.event = function event(elem, _eventNames, handler, mode) {\n var eventNames = _eventNames.split(' ')\n var prefix = mode == 'on' ? 'add' : 'remove'\n\n eventNames.forEach(function(eventName) {\n var options = false\n\n if (['scroll', 'touchstart', 'touchmove'].indexOf(eventName) != -1 && supportsPassive) {\n options = { passive: true }\n }\n\n elem[prefix + 'EventListener'](eventName, handler, options)\n })\n}\n\nfunction each(obj, handler) {\n for (var key in obj) {\n if (obj.hasOwnProperty(key)) {\n handler(key, obj[key])\n }\n }\n}\n\nmodule.exports.css = function css(node, key, value) {\n var styles\n\n if (value === undefined) {\n // Getter mode\n if (typeof key == 'string') {\n return node.style[key]\n }\n\n styles = key\n } else {\n styles = {}\n styles[key] = value\n }\n\n each(styles, function(k, val) {\n node.style[k] = val\n })\n}\n\nmodule.exports.add = function add(node, cls) {\n if (!cls) {\n return\n }\n\n node.classList.add(cls)\n}\n\nmodule.exports.rm = function add(node, cls) {\n if (!cls) {\n return\n }\n\n node.classList.remove(cls)\n}\n\nmodule.exports.has = function has(node, cls) {\n if (!cls) {\n return false\n }\n\n return node.classList.contains(cls)\n}\n\nmodule.exports.clone = function clone(_input) {\n var output = {}\n var input = _input || {}\n\n each(input, function(key, value) {\n output[key] = value\n })\n\n return output\n}\n\nmodule.exports.qs = function qs(selector, _ctx) {\n if (selector instanceof HTMLElement) {\n return selector\n }\n\n var ctx = _ctx || document\n\n return ctx.querySelector(selector)\n}\n\nmodule.exports.each = each\n"],"names":["DEFAULT_PORTS","AngularLocationWrapper","fn","replacement","self","newHash","pathname","location","parsedPath","url","search","paramValue","newQuery","key","updatedUrl","state","newUrl","panelTemplate","$timeout","scope","elem","ctrl","panel","subs","Subscription","panelScrollbar","resizeScrollableContent","scrollRootClass","scrollerClass","scrollBarHTML","scrollRoot","scroller","updateDimensionsFromParentScope","event","directiveModule","directiveCache","panelEditorTab","dynamicDirectiveSrv","pluginId","tabName","result","QueryRowCtrl","queryEditorRowDirective","input","arr","start","end","date","mode","interpolateTemplateVars","templateSrv","filterFunc","text","scopedVars","AlertSrv","DynamicDirectiveSrv","$compile","element","name","child","attrs","options","directiveInfo","childScope","getReactComponent","$injector","reactComponent","current","namePart","applied","wrapped","args","phase","applyFunctions","obj","propsConfig","prev","value","config","watchProps","watchDepth","watchExpressions","listener","supportsWatchCollection","supportsWatchGroup","watchGroupExpressions","expr","actualExpr","getPropExpression","exprWatchDepth","getPropWatchDepth","renderComponent","component","props","root","getPropName","prop","getPropConfig","findAttribute","propName","index","attr","defaultWatch","renderMyComponent","scopeProps","reactDirective","reactComponentName","conf","injectableProps","directive","propExpressions","ngModule","uiSegmentSrv","$sce","MetricSegment","fallbackText","type","cssClass","condition","op","ops","addTemplateVars","variableTypeFilter","results","segments","segment","variable","popoverSrv","$rootScope","openDrop","drop","cleanUp","contentElement","Timer","promise","AngularLoader","template","compiledElem","$win","defaults","x","y","opts","$tooltip","width","height","tmpScope","left","top","dropdownTypeahead","inputTemplate","buttonTemplate","$scope","$input","$button","newValue","item","subItem","typeaheadValues","memo","subIndex","closeDropdownMenu","menuItem","payload","submenuItem","evt","dropdownTypeahead2","timeoutId","autofillEventFix","dispatchChangeEvent","onAnimationStart","animationName","metricSegment","linkTemplate","selectTemplate","cancelBlur","linkMode","debounceLookup","selected","fromClick","query","callback","altSegments","alt","str","typeahead","items","metricSegmentModel","cachedOptions","option","tip","_t","m","compile","watchChange","editorOptBool","ngchange","editorCheckbox","$interpolate","model","label","gfDropdown","$parse","buildTemplate","placement","ul","li","iElement","iAttrs","getter","oldValue","ev","$this","tooltip","r","controller","ngModelOnBlur","elm","ngModelCtrl","emptyToNull","viewValue","validTimeSpan","modelValue","setColor","color","borderColor","tagColorFromName","bootstrapTagsinput","getItemProperty","property","select","tagElement","idx","i","getBlockNodes","nodes","node","endNode","blockNodes","rebuildOnChange","$animate","transclude","block","previousElements","clone","newScope","domEl","pos","DeltaCtrl","waitForCompile","observerConfig","delta","LinkJSONCtrl","$anchorScroll","line","unbind","scroll","linkJson","arrayJoin","ngModel","split_array","join_array","react2AngularDirective","SelectNav","children","customCss","defaultSelectedItem","navItem","PanelHeaderMenuItem","Navigation","TabsBar","Tab","PageHeader","renderTitle","actions","info","subTitle","styles","getStyles","renderHeader","main","marginTop","icon","sub","Icon","renderHeaderTitle","PageInfo","title","breadcrumbs","highlightText","ProBadge","breadcrumbsResult","bc","theme","Select","MetricSelect","placeholder","className","isSearchable","onChange","useSelectOptions","useSelectedOption","onChangeValue","selectable","variables","o","SecretFormField","registerAngularDirectives","Footer","Spinner","HelpModal","EmptyListCTA","TagFilter","ColorPicker","SeriesColorPickerPopover","UnitPicker","GraphContextMenu","DataLinksInlineEditor","DataSourceHttpSettings","FolderPicker","TimePickerSettings","ClipboardButton","queryPartEditorDirective","paramTemplate","part","partDef","$paramsContainer","clickFuncParam","paramIndex","$link","inputBlur","inputKeyPress","e","inputKeyDown","addTypeahead","param","typeaheadSource","val","dynamicOptions","promiseToDigest","res","action","addElementsAndCompile","$paramLink","relink","typeaheadMatcher","FormDropdownCtrl","$element","optionTexts","formDropdownDirective","geminiScrollbar","scrollParams","scrollbar","expansionLevel","jsonObject","html","checkboxTemplate","SwitchCtrl","switchDirective","checkboxDirective","infoPopover","offset","position","classes","openOn","content","dropOptions","spectrumPicker","DEFAULT_THEME_DARK","DEFAULT_THEME_LIGHT","DEFAULT_MODE","DEFAULT_MAX_LINES","DEFAULT_TAB_SIZE","DEFAULT_BEHAVIORS","DEFAULT_SNIPPETS","editorTemplate","langMode","maxLines","showGutter","tabSize","behavioursEnabled","snippetsEnabled","aceElem","ace","codeEditor","editorSession","editorOptions","setThemeMode","setLangMode","setEditorContent","textarea","editorValue","lang","anyEditor","aceModeName","codeEditorDirective","sqlPartEditorDirective","switchToLink","datasourceSetting","relativeTemplateUrlToCDN","templateUrl","baseUrl","pluginDirectiveLoader","$http","$templateCache","$location","getTemplate","cached","relativeTemplateUrlToAbs","getPluginComponentDirective","loadPanelComponentInfo","componentInfo","panelInfo","importPanelPlugin","panelPlugin","PanelCtrl","getModule","ds","dsPlugin","dsMeta","angularUrl","appPlugin","appendAndCompile","registerPluginComponent","directiveName","directiveFn","err","GrafanaCtrl","utilSrv","contextSrv","angularLoader","colors","localScope","callerScope","grafanaAppDirective","body","lastActivity","activeUser","inActiveTimeLimit","checkForInActiveUser","userActivityDetected","target","clickAutoHide","clickAutoHideParent","popover","RouteParamsProvider","RouteProvider","tamperAngularLocation","$provide","$delegate","interceptAngularLocation","initAngularRoutingBridge","monkeyPatchInjectorWithPreAssignedBindings","injector","locals","serviceName","parentScope","UtilSrv","deprecationWarning","AnnotationsSrv","annotation","registerComponents","AngularApp","$controllerProvider","$compileProvider","$filterProvider","$httpProvider","$sceDelegateProvider","get","DashboardLoaderSrv","sdk","module","MetricsPanelCtrl","data","timeInfo","legacy","v","queryRunner","datasource","newTimeData","frame","plugin","editorTab","menu","QueryCtrl","templates","$","transitionEnd","el","transEndEventNames","toggle","Dropdown","$el","$parent","isActive","getParent","clearMenus","$items","$active","selector","old","Modal","that","transition","timeout","animate","doAnimate","href","$target","Tooltip","eventIn","eventOut","triggers","trigger","$tip","actualWidth","actualHeight","tp","replace","dimension","removeWithAnimation","$e","$ul","previous","container","next","Typeahead","beginswith","caseSensitive","caseInsensitive","$1","match","active","eventName","isSupported","Affix","scrollHeight","scrollTop","offsetBottom","offsetTop","reset","affix","$spy","defaultOptions","$tag","TagsInput","dontPushVal","itemValue","itemText","tagClass","existing","$existingTag","htmlEncode","$option","other","makeOptionItemFunction","makeOptionFunction","process","processItems","texts","map","regex","$inputWrapper","doGetCaretPosition","$prevTag","$nextTag","elt","arg1","arg2","tagsinput","retVal","propertyName","htmlEncodeContainer","oField","iCaretPos","oSel","bindonceModule","toBoolean","msie","bindonceDirective","$attrs","showHideBinder","show","hide","classBinder","binder","bindonceValue","parent","afterNode","parentNode","afterNextSibling","selectedTranscludes","switchCtrl","selectedTransclude","attrValue","attrKey","newAttr","bindonceController","boDirective","childPriority","tElement","tAttrs","controllers","parentValue","window","angular","shallowCopy","src","dst","isArray","ii","isObject","routeToRegExp","path","keys","pattern","_","slash","optional","star","isDefined","noop","ngRouteModule","$RouteProvider","instantiateRoute","$routeMinErr","isEagerInstantiationEnabled","inherit","extra","routes","route","routeCopy","redirectPath","params","enabled","$routeParams","$q","$templateRequest","$browser","forceReload","preparedRoute","preparedRouteIsUpdateOnly","$route","fakeLocationEvent","prepareRoute","commitRoute","newParams","interpolate","switchRouteMatcher","on","len","$locationEvent","lastRoute","parseRoute","isNavigationUpdateOnly","nextRoute","nextRoutePromise","getRedirectionData","handlePossibleRedirection","keepProcessingRoute","resolveLocals","error","oldPath","oldSearch","oldUrl","getTemplateFor","newRoute","oldRoute","string","segmentMatch","$RouteParamsProvider","ngViewFactory","ngViewFillContentFactory","$transclude","currentScope","currentElement","previousLeaveAnimation","autoScrollExp","onloadExp","update","cleanupLastView","response","$controller","link","$sanitizeMinErr","bind","extend","forEach","lowercase","nodeContains","htmlParser","htmlSanitizeWriter","$SanitizeProvider","hasBeenInstantiated","svgEnabled","$$sanitizeUri","validElements","svgElements","buf","uri","isImage","enableSvg","elements","addElementsTo","voidElements","validAttrs","arrayToMap","htmlParserImpl","htmlSanitizeWriterImpl","arg","SURROGATE_PAIR_REGEXP","NON_ALPHANUMERIC_REGEXP","stringToMap","optionalEndTagBlockElements","optionalEndTagInlineElements","optionalEndTagElements","blockElements","inlineElements","blockedElements","uriAttrs","htmlAttrs","svgAttrs","lowercaseKeys","elementsMap","newElements","getInertBodyElement","document","isDOMParserAvailable","getInertBodyElement_DOMParser","inertDocument","inertBodyElement","getInertBodyElement_InertDocument","stripCustomNsAttrs","handler","mXSSAttempts","attrToMap","nextNode","getNonDescendant","encodeEntities","hi","low","uriValidator","ignoreCurrentElement","out","tag","lkey","chars","l","attrNode","attrName","sanitizeText","writer","$sanitize","LINKY_URL_REGEXP","MAILTO_REGEXP","linkyMinErr","isFunction","isString","attributes","attributesFn","raw","addText","addLink","linkAttributes","autoUpdateOne","MutationObserver","watcher","actualizeWatcher","stopWatch","startWatch","debouncedUpdater","win","qs","forward","backward","track","screen","xBar","sign","g","scopedWindow","css","add","has","rm","_baron","baron","instances","origin","opera12maxScrollbarSize","macmsxffScrollbarSize","macosxffRe","isMacFF","log","liveBarons","shownErrors","user","withParams","tryNode","isNode","jQueryMode","rootNode","defaultParams","manageAttr","id","instance","init","arrayEach","_obj","iterator","getTime","manageEvents","eventManager","direction","fire","func","wait","timestamp","later","last","barPos","scrollerPos0","resizePauseTimer","scrollingTimer","resizeLastFire","oldBarSize","setBarSize","_size","barMinSize","size","posBar","_pos","was","will","k","relToPos","posToRel","t","dontPosSelect","ie","free","dispose","noScroll","rel","enable","minPeriod","delay","upd","client","padding","force","newBarSize","overflow","msOverflowStyle","axis","scrollerCss","paddingWas","numWas","names","userArg","userParams","viewPortSize","topFixHeights","topRealHeights","headerTops","fixElement","flag","ori","bubbleWheel","_params","num","j","locPos","fixFlag","gradFlag","fixState","hTop","gradState","change","updParams","level","msg","more","supportsPassive","_eventNames","eventNames","prefix","each","cls","_input","output","_ctx","ctx"],"sourceRoot":""}