elseware-ui 2.2.31 → 2.3.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.
@@ -0,0 +1,9 @@
1
+ /// <reference types="@types/react" />
2
+ import React from "react";
3
+ interface YoutubeVideoPlayerProps {
4
+ videoUrl: string;
5
+ width?: number;
6
+ height?: number;
7
+ }
8
+ declare const YoutubeVideoPlayer: React.FC<YoutubeVideoPlayerProps>;
9
+ export default YoutubeVideoPlayer;
package/build/index.d.ts CHANGED
@@ -17,6 +17,7 @@ import Slider from "./components/data-display/slider/Slider";
17
17
  import Table from "./components/data-display/table/Table";
18
18
  import Tag from "./components/data-display/tag/Tag";
19
19
  import { Typography, Chapter, Section, Paragraph, Quote } from "./components/data-display/typography";
20
+ import YoutubeVideoPlayer from "./components/data-display/video/youtube-video-player/YoutubeVideoPlayer";
20
21
  import { Button } from "./components/data-entry/button/Button";
21
22
  import Checkbox from "./components/data-entry/checkbox/Checkbox";
22
23
  import DateSelector from "./components/data-entry/date-selector/DateSelector";
@@ -58,4 +59,4 @@ import useModal from "./utils/hooks/components/useModal";
58
59
  import useDrawer from "./utils/hooks/components/useDrawer";
59
60
  import useClickOutside from "./utils/hooks/useClickOutside";
60
61
  import useIsMobile from "./utils/hooks/useIsMobile";
61
- export { Avatar, Badge, TitleBanner, Brand, BarChart, LineChart, PieChart, Chip, Image, CloudinaryImage, Info, List, ListItem, PriceTag, StarRating, StarRatingDistribution, Slider, Table, Tag, Typography, Chapter, Section, Paragraph, Quote, Button, Checkbox, DateSelector, Form, FormResponse, ImageInput, Input, MultiImageInput, InputResponse, Radio, StarRatingInput, Select, Switch, TextArea, Backdrop, Skeleton, Toast, sendToast, Transition, ContentArea, FooterNavbar, Sidebar, Flex, FlexCol, FlexRow, Grid, Layout, Header, Content, Footer, Breadcrumb, BreadcrumbItem, Drawer, DrawerToggler, HeaderNav, HeaderNavGroup, HeaderNavItem, HeaderNavItemTitle, Link, Menu, MenuGroup, MenuItem, MenuItemTitle, RouteTab, RouteTabs, Modal, Accordion, Card, CardHeader, CardContent, CardFooter, ThemeContext, ThemeProvider, ThemeSwitch, AsyncComponentWrapper, ShowMore, useModal, useDrawer, useClickOutside, useIsMobile, };
62
+ export { Avatar, Badge, TitleBanner, Brand, BarChart, LineChart, PieChart, Chip, Image, CloudinaryImage, Info, List, ListItem, PriceTag, StarRating, StarRatingDistribution, Slider, Table, Tag, Typography, Chapter, Section, Paragraph, Quote, YoutubeVideoPlayer, Button, Checkbox, DateSelector, Form, FormResponse, ImageInput, Input, MultiImageInput, InputResponse, Radio, StarRatingInput, Select, Switch, TextArea, Backdrop, Skeleton, Toast, sendToast, Transition, ContentArea, FooterNavbar, Sidebar, Flex, FlexCol, FlexRow, Grid, Layout, Header, Content, Footer, Breadcrumb, BreadcrumbItem, Drawer, DrawerToggler, HeaderNav, HeaderNavGroup, HeaderNavItem, HeaderNavItemTitle, Link, Menu, MenuGroup, MenuItem, MenuItemTitle, RouteTab, RouteTabs, Modal, Accordion, Card, CardHeader, CardContent, CardFooter, ThemeContext, ThemeProvider, ThemeSwitch, AsyncComponentWrapper, ShowMore, useModal, useDrawer, useClickOutside, useIsMobile, };
package/build/index.es.js CHANGED
@@ -33600,6 +33600,19 @@ function Tag(_a) {
33600
33600
  _b)) }, { children: text })));
33601
33601
  }
33602
33602
 
