@nu-art/json-to-object-renderer 0.400.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ATS_JsonToObject/ATS_JsonToObject.d.ts +24 -0
- package/ATS_JsonToObject/ATS_JsonToObject.js +42 -0
- package/ATS_JsonToObject/ATS_JsonToObject.js.map +1 -0
- package/ATS_JsonToObject/ATS_JsonToObject.scss +4 -0
- package/ATS_JsonToObject/index.d.ts +1 -0
- package/ATS_JsonToObject/index.js +18 -0
- package/ATS_JsonToObject/index.js.map +1 -0
- package/Editor_JsonToObject.d.ts +21 -0
- package/Editor_JsonToObject.js +49 -0
- package/Editor_JsonToObject.js.map +1 -0
- package/Editor_JsonToObject.scss +20 -0
- package/package.json +64 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { AppToolsScreen, ComponentSync, EditableItem } from '@nu-art/thunderstorm/frontend/index';
|
|
2
|
+
import { InferProps, InferState } from '@nu-art/thunderstorm/frontend/utils/types';
|
|
3
|
+
import React from 'react';
|
|
4
|
+
type ATS_JsonToObject_Props = {};
|
|
5
|
+
type ATS_JsonToObject_State = {
|
|
6
|
+
editable: EditableItem<TestType>;
|
|
7
|
+
freeText: boolean;
|
|
8
|
+
};
|
|
9
|
+
type TestType = {
|
|
10
|
+
a: string;
|
|
11
|
+
b: string;
|
|
12
|
+
c: string;
|
|
13
|
+
};
|
|
14
|
+
export declare class ATS_JsonToObject extends ComponentSync<ATS_JsonToObject_Props, ATS_JsonToObject_State> {
|
|
15
|
+
static screen: AppToolsScreen;
|
|
16
|
+
static defaultProps: {
|
|
17
|
+
modules: never[];
|
|
18
|
+
pageTitle: () => string;
|
|
19
|
+
};
|
|
20
|
+
protected deriveStateFromProps(nextProps: InferProps<this>, state: InferState<this>): InferState<this>;
|
|
21
|
+
constructor(p: ATS_JsonToObject_Props);
|
|
22
|
+
render(): React.JSX.Element;
|
|
23
|
+
}
|
|
24
|
+
export {};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ATS_JsonToObject = void 0;
|
|
7
|
+
const index_1 = require("@nu-art/thunderstorm/frontend/index");
|
|
8
|
+
const Editor_JsonToObject_js_1 = require("../Editor_JsonToObject.js");
|
|
9
|
+
const ts_common_1 = require("@nu-art/ts-common");
|
|
10
|
+
const react_1 = __importDefault(require("react"));
|
|
11
|
+
const validator = {
|
|
12
|
+
a: (0, ts_common_1.tsValidateString)(-1),
|
|
13
|
+
b: (0, ts_common_1.tsValidateString)(-1),
|
|
14
|
+
c: (0, ts_common_1.tsValidateString)(-1)
|
|
15
|
+
};
|
|
16
|
+
class ATS_JsonToObject extends index_1.ComponentSync {
|
|
17
|
+
static screen = { name: `DevTool - JsonToObject`, renderer: this };
|
|
18
|
+
static defaultProps = {
|
|
19
|
+
modules: [],
|
|
20
|
+
pageTitle: () => this.screen.name
|
|
21
|
+
};
|
|
22
|
+
deriveStateFromProps(nextProps, state) {
|
|
23
|
+
state.freeText ??= false;
|
|
24
|
+
state.editable ??= new index_1.EditableItem({}).setAutoSave(true);
|
|
25
|
+
return state;
|
|
26
|
+
}
|
|
27
|
+
constructor(p) {
|
|
28
|
+
super(p);
|
|
29
|
+
}
|
|
30
|
+
render() {
|
|
31
|
+
return react_1.default.createElement(index_1.LL_V_L, null,
|
|
32
|
+
react_1.default.createElement(Editor_JsonToObject_js_1.Editor_JsonToObject, { isFreeTextMode: this.state.freeText, validator: validator, editable: this.state.editable, renderer: (editable) => {
|
|
33
|
+
const item = editable.item;
|
|
34
|
+
return react_1.default.createElement(index_1.LL_V_L, null,
|
|
35
|
+
react_1.default.createElement(index_1.TS_PropRenderer.Vertical, { label: 'property a' }, item.a ?? 'no A'),
|
|
36
|
+
react_1.default.createElement(index_1.TS_PropRenderer.Vertical, { label: 'property b' }, item.b ?? 'no B'));
|
|
37
|
+
} }),
|
|
38
|
+
react_1.default.createElement(index_1.TS_Button, { onClick: () => this.reDeriveState({ freeText: !this.state.freeText }) }, "toggle"));
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.ATS_JsonToObject = ATS_JsonToObject;
|
|
42
|
+
//# sourceMappingURL=ATS_JsonToObject.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ATS_JsonToObject.js","sourceRoot":"/Users/tacb0ss/dev/nu-art/beamz/_thunderstorm/json-to-object-renderer/src/main/","sources":["ATS_JsonToObject/ATS_JsonToObject.tsx"],"names":[],"mappings":";;;;;;AAAA,+DAAoI;AAEpI,sEAA8D;AAC9D,iDAA0E;AAC1E,kDAA0B;AAc1B,MAAM,SAAS,GAAoC;IAClD,CAAC,EAAE,IAAA,4BAAgB,EAAC,CAAC,CAAC,CAAC;IACvB,CAAC,EAAE,IAAA,4BAAgB,EAAC,CAAC,CAAC,CAAC;IACvB,CAAC,EAAE,IAAA,4BAAgB,EAAC,CAAC,CAAC,CAAC;CACvB,CAAC;AAEF,MAAa,gBACZ,SAAQ,qBAA6D;IAErE,MAAM,CAAC,MAAM,GAAmB,EAAC,IAAI,EAAE,wBAAwB,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC;IAEjF,MAAM,CAAC,YAAY,GAAG;QACrB,OAAO,EAAE,EAAE;QACX,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI;KACjC,CAAC;IAEQ,oBAAoB,CAAC,SAA2B,EAAE,KAAuB;QAClF,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC;QACzB,KAAK,CAAC,QAAQ,KAAK,IAAI,oBAAY,CAAW,EAAE,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACpE,OAAO,KAAK,CAAC;IACd,CAAC;IAED,YAAY,CAAyB;QACpC,KAAK,CAAC,CAAC,CAAC,CAAC;IACV,CAAC;IAED,MAAM;QACL,OAAO,8BAAC,cAAM;YACb,8BAAC,4CAAmB,IACnB,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EACnC,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAC7B,QAAQ,EAAE,CAAC,QAAQ,EAAE,EAAE;oBACtB,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;oBAC3B,OAAO,8BAAC,cAAM;wBACb,8BAAC,uBAAe,CAAC,QAAQ,IAAC,KAAK,EAAE,YAAY,IAAG,IAAI,CAAC,CAAC,IAAI,MAAM,CAA4B;wBAC5F,8BAAC,uBAAe,CAAC,QAAQ,IAAC,KAAK,EAAE,YAAY,IAAG,IAAI,CAAC,CAAC,IAAI,MAAM,CAA4B,CACpF,CAAC;gBACX,CAAC,GACA;YACF,8BAAC,iBAAS,IAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,EAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAC,CAAC,aAAoB,CAC1F,CAAC;IACX,CAAC;;AApCF,4CAqCC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './ATS_JsonToObject.js';
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./ATS_JsonToObject.js"), exports);
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"/Users/tacb0ss/dev/nu-art/beamz/_thunderstorm/json-to-object-renderer/src/main/","sources":["ATS_JsonToObject/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wDAAsC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { EditableContentType, EditableItem, TS_EditableContent } from '@nu-art/thunderstorm/frontend/index';
|
|
2
|
+
import { ValidatorTypeResolver } from '@nu-art/ts-common';
|
|
3
|
+
import React, { ReactNode } from 'react';
|
|
4
|
+
import { InferProps, InferState } from '@nu-art/thunderstorm/frontend/utils/types';
|
|
5
|
+
import './Editor_JsonToObject.scss';
|
|
6
|
+
type Props<T> = {
|
|
7
|
+
validator: ValidatorTypeResolver<EditableContentType<T>>;
|
|
8
|
+
renderer: (item: EditableItem<EditableContentType<T>>) => ReactNode;
|
|
9
|
+
isFreeTextMode: boolean;
|
|
10
|
+
};
|
|
11
|
+
type State = {
|
|
12
|
+
isFreeTextMode: boolean;
|
|
13
|
+
value: string;
|
|
14
|
+
isValid: boolean;
|
|
15
|
+
};
|
|
16
|
+
export declare class Editor_JsonToObject<T> extends TS_EditableContent<T, Props<T>, State> {
|
|
17
|
+
protected deriveStateFromProps(nextProps: InferProps<this>, _state: InferState<this>): InferState<this>;
|
|
18
|
+
render(): React.JSX.Element;
|
|
19
|
+
private validateItem;
|
|
20
|
+
}
|
|
21
|
+
export {};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.Editor_JsonToObject = void 0;
|
|
7
|
+
const index_1 = require("@nu-art/thunderstorm/frontend/index");
|
|
8
|
+
const ts_common_1 = require("@nu-art/ts-common");
|
|
9
|
+
const react_1 = __importDefault(require("react"));
|
|
10
|
+
const index_2 = require("@nu-art/thunderstorm/frontend/components/TS_V2_TextArea/index");
|
|
11
|
+
require("./Editor_JsonToObject.scss");
|
|
12
|
+
class Editor_JsonToObject extends index_1.TS_EditableContent {
|
|
13
|
+
deriveStateFromProps(nextProps, _state) {
|
|
14
|
+
const state = super.deriveStateFromProps(nextProps, _state);
|
|
15
|
+
state.isFreeTextMode = nextProps.isFreeTextMode;
|
|
16
|
+
const value = nextProps.editable.item ? (0, ts_common_1.__stringify)(nextProps.editable.item, true) : '';
|
|
17
|
+
state.value = value;
|
|
18
|
+
state.isValid = this.validateItem(value).isValid;
|
|
19
|
+
return state;
|
|
20
|
+
}
|
|
21
|
+
render() {
|
|
22
|
+
const { isFreeTextMode, value, editable, isValid } = this.state;
|
|
23
|
+
return react_1.default.createElement(react_1.default.Fragment, null,
|
|
24
|
+
!isFreeTextMode && this.props.renderer(editable),
|
|
25
|
+
isFreeTextMode && react_1.default.createElement(index_2.TS_TextAreaV2, { className: 'ts-json-to-object', resizeWithText: true, "data-valid": isValid, type: "text", value: value, onChange: async (value) => {
|
|
26
|
+
const { isValid } = this.validateItem(value);
|
|
27
|
+
return this.setState({ isValid });
|
|
28
|
+
}, onBlur: async (value) => {
|
|
29
|
+
const { isValid, item } = this.validateItem(value);
|
|
30
|
+
if (!isValid)
|
|
31
|
+
return this.setState({ isValid, value });
|
|
32
|
+
await editable.updateObj(item);
|
|
33
|
+
} }));
|
|
34
|
+
}
|
|
35
|
+
validateItem(value) {
|
|
36
|
+
let isValid;
|
|
37
|
+
let item = {};
|
|
38
|
+
try {
|
|
39
|
+
item = JSON.parse(value);
|
|
40
|
+
isValid = (0, ts_common_1.tsValidateResult)(item, this.props.validator) === undefined;
|
|
41
|
+
}
|
|
42
|
+
catch (e) {
|
|
43
|
+
isValid = false;
|
|
44
|
+
}
|
|
45
|
+
return { isValid, item };
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
exports.Editor_JsonToObject = Editor_JsonToObject;
|
|
49
|
+
//# sourceMappingURL=Editor_JsonToObject.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Editor_JsonToObject.js","sourceRoot":"/Users/tacb0ss/dev/nu-art/beamz/_thunderstorm/json-to-object-renderer/src/main/","sources":["Editor_JsonToObject.tsx"],"names":[],"mappings":";;;;;;AAAA,+DAA0G;AAC1G,iDAAuF;AACvF,kDAAuC;AACvC,yFAA4F;AAE5F,sCAAoC;AAcpC,MAAa,mBACZ,SAAQ,0BAAsC;IAEpC,oBAAoB,CAAC,SAA2B,EAAE,MAAwB;QACnF,MAAM,KAAK,GAAG,KAAK,CAAC,oBAAoB,CAAC,SAAS,EAAE,MAAM,CAAqB,CAAC;QAChF,KAAK,CAAC,cAAc,GAAG,SAAS,CAAC,cAAc,CAAC;QAEhD,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAA,uBAAW,EAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACxF,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;QACpB,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;QAEjD,OAAO,KAAK,CAAC;IACd,CAAC;IAED,MAAM;QACL,MAAM,EAAC,cAAc,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAC9D,OAAO;YACL,CAAC,cAAc,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAChD,cAAc,IAAI,8BAAC,qBAAa,IAChC,SAAS,EAAE,mBAAmB,EAC9B,cAAc,sBACF,OAAO,EACnB,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;oBACzB,MAAM,EAAC,OAAO,EAAC,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;oBAC3C,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAC,OAAO,EAAC,CAAC,CAAC;gBACjC,CAAC,EACD,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;oBACvB,MAAM,EAAC,OAAO,EAAE,IAAI,EAAC,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;oBACjD,IAAI,CAAC,OAAO;wBACX,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC,CAAC;oBAExC,MAAM,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBAChC,CAAC,GACA,CAEA,CAAC;IACL,CAAC;IAEO,YAAY,CAAC,KAAa;QACjC,IAAI,OAAgB,CAAC;QACrB,IAAI,IAAI,GAAG,EAA4B,CAAC;QACxC,IAAI,CAAC;YACJ,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAA2B,CAAC;YACnD,OAAO,GAAG,IAAA,4BAAgB,EAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,SAAS,CAAC;QACtE,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YACjB,OAAO,GAAG,KAAK,CAAC;QACjB,CAAC;QACD,OAAO,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC;IACxB,CAAC;CACD;AAnDD,kDAmDC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
@use '@nu-art/thunderstorm/styles' as tsStyles;
|
|
2
|
+
|
|
3
|
+
.ts-json-to-object {
|
|
4
|
+
align-items: stretch;
|
|
5
|
+
|
|
6
|
+
.ts-textarea .ts-json-to-object{
|
|
7
|
+
height: unset;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.ts-textarea .ts-json-to-object {
|
|
11
|
+
&[data-valid=false] {
|
|
12
|
+
background-color: rgba(255, 175, 154, 0.26);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
&[data-valid=true] {
|
|
16
|
+
background-color: rgba(175, 255, 154, 0.26);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@nu-art/json-to-object-renderer",
|
|
3
|
+
"version": "0.400.0",
|
|
4
|
+
"description": "Thunderstorm",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"TacB0sS",
|
|
7
|
+
"express",
|
|
8
|
+
"infra",
|
|
9
|
+
"nu-art",
|
|
10
|
+
"thunderstorm",
|
|
11
|
+
"typescript"
|
|
12
|
+
],
|
|
13
|
+
"homepage": "https://github.com/nu-art-js/thunderstorm",
|
|
14
|
+
"bugs": {
|
|
15
|
+
"url": "https://github.com/nu-art-js/thunderstorm/issues"
|
|
16
|
+
},
|
|
17
|
+
"repository": {
|
|
18
|
+
"type": "git",
|
|
19
|
+
"url": "git+ssh://git@github.com:nu-art-js/thunderstorm.git"
|
|
20
|
+
},
|
|
21
|
+
"license": "Apache-2.0",
|
|
22
|
+
"author": "TacB0sS",
|
|
23
|
+
"scripts": {
|
|
24
|
+
"build": "tsc"
|
|
25
|
+
},
|
|
26
|
+
"contributors": [
|
|
27
|
+
{
|
|
28
|
+
"name": "TacB0sS"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"name": "Cipher",
|
|
32
|
+
"url": "https://www.linkedin.com/in/itay-leybovich-470b87229/"
|
|
33
|
+
}
|
|
34
|
+
],
|
|
35
|
+
"publishConfig": {
|
|
36
|
+
"directory": "dist",
|
|
37
|
+
"linkDirectory": true
|
|
38
|
+
},
|
|
39
|
+
"dependencies": {
|
|
40
|
+
"@nu-art/firebase": "workspace:*",
|
|
41
|
+
"@nu-art/ts-common": "workspace:*",
|
|
42
|
+
"@nu-art/ts-styles": "workspace:*",
|
|
43
|
+
"@nu-art/thunderstorm": "workspace:*",
|
|
44
|
+
"react": "^18.0.0"
|
|
45
|
+
},
|
|
46
|
+
"devDependencies": {
|
|
47
|
+
"@types/react": "^18.0.0"
|
|
48
|
+
},
|
|
49
|
+
"unitConfig": {
|
|
50
|
+
"customTSConfig": true,
|
|
51
|
+
"type": "typescript-lib"
|
|
52
|
+
},
|
|
53
|
+
"type": "module",
|
|
54
|
+
"exports": {
|
|
55
|
+
".": {
|
|
56
|
+
"types": "./index.d.ts",
|
|
57
|
+
"import": "./index.js"
|
|
58
|
+
},
|
|
59
|
+
"./*": {
|
|
60
|
+
"types": "./*.d.ts",
|
|
61
|
+
"import": "./*.js"
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|