neo.mjs 8.21.2 → 8.23.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 (39) hide show
  1. package/.github/CODEBASE_OVERVIEW.md +0 -1
  2. package/.github/CODE_OF_CONDUCT.md +0 -1
  3. package/.github/CONCEPT.md +0 -1
  4. package/.github/GETTING_STARTED.md +0 -1
  5. package/.github/NEOMJS_HISTORY.md +0 -1
  6. package/.github/STORY.md +0 -1
  7. package/.github/VISION.md +2 -126
  8. package/BACKERS.md +0 -1
  9. package/CONTRIBUTING.md +0 -1
  10. package/LICENSE +1 -1
  11. package/README.md +5 -1
  12. package/apps/ServiceWorker.mjs +2 -2
  13. package/apps/portal/index.html +1 -1
  14. package/apps/portal/view/about/Container.mjs +1 -1
  15. package/apps/portal/view/home/FooterContainer.mjs +1 -1
  16. package/apps/portal/view/services/Component.mjs +0 -9
  17. package/examples/ConfigurationViewport.mjs +21 -8
  18. package/examples/ServiceWorker.mjs +2 -2
  19. package/examples/component/magicmovetext/MainContainer.mjs +90 -0
  20. package/examples/component/magicmovetext/app.mjs +6 -0
  21. package/examples/component/magicmovetext/index.html +11 -0
  22. package/examples/component/magicmovetext/neo-config.json +6 -0
  23. package/examples/grid/bigData/ControlsContainer.mjs +142 -84
  24. package/package.json +9 -7
  25. package/resources/scss/src/component/MagicMoveText.scss +45 -0
  26. package/resources/scss/src/examples/ConfigurationViewport.scss +27 -0
  27. package/resources/scss/src/examples/grid/bigData/ControlsContainer.scss +10 -1
  28. package/src/DefaultConfig.mjs +2 -2
  29. package/src/component/MagicMoveText.mjs +306 -0
  30. package/src/data/Store.mjs +12 -0
  31. package/src/grid/Container.mjs +1 -1
  32. package/src/grid/View.mjs +183 -67
  33. package/src/grid/header/Toolbar.mjs +1 -1
  34. package/src/main/DomAccess.mjs +18 -24
  35. package/src/selection/grid/CellModel.mjs +7 -3
  36. package/src/selection/grid/RowModel.mjs +2 -0
  37. package/src/selection/grid/_export.mjs +8 -0
  38. package/src/util/ClassSystem.mjs +4 -4
  39. package/resources/scss/src/examples/ConfigurationPanel.scss +0 -25
@@ -50,4 +50,3 @@ Build with :heart: in Germany
50
50
  <br>
51
51
  <br>
52
52
  Copyright (c) 2015 - today, <a href="https://www.linkedin.com/in/tobiasuhlig/">Tobias Uhlig</a>
53
- & <a href="https://www.linkedin.com/in/richwaters/">Rich Waters</a>
@@ -85,4 +85,3 @@ https://www.contributor-covenant.org/faq. Translations are available at https://
85
85
 
86
86
  <br><br>
87
87
  Copyright (c) 2015 - today, <a href="https://www.linkedin.com/in/tobiasuhlig/">Tobias Uhlig</a>
