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.
223 lines (196 loc) • 6.48 kB
JavaScript
import * as dependency_0 from '@beyond-js/kernel/bundle';
import * as dependency_1 from '@beyond-js/kernel/styles';
import * as dependency_2 from 'pragmate-ui/icons';
import * as dependency_3 from 'react';
import * as dependency_4 from 'prismjs';
import * as dependency_5 from 'pragmate-ui/toast';
const {Bundle: __Bundle} = dependency_0;
const __pkg = new __Bundle({"module":{"vspecifier":"pragmate-ui@1.0.1/code"},"type":"code"}, import.meta.url).package();;
__pkg.dependencies.update([['@beyond-js/kernel/styles', dependency_1],['pragmate-ui/icons', dependency_2],['react', dependency_3],['prismjs', dependency_4],['pragmate-ui/toast', dependency_5]]);
brequire('@beyond-js/kernel/styles').styles.register('pragmate-ui@1.0.1/code')
const ims = new Map();
/***************************
INTERNAL MODULE: ./clipboard
***************************/
ims.set('./clipboard', {hash: 1917992420, creator: function (require, exports) {
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Clipboard = Clipboard;
var _icons = require("pragmate-ui/icons");
var _react = require("react");
var _useClick = require("./use-click");
function Clipboard({
text
}) {
const [ref, onClick] = (0, _useClick.useClick)();
return _react.default.createElement("div", {
className: 'clipboard__container',
"data-text": text,
ref: ref,
onClick: onClick
}, _react.default.createElement(_icons.IconButton, {
title: 'copy',
icon: 'copy'
}), _react.default.createElement("span", {
className: 'action-copied'
}, "Copied"));
}
}});
/**************************
INTERNAL MODULE: ./code-box
**************************/
ims.set('./code-box', {hash: 2123332791, creator: function (require, exports) {
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.CodeBox = CodeBox;
var _react = require("react");
var _code = require("./code");
var _clipboard = require("./clipboard");
/*bundle*/function CodeBox({
title,
language,
children
}) {
return _react.default.createElement("div", {
className: 'code__box'
}, _react.default.createElement("header", null, _react.default.createElement("div", {
className: 'tab active'
}, title), _react.default.createElement(_clipboard.Clipboard, {
text: children
})), _react.default.createElement("section", {
className: 'box__code'
}, _react.default.createElement(_code.Code, {
language: language,
clipboard: false
}, children)));
}
}});
/**********************
INTERNAL MODULE: ./code
**********************/
ims.set('./code', {hash: 1110291450, creator: function (require, exports) {
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Code = Code;
var _react = require("react");
var Prism = require("prismjs");
var _clipboard = require("./clipboard");
/*bundle*/function Code({
language = 'typescript',
children,
clipboard = true
}) {
const createMarkup = () => {
if (!children) {
return {
__html: ''
};
}
const html = Prism.highlight(children, Prism.languages.javascript, language);
return {
__html: html
};
};
const cls = `code-container${clipboard ? ' has-clipboard' : ''}`;
return _react.default.createElement("div", {
className: cls
}, _react.default.createElement("pre", {
className: `regular__code language-${language}`,
dangerouslySetInnerHTML: createMarkup()
}), clipboard && _react.default.createElement(_clipboard.Clipboard, {
text: children
}));
}
}});
/************************
INTERNAL MODULE: ./inline
************************/
ims.set('./inline', {hash: 1462049212, creator: function (require, exports) {
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.InlineCode = InlineCode;
var _react = require("react");
/*bundle*/function InlineCode({
children
}) {
return _react.default.createElement("code", {
className: "inline__code"
}, children);
}
}});
/***************************
INTERNAL MODULE: ./use-click
***************************/
ims.set('./use-click', {hash: 3962409993, creator: function (require, exports) {
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useClick = useClick;
var _react = require("react");
var _toast = require("pragmate-ui/toast");
function useClick() {
const ref = _react.default.useRef(null);
const polyfill = text => {
const textArea = document.createElement('textarea');
textArea.value = text;
// Avoid scrolling to bottom
textArea.style.top = '0';
textArea.style.left = '0';
textArea.style.position = 'fixed';
document.body.appendChild(textArea);
textArea.focus();
textArea.select();
try {
const successful = document.execCommand('copy');
const msg = successful ? 'successful' : 'unsuccessful';
console.log('Fallback: Copying text command was ' + msg);
} catch (err) {
console.error('Fallback: Oops, unable to copy', err);
}
};
const onClick = async event => {
const target = event.currentTarget;
_toast.toast.info('copied');
const text = target.dataset.text;
if (!navigator.clipboard) {
return polyfill(text);
}
try {
await navigator.clipboard.writeText(text);
const span = ref.current.querySelector('.action-copied');
span.classList.add('show');
window.setTimeout(() => {
span.classList.add('hide');
window.setTimeout(() => span.classList.remove('show', 'hide'), 300);
}, 500);
} catch (e) {
console.log('some error', e);
}
};
return [ref, onClick];
}
}});
__pkg.exports.descriptor = [{"im":"./code-box","from":"CodeBox","name":"CodeBox"},{"im":"./code","from":"Code","name":"Code"},{"im":"./inline","from":"InlineCode","name":"InlineCode"}];
export let CodeBox, Code, InlineCode;
// Module exports
__pkg.exports.process = function({require, prop, value}) {
(require || prop === 'CodeBox') && (CodeBox = require ? require('./code-box').CodeBox : value);
(require || prop === 'Code') && (Code = require ? require('./code').Code : value);
(require || prop === 'InlineCode') && (InlineCode = require ? require('./inline').InlineCode : value);
};
export const __beyond_pkg = __pkg;
export const hmr = new (function () {
this.on = (event, listener) => void 0;
this.off = (event, listener) => void 0;
});
__pkg.initialise(ims);
//# sourceMappingURL=code.browser.mjs.map