@lightningjs/blits 1.30.0 → 1.30.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. package/.editorconfig +7 -7
  2. package/.eslintignore +1 -1
  3. package/.eslintrc.cjs +65 -65
  4. package/.github/workflows/comment-lint-results.yml +124 -124
  5. package/.github/workflows/comment-test-results.yml +108 -108
  6. package/.github/workflows/deploy-docs.yml +27 -27
  7. package/.github/workflows/run-blits-tests.yml +141 -141
  8. package/.github/workflows/run-lint.yml +127 -127
  9. package/.husky/pre-commit +1 -1
  10. package/.vscode/extensions.json +7 -7
  11. package/.vscode/settings.json +9 -9
  12. package/CHANGELOG.md +1019 -1005
  13. package/COPYING +1 -0
  14. package/LICENSE +202 -202
  15. package/NOTICE +12 -12
  16. package/README.md +33 -33
  17. package/bin/index.js +8 -8
  18. package/blits.d.ts +6 -6
  19. package/docs/README.md +19 -19
  20. package/docs/_sidebar.md +37 -37
  21. package/docs/built-in/directives.md +50 -50
  22. package/docs/built-in/for-loop.md +203 -203
  23. package/docs/built-in/layout.md +168 -168
  24. package/docs/components/component_state.md +90 -90
  25. package/docs/components/computed_properties.md +45 -45
  26. package/docs/components/lifecycle_events.md +42 -42
  27. package/docs/components/methods.md +45 -45
  28. package/docs/components/props.md +56 -56
  29. package/docs/components/user_input.md +186 -186
  30. package/docs/components/utility_methods.md +320 -320
  31. package/docs/components/watchers.md +34 -34
  32. package/docs/essentials/application_root.md +19 -19
  33. package/docs/essentials/components.md +68 -68
  34. package/docs/essentials/displaying_images.md +67 -67
  35. package/docs/essentials/displaying_text.md +135 -135
  36. package/docs/essentials/element_attributes.md +195 -195
  37. package/docs/essentials/settings.md +117 -117
  38. package/docs/essentials/template_syntax.md +83 -83
  39. package/docs/getting_started/file_structure.md +58 -58
  40. package/docs/getting_started/getting_started.md +45 -45
  41. package/docs/getting_started/intro.md +20 -20
  42. package/docs/index.html +47 -47
  43. package/docs/performance/lazy-loading.md +161 -161
  44. package/docs/plugins/global_app_state.md +98 -98
  45. package/docs/plugins/language.md +172 -172
  46. package/docs/plugins/text-to-speech-announcer.md +119 -119
  47. package/docs/plugins/theme.md +176 -176
  48. package/docs/router/basics.md +175 -175
  49. package/docs/router/hooks.md +70 -70
  50. package/docs/router/transitions.md +146 -146
  51. package/docs/sidebar.json +171 -171
  52. package/docs/transitions_animations/transitions.md +150 -150
  53. package/index.d.ts +1099 -1099
  54. package/index.js +28 -28
  55. package/jsconfig.json +12 -12
  56. package/package.json +56 -56
  57. package/public/assets/fps_sprite.base64.js +1 -1
  58. package/scripts/postpublish.js +59 -59
  59. package/scripts/prepublishOnly.js +84 -84
  60. package/scripts/prepush.js +78 -78
  61. package/src/announcer/announcer.js +162 -162
  62. package/src/announcer/speechSynthesis.js +107 -107
  63. package/src/application.js +100 -100
  64. package/src/component/base/announcer.js +27 -27
  65. package/src/component/base/events.js +69 -69
  66. package/src/component/base/index.js +33 -33
  67. package/src/component/base/methods.js +244 -244
  68. package/src/component/base/router.js +41 -41
  69. package/src/component/base/timeouts_intervals.js +99 -99
  70. package/src/component/base/utils.js +72 -72
  71. package/src/component/setup/computed.js +48 -48
  72. package/src/component/setup/index.js +62 -62
  73. package/src/component/setup/input.js +30 -30
  74. package/src/component/setup/methods.js +37 -37
  75. package/src/component/setup/props.js +62 -62
  76. package/src/component/setup/props.test.js +238 -238
  77. package/src/component/setup/routes.js +42 -42
  78. package/src/component/setup/state.js +59 -59
  79. package/src/component/setup/watch.js +35 -35
  80. package/src/component.js +437 -437
  81. package/src/component.test.js +388 -388
  82. package/src/components/Circle.js +73 -73
  83. package/src/components/Circle.orig.js +31 -31
  84. package/src/components/FPScounter.js +1510 -1510
  85. package/src/components/FPScounter.orig.js +121 -121
  86. package/src/components/RouterView.js +81 -81
  87. package/src/components/RouterView.orig.js +54 -54
  88. package/src/components/Sprite.js +94 -94
  89. package/src/components/Sprite.orig.js +58 -58
  90. package/src/components/index.js +28 -28
  91. package/src/components/index.orig.js +28 -28
  92. package/src/constants.js +21 -21
  93. package/src/engine.js +1 -1
  94. package/src/engines/L3/element.js +744 -744
  95. package/src/engines/L3/element.test.js +579 -579
  96. package/src/engines/L3/fontLoader.js +38 -38
  97. package/src/engines/L3/index.js +7 -7
  98. package/src/engines/L3/launch.js +123 -123
  99. package/src/engines/L3/shaderLoader.js +12 -12
  100. package/src/engines/index.js +1 -1
  101. package/src/focus.js +90 -90
  102. package/src/helpers/deepEqualArray.js +50 -50
  103. package/src/helpers/deepEqualArray.test.js +127 -127
  104. package/src/helpers/fetchJson.js +34 -34
  105. package/src/helpers/sequence.js +26 -26
  106. package/src/launch.js +123 -123
  107. package/src/lib/blitsfileconverter/blitsfileconverter.js +52 -52
  108. package/src/lib/codegenerator/generator.js +788 -788
  109. package/src/lib/codegenerator/generator.test.js +3801 -3801
  110. package/src/lib/colors/colors.js +92 -92
  111. package/src/lib/colors/colors.test.js +290 -290
  112. package/src/lib/colors/htmlColors.js +168 -168
  113. package/src/lib/componentId.js +49 -49
  114. package/src/lib/componentId.test.js +84 -84
  115. package/src/lib/eventListeners.js +123 -123
  116. package/src/lib/eventListeners.test.js +236 -236
  117. package/src/lib/hooks.js +59 -59
  118. package/src/lib/lifecycle.js +85 -85
  119. package/src/lib/log.js +117 -117
  120. package/src/lib/precompiler/precompiler.js +73 -73
  121. package/src/lib/reactivity/effect.js +93 -93
  122. package/src/lib/reactivity/effect.test.js +35 -35
  123. package/src/lib/reactivity/reactive.js +208 -208
  124. package/src/lib/reactivity/reactive.test.js +27 -27
  125. package/src/lib/reactivityguard/computedprops.js +218 -218
  126. package/src/lib/symbols.js +108 -108
  127. package/src/lib/templateparser/parser.js +386 -386
  128. package/src/lib/templateparser/parser.test.js +1411 -1411
  129. package/src/lib/utils.js +27 -27
  130. package/src/plugin.js +27 -27
  131. package/src/plugins/appstate.js +26 -26
  132. package/src/plugins/index.js +20 -20
  133. package/src/plugins/language.js +152 -152
  134. package/src/plugins/log.js +25 -25
  135. package/src/plugins/theme.js +94 -94
  136. package/src/router/router.js +514 -514
  137. package/src/router/router.test.js +473 -473
  138. package/src/router/transitions/fadeIn.js +27 -27
  139. package/src/router/transitions/fadeInOut.js +33 -33
  140. package/src/router/transitions/index.js +21 -21
  141. package/src/router/transitions/slideIn.js +28 -28
  142. package/src/router/transitions/slideInOut.js +33 -33
  143. package/src/settings.js +40 -40
  144. package/vite/blitsFileConverter.js +67 -67
  145. package/vite/index.js +28 -28
  146. package/vite/msdfGenerator.js +269 -269
  147. package/vite/preCompiler.js +42 -42
  148. package/vite/reactivityGuard.js +45 -45
  149. package/vscode/data/template-attributes.json +589 -589
