<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="374691" data-post-id="374691">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Eiji" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/Eiji/120/36743_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Eiji
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>One does not need to conflict with each other. It’s obvious for everyone that for example external <code>JavaScript</code> libraries would be supported (most probably simply by giving an <code>src</code> in <code>script</code> tag). You can obvious put your own scripts the same way and call them with this low-level API.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="374691" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/time-for-hologram-javascript-interop-what-would-you-like-to-see/72518/33">Post #32</a>
	                </div>
	            </div>
              <div id="likers-container-374691" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="374691"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #32"></div>
  </section>
</div>
    <div class="postbit" id="374692" data-post-id="374692">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="olivermt" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/olivermt/120/2354_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  olivermt
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>That sounds very complex compared to what a simple port or event bridge would look like.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="374692" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/time-for-hologram-javascript-interop-what-would-you-like-to-see/72518/34">Post #33</a>
	                </div>
	            </div>
              <div id="likers-container-374692" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="374692"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #33"></div>
  </section>
</div>
    <div class="postbit" id="374694" data-post-id="374694">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Eiji" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/Eiji/120/36743_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Eiji
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>We look for a solution in framework that’s changing <code>Elixir</code> code to <code>JavaScript</code> or “simplicity” instead? If we want simplicity then why we even bothering about adding some complex stuff like <code>ports</code>? Why we even care about using <code>Elixir</code>? We could simply call <code>addEventListener</code> on custom <code>Hologram</code> events. That would be the “simplest” solution.</p>
<p>We talk about DX and not simplicity. We want to have such functions because we want to use them within actions instead of writing another big blob of <code>JavaScript</code> code. If we are trying to avoid <code>JavaScript</code> and allow using only some libraries for compatibility then why we even consider writing more <code>JavaScript</code> in ports? For me it does not makes any sense …</p>
<p>The above proposals happen naturally and suddenly you came and say it’s too complex? What’s so complex here? You can write you own <code>Chart</code> in <code>JavaScript</code> and just use the above proposed functions to initialise it with maybe even one call. Yeah, very complex … <img src="https://forum.elixirforum.com/images/emoji/apple/sweat_smile.png?v=15" title=":sweat_smile:" class="emoji" alt=":sweat_smile:" loading="lazy" width="20" height="20"></p>
<p>If there is something complex in context of our discussion then it’s a fact that we have to implement port or event bridges not because they give us some reasonable feature, but only because they look “simpler” for someone only because someone is used to work with <code>Elm</code> before or something like that. If we would be so hard into <code>JavaScript</code> then we would not care about writing <code>Elixir</code> code anyway …</p>
<p>While I initially proposed was a handy high-level API, after the discussion I understood that the low-level one would give us much more than what I was originally expecting. I honestly don’t see here any place for <code>JavaScript</code>-based solution here (in context of writing <code>Elixir</code> code). As said you can move <code>99%</code> of your logic to <code>JavaScript</code> and use a single call to initialise it when needed. In <code>Hologram</code> ecosystem it would be rather considered a bad practice, but I don’t see why anyone would consider stopping you from doing that.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="374694" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/time-for-hologram-javascript-interop-what-would-you-like-to-see/72518/35">Post #34</a>
	                </div>
	            </div>
              <div id="likers-container-374694" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="374694"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #34"></div>
  </section>
</div>
    <div class="postbit" id="374697" data-post-id="374697">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="olivermt" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/olivermt/120/2354_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  olivermt
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>If I want to use google maps I am not looking to avoid javascript, I want to <strong>use</strong> javascript in the most practical manner possible.</p>
<p>Hologram is about isomorphic solution to 80-90% of your app, then for the rest where I can use pre-built stuff that is supported by a profitable business I just want a very ergonomic way to do javascript.</p>
<p>I do not think Bart spending time re-implementing Javascript in elixir is a good use of his time for that <img src="https://forum.elixirforum.com/images/emoji/apple/person_shrugging.png?v=15" title=":person_shrugging:" class="emoji" alt=":person_shrugging:" loading="lazy" width="20" height="20"></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="374697" data-batch-url="/posts/batch_likers">
                        5
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/time-for-hologram-javascript-interop-what-would-you-like-to-see/72518/36">Post #35</a>
	                </div>
	            </div>
              <div id="likers-container-374697" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="374697"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #35"></div>
  </section>
</div>
    <div class="postbit" id="374703" data-post-id="374703">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="cschmatzler" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/cschmatzler/120/35101_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  cschmatzler
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="Eiji" data-post="35" data-topic="72518">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/48/36743_2.png" class="avatar"> Eiji:</div>
<blockquote>
<p>We talk about DX and not simplicity</p>
</blockquote>
</aside>
<p>If you talk about DX, you explicitly do not want to reimplement JavaScript in Elixir. We have millions of dollars invested into JavaScript tooling; language servers, linters, build tools, runtime debugging tools.</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">defmodule Chart do
  use Hologram.JS.Interop

  def draw(element_id, width, height, data_points) do
    element =
      js_ref("document")
      |&gt; js_call("getElementById", [element_id])

    if is_nil(js_unwrap(element)) do
      # handle case when element is missing
    end

    js_ref("Chart")
    |&gt; js_create([element, %{width: width, height: height}])
    |&gt; js_call("draw", [data_points])
  end
