57 lines
1.7 KiB
TypeScript
57 lines
1.7 KiB
TypeScript
export enum IconProviderEnum {
|
|
FortAwesome = 'fa',
|
|
RemixIcon = 'ri',
|
|
HtmlEntities = 'he',
|
|
Text = 'text',
|
|
}
|
|
|
|
export class IconData {
|
|
constructor(
|
|
public provider: IconProviderEnum,
|
|
public className: string,
|
|
public html: string | null,
|
|
public innerHTML: string | null = null,
|
|
) {
|
|
}
|
|
}
|
|
|
|
export class IconHelper {
|
|
static GetData(conf: string): IconData | null {
|
|
const parts = conf.split(':');
|
|
switch (parts[0]) {
|
|
case IconProviderEnum.FortAwesome:
|
|
const faClassName = `fa fa-${parts.splice(1).join(' fa-')}`;
|
|
return new IconData(
|
|
IconProviderEnum.FortAwesome,
|
|
faClassName,
|
|
`<i class="${faClassName}"></i>`,
|
|
);
|
|
case IconProviderEnum.RemixIcon:
|
|
const riClassName = `ri-${parts.splice(1).join(' ri-')}`;
|
|
return new IconData(
|
|
IconProviderEnum.RemixIcon,
|
|
riClassName,
|
|
`<i class="${riClassName}"></i>`,
|
|
);
|
|
case IconProviderEnum.HtmlEntities:
|
|
const heClassName = 'the-icon';
|
|
return new IconData(
|
|
IconProviderEnum.HtmlEntities,
|
|
heClassName,
|
|
null,
|
|
`&${parts.splice(1).join(';&')};`,
|
|
);
|
|
case IconProviderEnum.Text:
|
|
const tClassName = 'the-icon';
|
|
return new IconData(
|
|
IconProviderEnum.Text,
|
|
tClassName,
|
|
null,
|
|
parts.splice(1).join(':'),
|
|
);
|
|
|
|
}
|
|
return null;
|
|
}
|
|
}
|