react-inlinesvg 1.1.7 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +28 -15
- package/esm/helpers.d.ts +12 -0
- package/esm/helpers.js +38 -0
- package/esm/helpers.js.map +1 -0
- package/esm/index.d.ts +25 -0
- package/esm/index.js +356 -0
- package/esm/index.js.map +1 -0
- package/esm/types.d.ts +38 -0
- package/esm/types.js +2 -0
- package/esm/types.js.map +1 -0
- package/lib/helpers.d.ts +12 -10
- package/lib/helpers.js +24 -35
- package/lib/helpers.js.map +1 -1
- package/lib/index.d.ts +9 -48
- package/lib/index.js +67 -55
- package/lib/index.js.map +1 -1
- package/lib/types.d.ts +38 -0
- package/lib/types.js +3 -0
- package/lib/types.js.map +1 -0
- package/package.json +59 -53
- package/src/helpers.ts +20 -24
- package/src/index.tsx +77 -107
- package/src/types.ts +43 -0
package/README.md
CHANGED
|
@@ -2,8 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://www.npmjs.com/package/react-inlinesvg) [](https://travis-ci.org/gilbarbara/react-inlinesvg) [](https://codeclimate.com/github/gilbarbara/react-inlinesvg/maintainability) [](https://codeclimate.com/github/gilbarbara/react-inlinesvg/test_coverage)
|
|
4
4
|
|
|
5
|
-
Load inline, local or remote SVGs in your React components.
|
|
6
|
-
|
|
5
|
+
Load inline, local or remote SVGs in your React components.
|
|
6
|
+
|
|
7
|
+
## Highlights
|
|
8
|
+
|
|
9
|
+
- 🏖 **Easy to use:** Just set the `src`
|
|
10
|
+
- 🛠 **Flexible:** Personalize the options to fit your needs
|
|
11
|
+
- ⚡️ **Smart:** Async requests will be cached.
|
|
12
|
+
- 🚀 **SSR:** Render a loader until the DOM is available
|
|
13
|
+
- 🟦 **Typescript:** Nicely typed
|
|
7
14
|
|
|
8
15
|
## Usage
|
|
9
16
|
|
|
@@ -17,17 +24,27 @@ And import it into your code:
|
|
|
17
24
|
import React from 'react';
|
|
18
25
|
import SVG from 'react-inlinesvg';
|
|
19
26
|
|
|
20
|
-
const Icon = () => <SVG src=
|
|
27
|
+
const Icon = () => <SVG src={require('/path/to/myfile.svg')} />;
|
|
21
28
|
```
|
|
22
29
|
|
|
23
30
|
## Props
|
|
24
31
|
|
|
25
32
|
**src** {string} - **required**.
|
|
26
|
-
The SVG file you want to load. It can be
|
|
33
|
+
The SVG file you want to load. It can be a require, URL or a string (base64 or url encoded).
|
|
34
|
+
*If you are using create-react-app and your file resides in the `public` directory you can use the path directly without require.*
|
|
27
35
|
|
|
28
36
|
**baseURL** {string}
|
|
29
37
|
An URL to prefix each ID in case you are using the `<base>` tag and `uniquifyIDs`.
|
|
30
38
|
|
|
39
|
+
**children** {ReactNode}
|
|
40
|
+
The fallback content in case of a fetch error or unsupported browser.
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
<SVG src="...">
|
|
44
|
+
<img src="..." alt="fallback" />
|
|
45
|
+
</SVG>
|
|
46
|
+
```
|
|
47
|
+
|
|
31
48
|
**cacheRequests** {boolean} ▶︎ `true`
|
|
32
49
|
Cache remote SVGs.
|
|
33
50
|
|
|
@@ -38,7 +55,8 @@ A description for your SVG. It will override an existing `<desc>` tag.
|
|
|
38
55
|
Get the SVG HTMLElement.
|
|
39
56
|
|
|
40
57
|
**loader** {node}
|
|
41
|
-
A component to be shown while the SVG is loading.
|
|
58
|
+
A component to be shown while the SVG is loading.
|
|
59
|
+
If you set
|
|
42
60
|
|
|
43
61
|
**onError** {function}
|
|
44
62
|
A callback to be invoked if loading the SVG fails.
|
|
@@ -90,7 +108,7 @@ Create unique IDs for each icon.
|
|
|
90
108
|
baseURL="/home"
|
|
91
109
|
cacheRequests={true}
|
|
92
110
|
description="The React logo"
|
|
93
|
-
loader={
|
|
111
|
+
loader={<span>Loading...</span>}
|
|
94
112
|
onError={error => console.log(error.message)}
|
|
95
113
|
onLoad={(src, hasCache) => console.log(src, hasCache)}
|
|
96
114
|
preProcessor={code => code.replace(/fill=".*?"/g, 'fill="currentColor"')}
|
|
@@ -104,17 +122,12 @@ Create unique IDs for each icon.
|
|
|
104
122
|
## Browser Support
|
|
105
123
|
|
|
106
124
|
Any browsers that support inlining [SVGs](https://developer.mozilla.org/en-US/docs/Web/SVG/Element/svg) and [fetch](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) will work.
|
|
107
|
-
If you need to support legacy browsers you'll need to include a polyfiil in your app.
|
|
108
|
-
Take a look at [react-app-polyfill](https://www.npmjs.com/package/react-app-polyfill).
|
|
109
125
|
|
|
110
|
-
|
|
126
|
+
If you need to support legacy browsers you'll need to include a polyfiil for `fetch` and `Number.isNaN` in your app. Take a look at [react-app-polyfill](https://www.npmjs.com/package/react-app-polyfill) or [polyfill.io](https://polyfill.io/v3/).
|
|
111
127
|
|
|
112
|
-
|
|
128
|
+
## CORS
|
|
113
129
|
|
|
114
|
-
[
|
|
115
|
-
[svg-use-external-source]: http://css-tricks.com/svg-use-external-source
|
|
116
|
-
[use-article]: http://taye.me/blog/svg/a-guide-to-svg-use-elements/
|
|
117
|
-
[use-support]: https://developer.mozilla.org/en-US/docs/Web/SVG/Element/use#Browser_compatibility
|
|
130
|
+
If you are loading remote SVGs, you'll need to make sure it has [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) support.
|
|
118
131
|
|
|
119
132
|
## Why you need this package?
|
|
120
133
|
|
|
@@ -145,4 +158,4 @@ The SVG [`<use>`][svg-use-external-source] element can be used to achieve someth
|
|
|
145
158
|
## Credits
|
|
146
159
|
|
|
147
160
|
Thanks to [@matthewwithanm](https://github.com/matthewwithanm) for creating this component and so kindly transfer it to me.
|
|
148
|
-
I'll definitely keep the good work! ❤️
|
|
161
|
+
I'll definitely keep the good work! ❤️
|
package/esm/helpers.d.ts
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare const STATUS: {
|
|
2
|
+
FAILED: string;
|
|
3
|
+
LOADED: string;
|
|
4
|
+
LOADING: string;
|
|
5
|
+
PENDING: string;
|
|
6
|
+
READY: string;
|
|
7
|
+
UNSUPPORTED: string;
|
|
8
|
+
};
|
|
9
|
+
export declare function canUseDOM(): boolean;
|
|
10
|
+
export declare function supportsInlineSVG(): boolean;
|
|
11
|
+
export declare function isSupportedEnvironment(): boolean;
|
|
12
|
+
export declare function randomString(length: number): string;
|
package/esm/helpers.js
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { canUseDOM as canUseDOMFlag } from 'exenv';
|
|
2
|
+
export var STATUS = {
|
|
3
|
+
FAILED: 'failed',
|
|
4
|
+
LOADED: 'loaded',
|
|
5
|
+
LOADING: 'loading',
|
|
6
|
+
PENDING: 'pending',
|
|
7
|
+
READY: 'ready',
|
|
8
|
+
UNSUPPORTED: 'unsupported',
|
|
9
|
+
};
|
|
10
|
+
export function canUseDOM() {
|
|
11
|
+
return canUseDOMFlag;
|
|
12
|
+
}
|
|
13
|
+
export function supportsInlineSVG() {
|
|
14
|
+
/* istanbul ignore next */
|
|
15
|
+
if (!document) {
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
var div = document.createElement('div');
|
|
19
|
+
div.innerHTML = '<svg />';
|
|
20
|
+
return !!div.firstChild && div.firstChild.namespaceURI === 'http://www.w3.org/2000/svg';
|
|
21
|
+
}
|
|
22
|
+
export function isSupportedEnvironment() {
|
|
23
|
+
return supportsInlineSVG() && typeof window !== 'undefined' && window !== null;
|
|
24
|
+
}
|
|
25
|
+
export function randomString(length) {
|
|
26
|
+
var letters = 'abcdefghijklmnopqrstuvwxyz';
|
|
27
|
+
var numbers = '1234567890';
|
|
28
|
+
var charset = "" + letters + letters.toUpperCase() + numbers;
|
|
29
|
+
var randomCharacter = function (character) {
|
|
30
|
+
return character[Math.floor(Math.random() * character.length)];
|
|
31
|
+
};
|
|
32
|
+
var R = '';
|
|
33
|
+
for (var i = 0; i < length; i++) {
|
|
34
|
+
R += randomCharacter(charset);
|
|
35
|
+
}
|
|
36
|
+
return R;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,OAAO,CAAC;AAEnD,MAAM,CAAC,IAAM,MAAM,GAAG;IACpB,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;IACd,WAAW,EAAE,aAAa;CAC3B,CAAC;AAEF,MAAM,UAAU,SAAS;IACvB,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,0BAA0B;IAC1B,IAAI,CAAC,QAAQ,EAAE;QACb,OAAO,KAAK,CAAC;KACd;IAED,IAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC1C,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;IAC1B,OAAO,CAAC,CAAC,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,CAAC,YAAY,KAAK,4BAA4B,CAAC;AAC1F,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO,iBAAiB,EAAE,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,KAAK,IAAI,CAAC;AACjF,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,MAAc;IACzC,IAAM,OAAO,GAAG,4BAA4B,CAAC;IAC7C,IAAM,OAAO,GAAG,YAAY,CAAC;IAC7B,IAAM,OAAO,GAAG,KAAG,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,GAAG,OAAS,CAAC;IAE/D,IAAM,eAAe,GAAG,UAAC,SAAiB;QACxC,OAAA,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAAvD,CAAuD,CAAC;IAE1D,IAAI,CAAC,GAAG,EAAE,CAAC;IACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;QAC/B,CAAC,IAAI,eAAe,CAAC,OAAO,CAAC,CAAC;KAC/B;IAED,OAAO,CAAC,CAAC;AACX,CAAC"}
|
package/esm/index.d.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { Props, State } from './types';
|
|
3
|
+
export default class InlineSVG extends React.PureComponent<Props, State> {
|
|
4
|
+
constructor(props: Props);
|
|
5
|
+
private isActive;
|
|
6
|
+
private readonly hash;
|
|
7
|
+
static defaultProps: {
|
|
8
|
+
cacheRequests: boolean;
|
|
9
|
+
uniquifyIDs: boolean;
|
|
10
|
+
};
|
|
11
|
+
componentDidMount(): void;
|
|
12
|
+
componentDidUpdate(prevProps: Props, prevState: State): void;
|
|
13
|
+
componentWillUnmount(): void;
|
|
14
|
+
private processSVG;
|
|
15
|
+
private updateSVGAttributes;
|
|
16
|
+
private getNode;
|
|
17
|
+
private getElement;
|
|
18
|
+
private load;
|
|
19
|
+
private handleCacheQueue;
|
|
20
|
+
private handleLoad;
|
|
21
|
+
private handleError;
|
|
22
|
+
private request;
|
|
23
|
+
render(): React.ReactNode;
|
|
24
|
+
}
|
|
25
|
+
export * from './types';
|
package/esm/index.js
ADDED
|
@@ -0,0 +1,356 @@
|
|
|
1
|
+
var __extends = (this && this.__extends) || (function () {
|
|
2
|
+
var extendStatics = function (d, b) {
|
|
3
|
+
extendStatics = Object.setPrototypeOf ||
|
|
4
|
+
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
5
|
+
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
6
|
+
return extendStatics(d, b);
|
|
7
|
+
};
|
|
8
|
+
return function (d, b) {
|
|
9
|
+
extendStatics(d, b);
|
|
10
|
+
function __() { this.constructor = d; }
|
|
11
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
12
|
+
};
|
|
13
|
+
})();
|
|
14
|
+
var __assign = (this && this.__assign) || function () {
|
|
15
|
+
__assign = Object.assign || function(t) {
|
|
16
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
17
|
+
s = arguments[i];
|
|
18
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
19
|
+
t[p] = s[p];
|
|
20
|
+
}
|
|
21
|
+
return t;
|
|
22
|
+
};
|
|
23
|
+
return __assign.apply(this, arguments);
|
|
24
|
+
};
|
|
25
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
26
|
+
var t = {};
|
|
27
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
28
|
+
t[p] = s[p];
|
|
29
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
30
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
31
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
32
|
+
t[p[i]] = s[p[i]];
|
|
33
|
+
}
|
|
34
|
+
return t;
|
|
35
|
+
};
|
|
36
|
+
var __read = (this && this.__read) || function (o, n) {
|
|
37
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
38
|
+
if (!m) return o;
|
|
39
|
+
var i = m.call(o), r, ar = [], e;
|
|
40
|
+
try {
|
|
41
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
42
|
+
}
|
|
43
|
+
catch (error) { e = { error: error }; }
|
|
44
|
+
finally {
|
|
45
|
+
try {
|
|
46
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
47
|
+
}
|
|
48
|
+
finally { if (e) throw e.error; }
|
|
49
|
+
}
|
|
50
|
+
return ar;
|
|
51
|
+
};
|
|
52
|
+
var __spread = (this && this.__spread) || function () {
|
|
53
|
+
for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
|
|
54
|
+
return ar;
|
|
55
|
+
};
|
|
56
|
+
import * as React from 'react';
|
|
57
|
+
import convert from 'react-from-dom';
|
|
58
|
+
import { STATUS, canUseDOM, isSupportedEnvironment, randomString } from './helpers';
|
|
59
|
+
var cacheStore = Object.create(null);
|
|
60
|
+
var InlineSVG = /** @class */ (function (_super) {
|
|
61
|
+
__extends(InlineSVG, _super);
|
|
62
|
+
function InlineSVG(props) {
|
|
63
|
+
var _this = _super.call(this, props) || this;
|
|
64
|
+
_this.isActive = false;
|
|
65
|
+
_this.handleCacheQueue = function (content) {
|
|
66
|
+
/* istanbul ignore else */
|
|
67
|
+
if (typeof content === 'string') {
|
|
68
|
+
_this.handleLoad(content);
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
_this.handleError(content);
|
|
72
|
+
};
|
|
73
|
+
_this.handleLoad = function (content) {
|
|
74
|
+
/* istanbul ignore else */
|
|
75
|
+
if (_this.isActive) {
|
|
76
|
+
_this.setState({
|
|
77
|
+
content: content,
|
|
78
|
+
status: STATUS.LOADED,
|
|
79
|
+
}, _this.getElement);
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
_this.handleError = function (error) {
|
|
83
|
+
var onError = _this.props.onError;
|
|
84
|
+
var status = error.message === 'Browser does not support SVG' ? STATUS.UNSUPPORTED : STATUS.FAILED;
|
|
85
|
+
/* istanbul ignore else */
|
|
86
|
+
if (_this.isActive) {
|
|
87
|
+
_this.setState({ status: status }, function () {
|
|
88
|
+
/* istanbul ignore else */
|
|
89
|
+
if (typeof onError === 'function') {
|
|
90
|
+
onError(error);
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
_this.request = function () {
|
|
96
|
+
var _a = _this.props, cacheRequests = _a.cacheRequests, src = _a.src;
|
|
97
|
+
try {
|
|
98
|
+
if (cacheRequests) {
|
|
99
|
+
cacheStore[src] = { content: '', status: STATUS.LOADING, queue: [] };
|
|
100
|
+
}
|
|
101
|
+
return fetch(src)
|
|
102
|
+
.then(function (response) {
|
|
103
|
+
var contentType = response.headers.get('content-type');
|
|
104
|
+
var _a = __read((contentType || '').split(/ ?; ?/), 1), fileType = _a[0];
|
|
105
|
+
if (response.status > 299) {
|
|
106
|
+
throw new Error('Not found');
|
|
107
|
+
}
|
|
108
|
+
if (!['image/svg+xml', 'text/plain'].some(function (d) { return fileType.indexOf(d) >= 0; })) {
|
|
109
|
+
throw new Error("Content type isn't valid: " + fileType);
|
|
110
|
+
}
|
|
111
|
+
return response.text();
|
|
112
|
+
})
|
|
113
|
+
.then(function (content) {
|
|
114
|
+
_this.handleLoad(content);
|
|
115
|
+
/* istanbul ignore else */
|
|
116
|
+
if (cacheRequests) {
|
|
117
|
+
var cache = cacheStore[src];
|
|
118
|
+
/* istanbul ignore else */
|
|
119
|
+
if (cache) {
|
|
120
|
+
cache.content = content;
|
|
121
|
+
cache.status = STATUS.LOADED;
|
|
122
|
+
cache.queue = cache.queue.filter(function (cb) {
|
|
123
|
+
cb(content);
|
|
124
|
+
return false;
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
})
|
|
129
|
+
.catch(function (error) {
|
|
130
|
+
_this.handleError(error);
|
|
131
|
+
/* istanbul ignore else */
|
|
132
|
+
if (cacheRequests) {
|
|
133
|
+
var cache = cacheStore[src];
|
|
134
|
+
/* istanbul ignore else */
|
|
135
|
+
if (cache) {
|
|
136
|
+
cache.queue.forEach(function (cb) {
|
|
137
|
+
cb(error);
|
|
138
|
+
});
|
|
139
|
+
delete cacheStore[src];
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
catch (error) {
|
|
145
|
+
return _this.handleError(new Error(error.message));
|
|
146
|
+
}
|
|
147
|
+
};
|
|
148
|
+
_this.state = {
|
|
149
|
+
content: '',
|
|
150
|
+
element: null,
|
|
151
|
+
hasCache: !!props.cacheRequests && !!cacheStore[props.src],
|
|
152
|
+
status: STATUS.PENDING,
|
|
153
|
+
};
|
|
154
|
+
_this.hash = props.uniqueHash || randomString(8);
|
|
155
|
+
return _this;
|
|
156
|
+
}
|
|
157
|
+
InlineSVG.prototype.componentDidMount = function () {
|
|
158
|
+
this.isActive = true;
|
|
159
|
+
if (!canUseDOM()) {
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
var status = this.state.status;
|
|
163
|
+
var src = this.props.src;
|
|
164
|
+
try {
|
|
165
|
+
/* istanbul ignore else */
|
|
166
|
+
if (status === STATUS.PENDING) {
|
|
167
|
+
/* istanbul ignore else */
|
|
168
|
+
if (!isSupportedEnvironment()) {
|
|
169
|
+
throw new Error('Browser does not support SVG');
|
|
170
|
+
}
|
|
171
|
+
/* istanbul ignore else */
|
|
172
|
+
if (!src) {
|
|
173
|
+
throw new Error('Missing src');
|
|
174
|
+
}
|
|
175
|
+
this.load();
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
catch (error) {
|
|
179
|
+
this.handleError(error);
|
|
180
|
+
}
|
|
181
|
+
};
|
|
182
|
+
InlineSVG.prototype.componentDidUpdate = function (prevProps, prevState) {
|
|
183
|
+
if (!canUseDOM()) {
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
var _a = this.state, hasCache = _a.hasCache, status = _a.status;
|
|
187
|
+
var _b = this.props, onLoad = _b.onLoad, src = _b.src;
|
|
188
|
+
if (prevState.status !== STATUS.READY && status === STATUS.READY) {
|
|
189
|
+
/* istanbul ignore else */
|
|
190
|
+
if (onLoad) {
|
|
191
|
+
onLoad(src, hasCache);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
if (prevProps.src !== src) {
|
|
195
|
+
if (!src) {
|
|
196
|
+
this.handleError(new Error('Missing src'));
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
this.load();
|
|
200
|
+
}
|
|
201
|
+
};
|
|
202
|
+
InlineSVG.prototype.componentWillUnmount = function () {
|
|
203
|
+
this.isActive = false;
|
|
204
|
+
};
|
|
205
|
+
InlineSVG.prototype.processSVG = function () {
|
|
206
|
+
var content = this.state.content;
|
|
207
|
+
var preProcessor = this.props.preProcessor;
|
|
208
|
+
if (preProcessor) {
|
|
209
|
+
return preProcessor(content);
|
|
210
|
+
}
|
|
211
|
+
return content;
|
|
212
|
+
};
|
|
213
|
+
InlineSVG.prototype.updateSVGAttributes = function (node) {
|
|
214
|
+
var _this = this;
|
|
215
|
+
var _a = this.props, _b = _a.baseURL, baseURL = _b === void 0 ? '' : _b, uniquifyIDs = _a.uniquifyIDs;
|
|
216
|
+
var replaceableAttributes = ['id', 'href', 'xlink:href', 'xlink:role', 'xlink:arcrole'];
|
|
217
|
+
var linkAttributes = ['href', 'xlink:href'];
|
|
218
|
+
var isDataValue = function (name, value) {
|
|
219
|
+
return linkAttributes.indexOf(name) >= 0 && (value ? value.indexOf('#') < 0 : false);
|
|
220
|
+
};
|
|
221
|
+
if (!uniquifyIDs) {
|
|
222
|
+
return node;
|
|
223
|
+
}
|
|
224
|
+
__spread(node.children).map(function (d) {
|
|
225
|
+
if (d.attributes && d.attributes.length) {
|
|
226
|
+
var attributes_1 = Object.values(d.attributes).map(function (a) {
|
|
227
|
+
var attr = a;
|
|
228
|
+
var match = a.value.match(/url\((.*?)\)/);
|
|
229
|
+
if (match && match[1]) {
|
|
230
|
+
attr.value = a.value.replace(match[0], "url(" + baseURL + match[1] + "__" + _this.hash + ")");
|
|
231
|
+
}
|
|
232
|
+
return attr;
|
|
233
|
+
});
|
|
234
|
+
replaceableAttributes.forEach(function (r) {
|
|
235
|
+
var attribute = attributes_1.find(function (a) { return a.name === r; });
|
|
236
|
+
if (attribute && !isDataValue(r, attribute.value)) {
|
|
237
|
+
attribute.value = attribute.value + "__" + _this.hash;
|
|
238
|
+
}
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
if (d.children.length) {
|
|
242
|
+
return _this.updateSVGAttributes(d);
|
|
243
|
+
}
|
|
244
|
+
return d;
|
|
245
|
+
});
|
|
246
|
+
return node;
|
|
247
|
+
};
|
|
248
|
+
InlineSVG.prototype.getNode = function () {
|
|
249
|
+
var _a = this.props, description = _a.description, title = _a.title;
|
|
250
|
+
try {
|
|
251
|
+
var svgText = this.processSVG();
|
|
252
|
+
var node = convert(svgText, { nodeOnly: true });
|
|
253
|
+
if (!node || !(node instanceof SVGSVGElement)) {
|
|
254
|
+
throw new Error('Could not convert the src to a DOM Node');
|
|
255
|
+
}
|
|
256
|
+
var svg = this.updateSVGAttributes(node);
|
|
257
|
+
if (description) {
|
|
258
|
+
var originalDesc = svg.querySelector('desc');
|
|
259
|
+
if (originalDesc && originalDesc.parentNode) {
|
|
260
|
+
originalDesc.parentNode.removeChild(originalDesc);
|
|
261
|
+
}
|
|
262
|
+
var descElement = document.createElement('desc');
|
|
263
|
+
descElement.innerHTML = description;
|
|
264
|
+
svg.prepend(descElement);
|
|
265
|
+
}
|
|
266
|
+
if (title) {
|
|
267
|
+
var originalTitle = svg.querySelector('title');
|
|
268
|
+
if (originalTitle && originalTitle.parentNode) {
|
|
269
|
+
originalTitle.parentNode.removeChild(originalTitle);
|
|
270
|
+
}
|
|
271
|
+
var titleElement = document.createElement('title');
|
|
272
|
+
titleElement.innerHTML = title;
|
|
273
|
+
svg.prepend(titleElement);
|
|
274
|
+
}
|
|
275
|
+
return svg;
|
|
276
|
+
}
|
|
277
|
+
catch (error) {
|
|
278
|
+
return this.handleError(error);
|
|
279
|
+
}
|
|
280
|
+
};
|
|
281
|
+
InlineSVG.prototype.getElement = function () {
|
|
282
|
+
try {
|
|
283
|
+
var node = this.getNode();
|
|
284
|
+
var element = convert(node);
|
|
285
|
+
if (!element || !React.isValidElement(element)) {
|
|
286
|
+
throw new Error('Could not convert the src to a React element');
|
|
287
|
+
}
|
|
288
|
+
this.setState({
|
|
289
|
+
element: element,
|
|
290
|
+
status: STATUS.READY,
|
|
291
|
+
});
|
|
292
|
+
}
|
|
293
|
+
catch (error) {
|
|
294
|
+
this.handleError(new Error(error.message));
|
|
295
|
+
}
|
|
296
|
+
};
|
|
297
|
+
InlineSVG.prototype.load = function () {
|
|
298
|
+
var _this = this;
|
|
299
|
+
/* istanbul ignore else */
|
|
300
|
+
if (this.isActive) {
|
|
301
|
+
this.setState({
|
|
302
|
+
content: '',
|
|
303
|
+
element: null,
|
|
304
|
+
status: STATUS.LOADING,
|
|
305
|
+
}, function () {
|
|
306
|
+
var _a = _this.props, cacheRequests = _a.cacheRequests, src = _a.src;
|
|
307
|
+
var cache = cacheRequests && cacheStore[src];
|
|
308
|
+
if (cache) {
|
|
309
|
+
/* istanbul ignore else */
|
|
310
|
+
if (cache.status === STATUS.LOADING) {
|
|
311
|
+
cache.queue.push(_this.handleCacheQueue);
|
|
312
|
+
}
|
|
313
|
+
else if (cache.status === STATUS.LOADED) {
|
|
314
|
+
_this.handleLoad(cache.content);
|
|
315
|
+
}
|
|
316
|
+
return;
|
|
317
|
+
}
|
|
318
|
+
var dataURI = src.match(/data:image\/svg[^,]*?(;base64)?,(.*)/);
|
|
319
|
+
var inlineSrc;
|
|
320
|
+
if (dataURI) {
|
|
321
|
+
inlineSrc = dataURI[1] ? atob(dataURI[2]) : decodeURIComponent(dataURI[2]);
|
|
322
|
+
}
|
|
323
|
+
else if (src.indexOf('<svg') >= 0) {
|
|
324
|
+
inlineSrc = src;
|
|
325
|
+
}
|
|
326
|
+
if (inlineSrc) {
|
|
327
|
+
_this.handleLoad(inlineSrc);
|
|
328
|
+
return;
|
|
329
|
+
}
|
|
330
|
+
_this.request();
|
|
331
|
+
});
|
|
332
|
+
}
|
|
333
|
+
};
|
|
334
|
+
InlineSVG.prototype.render = function () {
|
|
335
|
+
var _a = this.state, element = _a.element, status = _a.status;
|
|
336
|
+
var _b = this.props, baseURL = _b.baseURL, cacheRequests = _b.cacheRequests, _c = _b.children, children = _c === void 0 ? null : _c, description = _b.description, innerRef = _b.innerRef, _d = _b.loader, loader = _d === void 0 ? null : _d, onError = _b.onError, onLoad = _b.onLoad, preProcessor = _b.preProcessor, src = _b.src, title = _b.title, uniqueHash = _b.uniqueHash, uniquifyIDs = _b.uniquifyIDs, rest = __rest(_b, ["baseURL", "cacheRequests", "children", "description", "innerRef", "loader", "onError", "onLoad", "preProcessor", "src", "title", "uniqueHash", "uniquifyIDs"]);
|
|
337
|
+
if (!canUseDOM()) {
|
|
338
|
+
return loader;
|
|
339
|
+
}
|
|
340
|
+
if (element) {
|
|
341
|
+
return React.cloneElement(element, __assign({ ref: innerRef }, rest));
|
|
342
|
+
}
|
|
343
|
+
if ([STATUS.UNSUPPORTED, STATUS.FAILED].indexOf(status) > -1) {
|
|
344
|
+
return children;
|
|
345
|
+
}
|
|
346
|
+
return loader;
|
|
347
|
+
};
|
|
348
|
+
InlineSVG.defaultProps = {
|
|
349
|
+
cacheRequests: true,
|
|
350
|
+
uniquifyIDs: false,
|
|
351
|
+
};
|
|
352
|
+
return InlineSVG;
|
|
353
|
+
}(React.PureComponent));
|
|
354
|
+
export default InlineSVG;
|
|
355
|
+
export * from './types';
|
|
356
|
+
//# sourceMappingURL=index.js.map
|
package/esm/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"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"}
|
package/esm/types.d.ts
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
declare type Callback = (...args: any[]) => void;
|
|
3
|
+
export declare type ErrorCallback = (error: Error | FetchError) => void;
|
|
4
|
+
export declare type LoadCallback = (src: string, isCached: boolean) => void;
|
|
5
|
+
export declare type PreProcessorCallback = (code: string) => string;
|
|
6
|
+
export interface Props extends Omit<React.HTMLProps<SVGElement>, 'onLoad' | 'onError'> {
|
|
7
|
+
baseURL?: string;
|
|
8
|
+
cacheRequests?: boolean;
|
|
9
|
+
children?: React.ReactNode;
|
|
10
|
+
description?: string;
|
|
11
|
+
innerRef?: React.Ref<HTMLElement>;
|
|
12
|
+
loader?: React.ReactNode;
|
|
13
|
+
onError?: ErrorCallback;
|
|
14
|
+
onLoad?: LoadCallback;
|
|
15
|
+
preProcessor?: PreProcessorCallback;
|
|
16
|
+
src: string;
|
|
17
|
+
title?: string;
|
|
18
|
+
uniqueHash?: string;
|
|
19
|
+
uniquifyIDs?: boolean;
|
|
20
|
+
}
|
|
21
|
+
export interface State {
|
|
22
|
+
content: string;
|
|
23
|
+
element: React.ReactNode;
|
|
24
|
+
hasCache: boolean;
|
|
25
|
+
status: string;
|
|
26
|
+
}
|
|
27
|
+
export interface FetchError extends Error {
|
|
28
|
+
code: string;
|
|
29
|
+
errno: string;
|
|
30
|
+
message: string;
|
|
31
|
+
type: string;
|
|
32
|
+
}
|
|
33
|
+
export interface StorageItem {
|
|
34
|
+
content: string;
|
|
35
|
+
queue: Callback[];
|
|
36
|
+
status: string;
|
|
37
|
+
}
|
|
38
|
+
export {};
|
package/esm/types.js
ADDED
package/esm/types.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
package/lib/helpers.d.ts
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
export declare const
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
}
|
|
9
|
-
export declare
|
|
10
|
-
export declare
|
|
1
|
+
export declare const STATUS: {
|
|
2
|
+
FAILED: string;
|
|
3
|
+
LOADED: string;
|
|
4
|
+
LOADING: string;
|
|
5
|
+
PENDING: string;
|
|
6
|
+
READY: string;
|
|
7
|
+
UNSUPPORTED: string;
|
|
8
|
+
};
|
|
9
|
+
export declare function canUseDOM(): boolean;
|
|
10
|
+
export declare function supportsInlineSVG(): boolean;
|
|
11
|
+
export declare function isSupportedEnvironment(): boolean;
|
|
12
|
+
export declare function randomString(length: number): string;
|