33603
+ var getYoutubeEmbedUrl = function (url) {
33604
+ var videoIdMatch = url.match(/(?:youtube\.com\/(?:[^\/]+\/.+\/|(?:v|e(?:mbed)?)\/|.*[?&]v=)|youtu\.be\/)([^"&?\/\s]{11})/);
33605
+ return videoIdMatch ? "https://www.youtube.com/embed/".concat(videoIdMatch[1]) : "";
33606
+ };
33607
+ var YoutubeVideoPlayer = function (_a) {
33608
+ var videoUrl = _a.videoUrl, _b = _a.width, width = _b === void 0 ? 750 : _b, _c = _a.height, height = _c === void 0 ? 422 : _c;
33609
+ var embedUrl = getYoutubeEmbedUrl(videoUrl);
33610
+ if (!embedUrl) {
33611
+ return jsxRuntime.jsx(FormResponse, { text: "Invalid YouTube URL", variant: "danger" });
33612
+ }
33613
+ return (jsxRuntime.jsx("div", __assign$1({ className: "flex justify-center" }, { children: jsxRuntime.jsx("iframe", { width: width, height: height, src: embedUrl, title: "YouTube video player", frameBorder: "0", allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture", allowFullScreen: true, className: "rounded-lg shadow-lg" }) })));
33614
+ };
33615
+
33603
33616
  function InputResponse(_a) {
33604
33617
  var _b;
33605
33618
  var name = _a.name, visibility = _a.visibility, _c = _a.variant, variant = _c === void 0 ? "default" : _c, styles = _a.styles;
@@ -34558,4 +34571,4 @@ var useDrawer = function (defaultVisibility) {
34558
34571
  };
34559
34572
  };
34560
34573
 
34561
- export { Accordion, AsyncComponentWrapper, Avatar, Backdrop, Badge, BarChart, Brand, Breadcrumb, BreadcrumbItem, Button, Card, CardContent, CardFooter, CardHeader, Chapter, Checkbox, Chip, CloudinaryImage, Content, ContentArea, DateSelector, Drawer, DrawerToggler, Flex, FlexCol, FlexRow, Footer, FooterNavbar, Form, FormResponse, Grid, Header, HeaderNav, HeaderNavGroup, HeaderNavItem, HeaderNavItemTitle, Image$1 as Image, ImageInput, Info, Input, InputResponse, Layout, LineChart, Link, List, ListItem, Menu, MenuGroup, MenuItem, MenuItemTitle, Modal, MultiImageInput, Paragraph, PieChart, PriceTag, Quote, Radio, RouteTab, RouteTabs, Section, Select, ShowMore, Sidebar, Skeleton, Slider, StarRating, StarRatingDistribution, StarRatingInput, Switch, Table, Tag, TextArea, ThemeContext, ThemeProvider, ThemeSwitch, TitleBanner, Toast, Transition, Typography, sendToast, useClickOutside, useDrawer, useIsMobile, useModal };
34574
+ export { Accordion, AsyncComponentWrapper, Avatar, Backdrop, Badge, BarChart, Brand, Breadcrumb, BreadcrumbItem, Button, Card, CardContent, CardFooter, CardHeader, Chapter, Checkbox, Chip, CloudinaryImage, Content, ContentArea, DateSelector, Drawer, DrawerToggler, Flex, FlexCol, FlexRow, Footer, FooterNavbar, Form, FormResponse, Grid, Header, HeaderNav, HeaderNavGroup, HeaderNavItem, HeaderNavItemTitle, Image$1 as Image, ImageInput, Info, Input, InputResponse, Layout, LineChart, Link, List, ListItem, Menu, MenuGroup, MenuItem, MenuItemTitle, Modal, MultiImageInput, Paragraph, PieChart, PriceTag, Quote, Radio, RouteTab, RouteTabs, Section, Select, ShowMore, Sidebar, Skeleton, Slider, StarRating, StarRatingDistribution, StarRatingInput, Switch, Table, Tag, TextArea, ThemeContext, ThemeProvider, ThemeSwitch, TitleBanner, Toast, Transition, Typography, YoutubeVideoPlayer, sendToast, useClickOutside, useDrawer, useIsMobile, useModal };
package/build/index.js CHANGED
@@ -33626,6 +33626,19 @@ function Tag(_a) {
33626
33626
  _b)) }, { children: text })));
33627
33627
  }
33628
33628
 
33629
+ var getYoutubeEmbedUrl = function (url) {
33630
+ var videoIdMatch = url.match(/(?:youtube\.com\/(?:[^\/]+\/.+\/|(?:v|e(?:mbed)?)\/|.*[?&]v=)|youtu\.be\/)([^"&?\/\s]{11})/);
33631
+ return videoIdMatch ? "https://www.youtube.com/embed/".concat(videoIdMatch[1]) : "";
33632
+ };
33633
+ var YoutubeVideoPlayer = function (_a) {
33634
+ var videoUrl = _a.videoUrl, _b = _a.width, width = _b === void 0 ? 750 : _b, _c = _a.height, height = _c === void 0 ? 422 : _c;
33635
+ var embedUrl = getYoutubeEmbedUrl(videoUrl);
33636
+ if (!embedUrl) {
33637
+ return jsxRuntime.jsx(FormResponse, { text: "Invalid YouTube URL", variant: "danger" });
33638
+ }
33639
+ return (jsxRuntime.jsx("div", __assign$1({ className: "flex justify-center" }, { children: jsxRuntime.jsx("iframe", { width: width, height: height, src: embedUrl, title: "YouTube video player", frameBorder: "0", allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture", allowFullScreen: true, className: "rounded-lg shadow-lg" }) })));
33640
+ };
33641
+
33629
33642
  function InputResponse(_a) {
33630
33643
  var _b;
33631
33644
  var name = _a.name, visibility = _a.visibility, _c = _a.variant, variant = _c === void 0 ? "default" : _c, styles = _a.styles;
@@ -34663,6 +34676,7 @@ exports.TitleBanner = TitleBanner;
34663
34676
  exports.Toast = Toast;
34664
34677
  exports.Transition = Transition;
34665
34678
  exports.Typography = Typography;
34679
+ exports.YoutubeVideoPlayer = YoutubeVideoPlayer;
34666
34680
  exports.sendToast = sendToast;
34667
34681
  exports.useClickOutside = useClickOutside;
34668
34682
  exports.useDrawer = useDrawer;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "elseware-ui",
3
- "version": "2.2.31",
3
+ "version": "2.3.0",
4
4
  "private": false,
5
5
  "description": "A modern and customizable React UI component library by elseware Technology.",
6
6
  "types": "build/index.d.ts",