@@ -1,127 +1,127 @@
1
- /*
2
- * Copyright 2024 Comcast Cable Communications Management, LLC
3
- * Licensed under the Apache License, Version 2.0 (the "License");
4
- * you may not use this file except in compliance with the License.
5
- * You may obtain a copy of the License at
6
- *
7
- * http://www.apache.org/licenses/LICENSE-2.0
8
- *
9
- * Unless required by applicable law or agreed to in writing, software
10
- * distributed under the License is distributed on an "AS IS" BASIS,
11
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- * See the License for the specific language governing permissions and
13
- * limitations under the License.
14
- *
15
- * SPDX-License-Identifier: Apache-2.0
16
- */
17
-
18
- import test from 'tape'
19
- import deepEqual from './deepEqualArray.js'
20
-
21
- test('Type', (assert) => {
22
- const expected = 'function'
23
- const actual = typeof deepEqual
24
-
25
- assert.equal(actual, expected, 'deepEqual should be a function')
26
- assert.end()
27
- })
28
-
29
- test('The same arrays', (assert) => {
30
- const val1 = ['hello', 'world']
31
-
32
- assert.true(
33
- deepEqual(val1, val1),
34
- 'deepEqual should return true if the values are the same reference'
35
- )
36
- assert.end()
37
- })
38
-
39
- test('Equal simple arrays', (assert) => {
40
- const val1 = ['hello', 'world']
41
- const val2 = ['hello', 'world']
42
-
43
- assert.true(deepEqual(val1, val2), 'deepEqual should return true if simple arrays are equal')
44
- assert.end()
45
- })
46
-
47
- test('Not equal simple arrays', (assert) => {
48
- const val1 = ['hello', 'world']
49
- const val2 = ['world', 'hello']
50
-
51
- assert.false(
52
- deepEqual(val1, val2),
53
- 'deepEqual should return false if simple arrays are not equal'
54
- )
55
- assert.end()
56
- })
57
-
58
- test('Not Equal simple arrays (different length)', (assert) => {
59
- const val1 = ['hello', 'world']
60
- const val2 = ['hello', 'world', '!']
61
-
62
- assert.false(deepEqual(val1, val2), 'deepEqual should return false if simple arrays are equal')
63
- assert.end()
64
- })
65
-
66
- test('Equal nested arrays', (assert) => {
67
- const val1 = ['hello', ['world', '!']]
68
- const val2 = ['hello', ['world', '!']]
69
-
70
- assert.true(deepEqual(val1, val2), 'deepEqual should return true if nested arrays are equal')
71
- assert.end()
72
- })
73
-
74
- test('Not equal nested arrays', (assert) => {
75
- const val1 = ['hello', ['world', '!']]
76
- const val2 = ['hello', ['world', '!', '?']]
77
-
78
- assert.false(
79
- deepEqual(val1, val2),
80
- 'deepEqual should return false if nested arrays are not equal'
81
- )
82
- assert.end()
83
- })
84
-
85
- test('Equal arrays with objects', (assert) => {
86
- const val1 = [{ foo: 'bar', bar: 'foo' }, { hello: 'world' }]
87
- const val2 = [{ foo: 'bar', bar: 'foo' }, { hello: 'world' }]
88
-
89
- assert.true(
90
- deepEqual(val1, val2),
91
- 'deepEqual should return true if arrays with objects are equal'
92
- )
93
- assert.end()
94
- })
95
-
96
- test('Not equal arrays with objects (keys', (assert) => {
97
- const val1 = [{ foo: 'bar', bar: 'foo' }, { test: 'bla' }]
98
- const val2 = [{ foo2: 'bar', bar2: 'foo' }, { test: 'bla' }]
99
-
100
- assert.false(
101
- deepEqual(val1, val2),
102
- 'deepEqual should return false if arrays with objects are not equal'
103
- )
104
- assert.end()
105
- })
106
-
107
- test('Equal arrays with mixed values', (assert) => {
108
- const val1 = ['foo', { foo: 'bar', bar: 'foo' }, ['hello', 'world', ['this', 'is', { level: 2 }]]]
109
- const val2 = ['foo', { foo: 'bar', bar: 'foo' }, ['hello', 'world', ['this', 'is', { level: 2 }]]]
110
-
111
- assert.true(
112
- deepEqual(val1, val2),
113
- 'deepEqual should return true if arrays with mixed values are equal'
114
- )
115
- assert.end()
116
- })
117
-
118
- test('Not Equal arrays with mixed values', (assert) => {
119
- const val1 = ['foo', { foo: 'bar', bar: 'foo' }, ['hello', 'world', ['this', 'is', { level: 2 }]]]
120
- const val2 = ['foo', { foo: 'bar', bar: 'foo' }, ['hello', 'world', ['this', 'is', { level: 3 }]]]
121
-
122
- assert.false(
123
- deepEqual(val1, val2),
124
- 'deepEqual should return true if arrays with mixed values are not equal'
125
- )
126
- assert.end()
127
- })
1
+ /*
2
+ * Copyright 2024 Comcast Cable Communications Management, LLC
3
+ * Licensed under the Apache License, Version 2.0 (the "License");
4
+ * you may not use this file except in compliance with the License.
5
+ * You may obtain a copy of the License at
6
+ *
7
+ * http://www.apache.org/licenses/LICENSE-2.0
8
+ *
9
+ * Unless required by applicable law or agreed to in writing, software
10
+ * distributed under the License is distributed on an "AS IS" BASIS,
11
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ * See the License for the specific language governing permissions and
13
+ * limitations under the License.
14
+ *
15
+ * SPDX-License-Identifier: Apache-2.0
16
+ */
17
+
18
+ import test from 'tape'
19
+ import deepEqual from './deepEqualArray.js'
20
+
21
+ test('Type', (assert) => {
22
+ const expected = 'function'
23
+ const actual = typeof deepEqual
24
+
25
+ assert.equal(actual, expected, 'deepEqual should be a function')
26
+ assert.end()
27
+ })
28
+
29
+ test('The same arrays', (assert) => {
30
+ const val1 = ['hello', 'world']
31
+
32
+ assert.true(
33
+ deepEqual(val1, val1),
34
+ 'deepEqual should return true if the values are the same reference'
35
+ )
36
+ assert.end()
37
+ })
38
+
39
+ test('Equal simple arrays', (assert) => {
40
+ const val1 = ['hello', 'world']
41
+ const val2 = ['hello', 'world']
42
+
43
+ assert.true(deepEqual(val1, val2), 'deepEqual should return true if simple arrays are equal')
44
+ assert.end()
45
+ })
46
+
47
+ test('Not equal simple arrays', (assert) => {
48
+ const val1 = ['hello', 'world']
49
+ const val2 = ['world', 'hello']
50
+
51
+ assert.false(
52
+ deepEqual(val1, val2),
53
+ 'deepEqual should return false if simple arrays are not equal'
54
+ )
55
+ assert.end()
56
+ })
57
+
58
+ test('Not Equal simple arrays (different length)', (assert) => {
59
+ const val1 = ['hello', 'world']
60
+ const val2 = ['hello', 'world', '!']
61
+
62
+ assert.false(deepEqual(val1, val2), 'deepEqual should return false if simple arrays are equal')
63
+ assert.end()
64
+ })
65
+
66
+ test('Equal nested arrays', (assert) => {
67
+ const val1 = ['hello', ['world', '!']]
68
+ const val2 = ['hello', ['world', '!']]
69
+
70
+ assert.true(deepEqual(val1, val2), 'deepEqual should return true if nested arrays are equal')
71
+ assert.end()
72
+ })
73
+
74
+ test('Not equal nested arrays', (assert) => {
75
+ const val1 = ['hello', ['world', '!']]
76
+ const val2 = ['hello', ['world', '!', '?']]
77
+
78
+ assert.false(
79
+ deepEqual(val1, val2),
80
+ 'deepEqual should return false if nested arrays are not equal'
81
+ )
82
+ assert.end()
83
+ })
84
+
85
+ test('Equal arrays with objects', (assert) => {
86
+ const val1 = [{ foo: 'bar', bar: 'foo' }, { hello: 'world' }]
87
+ const val2 = [{ foo: 'bar', bar: 'foo' }, { hello: 'world' }]
88
+
89
+ assert.true(
90
+ deepEqual(val1, val2),
91
+ 'deepEqual should return true if arrays with objects are equal'
92
+ )
93
+ assert.end()
94
+ })
95
+
96
+ test('Not equal arrays with objects (keys', (assert) => {
97
+ const val1 = [{ foo: 'bar', bar: 'foo' }, { test: 'bla' }]
98
+ const val2 = [{ foo2: 'bar', bar2: 'foo' }, { test: 'bla' }]
99
+
100
+ assert.false(
101
+ deepEqual(val1, val2),
102
+ 'deepEqual should return false if arrays with objects are not equal'
103
+ )
104
+ assert.end()
105
+ })
106
+
107
+ test('Equal arrays with mixed values', (assert) => {
108
+ const val1 = ['foo', { foo: 'bar', bar: 'foo' }, ['hello', 'world', ['this', 'is', { level: 2 }]]]
109
+ const val2 = ['foo', { foo: 'bar', bar: 'foo' }, ['hello', 'world', ['this', 'is', { level: 2 }]]]
110
+
111
+ assert.true(
112
+ deepEqual(val1, val2),
113
+ 'deepEqual should return true if arrays with mixed values are equal'
114
+ )
115
+ assert.end()
116
+ })
117
+
118
+ test('Not Equal arrays with mixed values', (assert) => {
119
+ const val1 = ['foo', { foo: 'bar', bar: 'foo' }, ['hello', 'world', ['this', 'is', { level: 2 }]]]
120
+ const val2 = ['foo', { foo: 'bar', bar: 'foo' }, ['hello', 'world', ['this', 'is', { level: 3 }]]]
121
+
122
+ assert.false(
123
+ deepEqual(val1, val2),
124
+ 'deepEqual should return true if arrays with mixed values are not equal'
125
+ )
126
+ assert.end()
127
+ })
@@ -1,34 +1,34 @@
1
- /*
2
- * If not stated otherwise in this file or this component's LICENSE file the
3
- * following copyright and licenses apply:
4
- *
5
- * Copyright 2020 Metrological
6
- *
7
- * Licensed under the Apache License, Version 2.0 (the License);
8
- * you may not use this file except in compliance with the License.
9
- * You may obtain a copy of the License at
10
- *
11
- * http://www.apache.org/licenses/LICENSE-2.0
12
- *
13
- * Unless required by applicable law or agreed to in writing, software
14
- * distributed under the License is distributed on an "AS IS" BASIS,
15
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- * See the License for the specific language governing permissions and
17
- * limitations under the License.
18
- */
19
-
20
- export default (file) => {
21
- return new Promise((resolve, reject) => {
22
- const xhr = new XMLHttpRequest()
23
- xhr.onreadystatechange = function () {
24
- if (xhr.readyState == XMLHttpRequest.DONE) {
25
- // file protocol returns 0
26
- // http(s) protocol returns 200
27
- if (xhr.status === 0 || xhr.status === 200) resolve(JSON.parse(xhr.responseText))
28
- else reject(xhr.statusText)
29
- }
30
- }
31
- xhr.open('GET', file)
32
- xhr.send(null)
33
- })
34
- }
1
+ /*
2
+ * If not stated otherwise in this file or this component's LICENSE file the
3
+ * following copyright and licenses apply:
4
+ *
5
+ * Copyright 2020 Metrological
6
+ *
7
+ * Licensed under the Apache License, Version 2.0 (the License);
8
+ * you may not use this file except in compliance with the License.
9
+ * You may obtain a copy of the License at
10
+ *
11
+ * http://www.apache.org/licenses/LICENSE-2.0
12
+ *
13
+ * Unless required by applicable law or agreed to in writing, software
14
+ * distributed under the License is distributed on an "AS IS" BASIS,
15
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ * See the License for the specific language governing permissions and
17
+ * limitations under the License.
18
+ */
19
+
20
+ export default (file) => {
21
+ return new Promise((resolve, reject) => {
22
+ const xhr = new XMLHttpRequest()
23
+ xhr.onreadystatechange = function () {
24
+ if (xhr.readyState == XMLHttpRequest.DONE) {
25
+ // file protocol returns 0
26
+ // http(s) protocol returns 200
27
+ if (xhr.status === 0 || xhr.status === 200) resolve(JSON.parse(xhr.responseText))
28
+ else reject(xhr.statusText)
29
+ }
30
+ }
31
+ xhr.open('GET', file)
32
+ xhr.send(null)
33
+ })
34
+ }
@@ -1,26 +1,26 @@
1
- /*
2
- * Copyright 2023 Comcast Cable Communications Management, LLC
3
- * Licensed under the Apache License, Version 2.0 (the "License");
4
- * you may not use this file except in compliance with the License.
5
- * You may obtain a copy of the License at
6
- *
7
- * http://www.apache.org/licenses/LICENSE-2.0
8
- *
9
- * Unless required by applicable law or agreed to in writing, software
10
- * distributed under the License is distributed on an "AS IS" BASIS,
11
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- * See the License for the specific language governing permissions and
13
- * limitations under the License.
14
- *
15
- * SPDX-License-Identifier: Apache-2.0
16
- */
17
-
18
- export default (steps) => {
19
- return steps.reduce((promise, method) => {
20
- return promise
21
- .then(function () {
22
- return method(...arguments)
23
- })
24
- .catch((e) => Promise.reject(e))
25
- }, Promise.resolve(null))
26
- }
1
+ /*
2
+ * Copyright 2023 Comcast Cable Communications Management, LLC
3
+ * Licensed under the Apache License, Version 2.0 (the "License");
4
+ * you may not use this file except in compliance with the License.
5
+ * You may obtain a copy of the License at
6
+ *
7
+ * http://www.apache.org/licenses/LICENSE-2.0
8
+ *
9
+ * Unless required by applicable law or agreed to in writing, software
10
+ * distributed under the License is distributed on an "AS IS" BASIS,
11
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ * See the License for the specific language governing permissions and
13
+ * limitations under the License.
14
+ *
15
+ * SPDX-License-Identifier: Apache-2.0
16
+ */
17
+
18
+ export default (steps) => {
19
+ return steps.reduce((promise, method) => {
20
+ return promise
21
+ .then(function () {
22
+ return method(...arguments)
23
+ })
24
+ .catch((e) => Promise.reject(e))
25
+ }, Promise.resolve(null))
26
+ }
package/src/launch.js CHANGED
@@ -1,123 +1,123 @@
1
- /*
2
- * Copyright 2023 Comcast Cable Communications Management, LLC
3
- * Licensed under the Apache License, Version 2.0 (the "License");
4
- * you may not use this file except in compliance with the License.
5
- * You may obtain a copy of the License at
6
- *
7
- * http://www.apache.org/licenses/LICENSE-2.0
8
- *
9
- * Unless required by applicable law or agreed to in writing, software
10
- * distributed under the License is distributed on an "AS IS" BASIS,
11
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- * See the License for the specific language governing permissions and
13
- * limitations under the License.
14
- *
15
- * SPDX-License-Identifier: Apache-2.0
16
- */
17
-
18
- import Settings from './settings.js'
19
- import { initLog, Log } from './lib/log.js'
20
- import engine from './engine.js'
21
- import blitsPackageInfo from '../package.json' assert { type: 'json' }
22
-
23
- /**
24
- * @typedef {Object} Font
25
- * @property {string} family - Name of the font family
26
- * @property {string} type - Type of font (web, msdf, sdf)
27
- * @property {string} [file] - Location to the font file
28
- * @property {string} [json] - Location of the font map (for msdf/sdf)
29
- * @property {string} [png] - Location of the font png (for msdf/sdf)
30
- */
31
- /**
32
- * @typedef {Object} ShaderEffect
33
- * @property {string} name
34
- * @property {any} type
35
- */
36
- /**
37
- * @typedef {Object} Shader
38
- * @property {string} name
39
- * @property {any} type
40
- */
41
-
42
- /**
43
- * @typedef {import('@lightningjs/renderer').RendererMain} RendererMain
44
- * @type {RendererMain}
45
- */
46
- // @ts-ignore - We ignore this because it will be replaced by the renderer once the app is launched
47
- export let renderer = {}
48
- export const stage = {}
49
-
50
- async function rendererVersion() {
51
- let rendererPackageInfo
52
- try {
53
- // Dynamically import the renderer package.json
54
- rendererPackageInfo = await import('../../renderer/package.json')
55
- if (rendererPackageInfo !== undefined) {
56
- return rendererPackageInfo.version
57
- }
58
- } catch (e) {
59
- // Fallback to renderer version in dependencies
60
- return blitsPackageInfo.dependencies['@lightningjs/renderer']
61
- }
62
- }
63
-
64
- /**
65
- * @typedef {Object} BlitsSettings
66
- * @property {number} [w] - Width of the Application
67
- * @property {number} [h] - Height of the Application
68
- * @property {boolean} [multithreaded] - Whether to enable multithreaded
69
- * @property {0|1|2|"info"|"warn"|"error"|"debug"[]} [debugLevel] - Debug level for console log messages
70
- * @property {Font[]} [fonts] - Fonts to be used in the Application
71
- * @property {ShaderEffect[]} [effects] - Effects to be used by DynamicShader
72
- * @property {Shader[]} [shaders] - Shaders to be used in the application
73
- * @property {string} [defaultFont] - Default font family to use in the Application
74
- * @property {object} [keymap] - Custom keymapping
75
- * @property {"Proxy"|"defineProperty"} [reactivityMode] - Mode of reactivity
76
- * @property {"hd"|"720p"|720|"fhd"|"fullhd"|"1080p"|1080|"4k"|"2160p"|2160} [screenResolution] - Screen resolution of the device
77
- * @property {"low"|"medium"|"high"|"retina"|number} [renderQuality] - Quality of the rendered App
78
- * @property {number} [pixelRatio] - Custom pixel ratio of the device
79
- * @property {number} [fpsInterval] - Interval in ms to receive FPS updates
80
- * @property {number} [webWorkersLimit] - Maximum number of web workers
81
- * @property {string} [canvasColor] - Background color of the canvas
82
- * @property {boolean} [inspector] - Enable inspector
83
- * @property {number|[number,number,number,number]} [viewportMargin] - Extra margin to the viewport
84
- * @property {number} [gpuMemoryLimit] - Threshold after which textures are freed (deprecated)
85
- * @property {object} [gpuMemory] - Configures the gpu memory settings
86
- * @property {"webgl"|"canvas"} [renderMode] - Defines which mode the renderer should operate in
87
- * @property {number} [holdTimeout] - Time after which a key press is considered a hold
88
- * @property {HTMLCanvasElement} [canvas] - Custom canvas object used to render the App
89
- * @property {number} [textureProcessingTimeLimit] - Max time renderer can process textures in a frame
90
- * @property {Partial<import('@lightningjs/renderer').RendererMainSettings>} [advanced] - Advanced renderer settings
91
- * @property {boolean} [announcer] - Whether or not the announcer should be activated on initialization
92
- */
93
-
94
- /**
95
- * Blits App defines the structure of the Blits application.
96
- * @typedef {import('./component').BlitsComponent} BlitsComponent
97
- * @typedef {BlitsComponent & { quit: () => void }} BlitsAppComponent
98
- * @typedef {() => BlitsAppComponent} BlitsAppFactory
99
- */
100
-
101
- /**
102
- * Launches the Blits application with the given App, target, and settings.
103
- * Sets up logging, version info, and initializes the renderer and stage singletons.
104
- *
105
- * @param {BlitsAppFactory} App - The root BlitsComponent to launch.
106
- * @param {HTMLElement} target - The DOM element or rendering target.
107
- * @param {BlitsSettings} settings - Configuration settings for the application.
108
- * @returns {void}
109
- */
110
- export default (App, target, settings) => {
111
- Settings.set(settings)
112
-
113
- initLog()
114
-
115
- rendererVersion().then((v) => {
116
- Log.info('Blits Version ', blitsPackageInfo.version)
117
- Log.info('Renderer Version ', v)
118
- })
119
-
120
- stage.element = engine.Element
121
-
122
- renderer = engine.Launch(App, target, settings)
123
- }
1
+ /*
2
+ * Copyright 2023 Comcast Cable Communications Management, LLC
3
+ * Licensed under the Apache License, Version 2.0 (the "License");
4
+ * you may not use this file except in compliance with the License.
5
+ * You may obtain a copy of the License at
6
+ *
7
+ * http://www.apache.org/licenses/LICENSE-2.0
8
+ *
9
+ * Unless required by applicable law or agreed to in writing, software
10
+ * distributed under the License is distributed on an "AS IS" BASIS,
11
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ * See the License for the specific language governing permissions and
13
+ * limitations under the License.
14
+ *
15
+ * SPDX-License-Identifier: Apache-2.0
16
+ */
17
+
18
+ import Settings from './settings.js'
19
+ import { initLog, Log } from './lib/log.js'
20
+ import engine from './engine.js'
21
+ import blitsPackageInfo from '../package.json' assert { type: 'json' }
22
+
23
+ /**
24
+ * @typedef {Object} Font
25
+ * @property {string} family - Name of the font family
26
+ * @property {string} type - Type of font (web, msdf, sdf)
27
+ * @property {string} [file] - Location to the font file
28
+ * @property {string} [json] - Location of the font map (for msdf/sdf)
29
+ * @property {string} [png] - Location of the font png (for msdf/sdf)
30
+ */
31
+ /**
32
+ * @typedef {Object} ShaderEffect
33
+ * @property {string} name
34
+ * @property {any} type
35
+ */
36
+ /**
37
+ * @typedef {Object} Shader
38
+ * @property {string} name
39
+ * @property {any} type
40
+ */
41
+
42
+ /**
43
+ * @typedef {import('@lightningjs/renderer').RendererMain} RendererMain
44
+ * @type {RendererMain}
45
+ */
46
+ // @ts-ignore - We ignore this because it will be replaced by the renderer once the app is launched
47
+ export let renderer = {}
48
+ export const stage = {}
49
+
50
+ async function rendererVersion() {
51
+ let rendererPackageInfo
52
+ try {
53
+ // Dynamically import the renderer package.json
54
+ rendererPackageInfo = await import('../../renderer/package.json')
55
+ if (rendererPackageInfo !== undefined) {
56
+ return rendererPackageInfo.version
57
+ }
58
+ } catch (e) {
59
+ // Fallback to renderer version in dependencies
60
+ return blitsPackageInfo.dependencies['@lightningjs/renderer']
61
+ }
62
+ }
63
+
64
+ /**
65
+ * @typedef {Object} BlitsSettings
66
+ * @property {number} [w] - Width of the Application
67
+ * @property {number} [h] - Height of the Application
68
+ * @property {boolean} [multithreaded] - Whether to enable multithreaded
69
+ * @property {0|1|2|"info"|"warn"|"error"|"debug"[]} [debugLevel] - Debug level for console log messages
70
+ * @property {Font[]} [fonts] - Fonts to be used in the Application
71
+ * @property {ShaderEffect[]} [effects] - Effects to be used by DynamicShader
72
+ * @property {Shader[]} [shaders] - Shaders to be used in the application
73
+ * @property {string} [defaultFont] - Default font family to use in the Application
74
+ * @property {object} [keymap] - Custom keymapping
75
+ * @property {"Proxy"|"defineProperty"} [reactivityMode] - Mode of reactivity
76
+ * @property {"hd"|"720p"|720|"fhd"|"fullhd"|"1080p"|1080|"4k"|"2160p"|2160} [screenResolution] - Screen resolution of the device
77
+ * @property {"low"|"medium"|"high"|"retina"|number} [renderQuality] - Quality of the rendered App
78
+ * @property {number} [pixelRatio] - Custom pixel ratio of the device
79
+ * @property {number} [fpsInterval] - Interval in ms to receive FPS updates
80
+ * @property {number} [webWorkersLimit] - Maximum number of web workers
81
+ * @property {string} [canvasColor] - Background color of the canvas
82
+ * @property {boolean} [inspector] - Enable inspector
83
+ * @property {number|[number,number,number,number]} [viewportMargin] - Extra margin to the viewport
84
+ * @property {number} [gpuMemoryLimit] - Threshold after which textures are freed (deprecated)
85
+ * @property {object} [gpuMemory] - Configures the gpu memory settings
86
+ * @property {"webgl"|"canvas"} [renderMode] - Defines which mode the renderer should operate in
87
+ * @property {number} [holdTimeout] - Time after which a key press is considered a hold
88
+ * @property {HTMLCanvasElement} [canvas] - Custom canvas object used to render the App
89
+ * @property {number} [textureProcessingTimeLimit] - Max time renderer can process textures in a frame
90
+ * @property {Partial<import('@lightningjs/renderer').RendererMainSettings>} [advanced] - Advanced renderer settings
91
+ * @property {boolean} [announcer] - Whether or not the announcer should be activated on initialization
92
+ */
93
+
94
+ /**
95
+ * Blits App defines the structure of the Blits application.
96
+ * @typedef {import('./component').BlitsComponent} BlitsComponent
97
+ * @typedef {BlitsComponent & { quit: () => void }} BlitsAppComponent
98
+ * @typedef {() => BlitsAppComponent} BlitsAppFactory
99
+ */
100
+
101
+ /**
102
+ * Launches the Blits application with the given App, target, and settings.
103
+ * Sets up logging, version info, and initializes the renderer and stage singletons.
104
+ *
105
+ * @param {BlitsAppFactory} App - The root BlitsComponent to launch.
106
+ * @param {HTMLElement} target - The DOM element or rendering target.
107
+ * @param {BlitsSettings} settings - Configuration settings for the application.
108
+ * @returns {void}
109
+ */
110
+ export default (App, target, settings) => {
111
+ Settings.set(settings)
112
+
113
+ initLog()
114
+
115
+ rendererVersion().then((v) => {
116
+ Log.info('Blits Version ', blitsPackageInfo.version)
117
+ Log.info('Renderer Version ', v)
118
+ })
119
+
120
+ stage.element = engine.Element
121
+
122
+ renderer = engine.Launch(App, target, settings)
123
+ }