turbo_reflex 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b69b530a4e88be7ec81b38f0076f6d8181eb4a8e209bb2ecf8d443bbd4ab3b2f
4
- data.tar.gz: d71d737c155f19c32170280ccb8bf25c9dc55c4e60698f7f19fbeff19ee80225
3
+ metadata.gz: 23acc8c0bf8fb08c15028a42e61cf6d8f38bc183f55aff948d5c9dda00d38d8d
4
+ data.tar.gz: 411477ecc70f44c14e588aefba477ef35f5c86dd5fce02c551c6418a95782b46
5
5
  SHA512:
6
- metadata.gz: 48a856e206b2cbbb1692829c0157e6c5429f5cef111f64e44ccdff91247cee773b4c91e12219e2df1bccb6fde44eaed6817c3ac1a55beaf64144b303acf26bdf
7
- data.tar.gz: b11f7bc4ffe62ea4dc9fd0f79bc1952bf1316973a3e109c0e40aca4e56ee9efc81d5f857f18e2c84fe0e9e7cfdaec519231145d4b65637fbaf92809be13386f6
6
+ metadata.gz: d7b9dd0a13ff4fda3312fa53560949b4dded8f38f9f4d1097998462cadd77de768c90b11e2a54fd2a7c99c15ea1e2045888129c0567dac0159b79b902384b596
7
+ data.tar.gz: e1fbe9d9ba34e0452c97d5d0547a55188d2584ab0f12b5545eb562714316fcef21b59c5a16cc274ff205fbf9fb264925970deb6edd612bc7810d493dc5222f8d
data/Dockerfile ADDED
@@ -0,0 +1,24 @@
1
+ FROM ruby:3.1.2-alpine
2
+
3
+ RUN apk add --no-cache --update \
4
+ bash \
5
+ build-base \
6
+ htop \
7
+ less \
8
+ libc6-compat \
9
+ libsass \
10
+ linux-headers \
11
+ nodejs \
12
+ sqlite \
13
+ sqlite-dev \
14
+ sqlite-libs \
15
+ tzdata
16
+
17
+ COPY . /turbo_reflex
18
+ WORKDIR /turbo_reflex
19
+
20
+ RUN rm /turbo_reflex/Gemfile.lock && \
21
+ gem update --system && \
22
+ bundle --jobs 3 --verbose
23
+
24
+ CMD cd test/dummy && bundle exec rails s
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- turbo_reflex (0.0.2)
4
+ turbo_reflex (0.0.3)
5
5
  rails (>= 6.1)
6
6
  turbo-rails (>= 1.1)
7
7
 
data/README.md CHANGED
@@ -117,14 +117,14 @@ TurboReflex is a lightweight Turbo Frame extension... which means that reactivit
117
117
 
118
118
  ```diff
119
119
  # Gemfile
120
- +gem "turbo_reflex", "~> 0.0.2"
120
+ +gem "turbo_reflex", "~> 0.0.3"
121
121
  ```
122
122
 
123
123
  ```diff
124
124
  # package.json
125
125
  "dependencies": {
126
126
  "@hotwired/turbo-rails": ">=7.1",
127
- + "turbo_reflex": "^0.0.2"
127
+ + "turbo_reflex": "^0.0.3"
128
128
  ```
129
129
 
130
130
  *Be sure to install the __same version__ of the Ruby and JavaScript libraries.*
@@ -163,7 +163,7 @@ This example illustrates how to use TurboReflex to manage upvotes on a Post.
163
163
  ```erb
164
164
  <!-- app/views/posts/show.html.erb -->
165
165
  <%= turbo_frame_tag dom_id(@post) do %>
166
- <a href="#" data-turbo-reflex="VotesReflex#upvote">Upvote</a>
166
+ <a href="#" data-turbo-reflex="PostReflex#upvote">Upvote</a>
167
167
  Upvote Count: <%= @post.votes >
168
168
  <% end %>
169
169
  ```
@@ -172,7 +172,7 @@ This example illustrates how to use TurboReflex to manage upvotes on a Post.
172
172
 
