@jetbrains/kotlin-web-site-ui 2.6.2 → 2.7.3

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.
@@ -1 +1 @@
1
- {"version":3,"file":"topMenu.js","mappings":"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","sources":["webpack://@jetbrains/kotlin-web-site-ui/./node_modules/classnames/index.js","webpack://@jetbrains/kotlin-web-site-ui/./node_modules/react/cjs/react-jsx-runtime.production.min.js","webpack://@jetbrains/kotlin-web-site-ui/./node_modules/react/jsx-runtime.js","webpack://@jetbrains/kotlin-web-site-ui/external commonjs2 {\"commonjs2\":\"react\",\"commonjs\":\"react\"}","webpack://@jetbrains/kotlin-web-site-ui/webpack/bootstrap","webpack://@jetbrains/kotlin-web-site-ui/webpack/runtime/compat get default export","webpack://@jetbrains/kotlin-web-site-ui/webpack/runtime/define property getters","webpack://@jetbrains/kotlin-web-site-ui/webpack/runtime/hasOwnProperty shorthand","webpack://@jetbrains/kotlin-web-site-ui/webpack/runtime/make namespace object","webpack://@jetbrains/kotlin-web-site-ui/external commonjs2 {\"commonjs\":\"@rescui/ui-contexts\",\"commonjs2\":\"@rescui/ui-contexts\"}","webpack://@jetbrains/kotlin-web-site-ui/external commonjs2 {\"commonjs\":\"@rescui/typography\",\"commonjs2\":\"@rescui/typography\"}","webpack://@jetbrains/kotlin-web-site-ui/./src/components/top-menu/horizontal-menu/horizontal-menu.tsx","webpack://@jetbrains/kotlin-web-site-ui/./src/components/top-menu/horizontal-menu/horizontal-menu.module.pcss?cd97","webpack://@jetbrains/kotlin-web-site-ui/external commonjs2 {\"commonjs2\":\"react-dom\",\"commonjs\":\"react-dom\"}","webpack://@jetbrains/kotlin-web-site-ui/./src/components/top-menu/dropdown-menu/arrow-dropdown-icon.svg","webpack://@jetbrains/kotlin-web-site-ui/./src/components/top-menu/dropdown-menu/dropdown-menu.tsx","webpack://@jetbrains/kotlin-web-site-ui/./src/components/top-menu/dropdown-menu/dropdown-menu.module.pcss?2bdf","webpack://@jetbrains/kotlin-web-site-ui/./src/components/top-menu/index.ts","webpack://@jetbrains/kotlin-web-site-ui/./src/components/top-menu/top-menu.tsx","webpack://@jetbrains/kotlin-web-site-ui/./src/components/top-menu/top-menu.module.pcss?c786"],"sourcesContent":["/*!\n Copyright (c) 2018 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString === Object.prototype.toString) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","/** @license React v16.14.0\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),g=60103;exports.Fragment=60107;if(\"function\"===typeof Symbol&&Symbol.for){var h=Symbol.for;g=h(\"react.element\");exports.Fragment=h(\"react.fragment\")}var m=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,n=Object.prototype.hasOwnProperty,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,k){var b,d={},e=null,l=null;void 0!==k&&(e=\"\"+k);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(l=a.ref);for(b in a)n.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:g,type:c,key:e,ref:l,props:d,_owner:m.current}}exports.jsx=q;exports.jsxs=q;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","module.exports = require(\"react\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@rescui/ui-contexts\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@rescui/typography\");","import React, { FC, useCallback } from 'react';\nimport classNames from 'classnames';\nimport * as styles from './horizontal-menu.module.pcss';\nimport { LinkHandler, TopMenuItem } from '../top-menu';\nimport { useTextStyles } from '@rescui/typography';\n\ninterface HorizontalMenuItemProps {\n item: TopMenuItem;\n isActive: boolean;\n linkHandler: LinkHandler;\n isExternal?: boolean;\n}\n\nconst HorizontalMenuItem: FC<HorizontalMenuItemProps> = ({\n item,\n isActive,\n linkHandler,\n}) => {\n const textCn = useTextStyles();\n const handleLink = useCallback((event) => linkHandler(event, item.url), [\n item,\n ]);\n\n return isActive ? (\n <span key={item.url} className={styles.itemActive}>\n {item.title}\n </span>\n ) : (\n <a\n href={item.url}\n key={item.url}\n className={classNames(\n styles.item,\n textCn('rs-link', {\n hardness: 'average',\n mode: 'nude',\n })\n )}\n onClick={handleLink}\n target={item.isExternal ? '_blank' : undefined}\n >\n {item.title}\n </a>\n );\n};\n\ninterface HorizontalMenuProps {\n items: TopMenuItem[];\n activeIndex: number;\n linkHandler: LinkHandler;\n}\n\nexport const HorizontalMenu: FC<HorizontalMenuProps> = ({\n items,\n activeIndex,\n linkHandler,\n}) => {\n const textCn = useTextStyles();\n\n return (\n <nav className={classNames(styles.horizontalMenu, textCn('rs-text-2'))}>\n {items.map((item, index) => (\n <HorizontalMenuItem\n key={item.url}\n isActive={index === activeIndex}\n item={item}\n linkHandler={linkHandler}\n />\n ))}\n </nav>\n );\n};\n","// extracted by mini-css-extract-plugin\nexport const horizontalMenu = \"ktl-horizontal-menu-module_horizontal-menu_1KYF9\";\nexport const item = \"ktl-horizontal-menu-module_item_2rwZJ\";\nexport const itemActive = \"ktl-horizontal-menu-module_item-active_3jUuG\";","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-dom\");","var _path;\n\nfunction _extends() { _extends = Object.assign || 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); }\n\nimport * as React from \"react\";\n\nfunction SvgArrowDropdownIcon(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 12 6\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M6 6l5.25-6H.75L6 6z\",\n fill: \"currentColor\"\n })));\n}\n\nexport default SvgArrowDropdownIcon;","import React, { FC, useState } from 'react';\nimport ReactDOM from 'react-dom';\nimport classNames from 'classnames';\nimport * as styles from './dropdown-menu.module.pcss';\nimport { TopMenuItem, TopMenuProps } from '../top-menu';\nimport { useTextStyles } from '@rescui/typography';\nimport ArrowDropdownIcon from './arrow-dropdown-icon.svg';\nimport { useTheme } from '@rescui/ui-contexts';\n\nexport const DropdownMenu: FC<TopMenuProps> = ({\n homeUrl,\n title,\n mobileTitle = 'Overview',\n items,\n activeIndex,\n linkHandler,\n}) => {\n const theme = useTheme();\n const textCn = useTextStyles();\n const [portalRoot, setPortalRoot] = React.useState<null | HTMLElement>(null);\n\n React.useEffect(() => {\n if (typeof document !== `undefined`) {\n setPortalRoot(document.body);\n }\n }, []);\n\n let _items: TopMenuItem[] = [\n {\n title: mobileTitle,\n url: homeUrl,\n },\n ].concat(items);\n const _activeIndex = activeIndex + 1;\n const activeItem = _items[_activeIndex];\n\n const [isExpanded, setIsExpanded] = useState(false);\n\n const handleClick = () => setIsExpanded(!isExpanded);\n\n return (\n <>\n <div\n className={classNames(styles.dropdownMenu, {\n [styles.dropdownMenuExpanded]: isExpanded,\n })}\n onClick={handleClick}\n >\n <button\n className={classNames(styles.button, textCn('rs-text-2'))}\n aria-haspopup=\"true\"\n >\n <span>{activeItem.title}</span>\n <ArrowDropdownIcon className={styles.icon} />\n </button>\n <nav\n className={classNames(styles.dropdownList, {\n [styles.dropdownListDarkTheme]: theme === 'dark',\n })}\n >\n {_items.map((item, index) => (\n <a\n key={item.url}\n href={item.url}\n className={classNames(styles.dropdownItem, textCn('rs-text-2'), {\n [styles.dropdownItemActive]: index === _activeIndex,\n })}\n onClick={(event) => linkHandler?.(event, item.url)}\n target={item.isExternal ? '_blank' : undefined}\n >\n {item.title}\n </a>\n ))}\n </nav>\n </div>\n {!!portalRoot &&\n ReactDOM.createPortal(\n <div\n className={classNames(styles.overlay, {\n [styles.overlayVisible]: isExpanded,\n })}\n onClick={handleClick}\n />,\n portalRoot\n )}\n </>\n );\n};\n","// extracted by mini-css-extract-plugin\nexport const dropdownMenu = \"ktl-dropdown-menu-module_dropdown-menu_1Bq7O\";\nexport const button = \"ktl-dropdown-menu-module_button_3S5NT\";\nexport const icon = \"ktl-dropdown-menu-module_icon_2qFI4\";\nexport const dropdownList = \"ktl-dropdown-menu-module_dropdown-list_3FO6E\";\nexport const fadein = \"ktl-dropdown-menu-module_fadein_2rSSj\";\nexport const dropdownItem = \"ktl-dropdown-menu-module_dropdown-item_31gw5\";\nexport const dropdownItemActive = \"ktl-dropdown-menu-module_dropdown-item-active_3cd-Y\";\nexport const overlay = \"ktl-dropdown-menu-module_overlay_7SXe_\";\nexport const overlayVisible = \"ktl-dropdown-menu-module_overlay-visible_iPjXT\";\nexport const dropdownMenuExpanded = \"ktl-dropdown-menu-module_dropdown-menu-expanded_t-u2s\";\nexport const dropdownListDarkTheme = \"ktl-dropdown-menu-module_dropdown-list-dark-theme_XEqh-\";","import { TopMenu } from './top-menu';\nexport default TopMenu;\n","import React, { FC, ForwardedRef, MouseEvent } from 'react';\nimport { useTheme } from '@rescui/ui-contexts';\nimport classNames from 'classnames';\nimport * as styles from './top-menu.module.pcss';\nimport { useTextStyles } from '@rescui/typography';\nimport { HorizontalMenu } from './horizontal-menu/horizontal-menu';\nimport { DropdownMenu } from './dropdown-menu/dropdown-menu';\n\nexport type LinkHandler = (\n event: MouseEvent<HTMLAnchorElement>,\n url: string\n) => void;\n\nexport interface TopMenuProps {\n homeUrl: string;\n title: string;\n mobileTitle?: string;\n activeIndex: number;\n items: TopMenuItem[];\n linkHandler?: LinkHandler;\n className?: string;\n forwardedRef?: ForwardedRef<HTMLDivElement>;\n}\n\nexport interface TopMenuItem {\n title: string;\n url: string;\n isExternal?: boolean;\n}\n\nexport const TopMenu: FC<TopMenuProps> = ({\n homeUrl,\n title,\n mobileTitle,\n activeIndex,\n items,\n linkHandler = () => {},\n className,\n children,\n forwardedRef,\n}) => {\n const theme = useTheme();\n const textCn = useTextStyles();\n\n return (\n <div\n className={classNames(styles.topMenu, className, {\n [styles.topMenuDarkTheme]: theme === 'dark',\n })}\n ref={forwardedRef}\n >\n <a\n href={homeUrl}\n className={classNames(styles.logo, textCn('rs-h3'))}\n onClick={(event) => linkHandler(event, homeUrl)}\n >\n {title}\n </a>\n\n <DropdownMenu\n items={items}\n activeIndex={activeIndex}\n linkHandler={linkHandler}\n title={title}\n mobileTitle={mobileTitle}\n homeUrl={homeUrl}\n />\n\n <HorizontalMenu\n items={items}\n activeIndex={activeIndex}\n linkHandler={linkHandler}\n />\n\n {children}\n </div>\n );\n};\n","// extracted by mini-css-extract-plugin\nexport const topMenu = \"ktl-top-menu-module_top-menu_39QxM\";\nexport const topMenuDarkTheme = \"ktl-top-menu-module_top-menu-dark-theme_3Rc3j\";\nexport const logo = \"ktl-top-menu-module_logo_1EFtv\";"],"names":["hasOwn","hasOwnProperty","classNames","classes","i","arguments","length","arg","argType","push","Array","isArray","inner","apply","toString","Object","prototype","key","call","join","module","exports","default","f","g","Fragment","Symbol","for","h","m","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ReactCurrentOwner","n","p","ref","__self","__source","q","c","a","k","b","d","e","l","defaultProps","$$typeof","type","props","_owner","current","jsx","jsxs","require","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","getter","__esModule","definition","o","defineProperty","enumerable","get","obj","prop","r","toStringTag","value","HorizontalMenuItem","item","isActive","linkHandler","textCn","useTextStyles","handleLink","useCallback","event","url","className","title","href","hardness","mode","onClick","target","isExternal","HorizontalMenu","items","activeIndex","map","index","_path","_extends","assign","source","this","viewBox","fill","xmlns","fillRule","clipRule","DropdownMenu","homeUrl","mobileTitle","theme","useTheme","portalRoot","setPortalRoot","React","document","body","_items","concat","_activeIndex","activeItem","isExpanded","setIsExpanded","useState","handleClick","ReactDOM","children","forwardedRef"],"sourceRoot":""}
1
+ {"version":3,"file":"topMenu.js","mappings":"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","sources":["webpack://@jetbrains/kotlin-web-site-ui/./node_modules/classnames/index.js","webpack://@jetbrains/kotlin-web-site-ui/./node_modules/react/cjs/react-jsx-runtime.production.min.js","webpack://@jetbrains/kotlin-web-site-ui/./node_modules/react/jsx-runtime.js","webpack://@jetbrains/kotlin-web-site-ui/external commonjs2 {\"commonjs2\":\"react\",\"commonjs\":\"react\"}","webpack://@jetbrains/kotlin-web-site-ui/webpack/bootstrap","webpack://@jetbrains/kotlin-web-site-ui/webpack/runtime/compat get default export","webpack://@jetbrains/kotlin-web-site-ui/webpack/runtime/define property getters","webpack://@jetbrains/kotlin-web-site-ui/webpack/runtime/hasOwnProperty shorthand","webpack://@jetbrains/kotlin-web-site-ui/webpack/runtime/make namespace object","webpack://@jetbrains/kotlin-web-site-ui/external commonjs2 {\"commonjs\":\"@rescui/ui-contexts\",\"commonjs2\":\"@rescui/ui-contexts\"}","webpack://@jetbrains/kotlin-web-site-ui/external commonjs2 {\"commonjs\":\"@rescui/typography\",\"commonjs2\":\"@rescui/typography\"}","webpack://@jetbrains/kotlin-web-site-ui/./src/components/top-menu/horizontal-menu/horizontal-menu.tsx","webpack://@jetbrains/kotlin-web-site-ui/./src/components/top-menu/horizontal-menu/horizontal-menu.module.pcss?cd97","webpack://@jetbrains/kotlin-web-site-ui/external commonjs2 {\"commonjs2\":\"react-dom\",\"commonjs\":\"react-dom\"}","webpack://@jetbrains/kotlin-web-site-ui/./src/components/top-menu/dropdown-menu/arrow-dropdown-icon.svg","webpack://@jetbrains/kotlin-web-site-ui/./src/components/top-menu/dropdown-menu/dropdown-menu.tsx","webpack://@jetbrains/kotlin-web-site-ui/./src/components/top-menu/dropdown-menu/dropdown-menu.module.pcss?2bdf","webpack://@jetbrains/kotlin-web-site-ui/./src/components/top-menu/index.ts","webpack://@jetbrains/kotlin-web-site-ui/./src/components/top-menu/top-menu.tsx","webpack://@jetbrains/kotlin-web-site-ui/./src/components/top-menu/top-menu.module.pcss?c786"],"sourcesContent":["/*!\n Copyright (c) 2018 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString === Object.prototype.toString) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","/** @license React v16.14.0\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),g=60103;exports.Fragment=60107;if(\"function\"===typeof Symbol&&Symbol.for){var h=Symbol.for;g=h(\"react.element\");exports.Fragment=h(\"react.fragment\")}var m=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,n=Object.prototype.hasOwnProperty,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,k){var b,d={},e=null,l=null;void 0!==k&&(e=\"\"+k);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(l=a.ref);for(b in a)n.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:g,type:c,key:e,ref:l,props:d,_owner:m.current}}exports.jsx=q;exports.jsxs=q;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","module.exports = require(\"react\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@rescui/ui-contexts\");","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"@rescui/typography\");","import React, { FC, useCallback } from 'react';\nimport classNames from 'classnames';\nimport * as styles from './horizontal-menu.module.pcss';\nimport { LinkHandler, TopMenuItem } from '../top-menu';\nimport { useTextStyles } from '@rescui/typography';\n\ninterface HorizontalMenuItemProps {\n item: TopMenuItem;\n isActive: boolean;\n linkHandler: LinkHandler;\n isExternal?: boolean;\n}\n\nconst HorizontalMenuItem: FC<HorizontalMenuItemProps> = ({\n item,\n isActive,\n linkHandler,\n}) => {\n const textCn = useTextStyles();\n const handleLink = useCallback((event) => linkHandler(event, item.url), [\n item,\n ]);\n\n return isActive ? (\n <span key={item.url} className={styles.itemActive}>\n {item.title}\n </span>\n ) : (\n <a\n href={item.url}\n key={item.url}\n className={classNames(\n styles.item,\n textCn('rs-link', {\n hardness: 'average',\n mode: 'nude',\n })\n )}\n onClick={handleLink}\n target={item.isExternal ? '_blank' : undefined}\n >\n {item.title}\n </a>\n );\n};\n\ninterface HorizontalMenuProps {\n items: TopMenuItem[];\n activeIndex: number;\n linkHandler: LinkHandler;\n}\n\nexport const HorizontalMenu: FC<HorizontalMenuProps> = ({\n items,\n activeIndex,\n linkHandler,\n}) => {\n const textCn = useTextStyles();\n\n return (\n <nav className={classNames(styles.horizontalMenu, textCn('rs-text-2'))}>\n {items.map((item, index) => (\n <HorizontalMenuItem\n key={item.url}\n isActive={index === activeIndex}\n item={item}\n linkHandler={linkHandler}\n />\n ))}\n </nav>\n );\n};\n","// extracted by mini-css-extract-plugin\nexport const horizontalMenu = \"ktl-horizontal-menu-module_horizontal-menu_1KYF9\";\nexport const item = \"ktl-horizontal-menu-module_item_2rwZJ\";\nexport const itemActive = \"ktl-horizontal-menu-module_item-active_3jUuG\";","var __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-dom\");","var _path;\n\nfunction _extends() { _extends = Object.assign || 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); }\n\nimport * as React from \"react\";\n\nfunction SvgArrowDropdownIcon(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n viewBox: \"0 0 12 6\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M6 6l5.25-6H.75L6 6z\",\n fill: \"currentColor\"\n })));\n}\n\nexport default SvgArrowDropdownIcon;","import React, { FC, useState } from 'react';\nimport ReactDOM from 'react-dom';\nimport classNames from 'classnames';\nimport * as styles from './dropdown-menu.module.pcss';\nimport { TopMenuItem, TopMenuProps } from '../top-menu';\nimport { useTextStyles } from '@rescui/typography';\nimport ArrowDropdownIcon from './arrow-dropdown-icon.svg';\nimport { useTheme } from '@rescui/ui-contexts';\n\nexport const DropdownMenu: FC<TopMenuProps> = ({\n homeUrl,\n title,\n mobileTitle = 'Overview',\n items,\n activeIndex,\n linkHandler,\n}) => {\n const theme = useTheme();\n const textCn = useTextStyles();\n const [portalRoot, setPortalRoot] = React.useState<null | HTMLElement>(null);\n\n React.useEffect(() => {\n if (typeof document !== `undefined`) {\n setPortalRoot(document.body);\n }\n }, []);\n\n let _items: TopMenuItem[] = [\n {\n title: mobileTitle,\n url: homeUrl,\n },\n ].concat(items);\n const _activeIndex = activeIndex + 1;\n const activeItem = _items[_activeIndex];\n\n const [isExpanded, setIsExpanded] = useState(false);\n\n const handleClick = () => setIsExpanded(!isExpanded);\n\n return (\n <>\n <div\n className={classNames(styles.dropdownMenu, {\n [styles.dropdownMenuExpanded]: isExpanded,\n })}\n onClick={handleClick}\n >\n <button\n className={classNames(styles.button, textCn('rs-text-2'))}\n aria-haspopup=\"true\"\n >\n <span>{activeItem.title}</span>\n <ArrowDropdownIcon className={styles.icon} />\n </button>\n <nav\n className={classNames(styles.dropdownList, {\n [styles.dropdownListDarkTheme]: theme === 'dark',\n })}\n >\n {_items.map((item, index) => (\n <a\n key={item.url}\n href={item.url}\n className={classNames(styles.dropdownItem, textCn('rs-text-2'), {\n [styles.dropdownItemActive]: index === _activeIndex,\n })}\n onClick={(event) => linkHandler?.(event, item.url)}\n target={item.isExternal ? '_blank' : undefined}\n >\n {item.title}\n </a>\n ))}\n </nav>\n </div>\n {!!portalRoot &&\n ReactDOM.createPortal(\n <div\n className={classNames(styles.overlay, {\n [styles.overlayVisible]: isExpanded,\n })}\n onClick={handleClick}\n />,\n portalRoot\n )}\n </>\n );\n};\n","// extracted by mini-css-extract-plugin\nexport const dropdownMenu = \"ktl-dropdown-menu-module_dropdown-menu_1Bq7O\";\nexport const button = \"ktl-dropdown-menu-module_button_3S5NT\";\nexport const icon = \"ktl-dropdown-menu-module_icon_2qFI4\";\nexport const dropdownList = \"ktl-dropdown-menu-module_dropdown-list_3FO6E\";\nexport const fadein = \"ktl-dropdown-menu-module_fadein_2rSSj\";\nexport const dropdownItem = \"ktl-dropdown-menu-module_dropdown-item_31gw5\";\nexport const dropdownItemActive = \"ktl-dropdown-menu-module_dropdown-item-active_3cd-Y\";\nexport const overlay = \"ktl-dropdown-menu-module_overlay_7SXe_\";\nexport const overlayVisible = \"ktl-dropdown-menu-module_overlay-visible_iPjXT\";\nexport const dropdownMenuExpanded = \"ktl-dropdown-menu-module_dropdown-menu-expanded_t-u2s\";\nexport const dropdownListDarkTheme = \"ktl-dropdown-menu-module_dropdown-list-dark-theme_XEqh-\";","import { TopMenu } from './top-menu';\nexport default TopMenu;\n","import React, { FC, ForwardedRef, MouseEvent } from 'react';\nimport { useTheme } from '@rescui/ui-contexts';\nimport classNames from 'classnames';\nimport * as styles from './top-menu.module.pcss';\nimport { useTextStyles } from '@rescui/typography';\nimport { HorizontalMenu } from './horizontal-menu/horizontal-menu';\nimport { DropdownMenu } from './dropdown-menu/dropdown-menu';\n\nexport type LinkHandler = (\n event: MouseEvent<HTMLAnchorElement>,\n url: string\n) => void;\n\nexport interface TopMenuProps {\n homeUrl: string;\n title: string;\n mobileTitle?: string;\n activeIndex: number;\n items: TopMenuItem[];\n linkHandler?: LinkHandler;\n className?: string;\n forwardedRef?: ForwardedRef<HTMLDivElement>;\n}\n\nexport interface TopMenuItem {\n title: string;\n url: string;\n isExternal?: boolean;\n}\n\nexport const TopMenu: FC<TopMenuProps> = ({\n homeUrl,\n title,\n mobileTitle,\n activeIndex,\n items,\n linkHandler = () => {},\n className,\n children,\n forwardedRef,\n}) => {\n const theme = useTheme();\n const textCn = useTextStyles();\n\n return (\n <div\n className={classNames(styles.topMenu, className, {\n [styles.topMenuDarkTheme]: theme === 'dark',\n })}\n ref={forwardedRef}\n >\n <a\n href={homeUrl}\n className={classNames(styles.logo, textCn('rs-h3'))}\n onClick={(event) => linkHandler(event, homeUrl)}\n >\n {title}\n </a>\n\n <DropdownMenu\n items={items}\n activeIndex={activeIndex}\n linkHandler={linkHandler}\n title={title}\n mobileTitle={mobileTitle}\n homeUrl={homeUrl}\n />\n\n <HorizontalMenu\n items={items}\n activeIndex={activeIndex}\n linkHandler={linkHandler}\n />\n\n {children}\n </div>\n );\n};\n","// extracted by mini-css-extract-plugin\nexport const topMenu = \"ktl-top-menu-module_top-menu_39QxM\";\nexport const topMenuDarkTheme = \"ktl-top-menu-module_top-menu-dark-theme_3Rc3j\";\nexport const logo = \"ktl-top-menu-module_logo_1EFtv\";"],"names":["hasOwn","hasOwnProperty","classNames","classes","i","arguments","length","arg","argType","push","Array","isArray","inner","apply","toString","Object","prototype","key","call","join","module","exports","default","f","g","Fragment","Symbol","for","h","m","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ReactCurrentOwner","n","p","ref","__self","__source","q","c","a","k","b","d","e","l","defaultProps","$$typeof","type","props","_owner","current","jsx","jsxs","require","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","getter","__esModule","definition","o","defineProperty","enumerable","get","obj","prop","r","toStringTag","value","HorizontalMenuItem","item","isActive","linkHandler","textCn","useTextStyles","handleLink","useCallback","event","url","className","title","href","hardness","mode","onClick","target","isExternal","HorizontalMenu","items","activeIndex","map","index","_path","_extends","assign","source","this","viewBox","fill","xmlns","fillRule","clipRule","DropdownMenu","homeUrl","mobileTitle","theme","useTheme","portalRoot","setPortalRoot","React","document","body","_items","concat","_activeIndex","activeItem","isExpanded","setIsExpanded","useState","handleClick","ReactDOM","children","forwardedRef"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ @-webkit-keyframes ktl-youtube-player-module_icon-rotating_2Fyhk{to{transform:rotate(360deg)}}@keyframes ktl-youtube-player-module_icon-rotating_2Fyhk{to{transform:rotate(360deg)}}:root{--ktl-light-grey:#f4f4f4;--ktl-dark-100:rgba(39, 40, 44, 1);--ktl-dark-bg-hard:rgba(27, 27, 27, 1);--ktl-icon-color-dark:rgba(39, 40, 44, 0.75);--ktl-color-white-light:rgba(255, 255, 255, 0.75);--ktl-transition-xfast:100ms;--ktl-transition-fast:300ms;--ktl-color-primary-light-theme:#7f52ff;--ktl-color-dark-40:rgba(39, 40, 44, 0.4);--ktl-light-text-hard:rgba(39, 40, 44, 1);--ktl-light-dark-20:rgba(39, 40, 44, 0.2);--ktl-overlay-z-index:900;--ktl-top-menu-z-index:905;--ktl-header-z-index:906;--ktl-header-height-mobile:48px}.ktl-youtube-player-module_youtube-player_1LdXl{position:relative;width:100%;height:100%;background:#000;display:flex;justify-content:center;align-items:center;cursor:pointer}.ktl-youtube-player-module_preview_3cKsx img{vertical-align:top}.ktl-youtube-player-module_preview-playlist_9wYxu{width:100%}.ktl-youtube-player-module_preview-playlist_9wYxu::before{content:"";display:block;padding-bottom:56.25%;background:var(--ktl-dark-100)}.ktl-youtube-player-module_player_3sUqM{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;display:none}.ktl-youtube-player-module_play-button_1McAa{padding:12px;position:absolute;top:calc(50% - 24px);left:calc(50% - 24px);border-radius:50%;border:0;transition:color var(--ktl-transition-fast);cursor:pointer;outline:0;height:48px}.ktl-youtube-player-module_play-button_white_G2Hij{color:var(--ktl-dark-100);background-color:#fff}.ktl-youtube-player-module_play-button_black_1toU4{color:#fff;background-color:var(--ktl-dark-100)}.ktl-youtube-player-module_play-button_primary_1eiAp{color:#fff;background:var(--ktl-color-primary-light-theme)}.ktl-youtube-player-module_hide_2xzS7{display:none}.ktl-youtube-player-module_image-preview_3-M16{display:block;width:100%}.ktl-youtube-player-module_show-video_21OmN .ktl-youtube-player-module_player_3sUqM{display:block}.ktl-youtube-player-module_show-video_21OmN .ktl-youtube-player-module_image-preview_3-M16{opacity:0}.ktl-youtube-player-module_icon-loading_2AJfE{-webkit-animation:ktl-youtube-player-module_icon-rotating_2Fyhk .7s linear infinite;animation:ktl-youtube-player-module_icon-rotating_2Fyhk .7s linear infinite;transform-origin:center center}
2
+ /*# sourceMappingURL=youtubePlayer.css.map*/
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["webpack://@jetbrains/kotlin-web-site-ui/./src/components/youtube-player/youtube-player.module.pcss","webpack://@jetbrains/kotlin-web-site-ui/./src/vars.pcss"],"names":[],"mappings":"iEA4FE,E,CACE,0B,yDADF,E,CACE,0BC7FJ,K,CACE,wB,CACA,kC,CACA,sC,CACA,4C,CACA,iD,CACA,4B,CACA,2B,CACA,uC,CACA,yC,CACA,yC,CACA,yC,CACA,yB,CACA,0B,CACA,wB,CACA,+B,CDbF,+C,CACE,iB,CACA,U,CACA,W,CACA,e,CACA,Y,CACA,sB,CACA,kB,CACA,c,CAGF,4C,CACE,kB,CAGF,iD,CACE,U,CAEA,yD,CACE,U,CACA,a,CACA,qB,CACA,8B,CAIJ,uC,CACE,iB,CACA,K,CACA,M,CACA,O,CACA,Q,CACA,U,CACA,W,CACA,Y,CAGF,4C,CACE,Y,CACA,iB,CACA,oB,CACA,qB,CACA,iB,CACA,Q,CACA,2C,CACA,c,CACA,S,CACA,W,CAEA,kD,CACE,yB,CACA,qB,CAGF,kD,CACE,U,CACA,oC,CAGF,oD,CACE,U,CACA,+C,CAIJ,qC,CACE,Y,CAGF,8C,CACE,a,CACA,U,CAIA,mF,CACE,a,CAGF,0F,CACE,S,CAIJ,6C,CACE,mF,CAAA,2E,CACA,8B","file":"youtubePlayer.css","sourcesContent":["@import 'src/vars.pcss';\n\n.youtube-player {\n position: relative;\n width: 100%;\n height: 100%;\n background: black;\n display: flex;\n justify-content: center;\n align-items: center;\n cursor: pointer;\n}\n\n.preview img {\n vertical-align: top;\n}\n\n.preview-playlist {\n width: 100%;\n\n &::before {\n content: \"\";\n display: block;\n padding-bottom: 56.25%;\n background: var(--ktl-dark-100);\n }\n}\n\n.player {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n width: 100%;\n height: 100%;\n display: none;\n}\n\n.play-button {\n padding: 12px;\n position: absolute;\n top: calc(50% - 24px);\n left: calc(50% - 24px);\n border-radius: 50%;\n border: none;\n transition: color var(--ktl-transition-fast);\n cursor: pointer;\n outline: none;\n height: 48px;\n\n &_white {\n color: var(--ktl-dark-100);\n background-color: #ffffff;\n }\n\n &_black {\n color: #ffffff;\n background-color: var(--ktl-dark-100);\n }\n\n &_primary {\n color: #ffffff;\n background: var(--ktl-color-primary-light-theme);\n }\n}\n\n.hide {\n display: none;\n}\n\n.image-preview {\n display: block;\n width: 100%;\n}\n\n.show-video {\n .player {\n display: block;\n }\n\n .image-preview {\n opacity: 0;\n }\n}\n\n.icon-loading {\n animation: icon-rotating .7s linear infinite;\n transform-origin: center center;\n}\n\n@keyframes icon-rotating {\n to {\n transform: rotate(360deg)\n }\n}\n",":root {\n --ktl-light-grey: #f4f4f4;\n --ktl-dark-100: rgba(39, 40, 44, 1);\n --ktl-dark-bg-hard: rgba(27, 27, 27, 1);\n --ktl-icon-color-dark: rgba(39, 40, 44, 0.75);\n --ktl-color-white-light: rgba(255, 255, 255, 0.75);\n --ktl-transition-xfast: 100ms;\n --ktl-transition-fast: 300ms;\n --ktl-color-primary-light-theme: #7f52ff;\n --ktl-color-dark-40: rgba(39, 40, 44, 0.4);\n --ktl-light-text-hard: rgba(39, 40, 44, 1);\n --ktl-light-dark-20: rgba(39, 40, 44, 0.2);\n --ktl-overlay-z-index: 900;\n --ktl-top-menu-z-index: 905;\n --ktl-header-z-index: 906;\n --ktl-header-height-mobile: 48px;\n}"],"sourceRoot":""}
@@ -0,0 +1,3 @@
1
+ /*! For license information please see youtubePlayer.js.LICENSE.txt */
2
+ !function(){var e={184:function(e,t){var r;!function(){"use strict";var n={}.hasOwnProperty;function o(){for(var e=[],t=0;t<arguments.length;t++){var r=arguments[t];if(r){var u=typeof r;if("string"===u||"number"===u)e.push(r);else if(Array.isArray(r)){if(r.length){var a=o.apply(null,r);a&&e.push(a)}}else if("object"===u)if(r.toString===Object.prototype.toString)for(var i in r)n.call(r,i)&&r[i]&&e.push(i);else e.push(r.toString())}}return e.join(" ")}e.exports?(o.default=o,e.exports=o):void 0===(r=function(){return o}.apply(t,[]))||(e.exports=r)}()},251:function(e,t,r){"use strict";var n=r(910),o=60103;if(60107,"function"==typeof Symbol&&Symbol.for){var u=Symbol.for;o=u("react.element"),u("react.fragment")}var a=n.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,i=Object.prototype.hasOwnProperty,l={key:!0,ref:!0,__self:!0,__source:!0};function s(e,t,r){var n,u={},s=null,c=null;for(n in void 0!==r&&(s=""+r),void 0!==t.key&&(s=""+t.key),void 0!==t.ref&&(c=t.ref),t)i.call(t,n)&&!l.hasOwnProperty(n)&&(u[n]=t[n]);if(e&&e.defaultProps)for(n in t=e.defaultProps)void 0===u[n]&&(u[n]=t[n]);return{$$typeof:o,type:e,key:s,ref:c,props:u,_owner:a.current}}t.jsx=s,t.jsxs=s},893:function(e,t,r){"use strict";e.exports=r(251)},910:function(e){"use strict";e.exports=require("react")}},t={};function r(n){var o=t[n];if(void 0!==o)return o.exports;var u=t[n]={exports:{}};return e[n](u,u.exports,r),u.exports}r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,{a:t}),t},r.d=function(e,t){for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var n={};!function(){"use strict";r.r(n),r.d(n,{default:function(){return j}});var e={};r.r(e),r.d(e,{Cp:function(){return p},n7:function(){return d},Z_:function(){return f},Th:function(){return c},hM:function(){return s},RN:function(){return i},Q2:function(){return l},W7:function(){return y},rN:function(){return a}});var t=r(910),o=r(184),u=r.n(o);const a="ktl-youtube-player-module_youtube-player_1LdXl",i="ktl-youtube-player-module_preview_3cKsx",l="ktl-youtube-player-module_preview-playlist_9wYxu",s="ktl-youtube-player-module_player_3sUqM",c="ktl-youtube-player-module_play-button_1McAa",p="ktl-youtube-player-module_hide_2xzS7",f="ktl-youtube-player-module_image-preview_3-M16",y="ktl-youtube-player-module_show-video_21OmN",d="ktl-youtube-player-module_icon-loading_2AJfE";var v;function h(){return h=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},h.apply(this,arguments)}var m,w=function(e){return t.createElement("svg",h({xmlns:"http://www.w3.org/2000/svg",width:24,height:24},e),v||(v=t.createElement("path",{d:"M19 12L8 4v16l11-8z"})))};function g(){return g=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},g.apply(this,arguments)}var _=function(e){return t.createElement("svg",g({xmlns:"http://www.w3.org/2000/svg",width:24,height:24},e),m||(m=t.createElement("path",{d:"M12 3.25A8.76 8.76 0 003.25 12h1.5A7.25 7.25 0 1112 19.25v1.5a8.75 8.75 0 100-17.5z"})))};var b=r(893);let x,S;!function(e){e[e.White=0]="White",e[e.Black=1]="Black",e[e.Primary=2]="Primary"}(x||(x={})),function(e){e[e.Single=0]="Single",e[e.Playlist=1]="Playlist"}(S||(S={}));var j=({id:r,mode:n=S.Single,startTime:o,autoplay:v=!1,width:h,height:m,preview:g,previewImgSrc:j,previewImgAlt:O,playButtonMode:P=x.White,className:k})=>{const[E,N]=(0,t.useState)(v),[T,R]=(0,t.useState)(!1),[M,A]=(0,t.useState)(!1),B=(0,t.useRef)(null),I=(0,t.useRef)(null),C=(0,t.useRef)(null);let Y=j;j||n!==S.Single||(Y="https://img.youtube.com/vi/".concat(r,"/maxresdefault.jpg"));const W={width:h,height:m};return(0,t.useEffect)((()=>{if(!E)return;var e;return(M?Promise.resolve(window.YT):(e="https://www.youtube.com/iframe_api",new Promise(((t,r)=>{const n=document.createElement("script");n.type="text/javascript",n.async=!0,n.src=e,n.onload=()=>t(),n.onerror=()=>r(),document.head.appendChild(n)}))).then((()=>new Promise((e=>{window.YT&&window.YT.loaded?e():window.onYouTubeIframeAPIReady=e})))).then((()=>A(!0))).then((()=>window.YT))).then((e=>{if(!B.current||!I.current)return;const{width:t,height:u}=B.current.getBoundingClientRect(),a={width:t,height:u,playerVars:{autoplay:1,rel:0,start:o,modestbranding:1},events:{onReady:()=>R(!1),onStateChange:e=>{0===e.data&&N(!1)}}};n===S.Single?a.videoId=r:a.playerVars={...a.playerVars,list:r,listType:"playlist"},C.current=new e.Player(I.current,a)})),()=>{C.current&&(C.current.destroy(),C.current=null)}}),[M,E,o,r,n]),(0,b.jsxs)("div",{ref:B,onClick:e=>{e.preventDefault(),N(!0),R(!0)},className:u()(a,k,{[y]:E}),style:W,children:[(0,b.jsxs)("div",{className:u()(i,{[l]:!g&&!Y&&n===S.Playlist}),children:[g||Y&&(0,b.jsx)("img",{src:Y,alt:O||"",className:f}),(0,b.jsx)("button",{type:"button",className:u()(c,{[p]:E&&!T,[e.playButton_white]:P===x.White,[e.playButton_black]:P===x.Black,[e.playButton_primary]:P===x.Primary}),children:T?(0,b.jsx)(_,{className:d}):(0,b.jsx)(w,{})})]}),(0,b.jsx)("div",{className:s,ref:I})]})}}(),module.exports=n}();
3
+ //# sourceMappingURL=youtubePlayer.js.map
@@ -0,0 +1,14 @@
1
+ /*!
2
+ Copyright (c) 2018 Jed Watson.
3
+ Licensed under the MIT License (MIT), see
4
+ http://jedwatson.github.io/classnames
5
+ */
6
+
7
+ /** @license React v16.14.0
8
+ * react-jsx-runtime.production.min.js
9
+ *
10
+ * Copyright (c) Facebook, Inc. and its affiliates.
11
+ *
12
+ * This source code is licensed under the MIT license found in the
13
+ * LICENSE file in the root directory of this source tree.
14
+ */
@@ -0,0 +1 @@
1
+ {"version":3,"file":"youtubePlayer.js","mappings":"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","sources":["webpack://@jetbrains/kotlin-web-site-ui/./node_modules/classnames/index.js","webpack://@jetbrains/kotlin-web-site-ui/./node_modules/react/cjs/react-jsx-runtime.production.min.js","webpack://@jetbrains/kotlin-web-site-ui/./node_modules/react/jsx-runtime.js","webpack://@jetbrains/kotlin-web-site-ui/external commonjs2 {\"commonjs2\":\"react\",\"commonjs\":\"react\"}","webpack://@jetbrains/kotlin-web-site-ui/webpack/bootstrap","webpack://@jetbrains/kotlin-web-site-ui/webpack/runtime/compat get default export","webpack://@jetbrains/kotlin-web-site-ui/webpack/runtime/define property getters","webpack://@jetbrains/kotlin-web-site-ui/webpack/runtime/hasOwnProperty shorthand","webpack://@jetbrains/kotlin-web-site-ui/webpack/runtime/make namespace object","webpack://@jetbrains/kotlin-web-site-ui/./src/components/youtube-player/youtube-player.module.pcss?0ac4","webpack://@jetbrains/kotlin-web-site-ui/./src/svg/play_24.svg","webpack://@jetbrains/kotlin-web-site-ui/./src/svg/loading_24.svg","webpack://@jetbrains/kotlin-web-site-ui/./src/components/youtube-player/youtube-player.tsx","webpack://@jetbrains/kotlin-web-site-ui/./src/components/youtube-player/index.ts","webpack://@jetbrains/kotlin-web-site-ui/./src/components/youtube-player/utils.ts"],"sourcesContent":["/*!\n Copyright (c) 2018 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString === Object.prototype.toString) {\n\t\t\t\t\tfor (var key in arg) {\n\t\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","/** @license React v16.14.0\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),g=60103;exports.Fragment=60107;if(\"function\"===typeof Symbol&&Symbol.for){var h=Symbol.for;g=h(\"react.element\");exports.Fragment=h(\"react.fragment\")}var m=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,n=Object.prototype.hasOwnProperty,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,k){var b,d={},e=null,l=null;void 0!==k&&(e=\"\"+k);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(l=a.ref);for(b in a)n.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:g,type:c,key:e,ref:l,props:d,_owner:m.current}}exports.jsx=q;exports.jsxs=q;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","module.exports = require(\"react\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// extracted by mini-css-extract-plugin\nexport const youtubePlayer = \"ktl-youtube-player-module_youtube-player_1LdXl\";\nexport const preview = \"ktl-youtube-player-module_preview_3cKsx\";\nexport const previewPlaylist = \"ktl-youtube-player-module_preview-playlist_9wYxu\";\nexport const player = \"ktl-youtube-player-module_player_3sUqM\";\nexport const playButton = \"ktl-youtube-player-module_play-button_1McAa\";\nexport const playButtonWhite = \"ktl-youtube-player-module_play-button_white_G2Hij\";\nexport const playButtonBlack = \"ktl-youtube-player-module_play-button_black_1toU4\";\nexport const playButtonPrimary = \"ktl-youtube-player-module_play-button_primary_1eiAp\";\nexport const hide = \"ktl-youtube-player-module_hide_2xzS7\";\nexport const imagePreview = \"ktl-youtube-player-module_image-preview_3-M16\";\nexport const showVideo = \"ktl-youtube-player-module_show-video_21OmN\";\nexport const iconLoading = \"ktl-youtube-player-module_icon-loading_2AJfE\";\nexport const iconRotating = \"ktl-youtube-player-module_icon-rotating_2Fyhk\";","var _path;\n\nfunction _extends() { _extends = Object.assign || 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); }\n\nimport * as React from \"react\";\n\nfunction SvgPlay24(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 24,\n height: 24\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19 12L8 4v16l11-8z\"\n })));\n}\n\nexport default SvgPlay24;","var _path;\n\nfunction _extends() { _extends = Object.assign || 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); }\n\nimport * as React from \"react\";\n\nfunction SvgLoading24(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 24,\n height: 24\n }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 3.25A8.76 8.76 0 003.25 12h1.5A7.25 7.25 0 1112 19.25v1.5a8.75 8.75 0 100-17.5z\"\n })));\n}\n\nexport default SvgLoading24;","import React, { FC, useEffect, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport * as styles from './youtube-player.module.pcss';\n\nimport PlayIcon from 'src/svg/play_24.svg';\nimport LoadingIcon from 'src/svg/loading_24.svg';\n\nimport { API_URL, loadExternalScript, waitForYouTubePlayerApi } from './utils';\n\nexport enum YoutubePlayButtonMode {\n White,\n Black,\n Primary,\n}\n\nexport enum YoutubePlayerMode {\n Single,\n Playlist,\n}\n\ninterface YoutubePlayerProps {\n id: string;\n mode?: YoutubePlayerMode;\n startTime?: number;\n autoplay?: boolean;\n width?: string;\n height?: string;\n preview?: JSX.Element;\n previewImgSrc?: string;\n previewImgAlt?: string;\n playButtonMode?: YoutubePlayButtonMode;\n className?: string;\n}\n\nexport const YoutubePlayer: FC<YoutubePlayerProps> = ({\n id,\n mode = YoutubePlayerMode.Single,\n startTime,\n autoplay = false,\n width,\n height,\n preview,\n previewImgSrc,\n previewImgAlt,\n playButtonMode = YoutubePlayButtonMode.White,\n className,\n}) => {\n const [showVideo, setShowVideo] = useState(autoplay);\n const [videoLoading, setVideoLoading] = useState(false);\n const [isAPILoaded, setAPILoaded] = useState(false);\n const playerWrapperDivRef = useRef<HTMLDivElement>(null);\n const playerDivRef = useRef<HTMLDivElement>(null);\n const playerInstanceRef = useRef<null | YT.Player>(null);\n let imgPreview = previewImgSrc;\n\n if (!previewImgSrc && mode === YoutubePlayerMode.Single) {\n imgPreview = `https://img.youtube.com/vi/${id}/maxresdefault.jpg`;\n }\n\n const wrapperStyles = {\n width: width,\n height: height,\n };\n\n useEffect(() => {\n if (!showVideo) {\n return;\n }\n\n const loadYouTubePlayerApi = () => {\n if (isAPILoaded) {\n return Promise.resolve(window.YT);\n }\n\n return loadExternalScript(API_URL)\n .then(() => waitForYouTubePlayerApi())\n .then(() => setAPILoaded(true))\n .then(() => window.YT);\n };\n\n loadYouTubePlayerApi().then((youtubeApi) => {\n if (!playerWrapperDivRef.current || !playerDivRef.current) {\n return;\n }\n\n const {\n width: videoWidth,\n height: videoHeight,\n } = playerWrapperDivRef.current.getBoundingClientRect();\n\n const options: YT.PlayerOptions = {\n width: videoWidth,\n height: videoHeight,\n playerVars: {\n autoplay: 1,\n rel: 0,\n start: startTime,\n modestbranding: 1,\n },\n events: {\n onReady: () => setVideoLoading(false),\n onStateChange: (event) => {\n if (event.data === 0) {\n setShowVideo(false);\n }\n },\n },\n };\n\n if (mode === YoutubePlayerMode.Single) {\n options.videoId = id;\n } else {\n options.playerVars = {\n ...options.playerVars,\n list: id,\n listType: 'playlist',\n };\n }\n\n playerInstanceRef.current = new youtubeApi.Player(\n playerDivRef.current as HTMLElement,\n options\n );\n });\n\n return () => {\n if (playerInstanceRef.current) {\n playerInstanceRef.current.destroy();\n playerInstanceRef.current = null;\n }\n };\n }, [isAPILoaded, showVideo, startTime, id, mode]);\n\n return (\n <div\n ref={playerWrapperDivRef}\n onClick={(e) => {\n e.preventDefault();\n setShowVideo(true);\n setVideoLoading(true);\n }}\n className={classNames(styles.youtubePlayer, className, {\n [styles.showVideo]: showVideo,\n })}\n style={wrapperStyles}\n >\n <div\n className={classNames(styles.preview, {\n [styles.previewPlaylist]:\n !preview && !imgPreview && mode === YoutubePlayerMode.Playlist,\n })}\n >\n {preview\n ? preview\n : imgPreview && (\n <img\n src={imgPreview}\n alt={previewImgAlt ? previewImgAlt : ''}\n className={styles.imagePreview}\n />\n )}\n\n <button\n type=\"button\"\n className={classNames(styles.playButton, {\n [styles.hide]: showVideo && !videoLoading,\n [styles.playButton_white]:\n playButtonMode === YoutubePlayButtonMode.White,\n [styles.playButton_black]:\n playButtonMode === YoutubePlayButtonMode.Black,\n [styles.playButton_primary]:\n playButtonMode === YoutubePlayButtonMode.Primary,\n })}\n >\n {videoLoading ? (\n <LoadingIcon className={styles.iconLoading} />\n ) : (\n <PlayIcon />\n )}\n </button>\n </div>\n <div className={styles.player} ref={playerDivRef} />\n </div>\n );\n};\n","import { YoutubePlayer } from './youtube-player';\nexport default YoutubePlayer;\n\n","export const API_URL = 'https://www.youtube.com/iframe_api';\n\nexport function waitForYouTubePlayerApi(): Promise<void> {\n return new Promise(resolve => {\n if (window.YT && window.YT.loaded) {\n resolve();\n } else {\n window.onYouTubeIframeAPIReady = resolve;\n }\n });\n}\n\nexport function loadExternalScript(url: string): Promise<void> {\n return new Promise((resolve, reject) => {\n const script: HTMLScriptElement = document.createElement('script');\n script.type = 'text/javascript';\n script.async = true;\n script.src = url;\n script.onload = () => resolve();\n script.onerror = () => reject();\n document.head.appendChild(script);\n });\n}\n"],"names":["hasOwn","hasOwnProperty","classNames","classes","i","arguments","length","arg","argType","push","Array","isArray","inner","apply","toString","Object","prototype","key","call","join","module","exports","default","f","g","Symbol","for","h","m","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","ReactCurrentOwner","n","p","ref","__self","__source","q","c","a","k","b","d","e","l","defaultProps","$$typeof","type","props","_owner","current","jsx","jsxs","require","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","getter","__esModule","definition","o","defineProperty","enumerable","get","obj","prop","r","toStringTag","value","youtubePlayer","previewPlaylist","player","playButton","hide","imagePreview","iconLoading","_path","_extends","assign","target","source","this","xmlns","width","height","YoutubePlayButtonMode","YoutubePlayerMode","id","mode","Single","startTime","autoplay","preview","previewImgSrc","previewImgAlt","playButtonMode","White","className","showVideo","setShowVideo","useState","videoLoading","setVideoLoading","isAPILoaded","setAPILoaded","playerWrapperDivRef","useRef","playerDivRef","playerInstanceRef","imgPreview","wrapperStyles","useEffect","url","Promise","resolve","window","YT","reject","script","document","createElement","async","src","onload","onerror","head","appendChild","then","loaded","onYouTubeIframeAPIReady","youtubeApi","videoWidth","videoHeight","getBoundingClientRect","options","playerVars","rel","start","modestbranding","events","onReady","onStateChange","event","data","videoId","list","listType","Player","destroy","onClick","preventDefault","styles","style","Playlist","alt","Black","Primary"],"sourceRoot":""}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@jetbrains/kotlin-web-site-ui",
3
3
  "description": "UI components for Kotlin web sites development",
4
- "version": "2.6.2",
4
+ "version": "2.7.3",
5
5
  "license": "Apache-2.0",
6
6
  "author": "JetBrains",
7
7
  "files": [
@@ -45,6 +45,7 @@
45
45
  "@types/react": "^17.0.0",
46
46
  "@types/react-dom": "^17.0.0",
47
47
  "@types/react-swipeable-views": "^0.13.1",
48
+ "@types/youtube": "^0.0.45",
48
49
  "@typescript-eslint/eslint-plugin": "^4.22.0",
49
50
  "@typescript-eslint/parser": "^4.22.0",
50
51
  "autoprefixer": "^10.2.5",