@operato/board 0.2.44 → 0.2.48

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 (145) hide show
  1. package/@types/global/index.d.ts +1 -0
  2. package/CHANGELOG.md +57 -0
  3. package/assets/images/components/no-image.png +0 -0
  4. package/custom-elements.json +4272 -174
  5. package/demo/index-modeller.html +101 -0
  6. package/demo/index.html +3 -3
  7. package/dist/src/index.d.ts +1 -0
  8. package/dist/src/index.js +1 -0
  9. package/dist/src/index.js.map +1 -1
  10. package/dist/src/modeller/component-toolbar/component-detail.d.ts +4 -0
  11. package/dist/src/modeller/component-toolbar/component-detail.js +56 -0
  12. package/dist/src/modeller/component-toolbar/component-detail.js.map +1 -0
  13. package/dist/src/modeller/component-toolbar/component-menu.d.ts +4 -0
  14. package/dist/src/modeller/component-toolbar/component-menu.js +194 -0
  15. package/dist/src/modeller/component-toolbar/component-menu.js.map +1 -0
  16. package/dist/src/modeller/component-toolbar/component-toolbar.d.ts +4 -0
  17. package/dist/src/modeller/component-toolbar/component-toolbar.js +170 -0
  18. package/dist/src/modeller/component-toolbar/component-toolbar.js.map +1 -0
  19. package/dist/src/modeller/edit-toolbar-style.d.ts +4 -0
  20. package/dist/src/modeller/edit-toolbar-style.js +227 -0
  21. package/dist/src/modeller/edit-toolbar-style.js.map +1 -0
  22. package/dist/src/modeller/edit-toolbar.d.ts +61 -0
  23. package/dist/src/modeller/edit-toolbar.js +644 -0
  24. package/dist/src/modeller/edit-toolbar.js.map +1 -0
  25. package/dist/src/modeller/property-sidebar/abstract-property.d.ts +10 -0
  26. package/dist/src/modeller/property-sidebar/abstract-property.js +58 -0
  27. package/dist/src/modeller/property-sidebar/abstract-property.js.map +1 -0
  28. package/dist/src/modeller/property-sidebar/data-binding/data-binding-mapper.d.ts +48 -0
  29. package/dist/src/modeller/property-sidebar/data-binding/data-binding-mapper.js +351 -0
  30. package/dist/src/modeller/property-sidebar/data-binding/data-binding-mapper.js.map +1 -0
  31. package/dist/src/modeller/property-sidebar/data-binding/data-binding.d.ts +8 -0
  32. package/dist/src/modeller/property-sidebar/data-binding/data-binding.js +432 -0
  33. package/dist/src/modeller/property-sidebar/data-binding/data-binding.js.map +1 -0
  34. package/dist/src/modeller/property-sidebar/effects/effects-shared-style.d.ts +4 -0
  35. package/dist/src/modeller/property-sidebar/effects/effects-shared-style.js +57 -0
  36. package/dist/src/modeller/property-sidebar/effects/effects-shared-style.js.map +1 -0
  37. package/dist/src/modeller/property-sidebar/effects/effects.d.ts +6 -0
  38. package/dist/src/modeller/property-sidebar/effects/effects.js +55 -0
  39. package/dist/src/modeller/property-sidebar/effects/effects.js.map +1 -0
  40. package/dist/src/modeller/property-sidebar/effects/property-animation.d.ts +22 -0
  41. package/dist/src/modeller/property-sidebar/effects/property-animation.js +127 -0
  42. package/dist/src/modeller/property-sidebar/effects/property-animation.js.map +1 -0
  43. package/dist/src/modeller/property-sidebar/effects/property-animations.d.ts +5 -0
  44. package/dist/src/modeller/property-sidebar/effects/property-animations.js +83 -0
  45. package/dist/src/modeller/property-sidebar/effects/property-animations.js.map +1 -0
  46. package/dist/src/modeller/property-sidebar/effects/property-event-hover.d.ts +4 -0
  47. package/dist/src/modeller/property-sidebar/effects/property-event-hover.js +124 -0
  48. package/dist/src/modeller/property-sidebar/effects/property-event-hover.js.map +1 -0
  49. package/dist/src/modeller/property-sidebar/effects/property-event-tap.d.ts +4 -0
  50. package/dist/src/modeller/property-sidebar/effects/property-event-tap.js +120 -0
  51. package/dist/src/modeller/property-sidebar/effects/property-event-tap.js.map +1 -0
  52. package/dist/src/modeller/property-sidebar/effects/property-event.d.ts +5 -0
  53. package/dist/src/modeller/property-sidebar/effects/property-event.js +59 -0
  54. package/dist/src/modeller/property-sidebar/effects/property-event.js.map +1 -0
  55. package/dist/src/modeller/property-sidebar/effects/property-shadow.d.ts +22 -0
  56. package/dist/src/modeller/property-sidebar/effects/property-shadow.js +106 -0
  57. package/dist/src/modeller/property-sidebar/effects/property-shadow.js.map +1 -0
  58. package/dist/src/modeller/property-sidebar/effects/value-converter.d.ts +1 -0
  59. package/dist/src/modeller/property-sidebar/effects/value-converter.js +23 -0
  60. package/dist/src/modeller/property-sidebar/effects/value-converter.js.map +1 -0
  61. package/dist/src/modeller/property-sidebar/inspector/inspector.d.ts +24 -0
  62. package/dist/src/modeller/property-sidebar/inspector/inspector.js +290 -0
  63. package/dist/src/modeller/property-sidebar/inspector/inspector.js.map +1 -0
  64. package/dist/src/modeller/property-sidebar/property-shared-style.d.ts +4 -0
  65. package/dist/src/modeller/property-sidebar/property-shared-style.js +131 -0
  66. package/dist/src/modeller/property-sidebar/property-shared-style.js.map +1 -0
  67. package/dist/src/modeller/property-sidebar/property-sidebar.d.ts +10 -0
  68. package/dist/src/modeller/property-sidebar/property-sidebar.js +313 -0
  69. package/dist/src/modeller/property-sidebar/property-sidebar.js.map +1 -0
  70. package/dist/src/modeller/property-sidebar/shapes/box-padding-editor-styles.d.ts +1 -0
  71. package/dist/src/modeller/property-sidebar/shapes/box-padding-editor-styles.js +94 -0
  72. package/dist/src/modeller/property-sidebar/shapes/box-padding-editor-styles.js.map +1 -0
  73. package/dist/src/modeller/property-sidebar/shapes/shapes.d.ts +6 -0
  74. package/dist/src/modeller/property-sidebar/shapes/shapes.js +406 -0
  75. package/dist/src/modeller/property-sidebar/shapes/shapes.js.map +1 -0
  76. package/dist/src/modeller/property-sidebar/specifics/specific-properties-builder.d.ts +4 -0
  77. package/dist/src/modeller/property-sidebar/specifics/specific-properties-builder.js +127 -0
  78. package/dist/src/modeller/property-sidebar/specifics/specific-properties-builder.js.map +1 -0
  79. package/dist/src/modeller/property-sidebar/specifics/specifics.d.ts +5 -0
  80. package/dist/src/modeller/property-sidebar/specifics/specifics.js +78 -0
  81. package/dist/src/modeller/property-sidebar/specifics/specifics.js.map +1 -0
  82. package/dist/src/modeller/property-sidebar/styles/styles.d.ts +8 -0
  83. package/dist/src/modeller/property-sidebar/styles/styles.js +562 -0
  84. package/dist/src/modeller/property-sidebar/styles/styles.js.map +1 -0
  85. package/dist/src/modeller/scene-viewer/confidential-overlay.d.ts +4 -0
  86. package/dist/src/modeller/scene-viewer/confidential-overlay.js +14 -0
  87. package/dist/src/modeller/scene-viewer/confidential-overlay.js.map +1 -0
  88. package/dist/src/modeller/scene-viewer/ox-scene-handler.d.ts +11 -0
  89. package/dist/src/modeller/scene-viewer/ox-scene-handler.js +36 -0
  90. package/dist/src/modeller/scene-viewer/ox-scene-handler.js.map +1 -0
  91. package/dist/src/modeller/scene-viewer/ox-scene-layer.d.ts +10 -0
  92. package/dist/src/modeller/scene-viewer/ox-scene-layer.js +42 -0
  93. package/dist/src/modeller/scene-viewer/ox-scene-layer.js.map +1 -0
  94. package/dist/src/modeller/scene-viewer/ox-scene-player.d.ts +1 -0
  95. package/dist/src/modeller/scene-viewer/ox-scene-player.js +99 -0
  96. package/dist/src/modeller/scene-viewer/ox-scene-player.js.map +1 -0
  97. package/dist/src/modeller/scene-viewer/ox-scene-property.d.ts +6 -0
  98. package/dist/src/modeller/scene-viewer/ox-scene-property.js +19 -0
  99. package/dist/src/modeller/scene-viewer/ox-scene-property.js.map +1 -0
  100. package/dist/src/modeller/scene-viewer/ox-scene-viewer.d.ts +39 -0
  101. package/dist/src/modeller/scene-viewer/ox-scene-viewer.js +245 -0
  102. package/dist/src/modeller/scene-viewer/ox-scene-viewer.js.map +1 -0
  103. package/dist/src/ox-board-modeller.d.ts +13 -4
  104. package/dist/src/ox-board-modeller.js +130 -40
  105. package/dist/src/ox-board-modeller.js.map +1 -1
  106. package/dist/src/types.d.ts +12 -0
  107. package/dist/src/types.js +2 -0
  108. package/dist/src/types.js.map +1 -0
  109. package/dist/tsconfig.tsbuildinfo +1 -1
  110. package/package.json +26 -5
  111. package/src/index.ts +1 -0
  112. package/src/modeller/component-toolbar/component-detail.ts +53 -0
  113. package/src/modeller/component-toolbar/component-menu.ts +190 -0
  114. package/src/modeller/component-toolbar/component-toolbar.ts +161 -0
  115. package/src/modeller/edit-toolbar-style.ts +228 -0
  116. package/src/modeller/edit-toolbar.ts +640 -0
  117. package/src/modeller/property-sidebar/abstract-property.ts +73 -0
  118. package/src/modeller/property-sidebar/data-binding/data-binding-mapper.ts +371 -0
  119. package/src/modeller/property-sidebar/data-binding/data-binding.ts +449 -0
  120. package/src/modeller/property-sidebar/effects/effects-shared-style.ts +58 -0
  121. package/src/modeller/property-sidebar/effects/effects.ts +57 -0
  122. package/src/modeller/property-sidebar/effects/property-animation.ts +133 -0
  123. package/src/modeller/property-sidebar/effects/property-animations.ts +84 -0
  124. package/src/modeller/property-sidebar/effects/property-event-hover.ts +133 -0
  125. package/src/modeller/property-sidebar/effects/property-event-tap.ts +129 -0
  126. package/src/modeller/property-sidebar/effects/property-event.ts +65 -0
  127. package/src/modeller/property-sidebar/effects/property-shadow.ts +114 -0
  128. package/src/modeller/property-sidebar/effects/value-converter.ts +26 -0
  129. package/src/modeller/property-sidebar/inspector/inspector.ts +327 -0
  130. package/src/modeller/property-sidebar/property-shared-style.ts +132 -0
  131. package/src/modeller/property-sidebar/property-sidebar.ts +308 -0
  132. package/src/modeller/property-sidebar/shapes/box-padding-editor-styles.ts +94 -0
  133. package/src/modeller/property-sidebar/shapes/shapes.ts +409 -0
  134. package/src/modeller/property-sidebar/specifics/specific-properties-builder.ts +135 -0
  135. package/src/modeller/property-sidebar/specifics/specifics.ts +72 -0
  136. package/src/modeller/property-sidebar/styles/styles.ts +578 -0
  137. package/src/modeller/scene-viewer/confidential-overlay.ts +18 -0
  138. package/src/modeller/scene-viewer/ox-scene-handler.ts +40 -0
  139. package/src/modeller/scene-viewer/ox-scene-layer.ts +42 -0
  140. package/src/modeller/scene-viewer/ox-scene-player.ts +104 -0
  141. package/src/modeller/scene-viewer/ox-scene-property.ts +10 -0
  142. package/src/modeller/scene-viewer/ox-scene-viewer.ts +248 -0
  143. package/src/ox-board-modeller.ts +138 -42
  144. package/src/types.ts +26 -0
  145. package/yarn-error.log +18355 -0
