UNPKG

pragmate-ui

Version:

An advanced, on-demand React UI library optimized for BeyondJS. Pragmate UI provides modular, responsive, and accessible components with a focus on efficient bundle sizes and a streamlined development process.

295 lines (281 loc) 10 kB
System.register(["@beyond-js/kernel/bundle", "@beyond-js/kernel/styles", "react", "@beyond-js/react-18-widgets/hooks", "@beyond-js/events/events", "pragmate-ui/icons"], function (_export, _context) { "use strict"; var dependency_0, dependency_1, dependency_2, dependency_3, dependency_4, dependency_5, __Bundle, __pkg, ims, Toasts, ToastTypes, IToast, toast, Toast, __beyond_pkg, hmr; _export({ Toasts: void 0, ToastTypes: void 0, IToast: void 0, toast: void 0, Toast: void 0 }); return { setters: [function (_beyondJsKernelBundle) { dependency_0 = _beyondJsKernelBundle; }, function (_beyondJsKernelStyles) { dependency_1 = _beyondJsKernelStyles; }, function (_react2) { dependency_2 = _react2; }, function (_beyondJsReact18WidgetsHooks) { dependency_3 = _beyondJsReact18WidgetsHooks; }, function (_beyondJsEventsEvents) { dependency_4 = _beyondJsEventsEvents; }, function (_pragmateUiIcons) { dependency_5 = _pragmateUiIcons; }], execute: function () { ({ Bundle: __Bundle } = dependency_0); __pkg = new __Bundle({ "module": { "vspecifier": "pragmate-ui@1.0.1/toast" }, "type": "code" }, _context.meta.url).package(); ; __pkg.dependencies.update([['@beyond-js/kernel/styles', dependency_1], ['react', dependency_2], ['@beyond-js/react-18-widgets/hooks', dependency_3], ['@beyond-js/events/events', dependency_4], ['pragmate-ui/icons', dependency_5]]); brequire('@beyond-js/kernel/styles').styles.register('pragmate-ui@1.0.1/toast'); ims = new Map(); /***************************** INTERNAL MODULE: ./definitions *****************************/ ims.set('./definitions', { hash: 3587947160, creator: function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); } }); /*********************** INTERNAL MODULE: ./index ***********************/ ims.set('./index', { hash: 3785050156, creator: function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Toasts = Toasts; var _react = require("react"); var _hooks = require("@beyond-js/react-18-widgets/hooks"); var _model = require("./model"); var _toast = require("./toast"); /*bundle*/ function Toasts({ position = { bottom: '1rem', right: '1rem' }, className, ...props }) { const [items, setItems] = _react.default.useState([]); (0, _hooks.useBinder)([_model.toast], () => setItems(_model.toast.current), 'current.toast.changed'); const elements = items.map(item => _react.default.createElement(_toast.Toast, { key: item.id, ...item, className: className, position: position })); return _react.default.createElement("div", { style: position, className: `pui-toast__container ${className}`, ...props }, elements); } } }); /*********************** INTERNAL MODULE: ./model ***********************/ ims.set('./model', { hash: 1944552155, creator: function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.toast = void 0; var _events = require("@beyond-js/events/events"); class Toast extends _events.Events { #current; get current() { return this.#current; } set current(newValue) { this.#current = newValue; this.trigger('current.toast.changed'); } constructor() { super(); this.#current = []; } #generateUniqueId() { return crypto.getRandomValues(new Uint8Array(16)).toString(); } #add(type, message, duration) { const newToast = { id: this.#generateUniqueId(), message, type, duration }; this.#current = [...this.#current, newToast]; this.trigger('current.toast.changed'); return newToast.id; } remove(toastId) { this.#current = this.#current.filter(toast => toast.id !== toastId); this.trigger('current.toast.changed'); } success(message, duration) { return this.#add('success', message, duration); } error(message, duration) { return this.#add('error', message, duration); } warning(message, duration) { return this.#add('warning', message, duration); } info(message, duration) { return this.#add('info', message, duration); } loading(message, duration) { return this.#add('loading', message, duration); } } /*bundle*/ const toast = exports.toast = new Toast(); } }); /*********************** INTERNAL MODULE: ./toast ***********************/ ims.set('./toast', { hash: 655369133, creator: function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Toast = Toast; var _icons = require("pragmate-ui/icons"); var _react = require("react"); var _useToast = require("./use-toast"); const DEFAULT_DURATION = 3000; /*bundle*/ function Toast({ type, message, duration, id }) { const toastRef = _react.default.useRef(null); duration = duration ?? DEFAULT_DURATION; (0, _useToast.useToastAnimation)(toastRef, duration, id); const icons = { error: 'triangle-exclamation', success: 'tickCircle', info: 'infoCircle', loading: 'refreshCircle', warning: 'warning' }; return _react.default.createElement("article", { ref: toastRef, className: `toast ${type}` }, _react.default.createElement(_icons.Icon, { icon: icons[type], className: 'icon' }), _react.default.createElement("p", { className: 'message' }, message)); } } }); /*************************** INTERNAL MODULE: ./use-toast ***************************/ ims.set('./use-toast', { hash: 3446030186, creator: function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useToastAnimation = useToastAnimation; var _react = require("react"); var _model = require("./model"); const ANIMATION_MARGIN = 300; function useToastAnimation(ref, duration, id) { _react.default.useEffect(() => { if (ref.current) { ref.current.classList.add('enter'); } return () => { if (ref.current) ref.current.classList.remove('enter'); }; }, [ref]); _react.default.useEffect(() => { const enterTimeout = setTimeout(() => { if (ref.current) { ref.current.classList.remove('enter'); ref.current.classList.add('exit'); } }, duration); const exitTimeout = setTimeout(() => { _model.toast.current = _model.toast.current.filter(item => item.id !== id); }, duration + ANIMATION_MARGIN); return () => { clearTimeout(enterTimeout); clearTimeout(exitTimeout); }; }, [duration, id, ref]); } } }); __pkg.exports.descriptor = [{ "im": "./index", "from": "Toasts", "name": "Toasts" }, { "im": "./model", "from": "ToastTypes", "name": "ToastTypes" }, { "im": "./model", "from": "IToast", "name": "IToast" }, { "im": "./model", "from": "toast", "name": "toast" }, { "im": "./toast", "from": "Toast", "name": "Toast" }]; // Module exports __pkg.exports.process = function ({ require, prop, value }) { (require || prop === 'Toasts') && _export("Toasts", Toasts = require ? require('./index').Toasts : value); (require || prop === 'ToastTypes') && _export("ToastTypes", ToastTypes = require ? require('./model').ToastTypes : value); (require || prop === 'IToast') && _export("IToast", IToast = require ? require('./model').IToast : value); (require || prop === 'toast') && _export("toast", toast = require ? require('./model').toast : value); (require || prop === 'Toast') && _export("Toast", Toast = require ? require('./toast').Toast : value); }; _export("__beyond_pkg", __beyond_pkg = __pkg); _export("hmr", hmr = new function () { this.on = (event, listener) => void 0; this.off = (event, listener) => void 0; }()); __pkg.initialise(ims); } }; }); //# sourceMappingURL=toast.sjs.js.map