Compare commits

..

3 Commits
main ... jsx3d

Author SHA1 Message Date
bcbbedbb12 debug: Do nothing but init a board. Still buggy 2024-06-11 20:40:59 -07:00
0bca52ab4e fix: Add types patch files 2024-06-10 14:47:26 -07:00
4e2375b709 feat: Implement 3D Joyce Applets via JSXGraph
This is a stub/very preliminary implementation of calling JSXGraph for
  3D Joyce applets. The only element/construction method implemented so far
  is a free point.

  NOTE: This implementation is so far extremely buggy. Loading a page with a
  3D applet such as
  http://aleph0.clarku.edu/~djoyce/java/elements/bookXI/defXI9.html
  appears to enter a loop in which the div containing the JSXGraph Board
  progressively grows larger and larger, while using a tremendous amount
  of cpu.
2024-06-09 22:07:13 -07:00
47 changed files with 23866 additions and 20477 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,4 +1,4 @@
function web3d(){var H='bootstrap',I='begin',J='gwt.codesvr.web3d=',K='gwt.codesvr=',L='web3d',M='startup',N='DUMMY',O=0,P=1,Q='iframe',R='position:absolute; width:0; height:0; border:none; left: -1000px;',S=' top: -1000px;',T='Chrome',U='CSS1Compat',V='<!doctype html>',W='',X='<html><head><\/head><body><\/body><\/html>',Y='undefined',Z='readystatechange',$=10,_='script',ab='javascript',bb='Failed to load ',cb='moduleStartup',db='scriptTagAdded',eb='moduleRequested',fb='meta',gb='name',hb='web3d::',ib='::',jb='gwt:property',kb='content',lb='=',mb='gwt:onPropertyErrorFn',nb='Bad handler "',ob='" for "gwt:onPropertyErrorFn"',pb='gwt:onLoadErrorFn',qb='" for "gwt:onLoadErrorFn"',rb='#',sb='?',tb='/',ub='img',vb='clear.cache.gif',wb='baseUrl',xb='web3d.nocache.js',yb='base',zb='//',Ab='selectingPermutation',Bb='web3d.devmode.js',Cb='289547CDA192E4FE9BAED5FF003E2ACE',Db=':',Eb='.cache.js',Fb='loadExternalRefs',Gb='end';var n=window;var o=document;q(H,I);function p(){var a=n.location.search;return a.indexOf(J)!=-1||a.indexOf(K)!=-1}
function web3d(){var H='bootstrap',I='begin',J='gwt.codesvr.web3d=',K='gwt.codesvr=',L='web3d',M='startup',N='DUMMY',O=0,P=1,Q='iframe',R='position:absolute; width:0; height:0; border:none; left: -1000px;',S=' top: -1000px;',T='Chrome',U='CSS1Compat',V='<!doctype html>',W='',X='<html><head><\/head><body><\/body><\/html>',Y='undefined',Z='readystatechange',$=10,_='script',ab='javascript',bb='Failed to load ',cb='moduleStartup',db='scriptTagAdded',eb='moduleRequested',fb='meta',gb='name',hb='web3d::',ib='::',jb='gwt:property',kb='content',lb='=',mb='gwt:onPropertyErrorFn',nb='Bad handler "',ob='" for "gwt:onPropertyErrorFn"',pb='gwt:onLoadErrorFn',qb='" for "gwt:onLoadErrorFn"',rb='#',sb='?',tb='/',ub='img',vb='clear.cache.gif',wb='baseUrl',xb='web3d.nocache.js',yb='base',zb='//',Ab='selectingPermutation',Bb='web3d.devmode.js',Cb='9C3B3A10360CC5777FCFEBAB7585F55C',Db=':',Eb='.cache.js',Fb='loadExternalRefs',Gb='end';var n=window;var o=document;q(H,I);function p(){var a=n.location.search;return a.indexOf(J)!=-1||a.indexOf(K)!=-1}
function q(a,b){if(n.__gwtStatsEvent){n.__gwtStatsEvent({moduleName:L,sessionId:n.__gwtStatsSessionId,subSystem:M,evtGroup:a,millis:(new Date).getTime(),type:b})}}
web3d.__sendStats=q;web3d.__moduleName=L;web3d.__errFn=null;web3d.__moduleBase=N;web3d.__softPermutationId=O;web3d.__computePropValue=null;web3d.__getPropMap=null;web3d.__installRunAsyncCode=function(){};web3d.__gwtStartLoadingFragment=function(){return null};web3d.__gwt_isKnownPropertyValue=function(){return false};web3d.__gwt_getMetaProperty=function(){return null};var r=null;var s=n.__gwt_activeModules=n.__gwt_activeModules||{};s[L]={moduleName:L};web3d.__moduleStartupDone=function(e){var f=s[L].bindings;s[L].bindings=function(){var a=f?f():{};var b=e[web3d.__softPermutationId];for(var c=O;c<b.length;c++){var d=b[c];a[d[O]]=d[P]}return a}};var t;function u(){v();return t}
function v(){if(t){return}var a=o.createElement(Q);a.id=L;a.style.cssText=R+S;a.tabIndex=-1;o.body.appendChild(a);t=a.contentWindow.document;if(navigator.userAgent.indexOf(T)==-1){t.open();var b=document.compatMode==U?V:W;t.write(b+X);t.close()}}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
$wnd.webSimple.runAsyncCallback2('Bqb(2084,1,TGh);_.ld=function(){};X5g(Qc)(2);\n//# sourceURL=webSimple-2.js\n')

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
$wnd.webSimple.runAsyncCallback2('brb(2115,1,ELh);_.ld=function(){};rah(Qc)(2);\n//# sourceURL=webSimple-2.js\n')

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,4 +1,4 @@
function webSimple(){var H='bootstrap',I='begin',J='gwt.codesvr.webSimple=',K='gwt.codesvr=',L='webSimple',M='startup',N='DUMMY',O=0,P=1,Q='iframe',R='position:absolute; width:0; height:0; border:none; left: -1000px;',S=' top: -1000px;',T='Chrome',U='CSS1Compat',V='<!doctype html>',W='',X='<html><head><\/head><body><\/body><\/html>',Y='undefined',Z='readystatechange',$=10,_='script',ab='javascript',bb='Failed to load ',cb='moduleStartup',db='scriptTagAdded',eb='moduleRequested',fb='meta',gb='name',hb='webSimple::',ib='::',jb='gwt:property',kb='content',lb='=',mb='gwt:onPropertyErrorFn',nb='Bad handler "',ob='" for "gwt:onPropertyErrorFn"',pb='gwt:onLoadErrorFn',qb='" for "gwt:onLoadErrorFn"',rb='#',sb='?',tb='/',ub='img',vb='clear.cache.gif',wb='baseUrl',xb='webSimple.nocache.js',yb='base',zb='//',Ab='selectingPermutation',Bb='webSimple.devmode.js',Cb='4B19686283BEF852F4C88C93522FB9A3',Db=':',Eb='.cache.js',Fb='loadExternalRefs',Gb='end';var n=window;var o=document;q(H,I);function p(){var a=n.location.search;return a.indexOf(J)!=-1||a.indexOf(K)!=-1}
function webSimple(){var H='bootstrap',I='begin',J='gwt.codesvr.webSimple=',K='gwt.codesvr=',L='webSimple',M='startup',N='DUMMY',O=0,P=1,Q='iframe',R='position:absolute; width:0; height:0; border:none; left: -1000px;',S=' top: -1000px;',T='Chrome',U='CSS1Compat',V='<!doctype html>',W='',X='<html><head><\/head><body><\/body><\/html>',Y='undefined',Z='readystatechange',$=10,_='script',ab='javascript',bb='Failed to load ',cb='moduleStartup',db='scriptTagAdded',eb='moduleRequested',fb='meta',gb='name',hb='webSimple::',ib='::',jb='gwt:property',kb='content',lb='=',mb='gwt:onPropertyErrorFn',nb='Bad handler "',ob='" for "gwt:onPropertyErrorFn"',pb='gwt:onLoadErrorFn',qb='" for "gwt:onLoadErrorFn"',rb='#',sb='?',tb='/',ub='img',vb='clear.cache.gif',wb='baseUrl',xb='webSimple.nocache.js',yb='base',zb='//',Ab='selectingPermutation',Bb='webSimple.devmode.js',Cb='C0345F6F027EF2F0263E39640B37309E',Db=':',Eb='.cache.js',Fb='loadExternalRefs',Gb='end';var n=window;var o=document;q(H,I);function p(){var a=n.location.search;return a.indexOf(J)!=-1||a.indexOf(K)!=-1}
function q(a,b){if(n.__gwtStatsEvent){n.__gwtStatsEvent({moduleName:L,sessionId:n.__gwtStatsSessionId,subSystem:M,evtGroup:a,millis:(new Date).getTime(),type:b})}}
webSimple.__sendStats=q;webSimple.__moduleName=L;webSimple.__errFn=null;webSimple.__moduleBase=N;webSimple.__softPermutationId=O;webSimple.__computePropValue=null;webSimple.__getPropMap=null;webSimple.__installRunAsyncCode=function(){};webSimple.__gwtStartLoadingFragment=function(){return null};webSimple.__gwt_isKnownPropertyValue=function(){return false};webSimple.__gwt_getMetaProperty=function(){return null};var r=null;var s=n.__gwt_activeModules=n.__gwt_activeModules||{};s[L]={moduleName:L};webSimple.__moduleStartupDone=function(e){var f=s[L].bindings;s[L].bindings=function(){var a=f?f():{};var b=e[webSimple.__softPermutationId];for(var c=O;c<b.length;c++){var d=b[c];a[d[O]]=d[P]}return a}};var t;function u(){v();return t}
function v(){if(t){return}var a=o.createElement(Q);a.id=L;a.style.cssText=R+S;a.tabIndex=-1;o.body.appendChild(a);t=a.contentWindow.document;if(navigator.userAgent.indexOf(T)==-1){t.open();var b=document.compatMode==U?V:W;t.write(b+X);t.close()}}

File diff suppressed because one or more lines are too long

View File

@ -1,4 +1,4 @@
/* X_ITE v9.2.4 */(() => { // webpackBootstrap
/* X_ITE v9.7.0 */(() => { // webpackBootstrap
/******/ "use strict";
/******/ // The require scope
/******/ var __webpack_require__ = {};
@ -39,25 +39,25 @@ var __webpack_exports__ = {};
// UNUSED EXPORTS: default
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Components\")"
const Components_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Components");
const Components_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Components");
var Components_default = /*#__PURE__*/__webpack_require__.n(Components_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Fields\")"
const Fields_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Fields");
const Fields_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Fields");
var Fields_default = /*#__PURE__*/__webpack_require__.n(Fields_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Base/X3DFieldDefinition\")"
const X3DFieldDefinition_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Base/X3DFieldDefinition");
const X3DFieldDefinition_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Base/X3DFieldDefinition");
var X3DFieldDefinition_default = /*#__PURE__*/__webpack_require__.n(X3DFieldDefinition_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Base/FieldDefinitionArray\")"
const FieldDefinitionArray_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Base/FieldDefinitionArray");
const FieldDefinitionArray_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Base/FieldDefinitionArray");
var FieldDefinitionArray_default = /*#__PURE__*/__webpack_require__.n(FieldDefinitionArray_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Components/Core/X3DChildNode\")"
const X3DChildNode_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Components/Core/X3DChildNode");
const X3DChildNode_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Components/Core/X3DChildNode");
var X3DChildNode_default = /*#__PURE__*/__webpack_require__.n(X3DChildNode_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Base/X3DConstants\")"
const X3DConstants_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Base/X3DConstants");
const X3DConstants_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Base/X3DConstants");
var X3DConstants_default = /*#__PURE__*/__webpack_require__.n(X3DConstants_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Namespace\")"
const Namespace_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Namespace");
const Namespace_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Namespace");
var Namespace_default = /*#__PURE__*/__webpack_require__.n(Namespace_namespaceObject);
;// CONCATENATED MODULE: ./src/x_ite/Components/EventUtilities/BooleanFilter.js
/*******************************************************************************
@ -183,7 +183,7 @@ const __default__ = BooleanFilter;
Namespace_default().add ("BooleanFilter", "x_ite/Components/EventUtilities/BooleanFilter", __default__);
/* harmony default export */ const EventUtilities_BooleanFilter = (__default__);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"standard/Math/Algorithm\")"
const Algorithm_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("standard/Math/Algorithm");
const Algorithm_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("standard/Math/Algorithm");
var Algorithm_default = /*#__PURE__*/__webpack_require__.n(Algorithm_namespaceObject);
;// CONCATENATED MODULE: ./src/x_ite/Components/EventUtilities/X3DSequencerNode.js
/*******************************************************************************

View File

@ -1,4 +1,4 @@
/* X_ITE v9.2.4 */(() => { // webpackBootstrap
/* X_ITE v9.7.0 */(() => { // webpackBootstrap
/******/ "use strict";
/******/ // The require scope
/******/ var __webpack_require__ = {};
@ -39,19 +39,19 @@ var __webpack_exports__ = {};
// UNUSED EXPORTS: default
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Components\")"
const Components_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Components");
const Components_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Components");
var Components_default = /*#__PURE__*/__webpack_require__.n(Components_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Base/X3DBaseNode\")"
const X3DBaseNode_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Base/X3DBaseNode");
const X3DBaseNode_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Base/X3DBaseNode");
var X3DBaseNode_default = /*#__PURE__*/__webpack_require__.n(X3DBaseNode_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Base/X3DConstants\")"
const X3DConstants_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Base/X3DConstants");
const X3DConstants_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Base/X3DConstants");
var X3DConstants_default = /*#__PURE__*/__webpack_require__.n(X3DConstants_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Fields\")"
const Fields_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Fields");
const Fields_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Fields");
var Fields_default = /*#__PURE__*/__webpack_require__.n(Fields_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Namespace\")"
const Namespace_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Namespace");
const Namespace_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Namespace");
var Namespace_default = /*#__PURE__*/__webpack_require__.n(Namespace_namespaceObject);
;// CONCATENATED MODULE: ./src/x_ite/Browser/Geometry2D/Arc2DOptions.js
/*******************************************************************************
@ -204,10 +204,10 @@ const ArcClose2DOptions_default_ = ArcClose2DOptions;
Namespace_default().add ("ArcClose2DOptions", "x_ite/Browser/Geometry2D/ArcClose2DOptions", ArcClose2DOptions_default_);
/* harmony default export */ const Geometry2D_ArcClose2DOptions = (ArcClose2DOptions_default_);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Components/Rendering/X3DGeometryNode\")"
const X3DGeometryNode_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Components/Rendering/X3DGeometryNode");
const X3DGeometryNode_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Components/Rendering/X3DGeometryNode");
var X3DGeometryNode_default = /*#__PURE__*/__webpack_require__.n(X3DGeometryNode_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"standard/Math/Numbers/Complex\")"
const Complex_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("standard/Math/Numbers/Complex");
const Complex_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("standard/Math/Numbers/Complex");
var Complex_default = /*#__PURE__*/__webpack_require__.n(Complex_namespaceObject);
;// CONCATENATED MODULE: ./src/x_ite/Browser/Geometry2D/Circle2DOptions.js
/*******************************************************************************
@ -415,10 +415,10 @@ Object .assign (Object .setPrototypeOf (Disk2DOptions .prototype, (X3DBaseNode_d
{
const
half = new (Complex_default()) (0.5, 0.5),
texCoord1 = new (Complex_default()) (0, 0),
texCoord2 = new (Complex_default()) (0, 0),
point1 = new (Complex_default()) (0, 0),
point2 = new (Complex_default()) (0, 0);
texCoord1 = new (Complex_default()) (),
texCoord2 = new (Complex_default()) (),
point1 = new (Complex_default()) (),
point2 = new (Complex_default()) ();
return function ()
{
@ -487,13 +487,13 @@ const Disk2DOptions_default_ = Disk2DOptions;
Namespace_default().add ("Disk2DOptions", "x_ite/Browser/Geometry2D/Disk2DOptions", Disk2DOptions_default_);
/* harmony default export */ const Geometry2D_Disk2DOptions = (Disk2DOptions_default_);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Components/Geometry3D/IndexedFaceSet\")"
const IndexedFaceSet_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Components/Geometry3D/IndexedFaceSet");
const IndexedFaceSet_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Components/Geometry3D/IndexedFaceSet");
var IndexedFaceSet_default = /*#__PURE__*/__webpack_require__.n(IndexedFaceSet_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Components/Rendering/Coordinate\")"
const Coordinate_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Components/Rendering/Coordinate");
const Coordinate_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Components/Rendering/Coordinate");
var Coordinate_default = /*#__PURE__*/__webpack_require__.n(Coordinate_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Components/Texturing/TextureCoordinate\")"
const TextureCoordinate_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Components/Texturing/TextureCoordinate");
const TextureCoordinate_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Components/Texturing/TextureCoordinate");
var TextureCoordinate_default = /*#__PURE__*/__webpack_require__.n(TextureCoordinate_namespaceObject);
;// CONCATENATED MODULE: ./src/x_ite/Browser/Geometry2D/Rectangle2DOptions.js
/*******************************************************************************
@ -548,7 +548,6 @@ var TextureCoordinate_default = /*#__PURE__*/__webpack_require__.n(TextureCoordi
function Rectangle2DOptions (executionContext)
{
X3DBaseNode_default().call (this, executionContext);
@ -602,7 +601,7 @@ const Rectangle2DOptions_default_ = Rectangle2DOptions;
Namespace_default().add ("Rectangle2DOptions", "x_ite/Browser/Geometry2D/Rectangle2DOptions", Rectangle2DOptions_default_);
/* harmony default export */ const Geometry2D_Rectangle2DOptions = (Rectangle2DOptions_default_);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Browser/Core/PrimitiveQuality\")"
const PrimitiveQuality_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Browser/Core/PrimitiveQuality");
const PrimitiveQuality_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Browser/Core/PrimitiveQuality");
var PrimitiveQuality_default = /*#__PURE__*/__webpack_require__.n(PrimitiveQuality_namespaceObject);
;// CONCATENATED MODULE: ./src/x_ite/Browser/Geometry2D/X3DGeometry2DContext.js
/*******************************************************************************
@ -744,16 +743,16 @@ const X3DGeometry2DContext_default_ = X3DGeometry2DContext;
Namespace_default().add ("X3DGeometry2DContext", "x_ite/Browser/Geometry2D/X3DGeometry2DContext", X3DGeometry2DContext_default_);
/* harmony default export */ const Geometry2D_X3DGeometry2DContext = (X3DGeometry2DContext_default_);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Base/X3DFieldDefinition\")"
const X3DFieldDefinition_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Base/X3DFieldDefinition");
const X3DFieldDefinition_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Base/X3DFieldDefinition");
var X3DFieldDefinition_default = /*#__PURE__*/__webpack_require__.n(X3DFieldDefinition_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Base/FieldDefinitionArray\")"
const FieldDefinitionArray_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Base/FieldDefinitionArray");
const FieldDefinitionArray_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Base/FieldDefinitionArray");
var FieldDefinitionArray_default = /*#__PURE__*/__webpack_require__.n(FieldDefinitionArray_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Components/Rendering/X3DLineGeometryNode\")"
const X3DLineGeometryNode_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Components/Rendering/X3DLineGeometryNode");
const X3DLineGeometryNode_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Components/Rendering/X3DLineGeometryNode");
var X3DLineGeometryNode_default = /*#__PURE__*/__webpack_require__.n(X3DLineGeometryNode_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"standard/Math/Algorithm\")"
const Algorithm_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("standard/Math/Algorithm");
const Algorithm_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("standard/Math/Algorithm");
var Algorithm_default = /*#__PURE__*/__webpack_require__.n(Algorithm_namespaceObject);
;// CONCATENATED MODULE: ./src/x_ite/Components/Geometry2D/Arc2D.js
/*******************************************************************************
@ -828,7 +827,9 @@ Object .assign (Object .setPrototypeOf (Arc2D .prototype, (X3DLineGeometryNode_d
{
X3DLineGeometryNode_default().prototype .set_live__ .call (this);
if (this .getLive () .getValue ())
const alwaysUpdate = this .isLive () && this .getBrowser () .getBrowserOption ("AlwaysUpdateGeometries");
if (this .getLive () .getValue () || alwaysUpdate)
this .getBrowser () .getArc2DOptions () .addInterest ("requestRebuild", this);
else
this .getBrowser () .getArc2DOptions () .removeInterest ("requestRebuild", this);
@ -997,7 +998,9 @@ Object .assign (Object .setPrototypeOf (ArcClose2D .prototype, (X3DGeometryNode_
{
X3DGeometryNode_default().prototype .set_live__ .call (this);
if (this .getLive () .getValue ())
const alwaysUpdate = this .isLive () && this .getBrowser () .getBrowserOption ("AlwaysUpdateGeometries");
if (this .getLive () .getValue () || alwaysUpdate)
this .getBrowser () .getArcClose2DOptions () .addInterest ("requestRebuild", this);
else
this .getBrowser () .getArcClose2DOptions () .removeInterest ("requestRebuild", this);
@ -1223,7 +1226,9 @@ Object .assign (Object .setPrototypeOf (Circle2D .prototype, (X3DLineGeometryNod
{
X3DLineGeometryNode_default().prototype .set_live__ .call (this);
if (this .getLive () .getValue ())
const alwaysUpdate = this .isLive () && this .getBrowser () .getBrowserOption ("AlwaysUpdateGeometries");
if (this .getLive () .getValue () || alwaysUpdate)
this .getBrowser () .getCircle2DOptions () .addInterest ("requestRebuild", this);
else
this .getBrowser () .getCircle2DOptions () .removeInterest ("requestRebuild", this);
@ -1290,7 +1295,7 @@ const Circle2D_default_ = Circle2D;
Namespace_default().add ("Circle2D", "x_ite/Components/Geometry2D/Circle2D", Circle2D_default_);
/* harmony default export */ const Geometry2D_Circle2D = (Circle2D_default_);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Components/Rendering/X3DPointGeometryNode\")"
const X3DPointGeometryNode_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Components/Rendering/X3DPointGeometryNode");
const X3DPointGeometryNode_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Components/Rendering/X3DPointGeometryNode");
var X3DPointGeometryNode_default = /*#__PURE__*/__webpack_require__.n(X3DPointGeometryNode_namespaceObject);
;// CONCATENATED MODULE: ./src/x_ite/Components/Geometry2D/Disk2D.js
/*******************************************************************************
@ -1368,7 +1373,9 @@ Object .assign (Object .setPrototypeOf (Disk2D .prototype, (X3DGeometryNode_defa
{
X3DGeometryNode_default().prototype .set_live__ .call (this);
if (this .getLive () .getValue ())
const alwaysUpdate = this .isLive () && this .getBrowser () .getBrowserOption ("AlwaysUpdateGeometries");
if (this .getLive () .getValue () || alwaysUpdate)
this .getBrowser () .getDisk2DOptions () .addInterest ("requestRebuild", this);
else
this .getBrowser () .getDisk2DOptions () .removeInterest ("requestRebuild", this);
@ -1509,8 +1516,8 @@ Object .assign (Object .setPrototypeOf (Disk2D .prototype, (X3DGeometryNode_defa
this .buildTexCoords = base .prototype .buildTexCoords;
this .displaySimple = base .prototype .displaySimple;
this .display = base .prototype .display;
this .displaySimpleParticles = base .prototype .displaySimpleParticles;
this .displayParticles = base .prototype .displayParticles;
this .displaySimpleInstanced = base .prototype .displaySimpleInstanced;
this .displayInstanced = base .prototype .displayInstanced;
},
updateRenderFunctions ()
{ },
@ -1787,10 +1794,8 @@ const Polypoint2D_default_ = Polypoint2D;
Namespace_default().add ("Polypoint2D", "x_ite/Components/Geometry2D/Polypoint2D", Polypoint2D_default_);
/* harmony default export */ const Geometry2D_Polypoint2D = (Polypoint2D_default_);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"standard/Math/Numbers/Vector2\")"
const Vector2_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("standard/Math/Numbers/Vector2");
const Vector2_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("standard/Math/Numbers/Vector2");
var Vector2_default = /*#__PURE__*/__webpack_require__.n(Vector2_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"standard/Math/Numbers/Vector3\")"
const Vector3_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("standard/Math/Numbers/Vector3");
;// CONCATENATED MODULE: ./src/x_ite/Components/Geometry2D/Rectangle2D.js
/*******************************************************************************
*
@ -1846,7 +1851,6 @@ const Vector3_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .requir
function Rectangle2D (executionContext)
{
X3DGeometryNode_default().call (this, executionContext);

View File

@ -1,4 +1,4 @@
/* X_ITE v9.2.4 */(() => { // webpackBootstrap
/* X_ITE v9.7.0 */(() => { // webpackBootstrap
/******/ "use strict";
/******/ // The require scope
/******/ var __webpack_require__ = {};
@ -39,13 +39,10 @@ var __webpack_exports__ = {};
// UNUSED EXPORTS: default
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Components\")"
const Components_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Components");
const Components_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Components");
var Components_default = /*#__PURE__*/__webpack_require__.n(Components_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Fields\")"
const Fields_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Fields");
var Fields_default = /*#__PURE__*/__webpack_require__.n(Fields_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Namespace\")"
const Namespace_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Namespace");
const Namespace_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Namespace");
var Namespace_default = /*#__PURE__*/__webpack_require__.n(Namespace_namespaceObject);
;// CONCATENATED MODULE: ./src/x_ite/Browser/KeyDeviceSensor/X3DKeyDeviceSensorContext.js
/*******************************************************************************
@ -95,8 +92,6 @@ var Namespace_default = /*#__PURE__*/__webpack_require__.n(Namespace_namespaceOb
*
******************************************************************************/
const
_keyDeviceSensorNodes = Symbol (),
_keydown = Symbol (),
@ -149,17 +144,20 @@ const __default__ = X3DKeyDeviceSensorContext;
Namespace_default().add ("X3DKeyDeviceSensorContext", "x_ite/Browser/KeyDeviceSensor/X3DKeyDeviceSensorContext", __default__);
/* harmony default export */ const KeyDeviceSensor_X3DKeyDeviceSensorContext = (__default__);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Fields\")"
const Fields_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Fields");
var Fields_default = /*#__PURE__*/__webpack_require__.n(Fields_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Base/X3DFieldDefinition\")"
const X3DFieldDefinition_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Base/X3DFieldDefinition");
const X3DFieldDefinition_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Base/X3DFieldDefinition");
var X3DFieldDefinition_default = /*#__PURE__*/__webpack_require__.n(X3DFieldDefinition_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Base/FieldDefinitionArray\")"
const FieldDefinitionArray_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Base/FieldDefinitionArray");
const FieldDefinitionArray_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Base/FieldDefinitionArray");
var FieldDefinitionArray_default = /*#__PURE__*/__webpack_require__.n(FieldDefinitionArray_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Components/Core/X3DSensorNode\")"
const X3DSensorNode_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Components/Core/X3DSensorNode");
const X3DSensorNode_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Components/Core/X3DSensorNode");
var X3DSensorNode_default = /*#__PURE__*/__webpack_require__.n(X3DSensorNode_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Base/X3DConstants\")"
const X3DConstants_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Base/X3DConstants");
const X3DConstants_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Base/X3DConstants");
var X3DConstants_default = /*#__PURE__*/__webpack_require__.n(X3DConstants_namespaceObject);
;// CONCATENATED MODULE: ./src/x_ite/Components/KeyDeviceSensor/X3DKeyDeviceSensorNode.js
/*******************************************************************************
@ -747,7 +745,7 @@ Object .assign (Object .setPrototypeOf (StringSensor .prototype, KeyDeviceSensor
if (this ._deletionAllowed .getValue ())
{
if (this ._enteredText .length)
this ._enteredText = this ._enteredText .getValue () .substr (0, this ._enteredText .length - 1);
this ._enteredText = this ._enteredText .getValue () .substring (0, this ._enteredText .length - 1);
}
}

View File

@ -1,11 +1,11 @@
/* X_ITE v9.2.4 */(() => { // webpackBootstrap
/* X_ITE v9.7.0 */(() => { // webpackBootstrap
/******/ "use strict";
/******/ var __webpack_modules__ = ({
/***/ 72:
/***/ 823:
/***/ ((module) => {
module.exports = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("lib/jquery");
module.exports = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("lib/jquery");
/***/ })
@ -73,97 +73,97 @@ var __webpack_exports__ = {};
// UNUSED EXPORTS: default
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Components\")"
const Components_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Components");
const Components_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Components");
var Components_default = /*#__PURE__*/__webpack_require__.n(Components_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Base/X3DBaseNode\")"
const X3DBaseNode_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Base/X3DBaseNode");
const X3DBaseNode_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Base/X3DBaseNode");
var X3DBaseNode_default = /*#__PURE__*/__webpack_require__.n(X3DBaseNode_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Base/X3DFieldDefinition\")"
const X3DFieldDefinition_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Base/X3DFieldDefinition");
const X3DFieldDefinition_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Base/X3DFieldDefinition");
var X3DFieldDefinition_default = /*#__PURE__*/__webpack_require__.n(X3DFieldDefinition_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Base/FieldDefinitionArray\")"
const FieldDefinitionArray_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Base/FieldDefinitionArray");
const FieldDefinitionArray_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Base/FieldDefinitionArray");
var FieldDefinitionArray_default = /*#__PURE__*/__webpack_require__.n(FieldDefinitionArray_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Base/X3DField\")"
const X3DField_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Base/X3DField");
const X3DField_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Base/X3DField");
var X3DField_default = /*#__PURE__*/__webpack_require__.n(X3DField_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Base/X3DArrayField\")"
const X3DArrayField_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Base/X3DArrayField");
const X3DArrayField_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Base/X3DArrayField");
var X3DArrayField_default = /*#__PURE__*/__webpack_require__.n(X3DArrayField_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Fields\")"
const Fields_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Fields");
const Fields_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Fields");
var Fields_default = /*#__PURE__*/__webpack_require__.n(Fields_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Browser/X3DBrowser\")"
const X3DBrowser_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Browser/X3DBrowser");
const X3DBrowser_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Browser/X3DBrowser");
var X3DBrowser_default = /*#__PURE__*/__webpack_require__.n(X3DBrowser_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Configuration/ComponentInfo\")"
const ComponentInfo_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Configuration/ComponentInfo");
const ComponentInfo_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Configuration/ComponentInfo");
var ComponentInfo_default = /*#__PURE__*/__webpack_require__.n(ComponentInfo_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Configuration/ComponentInfoArray\")"
const ComponentInfoArray_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Configuration/ComponentInfoArray");
const ComponentInfoArray_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Configuration/ComponentInfoArray");
var ComponentInfoArray_default = /*#__PURE__*/__webpack_require__.n(ComponentInfoArray_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Configuration/ProfileInfo\")"
const ProfileInfo_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Configuration/ProfileInfo");
const ProfileInfo_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Configuration/ProfileInfo");
var ProfileInfo_default = /*#__PURE__*/__webpack_require__.n(ProfileInfo_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Configuration/ProfileInfoArray\")"
const ProfileInfoArray_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Configuration/ProfileInfoArray");
const ProfileInfoArray_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Configuration/ProfileInfoArray");
var ProfileInfoArray_default = /*#__PURE__*/__webpack_require__.n(ProfileInfoArray_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Configuration/ConcreteNodesArray\")"
const ConcreteNodesArray_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Configuration/ConcreteNodesArray");
const ConcreteNodesArray_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Configuration/ConcreteNodesArray");
var ConcreteNodesArray_default = /*#__PURE__*/__webpack_require__.n(ConcreteNodesArray_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Configuration/AbstractNodesArray\")"
const AbstractNodesArray_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Configuration/AbstractNodesArray");
const AbstractNodesArray_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Configuration/AbstractNodesArray");
var AbstractNodesArray_default = /*#__PURE__*/__webpack_require__.n(AbstractNodesArray_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Configuration/UnitInfo\")"
const UnitInfo_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Configuration/UnitInfo");
const UnitInfo_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Configuration/UnitInfo");
var UnitInfo_default = /*#__PURE__*/__webpack_require__.n(UnitInfo_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Configuration/UnitInfoArray\")"
const UnitInfoArray_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Configuration/UnitInfoArray");
const UnitInfoArray_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Configuration/UnitInfoArray");
var UnitInfoArray_default = /*#__PURE__*/__webpack_require__.n(UnitInfoArray_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Execution/NamedNodesArray\")"
const NamedNodesArray_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Execution/NamedNodesArray");
const NamedNodesArray_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Execution/NamedNodesArray");
var NamedNodesArray_default = /*#__PURE__*/__webpack_require__.n(NamedNodesArray_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Execution/ImportedNodesArray\")"
const ImportedNodesArray_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Execution/ImportedNodesArray");
const ImportedNodesArray_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Execution/ImportedNodesArray");
var ImportedNodesArray_default = /*#__PURE__*/__webpack_require__.n(ImportedNodesArray_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Execution/X3DImportedNode\")"
const X3DImportedNode_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Execution/X3DImportedNode");
const X3DImportedNode_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Execution/X3DImportedNode");
var X3DImportedNode_default = /*#__PURE__*/__webpack_require__.n(X3DImportedNode_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Execution/ExportedNodesArray\")"
const ExportedNodesArray_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Execution/ExportedNodesArray");
const ExportedNodesArray_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Execution/ExportedNodesArray");
var ExportedNodesArray_default = /*#__PURE__*/__webpack_require__.n(ExportedNodesArray_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Execution/X3DExportedNode\")"
const X3DExportedNode_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Execution/X3DExportedNode");
const X3DExportedNode_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Execution/X3DExportedNode");
var X3DExportedNode_default = /*#__PURE__*/__webpack_require__.n(X3DExportedNode_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Execution/X3DExecutionContext\")"
const X3DExecutionContext_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Execution/X3DExecutionContext");
const X3DExecutionContext_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Execution/X3DExecutionContext");
var X3DExecutionContext_default = /*#__PURE__*/__webpack_require__.n(X3DExecutionContext_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Execution/X3DScene\")"
const X3DScene_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Execution/X3DScene");
const X3DScene_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Execution/X3DScene");
var X3DScene_default = /*#__PURE__*/__webpack_require__.n(X3DScene_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Prototype/ExternProtoDeclarationArray\")"
const ExternProtoDeclarationArray_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Prototype/ExternProtoDeclarationArray");
const ExternProtoDeclarationArray_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Prototype/ExternProtoDeclarationArray");
var ExternProtoDeclarationArray_default = /*#__PURE__*/__webpack_require__.n(ExternProtoDeclarationArray_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Prototype/ProtoDeclarationArray\")"
const ProtoDeclarationArray_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Prototype/ProtoDeclarationArray");
const ProtoDeclarationArray_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Prototype/ProtoDeclarationArray");
var ProtoDeclarationArray_default = /*#__PURE__*/__webpack_require__.n(ProtoDeclarationArray_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Prototype/X3DExternProtoDeclaration\")"
const X3DExternProtoDeclaration_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Prototype/X3DExternProtoDeclaration");
const X3DExternProtoDeclaration_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Prototype/X3DExternProtoDeclaration");
var X3DExternProtoDeclaration_default = /*#__PURE__*/__webpack_require__.n(X3DExternProtoDeclaration_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Prototype/X3DProtoDeclaration\")"
const X3DProtoDeclaration_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Prototype/X3DProtoDeclaration");
const X3DProtoDeclaration_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Prototype/X3DProtoDeclaration");
var X3DProtoDeclaration_default = /*#__PURE__*/__webpack_require__.n(X3DProtoDeclaration_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Prototype/X3DProtoDeclarationNode\")"
const X3DProtoDeclarationNode_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Prototype/X3DProtoDeclarationNode");
const X3DProtoDeclarationNode_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Prototype/X3DProtoDeclarationNode");
var X3DProtoDeclarationNode_default = /*#__PURE__*/__webpack_require__.n(X3DProtoDeclarationNode_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Routing/RouteArray\")"
const RouteArray_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Routing/RouteArray");
const RouteArray_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Routing/RouteArray");
var RouteArray_default = /*#__PURE__*/__webpack_require__.n(RouteArray_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Routing/X3DRoute\")"
const X3DRoute_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Routing/X3DRoute");
const X3DRoute_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Routing/X3DRoute");
var X3DRoute_default = /*#__PURE__*/__webpack_require__.n(X3DRoute_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Namespace\")"
const Namespace_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Namespace");
const Namespace_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Namespace");
var Namespace_default = /*#__PURE__*/__webpack_require__.n(Namespace_namespaceObject);
;// CONCATENATED MODULE: ./src/x_ite/Browser/Scripting/evaluate.js
/*******************************************************************************
@ -239,13 +239,13 @@ const __default__ = evaluate;
Namespace_default().add ("evaluate", "x_ite/Browser/Scripting/evaluate", __default__);
/* harmony default export */ const Scripting_evaluate = (__default__);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Components/Core/X3DChildNode\")"
const X3DChildNode_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Components/Core/X3DChildNode");
const X3DChildNode_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Components/Core/X3DChildNode");
var X3DChildNode_default = /*#__PURE__*/__webpack_require__.n(X3DChildNode_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Components/Networking/X3DUrlObject\")"
const X3DUrlObject_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Components/Networking/X3DUrlObject");
const X3DUrlObject_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Components/Networking/X3DUrlObject");
var X3DUrlObject_default = /*#__PURE__*/__webpack_require__.n(X3DUrlObject_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Base/X3DConstants\")"
const X3DConstants_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Base/X3DConstants");
const X3DConstants_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Base/X3DConstants");
var X3DConstants_default = /*#__PURE__*/__webpack_require__.n(X3DConstants_namespaceObject);
;// CONCATENATED MODULE: ./src/x_ite/Components/Scripting/X3DScriptNode.js
/*******************************************************************************
@ -342,13 +342,13 @@ const X3DScriptNode_default_ = X3DScriptNode;
Namespace_default().add ("X3DScriptNode", "x_ite/Components/Scripting/X3DScriptNode", X3DScriptNode_default_);
/* harmony default export */ const Scripting_X3DScriptNode = (X3DScriptNode_default_);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/InputOutput/FileLoader\")"
const FileLoader_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/InputOutput/FileLoader");
const FileLoader_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/InputOutput/FileLoader");
var FileLoader_default = /*#__PURE__*/__webpack_require__.n(FileLoader_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Fields/SFNodeCache\")"
const SFNodeCache_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Fields/SFNodeCache");
const SFNodeCache_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Fields/SFNodeCache");
var SFNodeCache_default = /*#__PURE__*/__webpack_require__.n(SFNodeCache_namespaceObject);
;// CONCATENATED MODULE: ./src/x_ite/Components/Scripting/Script.js
/* provided dependency */ var $ = __webpack_require__(72);
/* provided dependency */ var $ = __webpack_require__(823);
/*******************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@ -482,11 +482,36 @@ Object .assign (Object .setPrototypeOf (Script .prototype, Scripting_X3DScriptNo
},
unloadData ()
{
this .initialize__ ("");
// Call shutdown.
const shutdown = this .context ?.get ("shutdown");
if (typeof shutdown === "function")
this .call__ (shutdown, "shutdown");
// Disconnect shutdown.
$(window) .off (`.Script${this .getId ()}`);
// Disconnect prepareEvents.
this .getBrowser () .prepareEvents () .removeInterest ("call__", this);
// Disconnect eventsProcessed.
this .removeInterest ("call__", this);
// Disconnect fields.
for (const field of this .getUserDefinedFields ())
field .removeInterest ("set_field__", this);
},
loadData ()
async loadData ()
{
new (FileLoader_default()) (this) .loadDocument (this ._url, (data) =>
// See: 29.2.2 Script execution
await this .unloadData ();
new (FileLoader_default()) (this) .loadDocument (this ._url, data =>
{
if (data === null)
{
@ -502,7 +527,25 @@ Object .assign (Object .setPrototypeOf (Script .prototype, Scripting_X3DScriptNo
},
createGlobalObject ()
{
const browser = this .getBrowser ();
const getScriptNode = () => this;
const handler =
{
get (target, key)
{
switch (key)
{
case "getScriptNode":
return getScriptNode;
case "currentScene":
return getScriptNode () .getExecutionContext ();
default:
return target [key];
}
},
};
const browser = new Proxy (this .getBrowser (), handler);
function SFNode (vrmlSyntax)
{
@ -602,23 +645,20 @@ Object .assign (Object .setPrototypeOf (Script .prototype, Scripting_X3DScriptNo
for (const field of this .getUserDefinedFields ())
{
const name = field .getName ();
if (field .getAccessType () === (X3DConstants_default()).inputOnly)
continue;
if (!(name in globalObject))
{
globalObject [name] =
{
get: field .valueOf .bind (field),
set: field .setValue .bind (field),
};
}
const names = [field .getName ()];
if (field .getAccessType () === (X3DConstants_default()).inputOutput)
names .push (field .getName () + "_changed");
for (const name of names)
{
globalObject [name + "_changed"] =
if (name in globalObject)
continue;
globalObject [name] =
{
get: field .valueOf .bind (field),
set: field .setValue .bind (field),
@ -658,26 +698,13 @@ Object .assign (Object .setPrototypeOf (Script .prototype, Scripting_X3DScriptNo
},
evaluate (sourceText)
{
const browser = this .getBrowser ();
try
{
browser .getScriptStack () .push (this);
if (!this .globalObject)
this .globalObject = this .createGlobalObject ();
return Scripting_evaluate (SFNodeCache_default().get (this), this .globalObject, sourceText);
}
finally
{
browser .getScriptStack () .pop ();
}
},
initialize__ (sourceText)
async initialize__ (sourceText)
{
this .disconnect ();
const browser = this .getBrowser ();
// Create context.
@ -690,7 +717,7 @@ Object .assign (Object .setPrototypeOf (Script .prototype, Scripting_X3DScriptNo
const shutdown = this .context .get ("shutdown");
if (typeof shutdown === "function")
$(window) .on ("unload.Script" + this .getId (), this .call__ .bind (this, shutdown, "shutdown"));
$(window) .on (`unload.Script${this .getId ()}`, () => this .call__ (shutdown, "shutdown"));
// Connect prepareEvents.
@ -717,7 +744,7 @@ Object .assign (Object .setPrototypeOf (Script .prototype, Scripting_X3DScriptNo
const callback = this .context .get (field .getName ());
if (typeof callback === "function")
field .addInterest ("set_field__", this, callback);
field .addInterest ("set_field__", this, callback, [ ]);
break;
}
@ -726,7 +753,7 @@ Object .assign (Object .setPrototypeOf (Script .prototype, Scripting_X3DScriptNo
const callback = this .context .get ("set_" + field .getName ());
if (typeof callback === "function")
field .addInterest ("set_field__", this, callback);
field .addInterest ("set_field__", this, callback, [ ]);
break;
}
@ -738,43 +765,37 @@ Object .assign (Object .setPrototypeOf (Script .prototype, Scripting_X3DScriptNo
const initialize = this .context .get ("initialize");
if (typeof initialize === "function")
this .call__ (initialize, "initialize");
await this .call__ (initialize, "initialize");
},
call__ (callback, name)
async call__ (callback, name)
{
const browser = this .getBrowser ();
browser .getScriptStack () .push (this);
try
{
callback .call (SFNodeCache_default().get (this), browser .getCurrentTime ());
await callback .call (SFNodeCache_default().get (this), this .getBrowser () .getCurrentTime ());
}
catch (error)
{
this .setError (`in function '${name}'`, error);
}
browser .getScriptStack () .pop ();
},
set_field__ (callback, field)
async set_field__ (callback, cache, field)
{
const browser = this .getBrowser ();
field .setTainted (true);
browser .getScriptStack () .push (this);
const copy = cache .pop () ?? field .create ();
try
{
callback .call (SFNodeCache_default().get (this), field .valueOf (), browser .getCurrentTime ());
copy .assign (field);
await callback .call (SFNodeCache_default().get (this), copy .valueOf (), this .getBrowser () .getCurrentTime ());
}
catch (error)
{
this .setError (`in function '${field .getName()}'`, error);
this .setError (`in function '${field .getName ()}'`, error);
}
finally
{
cache .push (copy);
}
browser .getScriptStack () .pop ();
field .setTainted (false);
},
setError (reason, error)
{
@ -785,35 +806,9 @@ Object .assign (Object .setPrototypeOf (Script .prototype, Scripting_X3DScriptNo
console .error (`JavaScript Error in Script '${this .getName ()}', ${reason}\nworld url is '${worldURL}':`);
console .error (error);
},
disconnect ()
{
// Call shutdown.
const shutdown = this .context ?.get ("shutdown");
if (typeof shutdown === "function")
this .call__ (shutdown, "shutdown");
// Disconnect shutdown.
$(window) .off (".Script" + this .getId ());
// Disconnect prepareEvents.
this .getBrowser () .prepareEvents () .removeInterest ("call__", this);
// Disconnect eventsProcessed.
this .removeInterest ("call__", this);
// Disconnect fields.
for (const field of this .getUserDefinedFields ())
field .removeInterest ("set_field__", this);
},
dispose ()
{
this .disconnect ();
this .unloadData ();
Scripting_X3DScriptNode .prototype .dispose .call (this);
},

View File

@ -1,7 +1,7 @@
/* X_ITE v9.2.4 */(() => { // webpackBootstrap
/* X_ITE v9.7.0 */(() => { // webpackBootstrap
/******/ var __webpack_modules__ = ({
/***/ 636:
/***/ 134:
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
/**
@ -13599,7 +13599,7 @@
console.warn('Font file could not be downloaded. Try using a different browser.');
}
} else {
var fs = __webpack_require__(432);
var fs = __webpack_require__(256);
var buffer = arrayBufferToNodeBuffer(arrayBuffer);
fs.writeFileSync(fileName, buffer);
}
@ -14072,7 +14072,7 @@
* @param {Function} callback - The function to call when the font load completes
*/
function loadFromFile(path, callback) {
var fs = __webpack_require__(432);
var fs = __webpack_require__(256);
fs.readFile(path, function(err, buffer) {
if (err) {
return callback(err.message);
@ -14449,7 +14449,7 @@
* @return {opentype.Font}
*/
function loadSync(url, opt) {
var fs = __webpack_require__(432);
var fs = __webpack_require__(256);
var buffer = fs.readFileSync(url);
return parseBuffer(nodeBufferToArrayBuffer(buffer), opt);
}
@ -14484,15 +14484,15 @@
/***/ }),
/***/ 72:
/***/ 823:
/***/ ((module) => {
"use strict";
module.exports = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("lib/jquery");
module.exports = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("lib/jquery");
/***/ }),
/***/ 432:
/***/ 256:
/***/ (() => {
/* (ignored) */
@ -14564,25 +14564,25 @@ var __webpack_exports__ = {};
// UNUSED EXPORTS: default
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Components\")"
const Components_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Components");
const Components_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Components");
var Components_default = /*#__PURE__*/__webpack_require__.n(Components_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Fields\")"
const Fields_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Fields");
const Fields_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Fields");
var Fields_default = /*#__PURE__*/__webpack_require__.n(Fields_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Base/X3DFieldDefinition\")"
const X3DFieldDefinition_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Base/X3DFieldDefinition");
const X3DFieldDefinition_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Base/X3DFieldDefinition");
var X3DFieldDefinition_default = /*#__PURE__*/__webpack_require__.n(X3DFieldDefinition_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Base/FieldDefinitionArray\")"
const FieldDefinitionArray_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Base/FieldDefinitionArray");
const FieldDefinitionArray_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Base/FieldDefinitionArray");
var FieldDefinitionArray_default = /*#__PURE__*/__webpack_require__.n(FieldDefinitionArray_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Components/Core/X3DNode\")"
const X3DNode_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Components/Core/X3DNode");
const X3DNode_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Components/Core/X3DNode");
var X3DNode_default = /*#__PURE__*/__webpack_require__.n(X3DNode_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Components/Networking/X3DUrlObject\")"
const X3DUrlObject_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Components/Networking/X3DUrlObject");
const X3DUrlObject_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Components/Networking/X3DUrlObject");
var X3DUrlObject_default = /*#__PURE__*/__webpack_require__.n(X3DUrlObject_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Namespace\")"
const Namespace_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Namespace");
const Namespace_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Namespace");
var Namespace_default = /*#__PURE__*/__webpack_require__.n(Namespace_namespaceObject);
;// CONCATENATED MODULE: ./src/x_ite/Browser/Text/TextAlignment.js
/*******************************************************************************
@ -14648,12 +14648,12 @@ const __default__ = TextAlignment;
Namespace_default().add ("TextAlignment", "x_ite/Browser/Text/TextAlignment", __default__);
/* harmony default export */ const Text_TextAlignment = (__default__);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/InputOutput/FileLoader\")"
const FileLoader_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/InputOutput/FileLoader");
const FileLoader_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/InputOutput/FileLoader");
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Base/X3DConstants\")"
const X3DConstants_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Base/X3DConstants");
const X3DConstants_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Base/X3DConstants");
var X3DConstants_default = /*#__PURE__*/__webpack_require__.n(X3DConstants_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Browser/Networking/URLs\")"
const URLs_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Browser/Networking/URLs");
const URLs_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Browser/Networking/URLs");
var URLs_default = /*#__PURE__*/__webpack_require__.n(URLs_namespaceObject);
;// CONCATENATED MODULE: ./src/x_ite/Components/Text/X3DFontStyleNode.js
/*******************************************************************************
@ -14712,30 +14712,29 @@ var URLs_default = /*#__PURE__*/__webpack_require__.n(URLs_namespaceObject);
/*
* Font paths for default SERIF, SANS and TYPWRITER families.
* Font paths for default SERIF, SANS and TYPEWRITER families.
*/
const Fonts =
{
SERIF: {
PLAIN: URLs_default().getFontsURL ("DroidSerif-Regular.ttf"),
ITALIC: URLs_default().getFontsURL ("DroidSerif-Italic.ttf"),
BOLD: URLs_default().getFontsURL ("DroidSerif-Bold.ttf"),
BOLDITALIC: URLs_default().getFontsURL ("DroidSerif-BoldItalic.ttf"),
},
SANS: {
PLAIN: URLs_default().getFontsURL ("Ubuntu-R.ttf"),
ITALIC: URLs_default().getFontsURL ("Ubuntu-RI.ttf"),
BOLD: URLs_default().getFontsURL ("Ubuntu-B.ttf"),
BOLDITALIC: URLs_default().getFontsURL ("Ubuntu-BI.ttf"),
},
TYPEWRITER: {
PLAIN: URLs_default().getFontsURL ("UbuntuMono-R.ttf"),
ITALIC: URLs_default().getFontsURL ("UbuntuMono-RI.ttf"),
BOLD: URLs_default().getFontsURL ("UbuntuMono-B.ttf"),
BOLDITALIC: URLs_default().getFontsURL ("UbuntuMono-BI.ttf"),
},
};
const Fonts = new Map ([
["SERIF", new Map ([
["PLAIN", URLs_default().getFontsURL ("DroidSerif-Regular.ttf")],
["ITALIC", URLs_default().getFontsURL ("DroidSerif-Italic.ttf")],
["BOLD", URLs_default().getFontsURL ("DroidSerif-Bold.ttf")],
["BOLDITALIC", URLs_default().getFontsURL ("DroidSerif-BoldItalic.ttf")],
])],
["SANS", new Map ([
["PLAIN", URLs_default().getFontsURL ("Ubuntu-R.ttf")],
["ITALIC", URLs_default().getFontsURL ("Ubuntu-RI.ttf")],
["BOLD", URLs_default().getFontsURL ("Ubuntu-B.ttf")],
["BOLDITALIC", URLs_default().getFontsURL ("Ubuntu-BI.ttf")],
])],
["TYPEWRITER", new Map ([
["PLAIN", URLs_default().getFontsURL ("UbuntuMono-R.ttf")],
["ITALIC", URLs_default().getFontsURL ("UbuntuMono-RI.ttf")],
["BOLD", URLs_default().getFontsURL ("UbuntuMono-B.ttf")],
["BOLDITALIC", URLs_default().getFontsURL ("UbuntuMono-BI.ttf")],
])],
]);
function X3DFontStyleNode (executionContext)
{
@ -14837,10 +14836,10 @@ Object .assign (Object .setPrototypeOf (X3DFontStyleNode .prototype, (X3DNode_de
},
getDefaultFont (familyName)
{
const family = Fonts [familyName];
const family = Fonts .get (familyName);
if (family)
return family [this ._style .getValue ()] || family .PLAIN;
return family .get (this ._style .getValue ()) ?? family .get ("PLAIN");
return;
},
@ -14857,7 +14856,7 @@ Object .assign (Object .setPrototypeOf (X3DFontStyleNode .prototype, (X3DNode_de
this .familyStack .length = 0;
for (const familyName of family)
this .familyStack .push (this .getDefaultFont (familyName) || familyName);
this .familyStack .push (this .getDefaultFont (familyName) ?? familyName);
this .loadNext ();
},
@ -14922,19 +14921,19 @@ const X3DFontStyleNode_default_ = X3DFontStyleNode;
Namespace_default().add ("X3DFontStyleNode", "x_ite/Components/Text/X3DFontStyleNode", X3DFontStyleNode_default_);
/* harmony default export */ const Text_X3DFontStyleNode = (X3DFontStyleNode_default_);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Browser/Core/PrimitiveQuality\")"
const PrimitiveQuality_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Browser/Core/PrimitiveQuality");
const PrimitiveQuality_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Browser/Core/PrimitiveQuality");
var PrimitiveQuality_default = /*#__PURE__*/__webpack_require__.n(PrimitiveQuality_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"standard/Math/Geometry/Box2\")"
const Box2_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("standard/Math/Geometry/Box2");
const Box2_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("standard/Math/Geometry/Box2");
var Box2_default = /*#__PURE__*/__webpack_require__.n(Box2_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"standard/Math/Geometry/Box3\")"
const Box3_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("standard/Math/Geometry/Box3");
const Box3_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("standard/Math/Geometry/Box3");
var Box3_default = /*#__PURE__*/__webpack_require__.n(Box3_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"standard/Math/Numbers/Vector2\")"
const Vector2_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("standard/Math/Numbers/Vector2");
const Vector2_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("standard/Math/Numbers/Vector2");
var Vector2_default = /*#__PURE__*/__webpack_require__.n(Vector2_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"standard/Math/Numbers/Vector3\")"
const Vector3_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("standard/Math/Numbers/Vector3");
const Vector3_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("standard/Math/Numbers/Vector3");
var Vector3_default = /*#__PURE__*/__webpack_require__.n(Vector3_namespaceObject);
;// CONCATENATED MODULE: ./src/x_ite/Browser/Text/X3DTextGeometry.js
/*******************************************************************************
@ -14993,22 +14992,22 @@ var Vector3_default = /*#__PURE__*/__webpack_require__.n(Vector3_namespaceObject
var
bbox = new (Box2_default()) (),
lineBBox = new (Box2_default()) (),
min = new (Vector2_default()) (0, 0),
max = new (Vector2_default()) (0, 0),
glyphMin = new (Vector2_default()) (0, 0),
glyphMax = new (Vector2_default()) (0, 0),
min3 = new (Vector3_default()) (0, 0, 0),
max3 = new (Vector3_default()) (0, 0, 0),
size = new (Vector2_default()) (0, 0),
center = new (Vector2_default()) (0, 0),
size1_2 = new (Vector2_default()) (0, 0),
translation = new (Vector2_default()) (0, 0),
lineBound = new (Vector2_default()) (0, 0),
origin = new (Vector3_default()) (0, 0, 0),
vector = new (Vector2_default()) (0, 0),
min = new (Vector2_default()) (),
max = new (Vector2_default()) (),
glyphMin = new (Vector2_default()) (),
glyphMax = new (Vector2_default()) (),
min3 = new (Vector3_default()) (),
max3 = new (Vector3_default()) (),
size = new (Vector2_default()) (),
center = new (Vector2_default()) (),
size1_2 = new (Vector2_default()) (),
translation = new (Vector2_default()) (),
lineBound = new (Vector2_default()) (),
origin = new (Vector3_default()) (),
vector = new (Vector2_default()) (),
box2 = new (Box2_default()) (),
zero2 = new (Vector2_default()) (0, 0),
zero3 = new (Vector3_default()) (0, 0, 0);
zero2 = new (Vector2_default()) (),
zero3 = new (Vector3_default()) ();
function X3DTextGeometry (text, fontStyle)
{
@ -15016,10 +15015,10 @@ function X3DTextGeometry (text, fontStyle)
this .text = text;
this .fontStyle = fontStyle;
this .glyphs = [ ];
this .minorAlignment = new (Vector2_default()) (0, 0);
this .minorAlignment = new (Vector2_default()) ();
this .translations = [ ];
this .charSpacings = [ ];
this .bearing = new (Vector2_default()) (0, 0);
this .bearing = new (Vector2_default()) ();
this .yPad = [ ];
this .bbox = new (Box3_default()) ();
}
@ -15108,7 +15107,7 @@ Object .assign (X3DTextGeometry .prototype,
// Resize array in grow only fashion.
for (var i = array .length; i < size; ++ i)
array .push (new (Vector2_default()) (0, 0));
array .push (new (Vector2_default()) ());
array .length = size;
},
@ -15556,13 +15555,13 @@ const X3DTextGeometry_default_ = X3DTextGeometry;
Namespace_default().add ("X3DTextGeometry", "x_ite/Browser/Text/X3DTextGeometry", X3DTextGeometry_default_);
/* harmony default export */ const Text_X3DTextGeometry = (X3DTextGeometry_default_);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"standard/Math/Numbers/Matrix4\")"
const Matrix4_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("standard/Math/Numbers/Matrix4");
const Matrix4_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("standard/Math/Numbers/Matrix4");
var Matrix4_default = /*#__PURE__*/__webpack_require__.n(Matrix4_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"standard/Math/Algorithms/Bezier\")"
const Bezier_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("standard/Math/Algorithms/Bezier");
const Bezier_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("standard/Math/Algorithms/Bezier");
var Bezier_default = /*#__PURE__*/__webpack_require__.n(Bezier_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"lib/libtess\")"
const libtess_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("lib/libtess");
const libtess_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("lib/libtess");
var libtess_default = /*#__PURE__*/__webpack_require__.n(libtess_namespaceObject);
;// CONCATENATED MODULE: ./src/x_ite/Browser/Text/PolygonText.js
/*******************************************************************************
@ -15639,8 +15638,8 @@ Object .assign (Object .setPrototypeOf (PolygonText .prototype, Text_X3DTextGeom
build: (() =>
{
const
min = new (Vector3_default()) (0, 0, 0),
max = new (Vector3_default()) (0, 0, 0);
min = new (Vector3_default()) (),
max = new (Vector3_default()) ();
return function ()
{
@ -15891,7 +15890,7 @@ Object .assign (Object .setPrototypeOf (PolygonText .prototype, Text_X3DTextGeom
tessy .gluTessCallback ((libtess_default()).gluEnum .GLU_TESS_VERTEX_DATA, vertexCallback);
tessy .gluTessCallback ((libtess_default()).gluEnum .GLU_TESS_COMBINE, combineCallback);
tessy .gluTessProperty ((libtess_default()).gluEnum .GLU_TESS_WINDING_RULE, (libtess_default()).windingRule .GLU_TESS_WINDING_ODD);
tessy .gluTessProperty ((libtess_default()).gluEnum .GLU_TESS_WINDING_RULE, (libtess_default()).windingRule .GLU_TESS_WINDING_NONZERO);
tessy .gluTessNormal (0, 0, 1);
return function (contours, triangles)
@ -16048,8 +16047,8 @@ const FontStyle_default_ = FontStyle;
Namespace_default().add ("FontStyle", "x_ite/Components/Text/FontStyle", FontStyle_default_);
/* harmony default export */ const Text_FontStyle = (FontStyle_default_);
;// CONCATENATED MODULE: ./src/x_ite/Browser/Text/X3DTextContext.js
/* provided dependency */ var $ = __webpack_require__(72);
/* provided dependency */ var opentype = __webpack_require__(636);
/* provided dependency */ var $ = __webpack_require__(823);
/* provided dependency */ var opentype = __webpack_require__(134);
/*******************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@ -16189,10 +16188,10 @@ const X3DTextContext_default_ = X3DTextContext;
Namespace_default().add ("X3DTextContext", "x_ite/Browser/Text/X3DTextContext", X3DTextContext_default_);
/* harmony default export */ const Text_X3DTextContext = (X3DTextContext_default_);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Components/Rendering/X3DGeometryNode\")"
const X3DGeometryNode_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Components/Rendering/X3DGeometryNode");
const X3DGeometryNode_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Components/Rendering/X3DGeometryNode");
var X3DGeometryNode_default = /*#__PURE__*/__webpack_require__.n(X3DGeometryNode_namespaceObject);
;// CONCATENATED MODULE: external "window [Symbol .for (\"X_ITE.X3D\")] .require (\"x_ite/Base/X3DCast\")"
const X3DCast_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.2.4")] .require ("x_ite/Base/X3DCast");
const X3DCast_namespaceObject = window [Symbol .for ("X_ITE.X3D-9.7.0")] .require ("x_ite/Base/X3DCast");
var X3DCast_default = /*#__PURE__*/__webpack_require__.n(X3DCast_namespaceObject);
;// CONCATENATED MODULE: ./src/x_ite/Components/Text/Text.js
/*******************************************************************************
@ -16287,7 +16286,9 @@ Object .assign (Object .setPrototypeOf (Text .prototype, (X3DGeometryNode_defaul
{
X3DGeometryNode_default().prototype .set_live__ .call (this);
if (this .getLive () .getValue ())
const alwaysUpdate = this .isLive () && this .getBrowser () .getBrowserOption ("AlwaysUpdateGeometries");
if (this .getLive () .getValue () || alwaysUpdate)
this .getBrowser () .getBrowserOptions () ._PrimitiveQuality .addInterest ("requestRebuild", this);
else
this .getBrowser () .getBrowserOptions () ._PrimitiveQuality .removeInterest ("requestRebuild", this);

File diff suppressed because one or more lines are too long

View File

@ -4,7 +4,7 @@
// Handle both importing via UMD and modules:
export default X3D;
//export = X3D;
export = X3D;
declare const X3D: X3D;
@ -45,6 +45,7 @@ interface X3D
readonly ProtoDeclarationArray: typeof ProtoDeclarationArray;
readonly X3DExternProtoDeclaration: typeof X3DExternProtoDeclaration;
readonly X3DProtoDeclaration: typeof X3DProtoDeclaration;
readonly NamedNodesArray: typeof NamedNodesArray;
readonly ImportedNodesArray: typeof ImportedNodesArray;
readonly X3DImportedNode: typeof X3DImportedNode;
readonly ExportedNodesArray: typeof ExportedNodesArray;
@ -176,6 +177,10 @@ declare class X3DBrowser
* Returns a list of all abstract node classes that are supported by this browser.
*/
readonly abstractNodes: AbstractNodesArray;
/**
* Returns a list of all field type classes that are supported by this browser.
*/
readonly fieldTypes: FieldTypesArray;
/**
* A String value containing the URL against which relative URLs are resolved. By default, this is the address of the web page itself. Although this feature is rarely needed, it can be useful when loading a `data:` or `blob:` URL with `Browser.loadURL`, or when using `Browser.createX3DFromString`. The value of *baseURL* will only be used with the external browser.
*/
@ -184,7 +189,10 @@ declare class X3DBrowser
* The real type of this class is dependent on whether the user code is inside a prototype instance or not. If the user code is inside a prototype instance the property represent an X3DExecutionContext otherwise it represent an X3DScene.
*/
readonly currentScene: X3DScene;
/**
* Returns a reference to the corresponding X3DCanvasElement.
*/
readonly element: X3DCanvasElement;
/**
* Replace the current world with this new scene that has been loaded or constructed from somewhere. A Promise is returned that will be resolved when the scene is completely loaded.
*/
@ -278,6 +286,26 @@ declare class X3DBrowser
* Prints *args* to the browsers console, inserting a newline character after the output. Successive calls to this function will result in each output presented on separate lines. The output is the implicit call to the objects `toString ()` function.
*/
printLn (... args: any []): void;
/**
* Returns the X3D VRML-encoded string of current scene that, if parsed as the value of `createX3DFromString ()` of X3DBrowser, produce this scene.
*/
toVRMLString (options?: ToStringOptions): string;
/**
* Returns the X3D XML-encoded string of current scene that, if parsed as the value of `createX3DFromString ()` of X3DBrowser, produce this scene.
*
* For *options* see `X3DScene.toVRMLString`.
*/
toXMLString (options?: ToStringOptions): string;
/**
* Returns the X3D JSON-encoded string of current scene that, if parsed as the value of `createX3DFromString ()` of X3DBrowser, produce this scene.
*
* For *options* see `X3DScene.toVRMLString`.
*/
toJSONString (options?: ToStringOptions): string;
/**
* Disposes this object.
*/
dispose (): void;
// VRML methods
@ -304,7 +332,7 @@ declare class X3DBrowser
/**
* Replace the current world with this new nodes that has been loaded or constructed from somewhere.
*/
replaceWorld (nodes: MFNode): string;
replaceWorld (nodes: MFNode): Promise <void>;
/**
* The string may be any valid VRML content.
*/
@ -421,13 +449,13 @@ type ContextMenuOptions = {
callback?: MenuCallback,
build?: ($triggerElement: unknown, e: Event) => ContextMenuOptions,
itemClickEvent?: string,
}
};
type UserMenuCallback = () => UserMenuItems
type UserMenuItems = Record <string, UserMenuItem>
type MenuCallback = (itemKey: string, options: ContextMenuOptions, event: Event) => (boolean | void)
type MenuIconCallback = (options: ContextMenuOptions, $itemElement: HTMLElement, itemKey: string, item: unknown) => string
type MenuBoolCallback = (itemKey: string, options: ContextMenuOptions) => boolean
type UserMenuCallback = (browser: X3DBrowser) => UserMenuItems;
type UserMenuItems = Record <string, UserMenuItem>;
type MenuCallback = (itemKey: string, options: ContextMenuOptions, event: Event) => (boolean | void);
type MenuIconCallback = (options: ContextMenuOptions, $itemElement: HTMLElement, itemKey: string, item: unknown) => string;
type MenuBoolCallback = (itemKey: string, options: ContextMenuOptions) => boolean;
type UserMenuItem = {
name: string,
isHtmlName?: boolean,
@ -446,7 +474,7 @@ type UserMenuItem = {
items?: UserMenuItems,
accesskey?: string,
dataAttr?: Record <string, string>,
}
};
/**
* A scene is an extension of the execution context services with additional services provided.
@ -529,6 +557,10 @@ declare class X3DScene extends X3DExecutionContext
* For *options* see `X3DScene.toVRMLString`.
*/
toJSONString (options?: ToStringOptions): string;
/**
* Disposes this object.
*/
dispose (): void;
}
/**
@ -656,11 +688,11 @@ interface X3DConcreteNode extends X3DAbstractNode
/**
* The default container field name for this node. This property is read only.
*/
readonly containerField: string;
static readonly containerField: string;
/**
* Returns an array with two strings defining the first version and last version where this node is specified. This property is read only.
*/
readonly specificationRange:
static readonly specificationRange:
{
readonly from: string,
readonly to: string,
@ -668,7 +700,7 @@ interface X3DConcreteNode extends X3DAbstractNode
/**
* Returns a list of fields defined for the SFNode object.
*/
readonly fieldDefinitions: FieldDefinitionArray;
static readonly fieldDefinitions: FieldDefinitionArray;
}
/**
@ -684,17 +716,22 @@ interface X3DAbstractNode
/**
* The node type name for this class. This property is read only.
*/
readonly typeName: string;
static readonly typeName: string;
/**
* Returns an object with two properties *name* and *level* which can be used to get a ComponentInfo object from the X3D browser. This property is read only.
*/
readonly componentInfo:
static readonly componentInfo:
{
readonly name: string,
readonly level: number,
};
}
/**
* FieldTypesArray is an object that represents an array of classes derived from X3DField. This is a read-only object. Individual elements of the array can be referenced using the standard C-style dereferencing operator (e.g. *FieldTypesArray*[*index*], where *index* is an integer-valued expression with 0\<=*index*\<length and length is the number of elements in the array).
*/
declare class FieldTypesArray extends X3DInfoArray <X3DField> { }
/**
* ProfileInfoArray is an object that represents an array of ProfileInfo objects. This is a read-only object. Individual elements of the array can be referenced using the standard C-style dereferencing operator (e.g. *profileInfoArrayName*[*index*], where *index* is an integer-valued expression with 0\<=*index*\<length and length is the number of elements in the array).
*/
@ -788,7 +825,7 @@ declare class ImportedNodesArray extends X3DInfoArray <X3DImportedNode> { }
/**
* The X3DImportedNode object stores information about a particular import declaration. The object consists solely of read-only properties. It does not define any additional functions.
*/
declare class X3DImportedNode
class X3DImportedNode
{
/**
* The SFNode object of the Inline node. This property is read only.
@ -816,7 +853,7 @@ declare class ExportedNodesArray extends X3DInfoArray <X3DExportedNode> { }
/**
* The X3DExportedNode object stores information about a particular export declaration. The object consists solely of read-only properties. It does not define any additional functions.
*/
declare class X3DExportedNode
class X3DExportedNode
{
/**
* A string of the exported name. This property is read only.
@ -1435,6 +1472,9 @@ declare class X3DFieldDefinition
*/
declare class X3DField
{
/**
* Returns a copy of this X3DField.
*/
copy (): this;
/**
* Returns true if the passed SF* or MF* *field* of the same type is equals to this object, otherwise false.
@ -1462,7 +1502,7 @@ declare class X3DField
getFieldInterests (): Set <this>
addFieldCallback (key: any, callback: (value: unknown) => void): void;
removeFieldCallback (key: any): void;
getFieldCallbacks (): Map <any, (value: X3DField) => void>;
getFieldCallbacks (): Map <any, (value: this) => void>;
addInputRoute (route: X3DRoute): void;
removeInputRoute (route: X3DRoute): void;
getInputRoutes (): Set <X3DRoute>;
@ -1472,6 +1512,9 @@ declare class X3DField
addRouteCallback (key: any, callback: () => void): void;
removeRouteCallback (key: any): void;
getRouteCallbacks (): Map <any, () => void>;
/**
* Disposes this object.
*/
dispose (): void;
}
@ -1890,6 +1933,10 @@ declare class SFNode extends X3DField
* @deprecated Use `node .getField (name) .addFieldCallback (key, callback)`.
*/
addFieldCallback (name: string, key: any, callback: (value: unknown) => void): void;
/**
* Returns the corresponding X3DFieldDefinition object associated with *name*.
*/
getFieldDefinition (name: string): X3DFieldDefinition;
/**
* Returns a list of fields defined for the SFNode object.
*/
@ -2040,11 +2087,15 @@ declare class SFRotation extends X3DField
/**
* Set the value of this rotation to the rotation matrix passed in *matrix*.
*/
setMatrix (matrix: SFMatrix3): void;
setMatrix (matrix: SFMatrix3d | SFMatrix3f): void;
/**
* Returns a SFRotation whose value is the spherical linear interpolation between this object's rotation and *destRotation* at value 0 <= *t* <= 1. For *t* = 0, the value is this object's rotation. For *t* = 1, the value is *destRotation*.
*/
slerp (destination: SFRotation, t: number): SFRotation;
/**
* Straightens the rotation so that the x-axis of the resulting rotation is parallel to the plane spawned by upVector. The default value for *upVector* is the y-axis.
*/
straighten (upVector?: SFVec3d | SFVec3f): SFRotation;
}
/**
@ -5127,7 +5178,7 @@ interface ComposedShaderProxy extends X3DShaderNodeProxy, X3DProgrammableShaderO
*
* This field is of access type 'inputOutput' and type MFNode.
*/
field: MFNode <X3DChildNodeProxy>;
field: MFNode <fieldProxy>;
/**
* isSelected indicates this shader instance is selected for use by browser Warning: it is an error to define this transient outputOnly field in an X3D file, instead only use it a source for ROUTE events.
*
@ -13097,7 +13148,7 @@ interface PackagedShaderProxy extends X3DShaderNodeProxy, X3DUrlObjectProxy, X3D
*
* This field is of access type 'inputOutput' and type MFNode.
*/
field: MFNode <X3DChildNodeProxy>;
field: MFNode <fieldProxy>;
/**
* isSelected indicates this shader instance is selected for use by browser Warning: it is an error to define this transient outputOnly field in an X3D file, instead only use it a source for ROUTE events.
*
@ -15457,7 +15508,7 @@ interface ScriptProxy extends X3DScriptNodeProxy
*
* This field is of access type 'inputOutput' and type MFNode.
*/
field: MFNode <X3DChildNodeProxy>;
field: MFNode <fieldProxy>;
/**
* load=true means load immediately, load=false means defer loading or else unload a previously loaded scene.
*
@ -15681,7 +15732,7 @@ interface ShaderProgramProxy extends X3DNodeProxy, X3DUrlObjectProxy, X3DProgram
*
* This field is of access type 'inputOutput' and type MFNode.
*/
field: MFNode <X3DChildNodeProxy>;
field: MFNode <fieldProxy>;
/**
* load=true means load immediately, load=false means defer loading or else unload a previously loaded scene.
*

File diff suppressed because it is too large Load Diff

73
etc/jsxgraph_types.patch Normal file
View File

@ -0,0 +1,73 @@
--- node_modules/jsxgraph/distrib/index.d.ts 2024-04-29 23:05:16.785680814 -0700
+++ tsbuild/deps/jsxgraphcore.d.mts 2024-06-11 19:48:54.158169983 -0700
@@ -15,7 +15,7 @@
/**
* JSXGraph in the namespace JXG.
*/
-declare namespace JXG {
+// export namespace JXG {
/**
* Store a reference to every board in this central list.
* This will at some point replace JXG.JSXGraph.boards.
@@ -421,7 +421,7 @@
parents: unknown[],
attrClass: string,
attrArray: unknown[]
- ): JXG.Point[] | false;
+ ): Point[] | false;
/**
* This registers a new construction element to JSXGraph for the construction via the JXG.Board.create interface.
* @param element The elements name. This is case-insensitive, existing elements with the same name will be overwritten.
@@ -5125,6 +5125,10 @@
export interface ZoomOptions {
/**
+ * Whether it is allowed to zoom
+ */
+ enabled?: boolean;
+ /**
* Horizontal zoom factor (multiplied to Board.zoomX).
*/
factorX?: number;
@@ -5742,8 +5746,8 @@
/**
*
*/
- const JSXGraph: Graph;
- let Options: JXGOptions;
+ export const JSXGraph: Graph;
+ export let Options: JXGOptions;
/**
*
@@ -5756,7 +5760,7 @@
/**
* Dump Namespace.
*/
- const Dump: Dump;
+ export const Dump: Dump;
/**
*
@@ -6054,7 +6058,7 @@
/**
* Math Namespace
*/
- const Math: Math;
+ export const Math: Math;
/**
* This namespace contains algorithms for Boolean operations on paths, i.e. intersection, union and difference of paths.
@@ -6303,11 +6307,4 @@
}
export type touchProperty = string;
-}
-
-/**
- * JSXGraph in the module "jsxgraph".
- */
-declare module "jsxgraph" {
- export = JXG;
-}
+//}

View File

@ -47,6 +47,8 @@
"deps/x_ite/assets/components/Scripting.js",
"deps/x_ite/assets/components/Text.js",
"deps/x_ite/assets/images/logo.128.png",
"deps/jsxgraphcore.mjs",
"deps/jsxgraph.css",
"adapptlet.js",
"adapptypes.js",
"conway.js",

153
etc/x_ite_types.patch Normal file
View File

@ -0,0 +1,153 @@
--- etc/deps/x_ite/x_ite.d.mts 2024-06-09 21:07:39.573824568 -0700
+++ tsbuild/deps/x_ite/x_ite.d.mts 2024-06-09 21:08:25.037633672 -0700
@@ -4,7 +4,7 @@
// Handle both importing via UMD and modules:
export default X3D;
-export = X3D;
+// export = X3D;
declare const X3D: X3D;
@@ -688,11 +688,11 @@
/**
* The default container field name for this node. This property is read only.
*/
- static readonly containerField: string;
+ /* static */ readonly containerField: string;
/**
* Returns an array with two strings defining the first version and last version where this node is specified. This property is read only.
*/
- static readonly specificationRange:
+ /* static */ readonly specificationRange:
{
readonly from: string,
readonly to: string,
@@ -700,7 +700,7 @@
/**
* Returns a list of fields defined for the SFNode object.
*/
- static readonly fieldDefinitions: FieldDefinitionArray;
+ /* static */ readonly fieldDefinitions: FieldDefinitionArray;
}
/**
@@ -716,11 +716,11 @@
/**
* The node type name for this class. This property is read only.
*/
- static readonly typeName: string;
+ /* static */ readonly typeName: string;
/**
* Returns an object with two properties *name* and *level* which can be used to get a ComponentInfo object from the X3D browser. This property is read only.
*/
- static readonly componentInfo:
+ /* static */ readonly componentInfo:
{
readonly name: string,
readonly level: number,
@@ -825,7 +825,7 @@
/**
* The X3DImportedNode object stores information about a particular import declaration. The object consists solely of read-only properties. It does not define any additional functions.
*/
-class X3DImportedNode
+declare class X3DImportedNode
{
/**
* The SFNode object of the Inline node. This property is read only.
@@ -853,7 +853,7 @@
/**
* The X3DExportedNode object stores information about a particular export declaration. The object consists solely of read-only properties. It does not define any additional functions.
*/
-class X3DExportedNode
+declare class X3DExportedNode
{
/**
* A string of the exported name. This property is read only.
@@ -2573,7 +2573,7 @@
static readonly typeName: "MFMatrix4f";
}
-declare class MFNode <T extends SFNode | null = SFNode | null> extends X3DArrayField <T>
+declare class MFNode <T /* extends SFNode | null */ = SFNode | null> extends X3DArrayField <T>
{
static readonly typeName: "MFNode";
}
@@ -4188,7 +4188,7 @@
}
/** CADPart is an atomic part that defines both coordinate-system location and the faces that constitute a part in a Computer-Aided Design (CAD) model. */
-interface CADPartProxy extends X3DProductStructureChildNodeProxy, X3DGroupingNodeProxy
+interface CADPartProxy extends X3DProductStructureChildNodeProxy, X3DGroupingNodeProxy<CADFaceProxy>
{
/**
* This field is of access type 'inputOnly' and type MFNode.
@@ -5178,7 +5178,7 @@
*
* This field is of access type 'inputOutput' and type MFNode.
*/
- field: MFNode <fieldProxy>;
+ // field: MFNode <fieldProxy>;
/**
* isSelected indicates this shader instance is selected for use by browser Warning: it is an error to define this transient outputOnly field in an X3D file, instead only use it a source for ROUTE events.
*
@@ -13148,7 +13148,7 @@
*
* This field is of access type 'inputOutput' and type MFNode.
*/
- field: MFNode <fieldProxy>;
+ // field: MFNode <fieldProxy>;
/**
* isSelected indicates this shader instance is selected for use by browser Warning: it is an error to define this transient outputOnly field in an X3D file, instead only use it a source for ROUTE events.
*
@@ -15508,7 +15508,7 @@
*
* This field is of access type 'inputOutput' and type MFNode.
*/
- field: MFNode <fieldProxy>;
+ // field: MFNode <fieldProxy>;
/**
* load=true means load immediately, load=false means defer loading or else unload a previously loaded scene.
*
@@ -15732,7 +15732,7 @@
*
* This field is of access type 'inputOutput' and type MFNode.
*/
- field: MFNode <fieldProxy>;
+ // field: MFNode <fieldProxy>;
/**
* load=true means load immediately, load=false means defer loading or else unload a previously loaded scene.
*
@@ -20040,12 +20040,12 @@
}
/** Grouping nodes can contain other nodes as children, thus making up the backbone of a scene graph. */
-interface X3DGroupingNodeProxy extends X3DChildNodeProxy, X3DBoundedObjectProxy
+interface X3DGroupingNodeProxy<T = X3DChildNodeProxy> extends X3DChildNodeProxy, X3DBoundedObjectProxy
{
/**
* This field is of access type 'inputOnly' and type MFNode.
*/
- addChildren: MFNode <X3DChildNodeProxy>;
+ addChildren: MFNode <T>;
/**
* This field is of access type 'initializeOnly' and type SFVec3f.
*/
@@ -20061,7 +20061,7 @@
/**
* This field is of access type 'inputOutput' and type MFNode.
*/
- children: MFNode <X3DChildNodeProxy>;
+ children: MFNode <T>;
/**
* This field is of access type 'inputOutput' and type SFNode.
*/
@@ -20069,7 +20069,7 @@
/**
* This field is of access type 'inputOnly' and type MFNode.
*/
- removeChildren: MFNode <X3DChildNodeProxy>;
+ removeChildren: MFNode <T>;
/**
* This field is of access type 'inputOutput' and type SFBool.
*/

View File

@ -1,6 +1,6 @@
{
name: 'archematics',
version: '0.4.0',
version: '0.5.2',
description: 'Uncovering lost digital mathematical treasures',
scripts: {
test: 'echo "Error: no test specified" && exit 1',
@ -17,6 +17,7 @@
build_plugin: 'bash tools/makePlugin.bash archematicsFull full',
build_half: 'bash tools/makePlugin.bash archematics wrl',
build: 'pnpm --sequential /build_/',
locbuild: 'pnpm --sequential /build_/', // avoids fetch
start: 'node public/js',
go: 'pnpm --sequential "/build|start/"',
serve: 'pnpm build && http-server',
@ -35,17 +36,18 @@
url: 'https://code.studioinfinity.org/glen/archematics.git',
},
devDependencies: {
'@danielx/civet': '^0.6.78',
'@types/firefox-webext-browser': '^120.0.0',
'@types/jquery': '^3.5.29',
'@danielx/civet': '^0.7.11',
'@types/firefox-webext-browser': '^120.0.3',
'@types/jquery': '^3.5.30',
'@webcomponents/custom-elements': '^1.6.0',
'http-server': '^14.1.1',
rollup: '^4.12.0',
typescript: '^5.3.3',
'webextension-polyfill': '^0.10.0',
rollup: '^4.18.0',
typescript: '^5.4.5',
'webextension-polyfill': '^0.12.0',
},
dependencies: {
colorsea: '^1.2.1',
colorsea: '^1.2.2',
jsxgraph: '^1.8.0',
vrml1to97: '^0.4.0',
},
}

File diff suppressed because it is too large Load Diff

View File

@ -2,6 +2,12 @@ import ./deps/jquery.js
import type {AppletObject} from ./deps/geotypes/api.ts
import {AppletDescription, AdapParams, params, contains3d} from ./adapptypes.ts
colorsea from ./deps/colorsea.js
JXG from ./deps/jsxgraphcore.mjs
/* NOTE that the actual actions of the script are at the very bottom,
* so that all of the lexical variables will have been initialized by
* the time that those actions execute.
*/
joyceApplets: AppletDescription[] := []
$('applet[code="Geometry"]').before (i, html) ->
@ -20,22 +26,25 @@ function assertJoyceClass(s: string): asserts s is JoyceClass
unless classes.includes s then throw new Error `Oops ${s} slipped through`
type JoyceName = string // we use this to indicate where the names
// from the Joyce commands (which are used as captions in the GeoGebra
// from the Joyce commands (which are used as captions in the dynamic geometry
// applet) go.
type GeoName = string // and this to indicate where GeoGebra identifiers go
type AnyName = GeoName | JoyceName // and this for slots that can be either
type DyName = string // and this to indicate where dynamic geometry identifiers go
type AnyName = DyName | JoyceName // and this for slots that can be either
type Description
type Description // the semantic information needed about a Joyce geometry elt
otherName: AnyName
jsxElement?: JXG.GeometryElement // only JSX exposes JavaScript entities
usesCaptions: JoyceName[]
klass: JoyceClass
ends?: [GeoName, GeoName]
parts?: string[][]
ends?: [DyName, DyName]
parts?: string[][] // FIXME: Should be DyName[][], I think
// We put both JoyceNames and GeoNames in here, pointing to each other
// We put both JoyceNames and DyNames in here, pointing to each other
// with the otherName property:
type JoyceElements = Record<AnyName, Description>
type DynApp = AppletObject | JXG.Board | JXG.GeometryElement
adapptScript := findAdappt() as HTMLScriptElement
function findAdappt()
@ -57,19 +66,33 @@ function vertFlipped(coords: number[], cdata: ConstructionData): XYZ
coords = coords.slice()
if cdata.is3d
if coords[Z] then coords[Z] = -coords[Z]
while coords.length < 3
coords.push 0
coords[Y] = cdata.height - coords[Y]
return coords as XYZ
type RGB = [number, number, number]
type ConstructionData
id: string
bg: RGB
is3d: boolean
isJSX: boolean
width: number
height: number
labelOffset?: [number, number]
elements: JoyceElements
pivot: string
title?: string
// Helper function to deal with typing the various apis
type DiscriminatedAPI
jsxApi?: JXG.Board | JXG.View3D
geoApi?: AppletObject
function getApis(api: DynApp|undefined, cdata: ConstructionData) : DiscriminatedAPI
if cdata.isJSX then return {jsxApi: api as JXG.Board | JXG.View3D}
else return {geoApi: api as AppletObject}
// Global data setup for pivoting (ugh, but necessary because the api
// is not passed to the callback, so we have to look up the slider in
// a global list):
@ -86,6 +109,47 @@ pivotData: Record<string, PivotData> := {}
function postApplets(jApplets: AppletDescription[], codebase = '')
for each jApp of jApplets
is3d := contains3d jApp.params
isJSX := is3d // For now; will eventually just be always true
elements := {}
pivot .= ''
cdata: ConstructionData := {
bg: ([255, 255, 255] as RGB),
is3d, isJSX, jApp.id, jApp.width, jApp.height, elements, pivot}
if 'pivot' in jApp.params
if is3d
console.warn('Geometry Applet "pivot" only supported for '
+ '2D constructions. Ignoring.')
// FIXME: JSXGraph might well support "pivot" for 3D, by moving
// the implicit centerpoint of the "trackball navigation" mode of
// dragging to the pivot point.
else
pivot = dyname(jApp.id, cdata, 'point') + 'Pivot'
cdata.pivot = pivot
if isJSX
// for now, only use JSXGraph for 3D constructions
console.log('Making a board', jApp.id, jApp.width, jApp.height)
board := JXG.JSXGraph.initBoard jApp.id //, {
// boundingbox:
// [-jApp.width-10, jApp.height+10, jApp.width+10, -jApp.height-10],
//}
//zoom: {+enabled, -needShift},
//pan: {+enabled, -needShift},
//drag: {+enabled},
//-grid }
if is3d // redundant for now, but won't be when we use JSXGraph always
depth .= jApp.width
if jApp.height > depth then depth = jApp.height
depth /= 8
view := undefined and //board.create 'view3d',
[ [-jApp.width, -jApp.height],
[2*jApp.width, 2*jApp.height],
[ [-10 + jApp.width/6, 10 + 4*jApp.width/6],
[-10 + jApp.height/6, 10 + 4*jApp.height/6],
[-2*depth - 10, depth + 10]]]
for name, value in jApp.params
dispatchJcommand view, name, value, cdata
continue
params := {
appName: 'classic',
-enableRightClick,
@ -93,7 +157,6 @@ function postApplets(jApplets: AppletDescription[], codebase = '')
jApp.width,
jApp.height,
appletOnLoad: (api: AppletObject) =>
is3d := contains3d jApp.params
if is3d
api.enable3D true
api.setPerspective 'T'
@ -105,20 +168,10 @@ function postApplets(jApplets: AppletDescription[], codebase = '')
api.setPerspective 'G'
if adapParams.config?.algebra
api.setPerspective '+A'
elements := {}
pivot .= ''
if 'pivot' in jApp.params
if is3d
console.warn('Geometry Applet "pivot" only supported for '
+ '2D constrcutions. Ignoring.')
else
pivot = geoname(jApp.id, elements, 'point') + 'Pivot'
if pivot
pivotData[pivot] = {
api, jApp.params.pivot,
lastAngle: 0, rotatable: [], maybeRotatable: {}, fixed: {}}
cdata: ConstructionData := {
bg: ([255, 255, 255] as RGB),
is3d, jApp.id, jApp.width, jApp.height, elements, pivot}
for name, value in jApp.params
dispatchJcommand
api, name, value, cdata
@ -147,22 +200,19 @@ function postApplets(jApplets: AppletDescription[], codebase = '')
if codebase then geoApp.setHTML5Codebase codebase
geoApp.inject jApp.id
// Always use the final joyceApplets if there are any:
if joyceApplets.length
adapParams.joyceApplets = joyceApplets
type JoyceArguments =
Partial<Record<JoyceClass|'subpoints', DyName[]> & {scalar: number[]}>
type Element // the syntactic specfication of a Joyce construction element
index: number
name: DyName
jname: JoyceName
klass: JoyceClass
method: string
args: JoyceArguments
usesCaptions: JoyceName[]
colors: string[]
if adapParams.joyceApplets.length
if adapParams.loader
jQuery.getScript adapParams.loader, =>
postApplets adapParams.joyceApplets
else
postApplets adapParams.joyceApplets, adapParams.codebase
/* That's all of the actions of this script. All of the remainder is
* implementation.
*/
type DimParts = [string[], string[], string[]] // Gives GeoNames
type DimParts = [string[], string[], string[]] // Gives DyNames
// or expressions for 0-, 1-, and 2-dimensional parts for coloring
// need to pass the parts into the callbacks because sometimes the parts
@ -172,8 +222,8 @@ type Commander
commands: string[]
callbacks: GeogebraCallback[]
parts: DimParts
auxiliaries: GeoName[] // extra entities needed in GeoGebra
ends?: [GeoName, GeoName]
auxiliaries: DyName[] // extra entities needed in JavaScript dynamic app
ends?: [DyName, DyName]
function freshCommander(): Commander
commands: []
@ -181,59 +231,72 @@ function freshCommander(): Commander
parts: [[], [], []]
auxiliaries: []
type JoyceArguments =
Partial<Record<JoyceClass|'subpoints', GeoName[]> & {scalar: number[]}>
type ClassHandler = (
name: GeoName,
method: string,
args: JoyceArguments,
index: number,
cdata: ConstructionData,
colors: string[],
jname: string) => Commander
type RGB = [number, number, number]
type ClassHandler = (elt: Element, cdata: ConstructionData) => Commander
type XYZ = RGB
// For interpreting Joyce applet `align` parameter
alignTranslation: Record<string, [number, number]|undefined> := {
above: [0,10]
right: [10, 0]
below: [0,-10]
left: [-10, 0]
central: undefined }
// Executes the command corresponding to param against the GeoGebra applet
// api, consulting and extending by side effect the elements that are
// present in that applet
function dispatchJcommand(
api: AppletObject,
api: DynApp | undefined,
name: string,
value: string,
cdata: ConstructionData): void
{geoApi, jsxApi} := getApis api, cdata
switch name
'background'
cdata.bg = joyce2rgb value, cdata.bg
if adapParams.config?.commands
console.log 'Setting background to', value, 'interpreted as',
cdata.bg
api.setGraphicsOptions 1, bgColor: colorsea(cdata.bg).hex()
col := colorsea(cdata.bg).hex()
if cdata.isJSX // just take advantage of JSXGraph transparency
domElt := document.getElementById(cdata.id)
if domElt then domElt.style.background = col
else if geoApi then geoApi.setGraphicsOptions 1, bgColor: col
'title'
if adapParams.config?.commands
console.log 'Setting title to', value
cdata.title = value
api.evalCommand `TitlePoint = Corner(1,1)
if cdata.isJSX // Currently no good way to make titles :-(
console.log('Title of Joyce applet', cdata.id, 'is', value)
else if geoApi
geoApi.evalCommand `TitlePoint = Corner(1,1)
Text("${value}", TitlePoint + (2,5))`
'pivot'
return // already handled in postApplets
'align'
console.warn
if cdata.isJSX // need to change the default offset of labels
cdata.labelOffset = alignTranslation[value.toLowerCase()]
// FIXME: need to actually read this when labeling
else console.warn
'Label alignment is not available in GeoGebra'
'translation, as there is no facility for automatically'
'positioning labels. However, they can be dragged manually.'
return
/e\[\d+\]/
num := parseInt(name.slice(2))
{commands, callbacks, parts} :=
jToG value, num, cdata
if jsxApi
jAsJSX value, num, jsxApi, cdata
else if geoApi
{commands, callbacks, parts} := jToG value, num, cdata
if commands.length
lastTried .= 0
if commands.filter((&)).every (cmd) =>
if commands.filter(&).every (cmd) =>
if adapParams.config?.commands
console.log 'Translated to:', cmd
api.evalCommand(cmd) and ++lastTried
callbacks.forEach &(api, parts)
geoApi.evalCommand(cmd) and ++lastTried
callbacks.forEach &(geoApi, parts)
else console.warn
`Geogebra command '${commands[lastTried]}'
(part of translation of '${value}')
@ -241,205 +304,6 @@ function dispatchJcommand(
else console.warn `Could not parse command '${value}'`
else console.warn `Unknown param ${name} = ${value}`
// Parses a Joyce element-creating command, extending the elements
// by side effect:
function jToG(
jCom: string,
index: number,
cdata: ConstructionData): Commander
[jname, klass, method, data, ...colors] := jCom.split ';'
if adapParams.config?.commands
console.log 'Defining', jname, 'as a', klass, 'constructed by',
method, 'from', data, 'colored as', colors
cmdr .= freshCommander()
unless klass in classHandler
console.warn `Unknown entity class ${klass}`
return cmdr
assertJoyceClass klass // shouldn't need to do that :-/
isPivot := !!cdata.pivot and jname is pivotData[cdata.pivot].pivot
name := geoname jname, cdata.elements, klass
if isPivot then pivotData[cdata.pivot].pivot = name
args: JoyceArguments := {}
usesCaptions := []
for each jdep of data.split ','
scalar := Number jdep
if scalar is scalar // not NaN
(args.scalar ?= []).push scalar
continue
if jdep is 'screen'
// special case for Joyce; assume xOyPlane
(args.plane ?= []).push 'xOyPlane'
else
unless jdep in cdata.elements
console.warn
`Reference to unknown geometric entity ${jdep} in ${jCom}`
return cmdr
usesCaptions.push jdep
{klass: depKlass, otherName: depGeo, ends} := cdata.elements[jdep]
(args[depKlass] ?= []).push depGeo
if depKlass is 'point'
(args.subpoints ?= []).push depGeo
else if depKlass is 'line'
(args.subpoints ?= []).push ...ends ?? []
cmdr = classHandler[klass] name, method, args, index, cdata, colors, jname
unless name is jname then cmdr.callbacks.push (api: AppletObject) =>
api.setCaption name, jname
api.setLabelStyle name, 3 // style CAPTION = 3
if cmdr.auxiliaries.length and not adapParams.config?.showaux
cmdr.callbacks.push (api: AppletObject) =>
for each aux of cmdr.auxiliaries
api.setAuxiliary aux, true
api.setLabelVisible aux, false
api.setVisible aux,false
// set up the pivot if there is one
if isPivot
unless klass is 'point'
console.warn(`Can only pivot around a point, not the ${klass}`
+ `named ${jname}. Ignoring.`)
cdata.pivot = ''
cmdr.commands.push(`${cdata.pivot} = `
+ `Slider(0°,360°,1°,1,${cdata.width/3},true,true,false,false)`)
cmdr.callbacks.push (api: AppletObject) =>
api.setCaption cdata.pivot, 'Rotate Display'
api.setLabelStyle cdata.pivot, 3
api.setCoords(cdata.pivot, 2*cdata.width/3, cdata.height-10)
// Not sure how to let TypeScript deal with putting a new function
// on the global window object, so punting at least for now:
// @ts-ignore
window.pivotListener = pivotListener
api.registerObjectUpdateListener(cdata.pivot, 'pivotListener')
// Create callback to assign colors
traceC := adapParams.config?.color
console.log 'Considering coloring', name, 'with', colors if traceC
if colors.length is 4 and colors.every (color) => invisible color
cmdr.callbacks.push (api: AppletObject) => api.setVisible name, false
else // we have to decorate
dimension .= cmdr.parts.findLastIndex .includes name
cmdr.callbacks.push (api: AppletObject, parts: DimParts) =>
// Operate in order faces, lines, point, caption so that
// we can adjust components after setting overall color, etc.
// Color the "Faces"; they default to 'brighter':
if invisible(colors[3]) and (klass !== 'sphere' or invisible colors[2])
for each face of parts[2]
if face is name
console.log 'Fading out interior of', face if traceC
// hide the interior by making it transparent
api.setFilling face, 0
else if face not in cdata.elements
console.log 'Hiding face', face if traceC
api.setVisible face, false
else
surface .= colors[3]
if klass is 'sphere' and invisible surface
surface = colors[2] // for Joyce, spheres had one circular "edge"
faceRGB := joyce2rgb(surface or 'brighter', cdata.bg)
deep := ['circle', 'polygon', 'sector']
filling := deep.includes(klass) ? 0.7 : 0.2
for each face of parts[2]
if traceC
console.log 'Coloring face', face, 'to',
surface, '=', faceRGB
api.setVisible face, true
api.setFilling face, filling
api.setColor face, ...faceRGB
// Lines default to black:
if invisible colors[2]
for each line of parts[1]
if line is name or line not in cdata.elements
console.log 'Hiding line', line if traceC
api.setVisible line, false
else
lineRGB := joyce2rgb(colors[2] or 'black', cdata.bg)
if traceC
console.log 'Need to color lines', parts[1], 'with', lineRGB
for each line of parts[1]
console.log 'Coloring line', line, 'to', colors[2] if traceC
api.setVisible line, true
api.setColor line, ...lineRGB
// Now color the points:
if traceC
console.log
'Considering point colors for', name, 'of dimension', dimension
if invisible colors[1]
// Hide all the dim-0 elements that are not distinct independent
// items:
for each point of parts[0]
if point is name or point not in cdata.elements
console.log 'Hiding point', point if traceC
api.setVisible point, false
else if dimension is 0 or colors[1] // Need to color the points
if not colors[1]
colors[1] = pointDefaultColorName name, method, isPivot
ptRGB := joyce2rgb colors[1], cdata.bg
for each point of parts[0]
console.log 'Coloring point', point, 'to', colors[1] if traceC
api.setVisible point, true
api.setColor point, ...ptRGB
// Make the caption the correct color
if invisible colors[0]
console.log 'Hiding label', name if traceC
api.setLabelVisible name, false
else if colors[0]
if colors[dimension+1] and colors[dimension+1] is not colors[0]
// Have to make a text to provide the caption, since GeoGebra
// doesn't allow caption different color from entity.
textName := 'GeoText' + index
locationExpr := switch klass
when 'point' then `1.02${name}`
when 'line'
(`Midpoint(${name})`
+ ` + Rotate(Direction(${name})`
+ `*Length(${name})*0.025/Length(Direction(${name})),`
+ `pi/2)`)
when 'circle'
(`Center(${name})`
+ ` + Radius(${name})*Vector((12/13,5/13))*1.03`)
when 'polygon' then `Centroid(${name})`
when 'sector'
(`(5*Center(${name})`
+ ` - ${cmdr.ends?[0]} - ${cmdr.ends?[1]})/3`)
when 'plane'
`Intersect(${name}, PerpendicularLine((0, 0, 0), ${name}))`
when 'sphere'
(`Center(${name})`
+ ` + Radius(${name})*Vector((12/13,0,5/13))*1.03`)
when 'polyhedron'
// The "ends" are faces or vertices roughly opposite
// from each other
[ex1, ex2] .= cmdr.ends ?? ['', '']
unless parts[0].includes ex1 then ex1 = `Centroid(${ex1})`
unless parts[0].includes ex2 then ex2 = `Centroid(${ex2})`
`(4*${ex1}+${ex2})/5`
textCmd := `${textName} = Text("${jname}", ${locationExpr})`
textCol := joyce2rgb colors[0], cdata.bg
if traceC
console.log `Making text '${textCmd}' colored`, textCol
api.evalCommand textCmd
api.setColor textName, ...textCol
// and hide the underlying GeoGebra label
api.setLabelVisible name, false
else // specified label color matches the entity color
// So label gets the correct color from element
// but we had better make sure it is visible:
console.log 'Showing label', name if traceC
api.setLabelVisible name, true
else // label color is defaulting
// Make it same as the element for points, invisible otherwise:
show := klass is 'point'
console.log 'Setting label vis of', name, 'to', show if traceC
api.setLabelVisible name, show
cdata.elements[jname] =
{otherName: name, usesCaptions, klass, cmdr.ends, cmdr.parts}
cdata.elements[name] =
{otherName: jname, usesCaptions, klass, cmdr.ends, cmdr.parts}
cmdr
function pivotListener(slider: string)
pd := pivotData[slider]
@ -527,8 +391,9 @@ function pointDefaultColorName(
'orange'
else 'black'
function geoname(
jname: JoyceName, elements: JoyceElements, klass: JoyceClass): GeoName
function dyname(
jname: JoyceName, cd: ConstructionData, klass: JoyceClass): DyName
if cd.isJSX then return jname
unless jname is 'floor' or jname.substring(0,3) is 'Geo' // those might clash
// Names with word characters starting with a capital are always good:
if /^[A-Z]['\w]*$/.test jname then return jname
@ -538,7 +403,7 @@ function geoname(
numCode .= 0n
numCode = numCode*128n + BigInt ch.codePointAt(0) ?? 1 for each ch of jname
return .= 'Geo' + numCode.toString(36);
return += '1' while return.value in elements
return += '1' while return.value in cd.elements
// Helpers for some corresponding point/line functions:
function cutoffExtend(
@ -583,7 +448,8 @@ function proportionSimilar(
// All of the detailed semantics of each available command lies in this
// function.
classHandler: Record<JoyceClass, ClassHandler> :=
point: (name, method, args, index, cdata, colors, jname): Commander =>
point: (elt, cdata): Commander =>
{name, jname, method, args, colors} .= elt // Mutable for hack patches
return := freshCommander()
{commands, callbacks, parts, auxiliaries} := return.value
zeroVector := cdata.is3d ? 'Vector((0,0,0))' : 'Vector((0,0))'
@ -801,7 +667,8 @@ classHandler: Record<JoyceClass, ClassHandler> :=
`${name} = Vertex(${args.polygon?[0]},${args.scalar?[0]})`
else console.warn 'Unknown point method:', method
line: (name, method, args, index, cdata) =>
line: (elt, cdata) =>
{name, method, args} := elt
return := freshCommander()
return.value.ends = ['', '']
{commands, callbacks, parts, auxiliaries, ends} := return.value
@ -951,7 +818,8 @@ classHandler: Record<JoyceClass, ClassHandler> :=
callbacks.push (api: AppletObject) => api.setLabelVisible name, true
parts[0].push ...ends
circle: (name, method, args, index, cdata) =>
circle: (elt, cdata) =>
{name, method, args} := elt
return := freshCommander()
return.value.ends = ['', '']
{commands, callbacks, parts, auxiliaries, ends} := return.value
@ -987,11 +855,12 @@ classHandler: Record<JoyceClass, ClassHandler> :=
makeLinesInvisible callbacks, aux
callbacks.push (api: AppletObject) => api.setLabelVisible name, true
polygon: (name, method, args, index, cdata) =>
polygon: (elt, cdata) =>
{name, method, args, index} := elt
return := freshCommander()
{commands, callbacks, parts, auxiliaries} := return.value
parts[2].push name
aux := geoname name + 'aUx', cdata.elements, 'point'
aux := dyname name + 'aUx', cdata, 'point'
switch method
/equilateralTriangle|square|regularPolygon/
pt := args.subpoints
@ -1077,7 +946,8 @@ classHandler: Record<JoyceClass, ClassHandler> :=
api.renameObject obj, newObj
moreParts[1].push newObj
sector: (name, method, args, index, cdata) =>
sector: (elt, cdata) =>
{name, method, args} := elt
return := freshCommander()
return.value.ends = ['', '']
{commands, callbacks, parts, auxiliaries, ends} := return.value
@ -1108,7 +978,8 @@ classHandler: Record<JoyceClass, ClassHandler> :=
auxiliaries.push aux + 1
makeLinesInvisible callbacks, name
plane: (name, method, args, index, cdata) =>
plane: (elt, cdata) =>
{name, method, args} := elt
return := freshCommander()
{commands, callbacks, parts, auxiliaries} := return.value
parts[2].push name
@ -1126,7 +997,8 @@ classHandler: Record<JoyceClass, ClassHandler> :=
commands.push
`${name} = PerpendicularPlane(${thru}, Line(${thru}, ${perp}))`
sphere: (name, method, args) =>
sphere: (elt, cdata) =>
{name, method, args} := elt
return := freshCommander()
return.value.ends = ['', '']
{commands, callbacks, parts, auxiliaries, ends} := return.value
@ -1144,11 +1016,12 @@ classHandler: Record<JoyceClass, ClassHandler> :=
radius := `Distance(${pt[1]}, ${pt[2]})`
commands.push `${name} = Sphere(${center}, ${radius})`
polyhedron: (name, method, args, index, cdata) =>
polyhedron: (elt, cdata) =>
{name, method, args, index} := elt
return := freshCommander()
return.value.ends = ['', '']
{commands, callbacks, parts, auxiliaries, ends} := return.value
aux := geoname name + 'aUx', cdata.elements, 'point'
aux := dyname name + 'aUx', cdata, 'point'
switch method
'parallelepiped'
pt .= args.subpoints
@ -1260,6 +1133,217 @@ classHandler: Record<JoyceClass, ClassHandler> :=
'triangle'
moreParts[2].push newObj
// Parses a Joyce element-creating command
function parseElement(
jCom: string,
index: number,
cdata: ConstructionData): Element | undefined
[jname, klass, method, data, ...colors] := jCom.split ';'
if adapParams.config?.commands
console.log 'Defining', jname, 'as a', klass, 'constructed by',
method, 'from', data, 'colored as', colors
unless klass in classHandler
console.warn `Unknown entity class ${klass}`
return undefined
assertJoyceClass klass // shouldn't need to do that :-/
name := dyname jname, cdata, klass
args: JoyceArguments := {}
usesCaptions: JoyceName[] := []
for each jdep of data.split ','
scalar := Number jdep
if scalar is scalar // not NaN
(args.scalar ?= []).push scalar
continue
if jdep is 'screen'
// special case for Joyce; assume xOyPlane
(args.plane ?= []).push 'xOyPlane'
else
unless jdep in cdata.elements
console.warn
`Reference to unknown geometric entity ${jdep} in ${jCom}`
return undefined
usesCaptions.push jdep
{klass: depKlass, otherName: depDyn, ends} := cdata.elements[jdep]
(args[depKlass] ?= []).push depDyn
if depKlass is 'point'
(args.subpoints ?= []).push depDyn
else if depKlass is 'line'
(args.subpoints ?= []).push ...ends ?? []
return {index, name, jname, klass, method, args, usesCaptions, colors}
// Parses a Joyce element-creating command, extending the elements
// by side effect:
function jToG(
jCom: string,
index: number,
cdata: ConstructionData): Commander
elt := parseElement jCom, index, cdata
cmdr .= freshCommander()
unless elt then return cmdr
{name, jname, klass, method, usesCaptions, colors} := elt
isPivot := !!cdata.pivot and elt.jname is pivotData[cdata.pivot].pivot
if isPivot then pivotData[cdata.pivot].pivot = elt.name
cmdr = classHandler[klass] elt, cdata
unless name is jname then cmdr.callbacks.push (api: AppletObject) =>
api.setCaption name, jname
api.setLabelStyle name, 3 // style CAPTION = 3
if cmdr.auxiliaries.length and not adapParams.config?.showaux
cmdr.callbacks.push (api: AppletObject) =>
for each aux of cmdr.auxiliaries
api.setAuxiliary aux, true
api.setLabelVisible aux, false
api.setVisible aux,false
// set up the pivot if there is one
if isPivot
unless klass is 'point'
console.warn(`Can only pivot around a point, not the ${klass}`
+ `named ${jname}. Ignoring.`)
cdata.pivot = ''
cmdr.commands.push(`${cdata.pivot} = `
+ `Slider(0°,360°,1°,1,${cdata.width/3},true,true,false,false)`)
cmdr.callbacks.push (api: AppletObject) =>
api.setCaption cdata.pivot, 'Rotate Display'
api.setLabelStyle cdata.pivot, 3
api.setCoords(cdata.pivot, 2*cdata.width/3, cdata.height-10)
// Not sure how to let TypeScript deal with putting a new function
// on the global window object, so punting at least for now:
// @ts-ignore
window.pivotListener = pivotListener
api.registerObjectUpdateListener(cdata.pivot, 'pivotListener')
// Create callback to assign colors
traceC := adapParams.config?.color
console.log 'Considering coloring', name, 'with', colors if traceC
if colors.length is 4 and colors.every (color) => invisible color
cmdr.callbacks.push (api: AppletObject) => api.setVisible name, false
else // we have to decorate
dimension .= cmdr.parts.findLastIndex .includes name
cmdr.callbacks.push (api: AppletObject, parts: DimParts) =>
// Operate in order faces, lines, point, caption so that
// we can adjust components after setting overall color, etc.
// Color the "Faces"; they default to 'brighter':
if invisible(colors[3]) and (klass !== 'sphere' or invisible colors[2])
for each face of parts[2]
if face is name
console.log 'Fading out interior of', face if traceC
// hide the interior by making it transparent
api.setFilling face, 0
else if face not in cdata.elements
console.log 'Hiding face', face if traceC
api.setVisible face, false
else
surface .= colors[3]
if klass is 'sphere' and invisible surface
surface = colors[2] // for Joyce, spheres had one circular "edge"
faceRGB := joyce2rgb(surface or 'brighter', cdata.bg)
deep := ['circle', 'polygon', 'sector']
filling := deep.includes(klass) ? 0.7 : 0.2
for each face of parts[2]
if traceC
console.log 'Coloring face', face, 'to',
surface, '=', faceRGB
api.setVisible face, true
api.setFilling face, filling
api.setColor face, ...faceRGB
// Lines default to black:
if invisible colors[2]
for each line of parts[1]
if line is name or line not in cdata.elements
console.log 'Hiding line', line if traceC
api.setVisible line, false
else
lineRGB := joyce2rgb(colors[2] or 'black', cdata.bg)
if traceC
console.log 'Need to color lines', parts[1], 'with', lineRGB
for each line of parts[1]
console.log 'Coloring line', line, 'to', colors[2] if traceC
api.setVisible line, true
api.setColor line, ...lineRGB
// Now color the points:
if traceC
console.log
'Considering point colors for', name, 'of dimension', dimension
if invisible colors[1]
// Hide all the dim-0 elements that are not distinct independent
// items:
for each point of parts[0]
if point is name or point not in cdata.elements
console.log 'Hiding point', point if traceC
api.setVisible point, false
else if dimension is 0 or colors[1] // Need to color the points
if not colors[1]
colors[1] = pointDefaultColorName name, method, isPivot
ptRGB := joyce2rgb colors[1], cdata.bg
for each point of parts[0]
console.log 'Coloring point', point, 'to', colors[1] if traceC
api.setVisible point, true
api.setColor point, ...ptRGB
// Make the caption the correct color
if invisible colors[0]
console.log 'Hiding label', name if traceC
api.setLabelVisible name, false
else if colors[0]
if colors[dimension+1] and colors[dimension+1] is not colors[0]
// Have to make a text to provide the caption, since GeoGebra
// doesn't allow caption different color from entity.
textName := 'GeoText' + index
locationExpr := switch klass
when 'point' then `1.02${name}`
when 'line'
(`Midpoint(${name})`
+ ` + Rotate(Direction(${name})`
+ `*Length(${name})*0.025/Length(Direction(${name})),`
+ `pi/2)`)
when 'circle'
(`Center(${name})`
+ ` + Radius(${name})*Vector((12/13,5/13))*1.03`)
when 'polygon' then `Centroid(${name})`
when 'sector'
(`(5*Center(${name})`
+ ` - ${cmdr.ends?[0]} - ${cmdr.ends?[1]})/3`)
when 'plane'
`Intersect(${name}, PerpendicularLine((0, 0, 0), ${name}))`
when 'sphere'
(`Center(${name})`
+ ` + Radius(${name})*Vector((12/13,0,5/13))*1.03`)
when 'polyhedron'
// The "ends" are faces or vertices roughly opposite
// from each other
[ex1, ex2] .= cmdr.ends ?? ['', '']
unless parts[0].includes ex1 then ex1 = `Centroid(${ex1})`
unless parts[0].includes ex2 then ex2 = `Centroid(${ex2})`
`(4*${ex1}+${ex2})/5`
textCmd := `${textName} = Text("${jname}", ${locationExpr})`
textCol := joyce2rgb colors[0], cdata.bg
if traceC
console.log `Making text '${textCmd}' colored`, textCol
api.evalCommand textCmd
api.setColor textName, ...textCol
// and hide the underlying GeoGebra label
api.setLabelVisible name, false
else // specified label color matches the entity color
// So label gets the correct color from element
// but we had better make sure it is visible:
console.log 'Showing label', name if traceC
api.setLabelVisible name, true
else // label color is defaulting
// Make it same as the element for points, invisible otherwise:
show := klass is 'point'
console.log 'Setting label vis of', name, 'to', show if traceC
api.setLabelVisible name, show
cdata.elements[jname] =
{otherName: name, usesCaptions, klass, cmdr.ends, cmdr.parts}
if name !== jname
cdata.elements[name] =
{otherName: jname, usesCaptions, klass, cmdr.ends, cmdr.parts}
cmdr
// Helper for dividing an angle
function makeAngDiv(
method:string,
@ -1303,3 +1387,94 @@ function makeLinesInvisible(callbacks: GeogebraCallback[], name: string)
// evaluating the modified XML created a sort of second
// copy of the entity, and so we have to hide the original one
api.setVisible name, false
// ------------------------------------------------------------------------
// JSXGraph translation below this line, up to the actual actions of script
// ------------------------------------------------------------------------
type AuxiliaryData
jsxElement?: JXG.GeometryElement
auxiliaries: JXG.GeometryElement[]
ends?: [DyName, DyName]
parts: [DyName[], DyName[], DyName[]]
function freshAuxEndsParts(): AuxiliaryData
auxiliaries: []
parts: [[], [], []]
// Execute the commands needed to create the element encoded by jCom
// against the given api entity
function jAsJSX(
jCom: string,
index: number,
api: JXG.Board | JXG.View3D,
cdata: ConstructionData)
elt := parseElement jCom, index, cdata
unless elt then return
{jsxElement, auxiliaries, ends, parts} :=
jsxHandler[elt.klass] elt, api, cdata
unless jsxElement then return
cdata.elements[elt.name] = {
otherName: elt.jname,
jsxElement, elt.usesCaptions, elt.klass, ends, parts}
if elt.name !== elt.jname
cdata.elements[elt.jname] =
Object.assign {}, cdata.elements[elt.name], {otherName: elt.name}
type JSXHandler = (
elt: Element,
api: JXG.Board | JXG.View3D,
cdata: ConstructionData) => AuxiliaryData
// Helper function to deal with TypeScript typing of JSX classes
type JSX_APIS
jsx2d?: JXG.Board
jsx3d?: JXG.View3D
function getJSXapi(
api: JXG.Board | JXG.View3D,
cdata: ConstructionData): JSX_APIS
if cdata.is3d then return {jsx3d: api as JXG.View3D}
else return {jsx2d: api as JXG.Board}
jsxHandler: Record<JoyceClass, JSXHandler> :=
point: (elt, api, cdata) =>
return .= freshAuxEndsParts()
{jsxElement, auxiliaries, ends, parts} .= return.value
parts[0].push elt.name
{jname, args} := elt
{jsx2d, jsx3d} := getJSXapi api, cdata
// FIXME: put Joyce hacks here
switch elt.method
'free'
unless args.scalar then return
coords := vertFlipped args.scalar, cdata
// FIXME: Is something needed here for supporting pivot?
if jsx3d
console.log 'Pretend to create point3d', coords, jname
//jsx3d.create 'point3d', coords, {name: jname}
// FIXME: Handle 2d
return.value = {jsxElement, auxiliaries, ends, parts}
line: (elt, api, cdata) => freshAuxEndsParts()
polygon: (elt, api, cdata) => freshAuxEndsParts()
circle: (elt, api, cdata) => freshAuxEndsParts()
sector: (elt, api, cdata) => freshAuxEndsParts()
plane: (elt, api, cdata) => freshAuxEndsParts()
polyhedron: (elt, api, cdata) => freshAuxEndsParts()
sphere: (elt, api, cdata) => freshAuxEndsParts()
// ------------------------------------------------------------------------
// The actual actions of the script follow:
// ------------------------------------------------------------------------
// Always use the final joyceApplets if there are any:
if joyceApplets.length
adapParams.joyceApplets = joyceApplets
if adapParams.joyceApplets.length
if adapParams.loader
jQuery.getScript adapParams.loader, =>
postApplets adapParams.joyceApplets
else
postApplets adapParams.joyceApplets, adapParams.codebase

View File

@ -27,9 +27,9 @@ export function generateVRML(n: number, d: number, chk: boolean[])
unless 1 <= d < n
return err: 'Denominator should be strictly between 1 and numerator.'
if d > n/2 then d = n-d // equivalent
which := chk.findIndex (&)
which := chk.findIndex &
chk[which] = false
if chk.some (&) return err: 'Currently only one shape option may be checked.'
if chk.some & return err: 'Currently only one shape option may be checked.'
name .= d > 1 ? `${n}/${d}-gonal` :
switch n
when 3: 'triangular'

View File

@ -2,8 +2,13 @@
mkdir -p $1
cp etc/deps/jquery.js $1
cp -r etc/deps/x_ite $1
patch -u $1/x_ite/x_ite.d.mts -i etc/x_ite_types.patch
cp -r etc/deps/geotypes $1
cp -rL node_modules/vrml1to97/{deps,vrml1to97,streamToString.js} $1
cp -rL node_modules/jsxgraph/distrib/jsxgraph{core.mjs,.css} $1
cp -rL node_modules/jsxgraph/distrib/index.d.ts $1/jsxgraphcore.d.mts
patch -u $1/jsxgraphcore.d.mts -i etc/jsxgraph_types.patch
cp -rL node_modules/colorsea/dist/index.esm.js $1/colorsea.js
cp -rL node_modules/colorsea/dist/index.d.ts $1/colorsea.d.ts
patch -u $1/colorsea.d.ts -i etc/colorsea_types.patch
#patch -u $1/colorsea.d.ts -i etc/colorsea_types.patch
#FIXME: If no longer needed, remove patch

View File

@ -2,8 +2,8 @@ mkdir -p etc/deps/geotypes
mkdir -p etc/deps/x_ite/assets/components
mkdir -p etc/deps/x_ite/assets/images
// source code at https://github.com/geogebra/geogebra/releases/tag/5.2.823.0
curl 'https://download.geogebra.org/installers/5.2/geogebra-math-apps-bundle-5-2-823-0.zip' --output etc/deps/geo.zip
# source code at https://github.com/geogebra/geogebra/releases/tag/5.2.823.0
curl 'https://download.geogebra.org/installers/5.2/geogebra-math-apps-bundle-5-2-843-0.zip' --output etc/deps/geo.zip
unzip -o -d etc/deps etc/deps/geo.zip
rm etc/deps/geo.zip
cp etc/geogebraPreamble.txt etc/deps/geotypes/api.ts

View File

@ -48,6 +48,7 @@ then
cp -r etc/$trimspec $1/$dest
done
cp public/js/deps/jsxgraph{.css,core.mjs} $1/deps
npx rollup public/js/adapptlet.js --file $1/adapptlet.js
npx rollup public/js/adapptext.js --file $1/adapptext.js