m2m-components 0.0.0 → 0.1.2

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.
Files changed (61) hide show
  1. package/LitMenuBaseElement.d.ts +11 -0
  2. package/LitMenuBaseElement.js +213 -0
  3. package/LitMenuBaseElement.js.map +1 -0
  4. package/domains.d.ts +7 -0
  5. package/domains.js +12 -0
  6. package/domains.js.map +1 -0
  7. package/endpoints/m2m-notifications.d.ts +5 -0
  8. package/endpoints/m2m-notifications.d.ts.map +1 -0
  9. package/endpoints/m2m-notifications.js +6 -0
  10. package/endpoints/m2m-notifications.js.map +1 -0
  11. package/endpoints/m2m-notifications.v1.d.ts +51 -0
  12. package/endpoints/m2m-notifications.v1.d.ts.map +1 -0
  13. package/endpoints/m2m-notifications.v1.js +141 -0
  14. package/endpoints/m2m-notifications.v1.js.map +1 -0
  15. package/index.d.ts +7 -0
  16. package/index.js +7 -0
  17. package/index.js.map +1 -0
  18. package/jsx.d.ts +10 -0
  19. package/m2m-apps-menu.d.ts +10 -0
  20. package/m2m-apps-menu.js +91 -0
  21. package/m2m-apps-menu.js.map +1 -0
  22. package/m2m-user-menu.d.ts +11 -0
  23. package/m2m-user-menu.js +97 -0
  24. package/m2m-user-menu.js.map +1 -0
  25. package/notification/NotificationProvider.d.ts +15 -0
  26. package/notification/NotificationProvider.d.ts.map +1 -0
  27. package/notification/NotificationProvider.js +79 -0
  28. package/notification/NotificationProvider.js.map +1 -0
  29. package/notification/ServiceIdProvider.d.ts +7 -0
  30. package/notification/ServiceIdProvider.d.ts.map +1 -0
  31. package/notification/ServiceIdProvider.js +23 -0
  32. package/notification/ServiceIdProvider.js.map +1 -0
  33. package/notification/api.d.ts +5 -0
  34. package/notification/api.d.ts.map +1 -0
  35. package/notification/api.js +46 -0
  36. package/notification/api.js.map +1 -0
  37. package/notification/domain.d.ts +23 -0
  38. package/notification/domain.d.ts.map +1 -0
  39. package/notification/domain.js +2 -0
  40. package/notification/domain.js.map +1 -0
  41. package/notification/index.d.ts +5 -0
  42. package/notification/index.d.ts.map +1 -0
  43. package/notification/index.js +5 -0
  44. package/notification/index.js.map +1 -0
  45. package/package.json +4 -3
  46. package/storage/client.d.ts +18 -0
  47. package/storage/client.d.ts.map +1 -0
  48. package/storage/client.js +85 -0
  49. package/storage/client.js.map +1 -0
  50. package/storage/hub.d.ts +7 -0
  51. package/storage/hub.d.ts.map +1 -0
  52. package/storage/hub.js +13 -0
  53. package/storage/hub.js.map +1 -0
  54. package/storage/lib/client.d.ts +28 -0
  55. package/storage/lib/client.d.ts.map +1 -0
  56. package/storage/lib/client.js +194 -0
  57. package/storage/lib/client.js.map +1 -0
  58. package/storage/lib/hub.d.ts +15 -0
  59. package/storage/lib/hub.d.ts.map +1 -0
  60. package/storage/lib/hub.js +117 -0
  61. package/storage/lib/hub.js.map +1 -0
