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


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<pre data-code-wrap="elixir"><code class="lang-elixir">window._hooks = {};

export default {
  mounted() {
    window._hooks[this.el.id] = this;
  },

  destroyed() {
    delete window._hooks[this.el.id];
  },
};
</code></pre>
<pre data-code-wrap="elixir"><code class="lang-elixir">&lt;my-thing … phx-hook=“Lit” /&gt;
</code></pre>
<p>You can also combine them with hooks with a little hack so you can use all the hook methods in the web components if needed.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="311479" 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/using-webcomponents-in-liveview-pros-and-cons/48304/12">Post #11</a>
	                </div>
	            </div>
              <div id="likers-container-311479" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="311479"
                     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 #11"></div>
  </section>
</div>
    <div class="postbit" id="311484" data-post-id="311484">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>The Elixir Conf talk by Chris Nelson shows use of web components and how we can easily wrap anything. He also uses Lit (by Google) but there are many other choices, but Lit seems to be the most popular approach for making web components:</p>
<div class="youtube-onebox lazy-video-container" data-video-id="26WhDFXjisM" data-video-title="ElixirConf 2023 - Chris Nelson - LiveView: The javascript you need while keeping the Elixir you love" data-video-start-time="" data-provider-name="youtube">
  <a href="https://www.youtube.com/watch?v=26WhDFXjisM" target="_blank" class="video-thumbnail" rel="noopener nofollow ugc">
    <img class="youtube-thumbnail" src="https://img.youtube.com/vi/26WhDFXjisM/maxresdefault.jpg" title="ElixirConf 2023 - Chris Nelson - LiveView: The javascript you need while keeping the Elixir you love" width="690" height="388">
  </a>
</div>
 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="311484" 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/using-webcomponents-in-liveview-pros-and-cons/48304/13">Post #12</a>
	                </div>
	            </div>
              <div id="likers-container-311484" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="311484"
                     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 #12"></div>
  </section>
</div>
    <div class="postbit" id="311505" data-post-id="311505">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>shoelace is pretty impressive I can see myself adopting something like that <img src="https://forum.elixirforum.com/images/emoji/apple/smiley.png?v=15" title=":smiley:" class="emoji" alt=":smiley:" 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="311505" 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/using-webcomponents-in-liveview-pros-and-cons/48304/14">Post #13</a>
	                </div>
	            </div>
              <div id="likers-container-311505" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="311505"
                     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 #13"></div>
  </section>
</div>
    <div class="postbit" id="311573" data-post-id="311573">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="krishandley" data-post="12" data-topic="48304">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/krishandley/48/27199_2.png" class="avatar"> krishandley:</div>
<blockquote>
<p>You can also combine them with hooks with a little hack so you can use all the hook methods in the web components if needed.</p>
</blockquote>
</aside>
<p>Nice one, aside from that and the live element hook for event ergonomics that is all the hooks one ever needs to do anything with custom elements/web components.</p>
<p>I am also looking at some other interesting ideas from <a class="mention" href="/u/superchris" rel="nofollow">@superchris</a>, in particular his <a href="https://github.com/launchscout/live_state" rel="noopener nofollow ugc">live_state</a> solution for delivering state to custom elements over web sockets / phoenix channels <strong>as a total replacement for liveview</strong>.</p>
<p>My research suggests we can deliver state from our Phoenix backed to the front end in about the most streamlined fashion possible with live_state, and then on the front end we can deliver that state into web components using <a href="https://github.com/gitaarik/lit-state" rel="noopener nofollow ugc">lit-state</a> for full reactivity on the front end with whatever web components / custom elements we choose to use.</p>
<p>In fact I am also looking at <strong>going full PWA</strong> for my front end using <a href="https://www.npmjs.com/package/create-lit-pwa" rel="noopener nofollow ugc">create-lit-pwa</a> and live_state (which also delivers events into our phoenix backend just like LiveView but it’s not LiveView) with no need for graphql whilst keeping my phoenix backend the same and just interacting with my contexts via live_state rather than LiveView.</p>
<p>The goal is web standards based UI, high adherence to web acccessibility with established web components and zero javascript framework nonsense, avoiding web API layers, and with a total overhead of just 5kb for my client app shell with PWA support.</p>
<p>If you think about it, all a front end needs is state delivered from the backend to render and the ability to send events to the backend and receive updated state to re-render. We don’t need complex API layers and bloated client side web frameworks with the available web standards already supported in all the browsers.</p>
<p>I feel every day that I’m getting closer to my utopia for web development and it’s likely LiveView will <em>not</em> be in that future but the similar idea applied to <em>sharing state</em> to the front end via live-state <em>might</em> certainly be.</p>
<p>In any event I will be publishing my learnings with some documented starter projects based on my explorations for others to follow.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="311573" data-batch-url="/posts/batch_likers">
                        7
                      </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/using-webcomponents-in-liveview-pros-and-cons/48304/15">Post #14</a>
	                </div>
	            </div>
              <div id="likers-container-311573" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="311573"
                     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 #14"></div>
  </section>
