@operato/property-editor 0.1.19 → 0.2.31

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.
Files changed (52) hide show
  1. package/.storybook/main.js +2 -2
  2. package/.storybook/server.mjs +4 -4
  3. package/CHANGELOG.md +16 -1
  4. package/LICENSE +2 -2
  5. package/README.md +26 -7
  6. package/custom-elements.json +317 -0
  7. package/demo/index.html +18 -4
  8. package/dist/src/index.d.ts +1 -3
  9. package/dist/src/index.js +1 -3
  10. package/dist/src/index.js.map +1 -1
  11. package/dist/src/ox-property-editor.d.ts +28 -0
  12. package/dist/src/ox-property-editor.js +161 -0
  13. package/dist/src/ox-property-editor.js.map +1 -0
  14. package/dist/stories/index.stories.d.ts +1 -1
  15. package/dist/stories/index.stories.js +11 -15
  16. package/dist/stories/index.stories.js.map +1 -1
  17. package/dist/test/property-editor.test.d.ts +1 -0
  18. package/dist/test/property-editor.test.js +24 -0
  19. package/dist/test/property-editor.test.js.map +1 -0
  20. package/dist/tsconfig.tsbuildinfo +1 -1
  21. package/package.json +14 -33
  22. package/src/index.ts +1 -3
  23. package/src/ox-property-editor.ts +158 -0
  24. package/stories/index.stories.ts +30 -38
  25. package/test/property-editor.test.ts +34 -0
  26. package/tsconfig.json +2 -2
  27. package/web-dev-server.config.mjs +9 -8
  28. package/web-test-runner.config.mjs +7 -19
  29. package/.editorconfig +0 -29
  30. package/demo/index-3dish.html +0 -22
  31. package/demo/index-angle.html +0 -31
  32. package/demo/index-button-radio.html +0 -30
  33. package/dist/src/property-3dish.d.ts +0 -30
  34. package/dist/src/property-3dish.js +0 -140
  35. package/dist/src/property-3dish.js.map +0 -1
  36. package/dist/src/property-angle.d.ts +0 -14
  37. package/dist/src/property-angle.js +0 -56
  38. package/dist/src/property-angle.js.map +0 -1
  39. package/dist/src/property-buttons-radio.d.ts +0 -28
  40. package/dist/src/property-buttons-radio.js +0 -90
  41. package/dist/src/property-buttons-radio.js.map +0 -1
  42. package/dist/src/property-stack.d.ts +0 -21
  43. package/dist/src/property-stack.js +0 -108
  44. package/dist/src/property-stack.js.map +0 -1
  45. package/dist/test/property-angle.test.d.ts +0 -1
  46. package/dist/test/property-angle.test.js +0 -23
  47. package/dist/test/property-angle.test.js.map +0 -1
  48. package/src/property-3dish.ts +0 -150
  49. package/src/property-angle.ts +0 -56
  50. package/src/property-buttons-radio.ts +0 -87
  51. package/src/property-stack.ts +0 -109
  52. package/test/property-angle.test.ts +0 -32
@@ -1,3 +1,3 @@
1
1
  module.exports = {
2
- stories: ['../dist/stories/**/*.stories.{js,md,mdx}'],
3
- };
2
+ stories: ['../dist/stories/**/*.stories.{js,md,mdx}']
3
+ }
@@ -1,8 +1,8 @@
1
- import { storybookPlugin } from '@web/dev-server-storybook';
2
- import baseConfig from '../web-dev-server.config.mjs';
1
+ import { storybookPlugin } from '@web/dev-server-storybook'
2
+ import baseConfig from '../web-dev-server.config.mjs'
3
3
 
