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.
This commit is contained in:
parent
e742ef3460
commit
4e2375b709
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
@ -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
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -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
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
@ -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
@ -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
@ -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
|
||||
/*******************************************************************************
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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,28 +645,25 @@ 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))
|
||||
const names = [field .getName ()];
|
||||
|
||||
if (field .getAccessType () === (X3DConstants_default()).inputOutput)
|
||||
names .push (field .getName () + "_changed");
|
||||
|
||||
for (const name of names)
|
||||
{
|
||||
if (name in globalObject)
|
||||
continue;
|
||||
|
||||
globalObject [name] =
|
||||
{
|
||||
get: field .valueOf .bind (field),
|
||||
set: field .setValue .bind (field),
|
||||
};
|
||||
}
|
||||
|
||||
if (field .getAccessType () === (X3DConstants_default()).inputOutput)
|
||||
{
|
||||
globalObject [name + "_changed"] =
|
||||
{
|
||||
get: field .valueOf .bind (field),
|
||||
set: field .setValue .bind (field),
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
return Object .create (Object .prototype, globalObject);
|
||||
@ -658,26 +698,13 @@ Object .assign (Object .setPrototypeOf (Script .prototype, Scripting_X3DScriptNo
|
||||
},
|
||||
evaluate (sourceText)
|
||||
{
|
||||
const browser = this .getBrowser ();
|
||||
if (!this .globalObject)
|
||||
this .globalObject = this .createGlobalObject ();
|
||||
|
||||
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 ();
|
||||
}
|
||||
return Scripting_evaluate (SFNodeCache_default().get (this), this .globalObject, sourceText);
|
||||
},
|
||||
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);
|
||||
},
|
||||
|
@ -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,8 +16286,10 @@ Object .assign (Object .setPrototypeOf (Text .prototype, (X3DGeometryNode_defaul
|
||||
{
|
||||
X3DGeometryNode_default().prototype .set_live__ .call (this);
|
||||
|
||||
if (this .getLive () .getValue ())
|
||||
this .getBrowser () .getBrowserOptions () ._PrimitiveQuality .addInterest ("requestRebuild", this);
|
||||
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
@ -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 browser’s 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 object’s `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.
|
||||
*
|
||||
|
12935
etc/deps/x_ite/x_ite.mjs
12935
etc/deps/x_ite/x_ite.mjs
File diff suppressed because it is too large
Load Diff
@ -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",
|
||||
|
@ -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',
|
||||
@ -15,8 +15,9 @@
|
||||
build_js: 'tsc && mkdir -p public/js && cp -r jsbuild/* public/js',
|
||||
build_deps: 'bash tools/copyDeps.bash public/js/deps',
|
||||
build_plugin: 'bash tools/makePlugin.bash archematicsFull full',
|
||||
build_half: 'bash tools/makePlugin.bash archematics wrl',
|
||||
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',
|
||||
},
|
||||
}
|
||||
|
964
pnpm-lock.yaml
964
pnpm-lock.yaml
File diff suppressed because it is too large
Load Diff
@ -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, 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,45 @@ 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
|
||||
board := JXG.JSXGraph.initBoard jApp.id, {
|
||||
boundingbox:
|
||||
[-jApp.width-10, jApp.height+10, jApp.width+10, -jApp.height-10],
|
||||
+zoom,
|
||||
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 := 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 +155,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 +166,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'
|
||||
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}
|
||||
if pivot
|
||||
pivotData[pivot] = {
|
||||
api, jApp.params.pivot,
|
||||
lastAngle: 0, rotatable: [], maybeRotatable: {}, fixed: {}}
|
||||
for name, value in jApp.params
|
||||
dispatchJcommand
|
||||
api, name, value, cdata
|
||||
@ -147,22 +198,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
|
||||
|
||||
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 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[]
|
||||
|
||||
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 +220,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,265 +229,79 @@ 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,
|
||||
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)
|
||||
Text("${value}", TitlePoint + (2,5))`
|
||||
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 commands.length
|
||||
lastTried .= 0
|
||||
if commands.filter((&)).every (cmd) =>
|
||||
if adapParams.config?.commands
|
||||
console.log 'Translated to:', cmd
|
||||
api.evalCommand(cmd) and ++lastTried
|
||||
callbacks.forEach &(api, parts)
|
||||
else console.warn
|
||||
`Geogebra command '${commands[lastTried]}'
|
||||
(part of translation of '${value}')
|
||||
failed.`
|
||||
else console.warn `Could not parse command '${value}'`
|
||||
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 adapParams.config?.commands
|
||||
console.log 'Translated to:', cmd
|
||||
geoApi.evalCommand(cmd) and ++lastTried
|
||||
callbacks.forEach &(geoApi, parts)
|
||||
else console.warn
|
||||
`Geogebra command '${commands[lastTried]}'
|
||||
(part of translation of '${value}')
|
||||
failed.`
|
||||
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 +389,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 +401,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 +446,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 +665,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 +816,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 +853,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 +944,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 +976,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 +995,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 +1014,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 +1131,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 +1385,93 @@ 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
|
||||
jsx3d.create 'point3d', coords, {name: elt.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
|
||||
|
@ -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'
|
||||
|
@ -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/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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user