@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.
@@ -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,4 @@
1
+ @use '@nu-art/thunderstorm/styles' as tsStyles;
2
+
3
+ .ts-ats.ats-JsonToObject {
4
+ }
@@ -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
+ }