1
+ export declare class Utils {
2
+ static raiseCustomEvent ( element : HTMLElement , eventName : string , eventData : any ) : void ;
3
+ static findIndex < T > ( predicate : ( T ) => boolean , xs : T [ ] ) : number ;
4
+ static find < T > ( predicate : ( T ) => boolean , xs : T [ ] ) : T ;
5
+ static remove < T > ( predicate : ( T ) => boolean , xs : T [ ] ) : void ;
6
+ static assign : ( ...args : any [ ] ) => any ;
7
+ }
8
+
9
+ declare global {
10
+ interface Document {
11
+ mozCancelFullScreen : Function ;
12
+ msExitFullscreen : Function ;
13
+ }
14
+ interface HTMLIFrameElement {
15
+ mozRequestFullScreen : Function ;
16
+ msRequestFullscreen : Function ;
17
+ }
18
+ }
19
+ export interface ILoadMessage {
20
+ action : string ;
21
+ accessToken : string ;
22
+ }
23
+ export interface IEmbedOptions {
24
+ type ?: string ;
25
+ id ?: string ;
26
+ accessToken ?: string ;
27
+ embedUrl ?: string ;
28
+ webUrl ?: string ;
29
+ name ?: string ;
30
+ filterPaneEnabled ?: boolean ;
31
+ getGlobalAccessToken ?: ( ) => string ;
32
+ }
33
+ export interface IEmbedConstructor {
34
+ new ( ...args : any [ ] ) : Embed ;
35
+ }
36
+ export declare abstract class Embed {
37
+ static embedUrlAttribute : string ;
38
+ static accessTokenAttribute : string ;
39
+ static typeAttribute : string ;
40
+ /**
41
+ * Attribute used to specify type of visual.
42
+ * Example: `<div powerbi-type="report"></div>`
43
+ */
44
+ static name : string ;
45
+ /**
46
+ * Default options for embeddable component.
47
+ */
48
+ private static defaultOptions ;
49
+ element : HTMLElement ;
50
+ iframe : HTMLIFrameElement ;
51
+ options : IEmbedOptions ;
52
+ constructor ( element : HTMLElement , options : IEmbedOptions ) ;
53
+ /**
54
+ * Handler for when the iframe has finished loading the powerbi placeholder page.
55
+ * This is used to inject configuration options such as access token, loadAction, etc
56
+ * which allow iframe to load the actual report with authentication.
57
+ */
58
+ load ( options : IEmbedOptions , requireId ?: boolean , message ?: ILoadMessage ) : void ;
59
+ /**
60
+ * Get access token from first available location: options, attribute, global.
61
+ */
62
+ private getAccessToken ( ) ;
63
+ /**
64
+ * Get embed url from first available location: options, attribute.
65
+ */
66
+ protected getEmbedUrl ( ) : string ;
67
+ /**
68
+ * Request the browser to make the components iframe fullscreen.
69
+ */
70
+ fullscreen ( ) : void ;
71
+ /**
72
+ * Exit fullscreen.
73
+ */
74
+ exitFullscreen ( ) : void ;
75
+ /**
76
+ * Return true if iframe is fullscreen,
77
+ * otherwise return false
78
+ */
79
+ private isFullscreen ( iframe ) ;
80
+ }
81
+ export { } ;
82
+
83
+
84
+ export interface IReportLoadMessage extends ILoadMessage {
85
+ reportId : string ;
86
+ }
87
+ export declare class Report extends Embed {
88
+ static name : string ;
89
+ getEmbedUrl ( ) : string ;
90
+ load ( options : IEmbedOptions , requireId ?: boolean ) : void ;
91
+ }
92
+
93
+
94
+ export interface ITileLoadMessage extends ILoadMessage {
95
+ tileId : string ;
96
+ }
97
+ export declare class Tile extends Embed {
98
+ static name : string ;
99
+ getEmbedUrl ( ) : string ;
100
+ load ( options : IEmbedOptions , requireId ?: boolean ) : void ;
101
+ }
102
+
1
103
2
104
export interface IPowerBiElement extends HTMLElement {
3
105
powerBiEmbed : Embed ;
@@ -6,15 +108,7 @@ export interface IPowerBiConfiguration {
6
108
autoEmbedOnContentLoaded ?: boolean ;
7
109
onError ?: ( error : any ) => any ;
8
110
}
9
-
10
- declare global {
11
- interface Window {
12
- Powerbi : typeof PowerBi ;
13
- powerbi : PowerBi ;
14
- }
15
- }
16
-
17
- export class PowerBi {
111
+ export declare class PowerBi {
18
112
/**
19
113
* List of components this service can embed.
20
114
*/
@@ -39,24 +133,35 @@ export class PowerBi {
39
133
private embeds ;
40
134
constructor ( config ?: IPowerBiConfiguration ) ;
41
135
/**
42
- * Handler for DOMContentLoaded which searches DOM for elements having 'powerbi-embed' attribute
136
+ * Handler for DOMContentLoaded which searches DOM for elements having 'powerbi-embed-url ' attribute
43
137
* and automatically attempts to embed a powerbi component based on information from the attributes.
44
138
* Only runs if `config.autoEmbedOnContentLoaded` is true when the service is created.
45
139
*/
46
- init ( container : HTMLElement ) : void ;
140
+ init ( container ? : HTMLElement ) : void ;
47
141
/**
48
142
* Given an html element embed component based on configuration.
49
- * If component has already been created and attached to eleemnt simply return it to prevent creating duplicate components for same element.
143
+ * If component has already been created and attached to element re-use component instance and existing iframe,
144
+ * otherwise create a new component instance
50
145
*/
51
146
embed ( element : HTMLElement , config ?: IEmbedOptions ) : Embed ;
147
+ /**
148
+ * Given an html element embed component base configuration.
149
+ * Save component instance on element for later lookup.
150
+ */
151
+ private embedNew ( element , config ) ;
152
+ private embedExisting ( element , config ) ;
52
153
/**
53
154
* Adds event handler for DOMContentLoaded which finds all elements in DOM with attribute powerbi-embed-url
54
155
* then attempts to initiate the embed process based on data from other powerbi-* attributes.
55
156
* (This is usually only useful for applications rendered on by the server since all the data needed will be available by the time the handler is called.)
56
157
*/
57
158
enableAutoEmbed ( ) : void ;
58
159
/**
59
- * Remove component from the list of embedded components.
160
+ * Returns instance of component associated with element.
161
+ */
162
+ get ( element : HTMLElement ) : Embed ;
163
+ /**
164
+ * Given an html element which has component embedded within it, remove the component from list of embeds, remove association with component, and remove the iframe.
60
165
*/
61
166
reset ( element : HTMLElement ) : void ;
62
167
/**
@@ -66,69 +171,13 @@ export class PowerBi {
66
171
*
67
172
* If an error occurs when parsing event.data call error handler provided during configuration.
68
173
*/
69
- private onReceiveMessage ( event : MessageEvent ) : void ;
70
- }
71
-
72
- export interface IEmbedOptions {
73
- type ?: string ;
74
- id ?: string ;
75
- accessToken ?: string ;
76
- embedUrl ?: string ;
77
- webUrl ?: string ;
78
- name ?: string ;
79
- filter ?: any ;
80
- filterPaneEnabled ?: boolean ;
81
- getGlobalAccessToken ?: ( ) => string ;
82
- }
83
-
84
- declare abstract class Embed {
85
- public static embedUrlAttribute : string ;
86
- public static accessTokenAttribute : string ;
87
- public static typeAttribute : string ;
88
- /**
89
- * Default options for embeddable component.
90
- */
91
- private static defaultOptions ;
92
- element : HTMLElement ;
93
- iframe : HTMLIFrameElement ;
94
- options : IEmbedOptions ;
95
- constructor ( element : HTMLElement , options : IEmbedOptions ) ;
96
- /**
97
- * Handler for when the iframe has finished loading the powerbi placeholder page.
98
- * This is used to inject configuration options such as access token, action, etc
99
- * which allow iframe to load the actual report with authentication.
100
- */
101
- load ( options : IEmbedOptions , requireId : boolean , message : IEmbedOptions ) ;
102
- /**
103
- * Get access token from first available location: options, attribute, global.
104
- */
105
- private getAccessToken ( ) ;
106
- /**
107
- * Get embed url from first available location: options, attribute.
108
- */
109
- protected getEmbedUrl ( ) : string ;
110
- /**
111
- * Request the browser to make the components iframe fullscreen.
112
- */
113
- fullscreen ( ) : void ;
114
- /**
115
- * Exit fullscreen.
116
- */
117
- exitFullscreen ( ) : void ;
118
- /**
119
- * Return true if iframe is fullscreen,
120
- * otherwise return false
121
- */
122
- private isFullscreen ( iframe ) ;
174
+ private onReceiveMessage ( event ) ;
123
175
}
124
176
125
- export class Report extends Embed {
126
- constructor ( element : HTMLElement , options : IEmbedOptions ) ;
127
- getEmbedUrl ( ) : string ;
128
- }
129
177
130
- export class Tile extends Embed {
131
- constructor ( element : HTMLElement , options : IEmbedOptions ) ;
132
- getEmbedUrl ( ) : string ;
178
+ declare global {
179
+ interface Window {
180
+ Powerbi : typeof PowerBi ;
181
+ powerbi : PowerBi ;
182
+ }
133
183
}
134
-
0 commit comments