Skip to content

Commit 1995ba5

Browse files
committed
feat: width & size & style options
1 parent fc490e3 commit 1995ba5

1 file changed

Lines changed: 23 additions & 15 deletions

File tree

src/lib/view.ts

Lines changed: 23 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -43,52 +43,58 @@ export interface ICplayerViewOption {
4343
generateBeforeElement?: boolean;
4444
deleteElementAfterGenerate?: boolean;
4545
zoomOutKana?: boolean;
46-
showPlaylist?: boolean
46+
showPlaylist?: boolean;
47+
width?: string;
48+
size?: string;
49+
style?: string;
4750
}
4851

4952
const defaultOption: ICplayerViewOption = {
5053
element: document.body,
5154
generateBeforeElement: false,
5255
deleteElementAfterGenerate: false,
5356
zoomOutKana: false,
54-
showPlaylist: false
57+
showPlaylist: false,
58+
width: '',
59+
size: '12px',
60+
style: ''
5561
}
5662

57-
function createShadowElement(targetElement: Element, htmlTemplate: string) {
63+
function createShadowElement(targetElement: Element, htmlTemplate: string, style: string) {
5864
let shadowRoot = (targetElement as any).createShadowRoot() as ShadowRoot;
5965
shadowRoot.innerHTML = htmlTemplate;
6066
let styleElement = document.createElement('style');
6167
styleElement.innerText = style;
6268
shadowRoot.appendChild(styleElement);
63-
return shadowRoot.firstChild as Element;
69+
return shadowRoot.firstChild as HTMLElement;
6470
}
6571

66-
function createBeforeElement(targetElement: Element, htmlTemplate: string) {
72+
function createBeforeElement(targetElement: Element, htmlTemplate: string, style: string) {
6773
let element = document.createElement('div');
6874
element.innerHTML = htmlTemplate;
6975
targetElement.parentNode.insertBefore(element, targetElement);
70-
return targetElement.previousSibling as Element;
76+
return targetElement.previousSibling as HTMLElement;
7177
}
7278

73-
function createBeforeShadowElement(targetElement: Element, htmlTemplate: string) {
79+
function createBeforeShadowElement(targetElement: Element, htmlTemplate: string, style: string) {
7480
let element = document.createElement('div');
7581
let shadowRoot = (element as any).createShadowRoot() as ShadowRoot;
7682
shadowRoot.innerHTML = htmlTemplate;
7783
let styleElement = document.createElement('style');
7884
styleElement.innerText = style;
7985
shadowRoot.appendChild(styleElement);
8086
targetElement.parentNode.insertBefore(element, targetElement);
81-
return targetElement.previousSibling as Element;
87+
return targetElement.previousSibling as HTMLElement;
8288
}
8389

84-
function createElement(targetElement: Element, htmlTemplate: string) {
90+
function createElement(targetElement: Element, htmlTemplate: string, style: string) {
8591
targetElement.innerHTML = htmlTemplate;
86-
return targetElement.lastChild as Element;
92+
return targetElement.lastChild as HTMLElement;
8793
}
8894

8995
export default class cplayerView extends EventEmitter {
9096
private elementLinks = returntypeof(this.getElementLinks);
91-
private rootElement: Element;
97+
private rootElement: HTMLElement;
9298
private player: cplayer;
9399
private dropDownMenuShowInfo = true;
94100
private options: ICplayerViewOption;
@@ -102,20 +108,22 @@ export default class cplayerView extends EventEmitter {
102108
this.player = player;
103109
if (this.options.generateBeforeElement) {
104110
if ((this.options.element as any).createShadowRoot) {
105-
this.rootElement = createBeforeShadowElement(this.options.element, htmlTemplate);
111+
this.rootElement = createBeforeShadowElement(this.options.element, htmlTemplate, style + this.options.style);
106112
} else {
107-
this.rootElement = createBeforeElement(this.options.element, htmlTemplate);
113+
this.rootElement = createBeforeElement(this.options.element, htmlTemplate, style + this.options.style);
108114
}
109115
} else {
110116
if ((this.options.element as any).createShadowRoot) {
111-
this.rootElement = createShadowElement(this.options.element, htmlTemplate);
117+
this.rootElement = createShadowElement(this.options.element, htmlTemplate, style + this.options.style);
112118
} else {
113-
this.rootElement = createElement(this.options.element, htmlTemplate);
119+
this.rootElement = createElement(this.options.element, htmlTemplate, style + this.options.style);
114120
}
115121
}
116122
if (options.deleteElementAfterGenerate) {
117123
options.element.parentElement.removeChild(options.element);
118124
}
125+
this.rootElement.style.width = this.options.width;
126+
this.rootElement.style.fontSize = this.options.size;
119127
this.elementLinks = this.getElementLinks();
120128
this.injectEventListener();
121129
this.setPlayIcon(this.player.paused);

0 commit comments

Comments
 (0)