@@ -0,0 +1,327 @@
1
+ import { Component, Container, Properties, Scene } from '@hatiolab/things-scene'
2
+ import { LitElement, PropertyValues, TemplateResult, css, html } from 'lit'
3
+ import { customElement, property } from 'lit/decorators'
4
+
5
+ import Sortable from 'sortablejs'
6
+
7
+ @customElement('scene-inspector')
8
+ export default class SceneInspector extends LitElement {
9
+ static styles = [
10
+ css`
11
+ :host {
12
+ color: var(--scene-inspector-color);
13
+ }
14
+
15
+ .component {
16
+ display: block;
17
+ overflow: hidden;
18
+ border-bottom: 1px solid rgba(0, 0, 0, 0.05);
19
+ font-size: 14px;
20
+ }
21
+
22
+ .component[selected] {
23
+ background-color: var(--scene-inspector-selected-background-color);
24
+ border-top: var(--scene-inspector-selected-border);
25
+ border-bottom: var(--scene-inspector-selected-border);
26
+ }
27
+ [selected] .type {
28
+ font-weight: bold;
29
+ }
30
+
31
+ span,
32
+ i {
33
+ display: inline-block;
34
+ }
35
+
36
+ span.type {
37
+ text-overflow: ellipses;
38
+ }
39
+
40
+ span.name {
41
+ background-color: var(--scene-inspector-name-background-color);
42
+ border-radius: var(--border-radius);
43
+ padding: 0 4px;
44
+ color: #fff;
45
+ font-size: 0.8em;
46
+ }
47
+
48
+ .eye {
49
+ margin: 0 0 0 5px;
50
+ vertical-align: middle;
51
+ opacity: 0.7;
52
+ font-size: 1.1em;
53
+ color: var(--scene-inspector-eye-icon-color);
54
+ }
55
+
56
+ .collapsed::before,
57
+ .extended::before,
58
+ .collapsespace::before {
59
+ background: url(/assets/images/icon-shell-inspector.png) no-repeat;
60
+ width: 16px;
61
+ height: 18px;
62
+ display: inline-block;
63
+ content: '';
64
+ opacity: 0.6;
65
+ }
66
+
67
+ .collapsed::before {
68
+ background-position: 100% -195px;
69
+ }
70
+
71
+ .extended::before {
72
+ background-position: 100% -295px;
73
+ }
74
+
75
+ .collapsespace::before {
76
+ background-position: 100% -395px;
77
+ opacity: 0.9;
78
+ width: 16px;
79
+ }
80
+ .collapsed,
81
+ .extended,
82
+ .collapsespace {
83
+ border-left: 1px dotted rgba(0, 0, 0, 0.1);
84
+ }
85
+
86
+ pre {
87
+ display: inline;
88
+ }
89
+ `
90
+ ]
91
+
92
+ @property({ type: Object }) scene?: Scene
93
+
94
+ private _extendedMap: any
95
+ private show: boolean = false
96
+
97
+ render() {
98
+ return html` ${!this.scene ? html`` : this.renderComponent(this.scene.root, 0)} `
99
+ }
100
+
101
+ firstUpdated() {
102
+ dispatchEvent(new Event('resize'))
103
+ this.renderRoot.addEventListener('click', this._onclick.bind(this) as EventListener)
104
+ this.renderRoot.addEventListener('dblclick', this._ondblclick.bind(this) as EventListener)
105
+ }
106
+
107
+ updated(change: PropertyValues<this>) {
108
+ if (change.has('scene')) {
109
+ let oldScene = change.get('scene') as Scene
110
+
111
+ if (oldScene) {
112
+ oldScene.off('selected')
113
+ oldScene.off('execute')
114
+ oldScene.off('undo')
115
+ oldScene.off('redo')
116
+
117
+ delete this._extendedMap
118
+ }
119
+
120
+ if (this.scene && this.scene.root) {
121
+ // root 는 기본상태가 extended 되도록 하기위해서임.
122
+ this.extendedMap.set(this.scene.root, true)
123
+
124
+ this.scene.on('selected', (after: Component[], before: Component[]) => {
125
+ let selected = after
126
+
127
+ selected.forEach(component => {
128
+ let parent = component.parent
129
+ while (parent && !this.extendedMap.get(parent)) {
130
+ this.extendedMap.set(parent, true)
131
+ parent = parent.parent
132
+ }
133
+ })
134
+
135
+ this.requestUpdate()
136
+ })
137
+
138
+ this.scene.on('execute', () => {
139
+ this.requestUpdate()
140
+ })
141
+
142
+ this.scene.on('undo', () => {
143
+ this.extendedMap.set(this.scene!.root, true)
144
+ this.requestUpdate()
145
+ })
146
+
147
+ this.scene.on('redo', () => {
148
+ this.extendedMap.set(this.scene!.root, true)
149
+ this.requestUpdate()
150
+ })
151
+ }
152
+ }
153
+
154
+ this.updateComplete.then(() => {
155
+ this.renderRoot.querySelectorAll('[sortable]').forEach(sortable => {
156
+ new Sortable(sortable as HTMLElement, this.sortableConfig)
157
+ })
158
+ })
159
+ }
160
+
161
+ sortableConfig: Sortable.Options = {
162
+ group: 'inspector',
163
+ animation: 150,
164
+ draggable: '.component',
165
+ swapThreshold: 1,
166
+ onSort: this.onSort.bind(this)
167
+ }
168
+
169
+ onSort(e: Sortable.SortableEvent) {
170
+ if (!this.scene) return
171
+
172
+ var component = (e.item as HTMLElement & { component: Component }).component
173
+ var to_container = (e.to as HTMLElement & { component: Component }).component as Container
174
+ var to_index = e.newIndex! - 1
175
+
176
+ this.scene.move(component, to_container, to_index)
177
+
178
+ this.show = false
179
+ this.updateComplete.then(() => {
180
+ this.show = true
181
+ })
182
+ }
183
+
184
+ disconnectedCallback() {
185
+ super.disconnectedCallback()
186
+
187
+ delete this.scene
188
+ delete this._extendedMap
189
+ }
190
+
191
+ _onclick(e: MouseEvent) {
192
+ e.stopPropagation()
193
+
194
+ var targetElement = e.target as HTMLElement & { component: Component }
195
+ var classList = targetElement.classList
196
+ var component
197
+
198
+ while (!component && targetElement) {
199
+ component = targetElement.component
200
+
201
+ if (component) break
202
+
203
+ targetElement = targetElement.parentNode as HTMLElement & { component: Component }
204
+
205
+ if (!targetElement || targetElement === this.renderRoot) break
206
+ }
207
+
208
+ if (component) {
209
+ if (classList.contains('eye')) {
210
+ this.toggleHidden(component)
211
+ } else if (classList.contains('extended') || classList.contains('collapsed')) {
212
+ this.toggleExtended(component)
213
+ }
214
+
215
+ this.selectComponent(component)
216
+ } else {
217
+ if (classList.contains('inspector')) {
218
+ this.show = !this.show
219
+ this.style.height = this.show ? '100%' : ''
220
+ }
221
+ }
222
+
223
+ this.requestUpdate()
224
+ }
225
+
226
+ _ondblclick(e: MouseEvent) {
227
+ e.stopPropagation()
228
+
229
+ var targetElement = e.target as HTMLElement & { component: Component }
230
+ var component
231
+
232
+ while (!component && targetElement) {
233
+ component = targetElement.component
234
+
235
+ if (component) break
236
+
237
+ targetElement = targetElement.parentNode as HTMLElement & { component: Component }
238
+
239
+ if (!targetElement || targetElement === this.renderRoot) break
240
+ }
241
+
242
+ if (component && component.isContainer()) {
243
+ this.toggleExtended(component)
244
+ }
245
+
246
+ this.requestUpdate()
247
+ }
248
+
249
+ get extendedMap() {
250
+ if (!this._extendedMap) {
251
+ this._extendedMap = new WeakMap()
252
+ }
253
+
254
+ return this._extendedMap
255
+ }
256
+
257
+ getNodeHandleClass(component: Component) {
258
+ if (component.isContainer() && (component as Container).components.length > 0) {
259
+ return !!this.extendedMap.get(component) ? 'extended' : 'collapsed'
260
+ } else {
261
+ return 'collapsespace'
262
+ }
263
+ }
264
+
265
+ isExtended(component: Component) {
266
+ return !!this.extendedMap.get(component)
267
+ }
268
+
269
+ toggleExtended(component: Component) {
270
+ var extended = this.isExtended(component)
271
+
272
+ if (extended) {
273
+ this.extendedMap.delete(component)
274
+ } else {
275
+ this.extendedMap.set(component, !extended)
276
+ }
277
+
278
+ this.requestUpdate()
279
+ }
280
+
281
+ toggleHidden(component: Component) {
282
+ component.set('hidden', !component.hidden)
283
+
284
+ this.requestUpdate()
285
+ }
286
+
287
+ selectComponent(component: Component) {
288
+ this.scene!.selected = [component]
289
+
290
+ this.requestUpdate()
291
+ }
292
+
293
+ renderComponent(component: Component, depth: number): TemplateResult {
294
+ if (!component) {
295
+ return html``
296
+ }
297
+
298
+ var children = (component.isContainer() && (component as Container).components) || []
299
+ var extended = this.isExtended(component) ? children : []
300
+
301
+ return html`
302
+ <div
303
+ class="component"
304
+ ?selected=${(this.scene?.selected || []).indexOf(component) > -1}
305
+ .component=${component}
306
+ ?sortable=${component.isContainer()}
307
+ >
308
+ <span>
309
+ ${depth > 0
310
+ ? html`
311
+ <mwc-icon class="eye">${component.get('hidden') ? 'visibility_off' : 'visibility'}</mwc-icon>
312
+ <pre>${' '.repeat(depth)}</pre>
313
+ `
314
+ : html` <pre>${' '.repeat(depth + 2)}</pre> `}
315
+
316
+ <span class=${this.getNodeHandleClass(component)}> </span>
317
+
318
+ <span class="type">${depth == 0 ? 'ROOT' : component.get('type')}</span> ${component.get('id')
319
+ ? html` <span class="name">#${component.get('id')}</span> `
320
+ : html``}
321
+ </span>
322
+
323
+ ${extended.map(child => this.renderComponent(child, depth + 1))}
324
+ </div>
325
+ `
326
+ }
327
+ }
@@ -0,0 +1,132 @@
1
+ /**
2
+ * @license Copyright © HatioLab Inc. All rights reserved.
3
+ */
4
+
5
+ import { css } from 'lit'
6
+
7
+ export const PropertySharedStyle = css`
8
+ fieldset {
9
+ border: none;
10
+ margin: 4px;
11
+ padding: 9px 4px 9px 4px;
12
+ border-bottom: var(--property-sidebar-fieldset-border);
13
+ color: var(--property-sidebar-fieldset-legend-color);
14
+ font: var(--property-sidebar-fieldset-label);
15
+ }
16
+
17
+ fieldset legend {
18
+ padding: 5px 0 0 5px;
19
+ color: var(--property-sidebar-fieldset-legend-color);
20
+ font: var(--property-sidebar-fieldset-legend);
21
+ text-transform: capitalize;
22
+ }
23
+
24
+ select,
25
+ input {
26
+ border: var(--property-sidebar-fieldset-border);
27
+ }
28
+
29
+ /* property grid */
30
+ .property-grid {
31
+ display: grid;
32
+ grid-template-columns: repeat(10, 1fr);
33
+ grid-gap: 5px;
34
+ grid-auto-rows: minmax(24px, auto);
35
+ align-items: center;
36
+ }
37
+
38
+ .property-grid > * {
39
+ width: 100%;
40
+ box-sizing: border-box;
41
+ }
42
+
43
+ .property-grid > label {
44
+ grid-column: span 3;
45
+ text-align: right;
46
+ text-transform: capitalize;
47
+ line-height: 2;
48
+ }
49
+
50
+ .property-grid > input,
51
+ .property-grid > table,
52
+ .property-grid > select,
53
+ .property-grid > ox-input-angle,
54
+ .property-grid > ox-buttons-radio,
55
+ .property-grid > things-editor-color,
56
+ [custom-editor] {
57
+ grid-column: span 7;
58
+ align-self: stretch;
59
+ }
60
+
61
+ .property-grid > .checkbox-row {
62
+ grid-column: span 10;
63
+ }
64
+
65
+ .property-grid > .property-full-label {
66
+ grid-column: span 3;
67
+ text-align: right;
68
+ text-transform: capitalize;
69
+ }
70
+
71
+ .property-grid > .property-half-label {
72
+ grid-column: span 1;
73
+ }
74
+
75
+ .property-grid > .property-full-input {
76
+ grid-column: span 7;
77
+ }
78
+
79
+ .property-grid > .property-half-input {
80
+ grid-column: span 4;
81
+ }
82
+
83
+ /* checkbox-row */
84
+ .checkbox-row {
85
+ display: grid;
86
+ grid-template-columns: repeat(10, 1fr);
87
+ grid-gap: 5px;
88
+ grid-auto-rows: minmax(24px, auto);
89
+ align-items: center;
90
+ }
91
+
92
+ .checkbox-row > input {
93
+ grid-column: 4 / 5;
94
+ }
95
+
96
+ .checkbox-row > label {
97
+ grid-column: span 6;
98
+ text-align: left;
99
+ }
100
+
101
+ /* image resources */
102
+ .icon-only-label {
103
+ grid-column: span 1;
104
+
105
+ background: url(/assets/images/icon-properties-label.png) no-repeat;
106
+ float: left;
107
+ margin: 0;
108
+ align-self: stretch;
109
+ }
110
+
111
+ .icon-only-label.color {
112
+ background-position: 100% -500px;
113
+ }
114
+ .icon-only-label.font-size {
115
+ background-position: 100% -594px;
116
+ }
117
+ .icon-only-label.leading {
118
+ background-position: 100% -696px;
119
+ }
120
+ .icon-only-label.hscale {
121
+ background-position: 100% -296px;
122
+ }
123
+ .icon-only-label.vscale {
124
+ background-position: 100% -396px;
125
+ }
126
+ .icon-only-label.linewidth {
127
+ background-position: 100% -894px;
128
+ }
129
+ .icon-only-label.lineHeight {
130
+ background-position: 100% -995px;
131
+ }
132
+ `