4
4
  export default /** @type {import('@web/dev-server').DevServerConfig} */ ({
5
5
  ...baseConfig,
6
6
  open: '/',
7
- plugins: [storybookPlugin({ type: 'web-components' }), ...baseConfig.plugins],
8
- });
7
+ plugins: [storybookPlugin({ type: 'web-components' }), ...baseConfig.plugins]
8
+ })
package/CHANGELOG.md CHANGED
@@ -3,6 +3,21 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
- ### [0.1.19](https://github.com/hatiolab/operato/compare/v0.1.18...v0.1.19) (2021-11-02)
6
+ ### [0.2.31](https://github.com/hatiolab/operato/compare/v0.2.30...v0.2.31) (2021-12-03)
7
+
8
+
9
+ ### :rocket: New Features
10
+
11
+ * @operato/property-editor added ([77e9429](https://github.com/hatiolab/operato/commit/77e9429dd6bfe974a283ab192245d68407480659))
12
+
13
+
14
+ ### :bug: Bug Fix
15
+
16
+ * things-scene version up ([d5007a0](https://github.com/hatiolab/operato/commit/d5007a0c835e7dc9f8d24b491cba88ac90bc1b41))
17
+ * upgrade things-scene ([b539c39](https://github.com/hatiolab/operato/commit/b539c39e70d285481c8083b4540129e44580b158))
18
+
19
+
20
+
21
+ ### [0.2.30](https://github.com/hatiolab/operato/compare/v0.2.29...v0.2.30) (2021-12-01)
7
22
 
8
23
  **Note:** Version bump only for package @operato/property-editor
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) hatiolab.com
3
+ Copyright (c) Hatiolab Inc.
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
@@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
18
  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
19
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
20
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
21
+ SOFTWARE.
package/README.md CHANGED
@@ -12,35 +12,55 @@ npm i property-editor
12
12
 
13
13
  ```html
14
14
  <script type="module">
15
- import 'property-editor/property-editor.js';
15
+ import 'property-editor/property-editor.js'
16
16
  </script>
17
17
 
18
18
  <property-editor></property-editor>
19
19
  ```
20
20
 
21
- ## Linting and formatting
21
+ ## Linting with ESLint, Prettier, and Types
22
22
 
23
- To scan the project for linting and formatting errors, run
23
+ To scan the project for linting errors, run
24
24
 
25
25
  ```bash
26
26
  npm run lint
27
27
  ```
28
28
 
29
- To automatically fix linting and formatting errors, run
29
+ You can lint with ESLint and Prettier individually as well
30
+
31
+ ```bash
32
+ npm run lint:eslint
33
+ ```
34
+
35
+ ```bash
36
+ npm run lint:prettier
37
+ ```
38
+
39
+ To automatically fix many linting errors, run
30
40
 
31
41
  ```bash
32
42
  npm run format
33
43
  ```
34
44
 
45
+ You can format using ESLint and Prettier individually as well
46
+
47
+ ```bash
48
+ npm run format:eslint
49
+ ```
50
+
51
+ ```bash
52
+ npm run format:prettier
53
+ ```
54
+
35
55
  ## Testing with Web Test Runner
36
56
 
37
- To execute a single test run:
57
+ To run the suite of Web Test Runner tests, run
38
58
 
39
59
  ```bash
40
60
  npm run test
41
61
  ```
42
62
 
43
- To run the tests in interactive watch mode run:
63
+ To run the tests in watch mode (for &lt;abbr title=&#34;test driven development&#34;&gt;TDD&lt;/abbr&gt;, for example), run
44
64
 
45
65
  ```bash
46
66
  npm run test:watch
@@ -60,7 +80,6 @@ To build a production version of Storybook, run
60
80
  npm run storybook:build
61
81
  ```
62
82
 
63
-
64
83
  ## Tooling configs
65
84
 
66
85
  For most of the tools, the configuration is in the `package.json` to reduce the amount of files in your project.
@@ -0,0 +1,317 @@
1
+ {
2
+ "schemaVersion": "1.0.0",
3
+ "readme": "",
4
+ "modules": [
5
+ {
6
+ "kind": "javascript-module",
7
+ "path": "src/index.ts",
8
+ "declarations": [],
9
+ "exports": [
10
+ {
11
+ "kind": "js",
12
+ "name": "*",
13
+ "declaration": {
14
+ "name": "*",
15
+ "package": "./ox-property-editor"
16
+ }
17
+ }
18
+ ]
19
+ },
20
+ {
21
+ "kind": "javascript-module",
22
+ "path": "src/ox-property-editor.ts",
23
+ "declarations": [
24
+ {
25
+ "kind": "class",
26
+ "description": "",
27
+ "name": "OxPropertyEditor",
28
+ "members": [
29
+ {
30
+ "kind": "field",
31
+ "name": "registry",
32
+ "type": {
33
+ "text": "{ [type: string]: string }"
34
+ },
35
+ "static": true,
36
+ "default": "{}"
37
+ },
38
+ {
39
+ "kind": "method",
40
+ "name": "register",
41
+ "privacy": "public",
42
+ "static": true,
43
+ "parameters": [
44
+ {
45
+ "name": "types",
46
+ "type": {
47
+ "text": "{ [type: string]: string }"
48
+ }
49
+ }
50
+ ]
51
+ },
52
+ {
53
+ "kind": "method",
54
+ "name": "getEditor",
55
+ "privacy": "public",
56
+ "static": true,
57
+ "return": {
58
+ "type": {
59
+ "text": "string"
60
+ }
61
+ },
62
+ "parameters": [
63
+ {
64
+ "name": "type",
65
+ "type": {
66
+ "text": "string"
67
+ }
68
+ }
69
+ ]
70
+ },
71
+ {
72
+ "kind": "field",
73
+ "name": "value",
74
+ "type": {
75
+ "text": "any"
76
+ },
77
+ "attribute": "value"
78
+ },
79
+ {
80
+ "kind": "field",
81
+ "name": "type",
82
+ "type": {
83
+ "text": "string"
84
+ },
85
+ "attribute": "type"
86
+ },
87
+ {
88
+ "kind": "field",
89
+ "name": "label",
90
+ "type": {
91
+ "text": "string"
92
+ },
93
+ "attribute": "label"
94
+ },
95
+ {
96
+ "kind": "field",
97
+ "name": "placeholder",
98
+ "type": {
99
+ "text": "string | undefined"
100
+ },
101
+ "attribute": "placeholder"
102
+ },
103
+ {
104
+ "kind": "field",
105
+ "name": "property",
106
+ "type": {
107
+ "text": "any"
108
+ },
109
+ "attribute": "property"
110
+ },
111
+ {
112
+ "kind": "field",
113
+ "name": "host",
114
+ "type": {
115
+ "text": "any"
116
+ },
117
+ "attribute": "host"
118
+ },
119
+ {
120
+ "kind": "field",
121
+ "name": "observe",
122
+ "type": {
123
+ "text": "(value: any) => void | undefined"
124
+ },
125
+ "attribute": "observe"
126
+ },
127
+ {
128
+ "kind": "method",
129
+ "name": "editorTemplate",
130
+ "parameters": [
131
+ {
132
+ "name": "props",
133
+ "type": {
134
+ "text": "{ [key: string]: any }"
135
+ }
136
+ }
137
+ ]
138
+ },
139
+ {
140
+ "kind": "field",
141
+ "name": "__by_me",
142
+ "type": {
143
+ "text": "boolean"
144
+ },
145
+ "default": "false"
146
+ },
147
+ {
148
+ "kind": "field",
149
+ "name": "valueProperty"
150
+ },
151
+ {
152
+ "kind": "method",
153
+ "name": "_computeLabelId",
154
+ "parameters": [
155
+ {
156
+ "name": "label",
157
+ "type": {
158
+ "text": "string"
159
+ }
160
+ }
161
+ ]
162
+ },
163
+ {
164
+ "kind": "method",
165
+ "name": "_valueChanged",
166
+ "parameters": [
167
+ {
168
+ "name": "e",
169
+ "type": {
170
+ "text": "Event"
171
+ }
172
+ }
173
+ ]
174
+ }
175
+ ],
176
+ "events": [
177
+ {
178
+ "name": "change",
179
+ "type": {
180
+ "text": "CustomEvent"
181
+ }
182
+ }
183
+ ],
184
+ "attributes": [
185
+ {
186
+ "name": "value",
187
+ "type": {
188
+ "text": "any"
189
+ },
190
+ "fieldName": "value"
191
+ },
192
+ {
193
+ "name": "type",
194
+ "type": {
195
+ "text": "string"
196
+ },
197
+ "fieldName": "type"
198
+ },
199
+ {
200
+ "name": "label",
201
+ "type": {
202
+ "text": "string"
203
+ },
204
+ "fieldName": "label"
205
+ },
206
+ {
207
+ "name": "placeholder",
208
+ "type": {
209
+ "text": "string | undefined"
210
+ },
211
+ "fieldName": "placeholder"
212
+ },
213
+ {
214
+ "name": "property",
215
+ "type": {
216
+ "text": "any"
217
+ },
218
+ "fieldName": "property"
219
+ },
220
+ {
221
+ "name": "host",
222
+ "type": {
223
+ "text": "any"
224
+ },
225
+ "fieldName": "host"
226
+ },
227
+ {
228
+ "name": "observe",
229
+ "type": {
230
+ "text": "(value: any) => void | undefined"
231
+ },
232
+ "fieldName": "observe"
233
+ }
234
+ ],
235
+ "superclass": {
236
+ "name": "LitElement",
237
+ "package": "lit"
238
+ },
239
+ "customElement": true
240
+ }
241
+ ],
242
+ "exports": [
243
+ {
244
+ "kind": "js",
245
+ "name": "OxPropertyEditor",
246
+ "declaration": {
247
+ "name": "OxPropertyEditor",
248
+ "module": "src/ox-property-editor.ts"
249
+ }
250
+ }
251
+ ]
252
+ },
253
+ {
254
+ "kind": "javascript-module",
255
+ "path": "stories/index.stories.ts",
256
+ "declarations": [
257
+ {
258
+ "kind": "variable",
259
+ "name": "Regular"
260
+ },
261
+ {
262
+ "kind": "variable",
263
+ "name": "CustomTitle"
264
+ },
265
+ {
266
+ "kind": "variable",
267
+ "name": "CustomCounter"
268
+ },
269
+ {
270
+ "kind": "variable",
271
+ "name": "SlottedContent"
272
+ }
273
+ ],
274
+ "exports": [
275
+ {
276
+ "kind": "js",
277
+ "name": "default",
278
+ "declaration": {
279
+ "module": "stories/index.stories.ts"
280
+ }
281
+ },
282
+ {
283
+ "kind": "js",
284
+ "name": "Regular",
285
+ "declaration": {
286
+ "name": "Regular",
287
+ "module": "stories/index.stories.ts"
288
+ }
289
+ },
290
+ {
291
+ "kind": "js",
292
+ "name": "CustomTitle",
293
+ "declaration": {
294
+ "name": "CustomTitle",
295
+ "module": "stories/index.stories.ts"
296
+ }
297
+ },
298
+ {
299
+ "kind": "js",
300
+ "name": "CustomCounter",
301
+ "declaration": {
302
+ "name": "CustomCounter",
303
+ "module": "stories/index.stories.ts"
304
+ }
305
+ },
306
+ {
307
+ "kind": "js",
308
+ "name": "SlottedContent",
309
+ "declaration": {
310
+ "name": "SlottedContent",
311
+ "module": "stories/index.stories.ts"
312
+ }
313
+ }
314
+ ]
315
+ }
316
+ ]
317
+ }
package/demo/index.html CHANGED
@@ -2,20 +2,34 @@
2
2
  <html lang="en-GB">
3
3
  <head>
4
4
  <meta charset="utf-8" />
5
+ <meta name="viewport" />
5
6
  <style>
6
7
  body {
7
- background: #fafafa;
8
+ margin: 0;
9
+ padding: 0;
10
+ overflow: hidden;
11
+
12
+ /* This is a font-stack that tries to use the system-default sans-serifs first */
13
+ font-family: Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';
14
+ line-height: 1.5;
15
+ -webkit-font-smoothing: antialiased;
16
+ }
17
+
18
+ ox-property-editor {
19
+ width: 100vw;
20
+ height: 100vh;
8
21
  }
9
22
  </style>
23
+ <link href="https://fonts.googleapis.com/css?family=Roboto:300,400,500" rel="stylesheet" />
24
+ <link href="https://fonts.googleapis.com/css?family=Material+Icons&display=block" rel="stylesheet" />
10
25
  </head>
11
26
  <body>
12
27
  <div id="demo"></div>
13
-
14
28
  <script type="module">
15
29
  import { html, render } from 'lit'
16
- import '../dist/src/property-stack.js'
30
+ import '../dist/src/ox-property-editor.js'
17
31
 
18
- render(html` <property-stack> </property-stack> `, document.querySelector('#demo'))
32
+ render(html` <ox-property-editor></ox-property-editor> `, document.querySelector('#demo'))
19
33
  </script>
20
34
  </body>
21
35
  </html>
@@ -1,3 +1 @@
1
- export * from './property-angle';
2
- export * from './property-3dish';
3
- export * from './property-buttons-radio';
1
+ export * from './ox-property-editor';
package/dist/src/index.js CHANGED
@@ -1,4 +1,2 @@
1
- export * from './property-angle';
2
- export * from './property-3dish';
3
- export * from './property-buttons-radio';
1
+ export * from './ox-property-editor';
4
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,kBAAkB,CAAA;AAChC,cAAc,0BAA0B,CAAA","sourcesContent":["export * from './property-angle'\nexport * from './property-3dish'\nexport * from './property-buttons-radio'\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAA","sourcesContent":["export * from './ox-property-editor'\n"]}
@@ -0,0 +1,28 @@
1
+ import { LitElement } from 'lit';
2
+ export declare class OxPropertyEditor extends LitElement {
3
+ static registry: {
4
+ [type: string]: string;
5
+ };
6
+ static register(types: {
7
+ [type: string]: string;
8
+ }): void;
9
+ static getEditor(type: string): string;
10
+ static styles: import("lit").CSSResult[];
11
+ value: any;
12
+ type: string;
13
+ label: string;
14
+ placeholder?: string;
15
+ property: any;
16
+ host: any;
17
+ observe?: (value: any) => void;
18
+ connectedCallback(): void;
19
+ editorTemplate(props: {
20
+ [key: string]: any;
21
+ }): import("lit-html").TemplateResult<1>;
22
+ render(): import("lit-html").TemplateResult<1>;
23
+ __by_me: boolean;
24
+ shouldUpdate(changedProperties: any): boolean;
25
+ get valueProperty(): string;
26
+ _computeLabelId(label: string): string;
27
+ _valueChanged(e: Event): void;
28
+ }
@@ -0,0 +1,161 @@
1
+ import { __decorate } from "tslib";
2
+ import { LitElement, css, html } from 'lit';
3
+ import { property, state } from 'lit/decorators.js';
4
+ import deepClone from 'lodash/cloneDeep';
5
+ export class OxPropertyEditor extends LitElement {
6
+ constructor() {
7
+ super(...arguments);
8
+ this.__by_me = false;
9
+ }
10
+ static register(types) {
11
+ Object.keys(types).forEach(type => {
12
+ OxPropertyEditor.registry[type] = types[type];
13
+ });
14
+ }
15
+ static getEditor(type) {
16
+ return OxPropertyEditor.registry[type];
17
+ }
18
+ connectedCallback() {
19
+ super.connectedCallback();
20
+ this.renderRoot.addEventListener('change', this._valueChanged.bind(this));
21
+ }
22
+ editorTemplate(props) {
23
+ return html ``;
24
+ }
25
+ render() {
26
+ return html `
27
+ ${this.editorTemplate(this)}
28
+ ${this.label
29
+ ? html `
30
+ <label for="editor">
31
+ <i18n-msg msgid=${this._computeLabelId(this.label)}>${this.label}</i18n-msg>
32
+ </label>
33
+ `
34
+ : html ``}
35
+ `;
36
+ }
37
+ shouldUpdate(changedProperties) {
38
+ if (this.__by_me) {
39
+ return false;
40
+ }
41
+ if (changedProperties.has('value')) {
42
+ this.__by_me = true;
43
+ this.value = deepClone(this.value);
44
+ this.__by_me = false;
45
+ }
46
+ return true;
47
+ }
48
+ get valueProperty() {
49
+ return 'value';
50
+ }
51
+ _computeLabelId(label) {
52
+ if (label.indexOf('label.') >= 0)
53
+ return label;
54
+ return 'label.' + label;
55
+ }
56
+ _valueChanged(e) {
57
+ e.stopPropagation();
58
+ this.value = deepClone(e.target[this.valueProperty]);
59
+ this.dispatchEvent(new CustomEvent('change', { bubbles: true, composed: true }));
60
+ if (!this.observe)
61
+ return;
62
+ this.observe.call(this, this.value);
63
+ }
64
+ }
65
+ OxPropertyEditor.registry = {};
66
+ OxPropertyEditor.styles = [
67
+ css `
68
+ :host {
69
+ margin: 5px;
70
+
71
+ display: grid;
72
+ grid-template-columns: repeat(10, 1fr);
73
+ grid-gap: 5px;
74
+
75
+ align-items: center;
76
+
77
+ color: var(--property-sidebar-fieldset-legend-color);
78
+ }
79
+
80
+ :host > * {
81
+ box-sizing: border-box;
82
+
83
+ grid-column: span 7;
84
+ order: 2;
85
+
86
+ align-self: stretch;
87
+ }
88
+
89
+ :host > label {
90
+ grid-column: span 3;
91
+ order: 1;
92
+
93
+ text-align: right;
94
+
95
+ font-size: 0.8em;
96
+ line-height: 2;
97
+ text-transform: capitalize;
98
+
99
+ align-self: center;
100
+ }
101
+
102
+ :host > input[type='checkbox'] ~ label {
103
+ grid-column: span 6;
104
+ order: 2;
105
+
106
+ text-align: left;
107
+ }
108
+
109
+ :host > select,
110
+ :host > input[type='text'],
111
+ :host > input[type='number'] {
112
+ border: 1px solid rgba(0, 0, 0, 0.2);
113
+ }
114
+
115
+ :host > legend {
116
+ grid-column: 1 / -1;
117
+
118
+ display: inline-block;
119
+
120
+ text-align: left;
121
+ text-transform: capitalize;
122
+ }
123
+
124
+ :host > [fullwidth] {
125
+ grid-column: 1 / -1;
126
+ }
127
+
128
+ :host > input[type='checkbox'] {
129
+ grid-column: span 4;
130
+ order: 1;
131
+
132
+ justify-self: end;
133
+ align-self: center;
134
+ }
135
+ `
136
+ ];
137
+ __decorate([
138
+ property({ type: Object })
139
+ ], OxPropertyEditor.prototype, "value", void 0);
140
+ __decorate([
141
+ property({ type: String })
142
+ ], OxPropertyEditor.prototype, "type", void 0);
143
+ __decorate([
144
+ property({ type: String })
145
+ ], OxPropertyEditor.prototype, "label", void 0);
146
+ __decorate([
147
+ property({ type: String })
148
+ ], OxPropertyEditor.prototype, "placeholder", void 0);
149
+ __decorate([
150
+ property({ type: Object })
151
+ ], OxPropertyEditor.prototype, "property", void 0);
152
+ __decorate([
153
+ property({ type: Object })
154
+ ], OxPropertyEditor.prototype, "host", void 0);
155
+ __decorate([
156
+ property({ type: Object })
157
+ ], OxPropertyEditor.prototype, "observe", void 0);
158
+ __decorate([
159
+ state()
160
+ ], OxPropertyEditor.prototype, "__by_me", void 0);
161
+ //# sourceMappingURL=ox-property-editor.js.map