@mirai/core 0.1.67 → 0.1.68
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/README.md +3 -3
- package/build/Core.Notifications.js +100 -0
- package/build/Core.Notifications.js.map +1 -0
- package/build/Core.Notifications.module.css +56 -0
- package/build/Core.js +2 -1
- package/build/Core.js.map +1 -1
- package/build/Core.provider.js +2 -2
- package/build/Core.provider.js.map +1 -1
- package/build/index.js +2 -0
- package/build/index.js.map +1 -1
- package/package.json +1 -1
- package/public/e2e.html +23 -25
- package/public/index.html +2 -2
- package/site/booking/index.html +1 -1
- package/site/index.html +2 -2
- package/site/profile/index.html +1 -1
- package/site/signup/index.html +1 -1
package/README.md
CHANGED
|
@@ -29,7 +29,7 @@ Once the two main files of our new core are instantiated, we need to indicate wh
|
|
|
29
29
|
|
|
30
30
|
```html
|
|
31
31
|
<body>
|
|
32
|
-
<div data-mirai-id="501404"
|
|
32
|
+
<div data-mirai-id="501404"></div>
|
|
33
33
|
...
|
|
34
34
|
</body>
|
|
35
35
|
```
|
|
@@ -46,7 +46,7 @@ Here you have an complete example using all these attributes:
|
|
|
46
46
|
|
|
47
47
|
```html
|
|
48
48
|
<body>
|
|
49
|
-
<div data-mirai-id="500255" data-type="chain" data-currency="JPY" data-locale="ja-JA"
|
|
49
|
+
<div data-mirai-id="500255" data-type="chain" data-currency="JPY" data-locale="ja-JA"></div>
|
|
50
50
|
...
|
|
51
51
|
</body>
|
|
52
52
|
```
|
|
@@ -78,7 +78,7 @@ Here you have an example of how you should instantiate it:
|
|
|
78
78
|
<div data-mirai-component="finder" data-mobile="true"></div>
|
|
79
79
|
```
|
|
80
80
|
|
|
81
|
-
It should also be noted that some components may offer the _ghosting_ system. This means that that component can receive different html markup than the default component provides.
|
|
81
|
+
It should also be noted that some components may offer the _ghosting_ system. This means that that component can receive different html markup than the default component provides.
|
|
82
82
|
For that purpose, the `data-ghost` attribute must be set.
|
|
83
83
|
Css class must be added as well to style the ghost system.
|
|
84
84
|
Let's see a naive example:
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.Notifications = void 0;
|
|
7
|
+
var _dataSources = require("@mirai/data-sources");
|
|
8
|
+
var _locale = require("@mirai/locale");
|
|
9
|
+
var _ui = require("@mirai/ui");
|
|
10
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
11
|
+
var _CoreNotificationsModule = _interopRequireDefault(require("./Core.Notifications.module.css"));
|
|
12
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
14
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
15
|
+
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
16
|
+
const EVENT_NAME = 'notification';
|
|
17
|
+
let queue = {};
|
|
18
|
+
const Notifications = () => {
|
|
19
|
+
const {
|
|
20
|
+
translate
|
|
21
|
+
} = (0, _locale.useLocale)();
|
|
22
|
+
const [, setTimestamp] = (0, _react.useState)();
|
|
23
|
+
const {
|
|
24
|
+
value: {
|
|
25
|
+
session
|
|
26
|
+
}
|
|
27
|
+
} = (0, _dataSources.useStore)();
|
|
28
|
+
(0, _react.useEffect)(() => {
|
|
29
|
+
_dataSources.Event.subscribe(EVENT_NAME, handleAdd);
|
|
30
|
+
return () => _dataSources.Event.unsubscribe(EVENT_NAME, handleAdd);
|
|
31
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
32
|
+
}, []);
|
|
33
|
+
(0, _react.useEffect)(() => {
|
|
34
|
+
queue = {};
|
|
35
|
+
}, [session]);
|
|
36
|
+
const handleAdd = notification => {
|
|
37
|
+
if (!notification) return;
|
|
38
|
+
const {
|
|
39
|
+
success,
|
|
40
|
+
warning
|
|
41
|
+
} = notification;
|
|
42
|
+
const id = `${new Date().getTime()}:${Math.random().toFixed(8)}`;
|
|
43
|
+
queue[id] = {
|
|
44
|
+
...notification,
|
|
45
|
+
visible: false
|
|
46
|
+
};
|
|
47
|
+
forceRender();
|
|
48
|
+
setTimeout(() => {
|
|
49
|
+
queue[id].visible = true;
|
|
50
|
+
forceRender();
|
|
51
|
+
}, parseMotion());
|
|
52
|
+
if (success || warning) setTimeout(() => handleClose(id), success ? 5000 : 10000);
|
|
53
|
+
return;
|
|
54
|
+
};
|
|
55
|
+
const handleClose = id => {
|
|
56
|
+
if (!queue[id]) return;
|
|
57
|
+
setTimestamp(() => {
|
|
58
|
+
queue[id].visible = false;
|
|
59
|
+
setTimeout(() => {
|
|
60
|
+
delete queue[id];
|
|
61
|
+
forceRender();
|
|
62
|
+
}, parseMotion());
|
|
63
|
+
return new Date().getTime();
|
|
64
|
+
});
|
|
65
|
+
};
|
|
66
|
+
const forceRender = () => setTimestamp(new Date().getTime());
|
|
67
|
+
const parseMotion = () => {
|
|
68
|
+
const {
|
|
69
|
+
motionExpand = '0.3s'
|
|
70
|
+
} = _ui.Theme.get();
|
|
71
|
+
return parseFloat(motionExpand.replace('s')) * 1000;
|
|
72
|
+
};
|
|
73
|
+
const keys = Object.keys(queue);
|
|
74
|
+
return /*#__PURE__*/_react.default.createElement(_ui.View, {
|
|
75
|
+
className: _CoreNotificationsModule.default.notifications
|
|
76
|
+
}, keys.sort().map((key, index) => {
|
|
77
|
+
const {
|
|
78
|
+
defaultMessage,
|
|
79
|
+
id,
|
|
80
|
+
visible = false,
|
|
81
|
+
...props
|
|
82
|
+
} = queue[key];
|
|
83
|
+
return /*#__PURE__*/_react.default.createElement(_ui.Notification, _extends({}, props, {
|
|
84
|
+
key: key,
|
|
85
|
+
wide: true,
|
|
86
|
+
onClose: () => handleClose(key),
|
|
87
|
+
className: (0, _ui.styles)(_CoreNotificationsModule.default.item, visible && _CoreNotificationsModule.default.visible),
|
|
88
|
+
style: {
|
|
89
|
+
zIndex: keys.length - index
|
|
90
|
+
}
|
|
91
|
+
}), translate({
|
|
92
|
+
id,
|
|
93
|
+
defaultMessage
|
|
94
|
+
}));
|
|
95
|
+
}));
|
|
96
|
+
};
|
|
97
|
+
exports.Notifications = Notifications;
|
|
98
|
+
Notifications.displayName = 'core:components:Notifications';
|
|
99
|
+
Notifications.propTypes = {};
|
|
100
|
+
//# sourceMappingURL=Core.Notifications.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Core.Notifications.js","names":["EVENT_NAME","queue","Notifications","translate","useLocale","setTimestamp","useState","value","session","useStore","useEffect","Event","subscribe","handleAdd","unsubscribe","notification","success","warning","id","Date","getTime","Math","random","toFixed","visible","forceRender","setTimeout","parseMotion","handleClose","motionExpand","Theme","get","parseFloat","replace","keys","Object","style","notifications","sort","map","key","index","defaultMessage","props","styles","item","zIndex","length","displayName","propTypes"],"sources":["../src/Core.Notifications.jsx"],"sourcesContent":["import { Event, useStore } from '@mirai/data-sources';\nimport { useLocale } from '@mirai/locale';\nimport { Notification, styles, Theme, View } from '@mirai/ui';\nimport React, { useEffect, useState } from 'react';\n\nimport style from './Core.Notifications.module.css';\n\nconst EVENT_NAME = 'notification';\nlet queue = {};\n\nconst Notifications = () => {\n const { translate } = useLocale();\n const [, setTimestamp] = useState();\n const {\n value: { session },\n } = useStore();\n\n useEffect(() => {\n Event.subscribe(EVENT_NAME, handleAdd);\n return () => Event.unsubscribe(EVENT_NAME, handleAdd);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n queue = {};\n }, [session]);\n\n const handleAdd = (notification) => {\n if (!notification) return;\n\n const { success, warning } = notification;\n const id = `${new Date().getTime()}:${Math.random().toFixed(8)}`;\n\n queue[id] = { ...notification, visible: false };\n forceRender();\n\n setTimeout(() => {\n queue[id].visible = true;\n forceRender();\n }, parseMotion());\n\n if (success || warning) setTimeout(() => handleClose(id), success ? 5000 : 10000);\n\n return;\n };\n\n const handleClose = (id) => {\n if (!queue[id]) return;\n\n setTimestamp(() => {\n queue[id].visible = false;\n\n setTimeout(() => {\n delete queue[id];\n forceRender();\n }, parseMotion());\n\n return new Date().getTime();\n });\n };\n\n const forceRender = () => setTimestamp(new Date().getTime());\n\n const parseMotion = () => {\n const { motionExpand = '0.3s' } = Theme.get();\n\n return parseFloat(motionExpand.replace('s')) * 1000;\n };\n\n const keys = Object.keys(queue);\n\n return (\n <View className={style.notifications}>\n {keys.sort().map((key, index) => {\n const { defaultMessage, id, visible = false, ...props } = queue[key];\n\n return (\n <Notification\n {...props}\n key={key}\n wide\n onClose={() => handleClose(key)}\n className={styles(style.item, visible && style.visible)}\n style={{ zIndex: keys.length - index }}\n >\n {translate({ id, defaultMessage })}\n </Notification>\n );\n })}\n </View>\n );\n};\n\nNotifications.displayName = 'core:components:Notifications';\n\nNotifications.propTypes = {};\n\nexport { Notifications };\n"],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
:root {
|
|
2
|
+
--mirai-ui-breakpoint-S: 430px;
|
|
3
|
+
--mirai-ui-layer-XL: 100;
|
|
4
|
+
--mirai-ui-motion-expand: 300ms;
|
|
5
|
+
--mirai-ui-motion-easing: cubic-bezier(0.1, 0.1, 0.25, 0.9);
|
|
6
|
+
--mirai-ui-space-S: 12px;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.notifications {
|
|
10
|
+
max-height: calc(100vh - calc(var(--mirai-ui-space-S) * 2));
|
|
11
|
+
padding: var(--mirai-ui-space-S);
|
|
12
|
+
position: fixed;
|
|
13
|
+
top: 0;
|
|
14
|
+
width: 100%;
|
|
15
|
+
z-index: var(--mirai-ui-layer-XL);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
.notifications > .item:not(:last-child) {
|
|
19
|
+
margin-bottom: var(--mirai-ui-space-S);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/* S */
|
|
23
|
+
@media only screen and (max-width: 430px) {
|
|
24
|
+
.notifications {
|
|
25
|
+
right: 0;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.item {
|
|
29
|
+
transform: translateX(110%);
|
|
30
|
+
transition: transform var(--mirai-ui-motion-expand) var(--mirai-ui-motion-easing);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.item.visible {
|
|
34
|
+
transform: translateX(0%);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/* M & L */
|
|
39
|
+
@media only screen and (min-width: 431px) {
|
|
40
|
+
.notifications {
|
|
41
|
+
left: calc(50% - calc(var(--mirai-ui-breakpoint-S) / 2));
|
|
42
|
+
max-width: calc(var(--mirai-ui-breakpoint-S) - calc(var(--mirai-ui-space-S) * 2));
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.item {
|
|
46
|
+
opacity: 0;
|
|
47
|
+
transform: translateY(-110%);
|
|
48
|
+
transition: opacity var(--mirai-ui-motion-expand) var(--mirai-ui-motion-easing),
|
|
49
|
+
transform var(--mirai-ui-motion-expand) var(--mirai-ui-motion-easing);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.item.visible {
|
|
53
|
+
opacity: 1;
|
|
54
|
+
transform: translateY(0%);
|
|
55
|
+
}
|
|
56
|
+
}
|
package/build/Core.js
CHANGED
|
@@ -12,6 +12,7 @@ var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
|
12
12
|
var _react = _interopRequireWildcard(require("react"));
|
|
13
13
|
var _reactDom = _interopRequireDefault(require("react-dom"));
|
|
14
14
|
var _components = require("./components");
|
|
15
|
+
var _Core = require("./Core.Notifications");
|
|
15
16
|
var _helpers = require("./helpers");
|
|
16
17
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
17
18
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
@@ -44,7 +45,7 @@ const Core = _ref => {
|
|
|
44
45
|
currency,
|
|
45
46
|
dictionary,
|
|
46
47
|
locale
|
|
47
|
-
}, /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, components.filter(_ref2 => {
|
|
48
|
+
}, /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, !skeleton && /*#__PURE__*/_react.default.createElement(_Core.Notifications, null), components.filter(_ref2 => {
|
|
48
49
|
let {
|
|
49
50
|
desktop,
|
|
50
51
|
mobile
|
package/build/Core.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Core.js","names":["ghosts","Core","children","components","skeleton","isMobile","isDesktop","useDevice","value","currency","locale","DEFAULT_LOCALE","useStore","dictionary","setDictionary","useState","useEffect","next","ServiceDictionary","get","filter","desktop","mobile","map","index","el","component","props","getGhost","skeletonFallback","SKELETONS","React","createElement","ReactDOM","createPortal","COMPONENTS","process","env","NODE_ENV","undefined","ghost","propTypes","PropTypes","node","arrayOf","shape","oneOf","Object","keys","any","bool"],"sources":["../src/Core.jsx"],"sourcesContent":["import { useStore } from '@mirai/data-sources';\nimport { DEFAULT_LOCALE, LocaleProvider } from '@mirai/locale';\nimport { ServiceDictionary } from '@mirai/services';\nimport { useDevice } from '@mirai/ui';\nimport PropTypes from 'prop-types';\nimport React, { useEffect, useState, Suspense } from 'react';\nimport ReactDOM from 'react-dom';\n\nimport { COMPONENTS, SKELETONS } from './components';\nimport { getGhost } from './helpers';\n\nconst ghosts = {};\n\nconst Core = ({ children, components = [], skeleton = false }) => {\n const { isMobile, isDesktop } = useDevice();\n const {\n value: { currency, locale = DEFAULT_LOCALE },\n } = useStore();\n\n const [dictionary, setDictionary] = useState();\n\n useEffect(() => {\n (async () => {\n const next = await ServiceDictionary.get(locale);\n if (next) setDictionary(next);\n })();\n }, [locale]);\n\n return (\n <LocaleProvider {...{ currency, dictionary, locale }}>\n <>\n {components\n .filter(({ desktop, mobile }) => !(isMobile && mobile === 'false') && !(isDesktop && desktop === 'false'))\n .map(({ el, component, ...props }, index) => {\n if (!ghosts[index]) ghosts[index] = getGhost(el);\n const skeletonFallback = SKELETONS[component] ? React.createElement(SKELETONS[component]) : <></>;\n\n return ReactDOM.createPortal(\n skeleton ? (\n skeletonFallback\n ) : (\n <Suspense fallback={skeletonFallback}>\n {React.createElement(COMPONENTS[component], {\n ...props,\n ['data-testid']: process.env.NODE_ENV === 'production' ? component : undefined,\n ghost: ghosts[index],\n skeleton: skeletonFallback,\n el,\n })}\n </Suspense>\n ),\n el,\n );\n })}\n </>\n {children}\n </LocaleProvider>\n );\n};\n\nCore.propTypes = {\n children: PropTypes.node,\n components: PropTypes.arrayOf(\n PropTypes.shape({\n component: PropTypes.oneOf(Object.keys(COMPONENTS)),\n el: PropTypes.any,\n }),\n ),\n skeleton: PropTypes.bool,\n};\n\nexport { Core };\n"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAAqC;AAAA;AAAA;AAErC,MAAMA,MAAM,GAAG,CAAC,CAAC;AAEjB,MAAMC,IAAI,GAAG,QAAqD;EAAA,IAApD;IAAEC,QAAQ;IAAEC,UAAU,GAAG,EAAE;IAAEC,QAAQ,GAAG;EAAM,CAAC;EAC3D,MAAM;IAAEC,QAAQ;IAAEC;EAAU,CAAC,GAAG,IAAAC,aAAS,GAAE;EAC3C,MAAM;IACJC,KAAK,EAAE;MAAEC,QAAQ;MAAEC,MAAM,GAAGC;IAAe;EAC7C,CAAC,GAAG,IAAAC,qBAAQ,GAAE;EAEd,MAAM,CAACC,UAAU,EAAEC,aAAa,CAAC,GAAG,IAAAC,eAAQ,GAAE;EAE9C,IAAAC,gBAAS,EAAC,MAAM;IACd,CAAC,YAAY;MACX,MAAMC,IAAI,GAAG,MAAMC,2BAAiB,CAACC,GAAG,CAACT,MAAM,CAAC;MAChD,IAAIO,IAAI,EAAEH,aAAa,CAACG,IAAI,CAAC;IAC/B,CAAC,GAAG;EACN,CAAC,EAAE,CAACP,MAAM,CAAC,CAAC;EAEZ,oBACE,6BAAC,sBAAc;IAAOD,QAAQ;IAAEI,UAAU;IAAEH;EAAM,gBAChD,
|
|
1
|
+
{"version":3,"file":"Core.js","names":["ghosts","Core","children","components","skeleton","isMobile","isDesktop","useDevice","value","currency","locale","DEFAULT_LOCALE","useStore","dictionary","setDictionary","useState","useEffect","next","ServiceDictionary","get","filter","desktop","mobile","map","index","el","component","props","getGhost","skeletonFallback","SKELETONS","React","createElement","ReactDOM","createPortal","COMPONENTS","process","env","NODE_ENV","undefined","ghost","propTypes","PropTypes","node","arrayOf","shape","oneOf","Object","keys","any","bool"],"sources":["../src/Core.jsx"],"sourcesContent":["import { useStore } from '@mirai/data-sources';\nimport { DEFAULT_LOCALE, LocaleProvider } from '@mirai/locale';\nimport { ServiceDictionary } from '@mirai/services';\nimport { useDevice } from '@mirai/ui';\nimport PropTypes from 'prop-types';\nimport React, { useEffect, useState, Suspense } from 'react';\nimport ReactDOM from 'react-dom';\n\nimport { COMPONENTS, SKELETONS } from './components';\nimport { Notifications } from './Core.Notifications';\nimport { getGhost } from './helpers';\n\nconst ghosts = {};\n\nconst Core = ({ children, components = [], skeleton = false }) => {\n const { isMobile, isDesktop } = useDevice();\n const {\n value: { currency, locale = DEFAULT_LOCALE },\n } = useStore();\n\n const [dictionary, setDictionary] = useState();\n\n useEffect(() => {\n (async () => {\n const next = await ServiceDictionary.get(locale);\n if (next) setDictionary(next);\n })();\n }, [locale]);\n\n return (\n <LocaleProvider {...{ currency, dictionary, locale }}>\n <>\n {!skeleton && <Notifications />}\n\n {components\n .filter(({ desktop, mobile }) => !(isMobile && mobile === 'false') && !(isDesktop && desktop === 'false'))\n .map(({ el, component, ...props }, index) => {\n if (!ghosts[index]) ghosts[index] = getGhost(el);\n const skeletonFallback = SKELETONS[component] ? React.createElement(SKELETONS[component]) : <></>;\n\n return ReactDOM.createPortal(\n skeleton ? (\n skeletonFallback\n ) : (\n <Suspense fallback={skeletonFallback}>\n {React.createElement(COMPONENTS[component], {\n ...props,\n ['data-testid']: process.env.NODE_ENV === 'production' ? component : undefined,\n ghost: ghosts[index],\n skeleton: skeletonFallback,\n el,\n })}\n </Suspense>\n ),\n el,\n );\n })}\n </>\n {children}\n </LocaleProvider>\n );\n};\n\nCore.propTypes = {\n children: PropTypes.node,\n components: PropTypes.arrayOf(\n PropTypes.shape({\n component: PropTypes.oneOf(Object.keys(COMPONENTS)),\n el: PropTypes.any,\n }),\n ),\n skeleton: PropTypes.bool,\n};\n\nexport { Core };\n"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAqC;AAAA;AAAA;AAErC,MAAMA,MAAM,GAAG,CAAC,CAAC;AAEjB,MAAMC,IAAI,GAAG,QAAqD;EAAA,IAApD;IAAEC,QAAQ;IAAEC,UAAU,GAAG,EAAE;IAAEC,QAAQ,GAAG;EAAM,CAAC;EAC3D,MAAM;IAAEC,QAAQ;IAAEC;EAAU,CAAC,GAAG,IAAAC,aAAS,GAAE;EAC3C,MAAM;IACJC,KAAK,EAAE;MAAEC,QAAQ;MAAEC,MAAM,GAAGC;IAAe;EAC7C,CAAC,GAAG,IAAAC,qBAAQ,GAAE;EAEd,MAAM,CAACC,UAAU,EAAEC,aAAa,CAAC,GAAG,IAAAC,eAAQ,GAAE;EAE9C,IAAAC,gBAAS,EAAC,MAAM;IACd,CAAC,YAAY;MACX,MAAMC,IAAI,GAAG,MAAMC,2BAAiB,CAACC,GAAG,CAACT,MAAM,CAAC;MAChD,IAAIO,IAAI,EAAEH,aAAa,CAACG,IAAI,CAAC;IAC/B,CAAC,GAAG;EACN,CAAC,EAAE,CAACP,MAAM,CAAC,CAAC;EAEZ,oBACE,6BAAC,sBAAc;IAAOD,QAAQ;IAAEI,UAAU;IAAEH;EAAM,gBAChD,4DACG,CAACN,QAAQ,iBAAI,6BAAC,mBAAa,OAAG,EAE9BD,UAAU,CACRiB,MAAM,CAAC;IAAA,IAAC;MAAEC,OAAO;MAAEC;IAAO,CAAC;IAAA,OAAK,EAAEjB,QAAQ,IAAIiB,MAAM,KAAK,OAAO,CAAC,IAAI,EAAEhB,SAAS,IAAIe,OAAO,KAAK,OAAO,CAAC;EAAA,EAAC,CACzGE,GAAG,CAAC,QAA8BC,KAAK,KAAK;IAAA,IAAvC;MAAEC,EAAE;MAAEC,SAAS;MAAE,GAAGC;IAAM,CAAC;IAC/B,IAAI,CAAC3B,MAAM,CAACwB,KAAK,CAAC,EAAExB,MAAM,CAACwB,KAAK,CAAC,GAAG,IAAAI,iBAAQ,EAACH,EAAE,CAAC;IAChD,MAAMI,gBAAgB,GAAGC,qBAAS,CAACJ,SAAS,CAAC,gBAAGK,cAAK,CAACC,aAAa,CAACF,qBAAS,CAACJ,SAAS,CAAC,CAAC,gBAAG,2DAAK;IAEjG,oBAAOO,iBAAQ,CAACC,YAAY,CAC1B9B,QAAQ,GACNyB,gBAAgB,gBAEhB,6BAAC,eAAQ;MAAC,QAAQ,EAAEA;IAAiB,gBAClCE,cAAK,CAACC,aAAa,CAACG,sBAAU,CAACT,SAAS,CAAC,EAAE;MAC1C,GAAGC,KAAK;MACR,CAAC,aAAa,GAAGS,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,GAAGZ,SAAS,GAAGa,SAAS;MAC9EC,KAAK,EAAExC,MAAM,CAACwB,KAAK,CAAC;MACpBpB,QAAQ,EAAEyB,gBAAgB;MAC1BJ;IACF,CAAC,CAAC,CAEL,EACDA,EAAE,CACH;EACH,CAAC,CAAC,CACH,EACFvB,QAAQ,CACM;AAErB,CAAC;AAAC;AAEFD,IAAI,CAACwC,SAAS,GAAG;EACfvC,QAAQ,EAAEwC,kBAAS,CAACC,IAAI;EACxBxC,UAAU,EAAEuC,kBAAS,CAACE,OAAO,CAC3BF,kBAAS,CAACG,KAAK,CAAC;IACdnB,SAAS,EAAEgB,kBAAS,CAACI,KAAK,CAACC,MAAM,CAACC,IAAI,CAACb,sBAAU,CAAC,CAAC;IACnDV,EAAE,EAAEiB,kBAAS,CAACO;EAChB,CAAC,CAAC,CACH;EACD7C,QAAQ,EAAEsC,kBAAS,CAACQ;AACtB,CAAC"}
|
package/build/Core.provider.js
CHANGED
|
@@ -57,14 +57,14 @@ const CoreProvider = _ref => {
|
|
|
57
57
|
...store,
|
|
58
58
|
...value
|
|
59
59
|
}
|
|
60
|
-
}, /*#__PURE__*/_react.default.createElement(_Core.Core, null, children))) :
|
|
60
|
+
}, /*#__PURE__*/_react.default.createElement(_Core.Core, null, children))) : null;
|
|
61
61
|
};
|
|
62
62
|
exports.CoreProvider = CoreProvider;
|
|
63
63
|
CoreProvider.propTypes = {
|
|
64
64
|
children: _propTypes.default.node.isRequired,
|
|
65
65
|
currency: _propTypes.default.string,
|
|
66
|
-
id: _propTypes.default.string.isRequired,
|
|
67
66
|
hotel: _propTypes.default.string,
|
|
67
|
+
id: _propTypes.default.string.isRequired,
|
|
68
68
|
locale: _propTypes.default.string,
|
|
69
69
|
metrics: _propTypes.default.string,
|
|
70
70
|
type: _propTypes.default.oneOf(Object.values(_Core2.TYPE)),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Core.provider.js","names":["CoreProvider","children","currency","hotel","id","locale","metrics","type","value","store","setStore","useState","useLayoutEffect","urlParams","fetchUrlParams","location","search","substring","cookies","fetchCookies","COOKIE_CART","COOKIE_PESTANA","COOKIE_VALUES","session","fetchSession","checkSession","undefined","instance","config","fetchConfig","consolidateStore","process","env","METRICS","propTypes","PropTypes","node","isRequired","string","oneOf","Object","values","TYPE","shape"],"sources":["../src/Core.provider.jsx"],"sourcesContent":["import { MetricsProvider, StoreProvider } from '@mirai/data-sources';\nimport PropTypes from 'prop-types';\nimport React, { useLayoutEffect, useState } from 'react';\n\nimport { Core } from './Core';\nimport { TYPE } from './Core.constants';\nimport { COOKIE_CART, COOKIE_PESTANA, COOKIE_VALUES } from './Core.definition';\nimport { checkSession, consolidateStore, fetchConfig, fetchCookies, fetchSession, fetchUrlParams } from './helpers';\n\nconst CoreProvider = ({ children, currency, hotel, id, locale, metrics, type, value = {} }) => {\n const [store, setStore] = useState();\n\n useLayoutEffect(() => {\n (async () => {\n const urlParams = fetchUrlParams(location.search.substring(1));\n const cookies = fetchCookies([COOKIE_CART, COOKIE_PESTANA, COOKIE_VALUES]);\n let session = fetchSession(urlParams);\n if (session && !(await checkSession(id))) session = undefined;\n\n const instance = { currency, id, type, locale, hotel };\n const config = await fetchConfig(instance);\n\n setStore(consolidateStore({ config, cookies, instance, session, urlParams }));\n })();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return store ? (\n <MetricsProvider token={metrics || process.env.METRICS}>\n <StoreProvider value={{ ...store, ...value }}>\n <Core>{children}</Core>\n </StoreProvider>\n </MetricsProvider>\n ) :
|
|
1
|
+
{"version":3,"file":"Core.provider.js","names":["CoreProvider","children","currency","hotel","id","locale","metrics","type","value","store","setStore","useState","useLayoutEffect","urlParams","fetchUrlParams","location","search","substring","cookies","fetchCookies","COOKIE_CART","COOKIE_PESTANA","COOKIE_VALUES","session","fetchSession","checkSession","undefined","instance","config","fetchConfig","consolidateStore","process","env","METRICS","propTypes","PropTypes","node","isRequired","string","oneOf","Object","values","TYPE","shape"],"sources":["../src/Core.provider.jsx"],"sourcesContent":["import { MetricsProvider, StoreProvider } from '@mirai/data-sources';\nimport PropTypes from 'prop-types';\nimport React, { useLayoutEffect, useState } from 'react';\n\nimport { Core } from './Core';\nimport { TYPE } from './Core.constants';\nimport { COOKIE_CART, COOKIE_PESTANA, COOKIE_VALUES } from './Core.definition';\nimport { checkSession, consolidateStore, fetchConfig, fetchCookies, fetchSession, fetchUrlParams } from './helpers';\n\nconst CoreProvider = ({ children, currency, hotel, id, locale, metrics, type, value = {} }) => {\n const [store, setStore] = useState();\n\n useLayoutEffect(() => {\n (async () => {\n const urlParams = fetchUrlParams(location.search.substring(1));\n const cookies = fetchCookies([COOKIE_CART, COOKIE_PESTANA, COOKIE_VALUES]);\n let session = fetchSession(urlParams);\n if (session && !(await checkSession(id))) session = undefined;\n\n const instance = { currency, id, type, locale, hotel };\n const config = await fetchConfig(instance);\n\n setStore(consolidateStore({ config, cookies, instance, session, urlParams }));\n })();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return store ? (\n <MetricsProvider token={metrics || process.env.METRICS}>\n <StoreProvider value={{ ...store, ...value }}>\n <Core>{children}</Core>\n </StoreProvider>\n </MetricsProvider>\n ) : null;\n};\n\nCoreProvider.propTypes = {\n children: PropTypes.node.isRequired,\n currency: PropTypes.string,\n hotel: PropTypes.string,\n id: PropTypes.string.isRequired,\n locale: PropTypes.string,\n metrics: PropTypes.string,\n type: PropTypes.oneOf(Object.values(TYPE)),\n value: PropTypes.shape({}),\n};\n\nexport { CoreProvider };\n"],"mappings":";;;;;;AAAA;AACA;AACA;AAEA;AACA;AACA;AACA;AAAoH;AAAA;AAAA;AAEpH,MAAMA,YAAY,GAAG,QAA0E;EAAA,IAAzE;IAAEC,QAAQ;IAAEC,QAAQ;IAAEC,KAAK;IAAEC,EAAE;IAAEC,MAAM;IAAEC,OAAO;IAAEC,IAAI;IAAEC,KAAK,GAAG,CAAC;EAAE,CAAC;EACxF,MAAM,CAACC,KAAK,EAAEC,QAAQ,CAAC,GAAG,IAAAC,eAAQ,GAAE;EAEpC,IAAAC,sBAAe,EAAC,MAAM;IACpB,CAAC,YAAY;MACX,MAAMC,SAAS,GAAG,IAAAC,uBAAc,EAACC,QAAQ,CAACC,MAAM,CAACC,SAAS,CAAC,CAAC,CAAC,CAAC;MAC9D,MAAMC,OAAO,GAAG,IAAAC,qBAAY,EAAC,CAACC,kBAAW,EAAEC,qBAAc,EAAEC,oBAAa,CAAC,CAAC;MAC1E,IAAIC,OAAO,GAAG,IAAAC,qBAAY,EAACX,SAAS,CAAC;MACrC,IAAIU,OAAO,IAAI,EAAE,MAAM,IAAAE,qBAAY,EAACrB,EAAE,CAAC,CAAC,EAAEmB,OAAO,GAAGG,SAAS;MAE7D,MAAMC,QAAQ,GAAG;QAAEzB,QAAQ;QAAEE,EAAE;QAAEG,IAAI;QAAEF,MAAM;QAAEF;MAAM,CAAC;MACtD,MAAMyB,MAAM,GAAG,MAAM,IAAAC,oBAAW,EAACF,QAAQ,CAAC;MAE1CjB,QAAQ,CAAC,IAAAoB,yBAAgB,EAAC;QAAEF,MAAM;QAAEV,OAAO;QAAES,QAAQ;QAAEJ,OAAO;QAAEV;MAAU,CAAC,CAAC,CAAC;IAC/E,CAAC,GAAG;IACJ;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,OAAOJ,KAAK,gBACV,6BAAC,4BAAe;IAAC,KAAK,EAAEH,OAAO,IAAIyB,OAAO,CAACC,GAAG,CAACC;EAAQ,gBACrD,6BAAC,0BAAa;IAAC,KAAK,EAAE;MAAE,GAAGxB,KAAK;MAAE,GAAGD;IAAM;EAAE,gBAC3C,6BAAC,UAAI,QAAEP,QAAQ,CAAQ,CACT,CACA,GAChB,IAAI;AACV,CAAC;AAAC;AAEFD,YAAY,CAACkC,SAAS,GAAG;EACvBjC,QAAQ,EAAEkC,kBAAS,CAACC,IAAI,CAACC,UAAU;EACnCnC,QAAQ,EAAEiC,kBAAS,CAACG,MAAM;EAC1BnC,KAAK,EAAEgC,kBAAS,CAACG,MAAM;EACvBlC,EAAE,EAAE+B,kBAAS,CAACG,MAAM,CAACD,UAAU;EAC/BhC,MAAM,EAAE8B,kBAAS,CAACG,MAAM;EACxBhC,OAAO,EAAE6B,kBAAS,CAACG,MAAM;EACzB/B,IAAI,EAAE4B,kBAAS,CAACI,KAAK,CAACC,MAAM,CAACC,MAAM,CAACC,WAAI,CAAC,CAAC;EAC1ClC,KAAK,EAAE2B,kBAAS,CAACQ,KAAK,CAAC,CAAC,CAAC;AAC3B,CAAC"}
|
package/build/index.js
CHANGED
|
@@ -13,9 +13,11 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
13
13
|
window.Mirai = {
|
|
14
14
|
...window.Mirai,
|
|
15
15
|
environment: process.env.NODE_ENV,
|
|
16
|
+
Event: _dataSources.Event,
|
|
16
17
|
services: {
|
|
17
18
|
booking: process.env.SERVICE_BOOKING,
|
|
18
19
|
club: process.env.SERVICE_CLUB,
|
|
20
|
+
dictionary: process.env.SERVICE_DICTIONARY,
|
|
19
21
|
engine: process.env.SERVICE_ENGINE,
|
|
20
22
|
static: process.env.SERVICE_STATIC,
|
|
21
23
|
user: process.env.SERVICE_USER
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["window","Mirai","environment","process","env","NODE_ENV","services","booking","SERVICE_BOOKING","club","SERVICE_CLUB","engine","SERVICE_ENGINE","static","SERVICE_STATIC","user","SERVICE_USER","version","core","isProduction","isDevelopment","console","log","name","urlParams","fetchUrlParams","location","search","substring","cookies","fetchCookies","COOKIE_CART","COOKIE_PESTANA","COOKIE_VALUES","session","fetchSession","loadEnvironment","undefined","instance","findInstance","components","findComponents","length","ReactDOM","render","el","config","fetchConfig","theme","checkSession","id","store","consolidateStore","METRICS"],"sources":["../src/index.js"],"sourcesContent":["/* eslint-disable no-console */\nimport { MetricsProvider, StoreProvider } from '@mirai/data-sources';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport { name, version } from '../package.json';\nimport { Core } from './Core';\nimport { COOKIE_CART, COOKIE_PESTANA, COOKIE_VALUES } from './Core.definition';\nimport {\n checkSession,\n consolidateStore,\n fetchConfig,\n fetchCookies,\n fetchSession,\n fetchUrlParams,\n findComponents,\n findInstance,\n loadEnvironment,\n theme,\n} from './helpers';\n\nwindow.Mirai = {\n ...window.Mirai,\n environment: process.env.NODE_ENV,\n services: {\n booking: process.env.SERVICE_BOOKING,\n club: process.env.SERVICE_CLUB,\n engine: process.env.SERVICE_ENGINE,\n static: process.env.SERVICE_STATIC,\n user: process.env.SERVICE_USER,\n },\n version,\n};\n\nwindow.Mirai.core = async () => {\n const isProduction = process.env.NODE_ENV === 'production';\n const isDevelopment = process.env.NODE_ENV === 'development';\n\n console.log(`${isProduction ? '🟢' : isDevelopment ? '🟡' : '🔴'} ${name} v${version} [${process.env.NODE_ENV}]`);\n\n // 1. Fetch client-side dataSources\n const urlParams = fetchUrlParams(location.search.substring(1));\n const cookies = fetchCookies([COOKIE_CART, COOKIE_PESTANA, COOKIE_VALUES]);\n let session = fetchSession(urlParams);\n\n // 2. Analize environment\n const environment = urlParams.env && isProduction ? loadEnvironment(urlParams.env) : undefined;\n if (environment) return;\n\n // 3. Find instance\n const instance = findInstance({ urlParams });\n if (!instance) return;\n\n // 4. Find components\n const components = findComponents();\n if (!components.length) return;\n\n // 5. Render skeletons\n ReactDOM.render(\n <React.StrictMode>\n <Core {...{ components }} skeleton />\n </React.StrictMode>,\n instance.el,\n );\n\n // 6. Analize id to fetch its config\n const config = await fetchConfig(instance);\n if (!config) return;\n\n // 7. Theming\n theme();\n\n // 8. Check session\n if (session && !(await checkSession(instance.id))) session = undefined;\n\n // 9. Consolidate store\n const store = consolidateStore({ config, cookies, instance, session, urlParams });\n\n // 10. Render components\n ReactDOM.render(\n <React.StrictMode>\n <MetricsProvider token={process.env.METRICS}>\n <StoreProvider value={store}>\n <Core {...{ components }} />\n </StoreProvider>\n </MetricsProvider>\n </React.StrictMode>,\n instance.el,\n );\n};\n\nwindow.Mirai.core();\n"],"mappings":";;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAWmB;AAnBnB;;AAqBAA,MAAM,CAACC,KAAK,GAAG;EACb,GAAGD,MAAM,CAACC,KAAK;EACfC,WAAW,EAAEC,OAAO,CAACC,GAAG,CAACC,QAAQ;EACjCC,QAAQ,EAAE;IACRC,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","names":["window","Mirai","environment","process","env","NODE_ENV","Event","services","booking","SERVICE_BOOKING","club","SERVICE_CLUB","dictionary","SERVICE_DICTIONARY","engine","SERVICE_ENGINE","static","SERVICE_STATIC","user","SERVICE_USER","version","core","isProduction","isDevelopment","console","log","name","urlParams","fetchUrlParams","location","search","substring","cookies","fetchCookies","COOKIE_CART","COOKIE_PESTANA","COOKIE_VALUES","session","fetchSession","loadEnvironment","undefined","instance","findInstance","components","findComponents","length","ReactDOM","render","el","config","fetchConfig","theme","checkSession","id","store","consolidateStore","METRICS"],"sources":["../src/index.js"],"sourcesContent":["/* eslint-disable no-console */\nimport { Event, MetricsProvider, StoreProvider } from '@mirai/data-sources';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport { name, version } from '../package.json';\nimport { Core } from './Core';\nimport { COOKIE_CART, COOKIE_PESTANA, COOKIE_VALUES } from './Core.definition';\nimport {\n checkSession,\n consolidateStore,\n fetchConfig,\n fetchCookies,\n fetchSession,\n fetchUrlParams,\n findComponents,\n findInstance,\n loadEnvironment,\n theme,\n} from './helpers';\n\nwindow.Mirai = {\n ...window.Mirai,\n environment: process.env.NODE_ENV,\n Event,\n services: {\n booking: process.env.SERVICE_BOOKING,\n club: process.env.SERVICE_CLUB,\n dictionary: process.env.SERVICE_DICTIONARY,\n engine: process.env.SERVICE_ENGINE,\n static: process.env.SERVICE_STATIC,\n user: process.env.SERVICE_USER,\n },\n version,\n};\n\nwindow.Mirai.core = async () => {\n const isProduction = process.env.NODE_ENV === 'production';\n const isDevelopment = process.env.NODE_ENV === 'development';\n\n console.log(`${isProduction ? '🟢' : isDevelopment ? '🟡' : '🔴'} ${name} v${version} [${process.env.NODE_ENV}]`);\n\n // 1. Fetch client-side dataSources\n const urlParams = fetchUrlParams(location.search.substring(1));\n const cookies = fetchCookies([COOKIE_CART, COOKIE_PESTANA, COOKIE_VALUES]);\n let session = fetchSession(urlParams);\n\n // 2. Analize environment\n const environment = urlParams.env && isProduction ? loadEnvironment(urlParams.env) : undefined;\n if (environment) return;\n\n // 3. Find instance\n const instance = findInstance({ urlParams });\n if (!instance) return;\n\n // 4. Find components\n const components = findComponents();\n if (!components.length) return;\n\n // 5. Render skeletons\n ReactDOM.render(\n <React.StrictMode>\n <Core {...{ components }} skeleton />\n </React.StrictMode>,\n instance.el,\n );\n\n // 6. Analize id to fetch its config\n const config = await fetchConfig(instance);\n if (!config) return;\n\n // 7. Theming\n theme();\n\n // 8. Check session\n if (session && !(await checkSession(instance.id))) session = undefined;\n\n // 9. Consolidate store\n const store = consolidateStore({ config, cookies, instance, session, urlParams });\n\n // 10. Render components\n ReactDOM.render(\n <React.StrictMode>\n <MetricsProvider token={process.env.METRICS}>\n <StoreProvider value={store}>\n <Core {...{ components }} />\n </StoreProvider>\n </MetricsProvider>\n </React.StrictMode>,\n instance.el,\n );\n};\n\nwindow.Mirai.core();\n"],"mappings":"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"}
|
package/package.json
CHANGED
package/public/e2e.html
CHANGED
|
@@ -1,29 +1,27 @@
|
|
|
1
1
|
<!DOCTYPE html>
|
|
2
2
|
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
6
|
+
<title>@mirai/core - e2e</title>
|
|
7
|
+
<link rel="stylesheet" href="../src/theme.css" rel="preload" defer />
|
|
8
|
+
<link rel="stylesheet" href="index.css" />
|
|
9
|
+
</head>
|
|
3
10
|
|
|
4
|
-
<
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
<link rel="stylesheet" href="../src/theme.css" rel="preload" defer />
|
|
9
|
-
<link rel="stylesheet" href="index.css" />
|
|
10
|
-
</head>
|
|
11
|
+
<body>
|
|
12
|
+
<noscript>You need to enable JavaScript to run this app.</noscript>
|
|
13
|
+
<!-- Hotel Moderno -->
|
|
14
|
+
<div data-mirai-id="10030559" data-type="hotel" data-locale="en-GB"></div>
|
|
11
15
|
|
|
12
|
-
<
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
<
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
</
|
|
23
|
-
|
|
24
|
-
<small>Copyright, 2023</small>
|
|
25
|
-
</footer>
|
|
26
|
-
<script type="module" defer src="../src/index.js"></script>
|
|
27
|
-
</body>
|
|
28
|
-
|
|
29
|
-
</html>
|
|
16
|
+
<header>
|
|
17
|
+
<h1>@mirai/core</h1>
|
|
18
|
+
<nav>
|
|
19
|
+
<div data-mirai-component="bookingQuery"></div>
|
|
20
|
+
</nav>
|
|
21
|
+
</header>
|
|
22
|
+
<footer>
|
|
23
|
+
<small>Copyright, 2023</small>
|
|
24
|
+
</footer>
|
|
25
|
+
<script type="module" defer src="../src/index.js"></script>
|
|
26
|
+
</body>
|
|
27
|
+
</html>
|
package/public/index.html
CHANGED
|
@@ -20,9 +20,9 @@
|
|
|
20
20
|
<noscript>You need to enable JavaScript to run this app.</noscript>
|
|
21
21
|
|
|
22
22
|
<!-- hotel example -->
|
|
23
|
-
<!-- <div data-mirai-id="10030559" data-locale="en-GB" data-currency="GBP"
|
|
23
|
+
<!-- <div data-mirai-id="10030559" data-locale="en-GB" data-currency="GBP"></div> -->
|
|
24
24
|
<!-- chain example -->
|
|
25
|
-
<div data-mirai-id="501404" data-hotel="100376545" data-type="chain" data-locale="en-GB"
|
|
25
|
+
<div data-mirai-id="501404" data-hotel="100376545" data-type="chain" data-locale="en-GB" _hidden></div>
|
|
26
26
|
|
|
27
27
|
<header>
|
|
28
28
|
<h1>@mirai/core</h1>
|
package/site/booking/index.html
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
<link rel="stylesheet" href="{url}/site/customer.css" />
|
|
9
9
|
</head>
|
|
10
10
|
<body>
|
|
11
|
-
<div data-mirai-id="501404" data-hotel="100376545" data-type="chain" data-locale="en-GB"
|
|
11
|
+
<div data-mirai-id="501404" data-hotel="100376545" data-type="chain" data-locale="en-GB"></div>
|
|
12
12
|
|
|
13
13
|
<section class="booking">
|
|
14
14
|
<div data-mirai-component="booking"></div>
|
package/site/index.html
CHANGED
|
@@ -9,9 +9,9 @@
|
|
|
9
9
|
</head>
|
|
10
10
|
<body>
|
|
11
11
|
<!-- hotel example -->
|
|
12
|
-
<!-- <div data-mirai-id="10030559" data-locale="en-GB" data-currency="GBP"
|
|
12
|
+
<!-- <div data-mirai-id="10030559" data-locale="en-GB" data-currency="GBP"></div> -->
|
|
13
13
|
<!-- chain example -->
|
|
14
|
-
<div data-mirai-id="501404" data-hotel="88737419" data-type="chain" data-locale="en-GB"
|
|
14
|
+
<div data-mirai-id="501404" data-hotel="88737419" data-type="chain" data-locale="en-GB"></div>
|
|
15
15
|
|
|
16
16
|
<header>
|
|
17
17
|
<h1>@mirai/core</h1>
|
package/site/profile/index.html
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
<link rel="stylesheet" href="{url}/site/customer.css" />
|
|
9
9
|
</head>
|
|
10
10
|
<body>
|
|
11
|
-
<div data-mirai-id="501404" data-hotel="100376545" data-type="chain" data-locale="en-GB"
|
|
11
|
+
<div data-mirai-id="501404" data-hotel="100376545" data-type="chain" data-locale="en-GB"></div>
|
|
12
12
|
|
|
13
13
|
<header>
|
|
14
14
|
<h1>@mirai/core</h1>
|
package/site/signup/index.html
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
<link rel="stylesheet" href="{url}/site/customer.css" />
|
|
9
9
|
</head>
|
|
10
10
|
<body>
|
|
11
|
-
<div data-mirai-id="501404" data-hotel="100376545" data-type="chain" data-locale="en-GB"
|
|
11
|
+
<div data-mirai-id="501404" data-hotel="100376545" data-type="chain" data-locale="en-GB"></div>
|
|
12
12
|
|
|
13
13
|
<header>
|
|
14
14
|
<h1>@mirai/core</h1>
|