@pb33f/cowboy-components 0.2.1 → 0.2.2
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/dist/components/model-renderer/rendered-node.css.d.ts +2 -0
- package/dist/components/model-renderer/rendered-node.css.js +96 -0
- package/dist/components/model-renderer/rendered-node.d.ts +8 -0
- package/dist/components/model-renderer/rendered-node.js +117 -0
- package/dist/components/model-renderer/rendered-property.css.d.ts +2 -0
- package/dist/components/model-renderer/rendered-property.css.js +118 -0
- package/dist/components/model-renderer/rendered-property.d.ts +14 -0
- package/dist/components/model-renderer/rendered-property.js +204 -0
- package/dist/components/model-tree/tree-item.d.ts +10 -0
- package/dist/components/model-tree/tree-item.js +37 -0
- package/dist/components/model-tree/tree.css.d.ts +2 -0
- package/dist/components/model-tree/tree.css.js +20 -0
- package/dist/components/model-tree/tree.d.ts +16 -0
- package/dist/components/model-tree/tree.js +103 -0
- package/dist/components/the-doctor/the-doctor.d.ts +2 -1
- package/dist/components/the-doctor/the-doctor.js +32 -13
- package/dist/components/visualizer/explorer.d.ts +52 -0
- package/dist/components/visualizer/explorer.js +296 -0
- package/dist/components/visualizer/node.d.ts +11 -0
- package/dist/components/visualizer/node.js +27 -0
- package/dist/components/visualizer/operation.css.d.ts +2 -0
- package/dist/components/visualizer/operation.css.js +53 -0
- package/dist/components/visualizer/operation.d.ts +12 -0
- package/dist/components/visualizer/operation.js +52 -0
- package/dist/components/visualizer/visualizer.css.d.ts +2 -0
- package/dist/components/visualizer/visualizer.css.js +157 -0
- package/dist/components/visualizer/visualizer.d.ts +60 -0
- package/dist/components/visualizer/visualizer.js +137 -0
- package/dist/cowboy-components.d.ts +1 -0
- package/dist/cowboy-components.js +2 -0
- package/dist/cowboy-components.umd.cjs +948 -322
- package/dist/css/pb33f-theme.css +1 -1
- package/dist/events/doctor.d.ts +5 -0
- package/dist/events/doctor.js +2 -0
- package/dist/model/graph.d.ts +6 -0
- package/dist/model/graph.js +1 -0
- package/dist/services/model-service.d.ts +5 -0
- package/dist/services/model-service.js +30 -0
- package/dist/style.css +1 -1
- package/package.json +6 -3
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { css } from "lit";
|
|
2
|
+
export default css `
|
|
3
|
+
|
|
4
|
+
h3 {
|
|
5
|
+
padding-top: 5px;
|
|
6
|
+
margin: 0;
|
|
7
|
+
font-size: 1.2rem;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.node-path {
|
|
11
|
+
font-size: 0.7rem;
|
|
12
|
+
word-wrap: break-word;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
sl-badge::part(base) {
|
|
16
|
+
border-radius: 0;
|
|
17
|
+
background-color: var(--background-color);
|
|
18
|
+
border: 1px solid var(--secondary-color);
|
|
19
|
+
color: var(--secondary-color);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
.prop {
|
|
24
|
+
font-size: 0.8rem;
|
|
25
|
+
padding: 5px 5px 5px 10px;
|
|
26
|
+
border: 1px solid var(--secondary-color);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.prop-key {
|
|
30
|
+
display: inline-block;
|
|
31
|
+
min-width: 80px;
|
|
32
|
+
text-align: right;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.empty-node {
|
|
36
|
+
font-size: 0.8rem;
|
|
37
|
+
color: var(--primary-color);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.empty-node:hover {
|
|
41
|
+
cursor: pointer;
|
|
42
|
+
text-decoration: underline;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.empty-node:active {
|
|
46
|
+
cursor: pointer;
|
|
47
|
+
text-decoration: underline;
|
|
48
|
+
color: var(--error-color);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
.property {
|
|
52
|
+
border: 1px solid var(--secondary-color);
|
|
53
|
+
width: 100%;
|
|
54
|
+
font-size: 0.8rem;
|
|
55
|
+
margin-top: 5px;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
table {
|
|
60
|
+
border: 1px solid var(--secondary-color);
|
|
61
|
+
width: 100%;
|
|
62
|
+
font-size: 0.8rem;
|
|
63
|
+
margin-top: 5px;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
.nested-props {
|
|
69
|
+
margin-left: 20px;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
td {
|
|
73
|
+
// border: 1px dashed var(--secondary-color);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
td.key {
|
|
77
|
+
width: 5%;
|
|
78
|
+
text-align: right;
|
|
79
|
+
padding-right: 5px;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.required {
|
|
83
|
+
display: inline-block;
|
|
84
|
+
padding: 1px;
|
|
85
|
+
color: var(--warn-200);
|
|
86
|
+
border: 1px solid var(--warn-200);
|
|
87
|
+
font-size: 0.6rem;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
hr {
|
|
93
|
+
margin-top: 10px;
|
|
94
|
+
margin-bottom: 10px;
|
|
95
|
+
}
|
|
96
|
+
`;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { LitElement } from "lit";
|
|
2
|
+
import { Node } from "../visualizer/visualizer.js";
|
|
3
|
+
import './rendered-property.js';
|
|
4
|
+
export declare class RenderedNodeComponent extends LitElement {
|
|
5
|
+
static styles: import("lit").CSSResult[];
|
|
6
|
+
node: Node;
|
|
7
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { customElement, property } from "lit/decorators.js";
|
|
8
|
+
import { html, LitElement } from "lit";
|
|
9
|
+
import renderedNodeCss from "./rendered-node.css.js";
|
|
10
|
+
import './rendered-property.js';
|
|
11
|
+
import sharedCss from "../../css/shared.css.js";
|
|
12
|
+
let RenderedNodeComponent = class RenderedNodeComponent extends LitElement {
|
|
13
|
+
//buildProps(obj: any, required: string[] = []) {
|
|
14
|
+
// return html``
|
|
15
|
+
//
|
|
16
|
+
//
|
|
17
|
+
//
|
|
18
|
+
// const props: Map<string, any> = new Map<string, any>();
|
|
19
|
+
// for (const key in obj) {
|
|
20
|
+
// if (obj.hasOwnProperty(key)) {
|
|
21
|
+
// const element = obj[key];
|
|
22
|
+
// props.set(key, element);
|
|
23
|
+
// }
|
|
24
|
+
// }
|
|
25
|
+
// let requiredProps: string[] = []
|
|
26
|
+
// if (props.get('required')) {
|
|
27
|
+
// requiredProps = props.get('required')
|
|
28
|
+
// }
|
|
29
|
+
// requiredProps.push(...required)
|
|
30
|
+
// console.log(requiredProps);
|
|
31
|
+
// return html`
|
|
32
|
+
//
|
|
33
|
+
// <table>
|
|
34
|
+
//
|
|
35
|
+
// ${Array.from(props).map(([key, value]) => {
|
|
36
|
+
//
|
|
37
|
+
// if (!isNaN(key as any) && !isNaN(parseFloat(key as any))) {
|
|
38
|
+
// key = "-"
|
|
39
|
+
// }
|
|
40
|
+
//
|
|
41
|
+
// if (typeof value === 'object' && !Array.isArray(value)) {
|
|
42
|
+
//
|
|
43
|
+
// let required = false;
|
|
44
|
+
// if (requiredProps.includes(key)){
|
|
45
|
+
// required = true;
|
|
46
|
+
// const idx = requiredProps.indexOf(key);
|
|
47
|
+
// requiredProps.splice(idx, 1);
|
|
48
|
+
// }
|
|
49
|
+
//
|
|
50
|
+
// return html`
|
|
51
|
+
// <tr>
|
|
52
|
+
//
|
|
53
|
+
// <td colspan="2"> ${key} ${required? html`<span class="required">required</span>`: requiredProps}
|
|
54
|
+
// <div class="nested-props">${this.buildProps(value, requiredProps)}</div></td>
|
|
55
|
+
// </tr>`;
|
|
56
|
+
// }
|
|
57
|
+
//
|
|
58
|
+
// if (typeof value === 'object' && Array.isArray(value)) {
|
|
59
|
+
// if (key === 'required') {
|
|
60
|
+
// return html``;
|
|
61
|
+
// }
|
|
62
|
+
// return html`
|
|
63
|
+
// <tr>
|
|
64
|
+
// <td colspan="2"> ${key} []
|
|
65
|
+
// <div class="nested-props">${this.buildProps(value)}</div>
|
|
66
|
+
// </td>
|
|
67
|
+
// </tr>`;
|
|
68
|
+
// }
|
|
69
|
+
//
|
|
70
|
+
// if (key.startsWith('$ref')) {
|
|
71
|
+
// value = "REF()"
|
|
72
|
+
// }
|
|
73
|
+
//
|
|
74
|
+
//
|
|
75
|
+
// return html`
|
|
76
|
+
// <tr>
|
|
77
|
+
// <td class="key">${key}${key!='-'? ':':''}</td>
|
|
78
|
+
// <td>${value}</td>
|
|
79
|
+
// </tr>
|
|
80
|
+
// `;
|
|
81
|
+
// })}
|
|
82
|
+
// </table>
|
|
83
|
+
//
|
|
84
|
+
// `
|
|
85
|
+
// }
|
|
86
|
+
render() {
|
|
87
|
+
if (!this.node) {
|
|
88
|
+
return html `
|
|
89
|
+
<div class="rendered-node">
|
|
90
|
+
No Node
|
|
91
|
+
</div>
|
|
92
|
+
`;
|
|
93
|
+
}
|
|
94
|
+
console.log(this.node);
|
|
95
|
+
let renderedNode = html `<pb33f-rendered-property .value="${this.node.instance}" class="proppy"></pb33f-rendered-property>`;
|
|
96
|
+
if (!this.node.instance || Object.keys(this.node.instance).length === 0) {
|
|
97
|
+
renderedNode = html `<span class="empty-node">Defined on line [${this.node.line}]</span>`;
|
|
98
|
+
}
|
|
99
|
+
return html `
|
|
100
|
+
<div class="rendered-node">
|
|
101
|
+
<sl-badge>${this.node.type}</sl-badge>
|
|
102
|
+
<h3>${this.node.label}</h3>
|
|
103
|
+
<span class="node-path">$.<pb33f-render-json-path path="${this.node.id}"></pb33f-render-json-path></span>
|
|
104
|
+
<hr/>
|
|
105
|
+
${renderedNode}
|
|
106
|
+
</div>
|
|
107
|
+
`;
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
RenderedNodeComponent.styles = [sharedCss, renderedNodeCss];
|
|
111
|
+
__decorate([
|
|
112
|
+
property()
|
|
113
|
+
], RenderedNodeComponent.prototype, "node", void 0);
|
|
114
|
+
RenderedNodeComponent = __decorate([
|
|
115
|
+
customElement('pb33f-rendered-node')
|
|
116
|
+
], RenderedNodeComponent);
|
|
117
|
+
export { RenderedNodeComponent };
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { css } from "lit";
|
|
2
|
+
export default css `
|
|
3
|
+
|
|
4
|
+
.property {
|
|
5
|
+
border-left: 1px dashed var(--secondary-color);
|
|
6
|
+
|
|
7
|
+
font-size: 0.8rem;
|
|
8
|
+
//padding-top: 10px;
|
|
9
|
+
padding-left: 10px;
|
|
10
|
+
//padding-bottom: 10px;
|
|
11
|
+
|
|
12
|
+
//margin-bottom: 30px;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.property-start {
|
|
16
|
+
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.property-end {
|
|
20
|
+
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.inline-property {
|
|
24
|
+
font-size: 0.8rem;
|
|
25
|
+
margin-bottom: 5px;
|
|
26
|
+
margin-top: 5px;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.inline-ref {
|
|
30
|
+
font-size: 0.8rem;
|
|
31
|
+
margin-top: 10px;
|
|
32
|
+
margin-bottom: 10px;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.reflink {
|
|
36
|
+
color: var(--terminal-text);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.poly-reflink {
|
|
40
|
+
color: var(--warn-color);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
sl-icon.reflink, sl-icon.poly-reflink {
|
|
45
|
+
font-size: 1.3rem;
|
|
46
|
+
vertical-align: sub;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.inline-ref:hover {
|
|
50
|
+
text-decoration: underline;
|
|
51
|
+
cursor: pointer;
|
|
52
|
+
}
|
|
53
|
+
.inline-ref:active {
|
|
54
|
+
text-decoration: underline;
|
|
55
|
+
cursor: pointer;
|
|
56
|
+
color: var(--error-color);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.type {
|
|
60
|
+
display: inline-block;
|
|
61
|
+
padding: 1px;
|
|
62
|
+
color: var(--secondary-color);
|
|
63
|
+
//border: 1px solid var(--secondary-color);
|
|
64
|
+
font-size: 0.8rem;
|
|
65
|
+
margin-bottom: 5px;
|
|
66
|
+
}
|
|
67
|
+
.nested {
|
|
68
|
+
padding-left: 15px;
|
|
69
|
+
margin-top: 5px;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.nested-inline {
|
|
73
|
+
display: inline-block;
|
|
74
|
+
text-align: center;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.object-node {
|
|
78
|
+
margin-bottom: 5px;
|
|
79
|
+
margin-top: 5px;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.required {
|
|
83
|
+
display: inline-block;
|
|
84
|
+
padding: 1px;
|
|
85
|
+
color: var(--primary-color);
|
|
86
|
+
|
|
87
|
+
font-size: 0.7rem;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
.ref {
|
|
91
|
+
display: inline-block;
|
|
92
|
+
padding: 1px;
|
|
93
|
+
color: var(--primary-color);
|
|
94
|
+
border: 1px dashed var(--primary-color);
|
|
95
|
+
font-size: 0.7rem;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
.label {
|
|
99
|
+
font-family: var(--font-stack-bold), monospace;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
.prop-key {
|
|
103
|
+
color: var(--font-color-sub1)
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
.prop-type {
|
|
107
|
+
color: var(--primary-color);
|
|
108
|
+
font-family: var(--font-stack-bold), monospace;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
.summary {
|
|
112
|
+
color: red;
|
|
113
|
+
border: 1px dashed var(--font-color-sub2);
|
|
114
|
+
padding: 5px;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
`;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { LitElement } from "lit";
|
|
2
|
+
export declare class RenderedPropertyComponent extends LitElement {
|
|
3
|
+
static styles: import("lit").CSSResult[];
|
|
4
|
+
requiredProps: string[];
|
|
5
|
+
propType: string[];
|
|
6
|
+
value: any;
|
|
7
|
+
open: boolean;
|
|
8
|
+
polyParent: boolean;
|
|
9
|
+
ignoreProps: string[];
|
|
10
|
+
depth: number;
|
|
11
|
+
constructor();
|
|
12
|
+
toggleOpen(): void;
|
|
13
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { customElement, property } from "lit/decorators.js";
|
|
8
|
+
import { html, LitElement } from "lit";
|
|
9
|
+
import renderedPropertyCss from "./rendered-property.css.js";
|
|
10
|
+
let RenderedPropertyComponent = class RenderedPropertyComponent extends LitElement {
|
|
11
|
+
constructor() {
|
|
12
|
+
super();
|
|
13
|
+
this.ignoreProps = ['required', 'example', 'examples', 'type'];
|
|
14
|
+
this.depth = 0;
|
|
15
|
+
this.polyParent = false;
|
|
16
|
+
}
|
|
17
|
+
toggleOpen() {
|
|
18
|
+
this.open = !this.open;
|
|
19
|
+
}
|
|
20
|
+
render() {
|
|
21
|
+
if (!this.value || Object.keys(this.value).length === 0) {
|
|
22
|
+
return html ``;
|
|
23
|
+
}
|
|
24
|
+
const props = new Map();
|
|
25
|
+
for (const key in this.value) {
|
|
26
|
+
if (this.value.hasOwnProperty(key)) {
|
|
27
|
+
const element = this.value[key];
|
|
28
|
+
props.set(key, element);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
let requiredProps = [];
|
|
32
|
+
if (props.get('required')) {
|
|
33
|
+
const rp = props.get('required');
|
|
34
|
+
if (typeof rp == 'boolean') {
|
|
35
|
+
requiredProps = ['true'];
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
requiredProps = rp;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
if (Array.isArray(this.requiredProps) && this.requiredProps.length > 0) {
|
|
42
|
+
requiredProps.push(...this.requiredProps);
|
|
43
|
+
}
|
|
44
|
+
let hasType = false;
|
|
45
|
+
if (this.value.hasOwnProperty('type')) {
|
|
46
|
+
hasType = true;
|
|
47
|
+
}
|
|
48
|
+
let typeDef = html ``;
|
|
49
|
+
if (this.depth == 0 && hasType) {
|
|
50
|
+
if (Array.isArray(this.value['type'])) {
|
|
51
|
+
typeDef = html `
|
|
52
|
+
<div>
|
|
53
|
+
<span class="label">type:</span> ${Array.from(this.value['type']).map((type, i) => {
|
|
54
|
+
return html `<span class="type">${type}</span> ${i + 1 < this.value['type'].length ? ', ' : ''}`;
|
|
55
|
+
})}
|
|
56
|
+
</div>`;
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
typeDef = html `
|
|
60
|
+
<div>
|
|
61
|
+
<span class="label">type:</span> <span class="type">${this.value['type']}</span>
|
|
62
|
+
</div>`;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
const propArr = Array.from(props);
|
|
66
|
+
return html `
|
|
67
|
+
|
|
68
|
+
<div class="property">
|
|
69
|
+
${typeDef}
|
|
70
|
+
|
|
71
|
+
${propArr.map(([key, value], i) => {
|
|
72
|
+
let isNumKey = false;
|
|
73
|
+
if (!isNaN(key) && !isNaN(parseFloat(key))) {
|
|
74
|
+
key = `[${i}]`;
|
|
75
|
+
isNumKey = true;
|
|
76
|
+
}
|
|
77
|
+
let isPoly = false;
|
|
78
|
+
if (key == 'oneOf' || key == 'anyOf' || key == 'allOf' || this.polyParent) {
|
|
79
|
+
isPoly = true;
|
|
80
|
+
}
|
|
81
|
+
if (typeof value === 'object' && !Array.isArray(value)) {
|
|
82
|
+
if (this.ignoreProps.includes(key)) {
|
|
83
|
+
return html ``;
|
|
84
|
+
}
|
|
85
|
+
let required = false;
|
|
86
|
+
if (requiredProps?.includes(key)) {
|
|
87
|
+
required = true;
|
|
88
|
+
const idx = requiredProps.indexOf(key);
|
|
89
|
+
requiredProps.splice(idx, 1);
|
|
90
|
+
}
|
|
91
|
+
let propType = [];
|
|
92
|
+
let propTypeRendered = html ``;
|
|
93
|
+
if (value.hasOwnProperty('type')) {
|
|
94
|
+
propType = value['type'];
|
|
95
|
+
if (Array.isArray(propType) && propType.length > 0) {
|
|
96
|
+
propTypeRendered = html `${propType.length > 0 ? propType.map((type) => {
|
|
97
|
+
return html `<span class="type">${type}</span>`;
|
|
98
|
+
}) : html ``}`;
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
propTypeRendered = html `<span class="type">${propType}</span>`;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
let nested = html `
|
|
105
|
+
<div class="nested">
|
|
106
|
+
<pb33f-rendered-property .value="${value}"
|
|
107
|
+
.requiredProps="${requiredProps}"
|
|
108
|
+
.depth="${this.depth + 1}"
|
|
109
|
+
?polyParent="${isPoly}"></pb33f-rendered-property>
|
|
110
|
+
</div>`;
|
|
111
|
+
let isRef = false;
|
|
112
|
+
// let isRefRendered = html``
|
|
113
|
+
if (value.hasOwnProperty('$ref')) {
|
|
114
|
+
isRef = true;
|
|
115
|
+
const ref = value['$ref'];
|
|
116
|
+
const segs = ref.split('/');
|
|
117
|
+
const refName = segs[segs.length - 1];
|
|
118
|
+
// isRefRendered = html`<span class="ref">refy</span>:`
|
|
119
|
+
nested = html `
|
|
120
|
+
<div class="nested${isNumKey ? '-inline' : ''}">
|
|
121
|
+
<sl-icon name="link"
|
|
122
|
+
class="${this.polyParent ? 'poly-reflink' : 'reflink'}"></sl-icon>
|
|
123
|
+
<span class="inline-ref ${this.polyParent ? 'poly-reflink' : 'reflink'}">${refName}</span>
|
|
124
|
+
</div>`;
|
|
125
|
+
}
|
|
126
|
+
return html `
|
|
127
|
+
<div class="object-node">
|
|
128
|
+
<span class="${(propType.length > 0 || isRef) ? 'prop-type' : 'prop-key'}">${key}</span>:
|
|
129
|
+
${propTypeRendered}
|
|
130
|
+
${required ? html `<span class="required">*required</span>` : ''}
|
|
131
|
+
${nested}
|
|
132
|
+
</div>
|
|
133
|
+
`;
|
|
134
|
+
}
|
|
135
|
+
if (typeof value === 'object' && Array.isArray(value)) {
|
|
136
|
+
if (this.ignoreProps.includes(key)) {
|
|
137
|
+
return html ``;
|
|
138
|
+
}
|
|
139
|
+
let nested = html `
|
|
140
|
+
<div class="nested">
|
|
141
|
+
<pb33f-rendered-property .value="${value}"
|
|
142
|
+
.requiredProps="${this.requiredProps}"
|
|
143
|
+
.depth="${this.depth + 1}"
|
|
144
|
+
?polyParent="${isPoly}"></pb33f-rendered-property>
|
|
145
|
+
</div>`;
|
|
146
|
+
if (value.length == 0) {
|
|
147
|
+
nested = html `<span class="nested-inline">[empty]</span>`;
|
|
148
|
+
}
|
|
149
|
+
return html `
|
|
150
|
+
<div>
|
|
151
|
+
<span class="${(value.length == 0) ? 'prop-type' : 'prop-key'}">${key}</span>:
|
|
152
|
+
${nested}
|
|
153
|
+
</div>
|
|
154
|
+
</div>`;
|
|
155
|
+
}
|
|
156
|
+
let renderedProp = html `<span class="prop-type">${key}</span>: ${value}`;
|
|
157
|
+
if (key.startsWith('$ref')) {
|
|
158
|
+
const segs = value.split('/');
|
|
159
|
+
value = segs[segs.length - 1];
|
|
160
|
+
renderedProp = html `reference: <div class="nested-inline"><sl-icon name="link" class="reflink"></sl-icon>
|
|
161
|
+
<span class="inline-ref reflink">${value}</span></div>`;
|
|
162
|
+
}
|
|
163
|
+
if (key == 'description' || key == 'summary') {
|
|
164
|
+
renderedProp = html `<div class="summary">${value}</div>`;
|
|
165
|
+
}
|
|
166
|
+
if (this.ignoreProps.includes(key)) {
|
|
167
|
+
return html ``;
|
|
168
|
+
}
|
|
169
|
+
const op = html `<div class="inline-property">${renderedProp}</div>`;
|
|
170
|
+
if (this.depth > 0) {
|
|
171
|
+
this.depth--;
|
|
172
|
+
}
|
|
173
|
+
return op;
|
|
174
|
+
})}
|
|
175
|
+
</div>
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
`;
|
|
180
|
+
}
|
|
181
|
+
};
|
|
182
|
+
RenderedPropertyComponent.styles = [renderedPropertyCss];
|
|
183
|
+
__decorate([
|
|
184
|
+
property()
|
|
185
|
+
], RenderedPropertyComponent.prototype, "requiredProps", void 0);
|
|
186
|
+
__decorate([
|
|
187
|
+
property()
|
|
188
|
+
], RenderedPropertyComponent.prototype, "propType", void 0);
|
|
189
|
+
__decorate([
|
|
190
|
+
property()
|
|
191
|
+
], RenderedPropertyComponent.prototype, "value", void 0);
|
|
192
|
+
__decorate([
|
|
193
|
+
property({ type: Boolean })
|
|
194
|
+
], RenderedPropertyComponent.prototype, "open", void 0);
|
|
195
|
+
__decorate([
|
|
196
|
+
property({ type: Boolean })
|
|
197
|
+
], RenderedPropertyComponent.prototype, "polyParent", void 0);
|
|
198
|
+
__decorate([
|
|
199
|
+
property({ type: Number })
|
|
200
|
+
], RenderedPropertyComponent.prototype, "depth", void 0);
|
|
201
|
+
RenderedPropertyComponent = __decorate([
|
|
202
|
+
customElement('pb33f-rendered-property')
|
|
203
|
+
], RenderedPropertyComponent);
|
|
204
|
+
export { RenderedPropertyComponent };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import '@shoelace-style/shoelace/dist/components/tree-item/tree-item.js';
|
|
2
|
+
import { TemplateResult } from "lit";
|
|
3
|
+
import { Node } from "../visualizer/visualizer";
|
|
4
|
+
import { SlTreeItem } from "@shoelace-style/shoelace";
|
|
5
|
+
export declare class ModelTreeItem extends SlTreeItem {
|
|
6
|
+
node: Node;
|
|
7
|
+
results: TemplateResult[];
|
|
8
|
+
constructor(node: Node, results: TemplateResult[]);
|
|
9
|
+
render(): TemplateResult<1>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import '@shoelace-style/shoelace/dist/components/tree-item/tree-item.js';
|
|
8
|
+
import { customElement, property } from "lit/decorators.js";
|
|
9
|
+
import { html } from "lit";
|
|
10
|
+
import { SlTreeItem } from "@shoelace-style/shoelace";
|
|
11
|
+
let ModelTreeItem = class ModelTreeItem extends SlTreeItem {
|
|
12
|
+
constructor(node, results) {
|
|
13
|
+
super();
|
|
14
|
+
this.node = node;
|
|
15
|
+
this.results = results;
|
|
16
|
+
}
|
|
17
|
+
render() {
|
|
18
|
+
return html `
|
|
19
|
+
<sl-tree-item expanded>
|
|
20
|
+
<sl-icon name="plus-square" slot="expand-icon"></sl-icon>
|
|
21
|
+
<sl-icon name="dash-square" slot="collapse-icon"></sl-icon>
|
|
22
|
+
${this.node.label} (${this.node.nodePath})
|
|
23
|
+
${this.results}
|
|
24
|
+
</sl-tree-item>
|
|
25
|
+
`;
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
__decorate([
|
|
29
|
+
property()
|
|
30
|
+
], ModelTreeItem.prototype, "node", void 0);
|
|
31
|
+
__decorate([
|
|
32
|
+
property()
|
|
33
|
+
], ModelTreeItem.prototype, "results", void 0);
|
|
34
|
+
ModelTreeItem = __decorate([
|
|
35
|
+
customElement("pb33f-model-treeitem")
|
|
36
|
+
], ModelTreeItem);
|
|
37
|
+
export { ModelTreeItem };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { css } from "lit";
|
|
2
|
+
export default css `
|
|
3
|
+
|
|
4
|
+
sl-tree {
|
|
5
|
+
--indent-guide-width: 1px;
|
|
6
|
+
--indent-guide-color: var(--secondary-color);
|
|
7
|
+
--indent-guide-style: dashed;
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
}
|
|
11
|
+
sl-tree-item {
|
|
12
|
+
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
sl-tree-item::part(expand-button) {
|
|
17
|
+
rotate: none;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
`;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import '@shoelace-style/shoelace/dist/components/tree/tree.js';
|
|
2
|
+
import '@shoelace-style/shoelace/dist/components/tree-item/tree-item.js';
|
|
3
|
+
import { LitElement, TemplateResult } from "lit";
|
|
4
|
+
import { Node } from "../visualizer/visualizer.js";
|
|
5
|
+
import { SlTreeItem } from "@shoelace-style/shoelace";
|
|
6
|
+
export declare class ModelTree extends LitElement {
|
|
7
|
+
static styles: import("lit").CSSResult[];
|
|
8
|
+
node: Node;
|
|
9
|
+
nodeClicked(nodeHashId: string): void;
|
|
10
|
+
explorerClicked(nodeHashId: string): void;
|
|
11
|
+
collapse(evt: Event, node: Node): void;
|
|
12
|
+
expanded(evt: Event, node: Node): void;
|
|
13
|
+
buildTree(node: Node, depth: number): TemplateResult;
|
|
14
|
+
nodesSelected(treeItems: SlTreeItem[]): void;
|
|
15
|
+
render(): TemplateResult<1>;
|
|
16
|
+
}
|