@mypolis.eu/action-controller 1.0.0 → 3.0.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.
package/dist/action.js ADDED
@@ -0,0 +1,13 @@
1
+ const pattern = /(.+?)->(.+?)#(.+)/;
2
+ export function parseActions(action) {
3
+ const rawActions = action.split(/\s+/).filter((s) => s.length > 0);
4
+ return rawActions.map((str) => {
5
+ const match = str.match(pattern);
6
+ if (!match) {
7
+ throw new Error(`invalid action format: ${str}`);
8
+ }
9
+ const [_, event, controller, method] = match;
10
+ return { event, controller, method };
11
+ });
12
+ }
13
+ //# sourceMappingURL=action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action.js","sourceRoot":"","sources":["../src/action.ts"],"names":[],"mappings":"AAMA,MAAM,OAAO,GAAG,mBAAmB,CAAC;AAEpC,MAAM,UAAU,YAAY,CAAC,MAAc;IAC1C,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACnE,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACjC,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,EAAE,CAAC,CAAC;QAClD,CAAC;QACD,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC;QAC7C,OAAO,EAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,31 @@
1
+ import { assert } from "@open-wc/testing";
2
+ import { parseActions } from "./action";
3
+ describe("parseActions", () => {
4
+ it("can parse an action from a string", () => {
5
+ const str = "htmx:beforeRequest->loading-state#start";
6
+ const actions = parseActions(str);
7
+ assert.strictEqual(actions[0].event, "htmx:beforeRequest");
8
+ assert.strictEqual(actions[0].controller, "loading-state");
9
+ assert.strictEqual(actions[0].method, "start");
10
+ });
11
+ it("can parse multiple actions from a string", () => {
12
+ const str = `
13
+ htmx:beforeRequest->loading-state#start
14
+ htmx:afterRequest->loading-state#stop
15
+ `;
16
+ const actions = parseActions(str);
17
+ assert.strictEqual(actions[0].event, "htmx:beforeRequest");
18
+ assert.strictEqual(actions[0].controller, "loading-state");
19
+ assert.strictEqual(actions[0].method, "start");
20
+ assert.strictEqual(actions[1].event, "htmx:afterRequest");
21
+ assert.strictEqual(actions[1].controller, "loading-state");
22
+ assert.strictEqual(actions[1].method, "stop");
23
+ });
24
+ it("throws an error if action if not valid", () => {
25
+ const badStrs = ["foo", "->loading-state#start", "foo->bar", "foo#bar"];
26
+ for (const str of badStrs) {
27
+ assert.throws(() => parseActions(str), "invalid action format: " + str);
28
+ }
29
+ });
30
+ });
31
+ //# sourceMappingURL=action.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action.test.js","sourceRoot":"","sources":["../src/action.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAC,YAAY,EAAC,MAAM,UAAU,CAAC;AAEtC,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC5C,MAAM,GAAG,GAAG,yCAAyC,CAAC;QAEtD,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QAElC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC;QAC3D,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;QAC3D,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QACnD,MAAM,GAAG,GAAG;;;GAGX,CAAC;QAEF,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QAElC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC;QAC3D,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;QAC3D,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAE/C,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC;QAC1D,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;QAC3D,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QACjD,MAAM,OAAO,GAAG,CAAC,KAAK,EAAE,uBAAuB,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;QACxE,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC3B,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,yBAAyB,GAAG,GAAG,CAAC,CAAC;QACzE,CAAC;IACF,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -5,11 +5,11 @@ describe("parseAttributes", () => {
5
5
  beforeEach(() => {
6
6
  element = document.createElement("div");
7
7
  });
