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.

348 lines (328 loc) 12.6 kB
System.register(["@beyond-js/kernel/bundle", "react", "framer-motion", "pragmate-ui/base"], function (_export, _context) { "use strict"; var dependency_0, dependency_1, dependency_2, dependency_3, __Bundle, __pkg, ims, List, __beyond_pkg, hmr; _export("List", void 0); return { setters: [function (_beyondJsKernelBundle) { dependency_0 = _beyondJsKernelBundle; }, function (_react2) { dependency_1 = _react2; }, function (_framerMotion2) { dependency_2 = _framerMotion2; }, function (_pragmateUiBase) { dependency_3 = _pragmateUiBase; }], execute: function () { ({ Bundle: __Bundle } = dependency_0); __pkg = new __Bundle({ "module": { "vspecifier": "pragmate-ui@1.0.1/list" }, "type": "code" }, _context.meta.url).package(); ; __pkg.dependencies.update([['react', dependency_1], ['framer-motion', dependency_2], ['pragmate-ui/base', dependency_3]]); ims = new Map(); /*************************** INTERNAL MODULE: ./draggable ***************************/ ims.set('./draggable', { hash: 2033348794, creator: function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DraggableList = DraggableList; var _react = require("react"); var _framerMotion = require("framer-motion"); function DraggableList({ specs, control, index, ...props }) { const [items, setItems] = _react.default.useState(props.items); const onReorder = items => { setItems(items); if (props.onReorder) props.onReorder(items); }; const output = items.map((item, idx) => _react.default.createElement(_framerMotion.Reorder.Item, { value: item, key: `${item}` }, item)); return _react.default.createElement(_framerMotion.Reorder.Group, { values: items, onReorder: onReorder }, output); } } }); /********************************* INTERNAL MODULE: ./html-attributes *********************************/ ims.set('./html-attributes', { hash: 1750835586, creator: function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getAttributes = getAttributes; /** * A Set containing common HTML attributes that are used to control element behavior and information. * This Set is utilized to filter properties from objects to ensure only valid HTML attributes, * including accessibility attributes (those starting with 'aria-') and custom data attributes (those starting with 'data-'), * are included. These attributes can influence the HTML rendering and are recognized by web browsers. */ const htmlAttributes = new Set(['id', 'class', 'style', 'title', 'data', 'value', 'href', 'src', 'alt', 'onclick', 'onchange', 'onmouseover', 'disabled', 'readonly', 'type', 'placeholder', 'name', 'method', 'action', 'checked', 'selected', 'width', 'height', 'maxlength', 'minlength', 'pattern', 'step', 'required', 'autocomplete', 'autofocus', 'multiple', 'form', 'size', 'srcset', 'for', 'tabindex', 'role', 'aria-label']); /** * Filters the properties of an object to include only those that are recognized HTML attributes, with the * capability to explicitly exclude certain attributes even if they are valid. The function checks for standard * attributes defined in the `htmlAttributes` set, and dynamically accepts any properties that begin with 'aria-' * or 'data-'. It excludes any properties listed in the `exclusions` array, regardless of their validity as HTML attributes. * * @param {Record<string, any>} props - The object containing properties that may or may not correspond to valid HTML attributes. * @param {string[]} exclusions - Array of property names to be excluded from the returned object, even if they are valid HTML attributes. * @returns {Record<string, any>} A new object containing only the properties that are valid HTML attributes and not listed in exclusions. */ function getAttributes(props, exclusions = []) { const filtered = {}; const exclusionSet = new Set(exclusions); // Convert exclusions array to a Set for efficient lookup for (const prop in props) { // Check for known attributes or attributes starting with 'aria-' or 'data-' and not in the exclusions list if ((htmlAttributes.has(prop) || prop.startsWith('aria-') || prop.startsWith('data-')) && !exclusionSet.has(prop)) { filtered[prop] = props[prop]; } } return filtered; } } }); /*********************** INTERNAL MODULE: ./index ***********************/ ims.set('./index', { hash: 2732568007, creator: function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.List = List; var _react = require("react"); var _draggable = require("./draggable"); var _item = require("./item"); var _dragable = require("./item/dragable"); var _framerMotion = require("framer-motion"); /*bundle*/ function List({ items, children, control, empty, ...props }) { const { className, index = 'id', specs, draggable, childrenPosition = 'top', as = 'ul', // @deprecated container = 'ul' } = props; const Container = _framerMotion.motion[as]; const onTop = childrenPosition === 'top'; const ItemControl = draggable ? _dragable.DraggableItem : _item.ItemList; if (draggable) return _react.default.createElement(_draggable.DraggableList, { items: items, ...props }); if (!Array.isArray(items)) { console.warn('Invalid "items" prop: Expected an array. Please review the component usage and ensure the "items" prop is correctly passed as an array.'); return null; } if (control) { // console.warn( // 'The "control" prop is deprecated and will be removed in future versions. Please use children to define the item components.', // ); } if (items.length === 0 && empty) { const Control = empty; return _react.default.createElement(Control, null); } const renderItems = control ? items.map((item, idx) => { return _react.default.createElement(ItemControl, { index: index, key: idx, specs: specs, control: control, item: item, idx: idx }); }) : items.map((item, idx) => _react.Children.map(children, child => (0, _react.isValidElement)(child) ? (0, _react.cloneElement)(child, { key: idx, index, specs, item, idx }) : child)); const top = onTop && children ? children : null; const bottom = !onTop && children ? children : null; return _react.default.createElement(Container, { ...props, className: className }, top, renderItems, bottom); } } }); /******************************* INTERNAL MODULE: ./item/dragable *******************************/ ims.set('./item/dragable', { hash: 3472479063, creator: function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DraggableItem = DraggableItem; var _framerMotion = require("framer-motion"); var _react = require("react"); var _ = require("./"); function DraggableItem({ as, ...props }) { const { item, idx } = props; const attrs = { as }; return _react.default.createElement(_framerMotion.Reorder.Item, { value: item, key: idx, ...attrs }, _react.default.createElement(_.ItemList, { ...props, item: item, idx: idx, as: 'span' })); } } }); /*************************** INTERNAL MODULE: ./item/html ***************************/ ims.set('./item/html', { hash: 2640674525, creator: function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.HTMLItem = HTMLItem; var _react = require("react"); var _htmlAttributes = require("../html-attributes"); function HTMLItem({ as = 'li', children, ...props }) { const Control = as; const { item } = props; const attrs = (0, _htmlAttributes.getAttributes)(props, ['item', 'data']); return _react.default.createElement(Control, { ...attrs }, item); } } }); /**************************** INTERNAL MODULE: ./item/index ****************************/ ims.set('./item/index', { hash: 1844515837, creator: function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ItemList = ItemList; var _react = require("react"); var _html = require("./html"); /** * Componente que renderiza un elemento de la lista. * * @template T - El tipo de los elementos en la lista. * @template U - Tipo de las propiedades adicionales opcionales (por defecto un objeto genérico). * * @param props - Las propiedades de `ItemList`. * @returns El elemento renderizado. */ function ItemList({ index, item, idx, as = 'li', control, specs = {} }) { const Control = typeof control === 'string' ? _html.HTMLItem : control; const elementProps = { key: item[index] || idx, index: idx, item, data: item, ...specs, as: typeof control === 'string' ? control : undefined }; const element = _react.default.createElement(Control, elementProps); return element; } } }); /*********************** INTERNAL MODULE: ./types ***********************/ ims.set('./types', { hash: 2311667739, creator: function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); } }); __pkg.exports.descriptor = [{ "im": "./index", "from": "List", "name": "List" }]; // Module exports __pkg.exports.process = function ({ require, prop, value }) { (require || prop === 'List') && _export("List", List = require ? require('./index').List : 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=list.sjs.js.map