sunrize 1.7.29 → 1.7.31

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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "sunrize",
3
3
  "productName": "Sunrize X3D Editor",
4
- "version": "1.7.29",
4
+ "version": "1.7.31",
5
5
  "description": "A Multi-Platform X3D Editor",
6
6
  "main": "src/main.js",
7
7
  "bin": {
@@ -25,7 +25,7 @@
25
25
  "postgithub": "npm i -P electron",
26
26
  "predocs": "rm -f -r docs/_site/",
27
27
  "docs": "cd docs && bundle exec jekyll serve --ssl-key ssl/server.key --ssl-cert ssl/server.crt --incremental --host=`ipconfig getifaddr en0`",
28
- "docs-install": "cd docs && bundle install",
28
+ "docs-install": "cd docs && gem install bundler && bundle install",
29
29
  "docs-update": "cd docs && bundle update",
30
30
  "merge-development": "sh build/merge-development.sh",
31
31
  "make-x_ite-for-sunrize": "sh build/make-x_ite-for-sunrize.sh"
@@ -90,7 +90,7 @@
90
90
  "dependencies": {
91
91
  "capitalize": "^2.0.4",
92
92
  "console": "^0.7.2",
93
- "electron": "^33.0.2",
93
+ "electron": "^33.2.0",
94
94
  "electron-prompt": "^1.7.0",
95
95
  "electron-squirrel-startup": "^1.0.1",
96
96
  "electron-tabs": "^1.0.4",
@@ -99,7 +99,7 @@
99
99
  "jquery-ui-dist": "^1.13.3",
100
100
  "jstree": "^3.3.17",
101
101
  "material-icons": "^1.13.12",
102
- "material-symbols": "^0.25.1",
102
+ "material-symbols": "^0.27.0",
103
103
  "md5": "^2.3.0",
104
104
  "mime-types": "^2.1.35",
105
105
  "monaco-editor": "^0.50.0",
@@ -109,46 +109,7 @@
109
109
  "string-similarity": "^4.0.4",
110
110
  "tweakpane": "^3.1.10",
111
111
  "update-electron-app": "^3.0.0",
112
- "x_ite": "^10.5.9"
113
- },
114
- "config": {
115
- "forge": {
116
- "packagerConfig": {
117
- "icon": "./src/assets/images/icon.png",
118
- "dir": "./src",
119
- "ignore": "^/(?!src|package\\.json|node_modules)",
120
- "certificateFile": "./build/certificate.pfx",
121
- "certificatePassword": "CREATE3000",
122
- "extendInfo": "./src/assets/Info.plist",
123
- "osxSign": {}
124
- },
125
- "makers": [
126
- {
127
- "name": "@electron-forge/maker-squirrel"
128
- },
129
- {
130
- "name": "@electron-forge/maker-dmg"
131
- },
132
- {
133
- "name": "@electron-forge/maker-deb"
134
- },
135
- {
136
- "name": "@electron-forge/maker-rpm"
137
- }
138
- ],
139
- "publishers": [
140
- {
141
- "name": "@electron-forge/publisher-github",
142
- "config": {
143
- "repository": {
144
- "owner": "create3000",
145
- "name": "sunrize"
146
- },
147
- "prerelease": false,
148
- "draft": false
149
- }
150
- }
151
- ]
152
- }
112
+ "x_ite": "^10.5.11",
113
+ "x3d-traverse": "^1.0.2"
153
114
  }
154
115
  }
@@ -161,8 +161,20 @@ module .exports = class Document extends Interface
161
161
  await this .browser .loadComponents (this .browser .getProfile ("Full"),
162
162
  this .browser .getComponent ("X_ITE"));
163
163
 
164
+ // Modify nodes.
165
+
164
166
  this .browser .updateConcreteNode (require ("../Components/Grouping/StaticGroup"));
165
167
 
