@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 @@
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../../../../src/modeller/property-sidebar/styles/styles.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @license Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport '@polymer/paper-dropdown-menu/paper-dropdown-menu'\nimport '@things-factory/help'\nimport '@things-factory/modeller-ui/client/editors/things-editor-color'\nimport '@things-factory/modeller-ui/client/editors/things-editor-color-style'\nimport '@things-factory/modeller-ui/client/editors/things-editor-font-selector'\n\nimport { css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\nimport { Component } from '@hatiolab/things-scene'\n\nimport { AbstractProperty } from '../abstract-property'\nimport { PropertySharedStyle } from '../property-shared-style'\n\n@customElement('property-style')\nclass PropertyStyles extends AbstractProperty {\n static styles = [\n PropertySharedStyle,\n css`\n paper-slider {\n width: 100%;\n }\n\n .btn-group {\n height: 24px;\n }\n\n .btn-group paper-button {\n width: 30px;\n height: 24px;\n min-width: initial;\n margin: 0 4px 0 0;\n padding: 0;\n border-radius: 0;\n display: inline-block;\n border-bottom: 2px solid #fff;\n\n background: url(/assets/images/icon-properties.png) no-repeat;\n background-size: 70%;\n }\n\n .btn-group paper-button.tbold {\n background-position: 50% -170px;\n }\n\n .btn-group paper-button.titalic {\n background-position: 50% -205px;\n }\n\n .btn-group paper-button.tunderline {\n background-position: 50% -240px;\n }\n\n .btn-group paper-button.tstrikethrough {\n background-position: 50% -415px;\n }\n\n .btn-group paper-button[active] {\n border-color: #f2471c;\n }\n\n .line-type paper-listbox {\n overflow: hidden;\n max-width: 100px;\n }\n .line-type paper-item {\n background: url(/assets/images/icon-properties-line-type.png) 50% 0 no-repeat;\n min-height: 25px;\n padding: 3px 9px;\n width: 80px;\n }\n\n .line-type paper-item.solid {\n background-position: 50% 10px;\n }\n .line-type paper-item.round-dot {\n background-position: 50% -40px;\n }\n .line-type paper-item.square-dot {\n background-position: 50% -90px;\n }\n .line-type paper-item.dash {\n background-position: 50% -140px;\n }\n .line-type paper-item.dash-dot {\n background-position: 50% -190px;\n }\n .line-type paper-item.long-dash {\n background-position: 50% -240px;\n }\n .line-type paper-item.long-dash-dot {\n background-position: 50% -290px;\n }\n .line-type paper-item.long-dash-dot-dot {\n background-position: 50% -340px;\n }\n\n .line-type .paper-input-container input {\n background: url(/assets/images/icon-properties-line-type.png) 50% 0 no-repeat !important;\n }\n .line-type.solid .paper-input-container input {\n background-position: 50% 5px !important;\n }\n .line-type.round-dot .paper-input-container input {\n background-position: 50% -45px !important;\n }\n .line-type.square-dot .paper-input-container input {\n background-position: 50% -85px !important;\n }\n .line-type.dash .paper-input-container input {\n background-position: 50% -145px !important;\n }\n .line-type.dash-dot .paper-input-container input {\n background-position: 50% -185px !important;\n }\n .line-type.long-dash .paper-input-container input {\n background-position: 50% -245px !important;\n }\n .line-type.long-dash-dot .paper-input-container input {\n background-position: 50% -285px !important;\n }\n .line-type.long-dash-dot-dot .paper-input-container input {\n background-position: 50% -345px !important;\n }\n\n .arrow-type paper-menu {\n overflow: hidden;\n max-width: 140px;\n }\n .arrow-type paper-item {\n background: url(/assets/images/icon-properties-arrow-type.png) 50% 0 no-repeat;\n min-height: 30px;\n padding: 3px 7px;\n width: 30px;\n float: left;\n }\n .arrow-type paper-item.begin-no {\n background-position: 50% 16px;\n }\n .arrow-type paper-item.begin-arrow {\n background-position: 50% -39px;\n }\n .arrow-type paper-item.begin-open-arrow {\n background-position: 50% -89px;\n }\n .arrow-type paper-item.begin-stealth-arrow {\n background-position: 50% -139px;\n }\n .arrow-type paper-item.begin-diamond-arrow {\n background-position: 50% -190px;\n }\n .arrow-type paper-item.begin-oval-arrow {\n background-position: 50% -238px;\n }\n .arrow-type paper-item.begin-size1 {\n background-position: 50% -286px;\n }\n .arrow-type paper-item.begin-size2 {\n background-position: 50% -336px;\n }\n .arrow-type paper-item.begin-size3 {\n background-position: 50% -386px;\n }\n .arrow-type paper-item.begin-size4 {\n background-position: 50% -436px;\n }\n .arrow-type paper-item.begin-size5 {\n background-position: 50% -486px;\n }\n .arrow-type paper-item.begin-size6 {\n background-position: 50% -536px;\n }\n .arrow-type paper-item.begin-size7 {\n background-position: 50% -589px;\n }\n .arrow-type paper-item.begin-size8 {\n background-position: 50% -639px;\n }\n .arrow-type paper-item.begin-size9 {\n background-position: 50% -689px;\n }\n .arrow-type paper-item.end-no {\n background-position: 50% 16px;\n }\n .arrow-type paper-item.end-arrow {\n background-position: 50% -739px;\n }\n .arrow-type paper-item.end-open-arrow {\n background-position: 50% -789px;\n }\n .arrow-type paper-item.end-stealth-arrow {\n background-position: 50% -839px;\n }\n .arrow-type paper-item.end-diamond-arrow {\n background-position: 50% -890px;\n }\n .arrow-type paper-item.end-oval-arrow {\n background-position: 50% -938px;\n }\n .arrow-type paper-item.end-size1 {\n background-position: 50% -986px;\n }\n .arrow-type paper-item.end-size2 {\n background-position: 50% -1036px;\n }\n .arrow-type paper-item.end-size3 {\n background-position: 50% -1086px;\n }\n .arrow-type paper-item.end-size4 {\n background-position: 50% -1136px;\n }\n .arrow-type paper-item.end-size5 {\n background-position: 50% -1186px;\n }\n .arrow-type paper-item.end-size6 {\n background-position: 50% -1236px;\n }\n .arrow-type paper-item.end-size7 {\n background-position: 50% -1289px;\n }\n .arrow-type paper-item.end-size8 {\n background-position: 50% -1339px;\n }\n .arrow-type paper-item.end-size9 {\n background-position: 50% -1389px;\n }\n\n .arrow-type .paper-input-container input {\n background: url(/assets/images/icon-properties-arrow-type.png) 110% 0 no-repeat !important;\n }\n .arrow-type.begin-no .paper-input-container input {\n background-position: 110% 5px !important;\n }\n .arrow-type.begin-arrow .paper-input-container input {\n background-position: 110% -50px !important;\n }\n .arrow-type.begin-open-arrow .paper-input-container input {\n background-position: 110% -100px !important;\n }\n .arrow-type.begin-stealth-arrow .paper-input-container input {\n background-position: 110% -150px !important;\n }\n .arrow-type.begin-diamond-arrow .paper-input-container input {\n background-position: 110% -200px !important;\n }\n .arrow-type.begin-oval-arrow .paper-input-container input {\n background-position: 110% -250px !important;\n }\n .arrow-type.begin-size1 .paper-input-container input {\n background-position: 110% -298px !important;\n }\n .arrow-type.begin-size2 .paper-input-container input {\n background-position: 110% -348px !important;\n }\n .arrow-type.begin-size3 .paper-input-container input {\n background-position: 110% -398px !important;\n }\n .arrow-type.begin-size4 .paper-input-container input {\n background-position: 110% -448px !important;\n }\n .arrow-type.begin-size5 .paper-input-container input {\n background-position: 110% -498px !important;\n }\n .arrow-type.begin-size6 .paper-input-container input {\n background-position: 110% -548px !important;\n }\n .arrow-type.begin-size7 .paper-input-container input {\n background-position: 110% -600px !important;\n }\n .arrow-type.begin-size8 .paper-input-container input {\n background-position: 110% -650px !important;\n }\n .arrow-type.begin-size9 .paper-input-container input {\n background-position: 110% -700px !important;\n }\n .arrow-type.end-no .paper-input-container input {\n background-position: 110% 5px !important;\n }\n .arrow-type.end-arrow .paper-input-container input {\n background-position: 110% -750px !important;\n }\n .arrow-type.end-open-arrow .paper-input-container input {\n background-position: 110% -800px !important;\n }\n .arrow-type.end-stealth-arrow .paper-input-container input {\n background-position: 110% -850px !important;\n }\n .arrow-type.end-diamond-arrow .paper-input-container input {\n background-position: 110% -900px !important;\n }\n .arrow-type.end-oval-arrow .paper-input-container input {\n background-position: 110% -950px !important;\n }\n .arrow-type.end-size1 .paper-input-container input {\n background-position: 110% -998px !important;\n }\n .arrow-type.end-size2 .paper-input-container input {\n background-position: 110% -1048px !important;\n }\n .arrow-type.end-size3 .paper-input-container input {\n background-position: 110% -1098px !important;\n }\n .arrow-type.end-size4 .paper-input-container input {\n background-position: 110% -1148px !important;\n }\n .arrow-type.end-size5 .paper-input-container input {\n background-position: 110% -1198px !important;\n }\n .arrow-type.end-size6 .paper-input-container input {\n background-position: 110% -1248px !important;\n }\n .arrow-type.end-size7 .paper-input-container input {\n background-position: 110% -1300px !important;\n }\n .arrow-type.end-size8 .paper-input-container input {\n background-position: 110% -1350px !important;\n }\n .arrow-type.end-size9 .paper-input-container input {\n background-position: 110% -1400px !important;\n }\n `\n ]\n @property({ type: Object }) value: any = {}\n @property({ type: Array }) selected: Component[] = []\n @property({ type: Array }) fonts: any[] = []\n\n firstUpdated() {\n this.renderRoot.addEventListener('change', this._onValueChange.bind(this))\n }\n\n render() {\n var {\n alpha,\n fontFamily,\n fontSize,\n lineHeight,\n fontColor,\n bold,\n italic,\n fillStyle,\n lineWidth,\n strokeStyle,\n lineDash,\n lineCap,\n lineJoin,\n begin,\n beginSize,\n end,\n endSize\n } = this.value\n\n return html`\n <fieldset>\n <legend>\n <title-with-help topic=\"board-modeller/styles/opacity\" msgid=\"label.opacity\">opacity</title-with-help>\n </legend>\n <paper-slider min=\"0\" max=\"1\" step=\"0.1\" value-key=\"alpha\" .value=${alpha || 1} editable> </paper-slider>\n </fieldset>\n\n <fieldset>\n <legend>\n <title-with-help topic=\"board-modeller/styles/text-style\" msgid=\"label.text-style\"\n >text style</title-with-help\n >\n </legend>\n\n <div class=\"property-grid\">\n <label class=\"property-full-label\">\n <i18n-msg msgid=\"label.font-family\">Font Family</i18n-msg>\n </label>\n\n <things-editor-font-selector\n value-key=\"fontFamily\"\n .value=${fontFamily}\n class=\"property-full-input\"\n custom-editor\n ></things-editor-font-selector>\n\n <label class=\"property-half-label icon-only-label font-size\"></label>\n <input type=\"number\" value-key=\"fontSize\" .value=${fontSize} class=\"property-half-input\" />\n\n <label class=\"property-half-label icon-only-label lineHeight\"></label>\n <input type=\"number\" value-key=\"lineHeight\" .value=${lineHeight} class=\"property-half-input\" />\n\n <label class=\"property-half-label icon-only-label color\"></label>\n <things-editor-color value-key=\"fontColor\" .value=${fontColor} class=\"property-half-input\">\n </things-editor-color>\n\n <label class=\"property-half-label\"></label>\n <div class=\"property-half-input btn-group\">\n <paper-button toggles value-key=\"bold\" ?active=${bold} class=\"tbold\"> </paper-button>\n <paper-button toggles value-key=\"italic\" ?active=${italic} class=\"titalic\"> </paper-button>\n </div>\n </div>\n </fieldset>\n\n <fieldset>\n <legend>\n <title-with-help topic=\"board-modeller/styles/fill-style\" msgid=\"label.fill-style\"\n >fill style</title-with-help\n >\n </legend>\n\n <things-editor-color-style value-key=\"fillStyle\" .value=${fillStyle}> </things-editor-color-style>\n </fieldset>\n\n <fieldset>\n <legend>\n <title-with-help msgid=\"label.line-style\" topic=\"board-modeller/styles/line-style\"></title-with-help>\n </legend>\n\n <div class=\"property-grid\">\n <label class=\"property-half-label icon-only-label linewidth\"></label>\n <input type=\"number\" value-key=\"lineWidth\" .value=${lineWidth} class=\"property-half-input\" />\n\n <label class=\"property-half-label icon-only-label color\"></label>\n <things-editor-color value-key=\"strokeStyle\" .value=${strokeStyle} class=\"property-half-input\">\n </things-editor-color>\n\n <label class=\"property-full-label\">\n <i18n-msg msgid=\"label.line-type\">line type</i18n-msg>\n </label>\n <paper-dropdown-menu no-label-float=\"true\" class=\"property-full-input line-type solid\">\n <!-- solid는 선택된 항목 보여주기위한 class로 하위 paper-item의 class와 동일하게 -->\n <paper-listbox\n value-key=\"lineDash\"\n @selected-changed=${(e: CustomEvent) => this._onValueChange(e)}\n slot=\"dropdown-content\"\n .selected=${lineDash}\n attr-for-selected=\"name\"\n >\n <paper-item class=\"solid\" name=\"solid\"></paper-item>\n <paper-item class=\"round-dot\" name=\"round-dot\"></paper-item>\n <paper-item class=\"square-dot\" name=\"square-dot\"></paper-item>\n <paper-item class=\"dash\" name=\"dash\"></paper-item>\n <paper-item class=\"dash-dot\" name=\"dash-dot\"></paper-item>\n <paper-item class=\"long-dash\" name=\"long-dash\"></paper-item>\n <paper-item class=\"long-dash-dot\" name=\"long-dash-dot\"></paper-item>\n <paper-item class=\"long-dash-dot-dot\" name=\"long-dash-dot-dot\"></paper-item>\n </paper-listbox>\n </paper-dropdown-menu>\n\n <label class=\"property-full-label\">\n <i18n-msg msgid=\"label.cap-type\">cap type</i18n-msg>\n </label>\n <select class=\"property-full-input select-content\" value-key=\"lineCap\" .value=${lineCap}>\n <option value=\"butt\"><i18n-msg msgid=\"label.square\">square</i18n-msg></option>\n <option value=\"round\"><i18n-msg msgid=\"label.round\">round</i18n-msg></option>\n </select>\n\n <label class=\"property-full-label\">\n <i18n-msg msgid=\"label.join-type\">join type</i18n-msg>\n </label>\n <select class=\"property-full-input select-content\" value-key=\"lineJoin\" .value=${lineJoin}>\n <option value=\"miter\"><i18n-msg msgid=\"label.miter\">miter</i18n-msg></option>\n <option value=\"round\"><i18n-msg msgid=\"label.round\">round</i18n-msg></option>\n <option value=\"bevel\"><i18n-msg msgid=\"label.bevel\">bevel</i18n-msg></option>\n </select>\n\n ${this._isLine(this.selected)\n ? html`\n <label class=\"property-full-label\">\n <i18n-msg msgid=\"label.begin-type\">begin type</i18n-msg>\n </label>\n <paper-dropdown-menu no-label-float=\"true\" class=\"property-full-input arrow-type begin-no\">\n <!-- begin-no는 선택된 항목 보여주기위한 class로 하위 paper-item의 class와 동일하게 -->\n <paper-listbox\n value-key=\"begin\"\n @selected-changed=${(e: CustomEvent) => this._onValueChange(e)}\n slot=\"dropdown-content\"\n .selected=${begin}\n attr-for-selected=\"name\"\n >\n <paper-item class=\"begin-no\" name=\"none\"></paper-item>\n <paper-item class=\"begin-arrow\" name=\"arrow\"></paper-item>\n <paper-item class=\"begin-open-arrow\" name=\"open-arrow\"></paper-item>\n <paper-item class=\"begin-stealth-arrow\" name=\"sharp-arrow\"></paper-item>\n <paper-item class=\"begin-diamond-arrow\" name=\"diamond\"></paper-item>\n <paper-item class=\"begin-oval-arrow\" name=\"oval\"></paper-item>\n </paper-listbox>\n </paper-dropdown-menu>\n\n <label class=\"property-full-label\">\n <i18n-msg msgid=\"label.begin-size\">begin size</i18n-msg>\n </label>\n <paper-dropdown-menu no-label-float=\"true\" class=\"property-full-input arrow-type begin-size1\">\n <!-- begin-size1는 선택된 항목 보여주기위한 class로 하위 paper-item의 class와 동일하게 -->\n <paper-listbox\n value-key=\"beginSize\"\n @selected-changed=${(e: CustomEvent) => this._onValueChange(e)}\n slot=\"dropdown-content\"\n .selected=${beginSize}\n attr-for-selected=\"name\"\n >\n <paper-item class=\"begin-size1\" name=\"size1\"></paper-item>\n <paper-item class=\"begin-size2\" name=\"size2\"></paper-item>\n <paper-item class=\"begin-size3\" name=\"size3\"></paper-item>\n <paper-item class=\"begin-size4\" name=\"size4\"></paper-item>\n <paper-item class=\"begin-size5\" name=\"size5\"></paper-item>\n <paper-item class=\"begin-size6\" name=\"size6\"></paper-item>\n <paper-item class=\"begin-size7\" name=\"size7\"></paper-item>\n <paper-item class=\"begin-size8\" name=\"size8\"></paper-item>\n <paper-item class=\"begin-size9\" name=\"size9\"></paper-item>\n </paper-listbox>\n </paper-dropdown-menu>\n\n <label class=\"property-full-label\">\n <i18n-msg msgid=\"label.end-type\">end type</i18n-msg>\n </label>\n <paper-dropdown-menu no-label-float=\"true\" class=\"property-full-input arrow-type end-no\">\n <!-- end-no는 선택된 항목 보여주기위한 class로 하위 paper-item의 class와 동일하게 -->\n <paper-listbox\n value-key=\"end\"\n @selected-changed=${(e: CustomEvent) => this._onValueChange(e)}\n slot=\"dropdown-content\"\n .selected=${end}\n attr-for-selected=\"name\"\n >\n <paper-item class=\"end-no\" name=\"none\"></paper-item>\n <paper-item class=\"end-arrow\" name=\"arrow\"></paper-item>\n <paper-item class=\"end-open-arrow\" name=\"open-arrow\"></paper-item>\n <paper-item class=\"end-stealth-arrow\" name=\"sharp-arrow\"></paper-item>\n <paper-item class=\"end-diamond-arrow\" name=\"diamond\"></paper-item>\n <paper-item class=\"end-oval-arrow\" name=\"oval\"></paper-item>\n </paper-listbox>\n </paper-dropdown-menu>\n\n <label class=\"property-full-label\">\n <i18n-msg msgid=\"label.end-size\">end size</i18n-msg>\n </label>\n <paper-dropdown-menu no-label-float=\"true\" class=\"property-full-input arrow-type end-size1\">\n <!-- end-size1는 선택된 항목 보여주기위한 class로 하위 paper-item의 class와 동일하게 -->\n <paper-listbox\n value-key=\"endSize\"\n @selected-changed=${(e: CustomEvent) => this._onValueChange(e)}\n slot=\"dropdown-content\"\n .selected=${endSize}\n attr-for-selected=\"name\"\n >\n <paper-item class=\"end-size1\" name=\"size1\"></paper-item>\n <paper-item class=\"end-size2\" name=\"size2\"></paper-item>\n <paper-item class=\"end-size3\" name=\"size3\"></paper-item>\n <paper-item class=\"end-size4\" name=\"size4\"></paper-item>\n <paper-item class=\"end-size5\" name=\"size5\"></paper-item>\n <paper-item class=\"end-size6\" name=\"size6\"></paper-item>\n <paper-item class=\"end-size7\" name=\"size7\"></paper-item>\n <paper-item class=\"end-size8\" name=\"size8\"></paper-item>\n <paper-item class=\"end-size9\" name=\"size9\"></paper-item>\n </paper-listbox>\n </paper-dropdown-menu>\n `\n : html``}\n </div>\n </fieldset>\n `\n }\n\n _isLine(selected: Component[]) {\n var isLine = false\n\n for (var i = 0; i < selected.length; i++) {\n var comp = selected[i]\n\n if (!comp.isLine || !comp.isLine()) {\n isLine = false\n return isLine\n }\n\n isLine = true\n }\n\n return isLine\n }\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import { Layer as SceneLayer } from '@hatiolab/things-scene';
2
+ export default class ConfidentialOverlay extends SceneLayer {
3
+ _draw(context: CanvasRenderingContext2D): void;
4
+ }
@@ -0,0 +1,14 @@
1
+ /*
2
+ * Copyright © HatioLab Inc. All rights reserved.
3
+ */
4
+ import { Component as SceneComponent, Layer as SceneLayer } from '@hatiolab/things-scene';
5
+ export default class ConfidentialOverlay extends SceneLayer {
6
+ _draw(context) {
7
+ context.globalAlpha = 0.3;
8
+ context.font = '50px Verdana';
9
+ context.fillStyle = 'red';
10
+ context.fillText(this.get('text') || 'CONFIDENTIAL', 20, 60);
11
+ }
12
+ }
13
+ SceneComponent.register('confidential-overlay', ConfidentialOverlay);
14
+ //# sourceMappingURL=confidential-overlay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"confidential-overlay.js","sourceRoot":"","sources":["../../../../src/modeller/scene-viewer/confidential-overlay.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,IAAI,cAAc,EAAE,KAAK,IAAI,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAEzF,MAAM,CAAC,OAAO,OAAO,mBAAoB,SAAQ,UAAU;IACzD,KAAK,CAAC,OAAiC;QACrC,OAAO,CAAC,WAAW,GAAG,GAAG,CAAA;QAEzB,OAAO,CAAC,IAAI,GAAG,cAAc,CAAA;QAC7B,OAAO,CAAC,SAAS,GAAG,KAAK,CAAA;QAEzB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,cAAc,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;IAC9D,CAAC;CACF;AAED,cAAc,CAAC,QAAQ,CAAC,sBAAsB,EAAE,mBAAmB,CAAC,CAAA","sourcesContent":["/*\n * Copyright © HatioLab Inc. All rights reserved.\n */\n\nimport { Component as SceneComponent, Layer as SceneLayer } from '@hatiolab/things-scene'\n\nexport default class ConfidentialOverlay extends SceneLayer {\n _draw(context: CanvasRenderingContext2D) {\n context.globalAlpha = 0.3\n\n context.font = '50px Verdana'\n context.fillStyle = 'red'\n\n context.fillText(this.get('text') || 'CONFIDENTIAL', 20, 60)\n }\n}\n\nSceneComponent.register('confidential-overlay', ConfidentialOverlay)\n"]}
@@ -0,0 +1,11 @@
1
+ import './ox-scene-property';
2
+ import { LitElement } from 'lit';
3
+ export default class OxSceneHandler extends LitElement {
4
+ type: string;
5
+ model: {
6
+ type: Object;
7
+ notify: true;
8
+ };
9
+ render(): import("lit-html").TemplateResult<1>;
10
+ connectedCallback(): void;
11
+ }
@@ -0,0 +1,36 @@
1
+ import { __decorate } from "tslib";
2
+ import './ox-scene-property';
3
+ import { LitElement, html } from 'lit';
4
+ import { customElement, property } from 'lit/decorators.js';
5
+ let OxSceneHandler = class OxSceneHandler extends LitElement {
6
+ render() {
7
+ return html ` <slot select="ox-scene-property"></slot> `;
8
+ }
9
+ connectedCallback() {
10
+ super.connectedCallback();
11
+ let model = {
12
+ type: this.type
13
+ };
14
+ model = Array.from(this.querySelectorAll('ox-scene-property')).reduce((model, property) => {
15
+ const name = property.getAttribute('name');
16
+ const value = property.getAttribute('value');
17
+ if (name) {
18
+ model[name] = value;
19
+ }
20
+ return model;
21
+ }, model);
22
+ model.__host__ = this;
23
+ this.model = model;
24
+ }
25
+ };
26
+ __decorate([
27
+ property({ type: String })
28
+ ], OxSceneHandler.prototype, "type", void 0);
29
+ __decorate([
30
+ property({ type: Object })
31
+ ], OxSceneHandler.prototype, "model", void 0);
32
+ OxSceneHandler = __decorate([
33
+ customElement('ox-scene-handler')
34
+ ], OxSceneHandler);
35
+ export default OxSceneHandler;
36
+ //# sourceMappingURL=ox-scene-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ox-scene-handler.js","sourceRoot":"","sources":["../../../../src/modeller/scene-viewer/ox-scene-handler.ts"],"names":[],"mappings":";AAAA,OAAO,qBAAqB,CAAA;AAE5B,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,KAAK,CAAA;AACtC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAG3D,IAAqB,cAAc,GAAnC,MAAqB,cAAe,SAAQ,UAAU;IAOpD,MAAM;QACJ,OAAO,IAAI,CAAA,4CAA4C,CAAA;IACzD,CAAC;IAED,iBAAiB;QACf,KAAK,CAAC,iBAAiB,EAAE,CAAA;QAEzB,IAAI,KAAK,GAAQ;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAA;QAED,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAU,EAAE,QAAa,EAAE,EAAE;YAClG,MAAM,IAAI,GAAG,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;YAC1C,MAAM,KAAK,GAAG,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;YAE5C,IAAI,IAAI,EAAE;gBACR,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAA;aACpB;YAED,OAAO,KAAK,CAAA;QACd,CAAC,EAAE,KAAK,CAAC,CAAA;QAET,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAA;QAErB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACpB,CAAC;CACF,CAAA;AAhC6B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;4CAAc;AACb;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;6CAG1B;AALkB,cAAc;IADlC,aAAa,CAAC,kBAAkB,CAAC;GACb,cAAc,CAiClC;eAjCoB,cAAc","sourcesContent":["import './ox-scene-property'\n\nimport { LitElement, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\n@customElement('ox-scene-handler')\nexport default class OxSceneHandler extends LitElement {\n @property({ type: String }) type!: string\n @property({ type: Object }) model!: {\n type: Object\n notify: true\n }\n\n render() {\n return html` <slot select=\"ox-scene-property\"></slot> `\n }\n\n connectedCallback() {\n super.connectedCallback()\n\n let model: any = {\n type: this.type\n }\n\n model = Array.from(this.querySelectorAll('ox-scene-property')).reduce((model: any, property: any) => {\n const name = property.getAttribute('name')\n const value = property.getAttribute('value')\n\n if (name) {\n model[name] = value\n }\n\n return model\n }, model)\n\n model.__host__ = this\n\n this.model = model\n }\n}\n"]}
@@ -0,0 +1,10 @@
1
+ import './ox-scene-property';
2
+ import { LitElement } from 'lit';
3
+ export default class OxSceneLayer extends LitElement {
4
+ type?: String;
5
+ text?: String;
6
+ render(): import("lit-html").TemplateResult<1>;
7
+ getModel(): {
8
+ type: String | undefined;
9
+ };
10
+ }
@@ -0,0 +1,42 @@
1
+ import { __decorate } from "tslib";
2
+ import './ox-scene-property';
3
+ import { LitElement, html } from 'lit';
4
+ import { customElement, property } from 'lit/decorators.js';
5
+ let OxSceneLayer = class OxSceneLayer extends LitElement {
6
+ render() {
7
+ return html ` <slot select="ox-scene-property"></slot> `;
8
+ }
9
+ getModel() {
10
+ let model = {
11
+ type: this.type
12
+ };
13
+ model = Array.from(this.querySelectorAll('ox-scene-property')).reduce((model, property) => {
14
+ let value = property.value;
15
+ if (property.name) {
16
+ switch (property.type) {
17
+ case 'number':
18
+ value = Number(value);
19
+ break;
20
+ case 'boolean':
21
+ value = Boolean(value);
22
+ break;
23
+ default:
24
+ }
25
+ model[property.name] = value;
26
+ }
27
+ return model;
28
+ }, model);
29
+ return model;
30
+ }
31
+ };
32
+ __decorate([
33
+ property({ type: String })
34
+ ], OxSceneLayer.prototype, "type", void 0);
35
+ __decorate([
36
+ property({ type: String })
37
+ ], OxSceneLayer.prototype, "text", void 0);
38
+ OxSceneLayer = __decorate([
39
+ customElement('ox-scene-layer')
40
+ ], OxSceneLayer);
41
+ export default OxSceneLayer;
42
+ //# sourceMappingURL=ox-scene-layer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ox-scene-layer.js","sourceRoot":"","sources":["../../../../src/modeller/scene-viewer/ox-scene-layer.ts"],"names":[],"mappings":";AAAA,OAAO,qBAAqB,CAAA;AAE5B,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,KAAK,CAAA;AACtC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAG3D,IAAqB,YAAY,GAAjC,MAAqB,YAAa,SAAQ,UAAU;IAIlD,MAAM;QACJ,OAAO,IAAI,CAAA,4CAA4C,CAAA;IACzD,CAAC;IAED,QAAQ;QACN,IAAI,KAAK,GAAG;YACV,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAA;QAED,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAU,EAAE,QAAa,EAAE,EAAE;YAClG,IAAI,KAAK,GAAQ,QAAQ,CAAC,KAAK,CAAA;YAE/B,IAAI,QAAQ,CAAC,IAAI,EAAE;gBACjB,QAAQ,QAAQ,CAAC,IAAI,EAAE;oBACrB,KAAK,QAAQ;wBACX,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;wBACrB,MAAK;oBACP,KAAK,SAAS;wBACZ,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;wBACtB,MAAK;oBACP,QAAQ;iBACT;gBAED,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAA;aAC7B;YAED,OAAO,KAAK,CAAA;QACd,CAAC,EAAE,KAAK,CAAC,CAAA;QAET,OAAO,KAAK,CAAA;IACd,CAAC;CACF,CAAA;AAlC6B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;0CAAc;AACb;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;0CAAc;AAFtB,YAAY;IADhC,aAAa,CAAC,gBAAgB,CAAC;GACX,YAAY,CAmChC;eAnCoB,YAAY","sourcesContent":["import './ox-scene-property'\n\nimport { LitElement, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\n@customElement('ox-scene-layer')\nexport default class OxSceneLayer extends LitElement {\n @property({ type: String }) type?: String\n @property({ type: String }) text?: String\n\n render() {\n return html` <slot select=\"ox-scene-property\"></slot> `\n }\n\n getModel() {\n let model = {\n type: this.type\n }\n\n model = Array.from(this.querySelectorAll('ox-scene-property')).reduce((model: any, property: any) => {\n let value: any = property.value\n\n if (property.name) {\n switch (property.type) {\n case 'number':\n value = Number(value)\n break\n case 'boolean':\n value = Boolean(value)\n break\n default:\n }\n\n model[property.name] = value\n }\n\n return model\n }, model)\n\n return model\n }\n}\n"]}
@@ -0,0 +1,99 @@
1
+ import { __decorate } from "tslib";
2
+ import { LitElement, css, html } from 'lit';
3
+ import { customElement, property } from 'lit/decorators.js';
4
+ let OxScenePlayer = class OxScenePlayer extends LitElement {
5
+ constructor() {
6
+ super(...arguments);
7
+ this.sceneId = '';
8
+ /*
9
+ * 캔바스에 모델을 어떻게 적절하게 보여줄 것인지를 설정한다.
10
+ *
11
+ * @none 가로, 세로 스케일을 1로 고정하고, {0, 0}좌표로 translate시킨다.
12
+ * @both 캔바스에 모델을 꼭 채우도록 가로, 세로 스케일을 조정하고, {0, 0}좌표로 translate시킨다.
13
+ * @width 캔바스의 폭에 모델의 폭을 일치하도록 가로, 세로 스케일을 동일하게 조정하고, {0, 0}좌표로 translate시킨다.
14
+ * @height 캔바스의 높이에 모델의 높이를 일치하도록 가로, 세로 스케일을 동일하게 조정하고, {0, 0}좌표로 translate시킨다.
15
+ * @center 가로, 세로 스케일을 1로 고정하고 모델이 화면의 중앙에 위치하도록 translate시킨다.
16
+ * @ratio 모델의 모든 부분이 캔바스에 최대 크기로 표현될 수 있도록 가로, 세로 동일한 스케일로 조정하고, {0, 0}좌표로 translate시킨다.
17
+ *
18
+ * @todo things-real 에서는 enumeration type 이며, FitMode.RATIO | FitMode.BOTH 중 하나로 정의한다.
19
+ */
20
+ this.fit = 'ratio';
21
+ }
22
+ render() {
23
+ return html ` <div id="root"></div> `;
24
+ }
25
+ connectedCallback() {
26
+ super.connectedCallback();
27
+ window.addEventListener('resize', () => {
28
+ requestAnimationFrame(() => {
29
+ if (this.scene) {
30
+ this.scene.resize();
31
+ if (this.offsetWidth) {
32
+ this.scene.fit(this.fit);
33
+ }
34
+ }
35
+ });
36
+ });
37
+ }
38
+ disconnectedCallback() {
39
+ super.disconnectedCallback();
40
+ this._releaseRef();
41
+ }
42
+ updated(change) {
43
+ change.has('sceneId') && this._onSceneIdChanged();
44
+ }
45
+ _releaseRef() {
46
+ if (this.scene) {
47
+ this.scene.target = null;
48
+ this.scene.release();
49
+ delete this.scene;
50
+ }
51
+ }
52
+ _onSceneIdChanged() {
53
+ if (!this.provider)
54
+ return;
55
+ this._releaseRef();
56
+ if (!this.sceneId)
57
+ return;
58
+ this.provider.get(this.sceneId, true).then((scene) => {
59
+ var _a;
60
+ this.scene = scene;
61
+ if (!this.scene) {
62
+ return;
63
+ }
64
+ this.scene.target = this.renderRoot.querySelector('#root');
65
+ /* 이 컴포넌트의 폭이 값을 가지고 있으면 - 화면상에 자리를 잡고 보여지고 있음을 의미한다.
66
+ * 이 때는 정상적으로 그려주고,
67
+ * 그렇지 않으면, 다음 Resize Handling시에 처리하도록 한다.
68
+ */
69
+ if ((_a = this.scene.target) === null || _a === void 0 ? void 0 : _a.offsetWidth)
70
+ this.scene.fit(this.fit);
71
+ }, (e) => { });
72
+ }
73
+ };
74
+ OxScenePlayer.styles = [
75
+ css `
76
+ :host {
77
+ display: block;
78
+ width: 100%;
79
+ }
80
+
81
+ #root {
82
+ width: 100%;
83
+ height: 100%;
84
+ }
85
+ `
86
+ ];
87
+ __decorate([
88
+ property({ type: String })
89
+ ], OxScenePlayer.prototype, "sceneId", void 0);
90
+ __decorate([
91
+ property({ type: String })
92
+ ], OxScenePlayer.prototype, "fit", void 0);
93
+ __decorate([
94
+ property({ type: Object })
95
+ ], OxScenePlayer.prototype, "provider", void 0);
96
+ OxScenePlayer = __decorate([
97
+ customElement('things-scene-player')
98
+ ], OxScenePlayer);
99
+ //# sourceMappingURL=ox-scene-player.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ox-scene-player.js","sourceRoot":"","sources":["../../../../src/modeller/scene-viewer/ox-scene-player.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAkB,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAA;AAC3D,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAK3D,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,UAAU;IAAtC;;QAe8B,YAAO,GAAW,EAAE,CAAA;QAChD;;;;;;;;;;;WAWG;QACyB,QAAG,GAA8D,OAAO,CAAA;IAqEtG,CAAC;IAhEC,MAAM;QACJ,OAAO,IAAI,CAAA,yBAAyB,CAAA;IACtC,CAAC;IAED,iBAAiB;QACf,KAAK,CAAC,iBAAiB,EAAE,CAAA;QAEzB,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE;YACrC,qBAAqB,CAAC,GAAG,EAAE;gBACzB,IAAI,IAAI,CAAC,KAAK,EAAE;oBACd,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAA;oBAEnB,IAAI,IAAI,CAAC,WAAW,EAAE;wBACpB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;qBACzB;iBACF;YACH,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,oBAAoB;QAClB,KAAK,CAAC,oBAAoB,EAAE,CAAA;QAE5B,IAAI,CAAC,WAAW,EAAE,CAAA;IACpB,CAAC;IAED,OAAO,CAAC,MAA4B;QAClC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAA;IACnD,CAAC;IAED,WAAW;QACT,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAA;YACxB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAA;YACpB,OAAO,IAAI,CAAC,KAAK,CAAA;SAClB;IACH,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAM;QAE1B,IAAI,CAAC,WAAW,EAAE,CAAA;QAElB,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAM;QAEzB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,IAAI,CACxC,CAAC,KAAY,EAAE,EAAE;;YACf,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;YAElB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;gBACf,OAAM;aACP;YAED,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;YAE1D;;;eAGG;YACH,IAAI,MAAA,IAAI,CAAC,KAAK,CAAC,MAAM,0CAAE,WAAW;gBAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC9D,CAAC,EACD,CAAC,CAAM,EAAE,EAAE,GAAE,CAAC,CACf,CAAA;IACH,CAAC;CACF,CAAA;AAhGQ,oBAAM,GAAG;IACd,GAAG,CAAA;;;;;;;;;;KAUF;CACF,CAAA;AAE2B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;8CAAqB;AAapB;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;0CAAyE;AACxE;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;+CAAc;AA7BrC,aAAa;IADlB,aAAa,CAAC,qBAAqB,CAAC;GAC/B,aAAa,CAiGlB","sourcesContent":["import { LitElement, PropertyValues, css, html } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\nimport { Scene } from '@hatiolab/things-scene'\n\n@customElement('things-scene-player')\nclass OxScenePlayer extends LitElement {\n static styles = [\n css`\n :host {\n display: block;\n width: 100%;\n }\n\n #root {\n width: 100%;\n height: 100%;\n }\n `\n ]\n\n @property({ type: String }) sceneId: string = ''\n /*\n * 캔바스에 모델을 어떻게 적절하게 보여줄 것인지를 설정한다.\n *\n * @none 가로, 세로 스케일을 1로 고정하고, {0, 0}좌표로 translate시킨다.\n * @both 캔바스에 모델을 꼭 채우도록 가로, 세로 스케일을 조정하고, {0, 0}좌표로 translate시킨다.\n * @width 캔바스의 폭에 모델의 폭을 일치하도록 가로, 세로 스케일을 동일하게 조정하고, {0, 0}좌표로 translate시킨다.\n * @height 캔바스의 높이에 모델의 높이를 일치하도록 가로, 세로 스케일을 동일하게 조정하고, {0, 0}좌표로 translate시킨다.\n * @center 가로, 세로 스케일을 1로 고정하고 모델이 화면의 중앙에 위치하도록 translate시킨다.\n * @ratio 모델의 모든 부분이 캔바스에 최대 크기로 표현될 수 있도록 가로, 세로 동일한 스케일로 조정하고, {0, 0}좌표로 translate시킨다.\n *\n * @todo things-real 에서는 enumeration type 이며, FitMode.RATIO | FitMode.BOTH 중 하나로 정의한다.\n */\n @property({ type: String }) fit: 'none' | 'both' | 'width' | 'height' | 'center' | 'ratio' = 'ratio'\n @property({ type: Object }) provider: any\n\n private scene?: Scene\n\n render() {\n return html` <div id=\"root\"></div> `\n }\n\n connectedCallback() {\n super.connectedCallback()\n\n window.addEventListener('resize', () => {\n requestAnimationFrame(() => {\n if (this.scene) {\n this.scene.resize()\n\n if (this.offsetWidth) {\n this.scene.fit(this.fit)\n }\n }\n })\n })\n }\n\n disconnectedCallback() {\n super.disconnectedCallback()\n\n this._releaseRef()\n }\n\n updated(change: PropertyValues<this>) {\n change.has('sceneId') && this._onSceneIdChanged()\n }\n\n _releaseRef() {\n if (this.scene) {\n this.scene.target = null\n this.scene.release()\n delete this.scene\n }\n }\n\n _onSceneIdChanged() {\n if (!this.provider) return\n\n this._releaseRef()\n\n if (!this.sceneId) return\n\n this.provider.get(this.sceneId, true).then(\n (scene: Scene) => {\n this.scene = scene\n\n if (!this.scene) {\n return\n }\n\n this.scene.target = this.renderRoot.querySelector('#root')\n\n /* 이 컴포넌트의 폭이 값을 가지고 있으면 - 화면상에 자리를 잡고 보여지고 있음을 의미한다.\n * 이 때는 정상적으로 그려주고,\n * 그렇지 않으면, 다음 Resize Handling시에 처리하도록 한다.\n */\n if (this.scene.target?.offsetWidth) this.scene.fit(this.fit)\n },\n (e: any) => {}\n )\n }\n}\n"]}
@@ -0,0 +1,6 @@
1
+ import { LitElement } from 'lit';
2
+ export default class OxSceneProperty extends LitElement {
3
+ name: string;
4
+ value: string;
5
+ type: string;
6
+ }
@@ -0,0 +1,19 @@
1
+ import { __decorate } from "tslib";
2
+ import { customElement, property } from 'lit/decorators.js';
3
+ import { LitElement } from 'lit';
4
+ let OxSceneProperty = class OxSceneProperty extends LitElement {
5
+ };
6
+ __decorate([
7
+ property({ type: String })
8
+ ], OxSceneProperty.prototype, "name", void 0);
9
+ __decorate([
10
+ property({ type: String })
11
+ ], OxSceneProperty.prototype, "value", void 0);
12
+ __decorate([
13
+ property({ type: String })
14
+ ], OxSceneProperty.prototype, "type", void 0);
15
+ OxSceneProperty = __decorate([
16
+ customElement('ox-scene-property')
17
+ ], OxSceneProperty);
18
+ export default OxSceneProperty;
19
+ //# sourceMappingURL=ox-scene-property.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ox-scene-property.js","sourceRoot":"","sources":["../../../../src/modeller/scene-viewer/ox-scene-property.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAE3D,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AAGhC,IAAqB,eAAe,GAApC,MAAqB,eAAgB,SAAQ,UAAU;CAItD,CAAA;AAH6B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;6CAAc;AACb;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;8CAAe;AACd;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;6CAAc;AAHtB,eAAe;IADnC,aAAa,CAAC,mBAAmB,CAAC;GACd,eAAe,CAInC;eAJoB,eAAe","sourcesContent":["import { customElement, property } from 'lit/decorators.js'\n\nimport { LitElement } from 'lit'\n\n@customElement('ox-scene-property')\nexport default class OxSceneProperty extends LitElement {\n @property({ type: String }) name!: string\n @property({ type: String }) value!: string\n @property({ type: String }) type!: string\n}\n"]}
@@ -0,0 +1,39 @@
1
+ import './confidential-overlay';
2
+ import './ox-scene-layer';
3
+ import './ox-scene-handler';
4
+ import { Component, FITMODE, Model, Properties, SCENE_MODE, Scene } from '@hatiolab/things-scene';
5
+ import { LitElement, PropertyValues } from 'lit';
6
+ export default class OxSceneViewer extends LitElement {
7
+ static styles: import("lit").CSSResult;
8
+ scene: Scene | null;
9
+ model?: Model;
10
+ mode: SCENE_MODE;
11
+ screenSize: number;
12
+ variables: Properties;
13
+ data: any;
14
+ fit: FITMODE;
15
+ selected: Component[];
16
+ disposeWhenDetached: boolean;
17
+ baseUrl: string;
18
+ provider: any;
19
+ name: string;
20
+ enableInspector: boolean;
21
+ showInspector: boolean;
22
+ private lastOffsetWidth?;
23
+ disconnectedCallback(): void;
24
+ render(): import("lit-html").TemplateResult<1>;
25
+ updated(change: PropertyValues<this>): void;
26
+ _setScene(scene: Scene | null): void;
27
+ _setMode(mode: SCENE_MODE): void;
28
+ _setVariables(variables: Properties): void;
29
+ _setSelected(selected: Component[]): void;
30
+ _disposeScene(): void;
31
+ resize(force: boolean): void;
32
+ _onModelChanged(model?: Model): void;
33
+ _onDisplayChanged(screenSize: string | number): void;
34
+ _onModeChanged(mode: SCENE_MODE): void;
35
+ _onDataChanged(data: any): void;
36
+ _onSelectedChanged(after: Component[]): void;
37
+ _onSceneModeChanged(after: SCENE_MODE): void;
38
+ _onBaseUrlChanged(after: string): void;
39
+ }
@@ -0,0 +1,245 @@
1
+ import { __decorate } from "tslib";
2
+ import './confidential-overlay';
3
+ import './ox-scene-layer';
4
+ import './ox-scene-handler';
5
+ import { SCENE_MODE, create as createScene } from '@hatiolab/things-scene';
6
+ import { LitElement, css, html } from 'lit';
7
+ import { customElement, property } from 'lit/decorators.js';
8
+ let OxSceneViewer = class OxSceneViewer extends LitElement {
9
+ constructor() {
10
+ super(...arguments);
11
+ this.scene = null;
12
+ /* Scene Mode - mode 0 : view mode, mode 1 : edit mode, mode 2 : shift mode */
13
+ this.mode = SCENE_MODE.VIEW;
14
+ this.screenSize = 13.3;
15
+ this.variables = {};
16
+ /*
17
+ * 캔바스에 모델을 어떻게 적절하게 보여줄 것인지를 설정한다.
18
+ *
19
+ * @none 가로, 세로 스케일을 1로 고정하고, {0, 0}좌표로 translate시킨다.
20
+ * @both 캔바스에 모델을 꼭 채우도록 가로, 세로 스케일을 조정하고, {0, 0}좌표로 translate시킨다.
21
+ * @width 캔바스의 폭에 모델의 폭을 일치하도록 가로, 세로 스케일을 동일하게 조정하고, {0, 0}좌표로 translate시킨다.
22
+ * @height 캔바스의 높이에 모델의 높이를 일치하도록 가로, 세로 스케일을 동일하게 조정하고, {0, 0}좌표로 translate시킨다.
23
+ * @center 가로, 세로 스케일을 1로 고정하고 모델이 화면의 중앙에 위치하도록 translate시킨다.
24
+ * @ratio 모델의 모든 부분이 캔바스에 최대 크기로 표현될 수 있도록 가로, 세로 동일한 스케일로 조정하고, {0, 0}좌표로 translate시킨다.
25
+ */
26
+ this.fit = 'none';
27
+ this.selected = [];
28
+ this.disposeWhenDetached = false;
29
+ this.baseUrl = '';
30
+ this.name = 'noname';
31
+ this.enableInspector = true;
32
+ this.showInspector = false;
33
+ }
34
+ disconnectedCallback() {
35
+ super.disconnectedCallback();
36
+ if (this.scene && this.disposeWhenDetached) {
37
+ this._disposeScene();
38
+ }
39
+ }
40
+ render() {
41
+ return html ` <slot></slot> `;
42
+ }
43
+ updated(change) {
44
+ change.has('model') && this._onModelChanged(this.model);
45
+ change.has('mode') && this._onModeChanged(this.mode);
46
+ change.has('screenSize') && this._onDisplayChanged(this.screenSize);
47
+ change.has('data') && this._onDataChanged(this.data);
48
+ change.has('baseUrl') && this._onBaseUrlChanged(this.baseUrl);
49
+ }
50
+ _setScene(scene) {
51
+ this.scene = scene;
52
+ this.dispatchEvent(new CustomEvent('scene-changed', {
53
+ bubbles: true,
54
+ composed: true,
55
+ detail: { value: scene }
56
+ }));
57
+ }
58
+ _setMode(mode) {
59
+ this.mode = mode;
60
+ this.dispatchEvent(new CustomEvent('mode-changed', {
61
+ bubbles: true,
62
+ composed: true,
63
+ detail: { value: mode }
64
+ }));
65
+ }
66
+ _setVariables(variables) {
67
+ this.variables = variables;
68
+ this.dispatchEvent(new CustomEvent('variables-changed', {
69
+ bubbles: true,
70
+ composed: true,
71
+ detail: { value: variables }
72
+ }));
73
+ }
74
+ _setSelected(selected) {
75
+ this.selected = selected;
76
+ this.dispatchEvent(new CustomEvent('selected-changed', {
77
+ bubbles: true,
78
+ composed: true,
79
+ detail: { value: selected }
80
+ }));
81
+ }
82
+ _disposeScene() {
83
+ if (this.scene) {
84
+ this.scene.off('selected', this._onSelectedChanged, this);
85
+ this.scene.off('mode', this._onSceneModeChanged, this);
86
+ if (this.provider) {
87
+ this.scene.release();
88
+ }
89
+ else {
90
+ this.scene.dispose();
91
+ }
92
+ this._setScene(null);
93
+ this._setSelected([]);
94
+ }
95
+ }
96
+ resize(force) {
97
+ if (typeof this.scene == 'object') {
98
+ if (force || this.fit === 'both' || Math.abs(this.offsetWidth - (this.lastOffsetWidth || 0)) >= 1) {
99
+ requestAnimationFrame(() => {
100
+ if (this.scene) {
101
+ this.scene.resize();
102
+ this.scene.fit(this.fit);
103
+ }
104
+ });
105
+ }
106
+ this.lastOffsetWidth = this.offsetWidth;
107
+ }
108
+ }
109
+ _onModelChanged(model) {
110
+ this._disposeScene();
111
+ if (!model) {
112
+ return;
113
+ }
114
+ const layers = Array.from(this.querySelectorAll('ox-scene-layer')).map(layer => layer.getModel());
115
+ const handlers = Array.from(this.querySelectorAll('ox-scene-handler')).map(handler => handler.getAttribute('type'));
116
+ this._setScene(createScene({
117
+ target: this,
118
+ model: JSON.parse(JSON.stringify(model)),
119
+ layers,
120
+ handlers,
121
+ mode: this.mode,
122
+ refProvider: this.provider
123
+ }));
124
+ if (this.provider) {
125
+ this.provider.add(this.name, this.scene);
126
+ }
127
+ this.scene.screen = this.screenSize;
128
+ /* 이 컴포넌트의 폭이 값을 가지고 있으면 - 화면상에 자리를 잡고 보여지고 있음을 의미한다.
129
+ * 이 때는 정상적으로 그려주고,
130
+ * 그렇지 않으면, 다음 Resize Handling시에 처리하도록 한다.
131
+ */
132
+ this.resize(true);
133
+ this._setVariables(model.variables || this.scene.variables);
134
+ this.scene.on('selected', this._onSelectedChanged, this);
135
+ this.scene.on('mode', this._onSceneModeChanged, this);
136
+ this._onModeChanged(this.mode);
137
+ this._onDisplayChanged(this.screenSize);
138
+ this._onBaseUrlChanged(this.baseUrl);
139
+ }
140
+ _onDisplayChanged(screenSize) {
141
+ if (!this.scene) {
142
+ return;
143
+ }
144
+ if (screenSize) {
145
+ this.scene.screen = parseFloat(String(screenSize));
146
+ }
147
+ }
148
+ _onModeChanged(mode) {
149
+ if (!this.scene) {
150
+ return;
151
+ }
152
+ this.scene.mode = Number(mode);
153
+ }
154
+ _onDataChanged(data) {
155
+ if (!this.scene || !data) {
156
+ return;
157
+ }
158
+ this.scene.data = data;
159
+ }
160
+ _onSelectedChanged(after) {
161
+ /*
162
+ scene 컴포넌트의 속성을 속성 에디터(input box등)에서 변경하다가,
163
+ scene의 다른 컴포넌트를 클릭해서 포커스(선택) 컴포넌트를 변경하게되면,
164
+ 속성 에디터(input box등)의 value change 이벤트의 처리와 충돌(레이스)하게된다.
165
+
166
+ 기대하는 순서는 먼저 속성 에디터의 value change 이벤트를 처리한 후에,
167
+ selected 이벤트를 처리할 수 있도록 requestAnimationFrame으로 한 프레임을 지연하도록 하였다.
168
+ */
169
+ requestAnimationFrame(() => {
170
+ this._setSelected(after);
171
+ });
172
+ }
173
+ _onSceneModeChanged(after) {
174
+ if (!this.scene) {
175
+ return;
176
+ }
177
+ if (this.mode !== after) {
178
+ this._setMode(after);
179
+ }
180
+ if (after === 2) {
181
+ this.style.cursor = 'all-scroll';
182
+ }
183
+ else {
184
+ this.style.cursor = 'default';
185
+ }
186
+ }
187
+ _onBaseUrlChanged(after) {
188
+ if (!this.scene) {
189
+ return;
190
+ }
191
+ this.scene.baseUrl = after;
192
+ }
193
+ };
194
+ OxSceneViewer.styles = css `
195
+ :host {
196
+ outline: none;
197
+ }
198
+ `;
199
+ __decorate([
200
+ property({ type: Object })
201
+ ], OxSceneViewer.prototype, "scene", void 0);
202
+ __decorate([
203
+ property({ type: Object })
204
+ ], OxSceneViewer.prototype, "model", void 0);
205
+ __decorate([
206
+ property({ type: Number })
207
+ ], OxSceneViewer.prototype, "mode", void 0);
208
+ __decorate([
209
+ property({ type: Number })
210
+ ], OxSceneViewer.prototype, "screenSize", void 0);
211
+ __decorate([
212
+ property({ type: Object })
213
+ ], OxSceneViewer.prototype, "variables", void 0);
214
+ __decorate([
215
+ property({ type: Object })
216
+ ], OxSceneViewer.prototype, "data", void 0);
217
+ __decorate([
218
+ property({ type: String })
219
+ ], OxSceneViewer.prototype, "fit", void 0);
220
+ __decorate([
221
+ property({ type: Array })
222
+ ], OxSceneViewer.prototype, "selected", void 0);
223
+ __decorate([
224
+ property({ type: Boolean })
225
+ ], OxSceneViewer.prototype, "disposeWhenDetached", void 0);
226
+ __decorate([
227
+ property({ type: String })
228
+ ], OxSceneViewer.prototype, "baseUrl", void 0);
229
+ __decorate([
230
+ property({ type: Object })
231
+ ], OxSceneViewer.prototype, "provider", void 0);
232
+ __decorate([
233
+ property({ type: String })
234
+ ], OxSceneViewer.prototype, "name", void 0);
235
+ __decorate([
236
+ property({ type: Boolean })
237
+ ], OxSceneViewer.prototype, "enableInspector", void 0);
238
+ __decorate([
239
+ property({ type: Boolean })
240
+ ], OxSceneViewer.prototype, "showInspector", void 0);
241
+ OxSceneViewer = __decorate([
242
+ customElement('ox-scene-viewer')
243
+ ], OxSceneViewer);
244
+ export default OxSceneViewer;
245
+ //# sourceMappingURL=ox-scene-viewer.js.map