@itwin/components-react 3.2.0-dev.14 → 3.2.0-dev.15
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/lib/cjs/components-react/common/ImageRenderer.d.ts.map +1 -1
- package/lib/cjs/components-react/common/ImageRenderer.js +2 -1
- package/lib/cjs/components-react/common/ImageRenderer.js.map +1 -1
- package/lib/esm/components-react/common/ImageRenderer.d.ts.map +1 -1
- package/lib/esm/components-react/common/ImageRenderer.js +4 -3
- package/lib/esm/components-react/common/ImageRenderer.js.map +1 -1
- package/package.json +11 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImageRenderer.d.ts","sourceRoot":"","sources":["../../../../src/components-react/common/ImageRenderer.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAAE,KAAK,EAAmD,MAAM,gBAAgB,CAAC;AAExF;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,WAAW;IAWnB,8BAA8B;IAC9B,OAAO,CAAC,YAAY;IAMpB,iCAAiC;IACjC,OAAO,CAAC,SAAS;
|
|
1
|
+
{"version":3,"file":"ImageRenderer.d.ts","sourceRoot":"","sources":["../../../../src/components-react/common/ImageRenderer.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAAE,KAAK,EAAmD,MAAM,gBAAgB,CAAC;AAExF;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,WAAW;IAWnB,8BAA8B;IAC9B,OAAO,CAAC,YAAY;IAMpB,iCAAiC;IACjC,OAAO,CAAC,SAAS;IAOjB,+BAA+B;IAC/B,OAAO,CAAC,SAAS;IAIjB,sCAAsC;IACtC,OAAO,CAAC,cAAc;IAItB,sDAAsD;IACtD,OAAO,CAAC,0BAA0B;IAIlC;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAc/B;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAKzB,yDAAyD;IAClD,MAAM,CAAC,WAAW,EAAE,KAAK,GAAG,KAAK,CAAC,SAAS;CAuBnD"}
|
|
@@ -52,8 +52,9 @@ class ImageRenderer {
|
|
|
52
52
|
}
|
|
53
53
|
/** Render svg string into JSX */
|
|
54
54
|
renderSvg(svg) {
|
|
55
|
+
const iconSpec = appui_abstract_1.IconSpecUtilities.createWebComponentIconSpec(svg);
|
|
55
56
|
return (React.createElement("div", null,
|
|
56
|
-
React.createElement(core_react_1.
|
|
57
|
+
React.createElement(core_react_1.Icon, { iconSpec: iconSpec })));
|
|
57
58
|
}
|
|
58
59
|
/** Render image from an url */
|
|
59
60
|
renderUrl(url) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImageRenderer.js","sourceRoot":"","sources":["../../../../src/components-react/common/ImageRenderer.tsx"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;;;;;;;;;;;;;;;;;;;;AAEH,6CAA+B;AAC/B,
|
|
1
|
+
{"version":3,"file":"ImageRenderer.js","sourceRoot":"","sources":["../../../../src/components-react/common/ImageRenderer.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Common\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport { IconSpecUtilities, UiError } from \"@itwin/appui-abstract\";\r\nimport { Icon, WebFontIcon, WebFontIconProps } from \"@itwin/core-react\";\r\nimport { UiComponents } from \"../UiComponents\";\r\nimport { Image, ImageFileFormat, LoadedBinaryImage, LoadedImage } from \"./IImageLoader\";\r\n\r\n/** A class that renders images from data provided by an image loader\r\n * @internal\r\n */\r\nexport class ImageRenderer {\r\n private hexToBase64(hexstring: string) {\r\n const match = hexstring.match(/\\w{2}/g);\r\n // istanbul ignore next\r\n if (!match)\r\n return \"\";\r\n\r\n return btoa(match.map((a) => { // eslint-disable-line deprecation/deprecation\r\n return String.fromCharCode(parseInt(a, 16));\r\n }).join(\"\"));\r\n }\r\n\r\n /** Render raw binary image */\r\n private renderBinary(data: string, format: ImageFileFormat) {\r\n // Convert binary to base64\r\n const dataAsBase64 = this.hexToBase64(data);\r\n return (<img src={`data:image/${format};base64,${dataAsBase64}`} alt=\"\" />);\r\n }\r\n\r\n /** Render svg string into JSX */\r\n private renderSvg(svg: string) {\r\n const iconSpec = IconSpecUtilities.createWebComponentIconSpec(svg);\r\n return (\r\n <div><Icon iconSpec={iconSpec} /></div>\r\n );\r\n }\r\n\r\n /** Render image from an url */\r\n private renderUrl(url: string) {\r\n return (<img src={url} alt=\"\" />);\r\n }\r\n\r\n /** Render image as core-react icon */\r\n private renderCoreIcon(iconName: string) {\r\n return (<WebFontIcon iconName={iconName} />);\r\n }\r\n\r\n /** Replaces the escaped instances of \"\\:\" with \":\" */\r\n private normalizeEscapedIconString(escapedIconString: string) {\r\n return escapedIconString.replace(/\\\\:/g, \":\");\r\n }\r\n\r\n /**\r\n * Extract class and name from icon name, if the name follows format \"{className}:{fontName}\".\r\n * className and fontName can be escaped using \\ if : is needed.\r\n */\r\n private extractIconClassAndName(iconName: string): Pick<WebFontIconProps, \"iconClassName\" | \"iconName\"> {\r\n const matches = iconName.match(/(\\\\.|[^:])+/g);\r\n if (!matches || matches.length !== 2)\r\n return {\r\n iconClassName: undefined,\r\n iconName,\r\n };\r\n\r\n return {\r\n iconClassName: this.normalizeEscapedIconString(matches[0]),\r\n iconName: this.normalizeEscapedIconString(matches[1]),\r\n };\r\n }\r\n\r\n /**\r\n * Render image as provided webfont icon.\r\n * Defaults to core-react icon if iconName does not contain className.\r\n */\r\n private renderWebfontIcon(iconName: string) {\r\n const iconInfo = this.extractIconClassAndName(iconName);\r\n return (<WebFontIcon {...iconInfo} />);\r\n }\r\n\r\n /** Render image from data provided by an image loader */\r\n public render(loadedImage: Image): React.ReactNode {\r\n switch (loadedImage.sourceType) {\r\n case \"binary\":\r\n const image = loadedImage as LoadedBinaryImage;\r\n return this.renderBinary(image.value, image.fileFormat);\r\n\r\n case \"url\":\r\n return this.renderUrl((loadedImage as LoadedImage).value);\r\n\r\n case \"svg\":\r\n return this.renderSvg((loadedImage as LoadedImage).value);\r\n\r\n case \"core-icon\":\r\n return this.renderCoreIcon((loadedImage as LoadedImage).value);\r\n\r\n case \"webfont-icon\":\r\n return this.renderWebfontIcon((loadedImage as LoadedImage).value);\r\n\r\n default:\r\n const unhandledSourceType: never = loadedImage.sourceType; // Compile time check that all cases are handled\r\n throw new UiError(UiComponents.loggerCategory(this), `Can't handle sourceType: \"${unhandledSourceType}\"`);\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImageRenderer.d.ts","sourceRoot":"","sources":["../../../../src/components-react/common/ImageRenderer.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAAE,KAAK,EAAmD,MAAM,gBAAgB,CAAC;AAExF;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,WAAW;IAWnB,8BAA8B;IAC9B,OAAO,CAAC,YAAY;IAMpB,iCAAiC;IACjC,OAAO,CAAC,SAAS;
|
|
1
|
+
{"version":3,"file":"ImageRenderer.d.ts","sourceRoot":"","sources":["../../../../src/components-react/common/ImageRenderer.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,EAAE,KAAK,EAAmD,MAAM,gBAAgB,CAAC;AAExF;;GAEG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,WAAW;IAWnB,8BAA8B;IAC9B,OAAO,CAAC,YAAY;IAMpB,iCAAiC;IACjC,OAAO,CAAC,SAAS;IAOjB,+BAA+B;IAC/B,OAAO,CAAC,SAAS;IAIjB,sCAAsC;IACtC,OAAO,CAAC,cAAc;IAItB,sDAAsD;IACtD,OAAO,CAAC,0BAA0B;IAIlC;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAc/B;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAKzB,yDAAyD;IAClD,MAAM,CAAC,WAAW,EAAE,KAAK,GAAG,KAAK,CAAC,SAAS;CAuBnD"}
|
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
* @module Common
|
|
7
7
|
*/
|
|
8
8
|
import * as React from "react";
|
|
9
|
-
import { UiError } from "@itwin/appui-abstract";
|
|
10
|
-
import {
|
|
9
|
+
import { IconSpecUtilities, UiError } from "@itwin/appui-abstract";
|
|
10
|
+
import { Icon, WebFontIcon } from "@itwin/core-react";
|
|
11
11
|
import { UiComponents } from "../UiComponents";
|
|
12
12
|
/** A class that renders images from data provided by an image loader
|
|
13
13
|
* @internal
|
|
@@ -30,8 +30,9 @@ export class ImageRenderer {
|
|
|
30
30
|
}
|
|
31
31
|
/** Render svg string into JSX */
|
|
32
32
|
renderSvg(svg) {
|
|
33
|
+
const iconSpec = IconSpecUtilities.createWebComponentIconSpec(svg);
|
|
33
34
|
return (React.createElement("div", null,
|
|
34
|
-
React.createElement(
|
|
35
|
+
React.createElement(Icon, { iconSpec: iconSpec })));
|
|
35
36
|
}
|
|
36
37
|
/** Render image from an url */
|
|
37
38
|
renderUrl(url) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ImageRenderer.js","sourceRoot":"","sources":["../../../../src/components-react/common/ImageRenderer.tsx"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"ImageRenderer.js","sourceRoot":"","sources":["../../../../src/components-react/common/ImageRenderer.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Common\r\n */\r\n\r\nimport * as React from \"react\";\r\nimport { IconSpecUtilities, UiError } from \"@itwin/appui-abstract\";\r\nimport { Icon, WebFontIcon, WebFontIconProps } from \"@itwin/core-react\";\r\nimport { UiComponents } from \"../UiComponents\";\r\nimport { Image, ImageFileFormat, LoadedBinaryImage, LoadedImage } from \"./IImageLoader\";\r\n\r\n/** A class that renders images from data provided by an image loader\r\n * @internal\r\n */\r\nexport class ImageRenderer {\r\n private hexToBase64(hexstring: string) {\r\n const match = hexstring.match(/\\w{2}/g);\r\n // istanbul ignore next\r\n if (!match)\r\n return \"\";\r\n\r\n return btoa(match.map((a) => { // eslint-disable-line deprecation/deprecation\r\n return String.fromCharCode(parseInt(a, 16));\r\n }).join(\"\"));\r\n }\r\n\r\n /** Render raw binary image */\r\n private renderBinary(data: string, format: ImageFileFormat) {\r\n // Convert binary to base64\r\n const dataAsBase64 = this.hexToBase64(data);\r\n return (<img src={`data:image/${format};base64,${dataAsBase64}`} alt=\"\" />);\r\n }\r\n\r\n /** Render svg string into JSX */\r\n private renderSvg(svg: string) {\r\n const iconSpec = IconSpecUtilities.createWebComponentIconSpec(svg);\r\n return (\r\n <div><Icon iconSpec={iconSpec} /></div>\r\n );\r\n }\r\n\r\n /** Render image from an url */\r\n private renderUrl(url: string) {\r\n return (<img src={url} alt=\"\" />);\r\n }\r\n\r\n /** Render image as core-react icon */\r\n private renderCoreIcon(iconName: string) {\r\n return (<WebFontIcon iconName={iconName} />);\r\n }\r\n\r\n /** Replaces the escaped instances of \"\\:\" with \":\" */\r\n private normalizeEscapedIconString(escapedIconString: string) {\r\n return escapedIconString.replace(/\\\\:/g, \":\");\r\n }\r\n\r\n /**\r\n * Extract class and name from icon name, if the name follows format \"{className}:{fontName}\".\r\n * className and fontName can be escaped using \\ if : is needed.\r\n */\r\n private extractIconClassAndName(iconName: string): Pick<WebFontIconProps, \"iconClassName\" | \"iconName\"> {\r\n const matches = iconName.match(/(\\\\.|[^:])+/g);\r\n if (!matches || matches.length !== 2)\r\n return {\r\n iconClassName: undefined,\r\n iconName,\r\n };\r\n\r\n return {\r\n iconClassName: this.normalizeEscapedIconString(matches[0]),\r\n iconName: this.normalizeEscapedIconString(matches[1]),\r\n };\r\n }\r\n\r\n /**\r\n * Render image as provided webfont icon.\r\n * Defaults to core-react icon if iconName does not contain className.\r\n */\r\n private renderWebfontIcon(iconName: string) {\r\n const iconInfo = this.extractIconClassAndName(iconName);\r\n return (<WebFontIcon {...iconInfo} />);\r\n }\r\n\r\n /** Render image from data provided by an image loader */\r\n public render(loadedImage: Image): React.ReactNode {\r\n switch (loadedImage.sourceType) {\r\n case \"binary\":\r\n const image = loadedImage as LoadedBinaryImage;\r\n return this.renderBinary(image.value, image.fileFormat);\r\n\r\n case \"url\":\r\n return this.renderUrl((loadedImage as LoadedImage).value);\r\n\r\n case \"svg\":\r\n return this.renderSvg((loadedImage as LoadedImage).value);\r\n\r\n case \"core-icon\":\r\n return this.renderCoreIcon((loadedImage as LoadedImage).value);\r\n\r\n case \"webfont-icon\":\r\n return this.renderWebfontIcon((loadedImage as LoadedImage).value);\r\n\r\n default:\r\n const unhandledSourceType: never = loadedImage.sourceType; // Compile time check that all cases are handled\r\n throw new UiError(UiComponents.loggerCategory(this), `Can't handle sourceType: \"${unhandledSourceType}\"`);\r\n }\r\n }\r\n}\r\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@itwin/components-react",
|
|
3
|
-
"version": "3.2.0-dev.
|
|
3
|
+
"version": "3.2.0-dev.15",
|
|
4
4
|
"description": "iTwin.js UI complex components",
|
|
5
5
|
"main": "lib/cjs/components-react.js",
|
|
6
6
|
"module": "lib/esm/components-react.js",
|
|
@@ -21,9 +21,9 @@
|
|
|
21
21
|
"url": "http://www.bentley.com"
|
|
22
22
|
},
|
|
23
23
|
"peerDependencies": {
|
|
24
|
-
"@itwin/appui-abstract": "^3.2.0-dev.
|
|
25
|
-
"@itwin/core-bentley": "^3.2.0-dev.
|
|
26
|
-
"@itwin/core-react": "^3.2.0-dev.
|
|
24
|
+
"@itwin/appui-abstract": "^3.2.0-dev.15",
|
|
25
|
+
"@itwin/core-bentley": "^3.2.0-dev.15",
|
|
26
|
+
"@itwin/core-react": "^3.2.0-dev.15",
|
|
27
27
|
"react": "^17.0.0",
|
|
28
28
|
"react-dom": "^17.0.0"
|
|
29
29
|
},
|
|
@@ -32,13 +32,13 @@
|
|
|
32
32
|
"NOTE: All tools used by scripts in this package must be listed as devDependencies"
|
|
33
33
|
],
|
|
34
34
|
"devDependencies": {
|
|
35
|
-
"@itwin/appui-abstract": "3.2.0-dev.
|
|
36
|
-
"@itwin/build-tools": "3.2.0-dev.
|
|
37
|
-
"@itwin/core-bentley": "3.2.0-dev.
|
|
38
|
-
"@itwin/core-common": "3.2.0-dev.
|
|
39
|
-
"@itwin/core-i18n": "3.2.0-dev.
|
|
40
|
-
"@itwin/core-react": "3.2.0-dev.
|
|
41
|
-
"@itwin/eslint-plugin": "3.2.0-dev.
|
|
35
|
+
"@itwin/appui-abstract": "3.2.0-dev.15",
|
|
36
|
+
"@itwin/build-tools": "3.2.0-dev.15",
|
|
37
|
+
"@itwin/core-bentley": "3.2.0-dev.15",
|
|
38
|
+
"@itwin/core-common": "3.2.0-dev.15",
|
|
39
|
+
"@itwin/core-i18n": "3.2.0-dev.15",
|
|
40
|
+
"@itwin/core-react": "3.2.0-dev.15",
|
|
41
|
+
"@itwin/eslint-plugin": "3.2.0-dev.15",
|
|
42
42
|
"@testing-library/react": "^12.0.0",
|
|
43
43
|
"@testing-library/react-hooks": "^7.0.2",
|
|
44
44
|
"@testing-library/user-event": "^13.2.1",
|