8
- test("parses string attributes", () => {
8
+ it("parses string attributes", () => {
9
9
  element.setAttribute("data-url", "/products");
10
10
  assert.deepStrictEqual(parseAttributes(element), { url: "/products" });
11
11
  });
12
- test("parses boolean attributes", () => {
12
+ it("parses boolean attributes", () => {
13
13
  element.setAttribute("data-active", "true");
14
14
  element.setAttribute("data-disabled", "false");
15
15
  assert.deepStrictEqual(parseAttributes(element), {
@@ -17,23 +17,23 @@ describe("parseAttributes", () => {
17
17
  disabled: false
18
18
  });
19
19
  });
20
- test("parses number attributes", () => {
20
+ it("parses number attributes", () => {
21
21
  element.setAttribute("data-count", "42");
22
22
  assert.deepStrictEqual(parseAttributes(element), { count: 42 });
23
23
  });
24
- test("parses array attributes", () => {
24
+ it("parses array attributes", () => {
25
25
  element.setAttribute("data-tags", "one,two,three");
26
26
  assert.deepStrictEqual(parseAttributes(element), {
27
27
  tags: ["one", "two", "three"]
28
28
  });
29
29
  });
30
- test("parses JSON attributes", () => {
30
+ it("parses JSON attributes", () => {
31
31
  element.setAttribute("data-config", '{"foo": "bar", "num": 123}');
32
32
  assert.deepStrictEqual(parseAttributes(element), {
33
33
  config: { foo: "bar", num: 123 }
34
34
  });
35
35
  });
36
- test("handles kebab-case attributes", () => {
36
+ it("handles kebab-case attributes", () => {
37
37
  element.setAttribute("data-user-name", "John");
38
38
  element.setAttribute("data-last-login-date", "2024-01-21");
39
39
  assert.deepStrictEqual(parseAttributes(element), {
@@ -41,7 +41,7 @@ describe("parseAttributes", () => {
41
41
  lastLoginDate: "2024-01-21"
42
42
  });
43
43
  });
44
- test("ignores non-data attributes", () => {
44
+ it("ignores non-data attributes", () => {
45
45
  element.setAttribute("id", "test");
46
46
  element.setAttribute("data-name", "John");
47
47
  assert.deepStrictEqual(parseAttributes(element), { name: "John" });
@@ -1 +1 @@
1
- {"version":3,"file":"attributes.test.js","sourceRoot":"","sources":["../src/attributes.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAC,eAAe,EAAC,MAAM,cAAc,CAAC;AAE7C,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAChC,IAAI,OAAoB,CAAC;IAEzB,UAAU,CAAC,GAAG,EAAE;QACf,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,0BAA0B,EAAE,GAAG,EAAE;QACrC,OAAO,CAAC,YAAY,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QAC9C,MAAM,CAAC,eAAe,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,EAAC,GAAG,EAAE,WAAW,EAAC,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACtC,OAAO,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QAC5C,OAAO,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;QAC/C,MAAM,CAAC,eAAe,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE;YAChD,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,KAAK;SACf,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,0BAA0B,EAAE,GAAG,EAAE;QACrC,OAAO,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QACzC,MAAM,CAAC,eAAe,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,EAAC,KAAK,EAAE,EAAE,EAAC,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACpC,OAAO,CAAC,YAAY,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;QACnD,MAAM,CAAC,eAAe,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE;YAChD,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC;SAC7B,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACnC,OAAO,CAAC,YAAY,CAAC,aAAa,EAAE,4BAA4B,CAAC,CAAC;QAClE,MAAM,CAAC,eAAe,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE;YAChD,MAAM,EAAE,EAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAC;SAC9B,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,+BAA+B,EAAE,GAAG,EAAE;QAC1C,OAAO,CAAC,YAAY,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QAC/C,OAAO,CAAC,YAAY,CAAC,sBAAsB,EAAE,YAAY,CAAC,CAAC;QAC3D,MAAM,CAAC,eAAe,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE;YAChD,QAAQ,EAAE,MAAM;YAChB,aAAa,EAAE,YAAY;SAC3B,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACxC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACnC,OAAO,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAC1C,MAAM,CAAC,eAAe,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"attributes.test.js","sourceRoot":"","sources":["../src/attributes.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAC,eAAe,EAAC,MAAM,cAAc,CAAC;AAE7C,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAChC,IAAI,OAAoB,CAAC;IAEzB,UAAU,CAAC,GAAG,EAAE;QACf,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QACnC,OAAO,CAAC,YAAY,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QAC9C,MAAM,CAAC,eAAe,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,EAAC,GAAG,EAAE,WAAW,EAAC,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACpC,OAAO,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QAC5C,OAAO,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;QAC/C,MAAM,CAAC,eAAe,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE;YAChD,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,KAAK;SACf,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QACnC,OAAO,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QACzC,MAAM,CAAC,eAAe,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,EAAC,KAAK,EAAE,EAAE,EAAC,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QAClC,OAAO,CAAC,YAAY,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC;QACnD,MAAM,CAAC,eAAe,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE;YAChD,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC;SAC7B,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACjC,OAAO,CAAC,YAAY,CAAC,aAAa,EAAE,4BAA4B,CAAC,CAAC;QAClE,MAAM,CAAC,eAAe,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE;YAChD,MAAM,EAAE,EAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAC;SAC9B,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACxC,OAAO,CAAC,YAAY,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;QAC/C,OAAO,CAAC,YAAY,CAAC,sBAAsB,EAAE,YAAY,CAAC,CAAC;QAC3D,MAAM,CAAC,eAAe,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE;YAChD,QAAQ,EAAE,MAAM;YAChB,aAAa,EAAE,YAAY;SAC3B,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACtC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACnC,OAAO,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAC1C,MAAM,CAAC,eAAe,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,CAAC"}
@@ -1,47 +1,38 @@
1
- var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
2
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
3
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
4
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
- };
6
- var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
7
- if (kind === "m") throw new TypeError("Private method is not writable");
8
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
9
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
10
- return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
11
- };
12
- var _Controller_instances, _Controller_handlers, _Controller_observer, _Controller_parseActions, _Controller_handleAction, _Controller_listenActions, _Controller_cleanupActions;
13
- import { LitElement, html } from "lit";
14
- import { findElements } from "./query";
1
+ import { html, LitElement } from "lit";
2
+ import { parseActions } from "./action";
15
3
  import { parseAttributes } from "./attributes";
4
+ import { findElements, targetKey } from "./query";
16
5
  export class Controller extends LitElement {
6
+ #handlers = new Map();
7
+ #observer;
8
+ [targetKey];
17
9
  constructor() {
18
10
  super();
19
- _Controller_instances.add(this);
20
- _Controller_handlers.set(this, new WeakMap());
21
- _Controller_observer.set(this, void 0);
22
- __classPrivateFieldSet(this, _Controller_observer, new MutationObserver(() => {
23
- __classPrivateFieldGet(this, _Controller_instances, "m", _Controller_cleanupActions).call(this); // Clean up existing listeners
24
- __classPrivateFieldGet(this, _Controller_instances, "m", _Controller_listenActions).call(this); // Add new listeners
25
- }), "f");
11
+ this.#observer = new MutationObserver(() => {
12
+ this.#cleanupActions(); // Clean up existing listeners
13
+ this.#listenActions(); // Add new listeners
14
+ this.#updateQueries(); // Refresh the queries
15
+ });
26
16
  }
27
17
  connectedCallback() {
28
18
  super.connectedCallback();
29
19
  // Initial setup
30
- __classPrivateFieldGet(this, _Controller_instances, "m", _Controller_listenActions).call(this);
20
+ this.#updateQueries();
21
+ this.#listenActions();
31
22
  // Start observing changes
32
- __classPrivateFieldGet(this, _Controller_observer, "f").observe(this, {
23
+ this.#observer.observe(this, {
33
24
  childList: true,
34
25
  subtree: true,
35
26
  attributes: true,
36
- attributeFilter: ["data-action", "data-query", "data-target", "data-trigger"]
27
+ attributeFilter: ["data-action", "data-target"]
37
28
  });
38
29
  }
39
30
  disconnectedCallback() {
40
31
  super.disconnectedCallback();
41
32
  // Clean up existing listeners
42
- __classPrivateFieldGet(this, _Controller_instances, "m", _Controller_cleanupActions).call(this);
33
+ this.#cleanupActions();
43
34
  // Stop observing
44
- __classPrivateFieldGet(this, _Controller_observer, "f").disconnect();
35
+ this.#observer.disconnect();
45
36
  }
46
37
  render() {
47
38
  return html `<slot />`;
@@ -57,89 +48,76 @@ export class Controller extends LitElement {
57
48
  return {};
58
49
  return parseAttributes(target);
59
50
  }
60
- }
61
- _Controller_handlers = new WeakMap(), _Controller_observer = new WeakMap(), _Controller_instances = new WeakSet(), _Controller_parseActions = function _Controller_parseActions(actionString) {
62
- if (!actionString)
63
- return [];
64
- return actionString
65
- .trim()
66
- .split(/\s+/) // Split multiple actions defined in the string
67
- .map((action) => {
68
- // 1. Find the method separator first
69
- const hashIndex = action.indexOf("#");
70
- let eventAndControllerPart;
71
- let method;
72
- if (hashIndex === -1) {
73
- // No '#' found, method defaults to 'handleEvent'
74
- eventAndControllerPart = action;
75
- method = "handleEvent";
76
- }
77
- else {
78
- eventAndControllerPart = action.substring(0, hashIndex);
79
- method = action.substring(hashIndex + 1) || "handleEvent";
80
- }
81
- // 2. Find the LAST colon in the remaining part to separate event type from controller
82
- const lastColonIndex = eventAndControllerPart.lastIndexOf(":");
83
- // Check if a colon exists and separates non-empty parts
84
- if (lastColonIndex <= 0 || lastColonIndex === eventAndControllerPart.length - 1) {
85
- console.warn(`[Controller] Invalid action format: Could not determine event and controller in "${action}". Skipping.`);
86
- return null; // Invalid format
51
+ #handleAction(event, element, action) {
52
+ // look for the nearest controller matching the action's controller name
53
+ const controller = element.closest(action.controller);
54
+ if (!controller) {
55
+ console.warn(`Controller ${action.controller} not found`);
56
+ return;
87
57
  }
88
- const eventType = eventAndControllerPart.substring(0, lastColonIndex);
89
- const controller = eventAndControllerPart.substring(lastColonIndex + 1);
90
- // Final validation
91
- if (!eventType || !controller || !method) {
92
- console.warn(`[Controller] Invalid action format: Empty parts detected in "${action}". Skipping.`);
93
- return null;
58
+ // the method should exist on the controller, not the element
59
+ const method = controller[action.method];
60
+ if (typeof method !== "function") {
61
+ console.warn(`Method ${action.method} not found on controller ${action.controller}`);
62
+ return;
94
63
  }
95
- return { type: eventType, controller, method };
96
- })
97
- .filter((action) => action !== null);
98
- }, _Controller_handleAction = function _Controller_handleAction(event, element, action) {
99
- // look for the nearest controller matching the action's controller name
100
- const controller = element.closest(action.controller);
101
- if (!controller) {
102
- console.warn(`Controller ${action.controller} not found`);
103
- return;
64
+ method.call(controller, event);
104
65
  }
105
- // the method should exist on the controller, not the element
106
- const method = controller[action.method];
107
- if (typeof method !== "function") {
108
- console.warn(`Method ${action.method} not found on controller ${action.controller}`);
109
- return;
66
+ #listenActions() {
67
+ findElements(this, "[data-action]").forEach((element) => {
68
+ const str = element.dataset.action;
69
+ if (!str)
70
+ return;
71
+ const handlers = [];
72
+ for (const action of parseActions(str)) {
73
+ if (action.controller !== this.tagName.toLowerCase())
74
+ continue;
75
+ const handler = (event) => this.#handleAction(event, element, action);
76
+ element.addEventListener(action.event, handler);
77
+ handlers.push({ event: action.event, handler });
78
+ }
79
+ if (handlers.length) {
80
+ this.#handlers.set(element, handlers);
81
+ }
82
+ });
110
83
  }
111
- method.call(controller, event);
112
- }, _Controller_listenActions = function _Controller_listenActions() {
113
- findElements(this, "[data-action]").forEach((element) => {
114
- const actionString = element.dataset.action;
115
- if (!actionString)
84
+ #updateQueries() {
85
+ if (!this[targetKey] || this[targetKey].length === 0)
116
86
  return;
117
- const handlers = [];
118
- for (const action of __classPrivateFieldGet(this, _Controller_instances, "m", _Controller_parseActions).call(this, actionString)) {
119
- if (action.controller !== this.tagName.toLowerCase())
120
- continue;
121
- const handler = (event) => __classPrivateFieldGet(this, _Controller_instances, "m", _Controller_handleAction).call(this, event, element, action);
122
- element.addEventListener(action.type, handler);
123
- handlers.push(handler);
87
+ let needsUpdate = false;
88
+ for (const target of this[targetKey]) {
89
+ const propertyKey = target.propertyKey;
90
+ const nextElement = target.query;
91
+ const current = this[propertyKey];
92
+ let hasChanged = false;
93
+ if (Array.isArray(nextElement)) {
94
+ const currentElements = (current || []);
95
+ if (currentElements.length !== nextElement.length ||
96
+ nextElement.some((el) => !currentElements.includes(el))) {
97
+ hasChanged = true;
98
+ }
99
+ }
100
+ else {
101
+ if (current !== nextElement) {
102
+ hasChanged = true;
103
+ }
104
+ }
105
+ if (hasChanged) {
106
+ this[propertyKey] = nextElement;
107
+ needsUpdate = true;
108
+ }
124
109
  }
125
- if (handlers.length) {
126
- __classPrivateFieldGet(this, _Controller_handlers, "f").set(element, handlers);
110
+ if (needsUpdate) {
111
+ this.requestUpdate();
127
112
  }
128
- });
129
- }, _Controller_cleanupActions = function _Controller_cleanupActions() {
130
- findElements(this, "[data-action]").forEach((element) => {
131
- const handlers = __classPrivateFieldGet(this, _Controller_handlers, "f").get(element);
132
- if (!handlers)
133
- return;
134
- const actionString = element.dataset.action;
135
- if (!actionString)
136
- return;
137
- for (const action of __classPrivateFieldGet(this, _Controller_instances, "m", _Controller_parseActions).call(this, actionString)) {
138
- handlers.forEach((handler) => {
139
- element.removeEventListener(action.type, handler);
140
- });
113
+ }
114
+ #cleanupActions() {
115
+ for (const [element, handlers] of this.#handlers.entries()) {
116
+ for (const { event, handler } of handlers) {
117
+ element.removeEventListener(event, handler);
118
+ }
141
119
  }
142
- });
143
- __classPrivateFieldSet(this, _Controller_handlers, new WeakMap(), "f"); // Reset handlers map
144
- };
120
+ this.#handlers.clear();
121
+ }
122
+ }
145
123
  //# sourceMappingURL=controller.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"controller.js","sourceRoot":"","sources":["../src/controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"controller.js","sourceRoot":"","sources":["../src/controller.ts"],"names":[],"mappings":"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"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAc,MAAM,cAAc,CAAC;AAErD,OAAO,EAAC,MAAM,EAAE,OAAO,EAAC,MAAM,SAAS,CAAC;AAExC,OAAO,EAAC,QAAQ,EAAC,MAAM,YAAY,CAAC;AAEpC,OAAO,EAAC,eAAe,EAAC,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AAIxC,OAAO,EAAC,MAAM,EAAE,OAAO,EAAC,MAAM,SAAS,CAAC;AAExC,OAAO,EAAC,QAAQ,EAAC,MAAM,YAAY,CAAC;AAEpC,OAAO,EAAC,eAAe,EAAC,MAAM,cAAc,CAAC"}
package/dist/query.js CHANGED
@@ -21,41 +21,38 @@ export function findElements(controller, query) {
21
21
  }
22
22
  return elements;
23
23
  }
24
- /**
25
- * Decorator to find a single element with data-target.
26
- * @example @target myTarget;
27
- */
24
+ export const targetKey = Symbol("targets");
28
25
  export function target(_value, context) {
29
26
  const propertyKey = context.name;
30
27
  context.addInitializer(function () {
31
28
  const instance = this;
32
- Object.defineProperty(instance, propertyKey, {
33
- get: function () {
34
- const controller = this.tagName.toLowerCase();
29
+ if (!instance[targetKey]) {
30
+ instance[targetKey] = [];
31
+ }
32
+ instance[targetKey].push({
33
+ propertyKey,
34
+ get query() {
35
+ const controller = instance.tagName.toLowerCase();
35
36
  const query = `[data-target~="${controller}.${propertyKey}"]`;
36
- return findElements(this, query)?.[0];
37
- },
38
- enumerable: true,
39
- configurable: true
37
+ return findElements(instance, query)?.[0];
38
+ }
40
39
  });
41
40
  });
42
41
  }
43
- /**
44
- * Decorator to find all elements with data-target.
45
- * @example @targets myTargets;
46
- */
47
42
  export function targets(_value, context) {
48
43
  const propertyKey = context.name;
49
44
  context.addInitializer(function () {
50
45
  const instance = this;
51
- Object.defineProperty(instance, propertyKey, {
52
- get: function () {
53
- const controller = this.tagName.toLowerCase();
46
+ if (!instance[targetKey]) {
47
+ instance[targetKey] = [];
48
+ }
49
+ instance[targetKey].push({
50
+ propertyKey,
51
+ get query() {
52
+ const controller = instance.tagName.toLowerCase();
54
53
  const query = `[data-target~="${controller}.${propertyKey}"]`;
55
- return findElements(this, query);
56
- },
57
- enumerable: true,
58
- configurable: true
54
+ return findElements(instance, query);
55
+ }
59
56
  });
60
57
  });
61
58
  }
package/dist/query.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"query.js","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,YAAY,CAAoB,UAAuB,EAAE,KAAa;IACrF,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;IAC7C,MAAM,QAAQ,GAAQ,EAAE,CAAC;IAEzB,oBAAoB;IACpB,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC;QAC3B,MAAM,cAAc,GAAG,UAAU,CAAC,UAAU,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACrE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChD,MAAM,EAAE,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtB,QAAQ,CAAC,IAAI,CAAC,EAAO,CAAC,CAAC;YACxB,CAAC;QACF,CAAC;IACF,CAAC;IAED,mBAAmB;IACnB,MAAM,aAAa,GAAG,UAAU,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/C,MAAM,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,UAAU,EAAE,CAAC;YACpC,QAAQ,CAAC,IAAI,CAAC,EAAO,CAAC,CAAC;QACxB,CAAC;IACF,CAAC;IAED,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,MAAiB,EAAE,OAAmC;IAC5E,MAAM,WAAW,GAAG,OAAO,CAAC,IAAc,CAAC;IAE3C,OAAO,CAAC,cAAc,CAAC;QACtB,MAAM,QAAQ,GAAG,IAAmB,CAAC;QAErC,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,WAAW,EAAE;YAC5C,GAAG,EAAE;gBACJ,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;gBAC9C,MAAM,KAAK,GAAG,kBAAkB,UAAU,IAAI,WAAW,IAAI,CAAC;gBAC9D,OAAO,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACvC,CAAC;YACD,UAAU,EAAE,IAAI;YAChB,YAAY,EAAE,IAAI;SAClB,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAC,MAAiB,EAAE,OAAmC;IAC7E,MAAM,WAAW,GAAG,OAAO,CAAC,IAAc,CAAC;IAE3C,OAAO,CAAC,cAAc,CAAC;QACtB,MAAM,QAAQ,GAAG,IAAmB,CAAC;QAErC,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,WAAW,EAAE;YAC5C,GAAG,EAAE;gBACJ,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;gBAC9C,MAAM,KAAK,GAAG,kBAAkB,UAAU,IAAI,WAAW,IAAI,CAAC;gBAC9D,OAAO,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAClC,CAAC;YACD,UAAU,EAAE,IAAI;YAChB,YAAY,EAAE,IAAI;SAClB,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../src/query.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,YAAY,CAAoB,UAAuB,EAAE,KAAa;IACrF,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;IAC7C,MAAM,QAAQ,GAAQ,EAAE,CAAC;IAEzB,oBAAoB;IACpB,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC;QAC3B,MAAM,cAAc,GAAG,UAAU,CAAC,UAAU,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACrE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAChD,MAAM,EAAE,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtB,QAAQ,CAAC,IAAI,CAAC,EAAO,CAAC,CAAC;YACxB,CAAC;QACF,CAAC;IACF,CAAC;IAED,mBAAmB;IACnB,MAAM,aAAa,GAAG,UAAU,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/C,MAAM,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,UAAU,EAAE,CAAC;YACpC,QAAQ,CAAC,IAAI,CAAC,EAAO,CAAC,CAAC;QACxB,CAAC;IACF,CAAC;IAED,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AAE3C,MAAM,UAAU,MAAM,CAAC,MAAiB,EAAE,OAAoD;IAC7F,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IACjC,OAAO,CAAC,cAAc,CAAC;QACtB,MAAM,QAAQ,GAAG,IAA8C,CAAC;QAChE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAC1B,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;QAC1B,CAAC;QACD,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC;YACxB,WAAW;YACX,IAAI,KAAK;gBACR,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;gBAClD,MAAM,KAAK,GAAG,kBAAkB,UAAU,IAAI,WAAW,IAAI,CAAC;gBAC9D,OAAO,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC3C,CAAC;SACD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,MAAiB,EAAE,OAAoD;IAC9F,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IACjC,OAAO,CAAC,cAAc,CAAC;QACtB,MAAM,QAAQ,GAAG,IAA8C,CAAC;QAChE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAC1B,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;QAC1B,CAAC;QACD,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC;YACxB,WAAW;YACX,IAAI,KAAK;gBACR,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;gBAClD,MAAM,KAAK,GAAG,kBAAkB,UAAU,IAAI,WAAW,IAAI,CAAC;gBAC9D,OAAO,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YACtC,CAAC;SACD,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC"}
package/dist/register.js CHANGED
@@ -3,7 +3,11 @@ export const slugify = (str) => String(typeof str === "symbol" ? str.description
3
3
  .replace(/--/g, "-")
4
4
  .replace(/^-|-$/, "")
5
5
  .toLowerCase();
6
- export function register(classObject) {
6
+ export function register(classObject, context) {
7
+ // Ensure the decorator is only used on classes.
8
+ if (context.kind !== "class") {
9
+ throw new Error("The @register decorator can only be applied to classes.");
10
+ }
7
11
  const name = slugify(classObject.name).replace(/-element$/, "");
8
12
  try {
9
13
  window.customElements.define(name, classObject);
@@ -11,11 +15,11 @@ export function register(classObject) {
11
15
  window[classObject.name] = customElements.get(name);
12
16
  }
13
17
  catch (e) {
14
- // The only reason for window.customElements.define to throw a `NotSupportedError`
15
- // is if the element has already been defined.
16
18
  if (!(e instanceof DOMException && e.name === "NotSupportedError"))
17
19
  throw e;
18
20
  }
19
- return classObject;
21
+ // With modern decorators, you don't need to return the class
22
+ // if you are not replacing it with a new one. This decorator's
23
+ // purpose is the side-effect of registration.
20
24
  }
21
25
  //# sourceMappingURL=register.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"register.js","sourceRoot":"","sources":["../src/register.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,GAAY,EAAU,EAAE,CAC9C,MAAM,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC;KACpD,OAAO,CAAC,mBAAmB,EAAE,KAAK,CAAC;KACnC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;KACnB,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;KACpB,WAAW,EAAE,CAAC;AAEnB,MAAM,UAAU,QAAQ,CACtB,WAAc;IAEd,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAEhE,IAAI,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAChD,aAAa;QACb,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QACpB,kFAAkF;QAClF,8CAA8C;QAC9C,IAAI,CAAC,CAAC,CAAC,YAAY,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,mBAAmB,CAAC;YAAE,MAAM,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC"}
1
+ {"version":3,"file":"register.js","sourceRoot":"","sources":["../src/register.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,GAAY,EAAU,EAAE,CAC/C,MAAM,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC;KACrD,OAAO,CAAC,mBAAmB,EAAE,KAAK,CAAC;KACnC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;KACnB,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;KACpB,WAAW,EAAE,CAAC;AAEjB,MAAM,UAAU,QAAQ,CAAC,WAAqC,EAAE,OAA8B;IAC7F,gDAAgD;IAChD,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;IAC5E,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAEhE,IAAI,CAAC;QACJ,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAChD,aAAa;QACb,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACrD,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QACrB,IAAI,CAAC,CAAC,CAAC,YAAY,YAAY,IAAI,CAAC,CAAC,IAAI,KAAK,mBAAmB,CAAC;YAAE,MAAM,CAAC,CAAC;IAC7E,CAAC;IAED,6DAA6D;IAC7D,+DAA+D;IAC/D,8CAA8C;AAC/C,CAAC"}
@@ -0,0 +1,7 @@
1
+ export type Action = {
2
+ event: string;
3
+ controller: string;
4
+ method: string;
5
+ };
6
+ export declare function parseActions(action: string): Action[];
7
+ //# sourceMappingURL=action.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../src/action.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,GAAG;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CACf,CAAC;AAIF,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAUrD"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=action.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action.test.d.ts","sourceRoot":"","sources":["../../src/action.test.ts"],"names":[],"mappings":""}
@@ -1,11 +1,8 @@
1
1
  import { LitElement } from "lit";
2
- export type Action = {
3
- type: string;
4
- controller: string;
5
- method: string;
6
- };
2
+ import { Target, targetKey } from "./query";
7
3
  export declare class Controller extends LitElement {
8
4
  #private;
5
+ [targetKey]?: Target[];
9
6
  constructor();
10
7
  connectedCallback(): void;
11
8
  disconnectedCallback(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAO,MAAM,KAAK,CAAC;AAIrC,MAAM,MAAM,MAAM,GAAG;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,qBAAa,UAAW,SAAQ,UAAU;;;IAYzC,iBAAiB;IAejB,oBAAoB;IAQpB,MAAM;IAIN,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC;CAoHrF"}
1
+ {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,UAAU,EAAC,MAAM,KAAK,CAAC;AAGrC,OAAO,EAAe,MAAM,EAAE,SAAS,EAAC,MAAM,SAAS,CAAC;AAIxD,qBAAa,UAAW,SAAQ,UAAU;;IAIzC,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;;IAWvB,iBAAiB;IAgBjB,oBAAoB;IAQpB,MAAM;IAIN,WAAW,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC;CA+FrF"}
@@ -1,4 +1,5 @@
1
- export { Controller, type Action } from "./controller";
1
+ export { Controller } from "./controller";
2
+ export { type Action } from "./action";
2
3
  export { target, targets } from "./query";
3
4
  export { register } from "./register";
4
5
  export { parseAttributes } from "./attributes";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAE,KAAK,MAAM,EAAC,MAAM,cAAc,CAAC;AAErD,OAAO,EAAC,MAAM,EAAE,OAAO,EAAC,MAAM,SAAS,CAAC;AAExC,OAAO,EAAC,QAAQ,EAAC,MAAM,YAAY,CAAC;AAEpC,OAAO,EAAC,eAAe,EAAC,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AAExC,OAAO,EAAC,KAAK,MAAM,EAAC,MAAM,UAAU,CAAC;AAErC,OAAO,EAAC,MAAM,EAAE,OAAO,EAAC,MAAM,SAAS,CAAC;AAExC,OAAO,EAAC,QAAQ,EAAC,MAAM,YAAY,CAAC;AAEpC,OAAO,EAAC,eAAe,EAAC,MAAM,cAAc,CAAC"}
@@ -1,12 +1,13 @@
1
+ export type Target<T extends Element = Element> = {
2
+ propertyKey: string;
3
+ query: T | T[];
4
+ };
1
5
  export declare function findElements<T extends Element>(controller: HTMLElement, query: string): T[];
2
- /**
3
- * Decorator to find a single element with data-target.
4
- * @example @target myTarget;
5
- */
6
- export declare function target(_value: undefined, context: ClassFieldDecoratorContext): void;
7
- /**
8
- * Decorator to find all elements with data-target.
9
- * @example @targets myTargets;
10
- */
11
- export declare function targets(_value: undefined, context: ClassFieldDecoratorContext): void;
6
+ export declare const targetKey: unique symbol;
7
+ export declare function target(_value: undefined, context: ClassFieldDecoratorContext & {
8
+ name: string;
9
+ }): void;
10
+ export declare function targets(_value: undefined, context: ClassFieldDecoratorContext & {
11
+ name: string;
12
+ }): void;
12
13
  //# sourceMappingURL=query.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/query.ts"],"names":[],"mappings":"AAAA,wBAAgB,YAAY,CAAC,CAAC,SAAS,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,CAyB3F;AAED;;;GAGG;AACH,wBAAgB,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,0BAA0B,QAgB5E;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,0BAA0B,QAgB7E"}
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/query.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,MAAM,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO,IAAI;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,CAAA;CAAC,CAAC;AAExF,wBAAgB,YAAY,CAAC,CAAC,SAAS,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,CAyB3F;AAED,eAAO,MAAM,SAAS,eAAoB,CAAC;AAE3C,wBAAgB,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,0BAA0B,GAAG;IAAC,IAAI,EAAE,MAAM,CAAA;CAAC,QAgB7F;AAED,wBAAgB,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,0BAA0B,GAAG;IAAC,IAAI,EAAE,MAAM,CAAA;CAAC,QAgB9F"}
@@ -1,3 +1,3 @@
1
1
  export declare const slugify: (str: unknown) => string;
2
- export declare function register<T extends CustomElementConstructor>(classObject: T): T;
2
+ export declare function register(classObject: CustomElementConstructor, context: ClassDecoratorContext): void;
3
3
  //# sourceMappingURL=register.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/register.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,GAAI,KAAK,OAAO,KAAG,MAKrB,CAAC;AAEnB,wBAAgB,QAAQ,CAAC,CAAC,SAAS,wBAAwB,EACzD,WAAW,EAAE,CAAC,GACb,CAAC,CAaH"}
1
+ {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/register.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,GAAI,KAAK,OAAO,KAAG,MAKvB,CAAC;AAEjB,wBAAgB,QAAQ,CAAC,WAAW,EAAE,wBAAwB,EAAE,OAAO,EAAE,qBAAqB,QAmB7F"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mypolis.eu/action-controller",
3
- "version": "1.0.0",
3
+ "version": "3.0.0",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {
@@ -35,7 +35,8 @@
35
35
  "@tsconfig/node24": "^24.0.1"
36
36
  },
37
37
  "scripts": {
38
- "build": "tsc -p tsconfig.json",
39
- "dev": "vite ./playground"
38
+ "dev": "vite ./playground",
39
+ "test": "wtr ./src/**/*.test.ts --node-resolve",
40
+ "build": "tsc -p tsconfig.json"
40
41
  }
41
42
  }