@@ -0,0 +1,91 @@
1
+ function _decorate(decorators, factory, superClass, mixins) { var api = _getDecoratorsApi(); if (mixins) { for (var i = 0; i < mixins.length; i++) { api = mixins[i](api); } } var r = factory(function initialize(O) { api.initializeInstanceElements(O, decorated.elements); }, superClass); var decorated = api.decorateClass(_coalesceClassElements(r.d.map(_createElementDescriptor)), decorators); api.initializeClassElements(r.F, decorated.elements); return api.runClassFinishers(r.F, decorated.finishers); }
2
+
3
+ function _getDecoratorsApi() { _getDecoratorsApi = function () { return api; }; var api = { elementsDefinitionOrder: [["method"], ["field"]], initializeInstanceElements: function (O, elements) { ["method", "field"].forEach(function (kind) { elements.forEach(function (element) { if (element.kind === kind && element.placement === "own") { this.defineClassElement(O, element); } }, this); }, this); }, initializeClassElements: function (F, elements) { var proto = F.prototype; ["method", "field"].forEach(function (kind) { elements.forEach(function (element) { var placement = element.placement; if (element.kind === kind && (placement === "static" || placement === "prototype")) { var receiver = placement === "static" ? F : proto; this.defineClassElement(receiver, element); } }, this); }, this); }, defineClassElement: function (receiver, element) { var descriptor = element.descriptor; if (element.kind === "field") { var initializer = element.initializer; descriptor = { enumerable: descriptor.enumerable, writable: descriptor.writable, configurable: descriptor.configurable, value: initializer === void 0 ? void 0 : initializer.call(receiver) }; } Object.defineProperty(receiver, element.key, descriptor); }, decorateClass: function (elements, decorators) { var newElements = []; var finishers = []; var placements = { static: [], prototype: [], own: [] }; elements.forEach(function (element) { this.addElementPlacement(element, placements); }, this); elements.forEach(function (element) { if (!_hasDecorators(element)) return newElements.push(element); var elementFinishersExtras = this.decorateElement(element, placements); newElements.push(elementFinishersExtras.element); newElements.push.apply(newElements, elementFinishersExtras.extras); finishers.push.apply(finishers, elementFinishersExtras.finishers); }, this); if (!decorators) { return { elements: newElements, finishers: finishers }; } var result = this.decorateConstructor(newElements, decorators); finishers.push.apply(finishers, result.finishers); result.finishers = finishers; return result; }, addElementPlacement: function (element, placements, silent) { var keys = placements[element.placement]; if (!silent && keys.indexOf(element.key) !== -1) { throw new TypeError("Duplicated element (" + element.key + ")"); } keys.push(element.key); }, decorateElement: function (element, placements) { var extras = []; var finishers = []; for (var decorators = element.decorators, i = decorators.length - 1; i >= 0; i--) { var keys = placements[element.placement]; keys.splice(keys.indexOf(element.key), 1); var elementObject = this.fromElementDescriptor(element); var elementFinisherExtras = this.toElementFinisherExtras((0, decorators[i])(elementObject) || elementObject); element = elementFinisherExtras.element; this.addElementPlacement(element, placements); if (elementFinisherExtras.finisher) { finishers.push(elementFinisherExtras.finisher); } var newExtras = elementFinisherExtras.extras; if (newExtras) { for (var j = 0; j < newExtras.length; j++) { this.addElementPlacement(newExtras[j], placements); } extras.push.apply(extras, newExtras); } } return { element: element, finishers: finishers, extras: extras }; }, decorateConstructor: function (elements, decorators) { var finishers = []; for (var i = decorators.length - 1; i >= 0; i--) { var obj = this.fromClassDescriptor(elements); var elementsAndFinisher = this.toClassDescriptor((0, decorators[i])(obj) || obj); if (elementsAndFinisher.finisher !== undefined) { finishers.push(elementsAndFinisher.finisher); } if (elementsAndFinisher.elements !== undefined) { elements = elementsAndFinisher.elements; for (var j = 0; j < elements.length - 1; j++) { for (var k = j + 1; k < elements.length; k++) { if (elements[j].key === elements[k].key && elements[j].placement === elements[k].placement) { throw new TypeError("Duplicated element (" + elements[j].key + ")"); } } } } } return { elements: elements, finishers: finishers }; }, fromElementDescriptor: function (element) { var obj = { kind: element.kind, key: element.key, placement: element.placement, descriptor: element.descriptor }; var desc = { value: "Descriptor", configurable: true }; Object.defineProperty(obj, Symbol.toStringTag, desc); if (element.kind === "field") obj.initializer = element.initializer; return obj; }, toElementDescriptors: function (elementObjects) { if (elementObjects === undefined) return; return _toArray(elementObjects).map(function (elementObject) { var element = this.toElementDescriptor(elementObject); this.disallowProperty(elementObject, "finisher", "An element descriptor"); this.disallowProperty(elementObject, "extras", "An element descriptor"); return element; }, this); }, toElementDescriptor: function (elementObject) { var kind = String(elementObject.kind); if (kind !== "method" && kind !== "field") { throw new TypeError('An element descriptor\'s .kind property must be either "method" or' + ' "field", but a decorator created an element descriptor with' + ' .kind "' + kind + '"'); } var key = _toPropertyKey(elementObject.key); var placement = String(elementObject.placement); if (placement !== "static" && placement !== "prototype" && placement !== "own") { throw new TypeError('An element descriptor\'s .placement property must be one of "static",' + ' "prototype" or "own", but a decorator created an element descriptor' + ' with .placement "' + placement + '"'); } var descriptor = elementObject.descriptor; this.disallowProperty(elementObject, "elements", "An element descriptor"); var element = { kind: kind, key: key, placement: placement, descriptor: Object.assign({}, descriptor) }; if (kind !== "field") { this.disallowProperty(elementObject, "initializer", "A method descriptor"); } else { this.disallowProperty(descriptor, "get", "The property descriptor of a field descriptor"); this.disallowProperty(descriptor, "set", "The property descriptor of a field descriptor"); this.disallowProperty(descriptor, "value", "The property descriptor of a field descriptor"); element.initializer = elementObject.initializer; } return element; }, toElementFinisherExtras: function (elementObject) { var element = this.toElementDescriptor(elementObject); var finisher = _optionalCallableProperty(elementObject, "finisher"); var extras = this.toElementDescriptors(elementObject.extras); return { element: element, finisher: finisher, extras: extras }; }, fromClassDescriptor: function (elements) { var obj = { kind: "class", elements: elements.map(this.fromElementDescriptor, this) }; var desc = { value: "Descriptor", configurable: true }; Object.defineProperty(obj, Symbol.toStringTag, desc); return obj; }, toClassDescriptor: function (obj) { var kind = String(obj.kind); if (kind !== "class") { throw new TypeError('A class descriptor\'s .kind property must be "class", but a decorator' + ' created a class descriptor with .kind "' + kind + '"'); } this.disallowProperty(obj, "key", "A class descriptor"); this.disallowProperty(obj, "placement", "A class descriptor"); this.disallowProperty(obj, "descriptor", "A class descriptor"); this.disallowProperty(obj, "initializer", "A class descriptor"); this.disallowProperty(obj, "extras", "A class descriptor"); var finisher = _optionalCallableProperty(obj, "finisher"); var elements = this.toElementDescriptors(obj.elements); return { elements: elements, finisher: finisher }; }, runClassFinishers: function (constructor, finishers) { for (var i = 0; i < finishers.length; i++) { var newConstructor = (0, finishers[i])(constructor); if (newConstructor !== undefined) { if (typeof newConstructor !== "function") { throw new TypeError("Finishers must return a constructor."); } constructor = newConstructor; } } return constructor; }, disallowProperty: function (obj, name, objectType) { if (obj[name] !== undefined) { throw new TypeError(objectType + " can't have a ." + name + " property."); } } }; return api; }
4
+
5
+ function _createElementDescriptor(def) { var key = _toPropertyKey(def.key); var descriptor; if (def.kind === "method") { descriptor = { value: def.value, writable: true, configurable: true, enumerable: false }; } else if (def.kind === "get") { descriptor = { get: def.value, configurable: true, enumerable: false }; } else if (def.kind === "set") { descriptor = { set: def.value, configurable: true, enumerable: false }; } else if (def.kind === "field") { descriptor = { configurable: true, writable: true, enumerable: true }; } var element = { kind: def.kind === "field" ? "field" : "method", key: key, placement: def.static ? "static" : def.kind === "field" ? "own" : "prototype", descriptor: descriptor }; if (def.decorators) element.decorators = def.decorators; if (def.kind === "field") element.initializer = def.value; return element; }
6
+
7
+ function _coalesceGetterSetter(element, other) { if (element.descriptor.get !== undefined) { other.descriptor.get = element.descriptor.get; } else { other.descriptor.set = element.descriptor.set; } }
8
+
9
+ function _coalesceClassElements(elements) { var newElements = []; var isSameElement = function (other) { return other.kind === "method" && other.key === element.key && other.placement === element.placement; }; for (var i = 0; i < elements.length; i++) { var element = elements[i]; var other; if (element.kind === "method" && (other = newElements.find(isSameElement))) { if (_isDataDescriptor(element.descriptor) || _isDataDescriptor(other.descriptor)) { if (_hasDecorators(element) || _hasDecorators(other)) { throw new ReferenceError("Duplicated methods (" + element.key + ") can't be decorated."); } other.descriptor = element.descriptor; } else { if (_hasDecorators(element)) { if (_hasDecorators(other)) { throw new ReferenceError("Decorators can't be placed on different accessors with for " + "the same property (" + element.key + ")."); } other.decorators = element.decorators; } _coalesceGetterSetter(element, other); } } else { newElements.push(element); } } return newElements; }
10
+
11
+ function _hasDecorators(element) { return element.decorators && element.decorators.length; }
12
+
13
+ function _isDataDescriptor(desc) { return desc !== undefined && !(desc.value === undefined && desc.writable === undefined); }
14
+
15
+ function _optionalCallableProperty(obj, name) { var value = obj[name]; if (value !== undefined && typeof value !== "function") { throw new TypeError("Expected '" + name + "' to be a function"); } return value; }
16
+
17
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
18
+
19
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
20
+
21
+ function _toArray(arr) { return _arrayWithHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableRest(); }
22
+
23
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
24
+
25
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
26
+
27
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
28
+
29
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
30
+
31
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
32
+
33
+ import { domains } from "./domains";
34
+ import { html } from "lit";
35
+ import { customElement } from "lit/decorators.js";
36
+ import { ref } from "lit/directives/ref.js";
37
+ import { LitMenuBaseElement } from "./LitMenuBaseElement";
38
+ export let M2MAppsMenu = _decorate([customElement("m2m-apps-menu")], function (_initialize, _LitMenuBaseElement) {
39
+ class M2MAppsMenu extends _LitMenuBaseElement {
40
+ constructor(...args) {
41
+ super(...args);
42
+
43
+ _initialize(this);
44
+ }
45
+
46
+ }
47
+
48
+ return {
49
+ F: M2MAppsMenu,
50
+ d: [{
51
+ kind: "method",
52
+ key: "render",
53
+ value: function render() {
54
+ return html`<nav>
55
+ <button
56
+ type="button"
57
+ class="navigation-drawer-controll-button navigation-drawer-controll-button--icon"
58
+ aria-controls="m2m-apps-menu__navigation-drawer"
59
+ aria-expanded=${this.expanded}
60
+ @click=${this.handleToggleDrawer}
61
+ >
62
+ <svg
63
+ xmlns="http://www.w3.org/2000/svg"
64
+ width="24"
65
+ height="24"
66
+ viewBox="0 0 24 24"
67
+ >
68
+ <path
69
+ d="M4 8h4V4H4v4zm6 12h4v-4h-4v4zm-6 0h4v-4H4v4zm0-6h4v-4H4v4zm6 0h4v-4h-4v4zm6-10v4h4V4h-4zm-6 4h4V4h-4v4zm6 6h4v-4h-4v4zm0 6h4v-4h-4v4z"
70
+ />
71
+ </svg>
72
+ </button>
73
+ <ul
74
+ ${ref(this.listRef)}
75
+ id="m2m-apps-menu__navigation-drawer"
76
+ aria-hidden=${!this.expanded}
77
+ class="navigation-drawer"
78
+ >
79
+ <li><a href="${domains.core}">m2m-core 施設管理</a></li>
80
+ <li><a href="${domains.users}">m2m-users アカウント管理</a></li>
81
+ <li><a href="${domains.cleaning}">m2m-cleaning 清掃管理</a></li>
82
+ <li>
83
+ <a href="${domains.sumyca}">Sumyca マンスリープラットフォーム</a>
84
+ </li>
85
+ </ul>
86
+ </nav>`;
87
+ }
88
+ }]
89
+ };
90
+ }, LitMenuBaseElement);
91
+ //# sourceMappingURL=m2m-apps-menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["src/m2m-apps-menu.ts"],"names":["domains","html","customElement","ref","LitMenuBaseElement","M2MAppsMenu","expanded","handleToggleDrawer","listRef","core","users","cleaning","sumyca"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAASA,OAAT,QAAwB,WAAxB;AACA,SAASC,IAAT,QAAqB,KAArB;AACA,SAASC,aAAT,QAA8B,mBAA9B;AACA,SAASC,GAAT,QAAoB,uBAApB;AACA,SAASC,kBAAT,QAAmC,sBAAnC;AAGA,WAAaC,WAAb,cADCH,aAAa,CAAC,eAAD,CACd;AADA,QACaG,WADb,6BACoD;AAAA;AAAA;;AAAA;AAAA;;AAAA;;AAApD;AAAA,OAAaA,WAAb;AAAA;AAAA;AAAA;AAAA,aACE,kBAAS;AACP,eAAOJ,IAAK;AAChB;AACA;AACA;AACA;AACA,wBAAwB,KAAKK,QAAS;AACtC,iBAAiB,KAAKC,kBAAmB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAUJ,GAAG,CAAC,KAAKK,OAAN,CAAe;AAC5B;AACA,sBAAsB,CAAC,KAAKF,QAAS;AACrC;AACA;AACA,uBAAuBN,OAAO,CAACS,IAAK;AACpC,uBAAuBT,OAAO,CAACU,KAAM;AACrC,uBAAuBV,OAAO,CAACW,QAAS;AACxC;AACA,qBAAqBX,OAAO,CAACY,MAAO;AACpC;AACA;AACA,WAhCI;AAiCD;AAnCH;AAAA;AAAA,GAAiCR,kBAAjC","sourcesContent":["import { domains } from \"./domains\";\nimport { html } from \"lit\";\nimport { customElement } from \"lit/decorators.js\";\nimport { ref } from \"lit/directives/ref.js\";\nimport { LitMenuBaseElement } from \"./LitMenuBaseElement\";\n\n@customElement(\"m2m-apps-menu\")\nexport class M2MAppsMenu extends LitMenuBaseElement {\n render() {\n return html`<nav>\n <button\n type=\"button\"\n class=\"navigation-drawer-controll-button navigation-drawer-controll-button--icon\"\n aria-controls=\"m2m-apps-menu__navigation-drawer\"\n aria-expanded=${this.expanded}\n @click=${this.handleToggleDrawer}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n >\n <path\n d=\"M4 8h4V4H4v4zm6 12h4v-4h-4v4zm-6 0h4v-4H4v4zm0-6h4v-4H4v4zm6 0h4v-4h-4v4zm6-10v4h4V4h-4zm-6 4h4V4h-4v4zm6 6h4v-4h-4v4zm0 6h4v-4h-4v4z\"\n />\n </svg>\n </button>\n <ul\n ${ref(this.listRef)}\n id=\"m2m-apps-menu__navigation-drawer\"\n aria-hidden=${!this.expanded}\n class=\"navigation-drawer\"\n >\n <li><a href=\"${domains.core}\">m2m-core 施設管理</a></li>\n <li><a href=\"${domains.users}\">m2m-users アカウント管理</a></li>\n <li><a href=\"${domains.cleaning}\">m2m-cleaning 清掃管理</a></li>\n <li>\n <a href=\"${domains.sumyca}\">Sumyca マンスリープラットフォーム</a>\n </li>\n </ul>\n </nav>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"m2m-apps-menu\": M2MAppsMenu;\n }\n}\n"],"file":"m2m-apps-menu.js"}
@@ -0,0 +1,11 @@
1
+ import { LitMenuBaseElement } from "./LitMenuBaseElement";
2
+ export declare class M2MUserMenu extends LitMenuBaseElement {
3
+ handleLogout: () => void;
4
+ render(): import("lit-html").TemplateResult<1>;
5
+ }
6
+ declare global {
7
+ interface HTMLElementTagNameMap {
8
+ "m2m-user-menu": M2MUserMenu;
9
+ }
10
+ }
11
+ //# sourceMappingURL=m2m-user-menu.d.ts.map
@@ -0,0 +1,97 @@
1
+ function _decorate(decorators, factory, superClass, mixins) { var api = _getDecoratorsApi(); if (mixins) { for (var i = 0; i < mixins.length; i++) { api = mixins[i](api); } } var r = factory(function initialize(O) { api.initializeInstanceElements(O, decorated.elements); }, superClass); var decorated = api.decorateClass(_coalesceClassElements(r.d.map(_createElementDescriptor)), decorators); api.initializeClassElements(r.F, decorated.elements); return api.runClassFinishers(r.F, decorated.finishers); }
2
+
3
+ function _getDecoratorsApi() { _getDecoratorsApi = function () { return api; }; var api = { elementsDefinitionOrder: [["method"], ["field"]], initializeInstanceElements: function (O, elements) { ["method", "field"].forEach(function (kind) { elements.forEach(function (element) { if (element.kind === kind && element.placement === "own") { this.defineClassElement(O, element); } }, this); }, this); }, initializeClassElements: function (F, elements) { var proto = F.prototype; ["method", "field"].forEach(function (kind) { elements.forEach(function (element) { var placement = element.placement; if (element.kind === kind && (placement === "static" || placement === "prototype")) { var receiver = placement === "static" ? F : proto; this.defineClassElement(receiver, element); } }, this); }, this); }, defineClassElement: function (receiver, element) { var descriptor = element.descriptor; if (element.kind === "field") { var initializer = element.initializer; descriptor = { enumerable: descriptor.enumerable, writable: descriptor.writable, configurable: descriptor.configurable, value: initializer === void 0 ? void 0 : initializer.call(receiver) }; } Object.defineProperty(receiver, element.key, descriptor); }, decorateClass: function (elements, decorators) { var newElements = []; var finishers = []; var placements = { static: [], prototype: [], own: [] }; elements.forEach(function (element) { this.addElementPlacement(element, placements); }, this); elements.forEach(function (element) { if (!_hasDecorators(element)) return newElements.push(element); var elementFinishersExtras = this.decorateElement(element, placements); newElements.push(elementFinishersExtras.element); newElements.push.apply(newElements, elementFinishersExtras.extras); finishers.push.apply(finishers, elementFinishersExtras.finishers); }, this); if (!decorators) { return { elements: newElements, finishers: finishers }; } var result = this.decorateConstructor(newElements, decorators); finishers.push.apply(finishers, result.finishers); result.finishers = finishers; return result; }, addElementPlacement: function (element, placements, silent) { var keys = placements[element.placement]; if (!silent && keys.indexOf(element.key) !== -1) { throw new TypeError("Duplicated element (" + element.key + ")"); } keys.push(element.key); }, decorateElement: function (element, placements) { var extras = []; var finishers = []; for (var decorators = element.decorators, i = decorators.length - 1; i >= 0; i--) { var keys = placements[element.placement]; keys.splice(keys.indexOf(element.key), 1); var elementObject = this.fromElementDescriptor(element); var elementFinisherExtras = this.toElementFinisherExtras((0, decorators[i])(elementObject) || elementObject); element = elementFinisherExtras.element; this.addElementPlacement(element, placements); if (elementFinisherExtras.finisher) { finishers.push(elementFinisherExtras.finisher); } var newExtras = elementFinisherExtras.extras; if (newExtras) { for (var j = 0; j < newExtras.length; j++) { this.addElementPlacement(newExtras[j], placements); } extras.push.apply(extras, newExtras); } } return { element: element, finishers: finishers, extras: extras }; }, decorateConstructor: function (elements, decorators) { var finishers = []; for (var i = decorators.length - 1; i >= 0; i--) { var obj = this.fromClassDescriptor(elements); var elementsAndFinisher = this.toClassDescriptor((0, decorators[i])(obj) || obj); if (elementsAndFinisher.finisher !== undefined) { finishers.push(elementsAndFinisher.finisher); } if (elementsAndFinisher.elements !== undefined) { elements = elementsAndFinisher.elements; for (var j = 0; j < elements.length - 1; j++) { for (var k = j + 1; k < elements.length; k++) { if (elements[j].key === elements[k].key && elements[j].placement === elements[k].placement) { throw new TypeError("Duplicated element (" + elements[j].key + ")"); } } } } } return { elements: elements, finishers: finishers }; }, fromElementDescriptor: function (element) { var obj = { kind: element.kind, key: element.key, placement: element.placement, descriptor: element.descriptor }; var desc = { value: "Descriptor", configurable: true }; Object.defineProperty(obj, Symbol.toStringTag, desc); if (element.kind === "field") obj.initializer = element.initializer; return obj; }, toElementDescriptors: function (elementObjects) { if (elementObjects === undefined) return; return _toArray(elementObjects).map(function (elementObject) { var element = this.toElementDescriptor(elementObject); this.disallowProperty(elementObject, "finisher", "An element descriptor"); this.disallowProperty(elementObject, "extras", "An element descriptor"); return element; }, this); }, toElementDescriptor: function (elementObject) { var kind = String(elementObject.kind); if (kind !== "method" && kind !== "field") { throw new TypeError('An element descriptor\'s .kind property must be either "method" or' + ' "field", but a decorator created an element descriptor with' + ' .kind "' + kind + '"'); } var key = _toPropertyKey(elementObject.key); var placement = String(elementObject.placement); if (placement !== "static" && placement !== "prototype" && placement !== "own") { throw new TypeError('An element descriptor\'s .placement property must be one of "static",' + ' "prototype" or "own", but a decorator created an element descriptor' + ' with .placement "' + placement + '"'); } var descriptor = elementObject.descriptor; this.disallowProperty(elementObject, "elements", "An element descriptor"); var element = { kind: kind, key: key, placement: placement, descriptor: Object.assign({}, descriptor) }; if (kind !== "field") { this.disallowProperty(elementObject, "initializer", "A method descriptor"); } else { this.disallowProperty(descriptor, "get", "The property descriptor of a field descriptor"); this.disallowProperty(descriptor, "set", "The property descriptor of a field descriptor"); this.disallowProperty(descriptor, "value", "The property descriptor of a field descriptor"); element.initializer = elementObject.initializer; } return element; }, toElementFinisherExtras: function (elementObject) { var element = this.toElementDescriptor(elementObject); var finisher = _optionalCallableProperty(elementObject, "finisher"); var extras = this.toElementDescriptors(elementObject.extras); return { element: element, finisher: finisher, extras: extras }; }, fromClassDescriptor: function (elements) { var obj = { kind: "class", elements: elements.map(this.fromElementDescriptor, this) }; var desc = { value: "Descriptor", configurable: true }; Object.defineProperty(obj, Symbol.toStringTag, desc); return obj; }, toClassDescriptor: function (obj) { var kind = String(obj.kind); if (kind !== "class") { throw new TypeError('A class descriptor\'s .kind property must be "class", but a decorator' + ' created a class descriptor with .kind "' + kind + '"'); } this.disallowProperty(obj, "key", "A class descriptor"); this.disallowProperty(obj, "placement", "A class descriptor"); this.disallowProperty(obj, "descriptor", "A class descriptor"); this.disallowProperty(obj, "initializer", "A class descriptor"); this.disallowProperty(obj, "extras", "A class descriptor"); var finisher = _optionalCallableProperty(obj, "finisher"); var elements = this.toElementDescriptors(obj.elements); return { elements: elements, finisher: finisher }; }, runClassFinishers: function (constructor, finishers) { for (var i = 0; i < finishers.length; i++) { var newConstructor = (0, finishers[i])(constructor); if (newConstructor !== undefined) { if (typeof newConstructor !== "function") { throw new TypeError("Finishers must return a constructor."); } constructor = newConstructor; } } return constructor; }, disallowProperty: function (obj, name, objectType) { if (obj[name] !== undefined) { throw new TypeError(objectType + " can't have a ." + name + " property."); } } }; return api; }
4
+
5
+ function _createElementDescriptor(def) { var key = _toPropertyKey(def.key); var descriptor; if (def.kind === "method") { descriptor = { value: def.value, writable: true, configurable: true, enumerable: false }; } else if (def.kind === "get") { descriptor = { get: def.value, configurable: true, enumerable: false }; } else if (def.kind === "set") { descriptor = { set: def.value, configurable: true, enumerable: false }; } else if (def.kind === "field") { descriptor = { configurable: true, writable: true, enumerable: true }; } var element = { kind: def.kind === "field" ? "field" : "method", key: key, placement: def.static ? "static" : def.kind === "field" ? "own" : "prototype", descriptor: descriptor }; if (def.decorators) element.decorators = def.decorators; if (def.kind === "field") element.initializer = def.value; return element; }
6
+
7
+ function _coalesceGetterSetter(element, other) { if (element.descriptor.get !== undefined) { other.descriptor.get = element.descriptor.get; } else { other.descriptor.set = element.descriptor.set; } }
8
+
9
+ function _coalesceClassElements(elements) { var newElements = []; var isSameElement = function (other) { return other.kind === "method" && other.key === element.key && other.placement === element.placement; }; for (var i = 0; i < elements.length; i++) { var element = elements[i]; var other; if (element.kind === "method" && (other = newElements.find(isSameElement))) { if (_isDataDescriptor(element.descriptor) || _isDataDescriptor(other.descriptor)) { if (_hasDecorators(element) || _hasDecorators(other)) { throw new ReferenceError("Duplicated methods (" + element.key + ") can't be decorated."); } other.descriptor = element.descriptor; } else { if (_hasDecorators(element)) { if (_hasDecorators(other)) { throw new ReferenceError("Decorators can't be placed on different accessors with for " + "the same property (" + element.key + ")."); } other.decorators = element.decorators; } _coalesceGetterSetter(element, other); } } else { newElements.push(element); } } return newElements; }
10
+
11
+ function _hasDecorators(element) { return element.decorators && element.decorators.length; }
12
+
13
+ function _isDataDescriptor(desc) { return desc !== undefined && !(desc.value === undefined && desc.writable === undefined); }
14
+
15
+ function _optionalCallableProperty(obj, name) { var value = obj[name]; if (value !== undefined && typeof value !== "function") { throw new TypeError("Expected '" + name + "' to be a function"); } return value; }
16
+
17
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
18
+
19
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
20
+
21
+ function _toArray(arr) { return _arrayWithHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableRest(); }
22
+
23
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
24
+
25
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
26
+
27
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
28
+
29
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
30
+
31
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
32
+
33
+ import { m2mAuthTokenApi } from "./storage/client";
34
+ import { domains } from "./domains";
35
+ import { html } from "lit";
36
+ import { customElement } from "lit/decorators.js";
37
+ import { ref } from "lit/directives/ref.js";
38
+ import { LitMenuBaseElement } from "./LitMenuBaseElement";
39
+ export let M2MUserMenu = _decorate([customElement("m2m-user-menu")], function (_initialize, _LitMenuBaseElement) {
40
+ class M2MUserMenu extends _LitMenuBaseElement {
41
+ constructor(...args) {
42
+ super(...args);
43
+
44
+ _initialize(this);
45
+ }
46
+
47
+ }
48
+
49
+ return {
50
+ F: M2MUserMenu,
51
+ d: [{
52
+ kind: "field",
53
+ key: "handleLogout",
54
+
55
+ value() {
56
+ return () => {
57
+ m2mAuthTokenApi.clear();
58
+ window.location.reload();
59
+ };
60
+ }
61
+
62
+ }, {
63
+ kind: "method",
64
+ key: "render",
65
+ value: function render() {
66
+ return html`<nav>
67
+ <button
68
+ type="button"
69
+ class="navigation-drawer-controll-button navigation-drawer-controll-button--icon"
70
+ aria-controls="m2m-user-menu__navigation-drawer"
71
+ aria-expanded=${this.expanded}
72
+ @click=${this.handleToggleDrawer}
73
+ >
74
+ <svg viewBox="0 0 24 24" width="32px" height="32px" fill="#000000">
75
+ <path d="M0 0h24v24H0z" fill="none" />
76
+ <path
77
+ d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 3c1.66 0 3 1.34 3 3s-1.34 3-3 3-3-1.34-3-3 1.34-3 3-3zm0 14.2c-2.5 0-4.71-1.28-6-3.22.03-1.99 4-3.08 6-3.08 1.99 0 5.97 1.09 6 3.08-1.29 1.94-3.5 3.22-6 3.22z"
78
+ />
79
+ </svg>
80
+ </button>
81
+ <ul
82
+ ${ref(this.listRef)}
83
+ id="m2m-user-menu__navigation-drawer"
84
+ aria-hidden=${!this.expanded}
85
+ class="navigation-drawer navigation-drawer__bottom-end"
86
+ >
87
+ <li><a href="${domains.users}">アカウント情報</a></li>
88
+ <li @click=${this.handleLogout}>
89
+ <button type="button">ログアウト</button>
90
+ </li>
91
+ </ul>
92
+ </nav>`;
93
+ }
94
+ }]
95
+ };
96
+ }, LitMenuBaseElement);
97
+ //# sourceMappingURL=m2m-user-menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["src/m2m-user-menu.ts"],"names":["m2mAuthTokenApi","domains","html","customElement","ref","LitMenuBaseElement","M2MUserMenu","clear","window","location","reload","expanded","handleToggleDrawer","listRef","users","handleLogout"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAASA,eAAT,QAAgC,kBAAhC;AACA,SAASC,OAAT,QAAwB,WAAxB;AACA,SAASC,IAAT,QAAqB,KAArB;AACA,SAASC,aAAT,QAA8B,mBAA9B;AACA,SAASC,GAAT,QAAoB,uBAApB;AACA,SAASC,kBAAT,QAAmC,sBAAnC;AAGA,WAAaC,WAAb,cADCH,aAAa,CAAC,eAAD,CACd;AADA,QACaG,WADb,6BACoD;AAAA;AAAA;;AAAA;AAAA;;AAAA;;AAApD;AAAA,OAAaA,WAAb;AAAA;AAAA;AAAA;;AAAA;AAAA,eACiB,MAAM;AACnBN,UAAAA,eAAe,CAACO,KAAhB;AACAC,UAAAA,MAAM,CAACC,QAAP,CAAgBC,MAAhB;AACD,SAJH;AAAA;;AAAA;AAAA;AAAA;AAAA,aAME,kBAAS;AACP,eAAOR,IAAK;AAChB;AACA;AACA;AACA;AACA,wBAAwB,KAAKS,QAAS;AACtC,iBAAiB,KAAKC,kBAAmB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAUR,GAAG,CAAC,KAAKS,OAAN,CAAe;AAC5B;AACA,sBAAsB,CAAC,KAAKF,QAAS;AACrC;AACA;AACA,uBAAuBV,OAAO,CAACa,KAAM;AACrC,qBAAqB,KAAKC,YAAa;AACvC;AACA;AACA;AACA,WA1BI;AA2BD;AAlCH;AAAA;AAAA,GAAiCV,kBAAjC","sourcesContent":["import { m2mAuthTokenApi } from \"./storage/client\";\nimport { domains } from \"./domains\";\nimport { html } from \"lit\";\nimport { customElement } from \"lit/decorators.js\";\nimport { ref } from \"lit/directives/ref.js\";\nimport { LitMenuBaseElement } from \"./LitMenuBaseElement\";\n\n@customElement(\"m2m-user-menu\")\nexport class M2MUserMenu extends LitMenuBaseElement {\n handleLogout = () => {\n m2mAuthTokenApi.clear();\n window.location.reload();\n };\n\n render() {\n return html`<nav>\n <button\n type=\"button\"\n class=\"navigation-drawer-controll-button navigation-drawer-controll-button--icon\"\n aria-controls=\"m2m-user-menu__navigation-drawer\"\n aria-expanded=${this.expanded}\n @click=${this.handleToggleDrawer}\n >\n <svg viewBox=\"0 0 24 24\" width=\"32px\" height=\"32px\" fill=\"#000000\">\n <path d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path\n d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 3c1.66 0 3 1.34 3 3s-1.34 3-3 3-3-1.34-3-3 1.34-3 3-3zm0 14.2c-2.5 0-4.71-1.28-6-3.22.03-1.99 4-3.08 6-3.08 1.99 0 5.97 1.09 6 3.08-1.29 1.94-3.5 3.22-6 3.22z\"\n />\n </svg>\n </button>\n <ul\n ${ref(this.listRef)}\n id=\"m2m-user-menu__navigation-drawer\"\n aria-hidden=${!this.expanded}\n class=\"navigation-drawer navigation-drawer__bottom-end\"\n >\n <li><a href=\"${domains.users}\">アカウント情報</a></li>\n <li @click=${this.handleLogout}>\n <button type=\"button\">ログアウト</button>\n </li>\n </ul>\n </nav>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"m2m-user-menu\": M2MUserMenu;\n }\n}\n"],"file":"m2m-user-menu.js"}
@@ -0,0 +1,15 @@
1
+ import { SubscriptionStatus, Notification } from "./domain";
2
+ import React from "react";
3
+ export declare const NotificationsProvider: React.FC<{
4
+ token: string;
5
+ }>;
6
+ export declare const useNotifications: () => {
7
+ notifications: Notification[];
8
+ isAllRead: boolean;
9
+ refetch: () => void;
10
+ };
11
+ export declare const useNotificationPermission: () => {
12
+ checkPermission: (notificationType: string) => SubscriptionStatus | undefined;
13
+ refetch: () => void;
14
+ };
15
+ //# sourceMappingURL=NotificationProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NotificationProvider.d.ts","sourceRoot":"","sources":["../src/notification/NotificationProvider.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,kBAAkB,EAAgB,YAAY,EAAE,MAAM,UAAU,CAAC;AAC1E,OAAO,KAAK,MAAM,OAAO,CAAC;AAkB1B,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CA4D7D,CAAC;AAEF,eAAO,MAAM,gBAAgB;mBAnER,YAAY,EAAE;eAAa,OAAO;aAAW,MAAM,IAAI;CA0E3E,CAAC;AAEF,eAAO,MAAM,yBAAyB;wCApFZ,MAAM,KACrB,kBAAkB,GAAG,SAAS;aAC1B,MAAM,IAAI;CAyFxB,CAAC"}
@@ -0,0 +1,79 @@
1
+ import { createContext, useCallback, useContext } from "react";
2
+ import { useAuthFetch } from "matsuri-hooks";
3
+ import { useMemo } from "react";
4
+ import { m2mNotifications_v1 } from "../endpoints/m2m-notifications.v1";
5
+ import { useServiceId } from "./ServiceIdProvider";
6
+ import React from "react";
7
+ const NotificationPermissionContext = createContext(undefined);
8
+ const NotificationsContext = createContext(undefined); // ServiceIdProviderの中で使うこと
9
+
10
+ export const NotificationsProvider = ({
11
+ token,
12
+ children
13
+ }) => {
14
+ const serviceId = useServiceId();
15
+ const {
16
+ data: subscriptions,
17
+ refetch: refetchSubscriptions
18
+ } = useAuthFetch(token, m2mNotifications_v1.findMySubscriptions(), {});
19
+ const checkPermission = useCallback(notificationType => {
20
+ const subscription = subscriptions?.find(item => {
21
+ return item.serviceId === serviceId && item.notificationType === notificationType && item.resourceSubscription.resourceSelectType === "any";
22
+ });
23
+ return subscription?.status;
24
+ }, [subscriptions]);
25
+ const {
26
+ data: notifications,
27
+ error,
28
+ refetch: refetchNotifications
29
+ } = useAuthFetch(token, m2mNotifications_v1.findNotificationsByServiceId({
30
+ id: serviceId
31
+ }), {
32
+ swrConfig: {
33
+ refreshInterval: 1000 * 60 * 5
34
+ }
35
+ });
36
+
37
+ if (error) {
38
+ // エラーが出てもユーザーは特に困らないので、ユーザーに伝える必要はないが、監視は必要。
39
+ console.error(error);
40
+ }
41
+
42
+ const permissionContextState = useMemo(() => {
43
+ return {
44
+ checkPermission,
45
+ refetch: refetchSubscriptions
46
+ };
47
+ }, [checkPermission, refetchSubscriptions]);
48
+ const notificationsContextState = useMemo(() => {
49
+ return {
50
+ notifications: notifications?.data ?? [],
51
+ isAllRead: notifications?.data.every(n => n.status === "read") ?? true,
52
+ refetch: refetchNotifications
53
+ };
54
+ }, [refetchNotifications, notifications?.data]);
55
+ return <NotificationPermissionContext.Provider value={permissionContextState}>
56
+ <NotificationsContext.Provider value={notificationsContextState}>
57
+ {children}
58
+ </NotificationsContext.Provider>
59
+ </NotificationPermissionContext.Provider>;
60
+ };
61
+ export const useNotifications = () => {
62
+ const ctx = useContext(NotificationsContext);
63
+
64
+ if (!ctx) {
65
+ throw new Error("NotificatoinProvider is not found");
66
+ }
67
+
68
+ return ctx;
69
+ };
70
+ export const useNotificationPermission = () => {
71
+ const ctx = useContext(NotificationPermissionContext);
72
+
73
+ if (!ctx) {
74
+ throw new Error("NotificatoinProvider is not found");
75
+ }
76
+
77
+ return ctx;
78
+ };
79
+ //# sourceMappingURL=NotificationProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/notification/NotificationProvider.tsx"],"names":["createContext","useCallback","useContext","useAuthFetch","useMemo","m2mNotifications_v1","useServiceId","React","NotificationPermissionContext","undefined","NotificationsContext","NotificationsProvider","token","children","serviceId","data","subscriptions","refetch","refetchSubscriptions","findMySubscriptions","checkPermission","notificationType","subscription","find","item","resourceSubscription","resourceSelectType","status","notifications","error","refetchNotifications","findNotificationsByServiceId","id","swrConfig","refreshInterval","console","permissionContextState","notificationsContextState","isAllRead","every","n","useNotifications","ctx","Error","useNotificationPermission"],"mappings":"AAAA,SAASA,aAAT,EAAwBC,WAAxB,EAAqCC,UAArC,QAAuD,OAAvD;AACA,SAASC,YAAT,QAA6B,eAA7B;AACA,SAASC,OAAT,QAAwB,OAAxB;AACA,SAASC,mBAAT,QAAoC,mCAApC;AACA,SAASC,YAAT,QAA6B,qBAA7B;AAEA,OAAOC,KAAP,MAAkB,OAAlB;AAEA,MAAMC,6BAA6B,GAAGR,aAAa,CAQjDS,SARiD,CAAnD;AAUA,MAAMC,oBAAoB,GAAGV,aAAa,CAGxCS,SAHwC,CAA1C,C,CAKA;;AACA,OAAO,MAAME,qBAAkD,GAAG,CAAC;AACjEC,EAAAA,KADiE;AAEjEC,EAAAA;AAFiE,CAAD,KAG5D;AACJ,QAAMC,SAAS,GAAGR,YAAY,EAA9B;AAEA,QAAM;AAAES,IAAAA,IAAI,EAAEC,aAAR;AAAuBC,IAAAA,OAAO,EAAEC;AAAhC,MAAyDf,YAAY,CAEzES,KAFyE,EAElEP,mBAAmB,CAACc,mBAApB,EAFkE,EAEvB,EAFuB,CAA3E;AAGA,QAAMC,eAAe,GAAGnB,WAAW,CAChCoB,gBAAD,IAA8B;AAC5B,UAAMC,YAAY,GAAGN,aAAa,EAAEO,IAAf,CAAqBC,IAAD,IAAU;AACjD,aACEA,IAAI,CAACV,SAAL,KAAmBA,SAAnB,IACAU,IAAI,CAACH,gBAAL,KAA0BA,gBAD1B,IAEAG,IAAI,CAACC,oBAAL,CAA0BC,kBAA1B,KAAiD,KAHnD;AAKD,KANoB,CAArB;AAQA,WAAOJ,YAAY,EAAEK,MAArB;AACD,GAXgC,EAYjC,CAACX,aAAD,CAZiC,CAAnC;AAeA,QAAM;AACJD,IAAAA,IAAI,EAAEa,aADF;AAEJC,IAAAA,KAFI;AAGJZ,IAAAA,OAAO,EAAEa;AAHL,MAIF3B,YAAY,CACdS,KADc,EAEdP,mBAAmB,CAAC0B,4BAApB,CAAiD;AAAEC,IAAAA,EAAE,EAAElB;AAAN,GAAjD,CAFc,EAGd;AAAEmB,IAAAA,SAAS,EAAE;AAAEC,MAAAA,eAAe,EAAE,OAAO,EAAP,GAAY;AAA/B;AAAb,GAHc,CAJhB;;AASA,MAAIL,KAAJ,EAAW;AACT;AACAM,IAAAA,OAAO,CAACN,KAAR,CAAcA,KAAd;AACD;;AAED,QAAMO,sBAAsB,GAAGhC,OAAO,CAAC,MAAM;AAC3C,WAAO;AACLgB,MAAAA,eADK;AAELH,MAAAA,OAAO,EAAEC;AAFJ,KAAP;AAID,GALqC,EAKnC,CAACE,eAAD,EAAkBF,oBAAlB,CALmC,CAAtC;AAOA,QAAMmB,yBAAyB,GAAGjC,OAAO,CAAC,MAAM;AAC9C,WAAO;AACLwB,MAAAA,aAAa,EAAEA,aAAa,EAAEb,IAAf,IAAuB,EADjC;AAELuB,MAAAA,SAAS,EAAEV,aAAa,EAAEb,IAAf,CAAoBwB,KAApB,CAA2BC,CAAD,IAAOA,CAAC,CAACb,MAAF,KAAa,MAA9C,KAAyD,IAF/D;AAGLV,MAAAA,OAAO,EAAEa;AAHJ,KAAP;AAKD,GANwC,EAMtC,CAACA,oBAAD,EAAuBF,aAAa,EAAEb,IAAtC,CANsC,CAAzC;AAQA,SACE,CAAC,8BAA8B,QAA/B,CAAwC,MAAM,CAACqB,sBAAD,CAA9C;AACJ,MAAM,CAAC,qBAAqB,QAAtB,CAA+B,MAAM,CAACC,yBAAD,CAArC;AACN,QAAQ,CAACxB,QAAD;AACR,MAAM,EAAE,qBAAqB,QAAvB;AACN,IAAI,EAAE,8BAA8B,QAAhC,CALF;AAOD,CA5DM;AA8DP,OAAO,MAAM4B,gBAAgB,GAAG,MAAM;AACpC,QAAMC,GAAG,GAAGxC,UAAU,CAACQ,oBAAD,CAAtB;;AACA,MAAI,CAACgC,GAAL,EAAU;AACR,UAAM,IAAIC,KAAJ,CAAU,mCAAV,CAAN;AACD;;AAED,SAAOD,GAAP;AACD,CAPM;AASP,OAAO,MAAME,yBAAyB,GAAG,MAAM;AAC7C,QAAMF,GAAG,GAAGxC,UAAU,CAACM,6BAAD,CAAtB;;AACA,MAAI,CAACkC,GAAL,EAAU;AACR,UAAM,IAAIC,KAAJ,CAAU,mCAAV,CAAN;AACD;;AAED,SAAOD,GAAP;AACD,CAPM","sourcesContent":["import { createContext, useCallback, useContext } from \"react\";\nimport { useAuthFetch } from \"matsuri-hooks\";\nimport { useMemo } from \"react\";\nimport { m2mNotifications_v1 } from \"../endpoints/m2m-notifications.v1\";\nimport { useServiceId } from \"./ServiceIdProvider\";\nimport { SubscriptionStatus, Subscription, Notification } from \"./domain\";\nimport React from \"react\";\n\nconst NotificationPermissionContext = createContext<\n | {\n checkPermission: (\n notificationType: string\n ) => SubscriptionStatus | undefined;\n refetch: () => void;\n }\n | undefined\n>(undefined);\n\nconst NotificationsContext = createContext<\n | { notifications: Notification[]; isAllRead: boolean; refetch: () => void }\n | undefined\n>(undefined);\n\n// ServiceIdProviderの中で使うこと\nexport const NotificationsProvider: React.FC<{ token: string }> = ({\n token,\n children,\n}) => {\n const serviceId = useServiceId();\n\n const { data: subscriptions, refetch: refetchSubscriptions } = useAuthFetch<\n Subscription[]\n >(token, m2mNotifications_v1.findMySubscriptions(), {});\n const checkPermission = useCallback(\n (notificationType: string) => {\n const subscription = subscriptions?.find((item) => {\n return (\n item.serviceId === serviceId &&\n item.notificationType === notificationType &&\n item.resourceSubscription.resourceSelectType === \"any\"\n );\n });\n\n return subscription?.status;\n },\n [subscriptions]\n );\n\n const {\n data: notifications,\n error,\n refetch: refetchNotifications,\n } = useAuthFetch<{ data: Notification[] }>(\n token,\n m2mNotifications_v1.findNotificationsByServiceId({ id: serviceId }),\n { swrConfig: { refreshInterval: 1000 * 60 * 5 } }\n );\n if (error) {\n // エラーが出てもユーザーは特に困らないので、ユーザーに伝える必要はないが、監視は必要。\n console.error(error);\n }\n\n const permissionContextState = useMemo(() => {\n return {\n checkPermission,\n refetch: refetchSubscriptions,\n };\n }, [checkPermission, refetchSubscriptions]);\n\n const notificationsContextState = useMemo(() => {\n return {\n notifications: notifications?.data ?? [],\n isAllRead: notifications?.data.every((n) => n.status === \"read\") ?? true,\n refetch: refetchNotifications,\n };\n }, [refetchNotifications, notifications?.data]);\n\n return (\n <NotificationPermissionContext.Provider value={permissionContextState}>\n <NotificationsContext.Provider value={notificationsContextState}>\n {children}\n </NotificationsContext.Provider>\n </NotificationPermissionContext.Provider>\n );\n};\n\nexport const useNotifications = () => {\n const ctx = useContext(NotificationsContext);\n if (!ctx) {\n throw new Error(\"NotificatoinProvider is not found\");\n }\n\n return ctx;\n};\n\nexport const useNotificationPermission = () => {\n const ctx = useContext(NotificationPermissionContext);\n if (!ctx) {\n throw new Error(\"NotificatoinProvider is not found\");\n }\n\n return ctx;\n};\n"],"file":"NotificationProvider.js"}
@@ -0,0 +1,7 @@
1
+ import React from "react";
2
+ export declare const ServiceIdProvider: ({ serviceId, children, }: {
3
+ serviceId: string;
4
+ children: React.ReactNode;
5
+ }) => JSX.Element;
6
+ export declare const useServiceId: () => string;
7
+ //# sourceMappingURL=ServiceIdProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ServiceIdProvider.d.ts","sourceRoot":"","sources":["../src/notification/ServiceIdProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiC,MAAM,OAAO,CAAC;AAUtD,eAAO,MAAM,iBAAiB;eAIjB,MAAM;cACP,MAAM,SAAS;iBAS1B,CAAC;AAEF,eAAO,MAAM,YAAY,cAMxB,CAAC"}
@@ -0,0 +1,23 @@
1
+ import React, { createContext, useMemo } from "react";
2
+ const ServiceIdContext = createContext(undefined);
3
+ export const ServiceIdProvider = ({
4
+ serviceId,
5
+ children
6
+ }) => {
7
+ const state = useMemo(() => ({
8
+ serviceId
9
+ }), []);
10
+ return <ServiceIdContext.Provider value={state}>
11
+ {children}
12
+ </ServiceIdContext.Provider>;
13
+ };
14
+ export const useServiceId = () => {
15
+ const context = React.useContext(ServiceIdContext);
16
+
17
+ if (context === undefined) {
18
+ throw new Error("useServiceId must be used within a ServiceIdProvider");
19
+ }
20
+
21
+ return context.serviceId;
22
+ };
23
+ //# sourceMappingURL=ServiceIdProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/notification/ServiceIdProvider.tsx"],"names":["React","createContext","useMemo","ServiceIdContext","undefined","ServiceIdProvider","serviceId","children","state","useServiceId","context","useContext","Error"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,aAAhB,EAA+BC,OAA/B,QAA8C,OAA9C;AAMA,MAAMC,gBAAgB,GAAGF,aAAa,CACpCG,SADoC,CAAtC;AAIA,OAAO,MAAMC,iBAAiB,GAAG,CAAC;AAChCC,EAAAA,SADgC;AAEhCC,EAAAA;AAFgC,CAAD,KAM3B;AACJ,QAAMC,KAAK,GAAGN,OAAO,CAAC,OAAO;AAAEI,IAAAA;AAAF,GAAP,CAAD,EAAwB,EAAxB,CAArB;AAEA,SACE,CAAC,iBAAiB,QAAlB,CAA2B,MAAM,CAACE,KAAD,CAAjC;AACJ,MAAM,CAACD,QAAD;AACN,IAAI,EAAE,iBAAiB,QAAnB,CAHF;AAKD,CAdM;AAgBP,OAAO,MAAME,YAAY,GAAG,MAAM;AAChC,QAAMC,OAAO,GAAGV,KAAK,CAACW,UAAN,CAAiBR,gBAAjB,CAAhB;;AACA,MAAIO,OAAO,KAAKN,SAAhB,EAA2B;AACzB,UAAM,IAAIQ,KAAJ,CAAU,sDAAV,CAAN;AACD;;AACD,SAAOF,OAAO,CAACJ,SAAf;AACD,CANM","sourcesContent":["import React, { createContext, useMemo } from \"react\";\n\ninterface ServiceIdContextState {\n serviceId: string;\n}\n\nconst ServiceIdContext = createContext<ServiceIdContextState | undefined>(\n undefined\n);\n\nexport const ServiceIdProvider = ({\n serviceId,\n children,\n}: {\n serviceId: string;\n children: React.ReactNode;\n}) => {\n const state = useMemo(() => ({ serviceId }), []);\n\n return (\n <ServiceIdContext.Provider value={state}>\n {children}\n </ServiceIdContext.Provider>\n );\n};\n\nexport const useServiceId = () => {\n const context = React.useContext(ServiceIdContext);\n if (context === undefined) {\n throw new Error(\"useServiceId must be used within a ServiceIdProvider\");\n }\n return context.serviceId;\n};\n"],"file":"ServiceIdProvider.js"}
@@ -0,0 +1,5 @@
1
+ import { Subscription } from "./domain";
2
+ export declare const requestUpdateNotificationStatusToRead: (token: string, id: string) => Promise<void>;
3
+ export declare const requestSubscribe: (token: string, serviceId: string, input: Pick<Subscription, "notificationType" | "resourceSubscription">) => Promise<void>;
4
+ export declare const requestUnSubscribe: (token: string, serviceId: string, input: Pick<Subscription, "notificationType" | "resourceSubscription">) => Promise<void>;
5
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/notification/api.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAExC,eAAO,MAAM,qCAAqC,UACzC,MAAM,MACT,MAAM,kBAYX,CAAC;AAEF,eAAO,MAAM,gBAAgB,UACpB,MAAM,aACF,MAAM,SACV,KAAK,YAAY,EAAE,kBAAkB,GAAG,sBAAsB,CAAC,kBAcvE,CAAC;AAEF,eAAO,MAAM,kBAAkB,UACtB,MAAM,aACF,MAAM,SACV,KAAK,YAAY,EAAE,kBAAkB,GAAG,sBAAsB,CAAC,kBAcvE,CAAC"}
@@ -0,0 +1,46 @@
1
+ import { fetcher } from "matsuri-hooks";
2
+ import { m2mNotifications_v1 } from "../endpoints/m2m-notifications.v1";
3
+ export const requestUpdateNotificationStatusToRead = async (token, id) => {
4
+ await fetcher(m2mNotifications_v1.updateNotificationStatus({
5
+ id
6
+ }), {
7
+ method: "PUT",
8
+ token,
9
+ body: JSON.stringify({
10
+ status: "read"
11
+ })
12
+ });
13
+ };
14
+ export const requestSubscribe = async (token, serviceId, input) => {
15
+ const {
16
+ error
17
+ } = await fetcher(m2mNotifications_v1.saveSubscription(), {
18
+ method: "POST",
19
+ token,
20
+ body: JSON.stringify({ ...input,
21
+ serviceId,
22
+ status: "subscribed"
23
+ })
24
+ });
25
+
26
+ if (error) {
27
+ console.error(error);
28
+ }
29
+ };
30
+ export const requestUnSubscribe = async (token, serviceId, input) => {
31
+ const {
32
+ error
33
+ } = await fetcher(m2mNotifications_v1.saveSubscription(), {
34
+ method: "POST",
35
+ token,
36
+ body: JSON.stringify({ ...input,
37
+ serviceId,
38
+ status: "denied"
39
+ })
40
+ });
41
+
42
+ if (error) {
43
+ console.error(error);
44
+ }
45
+ };
46
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/notification/api.ts"],"names":["fetcher","m2mNotifications_v1","requestUpdateNotificationStatusToRead","token","id","updateNotificationStatus","method","body","JSON","stringify","status","requestSubscribe","serviceId","input","error","saveSubscription","console","requestUnSubscribe"],"mappings":"AAAA,SAASA,OAAT,QAAwB,eAAxB;AACA,SAASC,mBAAT,QAAoC,mCAApC;AAGA,OAAO,MAAMC,qCAAqC,GAAG,OACnDC,KADmD,EAEnDC,EAFmD,KAGhD;AACH,QAAMJ,OAAO,CACXC,mBAAmB,CAACI,wBAApB,CAA6C;AAC3CD,IAAAA;AAD2C,GAA7C,CADW,EAIX;AACEE,IAAAA,MAAM,EAAE,KADV;AAEEH,IAAAA,KAFF;AAGEI,IAAAA,IAAI,EAAEC,IAAI,CAACC,SAAL,CAAe;AAAEC,MAAAA,MAAM,EAAE;AAAV,KAAf;AAHR,GAJW,CAAb;AAUD,CAdM;AAgBP,OAAO,MAAMC,gBAAgB,GAAG,OAC9BR,KAD8B,EAE9BS,SAF8B,EAG9BC,KAH8B,KAI3B;AACH,QAAM;AAAEC,IAAAA;AAAF,MAAY,MAAMd,OAAO,CAACC,mBAAmB,CAACc,gBAApB,EAAD,EAAyC;AACtET,IAAAA,MAAM,EAAE,MAD8D;AAEtEH,IAAAA,KAFsE;AAGtEI,IAAAA,IAAI,EAAEC,IAAI,CAACC,SAAL,CAAe,EACnB,GAAGI,KADgB;AAEnBD,MAAAA,SAFmB;AAGnBF,MAAAA,MAAM,EAAE;AAHW,KAAf;AAHgE,GAAzC,CAA/B;;AASA,MAAII,KAAJ,EAAW;AACTE,IAAAA,OAAO,CAACF,KAAR,CAAcA,KAAd;AACD;AACF,CAjBM;AAmBP,OAAO,MAAMG,kBAAkB,GAAG,OAChCd,KADgC,EAEhCS,SAFgC,EAGhCC,KAHgC,KAI7B;AACH,QAAM;AAAEC,IAAAA;AAAF,MAAY,MAAMd,OAAO,CAACC,mBAAmB,CAACc,gBAApB,EAAD,EAAyC;AACtET,IAAAA,MAAM,EAAE,MAD8D;AAEtEH,IAAAA,KAFsE;AAGtEI,IAAAA,IAAI,EAAEC,IAAI,CAACC,SAAL,CAAe,EACnB,GAAGI,KADgB;AAEnBD,MAAAA,SAFmB;AAGnBF,MAAAA,MAAM,EAAE;AAHW,KAAf;AAHgE,GAAzC,CAA/B;;AASA,MAAII,KAAJ,EAAW;AACTE,IAAAA,OAAO,CAACF,KAAR,CAAcA,KAAd;AACD;AACF,CAjBM","sourcesContent":["import { fetcher } from \"matsuri-hooks\";\nimport { m2mNotifications_v1 } from \"../endpoints/m2m-notifications.v1\";\nimport { Subscription } from \"./domain\";\n\nexport const requestUpdateNotificationStatusToRead = async (\n token: string,\n id: string\n) => {\n await fetcher(\n m2mNotifications_v1.updateNotificationStatus({\n id,\n }),\n {\n method: \"PUT\",\n token,\n body: JSON.stringify({ status: \"read\" }),\n }\n );\n};\n\nexport const requestSubscribe = async (\n token: string,\n serviceId: string,\n input: Pick<Subscription, \"notificationType\" | \"resourceSubscription\">\n) => {\n const { error } = await fetcher(m2mNotifications_v1.saveSubscription(), {\n method: \"POST\",\n token,\n body: JSON.stringify({\n ...input,\n serviceId,\n status: \"subscribed\",\n }),\n });\n if (error) {\n console.error(error);\n }\n};\n\nexport const requestUnSubscribe = async (\n token: string,\n serviceId: string,\n input: Pick<Subscription, \"notificationType\" | \"resourceSubscription\">\n) => {\n const { error } = await fetcher(m2mNotifications_v1.saveSubscription(), {\n method: \"POST\",\n token,\n body: JSON.stringify({\n ...input,\n serviceId,\n status: \"denied\",\n }),\n });\n if (error) {\n console.error(error);\n }\n};\n"],"file":"api.js"}
@@ -0,0 +1,23 @@
1
+ export interface Notification {
2
+ createdAt: number;
3
+ id: string;
4
+ message: string;
5
+ notificationType: string;
6
+ resourceId: string;
7
+ serviceId: string;
8
+ status: "unread" | "read";
9
+ userId: string;
10
+ }
11
+ export interface ResourceSubscription {
12
+ resourceSelectType: "specific" | "any";
13
+ resourceId: string;
14
+ }
15
+ export declare type SubscriptionStatus = "default" | "subscribed" | "denied";
16
+ export interface Subscription {
17
+ userId: string;
18
+ serviceId: string;
19
+ notificationType: string;
20
+ resourceSubscription: ResourceSubscription;
21
+ status: SubscriptionStatus;
22
+ }
23
+ //# sourceMappingURL=domain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../src/notification/domain.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,kBAAkB,EAAE,UAAU,GAAG,KAAK,CAAC;IACvC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,oBAAY,kBAAkB,GAAG,SAAS,GAAG,YAAY,GAAG,QAAQ,CAAC;AAErE,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C,MAAM,EAAE,kBAAkB,CAAC;CAC5B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=domain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[],"file":"domain.js"}
@@ -0,0 +1,5 @@
1
+ export * from "./domain";
2
+ export * from "./api";
3
+ export * from "./ServiceIdProvider";
4
+ export * from "./NotificationProvider";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/notification/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC"}
@@ -0,0 +1,5 @@
1
+ export * from "./domain";
2
+ export * from "./api";
3
+ export * from "./ServiceIdProvider";
4
+ export * from "./NotificationProvider";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/notification/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAd;AACA,cAAc,OAAd;AACA,cAAc,qBAAd;AACA,cAAc,wBAAd","sourcesContent":["export * from \"./domain\";\nexport * from \"./api\";\nexport * from \"./ServiceIdProvider\";\nexport * from \"./NotificationProvider\";\n"],"file":"index.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "m2m-components",
3
- "version": "0.0.0",
3
+ "version": "0.1.2",
4
4
  "main": "index.js",
