Compare commits
104 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a1ea61688e | ||
|
|
a3b0e3607f | ||
|
|
c802f71617 | ||
|
|
525ace3f52 | ||
|
|
42f1b3a6c3 | ||
|
|
5ce56670d1 | ||
|
|
414392e69b | ||
|
|
ae5b64a75f | ||
|
|
f2077dcab2 | ||
|
|
75d03bb15a | ||
|
|
269ec7adb7 | ||
|
|
03e6974c25 | ||
|
|
a31c524878 | ||
|
|
a057f0c279 | ||
|
|
06dcc3bc5b | ||
|
|
fc3df455ef | ||
|
|
121715231d | ||
|
|
a35c1f98e8 | ||
|
|
fbaf440766 | ||
|
|
813c589752 | ||
|
|
806ae4fe42 | ||
|
|
75507c5fa7 | ||
|
|
d1c265130e | ||
|
|
0eb4663442 | ||
|
|
9e134ff95e | ||
|
|
c09d58bba1 | ||
|
|
fdc2b5011b | ||
|
|
420ad06a7e | ||
|
|
28988479c5 | ||
|
|
700b04e2ec | ||
|
|
b092fe8c6d | ||
|
|
b25f6e46d8 | ||
|
|
62e934dba7 | ||
|
|
cb073d755d | ||
|
|
c9cd6898fe | ||
|
|
106f2aac72 | ||
|
|
16dbecf0d2 | ||
|
|
dc023fe2c6 | ||
|
|
6c2d03a6c5 | ||
|
|
e4787f1b25 | ||
|
|
779fedd4ae | ||
|
|
08d71f0675 | ||
|
|
e598c7bb42 | ||
|
|
fb360420e5 | ||
|
|
2184bb5adc | ||
|
|
854e812ef3 | ||
|
|
cc17aa3fc3 | ||
|
|
d57a700d40 | ||
|
|
37c398b1a7 | ||
|
|
2f27f2bac9 | ||
|
|
090218d0b9 | ||
|
|
4799a69823 | ||
|
|
6548982bb5 | ||
|
|
d1fe833d0f | ||
|
|
60c6168307 | ||
|
|
d0b418f4c8 | ||
|
|
bce751eea1 | ||
|
|
0029165ce2 | ||
|
|
c4be7219ae | ||
|
|
4755cd9f64 | ||
|
|
2f7fd73daf | ||
|
|
99337bebd4 | ||
|
|
2331d7c92b | ||
|
|
ece28e79b4 | ||
|
|
00538595c1 | ||
|
|
b36d8ca632 | ||
|
|
f4f815434f | ||
|
|
a1f64b8ac6 | ||
|
|
2cd4e2d45e | ||
|
|
f622b77400 | ||
|
|
5616acf038 | ||
|
|
ca64769cd1 | ||
|
|
edbb65f1a5 | ||
|
|
7b7cd6a32a | ||
|
|
278fb511f0 | ||
|
|
8604939a2f | ||
|
|
e6f5b3f161 | ||
|
|
e9fec39840 | ||
|
|
3d925abc02 | ||
|
|
84baf9e8cc | ||
|
|
f8e4de56d2 | ||
|
|
1205cebcf9 | ||
|
|
6e20fbf5ac | ||
|
|
3ee4e229c4 | ||
|
|
35d14ce9ed | ||
|
|
d4947f0408 | ||
|
|
a85419a50f | ||
|
|
44b7a41948 | ||
|
|
cd936ed89c | ||
|
|
184a6293cc | ||
|
|
6a279beff3 | ||
|
|
35c8535be1 | ||
|
|
7a04464686 | ||
|
|
ebac0cda56 | ||
|
|
6cef850c7b | ||
|
|
4ab2b3fea6 | ||
|
|
c03cfde36b | ||
|
|
be0c446248 | ||
|
|
8951958a18 | ||
|
|
0d8151f34c | ||
|
|
05fb9e5a74 | ||
|
|
6505e28bed | ||
|
|
c3f102304e | ||
|
|
c2eab17f1e |
1
.123current
Normal file
1
.123current
Normal file
@@ -0,0 +1 @@
|
||||
2.7.2
|
||||
@@ -23,4 +23,7 @@
|
||||
0.87.5
|
||||
0.87.6
|
||||
0.87.7
|
||||
0.89.2
|
||||
0.89.2
|
||||
0.89.3
|
||||
2.6.2
|
||||
2.7.2
|
||||
@@ -7,6 +7,7 @@ module.exports = {
|
||||
...base,
|
||||
ignorePatterns: [
|
||||
...base.ignorePatterns,
|
||||
'jest/**/*',
|
||||
'**/*.d.ts'
|
||||
],
|
||||
parserOptions: {
|
||||
|
||||
50
.github/issue_template.md
vendored
Normal file
50
.github/issue_template.md
vendored
Normal file
@@ -0,0 +1,50 @@
|
||||
<!--
|
||||
|
||||
For general support, howto, coding and bundling questions, please use the Substrate & Polkadot StackExchange at https://substrate.stackexchange.com/ and get other ecosystem developers involved. This issues in this repository are meant for the tracking of feature requests and bug reports.
|
||||
|
||||
While all issues are looked at non-bug and non-features would take quite a bit longer to get to and may yield less than satisfactory responses in this format.
|
||||
|
||||
Additionally, please ensure you have done a search on the existing and closed issues before logging a new request. This saves time on all sides.
|
||||
|
||||
-->
|
||||
|
||||
|
||||
* **I'm submitting a ...**
|
||||
|
||||
<!--- Try and classify your actual report -->
|
||||
|
||||
- [ ] Bug report
|
||||
- [ ] Feature request
|
||||
- [ ] Support request (please bear the comments above in mind)
|
||||
- [ ] Other
|
||||
|
||||
|
||||
* **What is the current behavior and expected behavior?**
|
||||
|
||||
<!--- If you're describing a bug, tell us what should happen -->
|
||||
<!--- If you're suggesting a change/improvement, tell us how it should work -->
|
||||
|
||||
|
||||
* **What is the motivation for changing the behavior?**
|
||||
|
||||
<!--- Not obligatory, but suggest a motivation for the request -->
|
||||
<!--- or ideas how to implement the addition or change -->
|
||||
|
||||
|
||||
* **Please tell us about your environment:**
|
||||
|
||||
<!--- Include as many relevant details about the environment you experienced the issue in -->
|
||||
<!--- Also snsure that you have tested against the latest stable releases if a bug -->
|
||||
|
||||
- Version:
|
||||
- Environment:
|
||||
|
||||
- [ ] Node.js
|
||||
- [ ] Browser
|
||||
- [ ] Other (limited support for other environments available)
|
||||
|
||||
- Language:
|
||||
|
||||
- [ ] JavaScript
|
||||
- [ ] TypeScript
|
||||
- [ ] Other
|
||||
16
.github/workflows/auto-approve.yml
vendored
Normal file
16
.github/workflows/auto-approve.yml
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
name: bot
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types: [labeled]
|
||||
|
||||
jobs:
|
||||
approve:
|
||||
if: "! startsWith(github.event.head_commit.message, '[CI Skip]') && (!github.event.pull_request || github.event.pull_request.head.repo.full_name == github.repository)"
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: jacogr/action-approve@master
|
||||
with:
|
||||
authors: jacogr
|
||||
labels: -auto
|
||||
token: ${{ secrets.GH_PAT_BOT }}
|
||||
16
.github/workflows/auto-merge.yml
vendored
Normal file
16
.github/workflows/auto-merge.yml
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
name: bot
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types: [labeled]
|
||||
|
||||
jobs:
|
||||
merge:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: jacogr/action-merge@master
|
||||
with:
|
||||
checks: build,lint,test
|
||||
labels: -auto
|
||||
strategy: squash
|
||||
token: ${{ secrets.GH_PAT_BOT }}
|
||||
2
.github/workflows/lock.yml
vendored
2
.github/workflows/lock.yml
vendored
@@ -7,6 +7,8 @@ on:
|
||||
jobs:
|
||||
lock:
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
YARN_ENABLE_SCRIPTS: false
|
||||
steps:
|
||||
- uses: dessant/lock-threads@v2
|
||||
with:
|
||||
|
||||
2
.github/workflows/pr-any.yml
vendored
2
.github/workflows/pr-any.yml
vendored
@@ -8,6 +8,8 @@ jobs:
|
||||
step: ['lint', 'test', 'build']
|
||||
name: ${{ matrix.step }}
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
YARN_ENABLE_SCRIPTS: false
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: ${{ matrix.step }}
|
||||
|
||||
11
.github/workflows/push-master.yml
vendored
11
.github/workflows/push-master.yml
vendored
@@ -12,17 +12,18 @@ jobs:
|
||||
step: ['build:release']
|
||||
name: ${{ matrix.step }}
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
YARN_ENABLE_SCRIPTS: false
|
||||
CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
|
||||
GH_PAT: ${{ secrets.GH_PAT }}
|
||||
GH_RELEASE_GITHUB_API_TOKEN: ${{ secrets.GH_PAT }}
|
||||
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
fetch-depth: 0
|
||||
token: ${{ secrets.GH_PAT }}
|
||||
- name: ${{ matrix.step }}
|
||||
env:
|
||||
CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }}
|
||||
GH_PAT: ${{ secrets.GH_PAT }}
|
||||
GH_RELEASE_GITHUB_API_TOKEN: ${{ secrets.GH_PAT }}
|
||||
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
||||
run: |
|
||||
yarn install --immutable | grep -v 'YN0013'
|
||||
yarn ${{ matrix.step }}
|
||||
|
||||
2
.github/workflows/semgrep.yml
vendored
2
.github/workflows/semgrep.yml
vendored
@@ -9,6 +9,8 @@ jobs:
|
||||
check:
|
||||
if: "! startsWith(github.event.head_commit.message, '[CI Skip]') && (!github.event.pull_request || github.event.pull_request.head.repo.full_name == github.repository)"
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
YARN_ENABLE_SCRIPTS: false
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: returntocorp/semgrep-action@v1
|
||||
|
||||
2
.github/workflows/stale.yml
vendored
2
.github/workflows/stale.yml
vendored
@@ -6,6 +6,8 @@ on:
|
||||
jobs:
|
||||
stale:
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
YARN_ENABLE_SCRIPTS: false
|
||||
steps:
|
||||
- uses: actions/stale@v3
|
||||
with:
|
||||
|
||||
2
.gitignore
vendored
2
.gitignore
vendored
@@ -1,4 +1,6 @@
|
||||
build/
|
||||
build-cjs/
|
||||
build-esm/
|
||||
build-docs/
|
||||
coverage/
|
||||
node_modules/
|
||||
|
||||
768
.yarn/releases/yarn-3.1.1.cjs
vendored
768
.yarn/releases/yarn-3.1.1.cjs
vendored
File diff suppressed because one or more lines are too long
785
.yarn/releases/yarn-3.2.0.cjs
vendored
Executable file
785
.yarn/releases/yarn-3.2.0.cjs
vendored
Executable file
File diff suppressed because one or more lines are too long
@@ -10,4 +10,4 @@ plugins:
|
||||
- path: .yarn/plugins/@yarnpkg/plugin-version.cjs
|
||||
spec: "@yarnpkg/plugin-version"
|
||||
|
||||
yarnPath: .yarn/releases/yarn-3.1.1.cjs
|
||||
yarnPath: .yarn/releases/yarn-3.2.0.cjs
|
||||
|
||||
132
CHANGELOG.md
132
CHANGELOG.md
@@ -1,5 +1,137 @@
|
||||
# CHANGELOG
|
||||
|
||||
## 2.7.2 Jul 4, 2022
|
||||
|
||||
Changes:
|
||||
|
||||
- Bump to `@polkadot/util-crypto` 9.7.2 (w/ `@polkadot/wasm-crypto` 6.2.2)
|
||||
|
||||
|
||||
## 2.7.1 Jul 1, 2022
|
||||
|
||||
Contributed:
|
||||
|
||||
- Remove extra div wrappers in `vue-identicon` (Thanks to https://github.com/dcolley)
|
||||
|
||||
Changes:
|
||||
|
||||
- Upgrade to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 9.7.1
|
||||
|
||||
|
||||
## 2.6.2 Jun 25, 2022
|
||||
|
||||
Changes:
|
||||
|
||||
- Upgrade to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 9.6.2
|
||||
|
||||
|
||||
## 2.6.1 Jun 23, 2022
|
||||
|
||||
Changes:
|
||||
|
||||
- Upgrade to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 9.6.1
|
||||
- Upgrade libs to latest stable versions
|
||||
|
||||
|
||||
## 2.5.1 Jun 19, 2022
|
||||
|
||||
Changes:
|
||||
|
||||
- Upgrade to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 9.5.1
|
||||
- Upgrade libs to latest stable versions
|
||||
|
||||
|
||||
## 2.4.1 Jun 4, 2022
|
||||
|
||||
Changes:
|
||||
|
||||
- Upgrade to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 9.4.1
|
||||
|
||||
|
||||
## 2.3.1 May 30, 2022
|
||||
|
||||
Changes:
|
||||
|
||||
- Upgrade to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 9.3.1
|
||||
|
||||
|
||||
## 2.2.1 May 14, 2022
|
||||
|
||||
Changes:
|
||||
|
||||
- Upgrade to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 9.2.1
|
||||
|
||||
|
||||
## 2.1.1 Apr 30, 2022
|
||||
|
||||
Changes:
|
||||
|
||||
- Upgrade to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 9.1.1
|
||||
- Adjust Jest test init for latest `@polkadot/dev`
|
||||
|
||||
|
||||
## 2.0.1 Apr 9, 2022
|
||||
|
||||
- **Breaking change** In this major version the commonjs outputs are moved to a sub-folder. Since the export map and main field in package.json does reflect this change, there should be no usage changes. However the packages here will all need to be on the same version for internal linkage.
|
||||
|
||||
Changes:
|
||||
|
||||
- Adjust Polkadot icon generation with lazy init
|
||||
- Output commonjs files under the `cjs/**` root
|
||||
- Upgrade to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 9.0.1
|
||||
|
||||
|
||||
## 1.4.1 Mar 27, 2022
|
||||
|
||||
Changes:
|
||||
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 8.7.1
|
||||
|
||||
|
||||
## 1.3.1 Mar 19, 2022
|
||||
|
||||
Changes:
|
||||
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 8.6.1
|
||||
- Additional workaround for Vite bundling
|
||||
|
||||
|
||||
## 1.2.1 Mar 12, 2022
|
||||
|
||||
Changes:
|
||||
|
||||
- Adjust for bundlers where `import.meta.url` is undefined
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 8.5.1
|
||||
|
||||
|
||||
## 1.1.1 Feb 14, 2022
|
||||
|
||||
Changes:
|
||||
|
||||
- Adjust ordering in state & timeouts for QR display
|
||||
- Add `timerDelay` property to QR display to control frame timeouts
|
||||
- Adjust webpack example config (cleanups, remove unneeded plugins)
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 8.4.1
|
||||
|
||||
|
||||
## 1.0.1 Jan 29, 2022
|
||||
|
||||
**Breaking change** The `Ledger` export from `@polkadot/ui-keyring` has been removed. For users of this class, import it directly from `@polkadot/hw-ledger`
|
||||
|
||||
**Important** This is the first release in the long-outstanding `1.x` range. Apart from the notable breaking changes, it has no functional differences to the previous versions.
|
||||
|
||||
Changes:
|
||||
|
||||
- Remove `Ledger` export in `ui-keyring`
|
||||
|
||||
|
||||
## 0.89.3 Jan 23, 2022
|
||||
|
||||
Changes:
|
||||
|
||||
- Updated to `@polkadot/{hw-ledger, keyring, util, util-crypto}` 8.3.3
|
||||
|
||||
|
||||
## 0.89.2 Jan 15, 2022
|
||||
|
||||
Changes:
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
573 Jaco 0.89.2 (#598)
|
||||
625 Jaco 2.7.2 (#660)
|
||||
7 YJ fix #224: decrease frame size to 1024, set multipart bool (#225)
|
||||
4 Antoine Estienne Refactor logic to better use prefix (#491)
|
||||
4 kwingram25 fix ff api url issue (#289)
|
||||
@@ -18,6 +18,7 @@
|
||||
1 Axel Chalon Simplify KeyringAddress interface (#144)
|
||||
1 Cameron Franz react-native example app port (#223)
|
||||
1 carumusan Add kulupu (#342)
|
||||
1 Derek Colley Remove redundant `div` wrappers in vue-identicon (#643)
|
||||
1 Harry Liu Update README.md (#166)
|
||||
1 Jake Naviasky Add Edgeware chain prefix to settings. (#317)
|
||||
1 Logan Saether Propose W3F node (#188)
|
||||
|
||||
@@ -30,5 +30,4 @@ Additionally some shared libraries, that is not dependent on any framework -
|
||||
In addition to the above packages, there are examples available for intergation of `ui-keyring`, `ui-settings` & the relevant `*-identicon` package. These are
|
||||
|
||||
- [example-react](packages/example-react) - start with `yarn example:react` and view on `http://localhost:8080`
|
||||
- [example-reactnative](packages/exampleReactNative) - start with `yarn example:rn:packager` to start the packager service and then either `yarn example:rn:android` or `yarn example:rn:ios` in another terminal
|
||||
- [example-vue](packages/example-vue) - start with `yarn example:vue` and view on `http://localhost:8080`
|
||||
|
||||
@@ -12,5 +12,6 @@ module.exports = {
|
||||
'\\.(css|less)$': 'empty/object',
|
||||
'\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': 'empty/object'
|
||||
},
|
||||
setupFilesAfterEnv: ['<rootDir>/jest/setupEnv.js'],
|
||||
testEnvironment: 'jsdom'
|
||||
};
|
||||
|
||||
10
jest/setupEnv.js
Normal file
10
jest/setupEnv.js
Normal file
@@ -0,0 +1,10 @@
|
||||
// Copyright 2017-2022 @polkadot/ui authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
const nodeCrypto = require('crypto');
|
||||
|
||||
window.crypto = {
|
||||
getRandomValues: function (buffer) {
|
||||
return nodeCrypto.randomFillSync(buffer);
|
||||
}
|
||||
};
|
||||
41
package.json
41
package.json
@@ -2,15 +2,15 @@
|
||||
"author": "Jaco Greeff <jacogr@gmail.com>",
|
||||
"bugs": "https://github.com/polkadot-js/ui/issues",
|
||||
"homepage": "https://github.com/polkadot-js/ui#readme",
|
||||
"license": "Apache-2",
|
||||
"packageManager": "yarn@3.0.1",
|
||||
"license": "Apache-2.0",
|
||||
"packageManager": "yarn@3.2.0",
|
||||
"private": true,
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/polkadot-js/ui.git"
|
||||
},
|
||||
"sideEffects": false,
|
||||
"version": "0.89.2",
|
||||
"version": "2.7.2",
|
||||
"workspaces": [
|
||||
"packages/*"
|
||||
],
|
||||
@@ -19,39 +19,34 @@
|
||||
"build:release": "polkadot-ci-ghact-build",
|
||||
"build:rollup": "polkadot-exec-rollup --config",
|
||||
"clean": "polkadot-dev-clean-build",
|
||||
"demo:identicon:react": "yarn build && webpack-serve --config packages/react-identicon/webpack.config.js --content packages/react-identicon --port 8080",
|
||||
"demo:identicon:vue": "yarn build && webpack-serve --config packages/vue-identicon/webpack.config.js --content packages/vue-identicon --port 8080",
|
||||
"example:react": "yarn build && cd packages/example-react && webpack --config webpack.config.js",
|
||||
"example:rn:android": "cd packages/exampleReactNative && yarn android",
|
||||
"example:rn:ios": "cd packages/exampleReactNative && cd ios && pod install && cd .. && yarn ios",
|
||||
"example:rn:packager": "yarn build && cd packages/exampleReactNative && yarn copy-workspace-packages && yarn start",
|
||||
"example:vue": "yarn build && cd packages/example-vue && webpack --config webpack.config.js",
|
||||
"example:react": "yarn build && cd packages/example-react && webpack --config webpack.config.cjs",
|
||||
"example:vue": "yarn build && cd packages/example-vue && webpack --config webpack.config.cjs",
|
||||
"lint": "polkadot-dev-run-lint",
|
||||
"postinstall": "polkadot-dev-yarn-only",
|
||||
"test": "polkadot-dev-run-test --coverage --runInBand",
|
||||
"test:one": "polkadot-dev-run-test"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.16.7",
|
||||
"@babel/runtime": "^7.16.7",
|
||||
"@polkadot/dev": "^0.65.37",
|
||||
"@polkadot/x-bundle": "^8.3.2",
|
||||
"@types/jest": "^27.4.0",
|
||||
"babel-loader": "^8.2.3",
|
||||
"@babel/core": "^7.18.6",
|
||||
"@babel/runtime": "^7.18.6",
|
||||
"@polkadot/dev": "^0.67.50",
|
||||
"@polkadot/x-bundle": "^9.7.2",
|
||||
"@types/jest": "^28.1.4",
|
||||
"babel-loader": "^8.2.5",
|
||||
"babel-plugin-transform-vue-template": "^0.4.2",
|
||||
"empty": "^0.10.1",
|
||||
"process": "^0.11.10",
|
||||
"react": "^17.0.2",
|
||||
"react-dom": "^17.0.2",
|
||||
"react-is": "^17.0.2",
|
||||
"react-native": "^0.66.4",
|
||||
"react": "^18.2.0",
|
||||
"react-dom": "^18.2.0",
|
||||
"react-is": "^18.2.0",
|
||||
"react-native": "^0.69.1",
|
||||
"stream-browserify": "^3.0.0",
|
||||
"vue-template-compiler": "^2.6.14",
|
||||
"webpack": "^5.66.0",
|
||||
"webpack-cli": "^4.9.1",
|
||||
"webpack": "^5.73.0",
|
||||
"webpack-cli": "^4.10.0",
|
||||
"webpack-serve": "^4.0.0"
|
||||
},
|
||||
"resolutions": {
|
||||
"typescript": "^4.5.3"
|
||||
"typescript": "^4.7.4"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,9 +14,9 @@
|
||||
"url": "https://github.com/polkadot-js/ui.git"
|
||||
},
|
||||
"sideEffects": false,
|
||||
"version": "0.89.2",
|
||||
"version": "2.7.2",
|
||||
"main": "index.js",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.16.7"
|
||||
"@babel/runtime": "^7.18.6"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,4 +3,4 @@
|
||||
|
||||
// Do not edit, auto-generated by @polkadot/dev
|
||||
|
||||
export const packageInfo = { name: '@polkadot/example-react', path: 'auto', type: 'auto', version: '0.89.2' };
|
||||
export const packageInfo = { name: '@polkadot/example-react', path: 'auto', type: 'auto', version: '2.7.2' };
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
|
||||
const path = require('path');
|
||||
const { WebpackPluginServe } = require('webpack-plugin-serve');
|
||||
const webpack = require('webpack');
|
||||
|
||||
module.exports = {
|
||||
context: __dirname,
|
||||
@@ -37,12 +36,6 @@ module.exports = {
|
||||
port: 8080,
|
||||
progress: false, // since we have hmr off, disable
|
||||
static: __dirname
|
||||
}),
|
||||
new webpack.ProvidePlugin({
|
||||
Buffer: ['buffer', 'Buffer']
|
||||
}),
|
||||
new webpack.ProvidePlugin({
|
||||
process: 'process/browser'
|
||||
})
|
||||
],
|
||||
resolve: {
|
||||
@@ -50,15 +43,11 @@ module.exports = {
|
||||
'@polkadot/react-identicon': path.resolve(__dirname, '../react-identicon/build'),
|
||||
'@polkadot/ui-keyring': path.resolve(__dirname, '../ui-keyring/build'),
|
||||
'@polkadot/ui-settings': path.resolve(__dirname, '../ui-settings/build'),
|
||||
'@polkadot/ui-shared': path.resolve(__dirname, '../ui-shared/build'),
|
||||
'process/browser': require.resolve('process/browser'),
|
||||
'react/jsx-runtime': require.resolve('react/jsx-runtime')
|
||||
'@polkadot/ui-shared': path.resolve(__dirname, '../ui-shared/build')
|
||||
},
|
||||
extensions: ['.js', '.ts', '.tsx'],
|
||||
fallback: {
|
||||
buffer: require.resolve('buffer'),
|
||||
stream: require.resolve('stream-browserify')
|
||||
}
|
||||
fallback: {}
|
||||
},
|
||||
target: 'web',
|
||||
watch: true
|
||||
};
|
||||
@@ -14,9 +14,9 @@
|
||||
"url": "https://github.com/polkadot-js/ui.git"
|
||||
},
|
||||
"sideEffects": false,
|
||||
"version": "0.89.2",
|
||||
"version": "2.7.2",
|
||||
"main": "index.js",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.16.7"
|
||||
"@babel/runtime": "^7.18.6"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,4 +3,4 @@
|
||||
|
||||
// Do not edit, auto-generated by @polkadot/dev
|
||||
|
||||
export const packageInfo = { name: '@polkadot/example-vue', path: 'auto', type: 'auto', version: '0.89.2' };
|
||||
export const packageInfo = { name: '@polkadot/example-vue', path: 'auto', type: 'auto', version: '2.7.2' };
|
||||
|
||||
@@ -2,9 +2,7 @@
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
const path = require('path');
|
||||
const VueLoaderPlugin = require('vue-loader/lib/plugin');
|
||||
const { WebpackPluginServe } = require('webpack-plugin-serve');
|
||||
const webpack = require('webpack');
|
||||
|
||||
module.exports = {
|
||||
context: __dirname,
|
||||
@@ -22,10 +20,6 @@ module.exports = {
|
||||
options: require('../../babel.config.cjs')
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
loader: 'vue-loader',
|
||||
test: /\.vue$/
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -42,13 +36,6 @@ module.exports = {
|
||||
port: 8080,
|
||||
progress: false, // since we have hmr off, disable
|
||||
static: __dirname
|
||||
}),
|
||||
new VueLoaderPlugin(),
|
||||
new webpack.ProvidePlugin({
|
||||
Buffer: ['buffer', 'Buffer']
|
||||
}),
|
||||
new webpack.ProvidePlugin({
|
||||
process: 'process/browser'
|
||||
})
|
||||
],
|
||||
resolve: {
|
||||
@@ -56,10 +43,10 @@ module.exports = {
|
||||
'@polkadot/ui-keyring': path.resolve(__dirname, '../ui-keyring/build'),
|
||||
'@polkadot/ui-settings': path.resolve(__dirname, '../ui-settings/build'),
|
||||
'@polkadot/ui-shared': path.resolve(__dirname, '../ui-shared/build'),
|
||||
'@polkadot/vue-identicon': path.resolve(__dirname, '../vue-identicon/build'),
|
||||
'process/browser': require.resolve('process/browser')
|
||||
'@polkadot/vue-identicon': path.resolve(__dirname, '../vue-identicon/build')
|
||||
},
|
||||
extensions: ['.js', '.ts', '.tsx']
|
||||
},
|
||||
target: 'web',
|
||||
watch: true
|
||||
};
|
||||
@@ -17,26 +17,26 @@
|
||||
"./detectPackage.cjs"
|
||||
],
|
||||
"type": "module",
|
||||
"version": "0.89.2",
|
||||
"version": "2.7.2",
|
||||
"main": "index.js",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.16.7",
|
||||
"@polkadot/keyring": "^8.3.2",
|
||||
"@polkadot/ui-settings": "0.89.2",
|
||||
"@polkadot/ui-shared": "0.89.2",
|
||||
"@polkadot/util": "^8.3.2",
|
||||
"@polkadot/util-crypto": "^8.3.2",
|
||||
"@babel/runtime": "^7.18.6",
|
||||
"@polkadot/keyring": "^9.7.2",
|
||||
"@polkadot/ui-settings": "2.7.2",
|
||||
"@polkadot/ui-shared": "2.7.2",
|
||||
"@polkadot/util": "^9.7.2",
|
||||
"@polkadot/util-crypto": "^9.7.2",
|
||||
"color": "^3.2.1",
|
||||
"ethereum-blockies-base64": "^1.0.2",
|
||||
"jdenticon": "3.1.1",
|
||||
"react-copy-to-clipboard": "^5.0.4",
|
||||
"styled-components": "^5.3.3"
|
||||
"react-copy-to-clipboard": "^5.1.0",
|
||||
"styled-components": "^5.3.5"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/react-copy-to-clipboard": "^5.0.2",
|
||||
"@types/react-dom": "^17.0.11",
|
||||
"@types/styled-components": "^5.1.20",
|
||||
"styled-components": "^5.3.3",
|
||||
"@types/react-dom": "^18.0.5",
|
||||
"@types/styled-components": "^5.1.25",
|
||||
"styled-components": "^5.3.5",
|
||||
"xmlserializer": "^0.6.1"
|
||||
},
|
||||
"peerDependencies": {
|
||||
|
||||
@@ -1,54 +0,0 @@
|
||||
// Copyright 2017-2022 @polkadot/react-identicon authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import React from 'react';
|
||||
import ReactDOM from 'react-dom';
|
||||
|
||||
import { encodeAddress, randomAsU8a } from '@polkadot/util-crypto';
|
||||
|
||||
import { Identicon } from '.';
|
||||
|
||||
const THEMES = ['beachball', 'polkadot', 'substrate'];
|
||||
|
||||
export default class Demo extends React.PureComponent {
|
||||
public override render (): React.ReactNode {
|
||||
const identities: string[] = [];
|
||||
|
||||
while (identities.length !== 50) {
|
||||
identities.push(
|
||||
encodeAddress(randomAsU8a(32))
|
||||
);
|
||||
}
|
||||
|
||||
return (
|
||||
<div>
|
||||
<div>
|
||||
{identities.map((value, index): React.ReactNode => (
|
||||
<Identicon
|
||||
key={value.toString()}
|
||||
theme={THEMES[index % THEMES.length] as 'empty'}
|
||||
value={value}
|
||||
/>
|
||||
))}
|
||||
</div>
|
||||
<div>
|
||||
{THEMES.map((theme): React.ReactNode => (
|
||||
<Identicon
|
||||
key={theme}
|
||||
theme={theme as 'empty'}
|
||||
value='5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY'
|
||||
/>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
const rootElement = document.getElementById('demo');
|
||||
|
||||
if (!rootElement) {
|
||||
throw new Error('Unable to find element with id \'demo\'');
|
||||
}
|
||||
|
||||
ReactDOM.render(<Demo />, rootElement);
|
||||
@@ -4,15 +4,18 @@
|
||||
import type { Props } from '../types';
|
||||
|
||||
import * as jdenticon from 'jdenticon';
|
||||
import React from 'react';
|
||||
import React, { useMemo } from 'react';
|
||||
|
||||
function Identicon ({ className = '', publicKey, size, style }: Props): React.ReactElement<Props> {
|
||||
const html = useMemo(
|
||||
() => ({ __html: jdenticon.toSvg(publicKey.substr(2), size) }),
|
||||
[publicKey, size]
|
||||
);
|
||||
|
||||
return (
|
||||
<div
|
||||
className={className}
|
||||
dangerouslySetInnerHTML={{
|
||||
__html: jdenticon.toSvg(publicKey.substr(2), size)
|
||||
}}
|
||||
dangerouslySetInnerHTML={html}
|
||||
style={style}
|
||||
/>
|
||||
);
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
import type { Circle } from '@polkadot/ui-shared/icons/types';
|
||||
import type { Props } from '../types';
|
||||
|
||||
import React from 'react';
|
||||
import React, { useMemo } from 'react';
|
||||
|
||||
import { polkadotIcon } from '@polkadot/ui-shared';
|
||||
|
||||
@@ -36,6 +36,11 @@ function renderCircle ({ cx, cy, fill, r }: Circle, key: number): React.ReactNod
|
||||
}
|
||||
|
||||
function Identicon ({ address, className = '', isAlternative = false, size, style }: Props): React.ReactElement<Props> {
|
||||
const circles = useMemo(
|
||||
() => polkadotIcon(address, { isAlternative }),
|
||||
[address, isAlternative]
|
||||
);
|
||||
|
||||
return (
|
||||
<svg
|
||||
className={className}
|
||||
@@ -46,7 +51,7 @@ function Identicon ({ address, className = '', isAlternative = false, size, styl
|
||||
viewBox='0 0 64 64'
|
||||
width={size}
|
||||
>
|
||||
{polkadotIcon(address, { isAlternative }).map(renderCircle)}
|
||||
{circles.map(renderCircle)}
|
||||
</svg>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -3,4 +3,4 @@
|
||||
|
||||
// Do not edit, auto-generated by @polkadot/dev
|
||||
|
||||
export const packageInfo = { name: '@polkadot/react-identicon', path: 'auto', type: 'auto', version: '0.89.2' };
|
||||
export const packageInfo = { name: '@polkadot/react-identicon', path: 'auto', type: 'auto', version: '2.7.2' };
|
||||
|
||||
@@ -1,45 +0,0 @@
|
||||
// Copyright 2017-2022 @polkadot/react-identicon authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
const path = require('path');
|
||||
const webpack = require('webpack');
|
||||
const ENV = process.env.NODE_ENV || 'development';
|
||||
const isProd = ENV === 'production';
|
||||
|
||||
module.exports = {
|
||||
context: __dirname,
|
||||
devtool: isProd ? 'source-map' : 'eval-cheap-source-map',
|
||||
entry: './src/Demo.tsx',
|
||||
mode: ENV,
|
||||
module: {
|
||||
rules: [
|
||||
{
|
||||
exclude: /(node_modules)/,
|
||||
test: /\.(js|ts|tsx)$/,
|
||||
use: [
|
||||
'babel-loader'
|
||||
]
|
||||
}
|
||||
]
|
||||
},
|
||||
output: {
|
||||
filename: './Demo.js',
|
||||
path: path.join(__dirname, 'build')
|
||||
},
|
||||
plugins: [
|
||||
new webpack.ProvidePlugin({
|
||||
Buffer: ['buffer', 'Buffer']
|
||||
}),
|
||||
new webpack.ProvidePlugin({
|
||||
process: 'process/browser'
|
||||
})
|
||||
],
|
||||
resolve: {
|
||||
alias: {
|
||||
'@polkadot/ui-settings': path.resolve(__dirname, '../ui-settings/build'),
|
||||
'@polkadot/ui-shared': path.resolve(__dirname, '../ui-shared/build'),
|
||||
'process/browser': require.resolve('process/browser')
|
||||
},
|
||||
extensions: ['.js', '.jsx', '.ts', '.tsx']
|
||||
}
|
||||
};
|
||||
@@ -17,20 +17,20 @@
|
||||
"./detectPackage.cjs"
|
||||
],
|
||||
"type": "module",
|
||||
"version": "0.89.2",
|
||||
"version": "2.7.2",
|
||||
"main": "index.js",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.16.7",
|
||||
"@polkadot/ui-settings": "0.89.2",
|
||||
"@polkadot/util": "^8.3.2",
|
||||
"@polkadot/util-crypto": "^8.3.2",
|
||||
"@babel/runtime": "^7.18.6",
|
||||
"@polkadot/ui-settings": "2.7.2",
|
||||
"@polkadot/util": "^9.7.2",
|
||||
"@polkadot/util-crypto": "^9.7.2",
|
||||
"qrcode-generator": "^1.4.4",
|
||||
"react-qr-reader": "^2.2.1",
|
||||
"styled-components": "^5.3.3"
|
||||
"styled-components": "^5.3.5"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/react-qr-reader": "^2.1.4",
|
||||
"@types/styled-components": "^5.1.20"
|
||||
"@types/styled-components": "^5.1.25"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@polkadot/util": "*",
|
||||
|
||||
@@ -15,6 +15,7 @@ interface Props {
|
||||
size?: string | number;
|
||||
skipEncoding?: boolean;
|
||||
style?: React.CSSProperties;
|
||||
timerDelay?: number;
|
||||
value: Uint8Array;
|
||||
}
|
||||
|
||||
@@ -30,7 +31,7 @@ interface TimerState {
|
||||
timerId: number | null;
|
||||
}
|
||||
|
||||
const FRAME_DELAY = 2500;
|
||||
const DEFAULT_FRAME_DELAY = 2750;
|
||||
const TIMER_INC = 500;
|
||||
|
||||
function getDataUrl (value: Uint8Array): string {
|
||||
@@ -44,9 +45,9 @@ function getDataUrl (value: Uint8Array): string {
|
||||
return qr.createDataURL(16, 0);
|
||||
}
|
||||
|
||||
function Display ({ className, size, skipEncoding, style, value }: Props): React.ReactElement<Props> | null {
|
||||
function Display ({ className, size, skipEncoding, style, timerDelay = DEFAULT_FRAME_DELAY, value }: Props): React.ReactElement<Props> | null {
|
||||
const [{ image }, setFrameState] = useState<FrameState>({ frameIdx: 0, frames: [], image: null, valueHash: null });
|
||||
const timerRef = useRef<TimerState>({ timerDelay: FRAME_DELAY, timerId: null });
|
||||
const timerRef = useRef<TimerState>({ timerDelay, timerId: null });
|
||||
|
||||
const containerStyle = useMemo(
|
||||
() => createImgSize(size),
|
||||
@@ -69,18 +70,21 @@ function Display ({ className, size, skipEncoding, style, value }: Props): React
|
||||
timerRef.current.timerDelay = timerRef.current.timerDelay + TIMER_INC;
|
||||
}
|
||||
|
||||
timerRef.current.timerId = setTimeout(nextFrame, timerRef.current.timerDelay);
|
||||
|
||||
// only encode the frames on demand, not above as part of the
|
||||
// state derivation - in the case of large payloads, this should
|
||||
// be slightly more responsive on initial load
|
||||
return objectSpread({}, state, {
|
||||
const newState = objectSpread<FrameState>({}, state, {
|
||||
frameIdx,
|
||||
image: getDataUrl(state.frames[frameIdx])
|
||||
});
|
||||
|
||||
// set the new timer last
|
||||
timerRef.current.timerId = setTimeout(nextFrame, timerRef.current.timerDelay);
|
||||
|
||||
return newState;
|
||||
});
|
||||
|
||||
timerRef.current.timerId = window.setTimeout(nextFrame, FRAME_DELAY);
|
||||
timerRef.current.timerId = window.setTimeout(nextFrame, timerRef.current.timerDelay);
|
||||
|
||||
return (): void => {
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
|
||||
@@ -12,9 +12,10 @@ interface Props {
|
||||
className?: string;
|
||||
size?: string | number;
|
||||
style?: React.CSSProperties;
|
||||
timerDelay?: number;
|
||||
}
|
||||
|
||||
function DisplayAddress ({ address, className, genesisHash, size, style }: Props): React.ReactElement<Props> | null {
|
||||
function DisplayAddress ({ address, className, genesisHash, size, style, timerDelay }: Props): React.ReactElement<Props> | null {
|
||||
const data = useMemo(
|
||||
() => createAddressPayload(address, genesisHash),
|
||||
[address, genesisHash]
|
||||
@@ -30,6 +31,7 @@ function DisplayAddress ({ address, className, genesisHash, size, style }: Props
|
||||
size={size}
|
||||
skipEncoding
|
||||
style={style}
|
||||
timerDelay={timerDelay}
|
||||
value={data}
|
||||
/>
|
||||
);
|
||||
|
||||
@@ -10,13 +10,15 @@ interface Props {
|
||||
address: string;
|
||||
className?: string;
|
||||
cmd: number;
|
||||
delay?: number;
|
||||
genesisHash: Uint8Array | string;
|
||||
payload: Uint8Array;
|
||||
size?: string | number;
|
||||
style?: React.CSSProperties;
|
||||
timerDelay?: number;
|
||||
}
|
||||
|
||||
function DisplayPayload ({ address, className, cmd, genesisHash, payload, size, style }: Props): React.ReactElement<Props> | null {
|
||||
function DisplayPayload ({ address, className, cmd, genesisHash, payload, size, style, timerDelay }: Props): React.ReactElement<Props> | null {
|
||||
const data = useMemo(
|
||||
() => createSignPayload(address, cmd, payload, genesisHash),
|
||||
[address, cmd, payload, genesisHash]
|
||||
@@ -31,6 +33,7 @@ function DisplayPayload ({ address, className, cmd, genesisHash, payload, size,
|
||||
className={className}
|
||||
size={size}
|
||||
style={style}
|
||||
timerDelay={timerDelay}
|
||||
value={data}
|
||||
/>
|
||||
);
|
||||
|
||||
@@ -3,4 +3,4 @@
|
||||
|
||||
// Do not edit, auto-generated by @polkadot/dev
|
||||
|
||||
export const packageInfo = { name: '@polkadot/react-qr', path: 'auto', type: 'auto', version: '0.89.2' };
|
||||
export const packageInfo = { name: '@polkadot/react-qr', path: 'auto', type: 'auto', version: '2.7.2' };
|
||||
|
||||
@@ -17,17 +17,17 @@
|
||||
"./detectPackage.cjs"
|
||||
],
|
||||
"type": "module",
|
||||
"version": "0.89.2",
|
||||
"version": "2.7.2",
|
||||
"main": "index.js",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.16.7",
|
||||
"@polkadot/ui-shared": "0.89.2",
|
||||
"@polkadot/util": "^8.3.2",
|
||||
"@polkadot/util-crypto": "^8.3.2",
|
||||
"react-native-svg": "^12.2.0"
|
||||
"@babel/runtime": "^7.18.6",
|
||||
"@polkadot/ui-shared": "2.7.2",
|
||||
"@polkadot/util": "^9.7.2",
|
||||
"@polkadot/util-crypto": "^9.7.2",
|
||||
"react-native-svg": "^12.3.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/react-native": "^0.66.12"
|
||||
"@types/react-native": "^0.69.1"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@polkadot/util": "*",
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
import type { Circle as CircleType } from '@polkadot/ui-shared/icons/types';
|
||||
import type { Props } from '../types';
|
||||
|
||||
import React from 'react';
|
||||
import React, { useMemo } from 'react';
|
||||
import { View } from 'react-native';
|
||||
import Svg, { Circle as SvgCircle } from 'react-native-svg';
|
||||
|
||||
@@ -23,6 +23,11 @@ function renderCircle ({ cx, cy, fill, r }: CircleType, key: number): React.Reac
|
||||
}
|
||||
|
||||
export default function Identicon ({ address, isAlternative = false, size }: Props): React.ReactElement<Props> {
|
||||
const circles = useMemo(
|
||||
() => polkadotIcon(address, { isAlternative }),
|
||||
[address, isAlternative]
|
||||
);
|
||||
|
||||
return (
|
||||
<View>
|
||||
<Svg
|
||||
@@ -31,7 +36,7 @@ export default function Identicon ({ address, isAlternative = false, size }: Pro
|
||||
viewBox='0 0 64 64'
|
||||
width={size}
|
||||
>
|
||||
{polkadotIcon(address, { isAlternative }).map(renderCircle)}
|
||||
{circles.map(renderCircle)}
|
||||
</Svg>
|
||||
</View>
|
||||
);
|
||||
|
||||
@@ -3,4 +3,4 @@
|
||||
|
||||
// Do not edit, auto-generated by @polkadot/dev
|
||||
|
||||
export const packageInfo = { name: '@polkadot/reactnative-identicon', path: 'auto', type: 'auto', version: '0.89.2' };
|
||||
export const packageInfo = { name: '@polkadot/reactnative-identicon', path: 'auto', type: 'auto', version: '2.7.2' };
|
||||
|
||||
@@ -13,10 +13,10 @@
|
||||
"url": "https://github.com/polkadot-js/ui.git"
|
||||
},
|
||||
"sideEffects": false,
|
||||
"version": "0.89.2",
|
||||
"version": "2.7.2",
|
||||
"main": "index.js",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.16.7",
|
||||
"@polkadot/util": "^8.3.2"
|
||||
"@babel/runtime": "^7.18.6",
|
||||
"@polkadot/util": "^9.7.2"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,4 +3,4 @@
|
||||
|
||||
// Do not edit, auto-generated by @polkadot/dev
|
||||
|
||||
export const packageInfo = { name: '@polkadot/ui-assets', path: 'auto', type: 'auto', version: '0.89.2' };
|
||||
export const packageInfo = { name: '@polkadot/ui-assets', path: 'auto', type: 'auto', version: '2.7.2' };
|
||||
|
||||
@@ -16,17 +16,16 @@
|
||||
"./detectPackage.cjs"
|
||||
],
|
||||
"type": "module",
|
||||
"version": "0.89.2",
|
||||
"version": "2.7.2",
|
||||
"main": "index.js",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.16.7",
|
||||
"@polkadot/hw-ledger": "^8.3.2",
|
||||
"@polkadot/keyring": "^8.3.2",
|
||||
"@polkadot/ui-settings": "0.89.2",
|
||||
"@polkadot/util": "^8.3.2",
|
||||
"@polkadot/util-crypto": "^8.3.2",
|
||||
"@babel/runtime": "^7.18.6",
|
||||
"@polkadot/keyring": "^9.7.2",
|
||||
"@polkadot/ui-settings": "2.7.2",
|
||||
"@polkadot/util": "^9.7.2",
|
||||
"@polkadot/util-crypto": "^9.7.2",
|
||||
"mkdirp": "^1.0.4",
|
||||
"rxjs": "^7.5.2",
|
||||
"rxjs": "^7.5.5",
|
||||
"store": "^2.0.12"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
|
||||
import { Keyring } from './Keyring';
|
||||
|
||||
export { Ledger } from '@polkadot/hw-ledger';
|
||||
export { packageInfo } from './packageInfo';
|
||||
|
||||
const keyring = new Keyring();
|
||||
|
||||
@@ -3,4 +3,4 @@
|
||||
|
||||
// Do not edit, auto-generated by @polkadot/dev
|
||||
|
||||
export const packageInfo = { name: '@polkadot/ui-keyring', path: 'auto', type: 'auto', version: '0.89.2' };
|
||||
export const packageInfo = { name: '@polkadot/ui-keyring', path: 'auto', type: 'auto', version: '2.7.2' };
|
||||
|
||||
@@ -6,24 +6,23 @@ import type { KeyringJson, KeyringStore } from '../types';
|
||||
import store from 'store';
|
||||
|
||||
export class BrowserStore implements KeyringStore {
|
||||
public all (cb: (key: string, value: KeyringJson) => void): void {
|
||||
public all (fn: (key: string, value: KeyringJson) => void): void {
|
||||
store.each((value: KeyringJson, key: string): void => {
|
||||
cb(key, value);
|
||||
fn(key, value);
|
||||
});
|
||||
}
|
||||
|
||||
public get (key: string, cb: (value: KeyringJson) => void): void {
|
||||
// eslint-disable-next-line node/no-callback-literal
|
||||
cb(store.get(key) as KeyringJson);
|
||||
public get (key: string, fn: (value: KeyringJson) => void): void {
|
||||
fn(store.get(key) as KeyringJson);
|
||||
}
|
||||
|
||||
public remove (key: string, cb?: () => void): void {
|
||||
public remove (key: string, fn?: () => void): void {
|
||||
store.remove(key);
|
||||
cb && cb();
|
||||
fn && fn();
|
||||
}
|
||||
|
||||
public set (key: string, value: KeyringJson, cb?: () => void): void {
|
||||
public set (key: string, value: KeyringJson, fn?: () => void): void {
|
||||
store.set(key, value);
|
||||
cb && cb();
|
||||
fn && fn();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,33 +21,33 @@ export class FileStore implements KeyringStore {
|
||||
this.#path = path;
|
||||
}
|
||||
|
||||
public all (cb: (key: string, value: KeyringJson) => void): void {
|
||||
public all (fn: (key: string, value: KeyringJson) => void): void {
|
||||
fs
|
||||
.readdirSync(this.#path)
|
||||
.filter((key): boolean => !['.', '..', '.DS_Store'].includes(key))
|
||||
.forEach((key): void => {
|
||||
const value = this._readKey(key);
|
||||
|
||||
value?.address && cb(key, value);
|
||||
value?.address && fn(key, value);
|
||||
});
|
||||
}
|
||||
|
||||
public get (key: string, cb: (value: KeyringJson) => void): void {
|
||||
public get (key: string, fn: (value: KeyringJson) => void): void {
|
||||
const value = this._readKey(key);
|
||||
|
||||
assert(value?.address, `Invalid JSON found for ${key}`);
|
||||
|
||||
cb(value);
|
||||
fn(value);
|
||||
}
|
||||
|
||||
public remove (key: string, cb?: () => void): void {
|
||||
public remove (key: string, fn?: () => void): void {
|
||||
fs.unlinkSync(this._getPath(key));
|
||||
cb && cb();
|
||||
fn && fn();
|
||||
}
|
||||
|
||||
public set (key: string, value: KeyringJson, cb?: () => void): void {
|
||||
public set (key: string, value: KeyringJson, fn?: () => void): void {
|
||||
fs.writeFileSync(this._getPath(key), Buffer.from(JSON.stringify(value), 'utf-8'));
|
||||
cb && cb();
|
||||
fn && fn();
|
||||
}
|
||||
|
||||
private _getPath (key: string): string {
|
||||
|
||||
@@ -17,12 +17,12 @@
|
||||
"./detectPackage.cjs"
|
||||
],
|
||||
"type": "module",
|
||||
"version": "0.89.2",
|
||||
"version": "2.7.2",
|
||||
"main": "index.js",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.16.7",
|
||||
"@polkadot/networks": "^8.3.2",
|
||||
"@polkadot/util": "^8.3.2",
|
||||
"@babel/runtime": "^7.18.6",
|
||||
"@polkadot/networks": "^9.7.2",
|
||||
"@polkadot/util": "^9.7.2",
|
||||
"eventemitter3": "^4.0.7",
|
||||
"store": "^2.0.12"
|
||||
},
|
||||
|
||||
@@ -3,4 +3,4 @@
|
||||
|
||||
// Do not edit, auto-generated by @polkadot/dev
|
||||
|
||||
export const packageInfo = { name: '@polkadot/ui-settings', path: 'auto', type: 'auto', version: '0.89.2' };
|
||||
export const packageInfo = { name: '@polkadot/ui-settings', path: 'auto', type: 'auto', version: '2.7.2' };
|
||||
|
||||
@@ -17,16 +17,16 @@
|
||||
"./detectPackage.cjs"
|
||||
],
|
||||
"type": "module",
|
||||
"version": "0.89.2",
|
||||
"version": "2.7.2",
|
||||
"main": "index.js",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.16.7",
|
||||
"@babel/runtime": "^7.18.6",
|
||||
"color": "^3.2.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@polkadot/util": "^8.3.2",
|
||||
"@polkadot/util-crypto": "^8.3.2",
|
||||
"@types/color": "^3.0.2",
|
||||
"@polkadot/util": "^9.7.2",
|
||||
"@polkadot/util-crypto": "^9.7.2",
|
||||
"@types/color": "^3.0.3",
|
||||
"@types/xmlserializer": "^0.6.2",
|
||||
"xmlserializer": "^0.6.1"
|
||||
},
|
||||
|
||||
@@ -9,7 +9,8 @@ describe('identicon', (): void => {
|
||||
it('generates a basic [0,..,0] identicon', (): void => {
|
||||
expect(
|
||||
xmlserializer.serializeToString(
|
||||
beachballIcon(new Uint8Array(32), { isAlternative: false, size: 256 })
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument,@typescript-eslint/no-explicit-any
|
||||
beachballIcon(new Uint8Array(32), { isAlternative: false, size: 256 }) as any
|
||||
)
|
||||
).toEqual(
|
||||
'<div xmlns="http://www.w3.org/1999/xhtml" class="" style="background: white; border-radius: 128px; display: inline-block; height: 256px; margin: 0px; overflow: hidden; padding: 0px; width: 256px;"><div class="" style="background: rgb(20, 20, 20); border-radius: 128px; display: inline-block; height: 256px; margin: 0px; overflow: hidden; padding: 0px; width: 256px;"><svg xmlns="http://www.w3.org/2000/svg" x="0" y="0" width="256" height="256"><circle cx="128" cy="140.8" r="128" fill="hsl(212.10000000000002, 65.6%, 55.5%)"/><circle cx="128" cy="153.6" r="102.4" fill="hsl(9.800000000000011, 90.7%, 57.6%)"/><circle cx="128" cy="166.4" r="76.8" fill="hsl(345, 85.7%, 86.3%)"/><circle cx="128" cy="179.2" r="51.2" fill="hsl(261.9, 100%, 87.3%)"/><circle cx="128" cy="192" r="25.6" fill="hsl(345, 100%, 25.1%)"/></svg></div></div>'
|
||||
@@ -19,7 +20,8 @@ describe('identicon', (): void => {
|
||||
it('allows overrides', (): void => {
|
||||
expect(
|
||||
xmlserializer.serializeToString(
|
||||
beachballIcon(new Uint8Array(32), { isAlternative: false, size: 100 }, 'testClass', { display: 'block' })
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument,@typescript-eslint/no-explicit-any
|
||||
beachballIcon(new Uint8Array(32), { isAlternative: false, size: 100 }, 'testClass', { display: 'block' }) as any
|
||||
)
|
||||
).toEqual(
|
||||
'<div xmlns="http://www.w3.org/1999/xhtml" class="testClass" style="background: white; border-radius: 50px; display: block; height: 100px; margin: 0px; overflow: hidden; padding: 0px; width: 100px;"><div class="" style="background: rgb(20, 20, 20); border-radius: 50px; display: inline-block; height: 100px; margin: 0px; overflow: hidden; padding: 0px; width: 100px;"><svg xmlns="http://www.w3.org/2000/svg" x="0" y="0" width="100" height="100"><circle cx="50" cy="55" r="50" fill="hsl(212.10000000000002, 65.6%, 55.5%)"/><circle cx="50" cy="60" r="40" fill="hsl(9.800000000000011, 90.7%, 57.6%)"/><circle cx="50" cy="65" r="30" fill="hsl(345, 85.7%, 86.3%)"/><circle cx="50" cy="70" r="20" fill="hsl(261.9, 100%, 87.3%)"/><circle cx="50" cy="75" r="10" fill="hsl(345, 100%, 25.1%)"/></svg></div></div>'
|
||||
|
||||
@@ -10,7 +10,8 @@ describe('circle', (): void => {
|
||||
it('creates a circle shape', (): void => {
|
||||
expect(
|
||||
xmlserializer.serializeToString(
|
||||
circle(seeder(), 'blue', 50, 2)
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument,@typescript-eslint/no-explicit-any
|
||||
circle(seeder(), 'blue', 50, 2) as any
|
||||
)
|
||||
).toEqual('<circle xmlns="http://www.w3.org/2000/svg" cx="25" cy="32.5" r="15" fill="blue"/>');
|
||||
});
|
||||
|
||||
@@ -9,7 +9,8 @@ describe('circle', (): void => {
|
||||
it('creates a basic SVG circle element', (): void => {
|
||||
expect(
|
||||
serializeToString(
|
||||
circle(123, 12, 34)
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument,@typescript-eslint/no-explicit-any
|
||||
circle(123, 12, 34) as any
|
||||
)
|
||||
).toEqual('<circle xmlns="http://www.w3.org/2000/svg" cx="12" cy="34" r="123"/>');
|
||||
});
|
||||
|
||||
@@ -9,7 +9,8 @@ describe('element', (): void => {
|
||||
it('creates a basic SVG element', (): void => {
|
||||
expect(
|
||||
serializeToString(
|
||||
element(123)
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument,@typescript-eslint/no-explicit-any
|
||||
element(123) as any
|
||||
)
|
||||
).toEqual('<svg xmlns="http://www.w3.org/2000/svg" x="0" y="0" width="123" height="123"/>');
|
||||
});
|
||||
|
||||
@@ -9,7 +9,8 @@ describe('rect', (): void => {
|
||||
it('creates a basic SVG rect element', (): void => {
|
||||
expect(
|
||||
serializeToString(
|
||||
rect(123)
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument,@typescript-eslint/no-explicit-any
|
||||
rect(123) as any
|
||||
)
|
||||
).toEqual('<rect xmlns="http://www.w3.org/2000/svg" x="0" y="0" width="123" height="123" rx="7.6875" ry="7.6875"/>');
|
||||
});
|
||||
|
||||
@@ -9,7 +9,8 @@ describe('svg', (): void => {
|
||||
it('creates a basic SVG element', (): void => {
|
||||
expect(
|
||||
serializeToString(
|
||||
svg('rect')
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument,@typescript-eslint/no-explicit-any
|
||||
svg('rect') as any
|
||||
)
|
||||
).toEqual('<rect xmlns="http://www.w3.org/2000/svg"/>');
|
||||
});
|
||||
|
||||
@@ -22,7 +22,6 @@ const blake2 = (value: Uint8Array): Uint8Array =>
|
||||
const S = 64;
|
||||
const C = S / 2;
|
||||
const Z = S / 64 * 5;
|
||||
const ZERO = blake2(new Uint8Array(32));
|
||||
|
||||
/* eslint-disable sort-keys */
|
||||
const SCHEMA: { [index: string]: Scheme } = {
|
||||
@@ -43,6 +42,8 @@ const OUTER_CIRCLE: Circle = {
|
||||
r: C
|
||||
};
|
||||
|
||||
let zeroHash: Uint8Array = new Uint8Array();
|
||||
|
||||
function getRotation (isSixPoint: boolean): { r: number; ro2: number; r3o4: number; ro4: number; rroot3o2: number; rroot3o4: number } {
|
||||
const r = isSixPoint
|
||||
? (C / 8 * 5)
|
||||
@@ -98,7 +99,11 @@ function findScheme (d: number): Scheme {
|
||||
}
|
||||
|
||||
function addressToId (address: string): Uint8Array {
|
||||
return blake2(decodeAddress(address)).map((x, i): number => (x + 256 - ZERO[i]) % 256);
|
||||
if (!zeroHash.length) {
|
||||
zeroHash = blake2(new Uint8Array(32));
|
||||
}
|
||||
|
||||
return blake2(decodeAddress(address)).map((x, i) => (x + 256 - zeroHash[i]) % 256);
|
||||
}
|
||||
|
||||
function getColors (address: string): string[] {
|
||||
@@ -132,10 +137,19 @@ function getColors (address: string): string[] {
|
||||
* @description Generate a array of the circles that make up an identicon
|
||||
*/
|
||||
export function polkadotIcon (address: string, { isAlternative }: Options): Circle[] {
|
||||
const colors = getColors(address);
|
||||
const xy = getCircleXY(isAlternative);
|
||||
let colors: string[];
|
||||
|
||||
try {
|
||||
// in some cases, e.g. RN where crypto may not be initialized, chaos can
|
||||
// happen when hashing, in these cases we just fill with a placeholder
|
||||
colors = getColors(address);
|
||||
} catch {
|
||||
colors = new Array<string>(xy.length).fill('#ddd');
|
||||
}
|
||||
|
||||
return [OUTER_CIRCLE].concat(
|
||||
getCircleXY(isAlternative).map(([cx, cy], index): Circle => ({
|
||||
xy.map(([cx, cy], index): Circle => ({
|
||||
cx, cy, fill: colors[index], r: Z
|
||||
}))
|
||||
);
|
||||
|
||||
@@ -3,4 +3,4 @@
|
||||
|
||||
// Do not edit, auto-generated by @polkadot/dev
|
||||
|
||||
export const packageInfo = { name: '@polkadot/ui-shared', path: 'auto', type: 'auto', version: '0.89.2' };
|
||||
export const packageInfo = { name: '@polkadot/ui-shared', path: 'auto', type: 'auto', version: '2.7.2' };
|
||||
|
||||
@@ -17,13 +17,13 @@
|
||||
"./detectPackage.cjs"
|
||||
],
|
||||
"type": "module",
|
||||
"version": "0.89.2",
|
||||
"version": "2.7.2",
|
||||
"main": "index.js",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.16.7",
|
||||
"@polkadot/ui-shared": "0.89.2",
|
||||
"@polkadot/util": "^8.3.2",
|
||||
"@polkadot/util-crypto": "^8.3.2",
|
||||
"@babel/runtime": "^7.18.6",
|
||||
"@polkadot/ui-shared": "2.7.2",
|
||||
"@polkadot/util": "^9.7.2",
|
||||
"@polkadot/util-crypto": "^9.7.2",
|
||||
"jdenticon": "3.1.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -1,40 +0,0 @@
|
||||
// Copyright 2017-2022 @polkadot/vue-identicon authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import Vue, { VNode } from 'vue';
|
||||
|
||||
import Identicon from './index';
|
||||
|
||||
interface Data {
|
||||
address: string;
|
||||
size: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* @name Demo
|
||||
* @description Demo component
|
||||
*/
|
||||
const Demo = Vue.extend({
|
||||
components: {
|
||||
Identicon
|
||||
},
|
||||
data: function (): Data {
|
||||
return {
|
||||
address: '5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY',
|
||||
size: 128
|
||||
};
|
||||
},
|
||||
name: 'Demo',
|
||||
template: `
|
||||
<div id="demo">
|
||||
<Identicon :size="size" :theme="'polkadot'" :value="address" />
|
||||
<Identicon :size="size" :theme="'substrate'" :value="address" />
|
||||
<Identicon :size="size" :theme="'beachball'" :value="address" />
|
||||
<Identicon :size="size" :theme="'empty'" />
|
||||
</div>
|
||||
`
|
||||
});
|
||||
|
||||
new Vue({
|
||||
render: (h): VNode => h(Demo)
|
||||
}).$mount('#demo');
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
import type { Prefix } from '@polkadot/util-crypto/address/types';
|
||||
|
||||
import Vue from 'vue';
|
||||
import Vue, { VNode } from 'vue';
|
||||
|
||||
import { isHex, isU8a, u8aToHex } from '@polkadot/util';
|
||||
import { decodeAddress, encodeAddress } from '@polkadot/util-crypto';
|
||||
@@ -18,6 +18,7 @@ interface Account {
|
||||
interface Data {
|
||||
address: string;
|
||||
iconSize: number;
|
||||
isAlternative: boolean;
|
||||
publicKey: string;
|
||||
type: 'beachball' | 'empty' | 'jdenticon' | 'polkadot' | 'substrate';
|
||||
}
|
||||
@@ -59,6 +60,7 @@ export const Identicon = Vue.extend({
|
||||
return {
|
||||
address: '',
|
||||
iconSize: DEFAULT_SIZE,
|
||||
isAlternative: false,
|
||||
publicKey: '0x',
|
||||
type: 'empty'
|
||||
};
|
||||
@@ -78,22 +80,21 @@ export const Identicon = Vue.extend({
|
||||
}
|
||||
},
|
||||
props: ['prefix', 'isAlternative', 'size', 'theme', 'value'],
|
||||
// FIXME These nested divs are not correct, would like a different way
|
||||
// here so we don't create a div wrapped for the div wrapper of the icon
|
||||
template: `
|
||||
<div v-if="type === 'empty' || address === ''">
|
||||
<Empty :key="address" :size="iconSize" />
|
||||
</div>
|
||||
<div v-else-if="type === 'beachball'">
|
||||
<Beachball :key="address" :address="address" :size="iconSize" />
|
||||
</div>
|
||||
<div v-else-if="type === 'polkadot'">
|
||||
<Polkadot :key="address" :address="address" :isAlternative="isAlternative" :size="iconSize" />
|
||||
</div>
|
||||
<div v-else>
|
||||
<Jdenticon :key="address" :publicKey="publicKey" :size="iconSize" />
|
||||
</div>
|
||||
`,
|
||||
render (h): VNode {
|
||||
const { address, iconSize, isAlternative, publicKey, type } = this.$data as Data;
|
||||
|
||||
if (type === 'empty') {
|
||||
return h('Empty', { attrs: { key: address, size: iconSize } }, []);
|
||||
} else if (type === 'jdenticon') {
|
||||
return h('Jdenticon', { attrs: { key: address, publicKey, size: iconSize } }, []);
|
||||
} else {
|
||||
// handles: beachball and polkadot
|
||||
// TODO: substrate
|
||||
const cmp = type.charAt(0).toUpperCase() + type.slice(1);
|
||||
|
||||
return h(cmp, { attrs: { address, isAlternative, key: address, size: iconSize } }, []);
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
value: function (): void {
|
||||
this.recodeAddress();
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
// Copyright 2017-2022 @polkadot/vue-identicon authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import type { Options } from '@polkadot/ui-shared/icons/types';
|
||||
|
||||
import Vue from 'vue';
|
||||
import Vue, { VNode } from 'vue';
|
||||
|
||||
import { beachballIcon } from '@polkadot/ui-shared';
|
||||
|
||||
interface Data {
|
||||
html: string;
|
||||
type propsType = {
|
||||
address: string;
|
||||
size: number;
|
||||
isAlternative: boolean;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -16,21 +16,12 @@ interface Data {
|
||||
* @description The Beachball identicon
|
||||
*/
|
||||
export const Beachball = Vue.extend({
|
||||
created: function (): void {
|
||||
this.createHtml();
|
||||
},
|
||||
data: function (): Data {
|
||||
return {
|
||||
// eslint-disable-next-line quotes
|
||||
html: `<div />`
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
createHtml: function (): void {
|
||||
this.html = beachballIcon(this.address as string, this.size as Options).outerHTML;
|
||||
}
|
||||
},
|
||||
props: ['address', 'size'],
|
||||
props: ['address', 'size', 'isAlternative'],
|
||||
// eslint-disable-next-line quotes
|
||||
template: `<div v-html="html" />`
|
||||
render (h): VNode {
|
||||
const { address, isAlternative, size } = this.$props as propsType;
|
||||
const bb = beachballIcon(address, { isAlternative, size });
|
||||
|
||||
return h(Vue.component('VCBeachball', { template: bb.outerHTML }));
|
||||
}
|
||||
});
|
||||
|
||||
@@ -2,10 +2,11 @@
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import * as jdenticon from 'jdenticon';
|
||||
import Vue from 'vue';
|
||||
import Vue, { VNode } from 'vue';
|
||||
|
||||
interface Data {
|
||||
svgHtml: string;
|
||||
type propsType = {
|
||||
publicKey: string,
|
||||
size: number
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -13,21 +14,12 @@ interface Data {
|
||||
* @description The substrate default via Jdenticon
|
||||
*/
|
||||
export const Jdenticon = Vue.extend({
|
||||
created: function (): void {
|
||||
this.createSvgHtml();
|
||||
},
|
||||
data: function (): Data {
|
||||
return {
|
||||
// eslint-disable-next-line quotes
|
||||
svgHtml: `<svg viewBox="0 0 64 64" />`
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
createSvgHtml: function (): void {
|
||||
this.svgHtml = jdenticon.toSvg((this.publicKey as string).substr(2), this.size as number);
|
||||
}
|
||||
},
|
||||
props: ['publicKey', 'size'],
|
||||
// eslint-disable-next-line quotes
|
||||
template: `<div v-html="svgHtml" />`
|
||||
render (h): VNode {
|
||||
const { publicKey, size } = this.$props as propsType;
|
||||
const cmp = Vue.component('CJdenticon', { template: jdenticon.toSvg(publicKey.substring(2), size) });
|
||||
|
||||
return h(cmp);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -1,17 +1,14 @@
|
||||
// Copyright 2017-2022 @polkadot/vue-identicon authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
import Vue from 'vue';
|
||||
import Vue, { VNode } from 'vue';
|
||||
|
||||
import { polkadotIcon } from '@polkadot/ui-shared';
|
||||
|
||||
interface Data {
|
||||
svgHtml: string;
|
||||
}
|
||||
|
||||
interface This {
|
||||
type propsType = {
|
||||
address: string;
|
||||
isAlternative?: boolean;
|
||||
isAlternative: boolean;
|
||||
size: number;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -19,25 +16,20 @@ interface This {
|
||||
* @description The Polkadot default identicon
|
||||
*/
|
||||
export const Polkadot = Vue.extend({
|
||||
created: function (): void {
|
||||
this.createSvgHtml();
|
||||
},
|
||||
data: function (): Data {
|
||||
return {
|
||||
// eslint-disable-next-line quotes
|
||||
svgHtml: `<svg viewBox="0 0 64 64" />`
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
createSvgHtml: function (): void {
|
||||
const circles = polkadotIcon(this.address as string, { isAlternative: (this as This).isAlternative || false }).map(({ cx, cy, fill, r }) =>
|
||||
`<circle cx=${cx} cy=${cy} fill="${fill}" r=${r} />`
|
||||
).join('');
|
||||
|
||||
this.svgHtml = `<svg height=${this.size as number} viewBox='0 0 64 64' width=${this.size as number}>${circles}</svg>`;
|
||||
}
|
||||
},
|
||||
props: ['address', 'isAlternative', 'size'],
|
||||
// eslint-disable-next-line quotes
|
||||
template: `<div v-html="svgHtml" />`
|
||||
render (h): VNode {
|
||||
const { address, isAlternative, size } = this.$props as propsType;
|
||||
const circles = polkadotIcon(address, {
|
||||
isAlternative: isAlternative || false
|
||||
}).map(({ cx,
|
||||
cy,
|
||||
fill,
|
||||
r }) => {
|
||||
return h('circle', { attrs: { cx, cy, fill, r } }, []);
|
||||
}
|
||||
);
|
||||
|
||||
return h('svg', { attrs: { height: size, viewBox: '0 0 64 64', width: size } }, circles);
|
||||
}
|
||||
});
|
||||
|
||||
@@ -3,4 +3,4 @@
|
||||
|
||||
// Do not edit, auto-generated by @polkadot/dev
|
||||
|
||||
export const packageInfo = { name: '@polkadot/vue-identicon', path: 'auto', type: 'auto', version: '0.89.2' };
|
||||
export const packageInfo = { name: '@polkadot/vue-identicon', path: 'auto', type: 'auto', version: '2.7.2' };
|
||||
|
||||
@@ -1,50 +0,0 @@
|
||||
// Copyright 2017-2022 @polkadot/react-identicon authors & contributors
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
const path = require('path');
|
||||
const VueLoaderPlugin = require('vue-loader/lib/plugin');
|
||||
const webpack = require('webpack');
|
||||
const ENV = process.env.NODE_ENV || 'development';
|
||||
const isProd = ENV === 'production';
|
||||
|
||||
module.exports = {
|
||||
context: __dirname,
|
||||
devtool: isProd ? 'source-map' : 'eval-cheap-source-map',
|
||||
entry: './src/Demo.ts',
|
||||
mode: ENV,
|
||||
module: {
|
||||
rules: [
|
||||
{
|
||||
exclude: /(node_modules)/,
|
||||
test: /\.(js|ts)$/,
|
||||
use: [
|
||||
'babel-loader'
|
||||
]
|
||||
},
|
||||
{
|
||||
loader: 'vue-loader',
|
||||
test: /\.vue$/
|
||||
}
|
||||
]
|
||||
},
|
||||
output: {
|
||||
filename: './demo.js',
|
||||
path: path.join(__dirname, 'build')
|
||||
},
|
||||
plugins: [
|
||||
new VueLoaderPlugin(),
|
||||
new webpack.ProvidePlugin({
|
||||
Buffer: ['buffer', 'Buffer']
|
||||
}),
|
||||
new webpack.ProvidePlugin({
|
||||
process: 'process/browser'
|
||||
})
|
||||
],
|
||||
resolve: {
|
||||
alias: {
|
||||
'@polkadot/ui-shared': path.resolve(__dirname, '../ui-shared/build'),
|
||||
'process/browser': require.resolve('process/browser')
|
||||
},
|
||||
extensions: ['.js', '.ts']
|
||||
}
|
||||
};
|
||||
@@ -6,6 +6,7 @@
|
||||
},
|
||||
"include": [
|
||||
"packages/**/src/**/*",
|
||||
"packages/**/*.cjs",
|
||||
"packages/**/*.js"
|
||||
],
|
||||
"exclude": [
|
||||
|
||||
Reference in New Issue
Block a user