end
</code></pre>
<p>This gets rid of all of that.</p>
<p>If you want to write JavaScript, just write JavaScript. Our tooling already understands it.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="374703" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/time-for-hologram-javascript-interop-what-would-you-like-to-see/72518/37">Post #36</a>
	                </div>
	            </div>
              <div id="likers-container-374703" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="374703"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #36"></div>
  </section>
</div>
    <div class="postbit" id="374704" data-post-id="374704">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="Eiji" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/Eiji/120/36743_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  Eiji
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="cschmatzler" data-post="37" data-topic="72518">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/cschmatzler/48/35101_2.png" class="avatar"> cschmatzler:</div>
<blockquote>
<p>If you want to write JavaScript, just write JavaScript. Our tooling already understands it.</p>
</blockquote>
</aside>
<p>Meanwhile from <code>Hologram</code>’s <strong>main page</strong>:</p>
<blockquote>
<p>Build rich, interactive UIs <strong>entirely in Elixir</strong> using Hologram’s declarative component system. <strong>Your client-side code is intelligently transpiled to JavaScript</strong>, providing modern frontend capabilities <strong>without relying on any JavaScript frameworks</strong>.</p>
</blockquote>
<p>This in context of compatibility with 3rd-party <code>.js</code> libraries by simply putting them in templates (script with src attribute). I really don’t see a reason for attempt on convert everyone into <code>JavaScript</code> religion even if the core point is clearly states that we want to work “<strong>entirely in Elixir</strong>”.</p>
<p>If you don’t like it go for <code>node</code>. I bet there is no better environment for <code>JavaScript</code> tooling. No, I don’t want <code>JavaScript</code> tooling in <code>Elixir</code> codebase. I’m more than fine with <code>Elixir</code>’s tooling. Everything that I would need would be a high level API done by me or someone else, so that the <code>Elixir</code> tooling could use all it’s power.</p>
<aside class="quote no-group" data-username="cschmatzler" data-post="37" data-topic="72518">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/cschmatzler/48/35101_2.png" class="avatar"> cschmatzler:</div>
<blockquote>
<p>If you want to write JavaScript, just write JavaScript. Our tooling already understands it.</p>
</blockquote>
</aside>
<p>The <strong>false assumption</strong> is absolutely the worst thing people can have. Who said anything about writing <code>JavaScript</code> code? The interop is all about 2 things:</p>
<ol>
<li>
<p>Backwards compatibility  - support initialisation calls of 3rd-party <code>JavaScript</code> libraries (simply because it’s not worth to rewrite every existing one) that are in separate <code>.js</code> files.</p>
</li>
<li>
<p>Access the same API the <code>JavaScript</code> can. The point would be same no matter what language would be used in browsers. All we want is to access <code>DOM</code> and other APIs and not write <code>JavaScript</code> code. It’s like in <code>X</code> language you would like to add some feature from <code>Elixir</code> and I would say just use <code>Elixir</code> instead. No, I want to have access to same feature, not to write code in other language.</p>
</li>
</ol> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="374704" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/time-for-hologram-javascript-interop-what-would-you-like-to-see/72518/38">Post #37</a>
	                </div>
	            </div>
              <div id="likers-container-374704" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="374704"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #37"></div>
  </section>
</div>
    <div class="postbit" id="374706" data-post-id="374706">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="cschmatzler" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/cschmatzler/120/35101_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  cschmatzler
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="cschmatzler" data-post="37" data-topic="72518">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/cschmatzler/48/35101_2.png" class="avatar"> cschmatzler:</div>
<blockquote>
<pre data-code-wrap="elixir"><code class="lang-elixir">def draw(element_id, width, height, data_points) do
    element =
      js_ref("document")
      |&gt; js_call("getElementById", [element_id])

    if is_nil(js_unwrap(element)) do
      # handle case when element is missing
    end

    js_ref("Chart")
    |&gt; js_create([element, %{width: width, height: height}])
    |&gt; js_call("draw", [data_points])
  end
</code></pre>
</blockquote>
</aside>
<p>With this proposal you are literally writing JavaScript, just with extra steps and without any of the available tooling. Like, why would you have “draw” as a string when in JavaScript you get the function as autocomplete?</p>
<p>Having the goal to translate higher-level APIs to JavaScript is fine, but copying the API one-to-one doesn’t sound very appealing?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="374706" data-batch-url="/posts/batch_likers">
                        2
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/time-for-hologram-javascript-interop-what-would-you-like-to-see/72518/39">Post #38</a>
	                </div>
	            </div>
              <div id="likers-container-374706" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="374706"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #38"></div>
  </section>