173
173
  ```ruby
174
174
  # app/reflexes/posts_reflex.rb
175
- class PostsReflex < TurboReflex::Base
175
+ class PostReflex < TurboReflex::Base
176
176
  def upvote
177
177
  Post.find(controller.params[:id]).increment! :votes
178
178
  end
@@ -1,2 +1,2 @@
1
1
  var l={beforeStart:"turbo-reflex:before-start",start:"turbo-reflex:start",finish:"turbo-reflex:finish",error:"turbo-reflex:error",missingFrameId:"turbo-reflex:missing-frame-id",missingFrame:"turbo-reflex:missing-frame",missingFrameSrc:"turbo-reflex:missing-frame-src"};function y(t,e=document,r={}){let n=new CustomEvent(t,{detail:r,cancelable:!0,bubbles:!0});e.dispatchEvent(n)}function F(){Object.values(l).forEach(t=>console.log(t))}var o={...l,dispatch:y,logEventNames:F};var u={};addEventListener("turbo:before-fetch-response",t=>{let e=t.target;u[e.id]=e.src;let{turboReflexActive:r,turboReflexElementId:n}=e.dataset;if(!r)return;let s=document.getElementById(n);delete e.dataset.turboReflexActive,delete e.dataset.turboReflexElementId,o.dispatch(o.finish,s||document,{frame:e,element:s||"Unknown! Missing id attribute."})});addEventListener("turbo:frame-load",t=>{let e=t.target;e.dataset.turboReflexSrc=u[e.id]||e.src||e.dataset.turboReflexSrc,delete u[e.id]});var L={get token(){return document.getElementById("turbo-reflex-token").getAttribute("content")}},c=L;function m(t){return t.closest("[data-turbo-reflex]")}function S(t){return t.closest("turbo-frame")}function b(t){let e=t.dataset.turboReflexFrame||t.dataset.turboFrame;if(!e){let r=S(t);r&&(e=r.id)}return e||(console.error("The reflex element does not specify a frame!","Please move the reflex element inside a <turbo-frame> or set the 'data-turbo-reflex-frame' or 'data-turbo-frame' attribute.",t),o.dispatch(o.missingFrameId,t,{element:t})),e}function g(t){let e=document.getElementById(t);return e||(console.error(`The frame '${t}' does not exist!`),o.dispatch(o.missingFrame,document,{id:t})),e}function x(t){let e=t.dataset.turboReflexSrc||t.src;return e||(console.error(`The the 'src' for <turbo-frame id='${t.id}'> is unknown!`,"TurboReflex uses 'src' to (re)render frame content after the reflex is invoked.","Please set the 'src' or 'data-turbo-reflex-src' attribute on the <turbo-frame> element.",t),o.dispatch(o.missingFrameSrc,t,{frame:t})),e}function k(t,e={}){if(t.tagName.toLowerCase()!=="select")return e.value=t.value;if(!t.multiple)return e.value=t.options[t.selectedIndex].value;e.values=Array.from(t.options).reduce((r,n)=>(n.selected&&r.push(n.value),r),[])}function v(t){let e=Array.from(t.attributes).reduce((r,n)=>(r[n.name]=n.value,r),{});return e.tag=t.tagName,e.checked=t.checked,e.disabled=t.disabled,k(t,e),e}var a={},h;function p(t){h=t}function f(t,e){a[t]=e,document.addEventListener(t,h,!0)}function E(t,e){return e=e.toLowerCase(),a[t].includes(e)||!Object.values(a).flat().includes(e)&&a[t].includes("*")}function R(){console.log(a)}addEventListener("turbo:before-fetch-request",t=>{let e=t.target,{turboReflexActive:r}=e.dataset;if(!r)return;let{fetchOptions:n}=t.detail;n.headers["Turbo-Reflex"]=c.token});function I(t){let e=document.createElement("a");return e.href=t,new URL(e)}function A(t,e={}){e.token=c.token;let r=document.createElement("input");r.type="hidden",r.name="turbo_reflex",r.value=JSON.stringify(e),t.appendChild(r)}function C(t){let e,r,n,s;try{if(e=m(t.target),!e||!E(t.type,e.tagName)||(o.dispatch(o.beforeStart,e,{element:e}),r=b(e),!r)||(n=g(r),!n)||(s=x(n),!s))return;let i={frameId:r,element:v(e)};if(o.dispatch(o.start,e,{element:e,frameId:r,frame:n,frameSrc:s,payload:i}),n.dataset.turboReflexActive=!0,n.dataset.turboReflexElementId=e.id,e.tagName.toLowerCase()==="form")return A(e,i);t.preventDefault();let d=I(s);d.searchParams.set("turbo_reflex",JSON.stringify(i)),n.src=d.toString()}catch(i){console.error("TurboReflex encountered an unexpected error!",{element:e,frameId:r,frame:n,frameSrc:s,target:t.target},i),o.dispatch(o.error,e||document,{element:e,frameId:r,frame:n,frameSrc:s,error:i})}}p(C);f("change",["input","select","textarea"]);f("submit",["form"]);f("click",["*"]);var M={registerEvent:f,logRegisteredEvents:R,logLifecycleEventNames:o.logEventNames};export{M as default};
2
- //# sourceMappingURL=turbo_reflex.min.js.map
2
+ //# sourceMappingURL=turbo_reflex.js.map
@@ -0,0 +1,23 @@
1
+ version: "3.9"
2
+
3
+ services:
4
+ demo:
5
+ build: .
6
+ image: turbo_reflex
7
+ container_name: turbo_reflex
8
+ working_dir: /turbo_reflex
9
+ tty: true
10
+ stdin_open: true
11
+ restart: unless-stopped
12
+ environment:
13
+ RAILS_ENV: development
14
+ expose:
15
+ - 3000
16
+ command: >
17
+ /bin/bash -c "rm -f tmp/pids/server.pid &&
18
+ rm -f Gemfile.lock &&
19
+ bundle --jobs 3 --verbose &&
20
+ bin/rails log:clear &&
21
+ bin/rails db:create db:migrate &&
22
+ bin/rails s --binding=0.0.0.0 --port=3000"
23
+
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module TurboReflex
4
- VERSION = "0.0.2"
4
+ VERSION = "0.0.3"
5
5
  end
data/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "turbo_reflex",
3
- "version": "0.0.1",
3
+ "version": "0.0.2",
4
4
  "description": "Reflexes for Turbo Frames that help you build robust reactive applications",
5
- "main": "app/assets/builds/turbo_reflex.js",
5
+ "main": "app/javascript/turbo_reflex.js",
6
6
  "repository": "https://github.com/hopsoft/turbo_reflex",
7
7
  "author": "Nate Hopkins (hopsoft) <natehop@gmail.com>",
8
8
  "license": "MIT",
@@ -15,6 +15,6 @@
15
15
  "prettier-standard": "^16.4.1"
16
16
  },
17
17
  "scripts": {
18
- "build": "esbuild app/javascript/turbo_reflex.js --bundle --minify --sourcemap --format=esm --outfile=app/assets/builds/turbo_reflex.min.js"
18
+ "build": "esbuild app/javascript/turbo_reflex.js --bundle --minify --sourcemap --format=esm --outfile=app/assets/builds/turbo_reflex.js"
19
19
  }
20
20
  }