@instructure/ui-svg-images 8.11.2-snapshot.7 → 8.12.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/CHANGELOG.md +4 -0
- package/es/InlineSVG/index.js +10 -8
- package/es/InlineSVG/props.js +0 -12
- package/es/SVGIcon/index.js +5 -4
- package/es/package.json +1 -0
- package/lib/InlineSVG/index.js +9 -7
- package/lib/InlineSVG/props.js +0 -12
- package/lib/SVGIcon/index.js +5 -4
- package/package.json +12 -13
- package/src/InlineSVG/index.tsx +16 -22
- package/src/InlineSVG/props.ts +10 -10
- package/src/SVGIcon/index.tsx +9 -6
- package/src/SVGIcon/props.ts +1 -1
- package/types/InlineSVG/index.d.ts +6 -4
- package/types/InlineSVG/index.d.ts.map +1 -1
- package/types/InlineSVG/props.d.ts +10 -1
- package/types/InlineSVG/props.d.ts.map +1 -1
- package/types/SVGIcon/index.d.ts +1 -0
- package/types/SVGIcon/index.d.ts.map +1 -1
- package/types/SVGIcon/props.d.ts +1 -1
- package/types/SVGIcon/props.d.ts.map +1 -1
- package/LICENSE.md +0 -27
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,10 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [8.12.0](https://github.com/instructure/instructure-ui/compare/v8.11.1...v8.12.0) (2021-11-17)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @instructure/ui-svg-images
|
|
9
|
+
|
|
6
10
|
## [8.11.1](https://github.com/instructure/instructure-ui/compare/v8.11.0...v8.11.1) (2021-10-19)
|
|
7
11
|
|
|
8
12
|
**Note:** Version bump only for package @instructure/ui-svg-images
|
package/es/InlineSVG/index.js
CHANGED
|
@@ -36,15 +36,18 @@ import { withStyle, jsx } from '@instructure/emotion';
|
|
|
36
36
|
import generateStyle from './styles';
|
|
37
37
|
import generateComponentTheme from './theme';
|
|
38
38
|
import { allowedProps, propTypes } from './props';
|
|
39
|
+
|
|
39
40
|
/**
|
|
40
41
|
---
|
|
41
42
|
category: components/utilities
|
|
42
43
|
---
|
|
44
|
+
@tsProps
|
|
43
45
|
**/
|
|
44
|
-
|
|
45
46
|
let InlineSVG = (_dec = withStyle(generateStyle, generateComponentTheme), _dec2 = testable(), _dec(_class = _dec2(_class = (_temp = _class2 = class InlineSVG extends Component {
|
|
46
|
-
constructor() {
|
|
47
|
-
super();
|
|
47
|
+
constructor(props) {
|
|
48
|
+
super(props);
|
|
49
|
+
this.titleId = void 0;
|
|
50
|
+
this.descId = void 0;
|
|
48
51
|
this.ref = null;
|
|
49
52
|
|
|
50
53
|
this.handleRef = el => {
|
|
@@ -111,11 +114,11 @@ let InlineSVG = (_dec = withStyle(generateStyle, generateComponentTheme), _dec2
|
|
|
111
114
|
if (this.props.src) {
|
|
112
115
|
const src = InlineSVG.prepareSrc(this.props.src);
|
|
113
116
|
return jsx("g", {
|
|
114
|
-
role: "presentation"
|
|
117
|
+
role: "presentation" // eslint-disable-next-line react/no-danger
|
|
118
|
+
,
|
|
115
119
|
dangerouslySetInnerHTML: {
|
|
116
120
|
__html: src
|
|
117
|
-
}
|
|
118
|
-
|
|
121
|
+
}
|
|
119
122
|
});
|
|
120
123
|
} else {
|
|
121
124
|
return jsx("g", {
|
|
@@ -138,7 +141,7 @@ let InlineSVG = (_dec = withStyle(generateStyle, generateComponentTheme), _dec2
|
|
|
138
141
|
|
|
139
142
|
const width = this.props.width === 'auto' ? void 0 : this.props.width;
|
|
140
143
|
const height = this.props.height === 'auto' ? void 0 : this.props.height;
|
|
141
|
-
return jsx("svg", Object.assign({}, parseAttributes(
|
|
144
|
+
return jsx("svg", Object.assign({}, parseAttributes(src), omitProps(this.props, InlineSVG.allowedProps, ['inline']), {
|
|
142
145
|
style: { ...style,
|
|
143
146
|
width,
|
|
144
147
|
height
|
|
@@ -161,7 +164,6 @@ let InlineSVG = (_dec = withStyle(generateStyle, generateComponentTheme), _dec2
|
|
|
161
164
|
title: '',
|
|
162
165
|
description: '',
|
|
163
166
|
inline: true,
|
|
164
|
-
children: null,
|
|
165
167
|
width: '1em',
|
|
166
168
|
height: '1em',
|
|
167
169
|
color: 'inherit'
|
package/es/InlineSVG/props.js
CHANGED
|
@@ -28,22 +28,10 @@ const propTypes = {
|
|
|
28
28
|
title: PropTypes.string,
|
|
29
29
|
description: PropTypes.string,
|
|
30
30
|
focusable: PropTypes.bool,
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* To let the SVG expand to fill its container, use `auto`
|
|
34
|
-
*/
|
|
35
31
|
width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* To let the SVG expand to fill its container, use `auto`
|
|
39
|
-
*/
|
|
40
32
|
height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
|
|
41
33
|
inline: PropTypes.bool,
|
|
42
34
|
color: PropTypes.oneOf(['inherit', 'primary', 'secondary', 'primary-inverse', 'secondary-inverse', 'success', 'error', 'alert', 'warning', 'brand', 'auto']),
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* provides a reference to the underlying html root element
|
|
46
|
-
*/
|
|
47
35
|
elementRef: PropTypes.func
|
|
48
36
|
};
|
|
49
37
|
const allowedProps = ['children', 'src', 'title', 'description', 'focusable', 'width', 'height', 'inline', 'color', 'elementRef'];
|
package/es/SVGIcon/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
|
|
2
|
-
const _excluded = ["rotate", "className", "size", "bidirectional", "makeStyles", "styles"
|
|
2
|
+
const _excluded = ["rotate", "className", "themeOverride", "size", "bidirectional", "makeStyles", "styles"];
|
|
3
3
|
|
|
4
4
|
var _dec, _dec2, _class, _class2, _temp;
|
|
5
5
|
|
|
@@ -30,17 +30,18 @@ var _dec, _dec2, _class, _class2, _temp;
|
|
|
30
30
|
/** @jsx jsx */
|
|
31
31
|
import { Component } from 'react';
|
|
32
32
|
import { testable } from '@instructure/ui-testable';
|
|
33
|
-
import { InlineSVG } from '../InlineSVG';
|
|
34
33
|
import { withStyle, jsx } from '@instructure/emotion';
|
|
34
|
+
import { InlineSVG } from '../InlineSVG';
|
|
35
35
|
import generateStyle from './styles';
|
|
36
36
|
import generateComponentTheme from './theme';
|
|
37
37
|
import { allowedProps, propTypes } from './props';
|
|
38
|
+
|
|
38
39
|
/**
|
|
39
40
|
---
|
|
40
41
|
category: components/utilities
|
|
41
42
|
---
|
|
43
|
+
@tsProps
|
|
42
44
|
**/
|
|
43
|
-
|
|
44
45
|
let SVGIcon = (_dec = withStyle(generateStyle, generateComponentTheme), _dec2 = testable(), _dec(_class = _dec2(_class = (_temp = _class2 = class SVGIcon extends Component {
|
|
45
46
|
constructor(...args) {
|
|
46
47
|
super(...args);
|
|
@@ -72,11 +73,11 @@ let SVGIcon = (_dec = withStyle(generateStyle, generateComponentTheme), _dec2 =
|
|
|
72
73
|
const _this$props3 = this.props,
|
|
73
74
|
rotate = _this$props3.rotate,
|
|
74
75
|
className = _this$props3.className,
|
|
76
|
+
themeOverride = _this$props3.themeOverride,
|
|
75
77
|
size = _this$props3.size,
|
|
76
78
|
bidirectional = _this$props3.bidirectional,
|
|
77
79
|
makeStyles = _this$props3.makeStyles,
|
|
78
80
|
styles = _this$props3.styles,
|
|
79
|
-
themeOverride = _this$props3.themeOverride,
|
|
80
81
|
props = _objectWithoutProperties(_this$props3, _excluded);
|
|
81
82
|
|
|
82
83
|
return jsx(InlineSVG, Object.assign({}, props, {
|
package/es/package.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type":"module"}
|
package/lib/InlineSVG/index.js
CHANGED
|
@@ -33,10 +33,13 @@ var _dec, _dec2, _class, _class2, _temp;
|
|
|
33
33
|
---
|
|
34
34
|
category: components/utilities
|
|
35
35
|
---
|
|
36
|
+
@tsProps
|
|
36
37
|
**/
|
|
37
38
|
let InlineSVG = (_dec = (0, _emotion.withStyle)(_styles.default, _theme.default), _dec2 = (0, _testable.testable)(), _dec(_class = _dec2(_class = (_temp = _class2 = class InlineSVG extends _react.Component {
|
|
38
|
-
constructor() {
|
|
39
|
-
super();
|
|
39
|
+
constructor(props) {
|
|
40
|
+
super(props);
|
|
41
|
+
this.titleId = void 0;
|
|
42
|
+
this.descId = void 0;
|
|
40
43
|
this.ref = null;
|
|
41
44
|
|
|
42
45
|
this.handleRef = el => {
|
|
@@ -103,11 +106,11 @@ let InlineSVG = (_dec = (0, _emotion.withStyle)(_styles.default, _theme.default)
|
|
|
103
106
|
if (this.props.src) {
|
|
104
107
|
const src = InlineSVG.prepareSrc(this.props.src);
|
|
105
108
|
return (0, _emotion.jsx)("g", {
|
|
106
|
-
role: "presentation"
|
|
109
|
+
role: "presentation" // eslint-disable-next-line react/no-danger
|
|
110
|
+
,
|
|
107
111
|
dangerouslySetInnerHTML: {
|
|
108
112
|
__html: src
|
|
109
|
-
}
|
|
110
|
-
|
|
113
|
+
}
|
|
111
114
|
});
|
|
112
115
|
} else {
|
|
113
116
|
return (0, _emotion.jsx)("g", {
|
|
@@ -129,7 +132,7 @@ let InlineSVG = (_dec = (0, _emotion.withStyle)(_styles.default, _theme.default)
|
|
|
129
132
|
|
|
130
133
|
const width = this.props.width === 'auto' ? void 0 : this.props.width;
|
|
131
134
|
const height = this.props.height === 'auto' ? void 0 : this.props.height;
|
|
132
|
-
return (0, _emotion.jsx)("svg", Object.assign({}, parseAttributes(
|
|
135
|
+
return (0, _emotion.jsx)("svg", Object.assign({}, parseAttributes(src), (0, _omitProps.omitProps)(this.props, InlineSVG.allowedProps, ['inline']), {
|
|
133
136
|
style: { ...style,
|
|
134
137
|
width,
|
|
135
138
|
height
|
|
@@ -152,7 +155,6 @@ let InlineSVG = (_dec = (0, _emotion.withStyle)(_styles.default, _theme.default)
|
|
|
152
155
|
title: '',
|
|
153
156
|
description: '',
|
|
154
157
|
inline: true,
|
|
155
|
-
children: null,
|
|
156
158
|
width: '1em',
|
|
157
159
|
height: '1em',
|
|
158
160
|
color: 'inherit'
|
package/lib/InlineSVG/props.js
CHANGED
|
@@ -38,22 +38,10 @@ const propTypes = {
|
|
|
38
38
|
title: _propTypes.default.string,
|
|
39
39
|
description: _propTypes.default.string,
|
|
40
40
|
focusable: _propTypes.default.bool,
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* To let the SVG expand to fill its container, use `auto`
|
|
44
|
-
*/
|
|
45
41
|
width: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]),
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* To let the SVG expand to fill its container, use `auto`
|
|
49
|
-
*/
|
|
50
42
|
height: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]),
|
|
51
43
|
inline: _propTypes.default.bool,
|
|
52
44
|
color: _propTypes.default.oneOf(['inherit', 'primary', 'secondary', 'primary-inverse', 'secondary-inverse', 'success', 'error', 'alert', 'warning', 'brand', 'auto']),
|
|
53
|
-
|
|
54
|
-
/**
|
|
55
|
-
* provides a reference to the underlying html root element
|
|
56
|
-
*/
|
|
57
45
|
elementRef: _propTypes.default.func
|
|
58
46
|
};
|
|
59
47
|
exports.propTypes = propTypes;
|
package/lib/SVGIcon/index.js
CHANGED
|
@@ -13,17 +13,17 @@ var _react = require("react");
|
|
|
13
13
|
|
|
14
14
|
var _testable = require("@instructure/ui-testable/lib/testable.js");
|
|
15
15
|
|
|
16
|
-
var _InlineSVG = require("../InlineSVG");
|
|
17
|
-
|
|
18
16
|
var _emotion = require("@instructure/emotion");
|
|
19
17
|
|
|
18
|
+
var _InlineSVG = require("../InlineSVG");
|
|
19
|
+
|
|
20
20
|
var _styles = _interopRequireDefault(require("./styles"));
|
|
21
21
|
|
|
22
22
|
var _theme = _interopRequireDefault(require("./theme"));
|
|
23
23
|
|
|
24
24
|
var _props = require("./props");
|
|
25
25
|
|
|
26
|
-
const _excluded = ["rotate", "className", "size", "bidirectional", "makeStyles", "styles"
|
|
26
|
+
const _excluded = ["rotate", "className", "themeOverride", "size", "bidirectional", "makeStyles", "styles"];
|
|
27
27
|
|
|
28
28
|
var _dec, _dec2, _class, _class2, _temp;
|
|
29
29
|
|
|
@@ -31,6 +31,7 @@ var _dec, _dec2, _class, _class2, _temp;
|
|
|
31
31
|
---
|
|
32
32
|
category: components/utilities
|
|
33
33
|
---
|
|
34
|
+
@tsProps
|
|
34
35
|
**/
|
|
35
36
|
let SVGIcon = (_dec = (0, _emotion.withStyle)(_styles.default, _theme.default), _dec2 = (0, _testable.testable)(), _dec(_class = _dec2(_class = (_temp = _class2 = class SVGIcon extends _react.Component {
|
|
36
37
|
constructor(...args) {
|
|
@@ -63,11 +64,11 @@ let SVGIcon = (_dec = (0, _emotion.withStyle)(_styles.default, _theme.default),
|
|
|
63
64
|
const _this$props3 = this.props,
|
|
64
65
|
rotate = _this$props3.rotate,
|
|
65
66
|
className = _this$props3.className,
|
|
67
|
+
themeOverride = _this$props3.themeOverride,
|
|
66
68
|
size = _this$props3.size,
|
|
67
69
|
bidirectional = _this$props3.bidirectional,
|
|
68
70
|
makeStyles = _this$props3.makeStyles,
|
|
69
71
|
styles = _this$props3.styles,
|
|
70
|
-
themeOverride = _this$props3.themeOverride,
|
|
71
72
|
props = (0, _objectWithoutProperties2.default)(_this$props3, _excluded);
|
|
72
73
|
return (0, _emotion.jsx)(_InlineSVG.InlineSVG, Object.assign({}, props, {
|
|
73
74
|
themeOverride: themeOverride,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@instructure/ui-svg-images",
|
|
3
|
-
"version": "8.
|
|
3
|
+
"version": "8.12.0",
|
|
4
4
|
"description": "A UI component library made by Instructure Inc.",
|
|
5
5
|
"author": "Instructure, Inc. Engineering and Product Design",
|
|
6
6
|
"type": "commonjs",
|
|
@@ -24,19 +24,19 @@
|
|
|
24
24
|
},
|
|
25
25
|
"license": "MIT",
|
|
26
26
|
"devDependencies": {
|
|
27
|
-
"@instructure/ui-babel-preset": "8.
|
|
28
|
-
"@instructure/ui-test-locator": "8.
|
|
29
|
-
"@instructure/ui-test-utils": "8.
|
|
30
|
-
"@instructure/ui-themes": "8.
|
|
27
|
+
"@instructure/ui-babel-preset": "8.12.0",
|
|
28
|
+
"@instructure/ui-test-locator": "8.12.0",
|
|
29
|
+
"@instructure/ui-test-utils": "8.12.0",
|
|
30
|
+
"@instructure/ui-themes": "8.12.0"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
33
|
"@babel/runtime": "^7.13.10",
|
|
34
|
-
"@instructure/emotion": "8.
|
|
35
|
-
"@instructure/shared-types": "8.
|
|
36
|
-
"@instructure/ui-react-utils": "8.
|
|
37
|
-
"@instructure/ui-testable": "8.
|
|
38
|
-
"@instructure/ui-utils": "8.
|
|
39
|
-
"@instructure/uid": "8.
|
|
34
|
+
"@instructure/emotion": "8.12.0",
|
|
35
|
+
"@instructure/shared-types": "8.12.0",
|
|
36
|
+
"@instructure/ui-react-utils": "8.12.0",
|
|
37
|
+
"@instructure/ui-testable": "8.12.0",
|
|
38
|
+
"@instructure/ui-utils": "8.12.0",
|
|
39
|
+
"@instructure/uid": "8.12.0",
|
|
40
40
|
"prop-types": "^15"
|
|
41
41
|
},
|
|
42
42
|
"peerDependencies": {
|
|
@@ -45,6 +45,5 @@
|
|
|
45
45
|
"publishConfig": {
|
|
46
46
|
"access": "public"
|
|
47
47
|
},
|
|
48
|
-
"sideEffects": false
|
|
49
|
-
"gitHead": "2681e145ad469e1396536d3e9eed75a19995eb8a"
|
|
48
|
+
"sideEffects": false
|
|
50
49
|
}
|
package/src/InlineSVG/index.tsx
CHANGED
|
@@ -33,13 +33,15 @@ import { withStyle, jsx } from '@instructure/emotion'
|
|
|
33
33
|
|
|
34
34
|
import generateStyle from './styles'
|
|
35
35
|
import generateComponentTheme from './theme'
|
|
36
|
-
|
|
36
|
+
|
|
37
37
|
import { allowedProps, propTypes } from './props'
|
|
38
|
+
import type { InlineSVGProps } from './props'
|
|
38
39
|
|
|
39
40
|
/**
|
|
40
41
|
---
|
|
41
42
|
category: components/utilities
|
|
42
43
|
---
|
|
44
|
+
@tsProps
|
|
43
45
|
**/
|
|
44
46
|
@withStyle(generateStyle, generateComponentTheme)
|
|
45
47
|
@testable()
|
|
@@ -55,12 +57,14 @@ class InlineSVG extends Component<InlineSVGProps> {
|
|
|
55
57
|
title: '',
|
|
56
58
|
description: '',
|
|
57
59
|
inline: true,
|
|
58
|
-
children: null,
|
|
59
60
|
width: '1em',
|
|
60
61
|
height: '1em',
|
|
61
62
|
color: 'inherit'
|
|
62
63
|
}
|
|
63
64
|
|
|
65
|
+
titleId?: string
|
|
66
|
+
descId?: string
|
|
67
|
+
|
|
64
68
|
ref: Element | null = null
|
|
65
69
|
|
|
66
70
|
handleRef = (el: Element | null) => {
|
|
@@ -73,13 +77,10 @@ class InlineSVG extends Component<InlineSVGProps> {
|
|
|
73
77
|
}
|
|
74
78
|
}
|
|
75
79
|
|
|
76
|
-
constructor() {
|
|
77
|
-
|
|
78
|
-
super()
|
|
80
|
+
constructor(props: InlineSVGProps) {
|
|
81
|
+
super(props)
|
|
79
82
|
|
|
80
|
-
// @ts-expect-error ts-migrate(2339) FIXME: Property 'titleId' does not exist on type 'InlineS... Remove this comment to see the full error message
|
|
81
83
|
this.titleId = uid('InlineSVG-title')
|
|
82
|
-
// @ts-expect-error ts-migrate(2339) FIXME: Property 'descId' does not exist on type 'InlineSV... Remove this comment to see the full error message
|
|
83
84
|
this.descId = uid('InlineSVG-desc')
|
|
84
85
|
}
|
|
85
86
|
|
|
@@ -91,8 +92,7 @@ class InlineSVG extends Component<InlineSVGProps> {
|
|
|
91
92
|
this.props.makeStyles?.()
|
|
92
93
|
}
|
|
93
94
|
|
|
94
|
-
|
|
95
|
-
static prepareSrc = (src) => {
|
|
95
|
+
static prepareSrc = (src: string) => {
|
|
96
96
|
const pattern = /<svg[^>]*>((.|[\n\r])*)<\/svg>/
|
|
97
97
|
const matches = pattern.exec(src)
|
|
98
98
|
|
|
@@ -109,13 +109,10 @@ class InlineSVG extends Component<InlineSVGProps> {
|
|
|
109
109
|
|
|
110
110
|
renderTitle() {
|
|
111
111
|
const { title } = this.props
|
|
112
|
-
// @ts-expect-error ts-migrate(2339) FIXME: Property 'titleId' does not exist on type 'InlineS... Remove this comment to see the full error message
|
|
113
112
|
return title ? <title id={this.titleId}>{title}</title> : null
|
|
114
113
|
}
|
|
115
114
|
|
|
116
|
-
|
|
117
|
-
renderDesc(desc) {
|
|
118
|
-
// @ts-expect-error ts-migrate(2339) FIXME: Property 'descId' does not exist on type 'InlineSV... Remove this comment to see the full error message
|
|
115
|
+
renderDesc(desc: InlineSVGProps['description']) {
|
|
119
116
|
return desc ? <desc id={this.descId}>{desc}</desc> : null
|
|
120
117
|
}
|
|
121
118
|
|
|
@@ -123,12 +120,10 @@ class InlineSVG extends Component<InlineSVGProps> {
|
|
|
123
120
|
const ids = []
|
|
124
121
|
|
|
125
122
|
if (this.props.title) {
|
|
126
|
-
// @ts-expect-error ts-migrate(2339) FIXME: Property 'titleId' does not exist on type 'InlineS... Remove this comment to see the full error message
|
|
127
123
|
ids.push(this.titleId)
|
|
128
124
|
}
|
|
129
125
|
|
|
130
126
|
if (this.props.description) {
|
|
131
|
-
// @ts-expect-error ts-migrate(2339) FIXME: Property 'descId' does not exist on type 'InlineSV... Remove this comment to see the full error message
|
|
132
127
|
ids.push(this.descId)
|
|
133
128
|
}
|
|
134
129
|
|
|
@@ -141,7 +136,8 @@ class InlineSVG extends Component<InlineSVGProps> {
|
|
|
141
136
|
return (
|
|
142
137
|
<g
|
|
143
138
|
role="presentation"
|
|
144
|
-
|
|
139
|
+
// eslint-disable-next-line react/no-danger
|
|
140
|
+
dangerouslySetInnerHTML={{ __html: src }}
|
|
145
141
|
/>
|
|
146
142
|
)
|
|
147
143
|
} else {
|
|
@@ -151,7 +147,7 @@ class InlineSVG extends Component<InlineSVGProps> {
|
|
|
151
147
|
|
|
152
148
|
render() {
|
|
153
149
|
const {
|
|
154
|
-
style,
|
|
150
|
+
style,
|
|
155
151
|
title,
|
|
156
152
|
description,
|
|
157
153
|
focusable,
|
|
@@ -167,7 +163,7 @@ class InlineSVG extends Component<InlineSVGProps> {
|
|
|
167
163
|
|
|
168
164
|
return (
|
|
169
165
|
<svg
|
|
170
|
-
{...parseAttributes(
|
|
166
|
+
{...parseAttributes(src)}
|
|
171
167
|
{...omitProps(this.props, InlineSVG.allowedProps, ['inline'])}
|
|
172
168
|
style={{
|
|
173
169
|
...style,
|
|
@@ -192,9 +188,8 @@ class InlineSVG extends Component<InlineSVGProps> {
|
|
|
192
188
|
}
|
|
193
189
|
}
|
|
194
190
|
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
const attributes = {}
|
|
191
|
+
function parseAttributes(src: InlineSVGProps['src']) {
|
|
192
|
+
const attributes: Record<string, string> = {}
|
|
198
193
|
const SVGAttributesRegExp = /<svg\s+([^>]*)\s*>/
|
|
199
194
|
const namesAndValuesRegExp = /(\S+)=["']?((?:.(?!["']?\s+(?:\S+)=|[>"']))+.)["']?/g
|
|
200
195
|
|
|
@@ -207,7 +202,6 @@ function parseAttributes(src) {
|
|
|
207
202
|
|
|
208
203
|
while (match != null) {
|
|
209
204
|
if (excludes.indexOf(match[1]) === -1) {
|
|
210
|
-
// @ts-expect-error ts-migrate(7053) FIXME: Element implicitly has an 'any' type because expre... Remove this comment to see the full error message
|
|
211
205
|
attributes[match[1]] =
|
|
212
206
|
match[2] ||
|
|
213
207
|
(match[3] ? match[3] : match[4] ? match[4] : match[5]) ||
|
package/src/InlineSVG/props.ts
CHANGED
|
@@ -32,11 +32,18 @@ import type {
|
|
|
32
32
|
import type { WithStyleProps, ComponentStyle } from '@instructure/emotion'
|
|
33
33
|
|
|
34
34
|
type InlineSVGOwnProps = {
|
|
35
|
+
children?: React.ReactNode
|
|
35
36
|
src?: string
|
|
36
37
|
title?: string
|
|
37
38
|
description?: string
|
|
38
39
|
focusable?: boolean
|
|
40
|
+
/**
|
|
41
|
+
* To let the SVG expand to fill its container, use "`auto`"
|
|
42
|
+
*/
|
|
39
43
|
width?: string | number
|
|
44
|
+
/**
|
|
45
|
+
* To let the SVG expand to fill its container, use "`auto`"
|
|
46
|
+
*/
|
|
40
47
|
height?: string | number
|
|
41
48
|
inline?: boolean
|
|
42
49
|
color?:
|
|
@@ -51,7 +58,9 @@ type InlineSVGOwnProps = {
|
|
|
51
58
|
| 'warning'
|
|
52
59
|
| 'brand'
|
|
53
60
|
| 'auto'
|
|
54
|
-
|
|
61
|
+
/**
|
|
62
|
+
* provides a reference to the underlying html root element
|
|
63
|
+
*/
|
|
55
64
|
elementRef?: (element: Element | null) => void
|
|
56
65
|
}
|
|
57
66
|
|
|
@@ -71,13 +80,7 @@ const propTypes: PropValidators<PropKeys> = {
|
|
|
71
80
|
title: PropTypes.string,
|
|
72
81
|
description: PropTypes.string,
|
|
73
82
|
focusable: PropTypes.bool,
|
|
74
|
-
/**
|
|
75
|
-
* To let the SVG expand to fill its container, use `auto`
|
|
76
|
-
*/
|
|
77
83
|
width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
|
|
78
|
-
/**
|
|
79
|
-
* To let the SVG expand to fill its container, use `auto`
|
|
80
|
-
*/
|
|
81
84
|
height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
|
|
82
85
|
inline: PropTypes.bool,
|
|
83
86
|
color: PropTypes.oneOf([
|
|
@@ -93,9 +96,6 @@ const propTypes: PropValidators<PropKeys> = {
|
|
|
93
96
|
'brand',
|
|
94
97
|
'auto'
|
|
95
98
|
]),
|
|
96
|
-
/**
|
|
97
|
-
* provides a reference to the underlying html root element
|
|
98
|
-
*/
|
|
99
99
|
elementRef: PropTypes.func
|
|
100
100
|
}
|
|
101
101
|
|
package/src/SVGIcon/index.tsx
CHANGED
|
@@ -26,20 +26,21 @@
|
|
|
26
26
|
import { Component, ReactInstance } from 'react'
|
|
27
27
|
|
|
28
28
|
import { testable } from '@instructure/ui-testable'
|
|
29
|
+
import { withStyle, jsx } from '@instructure/emotion'
|
|
29
30
|
|
|
30
31
|
import { InlineSVG } from '../InlineSVG'
|
|
31
32
|
|
|
32
|
-
import { withStyle, jsx } from '@instructure/emotion'
|
|
33
|
-
|
|
34
33
|
import generateStyle from './styles'
|
|
35
34
|
import generateComponentTheme from './theme'
|
|
36
|
-
|
|
35
|
+
|
|
37
36
|
import { allowedProps, propTypes } from './props'
|
|
37
|
+
import type { SVGIconProps } from './props'
|
|
38
38
|
|
|
39
39
|
/**
|
|
40
40
|
---
|
|
41
41
|
category: components/utilities
|
|
42
42
|
---
|
|
43
|
+
@tsProps
|
|
43
44
|
**/
|
|
44
45
|
@withStyle(generateStyle, generateComponentTheme)
|
|
45
46
|
@testable()
|
|
@@ -78,13 +79,15 @@ class SVGIcon extends Component<SVGIconProps> {
|
|
|
78
79
|
const {
|
|
79
80
|
rotate,
|
|
80
81
|
className,
|
|
82
|
+
themeOverride,
|
|
83
|
+
|
|
84
|
+
// 'size', 'bidirectional', 'makeStyles' and 'styles' need to be added here,
|
|
85
|
+
// so it won't be passed to InlineSVG via '...props'
|
|
81
86
|
size,
|
|
82
87
|
bidirectional,
|
|
83
|
-
// 'makeStyles' and 'styles' need to be added here,
|
|
84
|
-
// so it won't be passed to InlineSVG via '...props'
|
|
85
88
|
makeStyles,
|
|
86
89
|
styles,
|
|
87
|
-
|
|
90
|
+
|
|
88
91
|
...props
|
|
89
92
|
} = this.props
|
|
90
93
|
|
package/src/SVGIcon/props.ts
CHANGED
|
@@ -25,6 +25,7 @@ import PropTypes from 'prop-types'
|
|
|
25
25
|
|
|
26
26
|
import { InlineSVG } from '../InlineSVG'
|
|
27
27
|
|
|
28
|
+
import type { SVGAttributes } from 'react'
|
|
28
29
|
import type {
|
|
29
30
|
InlineSVGTheme,
|
|
30
31
|
OtherHTMLAttributes,
|
|
@@ -34,7 +35,6 @@ import type {
|
|
|
34
35
|
import type { WithStyleProps, ComponentStyle } from '@instructure/emotion'
|
|
35
36
|
|
|
36
37
|
import type { InlineSVGOwnProps } from '../InlineSVG/props'
|
|
37
|
-
import { SVGAttributes } from 'react'
|
|
38
38
|
|
|
39
39
|
type SVGIconOwnProps = InlineSVGOwnProps & {
|
|
40
40
|
rotate?: '0' | '90' | '180' | '270'
|
|
@@ -6,6 +6,7 @@ import type { InlineSVGProps } from './props';
|
|
|
6
6
|
---
|
|
7
7
|
category: components/utilities
|
|
8
8
|
---
|
|
9
|
+
@tsProps
|
|
9
10
|
**/
|
|
10
11
|
declare class InlineSVG extends Component<InlineSVGProps> {
|
|
11
12
|
static readonly componentId = "InlineSVG";
|
|
@@ -17,20 +18,21 @@ declare class InlineSVG extends Component<InlineSVGProps> {
|
|
|
17
18
|
title: string;
|
|
18
19
|
description: string;
|
|
19
20
|
inline: boolean;
|
|
20
|
-
children: null;
|
|
21
21
|
width: string;
|
|
22
22
|
height: string;
|
|
23
23
|
color: string;
|
|
24
24
|
};
|
|
25
|
+
titleId?: string;
|
|
26
|
+
descId?: string;
|
|
25
27
|
ref: Element | null;
|
|
26
28
|
handleRef: (el: Element | null) => void;
|
|
27
|
-
constructor();
|
|
29
|
+
constructor(props: InlineSVGProps);
|
|
28
30
|
componentDidMount(): void;
|
|
29
31
|
componentDidUpdate(): void;
|
|
30
|
-
static prepareSrc: (src:
|
|
32
|
+
static prepareSrc: (src: string) => string;
|
|
31
33
|
get role(): "img" | "presentation";
|
|
32
34
|
renderTitle(): jsx.JSX.Element | null;
|
|
33
|
-
renderDesc(desc:
|
|
35
|
+
renderDesc(desc: InlineSVGProps['description']): jsx.JSX.Element | null;
|
|
34
36
|
get labelledBy(): string | undefined;
|
|
35
37
|
renderContent(): jsx.JSX.Element;
|
|
36
38
|
render(): jsx.JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/InlineSVG/index.tsx"],"names":[],"mappings":"AAwBA,eAAe;AACf,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAMjC,OAAO,EAAa,GAAG,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/InlineSVG/index.tsx"],"names":[],"mappings":"AAwBA,eAAe;AACf,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAMjC,OAAO,EAAa,GAAG,EAAE,MAAM,sBAAsB,CAAA;AAMrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAE7C;;;;;GAKG;AACH,cAEM,SAAU,SAAQ,SAAS,CAAC,cAAc,CAAC;IAC/C,MAAM,CAAC,QAAQ,CAAC,WAAW,eAAc;IAEzC,MAAM,CAAC,YAAY,yDAAe;IAClC,MAAM,CAAC,SAAS,mHAAY;IAE5B,MAAM,CAAC,YAAY;;;;;;;;;MASlB;IAED,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf,GAAG,EAAE,OAAO,GAAG,IAAI,CAAO;IAE1B,SAAS,OAAQ,OAAO,GAAG,IAAI,UAQ9B;gBAEW,KAAK,EAAE,cAAc;IAOjC,iBAAiB;IAIjB,kBAAkB;IAIlB,MAAM,CAAC,UAAU,QAAS,MAAM,YAK/B;IAED,IAAI,IAAI,2BAMP;IAED,WAAW;IAKX,UAAU,CAAC,IAAI,EAAE,cAAc,CAAC,aAAa,CAAC;IAI9C,IAAI,UAAU,uBAYb;IAED,aAAa;IAeb,MAAM;CAyCP;AA4BD,eAAe,SAAS,CAAA;AACxB,OAAO,EAAE,SAAS,EAAE,CAAA"}
|
|
@@ -2,15 +2,24 @@ import React, { SVGAttributes } from 'react';
|
|
|
2
2
|
import type { PropValidators, InlineSVGTheme, OtherHTMLAttributes } from '@instructure/shared-types';
|
|
3
3
|
import type { WithStyleProps, ComponentStyle } from '@instructure/emotion';
|
|
4
4
|
declare type InlineSVGOwnProps = {
|
|
5
|
+
children?: React.ReactNode;
|
|
5
6
|
src?: string;
|
|
6
7
|
title?: string;
|
|
7
8
|
description?: string;
|
|
8
9
|
focusable?: boolean;
|
|
10
|
+
/**
|
|
11
|
+
* To let the SVG expand to fill its container, use "`auto`"
|
|
12
|
+
*/
|
|
9
13
|
width?: string | number;
|
|
14
|
+
/**
|
|
15
|
+
* To let the SVG expand to fill its container, use "`auto`"
|
|
16
|
+
*/
|
|
10
17
|
height?: string | number;
|
|
11
18
|
inline?: boolean;
|
|
12
19
|
color?: 'inherit' | 'primary' | 'secondary' | 'primary-inverse' | 'secondary-inverse' | 'success' | 'error' | 'alert' | 'warning' | 'brand' | 'auto';
|
|
13
|
-
|
|
20
|
+
/**
|
|
21
|
+
* provides a reference to the underlying html root element
|
|
22
|
+
*/
|
|
14
23
|
elementRef?: (element: Element | null) => void;
|
|
15
24
|
};
|
|
16
25
|
declare type PropKeys = keyof InlineSVGOwnProps;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"props.d.ts","sourceRoot":"","sources":["../../src/InlineSVG/props.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAG5C,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EACd,mBAAmB,EACpB,MAAM,2BAA2B,CAAA;AAClC,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAE1E,aAAK,iBAAiB,GAAG;IACvB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACxB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EACF,SAAS,GACT,SAAS,GACT,WAAW,GACX,iBAAiB,GACjB,mBAAmB,GACnB,SAAS,GACT,OAAO,GACP,OAAO,GACP,SAAS,GACT,OAAO,GACP,MAAM,CAAA;IACV
|
|
1
|
+
{"version":3,"file":"props.d.ts","sourceRoot":"","sources":["../../src/InlineSVG/props.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAG5C,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EACd,mBAAmB,EACpB,MAAM,2BAA2B,CAAA;AAClC,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAE1E,aAAK,iBAAiB,GAAG;IACvB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IACxB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EACF,SAAS,GACT,SAAS,GACT,WAAW,GACX,iBAAiB,GACjB,mBAAmB,GACnB,SAAS,GACT,OAAO,GACP,OAAO,GACP,SAAS,GACT,OAAO,GACP,MAAM,CAAA;IACV;;OAEG;IACH,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,KAAK,IAAI,CAAA;CAC/C,CAAA;AAED,aAAK,QAAQ,GAAG,MAAM,iBAAiB,CAAA;AAEvC,aAAK,eAAe,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAA;AAEhD,aAAK,cAAc,GAAG,iBAAiB,GACrC,cAAc,CAAC,cAAc,EAAE,cAAc,CAAC,GAC9C,mBAAmB,CAAC,iBAAiB,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAA;AAE1E,aAAK,cAAc,GAAG,cAAc,CAAC,WAAW,CAAC,CAAA;AAEjD,QAAA,MAAM,SAAS,EAAE,cAAc,CAAC,QAAQ,CAuBvC,CAAA;AAED,QAAA,MAAM,YAAY,EAAE,eAWnB,CAAA;AAED,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,cAAc,EAAE,CAAA;AACjE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,CAAA"}
|
package/types/SVGIcon/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/SVGIcon/index.tsx"],"names":[],"mappings":"AAwBA,eAAe;AACf,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/SVGIcon/index.tsx"],"names":[],"mappings":"AAwBA,eAAe;AACf,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAGhD,OAAO,EAAa,GAAG,EAAE,MAAM,sBAAsB,CAAA;AAQrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAE3C;;;;;GAKG;AACH,cAEM,OAAQ,SAAQ,SAAS,CAAC,YAAY,CAAC;IAC3C,MAAM,CAAC,QAAQ,CAAC,WAAW,aAAY;IAEvC,MAAM,CAAC,YAAY,0GAAe;IAClC,MAAM,CAAC,SAAS,oKAAY;IAE5B,MAAM,CAAC,YAAY;;;MAGlB;IAED,GAAG,EAAE,aAAa,GAAG,IAAI,CAAO;IAEhC,SAAS,OAAQ,OAAO,GAAG,IAAI,UAQ9B;IAED,iBAAiB;IAIjB,kBAAkB;IAIlB,MAAM;CA2BP;AAED,eAAe,OAAO,CAAA;AACtB,OAAO,EAAE,OAAO,EAAE,CAAA"}
|
package/types/SVGIcon/props.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import type { SVGAttributes } from 'react';
|
|
1
2
|
import type { InlineSVGTheme, OtherHTMLAttributes, PropValidators, SVGIconTheme } from '@instructure/shared-types';
|
|
2
3
|
import type { WithStyleProps, ComponentStyle } from '@instructure/emotion';
|
|
3
4
|
import type { InlineSVGOwnProps } from '../InlineSVG/props';
|
|
4
|
-
import { SVGAttributes } from 'react';
|
|
5
5
|
declare type SVGIconOwnProps = InlineSVGOwnProps & {
|
|
6
6
|
rotate?: '0' | '90' | '180' | '270';
|
|
7
7
|
size?: 'x-small' | 'small' | 'medium' | 'large' | 'x-large';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"props.d.ts","sourceRoot":"","sources":["../../src/SVGIcon/props.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EACV,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,YAAY,EACb,MAAM,2BAA2B,CAAA;AAClC,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAE1E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"props.d.ts","sourceRoot":"","sources":["../../src/SVGIcon/props.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,KAAK,EACV,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,YAAY,EACb,MAAM,2BAA2B,CAAA;AAClC,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAE1E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAE3D,aAAK,eAAe,GAAG,iBAAiB,GAAG;IACzC,MAAM,CAAC,EAAE,GAAG,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,CAAA;IACnC,IAAI,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAA;IAC3D,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB,CAAA;AAED,aAAK,QAAQ,GAAG,MAAM,eAAe,CAAA;AAErC,aAAK,eAAe,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAA;AAEhD,aAAK,YAAY,GAAG,eAAe,GACjC,cAAc,CAAC,YAAY,GAAG,cAAc,EAAE,YAAY,CAAC,GAC3D,mBAAmB,CAAC,eAAe,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC,CAAA;AAEtE,aAAK,YAAY,GAAG,cAAc,CAAC,SAAS,CAAC,CAAA;AAE7C,QAAA,MAAM,SAAS,EAAE,cAAc,CAAC,QAAQ,CAMvC,CAAA;AAED,QAAA,MAAM,YAAY,EAAE,eAcnB,CAAA;AAED,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,CAAA;AAC1C,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,CAAA"}
|
package/LICENSE.md
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: The MIT License (MIT)
|
|
3
|
-
category: Getting Started
|
|
4
|
-
order: 9
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# The MIT License (MIT)
|
|
8
|
-
|
|
9
|
-
Copyright (c) 2015 Instructure, Inc.
|
|
10
|
-
|
|
11
|
-
**Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
12
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
13
|
-
in the Software without restriction, including without limitation the rights
|
|
14
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
15
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
16
|
-
furnished to do so, subject to the following conditions.**
|
|
17
|
-
|
|
18
|
-
The above copyright notice and this permission notice shall be included in all
|
|
19
|
-
copies or substantial portions of the Software.
|
|
20
|
-
|
|
21
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
22
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
23
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
24
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
25
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
26
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
27
|
-
SOFTWARE.
|