</div>
    <div class="postbit" id="374773" data-post-id="374773">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="bartblast" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/bartblast/120/17647_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  bartblast
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Creator of Hologram</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="olivermt" data-post="20" data-topic="72518" data-full="true">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/olivermt/48/2354_2.png" class="avatar"> olivermt:</div>
<blockquote>
<p>But why would you want to «call» functions like that.</p>
<p>We are talking about interfacing with libs that you generally implement promises or callbacks for. The eventing system that hooks in lv already have to interface with this works very well.</p>
<p>With option 2 you need to hold all the client only state for a given third party flavour in hologram/elixir. That sounds like both a lot of work and a lot of friction. I just want to signal that hologram says to add three new markers or for the js side to send me an event saying that rhe viewport updated.</p>
<p>The foreign function way doesnt even solve that last thing.</p>
<p>Bidirectional message ish passing with events is both fully typeable and very simple to debug and test. And the hologram side needs to be a lot less degensively coded.</p>
</blockquote>
</aside>
<p>I agree that event-based communication is generally more testable and aligns well with JavaScript’s async nature.</p>
<p>However, I wouldn’t use LiveView as a reference point here - LiveView didn’t really have a choice in this regard due to its specific architecture (server-side components communicating over WebSocket). It had to go the event route.</p>
<p>But here’s where I see the tradeoff: events force async communication even when you just need to call a simple synchronous function. Think about cases like:</p>
<ul>
<li>Querying information: <code>chart.getWidth()</code>, <code>element.getBoundingClientRect()</code></li>
<li>Mathematical operations: Math.cos(angle) (normally you’d use the transpiled Elixir equivalent, but if there’s a bug in Hologram’s implementation and you need a working solution immediately, direct JS access becomes essential)</li>
<li>Feature detection: <code>Modernizr.webgl</code></li>
<li>Validation: validator.isEmail(input) (same escape hatch scenario as with Math.cos, but let’s say there’s no suitable Elixir library that provides this specific validation behavior you need)</li>
</ul>
<p>These naturally return immediate values. Making them async adds complexity and breaks the natural flow of your logic.</p>
<p>And this becomes especially important when you consider that many of these operations will need to go through interop until Hologram has official wrappers for specific Web APIs, DOM features, or browser-specific functionality. For instance, if you need <code>getBoundingClientRect()</code> today for a layout calculation, you can’t wait for Hologram to build a high-level DOM measurement API - you need direct access to that synchronous browser function right now.</p>
<p>Performance can also be a factor - for high-frequency operations (animations, real-time data processing), the event serialization overhead and callback coordination can become noticeable.</p>
<p>So with events, you’re essentially shifting control from Elixir to JavaScript, which can be good or bad depending on the case. I don’t think it’s that black and white.</p>
<p>But here’s the thing - FFI could actually enable the pattern you’re describing. If we have a low-level API for power users, we can build higher-level abstractions on top. For example:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">def dispatch_event(name, params) do
  event = JS.new("Event", ["my_custom_event_name"])
  JS.call("window", "dispatchEvent", [event])
end
</code></pre>
<p>This way, those who want the event-based pattern can have it, but we don’t lock out use cases that need direct function calls. The FFI approach gives us both options rather than forcing one pattern for everything.</p>
<p>What do you think about having that flexibility?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="374773" data-batch-url="/posts/batch_likers">
                        3
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/time-for-hologram-javascript-interop-what-would-you-like-to-see/72518/44">Post #43</a>
	                </div>
	            </div>
              <div id="likers-container-374773" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="374773"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #43"></div>
  </section>
</div>
    <div class="postbit" id="374777" data-post-id="374777">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="tozz" src="/assets/icons/user-9f439610.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  tozz
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Interesting discussions, I think one key aspect is to make sure you can store the JS return values and use them in later calls, or maybe you already thought about that?</p>
<p>Let’s say you do <code>chart = JS.new(“ChartLibrary”, [{data: nil}]</code> and then in somewhere later you want to access <code>chart</code> and do something like <code>JS.call(chart, "populateData", [...])</code> on it, how would that work?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="374777" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/time-for-hologram-javascript-interop-what-would-you-like-to-see/72518/45">Post #44</a>
	                </div>
	            </div>
              <div id="likers-container-374777" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="374777"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #44"></div>
  </section>
</div>
    <div class="postbit" id="374779" data-post-id="374779">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="bartblast" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/bartblast/120/17647_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  bartblast
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Creator of Hologram</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="olivermt" data-post="23" data-topic="72518" data-full="true">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/olivermt/48/2354_2.png" class="avatar"> olivermt:</div>
<blockquote>
<p>Only option 1 has that within feasible timeframe imo.</p>
</blockquote>
</aside>
<p>The right design is crucial here, and the basic implementation for either approach is relatively straightforward.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="374779" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/time-for-hologram-javascript-interop-what-would-you-like-to-see/72518/46">Post #45</a>
	                </div>
	            </div>
              <div id="likers-container-374779" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="374779"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #45"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <a class="load-more-button" data-turbo-stream="true" href="/topics/72518/load_more?page=5">Load more posts (8 remaining)</a>
</div></template></turbo-stream>