168
+ X3D .NurbsSweptSurface .prototype .traverse = function (type, renderObject)
169
+ {
170
+ this .getTrajectoryCurve () ?.traverse (type, renderObject);
171
+ };
172
+
173
+ X3D .NurbsSwungSurface .prototype .traverse = function (type, renderObject)
174
+ {
175
+ this .getTrajectoryCurve () ?.traverse (type, renderObject);
176
+ };
177
+
166
178
  // Restore
167
179
 
168
180
  await this .restoreFile ();
@@ -7,7 +7,7 @@ const
7
7
  Dialog = require ("../Controls/Dialog"),
8
8
  Editor = require ("../Undo/Editor"),
9
9
  UndoManager = require ("../Undo/UndoManager"),
10
- Traverse = require ("../Application/Traverse"),
10
+ Traverse = require ("x3d-traverse") (X3D),
11
11
  _ = require ("../Application/GetText");
12
12
 
13
13
  module .exports = new class Library extends Dialog
@@ -209,8 +209,10 @@ module .exports = new class Library extends Dialog
209
209
 
210
210
  if (this .browser .getBrowserOption ("ColorSpace") === "LINEAR")
211
211
  {
212
- Traverse .traverse (node, Traverse .ROOT_NODES, node =>
212
+ for (const object of Traverse .traverse (node, Traverse .ROOT_NODES))
213
213
  {
214
+ const node = object .getValue ();
215
+
214
216
  for (const field of node .getFields ())
215
217
  {
216
218
  switch (field .getType ())
@@ -225,7 +227,7 @@ module .exports = new class Library extends Dialog
225
227
  break;
226
228
  }
227
229
  }
228
- });
230
+ }
229
231
  }
230
232
 
231
233
  switch (field ?.getType ())
@@ -4,7 +4,7 @@ const
4
4
  $ = require ("jquery"),
5
5
  X3D = require ("../X3D"),
6
6
  Interface = require ("../Application/Interface"),
7
- Traverse = require ("../Application/Traverse"),
7
+ Traverse = require ("x3d-traverse") (X3D),
8
8
  _ = require ("../Application/GetText");
9
9
 
10
10
  module .exports = class NodeList extends Interface
@@ -92,11 +92,7 @@ module .exports = class NodeList extends Interface
92
92
 
93
93
  getNodes ()
94
94
  {
95
- const nodes = [ ];
96
-
97
- Traverse .traverse (this .executionContext, Traverse .PROTO_DECLARATIONS | Traverse .PROTO_DECLARATION_BODY | Traverse .ROOT_NODES, node => nodes .push (node));
98
-
99
- return nodes;
95
+ return Array .from (this .executionContext .traverse (Traverse .PROTO_DECLARATIONS | Traverse .PROTO_DECLARATION_BODY | Traverse .ROOT_NODES), node => node instanceof X3D .SFNode ? node .getValue () : node);
100
96
  }
101
97
 
102
98
  getName (node)
@@ -8,7 +8,7 @@ const
8
8
  X3D = require ("../X3D"),
9
9
  Interface = require ("../Application/Interface"),
10
10
  ActionKeys = require ("../Application/ActionKeys"),
11
- Traverse = require ("../Application/Traverse"),
11
+ Traverse = require ("x3d-traverse") (X3D),
12
12
  X3DUOM = require ("../Bits/X3DUOM"),
13
13
  _ = require ("../Application/GetText");
14
14
 
