Compare commits
23 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1148aa900e | ||
|
|
c88dd3d556 | ||
|
|
3b85dc80a0 | ||
|
|
d7c754cb3e | ||
|
|
4edb698dc0 | ||
|
|
e1152aa0d9 | ||
|
|
8b827b0848 | ||
|
|
4409709416 | ||
|
|
bcaa6b5245 | ||
|
|
1b3d4b54f0 | ||
|
|
be2f235a3b | ||
|
|
5378a0421c | ||
|
|
6c7aa95d5b | ||
|
|
af798708c4 | ||
|
|
17979fbb5c | ||
|
|
42ab574e5f | ||
|
|
8f7a4d3221 | ||
|
|
bb1648d108 | ||
|
|
a217b09cc5 | ||
|
|
3f86219f9e | ||
|
|
c67815b42a | ||
|
|
30cfa93a30 | ||
|
|
dd9d75e597 |
@@ -1,43 +0,0 @@
|
||||
version: 2
|
||||
|
||||
defaults: &defaults
|
||||
working_directory: ~/qlik-network-chart
|
||||
docker:
|
||||
- image: circleci/node:stretch
|
||||
environment:
|
||||
GITHUB_ORG: "qlik-oss"
|
||||
GITHUB_REPO: "network-vis-chart"
|
||||
PACKAGE_NAME: "qlik-network-chart"
|
||||
|
||||
jobs:
|
||||
build:
|
||||
docker:
|
||||
- image: circleci/node:stretch-browsers
|
||||
steps:
|
||||
- checkout
|
||||
- run:
|
||||
name: Install dependencies
|
||||
command: yarn
|
||||
- run:
|
||||
name: Lint
|
||||
command: yarn eslint
|
||||
- run:
|
||||
name: Build
|
||||
command: yarn build && yarn sense
|
||||
environment:
|
||||
NODE_ENV: production
|
||||
- run:
|
||||
name: Update spec
|
||||
command: yarn run spec
|
||||
- run:
|
||||
name: Run unit tests
|
||||
command: yarn test:unit
|
||||
- store_artifacts:
|
||||
path: dist
|
||||
destination: dist
|
||||
|
||||
workflows:
|
||||
version: 2
|
||||
master_flow:
|
||||
jobs:
|
||||
- build
|
||||
19
.codeclimate.yml
Normal file
19
.codeclimate.yml
Normal file
@@ -0,0 +1,19 @@
|
||||
version: "2"
|
||||
checks:
|
||||
method-lines:
|
||||
config:
|
||||
threshold: 100
|
||||
method-complexity:
|
||||
config:
|
||||
threshold: 10
|
||||
similar-code:
|
||||
config:
|
||||
threshold: 65
|
||||
identical-code:
|
||||
config:
|
||||
threshold: 65
|
||||
exclude_patterns:
|
||||
- "src/**/*.test.ts"
|
||||
- "src/**/*.test.tsx"
|
||||
- "*config*"
|
||||
- "test/**/__fixtures__"
|
||||
53
.eslintrc.js
53
.eslintrc.js
@@ -3,15 +3,15 @@ module.exports = {
|
||||
ecmaVersion: 6,
|
||||
ecmaFeatures: {
|
||||
jsx: true,
|
||||
modules: true
|
||||
modules: true,
|
||||
},
|
||||
sourceType: "module"
|
||||
sourceType: "module",
|
||||
},
|
||||
parser: "babel-eslint",
|
||||
parser: "@babel/eslint-parser",
|
||||
env: {
|
||||
browser: true,
|
||||
es6: true,
|
||||
node: true
|
||||
node: true,
|
||||
},
|
||||
globals: {
|
||||
$: false,
|
||||
@@ -21,41 +21,48 @@ module.exports = {
|
||||
document: false,
|
||||
expect: false,
|
||||
it: false,
|
||||
require: false
|
||||
require: false,
|
||||
},
|
||||
rules: {
|
||||
"indent": ["error", 2, { "SwitchCase": 1 }],
|
||||
indent: ["error", 2, { SwitchCase: 1 }],
|
||||
"linebreak-style": ["error", "unix"],
|
||||
"object-curly-spacing": ["error", "always"],
|
||||
"max-lines": ["warn", 300],
|
||||
"max-len": ["warn", 120],
|
||||
"no-console": ["warn"],
|
||||
"no-mixed-operators": ["warn", {
|
||||
"groups": [
|
||||
["==", "!=", "===", "!==", ">", ">=", "<", "<="],
|
||||
["&&", "||"],
|
||||
["in", "instanceof"]
|
||||
],
|
||||
"allowSamePrecedence": true
|
||||
}],
|
||||
"no-mixed-operators": [
|
||||
"warn",
|
||||
{
|
||||
groups: [
|
||||
["==", "!=", "===", "!==", ">", ">=", "<", "<="],
|
||||
["&&", "||"],
|
||||
["in", "instanceof"],
|
||||
],
|
||||
allowSamePrecedence: true,
|
||||
},
|
||||
],
|
||||
"no-multi-spaces": ["error"],
|
||||
"no-cond-assign": ["warn"],
|
||||
"no-fallthrough": ["warn"],
|
||||
"no-undef": ["warn"],
|
||||
"no-unused-vars": ["error"],
|
||||
"no-use-before-define": ["warn", { "functions": false, "classes": false, "variables": false }],
|
||||
"no-use-before-define": [
|
||||
"warn",
|
||||
{ functions: false, classes: false, variables: false },
|
||||
],
|
||||
"no-useless-escape": ["warn"],
|
||||
"no-useless-return": ["warn"],
|
||||
"no-underscore-dangle": ["warn", { "allow": ["_id"] }],
|
||||
"no-underscore-dangle": ["warn", { allow: ["_id"] }],
|
||||
"no-redeclare": ["warn"],
|
||||
"no-restricted-syntax": ["warn"],
|
||||
"operator-linebreak": ["warn", "before"],
|
||||
"prefer-promise-reject-errors": ["warn"],
|
||||
"padded-blocks": ["warn", { "blocks": "never", "switches": "never", "classes": "never" }],
|
||||
"semi": ["error", "always"],
|
||||
"valid-typeof": ["warn"]
|
||||
"padded-blocks": [
|
||||
"warn",
|
||||
{ blocks: "never", switches: "never", classes: "never" },
|
||||
],
|
||||
semi: ["error", "always"],
|
||||
"valid-typeof": ["warn"],
|
||||
},
|
||||
extends: [
|
||||
"eslint:recommended"
|
||||
]
|
||||
}
|
||||
extends: ["eslint:recommended"],
|
||||
};
|
||||
|
||||
11
.github/dependabot.yml
vendored
Normal file
11
.github/dependabot.yml
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
# To get started with Dependabot version updates, you'll need to specify which
|
||||
# package ecosystems to update and where the package manifests are located.
|
||||
# Please see the documentation for all configuration options:
|
||||
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
|
||||
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: "yarn" # See documentation for possible values
|
||||
directory: "/" # Location of package manifests
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
22
.github/workflows/build.yml
vendored
Normal file
22
.github/workflows/build.yml
vendored
Normal file
@@ -0,0 +1,22 @@
|
||||
name: Build
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
release:
|
||||
type: boolean
|
||||
required: true
|
||||
default: false
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
pull_request:
|
||||
branches:
|
||||
- master
|
||||
|
||||
jobs:
|
||||
build:
|
||||
uses: qlik-oss/sn-gh-workflows/.github/workflows/build.yaml@v1
|
||||
secrets: inherit
|
||||
with:
|
||||
release: ${{ inputs.release || false}}
|
||||
api_specification_path: api-specifications/properties.json
|
||||
17
.github/workflows/semantic.yml
vendored
Normal file
17
.github/workflows/semantic.yml
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
name: "Semantic PR"
|
||||
|
||||
on:
|
||||
pull_request_target:
|
||||
types:
|
||||
- opened
|
||||
- edited
|
||||
- synchronize
|
||||
|
||||
jobs:
|
||||
main:
|
||||
name: Validate PR title
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: amannn/action-semantic-pull-request@v4
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
@@ -1,136 +1,164 @@
|
||||
{
|
||||
"scriptappy": "1.0.0",
|
||||
"scriptappy": "1.1.0",
|
||||
"info": {
|
||||
"name": "sn-network-chart:properties",
|
||||
"name": "@nebula.js/sn-network-chart:properties",
|
||||
"description": "Network chart generic object definition",
|
||||
"version": "0.0.1",
|
||||
"version": "1.0.3",
|
||||
"license": "MIT",
|
||||
"stability": "experimental",
|
||||
"stability": "stable",
|
||||
"x-qlik-visibility": "public"
|
||||
},
|
||||
"entries": {},
|
||||
"definitions": {
|
||||
"module.exports.displayEdgeLabel": {
|
||||
"optional": true,
|
||||
"defaultValue": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
"module.exports.edgeType": {
|
||||
"optional": true,
|
||||
"defaultValue": "dynamic",
|
||||
"kind": "union",
|
||||
"items": [
|
||||
{
|
||||
"kind": "literal",
|
||||
"value": "'dynamic'"
|
||||
"entries": {
|
||||
"properties": {
|
||||
"kind": "function",
|
||||
"params": [],
|
||||
"entries": {
|
||||
"version": {
|
||||
"description": "Current version of this generic object definition",
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"kind": "literal",
|
||||
"value": "'continuous'"
|
||||
"qHyperCubeDef": {
|
||||
"description": "Extends `HyperCubeDef`, see Engine API: `HyperCubeDef`.",
|
||||
"extends": [
|
||||
{
|
||||
"type": "HyperCubeDef"
|
||||
}
|
||||
],
|
||||
"kind": "object"
|
||||
},
|
||||
{
|
||||
"kind": "literal",
|
||||
"value": "'discrete'"
|
||||
"showTitles": {
|
||||
"optional": true,
|
||||
"defaultValue": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
{
|
||||
"kind": "literal",
|
||||
"value": "'diagonalCross'"
|
||||
"title": {
|
||||
"optional": true,
|
||||
"defaultValue": "",
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"kind": "literal",
|
||||
"value": "'straightCross'"
|
||||
"subtitle": {
|
||||
"optional": true,
|
||||
"defaultValue": "",
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"kind": "literal",
|
||||
"value": "'horizontal'"
|
||||
"footnote": {
|
||||
"optional": true,
|
||||
"defaultValue": "",
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"kind": "literal",
|
||||
"value": "'vertical'"
|
||||
"edgeType": {
|
||||
"optional": true,
|
||||
"defaultValue": "dynamic",
|
||||
"kind": "union",
|
||||
"items": [
|
||||
{
|
||||
"kind": "literal",
|
||||
"value": "'dynamic'"
|
||||
},
|
||||
{
|
||||
"kind": "literal",
|
||||
"value": "'continuous'"
|
||||
},
|
||||
{
|
||||
"kind": "literal",
|
||||
"value": "'discrete'"
|
||||
},
|
||||
{
|
||||
"kind": "literal",
|
||||
"value": "'diagonalCross'"
|
||||
},
|
||||
{
|
||||
"kind": "literal",
|
||||
"value": "'straightCross'"
|
||||
},
|
||||
{
|
||||
"kind": "literal",
|
||||
"value": "'horizontal'"
|
||||
},
|
||||
{
|
||||
"kind": "literal",
|
||||
"value": "'vertical'"
|
||||
},
|
||||
{
|
||||
"kind": "literal",
|
||||
"value": "'curvedCW'"
|
||||
},
|
||||
{
|
||||
"kind": "literal",
|
||||
"value": "'curvedCCW'"
|
||||
},
|
||||
{
|
||||
"kind": "literal",
|
||||
"value": "'cubicBezier'"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"kind": "literal",
|
||||
"value": "'curvedCW'"
|
||||
"displayEdgeLabel": {
|
||||
"optional": true,
|
||||
"defaultValue": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
{
|
||||
"kind": "literal",
|
||||
"value": "'curvedCCW'"
|
||||
"posEdgeLabel": {
|
||||
"optional": true,
|
||||
"defaultValue": "top",
|
||||
"kind": "union",
|
||||
"items": [
|
||||
{
|
||||
"kind": "literal",
|
||||
"value": "'top'"
|
||||
},
|
||||
{
|
||||
"kind": "literal",
|
||||
"value": "'middle'"
|
||||
},
|
||||
{
|
||||
"kind": "literal",
|
||||
"value": "'bottom'"
|
||||
},
|
||||
{
|
||||
"kind": "literal",
|
||||
"value": "'horizontal'"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"kind": "literal",
|
||||
"value": "'cubicBezier'"
|
||||
"nodeShape": {
|
||||
"optional": true,
|
||||
"defaultValue": "dot",
|
||||
"kind": "union",
|
||||
"items": [
|
||||
{
|
||||
"kind": "literal",
|
||||
"value": "'dot'"
|
||||
},
|
||||
{
|
||||
"kind": "literal",
|
||||
"value": "'square'"
|
||||
},
|
||||
{
|
||||
"kind": "literal",
|
||||
"value": "'star'"
|
||||
},
|
||||
{
|
||||
"kind": "literal",
|
||||
"value": "'triangle'"
|
||||
},
|
||||
{
|
||||
"kind": "literal",
|
||||
"value": "'triangleDown'"
|
||||
},
|
||||
{
|
||||
"kind": "literal",
|
||||
"value": "'diamond'"
|
||||
}
|
||||
]
|
||||
},
|
||||
"shadowMode": {
|
||||
"optional": true,
|
||||
"defaultValue": false,
|
||||
"type": "boolean"
|
||||
}
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"module.exports.nodeShape": {
|
||||
"optional": true,
|
||||
"defaultValue": "dot",
|
||||
"kind": "union",
|
||||
"items": [
|
||||
{
|
||||
"kind": "literal",
|
||||
"value": "'dot'"
|
||||
},
|
||||
{
|
||||
"kind": "literal",
|
||||
"value": "'square'"
|
||||
},
|
||||
{
|
||||
"kind": "literal",
|
||||
"value": "'star'"
|
||||
},
|
||||
{
|
||||
"kind": "literal",
|
||||
"value": "'triangle'"
|
||||
},
|
||||
{
|
||||
"kind": "literal",
|
||||
"value": "'triangleDown'"
|
||||
},
|
||||
{
|
||||
"kind": "literal",
|
||||
"value": "'diamond'"
|
||||
}
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"module.exports.posEdgeLabel": {
|
||||
"optional": true,
|
||||
"defaultValue": "top",
|
||||
"kind": "union",
|
||||
"items": [
|
||||
{
|
||||
"kind": "literal",
|
||||
"value": "'top'"
|
||||
},
|
||||
{
|
||||
"kind": "literal",
|
||||
"value": "'middle'"
|
||||
},
|
||||
{
|
||||
"kind": "literal",
|
||||
"value": "'bottom'"
|
||||
},
|
||||
{
|
||||
"kind": "literal",
|
||||
"value": "'horizontal'"
|
||||
}
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"module.exports.qHyperCubeDef": {
|
||||
"kind": "object",
|
||||
"entries": {}
|
||||
},
|
||||
"module.exports.shadowMode": {
|
||||
"optional": true,
|
||||
"defaultValue": false,
|
||||
"type": "boolean"
|
||||
},
|
||||
"module.exports.version": {
|
||||
"description": "Current version of this generic object definition",
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"definitions": {}
|
||||
}
|
||||
40
package.json
40
package.json
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@nebula.js/sn-network-chart",
|
||||
"version": "0.3.0",
|
||||
"version": "1.0.3",
|
||||
"description": "Displays hierarchical or relational dimensions as nodes and edges´, with measures to show the significance of its links.",
|
||||
"homepage": "",
|
||||
"repository": "https://github.com/qlik-oss/network-vis-chart",
|
||||
@@ -13,9 +13,8 @@
|
||||
"build": "nebula build --core core",
|
||||
"sense": "nebula sense --meta resources/meta.json && shx cp resources/network_chart_v1.png sn-network-chart-ext",
|
||||
"eslint": "eslint src",
|
||||
"spec": "scriptappy-from-jsdoc -c ./spec-configs/props.conf.js",
|
||||
"test:unit": "jest",
|
||||
"prepublishOnly": "shx rm -rf dist && shx rm -rf core/esm && shx rm -rf sn-network-chart-ext && yarn build && yarn sense"
|
||||
"spec": "sy from-jsdoc -c ./spec-configs/props.conf.js",
|
||||
"test:unit": "jest"
|
||||
},
|
||||
"files": [
|
||||
"api-specifications",
|
||||
@@ -26,23 +25,24 @@
|
||||
"main": "dist/sn-network-chart.js",
|
||||
"systemjs": "dist/sn-network-chart.systemjs.js",
|
||||
"devDependencies": {
|
||||
"@nebula.js/cli": "3.0.4",
|
||||
"@nebula.js/cli-build": "3.0.4",
|
||||
"@nebula.js/cli-sense": "3.0.4",
|
||||
"@nebula.js/cli-serve": "3.0.4",
|
||||
"@nebula.js/stardust": "3.0.4",
|
||||
"@testing-library/jest-dom": "5.16.4",
|
||||
"babel-eslint": "10.1.0",
|
||||
"babel-jest": "28.1.3",
|
||||
"eslint": "7.32.0",
|
||||
"jest": "28.1.3",
|
||||
"jest-environment-jsdom": "28.1.3",
|
||||
"scriptappy-from-jsdoc": "0.7.0",
|
||||
"shx": "0.3.3",
|
||||
"vis-data": "7.1.4",
|
||||
"vis-network": "9.1.2"
|
||||
"@nebula.js/cli": "4.0.3",
|
||||
"@nebula.js/cli-build": "4.0.3",
|
||||
"@nebula.js/cli-sense": "4.0.3",
|
||||
"@nebula.js/cli-serve": "4.0.3",
|
||||
"@nebula.js/stardust": "4.0.3",
|
||||
"@testing-library/jest-dom": "5.16.5",
|
||||
"@babel/eslint-parser": "7.21.8",
|
||||
"eslint": "8.40.0",
|
||||
"jest": "29.5.0",
|
||||
"jest-environment-jsdom": "29.5.0",
|
||||
"jest-junit": "^16.0.0",
|
||||
"@scriptappy/cli": "0.8.0",
|
||||
"@scriptappy/from-jsdoc": "0.17.0",
|
||||
"shx": "0.3.4",
|
||||
"vis-data": "7.1.6",
|
||||
"vis-network": "9.1.6"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@nebula.js/stardust": ">=1.0.0"
|
||||
"@nebula.js/stardust": ">=1.7.0"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
# @nebula.js/sn-network-chart
|
||||
# sn-network-chart
|
||||
|
||||
The network chart is built using [visjs network visualization](https://github.com/visjs/vis-network) to display networks of nodes and edges. It was originally forked from [miclae76/network-vis-chart](miclae76/network-vis-chart) and has since been converted to use Nebula.
|
||||
|
||||
## Legacy build
|
||||
The chart before Nebula conversion and dependency updates can be found on the *release/legacy* branch.
|
||||
A network chart to be used with nebula.js, built using [visjs network visualization](https://github.com/visjs/vis-network) to display networks of nodes and edges.
|
||||
|
||||
## Requirements
|
||||
|
||||
|
||||
4
readme_legacy.md
Normal file
4
readme_legacy.md
Normal file
@@ -0,0 +1,4 @@
|
||||
## Legacy build
|
||||
The chart before Nebula conversion and dependency updates can be found on the *release/legacy* branch.
|
||||
|
||||
Originally forked from [miclae76/network-vis-chart](miclae76/network-vis-chart) and has since been converted to use Nebula.
|
||||
@@ -3,24 +3,25 @@ const path = require('path');
|
||||
const pkg = require(path.resolve(__dirname, '../package.json')); // eslint-disable-line
|
||||
|
||||
module.exports = {
|
||||
glob: ['./src/extension/properties.js'],
|
||||
package: path.resolve(__dirname, '../package.json'),
|
||||
glob: ["./src/extension/properties.js"],
|
||||
package: path.resolve(__dirname, "../package.json"),
|
||||
api: {
|
||||
stability: 'experimental',
|
||||
stability: "stable",
|
||||
properties: {
|
||||
'x-qlik-visibility': 'public',
|
||||
"x-qlik-visibility": "public",
|
||||
},
|
||||
visibility: 'public',
|
||||
visibility: "public",
|
||||
name: `${pkg.name}:properties`,
|
||||
version: pkg.version,
|
||||
description: 'Network chart generic object definition',
|
||||
description: "Network chart generic object definition",
|
||||
},
|
||||
output: {
|
||||
file: path.resolve(__dirname, '../api-specifications/properties.json'),
|
||||
file: path.resolve(__dirname, "../api-specifications/properties.json"),
|
||||
},
|
||||
parse: {
|
||||
types: {
|
||||
NxMeasure: {},
|
||||
HyperCubeDef: {},
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
@@ -1,36 +1,43 @@
|
||||
export default {
|
||||
/**
|
||||
* @typedef {object}
|
||||
* @entry
|
||||
*/
|
||||
const properties = {
|
||||
/**
|
||||
* Current version of this generic object definition
|
||||
* @type {string}
|
||||
*/
|
||||
version: process.env.PACKAGE_VERSION,
|
||||
/**
|
||||
* @typedef
|
||||
* Extends `HyperCubeDef`, see Engine API: `HyperCubeDef`.
|
||||
* @extends {HyperCubeDef}
|
||||
*/
|
||||
qHyperCubeDef: {
|
||||
qDimensions: [],
|
||||
qMeasures: [],
|
||||
qInitialDataFetch: [{
|
||||
qWidth: 7,
|
||||
qHeight: 1400
|
||||
}]
|
||||
qInitialDataFetch: [
|
||||
{
|
||||
qWidth: 7,
|
||||
qHeight: 1400,
|
||||
},
|
||||
],
|
||||
},
|
||||
/**
|
||||
* @type {boolean=}
|
||||
*/
|
||||
* @type {boolean=}
|
||||
*/
|
||||
showTitles: false,
|
||||
/**
|
||||
* @type {string=}
|
||||
*/
|
||||
title: '',
|
||||
* @type {string=}
|
||||
*/
|
||||
title: "",
|
||||
/**
|
||||
* @type {string=}
|
||||
*/
|
||||
subtitle: '',
|
||||
* @type {string=}
|
||||
*/
|
||||
subtitle: "",
|
||||
/**
|
||||
* @type {string=}
|
||||
*/
|
||||
footnote: '',
|
||||
* @type {string=}
|
||||
*/
|
||||
footnote: "",
|
||||
/**
|
||||
* @type {('dynamic'|'continuous'|'discrete'|'diagonalCross'|'straightCross'|'horizontal'|'vertical'|'curvedCW'|'curvedCCW'|'cubicBezier')=}
|
||||
*/
|
||||
@@ -51,4 +58,6 @@ export default {
|
||||
* @type {boolean=}
|
||||
*/
|
||||
shadowMode: false,
|
||||
};
|
||||
};
|
||||
|
||||
export default properties;
|
||||
|
||||
Reference in New Issue
Block a user