@lightningjs/blits 1.30.2 → 1.31.0

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 (152) hide show
  1. package/CHANGELOG.md +1029 -1019
  2. package/LICENSE +202 -202
  3. package/NOTICE +12 -12
  4. package/README.md +33 -33
  5. package/bin/index.js +8 -8
  6. package/blits.d.ts +6 -6
  7. package/index.d.ts +1099 -1099
  8. package/index.js +28 -28
  9. package/package.json +57 -56
  10. package/public/assets/fps_sprite.base64.js +1 -1
  11. package/scripts/postpublish.js +59 -59
  12. package/scripts/prepublishOnly.js +84 -84
  13. package/scripts/prepush.js +78 -78
  14. package/src/announcer/announcer.js +162 -162
  15. package/src/announcer/speechSynthesis.js +107 -107
  16. package/src/application.js +100 -100
  17. package/src/component/base/announcer.js +27 -27
  18. package/src/component/base/events.js +69 -69
  19. package/src/component/base/index.js +33 -33
  20. package/src/component/base/methods.js +244 -244
  21. package/src/component/base/router.js +41 -41
  22. package/src/component/base/timeouts_intervals.js +99 -99
  23. package/src/component/base/utils.js +72 -72
  24. package/src/component/setup/computed.js +48 -48
  25. package/src/component/setup/index.js +62 -62
  26. package/src/component/setup/input.js +30 -30
  27. package/src/component/setup/methods.js +37 -37
  28. package/src/component/setup/props.js +62 -62
  29. package/src/component/setup/routes.js +42 -42
  30. package/src/component/setup/state.js +59 -59
  31. package/src/component/setup/watch.js +35 -35
  32. package/src/component.js +437 -437
  33. package/src/components/Circle.js +73 -73
  34. package/src/components/FPScounter.js +1510 -1510
  35. package/src/components/RouterView.js +81 -81
  36. package/src/components/Sprite.js +94 -94
  37. package/src/components/index.js +28 -28
  38. package/src/constants.js +21 -21
  39. package/src/engine.js +1 -1
  40. package/src/engines/L3/element.js +744 -744
  41. package/src/engines/L3/fontLoader.js +38 -38
  42. package/src/engines/L3/index.js +7 -7
  43. package/src/engines/L3/launch.js +123 -123
  44. package/src/engines/L3/shaderLoader.js +12 -12
  45. package/src/engines/index.js +1 -1
  46. package/src/focus.js +90 -90
  47. package/src/helpers/deepEqualArray.js +50 -50
  48. package/src/helpers/fetchJson.js +34 -34
  49. package/src/helpers/sequence.js +26 -26
  50. package/src/launch.js +123 -123
  51. package/src/lib/blitsfileconverter/blitsfileconverter.js +52 -52
  52. package/src/lib/codegenerator/generator.js +788 -788
  53. package/src/lib/colors/colors.js +92 -92
  54. package/src/lib/colors/htmlColors.js +168 -168
  55. package/src/lib/componentId.js +49 -49
  56. package/src/lib/eventListeners.js +123 -123
  57. package/src/lib/hooks.js +59 -59
  58. package/src/lib/lifecycle.js +85 -85
  59. package/src/lib/log.js +117 -117
  60. package/src/lib/precompiler/precompiler.js +73 -73
  61. package/src/lib/reactivity/effect.js +93 -93
  62. package/src/lib/reactivity/reactive.js +208 -208
  63. package/src/lib/reactivityguard/computedprops.js +218 -218
  64. package/src/lib/symbols.js +108 -108
  65. package/src/lib/templateparser/parser.js +386 -386
  66. package/src/lib/utils.js +27 -27
  67. package/src/plugin.js +27 -27
  68. package/src/plugins/appstate.js +26 -26
  69. package/src/plugins/index.js +20 -20
  70. package/src/plugins/language.js +152 -152
  71. package/src/plugins/log.js +25 -25
  72. package/src/plugins/theme.js +94 -94
  73. package/src/router/router.js +516 -514
  74. package/src/router/transitions/fadeIn.js +27 -27
  75. package/src/router/transitions/fadeInOut.js +33 -33
  76. package/src/router/transitions/index.js +21 -21
  77. package/src/router/transitions/slideIn.js +28 -28
  78. package/src/router/transitions/slideInOut.js +33 -33
  79. package/src/settings.js +40 -40
  80. package/vite/blitsFileConverter.js +67 -67
  81. package/vite/index.js +28 -28
  82. package/vite/msdfGenerator.js +269 -269
  83. package/vite/preCompiler.js +47 -42
  84. package/vite/reactivityGuard.js +45 -45
  85. package/vscode/data/template-attributes.json +589 -589
  86. package/.editorconfig +0 -7
  87. package/.eslintignore +0 -1
  88. package/.eslintrc.cjs +0 -65
  89. package/.github/workflows/comment-lint-results.yml +0 -125
  90. package/.github/workflows/comment-test-results.yml +0 -109
  91. package/.github/workflows/deploy-docs.yml +0 -27
  92. package/.github/workflows/run-blits-tests.yml +0 -142
  93. package/.github/workflows/run-lint.yml +0 -128
  94. package/.husky/pre-commit +0 -1
  95. package/.husky/pre-push +0 -1
  96. package/.vscode/extensions.json +0 -7
  97. package/.vscode/settings.json +0 -9
  98. package/COPYING +0 -1
  99. package/banner.png +0 -0
  100. package/docs/.nojekyll +0 -0
  101. package/docs/README.md +0 -19
  102. package/docs/_sidebar.md +0 -37
  103. package/docs/built-in/directives.md +0 -50
  104. package/docs/built-in/for-loop.md +0 -204
  105. package/docs/built-in/layout.md +0 -168
  106. package/docs/components/component_state.md +0 -90
  107. package/docs/components/computed_properties.md +0 -45
  108. package/docs/components/lifecycle_events.md +0 -42
  109. package/docs/components/methods.md +0 -45
  110. package/docs/components/props.md +0 -56
  111. package/docs/components/user_input.md +0 -186
  112. package/docs/components/utility_methods.md +0 -320
  113. package/docs/components/watchers.md +0 -34
  114. package/docs/essentials/application_root.md +0 -19
  115. package/docs/essentials/components.md +0 -68
  116. package/docs/essentials/displaying_images.md +0 -67
  117. package/docs/essentials/displaying_text.md +0 -135
  118. package/docs/essentials/element_attributes.md +0 -195
  119. package/docs/essentials/settings.md +0 -117
  120. package/docs/essentials/template_syntax.md +0 -83
  121. package/docs/getting_started/file_structure.md +0 -58
  122. package/docs/getting_started/getting_started.md +0 -45
  123. package/docs/getting_started/intro.md +0 -20
  124. package/docs/index.html +0 -47
  125. package/docs/performance/lazy-loading.md +0 -161
  126. package/docs/plugins/global_app_state.md +0 -98
  127. package/docs/plugins/language.md +0 -172
  128. package/docs/plugins/text-to-speech-announcer.md +0 -120
  129. package/docs/plugins/theme.md +0 -176
  130. package/docs/router/basics.md +0 -175
  131. package/docs/router/hooks.md +0 -70
  132. package/docs/router/transitions.md +0 -146
  133. package/docs/sidebar.json +0 -171
  134. package/docs/transitions_animations/transitions.md +0 -150
  135. package/jsconfig.json +0 -12
  136. package/src/component/setup/props.test.js +0 -238
  137. package/src/component.test.js +0 -388
  138. package/src/components/Circle.orig.js +0 -31
  139. package/src/components/FPScounter.orig.js +0 -121
  140. package/src/components/RouterView.orig.js +0 -54
  141. package/src/components/Sprite.orig.js +0 -58
  142. package/src/components/index.orig.js +0 -28
  143. package/src/engines/L3/element.test.js +0 -579
  144. package/src/helpers/deepEqualArray.test.js +0 -127
  145. package/src/lib/codegenerator/generator.test.js +0 -3801
  146. package/src/lib/colors/colors.test.js +0 -290
  147. package/src/lib/componentId.test.js +0 -84
  148. package/src/lib/eventListeners.test.js +0 -236
  149. package/src/lib/reactivity/effect.test.js +0 -35
  150. package/src/lib/reactivity/reactive.test.js +0 -27
  151. package/src/lib/templateparser/parser.test.js +0 -1411
  152. package/src/router/router.test.js +0 -473