@@ -3144,76 +3144,96 @@ module .exports = class OutlineView extends Interface
3144
3144
  {
3145
3145
  // Hide all X3DShapeNode nodes and show all other nodes.
3146
3146
 
3147
- Traverse .traverse (this .executionContext, Traverse .INLINE_SCENE | Traverse .PROTOTYPE_INSTANCES | Traverse .PROTO_DECLARATIONS | Traverse .PROTO_DECLARATION_BODY | Traverse .ROOT_NODES, node =>
3147
+ for (const object of this .executionContext .traverse (Traverse .INLINE_SCENE | Traverse .PROTOTYPE_INSTANCES | Traverse .PROTO_DECLARATIONS | Traverse .PROTO_DECLARATION_BODY | Traverse .ROOT_NODES))
3148
3148
  {
3149
+ if (!(object instanceof X3D .SFNode))
3150
+ continue;
3151
+
3152
+ const node = object .getValue ();
3153
+
3149
3154
  if (!node .setHidden)
3150
- return
3155
+ continue;
3151
3156
 
3152
- node .setHidden (node .getType () .includes (X3D .X3DConstants .X3DShapeNode))
3157
+ node .setHidden (node .getType () .includes (X3D .X3DConstants .X3DShapeNode));
3153
3158
 
3154
3159
  this .sceneGraph .find (`.node[node-id=${node .getId ()}]`)
3155
3160
  .find ("> .item .toggle-visibility")
3156
3161
  .removeClass (["on", "off"])
3157
3162
  .addClass (node .isHidden () ? "off" : "on")
3158
- .text (node .isHidden () ? "visibility_off" : "visibility")
3159
- })
3163
+ .text (node .isHidden () ? "visibility_off" : "visibility");
3164
+ }
3160
3165
 
3161
3166
  // Show all nodes in selection.
3162
3167
 
3163
3168
  const selection = require ("../Application/Selection");
3164
3169
 
3165
- Traverse .traverse (selection .nodes, Traverse .INLINE_SCENE | Traverse .PROTOTYPE_INSTANCES | Traverse .PROTO_DECLARATIONS | Traverse .PROTO_DECLARATION_BODY | Traverse .ROOT_NODES, node =>
3170
+ for (const object of Traverse .traverse (selection .nodes, Traverse .INLINE_SCENE | Traverse .PROTOTYPE_INSTANCES | Traverse .PROTO_DECLARATIONS | Traverse .PROTO_DECLARATION_BODY | Traverse .ROOT_NODES))
3166
3171
  {
3172
+ if (!(object instanceof X3D .SFNode))
3173
+ continue;
3174
+
3175
+ const node = object .getValue ();
3176
+
3167
3177
  if (!node .setHidden)
3168
- return
3178
+ continue;
3169
3179
 
3170
3180
  if (!node .getType () .includes (X3D .X3DConstants .X3DShapeNode))
3171
- return
3181
+ continue;
3172
3182
 
3173
- node .setHidden (false)
3183
+ node .setHidden (false);
3174
3184
 
3175
3185
  this .sceneGraph .find (`.node[node-id=${node .getId ()}]`)
3176
3186
  .find ("> .item .toggle-visibility")
3177
3187
  .removeClass ("off")
3178
3188
  .addClass ("on")
3179
- .text ("visibility")
3180
- })
3189
+ .text ("visibility");
3190
+ }
3181
3191
  }
3182
3192
 
3183
3193
  showSelectedObjects ()
3184
3194
  {
3185
3195
  const selection = require ("../Application/Selection")
3186
3196
 
3187
- Traverse .traverse (selection .nodes .length ? selection .nodes : this .executionContext, Traverse .INLINE_SCENE | Traverse .PROTOTYPE_INSTANCES | Traverse .PROTO_DECLARATIONS | Traverse .PROTO_DECLARATION_BODY | Traverse .ROOT_NODES, node =>
3197
+ for (const object of Traverse .traverse (selection .nodes .length ? selection .nodes : this .executionContext, Traverse .INLINE_SCENE | Traverse .PROTOTYPE_INSTANCES | Traverse .PROTO_DECLARATIONS | Traverse .PROTO_DECLARATION_BODY | Traverse .ROOT_NODES))
3188
3198
  {
3199
+ if (!(object instanceof X3D .SFNode))
3200
+ continue;
3201
+
3202
+ const node = object .getValue ();
3203
+
3189
3204
  if (!node .setHidden)
3190
- return
3205
+ continue;
3191
3206
 
3192
- node .setHidden (false)
3207
+ node .setHidden (false);
3193
3208
 
3194
3209
  this .sceneGraph .find (`.node[node-id=${node .getId ()}]`)
3195
3210
  .find ("> .item .toggle-visibility")
3196
3211
  .removeClass ("off")
3197
3212
  .addClass ("on")
3198
- .text ("visibility")
3199
- })
3213
+ .text ("visibility");
3214
+ }
3200
3215
  }
