@operato/board 0.2.15

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 (69) hide show
  1. package/.storybook/main.js +3 -0
  2. package/.storybook/server.mjs +8 -0
  3. package/CHANGELOG.md +22 -0
  4. package/LICENSE +21 -0
  5. package/README.md +95 -0
  6. package/custom-elements.json +1377 -0
  7. package/demo/index-player.html +101 -0
  8. package/demo/index-viewer.html +101 -0
  9. package/demo/index.html +101 -0
  10. package/dist/src/index.d.ts +2 -0
  11. package/dist/src/index.js +3 -0
  12. package/dist/src/index.js.map +1 -0
  13. package/dist/src/ox-board-player copy.d.ts +39 -0
  14. package/dist/src/ox-board-player copy.js +258 -0
  15. package/dist/src/ox-board-player copy.js.map +1 -0
  16. package/dist/src/ox-board-player-control.d.ts +39 -0
  17. package/dist/src/ox-board-player-control.js +390 -0
  18. package/dist/src/ox-board-player-control.js.map +1 -0
  19. package/dist/src/ox-board-player-style.d.ts +1 -0
  20. package/dist/src/ox-board-player-style.js +200 -0
  21. package/dist/src/ox-board-player-style.js.map +1 -0
  22. package/dist/src/ox-board-player.d.ts +39 -0
  23. package/dist/src/ox-board-player.js +284 -0
  24. package/dist/src/ox-board-player.js.map +1 -0
  25. package/dist/src/ox-board-viewer.d.ts +45 -0
  26. package/dist/src/ox-board-viewer.js +491 -0
  27. package/dist/src/ox-board-viewer.js.map +1 -0
  28. package/dist/src/ox-board-wrapper.d.ts +1 -0
  29. package/dist/src/ox-board-wrapper.js +88 -0
  30. package/dist/src/ox-board-wrapper.js.map +1 -0
  31. package/dist/src/player/board-player-carousel.d.ts +1 -0
  32. package/dist/src/player/board-player-carousel.js +205 -0
  33. package/dist/src/player/board-player-carousel.js.map +1 -0
  34. package/dist/src/player/board-player-grid.d.ts +1 -0
  35. package/dist/src/player/board-player-grid.js +78 -0
  36. package/dist/src/player/board-player-grid.js.map +1 -0
  37. package/dist/src/utils/fullscreen.d.ts +14 -0
  38. package/dist/src/utils/fullscreen.js +69 -0
  39. package/dist/src/utils/fullscreen.js.map +1 -0
  40. package/dist/src/utils/os.d.ts +20 -0
  41. package/dist/src/utils/os.js +41 -0
  42. package/dist/src/utils/os.js.map +1 -0
  43. package/dist/src/utils/swipe-listener.d.ts +10 -0
  44. package/dist/src/utils/swipe-listener.js +257 -0
  45. package/dist/src/utils/swipe-listener.js.map +1 -0
  46. package/dist/stories/index.stories.d.ts +33 -0
  47. package/dist/stories/index.stories.js +33 -0
  48. package/dist/stories/index.stories.js.map +1 -0
  49. package/dist/test/board-viewer.test.d.ts +1 -0
  50. package/dist/test/board-viewer.test.js +24 -0
  51. package/dist/test/board-viewer.test.js.map +1 -0
  52. package/dist/tsconfig.tsbuildinfo +1 -0
  53. package/package.json +76 -0
  54. package/src/index.ts +2 -0
  55. package/src/ox-board-player-style.ts +200 -0
  56. package/src/ox-board-player.ts +292 -0
  57. package/src/ox-board-viewer.ts +534 -0
  58. package/src/ox-board-wrapper.ts +93 -0
  59. package/src/player/board-player-carousel.ts +197 -0
  60. package/src/player/board-player-grid.ts +78 -0
  61. package/src/utils/fullscreen.ts +82 -0
  62. package/src/utils/os.ts +41 -0
  63. package/src/utils/swipe-listener.ts +290 -0
  64. package/src/utils/things-scene.d.ts +1 -0
  65. package/stories/index.stories.ts +52 -0
  66. package/test/board-viewer.test.ts +35 -0
  67. package/tsconfig.json +22 -0
  68. package/web-dev-server.config.mjs +28 -0
  69. package/web-test-runner.config.mjs +29 -0