@@ -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
+ }
@@ -1,52 +1,52 @@
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 (source) => {
19
- const { template, script } = parseBlitsFile(source)
20
- return injectTemplate(script, template)
21
- }
22
-
23
- const parseBlitsFile = (source) => {
24
- const templateMatch = source.match(/<template>([\s\S]*?)<\/template>/)
25
- const scriptMatch = source.match(/<script(?:\s+lang=["'](?:js|ts)["'])?\s*>([\s\S]*?)<\/script>/)
26
-
27
- return {
28
- template: templateMatch ? templateMatch[1].trim() : '',
29
- script: scriptMatch ? scriptMatch[1].trim() : '',
30
- }
31
- }
32
-
33
- const injectTemplate = (script, template) => {
34
- const componentRegex =
35
- /(Blits\.Component|Component)\s*\(\s*(['"`])(?:(?=(\\?))\3.)*?\2\s*,\s*\{|Blits\.Application\s*\(\s*\{/
36
-
37
- const match = script.match(componentRegex)
38
-
39
- if (!match) {
40
- // we might consider initializing a component if it's not found automatically
41
- throw new Error(
42
- 'Could not find Blits.Component, Component, or Blits.Application initialization in the script'
43
- )
44
- }
45
-
46
- // The insertion point is right after the opening curly brace
47
- const insertIndex = match.index + match[0].length
48
-
49
- // Using template literals to preserve multiline strings and escape characters
50
- const injection = `\n template: \`${template.replace(/`/g, '\\`')}\`,\n`
51
- return script.slice(0, insertIndex) + injection + script.slice(insertIndex)
52
- }
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 (source) => {
19
+ const { template, script } = parseBlitsFile(source)
20
+ return injectTemplate(script, template)
21
+ }
22
+
23
+ const parseBlitsFile = (source) => {
24
+ const templateMatch = source.match(/<template>([\s\S]*?)<\/template>/)
25
+ const scriptMatch = source.match(/<script(?:\s+lang=["'](?:js|ts)["'])?\s*>([\s\S]*?)<\/script>/)
26
+
27
+ return {
28
+ template: templateMatch ? templateMatch[1].trim() : '',
29
+ script: scriptMatch ? scriptMatch[1].trim() : '',
30
+ }
31
+ }
32
+
33
+ const injectTemplate = (script, template) => {
34
+ const componentRegex =
35
+ /(Blits\.Component|Component)\s*\(\s*(['"`])(?:(?=(\\?))\3.)*?\2\s*,\s*\{|Blits\.Application\s*\(\s*\{/
36
+
37
+ const match = script.match(componentRegex)
38
+
39
+ if (!match) {
40
+ // we might consider initializing a component if it's not found automatically
41
+ throw new Error(
42
+ 'Could not find Blits.Component, Component, or Blits.Application initialization in the script'
43
+ )
44
+ }
45
+
46
+ // The insertion point is right after the opening curly brace
47
+ const insertIndex = match.index + match[0].length
48
+
49
+ // Using template literals to preserve multiline strings and escape characters
50
+ const injection = `\n template: \`${template.replace(/`/g, '\\`')}\`,\n`
51
+ return script.slice(0, insertIndex) + injection + script.slice(insertIndex)
52
+ }