3201
3216
 
3202
3217
  showAllObjects ()
3203
3218
  {
3204
- Traverse .traverse (this .executionContext, Traverse .INLINE_SCENE | Traverse .PROTOTYPE_INSTANCES | Traverse .PROTO_DECLARATIONS | Traverse .PROTO_DECLARATION_BODY | Traverse .ROOT_NODES, node =>
3219
+ for (const object of this .executionContext .traverse (Traverse .INLINE_SCENE | Traverse .PROTOTYPE_INSTANCES | Traverse .PROTO_DECLARATIONS | Traverse .PROTO_DECLARATION_BODY | Traverse .ROOT_NODES))
3205
3220
  {
3221
+ if (!(object instanceof X3D .SFNode))
3222
+ continue;
3223
+
3224
+ const node = object .getValue ();
3225
+
3206
3226
  if (!node .setHidden)
3207
- return
3227
+ continue;
3208
3228
 
3209
- node .setHidden (false)
3229
+ node .setHidden (false);
3210
3230
 
3211
3231
  this .sceneGraph .find (`.node[node-id=${node .getId ()}]`)
3212
3232
  .find ("> .item .toggle-visibility")
3213
3233
  .removeClass ("off")
3214
3234
  .addClass ("on")
3215
- .text ("visibility")
3216
- })
3235
+ .text ("visibility");
3236
+ }
3217
3237
  }
3218
3238
 
3219
3239
  selectNone (event)
@@ -3637,16 +3657,15 @@ module .exports = class OutlineView extends Interface
3637
3657
 
3638
3658
  flags |= Traverse .IMPORTED_NODES;
3639
3659
 
3640
- const hierarchies = Traverse .find (this .executionContext, object, flags);
3641
-
3642
- for (const hierarchy of hierarchies)
3660
+ for (const hierarchy of this .executionContext .find (object, flags))
3643
3661
  {
3644
3662
  hierarchy .shift (); // execution context
3663
+ hierarchy .shift (); // rootNode | protos ...
3645
3664
 
3646
3665
  if (!expandObject)
3647
3666
  hierarchy .pop ();
3648
3667
 
3649
- this .expandHierarchy (hierarchy, this .sceneGraph);
3668
+ this .expandHierarchy (hierarchy, this .sceneGraph, this .executionContext);
3650
3669
  break;
3651
3670
  }
3652
3671
  }
@@ -3658,46 +3677,67 @@ module .exports = class OutlineView extends Interface
3658
3677
  "X3DExecutionContext": "scene",
3659
3678
  };
3660
3679
 