@@ -0,0 +1,205 @@
1
+ import { __decorate } from "tslib";
2
+ import './board-player-grid';
3
+ import { LitElement, css, html } from 'lit';
4
+ import { customElement, property, query, state } from 'lit/decorators.js';
5
+ let BoardPlayerCarousel = class BoardPlayerCarousel extends LitElement {
6
+ constructor() {
7
+ super(...arguments);
8
+ this.axis = 'y';
9
+ this.rows = 1;
10
+ this.columns = 1;
11
+ this._rotation = 0;
12
+ this._theta = 0;
13
+ this._radius = 0;
14
+ this._panelCount = 0;
15
+ this._panelSize = 0;
16
+ this._isHorizontal = true;
17
+ }
18
+ render() {
19
+ return html `
20
+ <slot id="slot" select="[page]"></slot>
21
+
22
+ <div id="carousel"></div>
23
+ `;
24
+ }
25
+ async connectedCallback() {
26
+ var _a;
27
+ await super.connectedCallback();
28
+ this._boundResize = this.build.bind(this);
29
+ window.addEventListener('resize', this._boundResize);
30
+ this._slotObserver = new MutationObserver(mutations => {
31
+ this.build();
32
+ });
33
+ await this.updateComplete;
34
+ (_a = this._slotObserver) === null || _a === void 0 ? void 0 : _a.observe(this._slot, { childList: true });
35
+ this.build();
36
+ }
37
+ disconnectedCallback() {
38
+ var _a;
39
+ super.disconnectedCallback();
40
+ (_a = this._slotObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
41
+ delete this._slotObserver;
42
+ if (this._boundResize) {
43
+ window.removeEventListener('resize', this._boundResize);
44
+ delete this._boundResize;
45
+ }
46
+ }
47
+ firstUpdated() {
48
+ this._rotation = 0;
49
+ }
50
+ updated(changes) {
51
+ changes.has('axis') && this._onAxisChanged();
52
+ }
53
+ build() {
54
+ var pages = Array.from(this.querySelectorAll('[page]'));
55
+ var panel = Array.from(this._carousel.querySelectorAll('ox-board-player-grid')).pop();
56
+ var rows = this.rows || 1;
57
+ var columns = this.columns || 1;
58
+ var i = panel ? panel.querySelectorAll('[page]').length : 0;
59
+ var page = pages.shift();
60
+ while (page) {
61
+ if (!(i++ % (rows * columns))) {
62
+ panel = document.createElement('ox-board-player-grid');
63
+ panel.rows = rows;
64
+ panel.columns = columns;
65
+ this._carousel.appendChild(panel);
66
+ }
67
+ panel === null || panel === void 0 ? void 0 : panel.appendChild(page);
68
+ page = pages.shift();
69
+ }
70
+ this.start();
71
+ }
72
+ start() {
73
+ var panels = this._carousel.querySelectorAll('ox-board-player-grid');
74
+ this._isHorizontal = this.axis === 'y';
75
+ this._panelCount = panels.length;
76
+ this._panelSize = this._carousel[this._isHorizontal ? 'offsetWidth' : 'offsetHeight'] || 640;
77
+ this._rotateFn = this._isHorizontal ? 'rotateY' : 'rotateX';
78
+ this._theta = 360 / (this._panelCount || 1);
79
+ // do some trig to figure out how big the carousel is in 3D space
80
+ this._radius = Math.round(this._panelSize / 2 / Math.tan(Math.PI / (this._panelCount < 2 ? 2 : this._panelCount)));
81
+ for (let i = 0; i < this._panelCount; i++) {
82
+ let panel = panels[i];
83
+ let angle = this._theta * i;
84
+ panel.style.opacity = '1';
85
+ panel.style.backgroundColor = 'white';
86
+ panel.style.transform = this._rotateFn + '(' + angle + 'deg) translateZ(' + this._radius + 'px)';
87
+ }
88
+ // adjust rotation so panels are always flat
89
+ this._rotation = Math.round(this._rotation / this._theta) * this._theta;
90
+ this._transform();
91
+ }
92
+ stop() {
93
+ this._carousel.innerHTML = '';
94
+ }
95
+ _onAxisChanged() {
96
+ this.start();
97
+ }
98
+ _transform() {
99
+ // push the carousel back in 3D space, and rotate it
100
+ this._carousel.style.transform =
101
+ 'translateZ(-' + this._radius + 'px) ' + this._rotateFn + '(' + this._rotation + 'deg)';
102
+ this.dispatchEvent(new CustomEvent('transform', { bubbles: true, composed: true }));
103
+ }
104
+ previous() {
105
+ this._rotation += this._theta;
106
+ this._transform();
107
+ }
108
+ next() {
109
+ this._rotation -= this._theta;
110
+ this._transform();
111
+ }
112
+ };
113
+ BoardPlayerCarousel.styles = [
114
+ css `
115
+ :host {
116
+ display: block;
117
+ width: 100%;
118
+ height: 100%;
119
+ position: relative;
120
+ margin: 0 auto 0px;
121
+ -webkit-perspective: 1200px;
122
+ -moz-perspective: 1200px;
123
+ -o-perspective: 1200px;
124
+ perspective: 1200px;
125
+ }
126
+
127
+ #carousel {
128
+ width: 100%;
129
+ height: 100%;
130
+ margin: 0px auto 0px;
131
+
132
+ position: absolute;
133
+ -webkit-transform-style: preserve-3d;
134
+ -moz-transform-style: preserve-3d;
135
+ -o-transform-style: preserve-3d;
136
+ transform-style: preserve-3d;
137
+ -webkit-transition: -webkit-transform 1.5s;
138
+ -moz-transition: -moz-transform 1.5s;
139
+ -o-transition: -o-transform 1.5s;
140
+ transition: transform 1.5s;
141
+ }
142
+
143
+ #carousel > * {
144
+ position: absolute;
145
+ width: 100%;
146
+ height: 100%;
147
+ font-weight: bold;
148
+ -webkit-transition: opacity 1.5s, -webkit-transform 1.5s;
149
+ -moz-transition: opacity 1.5s, -moz-transform 1.5s;
150
+ -o-transition: opacity 1.5s, -o-transform 1.5s;
151
+ transition: opacity 1.5s, transform 1.5s;
152
+
153
+ -webkit-backface-visibility: hidden;
154
+ -moz-backface-visibility: hidden;
155
+ -o-backface-visibility: hidden;
156
+ backface-visibility: hidden;
157
+ }
158
+ `
159
+ ];
160
+ __decorate([
161
+ property({ type: String })
162
+ ], BoardPlayerCarousel.prototype, "axis", void 0);
163
+ __decorate([
164
+ property({ type: Number })
165
+ ], BoardPlayerCarousel.prototype, "rows", void 0);
166
+ __decorate([
167
+ property({ type: Number })
168
+ ], BoardPlayerCarousel.prototype, "columns", void 0);
169
+ __decorate([
170
+ state()
171
+ ], BoardPlayerCarousel.prototype, "_slotObserver", void 0);
172
+ __decorate([
173
+ state()
174
+ ], BoardPlayerCarousel.prototype, "_boundResize", void 0);
175
+ __decorate([
176
+ state()
177
+ ], BoardPlayerCarousel.prototype, "_rotation", void 0);
178
+ __decorate([
179
+ state()
180
+ ], BoardPlayerCarousel.prototype, "_theta", void 0);
181
+ __decorate([
182
+ state()
183
+ ], BoardPlayerCarousel.prototype, "_radius", void 0);
184
+ __decorate([
185
+ state()
186
+ ], BoardPlayerCarousel.prototype, "_rotateFn", void 0);
187
+ __decorate([
188
+ state()
189
+ ], BoardPlayerCarousel.prototype, "_panelCount", void 0);
190
+ __decorate([
191
+ state()
192
+ ], BoardPlayerCarousel.prototype, "_panelSize", void 0);
193
+ __decorate([
194
+ state()
195
+ ], BoardPlayerCarousel.prototype, "_isHorizontal", void 0);
196
+ __decorate([
197
+ query('#slot')
198
+ ], BoardPlayerCarousel.prototype, "_slot", void 0);
199
+ __decorate([
200
+ query('#carousel')
201
+ ], BoardPlayerCarousel.prototype, "_carousel", void 0);
202
+ BoardPlayerCarousel = __decorate([
203
+ customElement('ox-board-player-carousel')
204
+ ], BoardPlayerCarousel);
205
+ //# sourceMappingURL=board-player-carousel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"board-player-carousel.js","sourceRoot":"","sources":["../../../src/player/board-player-carousel.ts"],"names":[],"mappings":"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","sourcesContent":["import './board-player-grid'\n\nimport { LitElement, PropertyValues, css, html } from 'lit'\nimport { customElement, property, query, state } from 'lit/decorators.js'\n\n@customElement('ox-board-player-carousel')\nclass BoardPlayerCarousel extends LitElement {\n static styles = [\n css`\n :host {\n display: block;\n width: 100%;\n height: 100%;\n position: relative;\n margin: 0 auto 0px;\n -webkit-perspective: 1200px;\n -moz-perspective: 1200px;\n -o-perspective: 1200px;\n perspective: 1200px;\n }\n\n #carousel {\n width: 100%;\n height: 100%;\n margin: 0px auto 0px;\n\n position: absolute;\n -webkit-transform-style: preserve-3d;\n -moz-transform-style: preserve-3d;\n -o-transform-style: preserve-3d;\n transform-style: preserve-3d;\n -webkit-transition: -webkit-transform 1.5s;\n -moz-transition: -moz-transform 1.5s;\n -o-transition: -o-transform 1.5s;\n transition: transform 1.5s;\n }\n\n #carousel > * {\n position: absolute;\n width: 100%;\n height: 100%;\n font-weight: bold;\n -webkit-transition: opacity 1.5s, -webkit-transform 1.5s;\n -moz-transition: opacity 1.5s, -moz-transform 1.5s;\n -o-transition: opacity 1.5s, -o-transform 1.5s;\n transition: opacity 1.5s, transform 1.5s;\n\n -webkit-backface-visibility: hidden;\n -moz-backface-visibility: hidden;\n -o-backface-visibility: hidden;\n backface-visibility: hidden;\n }\n `\n ]\n\n @property({ type: String }) axis: string = 'y'\n @property({ type: Number }) rows: number = 1\n @property({ type: Number }) columns: number = 1\n\n @state() _slotObserver?: MutationObserver\n @state() _boundResize?: () => void\n @state() _rotation: number = 0\n @state() _theta: number = 0\n @state() _radius: number = 0\n @state() _rotateFn?: string\n\n @state() _panelCount: number = 0\n @state() _panelSize: number = 0\n @state() _isHorizontal: boolean = true\n\n @query('#slot') _slot!: HTMLSlotElement\n @query('#carousel') _carousel!: HTMLElement\n\n render() {\n return html`\n <slot id=\"slot\" select=\"[page]\"></slot>\n\n <div id=\"carousel\"></div>\n `\n }\n\n async connectedCallback() {\n await super.connectedCallback()\n\n this._boundResize = this.build.bind(this)\n window.addEventListener('resize', this._boundResize)\n\n this._slotObserver = new MutationObserver(mutations => {\n this.build()\n })\n\n await this.updateComplete\n\n this._slotObserver?.observe(this._slot, { childList: true })\n this.build()\n }\n\n disconnectedCallback() {\n super.disconnectedCallback()\n\n this._slotObserver?.disconnect()\n delete this._slotObserver\n\n if (this._boundResize) {\n window.removeEventListener('resize', this._boundResize)\n delete this._boundResize\n }\n }\n\n firstUpdated() {\n this._rotation = 0\n }\n\n updated(changes: PropertyValues<this>) {\n changes.has('axis') && this._onAxisChanged()\n }\n\n build() {\n var pages = Array.from(this.querySelectorAll('[page]'))\n var panel = Array.from(this._carousel.querySelectorAll('ox-board-player-grid')).pop()\n\n var rows = this.rows || 1\n var columns = this.columns || 1\n\n var i = panel ? panel.querySelectorAll('[page]').length : 0\n var page = pages.shift()\n\n while (page) {\n if (!(i++ % (rows * columns))) {\n panel = document.createElement('ox-board-player-grid')\n ;(panel as any).rows = rows\n ;(panel as any).columns = columns\n\n this._carousel.appendChild(panel)\n }\n panel?.appendChild(page)\n\n page = pages.shift()\n }\n\n this.start()\n }\n\n start() {\n var panels = this._carousel.querySelectorAll('ox-board-player-grid')\n\n this._isHorizontal = this.axis === 'y'\n\n this._panelCount = panels.length\n\n this._panelSize = this._carousel[this._isHorizontal ? 'offsetWidth' : 'offsetHeight'] || 640\n this._rotateFn = this._isHorizontal ? 'rotateY' : 'rotateX'\n this._theta = 360 / (this._panelCount || 1)\n\n // do some trig to figure out how big the carousel is in 3D space\n this._radius = Math.round(this._panelSize / 2 / Math.tan(Math.PI / (this._panelCount < 2 ? 2 : this._panelCount)))\n\n for (let i = 0; i < this._panelCount; i++) {\n let panel = panels[i] as HTMLElement\n let angle = this._theta * i\n panel.style.opacity = '1'\n\n panel.style.backgroundColor = 'white'\n\n panel.style.transform = this._rotateFn + '(' + angle + 'deg) translateZ(' + this._radius + 'px)'\n }\n\n // adjust rotation so panels are always flat\n this._rotation = Math.round(this._rotation / this._theta) * this._theta\n this._transform()\n }\n\n stop() {\n this._carousel.innerHTML = ''\n }\n\n _onAxisChanged() {\n this.start()\n }\n\n _transform() {\n // push the carousel back in 3D space, and rotate it\n this._carousel.style.transform =\n 'translateZ(-' + this._radius + 'px) ' + this._rotateFn + '(' + this._rotation + 'deg)'\n this.dispatchEvent(new CustomEvent('transform', { bubbles: true, composed: true }))\n }\n\n previous() {\n this._rotation += this._theta\n this._transform()\n }\n\n next() {\n this._rotation -= this._theta\n this._transform()\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,78 @@
1
+ import { __decorate } from "tslib";
2
+ import { LitElement, css, html } from 'lit';
3
+ import { customElement, property, query, state } from 'lit/decorators.js';
4
+ /**
5
+ * 자식 컴포넌트들을 그리드형태로 화면에 배치하여 한꺼번에 디스플레이해주는 컴포넌트.
6
+ * Example:
7
+ <ox-board-player-grid rows="3" columns="3" tabindex="0" focus>
8
+ <div page>A</div>
9
+ <div page>B</div>
10
+ <div page>C</div>
11
+ <div page>D</div>
12
+ </ox-board-player-grid>
13
+ */
14
+ let BoardPlayerGrid = class BoardPlayerGrid extends LitElement {
15
+ constructor() {
16
+ super(...arguments);
17
+ this.rows = 1;
18
+ this.columns = 1;
19
+ }
20
+ render() {
21
+ return html ` <slot id="slot" select="[page]"></slot> `;
22
+ }
23
+ async connectedCallback() {
24
+ var _a;
25
+ await super.connectedCallback();
26
+ this._slotObserver = new MutationObserver(mutations => {
27
+ var columns = this.columns || 1;
28
+ var rows = this.rows || 1;
29
+ this.style['grid-template-columns'] = `repeat(${columns}, 1fr)`;
30
+ this.style['grid-template-rows'] = `repeat(${rows}, 1fr)`;
31
+ });
32
+ await this.updateComplete;
33
+ var columns = this.columns || 1;
34
+ var rows = this.rows || 1;
35
+ this.style['grid-template-columns'] = `repeat(${columns}, 1fr)`;
36
+ this.style['grid-template-rows'] = `repeat(${rows}, 1fr)`;
37
+ (_a = this._slotObserver) === null || _a === void 0 ? void 0 : _a.observe(this._slot, { childList: true });
38
+ }
39
+ disconnectedCallback() {
40
+ var _a;
41
+ super.disconnectedCallback();
42
+ (_a = this._slotObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
43
+ delete this._slotObserver;
44
+ }
45
+ start() { }
46
+ stop() { }
47
+ next() { }
48
+ previous() { }
49
+ };
50
+ BoardPlayerGrid.styles = [
51
+ css `
52
+ :host {
53
+ width: 100%;
54
+ height: 100%;
55
+ position: relative;
56
+
57
+ display: grid;
58
+ grid-gap: 0px;
59
+ grid-auto-flow: dense;
60
+ }
61
+ `
62
+ ];
63
+ __decorate([
64
+ property({ type: Number })
65
+ ], BoardPlayerGrid.prototype, "rows", void 0);
66
+ __decorate([
67
+ property({ type: Number })
68
+ ], BoardPlayerGrid.prototype, "columns", void 0);
69
+ __decorate([
70
+ state()
71
+ ], BoardPlayerGrid.prototype, "_slotObserver", void 0);
72
+ __decorate([
73
+ query('#slot')
74
+ ], BoardPlayerGrid.prototype, "_slot", void 0);
75
+ BoardPlayerGrid = __decorate([
76
+ customElement('ox-board-player-grid')
77
+ ], BoardPlayerGrid);
78
+ //# sourceMappingURL=board-player-grid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"board-player-grid.js","sourceRoot":"","sources":["../../../src/player/board-player-grid.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAkB,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAA;AAC3D,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAEzE;;;;;;;;;GASG;AAGH,IAAM,eAAe,GAArB,MAAM,eAAgB,SAAQ,UAAU;IAAxC;;QAe8B,SAAI,GAAW,CAAC,CAAA;QAChB,YAAO,GAAW,CAAC,CAAA;IA8CjD,CAAC;IAxCC,MAAM;QACJ,OAAO,IAAI,CAAA,2CAA2C,CAAA;IACxD,CAAC;IAED,KAAK,CAAC,iBAAiB;;QACrB,MAAM,KAAK,CAAC,iBAAiB,EAAE,CAAA;QAE/B,IAAI,CAAC,aAAa,GAAG,IAAI,gBAAgB,CAAC,SAAS,CAAC,EAAE;YACpD,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,CAAC,CAAA;YAC/B,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,CAExB;YAAC,IAAI,CAAC,KAAa,CAAC,uBAAuB,CAAC,GAAG,UAAU,OAAO,QAAQ,CACxE;YAAC,IAAI,CAAC,KAAa,CAAC,oBAAoB,CAAC,GAAG,UAAU,IAAI,QAAQ,CAAA;QACrE,CAAC,CAAC,CAAA;QAEF,MAAM,IAAI,CAAC,cAAc,CAAA;QAEzB,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,CAAC,CAAA;QAC/B,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,CAExB;QAAC,IAAI,CAAC,KAAa,CAAC,uBAAuB,CAAC,GAAG,UAAU,OAAO,QAAQ,CACxE;QAAC,IAAI,CAAC,KAAa,CAAC,oBAAoB,CAAC,GAAG,UAAU,IAAI,QAAQ,CAAA;QAEnE,MAAA,IAAI,CAAC,aAAa,0CAAE,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC9D,CAAC;IAED,oBAAoB;;QAClB,KAAK,CAAC,oBAAoB,EAAE,CAAA;QAE5B,MAAA,IAAI,CAAC,aAAa,0CAAE,UAAU,EAAE,CAAA;QAChC,OAAO,IAAI,CAAC,aAAa,CAAA;IAC3B,CAAC;IAED,KAAK,KAAI,CAAC;IAEV,IAAI,KAAI,CAAC;IAET,IAAI,KAAI,CAAC;IAET,QAAQ,KAAI,CAAC;CACd,CAAA;AA7DQ,sBAAM,GAAG;IACd,GAAG,CAAA;;;;;;;;;;KAUF;CACF,CAAA;AAE2B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;6CAAiB;AAChB;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;gDAAoB;AAEtC;IAAR,KAAK,EAAE;sDAAiC;AAEzB;IAAf,KAAK,CAAC,OAAO,CAAC;8CAAwB;AApBnC,eAAe;IADpB,aAAa,CAAC,sBAAsB,CAAC;GAChC,eAAe,CA8DpB","sourcesContent":["import { LitElement, PropertyValues, css, html } from 'lit'\nimport { customElement, property, query, state } from 'lit/decorators.js'\n\n/**\n * 자식 컴포넌트들을 그리드형태로 화면에 배치하여 한꺼번에 디스플레이해주는 컴포넌트.\n * Example:\n <ox-board-player-grid rows=\"3\" columns=\"3\" tabindex=\"0\" focus>\n <div page>A</div>\n <div page>B</div>\n <div page>C</div>\n <div page>D</div>\n </ox-board-player-grid>\n */\n\n@customElement('ox-board-player-grid')\nclass BoardPlayerGrid extends LitElement {\n static styles = [\n css`\n :host {\n width: 100%;\n height: 100%;\n position: relative;\n\n display: grid;\n grid-gap: 0px;\n grid-auto-flow: dense;\n }\n `\n ]\n\n @property({ type: Number }) rows: number = 1\n @property({ type: Number }) columns: number = 1\n\n @state() _slotObserver?: MutationObserver\n\n @query('#slot') _slot!: HTMLSlotElement\n\n render() {\n return html` <slot id=\"slot\" select=\"[page]\"></slot> `\n }\n\n async connectedCallback() {\n await super.connectedCallback()\n\n this._slotObserver = new MutationObserver(mutations => {\n var columns = this.columns || 1\n var rows = this.rows || 1\n\n ;(this.style as any)['grid-template-columns'] = `repeat(${columns}, 1fr)`\n ;(this.style as any)['grid-template-rows'] = `repeat(${rows}, 1fr)`\n })\n\n await this.updateComplete\n\n var columns = this.columns || 1\n var rows = this.rows || 1\n\n ;(this.style as any)['grid-template-columns'] = `repeat(${columns}, 1fr)`\n ;(this.style as any)['grid-template-rows'] = `repeat(${rows}, 1fr)`\n\n this._slotObserver?.observe(this._slot, { childList: true })\n }\n\n disconnectedCallback() {\n super.disconnectedCallback()\n\n this._slotObserver?.disconnect()\n delete this._slotObserver\n }\n\n start() {}\n\n stop() {}\n\n next() {}\n\n previous() {}\n}\n"]}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * 풀스크린 전환 이후와 풀스크린 해제 이후에 호출되는 콜백함수
3
+ * @callback FullscreenCallback
4
+ */
5
+ export declare type FullscreenCallback = () => void;
6
+ /**
7
+ * 엘리먼트를 풀스크린으로 표시되도록 한다.
8
+ * @param {HTMLElement} element 대상 엘리먼트
9
+ * @param {FullscreenCallback} afterfull 풀스크린이 된 이후에 호출되는 콜백함수
10
+ * @param {FullscreenCallback} afterfinish 풀스크린이 해제된 이후에 호출되는 콜백함수
11
+ */
12
+ export declare function fullscreen(element: HTMLElement, afterfull?: FullscreenCallback, afterfinish?: FullscreenCallback): void;
13
+ export declare function exitfullscreen(): void;
14
+ export declare function togglefullscreen(element: HTMLElement, afterfull?: FullscreenCallback, afterfinish?: FullscreenCallback): void;
@@ -0,0 +1,69 @@
1
+ /**
2
+ * 엘리먼트를 풀스크린으로 표시되도록 한다.
3
+ * @param {HTMLElement} element 대상 엘리먼트
4
+ * @param {FullscreenCallback} afterfull 풀스크린이 된 이후에 호출되는 콜백함수
5
+ * @param {FullscreenCallback} afterfinish 풀스크린이 해제된 이후에 호출되는 콜백함수
6
+ */
7
+ export function fullscreen(element, afterfull, afterfinish) {
8
+ var org_width = element.style.width;
9
+ var org_height = element.style.height;
10
+ function _fullscreen_callback(e) {
11
+ if (!document.fullscreenElement &&
12
+ //@ts-ignore
13
+ !document.mozFullScreen &&
14
+ //@ts-ignore
15
+ !document.webkitIsFullScreen &&
16
+ //@ts-ignore
17
+ !document.msFullscreenElement) {
18
+ ;
19
+ ['fullscreenchange', 'webkitfullscreenchange', 'MSFullscreenChange'].forEach(event => document.removeEventListener(event, _fullscreen_callback));
20
+ element.style.width = org_width;
21
+ element.style.height = org_height;
22
+ afterfinish && afterfinish();
23
+ }
24
+ else {
25
+ element.style.width = '100%';
26
+ element.style.height = '100%';
27
+ afterfull && afterfull();
28
+ }
29
+ }
30
+ ;
31
+ ['fullscreenchange', 'webkitfullscreenchange', 'MSFullscreenChange'].forEach(event => document.addEventListener(event, _fullscreen_callback));
32
+ if (element.requestFullscreen)
33
+ element.requestFullscreen();
34
+ //@ts-ignore
35
+ else if (element.webkitRequestFullScreen)
36
+ element.webkitRequestFullScreen();
37
+ //@ts-ignore
38
+ else if (element.mozRequestFullScreen)
39
+ element.mozRequestFullScreen();
40
+ //@ts-ignore
41
+ else if (element.msRequestFullscreen)
42
+ element.msRequestFullscreen();
43
+ }
44
+ export function exitfullscreen() {
45
+ if (document.exitFullscreen)
46
+ document.exitFullscreen();
47
+ //@ts-ignore
48
+ else if (document.mozCancelFullScreen)
49
+ document.mozCancelFullScreen();
50
+ //@ts-ignore
51
+ else if (document.webkitCancelFullScreen)
52
+ document.webkitCancelFullScreen();
53
+ //@ts-ignore
54
+ else if (document.msExitFullscreen)
55
+ document.msExitFullscreen();
56
+ }
57
+ export function togglefullscreen(element, afterfull, afterfinish) {
58
+ if (!document.fullscreenElement &&
59
+ //@ts-ignore
60
+ !document.mozFullScreen &&
61
+ //@ts-ignore
62
+ !document.webkitIsFullScreen &&
63
+ //@ts-ignore
64
+ !document.msFullscreenElement)
65
+ fullscreen(element, afterfull, afterfinish);
66
+ else
67
+ exitfullscreen();
68
+ }
69
+ //# sourceMappingURL=fullscreen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fullscreen.js","sourceRoot":"","sources":["../../../src/utils/fullscreen.ts"],"names":[],"mappings":"AAMA;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,OAAoB,EAAE,SAA8B,EAAE,WAAgC;IAC/G,IAAI,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAA;IACnC,IAAI,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAA;IAErC,SAAS,oBAAoB,CAAC,CAAQ;QACpC,IACE,CAAC,QAAQ,CAAC,iBAAiB;YAC3B,YAAY;YACZ,CAAC,QAAQ,CAAC,aAAa;YACvB,YAAY;YACZ,CAAC,QAAQ,CAAC,kBAAkB;YAC5B,YAAY;YACZ,CAAC,QAAQ,CAAC,mBAAmB,EAC7B;YACA,CAAC;YAAA,CAAC,kBAAkB,EAAE,wBAAwB,EAAE,oBAAoB,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CACpF,QAAQ,CAAC,mBAAmB,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAC1D,CAAA;YAED,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAA;YAC/B,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,UAAU,CAAA;YAEjC,WAAW,IAAI,WAAW,EAAE,CAAA;SAC7B;aAAM;YACL,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAA;YAC5B,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAA;YAE7B,SAAS,IAAI,SAAS,EAAE,CAAA;SACzB;IACH,CAAC;IAED,CAAC;IAAA,CAAC,kBAAkB,EAAE,wBAAwB,EAAE,oBAAoB,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CACpF,QAAQ,CAAC,gBAAgB,CAAC,KAAK,EAAE,oBAAoB,CAAC,CACvD,CAAA;IAED,IAAI,OAAO,CAAC,iBAAiB;QAAE,OAAO,CAAC,iBAAiB,EAAE,CAAA;IAC1D,YAAY;SACP,IAAI,OAAO,CAAC,uBAAuB;QAAE,OAAO,CAAC,uBAAuB,EAAE,CAAA;IAC3E,YAAY;SACP,IAAI,OAAO,CAAC,oBAAoB;QAAE,OAAO,CAAC,oBAAoB,EAAE,CAAA;IACrE,YAAY;SACP,IAAI,OAAO,CAAC,mBAAmB;QAAE,OAAO,CAAC,mBAAmB,EAAE,CAAA;AACrE,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,IAAI,QAAQ,CAAC,cAAc;QAAE,QAAQ,CAAC,cAAc,EAAE,CAAA;IACtD,YAAY;SACP,IAAI,QAAQ,CAAC,mBAAmB;QAAE,QAAQ,CAAC,mBAAmB,EAAE,CAAA;IACrE,YAAY;SACP,IAAI,QAAQ,CAAC,sBAAsB;QAAE,QAAQ,CAAC,sBAAsB,EAAE,CAAA;IAC3E,YAAY;SACP,IAAI,QAAQ,CAAC,gBAAgB;QAAE,QAAQ,CAAC,gBAAgB,EAAE,CAAA;AACjE,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,OAAoB,EACpB,SAA8B,EAC9B,WAAgC;IAEhC,IACE,CAAC,QAAQ,CAAC,iBAAiB;QAC3B,YAAY;QACZ,CAAC,QAAQ,CAAC,aAAa;QACvB,YAAY;QACZ,CAAC,QAAQ,CAAC,kBAAkB;QAC5B,YAAY;QACZ,CAAC,QAAQ,CAAC,mBAAmB;QAE7B,UAAU,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,CAAC,CAAA;;QACxC,cAAc,EAAE,CAAA;AACvB,CAAC","sourcesContent":["/**\n * 풀스크린 전환 이후와 풀스크린 해제 이후에 호출되는 콜백함수\n * @callback FullscreenCallback\n */\nexport type FullscreenCallback = () => void\n\n/**\n * 엘리먼트를 풀스크린으로 표시되도록 한다.\n * @param {HTMLElement} element 대상 엘리먼트\n * @param {FullscreenCallback} afterfull 풀스크린이 된 이후에 호출되는 콜백함수\n * @param {FullscreenCallback} afterfinish 풀스크린이 해제된 이후에 호출되는 콜백함수\n */\nexport function fullscreen(element: HTMLElement, afterfull?: FullscreenCallback, afterfinish?: FullscreenCallback) {\n var org_width = element.style.width\n var org_height = element.style.height\n\n function _fullscreen_callback(e: Event) {\n if (\n !document.fullscreenElement &&\n //@ts-ignore\n !document.mozFullScreen &&\n //@ts-ignore\n !document.webkitIsFullScreen &&\n //@ts-ignore\n !document.msFullscreenElement\n ) {\n ;['fullscreenchange', 'webkitfullscreenchange', 'MSFullscreenChange'].forEach(event =>\n document.removeEventListener(event, _fullscreen_callback)\n )\n\n element.style.width = org_width\n element.style.height = org_height\n\n afterfinish && afterfinish()\n } else {\n element.style.width = '100%'\n element.style.height = '100%'\n\n afterfull && afterfull()\n }\n }\n\n ;['fullscreenchange', 'webkitfullscreenchange', 'MSFullscreenChange'].forEach(event =>\n document.addEventListener(event, _fullscreen_callback)\n )\n\n if (element.requestFullscreen) element.requestFullscreen()\n //@ts-ignore\n else if (element.webkitRequestFullScreen) element.webkitRequestFullScreen()\n //@ts-ignore\n else if (element.mozRequestFullScreen) element.mozRequestFullScreen()\n //@ts-ignore\n else if (element.msRequestFullscreen) element.msRequestFullscreen()\n}\n\nexport function exitfullscreen() {\n if (document.exitFullscreen) document.exitFullscreen()\n //@ts-ignore\n else if (document.mozCancelFullScreen) document.mozCancelFullScreen()\n //@ts-ignore\n else if (document.webkitCancelFullScreen) document.webkitCancelFullScreen()\n //@ts-ignore\n else if (document.msExitFullscreen) document.msExitFullscreen()\n}\n\nexport function togglefullscreen(\n element: HTMLElement,\n afterfull?: FullscreenCallback,\n afterfinish?: FullscreenCallback\n) {\n if (\n !document.fullscreenElement &&\n //@ts-ignore\n !document.mozFullScreen &&\n //@ts-ignore\n !document.webkitIsFullScreen &&\n //@ts-ignore\n !document.msFullscreenElement\n )\n fullscreen(element, afterfull, afterfinish)\n else exitfullscreen()\n}\n"]}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * method to get operating system of running browser
3
+ * @returns {string} name of OS : 'Windows | 'Mac' | 'Android' | 'iOS'
4
+ */
5
+ export declare function getOS(): string;
6
+ /**
7
+ * method to tell if platform of running browser is kind of mobile device
8
+ * @returns {boolean}
9
+ */
10
+ export declare function isMobileDevice(): boolean;
11
+ /**
12
+ * method to tell if operating system of running browser is iOS
13
+ * @returns {boolean}
14
+ */
15
+ export declare function isIOS(): boolean;
16
+ /**
17
+ * method to tell if operating system of running browser is MacOS
18
+ * @returns {boolean}
19
+ */
20
+ export declare function isMacOS(): boolean;
@@ -0,0 +1,41 @@
1
+ var os = 'Unknown OS';
2
+ if (navigator.userAgent.indexOf('Win') != -1)
3
+ os = 'Windows';
4
+ else if (navigator.userAgent.indexOf('Mac') != -1)
5
+ os = 'Mac';
6
+ else if (navigator.userAgent.indexOf('Linux') != -1)
7
+ os = 'Linux';
8
+ else if (navigator.userAgent.indexOf('Android') != -1)
9
+ os = 'Android';
10
+ else if (navigator.userAgent.indexOf('like Mac') != -1)
11
+ os = 'iOS';
12
+ var mobile = os === 'iOS' || os === 'Android';
13
+ /**
14
+ * method to get operating system of running browser
15
+ * @returns {string} name of OS : 'Windows | 'Mac' | 'Android' | 'iOS'
16
+ */
17
+ export function getOS() {
18
+ return os;
19
+ }
20
+ /**
21
+ * method to tell if platform of running browser is kind of mobile device
22
+ * @returns {boolean}
23
+ */
24
+ export function isMobileDevice() {
25
+ return mobile;
26
+ }
27
+ /**
28
+ * method to tell if operating system of running browser is iOS
29
+ * @returns {boolean}
30
+ */
31
+ export function isIOS() {
32
+ return os === 'iOS';
33
+ }
34
+ /**
35
+ * method to tell if operating system of running browser is MacOS
36
+ * @returns {boolean}
37
+ */
38
+ export function isMacOS() {
39
+ return os === 'Mac';
40
+ }
41
+ //# sourceMappingURL=os.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"os.js","sourceRoot":"","sources":["../../../src/utils/os.ts"],"names":[],"mappings":"AAAA,IAAI,EAAE,GAAG,YAAY,CAAA;AAErB,IAAI,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAAE,EAAE,GAAG,SAAS,CAAA;KACvD,IAAI,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAAE,EAAE,GAAG,KAAK,CAAA;KACxD,IAAI,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAAE,EAAE,GAAG,OAAO,CAAA;KAC5D,IAAI,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAAE,EAAE,GAAG,SAAS,CAAA;KAChE,IAAI,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAAE,EAAE,GAAG,KAAK,CAAA;AAElE,IAAI,MAAM,GAAG,EAAE,KAAK,KAAK,IAAI,EAAE,KAAK,SAAS,CAAA;AAE7C;;;GAGG;AACH,MAAM,UAAU,KAAK;IACnB,OAAO,EAAE,CAAA;AACX,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc;IAC5B,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,KAAK;IACnB,OAAO,EAAE,KAAK,KAAK,CAAA;AACrB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,OAAO;IACrB,OAAO,EAAE,KAAK,KAAK,CAAA;AACrB,CAAC","sourcesContent":["var os = 'Unknown OS'\n\nif (navigator.userAgent.indexOf('Win') != -1) os = 'Windows'\nelse if (navigator.userAgent.indexOf('Mac') != -1) os = 'Mac'\nelse if (navigator.userAgent.indexOf('Linux') != -1) os = 'Linux'\nelse if (navigator.userAgent.indexOf('Android') != -1) os = 'Android'\nelse if (navigator.userAgent.indexOf('like Mac') != -1) os = 'iOS'\n\nvar mobile = os === 'iOS' || os === 'Android'\n\n/**\n * method to get operating system of running browser\n * @returns {string} name of OS : 'Windows | 'Mac' | 'Android' | 'iOS'\n */\nexport function getOS() {\n return os\n}\n\n/**\n * method to tell if platform of running browser is kind of mobile device\n * @returns {boolean}\n */\nexport function isMobileDevice() {\n return mobile\n}\n\n/**\n * method to tell if operating system of running browser is iOS\n * @returns {boolean}\n */\nexport function isIOS() {\n return os === 'iOS'\n}\n\n/**\n * method to tell if operating system of running browser is MacOS\n * @returns {boolean}\n */\nexport function isMacOS() {\n return os === 'Mac'\n}\n"]}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Starts monitoring swipes on the given element and
3
+ * emits `swipe` event when a swipe gesture is performed.
4
+ * @param {DOMElement} element Element on which to listen for swipe gestures.
5
+ * @param {Object} options Optional: Options.
6
+ * @return {Object}
7
+ */
8
+ export declare function SwipeListener(element: HTMLElement, options?: any): {
9
+ off: () => void;
10
+ } | undefined;