88
- & <a href="https://www.linkedin.com/in/richwaters/">Rich Waters</a>
@@ -461,4 +461,3 @@ items: [{
461
461
 
462
462
  <br><br>
463
463
  Copyright (c) 2015 - today, <a href="https://www.linkedin.com/in/tobiasuhlig/">Tobias Uhlig</a>
464
- & <a href="https://www.linkedin.com/in/richwaters/">Rich Waters</a>
@@ -53,4 +53,3 @@ These versions also work in Firefox & Safari
53
53
 
54
54
  <br><br>
55
55
  Copyright (c) 2015 - today, <a href="https://www.linkedin.com/in/tobiasuhlig/">Tobias Uhlig</a>
56
- & <a href="https://www.linkedin.com/in/richwaters/">Rich Waters</a>
@@ -26,4 +26,3 @@ Tobi
26
26
 
27
27
  <br><br>
28
28
  Copyright (c) 2015 - today, <a href="https://www.linkedin.com/in/tobiasuhlig/">Tobias Uhlig</a>
29
- & <a href="https://www.linkedin.com/in/richwaters/">Rich Waters</a>
package/.github/STORY.md CHANGED
@@ -73,4 +73,3 @@ For more input on what you can do using neo.mjs, please take a look at the guide
73
73
 
74
74
  <br><br>
75
75
  Copyright (c) 2015 - today, <a href="https://www.linkedin.com/in/tobiasuhlig/">Tobias Uhlig</a>
76
- & <a href="https://www.linkedin.com/in/richwaters/">Rich Waters</a>
package/.github/VISION.md CHANGED
@@ -1,142 +1,18 @@
1
1
  # The neo.mjs vision
2
2
 
3
- At this point I (Tobias) can not commit to adding dates to the planned items.
4
- After investing 1.5 years of my full and unpaid working time I am in need to make up on the financial side of things.
3
+ At this point I (Tobias) can not commit to adding dates to planned items.
4
+ After investing 5 years of my full and unpaid working time I am in need to make up on the financial side of things.
5
5
  So as long as the project is not properly funded, I can only afford to continue working on it in my spare time.
6
6
 
7
7
  To speed up the current development there are two options:
8
8
  1. Help promoting neo.mjs or jump in as a contributor (see <a href="../CONTRIBUTING.md">Contributing</a>)
9
9
  2. Jump in as a sponsor to ensure I can spend more time on the neo.mjs coding side (see <a href="../BACKERS.md">Sponsors & Backers</a>)
10
10
 
11
- The following items are ***not*** ordered by priority. In case certain topics are important to you, please use the issues
12
- tracker to create an awareness (like / comment on current tickets or create new ones as needed).
13
11
 
14
12
  Thanks for your support!
15
13
 
16
- * Real World app version 2
17
- 1. Version 1 is definitely worth a look to see how to craft custom components and connect to an API,
18
- but it is not the best starting point to see how to craft an neo.mjs app. Since the requirement was to use a given
19
- Bootstrap theme, only component.Base is in use (since more advanced components require a neo.mjs CSS theme).
20
- At this point I recommend to take a look at the Docs app to learn how to craft an neo.mjs app.
21
- 2. Version 2 is intended to fill this gap and will not use the Bootstrap based theme.
22
- 3. This allows us to use the full range of neo.mjs components (Toolbar, Button, List, TabContainer, Gallery, Helix, etc.)
23
- 4. Once this app is finished, it will be the perfect starting point to learn how to use neo.mjs,
24
- so right now this item has the highest priority for me.
25
- 5. The RW2 app requires a 3rd neo.mjs theme => based on the conduit styles
26
- 6. Add the ability to switch themes inside the app
27
- * Drag & Drop (see <a href="https://github.com/neomjs/neo/issues/16">#16</a>)
28
- 1. This ticket is definitely an epic, since DD operations happen inside the main thread, while the handlers will
29
- live inside the app thread.
30
- 2. Once DD is in place, we can create a real slider component (see <a href="https://github.com/neomjs/neo/issues/18">#18</a>)
31
- 3. We can create Dialogs (Windows), which can get moved and resized (see <a href="https://github.com/neomjs/neo/issues/15">#15</a>)
32
- 4. We can create sortable tabs (see <a href="https://github.com/neomjs/neo/issues/23">#23</a>)
33
- * Docs App version 2
34
- 1. I am not planning to re-create the existing app, but enhance it with more features:
35
- 2. Support for showing mixins inside the class views (<a href="https://github.com/neomjs/neo/issues/99">#99</a>)
36
- 3. Add tooltips (especially for the Configs, Methods & Events buttons => navigation shortcut)
37
- 4. Expandable class member items (add the ability to expand or collapse items to make the list shorter)
38
- 5. Writing more guides
39
- 6. Enhance the example views:
40
- 1. The example components should get shown inside a tabContainer: first tab containing the component,
41
- second tab a source code view of the example
42
- 2. It should be possible to export the current configs (e.g. 3rd tab, configs as JSON)
43
- 3. The configuration container should be collapsible (using a sliding animation)
44
- 4. Add a second tab to the config area to show theme css vars and make them changeable
45
- 7. class member inheritance: when overriding a config or assigning a value to a parent one, the parent config
46
- should get listed (including its initial value)
47
- * Build Scripts
48
- 1. The current scripts work fine inside the neo repository. Since neo.mjs can now get used as a node module,
49
- enhancements feel necessary.
50
- 1. An npx create-app script (see <a href="https://github.com/neomjs/neo/issues/90">#90</a>)
51
- 2. The build-my-apps scripts should work as well, when used outside of the repo (manually hacked this into the
52
- Real World app version 1)
53
- * Mobile Support
54
- 1. Add touch based events (swipe, long-tap, etc.) to the global domListeners
55
- 2. Split the current events into desktop & mobile and add a Neo.config to choose which ones to use
56
- 3. Use the events based on the browser feature detection
57
- 4. Create new components and adjust current ones to better work on mobile
58
- * Mobile Docs App
59
- 1. Create a new UI or make the current one responsive
60
- * Make the Data worker more meaningful
61
- 1. Right now, the data worker only executes the XHR requests
62
- 2. Rich originally planned to let stores live inside this thread, but this would create a lot more async logic inside
63
- the app thread, plus it does not make sense for stores with little data
64
- 3. What should be possible: for remote stores which need to parse the data getting back from an API, these transformations
65
- should happen inside the app thread (like a data reader)
66
- 4. Remote stores with local sorting: this sorting could happen inside the data worker as well
67
- * Data Package version 2
68
- 1. The collection class is already very powerful (needs some polishing though). For the first version of the data
69
- package, stores were extending collection.Base. Afterwards records were introduced (not instances of data.Model,
70
- but a super lightweight extension of a JS Object). At this point, stores should no longer extend a collection,
71
- but use one instance instead (e.g. a collection config).
72
- 2. More polishing of Sorters & Filters & add the ability for stores to sort & filter per remote (adding params to
73
- each request).
74
- 3. Enhance the API for stores: when using a collection, several methods need to get bound to the collection, but
75
- ensuring that data objects get transformed into records.
76
- 4. use data fields: each store should exactly use one instance of data.Model. Inside a model, you can define fields.
77
- Fields should either be a singleton or a class with static methods. We need to provide parsing methods, e.g. toString()
78
- for a field type "String".
79
- * Finish the implementation for Tooltips; Rectangle utility class (see <a href="https://github.com/neomjs/neo/issues/51">#51</a>)
80
- * Finish the implementation for form.field.Chip (see <a href="https://github.com/neomjs/neo/issues/31">#31</a>)
81
- * Create a coding style guide (see <a href="https://github.com/neomjs/neo/issues/93">#93</a>)
82
- * Virtual Dom Engine enhancements
83
- 1. Add a 2nd mode where ids do get ignored (e.g. for comparing content on fixed positions like grid rows)
84
- 2. Add an option to specify the the tree depth to compare (e.g. only the first level for containers)
85
- 3. Refactor vdom.Helper: createDeltas
86
- * Create a buffered Grid
87
- 1. So far I mostly focused on table.Container. Since tables are not good for buffering (too many layout reflows),
88
- it is time to pick up the grid.Container implementation again.
89
- 2. The grid.Container will use divs only. grids need a rowHeight config, since it has to be fixed for buffering.
90
- 3. Add 1-2 more rows as the visible area can show and adjust the content when scrolling (move the top row div to
91
- the bottom or vice versa)
92
- 4. when clicking on the scrollbar, adjust the full grid cell content
93
- 5. add column reordering via DD (relies on the DD implementation)
94
- 6. add cell-editing
95
- 7. add action columns
96
- 8. add buffering for horizontal scrolling as well
97
- * Create a Router
98
- * Enable neo.mjs to run in node
99
- 1. There are some uses of "self", which work fine inside the main thread & inside the worker scope, but not in node
100
- * neo.mjs based middle-ware (see <a href="https://github.com/neomjs/neo/issues/19">#19</a>)
101
- * Enhance the Siesta tests to run inside a node env
102
- * Write more tests (Epic!)
103
- * main.mixins.FeatureDetection
104
- 1. Add meaningful checks for relevant features
105
- * Create a Website for the neo.mjs project
106
- 1. Right now, only Online Examples are in place
107
- 2. The examples need to support mobile
108
- 3. Intro Texts are needed (see <a href="https://github.com/neomjs/neo/issues/7">#7</a>)
109
- 4. A Logo for neo.mjs is needed
110
- * Create a MarketPlace for User Extensions / Custom Components
111
- 1. for UX which don't fit into the framework repo
112
- 2. for custom themes
113
- 3. add the ability for developers / companies to sell their extensions vs a fee (similar to the apple app store)
114
- * Create a Chrome extension to make the debugging / working with neo.mjs more easy
115
- 1. see all created stores & their data
116
- 2. Access to the component manager
117
- 3. Ability to click on the screen and receive the closest neo.mjs component
118
- 4. Ability to see the full component tree of your app
119
- * Use SharedWorker(s)
120
- 1. Optional
121
- 2. Once Chrome supports using JS modules inside shared workers
122
- 3. This will allow us to create ***multi screen apps***
123
- 4. Imagine dragging a dialog outside of your browser tab and it appears in another one
124
-
125
- ***TL-BR***: This list is most likely not even complete.
126
- You don't need to be a genius in math to figure out that this is a massive amount of work.
127
- If I would create neo.mjs just for myself, there would be no Docs app, no Real World 1 or 2 app.
128
- I already put in a massive amount of time to enable you to use neo.mjs as well and I don't expect anyone to say thank
129
- you for doing this (although it is nice to hear :)).
130
-
131
- I would even be willing to continue this project on my own, but I would run bankrupt rather sooner than later without
132
- funding. So, assuming you know how the romantic idea of Open Source works, let me repeat the first part again:
133
-
134
- To speed up the current development there are two options:
135
- 1. Help promoting neo.mjs or jump in as a contributor (see <a href="../CONTRIBUTING.md">Contributing</a>)
136
- 2. Jump in as a sponsor to ensure I can spend more time on the neo.mjs coding side (see <a href="../BACKERS.md">Sponsors & Backers</a>)
137
14
 
138
15
  Best regards, Tobias
139
16
 
140
17
  <br><br>
141
18
  Copyright (c) 2015 - today, <a href="https://www.linkedin.com/in/tobiasuhlig/">Tobias Uhlig</a>
142
- & <a href="https://www.linkedin.com/in/richwaters/">Rich Waters</a>
package/BACKERS.md CHANGED
@@ -62,4 +62,3 @@ after signing a sponsor program to provide your company logo!
62
62
 
63
63
  <br><br>
64
64
  Copyright (c) 2015 - today, <a href="https://www.linkedin.com/in/tobiasuhlig/">Tobias Uhlig</a>
65
- & <a href="https://www.linkedin.com/in/richwaters/">Rich Waters</a>
package/CONTRIBUTING.md CHANGED
@@ -37,4 +37,3 @@ No worries, you don't need to be a guru, ninja or rockstar to support the projec
37
37
 
38
38
  <br><br>
39
39
  Copyright (c) 2015 - today, <a href="https://www.linkedin.com/in/tobiasuhlig/">Tobias Uhlig</a>
40
- & <a href="https://www.linkedin.com/in/richwaters/">Rich Waters</a>
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2015 - today, Tobias Uhlig & Rich Waters
3
+ Copyright (c) 2015 - today, Tobias Uhlig
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -21,6 +21,11 @@ without compilations. This makes debugging easier and reduces development costs.
21
21
  In case you care about scalability, extensibility or solid architectures, congratulations,
22
22
  you have found the right spot.
23
23
 
24
+ <p align="center">
25
+ <a href="https://youtu.be/pYfM28Pz6_0"><img height="316px" width="400px" src="https://raw.githubusercontent.com/neomjs/pages/master/resources_pub/images/neo33s.png"></a>
26
+ <a href="https://youtu.be/aEA5333WiWY"><img height="316px" width="400px" src="https://raw.githubusercontent.com/neomjs/pages/master/resources_pub/images/neo-movie.png"></a>
27
+ </p>
28
+
24
29
  ## Content
25
30
  1. <a href="#introduction">Introduction</a>
26
31
  2. <a href="#use-cases">Potential Use Cases</a>
@@ -90,4 +95,3 @@ All Blog Posts are listed here: <a href="https://neomjs.com/dist/production/apps
90
95
 
91
96
  </br></br>
92
97
  Copyright (c) 2015 - today, <a href="https://www.linkedin.com/in/tobiasuhlig/">Tobias Uhlig</a>
93
- & <a href="https://www.linkedin.com/in/richwaters/">Rich Waters</a>
@@ -20,9 +20,9 @@ class ServiceWorker extends ServiceBase {
20
20
  */
21
21
  singleton: true,
22
22
  /**
23
- * @member {String} version='8.21.2'
23
+ * @member {String} version='8.23.0'
24
24
  */
25
- version: '8.21.2'
25
+ version: '8.23.0'
26
26
  }
27
27
 
28
28
  /**
@@ -16,7 +16,7 @@
16
16
  "@type": "Organization",
17
17
  "name": "Neo.mjs"
18
18
  },
19
- "datePublished": "2025-02-12",
19
+ "datePublished": "2025-02-21",
20
20
  "publisher": {
21
21
  "@type": "Organization",
22
22
  "name": "Neo.mjs"
@@ -37,7 +37,7 @@ class Container extends Base {
37
37
  picture : 'rwaters.png',
38
38
  profileGitHub : 'https://github.com/rwaters',
39
39
  profileLinkedIn: 'https://www.linkedin.com/in/rwaters/',
40
- teamRole : 'Co-Founder & Core Team Member'
40
+ teamRole : 'Contributor'
41
41
  }, {
42
42
  module : MemberContainer,
43
43
  location : 'Germany',
@@ -107,7 +107,7 @@ class FooterContainer extends Container {
107
107
  }, {
108
108
  module: Component,
109
109
  cls : ['neo-version'],
110
- html : 'v8.21.2'
110
+ html : 'v8.23.0'
111
111
  }]
112
112
  }],
113
113
  /**
@@ -21,15 +21,6 @@ class Component extends BaseComponent {
21
21
  vdom:
22
22
  {cn: [
23
23
  {tag: 'h1', cls: ['neo-h1'], html: 'Services'},
24
- {cls: ['info-block'], cn: [
25
- {tag: 'h2', cls: ['neo-h2'], html: 'Weekly Workshops'},
26
- {tag: 'p', html: [
27
- 'We are doing weekly workshops on Thursdays 18:30 CEST (12:30am EST) for 60m free of charge.</br>',
28
- 'Ping us inside our ',
29
- '<a href="https://join.slack.com/t/neomjs/shared_invite/zt-6c50ueeu-3E1~M4T9xkNnb~M_prEEOA">Slack Channel</a>, ',
30
- 'in case you would like to join us.'
31
- ].join('')},
32
- ]},
33
24
  {cls: ['info-block'], cn: [
34
25
  {tag: 'h2', cls: ['neo-h2'], html: 'Professional Trainings'},
35
26
  {tag: 'p', html: [
@@ -20,19 +20,19 @@ const themes = [
20
20
  class ConfigurationViewport extends Viewport {
21
21
  static config = {
22
22
  /**
23
- * @member {String} className='Neo.examples.ConfigurationContainer'
23
+ * @member {String} className='Neo.examples.ConfigurationViewport'
24
24
  * @protected
25
25
  */
26
- className: 'Neo.examples.ConfigurationContainer',
26
+ className: 'Neo.examples.ConfigurationViewport',
27
27
  /**
28
28
  * @member {String} ntype='configuration-viewport'
29
29
  * @protected
30
30
  */
31
31
  ntype: 'configuration-viewport',
32
32
  /**
33
- * @member {Object} layout={ntype:'hbox', align:'stretch'}
33
+ * @member {String[]} baseCls=['neo-examples-configuration-viewport','neo-viewport']
34
34
  */
35
- layout: {ntype: 'hbox', align: 'stretch'},
35
+ baseCls: ['neo-examples-configuration-viewport', 'neo-viewport'],
36
36
  /**
37
37
  * @member {Number} configItemLabelWidth=150
38
38
  */
@@ -45,6 +45,10 @@ class ConfigurationViewport extends Viewport {
45
45
  * @member {Number} configPanelFlex=1
46
46
  */
47
47
  configPanelFlex: 1,
48
+ /**
49
+ * @member {Number} configPanelMaxWidth=null
50
+ */
51
+ configPanelMaxWidth: null,
48
52
  /**
49
53
  * @member {Number} configPanelMinWidth=350
50
54
  */
@@ -56,7 +60,11 @@ class ConfigurationViewport extends Viewport {
56
60
  /**
57
61
  * @member {Number} exampleComponentFlex=1
58
62
  */
59
- exampleComponentFlex: 2
63
+ exampleComponentFlex: 2,
64
+ /**
65
+ * @member {Object} layout={ntype:'hbox', align:'stretch'}
66
+ */
67
+ layout: {ntype: 'hbox', align: 'stretch'}
60
68
  }
61
69
 
62
70
  /**
@@ -114,6 +122,7 @@ class ConfigurationViewport extends Viewport {
114
122
 
115
123
  me.items = [{
116
124
  module: Container,
125
+ cls : ['neo-example-container'],
117
126
  items : [me.exampleComponent],
118
127
  flex : me.exampleComponentFlex,
119
128
  layout: 'base',
@@ -123,11 +132,16 @@ class ConfigurationViewport extends Viewport {
123
132
  module: Panel,
124
133
  cls : ['neo-panel', 'neo-container', 'neo-configuration-panel'],
125
134
  flex : me.configPanelFlex,
126
- style : {margin: '20px', minWidth: me.configPanelMinWidth},
135
+
136
+ style: {
137
+ maxWidth: me.configPanelMaxWidth + 'px',
138
+ margin : '20px',
139
+ minWidth: me.configPanelMinWidth + 'px'
140
+ },
127
141
 
128
142
  headers: [{
143
+ cls : ['neo-configuration-header-toolbar'],
129
144
  dock : 'top',
130
- style: {borderLeft:0, borderRight:0, borderTop:0},
131
145
  items: [{
132
146
  ntype: 'label',
133
147
  text : 'Configuration'
@@ -145,7 +159,6 @@ class ConfigurationViewport extends Viewport {
145
159
  items: [{
146
160
  module: Container,
147
161
  layout: {ntype: 'vbox', align: null},
148
- style : {overflowY: 'auto', padding: '10px'},
149
162
  cls : ['neo-configuration-panel-body'],
150
163
  itemDefaults: {
151
164
  clearToOriginalValue: true,
@@ -20,9 +20,9 @@ class ServiceWorker extends ServiceBase {
20
20
  */
21
21
  singleton: true,
22
22
  /**
23
- * @member {String} version='8.21.2'
23
+ * @member {String} version='8.23.0'
24
24
  */
25
- version: '8.21.2'
25
+ version: '8.23.0'
26
26
  }
27
27
 
28
28
  /**
@@ -0,0 +1,90 @@
1
+ import CheckBox from '../../../src/form/field/CheckBox.mjs';
2
+ import ConfigurationViewport from '../../ConfigurationViewport.mjs';
3
+ import MagicMoveText from '../../../src/component/MagicMoveText.mjs';
4
+ import NumberField from '../../../src/form/field/Number.mjs';
5
+ import TextField from '../../../src/form/field/Text.mjs';
6
+
7
+ /**
8
+ * @class Neo.examples.component.magicmovetext.MainContainer
9
+ * @extends Neo.examples.ConfigurationViewport
10
+ */
11
+ class MainContainer extends ConfigurationViewport {
12
+ static config = {
13
+ className : 'Neo.examples.component.magicmovetext.MainContainer',
14
+ configItemLabelWidth: 150,
15
+ configItemWidth : 250,
16
+ configPanelMaxWidth : 300,
17
+ configPanelMinWidth : 300,
18
+ layout : {ntype: 'hbox', align: 'stretch'}
19
+ }
20
+
21
+ createConfigurationComponents() {
22
+ let me = this,
23
+ {exampleComponent} = me;
24
+
25
+ return [{
26
+ module : CheckBox,
27
+ checked : exampleComponent.autoCycle,
28
+ labelText: 'autoCycle',
29
+ listeners: {change: me.onConfigChange.bind(me, 'autoCycle')}
30
+ }, {
31
+ module : NumberField,
32
+ clearable: false,
33
+ labelText: 'autoCycleInterval',
34
+ listeners: {change: me.onConfigChange.bind(me, 'autoCycleInterval')},
35
+ maxValue : 10000,
36
+ minValue : 0,
37
+ stepSize : 1000,
38
+ style : {marginTop: '10px'},
39
+ value : exampleComponent.autoCycleInterval
40
+ }, {
41
+ module : TextField,
42
+ labelText: 'colorFadeIn',
43
+ listeners: {change: me.onConfigChange.bind(me, 'colorFadeIn')},
44
+ value : exampleComponent.colorFadeIn
45
+ }, {
46
+ module : TextField,
47
+ labelText: 'colorFadeOut',
48
+ listeners: {change: me.onConfigChange.bind(me, 'colorFadeOut')},
49
+ value : exampleComponent.colorFadeOut
50
+ }, {
51
+ module : TextField,
52
+ labelText: 'colorMove',
53
+ listeners: {change: me.onConfigChange.bind(me, 'colorMove')},
54
+ value : exampleComponent.colorMove
55
+ }, {
56
+ module : TextField,
57
+ clearable: false,
58
+ labelText: 'fontFamily',
59
+ listeners: {change: me.onConfigChange.bind(me, 'fontFamily')},
60
+ value : exampleComponent.fontFamily,
61
+ width : 280
62
+ }, {
63
+ module : NumberField,
64
+ clearable: false,
65
+ labelText: 'transitionTime',
66
+ listeners: {change: me.onConfigChange.bind(me, 'transitionTime')},
67
+ maxValue : 900,
68
+ minValue : 50,
69
+ stepSize : 50,
70
+ value : exampleComponent.transitionTime
71
+ }]
72
+ }
73
+
74
+ createExampleComponent() {
75
+ return {
76
+ module: MagicMoveText,
77
+
78
+ cycleTexts: [
79
+ 'Magic Move',
80
+ 'Move characters like magic',
81
+ 'Animate between strings',
82
+ 'Just like that',
83
+ 'Simple to use',
84
+ 'Would you use it?'
85
+ ]
86
+ }
87
+ }
88
+ }
89
+
90
+ export default Neo.setupClass(MainContainer);
@@ -0,0 +1,6 @@
1
+ import MainContainer from './MainContainer.mjs';
2
+
3
+ export const onStart = () => Neo.app({
4
+ mainView: MainContainer,
5
+ name : 'Neo.examples.component.magicmovetext'
6
+ });
@@ -0,0 +1,11 @@
1
+ <!DOCTYPE HTML>
2
+ <html>
3
+ <head>
4
+ <meta name="viewport" content="width=device-width, initial-scale=1">
5
+ <meta charset="UTF-8">
6
+ <title>Neo Magic Move - Text</title>
7
+ </head>
8
+ <body>
9
+ <script src="../../../src/MicroLoader.mjs" type="module"></script>
10
+ </body>
11
+ </html>
@@ -0,0 +1,6 @@
1
+ {
2
+ "appPath" : "examples/component/magicmovetext/app.mjs",
3
+ "basePath" : "../../../",
4
+ "environment": "development",
5
+ "mainPath" : "./Main.mjs"
6
+ }