pagehook-rails 0.0.13 → 0.1.0

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: f2852ade6233194d94418a3654f9bea38e4b0442e62077bcc6c34bf7e7f0a9c4
4
- data.tar.gz: 3b9af4d616394e071a10a74a41c9ce3f8c9a4ef2e3d042c8a6a011b271051e24
3
+ metadata.gz: a1233e455124a9255cf37b940682d2df66e7eafc0e76ebd683f4eeebb0ef8623
4
+ data.tar.gz: 7ae8e6be99a95183bbb6879accb037f898f8eb0aa9614283c430a30144d6fedc
5
5
  SHA512:
6
- metadata.gz: fb0f881127bf6258fc690126c5d3bbf7520d5b837e931281d6a7e41fb4fbf19cace07285b4ba649f1beda950c8ffff031e796b3ff72706b035bbefd3b43a2c5a
7
- data.tar.gz: bcebf3b94676101d493a10a46bebfbc9405d7f1b1a0a800339b9427404a62f7b642b0739f4f56823839617f56afde0830878f65b54e9c0ea299153c7931d91a2
6
+ metadata.gz: 85584053052956a9daea5450062c42d6f4086f6919411a648c0aa9db484e6d56d671f7e268b2221fc5ed23ad4eef03bd07f51053ae79ec6dcd30953e7ba804c5
7
+ data.tar.gz: ac5cc2da3288405507820c6825c14675a771b40ffd4d9d2e8925252166bc9fef26f5e2efeb4ab18951bc8c078b13be25993d636f0336e0c1df28d6e02f8a9878
data/README.md CHANGED
@@ -15,9 +15,7 @@ And then execute:
15
15
 
16
16
  $ bundle
17
17
  $ rails g pagehook:install
18
- # Or `rails g pagehook:install --lang coffee` if you like CoofeeScript
19
-
20
- If you use turbolinks, you should load `pagehook_rails` after `turbolinks` in `app/assets/javascripts/application.js`.
18
+ # Or `rails g pagehook:install --lang js` if you dont use TypeScript
21
19
 
22
20
 
23
21
  View helper
@@ -25,7 +23,7 @@ View helper
25
23
 
26
24
  `pagehook` view helper method generates "trigger element".
27
25
 
28
- <%= pagehook("articles/index", id: 123) %>
26
+ <%= pagehook("articles/index", {id: 123}) %>
29
27
 
30
28
  This generates following HTML.
31
29
 
@@ -38,15 +36,14 @@ Generator
38
36
  `rails g pagehook path/to/view` generates hook definition template.
39
37
 
40
38
  $ rails g pagehook articles/index