3661
- expandHierarchy (hierarchy, parent)
3680
+ expandHierarchy (hierarchy, parent, parentObject)
3662
3681
  {
3663
- const object = hierarchy .shift ();
3682
+ let object = hierarchy .shift ();
3664
3683
 
3665
- if (!object)
3684
+ if (object === undefined)
3666
3685
  return;
3667
3686
 
3668
- if (object instanceof X3D .X3DField)
3687
+ switch (true)
3669
3688
  {
3670
- let element = parent .find (`.field[field-id=${object .getId ()}]`);
3671
-
3672
- if (element .length === 0)
3689
+ case typeof object === "string":
3673
3690
  {
3674
- parent .jstree ("close_node", parent);
3675
- parent .jstree ("open_node", parent);
3691
+ object = parentObject .getField (object);
3676
3692
 
3677
- element = parent .find (`.field[field-id=${object .getId ()}]`);
3678
- }
3693
+ let element = parent .find (`.field[field-id=${object .getId ()}]`);
3679
3694
 
3680
- element .jstree ("open_node", element);
3695
+ if (element .length === 0)
3696
+ {
3697
+ parent .jstree ("close_node", parent);
3698
+ parent .jstree ("open_node", parent);
3681
3699
 
3682
- this .expandHierarchy (hierarchy, element);
3683
- }
3684
- else if (object instanceof X3D .X3DImportedNode)
3685
- {
3686
- const element = parent .find (`.imported-node[imported-node-id=${object .getId ()}]`);
3700
+ element = parent .find (`.field[field-id=${object .getId ()}]`);
3701
+ }
3687
3702
 
3688
- element .jstree ("open_node", element);
3703
+ element .jstree ("open_node", element);
3689
3704
 
3690
- this .expandHierarchy (hierarchy, element);
3691
- }
3692
- else
3693
- {
3694
- const
3695
- objectClass = OutlineView .objectClasses [object .getTypeName ()] || "node",
3696
- element = parent .find (`.${objectClass}[node-id=${object .getId ()}]`);
3705
+ this .expandHierarchy (hierarchy, element);
3706
+ break;
3707
+ }
3708
+ case typeof object === "number":
3709
+ {
3710
+ this .expandHierarchy (hierarchy, parent);
3711
+ break;
3712
+ }
3713
+ case object instanceof X3D .X3DImportedNode:
3714
+ {
3715
+ const element = parent .find (`.imported-node[imported-node-id=${object .getId ()}]`);
3697
3716
 
3698
- element .jstree ("open_node", element);
3717
+ element .jstree ("open_node", element);
3718
+
3719
+ this .expandHierarchy (hierarchy, element);
3720
+ break;
3721
+ }
3722
+ case object instanceof X3D .SFNode:
3723
+ {
3724
+ object = object .getValue ();
3725
+ // Proceed with next case:
3726
+ }
3727
+ default: // X3DBaseNode
3728
+ {
3729
+ const
3730
+ objectClass = OutlineView .objectClasses [object .getTypeName ()] || "node",
3731
+ element = parent .find (`.${objectClass}[node-id=${object .getId ()}]`);
3732
+
3733
+ element .jstree ("open_node", element);
3734
+
3735
+ if (object instanceof X3D .X3DExecutionContext)
3736
+ hierarchy .shift (); // rootNode | protos ...
3699
3737
 
3700
- this .expandHierarchy (hierarchy, element);
3738
+ this .expandHierarchy (hierarchy, element, object);
3739
+ break;
3740
+ }
3701
3741
  }
3702
3742
  }
3703
3743
 
@@ -5,7 +5,7 @@ const
5
5
  X3D = require ("../../X3D"),
6
6
  Editor = require ("../../Undo/Editor"),
7
7
  UndoManager = require ("../../Undo/UndoManager"),
8
- Traverse = require ("../../Application/Traverse"),
8
+ Traverse = require ("x3d-traverse") (X3D),
9
9
  path = require ("path"),
10
10
  url = require ("url"),
11
11
  _ = require ("../../Application/GetText");
@@ -218,7 +218,10 @@ class X3DNodeTool extends X3DBaseTool
218
218
 
219
219
  for (const tool of this .#tools)
220
220
  {
221
- Traverse .traverse (this [tool], Traverse .ROOT_NODES | Traverse .INLINE_SCENE | Traverse .PROTOTYPE_INSTANCES, node => nodesToDispose .push (node));
221
+ for (const node of Traverse .traverse (this [tool], Traverse .ROOT_NODES | Traverse .INLINE_SCENE | Traverse .PROTOTYPE_INSTANCES))
222
+ {
223
+ nodesToDispose .push (node instanceof X3D .SFNode ? node .getValue () : node);
224
+ }
222
225
  }
223
226
 
224
227
  for (const node of nodesToDispose .filter (node => !this .#externalNodes .has (node)))