neo.mjs 6.9.12 → 6.10.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.
- package/BACKERS.md +0 -30
- package/apps/ServiceWorker.mjs +2 -2
- package/apps/learnneo/index.html +8 -4
- package/apps/learnneo/view/LivePreview.mjs +171 -0
- package/apps/learnneo/view/home/ContentTreeList.mjs +91 -8
- package/apps/learnneo/view/home/MainContainerController.mjs +5 -20
- package/examples/ServiceWorker.mjs +2 -2
- package/examples/button/base/neo-config.json +1 -2
- package/package.json +4 -8
- package/resources/data/deck/learnneo/p/2023-10-01T18-29-19-158Z.md +14 -16
- package/resources/data/deck/learnneo/p/2023-10-07T19-18-28-517Z.md +9 -17
- package/resources/data/deck/learnneo/p/2023-10-08T20-20-07-934Z.md +7 -5
- package/resources/data/deck/learnneo/p/2023-10-14T19-25-08-153Z.md +18 -22
- package/resources/data/deck/learnneo/p/2023-10-31T13-59-37-550Z.md +31 -0
- package/resources/data/deck/learnneo/p/MainThreadAddonExample.md +15 -0
- package/resources/data/deck/learnneo/p/MainThreadAddonIntro.md +46 -0
- package/resources/data/deck/learnneo/p/TestLivePreview.md +10 -0
- package/resources/data/deck/learnneo/p/stylesheet.md +3 -7
- package/resources/data/deck/learnneo/t.json +126 -56
- package/resources/images/logos/Github-logo-black.svg +1 -0
- package/resources/images/logos/Slack-logo-black.svg +17 -0
- package/resources/scss/src/apps/learnneo/home/ContentView.scss +6 -0
- package/resources/scss/src/list/Base.scss +5 -1
- package/resources/scss/theme-neo-light/Global.scss +7 -5
- package/resources/scss/theme-neo-light/button/Base.scss +46 -45
- package/resources/scss/theme-neo-light/design-tokens/Component.scss +4 -0
- package/resources/scss/theme-neo-light/design-tokens/Core.scss +23 -22
- package/resources/scss/theme-neo-light/design-tokens/Semantic.scss +5 -2
- package/resources/scss/theme-neo-light/list/Base.scss +2 -4
- package/resources/scss/theme-neo-light/tab/header/Button.scss +1 -1
- package/src/DefaultConfig.mjs +2 -2
- package/src/component/StatusBadge.mjs +194 -246
- package/src/component/Video.mjs +19 -25
- package/src/controller/Base.mjs +3 -4
- package/src/core/Base.mjs +2 -2
- package/src/form/field/Text.mjs +2 -2
- package/src/form/field/TextArea.mjs +3 -3
- package/src/main/DomAccess.mjs +64 -70
- package/src/main/DomEvents.mjs +1 -1
- package/src/main/addon/HighlightJS.mjs +16 -1
- package/src/main/addon/Mwc.mjs +6 -1
- package/src/worker/Manager.mjs +8 -3
- package/apps/learnneo/view/home/ContentComponent.mjs +0 -24
- package/examples/container/dialog/MainContainer.mjs +0 -68
- package/examples/container/dialog/MainContainerController.mjs +0 -84
- package/examples/container/dialog/app.mjs +0 -6
- package/examples/container/dialog/index.html +0 -11
- package/examples/container/dialog/neo-config.json +0 -7
- package/resources/scss/src/apps/learnneo/home/ContentComponent.scss +0 -61
- package/resources/scss/src/apps/newwebsite/MainContainer.css +0 -33
- package/resources/scss/theme-neo-light/design-tokens/Components.scss +0 -3
- package/src/container/Dialog.mjs +0 -205
- package/src/main/addon/Dialog.mjs +0 -68
@@ -3,7 +3,7 @@ In Neo.mjs you sub-class and override methods in the usual way.
|
|
3
3
|
Here, we'll extend `Mammal` and override the `speak()` method.
|
4
4
|
(For brevity, we'll exclude `export` and `import` statements.)
|
5
5
|
|
6
|
-
<pre
|
6
|
+
<pre data-javascript>
|
7
7
|
class Mammal extends Base {
|
8
8
|
static config = {
|
9
9
|
className: 'Simple.example.Mammal',
|
@@ -16,7 +16,8 @@ class Mammal extends Base {
|
|
16
16
|
}
|
17
17
|
Neo.applyClassConfig(Mammal);
|
18
18
|
</pre>
|
19
|
-
|
19
|
+
|
20
|
+
<pre data-javascript>
|
20
21
|
class Human extends Mammal {
|
21
22
|
static config = {
|
22
23
|
className: 'Simple.example.Human',
|
@@ -37,7 +38,7 @@ Neo.applyClassConfig(Mammal);
|
|
37
38
|
Any class in the hierarchy is free to add new properties and methods. Let's add
|
38
39
|
a property and behavior (method) to the Human class.
|
39
40
|
|
40
|
-
<pre
|
41
|
+
<pre data-javascript>
|
41
42
|
import Base from '../../../node_modules/neo.mjs/src/core/Base.mjs';
|
42
43
|
|
43
44
|
class Mammal extends Base {
|
@@ -51,7 +52,8 @@ class Mammal extends Base {
|
|
51
52
|
}
|
52
53
|
}
|
53
54
|
</pre>
|
54
|
-
|
55
|
+
|
56
|
+
<pre data-javascript>
|
55
57
|
class Human extends Mammal {
|
56
58
|
static config = {
|
57
59
|
className: 'Simple.example.Human',
|
@@ -69,7 +71,7 @@ const myPerson = Neo.create(Human, {
|
|
69
71
|
name: 'Herbert'
|
70
72
|
});
|
71
73
|
myPerson.speak(); // Logs "Hello! My name is Herbert. I am not married."
|
72
|
-
myPerson.yodel(); // Logs "
|
74
|
+
myPerson.yodel(); // Logs "Yodelay hee hoo!"
|
73
75
|
|
74
76
|
Neo.applyClassConfig(Human);
|
75
77
|
</pre>
|
@@ -1,7 +1,7 @@
|
|
1
1
|
The purpose of this tutorial is to let you see the structure of a Neo.mjs workspace,
|
2
|
-
and the
|
2
|
+
and the structure of an application.
|
3
3
|
|
4
|
-
If you
|
4
|
+
If you wish, you can create a workspace for yourself by running `npx neo-app` workspace.
|
5
5
|
|
6
6
|
<img src="https://raw.githubusercontent.com/neomjs/pages/main/resources/images/apps/learnneo/NeoWorkspace.png" style="height: 400px;">
|
7
7
|
|
@@ -12,26 +12,26 @@ serve whose doc root is the workspace.
|
|
12
12
|
<img src="https://raw.githubusercontent.com/neomjs/pages/main/resources/images/apps/learnneo/ServerRoot.png" style="height: 400px;">
|
13
13
|
|
14
14
|
If you drill down into the `src` directory you'll see your applications.
|
15
|
-
|
15
|
+
The `docs` directory holds the Neo.mjs API docs.
|
16
16
|
|
17
17
|
In order to discuss the structure of an app, we'll create a simple starter
|
18
|
-
app
|
18
|
+
app vis this script, run from the workspace. The script prompts for various
|
19
|
+
application settings.
|
19
20
|
|
20
21
|
`npm run create-app-empty`
|
21
22
|
|
22
|
-
At the first prompt, name the app `Foo`, and accept the default for everything else.
|
23
|
+
At the first prompt, we'll name the app `Foo`, and accept the default for everything else.
|
23
24
|
The script creates an application structured as follows.
|
24
25
|
|
25
26
|
<img src="https://raw.githubusercontent.com/neomjs/pages/main/resources/images/apps/learnneo/FooFolder.png" style="height: 400px;">
|
26
27
|
|
27
28
|
These files are part of the typical structure of a Neo.mjs application. The files `index.html`, `app.mjs`, `neo-config.json`, `view/Viewport.mjs` are rarely modified.
|
28
29
|
You will, however, edit the main container, and its associated "controller" and "model",
|
29
|
-
as well as create new views,
|
30
|
+
as well as create new views classes, their controllers, and other application logic.
|
30
31
|
|
31
32
|
Now let's look at a source file. This is the contents of `MainView.mjs`.
|
32
33
|
|
33
|
-
<pre>
|
34
|
-
<code class="javascript">
|
34
|
+
<pre data-javascript>
|
35
35
|
import Base from '../../../node_modules/neo.mjs/src/container/Base.mjs';
|
36
36
|
import Controller from './MainViewController.mjs';
|
37
37
|
import ViewModel from './MainViewModel.mjs';
|
@@ -51,7 +51,6 @@ class MainView extends Base {
|
|
51
51
|
Neo.applyClassConfig(MainView);
|
52
52
|
|
53
53
|
export default MainView;
|
54
|
-
</code>
|
55
54
|
</pre>
|
56
55
|
|
57
56
|
Neo.mjs views are composed of components. A component can be a "container", which means it
|
@@ -70,8 +69,7 @@ you see how a component is configured let's put a button in the container.
|
|
70
69
|
First, we need to import the class that defines buttons. Then we'll describe the new button in the
|
71
70
|
`items:[].`
|
72
71
|
|
73
|
-
<pre>
|
74
|
-
<code class="javascript">
|
72
|
+
<pre data-javascript>
|
75
73
|
import Base from '../../../node_modules/neo.mjs/src/container/Base.mjs';
|
76
74
|
import Controller from './MainViewController.mjs';
|
77
75
|
import ViewModel from './MainViewModel.mjs';
|
@@ -95,27 +93,25 @@ class MainView extends Base {
|
|
95
93
|
Neo.applyClassConfig(MainView);
|
96
94
|
|
97
95
|
export default MainView;
|
98
|
-
</code>
|
99
96
|
</pre>
|
100
97
|
|
101
|
-
Note the entry in
|
102
|
-
item in our container. In Neo.mjs terms we're _configuring_ the button. Neo.mjs is
|
103
|
-
which components and objects are
|
104
|
-
what we want, but not how it's done.
|
105
|
-
isn't important here in the container. A non-declarative approach would be
|
106
|
-
where you might way "I want a <button> HTML element with its innerHTML set to some
|
98
|
+
Note the entry in `items:[]`. That's a description of the button that'll be created as the single
|
99
|
+
item in our container. In Neo.mjs terms we're _configuring_ the button. Neo.mjs is a declarative framework,
|
100
|
+
in which components and objects are described. It's an abstraction. In other words, the code describes
|
101
|
+
what we want, but not how it's done. In the code above, we want our container to have one item — a button
|
102
|
+
with some text. _How_ that's done isn't important here in the container. A non-declarative approach would be
|
103
|
+
more focused on _how_, where you might way "I want a <button> HTML element with its innerHTML set to some
|
104
|
+
value."
|
107
105
|
|
108
106
|
In another topic you'll learn about the Neo.mjs config system and declaratively describing
|
109
107
|
views, controllers, and other things.
|
110
108
|
|
111
|
-
If you run the
|
109
|
+
If you run the app you'll see one huge button. That's because the container is configured to
|
112
110
|
use the "fit" layout, which means the container is designed to hold one and only one component,
|
113
111
|
and that component will take up all available space. We could get a more normal looking button
|
114
112
|
by changing the layout.
|
115
113
|
|
116
|
-
`layout: {
|
117
|
-
|
118
|
-
Change that line and look at the running application.
|
114
|
+
`layout: {ntype:'vbox', align:'start},`
|
119
115
|
|
120
116
|
Neo.mjs has scores of component classes.
|
121
117
|
You can extend them to create your own reusable components and sets of components.
|
@@ -0,0 +1,31 @@
|
|
1
|
+
<pre data-javascript>
|
2
|
+
import Base from '../../../node_modules/neo.mjs/src/core/Base.mjs';
|
3
|
+
|
4
|
+
class Mammal extends Base {
|
5
|
+
static config = {
|
6
|
+
className: 'Simple.example.Mammal'
|
7
|
+
}
|
8
|
+
}
|
9
|
+
|
10
|
+
const myMammal = Neo.create(Mammal);
|
11
|
+
|
12
|
+
Neo.applyClassConfig(Mammal); // Where Neo.mjs initializes the class config.
|
13
|
+
export default Mammal; // Makes the class available elsewhere.
|
14
|
+
</pre>
|
15
|
+
|
16
|
+
|
17
|
+
|
18
|
+
<pre data-neo>
|
19
|
+
import Base from '../../../node_modules/neo.mjs/src/core/Base.mjs';
|
20
|
+
|
21
|
+
class Mammal extends Base {
|
22
|
+
static config = {
|
23
|
+
className: 'Simple.example.Mammal'
|
24
|
+
}
|
25
|
+
}
|
26
|
+
|
27
|
+
const myMammal = Neo.create(Mammal);
|
28
|
+
|
29
|
+
Neo.applyClassConfig(Mammal); // Where Neo.mjs initializes the class config.
|
30
|
+
export default Mammal; // Makes the class available elsewhere.
|
31
|
+
</pre>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
Let's go through the steps of creating a main thread addon.
|
2
|
+
|
3
|
+
Let's say we needed to show a code editor. There are a lot of libraries
|
4
|
+
for this, such as Ace (<a href="https://ace.c9.io/" target="_blank">ace.c9.io</a>).
|
5
|
+
From a coding perspective, these editors have a simple API: a setter
|
6
|
+
to specify the string being edited, a getter to read the string, and
|
7
|
+
a change event fired as the user types.
|
8
|
+
|
9
|
+
Here's what we need to do:
|
10
|
+
- Define a main thread addon and its API
|
11
|
+
- Define a component wrapper
|
12
|
+
|
13
|
+
### Define the Main Thread Addon
|
14
|
+
|
15
|
+
### Define the component wrapper
|
@@ -0,0 +1,46 @@
|
|
1
|
+
Neo.mjs is multi-threaded. There are app worker threads
|
2
|
+
that handle data access, application logic,
|
3
|
+
and keeping track of DOM updates. Practically all your
|
4
|
+
application logic is run in parallel in these threads.
|
5
|
+
However, anything that needs to actually reference or update
|
6
|
+
the DOM, or use the `window` object, must be done in the main
|
7
|
+
application thread.
|
8
|
+
|
9
|
+
That's the purpose of main thread addons. These are classes whose
|
10
|
+
methods can be accessed from other web workers, but are
|
11
|
+
actually executed in the main thread.
|
12
|
+
|
13
|
+
For example, what if you needed to read the browser's
|
14
|
+
URL? That information is in `window.location`.
|
15
|
+
But `window` is a main thread variable! To access that
|
16
|
+
from a web-worker our code has to say "hey main thread,
|
17
|
+
please return a specified `window` property." Neo.mjs
|
18
|
+
lets you do that via `Neo.Main.getByPath()`. For
|
19
|
+
example, the following statement logs the URL query string.
|
20
|
+
|
21
|
+
|
22
|
+
<pre data-javascript>
|
23
|
+
Neo.Main.getByPath('window.location.search')
|
24
|
+
.then(value=>console.log(value)); // Logs the search string
|
25
|
+
</pre>
|
26
|
+
|
27
|
+
`Neo.Main` has some simple methods for accessing the
|
28
|
+
main thread, but for something with a non-trivial API
|
29
|
+
you'd use a _main thread addon_.
|
30
|
+
|
31
|
+
Google Maps is a good example of this. In Neo.mjs, most
|
32
|
+
views are responsible for updating their own vdom, but
|
33
|
+
the responsibility for rendering maps and markers is handled
|
34
|
+
by Google Maps itself — we _ask_ Google Maps to do
|
35
|
+
certain things via the Google Maps API. Therefore, in Neo.mjs,
|
36
|
+
Google Maps is implemented as a main thread addon which
|
37
|
+
loads the libraries and exposes whatever methods we'll need
|
38
|
+
to run from the other Neo.mjs threads. In addition, in a
|
39
|
+
Neo.mjs application we want to use Google maps like any other
|
40
|
+
component, so Neo.mjs also provides a component wrapper. In
|
41
|
+
summary:
|
42
|
+
- The main-thread addon contains the code run in the main thread,
|
43
|
+
and exposes what methods can be run by other web-workders,
|
44
|
+
and
|
45
|
+
- The component wrapper lets you use it like any other component,
|
46
|
+
internally calling the main thread methods as needed.
|
@@ -17,16 +17,13 @@ and information is lost.
|
|
17
17
|
|
18
18
|
<br>
|
19
19
|
|
20
|
-
To show highlighted source code use
|
20
|
+
To show highlighted Neo.mjs source code use
|
21
21
|
<pre>
|
22
|
-
<pre>
|
23
|
-
<code class="javascript">
|
22
|
+
<pre data-javascript>
|
24
23
|
// Source code goes here
|
25
|
-
</code>
|
26
24
|
</pre>
|
27
25
|
|
28
|
-
<pre>
|
29
|
-
<code class="javascript">
|
26
|
+
<pre data-javascript>
|
30
27
|
import Base from '../../../node_modules/neo.mjs/src/core/Base.mjs';
|
31
28
|
|
32
29
|
class Mammal extends Base {
|
@@ -34,7 +31,6 @@ class Mammal extends Base {
|
|
34
31
|
className: 'Simple.example.Mammal'
|
35
32
|
}
|
36
33
|
}
|
37
|
-
</code>
|
38
34
|
</pre>
|
39
35
|
|
40
36
|
For short in-line statements of code use <code> or backticks.
|
@@ -7,124 +7,188 @@
|
|
7
7
|
"name": "Why Neo.mjs? "
|
8
8
|
},
|
9
9
|
{
|
10
|
-
"id": "
|
10
|
+
"id": "GettingStarted",
|
11
11
|
"parentId": null,
|
12
12
|
"isLeaf": false,
|
13
13
|
"name": "Getting Started"
|
14
14
|
},
|
15
15
|
{
|
16
|
-
"id": "
|
17
|
-
"parentId":
|
18
|
-
"isLeaf":
|
19
|
-
"name": "
|
16
|
+
"id": "Setup",
|
17
|
+
"parentId": "GettingStarted",
|
18
|
+
"isLeaf": true,
|
19
|
+
"name": "Setup"
|
20
20
|
},
|
21
21
|
{
|
22
22
|
"id": "2023-10-14T19-25-08-153Z",
|
23
|
-
"parentId": "
|
23
|
+
"parentId": "GettingStarted",
|
24
24
|
"isLeaf": true,
|
25
|
-
"name": "
|
25
|
+
"name": "Workspaces and Applications"
|
26
26
|
},
|
27
27
|
{
|
28
|
-
"id": "
|
29
|
-
"parentId":
|
30
|
-
"isLeaf":
|
31
|
-
"name": "
|
28
|
+
"id": "DescribingTheUI",
|
29
|
+
"parentId": "GettingStarted",
|
30
|
+
"isLeaf": true,
|
31
|
+
"name": "Describing a View"
|
32
32
|
},
|
33
33
|
{
|
34
|
-
"id": "
|
35
|
-
"parentId": "
|
36
|
-
"isLeaf":
|
37
|
-
"name": "
|
34
|
+
"id": "Events",
|
35
|
+
"parentId": "GettingStarted",
|
36
|
+
"isLeaf": true,
|
37
|
+
"name": "Events"
|
38
38
|
},
|
39
39
|
{
|
40
|
-
"id": "
|
41
|
-
"parentId": "
|
40
|
+
"id": "ComponentState",
|
41
|
+
"parentId": "GettingStarted",
|
42
42
|
"isLeaf": true,
|
43
|
-
"name": "
|
43
|
+
"name": "Updating View State"
|
44
44
|
},
|
45
45
|
{
|
46
|
-
"id": "
|
47
|
-
"parentId": "
|
46
|
+
"id": "Extending",
|
47
|
+
"parentId": "GettingStarted",
|
48
48
|
"isLeaf": true,
|
49
|
-
"name": "
|
49
|
+
"name": "Extending Components"
|
50
50
|
},
|
51
51
|
{
|
52
|
-
"id": "
|
53
|
-
"parentId": "
|
52
|
+
"id": "ExtendingAddingProperties",
|
53
|
+
"parentId": "GettingStarted",
|
54
54
|
"isLeaf": true,
|
55
|
-
"name": "
|
55
|
+
"name": "Adding Properties"
|
56
56
|
},
|
57
57
|
{
|
58
|
-
"id": "
|
59
|
-
"parentId": "
|
58
|
+
"id": "ComponentModels",
|
59
|
+
"parentId": "GettingStarted",
|
60
60
|
"isLeaf": true,
|
61
|
-
"name": "
|
61
|
+
"name": "Component Models and Binding"
|
62
62
|
},
|
63
63
|
{
|
64
|
-
"id": "
|
65
|
-
"parentId": "
|
64
|
+
"id": "WhatAboutHTML",
|
65
|
+
"parentId": "GettingStarted",
|
66
66
|
"isLeaf": true,
|
67
|
-
"name": "
|
67
|
+
"name": "What about HTML tags?"
|
68
68
|
},
|
69
69
|
{
|
70
|
-
"id": "
|
71
|
-
"parentId":
|
70
|
+
"id": "Tutorials",
|
71
|
+
"parentId": null,
|
72
|
+
"isLeaf": false,
|
73
|
+
"expanded": false,
|
74
|
+
"name": "Tutorials"
|
75
|
+
},
|
76
|
+
{
|
77
|
+
"id": "RSP",
|
78
|
+
"parentId": "Tutorials",
|
72
79
|
"isLeaf": true,
|
73
|
-
"
|
80
|
+
"expanded": false,
|
81
|
+
"name": "Rock Scissors Paper"
|
74
82
|
},
|
75
83
|
{
|
76
|
-
"id": "
|
84
|
+
"id": "Earthquakes",
|
85
|
+
"parentId": "Tutorials",
|
86
|
+
"isLeaf": false,
|
87
|
+
"expanded": false,
|
88
|
+
"name": "Earthquakes"
|
89
|
+
},
|
90
|
+
{
|
91
|
+
"id": "InDepth",
|
77
92
|
"parentId": null,
|
78
93
|
"isLeaf": false,
|
94
|
+
"expanded": false,
|
95
|
+
"name": "Cookbook"
|
96
|
+
},
|
97
|
+
{
|
98
|
+
"id": "Config",
|
99
|
+
"parentId": "InDepth",
|
100
|
+
"isLeaf": false,
|
79
101
|
"name": "Config"
|
80
102
|
},
|
81
103
|
{
|
82
|
-
"id": "
|
83
|
-
"parentId":
|
104
|
+
"id": "InstanceLifecycle",
|
105
|
+
"parentId": "InDepth",
|
84
106
|
"isLeaf": false,
|
85
|
-
"name": "
|
107
|
+
"name": "Instance Lifecycle"
|
86
108
|
},
|
87
109
|
{
|
88
|
-
"id": "
|
89
|
-
"parentId":
|
110
|
+
"id": "Forms",
|
111
|
+
"parentId": "InDepth",
|
90
112
|
"isLeaf": false,
|
91
113
|
"name": "User Input (Forms)"
|
92
114
|
},
|
93
115
|
{
|
94
|
-
"id": "
|
95
|
-
"parentId":
|
116
|
+
"id": "CustomComponents",
|
117
|
+
"parentId": "InDepth",
|
96
118
|
"isLeaf": false,
|
97
|
-
"name": "
|
119
|
+
"name": "Custom Components"
|
98
120
|
},
|
99
121
|
{
|
100
|
-
"id": "
|
101
|
-
"parentId":
|
122
|
+
"id": "Tables",
|
123
|
+
"parentId": "InDepth",
|
102
124
|
"isLeaf": false,
|
103
|
-
"name": "
|
125
|
+
"name": "Tables (Stores)"
|
104
126
|
},
|
105
127
|
{
|
106
|
-
"id": "
|
107
|
-
"parentId":
|
128
|
+
"id": "InDepthComponentModels",
|
129
|
+
"parentId": "InDepth",
|
108
130
|
"isLeaf": false,
|
109
|
-
"name": "
|
131
|
+
"name": "Shared Binable Data (Component Models)"
|
110
132
|
},
|
111
133
|
{
|
112
|
-
"id": "
|
113
|
-
"parentId":
|
134
|
+
"id": "MultiWindow",
|
135
|
+
"parentId": "InDepth",
|
114
136
|
"isLeaf": false,
|
115
|
-
"name": "
|
137
|
+
"name": "Multi-Window Applicaitons"
|
116
138
|
},
|
117
139
|
{
|
118
|
-
"id": "
|
119
|
-
"parentId":
|
140
|
+
"id": "MainThreadAddons",
|
141
|
+
"parentId": "InDepth",
|
120
142
|
"isLeaf": false,
|
121
|
-
"name": "
|
143
|
+
"name": "Main Thread Addons"
|
122
144
|
},
|
123
145
|
{
|
124
|
-
"id": "
|
146
|
+
"id": "mainThreadAddonIntro",
|
147
|
+
"parentId": "MainThreadAddons",
|
148
|
+
"isLeaf": true,
|
149
|
+
"name": "Introduction"
|
150
|
+
},
|
151
|
+
{
|
152
|
+
"id": "mainThreadAddonExample",
|
153
|
+
"parentId": "MainThreadAddons",
|
154
|
+
"isLeaf": true,
|
155
|
+
"name": "Example"
|
156
|
+
},
|
157
|
+
{
|
158
|
+
"id": "Mixins",
|
159
|
+
"parentId": "InDepth",
|
160
|
+
"isLeaf": false,
|
161
|
+
"name": "Mixins"
|
162
|
+
},
|
163
|
+
{
|
164
|
+
"id": "JavaScriptClasses",
|
125
165
|
"parentId": null,
|
126
166
|
"isLeaf": false,
|
127
|
-
"name": "
|
167
|
+
"name": "JavaScript Classes"
|
168
|
+
},
|
169
|
+
{
|
170
|
+
"id": "2023-10-07T19-18-28-517Z",
|
171
|
+
"parentId": "JavaScriptClasses",
|
172
|
+
"isLeaf": true,
|
173
|
+
"name": "Classes, Properties, and Methods"
|
174
|
+
},
|
175
|
+
{
|
176
|
+
"id": "2023-10-08T20-20-07-934Z",
|
177
|
+
"parentId": "JavaScriptClasses",
|
178
|
+
"isLeaf": true,
|
179
|
+
"name": "Overriding Methods"
|
180
|
+
},
|
181
|
+
{
|
182
|
+
"id": "2023-10-08T20-20-37-336Z",
|
183
|
+
"parentId": "Class Basics",
|
184
|
+
"isLeaf": true,
|
185
|
+
"name": "Other JavaScript Class Features"
|
186
|
+
},
|
187
|
+
{
|
188
|
+
"id": "2023-10-08T21-58-25-809Z",
|
189
|
+
"parentId": "JavaScriptClasses",
|
190
|
+
"isLeaf": true,
|
191
|
+
"name": "Super"
|
128
192
|
},
|
129
193
|
{
|
130
194
|
"id": "2023-10-31T13-59-37-550Z",
|
@@ -142,6 +206,12 @@
|
|
142
206
|
"parentId": "appendix",
|
143
207
|
"name": "Stylesheet",
|
144
208
|
"isLeaf": true
|
209
|
+
},
|
210
|
+
{
|
211
|
+
"id": "TestLivePreview",
|
212
|
+
"parentId": "appendix",
|
213
|
+
"name": "Test",
|
214
|
+
"isLeaf": true
|
145
215
|
}
|
146
216
|
]
|
147
217
|
}
|
@@ -0,0 +1 @@
|
|
1
|
+
<svg width="98" height="96" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M48.854 0C21.839 0 0 22 0 49.217c0 21.756 13.993 40.172 33.405 46.69 2.427.49 3.316-1.059 3.316-2.362 0-1.141-.08-5.052-.08-9.127-13.59 2.934-16.42-5.867-16.42-5.867-2.184-5.704-5.42-7.17-5.42-7.17-4.448-3.015.324-3.015.324-3.015 4.934.326 7.523 5.052 7.523 5.052 4.367 7.496 11.404 5.378 14.235 4.074.404-3.178 1.699-5.378 3.074-6.6-10.839-1.141-22.243-5.378-22.243-24.283 0-5.378 1.94-9.778 5.014-13.2-.485-1.222-2.184-6.275.486-13.038 0 0 4.125-1.304 13.426 5.052a46.97 46.97 0 0 1 12.214-1.63c4.125 0 8.33.571 12.213 1.63 9.302-6.356 13.427-5.052 13.427-5.052 2.67 6.763.97 11.816.485 13.038 3.155 3.422 5.015 7.822 5.015 13.2 0 18.905-11.404 23.06-22.324 24.283 1.78 1.548 3.316 4.481 3.316 9.126 0 6.6-.08 11.897-.08 13.526 0 1.304.89 2.853 3.316 2.364 19.412-6.52 33.405-24.935 33.405-46.691C97.707 22 75.788 0 48.854 0z" fill="#24292f"/></svg>
|
@@ -0,0 +1,17 @@
|
|
1
|
+
<svg width="123" height="124" viewBox="0 0 123 124" fill="none" xmlns="http://www.w3.org/2000/svg">
|
2
|
+
<g clip-path="url(#clip0_460_4276)">
|
3
|
+
<path d="M25.8 78.1988C25.8 85.2988 20 91.0988 12.9 91.0988C5.8 91.0988 0 85.2988 0 78.1988C0 71.0988 5.8 65.2988 12.9 65.2988H25.8V78.1988Z" fill="black"/>
|
4
|
+
<path d="M32.3008 78.1988C32.3008 71.0988 38.1008 65.2988 45.2008 65.2988C52.3008 65.2988 58.1008 71.0988 58.1008 78.1988V110.499C58.1008 117.599 52.3008 123.399 45.2008 123.399C38.1008 123.399 32.3008 117.599 32.3008 110.499V78.1988Z" fill="black"/>
|
5
|
+
<path d="M45.2008 26.3996C38.1008 26.3996 32.3008 20.5996 32.3008 13.4996C32.3008 6.39961 38.1008 0.599609 45.2008 0.599609C52.3008 0.599609 58.1008 6.39961 58.1008 13.4996V26.3996H45.2008Z" fill="black"/>
|
6
|
+
<path d="M45.2 32.9004C52.3 32.9004 58.1 38.7004 58.1 45.8004C58.1 52.9004 52.3 58.7004 45.2 58.7004H12.9C5.8 58.7004 0 52.9004 0 45.8004C0 38.7004 5.8 32.9004 12.9 32.9004H45.2Z" fill="black"/>
|
7
|
+
<path d="M97 45.8004C97 38.7004 102.8 32.9004 109.9 32.9004C117 32.9004 122.8 38.7004 122.8 45.8004C122.8 52.9004 117 58.7004 109.9 58.7004H97V45.8004Z" fill="black"/>
|
8
|
+
<path d="M90.4992 45.7996C90.4992 52.8996 84.6992 58.6996 77.5992 58.6996C70.4992 58.6996 64.6992 52.8996 64.6992 45.7996V13.4996C64.6992 6.39961 70.4992 0.599609 77.5992 0.599609C84.6992 0.599609 90.4992 6.39961 90.4992 13.4996V45.7996Z" fill="black"/>
|
9
|
+
<path d="M77.5992 97.5996C84.6992 97.5996 90.4992 103.4 90.4992 110.5C90.4992 117.6 84.6992 123.4 77.5992 123.4C70.4992 123.4 64.6992 117.6 64.6992 110.5V97.5996H77.5992Z" fill="black"/>
|
10
|
+
<path d="M77.5992 91.0988C70.4992 91.0988 64.6992 85.2988 64.6992 78.1988C64.6992 71.0988 70.4992 65.2988 77.5992 65.2988H109.899C116.999 65.2988 122.799 71.0988 122.799 78.1988C122.799 85.2988 116.999 91.0988 109.899 91.0988H77.5992Z" fill="black"/>
|
11
|
+
</g>
|
12
|
+
<defs>
|
13
|
+
<clipPath id="clip0_460_4276">
|
14
|
+
<rect width="123" height="124" fill="white"/>
|
15
|
+
</clipPath>
|
16
|
+
</defs>
|
17
|
+
</svg>
|
@@ -54,7 +54,11 @@
|
|
54
54
|
cursor: pointer;
|
55
55
|
|
56
56
|
&:hover {
|
57
|
-
background-color: var(--list-item-background-color-hover)
|
57
|
+
background-color: var(--list-item-background-color-hover);
|
58
|
+
color : var(--list-container-list-color);
|
59
|
+
}
|
60
|
+
&:active {
|
61
|
+
background-color: var(--list-item-background-color-active);
|
58
62
|
color : var(--list-container-list-color);
|
59
63
|
}
|
60
64
|
}
|
@@ -9,7 +9,7 @@
|
|
9
9
|
@import "../../../resources/scss/theme-neo-light/design-tokens/_all.scss";
|
10
10
|
|
11
11
|
h1 {
|
12
|
-
color : var(--sem-color-fg-contrast);
|
12
|
+
color : var(--sem-color-fg-neutral-contrast);
|
13
13
|
font-family : var(--core-fontfamily-sans);
|
14
14
|
font-size : var(--core-fontsize-h1);
|
15
15
|
font-weight : var(--core-fontweight-semibold);
|
@@ -18,7 +18,7 @@ h1 {
|
|
18
18
|
}
|
19
19
|
|
20
20
|
h2 {
|
21
|
-
color : var(--
|
21
|
+
color : var(--sem-color-fg-neutral-contrast);
|
22
22
|
font-family : var(--core-fontfamily-sans);
|
23
23
|
font-size : var(--core-fontsize-h2);
|
24
24
|
font-weight : var(--core-fontweight-semibold);
|
@@ -27,7 +27,7 @@ h2 {
|
|
27
27
|
}
|
28
28
|
|
29
29
|
p {
|
30
|
-
color : var(--
|
30
|
+
color : var(--sem-color-fg-neutral-contrast);
|
31
31
|
font-family : var(--core-fontfamily-sans);
|
32
32
|
font-size : var(--core-fontsize-body);
|
33
33
|
font-weight : var(--core-fontweight-regular);
|
@@ -35,14 +35,16 @@ p {
|
|
35
35
|
}
|
36
36
|
|
37
37
|
code {
|
38
|
-
background-color: #
|
38
|
+
background-color: #F0F2F0;
|
39
|
+
border : 1px solid var(--sem-color-border-subtle);
|
39
40
|
border-radius : 2px;
|
40
|
-
color : var(--
|
41
|
+
color : var(--sem-color-fg-neutral-contrast);
|
41
42
|
font-family : var(--core-fontfamily-mono);
|
42
43
|
font-size : var(--core-fontsize-body);
|
43
44
|
font-weight : var(--core-fontweight-regular);
|
44
45
|
line-height : var(--core-lineheight-headline);
|
45
46
|
padding : 2px 0.3em;
|
47
|
+
font-size : 16px;
|
46
48
|
}
|
47
49
|
|
48
50
|
mark {
|