hostilefork / replpad-js

Interactive Web Console for Rebol language (Ren-C branch)
GNU Lesser General Public License v3.0
13 stars 9 forks source link

Embedding interesting/graphical/iframe things seems to screw up #64

Closed hostilefork closed 3 years ago

hostilefork commented 5 years ago

First noticed with do <chess>, and now noticed with do <trello>.... it seems that trying to put interesting divs into the REPL feed does not work well. It looks all right at first but then scrolling and various things are messed up.

It may be related to the use of the bizarre technique for flipping the screen to get the improved scroll bar behavior.

Does looking at the DOM when it's acting screwy suggest any clues to you, @BrianOtto?

MarkoSchuetz commented 3 years ago

I am experimenting with iframe. I have

inline-css: function [
    {Provide default CSS for resizing inline frame}
][
    css-do {.replpad-resizer { display:flex; margin:0; padding:0; resize:both; overflow:hidden }
            .replpad-resizer > .replpad-resized { flex-grow:1; margin:0; padding:0; border:0 }
            .replpad-border { background:gray; border:1px dashed black; }}
]

inline: function [
    {Provide a browsing context in the replpad}
    url [url!]
    name [text!]
][
    replpad-write/html unspaced [
        <div class="replpad-resizer replpad-border">
        {<iframe class="replpad-resized" src="} url {" id="} name {"></iframe>}
        </div>
    ]
]

and I inline a Moodle page. That page is fully functional including playback of Youtube videos that are again inlined in the Moodle course so far without anything getting messed up. This is on Firefox 83.0.

hostilefork commented 3 years ago

Hello @MarkoSchuetz, welcome...

Neat! Glad you're having some success messing with the web REPL! It's a bit of a scrappy effort, but my hope is that web-savvy people (perhaps yourself?) can make it better. Feel free to add your snippet to the forum's Show and Tell section.

I don't remember the details of what this complaint was (bad on me for not being more specific, but presumably it was obvious). But I noticed that do <chess> wasn't working at all. So I looked into why. The reason had to do with overflowing the stack with a nested DO inside the chess of do <popupdemo>...and we exhaust stack pretty quickly with a recursive evaluator. (There is a solution on the way... it's just not ready yet.)

I bumped a stack number as a temporary workaround, so you should be able to try do <chess> yourself. I think the problem I was complaining about here isn't happening, so we can probably close whatever this issue was.

In any case...things are pretty bumpy still, in the "prototype" phase. But it seems you've dug into it enough to be a self-starter and get the gist of what's going on...great! (Don't know if you saw BrianOtto's presentation on his stuff from the 2019 conference: https://www.youtube.com/watch?v=mjVtXfdTZIQ ... there are some other videos at https://2019.reb4.me/talks if you haven't seen them.)

The main focus of the project continues to be plugging the fundamental language holes, vs. beelining for too much demo code. While there's too many open issues to count, there's a lot of promising directions. So if you'd like to be involved, a good place to start is the Forum Introductions Thread.