clarify what jxr actually is and what can it do
#52
Open
opened 2 years ago by utopiah
·
12 comments
No Branch/Tag Specified
artemis-example
assymetric-collaboration
avatar-controlled
bind-jxr-target
book
browser-clipboard
chemistry_example
citations
code-editor
code-generation
componentized
componentized-blocks
control-points
core-vs-extras
direct-scaling
draw2d-with-lines
editor-split
emptyview
federation
fosdem-presentation
fossxr
fot-json-andrew
fot-sloan-companion
game-mechanics
game-multiple-levels
game-remote-save
game-template-with-asset-validator
gesture-manager
gltf-jxr
graph
hands-controllers-kbd
in-situ-instructions
keyboardless-jxr-editing
knuckle-code-snippets
knuckle-docs
laser-fallback
layer
level-loader
list-editing
mannequin
master
meshing
microgestures
minimalist-template
minimum
mistral-and-graphhopper
motionstick
nodal
ondrop
ontouch
outline-extrude
physics
pinch-to-menu
primitives_as_set
pseudoreamls-as-scaffoldings
pull-to-value
reader
readibility-background
real-world-meshing
scaffolding
scaffolding-video-background
scaled-linked-editor
screenshot
spatial-introspection
speech
stretch-to-unpack
stt
swagger_example
syntax-highlighting
teleport
textgame
tiles
trail
visibile-scaffolding
visual-tension
warmup
webchuck
webdav
webmidi
webxrsyskbd
wllama
xr-to-2D-board
Labels
Something is not working core interactions
Ways to interact with content that actually makes this scaffolding unique and aligned with its main value of efficient exploration of interfaces. demo
focusing on facilitating face to face or remote demonstration documentation duplicate
This issue or pull request already exists enhancement
New feature help wanted
Need some help import/export
Interactions with external content invalid
Something is wrong question
More information is needed wontfix
This won't be fixed
Apply labels
Clear labels
bug
Something is not working core interactions
Ways to interact with content that actually makes this scaffolding unique and aligned with its main value of efficient exploration of interfaces. demo
focusing on facilitating face to face or remote demonstration documentation duplicate
This issue or pull request already exists enhancement
New feature help wanted
Need some help import/export
Interactions with external content invalid
Something is wrong question
More information is needed wontfix
This won't be fixed
No Label
bug
core interactions
demo
documentation
duplicate
enhancement
help wanted
import/export
invalid
question
wontfix
Milestone
Set milestone
Clear milestone
No items
No Milestone
Projects
Clear projects
No project
Assignees
Assign users
Clear assignees
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.
No due date set.
Dependencies
No dependencies set.
Reference: utopiah/text-code-xr-engine#52
Reference in new issue
There is no content yet.
Delete Branch '%!s(<nil>)'
Deleting a branch is permanent. It CANNOT be undone. Continue?
No
Yes
Basically relying on
eval()
thus able to run JavaScript within the current scope.parseJXR()
takes a string representing the code and expand shorthands including :Xs
starting the following command in X secondsqs selector
returing aquerySelector(selector)
sa attribute value
forsetAttribute(attribute, value)
obsv
fornewNoteFromObservableCell()
lg
foraddGltfFromURLAsTarget()
These shorthands are relatively verbose functions that are estimated to be quite useful in this specific context of having text and code in a spacial environment, editable with a virtual and optionally physical keyboard.
Note that
interpretAny()
requires a backend and thus is executed with a different scope. It allows code that is not JavaScript to be executed. Examples include containers with other languages e.g Bash, Python or Julia.See https://twitter.com/utopiah/status/1533064468292419585
For now the result is only displayed and is only from text to text. See https://twitter.com/utopiah/status/1562501178495082496 suggesting
toDataURL()
for other kind of contents.Consider minimizing syntax and instead rely on provenance.
For example instead of relying on e.g
./
as suggested in #50 rely instead on the presence of thewebdav
class.Rely on spacialized interaction specific keywords e.g
Provide syntax highlighting.
Existing
selectedElement
lastPointSketch
fromdraw()
commandhistory
groupSelection
targets
Search for DSL (domain specific language) on text or text manipulation, ideally spatially.
Potential example https://dougengelbart.org/images/about/augment/chart-viewspecs.htm (arguable)
See also
<a-console>
helpers https://github.com/kylebakerio/a-console/blob/master/a-console.js#L307 for https://github.com/kylebakerio/a-console#live-codingResponsive programming as a design principle, cf https://fabien.benetou.fr/Languages/OwnConcepts#ResponsiveProgramming , i.e surfacing the code itself, creating an affordance back.
See the
onreleased
event introduced in list-editing branch https://git.benetou.fr/utopiah/text-code-xr-engine/src/branch/list-editing/index.html#L86Example for clipboard
jxr qs #billboard sa scale 1 1 1
Consider the generalization with e.g going from
onreleased
toonpinched
. Maybe it could become an optional parameter for the jxr component, namely when to actually execute.Note that for now executing is done with the secondary pinch whereas those 2 events are done on primary pinch.
Examples of more complex usage e.g
via https://git.benetou.fr/utopiah/text-code-xr-engine/src/branch/game-multiple-levels/jxr-core.js#L166
from https://git.benetou.fr/utopiah/text-code-xr-engine/src/branch/game-multiple-levels/