</div>
    <div class="postbit" id="311647" data-post-id="311647">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Hi, I still owe you an example. This is production code, that works since 4 years now.</p>
<h1><a name="p-311647-the-examples-purpose-is-to-show-a-localized-date-time-1" class="anchor" href="#p-311647-the-examples-purpose-is-to-show-a-localized-date-time-1" aria-label="Heading link" rel="nofollow"></a>The example’s purpose is to show a localized date time.</h1>
<p>Starting with the custom component:</p>
<pre data-code-wrap="javascript"><code class="lang-javascript">class MyLocalDatetime extends HTMLElement {
  format (name) {
    return ({
      long: { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' },
      short: {}
    })[name]
  }

  constructor () {
    super()
    this._format = 'short'
    this._date = null
  }

  _rerender () {
    this.innerHTML = new Date(this._date).toLocaleString([], this.format(this._format))
  }

  static get observedAttributes () {
    return ['iso-datetime', 'format']
  }

  attributeChangedCallback (name, _oldValue, newValue) {
    (({
      'iso-datetime': (newValue) =&gt; { this._date = newValue },
      'format': (newValue) =&gt; { this._format = newValue }
    })[name])(newValue)
    this._rerender()
  }
}

window.customElements.define('my-local-datetime', MyLocalDatetime)
</code></pre>
<p>I wrapped it in a live_view component:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">  @doc """
    Renders a DateTime to a local datetime

    opts:
    - date: DateTime struct
  """
  attr :datetime, DateTime, required: true
  attr :format, :string, default: "short", values: ["short", "long"]
  attr :attrs, :global

  def my_local_datetime(assigns) do
    ~H"""
    &lt;my-local-datetime {@attrs} format={@format} iso-datetime={@datetime} phx-update="ignore"&gt;&lt;%= @datetime %&gt;&lt;/my-local-datetime&gt;
    """
  end
</code></pre>
<p>When you change the <code>datetime</code> attribute in your live view, then the <code>attributeChangedCallback</code> is triggered and the content is rerenderd.</p>
<p>I try to avoid big frameworks, because they come and go and they all come and go with their own complexity. So I mostly write vanilla JS.<br>
But you can also use this method to glue js libraries in you project. I have done this for maps to be integrated in live view, for instance too.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="311647" data-batch-url="/posts/batch_likers">
                        12
                      </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/using-webcomponents-in-liveview-pros-and-cons/48304/16">Post #15</a>
	                </div>
	            </div>
              <div id="likers-container-311647" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="311647"
                     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 #15"></div>
  </section>
</div>
    <div class="postbit" id="313247" data-post-id="313247">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>After a few attempts, I managed to wrap the shoelace color picker component.</p>
<p><a href="https://www.npmjs.com/package/phoenix-custom-event-hook" rel="noopener nofollow ugc">https://www.npmjs.com/package/phoenix-custom-event-hook</a> makes things a lot simpler, but required some tweaking so I could access the new color value.</p>
<p>Sharing here in case anyone else is looking to do the same (feedback also appreciated as I’m very new to pheonix :))</p>
<p>Live component:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">defmodule DemoWeb.ColorPicker do
  use DemoWeb, :live_component

  @impl true
  def render(assigns) do
    ~H"""
    &lt;div&gt;
      &lt;link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@shoelace-style/shoelace@2.12.0/cdn/themes/dark.css" /&gt;
      &lt;script type="module" src="https://cdn.jsdelivr.net/npm/@shoelace-style/shoelace@2.12.0/cdn/components/color-picker/color-picker.js"&gt;&lt;/script&gt;
      &lt;sl-color-picker
        id={@id}
        phx-hook="PhoenixCustomEvent"
        phx-send-events="sl-change"
        class="sl-theme-dark demo-color-picker"
        value={@value}
        inline={@inline}
        &gt;
      &lt;/sl-color-picker&gt;
      &lt;style&gt;
        .demo-color-picker::part(base) {
          background: rgba(0, 0, 0, 0.0);
          border: none;
        }
      &lt;/style&gt;
    &lt;/div&gt;
    """
  end
end
</code></pre>
<p>Add and tweak the custom hook in app.js:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">import PhoenixCustomEvent from "phoenix-custom-event-hook";
PhoenixCustomEvent.serializeEvent = (event) =&gt; {
    return {
        value: event.target.value,
        detail: event.detail,
    };
};
</code></pre>
<p>Live view:</p>
<pre data-code-wrap="elixir"><code class="lang-elixir">&lt;.live_component module={DemoWeb.ColorPicker} id="this-picker" inline={:true} value={@my_color} /&gt;
...
  def handle_event("sl-change", params, socket) do
    {:noreply, assign(socket, my_color: params["value"])}
  end
</code></pre> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="313247" 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/using-webcomponents-in-liveview-pros-and-cons/48304/17">Post #16</a>
	                </div>
	            </div>
              <div id="likers-container-313247" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="313247"
                     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 #16"></div>
  </section>
</div>
    <div class="postbit" id="313253" data-post-id="313253">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="adw632" data-post="15" data-topic="48304">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/letter_avatar_proxy/v4/letter/a/9d8465/48.png" class="avatar"> adw632:</div>
<blockquote>
<p>I am also looking at some other interesting ideas from <a class="mention" href="/u/superchris" rel="nofollow">@superchris</a>, in particular his <a href="https://github.com/launchscout/live_state" rel="noopener nofollow ugc">live_state </a> solution for delivering state to custom elements over web sockets / phoenix channels <strong>as a total replacement for liveview</strong>.</p>
</blockquote>
</aside>
<p>There is this related discussion:</p><aside class="quote quote-modified" data-post="1" data-topic="52709">
  <div class="title">
    <div class="quote-controls"></div>
    <img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/hubertlepicki/48/6822_2.png" class="avatar">
    <div class="quote-title__text-content">
      <a href="https://forum.elixirforum.com/t/client-side-rendering-server-side-state-statechannel/52709" rel="nofollow">Client-side rendering, server-side state (StateChannel)</a> <a class="badge-category__wrapper " href="/c/chat-discussions/chat-discussions/167" rel="nofollow"><span data-category-id="167" style="--category-badge-color: #cca771; --category-badge-text-color: #FFFFFF; --parent-category-badge-color: #cca771;" data-parent-category-id="165" data-drop-close="true" class="badge-category --style-square --has-parent"><span class="badge-category__name">Discussions</span></span></a>
    </div>
  </div>
  <blockquote>
    I have been thinking a lot about what are the pain points in web development, and what the remedy can be. First off, I’ve been programming web applications since about Rails 1.2, when the REST concept was introduced and was considered revolutionary, and I went through different stacks, that were both server-side, and client-side rendered: Dojo, Ember.js, React, Stimulus, LiveView, and many others… 
Recently I was taking part in several projects using LiveView and one using Surface UI. I have got…
  </blockquote>
</aside>

<p>Not about web components but a more generic approach.</p>
<p>(And also: a friendly reminder that I’m biting my nails till you publish some demo for Adobe Spectrum/shoelace + LV)</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="313253" 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/using-webcomponents-in-liveview-pros-and-cons/48304/18">Post #17</a>
	                </div>
	            </div>
              <div id="likers-container-313253" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="313253"
                     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 #17"></div>
  </section>
</div>
    <div class="postbit" id="313254" data-post-id="313254">
  <section>
    <div class="post-wrap">


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

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="cvkmohan" data-post="5" data-topic="48304">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/cvkmohan/48/39944_2.png" class="avatar"> cvkmohan:</div>
<blockquote>
<p>Maybe with Tailwindcss 3.4, and the planned Oxide engine, things will change?</p>
</blockquote>
</aside>
<p>TW3.4 is out and there is no change in this regard.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="313254" 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/using-webcomponents-in-liveview-pros-and-cons/48304/19">Post #18</a>
	                </div>
	            </div>
              <div id="likers-container-313254" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="313254"
                     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 #18"></div>
  </section>
</div>
    <div class="postbit" id="313531" data-post-id="313531">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="cvkmohan" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/cvkmohan/120/39944_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  cvkmohan
                    <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>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>My mistake. I think it is Tailwindcss 3.5, which comes with the Oxide engine. It is going to greatly simplify the build system it seems.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="313531" 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/using-webcomponents-in-liveview-pros-and-cons/48304/20">Post #19</a>
	                </div>
	            </div>
              <div id="likers-container-313531" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="313531"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-last-post cat-last-post" title="Last post!"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <span class="all-loaded">— All posts loaded —</span>
</div></template></turbo-stream>