grafana/public/app/angular/services/AngularLoader.ts
Ashley Harrison 9852b24d61
Chore: Upgrade prettier to v3 (#71764)
* Update dependency prettier to v3 (#71586)

* Update dependency prettier to v3

* run prettier

* ignore prettier update in legacy select scss

* update command line arg

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Ashley Harrison <ashley.harrison@grafana.com>

* unplug prettier

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-07-17 15:58:22 +01:00

43 lines
1.1 KiB
TypeScript

import angular from 'angular';
import { assign } from 'lodash';
import { AngularComponent, AngularLoader as AngularLoaderInterface } from '@grafana/runtime';
import { GrafanaRootScope } from 'app/angular/GrafanaCtrl';
import coreModule from 'app/angular/core_module';
export class AngularLoader implements AngularLoaderInterface {
static $inject = ['$compile', '$rootScope'];
constructor(
private $compile: any,
private $rootScope: GrafanaRootScope
) {}
load(elem: any, scopeProps: any, template: string): AngularComponent {
const scope = this.$rootScope.$new();
assign(scope, scopeProps);
const compiledElem = this.$compile(template)(scope);
const rootNode = angular.element(elem);
rootNode.append(compiledElem);
return {
destroy: () => {
scope.$destroy();
compiledElem.remove();
},
digest: () => {
if (!scope.$$phase) {
scope.$digest();
}
},
getScope: () => {
return scope;
},
};
}
}
coreModule.service('angularLoader', AngularLoader);