41
- create app/assets/javascripts/pagehook/articles/index.coffee
42
- $ cat app/assets/javascripts/pagehook/articles/index.coffee
43
- //= require pagehook_rails
44
- Pagehook.register("articles/index", function(data) {
45
- // Your code
39
+ create app/javascript/pagehook/articles/index.ts
40
+ $ cat app/javascript/pagehook/articles/index.ts
41
+ import Pagehook from "pagehook"
42
+ Pagehook.register("articles/index", (data: any) => {
43
+ console.log(data);
46
44
  });
47
45
 
48
-
49
- You can also do `rails g pagehook path/to/view --lang coffee` to generate .coffee rather than .js.
46
+ You can also do `rails g pagehook path/to/view --lang js` to generate .js rather than .ts.
50
47
 
51
48
 
52
49
  Contributing
@@ -1,17 +1,30 @@
1
1
  module Pagehook
2
2
  class InstallGenerator < Rails::Generators::Base
3
3
  source_root File.expand_path("../templates", __FILE__)
4
- class_option :lang, type: :string, default: "js"
4
+ class_option :lang, type: :string, default: "ts"
5
+
6
+ def install
7
+ run "yarn add pagehook@^0.1.4"
8
+ end
5
9
 
6
10
  def copy_loader
7
11
  case options[:lang].downcase
8
- when "coffee", "coffeescript"
9
- copy_file "pagehook_rails.coffee", "app/assets/javascripts/pagehook_rails.coffee"
10
12
  when "js", "javascript"
11
- copy_file "pagehook_rails.js", "app/assets/javascripts/pagehook_rails.js"
13
+ copy_file "pagehook_rails.js", "app/javascript/pagehook_rails.js"
14
+ copy_file "global.js", "app/javascript/pagehook/global.js"
15
+ when "ts", "typescript"
16
+ copy_file "pagehook_rails.ts", "app/javascript/pagehook_rails.ts"
17
+ copy_file "global.ts", "app/javascript/pagehook/global.ts"
12
18
  else
13
19
  raise "Unknown language: #{lang}"
14
20
  end
21
+
22
+ case
23
+ when File.exists?("app/javascript/packs/application.ts")
24
+ append_file_with_newline "app/javascript/packs/application.ts", %(\nimport "../pagehook_rails")
25
+ when File.exists?("app/javascript/packs/application.js")
26
+ append_file_with_newline "app/javascript/packs/application.js", %(\nimport "../pagehook_rails")
27
+ end
15
28
  end
16
29
  end
17
30
  end
@@ -0,0 +1,4 @@
1
+ import Pagehook from "pagehook"
2
+ Pagehook.register("@global", function() {
3
+ // Your code
4
+ });
@@ -0,0 +1,4 @@
1
+ import Pagehook from "pagehook"
2
+ Pagehook.register("@global", () => {
3
+ // Your code
4
+ });
@@ -1,8 +1,13 @@
1
- //= require pagehook_rails/pagehook
2
1
  // Register event handler
3
- if (typeof(Turbolinks) === "undefined") {
4
- document.addEventListener("DOMContentLoaded", Pagehook.handler);
5
- } else {
6
- document.addEventListener("turbolinks:load", Pagehook.handler);
7
- document.addEventListener("page:load", Pagehook.handler);
8
- }
2
+ import Pagehook from "pagehook";
3
+ document.addEventListener("DOMContentLoaded", Pagehook.handler);
4
+
5
+ const requireHook = require.context(
6
+ "./pagehook",
7
+ true, // Whether or not to look in subfolders
8
+ /[a-z0-9_]+\.(js|ts)$/u,
9
+ );
10
+
11
+ requireHook.keys().forEach((fileName) => {
12
+ requireHook(fileName);
13
+ });
@@ -0,0 +1,22 @@
1
+ // Register event handler
2
+ import Pagehook from "pagehook";
3
+ document.addEventListener("DOMContentLoaded", Pagehook.handler);
4
+
5
+ // Require all hooks in ./pagehook
6
+ interface RequireHook {
7
+ (fileName: string): object | {default: object};
8
+ keys: () => string[];
9
+ }
10
+ interface NodeRequireWithContext extends NodeRequire {
11
+ context: (a: string, b: boolean, c: RegExp) => RequireHook;
12
+ }
13
+
14
+ const requireHook = (require as NodeRequireWithContext).context(
15
+ "./pagehook",
16
+ true, // Whether or not to look in subfolders
17
+ /[a-z0-9_]+\.(js|ts)$/u,
18
+ );
19
+
20
+ requireHook.keys().forEach((fileName: string) => {
21
+ requireHook(fileName);
22
+ });
@@ -1,13 +1,13 @@
1
1
  class PagehookGenerator < Rails::Generators::NamedBase
2
2
  source_root File.expand_path("../templates", __FILE__)
3
- class_option :lang, type: :string, default: "js"
3
+ class_option :lang, type: :string, default: "ts"
4
4
 
5
5
  def generate_script
6
6
  case options[:lang].downcase
7
- when "coffee", "coffeescript"
8
- template "hook.coffee.erb", "app/assets/javascripts/pagehook/#{view_path}.coffee"
9
7
  when "js", "javascript"
10
- template "hook.js.erb", "app/assets/javascripts/pagehook/#{view_path}.js"
8
+ template "hook.js.erb", "app/javascript/pagehook/#{view_path}.js"
9
+ when "ts", "typescript"
10
+ template "hook.ts.erb", "app/javascript/pagehook/#{view_path}.ts"
11
11
  else
12
12
  raise "Unknown language: #{lang}"
13
13
  end
@@ -1,4 +1,4 @@
1
- //= require pagehook_rails
1
+ import Pagehook from "pagehook"
2
2
  Pagehook.register("<%= view_path %>", function(data) {
3
- // Your code
3
+ // Your code
4
4
  });
@@ -0,0 +1,4 @@
1
+ import Pagehook from "pagehook"
2
+ Pagehook.register("<%= view_path %>", (data: any) => {
3
+ // Your code
4
+ });
@@ -3,7 +3,7 @@ module PagehookRails
3
3
  isolate_namespace PagehookRails
4
4
 
5
5
  initializer "pagehook-rails.action_controller" do |app|
6
- ActiveSupport.on_load :action_controller do
6
+ Rails.application.reloader.to_prepare do
7
7
  ActionController::Base.helper PagehookRails::PagehookHelper
8
8
  end
9
9
  end
@@ -1,3 +1,3 @@
1
1
  module PagehookRails
2
- VERSION = "0.0.13"
2
+ VERSION = "0.1.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pagehook-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.13
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - labocho
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-08-20 00:00:00.000000000 Z
11
+ date: 2022-12-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '3.1'
19
+ version: '6.1'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '3.1'
26
+ version: '6.1'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: loofah
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -118,21 +118,22 @@ files:
118
118
  - MIT-LICENSE
119
119
  - README.md
120
120
  - Rakefile
121
- - app/assets/javascripts/pagehook_rails/pagehook.js
122
121
  - app/helpers/pagehook_rails/pagehook_helper.rb
123
122
  - lib/generators/pagehook/install/install_generator.rb
124
- - lib/generators/pagehook/install/templates/pagehook_rails.coffee
123
+ - lib/generators/pagehook/install/templates/global.js
124
+ - lib/generators/pagehook/install/templates/global.ts
125
125
  - lib/generators/pagehook/install/templates/pagehook_rails.js
126
+ - lib/generators/pagehook/install/templates/pagehook_rails.ts
126
127
  - lib/generators/pagehook/pagehook_generator.rb
127
- - lib/generators/pagehook/templates/hook.coffee.erb
128
128
  - lib/generators/pagehook/templates/hook.js.erb
129
+ - lib/generators/pagehook/templates/hook.ts.erb
129
130
  - lib/pagehook-rails.rb
130
131
  - lib/pagehook-rails/engine.rb
131
132
  - lib/pagehook-rails/version.rb
132
133
  homepage: https://github.com/labocho/pagehook-rails
133
134
  licenses: []
134
135
  metadata: {}
135
- post_install_message:
136
+ post_install_message:
136
137
  rdoc_options: []
137
138
  require_paths:
138
139
  - lib
@@ -147,8 +148,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
147
148
  - !ruby/object:Gem::Version
148
149
  version: '0'
149
150
  requirements: []
150
- rubygems_version: 3.0.3
151
- signing_key:
151
+ rubygems_version: 3.3.3
152
+ signing_key:
152
153
  specification_version: 4
153
154
  summary: Rails plugin integrates Pagehook (https://github.com/labocho/pagehook)
154
155
  test_files: []
@@ -1,82 +0,0 @@
1
- !function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var o;"undefined"!=typeof window?o=window:"undefined"!=typeof global?o=global:"undefined"!=typeof self&&(o=self),o.Pagehook=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
2
- "use strict";
3
-
4
- // constructor
5
- var Pagehook = function() {
6
- this.definitions = {};
7
- this.handler = this.handlerUnbound.bind(this);
8
- };
9
-
10
- // constant
11
- Pagehook.GLOBAL_HOOK_NAME = "@global";
12
- Pagehook.ATTRIBUTE_NAME = "data-pagehook";
13
-
14
- // static methods
15
- Pagehook.register = function(name_or_map, func) {
16
- this.instance.register(name_or_map, func);
17
- };
18
-
19
- Pagehook.dispatch = function(name, arg) {
20
- this.instance.dispatch(name, arg);
21
- };
22
-
23
- // Pagehook.register "name", (arg)-> ...
24
- // // or
25
- // Pagehoook.register
26
- // name: (arg)->
27
- Pagehook.prototype.register = function(name_or_map, func) {
28
- var name;
29
-
30
- if (typeof(name_or_map) === "string") {
31
- if (!this.definitions[name_or_map]) {
32
- this.definitions[name_or_map] = [];
33
- }
34
- this.definitions[name_or_map].push(func);
35
- } else {
36
- for (name in name_or_map) {
37
- this.register(name, name_or_map[name]);
38
- }
39
- }
40
- };
41
-
42
- // Pagehook.dispatch("name", {foo: 1, bar: 2})
43
- Pagehook.prototype.dispatch = function(name, arg) {
44
- if (this.definitions[name]) {
45
- this.definitions[name].forEach(function(func) {
46
- func(arg);
47
- });
48
- } else {
49
- if (name !== Pagehook.GLOBAL_HOOK_NAME) {
50
- console.log("Pagehook for " + name + " is undefined");
51
- }
52
- }
53
- };
54
-
55
- // Event handler for DOMContentLoaded or turbolinks:load (turbolinks)
56
- // Use `handler` property instead of this
57
- Pagehook.prototype.handlerUnbound = function() {
58
- var elements, i, e, name, arg;
59
-
60
- this.dispatch(Pagehook.GLOBAL_HOOK_NAME);
61
-
62
- elements = document.querySelectorAll("[" + Pagehook.ATTRIBUTE_NAME + "]");
63
- for (i = 0; i < elements.length; i++) {
64
- e = elements[i];
65
- name = e.getAttribute(Pagehook.ATTRIBUTE_NAME);
66
- arg = this.isBlank(e.textContent) ? undefined : JSON.parse(e.textContent);
67
- this.dispatch(name, arg);
68
- }
69
- };
70
-
71
- Pagehook.prototype.isBlank = function(string) {
72
- return !!(string.match(/^\s*$/));
73
- };
74
-
75
- // instanciate singleton object
76
- Pagehook.instance = new Pagehook();
77
- Pagehook.handler = Pagehook.instance.handler;
78
-
79
- module.exports = Pagehook;
80
-
81
- },{}]},{},[1])(1)
82
- });
@@ -1,7 +0,0 @@
1
- #= require pagehook_rails/pagehook
2
- # Register event handler
3
- if typeof(Turbolinks) == "undefined"
4
- document.addEventListener("DOMContentLoaded", Pagehook.handler)
5
- else
6
- document.addEventListener("turbolinks:load", Pagehook.handler)
7
- document.addEventListener("page:load", Pagehook.handler)
@@ -1,3 +0,0 @@
1
- #= require pagehook_rails
2
- Pagehook.register "<%= view_path %>", (data) ->
3
- # Your code