m2m-components 5.2.3-alpha-1732450596663-b0d16d9.0 → 5.2.3-alpha-1732599632135-7a53214.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/{chunk-B7STDXYN.mjs → chunk-27HPP73N.mjs} +3 -3
- package/{chunk-B7STDXYN.mjs.map → chunk-27HPP73N.mjs.map} +1 -1
- package/{chunk-YXPSTKYY.mjs → chunk-IUVQPLD7.mjs} +4 -4
- package/chunk-IUVQPLD7.mjs.map +1 -0
- package/{chunk-SF2L3P2H.mjs → chunk-KHXCCRGE.mjs} +4 -4
- package/chunk-KHXCCRGE.mjs.map +1 -0
- package/domains.d.mts +2 -2
- package/domains.d.ts +2 -2
- package/domains.js +3 -3
- package/domains.js.map +1 -1
- package/domains.mjs +3 -3
- package/index.js +3 -3
- package/index.js.map +1 -1
- package/index.mjs +3 -3
- package/m2m-apps-menu.js +4 -4
- package/m2m-apps-menu.js.map +1 -1
- package/m2m-apps-menu.mjs +2 -2
- package/m2m-user-menu.js +24 -24
- package/m2m-user-menu.js.map +1 -1
- package/m2m-user-menu.mjs +2 -2
- package/package.json +1 -1
- package/chunk-SF2L3P2H.mjs.map +0 -1
- package/chunk-YXPSTKYY.mjs.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
|
|
3
3
|
// src/domains.ts
|
|
4
|
-
var
|
|
4
|
+
var useDomains = () => {
|
|
5
5
|
return globalThis.M2M_COMPONENTS_ENV === "production" ? {
|
|
6
6
|
core: "https://core.m2msystems.cloud",
|
|
7
7
|
sumyca: "https://manage.sumyca.com",
|
|
@@ -22,6 +22,6 @@ var getDomains = () => {
|
|
|
22
22
|
};
|
|
23
23
|
|
|
24
24
|
export {
|
|
25
|
-
|
|
25
|
+
useDomains
|
|
26
26
|
};
|
|
27
|
-
//# sourceMappingURL=chunk-
|
|
27
|
+
//# sourceMappingURL=chunk-27HPP73N.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/domains.ts"],"sourcesContent":["export const
|
|
1
|
+
{"version":3,"sources":["../src/domains.ts"],"sourcesContent":["export const useDomains = () => {\n return globalThis.M2M_COMPONENTS_ENV === \"production\"\n ? {\n core: \"https://core.m2msystems.cloud\",\n sumyca: \"https://manage.sumyca.com\",\n cleaning: \"https://manager-cleaning.m2msystems.cloud\",\n users: \"https://manage-users.m2msystems.cloud\",\n inspection: \"https://inspection.m2msystems.cloud\",\n checkin: \"https://manage.checkin.m2msystems.cloud\",\n systems: \"https://m2msystems.cloud/\",\n }\n : {\n core: \"https://dev--m2m-core-manager-front.netlify.app\",\n sumyca: \"https://dev--sumyca-manager-front.netlify.app\",\n cleaning: \"https://dev--m2m-cleaning-manager-front.netlify.app\",\n users: \"https://dev--manage-users.netlify.app\",\n inspection: \"https://dev--m2m-inspection-manager-front.netlify.app\",\n checkin: \"https://manage.dev.checkin.m2msystems.cloud\",\n systems: \"https://dev.m2msystems.cloud\",\n };\n};\n"],"mappings":";;;AAAO,IAAM,aAAa,MAAM;AAC9B,SAAO,WAAW,uBAAuB,eACrC;AAAA,IACE,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,SAAS;AAAA,EACX,IACA;AAAA,IACE,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,SAAS;AAAA,EACX;AACN;","names":[]}
|
|
@@ -3,8 +3,8 @@ import {
|
|
|
3
3
|
MenuBaseElement
|
|
4
4
|
} from "./chunk-HI2D4CLX.mjs";
|
|
5
5
|
import {
|
|
6
|
-
|
|
7
|
-
} from "./chunk-
|
|
6
|
+
useDomains
|
|
7
|
+
} from "./chunk-27HPP73N.mjs";
|
|
8
8
|
import {
|
|
9
9
|
__decorateClass
|
|
10
10
|
} from "./chunk-QH5I6YL2.mjs";
|
|
@@ -16,7 +16,7 @@ import { ref } from "lit/directives/ref.js";
|
|
|
16
16
|
var M2MAppsMenu = class extends MenuBaseElement {
|
|
17
17
|
render() {
|
|
18
18
|
var _a;
|
|
19
|
-
const domains =
|
|
19
|
+
const domains = useDomains();
|
|
20
20
|
const additionalItems = (_a = this.additinalItems) == null ? void 0 : _a.map((item) => {
|
|
21
21
|
return html`
|
|
22
22
|
<li>
|
|
@@ -76,4 +76,4 @@ M2MAppsMenu = __decorateClass([
|
|
|
76
76
|
export {
|
|
77
77
|
M2MAppsMenu
|
|
78
78
|
};
|
|
79
|
-
//# sourceMappingURL=chunk-
|
|
79
|
+
//# sourceMappingURL=chunk-IUVQPLD7.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/m2m-apps-menu.ts"],"sourcesContent":["import { MenuBaseElement, MenuBaseElementProps } from \"./MenuBaseElement\";\nimport { customElement } from \"lit/decorators.js\";\nimport { html } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport { useDomains } from \"./domains\";\n\nexport type M2MAppsMenuProps = MenuBaseElementProps;\n\n@customElement(\"m2m-apps-menu\")\nexport class M2MAppsMenu extends MenuBaseElement {\n render() {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const domains = useDomains();\n const additionalItems = this.additinalItems?.map((item) => {\n return html`\n <li>\n <a href=\"${item.href}\">${item.label}</a>\n </li>\n `;\n });\n const isHidden = this.expanded === false || this.expanded === undefined;\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=\"38px\"\n height=\"38px\"\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=${isHidden}\n class=\"navigation-drawer\"\n >\n <li>\n <span>m2m Series</span>\n <ul>\n <li><a href=\"${domains.core}\">Core 施設管理</a></li>\n <li><a href=\"${domains.checkin}\">Checkin ゲストチェックイン</a></li>\n <li><a href=\"${domains.systems}\">Systems Airbnb連携</a></li>\n <li><a href=\"${domains.cleaning}\">Cleaning 清掃管理</a></li>\n <li><a href=\"${domains.inspection}\">Inspection 内見チェック</a></li>\n <li><a href=\"${domains.users}\">Users アカウント管理</a></li>\n </ul>\n </li>\n <li>\n <a href=\"${domains.sumyca}\">Sumyca マンスリープラットフォーム</a>\n </li>\n ${additionalItems}\n </ul>\n </nav>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"m2m-apps-menu\": M2MAppsMenu;\n }\n}\n"],"mappings":";;;;;;;;;;;;AACA,SAAS,qBAAqB;AAC9B,SAAS,YAAY;AACrB,SAAS,WAAW;AAMb,IAAM,cAAN,cAA0B,gBAAgB;AAAA,EAC/C,SAAS;AAVX;AAYI,UAAM,UAAU,WAAW;AAC3B,UAAM,mBAAkB,UAAK,mBAAL,mBAAqB,IAAI,CAAC,SAAS;AACzD,aAAO;AAAA;AAAA,qBAEQ,KAAK,IAAI,KAAK,KAAK,KAAK;AAAA;AAAA;AAAA,IAGzC;AACA,UAAM,WAAW,KAAK,aAAa,SAAS,KAAK,aAAa;AAC9D,WAAO;AAAA;AAAA;AAAA;AAAA;AAAA,wBAKa,KAAK,QAAQ;AAAA,iBACpB,KAAK,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAc9B,IAAI,KAAK,OAAO,CAAC;AAAA;AAAA,sBAEL,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,2BAMH,QAAQ,IAAI;AAAA,2BACZ,QAAQ,OAAO;AAAA,2BACf,QAAQ,OAAO;AAAA,2BACf,QAAQ,QAAQ;AAAA,2BAChB,QAAQ,UAAU;AAAA,2BAClB,QAAQ,KAAK;AAAA;AAAA;AAAA;AAAA,qBAInB,QAAQ,MAAM;AAAA;AAAA,UAEzB,eAAe;AAAA;AAAA;AAAA,EAGvB;AACF;AAvDa,cAAN;AAAA,EADN,cAAc,eAAe;AAAA,GACjB;","names":[]}
|
|
@@ -6,8 +6,8 @@ import {
|
|
|
6
6
|
MenuBaseElement
|
|
7
7
|
} from "./chunk-HI2D4CLX.mjs";
|
|
8
8
|
import {
|
|
9
|
-
|
|
10
|
-
} from "./chunk-
|
|
9
|
+
useDomains
|
|
10
|
+
} from "./chunk-27HPP73N.mjs";
|
|
11
11
|
import {
|
|
12
12
|
__decorateClass
|
|
13
13
|
} from "./chunk-QH5I6YL2.mjs";
|
|
@@ -26,7 +26,7 @@ var M2MUserMenu = class extends MenuBaseElement {
|
|
|
26
26
|
}
|
|
27
27
|
render() {
|
|
28
28
|
var _a;
|
|
29
|
-
const domains =
|
|
29
|
+
const domains = useDomains();
|
|
30
30
|
const additionalItems = (_a = this.additinalItems) == null ? void 0 : _a.map((item) => {
|
|
31
31
|
return html`
|
|
32
32
|
<li>
|
|
@@ -72,4 +72,4 @@ M2MUserMenu = __decorateClass([
|
|
|
72
72
|
export {
|
|
73
73
|
M2MUserMenu
|
|
74
74
|
};
|
|
75
|
-
//# sourceMappingURL=chunk-
|
|
75
|
+
//# sourceMappingURL=chunk-KHXCCRGE.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/m2m-user-menu.ts"],"sourcesContent":["import { MenuBaseElement, MenuBaseElementProps } from \"./MenuBaseElement\";\nimport { customElement } from \"lit/decorators.js\";\nimport { html } from \"lit\";\nimport { m2mAuthTokenApi } from \"./storage/client\";\nimport { ref } from \"lit/directives/ref.js\";\nimport { useDomains } from \"./domains\";\n\nexport type M2MUserMenuProps = MenuBaseElementProps;\n\n@customElement(\"m2m-user-menu\")\nexport class M2MUserMenu extends MenuBaseElement {\n handleLogout = () => {\n void m2mAuthTokenApi.clear();\n window.location.reload();\n };\n\n render() {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const domains = useDomains();\n const additionalItems = this.additinalItems?.map((item) => {\n return html`\n <li>\n <a href=\"${item.href}\">${item.label}</a>\n </li>\n `;\n });\n const isHidden = this.expanded === false || this.expanded === undefined;\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=\"38px\" height=\"38px\" 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=${isHidden}\n class=\"navigation-drawer\"\n >\n <li><a href=\"${domains.users}\">アカウント情報</a></li>\n <li @click=${this.handleLogout}>\n <button type=\"button\">ログアウト</button>\n </li>\n ${additionalItems}\n </ul>\n </nav>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"m2m-user-menu\": M2MUserMenu;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;AACA,SAAS,qBAAqB;AAC9B,SAAS,YAAY;AAErB,SAAS,WAAW;AAMb,IAAM,cAAN,cAA0B,gBAAgB;AAAA,EAA1C;AAAA;AACL,wBAAe,MAAM;AACnB,WAAK,gBAAgB,MAAM;AAC3B,aAAO,SAAS,OAAO;AAAA,IACzB;AAAA;AAAA,EAEA,SAAS;AAhBX;AAkBI,UAAM,UAAU,WAAW;AAC3B,UAAM,mBAAkB,UAAK,mBAAL,mBAAqB,IAAI,CAAC,SAAS;AACzD,aAAO;AAAA;AAAA,qBAEQ,KAAK,IAAI,KAAK,KAAK,KAAK;AAAA;AAAA;AAAA,IAGzC;AACA,UAAM,WAAW,KAAK,aAAa,SAAS,KAAK,aAAa;AAC9D,WAAO;AAAA;AAAA;AAAA;AAAA;AAAA,wBAKa,KAAK,QAAQ;AAAA,iBACpB,KAAK,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAU9B,IAAI,KAAK,OAAO,CAAC;AAAA;AAAA,sBAEL,QAAQ;AAAA;AAAA;AAAA,uBAGP,QAAQ,KAAK;AAAA,qBACf,KAAK,YAAY;AAAA;AAAA;AAAA,UAG5B,eAAe;AAAA;AAAA;AAAA,EAGvB;AACF;AA9Ca,cAAN;AAAA,EADN,cAAc,eAAe;AAAA,GACjB;","names":[]}
|
package/domains.d.mts
CHANGED
package/domains.d.ts
CHANGED
package/domains.js
CHANGED
|
@@ -21,10 +21,10 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
21
21
|
// src/domains.ts
|
|
22
22
|
var domains_exports = {};
|
|
23
23
|
__export(domains_exports, {
|
|
24
|
-
|
|
24
|
+
useDomains: () => useDomains
|
|
25
25
|
});
|
|
26
26
|
module.exports = __toCommonJS(domains_exports);
|
|
27
|
-
var
|
|
27
|
+
var useDomains = () => {
|
|
28
28
|
return globalThis.M2M_COMPONENTS_ENV === "production" ? {
|
|
29
29
|
core: "https://core.m2msystems.cloud",
|
|
30
30
|
sumyca: "https://manage.sumyca.com",
|
|
@@ -45,6 +45,6 @@ var getDomains = () => {
|
|
|
45
45
|
};
|
|
46
46
|
// Annotate the CommonJS export names for ESM import in node:
|
|
47
47
|
0 && (module.exports = {
|
|
48
|
-
|
|
48
|
+
useDomains
|
|
49
49
|
});
|
|
50
50
|
//# sourceMappingURL=domains.js.map
|
package/domains.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/domains.ts"],"sourcesContent":["export const
|
|
1
|
+
{"version":3,"sources":["../src/domains.ts"],"sourcesContent":["export const useDomains = () => {\n return globalThis.M2M_COMPONENTS_ENV === \"production\"\n ? {\n core: \"https://core.m2msystems.cloud\",\n sumyca: \"https://manage.sumyca.com\",\n cleaning: \"https://manager-cleaning.m2msystems.cloud\",\n users: \"https://manage-users.m2msystems.cloud\",\n inspection: \"https://inspection.m2msystems.cloud\",\n checkin: \"https://manage.checkin.m2msystems.cloud\",\n systems: \"https://m2msystems.cloud/\",\n }\n : {\n core: \"https://dev--m2m-core-manager-front.netlify.app\",\n sumyca: \"https://dev--sumyca-manager-front.netlify.app\",\n cleaning: \"https://dev--m2m-cleaning-manager-front.netlify.app\",\n users: \"https://dev--manage-users.netlify.app\",\n inspection: \"https://dev--m2m-inspection-manager-front.netlify.app\",\n checkin: \"https://manage.dev.checkin.m2msystems.cloud\",\n systems: \"https://dev.m2msystems.cloud\",\n };\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,IAAM,aAAa,MAAM;AAC9B,SAAO,WAAW,uBAAuB,eACrC;AAAA,IACE,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,SAAS;AAAA,EACX,IACA;AAAA,IACE,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,SAAS;AAAA,EACX;AACN;","names":[]}
|
package/domains.mjs
CHANGED
package/index.js
CHANGED
|
@@ -32,7 +32,7 @@ var __decorateClass = (decorators, target, key, kind) => {
|
|
|
32
32
|
};
|
|
33
33
|
|
|
34
34
|
// src/domains.ts
|
|
35
|
-
var
|
|
35
|
+
var useDomains = () => {
|
|
36
36
|
return globalThis.M2M_COMPONENTS_ENV === "production" ? {
|
|
37
37
|
core: "https://core.m2msystems.cloud",
|
|
38
38
|
sumyca: "https://manage.sumyca.com",
|
|
@@ -295,7 +295,7 @@ var import_ref2 = require("lit/directives/ref.js");
|
|
|
295
295
|
var M2MAppsMenu = class extends MenuBaseElement {
|
|
296
296
|
render() {
|
|
297
297
|
var _a;
|
|
298
|
-
const domains =
|
|
298
|
+
const domains = useDomains();
|
|
299
299
|
const additionalItems = (_a = this.additinalItems) == null ? void 0 : _a.map((item) => {
|
|
300
300
|
return import_lit2.html`
|
|
301
301
|
<li>
|
|
@@ -366,7 +366,7 @@ var M2MUserMenu = class extends MenuBaseElement {
|
|
|
366
366
|
}
|
|
367
367
|
render() {
|
|
368
368
|
var _a;
|
|
369
|
-
const domains =
|
|
369
|
+
const domains = useDomains();
|
|
370
370
|
const additionalItems = (_a = this.additinalItems) == null ? void 0 : _a.map((item) => {
|
|
371
371
|
return import_lit3.html`
|
|
372
372
|
<li>
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/domains.ts","../src/feedback/index.tsx","../src/feedback/MultipleTextQuestion.tsx","../src/feedback/SelectQuestion.tsx","../src/storage/client.ts","../src/MenuBaseElement.ts","../src/m2m-apps-menu.ts","../src/m2m-user-menu.ts","../src/notification/api.ts","../src/notification/ServiceIdProvider.tsx","../src/notification/NotificationProvider.tsx"],"sourcesContent":["export const getDomains = () => {\n return globalThis.M2M_COMPONENTS_ENV === \"production\"\n ? {\n core: \"https://core.m2msystems.cloud\",\n sumyca: \"https://manage.sumyca.com\",\n cleaning: \"https://manager-cleaning.m2msystems.cloud\",\n users: \"https://manage-users.m2msystems.cloud\",\n inspection: \"https://inspection.m2msystems.cloud\",\n checkin: \"https://manage.checkin.m2msystems.cloud\",\n systems: \"https://m2msystems.cloud/\",\n }\n : {\n core: \"https://dev--m2m-core-manager-front.netlify.app\",\n sumyca: \"https://dev--sumyca-manager-front.netlify.app\",\n cleaning: \"https://dev--m2m-cleaning-manager-front.netlify.app\",\n users: \"https://dev--manage-users.netlify.app\",\n inspection: \"https://dev--m2m-inspection-manager-front.netlify.app\",\n checkin: \"https://manage.dev.checkin.m2msystems.cloud\",\n systems: \"https://dev.m2msystems.cloud\",\n };\n};\n","import {\n Button,\n Modal,\n ModalProps,\n Portal,\n Typography,\n useAlert,\n useModal,\n} from \"matsuri-ui\";\nimport { type Logger } from \"@datadog/browser-logs\";\nimport {\n MatsuriFormsQuestion,\n MatsuriFormsQuestionProvider,\n MatsuriFormsTextQuestionProps,\n useMatsuriForms,\n} from \"matsuri-forms-sdk\";\nimport { MultipleTextQuestion } from \"./MultipleTextQuestion\";\nimport { PropsWithChildren, createContext, useContext, useState } from \"react\";\nimport { SelectQuestion } from \"./SelectQuestion\";\nimport { getRandomId } from \"./getRandomId\";\nimport FeedbackIconBase from \"@mui/icons-material/Feedback\";\n\n/**\n * これはワークアラウンドです。\n * これを行わずに、MuiIconをそのまま使うと、トランスパイル後のコードで次のようなエラーが発生し、コンポーネントを描画できなくなります。\n * `Error: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: object.`\n * 関連リンク:\n * https://stackoverflow.com/questions/72008357/mui-icons-used-in-shared-react-component-library-wont-render-error-element-ty\n * https://github.com/mui/material-ui/issues/35535\n */\nconst normalizeIcon = <T,>(Icon: T): T => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n return ((Icon as any).default ? (Icon as any).default : Icon) as T;\n};\nconst FeedbackIcon = normalizeIcon(FeedbackIconBase);\n\nconst getFormId = () => {\n return globalThis.M2M_COMPONENTS_ENV === \"production\"\n ? \"01GWRQ1MRS7PE29XGRETFZ6D7Y\"\n : \"01GTBSYMGPMX91E96P007SXEMH\";\n};\n\ninterface TextQuestionContextValue {\n userId?: string;\n userName?: string;\n serviceName?: string;\n url?: string;\n id?: string;\n}\n\nconst TextQuestionContext = createContext<TextQuestionContextValue>({});\n\nconst TextQuestion = (props: MatsuriFormsTextQuestionProps) => {\n const context = useContext(TextQuestionContext);\n return (\n <input\n value={context[props.title as keyof TextQuestionContextValue]}\n type=\"hidden\"\n name={props.name}\n />\n );\n};\n\ninterface FeedbackProviderModalProps\n extends Partial<ModalProps>,\n FeedbackProviderProps {}\n\nconst FeedbackProviderModal = (props: FeedbackProviderModalProps) => {\n const { questions, submit } = useMatsuriForms(getFormId(), {\n dev: globalThis.M2M_COMPONENTS_ENV !== \"production\",\n });\n\n const { throwAlert } = useAlert();\n\n const [status, setStatus] = useState<\"started\" | \"sending\" | \"completed\">(\n \"started\",\n );\n\n const id = getRandomId();\n\n return (\n <Modal\n backdrop\n width={600}\n maxWidth={600}\n header={<Typography variant=\"h3\">フィードバックを送信</Typography>}\n body={\n status === \"completed\" ? (\n <div\n style={{\n display: \"grid\",\n gap: 32,\n }}\n >\n <Typography>\n レポートを送信しました。ありがとうございます。\n </Typography>\n <Typography color=\"textSecondary\" variant=\"caption\" as=\"p\">\n お送りいただいたフィードバックは、問題の解決とサービスの改善に役立てさせていただきます。\n </Typography>\n <Button\n color=\"primary\"\n variant=\"filled\"\n onClick={() => {\n props.onClose?.();\n }}\n >\n 閉じる\n </Button>\n </div>\n ) : (\n <form\n style={{\n display: \"grid\",\n gap: 24,\n }}\n onSubmit={async (event) => {\n event.preventDefault();\n setStatus(\"sending\");\n const { error } = await submit(event.currentTarget);\n\n /**\n * 以下、対応が行われるまでは取れる値だけ送る\n * https://github.com/matsuri-tech/matsuri-forms-manager-front/issues/265\n */\n const input = {\n id,\n userId: props.userId,\n userName: props.userName,\n serviceName: props.serviceName,\n url: window.location.href,\n };\n throwAlert(error, {\n ignoreSuccess: true,\n errorMessage: {\n reason: \"サーバー側のエラーの可能性があります。\",\n action:\n \"しばらく時間を空けて試すか、開発チームへお問い合わせください。\",\n happend: \"フィードバックの送信に失敗しました。\",\n },\n onSuccess: () => {\n props.datadogLogs?.logger?.info?.(\n `Feedback: ${id} by ${props.userId}`,\n {\n input,\n },\n );\n\n window.setTimeout(() => {\n setStatus(\"completed\");\n }, 2000);\n },\n onError: () => {\n props.datadogLogs?.logger?.error?.(\n `Failed Feedback: ${input.id} by ${input.userId}`,\n { input, error },\n );\n\n window.setTimeout(() => {\n setStatus(\"started\");\n }, 2000);\n },\n });\n }}\n >\n <TextQuestionContext.Provider\n value={{\n userId: props.userId,\n userName: props.userName,\n serviceName: props.serviceName,\n url: window.location.href,\n id,\n }}\n >\n <MatsuriFormsQuestionProvider\n renderSelect={SelectQuestion}\n renderMultilineText={MultipleTextQuestion}\n renderText={TextQuestion}\n >\n {questions.map((question) => {\n return (\n <MatsuriFormsQuestion {...question} key={question.id} />\n );\n })}\n </MatsuriFormsQuestionProvider>\n </TextQuestionContext.Provider>\n <div>\n <Button\n type=\"submit\"\n color=\"primary\"\n variant=\"filled\"\n disabled={status === \"sending\"}\n fullWidth\n >\n 送信\n </Button>\n <Typography\n variant=\"caption\"\n style={{\n float: \"right\",\n }}\n >\n {status === \"sending\" ? \"送信中...\" : undefined}\n \n </Typography>\n </div>\n </form>\n )\n }\n {...props}\n />\n );\n};\n\ninterface FeedbackProviderProps {\n userId?: string;\n userName?: string;\n serviceName: string;\n datadogLogs?: {\n logger: Logger;\n };\n}\n\nexport const FeedbackProvider = ({\n children,\n ...modalProps\n}: PropsWithChildren<FeedbackProviderProps>) => {\n const [open] = useModal(FeedbackProviderModal, {\n enableClickOutside: true,\n disableClose: false,\n });\n return (\n <div>\n {children}\n <Portal>\n <Button\n style={{\n position: \"fixed\",\n bottom: 16,\n right: 16,\n }}\n onClick={() => {\n open(modalProps);\n }}\n type=\"button\"\n icon={<FeedbackIcon />}\n color=\"secondary\"\n variant=\"filled\"\n rounded\n />\n </Portal>\n </div>\n );\n};\n","import { MatsuriFormsMultilineTextQuestionProps } from \"matsuri-forms-sdk\";\nimport { MultipleTextField } from \"matsuri-ui\";\n\nexport const MultipleTextQuestion = (\n props: MatsuriFormsMultilineTextQuestionProps,\n) => {\n return (\n <MultipleTextField\n label=\"問題や提案について説明してください\"\n required={props.required}\n name={props.name}\n rows={6}\n helperText=\"現在開いているページのURLは自動的に送信されるため記載不要です\"\n />\n );\n};\n","import { Checkbox } from \"matsuri-ui\";\nimport { MatsuriFormsSelectQuestionProps } from \"matsuri-forms-sdk\";\n\nexport const SelectQuestion = (props: MatsuriFormsSelectQuestionProps) => {\n return (\n <div\n style={{\n display: \"flex\",\n gap: 16,\n }}\n >\n {props.options.map((option) => {\n return (\n <Checkbox\n defaultChecked\n type=\"radio\"\n name={props.name}\n value={option.value}\n key={option.value}\n >\n {option.label}\n </Checkbox>\n );\n })}\n </div>\n );\n};\n","import { StorageClient } from \"./lib/client\";\n\nclass M2mStorageClient extends StorageClient {}\n\nexport type { M2mStorageClient };\n\n/**\n * Get the connected storage client.\n * @param timeout\n * @default 5000\n */\nconst getStorage = async (timeout = 5000) => {\n const storage = await new Promise<M2mStorageClient>((resolve, reject) => {\n const rejectTimer = globalThis.setTimeout(function () {\n reject(\n new Error(\n \"Timeout: M2mStorageClient could not connect. Please call m2mStorageClient.init() before using m2mStorageClient.\",\n ),\n );\n }, timeout);\n\n const storage = globalThis.M2M_STORAGE;\n if (storage) {\n globalThis.clearTimeout(rejectTimer);\n resolve(storage);\n }\n\n const timer = globalThis.setInterval(() => {\n const storage = globalThis.M2M_STORAGE;\n if (storage) {\n globalThis.clearTimeout(rejectTimer);\n globalThis.clearInterval(timer);\n resolve(storage);\n }\n }, 200);\n });\n\n await storage.onConnect();\n\n return storage;\n};\n\nconst M2M_STORAGE_HUB_URL = \"https://hub.m2msystems.cloud/\";\n\nconst M2M_STORAGE_HUB_URL_DEV =\n \"https://m2m-components-storage-hub-dev.netlify.app/\";\n\nconst initStorageClient = (options?: {\n env?: \"development\" | \"production\";\n}) => {\n if (globalThis.M2M_STORAGE) {\n throw new Error(\n \"M2mStorageClient already initialized. Do not call m2mStorageClient.init multiple times.\",\n );\n }\n const storage = new M2mStorageClient(\n options?.env === \"production\"\n ? M2M_STORAGE_HUB_URL\n : M2M_STORAGE_HUB_URL_DEV,\n );\n globalThis.M2M_STORAGE = storage;\n};\n\nexport const m2mStorageClient = {\n init: initStorageClient,\n getStorage: getStorage,\n};\n\nexport const M2M_AUTH_TOKEN_KEY = \"M2M_APP_AUTH_TOKEN\";\n\nconst getAuthTokenCache = () => {\n return globalThis.localStorage.getItem(M2M_AUTH_TOKEN_KEY);\n};\n\nconst getAuthToken = async () => {\n try {\n const storage = await getStorage();\n const autuToken = (await storage.get(M2M_AUTH_TOKEN_KEY)) as string;\n return autuToken || getAuthTokenCache();\n } catch (error) {\n console.warn(error);\n return getAuthTokenCache();\n }\n};\n\nconst setAuthToken = async (token: string) => {\n globalThis.localStorage.setItem(M2M_AUTH_TOKEN_KEY, token);\n try {\n const storage = await getStorage();\n await storage.set(M2M_AUTH_TOKEN_KEY, token);\n } catch (error) {\n console.warn(error);\n }\n};\n\nconst clearAuthToken = async () => {\n globalThis.localStorage.removeItem(M2M_AUTH_TOKEN_KEY);\n try {\n const storage = await getStorage();\n await storage.del(M2M_AUTH_TOKEN_KEY);\n } catch (error) {\n console.warn(error);\n }\n};\n\nexport const m2mAuthTokenApi = {\n get: getAuthToken,\n getCache: getAuthTokenCache,\n set: setAuthToken,\n clear: clearAuthToken,\n};\n","import { LitElement, css } from \"lit\";\nimport { Ref, createRef } from \"lit/directives/ref.js\";\nimport { property } from \"lit/decorators.js\";\n\nexport interface MenuAdditionalItem {\n label: string;\n href: string;\n}\n\nexport interface MenuBaseElementProps {\n expanded: boolean;\n additinalItems: MenuAdditionalItem[];\n}\n\nexport class MenuBaseElement extends LitElement {\n static styles = css`\n nav {\n position: relative;\n display: flex;\n }\n .navigation-drawer-controll-button {\n display: flex;\n align-items: center;\n justify-content: center;\n\n height: 42px;\n padding: 0;\n cursor: pointer;\n background-color: transparent;\n border: none;\n transition: background-color 0.2s;\n appearance: none;\n }\n .navigation-drawer-controll-button.navigation-drawer-controll-button--icon {\n width: 42px;\n }\n .navigation-drawer-controll-button:hover {\n background-color: rgba(0, 0, 0, 0.05);\n }\n .navigation-drawer-controll-button:active {\n background-color: rgba(0, 0, 0, 0.075);\n }\n\n .navigation-drawer {\n position: absolute;\n top: 100%;\n right: 0px;\n z-index: 1100;\n box-sizing: border-box;\n min-width: 200px;\n padding: 0px;\n margin: 0px;\n overflow: hidden;\n color: rgba(0, 0, 0, 0.87);\n white-space: nowrap;\n list-style: none;\n background-color: #fff;\n border-radius: 5px;\n box-shadow:\n 0px 1px 3px 0px rgb(0 0 0 / 20%),\n 0px 1px 1px 0px rgb(0 0 0 / 14%),\n 0px 2px 1px -1px rgb(0 0 0 / 12%);\n }\n .navigation-drawer-controll-button[aria-expanded=\"false\"]\n ~ .navigation-drawer {\n display: none;\n }\n\n .navigation-drawer li {\n border-bottom: 1px solid #eeeeee;\n }\n .navigation-drawer li:last-of-type {\n border-bottom: none;\n }\n .navigation-drawer li > a,\n .navigation-drawer li > button {\n box-sizing: border-box;\n display: block;\n width: 100%;\n padding: 0;\n padding: 0.6em 1em;\n font: inherit;\n color: inherit;\n text-align: left;\n text-decoration: none;\n cursor: pointer;\n cursor: pointer;\n background-color: transparent;\n border: none;\n transition: 0.2s;\n appearance: none;\n }\n .navigation-drawer li > a:hover,\n .navigation-drawer li > button:hover {\n background-color: #ededed;\n }\n .navigation-drawer li > a:active,\n .navigation-drawer li > button:active {\n background-color: #dadada;\n }\n\n .navigation-drawer li ul {\n padding: 0;\n list-style: none;\n }\n .navigation-drawer li:has(> ul) li > a {\n padding-left: 2em;\n }\n\n .navigation-drawer li:has(> ul) > span {\n display: block;\n padding: 0.6em 1em;\n border-bottom: 1px solid #eeeeee;\n }\n `;\n\n handleClickOutside = (event: MouseEvent | TouchEvent) => {\n if (\n !this.listRef.value ||\n this.listRef.value.contains(event.composedPath()[0] as Node)\n ) {\n return;\n }\n this.expanded = false;\n };\n\n @property({\n type: Object,\n attribute: \"additional-items\",\n })\n additinalItems: MenuBaseElementProps[\"additinalItems\"] = [];\n\n @property()\n expanded?: boolean = false;\n\n handleToggleDrawer = (event: Event) => {\n event.preventDefault();\n event.stopPropagation();\n\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n this.expanded = !this.expanded;\n if (this.expanded) {\n window.addEventListener(\"click\", this.handleClickOutside, false);\n }\n };\n\n protected updated() {\n if (this.expanded === false) {\n window.removeEventListener(\"click\", this.handleClickOutside, false);\n }\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n window.removeEventListener(\"click\", this.handleClickOutside, false);\n }\n\n listRef: Ref = createRef();\n}\n","import { MenuBaseElement, MenuBaseElementProps } from \"./MenuBaseElement\";\nimport { customElement } from \"lit/decorators.js\";\nimport { getDomains } from \"./domains\";\nimport { html } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\n\nexport type M2MAppsMenuProps = MenuBaseElementProps;\n\n@customElement(\"m2m-apps-menu\")\nexport class M2MAppsMenu extends MenuBaseElement {\n render() {\n const domains = getDomains();\n const additionalItems = this.additinalItems?.map((item) => {\n return html`\n <li>\n <a href=\"${item.href}\">${item.label}</a>\n </li>\n `;\n });\n const isHidden = this.expanded === false || this.expanded === undefined;\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=\"38px\"\n height=\"38px\"\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=${isHidden}\n class=\"navigation-drawer\"\n >\n <li>\n <span>m2m Series</span>\n <ul>\n <li><a href=\"${domains.core}\">Core 施設管理</a></li>\n <li><a href=\"${domains.checkin}\">Checkin ゲストチェックイン</a></li>\n <li><a href=\"${domains.systems}\">Systems Airbnb連携</a></li>\n <li><a href=\"${domains.cleaning}\">Cleaning 清掃管理</a></li>\n <li><a href=\"${domains.inspection}\">Inspection 内見チェック</a></li>\n <li><a href=\"${domains.users}\">Users アカウント管理</a></li>\n </ul>\n </li>\n <li>\n <a href=\"${domains.sumyca}\">Sumyca マンスリープラットフォーム</a>\n </li>\n ${additionalItems}\n </ul>\n </nav>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"m2m-apps-menu\": M2MAppsMenu;\n }\n}\n","import { MenuBaseElement, MenuBaseElementProps } from \"./MenuBaseElement\";\nimport { customElement } from \"lit/decorators.js\";\nimport { getDomains } from \"./domains\";\nimport { html } from \"lit\";\nimport { m2mAuthTokenApi } from \"./storage/client\";\nimport { ref } from \"lit/directives/ref.js\";\n\nexport type M2MUserMenuProps = MenuBaseElementProps;\n\n@customElement(\"m2m-user-menu\")\nexport class M2MUserMenu extends MenuBaseElement {\n handleLogout = () => {\n void m2mAuthTokenApi.clear();\n window.location.reload();\n };\n\n render() {\n const domains = getDomains();\n const additionalItems = this.additinalItems?.map((item) => {\n return html`\n <li>\n <a href=\"${item.href}\">${item.label}</a>\n </li>\n `;\n });\n const isHidden = this.expanded === false || this.expanded === undefined;\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=\"38px\" height=\"38px\" 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=${isHidden}\n class=\"navigation-drawer\"\n >\n <li><a href=\"${domains.users}\">アカウント情報</a></li>\n <li @click=${this.handleLogout}>\n <button type=\"button\">ログアウト</button>\n </li>\n ${additionalItems}\n </ul>\n </nav>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"m2m-user-menu\": M2MUserMenu;\n }\n}\n","import { Subscription } from \"./domain\";\nimport { fetcher } from \"matsuri-hooks\";\nimport { m2mNotifications_v1 } from \"../endpoints/m2m-notifications.v1\";\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","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 }), [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","import { Notification, Subscription, SubscriptionStatus } from \"./domain\";\nimport {\n PropsWithChildren,\n createContext,\n useCallback,\n useContext,\n} from \"react\";\nimport { m2mNotifications_v1 } from \"../endpoints/m2m-notifications.v1\";\nimport { useAuthFetch } from \"matsuri-hooks\";\nimport { useMemo } from \"react\";\nimport { useServiceId } from \"./ServiceIdProvider\";\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 = ({\n token,\n children,\n}: PropsWithChildren<{ token: string }>) => {\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 [serviceId, 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"],"mappings":"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","names":["import_matsuri_ui","import_matsuri_ui","import_jsx_runtime","import_jsx_runtime","import_react","FeedbackIconBase","storage","import_decorators","import_lit","import_ref","import_decorators","import_lit","import_ref","import_react","import_jsx_runtime","import_react","import_matsuri_hooks","import_react","import_jsx_runtime"]}
|
|
1
|
+
{"version":3,"sources":["../src/domains.ts","../src/feedback/index.tsx","../src/feedback/MultipleTextQuestion.tsx","../src/feedback/SelectQuestion.tsx","../src/storage/client.ts","../src/MenuBaseElement.ts","../src/m2m-apps-menu.ts","../src/m2m-user-menu.ts","../src/notification/api.ts","../src/notification/ServiceIdProvider.tsx","../src/notification/NotificationProvider.tsx"],"sourcesContent":["export const useDomains = () => {\n return globalThis.M2M_COMPONENTS_ENV === \"production\"\n ? {\n core: \"https://core.m2msystems.cloud\",\n sumyca: \"https://manage.sumyca.com\",\n cleaning: \"https://manager-cleaning.m2msystems.cloud\",\n users: \"https://manage-users.m2msystems.cloud\",\n inspection: \"https://inspection.m2msystems.cloud\",\n checkin: \"https://manage.checkin.m2msystems.cloud\",\n systems: \"https://m2msystems.cloud/\",\n }\n : {\n core: \"https://dev--m2m-core-manager-front.netlify.app\",\n sumyca: \"https://dev--sumyca-manager-front.netlify.app\",\n cleaning: \"https://dev--m2m-cleaning-manager-front.netlify.app\",\n users: \"https://dev--manage-users.netlify.app\",\n inspection: \"https://dev--m2m-inspection-manager-front.netlify.app\",\n checkin: \"https://manage.dev.checkin.m2msystems.cloud\",\n systems: \"https://dev.m2msystems.cloud\",\n };\n};\n","import {\n Button,\n Modal,\n ModalProps,\n Portal,\n Typography,\n useAlert,\n useModal,\n} from \"matsuri-ui\";\nimport { type Logger } from \"@datadog/browser-logs\";\nimport {\n MatsuriFormsQuestion,\n MatsuriFormsQuestionProvider,\n MatsuriFormsTextQuestionProps,\n useMatsuriForms,\n} from \"matsuri-forms-sdk\";\nimport { MultipleTextQuestion } from \"./MultipleTextQuestion\";\nimport { PropsWithChildren, createContext, useContext, useState } from \"react\";\nimport { SelectQuestion } from \"./SelectQuestion\";\nimport { getRandomId } from \"./getRandomId\";\nimport FeedbackIconBase from \"@mui/icons-material/Feedback\";\n\n/**\n * これはワークアラウンドです。\n * これを行わずに、MuiIconをそのまま使うと、トランスパイル後のコードで次のようなエラーが発生し、コンポーネントを描画できなくなります。\n * `Error: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: object.`\n * 関連リンク:\n * https://stackoverflow.com/questions/72008357/mui-icons-used-in-shared-react-component-library-wont-render-error-element-ty\n * https://github.com/mui/material-ui/issues/35535\n */\nconst normalizeIcon = <T,>(Icon: T): T => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access\n return ((Icon as any).default ? (Icon as any).default : Icon) as T;\n};\nconst FeedbackIcon = normalizeIcon(FeedbackIconBase);\n\nconst getFormId = () => {\n return globalThis.M2M_COMPONENTS_ENV === \"production\"\n ? \"01GWRQ1MRS7PE29XGRETFZ6D7Y\"\n : \"01GTBSYMGPMX91E96P007SXEMH\";\n};\n\ninterface TextQuestionContextValue {\n userId?: string;\n userName?: string;\n serviceName?: string;\n url?: string;\n id?: string;\n}\n\nconst TextQuestionContext = createContext<TextQuestionContextValue>({});\n\nconst TextQuestion = (props: MatsuriFormsTextQuestionProps) => {\n const context = useContext(TextQuestionContext);\n return (\n <input\n value={context[props.title as keyof TextQuestionContextValue]}\n type=\"hidden\"\n name={props.name}\n />\n );\n};\n\ninterface FeedbackProviderModalProps\n extends Partial<ModalProps>,\n FeedbackProviderProps {}\n\nconst FeedbackProviderModal = (props: FeedbackProviderModalProps) => {\n const { questions, submit } = useMatsuriForms(getFormId(), {\n dev: globalThis.M2M_COMPONENTS_ENV !== \"production\",\n });\n\n const { throwAlert } = useAlert();\n\n const [status, setStatus] = useState<\"started\" | \"sending\" | \"completed\">(\n \"started\",\n );\n\n const id = getRandomId();\n\n return (\n <Modal\n backdrop\n width={600}\n maxWidth={600}\n header={<Typography variant=\"h3\">フィードバックを送信</Typography>}\n body={\n status === \"completed\" ? (\n <div\n style={{\n display: \"grid\",\n gap: 32,\n }}\n >\n <Typography>\n レポートを送信しました。ありがとうございます。\n </Typography>\n <Typography color=\"textSecondary\" variant=\"caption\" as=\"p\">\n お送りいただいたフィードバックは、問題の解決とサービスの改善に役立てさせていただきます。\n </Typography>\n <Button\n color=\"primary\"\n variant=\"filled\"\n onClick={() => {\n props.onClose?.();\n }}\n >\n 閉じる\n </Button>\n </div>\n ) : (\n <form\n style={{\n display: \"grid\",\n gap: 24,\n }}\n onSubmit={async (event) => {\n event.preventDefault();\n setStatus(\"sending\");\n const { error } = await submit(event.currentTarget);\n\n /**\n * 以下、対応が行われるまでは取れる値だけ送る\n * https://github.com/matsuri-tech/matsuri-forms-manager-front/issues/265\n */\n const input = {\n id,\n userId: props.userId,\n userName: props.userName,\n serviceName: props.serviceName,\n url: window.location.href,\n };\n throwAlert(error, {\n ignoreSuccess: true,\n errorMessage: {\n reason: \"サーバー側のエラーの可能性があります。\",\n action:\n \"しばらく時間を空けて試すか、開発チームへお問い合わせください。\",\n happend: \"フィードバックの送信に失敗しました。\",\n },\n onSuccess: () => {\n props.datadogLogs?.logger?.info?.(\n `Feedback: ${id} by ${props.userId}`,\n {\n input,\n },\n );\n\n window.setTimeout(() => {\n setStatus(\"completed\");\n }, 2000);\n },\n onError: () => {\n props.datadogLogs?.logger?.error?.(\n `Failed Feedback: ${input.id} by ${input.userId}`,\n { input, error },\n );\n\n window.setTimeout(() => {\n setStatus(\"started\");\n }, 2000);\n },\n });\n }}\n >\n <TextQuestionContext.Provider\n value={{\n userId: props.userId,\n userName: props.userName,\n serviceName: props.serviceName,\n url: window.location.href,\n id,\n }}\n >\n <MatsuriFormsQuestionProvider\n renderSelect={SelectQuestion}\n renderMultilineText={MultipleTextQuestion}\n renderText={TextQuestion}\n >\n {questions.map((question) => {\n return (\n <MatsuriFormsQuestion {...question} key={question.id} />\n );\n })}\n </MatsuriFormsQuestionProvider>\n </TextQuestionContext.Provider>\n <div>\n <Button\n type=\"submit\"\n color=\"primary\"\n variant=\"filled\"\n disabled={status === \"sending\"}\n fullWidth\n >\n 送信\n </Button>\n <Typography\n variant=\"caption\"\n style={{\n float: \"right\",\n }}\n >\n {status === \"sending\" ? \"送信中...\" : undefined}\n \n </Typography>\n </div>\n </form>\n )\n }\n {...props}\n />\n );\n};\n\ninterface FeedbackProviderProps {\n userId?: string;\n userName?: string;\n serviceName: string;\n datadogLogs?: {\n logger: Logger;\n };\n}\n\nexport const FeedbackProvider = ({\n children,\n ...modalProps\n}: PropsWithChildren<FeedbackProviderProps>) => {\n const [open] = useModal(FeedbackProviderModal, {\n enableClickOutside: true,\n disableClose: false,\n });\n return (\n <div>\n {children}\n <Portal>\n <Button\n style={{\n position: \"fixed\",\n bottom: 16,\n right: 16,\n }}\n onClick={() => {\n open(modalProps);\n }}\n type=\"button\"\n icon={<FeedbackIcon />}\n color=\"secondary\"\n variant=\"filled\"\n rounded\n />\n </Portal>\n </div>\n );\n};\n","import { MatsuriFormsMultilineTextQuestionProps } from \"matsuri-forms-sdk\";\nimport { MultipleTextField } from \"matsuri-ui\";\n\nexport const MultipleTextQuestion = (\n props: MatsuriFormsMultilineTextQuestionProps,\n) => {\n return (\n <MultipleTextField\n label=\"問題や提案について説明してください\"\n required={props.required}\n name={props.name}\n rows={6}\n helperText=\"現在開いているページのURLは自動的に送信されるため記載不要です\"\n />\n );\n};\n","import { Checkbox } from \"matsuri-ui\";\nimport { MatsuriFormsSelectQuestionProps } from \"matsuri-forms-sdk\";\n\nexport const SelectQuestion = (props: MatsuriFormsSelectQuestionProps) => {\n return (\n <div\n style={{\n display: \"flex\",\n gap: 16,\n }}\n >\n {props.options.map((option) => {\n return (\n <Checkbox\n defaultChecked\n type=\"radio\"\n name={props.name}\n value={option.value}\n key={option.value}\n >\n {option.label}\n </Checkbox>\n );\n })}\n </div>\n );\n};\n","import { StorageClient } from \"./lib/client\";\n\nclass M2mStorageClient extends StorageClient {}\n\nexport type { M2mStorageClient };\n\n/**\n * Get the connected storage client.\n * @param timeout\n * @default 5000\n */\nconst getStorage = async (timeout = 5000) => {\n const storage = await new Promise<M2mStorageClient>((resolve, reject) => {\n const rejectTimer = globalThis.setTimeout(function () {\n reject(\n new Error(\n \"Timeout: M2mStorageClient could not connect. Please call m2mStorageClient.init() before using m2mStorageClient.\",\n ),\n );\n }, timeout);\n\n const storage = globalThis.M2M_STORAGE;\n if (storage) {\n globalThis.clearTimeout(rejectTimer);\n resolve(storage);\n }\n\n const timer = globalThis.setInterval(() => {\n const storage = globalThis.M2M_STORAGE;\n if (storage) {\n globalThis.clearTimeout(rejectTimer);\n globalThis.clearInterval(timer);\n resolve(storage);\n }\n }, 200);\n });\n\n await storage.onConnect();\n\n return storage;\n};\n\nconst M2M_STORAGE_HUB_URL = \"https://hub.m2msystems.cloud/\";\n\nconst M2M_STORAGE_HUB_URL_DEV =\n \"https://m2m-components-storage-hub-dev.netlify.app/\";\n\nconst initStorageClient = (options?: {\n env?: \"development\" | \"production\";\n}) => {\n if (globalThis.M2M_STORAGE) {\n throw new Error(\n \"M2mStorageClient already initialized. Do not call m2mStorageClient.init multiple times.\",\n );\n }\n const storage = new M2mStorageClient(\n options?.env === \"production\"\n ? M2M_STORAGE_HUB_URL\n : M2M_STORAGE_HUB_URL_DEV,\n );\n globalThis.M2M_STORAGE = storage;\n};\n\nexport const m2mStorageClient = {\n init: initStorageClient,\n getStorage: getStorage,\n};\n\nexport const M2M_AUTH_TOKEN_KEY = \"M2M_APP_AUTH_TOKEN\";\n\nconst getAuthTokenCache = () => {\n return globalThis.localStorage.getItem(M2M_AUTH_TOKEN_KEY);\n};\n\nconst getAuthToken = async () => {\n try {\n const storage = await getStorage();\n const autuToken = (await storage.get(M2M_AUTH_TOKEN_KEY)) as string;\n return autuToken || getAuthTokenCache();\n } catch (error) {\n console.warn(error);\n return getAuthTokenCache();\n }\n};\n\nconst setAuthToken = async (token: string) => {\n globalThis.localStorage.setItem(M2M_AUTH_TOKEN_KEY, token);\n try {\n const storage = await getStorage();\n await storage.set(M2M_AUTH_TOKEN_KEY, token);\n } catch (error) {\n console.warn(error);\n }\n};\n\nconst clearAuthToken = async () => {\n globalThis.localStorage.removeItem(M2M_AUTH_TOKEN_KEY);\n try {\n const storage = await getStorage();\n await storage.del(M2M_AUTH_TOKEN_KEY);\n } catch (error) {\n console.warn(error);\n }\n};\n\nexport const m2mAuthTokenApi = {\n get: getAuthToken,\n getCache: getAuthTokenCache,\n set: setAuthToken,\n clear: clearAuthToken,\n};\n","import { LitElement, css } from \"lit\";\nimport { Ref, createRef } from \"lit/directives/ref.js\";\nimport { property } from \"lit/decorators.js\";\n\nexport interface MenuAdditionalItem {\n label: string;\n href: string;\n}\n\nexport interface MenuBaseElementProps {\n expanded: boolean;\n additinalItems: MenuAdditionalItem[];\n}\n\nexport class MenuBaseElement extends LitElement {\n static styles = css`\n nav {\n position: relative;\n display: flex;\n }\n .navigation-drawer-controll-button {\n display: flex;\n align-items: center;\n justify-content: center;\n\n height: 42px;\n padding: 0;\n cursor: pointer;\n background-color: transparent;\n border: none;\n transition: background-color 0.2s;\n appearance: none;\n }\n .navigation-drawer-controll-button.navigation-drawer-controll-button--icon {\n width: 42px;\n }\n .navigation-drawer-controll-button:hover {\n background-color: rgba(0, 0, 0, 0.05);\n }\n .navigation-drawer-controll-button:active {\n background-color: rgba(0, 0, 0, 0.075);\n }\n\n .navigation-drawer {\n position: absolute;\n top: 100%;\n right: 0px;\n z-index: 1100;\n box-sizing: border-box;\n min-width: 200px;\n padding: 0px;\n margin: 0px;\n overflow: hidden;\n color: rgba(0, 0, 0, 0.87);\n white-space: nowrap;\n list-style: none;\n background-color: #fff;\n border-radius: 5px;\n box-shadow:\n 0px 1px 3px 0px rgb(0 0 0 / 20%),\n 0px 1px 1px 0px rgb(0 0 0 / 14%),\n 0px 2px 1px -1px rgb(0 0 0 / 12%);\n }\n .navigation-drawer-controll-button[aria-expanded=\"false\"]\n ~ .navigation-drawer {\n display: none;\n }\n\n .navigation-drawer li {\n border-bottom: 1px solid #eeeeee;\n }\n .navigation-drawer li:last-of-type {\n border-bottom: none;\n }\n .navigation-drawer li > a,\n .navigation-drawer li > button {\n box-sizing: border-box;\n display: block;\n width: 100%;\n padding: 0;\n padding: 0.6em 1em;\n font: inherit;\n color: inherit;\n text-align: left;\n text-decoration: none;\n cursor: pointer;\n cursor: pointer;\n background-color: transparent;\n border: none;\n transition: 0.2s;\n appearance: none;\n }\n .navigation-drawer li > a:hover,\n .navigation-drawer li > button:hover {\n background-color: #ededed;\n }\n .navigation-drawer li > a:active,\n .navigation-drawer li > button:active {\n background-color: #dadada;\n }\n\n .navigation-drawer li ul {\n padding: 0;\n list-style: none;\n }\n .navigation-drawer li:has(> ul) li > a {\n padding-left: 2em;\n }\n\n .navigation-drawer li:has(> ul) > span {\n display: block;\n padding: 0.6em 1em;\n border-bottom: 1px solid #eeeeee;\n }\n `;\n\n handleClickOutside = (event: MouseEvent | TouchEvent) => {\n if (\n !this.listRef.value ||\n this.listRef.value.contains(event.composedPath()[0] as Node)\n ) {\n return;\n }\n this.expanded = false;\n };\n\n @property({\n type: Object,\n attribute: \"additional-items\",\n })\n additinalItems: MenuBaseElementProps[\"additinalItems\"] = [];\n\n @property()\n expanded?: boolean = false;\n\n handleToggleDrawer = (event: Event) => {\n event.preventDefault();\n event.stopPropagation();\n\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n this.expanded = !this.expanded;\n if (this.expanded) {\n window.addEventListener(\"click\", this.handleClickOutside, false);\n }\n };\n\n protected updated() {\n if (this.expanded === false) {\n window.removeEventListener(\"click\", this.handleClickOutside, false);\n }\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n window.removeEventListener(\"click\", this.handleClickOutside, false);\n }\n\n listRef: Ref = createRef();\n}\n","import { MenuBaseElement, MenuBaseElementProps } from \"./MenuBaseElement\";\nimport { customElement } from \"lit/decorators.js\";\nimport { html } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport { useDomains } from \"./domains\";\n\nexport type M2MAppsMenuProps = MenuBaseElementProps;\n\n@customElement(\"m2m-apps-menu\")\nexport class M2MAppsMenu extends MenuBaseElement {\n render() {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const domains = useDomains();\n const additionalItems = this.additinalItems?.map((item) => {\n return html`\n <li>\n <a href=\"${item.href}\">${item.label}</a>\n </li>\n `;\n });\n const isHidden = this.expanded === false || this.expanded === undefined;\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=\"38px\"\n height=\"38px\"\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=${isHidden}\n class=\"navigation-drawer\"\n >\n <li>\n <span>m2m Series</span>\n <ul>\n <li><a href=\"${domains.core}\">Core 施設管理</a></li>\n <li><a href=\"${domains.checkin}\">Checkin ゲストチェックイン</a></li>\n <li><a href=\"${domains.systems}\">Systems Airbnb連携</a></li>\n <li><a href=\"${domains.cleaning}\">Cleaning 清掃管理</a></li>\n <li><a href=\"${domains.inspection}\">Inspection 内見チェック</a></li>\n <li><a href=\"${domains.users}\">Users アカウント管理</a></li>\n </ul>\n </li>\n <li>\n <a href=\"${domains.sumyca}\">Sumyca マンスリープラットフォーム</a>\n </li>\n ${additionalItems}\n </ul>\n </nav>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"m2m-apps-menu\": M2MAppsMenu;\n }\n}\n","import { MenuBaseElement, MenuBaseElementProps } from \"./MenuBaseElement\";\nimport { customElement } from \"lit/decorators.js\";\nimport { html } from \"lit\";\nimport { m2mAuthTokenApi } from \"./storage/client\";\nimport { ref } from \"lit/directives/ref.js\";\nimport { useDomains } from \"./domains\";\n\nexport type M2MUserMenuProps = MenuBaseElementProps;\n\n@customElement(\"m2m-user-menu\")\nexport class M2MUserMenu extends MenuBaseElement {\n handleLogout = () => {\n void m2mAuthTokenApi.clear();\n window.location.reload();\n };\n\n render() {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const domains = useDomains();\n const additionalItems = this.additinalItems?.map((item) => {\n return html`\n <li>\n <a href=\"${item.href}\">${item.label}</a>\n </li>\n `;\n });\n const isHidden = this.expanded === false || this.expanded === undefined;\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=\"38px\" height=\"38px\" 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=${isHidden}\n class=\"navigation-drawer\"\n >\n <li><a href=\"${domains.users}\">アカウント情報</a></li>\n <li @click=${this.handleLogout}>\n <button type=\"button\">ログアウト</button>\n </li>\n ${additionalItems}\n </ul>\n </nav>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"m2m-user-menu\": M2MUserMenu;\n }\n}\n","import { Subscription } from \"./domain\";\nimport { fetcher } from \"matsuri-hooks\";\nimport { m2mNotifications_v1 } from \"../endpoints/m2m-notifications.v1\";\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","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 }), [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","import { Notification, Subscription, SubscriptionStatus } from \"./domain\";\nimport {\n PropsWithChildren,\n createContext,\n useCallback,\n useContext,\n} from \"react\";\nimport { m2mNotifications_v1 } from \"../endpoints/m2m-notifications.v1\";\nimport { useAuthFetch } from \"matsuri-hooks\";\nimport { useMemo } from \"react\";\nimport { useServiceId } from \"./ServiceIdProvider\";\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 = ({\n token,\n children,\n}: PropsWithChildren<{ token: string }>) => {\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 [serviceId, 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"],"mappings":"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","names":["import_matsuri_ui","import_matsuri_ui","import_jsx_runtime","import_jsx_runtime","import_react","FeedbackIconBase","storage","import_decorators","import_lit","import_ref","import_decorators","import_lit","import_ref","import_react","import_jsx_runtime","import_react","import_matsuri_hooks","import_react","import_jsx_runtime"]}
|
package/index.mjs
CHANGED
|
@@ -11,11 +11,11 @@ import "./chunk-M2D55I4L.mjs";
|
|
|
11
11
|
import "./chunk-SXIYWN76.mjs";
|
|
12
12
|
import "./chunk-CTGSJWXT.mjs";
|
|
13
13
|
import "./chunk-FK5456TR.mjs";
|
|
14
|
-
import "./chunk-
|
|
15
|
-
import "./chunk-
|
|
14
|
+
import "./chunk-IUVQPLD7.mjs";
|
|
15
|
+
import "./chunk-KHXCCRGE.mjs";
|
|
16
16
|
import "./chunk-5DZIFMOT.mjs";
|
|
17
17
|
import "./chunk-PB3E5UQP.mjs";
|
|
18
18
|
import "./chunk-HI2D4CLX.mjs";
|
|
19
|
-
import "./chunk-
|
|
19
|
+
import "./chunk-27HPP73N.mjs";
|
|
20
20
|
import "./chunk-QH5I6YL2.mjs";
|
|
21
21
|
//# sourceMappingURL=index.mjs.map
|
package/m2m-apps-menu.js
CHANGED
|
@@ -180,9 +180,11 @@ __decorateClass([
|
|
|
180
180
|
|
|
181
181
|
// src/m2m-apps-menu.ts
|
|
182
182
|
var import_decorators2 = require("lit/decorators.js");
|
|
183
|
+
var import_lit2 = require("lit");
|
|
184
|
+
var import_ref2 = require("lit/directives/ref.js");
|
|
183
185
|
|
|
184
186
|
// src/domains.ts
|
|
185
|
-
var
|
|
187
|
+
var useDomains = () => {
|
|
186
188
|
return globalThis.M2M_COMPONENTS_ENV === "production" ? {
|
|
187
189
|
core: "https://core.m2msystems.cloud",
|
|
188
190
|
sumyca: "https://manage.sumyca.com",
|
|
@@ -203,12 +205,10 @@ var getDomains = () => {
|
|
|
203
205
|
};
|
|
204
206
|
|
|
205
207
|
// src/m2m-apps-menu.ts
|
|
206
|
-
var import_lit2 = require("lit");
|
|
207
|
-
var import_ref2 = require("lit/directives/ref.js");
|
|
208
208
|
var M2MAppsMenu = class extends MenuBaseElement {
|
|
209
209
|
render() {
|
|
210
210
|
var _a;
|
|
211
|
-
const domains =
|
|
211
|
+
const domains = useDomains();
|
|
212
212
|
const additionalItems = (_a = this.additinalItems) == null ? void 0 : _a.map((item) => {
|
|
213
213
|
return import_lit2.html`
|
|
214
214
|
<li>
|
package/m2m-apps-menu.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/m2m-apps-menu.ts","../src/MenuBaseElement.ts","../src/domains.ts"],"sourcesContent":["import { MenuBaseElement, MenuBaseElementProps } from \"./MenuBaseElement\";\nimport { customElement } from \"lit/decorators.js\";\nimport { getDomains } from \"./domains\";\nimport { html } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\n\nexport type M2MAppsMenuProps = MenuBaseElementProps;\n\n@customElement(\"m2m-apps-menu\")\nexport class M2MAppsMenu extends MenuBaseElement {\n render() {\n const domains = getDomains();\n const additionalItems = this.additinalItems?.map((item) => {\n return html`\n <li>\n <a href=\"${item.href}\">${item.label}</a>\n </li>\n `;\n });\n const isHidden = this.expanded === false || this.expanded === undefined;\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=\"38px\"\n height=\"38px\"\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=${isHidden}\n class=\"navigation-drawer\"\n >\n <li>\n <span>m2m Series</span>\n <ul>\n <li><a href=\"${domains.core}\">Core 施設管理</a></li>\n <li><a href=\"${domains.checkin}\">Checkin ゲストチェックイン</a></li>\n <li><a href=\"${domains.systems}\">Systems Airbnb連携</a></li>\n <li><a href=\"${domains.cleaning}\">Cleaning 清掃管理</a></li>\n <li><a href=\"${domains.inspection}\">Inspection 内見チェック</a></li>\n <li><a href=\"${domains.users}\">Users アカウント管理</a></li>\n </ul>\n </li>\n <li>\n <a href=\"${domains.sumyca}\">Sumyca マンスリープラットフォーム</a>\n </li>\n ${additionalItems}\n </ul>\n </nav>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"m2m-apps-menu\": M2MAppsMenu;\n }\n}\n","import { LitElement, css } from \"lit\";\nimport { Ref, createRef } from \"lit/directives/ref.js\";\nimport { property } from \"lit/decorators.js\";\n\nexport interface MenuAdditionalItem {\n label: string;\n href: string;\n}\n\nexport interface MenuBaseElementProps {\n expanded: boolean;\n additinalItems: MenuAdditionalItem[];\n}\n\nexport class MenuBaseElement extends LitElement {\n static styles = css`\n nav {\n position: relative;\n display: flex;\n }\n .navigation-drawer-controll-button {\n display: flex;\n align-items: center;\n justify-content: center;\n\n height: 42px;\n padding: 0;\n cursor: pointer;\n background-color: transparent;\n border: none;\n transition: background-color 0.2s;\n appearance: none;\n }\n .navigation-drawer-controll-button.navigation-drawer-controll-button--icon {\n width: 42px;\n }\n .navigation-drawer-controll-button:hover {\n background-color: rgba(0, 0, 0, 0.05);\n }\n .navigation-drawer-controll-button:active {\n background-color: rgba(0, 0, 0, 0.075);\n }\n\n .navigation-drawer {\n position: absolute;\n top: 100%;\n right: 0px;\n z-index: 1100;\n box-sizing: border-box;\n min-width: 200px;\n padding: 0px;\n margin: 0px;\n overflow: hidden;\n color: rgba(0, 0, 0, 0.87);\n white-space: nowrap;\n list-style: none;\n background-color: #fff;\n border-radius: 5px;\n box-shadow:\n 0px 1px 3px 0px rgb(0 0 0 / 20%),\n 0px 1px 1px 0px rgb(0 0 0 / 14%),\n 0px 2px 1px -1px rgb(0 0 0 / 12%);\n }\n .navigation-drawer-controll-button[aria-expanded=\"false\"]\n ~ .navigation-drawer {\n display: none;\n }\n\n .navigation-drawer li {\n border-bottom: 1px solid #eeeeee;\n }\n .navigation-drawer li:last-of-type {\n border-bottom: none;\n }\n .navigation-drawer li > a,\n .navigation-drawer li > button {\n box-sizing: border-box;\n display: block;\n width: 100%;\n padding: 0;\n padding: 0.6em 1em;\n font: inherit;\n color: inherit;\n text-align: left;\n text-decoration: none;\n cursor: pointer;\n cursor: pointer;\n background-color: transparent;\n border: none;\n transition: 0.2s;\n appearance: none;\n }\n .navigation-drawer li > a:hover,\n .navigation-drawer li > button:hover {\n background-color: #ededed;\n }\n .navigation-drawer li > a:active,\n .navigation-drawer li > button:active {\n background-color: #dadada;\n }\n\n .navigation-drawer li ul {\n padding: 0;\n list-style: none;\n }\n .navigation-drawer li:has(> ul) li > a {\n padding-left: 2em;\n }\n\n .navigation-drawer li:has(> ul) > span {\n display: block;\n padding: 0.6em 1em;\n border-bottom: 1px solid #eeeeee;\n }\n `;\n\n handleClickOutside = (event: MouseEvent | TouchEvent) => {\n if (\n !this.listRef.value ||\n this.listRef.value.contains(event.composedPath()[0] as Node)\n ) {\n return;\n }\n this.expanded = false;\n };\n\n @property({\n type: Object,\n attribute: \"additional-items\",\n })\n additinalItems: MenuBaseElementProps[\"additinalItems\"] = [];\n\n @property()\n expanded?: boolean = false;\n\n handleToggleDrawer = (event: Event) => {\n event.preventDefault();\n event.stopPropagation();\n\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n this.expanded = !this.expanded;\n if (this.expanded) {\n window.addEventListener(\"click\", this.handleClickOutside, false);\n }\n };\n\n protected updated() {\n if (this.expanded === false) {\n window.removeEventListener(\"click\", this.handleClickOutside, false);\n }\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n window.removeEventListener(\"click\", this.handleClickOutside, false);\n }\n\n listRef: Ref = createRef();\n}\n","export const getDomains = () => {\n return globalThis.M2M_COMPONENTS_ENV === \"production\"\n ? {\n core: \"https://core.m2msystems.cloud\",\n sumyca: \"https://manage.sumyca.com\",\n cleaning: \"https://manager-cleaning.m2msystems.cloud\",\n users: \"https://manage-users.m2msystems.cloud\",\n inspection: \"https://inspection.m2msystems.cloud\",\n checkin: \"https://manage.checkin.m2msystems.cloud\",\n systems: \"https://m2msystems.cloud/\",\n }\n : {\n core: \"https://dev--m2m-core-manager-front.netlify.app\",\n sumyca: \"https://dev--sumyca-manager-front.netlify.app\",\n cleaning: \"https://dev--m2m-cleaning-manager-front.netlify.app\",\n users: \"https://dev--manage-users.netlify.app\",\n inspection: \"https://dev--m2m-inspection-manager-front.netlify.app\",\n checkin: \"https://manage.dev.checkin.m2msystems.cloud\",\n systems: \"https://dev.m2msystems.cloud\",\n };\n};\n"],"mappings":"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","names":["import_decorators","import_lit","import_ref"]}
|
|
1
|
+
{"version":3,"sources":["../src/m2m-apps-menu.ts","../src/MenuBaseElement.ts","../src/domains.ts"],"sourcesContent":["import { MenuBaseElement, MenuBaseElementProps } from \"./MenuBaseElement\";\nimport { customElement } from \"lit/decorators.js\";\nimport { html } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\nimport { useDomains } from \"./domains\";\n\nexport type M2MAppsMenuProps = MenuBaseElementProps;\n\n@customElement(\"m2m-apps-menu\")\nexport class M2MAppsMenu extends MenuBaseElement {\n render() {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const domains = useDomains();\n const additionalItems = this.additinalItems?.map((item) => {\n return html`\n <li>\n <a href=\"${item.href}\">${item.label}</a>\n </li>\n `;\n });\n const isHidden = this.expanded === false || this.expanded === undefined;\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=\"38px\"\n height=\"38px\"\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=${isHidden}\n class=\"navigation-drawer\"\n >\n <li>\n <span>m2m Series</span>\n <ul>\n <li><a href=\"${domains.core}\">Core 施設管理</a></li>\n <li><a href=\"${domains.checkin}\">Checkin ゲストチェックイン</a></li>\n <li><a href=\"${domains.systems}\">Systems Airbnb連携</a></li>\n <li><a href=\"${domains.cleaning}\">Cleaning 清掃管理</a></li>\n <li><a href=\"${domains.inspection}\">Inspection 内見チェック</a></li>\n <li><a href=\"${domains.users}\">Users アカウント管理</a></li>\n </ul>\n </li>\n <li>\n <a href=\"${domains.sumyca}\">Sumyca マンスリープラットフォーム</a>\n </li>\n ${additionalItems}\n </ul>\n </nav>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"m2m-apps-menu\": M2MAppsMenu;\n }\n}\n","import { LitElement, css } from \"lit\";\nimport { Ref, createRef } from \"lit/directives/ref.js\";\nimport { property } from \"lit/decorators.js\";\n\nexport interface MenuAdditionalItem {\n label: string;\n href: string;\n}\n\nexport interface MenuBaseElementProps {\n expanded: boolean;\n additinalItems: MenuAdditionalItem[];\n}\n\nexport class MenuBaseElement extends LitElement {\n static styles = css`\n nav {\n position: relative;\n display: flex;\n }\n .navigation-drawer-controll-button {\n display: flex;\n align-items: center;\n justify-content: center;\n\n height: 42px;\n padding: 0;\n cursor: pointer;\n background-color: transparent;\n border: none;\n transition: background-color 0.2s;\n appearance: none;\n }\n .navigation-drawer-controll-button.navigation-drawer-controll-button--icon {\n width: 42px;\n }\n .navigation-drawer-controll-button:hover {\n background-color: rgba(0, 0, 0, 0.05);\n }\n .navigation-drawer-controll-button:active {\n background-color: rgba(0, 0, 0, 0.075);\n }\n\n .navigation-drawer {\n position: absolute;\n top: 100%;\n right: 0px;\n z-index: 1100;\n box-sizing: border-box;\n min-width: 200px;\n padding: 0px;\n margin: 0px;\n overflow: hidden;\n color: rgba(0, 0, 0, 0.87);\n white-space: nowrap;\n list-style: none;\n background-color: #fff;\n border-radius: 5px;\n box-shadow:\n 0px 1px 3px 0px rgb(0 0 0 / 20%),\n 0px 1px 1px 0px rgb(0 0 0 / 14%),\n 0px 2px 1px -1px rgb(0 0 0 / 12%);\n }\n .navigation-drawer-controll-button[aria-expanded=\"false\"]\n ~ .navigation-drawer {\n display: none;\n }\n\n .navigation-drawer li {\n border-bottom: 1px solid #eeeeee;\n }\n .navigation-drawer li:last-of-type {\n border-bottom: none;\n }\n .navigation-drawer li > a,\n .navigation-drawer li > button {\n box-sizing: border-box;\n display: block;\n width: 100%;\n padding: 0;\n padding: 0.6em 1em;\n font: inherit;\n color: inherit;\n text-align: left;\n text-decoration: none;\n cursor: pointer;\n cursor: pointer;\n background-color: transparent;\n border: none;\n transition: 0.2s;\n appearance: none;\n }\n .navigation-drawer li > a:hover,\n .navigation-drawer li > button:hover {\n background-color: #ededed;\n }\n .navigation-drawer li > a:active,\n .navigation-drawer li > button:active {\n background-color: #dadada;\n }\n\n .navigation-drawer li ul {\n padding: 0;\n list-style: none;\n }\n .navigation-drawer li:has(> ul) li > a {\n padding-left: 2em;\n }\n\n .navigation-drawer li:has(> ul) > span {\n display: block;\n padding: 0.6em 1em;\n border-bottom: 1px solid #eeeeee;\n }\n `;\n\n handleClickOutside = (event: MouseEvent | TouchEvent) => {\n if (\n !this.listRef.value ||\n this.listRef.value.contains(event.composedPath()[0] as Node)\n ) {\n return;\n }\n this.expanded = false;\n };\n\n @property({\n type: Object,\n attribute: \"additional-items\",\n })\n additinalItems: MenuBaseElementProps[\"additinalItems\"] = [];\n\n @property()\n expanded?: boolean = false;\n\n handleToggleDrawer = (event: Event) => {\n event.preventDefault();\n event.stopPropagation();\n\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n this.expanded = !this.expanded;\n if (this.expanded) {\n window.addEventListener(\"click\", this.handleClickOutside, false);\n }\n };\n\n protected updated() {\n if (this.expanded === false) {\n window.removeEventListener(\"click\", this.handleClickOutside, false);\n }\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n window.removeEventListener(\"click\", this.handleClickOutside, false);\n }\n\n listRef: Ref = createRef();\n}\n","export const useDomains = () => {\n return globalThis.M2M_COMPONENTS_ENV === \"production\"\n ? {\n core: \"https://core.m2msystems.cloud\",\n sumyca: \"https://manage.sumyca.com\",\n cleaning: \"https://manager-cleaning.m2msystems.cloud\",\n users: \"https://manage-users.m2msystems.cloud\",\n inspection: \"https://inspection.m2msystems.cloud\",\n checkin: \"https://manage.checkin.m2msystems.cloud\",\n systems: \"https://m2msystems.cloud/\",\n }\n : {\n core: \"https://dev--m2m-core-manager-front.netlify.app\",\n sumyca: \"https://dev--sumyca-manager-front.netlify.app\",\n cleaning: \"https://dev--m2m-cleaning-manager-front.netlify.app\",\n users: \"https://dev--manage-users.netlify.app\",\n inspection: \"https://dev--m2m-inspection-manager-front.netlify.app\",\n checkin: \"https://manage.dev.checkin.m2msystems.cloud\",\n systems: \"https://dev.m2msystems.cloud\",\n };\n};\n"],"mappings":"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","names":["import_decorators","import_lit","import_ref"]}
|
package/m2m-apps-menu.mjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
import {
|
|
3
3
|
M2MAppsMenu
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-IUVQPLD7.mjs";
|
|
5
5
|
import "./chunk-HI2D4CLX.mjs";
|
|
6
|
-
import "./chunk-
|
|
6
|
+
import "./chunk-27HPP73N.mjs";
|
|
7
7
|
import "./chunk-QH5I6YL2.mjs";
|
|
8
8
|
export {
|
|
9
9
|
M2MAppsMenu
|
package/m2m-user-menu.js
CHANGED
|
@@ -180,29 +180,6 @@ __decorateClass([
|
|
|
180
180
|
|
|
181
181
|
// src/m2m-user-menu.ts
|
|
182
182
|
var import_decorators2 = require("lit/decorators.js");
|
|
183
|
-
|
|
184
|
-
// src/domains.ts
|
|
185
|
-
var getDomains = () => {
|
|
186
|
-
return globalThis.M2M_COMPONENTS_ENV === "production" ? {
|
|
187
|
-
core: "https://core.m2msystems.cloud",
|
|
188
|
-
sumyca: "https://manage.sumyca.com",
|
|
189
|
-
cleaning: "https://manager-cleaning.m2msystems.cloud",
|
|
190
|
-
users: "https://manage-users.m2msystems.cloud",
|
|
191
|
-
inspection: "https://inspection.m2msystems.cloud",
|
|
192
|
-
checkin: "https://manage.checkin.m2msystems.cloud",
|
|
193
|
-
systems: "https://m2msystems.cloud/"
|
|
194
|
-
} : {
|
|
195
|
-
core: "https://dev--m2m-core-manager-front.netlify.app",
|
|
196
|
-
sumyca: "https://dev--sumyca-manager-front.netlify.app",
|
|
197
|
-
cleaning: "https://dev--m2m-cleaning-manager-front.netlify.app",
|
|
198
|
-
users: "https://dev--manage-users.netlify.app",
|
|
199
|
-
inspection: "https://dev--m2m-inspection-manager-front.netlify.app",
|
|
200
|
-
checkin: "https://manage.dev.checkin.m2msystems.cloud",
|
|
201
|
-
systems: "https://dev.m2msystems.cloud"
|
|
202
|
-
};
|
|
203
|
-
};
|
|
204
|
-
|
|
205
|
-
// src/m2m-user-menu.ts
|
|
206
183
|
var import_lit2 = require("lit");
|
|
207
184
|
|
|
208
185
|
// src/storage/client.ts
|
|
@@ -273,6 +250,29 @@ var m2mAuthTokenApi = {
|
|
|
273
250
|
|
|
274
251
|
// src/m2m-user-menu.ts
|
|
275
252
|
var import_ref2 = require("lit/directives/ref.js");
|
|
253
|
+
|
|
254
|
+
// src/domains.ts
|
|
255
|
+
var useDomains = () => {
|
|
256
|
+
return globalThis.M2M_COMPONENTS_ENV === "production" ? {
|
|
257
|
+
core: "https://core.m2msystems.cloud",
|
|
258
|
+
sumyca: "https://manage.sumyca.com",
|
|
259
|
+
cleaning: "https://manager-cleaning.m2msystems.cloud",
|
|
260
|
+
users: "https://manage-users.m2msystems.cloud",
|
|
261
|
+
inspection: "https://inspection.m2msystems.cloud",
|
|
262
|
+
checkin: "https://manage.checkin.m2msystems.cloud",
|
|
263
|
+
systems: "https://m2msystems.cloud/"
|
|
264
|
+
} : {
|
|
265
|
+
core: "https://dev--m2m-core-manager-front.netlify.app",
|
|
266
|
+
sumyca: "https://dev--sumyca-manager-front.netlify.app",
|
|
267
|
+
cleaning: "https://dev--m2m-cleaning-manager-front.netlify.app",
|
|
268
|
+
users: "https://dev--manage-users.netlify.app",
|
|
269
|
+
inspection: "https://dev--m2m-inspection-manager-front.netlify.app",
|
|
270
|
+
checkin: "https://manage.dev.checkin.m2msystems.cloud",
|
|
271
|
+
systems: "https://dev.m2msystems.cloud"
|
|
272
|
+
};
|
|
273
|
+
};
|
|
274
|
+
|
|
275
|
+
// src/m2m-user-menu.ts
|
|
276
276
|
var M2MUserMenu = class extends MenuBaseElement {
|
|
277
277
|
constructor() {
|
|
278
278
|
super(...arguments);
|
|
@@ -283,7 +283,7 @@ var M2MUserMenu = class extends MenuBaseElement {
|
|
|
283
283
|
}
|
|
284
284
|
render() {
|
|
285
285
|
var _a;
|
|
286
|
-
const domains =
|
|
286
|
+
const domains = useDomains();
|
|
287
287
|
const additionalItems = (_a = this.additinalItems) == null ? void 0 : _a.map((item) => {
|
|
288
288
|
return import_lit2.html`
|
|
289
289
|
<li>
|
package/m2m-user-menu.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/m2m-user-menu.ts","../src/MenuBaseElement.ts","../src/domains.ts","../src/storage/client.ts"],"sourcesContent":["import { MenuBaseElement, MenuBaseElementProps } from \"./MenuBaseElement\";\nimport { customElement } from \"lit/decorators.js\";\nimport { getDomains } from \"./domains\";\nimport { html } from \"lit\";\nimport { m2mAuthTokenApi } from \"./storage/client\";\nimport { ref } from \"lit/directives/ref.js\";\n\nexport type M2MUserMenuProps = MenuBaseElementProps;\n\n@customElement(\"m2m-user-menu\")\nexport class M2MUserMenu extends MenuBaseElement {\n handleLogout = () => {\n void m2mAuthTokenApi.clear();\n window.location.reload();\n };\n\n render() {\n const domains = getDomains();\n const additionalItems = this.additinalItems?.map((item) => {\n return html`\n <li>\n <a href=\"${item.href}\">${item.label}</a>\n </li>\n `;\n });\n const isHidden = this.expanded === false || this.expanded === undefined;\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=\"38px\" height=\"38px\" 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=${isHidden}\n class=\"navigation-drawer\"\n >\n <li><a href=\"${domains.users}\">アカウント情報</a></li>\n <li @click=${this.handleLogout}>\n <button type=\"button\">ログアウト</button>\n </li>\n ${additionalItems}\n </ul>\n </nav>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"m2m-user-menu\": M2MUserMenu;\n }\n}\n","import { LitElement, css } from \"lit\";\nimport { Ref, createRef } from \"lit/directives/ref.js\";\nimport { property } from \"lit/decorators.js\";\n\nexport interface MenuAdditionalItem {\n label: string;\n href: string;\n}\n\nexport interface MenuBaseElementProps {\n expanded: boolean;\n additinalItems: MenuAdditionalItem[];\n}\n\nexport class MenuBaseElement extends LitElement {\n static styles = css`\n nav {\n position: relative;\n display: flex;\n }\n .navigation-drawer-controll-button {\n display: flex;\n align-items: center;\n justify-content: center;\n\n height: 42px;\n padding: 0;\n cursor: pointer;\n background-color: transparent;\n border: none;\n transition: background-color 0.2s;\n appearance: none;\n }\n .navigation-drawer-controll-button.navigation-drawer-controll-button--icon {\n width: 42px;\n }\n .navigation-drawer-controll-button:hover {\n background-color: rgba(0, 0, 0, 0.05);\n }\n .navigation-drawer-controll-button:active {\n background-color: rgba(0, 0, 0, 0.075);\n }\n\n .navigation-drawer {\n position: absolute;\n top: 100%;\n right: 0px;\n z-index: 1100;\n box-sizing: border-box;\n min-width: 200px;\n padding: 0px;\n margin: 0px;\n overflow: hidden;\n color: rgba(0, 0, 0, 0.87);\n white-space: nowrap;\n list-style: none;\n background-color: #fff;\n border-radius: 5px;\n box-shadow:\n 0px 1px 3px 0px rgb(0 0 0 / 20%),\n 0px 1px 1px 0px rgb(0 0 0 / 14%),\n 0px 2px 1px -1px rgb(0 0 0 / 12%);\n }\n .navigation-drawer-controll-button[aria-expanded=\"false\"]\n ~ .navigation-drawer {\n display: none;\n }\n\n .navigation-drawer li {\n border-bottom: 1px solid #eeeeee;\n }\n .navigation-drawer li:last-of-type {\n border-bottom: none;\n }\n .navigation-drawer li > a,\n .navigation-drawer li > button {\n box-sizing: border-box;\n display: block;\n width: 100%;\n padding: 0;\n padding: 0.6em 1em;\n font: inherit;\n color: inherit;\n text-align: left;\n text-decoration: none;\n cursor: pointer;\n cursor: pointer;\n background-color: transparent;\n border: none;\n transition: 0.2s;\n appearance: none;\n }\n .navigation-drawer li > a:hover,\n .navigation-drawer li > button:hover {\n background-color: #ededed;\n }\n .navigation-drawer li > a:active,\n .navigation-drawer li > button:active {\n background-color: #dadada;\n }\n\n .navigation-drawer li ul {\n padding: 0;\n list-style: none;\n }\n .navigation-drawer li:has(> ul) li > a {\n padding-left: 2em;\n }\n\n .navigation-drawer li:has(> ul) > span {\n display: block;\n padding: 0.6em 1em;\n border-bottom: 1px solid #eeeeee;\n }\n `;\n\n handleClickOutside = (event: MouseEvent | TouchEvent) => {\n if (\n !this.listRef.value ||\n this.listRef.value.contains(event.composedPath()[0] as Node)\n ) {\n return;\n }\n this.expanded = false;\n };\n\n @property({\n type: Object,\n attribute: \"additional-items\",\n })\n additinalItems: MenuBaseElementProps[\"additinalItems\"] = [];\n\n @property()\n expanded?: boolean = false;\n\n handleToggleDrawer = (event: Event) => {\n event.preventDefault();\n event.stopPropagation();\n\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n this.expanded = !this.expanded;\n if (this.expanded) {\n window.addEventListener(\"click\", this.handleClickOutside, false);\n }\n };\n\n protected updated() {\n if (this.expanded === false) {\n window.removeEventListener(\"click\", this.handleClickOutside, false);\n }\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n window.removeEventListener(\"click\", this.handleClickOutside, false);\n }\n\n listRef: Ref = createRef();\n}\n","export const getDomains = () => {\n return globalThis.M2M_COMPONENTS_ENV === \"production\"\n ? {\n core: \"https://core.m2msystems.cloud\",\n sumyca: \"https://manage.sumyca.com\",\n cleaning: \"https://manager-cleaning.m2msystems.cloud\",\n users: \"https://manage-users.m2msystems.cloud\",\n inspection: \"https://inspection.m2msystems.cloud\",\n checkin: \"https://manage.checkin.m2msystems.cloud\",\n systems: \"https://m2msystems.cloud/\",\n }\n : {\n core: \"https://dev--m2m-core-manager-front.netlify.app\",\n sumyca: \"https://dev--sumyca-manager-front.netlify.app\",\n cleaning: \"https://dev--m2m-cleaning-manager-front.netlify.app\",\n users: \"https://dev--manage-users.netlify.app\",\n inspection: \"https://dev--m2m-inspection-manager-front.netlify.app\",\n checkin: \"https://manage.dev.checkin.m2msystems.cloud\",\n systems: \"https://dev.m2msystems.cloud\",\n };\n};\n","import { StorageClient } from \"./lib/client\";\n\nclass M2mStorageClient extends StorageClient {}\n\nexport type { M2mStorageClient };\n\n/**\n * Get the connected storage client.\n * @param timeout\n * @default 5000\n */\nconst getStorage = async (timeout = 5000) => {\n const storage = await new Promise<M2mStorageClient>((resolve, reject) => {\n const rejectTimer = globalThis.setTimeout(function () {\n reject(\n new Error(\n \"Timeout: M2mStorageClient could not connect. Please call m2mStorageClient.init() before using m2mStorageClient.\",\n ),\n );\n }, timeout);\n\n const storage = globalThis.M2M_STORAGE;\n if (storage) {\n globalThis.clearTimeout(rejectTimer);\n resolve(storage);\n }\n\n const timer = globalThis.setInterval(() => {\n const storage = globalThis.M2M_STORAGE;\n if (storage) {\n globalThis.clearTimeout(rejectTimer);\n globalThis.clearInterval(timer);\n resolve(storage);\n }\n }, 200);\n });\n\n await storage.onConnect();\n\n return storage;\n};\n\nconst M2M_STORAGE_HUB_URL = \"https://hub.m2msystems.cloud/\";\n\nconst M2M_STORAGE_HUB_URL_DEV =\n \"https://m2m-components-storage-hub-dev.netlify.app/\";\n\nconst initStorageClient = (options?: {\n env?: \"development\" | \"production\";\n}) => {\n if (globalThis.M2M_STORAGE) {\n throw new Error(\n \"M2mStorageClient already initialized. Do not call m2mStorageClient.init multiple times.\",\n );\n }\n const storage = new M2mStorageClient(\n options?.env === \"production\"\n ? M2M_STORAGE_HUB_URL\n : M2M_STORAGE_HUB_URL_DEV,\n );\n globalThis.M2M_STORAGE = storage;\n};\n\nexport const m2mStorageClient = {\n init: initStorageClient,\n getStorage: getStorage,\n};\n\nexport const M2M_AUTH_TOKEN_KEY = \"M2M_APP_AUTH_TOKEN\";\n\nconst getAuthTokenCache = () => {\n return globalThis.localStorage.getItem(M2M_AUTH_TOKEN_KEY);\n};\n\nconst getAuthToken = async () => {\n try {\n const storage = await getStorage();\n const autuToken = (await storage.get(M2M_AUTH_TOKEN_KEY)) as string;\n return autuToken || getAuthTokenCache();\n } catch (error) {\n console.warn(error);\n return getAuthTokenCache();\n }\n};\n\nconst setAuthToken = async (token: string) => {\n globalThis.localStorage.setItem(M2M_AUTH_TOKEN_KEY, token);\n try {\n const storage = await getStorage();\n await storage.set(M2M_AUTH_TOKEN_KEY, token);\n } catch (error) {\n console.warn(error);\n }\n};\n\nconst clearAuthToken = async () => {\n globalThis.localStorage.removeItem(M2M_AUTH_TOKEN_KEY);\n try {\n const storage = await getStorage();\n await storage.del(M2M_AUTH_TOKEN_KEY);\n } catch (error) {\n console.warn(error);\n }\n};\n\nexport const m2mAuthTokenApi = {\n get: getAuthToken,\n getCache: getAuthTokenCache,\n set: setAuthToken,\n clear: clearAuthToken,\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,iBAAgC;AAChC,iBAA+B;AAC/B,wBAAyB;AAYlB,IAAM,kBAAN,cAA8B,sBAAW;AAAA,EAAzC;AAAA;AAsGL,8BAAqB,CAAC,UAAmC;AACvD,UACE,CAAC,KAAK,QAAQ,SACd,KAAK,QAAQ,MAAM,SAAS,MAAM,aAAa,EAAE,CAAC,CAAS,GAC3D;AACA;AAAA,MACF;AACA,WAAK,WAAW;AAAA,IAClB;AAMA,0BAAyD,CAAC;AAG1D,oBAAqB;AAErB,8BAAqB,CAAC,UAAiB;AACrC,YAAM,eAAe;AACrB,YAAM,gBAAgB;AAGtB,WAAK,WAAW,CAAC,KAAK;AACtB,UAAI,KAAK,UAAU;AACjB,eAAO,iBAAiB,SAAS,KAAK,oBAAoB,KAAK;AAAA,MACjE;AAAA,IACF;AAaA,uBAAe,sBAAU;AAAA;AAAA,EAXf,UAAU;AAClB,QAAI,KAAK,aAAa,OAAO;AAC3B,aAAO,oBAAoB,SAAS,KAAK,oBAAoB,KAAK;AAAA,IACpE;AAAA,EACF;AAAA,EAEA,uBAA6B;AAC3B,UAAM,qBAAqB;AAC3B,WAAO,oBAAoB,SAAS,KAAK,oBAAoB,KAAK;AAAA,EACpE;AAGF;AAhJa,gBACJ,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAmHhB;AAAA,MAJC,4BAAS;AAAA,IACR,MAAM;AAAA,IACN,WAAW;AAAA,EACb,CAAC;AAAA,GAnHU,gBAoHX;AAGA;AAAA,MADC,4BAAS;AAAA,GAtHC,gBAuHX;;;ADpIF,IAAAA,qBAA8B;;;AEDvB,IAAM,aAAa,MAAM;AAC9B,SAAO,WAAW,uBAAuB,eACrC;AAAA,IACE,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,SAAS;AAAA,EACX,IACA;AAAA,IACE,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,SAAS;AAAA,EACX;AACN;;;AFjBA,IAAAC,cAAqB;;;AGQrB,IAAM,aAAa,OAAO,UAAU,QAAS;AAC3C,QAAM,UAAU,MAAM,IAAI,QAA0B,CAAC,SAAS,WAAW;AACvE,UAAM,cAAc,WAAW,WAAW,WAAY;AACpD;AAAA,QACE,IAAI;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF,GAAG,OAAO;AAEV,UAAMC,WAAU,WAAW;AAC3B,QAAIA,UAAS;AACX,iBAAW,aAAa,WAAW;AACnC,cAAQA,QAAO;AAAA,IACjB;AAEA,UAAM,QAAQ,WAAW,YAAY,MAAM;AACzC,YAAMA,WAAU,WAAW;AAC3B,UAAIA,UAAS;AACX,mBAAW,aAAa,WAAW;AACnC,mBAAW,cAAc,KAAK;AAC9B,gBAAQA,QAAO;AAAA,MACjB;AAAA,IACF,GAAG,GAAG;AAAA,EACR,CAAC;AAED,QAAM,QAAQ,UAAU;AAExB,SAAO;AACT;AA4BO,IAAM,qBAAqB;AAElC,IAAM,oBAAoB,MAAM;AAC9B,SAAO,WAAW,aAAa,QAAQ,kBAAkB;AAC3D;AAEA,IAAM,eAAe,YAAY;AAC/B,MAAI;AACF,UAAM,UAAU,MAAM,WAAW;AACjC,UAAM,YAAa,MAAM,QAAQ,IAAI,kBAAkB;AACvD,WAAO,aAAa,kBAAkB;AAAA,EACxC,SAAS,OAAO;AACd,YAAQ,KAAK,KAAK;AAClB,WAAO,kBAAkB;AAAA,EAC3B;AACF;AAEA,IAAM,eAAe,OAAO,UAAkB;AAC5C,aAAW,aAAa,QAAQ,oBAAoB,KAAK;AACzD,MAAI;AACF,UAAM,UAAU,MAAM,WAAW;AACjC,UAAM,QAAQ,IAAI,oBAAoB,KAAK;AAAA,EAC7C,SAAS,OAAO;AACd,YAAQ,KAAK,KAAK;AAAA,EACpB;AACF;AAEA,IAAM,iBAAiB,YAAY;AACjC,aAAW,aAAa,WAAW,kBAAkB;AACrD,MAAI;AACF,UAAM,UAAU,MAAM,WAAW;AACjC,UAAM,QAAQ,IAAI,kBAAkB;AAAA,EACtC,SAAS,OAAO;AACd,YAAQ,KAAK,KAAK;AAAA,EACpB;AACF;AAEO,IAAM,kBAAkB;AAAA,EAC7B,KAAK;AAAA,EACL,UAAU;AAAA,EACV,KAAK;AAAA,EACL,OAAO;AACT;;;AHzGA,IAAAC,cAAoB;AAKb,IAAM,cAAN,cAA0B,gBAAgB;AAAA,EAA1C;AAAA;AACL,wBAAe,MAAM;AACnB,WAAK,gBAAgB,MAAM;AAC3B,aAAO,SAAS,OAAO;AAAA,IACzB;AAAA;AAAA,EAEA,SAAS;AAhBX;AAiBI,UAAM,UAAU,WAAW;AAC3B,UAAM,mBAAkB,UAAK,mBAAL,mBAAqB,IAAI,CAAC,SAAS;AACzD,aAAO;AAAA;AAAA,qBAEQ,KAAK,IAAI,KAAK,KAAK,KAAK;AAAA;AAAA;AAAA,IAGzC;AACA,UAAM,WAAW,KAAK,aAAa,SAAS,KAAK,aAAa;AAC9D,WAAO;AAAA;AAAA;AAAA;AAAA;AAAA,wBAKa,KAAK,QAAQ;AAAA,iBACpB,KAAK,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAU9B,iBAAI,KAAK,OAAO,CAAC;AAAA;AAAA,sBAEL,QAAQ;AAAA;AAAA;AAAA,uBAGP,QAAQ,KAAK;AAAA,qBACf,KAAK,YAAY;AAAA;AAAA;AAAA,UAG5B,eAAe;AAAA;AAAA;AAAA,EAGvB;AACF;AA7Ca,cAAN;AAAA,MADN,kCAAc,eAAe;AAAA,GACjB;","names":["import_decorators","import_lit","storage","import_ref"]}
|
|
1
|
+
{"version":3,"sources":["../src/m2m-user-menu.ts","../src/MenuBaseElement.ts","../src/storage/client.ts","../src/domains.ts"],"sourcesContent":["import { MenuBaseElement, MenuBaseElementProps } from \"./MenuBaseElement\";\nimport { customElement } from \"lit/decorators.js\";\nimport { html } from \"lit\";\nimport { m2mAuthTokenApi } from \"./storage/client\";\nimport { ref } from \"lit/directives/ref.js\";\nimport { useDomains } from \"./domains\";\n\nexport type M2MUserMenuProps = MenuBaseElementProps;\n\n@customElement(\"m2m-user-menu\")\nexport class M2MUserMenu extends MenuBaseElement {\n handleLogout = () => {\n void m2mAuthTokenApi.clear();\n window.location.reload();\n };\n\n render() {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const domains = useDomains();\n const additionalItems = this.additinalItems?.map((item) => {\n return html`\n <li>\n <a href=\"${item.href}\">${item.label}</a>\n </li>\n `;\n });\n const isHidden = this.expanded === false || this.expanded === undefined;\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=\"38px\" height=\"38px\" 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=${isHidden}\n class=\"navigation-drawer\"\n >\n <li><a href=\"${domains.users}\">アカウント情報</a></li>\n <li @click=${this.handleLogout}>\n <button type=\"button\">ログアウト</button>\n </li>\n ${additionalItems}\n </ul>\n </nav>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"m2m-user-menu\": M2MUserMenu;\n }\n}\n","import { LitElement, css } from \"lit\";\nimport { Ref, createRef } from \"lit/directives/ref.js\";\nimport { property } from \"lit/decorators.js\";\n\nexport interface MenuAdditionalItem {\n label: string;\n href: string;\n}\n\nexport interface MenuBaseElementProps {\n expanded: boolean;\n additinalItems: MenuAdditionalItem[];\n}\n\nexport class MenuBaseElement extends LitElement {\n static styles = css`\n nav {\n position: relative;\n display: flex;\n }\n .navigation-drawer-controll-button {\n display: flex;\n align-items: center;\n justify-content: center;\n\n height: 42px;\n padding: 0;\n cursor: pointer;\n background-color: transparent;\n border: none;\n transition: background-color 0.2s;\n appearance: none;\n }\n .navigation-drawer-controll-button.navigation-drawer-controll-button--icon {\n width: 42px;\n }\n .navigation-drawer-controll-button:hover {\n background-color: rgba(0, 0, 0, 0.05);\n }\n .navigation-drawer-controll-button:active {\n background-color: rgba(0, 0, 0, 0.075);\n }\n\n .navigation-drawer {\n position: absolute;\n top: 100%;\n right: 0px;\n z-index: 1100;\n box-sizing: border-box;\n min-width: 200px;\n padding: 0px;\n margin: 0px;\n overflow: hidden;\n color: rgba(0, 0, 0, 0.87);\n white-space: nowrap;\n list-style: none;\n background-color: #fff;\n border-radius: 5px;\n box-shadow:\n 0px 1px 3px 0px rgb(0 0 0 / 20%),\n 0px 1px 1px 0px rgb(0 0 0 / 14%),\n 0px 2px 1px -1px rgb(0 0 0 / 12%);\n }\n .navigation-drawer-controll-button[aria-expanded=\"false\"]\n ~ .navigation-drawer {\n display: none;\n }\n\n .navigation-drawer li {\n border-bottom: 1px solid #eeeeee;\n }\n .navigation-drawer li:last-of-type {\n border-bottom: none;\n }\n .navigation-drawer li > a,\n .navigation-drawer li > button {\n box-sizing: border-box;\n display: block;\n width: 100%;\n padding: 0;\n padding: 0.6em 1em;\n font: inherit;\n color: inherit;\n text-align: left;\n text-decoration: none;\n cursor: pointer;\n cursor: pointer;\n background-color: transparent;\n border: none;\n transition: 0.2s;\n appearance: none;\n }\n .navigation-drawer li > a:hover,\n .navigation-drawer li > button:hover {\n background-color: #ededed;\n }\n .navigation-drawer li > a:active,\n .navigation-drawer li > button:active {\n background-color: #dadada;\n }\n\n .navigation-drawer li ul {\n padding: 0;\n list-style: none;\n }\n .navigation-drawer li:has(> ul) li > a {\n padding-left: 2em;\n }\n\n .navigation-drawer li:has(> ul) > span {\n display: block;\n padding: 0.6em 1em;\n border-bottom: 1px solid #eeeeee;\n }\n `;\n\n handleClickOutside = (event: MouseEvent | TouchEvent) => {\n if (\n !this.listRef.value ||\n this.listRef.value.contains(event.composedPath()[0] as Node)\n ) {\n return;\n }\n this.expanded = false;\n };\n\n @property({\n type: Object,\n attribute: \"additional-items\",\n })\n additinalItems: MenuBaseElementProps[\"additinalItems\"] = [];\n\n @property()\n expanded?: boolean = false;\n\n handleToggleDrawer = (event: Event) => {\n event.preventDefault();\n event.stopPropagation();\n\n // eslint-disable-next-line @typescript-eslint/strict-boolean-expressions\n this.expanded = !this.expanded;\n if (this.expanded) {\n window.addEventListener(\"click\", this.handleClickOutside, false);\n }\n };\n\n protected updated() {\n if (this.expanded === false) {\n window.removeEventListener(\"click\", this.handleClickOutside, false);\n }\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n window.removeEventListener(\"click\", this.handleClickOutside, false);\n }\n\n listRef: Ref = createRef();\n}\n","import { StorageClient } from \"./lib/client\";\n\nclass M2mStorageClient extends StorageClient {}\n\nexport type { M2mStorageClient };\n\n/**\n * Get the connected storage client.\n * @param timeout\n * @default 5000\n */\nconst getStorage = async (timeout = 5000) => {\n const storage = await new Promise<M2mStorageClient>((resolve, reject) => {\n const rejectTimer = globalThis.setTimeout(function () {\n reject(\n new Error(\n \"Timeout: M2mStorageClient could not connect. Please call m2mStorageClient.init() before using m2mStorageClient.\",\n ),\n );\n }, timeout);\n\n const storage = globalThis.M2M_STORAGE;\n if (storage) {\n globalThis.clearTimeout(rejectTimer);\n resolve(storage);\n }\n\n const timer = globalThis.setInterval(() => {\n const storage = globalThis.M2M_STORAGE;\n if (storage) {\n globalThis.clearTimeout(rejectTimer);\n globalThis.clearInterval(timer);\n resolve(storage);\n }\n }, 200);\n });\n\n await storage.onConnect();\n\n return storage;\n};\n\nconst M2M_STORAGE_HUB_URL = \"https://hub.m2msystems.cloud/\";\n\nconst M2M_STORAGE_HUB_URL_DEV =\n \"https://m2m-components-storage-hub-dev.netlify.app/\";\n\nconst initStorageClient = (options?: {\n env?: \"development\" | \"production\";\n}) => {\n if (globalThis.M2M_STORAGE) {\n throw new Error(\n \"M2mStorageClient already initialized. Do not call m2mStorageClient.init multiple times.\",\n );\n }\n const storage = new M2mStorageClient(\n options?.env === \"production\"\n ? M2M_STORAGE_HUB_URL\n : M2M_STORAGE_HUB_URL_DEV,\n );\n globalThis.M2M_STORAGE = storage;\n};\n\nexport const m2mStorageClient = {\n init: initStorageClient,\n getStorage: getStorage,\n};\n\nexport const M2M_AUTH_TOKEN_KEY = \"M2M_APP_AUTH_TOKEN\";\n\nconst getAuthTokenCache = () => {\n return globalThis.localStorage.getItem(M2M_AUTH_TOKEN_KEY);\n};\n\nconst getAuthToken = async () => {\n try {\n const storage = await getStorage();\n const autuToken = (await storage.get(M2M_AUTH_TOKEN_KEY)) as string;\n return autuToken || getAuthTokenCache();\n } catch (error) {\n console.warn(error);\n return getAuthTokenCache();\n }\n};\n\nconst setAuthToken = async (token: string) => {\n globalThis.localStorage.setItem(M2M_AUTH_TOKEN_KEY, token);\n try {\n const storage = await getStorage();\n await storage.set(M2M_AUTH_TOKEN_KEY, token);\n } catch (error) {\n console.warn(error);\n }\n};\n\nconst clearAuthToken = async () => {\n globalThis.localStorage.removeItem(M2M_AUTH_TOKEN_KEY);\n try {\n const storage = await getStorage();\n await storage.del(M2M_AUTH_TOKEN_KEY);\n } catch (error) {\n console.warn(error);\n }\n};\n\nexport const m2mAuthTokenApi = {\n get: getAuthToken,\n getCache: getAuthTokenCache,\n set: setAuthToken,\n clear: clearAuthToken,\n};\n","export const useDomains = () => {\n return globalThis.M2M_COMPONENTS_ENV === \"production\"\n ? {\n core: \"https://core.m2msystems.cloud\",\n sumyca: \"https://manage.sumyca.com\",\n cleaning: \"https://manager-cleaning.m2msystems.cloud\",\n users: \"https://manage-users.m2msystems.cloud\",\n inspection: \"https://inspection.m2msystems.cloud\",\n checkin: \"https://manage.checkin.m2msystems.cloud\",\n systems: \"https://m2msystems.cloud/\",\n }\n : {\n core: \"https://dev--m2m-core-manager-front.netlify.app\",\n sumyca: \"https://dev--sumyca-manager-front.netlify.app\",\n cleaning: \"https://dev--m2m-cleaning-manager-front.netlify.app\",\n users: \"https://dev--manage-users.netlify.app\",\n inspection: \"https://dev--m2m-inspection-manager-front.netlify.app\",\n checkin: \"https://manage.dev.checkin.m2msystems.cloud\",\n systems: \"https://dev.m2msystems.cloud\",\n };\n};\n"],"mappings":"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","names":["import_decorators","import_lit","storage","import_ref"]}
|
package/m2m-user-menu.mjs
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use client'
|
|
2
2
|
import {
|
|
3
3
|
M2MUserMenu
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-KHXCCRGE.mjs";
|
|
5
5
|
import "./chunk-5DZIFMOT.mjs";
|
|
6
6
|
import "./chunk-PB3E5UQP.mjs";
|
|
7
7
|
import "./chunk-HI2D4CLX.mjs";
|
|
8
|
-
import "./chunk-
|
|
8
|
+
import "./chunk-27HPP73N.mjs";
|
|
9
9
|
import "./chunk-QH5I6YL2.mjs";
|
|
10
10
|
export {
|
|
11
11
|
M2MUserMenu
|
package/package.json
CHANGED
package/chunk-SF2L3P2H.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/m2m-user-menu.ts"],"sourcesContent":["import { MenuBaseElement, MenuBaseElementProps } from \"./MenuBaseElement\";\nimport { customElement } from \"lit/decorators.js\";\nimport { getDomains } from \"./domains\";\nimport { html } from \"lit\";\nimport { m2mAuthTokenApi } from \"./storage/client\";\nimport { ref } from \"lit/directives/ref.js\";\n\nexport type M2MUserMenuProps = MenuBaseElementProps;\n\n@customElement(\"m2m-user-menu\")\nexport class M2MUserMenu extends MenuBaseElement {\n handleLogout = () => {\n void m2mAuthTokenApi.clear();\n window.location.reload();\n };\n\n render() {\n const domains = getDomains();\n const additionalItems = this.additinalItems?.map((item) => {\n return html`\n <li>\n <a href=\"${item.href}\">${item.label}</a>\n </li>\n `;\n });\n const isHidden = this.expanded === false || this.expanded === undefined;\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=\"38px\" height=\"38px\" 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=${isHidden}\n class=\"navigation-drawer\"\n >\n <li><a href=\"${domains.users}\">アカウント情報</a></li>\n <li @click=${this.handleLogout}>\n <button type=\"button\">ログアウト</button>\n </li>\n ${additionalItems}\n </ul>\n </nav>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"m2m-user-menu\": M2MUserMenu;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;AACA,SAAS,qBAAqB;AAE9B,SAAS,YAAY;AAErB,SAAS,WAAW;AAKb,IAAM,cAAN,cAA0B,gBAAgB;AAAA,EAA1C;AAAA;AACL,wBAAe,MAAM;AACnB,WAAK,gBAAgB,MAAM;AAC3B,aAAO,SAAS,OAAO;AAAA,IACzB;AAAA;AAAA,EAEA,SAAS;AAhBX;AAiBI,UAAM,UAAU,WAAW;AAC3B,UAAM,mBAAkB,UAAK,mBAAL,mBAAqB,IAAI,CAAC,SAAS;AACzD,aAAO;AAAA;AAAA,qBAEQ,KAAK,IAAI,KAAK,KAAK,KAAK;AAAA;AAAA;AAAA,IAGzC;AACA,UAAM,WAAW,KAAK,aAAa,SAAS,KAAK,aAAa;AAC9D,WAAO;AAAA;AAAA;AAAA;AAAA;AAAA,wBAKa,KAAK,QAAQ;AAAA,iBACpB,KAAK,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAU9B,IAAI,KAAK,OAAO,CAAC;AAAA;AAAA,sBAEL,QAAQ;AAAA;AAAA;AAAA,uBAGP,QAAQ,KAAK;AAAA,qBACf,KAAK,YAAY;AAAA;AAAA;AAAA,UAG5B,eAAe;AAAA;AAAA;AAAA,EAGvB;AACF;AA7Ca,cAAN;AAAA,EADN,cAAc,eAAe;AAAA,GACjB;","names":[]}
|
package/chunk-YXPSTKYY.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/m2m-apps-menu.ts"],"sourcesContent":["import { MenuBaseElement, MenuBaseElementProps } from \"./MenuBaseElement\";\nimport { customElement } from \"lit/decorators.js\";\nimport { getDomains } from \"./domains\";\nimport { html } from \"lit\";\nimport { ref } from \"lit/directives/ref.js\";\n\nexport type M2MAppsMenuProps = MenuBaseElementProps;\n\n@customElement(\"m2m-apps-menu\")\nexport class M2MAppsMenu extends MenuBaseElement {\n render() {\n const domains = getDomains();\n const additionalItems = this.additinalItems?.map((item) => {\n return html`\n <li>\n <a href=\"${item.href}\">${item.label}</a>\n </li>\n `;\n });\n const isHidden = this.expanded === false || this.expanded === undefined;\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=\"38px\"\n height=\"38px\"\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=${isHidden}\n class=\"navigation-drawer\"\n >\n <li>\n <span>m2m Series</span>\n <ul>\n <li><a href=\"${domains.core}\">Core 施設管理</a></li>\n <li><a href=\"${domains.checkin}\">Checkin ゲストチェックイン</a></li>\n <li><a href=\"${domains.systems}\">Systems Airbnb連携</a></li>\n <li><a href=\"${domains.cleaning}\">Cleaning 清掃管理</a></li>\n <li><a href=\"${domains.inspection}\">Inspection 内見チェック</a></li>\n <li><a href=\"${domains.users}\">Users アカウント管理</a></li>\n </ul>\n </li>\n <li>\n <a href=\"${domains.sumyca}\">Sumyca マンスリープラットフォーム</a>\n </li>\n ${additionalItems}\n </ul>\n </nav>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n \"m2m-apps-menu\": M2MAppsMenu;\n }\n}\n"],"mappings":";;;;;;;;;;;;AACA,SAAS,qBAAqB;AAE9B,SAAS,YAAY;AACrB,SAAS,WAAW;AAKb,IAAM,cAAN,cAA0B,gBAAgB;AAAA,EAC/C,SAAS;AAVX;AAWI,UAAM,UAAU,WAAW;AAC3B,UAAM,mBAAkB,UAAK,mBAAL,mBAAqB,IAAI,CAAC,SAAS;AACzD,aAAO;AAAA;AAAA,qBAEQ,KAAK,IAAI,KAAK,KAAK,KAAK;AAAA;AAAA;AAAA,IAGzC;AACA,UAAM,WAAW,KAAK,aAAa,SAAS,KAAK,aAAa;AAC9D,WAAO;AAAA;AAAA;AAAA;AAAA;AAAA,wBAKa,KAAK,QAAQ;AAAA,iBACpB,KAAK,kBAAkB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAc9B,IAAI,KAAK,OAAO,CAAC;AAAA;AAAA,sBAEL,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,2BAMH,QAAQ,IAAI;AAAA,2BACZ,QAAQ,OAAO;AAAA,2BACf,QAAQ,OAAO;AAAA,2BACf,QAAQ,QAAQ;AAAA,2BAChB,QAAQ,UAAU;AAAA,2BAClB,QAAQ,KAAK;AAAA;AAAA;AAAA;AAAA,qBAInB,QAAQ,MAAM;AAAA;AAAA,UAEzB,eAAe;AAAA;AAAA;AAAA,EAGvB;AACF;AAtDa,cAAN;AAAA,EADN,cAAc,eAAe;AAAA,GACjB;","names":[]}
|