5
5
  "module": "index.js",
6
6
  "typings": "index.d.ts",
@@ -35,7 +35,8 @@
35
35
  "/m2m-user-menu.{d.ts, d.ts.map,js,js.map}",
36
36
  "/notification/",
37
37
  "/storage/",
38
- "/endpoints/"
38
+ "/endpoints/",
39
+ "/jsx.d.ts"
39
40
  ],
40
41
  "targets": {
41
42
  "module": false,
@@ -49,7 +50,7 @@
49
50
  "build-app:hub:dev": "vite build website/hub/ --out-dir ../../build -m development",
50
51
  "clean": "rm -rf {m2m-apps-menu,m2m-user-menu,LitMenuBaseElement,domains,index}.{d.ts.map,d.ts,js.map,js} storage/ notification/ endpoints/",
51
52
  "build": "concurrently yarn:build:*",
52
- "build:esm": "NODE_ENV=production BABEL_ENV=esm babel src --extensions .ts -d ./ --source-maps",
53
+ "build:esm": "NODE_ENV=production BABEL_ENV=esm babel src --extensions .ts,.tsx -d ./ --source-maps",
53
54
  "build:types": "tsc -p tsconfig.json --emitDeclarationOnly --declaration --declarationDir ./",
54
55
  "lint": "eslint .",
55
56
  "postlint": "prettier --check .",
@@ -0,0 +1,18 @@
1
+ import { StorageClient } from "./lib/client";
2
+ declare class M2mStorageClient extends StorageClient {
3
+ }
4
+ export type { M2mStorageClient };
5
+ export declare const m2mStorageClient: {
6
+ init: (options?: {
7
+ env?: "production" | "development" | undefined;
8
+ } | undefined) => void;
9
+ getStorage: (timeout?: number) => Promise<M2mStorageClient>;
10
+ };
11
+ export declare const M2M_AUTH_TOKEN_KEY = "M2M_APP_AUTH_TOKEN";
12
+ export declare const m2mAuthTokenApi: {
13
+ get: () => Promise<string | null>;
14
+ getCache: () => string | null;
15
+ set: (token: string) => Promise<void>;
16
+ clear: () => Promise<void>;
17
+ };
18
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/storage/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,cAAM,gBAAiB,SAAQ,aAAa;CAAG;AAE/C,YAAY,EAAE,gBAAgB,EAAE,CAAC;AA8DjC,eAAO,MAAM,gBAAgB;;;;;CAG5B,CAAC;AAEF,eAAO,MAAM,kBAAkB,uBAAuB,CAAC;AAwBvD,eAAO,MAAM,eAAe;;;iBAZO,MAAM;;CAiBxC,CAAC"}