react-inlinesvg 2.1.1 → 2.3.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 +42 -22
- package/esm/helpers.d.ts +6 -1
- package/esm/helpers.js +22 -3
- package/esm/helpers.js.map +1 -1
- package/esm/index.d.ts +4 -1
- package/esm/index.js +19 -21
- package/esm/index.js.map +1 -1
- package/esm/types.d.ts +4 -2
- package/lib/helpers.d.ts +6 -1
- package/lib/helpers.js +25 -5
- package/lib/helpers.js.map +1 -1
- package/lib/index.d.ts +4 -1
- package/lib/index.js +25 -26
- package/lib/index.js.map +1 -1
- package/lib/types.d.ts +4 -2
- package/package.json +38 -34
- package/src/helpers.ts +27 -4
- package/src/index.tsx +36 -22
- package/src/types.ts +4 -2
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# react-inlinesvg
|
|
2
2
|
|
|
3
|
-
[](https://www.npmjs.com/package/react-inlinesvg) [](https://www.npmjs.com/package/react-inlinesvg) [](https://travis-ci.com/gilbarbara/react-inlinesvg) [](https://codeclimate.com/github/gilbarbara/react-inlinesvg/maintainability) [](https://codeclimate.com/github/gilbarbara/react-inlinesvg/test_coverage)
|
|
4
4
|
|
|
5
5
|
Load inline, local or remote SVGs in your React components.
|
|
6
6
|
|
|
@@ -8,30 +8,43 @@ Load inline, local or remote SVGs in your React components.
|
|
|
8
8
|
|
|
9
9
|
- 🏖 **Easy to use:** Just set the `src`
|
|
10
10
|
- 🛠 **Flexible:** Personalize the options to fit your needs
|
|
11
|
-
- ⚡️ **Smart:** Async requests will be cached.
|
|
11
|
+
- ⚡️ **Smart:** Async requests will be cached.
|
|
12
12
|
- 🚀 **SSR:** Render a loader until the DOM is available
|
|
13
13
|
- 🟦 **Typescript:** Nicely typed
|
|
14
14
|
|
|
15
15
|
## Usage
|
|
16
16
|
|
|
17
|
-
```
|
|
17
|
+
```sh
|
|
18
18
|
npm i react-inlinesvg
|
|
19
19
|
```
|
|
20
20
|
|
|
21
21
|
And import it into your code:
|
|
22
22
|
|
|
23
|
-
```
|
|
24
|
-
import React from 'react';
|
|
25
|
-
import SVG from 'react-inlinesvg';
|
|
23
|
+
```tsx
|
|
24
|
+
import React, { useRef } from 'react';
|
|
25
|
+
import SVG, { Props as SVGProps } from 'react-inlinesvg';
|
|
26
|
+
|
|
27
|
+
const Logo = React.forwardRef<SVGElement, SVGProps>((props, ref) => (
|
|
28
|
+
<SVG innerRef={ref} title="MyLogo" {...props} />
|
|
29
|
+
));
|
|
26
30
|
|
|
27
|
-
|
|
31
|
+
export function App() {
|
|
32
|
+
const logo = useRef<SVGElement>(null);
|
|
33
|
+
|
|
34
|
+
return (
|
|
35
|
+
<main>
|
|
36
|
+
<SVG src={`${process.env.PUBLIC_URL}/menu.svg`} width={24} height="auto" title="Menu" />
|
|
37
|
+
<Logo ref={logo} src={`${process.env.PUBLIC_URL}/logo.svg`} />
|
|
38
|
+
</main>
|
|
39
|
+
);
|
|
40
|
+
}
|
|
28
41
|
```
|
|
29
42
|
|
|
30
43
|
## Props
|
|
31
44
|
|
|
32
45
|
**src** {string} - **required**.
|
|
33
|
-
The SVG file you want to load. It can be a require,
|
|
34
|
-
|
|
46
|
+
The SVG file you want to load. It can be a require, URL or a string (base64 or url encoded).
|
|
47
|
+
_If you are using create-react-app and your file resides in the `public` directory you can use the path directly without require._
|
|
35
48
|
|
|
36
49
|
**baseURL** {string}
|
|
37
50
|
An URL to prefix each ID in case you are using the `<base>` tag and `uniquifyIDs`.
|
|
@@ -51,12 +64,14 @@ Cache remote SVGs.
|
|
|
51
64
|
**description** {string}
|
|
52
65
|
A description for your SVG. It will override an existing `<desc>` tag.
|
|
53
66
|
|
|
54
|
-
**
|
|
55
|
-
|
|
67
|
+
**fetchOptions** {RequestInit}
|
|
68
|
+
Custom options for the [request](https://developer.mozilla.org/en-US/docs/Web/API/Request/Request).
|
|
69
|
+
|
|
70
|
+
**innerRef** {React.Ref}
|
|
71
|
+
Set a ref in SVGElement.
|
|
56
72
|
|
|
57
73
|
**loader** {node}
|
|
58
|
-
A component to be shown while the SVG is loading.
|
|
59
|
-
If you set
|
|
74
|
+
A component to be shown while the SVG is loading.
|
|
60
75
|
|
|
61
76
|
**onError** {function}
|
|
62
77
|
A callback to be invoked if loading the SVG fails.
|
|
@@ -64,7 +79,7 @@ This will receive a single argument with:
|
|
|
64
79
|
|
|
65
80
|
- a `FetchError` with:
|
|
66
81
|
|
|
67
|
-
```
|
|
82
|
+
```typescript
|
|
68
83
|
{
|
|
69
84
|
message: string;
|
|
70
85
|
type: string;
|
|
@@ -75,11 +90,11 @@ This will receive a single argument with:
|
|
|
75
90
|
|
|
76
91
|
- or an `InlineSVGError`, which has the following properties:
|
|
77
92
|
|
|
78
|
-
```
|
|
93
|
+
```typescript
|
|
79
94
|
{
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
95
|
+
name: 'InlineSVGError';
|
|
96
|
+
data: object; // optional
|
|
97
|
+
message: string;
|
|
83
98
|
}
|
|
84
99
|
```
|
|
85
100
|
|
|
@@ -99,7 +114,7 @@ A string to use with `uniquifyIDs`.
|
|
|
99
114
|
**uniquifyIDs** {boolean} ▶︎ `false`
|
|
100
115
|
Create unique IDs for each icon.
|
|
101
116
|
|
|
102
|
-
>
|
|
117
|
+
> Any additional props will be passed down to the SVG element.
|
|
103
118
|
|
|
104
119
|
### Example
|
|
105
120
|
|
|
@@ -109,9 +124,9 @@ Create unique IDs for each icon.
|
|
|
109
124
|
cacheRequests={true}
|
|
110
125
|
description="The React logo"
|
|
111
126
|
loader={<span>Loading...</span>}
|
|
112
|
-
onError={error => console.log(error.message)}
|
|
127
|
+
onError={(error) => console.log(error.message)}
|
|
113
128
|
onLoad={(src, hasCache) => console.log(src, hasCache)}
|
|
114
|
-
preProcessor={code => code.replace(/fill=".*?"/g, 'fill="currentColor"')}
|
|
129
|
+
preProcessor={(code) => code.replace(/fill=".*?"/g, 'fill="currentColor"')}
|
|
115
130
|
src="https://cdn.svgporn.com/logos/react.svg"
|
|
116
131
|
title="React"
|
|
117
132
|
uniqueHash="a1f8d1"
|
|
@@ -119,6 +134,11 @@ Create unique IDs for each icon.
|
|
|
119
134
|
/>
|
|
120
135
|
```
|
|
121
136
|
|
|
137
|
+
## Caching
|
|
138
|
+
|
|
139
|
+
The internal cache is exported as `cacheStore` if you need to debug or pre-cache some files.
|
|
140
|
+
⚠️ Use it at your own risk.
|
|
141
|
+
|
|
122
142
|
## Browser Support
|
|
123
143
|
|
|
124
144
|
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.
|
|
@@ -158,4 +178,4 @@ The SVG [`<use>`][svg-use-external-source] element can be used to achieve someth
|
|
|
158
178
|
## Credits
|
|
159
179
|
|
|
160
180
|
Thanks to [@matthewwithanm](https://github.com/matthewwithanm) for creating this component and so kindly transfer it to me.
|
|
161
|
-
I'll definitely keep the good work! ❤️
|
|
181
|
+
I'll definitely keep the good work! ❤️
|
package/esm/helpers.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { PlainObject } from './types';
|
|
1
2
|
export declare const STATUS: {
|
|
2
3
|
FAILED: string;
|
|
3
4
|
LOADED: string;
|
|
@@ -7,6 +8,10 @@ export declare const STATUS: {
|
|
|
7
8
|
UNSUPPORTED: string;
|
|
8
9
|
};
|
|
9
10
|
export declare function canUseDOM(): boolean;
|
|
10
|
-
export declare function supportsInlineSVG(): boolean;
|
|
11
11
|
export declare function isSupportedEnvironment(): boolean;
|
|
12
|
+
export declare function supportsInlineSVG(): boolean;
|
|
12
13
|
export declare function randomString(length: number): string;
|
|
14
|
+
/**
|
|
15
|
+
* Remove properties from an object
|
|
16
|
+
*/
|
|
17
|
+
export declare function removeProperties<T extends PlainObject, K extends keyof T>(input: T, ...filter: K[]): Omit<T, K>;
|
package/esm/helpers.js
CHANGED
|
@@ -10,6 +10,9 @@ export var STATUS = {
|
|
|
10
10
|
export function canUseDOM() {
|
|
11
11
|
return canUseDOMFlag;
|
|
12
12
|
}
|
|
13
|
+
export function isSupportedEnvironment() {
|
|
14
|
+
return supportsInlineSVG() && typeof window !== 'undefined' && window !== null;
|
|
15
|
+
}
|
|
13
16
|
export function supportsInlineSVG() {
|
|
14
17
|
/* istanbul ignore next */
|
|
15
18
|
if (!document) {
|
|
@@ -19,9 +22,6 @@ export function supportsInlineSVG() {
|
|
|
19
22
|
div.innerHTML = '<svg />';
|
|
20
23
|
return !!div.firstChild && div.firstChild.namespaceURI === 'http://www.w3.org/2000/svg';
|
|
21
24
|
}
|
|
22
|
-
export function isSupportedEnvironment() {
|
|
23
|
-
return supportsInlineSVG() && typeof window !== 'undefined' && window !== null;
|
|
24
|
-
}
|
|
25
25
|
export function randomString(length) {
|
|
26
26
|
var letters = 'abcdefghijklmnopqrstuvwxyz';
|
|
27
27
|
var numbers = '1234567890';
|
|
@@ -35,4 +35,23 @@ export function randomString(length) {
|
|
|
35
35
|
}
|
|
36
36
|
return R;
|
|
37
37
|
}
|
|
38
|
+
/**
|
|
39
|
+
* Remove properties from an object
|
|
40
|
+
*/
|
|
41
|
+
export function removeProperties(input) {
|
|
42
|
+
var filter = [];
|
|
43
|
+
for (var _i = 1; _i < arguments.length; _i++) {
|
|
44
|
+
filter[_i - 1] = arguments[_i];
|
|
45
|
+
}
|
|
46
|
+
var output = {};
|
|
47
|
+
for (var key in input) {
|
|
48
|
+
/* istanbul ignore else */
|
|
49
|
+
if ({}.hasOwnProperty.call(input, key)) {
|
|
50
|
+
if (!filter.includes(key)) {
|
|
51
|
+
output[key] = input[key];
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return output;
|
|
56
|
+
}
|
|
38
57
|
//# sourceMappingURL=helpers.js.map
|
package/esm/helpers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,OAAO,CAAC;AAInD,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,sBAAsB;IACpC,OAAO,iBAAiB,EAAE,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,KAAK,IAAI,CAAC;AACjF,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,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;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAAQ;IACR,gBAAc;SAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;QAAd,+BAAc;;IAEd,IAAM,MAAM,GAAQ,EAAE,CAAC;IAEvB,KAAK,IAAM,GAAG,IAAI,KAAK,EAAE;QACvB,0BAA0B;QAC1B,IAAI,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE;YACtC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAE,GAAoB,CAAC,EAAE;gBAC3C,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;aAC1B;SACF;KACF;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/esm/index.d.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { Props, State } from './types';
|
|
2
|
+
import { Props, State, StorageItem } from './types';
|
|
3
|
+
export declare const cacheStore: {
|
|
4
|
+
[key: string]: StorageItem;
|
|
5
|
+
};
|
|
3
6
|
export default class InlineSVG extends React.PureComponent<Props, State> {
|
|
4
7
|
constructor(props: Props);
|
|
5
8
|
private isActive;
|
package/esm/index.js
CHANGED
|
@@ -6,6 +6,8 @@ var __extends = (this && this.__extends) || (function () {
|
|
|
6
6
|
return extendStatics(d, b);
|
|
7
7
|
};
|
|
8
8
|
return function (d, b) {
|
|
9
|
+
if (typeof b !== "function" && b !== null)
|
|
10
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
9
11
|
extendStatics(d, b);
|
|
10
12
|
function __() { this.constructor = d; }
|
|
11
13
|
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
@@ -22,17 +24,6 @@ var __assign = (this && this.__assign) || function () {
|
|
|
22
24
|
};
|
|
23
25
|
return __assign.apply(this, arguments);
|
|
24
26
|
};
|
|
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
27
|
var __read = (this && this.__read) || function (o, n) {
|
|
37
28
|
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
38
29
|
if (!m) return o;
|
|
@@ -49,14 +40,15 @@ var __read = (this && this.__read) || function (o, n) {
|
|
|
49
40
|
}
|
|
50
41
|
return ar;
|
|
51
42
|
};
|
|
52
|
-
var
|
|
53
|
-
for (var
|
|
54
|
-
|
|
43
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from) {
|
|
44
|
+
for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
|
|
45
|
+
to[j] = from[i];
|
|
46
|
+
return to;
|
|
55
47
|
};
|
|
56
48
|
import * as React from 'react';
|
|
57
49
|
import convert from 'react-from-dom';
|
|
58
|
-
import { STATUS, canUseDOM, isSupportedEnvironment, randomString } from './helpers';
|
|
59
|
-
var cacheStore = Object.create(null);
|
|
50
|
+
import { STATUS, canUseDOM, isSupportedEnvironment, randomString, removeProperties, } from './helpers';
|
|
51
|
+
export var cacheStore = Object.create(null);
|
|
60
52
|
var InlineSVG = /** @class */ (function (_super) {
|
|
61
53
|
__extends(InlineSVG, _super);
|
|
62
54
|
function InlineSVG(props) {
|
|
@@ -93,12 +85,12 @@ var InlineSVG = /** @class */ (function (_super) {
|
|
|
93
85
|
}
|
|
94
86
|
};
|
|
95
87
|
_this.request = function () {
|
|
96
|
-
var _a = _this.props, cacheRequests = _a.cacheRequests, src = _a.src;
|
|
88
|
+
var _a = _this.props, cacheRequests = _a.cacheRequests, fetchOptions = _a.fetchOptions, src = _a.src;
|
|
97
89
|
try {
|
|
98
90
|
if (cacheRequests) {
|
|
99
91
|
cacheStore[src] = { content: '', status: STATUS.LOADING, queue: [] };
|
|
100
92
|
}
|
|
101
|
-
return fetch(src)
|
|
93
|
+
return fetch(src, fetchOptions)
|
|
102
94
|
.then(function (response) {
|
|
103
95
|
var contentType = response.headers.get('content-type');
|
|
104
96
|
var _a = __read((contentType || '').split(/ ?; ?/), 1), fileType = _a[0];
|
|
@@ -111,6 +103,11 @@ var InlineSVG = /** @class */ (function (_super) {
|
|
|
111
103
|
return response.text();
|
|
112
104
|
})
|
|
113
105
|
.then(function (content) {
|
|
106
|
+
var currentSrc = _this.props.src;
|
|
107
|
+
// the current src don't match the previous one, skipping...
|
|
108
|
+
if (src !== currentSrc) {
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
114
111
|
_this.handleLoad(content);
|
|
115
112
|
/* istanbul ignore else */
|
|
116
113
|
if (cacheRequests) {
|
|
@@ -221,7 +218,7 @@ var InlineSVG = /** @class */ (function (_super) {
|
|
|
221
218
|
if (!uniquifyIDs) {
|
|
222
219
|
return node;
|
|
223
220
|
}
|
|
224
|
-
|
|
221
|
+
__spreadArray([], __read(node.children)).map(function (d) {
|
|
225
222
|
if (d.attributes && d.attributes.length) {
|
|
226
223
|
var attributes_1 = Object.values(d.attributes).map(function (a) {
|
|
227
224
|
var attr = a;
|
|
@@ -333,12 +330,13 @@ var InlineSVG = /** @class */ (function (_super) {
|
|
|
333
330
|
};
|
|
334
331
|
InlineSVG.prototype.render = function () {
|
|
335
332
|
var _a = this.state, element = _a.element, status = _a.status;
|
|
336
|
-
var _b = this.props,
|
|
333
|
+
var _b = this.props, _c = _b.children, children = _c === void 0 ? null : _c, innerRef = _b.innerRef, _d = _b.loader, loader = _d === void 0 ? null : _d;
|
|
334
|
+
var elementProps = removeProperties(this.props, 'baseURL', 'cacheRequests', 'children', 'description', 'fetchOptions', 'innerRef', 'loader', 'onError', 'onLoad', 'preProcessor', 'src', 'title', 'uniqueHash', 'uniquifyIDs');
|
|
337
335
|
if (!canUseDOM()) {
|
|
338
336
|
return loader;
|
|
339
337
|
}
|
|
340
338
|
if (element) {
|
|
341
|
-
return React.cloneElement(element, __assign({ ref: innerRef },
|
|
339
|
+
return React.cloneElement(element, __assign({ ref: innerRef }, elementProps));
|
|
342
340
|
}
|
|
343
341
|
if ([STATUS.UNSUPPORTED, STATUS.FAILED].indexOf(status) > -1) {
|
|
344
342
|
return children;
|
package/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"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"}
|
package/esm/types.d.ts
CHANGED
|
@@ -2,13 +2,15 @@ import * as React from 'react';
|
|
|
2
2
|
declare type Callback = (...args: any[]) => void;
|
|
3
3
|
export declare type ErrorCallback = (error: Error | FetchError) => void;
|
|
4
4
|
export declare type LoadCallback = (src: string, isCached: boolean) => void;
|
|
5
|
+
export declare type PlainObject<T = unknown> = Record<string | number | symbol, T>;
|
|
5
6
|
export declare type PreProcessorCallback = (code: string) => string;
|
|
6
|
-
export interface Props extends Omit<React.
|
|
7
|
+
export interface Props extends Omit<React.SVGProps<SVGElement>, 'onLoad' | 'onError' | 'ref'> {
|
|
7
8
|
baseURL?: string;
|
|
8
9
|
cacheRequests?: boolean;
|
|
9
10
|
children?: React.ReactNode;
|
|
10
11
|
description?: string;
|
|
11
|
-
|
|
12
|
+
fetchOptions?: RequestInit;
|
|
13
|
+
innerRef?: React.Ref<SVGElement>;
|
|
12
14
|
loader?: React.ReactNode;
|
|
13
15
|
onError?: ErrorCallback;
|
|
14
16
|
onLoad?: LoadCallback;
|
package/lib/helpers.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { PlainObject } from './types';
|
|
1
2
|
export declare const STATUS: {
|
|
2
3
|
FAILED: string;
|
|
3
4
|
LOADED: string;
|
|
@@ -7,6 +8,10 @@ export declare const STATUS: {
|
|
|
7
8
|
UNSUPPORTED: string;
|
|
8
9
|
};
|
|
9
10
|
export declare function canUseDOM(): boolean;
|
|
10
|
-
export declare function supportsInlineSVG(): boolean;
|
|
11
11
|
export declare function isSupportedEnvironment(): boolean;
|
|
12
|
+
export declare function supportsInlineSVG(): boolean;
|
|
12
13
|
export declare function randomString(length: number): string;
|
|
14
|
+
/**
|
|
15
|
+
* Remove properties from an object
|
|
16
|
+
*/
|
|
17
|
+
export declare function removeProperties<T extends PlainObject, K extends keyof T>(input: T, ...filter: K[]): Omit<T, K>;
|
package/lib/helpers.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.removeProperties = exports.randomString = exports.supportsInlineSVG = exports.isSupportedEnvironment = exports.canUseDOM = exports.STATUS = void 0;
|
|
4
4
|
var exenv_1 = require("exenv");
|
|
5
5
|
exports.STATUS = {
|
|
6
6
|
FAILED: 'failed',
|
|
@@ -14,6 +14,10 @@ function canUseDOM() {
|
|
|
14
14
|
return exenv_1.canUseDOM;
|
|
15
15
|
}
|
|
16
16
|
exports.canUseDOM = canUseDOM;
|
|
17
|
+
function isSupportedEnvironment() {
|
|
18
|
+
return supportsInlineSVG() && typeof window !== 'undefined' && window !== null;
|
|
19
|
+
}
|
|
20
|
+
exports.isSupportedEnvironment = isSupportedEnvironment;
|
|
17
21
|
function supportsInlineSVG() {
|
|
18
22
|
/* istanbul ignore next */
|
|
19
23
|
if (!document) {
|
|
@@ -24,10 +28,6 @@ function supportsInlineSVG() {
|
|
|
24
28
|
return !!div.firstChild && div.firstChild.namespaceURI === 'http://www.w3.org/2000/svg';
|
|
25
29
|
}
|
|
26
30
|
exports.supportsInlineSVG = supportsInlineSVG;
|
|
27
|
-
function isSupportedEnvironment() {
|
|
28
|
-
return supportsInlineSVG() && typeof window !== 'undefined' && window !== null;
|
|
29
|
-
}
|
|
30
|
-
exports.isSupportedEnvironment = isSupportedEnvironment;
|
|
31
31
|
function randomString(length) {
|
|
32
32
|
var letters = 'abcdefghijklmnopqrstuvwxyz';
|
|
33
33
|
var numbers = '1234567890';
|
|
@@ -42,4 +42,24 @@ function randomString(length) {
|
|
|
42
42
|
return R;
|
|
43
43
|
}
|
|
44
44
|
exports.randomString = randomString;
|
|
45
|
+
/**
|
|
46
|
+
* Remove properties from an object
|
|
47
|
+
*/
|
|
48
|
+
function removeProperties(input) {
|
|
49
|
+
var filter = [];
|
|
50
|
+
for (var _i = 1; _i < arguments.length; _i++) {
|
|
51
|
+
filter[_i - 1] = arguments[_i];
|
|
52
|
+
}
|
|
53
|
+
var output = {};
|
|
54
|
+
for (var key in input) {
|
|
55
|
+
/* istanbul ignore else */
|
|
56
|
+
if ({}.hasOwnProperty.call(input, key)) {
|
|
57
|
+
if (!filter.includes(key)) {
|
|
58
|
+
output[key] = input[key];
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return output;
|
|
63
|
+
}
|
|
64
|
+
exports.removeProperties = removeProperties;
|
|
45
65
|
//# sourceMappingURL=helpers.js.map
|
package/lib/helpers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":";;;AAAA,+BAAmD;
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":";;;AAAA,+BAAmD;AAItC,QAAA,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,SAAgB,SAAS;IACvB,OAAO,iBAAa,CAAC;AACvB,CAAC;AAFD,8BAEC;AAED,SAAgB,sBAAsB;IACpC,OAAO,iBAAiB,EAAE,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,KAAK,IAAI,CAAC;AACjF,CAAC;AAFD,wDAEC;AAED,SAAgB,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;AATD,8CASC;AAED,SAAgB,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;AAdD,oCAcC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAC9B,KAAQ;IACR,gBAAc;SAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;QAAd,+BAAc;;IAEd,IAAM,MAAM,GAAQ,EAAE,CAAC;IAEvB,KAAK,IAAM,GAAG,IAAI,KAAK,EAAE;QACvB,0BAA0B;QAC1B,IAAI,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE;YACtC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAE,GAAoB,CAAC,EAAE;gBAC3C,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;aAC1B;SACF;KACF;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAhBD,4CAgBC"}
|
package/lib/index.d.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import { Props, State } from './types';
|
|
2
|
+
import { Props, State, StorageItem } from './types';
|
|
3
|
+
export declare const cacheStore: {
|
|
4
|
+
[key: string]: StorageItem;
|
|
5
|
+
};
|
|
3
6
|
export default class InlineSVG extends React.PureComponent<Props, State> {
|
|
4
7
|
constructor(props: Props);
|
|
5
8
|
private isActive;
|
package/lib/index.js
CHANGED
|
@@ -7,6 +7,8 @@ var __extends = (this && this.__extends) || (function () {
|
|
|
7
7
|
return extendStatics(d, b);
|
|
8
8
|
};
|
|
9
9
|
return function (d, b) {
|
|
10
|
+
if (typeof b !== "function" && b !== null)
|
|
11
|
+
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
10
12
|
extendStatics(d, b);
|
|
11
13
|
function __() { this.constructor = d; }
|
|
12
14
|
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
@@ -33,17 +35,6 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
|
|
|
33
35
|
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
34
36
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
35
37
|
};
|
|
36
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
37
|
-
var t = {};
|
|
38
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
39
|
-
t[p] = s[p];
|
|
40
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
41
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
42
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
43
|
-
t[p[i]] = s[p[i]];
|
|
44
|
-
}
|
|
45
|
-
return t;
|
|
46
|
-
};
|
|
47
38
|
var __read = (this && this.__read) || function (o, n) {
|
|
48
39
|
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
49
40
|
if (!m) return o;
|
|
@@ -60,15 +51,17 @@ var __read = (this && this.__read) || function (o, n) {
|
|
|
60
51
|
}
|
|
61
52
|
return ar;
|
|
62
53
|
};
|
|
63
|
-
var
|
|
64
|
-
for (var
|
|
65
|
-
|
|
54
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from) {
|
|
55
|
+
for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
|
|
56
|
+
to[j] = from[i];
|
|
57
|
+
return to;
|
|
66
58
|
};
|
|
67
59
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
60
|
+
exports.cacheStore = void 0;
|
|
68
61
|
var React = require("react");
|
|
69
62
|
var react_from_dom_1 = require("react-from-dom");
|
|
70
63
|
var helpers_1 = require("./helpers");
|
|
71
|
-
|
|
64
|
+
exports.cacheStore = Object.create(null);
|
|
72
65
|
var InlineSVG = /** @class */ (function (_super) {
|
|
73
66
|
__extends(InlineSVG, _super);
|
|
74
67
|
function InlineSVG(props) {
|
|
@@ -105,12 +98,12 @@ var InlineSVG = /** @class */ (function (_super) {
|
|
|
105
98
|
}
|
|
106
99
|
};
|
|
107
100
|
_this.request = function () {
|
|
108
|
-
var _a = _this.props, cacheRequests = _a.cacheRequests, src = _a.src;
|
|
101
|
+
var _a = _this.props, cacheRequests = _a.cacheRequests, fetchOptions = _a.fetchOptions, src = _a.src;
|
|
109
102
|
try {
|
|
110
103
|
if (cacheRequests) {
|
|
111
|
-
cacheStore[src] = { content: '', status: helpers_1.STATUS.LOADING, queue: [] };
|
|
104
|
+
exports.cacheStore[src] = { content: '', status: helpers_1.STATUS.LOADING, queue: [] };
|
|
112
105
|
}
|
|
113
|
-
return fetch(src)
|
|
106
|
+
return fetch(src, fetchOptions)
|
|
114
107
|
.then(function (response) {
|
|
115
108
|
var contentType = response.headers.get('content-type');
|
|
116
109
|
var _a = __read((contentType || '').split(/ ?; ?/), 1), fileType = _a[0];
|
|
@@ -123,10 +116,15 @@ var InlineSVG = /** @class */ (function (_super) {
|
|
|
123
116
|
return response.text();
|
|
124
117
|
})
|
|
125
118
|
.then(function (content) {
|
|
119
|
+
var currentSrc = _this.props.src;
|
|
120
|
+
// the current src don't match the previous one, skipping...
|
|
121
|
+
if (src !== currentSrc) {
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
126
124
|
_this.handleLoad(content);
|
|
127
125
|
/* istanbul ignore else */
|
|
128
126
|
if (cacheRequests) {
|
|
129
|
-
var cache = cacheStore[src];
|
|
127
|
+
var cache = exports.cacheStore[src];
|
|
130
128
|
/* istanbul ignore else */
|
|
131
129
|
if (cache) {
|
|
132
130
|
cache.content = content;
|
|
@@ -142,13 +140,13 @@ var InlineSVG = /** @class */ (function (_super) {
|
|
|
142
140
|
_this.handleError(error);
|
|
143
141
|
/* istanbul ignore else */
|
|
144
142
|
if (cacheRequests) {
|
|
145
|
-
var cache = cacheStore[src];
|
|
143
|
+
var cache = exports.cacheStore[src];
|
|
146
144
|
/* istanbul ignore else */
|
|
147
145
|
if (cache) {
|
|
148
146
|
cache.queue.forEach(function (cb) {
|
|
149
147
|
cb(error);
|
|
150
148
|
});
|
|
151
|
-
delete cacheStore[src];
|
|
149
|
+
delete exports.cacheStore[src];
|
|
152
150
|
}
|
|
153
151
|
}
|
|
154
152
|
});
|
|
@@ -160,7 +158,7 @@ var InlineSVG = /** @class */ (function (_super) {
|
|
|
160
158
|
_this.state = {
|
|
161
159
|
content: '',
|
|
162
160
|
element: null,
|
|
163
|
-
hasCache: !!props.cacheRequests && !!cacheStore[props.src],
|
|
161
|
+
hasCache: !!props.cacheRequests && !!exports.cacheStore[props.src],
|
|
164
162
|
status: helpers_1.STATUS.PENDING,
|
|
165
163
|
};
|
|
166
164
|
_this.hash = props.uniqueHash || helpers_1.randomString(8);
|
|
@@ -233,7 +231,7 @@ var InlineSVG = /** @class */ (function (_super) {
|
|
|
233
231
|
if (!uniquifyIDs) {
|
|
234
232
|
return node;
|
|
235
233
|
}
|
|
236
|
-
|
|
234
|
+
__spreadArray([], __read(node.children)).map(function (d) {
|
|
237
235
|
if (d.attributes && d.attributes.length) {
|
|
238
236
|
var attributes_1 = Object.values(d.attributes).map(function (a) {
|
|
239
237
|
var attr = a;
|
|
@@ -316,7 +314,7 @@ var InlineSVG = /** @class */ (function (_super) {
|
|
|
316
314
|
status: helpers_1.STATUS.LOADING,
|
|
317
315
|
}, function () {
|
|
318
316
|
var _a = _this.props, cacheRequests = _a.cacheRequests, src = _a.src;
|
|
319
|
-
var cache = cacheRequests && cacheStore[src];
|
|
317
|
+
var cache = cacheRequests && exports.cacheStore[src];
|
|
320
318
|
if (cache) {
|
|
321
319
|
/* istanbul ignore else */
|
|
322
320
|
if (cache.status === helpers_1.STATUS.LOADING) {
|
|
@@ -345,12 +343,13 @@ var InlineSVG = /** @class */ (function (_super) {
|
|
|
345
343
|
};
|
|
346
344
|
InlineSVG.prototype.render = function () {
|
|
347
345
|
var _a = this.state, element = _a.element, status = _a.status;
|
|
348
|
-
var _b = this.props,
|
|
346
|
+
var _b = this.props, _c = _b.children, children = _c === void 0 ? null : _c, innerRef = _b.innerRef, _d = _b.loader, loader = _d === void 0 ? null : _d;
|
|
347
|
+
var elementProps = helpers_1.removeProperties(this.props, 'baseURL', 'cacheRequests', 'children', 'description', 'fetchOptions', 'innerRef', 'loader', 'onError', 'onLoad', 'preProcessor', 'src', 'title', 'uniqueHash', 'uniquifyIDs');
|
|
349
348
|
if (!helpers_1.canUseDOM()) {
|
|
350
349
|
return loader;
|
|
351
350
|
}
|
|
352
351
|
if (element) {
|
|
353
|
-
return React.cloneElement(element, __assign({ ref: innerRef },
|
|
352
|
+
return React.cloneElement(element, __assign({ ref: innerRef }, elementProps));
|
|
354
353
|
}
|
|
355
354
|
if ([helpers_1.STATUS.UNSUPPORTED, helpers_1.STATUS.FAILED].indexOf(status) > -1) {
|
|
356
355
|
return children;
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"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"}
|
package/lib/types.d.ts
CHANGED
|
@@ -2,13 +2,15 @@ import * as React from 'react';
|
|
|
2
2
|
declare type Callback = (...args: any[]) => void;
|
|
3
3
|
export declare type ErrorCallback = (error: Error | FetchError) => void;
|
|
4
4
|
export declare type LoadCallback = (src: string, isCached: boolean) => void;
|
|
5
|
+
export declare type PlainObject<T = unknown> = Record<string | number | symbol, T>;
|
|
5
6
|
export declare type PreProcessorCallback = (code: string) => string;
|
|
6
|
-
export interface Props extends Omit<React.
|
|
7
|
+
export interface Props extends Omit<React.SVGProps<SVGElement>, 'onLoad' | 'onError' | 'ref'> {
|
|
7
8
|
baseURL?: string;
|
|
8
9
|
cacheRequests?: boolean;
|
|
9
10
|
children?: React.ReactNode;
|
|
10
11
|
description?: string;
|
|
11
|
-
|
|
12
|
+
fetchOptions?: RequestInit;
|
|
13
|
+
innerRef?: React.Ref<SVGElement>;
|
|
12
14
|
loader?: React.ReactNode;
|
|
13
15
|
onError?: ErrorCallback;
|
|
14
16
|
onLoad?: LoadCallback;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-inlinesvg",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.3.0",
|
|
4
4
|
"description": "An SVG loader for React",
|
|
5
5
|
"author": "Gil Barbara <gilbarbara@gmail.com>",
|
|
6
6
|
"contributors": [
|
|
@@ -29,56 +29,60 @@
|
|
|
29
29
|
"lib",
|
|
30
30
|
"src"
|
|
31
31
|
],
|
|
32
|
-
"types": "
|
|
33
|
-
"sideEffects":
|
|
32
|
+
"types": "esm",
|
|
33
|
+
"sideEffects": false,
|
|
34
34
|
"peerDependencies": {
|
|
35
|
-
"react": "^16.8.0"
|
|
35
|
+
"react": "^16.8.0 || ^17.0.0"
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
38
|
"exenv": "^1.2.2",
|
|
39
|
-
"react-from-dom": "^0.
|
|
39
|
+
"react-from-dom": "^0.6.0"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
|
+
"@gilbarbara/helpers": "^0.2.0",
|
|
42
43
|
"@gilbarbara/tsconfig": "^0.1.0",
|
|
43
|
-
"@size-limit/preset-small-lib": "^4.
|
|
44
|
-
"@types/enzyme": "^3.10.
|
|
44
|
+
"@size-limit/preset-small-lib": "^4.10.2",
|
|
45
|
+
"@types/enzyme": "^3.10.8",
|
|
45
46
|
"@types/enzyme-adapter-react-16": "^1.0.6",
|
|
46
47
|
"@types/exenv": "^1.2.0",
|
|
47
48
|
"@types/fetch-mock": "^7.3.3",
|
|
48
|
-
"@types/jest": "^26.0.
|
|
49
|
-
"@types/node": "^
|
|
50
|
-
"@types/node-fetch": "^2.5.
|
|
51
|
-
"@types/react": "^
|
|
52
|
-
"@types/react-dom": "^
|
|
53
|
-
"@typescript-eslint/eslint-plugin": "^4.
|
|
54
|
-
"@typescript-eslint/parser": "^4.
|
|
49
|
+
"@types/jest": "^26.0.23",
|
|
50
|
+
"@types/node": "^15.0.1",
|
|
51
|
+
"@types/node-fetch": "^2.5.10",
|
|
52
|
+
"@types/react": "^17.0.4",
|
|
53
|
+
"@types/react-dom": "^17.0.3",
|
|
54
|
+
"@typescript-eslint/eslint-plugin": "^4.22.0",
|
|
55
|
+
"@typescript-eslint/parser": "^4.22.0",
|
|
55
56
|
"del-cli": "^3.0.1",
|
|
56
57
|
"enzyme": "^3.11.0",
|
|
57
|
-
"enzyme-adapter-react-16": "^1.15.
|
|
58
|
-
"eslint": "^7.
|
|
59
|
-
"eslint-config-airbnb": "^18.2.
|
|
60
|
-
"eslint-config-prettier": "^
|
|
58
|
+
"enzyme-adapter-react-16": "^1.15.6",
|
|
59
|
+
"eslint": "^7.25.0",
|
|
60
|
+
"eslint-config-airbnb": "^18.2.1",
|
|
61
|
+
"eslint-config-prettier": "^8.3.0",
|
|
61
62
|
"eslint-plugin-import": "^2.22.1",
|
|
62
|
-
"eslint-plugin-jsx-a11y": "^6.
|
|
63
|
-
"eslint-plugin-prettier": "^3.
|
|
64
|
-
"eslint-plugin-react": "^7.
|
|
63
|
+
"eslint-plugin-jsx-a11y": "^6.4.1",
|
|
64
|
+
"eslint-plugin-prettier": "^3.4.0",
|
|
65
|
+
"eslint-plugin-react": "^7.23.2",
|
|
66
|
+
"eslint-plugin-react-hooks": "^4.2.0",
|
|
65
67
|
"http-server": "^0.12.3",
|
|
66
|
-
"husky": "^4.3.
|
|
67
|
-
"jest": "^26.
|
|
68
|
+
"husky": "^4.3.8",
|
|
69
|
+
"jest": "^26.6.3",
|
|
68
70
|
"jest-chain": "^1.1.5",
|
|
69
71
|
"jest-enzyme": "^7.1.2",
|
|
70
72
|
"jest-extended": "^0.11.5",
|
|
71
73
|
"jest-fetch-mock": "^3.0.3",
|
|
72
|
-
"jest-
|
|
74
|
+
"jest-serializer-html": "^7.0.0",
|
|
75
|
+
"jest-watch-typeahead": "^0.6.3",
|
|
73
76
|
"node-fetch": "^2.6.1",
|
|
74
|
-
"prettier": "^2.1
|
|
75
|
-
"react": "^16.
|
|
76
|
-
"react-dom": "^16.
|
|
77
|
-
"repo-tools": "^0.2.
|
|
78
|
-
"size-limit": "^4.
|
|
79
|
-
"start-server-and-test": "^1.
|
|
80
|
-
"ts-jest": "^26.
|
|
81
|
-
"
|
|
77
|
+
"prettier": "^2.2.1",
|
|
78
|
+
"react": "^16.14.0",
|
|
79
|
+
"react-dom": "^16.14.0",
|
|
80
|
+
"repo-tools": "^0.2.2",
|
|
81
|
+
"size-limit": "^4.10.2",
|
|
82
|
+
"start-server-and-test": "^1.12.1",
|
|
83
|
+
"ts-jest": "^26.5.5",
|
|
84
|
+
"ts-node": "^9.1.1",
|
|
85
|
+
"typescript": "^4.2.4"
|
|
82
86
|
},
|
|
83
87
|
"scripts": {
|
|
84
88
|
"build": "npm run clean && npm run build:cjs && npm run build:esm",
|
|
@@ -90,10 +94,10 @@
|
|
|
90
94
|
"start": "http-server test/__fixtures__ -p 1337 --cors",
|
|
91
95
|
"test": "start-server-and-test start http://localhost:1337 test:coverage",
|
|
92
96
|
"test:coverage": "jest --coverage --bail",
|
|
93
|
-
"test:watch": "jest --
|
|
97
|
+
"test:watch": "jest --watchAll --verbose",
|
|
94
98
|
"lint": "eslint --ext .ts,.tsx src test",
|
|
95
99
|
"format": "prettier \"**/*.{js,jsx,json,yml,yaml,css,less,scss,ts,tsx,md,graphql,mdx}\" --write",
|
|
96
|
-
"validate": "npm run lint && npm run test && npm run build &&
|
|
100
|
+
"validate": "npm run lint && npm run test && npm run build && npm run size",
|
|
97
101
|
"size": "size-limit",
|
|
98
102
|
"prepublishOnly": "npm run validate"
|
|
99
103
|
},
|
package/src/helpers.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { canUseDOM as canUseDOMFlag } from 'exenv';
|
|
2
2
|
|
|
3
|
+
import { PlainObject } from './types';
|
|
4
|
+
|
|
3
5
|
export const STATUS = {
|
|
4
6
|
FAILED: 'failed',
|
|
5
7
|
LOADED: 'loaded',
|
|
@@ -13,6 +15,10 @@ export function canUseDOM(): boolean {
|
|
|
13
15
|
return canUseDOMFlag;
|
|
14
16
|
}
|
|
15
17
|
|
|
18
|
+
export function isSupportedEnvironment(): boolean {
|
|
19
|
+
return supportsInlineSVG() && typeof window !== 'undefined' && window !== null;
|
|
20
|
+
}
|
|
21
|
+
|
|
16
22
|
export function supportsInlineSVG(): boolean {
|
|
17
23
|
/* istanbul ignore next */
|
|
18
24
|
if (!document) {
|
|
@@ -24,10 +30,6 @@ export function supportsInlineSVG(): boolean {
|
|
|
24
30
|
return !!div.firstChild && div.firstChild.namespaceURI === 'http://www.w3.org/2000/svg';
|
|
25
31
|
}
|
|
26
32
|
|
|
27
|
-
export function isSupportedEnvironment(): boolean {
|
|
28
|
-
return supportsInlineSVG() && typeof window !== 'undefined' && window !== null;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
33
|
export function randomString(length: number): string {
|
|
32
34
|
const letters = 'abcdefghijklmnopqrstuvwxyz';
|
|
33
35
|
const numbers = '1234567890';
|
|
@@ -43,3 +45,24 @@ export function randomString(length: number): string {
|
|
|
43
45
|
|
|
44
46
|
return R;
|
|
45
47
|
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Remove properties from an object
|
|
51
|
+
*/
|
|
52
|
+
export function removeProperties<T extends PlainObject, K extends keyof T>(
|
|
53
|
+
input: T,
|
|
54
|
+
...filter: K[]
|
|
55
|
+
): Omit<T, K> {
|
|
56
|
+
const output: any = {};
|
|
57
|
+
|
|
58
|
+
for (const key in input) {
|
|
59
|
+
/* istanbul ignore else */
|
|
60
|
+
if ({}.hasOwnProperty.call(input, key)) {
|
|
61
|
+
if (!filter.includes((key as unknown) as K)) {
|
|
62
|
+
output[key] = input[key];
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
return output;
|
|
68
|
+
}
|
package/src/index.tsx
CHANGED
|
@@ -2,10 +2,16 @@ import * as React from 'react';
|
|
|
2
2
|
|
|
3
3
|
import convert from 'react-from-dom';
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import {
|
|
6
|
+
STATUS,
|
|
7
|
+
canUseDOM,
|
|
8
|
+
isSupportedEnvironment,
|
|
9
|
+
randomString,
|
|
10
|
+
removeProperties,
|
|
11
|
+
} from './helpers';
|
|
6
12
|
import { FetchError, Props, State, StorageItem } from './types';
|
|
7
13
|
|
|
8
|
-
const cacheStore: { [key: string]: StorageItem } = Object.create(null);
|
|
14
|
+
export const cacheStore: { [key: string]: StorageItem } = Object.create(null);
|
|
9
15
|
|
|
10
16
|
export default class InlineSVG extends React.PureComponent<Props, State> {
|
|
11
17
|
constructor(props: Props) {
|
|
@@ -215,7 +221,6 @@ export default class InlineSVG extends React.PureComponent<Props, State> {
|
|
|
215
221
|
() => {
|
|
216
222
|
const { cacheRequests, src } = this.props;
|
|
217
223
|
const cache = cacheRequests && cacheStore[src];
|
|
218
|
-
|
|
219
224
|
if (cache) {
|
|
220
225
|
/* istanbul ignore else */
|
|
221
226
|
if (cache.status === STATUS.LOADING) {
|
|
@@ -286,14 +291,14 @@ export default class InlineSVG extends React.PureComponent<Props, State> {
|
|
|
286
291
|
};
|
|
287
292
|
|
|
288
293
|
private request = () => {
|
|
289
|
-
const { cacheRequests, src } = this.props;
|
|
294
|
+
const { cacheRequests, fetchOptions, src } = this.props;
|
|
290
295
|
|
|
291
296
|
try {
|
|
292
297
|
if (cacheRequests) {
|
|
293
298
|
cacheStore[src] = { content: '', status: STATUS.LOADING, queue: [] };
|
|
294
299
|
}
|
|
295
300
|
|
|
296
|
-
return fetch(src)
|
|
301
|
+
return fetch(src, fetchOptions)
|
|
297
302
|
.then((response) => {
|
|
298
303
|
const contentType = response.headers.get('content-type');
|
|
299
304
|
const [fileType] = (contentType || '').split(/ ?; ?/);
|
|
@@ -309,6 +314,13 @@ export default class InlineSVG extends React.PureComponent<Props, State> {
|
|
|
309
314
|
return response.text();
|
|
310
315
|
})
|
|
311
316
|
.then((content) => {
|
|
317
|
+
const { src: currentSrc } = this.props;
|
|
318
|
+
|
|
319
|
+
// the current src don't match the previous one, skipping...
|
|
320
|
+
if (src !== currentSrc) {
|
|
321
|
+
return;
|
|
322
|
+
}
|
|
323
|
+
|
|
312
324
|
this.handleLoad(content);
|
|
313
325
|
|
|
314
326
|
/* istanbul ignore else */
|
|
@@ -352,29 +364,31 @@ export default class InlineSVG extends React.PureComponent<Props, State> {
|
|
|
352
364
|
|
|
353
365
|
public render(): React.ReactNode {
|
|
354
366
|
const { element, status } = this.state;
|
|
355
|
-
const {
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
367
|
+
const { children = null, innerRef, loader = null } = this.props;
|
|
368
|
+
const elementProps = removeProperties(
|
|
369
|
+
this.props,
|
|
370
|
+
'baseURL',
|
|
371
|
+
'cacheRequests',
|
|
372
|
+
'children',
|
|
373
|
+
'description',
|
|
374
|
+
'fetchOptions',
|
|
375
|
+
'innerRef',
|
|
376
|
+
'loader',
|
|
377
|
+
'onError',
|
|
378
|
+
'onLoad',
|
|
379
|
+
'preProcessor',
|
|
380
|
+
'src',
|
|
381
|
+
'title',
|
|
382
|
+
'uniqueHash',
|
|
383
|
+
'uniquifyIDs',
|
|
384
|
+
);
|
|
371
385
|
|
|
372
386
|
if (!canUseDOM()) {
|
|
373
387
|
return loader;
|
|
374
388
|
}
|
|
375
389
|
|
|
376
390
|
if (element) {
|
|
377
|
-
return React.cloneElement(element as React.ReactElement, { ref: innerRef, ...
|
|
391
|
+
return React.cloneElement(element as React.ReactElement, { ref: innerRef, ...elementProps });
|
|
378
392
|
}
|
|
379
393
|
|
|
380
394
|
if ([STATUS.UNSUPPORTED, STATUS.FAILED].indexOf(status) > -1) {
|
package/src/types.ts
CHANGED
|
@@ -4,14 +4,16 @@ type Callback = (...args: any[]) => void;
|
|
|
4
4
|
|
|
5
5
|
export type ErrorCallback = (error: Error | FetchError) => void;
|
|
6
6
|
export type LoadCallback = (src: string, isCached: boolean) => void;
|
|
7
|
+
export type PlainObject<T = unknown> = Record<string | number | symbol, T>;
|
|
7
8
|
export type PreProcessorCallback = (code: string) => string;
|
|
8
9
|
|
|
9
|
-
export interface Props extends Omit<React.
|
|
10
|
+
export interface Props extends Omit<React.SVGProps<SVGElement>, 'onLoad' | 'onError' | 'ref'> {
|
|
10
11
|
baseURL?: string;
|
|
11
12
|
cacheRequests?: boolean;
|
|
12
13
|
children?: React.ReactNode;
|
|
13
14
|
description?: string;
|
|
14
|
-
|
|
15
|
+
fetchOptions?: RequestInit;
|
|
16
|
+
innerRef?: React.Ref<SVGElement>;
|
|
15
17
|
loader?: React.ReactNode;
|
|
16
18
|
onError?: ErrorCallback;
|
|
17
19
|
onLoad?: LoadCallback;
|