├── .editorconfig ├── .eslintrc.js ├── .gitignore ├── .npmignore ├── .storybook ├── main.js └── preview.js ├── LICENSE ├── README-CN.md ├── README.md ├── dist ├── style.css ├── vue-loading-skeleton.cjs.js ├── vue-loading-skeleton.es.js └── vue-loading-skeleton.umd.js ├── docs ├── 0.0a0da810.iframe.bundle.js ├── 0.0a0da810.iframe.bundle.js.LICENSE.txt ├── 0.0a0da810.iframe.bundle.js.map ├── 0.799c368cbe88266827ba.manager.bundle.js ├── 1.77eff89f.iframe.bundle.js ├── 1.77eff89f.iframe.bundle.js.LICENSE.txt ├── 1.77eff89f.iframe.bundle.js.map ├── 1.9ebd2fb519f6726108de.manager.bundle.js ├── 10.6dedbf62.iframe.bundle.js ├── 10.a85ea1a67689be8e19ff.manager.bundle.js ├── 11.f4e922583ae35da460f3.manager.bundle.js ├── 11.f4e922583ae35da460f3.manager.bundle.js.LICENSE.txt ├── 12.1415460941f0bdcb8fa8.manager.bundle.js ├── 2.8ee2e21f.iframe.bundle.js ├── 2.8ee2e21f.iframe.bundle.js.LICENSE.txt ├── 2.8ee2e21f.iframe.bundle.js.map ├── 3.d584082f.iframe.bundle.js ├── 4.f9fdbe4b.iframe.bundle.js ├── 5.f459d151315e6780c20f.manager.bundle.js ├── 5.f459d151315e6780c20f.manager.bundle.js.LICENSE.txt ├── 6.3bd64d820f3745f262ff.manager.bundle.js ├── 7.3d04765dbf3f1dcd706c.manager.bundle.js ├── 8.b541eadfcb9164835dfc.manager.bundle.js ├── 8.dc161eb8.iframe.bundle.js ├── 9.411ac8e451bbb10926c7.manager.bundle.js ├── 9.7709c9e9.iframe.bundle.js ├── 9.7709c9e9.iframe.bundle.js.LICENSE.txt ├── 9.7709c9e9.iframe.bundle.js.map ├── favicon.ico ├── iframe.html ├── index.html ├── main.e2663b1cf842947d1a59.manager.bundle.js ├── main.ec767765.iframe.bundle.js ├── runtime~main.91a0c7330ab317d35c4a.manager.bundle.js ├── runtime~main.cddebdd1.iframe.bundle.js ├── vendors~main.ebe7153f.iframe.bundle.js ├── vendors~main.ebe7153f.iframe.bundle.js.LICENSE.txt ├── vendors~main.ebe7153f.iframe.bundle.js.map ├── vendors~main.f7f16cebbf3aa96a4f89.manager.bundle.js └── vendors~main.f7f16cebbf3aa96a4f89.manager.bundle.js.LICENSE.txt ├── jest.config.js ├── package.json ├── postcss.config.js ├── rollup.config.js ├── src ├── composition │ └── theme.ts ├── env.d.ts ├── index.ts ├── skeleton-theme.vue ├── skeleton.vue ├── stories │ ├── assets │ │ ├── code-brackets.svg │ │ ├── colors.svg │ │ ├── comments.svg │ │ ├── direction.svg │ │ ├── flow.svg │ │ ├── plugin.svg │ │ ├── repo.svg │ │ └── stackalt.svg │ ├── index.stories.js │ ├── item-with-if.vue │ ├── item.vue │ └── theme.stories.js └── style.css ├── tests └── unit │ ├── .eslintrc.js │ ├── __snapshots__ │ └── storybook.spec.js.snap │ ├── register-context.js │ └── storybook.spec.js ├── tsconfig.json ├── tsconfig.node.json ├── types ├── composition │ └── theme.d.ts ├── index.d.ts ├── skeleton-theme.vue.d.ts └── skeleton.vue.d.ts ├── vite.config.ts └── yarn.lock /.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{js,jsx,ts,tsx,vue,md}] 2 | indent_style = space 3 | indent_size = 2 4 | end_of_line = lf 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | max_line_length = 100 8 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | env: { 4 | node: true 5 | }, 6 | "parserOptions": { 7 | "ecmaVersion": 8, 8 | "sourceType": "module" 9 | }, 10 | extends: [ 11 | "@vue/typescript/recommended", 12 | 'plugin:vue/vue3-recommended', 13 | "prettier" 14 | ], 15 | rules: { 16 | 'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off', 17 | 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off', 18 | '@typescript-eslint/no-explicit-any': 'off', 19 | 'comma-dangle': ['error', 'never'] 20 | } 21 | }; 22 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | 4 | # local env files 5 | .env.local 6 | .env.*.local 7 | 8 | # Log files 9 | npm-debug.log* 10 | yarn-debug.log* 11 | yarn-error.log* 12 | 13 | # Editor directories and files 14 | .idea 15 | .vscode 16 | *.suo 17 | *.ntvs* 18 | *.njsproj 19 | *.sln 20 | *.sw? 21 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | 3 | #npm 4 | yarn.lock 5 | package-lock.json 6 | node_modules 7 | 8 | #doc 9 | docs 10 | 11 | #dev 12 | tests 13 | 14 | #storybook 15 | .storybook 16 | src/stories 17 | 18 | #other 19 | *.config.js 20 | .browserslistrc 21 | .editorconfig 22 | .eslintrc -------------------------------------------------------------------------------- /.storybook/main.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | "stories": [ 3 | "../src/**/*.stories.mdx", 4 | "../src/**/*.stories.@(js|jsx|ts|tsx)" 5 | ], 6 | "addons": [ 7 | "@storybook/addon-links", 8 | "@storybook/addon-essentials", 9 | ], 10 | "framework": "@storybook/vue3" 11 | } 12 | -------------------------------------------------------------------------------- /.storybook/preview.js: -------------------------------------------------------------------------------- 1 | export const parameters = { 2 | actions: { argTypesRegex: "^on[A-Z].*" }, 3 | controls: { 4 | matchers: { 5 | color: /(background|color)$/i, 6 | date: /Date$/, 7 | }, 8 | }, 9 | } 10 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT LICENSE 2 | 3 | Copyright (c) 2019-present Kitwang Chen, https://blog.kiit.wang/blog 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining 6 | a copy of this software and associated documentation files (the 7 | "Software"), to deal in the Software without restriction, including 8 | without limitation the rights to use, copy, modify, merge, publish, 9 | distribute, sublicense, and/or sell copies of the Software, and to 10 | permit persons to whom the Software is furnished to do so, subject to 11 | the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be 14 | included in all copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 19 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 20 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 21 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 22 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /README-CN.md: -------------------------------------------------------------------------------- 1 | # 💅🏻 Vue-loading-skeleton 2 | 3 | 能自动适应外层样式的vue骨架屏组件。 4 | 5 | [💡Demos of storybook](https://kitwon.github.io/vue-loading-skeleton/) 6 | 7 | ## 安装使用 8 | `npm install vue-loading-skeleton -S` 9 | or 10 | `yarn add vue-loading-skeleton` 11 | 12 | ```jsx 13 | import { Skeleton } from 'vue-loading-skeleton'; 14 | import "vue-loading-skeleton/dist/style.css" 15 | 16 | // In jsx template 17 | 18 | 19 | ``` 20 | 21 | 或者在全局中注册组件 22 | 23 | ```jsx 24 | import Vue from 'vue'; 25 | import Skeleton from 'vue-loading-skeleton'; 26 | import "vue-loading-skeleton/dist/style.css" 27 | 28 | Vue.use(Skeleton); 29 | 30 | // In jsx template 31 | 32 | 33 | ``` 34 | 35 | ## 🌈 Introduction 36 | 37 | ### 自动适应你定义的样式 38 | ``设计目的是能直接在你的vue组件中嵌套使用,组件能在加载时候自动用骨架填充空白的内容,所以你不用特别地设计字体大小、边距或其他样式与页面一样专用的骨架屏,因为组件会自动用合适的尺寸填充元素。 39 | 40 | 举个🌰: 41 | ```html 42 |
43 |
44 | 45 | {{ props.data.img }} 46 | 47 |
48 |
49 |
50 | {{ props.data.title }} 51 |
52 |
53 | {{ props.data.body }} 54 |
55 |
56 |
57 | ``` 58 | 59 | ### ⚠️ 需要注意的地方 60 | 由于组件是使用子节点的`tag`和`text`判断内容是否为空,从而判断组件的加载状态。所以当组件表现异常时候,你可以用`v-if`或者用`loading props`去替代组件嵌套。并希望能把问题及时反馈给我。 61 | 62 | ## 📔Usage 63 | 64 | ### 一般使用 65 | ```html 66 |
67 | 68 | {{ content }} 69 | 70 |
71 | ``` 72 | 73 | ### 结合v-if使用 74 | ```html 75 |
76 | 77 | 78 |
79 | ``` 80 | 81 | ### 列表骨架 82 | 很多时候,骨架都会以列表的形式出现,所以你可以在循环的时候使用数字作为列表数据的默认值。 83 | ️⚠️但是要注意,因为使用数字去循环生成列表,所以要确保列表里的组件在绑定值的时候都有空值判断,避免出现`ReferenceError`。 84 | 85 | ```html 86 |
87 | 88 | {{ item.content }} 89 | 90 |
91 | ``` 92 | 93 | ```javascript 94 | export default { 95 | data() { 96 | return { 97 | data: 10 98 | } 99 | }, 100 | async created() { 101 | // some data fetch action 102 | const { data } = await fetchData(); 103 | this.data = data; 104 | } 105 | } 106 | ``` 107 | 108 | ### 改变全局样式 109 | 使用 `` 组件设置所有子组件的样式: 110 | 111 | ```jsx 112 | import { Skeleton, Skeleton } form 'vue-loading-skeleton'; 113 | 114 | 115 |
116 |
117 | 118 | {{ props.data.img }} 119 | 120 |
121 |
122 |
123 | {{ props.data.title }} 124 |
125 |
126 | {{ props.data.body }} 127 |
128 |
129 |
130 |
131 | ``` 132 | 133 | ### Skeleton props 134 | | props | description | type | default | 135 | | -------- | --------------------------------------------- | ------- | --------- | 136 | | count | 单个组件里面显示的数量 | number | 1 | 137 | | duration | 动画过渡时间,0的时候为关闭动画 | number | 1.5 | 138 | | width | 组件长度 | string | | 139 | | height | 组件高度 | string | | 140 | | circle | 设置为圆形 | boolean | false | 141 | | loading | 组件加载状态,使用这个props时候不会检测子节点 | boolean | undefined | 142 | 143 | ### SkeletonTheme props 144 | | props | description | type | default | 145 | | --------- | ------------------------------ | ------- | --------- | 146 | | color | 骨架的颜色 | string | #eeeeee | 147 | | highlight | 动画高亮颜色 | string | #f5f5f5 | 148 | | duration | 设置所有骨架组件的动画过渡时间 | number | 1.5 | 149 | | loading | 控制所有骨架组件加载状态 | boolean | undefined | 150 | | tag | 容器标签 | string | div | 151 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 💅🏻 Vue-loading-skeleton 2 | 3 | Make beautiful loading skeleton that automatically adapt your vue app. 4 | 5 | [💡Demos of storybook](https://kitwon.github.io/vue-loading-skeleton/) 6 | 7 | [📕中文文档](https://github.com/kitwon/vue-loading-skeleton/blob/master/README-CN.md) 8 | 9 | ## Install 10 | yarn 11 | `yarn add vue-loading-skeleton@next` 12 | or npm 13 | `npm install vue-loading-skeleton@next` 14 | 15 | ## Base usage 16 | Install by `npm`/`yarn` with vue-loading-skeleton 17 | 18 | ```jsx 19 | import { Skeleton } from 'vue-loading-skeleton'; 20 | import "vue-loading-skeleton/dist/style.css" 21 | 22 | // In jsx template 23 | 24 | 25 | ``` 26 | 27 | Or register for global component 28 | 29 | ```jsx 30 | import Vue from 'vue'; 31 | import Skeleton from 'vue-loading-skeleton'; 32 | import "vue-loading-skeleton/dist/style.css" 33 | 34 | Vue.use(Skeleton) 35 | 36 | // In jsx template 37 | 38 | 39 | ``` 40 | 41 | ## 🌈 Introduction 42 | 43 | ### Adapts to the styles you have defined 44 | The `` component is design to used directly in your vue component. It can replace the main content while page still in loading. So you don't need to prepare a skeleton screen meticulously to match the `font-size`, `margin` or another style your content takes on, wrap the content with the `` component, it will automatically fill the correct dimensions. 45 | 46 | For example: 47 | ```html 48 |
49 |
50 | 51 | {{ props.data.img }} 52 | 53 |
54 |
55 |
56 | {{ props.data.title }} 57 |
58 |
59 | {{ props.data.body }} 60 |
61 |
62 |
63 | ``` 64 | 65 | ### ⚠️ Notice 66 | The skeleton component will check the `tag` and `text` in the first child node. If you find the component work is not in expect, you should use `v-if` or `loading props`, and report the issues to me. 67 | 68 | ## 📔Usage 69 | 70 | ### Base usage 71 | ```html 72 |
73 | 74 | {{ content }} 75 | 76 |
77 | ``` 78 | 79 | ### Use v-if 80 | ```html 81 |
82 | 83 | 84 |
85 | ``` 86 | 87 | ### List Skeleton 88 | In many cases, you need a skeleton list to fulfill a listing page. You can set the list data default to the number. Such as: 89 | 90 | ```html 91 |
92 | 93 | {{ item.content }} 94 | 95 |
96 | ``` 97 | 98 | ```javascript 99 | export default { 100 | data() { 101 | return { 102 | data: 10 103 | } 104 | }, 105 | async created() { 106 | // some data fetch action 107 | const { data } = await fetchData(); 108 | this.data = data; 109 | } 110 | } 111 | ``` 112 | 113 | ### Theming 114 | Using the `` component, you can change the color, duration of all skeleton components below it: 115 | 116 | ```jsx 117 | import { Skeleton, Skeleton } form 'vue-loading-skeleton'; 118 | 119 | 120 |
121 |
122 | 123 | {{ props.data.img }} 124 | 125 |
126 |
127 |
128 | {{ props.data.title }} 129 |
130 |
131 | {{ props.data.body }} 132 |
133 |
134 |
135 |
136 | ``` 137 | 138 | ### Skeleton props 139 | | props | description | type | default | 140 | | -------- | ------------------------------------ | ------- | --------- | 141 | | count | rows count of component | number | 1 | 142 | | duration | animation duration time, 0 as close | number | 1.5 | 143 | | width | component width | string | | 144 | | height | component height | string | | 145 | | circle | make the skeleton look like a circle | boolean | false | 146 | | loading | skeleton loading status | boolean | undefined | 147 | 148 | ### SkeletonTheme props 149 | | props | description | type | default | 150 | | --------- | --------------------------------------- | ------- | --------- | 151 | | color | skeleton background color | string | #eeeeee | 152 | | highlight | animation highlight color | string | #f5f5f5 | 153 | | duration | set duration of all skeleton | number | 1.5 | 154 | | loading | control loading status of all skeletons | boolean | undefined | 155 | | tag | theme container tag name | string | div | 156 | -------------------------------------------------------------------------------- /dist/style.css: -------------------------------------------------------------------------------- 1 | .pu-skeleton{background-size:200px 100%;background-repeat:no-repeat;border-radius:3px;display:inline-block;line-height:1;width:100%;height:inherit}@-webkit-keyframes SkeletonLoading{0%{background-position:-200px 0}to{background-position:calc(200px + 100%) 0}}@keyframes SkeletonLoading{0%{background-position:-200px 0}to{background-position:calc(200px + 100%) 0}} 2 | -------------------------------------------------------------------------------- /dist/vue-loading-skeleton.cjs.js: -------------------------------------------------------------------------------- 1 | "use strict";var _=Object.defineProperty;var S=Object.getOwnPropertySymbols;var $=Object.prototype.hasOwnProperty,L=Object.prototype.propertyIsEnumerable;var s=(e,t,n)=>t in e?_(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,l=(e,t)=>{for(var n in t||(t={}))$.call(t,n)&&s(e,n,t[n]);if(S)for(var n of S(t))L.call(t,n)&&s(e,n,t[n]);return e};Object.defineProperty(exports,"__esModule",{value:!0});exports[Symbol.toStringTag]="Module";var i=require("vue");const c="#eeeeee",v="#f5f5f5",k={animation:"",backgroundColor:c,backgroundImage:`linear-gradient( 2 | 90deg, 3 | ${c}, 4 | ${v}, 5 | ${c} 6 | )`},b=Symbol("_themeStyle"),N=Symbol("_theme");function P(){return N}const T=P(),w=i.defineComponent({name:"PuSkeletonTheme",props:{color:{type:String,default:c},highlight:{type:String,default:v},duration:{type:Number,default:1.5},tag:{type:String,default:"div"},loading:{type:Boolean,default:void 0}},setup(e,{slots:t}){const n=i.computed(()=>{const{color:a,highlight:u,duration:d}=e,r=l({},k);return r.backgroundColor=a,r.backgroundImage=`linear-gradient( 7 | 90deg, 8 | ${a}, 9 | ${u}, 10 | ${a} 11 | )`,d?r.animation=`SkeletonLoading ${d}s ease-in-out infinite`:(r.animation="",r.backgroundImage=""),r});return i.provide(b,n),i.provide(T,e),()=>{var a,u;return e.tag?i.h(e.tag,(a=t.default)==null?void 0:a.call(t)):(u=t.default)==null?void 0:u.call(t)[0]}}}),I=w;const j=e=>{if(!e)return!0;const[t]=e;let n=t.children;return!t.el&&!n},A=i.defineComponent({name:"PuSkeleton",props:{prefix:{type:String,default:"pu"},count:{type:Number,default:1},duration:{type:Number,default:1.5},tag:{type:String,default:"span"},width:{type:[String,Number],default:0},height:{type:[String,Number],default:0},circle:Boolean,loading:{type:[Boolean,Object,Array],default:void 0}},setup(e,{slots:t}){const n=i.inject(T,{}),a=i.inject(b,{value:l({},k)}),u=i.computed(()=>typeof(n==null?void 0:n.loading)!="undefined"?n.loading:e.loading),d=i.computed(()=>[`${e.prefix}-skeleton`]),r=i.computed(()=>{if(!a)return{};const o=l({},a==null?void 0:a.value);return e.duration?o.animation=`SkeletonLoading ${e.duration}s ease-in-out infinite`:o.backgroundImage="",e.width&&(o.width=e.width),e.height&&(o.height=e.height),e.circle&&(o.borderRadius="50%"),o});return()=>{var y;const o=(y=t.default)==null?void 0:y.call(t),g=typeof u.value!="undefined"?u.value:j(o),h=Array(g?e.count:0).fill(0).map((B,p)=>i.h("span",{key:p,class:d.value,style:r.value,innerHTML:"‌"}));return e.tag?i.h(e.tag,g?h:o):g?i.h("span",h):o}}}),f=A,m=I;var C={install(e){e.component(f.name,f),e.component(m.name,m)}};exports.Skeleton=f;exports.SkeletonTheme=m;exports.default=C; 12 | -------------------------------------------------------------------------------- /dist/vue-loading-skeleton.es.js: -------------------------------------------------------------------------------- 1 | var __defProp = Object.defineProperty; 2 | var __getOwnPropSymbols = Object.getOwnPropertySymbols; 3 | var __hasOwnProp = Object.prototype.hasOwnProperty; 4 | var __propIsEnum = Object.prototype.propertyIsEnumerable; 5 | var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; 6 | var __spreadValues = (a, b) => { 7 | for (var prop in b || (b = {})) 8 | if (__hasOwnProp.call(b, prop)) 9 | __defNormalProp(a, prop, b[prop]); 10 | if (__getOwnPropSymbols) 11 | for (var prop of __getOwnPropSymbols(b)) { 12 | if (__propIsEnum.call(b, prop)) 13 | __defNormalProp(a, prop, b[prop]); 14 | } 15 | return a; 16 | }; 17 | import { defineComponent, computed, provide, h, inject } from "vue"; 18 | const DEFAULT_BACKGROUND = "#eeeeee"; 19 | const DEFAULT_HIGHLIGHT = "#f5f5f5"; 20 | const SkeletonStyle = { 21 | animation: "", 22 | backgroundColor: DEFAULT_BACKGROUND, 23 | backgroundImage: `linear-gradient( 24 | 90deg, 25 | ${DEFAULT_BACKGROUND}, 26 | ${DEFAULT_HIGHLIGHT}, 27 | ${DEFAULT_BACKGROUND} 28 | )` 29 | }; 30 | const ThemeStyleProviderKey = Symbol("_themeStyle"); 31 | const ThemeProviderKey = Symbol("_theme"); 32 | function createThemeProvider() { 33 | return ThemeProviderKey; 34 | } 35 | const ThemeProvider = createThemeProvider(); 36 | const SkeletonTheme$1 = defineComponent({ 37 | name: "PuSkeletonTheme", 38 | props: { 39 | color: { 40 | type: String, 41 | default: DEFAULT_BACKGROUND 42 | }, 43 | highlight: { 44 | type: String, 45 | default: DEFAULT_HIGHLIGHT 46 | }, 47 | duration: { 48 | type: Number, 49 | default: 1.5 50 | }, 51 | tag: { 52 | type: String, 53 | default: "div" 54 | }, 55 | loading: { 56 | type: Boolean, 57 | default: void 0 58 | } 59 | }, 60 | setup(props, { slots }) { 61 | const themeStyle = computed(() => { 62 | const { color, highlight, duration } = props; 63 | const style2 = __spreadValues({}, SkeletonStyle); 64 | style2.backgroundColor = color; 65 | style2.backgroundImage = `linear-gradient( 66 | 90deg, 67 | ${color}, 68 | ${highlight}, 69 | ${color} 70 | )`; 71 | if (duration) { 72 | style2.animation = `SkeletonLoading ${duration}s ease-in-out infinite`; 73 | } else { 74 | style2.animation = ""; 75 | style2.backgroundImage = ""; 76 | } 77 | return style2; 78 | }); 79 | provide(ThemeStyleProviderKey, themeStyle); 80 | provide(ThemeProvider, props); 81 | return () => { 82 | var _a, _b; 83 | if (props.tag) { 84 | return h(props.tag, (_a = slots.default) == null ? void 0 : _a.call(slots)); 85 | } 86 | return (_b = slots.default) == null ? void 0 : _b.call(slots)[0]; 87 | }; 88 | } 89 | }); 90 | const _sfc_main$1 = SkeletonTheme$1; 91 | var style = ""; 92 | const isEmptyVNode = (children) => { 93 | if (!children) 94 | return true; 95 | const [firstNode] = children; 96 | let str = firstNode.children; 97 | return !firstNode.el && !str; 98 | }; 99 | const _sfc_main = defineComponent({ 100 | name: "PuSkeleton", 101 | props: { 102 | prefix: { 103 | type: String, 104 | default: "pu" 105 | }, 106 | count: { 107 | type: Number, 108 | default: 1 109 | }, 110 | duration: { 111 | type: Number, 112 | default: 1.5 113 | }, 114 | tag: { 115 | type: String, 116 | default: "span" 117 | }, 118 | width: { 119 | type: [String, Number], 120 | default: 0 121 | }, 122 | height: { 123 | type: [String, Number], 124 | default: 0 125 | }, 126 | circle: Boolean, 127 | loading: { 128 | type: [Boolean, Object, Array], 129 | default: void 0 130 | } 131 | }, 132 | setup(props, { slots }) { 133 | const theme = inject(ThemeProvider, {}); 134 | const themeStyle = inject(ThemeStyleProviderKey, { 135 | value: __spreadValues({}, SkeletonStyle) 136 | }); 137 | const isLoading = computed(() => { 138 | return typeof (theme == null ? void 0 : theme.loading) !== "undefined" ? theme.loading : props.loading; 139 | }); 140 | const classes = computed(() => { 141 | return [`${props.prefix}-skeleton`]; 142 | }); 143 | const styles = computed(() => { 144 | if (!themeStyle) 145 | return {}; 146 | const s = __spreadValues({}, themeStyle == null ? void 0 : themeStyle.value); 147 | if (props.duration) { 148 | s.animation = `SkeletonLoading ${props.duration}s ease-in-out infinite`; 149 | } else { 150 | s.backgroundImage = ""; 151 | } 152 | if (props.width) 153 | s.width = props.width; 154 | if (props.height) 155 | s.height = props.height; 156 | if (props.circle) 157 | s.borderRadius = "50%"; 158 | return s; 159 | }); 160 | return () => { 161 | var _a; 162 | const defaultSlot = (_a = slots.default) == null ? void 0 : _a.call(slots); 163 | const showLoading = typeof isLoading.value !== "undefined" ? isLoading.value : isEmptyVNode(defaultSlot); 164 | const elements = Array(showLoading ? props.count : 0).fill(0).map((_, idx) => { 165 | return h("span", { 166 | key: idx, 167 | class: classes.value, 168 | style: styles.value, 169 | innerHTML: "‌" 170 | }); 171 | }); 172 | if (props.tag) { 173 | return h(props.tag, !showLoading ? defaultSlot : elements); 174 | } 175 | return !showLoading ? defaultSlot : h("span", elements); 176 | }; 177 | } 178 | }); 179 | const Skeleton = _sfc_main; 180 | const SkeletonTheme = _sfc_main$1; 181 | var index = { 182 | install(Vue) { 183 | Vue.component(Skeleton.name, Skeleton); 184 | Vue.component(SkeletonTheme.name, SkeletonTheme); 185 | } 186 | }; 187 | export { Skeleton, SkeletonTheme, index as default }; 188 | -------------------------------------------------------------------------------- /dist/vue-loading-skeleton.umd.js: -------------------------------------------------------------------------------- 1 | var w=Object.defineProperty;var p=Object.getOwnPropertySymbols;var I=Object.prototype.hasOwnProperty,A=Object.prototype.propertyIsEnumerable;var _=(n,e,i)=>e in n?w(n,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):n[e]=i,f=(n,e)=>{for(var i in e||(e={}))I.call(e,i)&&_(n,i,e[i]);if(p)for(var i of p(e))A.call(e,i)&&_(n,i,e[i]);return n};(function(n,e){typeof exports=="object"&&typeof module!="undefined"?e(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],e):(n=typeof globalThis!="undefined"?globalThis:n||self,e(n["vue-loading-skeleton"]={},n.Vue))})(this,function(n,e){"use strict";const i="#eeeeee",y="#f5f5f5",s={animation:"",backgroundColor:i,backgroundImage:`linear-gradient( 2 | 90deg, 3 | ${i}, 4 | ${y}, 5 | ${i} 6 | )`},S=Symbol("_themeStyle"),$=Symbol("_theme");function v(){return $}const k=v(),L=e.defineComponent({name:"PuSkeletonTheme",props:{color:{type:String,default:i},highlight:{type:String,default:y},duration:{type:Number,default:1.5},tag:{type:String,default:"div"},loading:{type:Boolean,default:void 0}},setup(t,{slots:o}){const r=e.computed(()=>{const{color:a,highlight:l,duration:c}=t,u=f({},s);return u.backgroundColor=a,u.backgroundImage=`linear-gradient( 7 | 90deg, 8 | ${a}, 9 | ${l}, 10 | ${a} 11 | )`,c?u.animation=`SkeletonLoading ${c}s ease-in-out infinite`:(u.animation="",u.backgroundImage=""),u});return e.provide(S,r),e.provide(k,t),()=>{var a,l;return t.tag?e.h(t.tag,(a=o.default)==null?void 0:a.call(o)):(l=o.default)==null?void 0:l.call(o)[0]}}});var B="";const N=t=>{if(!t)return!0;const[o]=t;let r=o.children;return!o.el&&!r},g=e.defineComponent({name:"PuSkeleton",props:{prefix:{type:String,default:"pu"},count:{type:Number,default:1},duration:{type:Number,default:1.5},tag:{type:String,default:"span"},width:{type:[String,Number],default:0},height:{type:[String,Number],default:0},circle:Boolean,loading:{type:[Boolean,Object,Array],default:void 0}},setup(t,{slots:o}){const r=e.inject(k,{}),a=e.inject(S,{value:f({},s)}),l=e.computed(()=>typeof(r==null?void 0:r.loading)!="undefined"?r.loading:t.loading),c=e.computed(()=>[`${t.prefix}-skeleton`]),u=e.computed(()=>{if(!a)return{};const d=f({},a==null?void 0:a.value);return t.duration?d.animation=`SkeletonLoading ${t.duration}s ease-in-out infinite`:d.backgroundImage="",t.width&&(d.width=t.width),t.height&&(d.height=t.height),t.circle&&(d.borderRadius="50%"),d});return()=>{var T;const d=(T=o.default)==null?void 0:T.call(o),h=typeof l.value!="undefined"?l.value:N(d),b=Array(h?t.count:0).fill(0).map((D,j)=>e.h("span",{key:j,class:c.value,style:u.value,innerHTML:"‌"}));return t.tag?e.h(t.tag,h?b:d):h?e.h("span",b):d}}}),m=L;var P={install(t){t.component(g.name,g),t.component(m.name,m)}};n.Skeleton=g,n.SkeletonTheme=m,n.default=P,Object.defineProperty(n,"__esModule",{value:!0}),n[Symbol.toStringTag]="Module"}); 12 | -------------------------------------------------------------------------------- /docs/0.0a0da810.iframe.bundle.js.LICENSE.txt: -------------------------------------------------------------------------------- 1 | /** @license React v0.19.1 2 | * scheduler.production.min.js 3 | * 4 | * Copyright (c) Facebook, Inc. and its affiliates. 5 | * 6 | * This source code is licensed under the MIT license found in the 7 | * LICENSE file in the root directory of this source tree. 8 | */ 9 | 10 | /** @license React v16.14.0 11 | * react-dom.production.min.js 12 | * 13 | * Copyright (c) Facebook, Inc. and its affiliates. 14 | * 15 | * This source code is licensed under the MIT license found in the 16 | * LICENSE file in the root directory of this source tree. 17 | */ 18 | -------------------------------------------------------------------------------- /docs/0.0a0da810.iframe.bundle.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"0.0a0da810.iframe.bundle.js","sources":[],"mappings":";A","sourceRoot":""} -------------------------------------------------------------------------------- /docs/1.77eff89f.iframe.bundle.js.LICENSE.txt: -------------------------------------------------------------------------------- 1 | /** @license React v16.13.1 2 | * react-is.production.min.js 3 | * 4 | * Copyright (c) Facebook, Inc. and its affiliates. 5 | * 6 | * This source code is licensed under the MIT license found in the 7 | * LICENSE file in the root directory of this source tree. 8 | */ 9 | -------------------------------------------------------------------------------- /docs/1.77eff89f.iframe.bundle.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"1.77eff89f.iframe.bundle.js","sources":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;A","sourceRoot":""} -------------------------------------------------------------------------------- /docs/1.9ebd2fb519f6726108de.manager.bundle.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[1],{456:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,"WithTooltipPure",(function(){return WithTooltip_WithTooltipPure})),__webpack_require__.d(__webpack_exports__,"WithToolTipState",(function(){return WithTooltip_WithToolTipState})),__webpack_require__.d(__webpack_exports__,"WithTooltip",(function(){return WithTooltip_WithToolTipState}));__webpack_require__(16),__webpack_require__(52),__webpack_require__(23),__webpack_require__(4),__webpack_require__(15),__webpack_require__(10),__webpack_require__(5),__webpack_require__(13),__webpack_require__(9),__webpack_require__(12),__webpack_require__(14),__webpack_require__(17),__webpack_require__(8),__webpack_require__(39);var react=__webpack_require__(0),react_default=__webpack_require__.n(react),esm=__webpack_require__(1),global_window=__webpack_require__(6),window_default=__webpack_require__.n(global_window),react_popper_tooltip=__webpack_require__(942),memoizerific=(__webpack_require__(79),__webpack_require__(27),__webpack_require__(168),__webpack_require__(18),__webpack_require__(30)),memoizerific_default=__webpack_require__.n(memoizerific),utils=__webpack_require__(100);function _extends(){return(_extends=Object.assign||function(target){for(var i=1;i=0||(target[key]=source[key]);return target}(source,excluded);if(Object.getOwnPropertySymbols){var sourceSymbolKeys=Object.getOwnPropertySymbols(source);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(source,key)&&(target[key]=source[key])}return target}var _templateObject,_templateObject2,match=memoizerific_default()(1e3)((function(requests,actual,value){var fallback=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;return actual.split("-")[0]===requests?value:fallback})),Arrow=esm.styled.div({position:"absolute",borderStyle:"solid"},(function(_ref){var placement=_ref.placement,x=0,y=0;switch(!0){case placement.startsWith("left")||placement.startsWith("right"):y=8;break;case placement.startsWith("top")||placement.startsWith("bottom"):x=8}return{transform:"translate3d(".concat(x,"px, ").concat(y,"px, 0px)")}}),(function(_ref2){var theme=_ref2.theme,color=_ref2.color,placement=_ref2.placement;return{bottom:"".concat(match("top",placement,-8,"auto"),"px"),top:"".concat(match("bottom",placement,-8,"auto"),"px"),right:"".concat(match("left",placement,-8,"auto"),"px"),left:"".concat(match("right",placement,-8,"auto"),"px"),borderBottomWidth:"".concat(match("top",placement,"0",8),"px"),borderTopWidth:"".concat(match("bottom",placement,"0",8),"px"),borderRightWidth:"".concat(match("left",placement,"0",8),"px"),borderLeftWidth:"".concat(match("right",placement,"0",8),"px"),borderTopColor:match("top",placement,theme.color[color]||color||"light"===theme.base?Object(utils.c)(theme.background.app):Object(utils.a)(theme.background.app),"transparent"),borderBottomColor:match("bottom",placement,theme.color[color]||color||"light"===theme.base?Object(utils.c)(theme.background.app):Object(utils.a)(theme.background.app),"transparent"),borderLeftColor:match("left",placement,theme.color[color]||color||"light"===theme.base?Object(utils.c)(theme.background.app):Object(utils.a)(theme.background.app),"transparent"),borderRightColor:match("right",placement,theme.color[color]||color||"light"===theme.base?Object(utils.c)(theme.background.app):Object(utils.a)(theme.background.app),"transparent")}})),Wrapper=esm.styled.div((function(_ref3){return{display:_ref3.hidden?"none":"inline-block",zIndex:2147483647}}),(function(_ref4){var theme=_ref4.theme,color=_ref4.color;return _ref4.hasChrome?{background:theme.color[color]||color||"light"===theme.base?Object(utils.c)(theme.background.app):Object(utils.a)(theme.background.app),filter:"\n drop-shadow(0px 5px 5px rgba(0,0,0,0.05))\n drop-shadow(0 1px 3px rgba(0,0,0,0.1))\n ",borderRadius:2*theme.appBorderRadius,fontSize:theme.typography.size.s1}:{}})),Tooltip_Tooltip=function Tooltip(_ref5){var placement=_ref5.placement,hasChrome=_ref5.hasChrome,children=_ref5.children,arrowProps=_ref5.arrowProps,tooltipRef=_ref5.tooltipRef,arrowRef=_ref5.arrowRef,color=_ref5.color,props=_objectWithoutProperties(_ref5,["placement","hasChrome","children","arrowProps","tooltipRef","arrowRef","color"]);return react_default.a.createElement(Wrapper,_extends({hasChrome:hasChrome,placement:placement,ref:tooltipRef},props,{color:color}),hasChrome&&react_default.a.createElement(Arrow,_extends({placement:placement,ref:arrowRef},arrowProps,{color:color})),children)};function _slicedToArray(arr,i){return function _arrayWithHoles(arr){if(Array.isArray(arr))return arr}(arr)||function _iterableToArrayLimit(arr,i){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(arr)))return;var _arr=[],_n=!0,_d=!1,_e=void 0;try{for(var _s,_i=arr[Symbol.iterator]();!(_n=(_s=_i.next()).done)&&(_arr.push(_s.value),!i||_arr.length!==i);_n=!0);}catch(err){_d=!0,_e=err}finally{try{_n||null==_i.return||_i.return()}finally{if(_d)throw _e}}return _arr}(arr,i)||function _unsupportedIterableToArray(o,minLen){if(!o)return;if("string"==typeof o)return _arrayLikeToArray(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);"Object"===n&&o.constructor&&(n=o.constructor.name);if("Map"===n||"Set"===n)return Array.from(o);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _arrayLikeToArray(o,minLen)}(arr,i)||function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function _arrayLikeToArray(arr,len){(null==len||len>arr.length)&&(len=arr.length);for(var i=0,arr2=new Array(len);i=0||(target[key]=source[key]);return target}(source,excluded);if(Object.getOwnPropertySymbols){var sourceSymbolKeys=Object.getOwnPropertySymbols(source);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(source,key)&&(target[key]=source[key])}return target}function _taggedTemplateLiteral(strings,raw){return raw||(raw=strings.slice(0)),Object.freeze(Object.defineProperties(strings,{raw:{value:Object.freeze(raw)}}))}Tooltip_Tooltip.displayName="Tooltip",Tooltip_Tooltip.defaultProps={color:void 0,arrowRef:void 0,tooltipRef:void 0,hasChrome:!0,placement:"top",arrowProps:{}};var WithTooltip_document=window_default.a.document,TargetContainer=esm.styled.div(_templateObject||(_templateObject=_taggedTemplateLiteral(["\n display: inline-block;\n cursor: ",";\n"])),(function(props){return"hover"===props.mode?"default":"pointer"})),TargetSvgContainer=esm.styled.g(_templateObject2||(_templateObject2=_taggedTemplateLiteral(["\n cursor: ",";\n"])),(function(props){return"hover"===props.mode?"default":"pointer"})),WithTooltip_WithTooltipPure=function WithTooltipPure(_ref){var svg=_ref.svg,trigger=_ref.trigger,placement=(_ref.closeOnClick,_ref.placement),modifiers=_ref.modifiers,hasChrome=_ref.hasChrome,_tooltip=_ref.tooltip,children=_ref.children,tooltipShown=_ref.tooltipShown,onVisibilityChange=_ref.onVisibilityChange,props=WithTooltip_objectWithoutProperties(_ref,["svg","trigger","closeOnClick","placement","modifiers","hasChrome","tooltip","children","tooltipShown","onVisibilityChange"]),Container=svg?TargetSvgContainer:TargetContainer;return react_default.a.createElement(react_popper_tooltip.a,{placement:placement,trigger:trigger,modifiers:modifiers,tooltipShown:tooltipShown,onVisibilityChange:onVisibilityChange,tooltip:function tooltip(_ref2){var getTooltipProps=_ref2.getTooltipProps,getArrowProps=_ref2.getArrowProps,tooltipRef=_ref2.tooltipRef,arrowRef=_ref2.arrowRef,tooltipPlacement=_ref2.placement;return react_default.a.createElement(Tooltip_Tooltip,WithTooltip_extends({hasChrome:hasChrome,placement:tooltipPlacement,tooltipRef:tooltipRef,arrowRef:arrowRef,arrowProps:getArrowProps()},getTooltipProps()),"function"==typeof _tooltip?_tooltip({onHide:function onHide(){return onVisibilityChange(!1)}}):_tooltip)}},(function(_ref3){var getTriggerProps=_ref3.getTriggerProps,triggerRef=_ref3.triggerRef;return react_default.a.createElement(Container,WithTooltip_extends({ref:triggerRef},getTriggerProps(),props),children)}))};WithTooltip_WithTooltipPure.displayName="WithTooltipPure",WithTooltip_WithTooltipPure.defaultProps={svg:!1,trigger:"hover",closeOnClick:!1,placement:"top",modifiers:[{name:"preventOverflow",options:{padding:8}},{name:"offset",options:{offset:[8,8]}},{name:"arrow",options:{padding:8}}],hasChrome:!0,tooltipShown:!1};var WithTooltip_WithToolTipState=function WithToolTipState(_ref4){var startOpen=_ref4.startOpen,onChange=_ref4.onVisibilityChange,rest=WithTooltip_objectWithoutProperties(_ref4,["startOpen","onVisibilityChange"]),_useState2=_slicedToArray(Object(react.useState)(startOpen||!1),2),tooltipShown=_useState2[0],setTooltipShown=_useState2[1],onVisibilityChange=Object(react.useCallback)((function(visibility){onChange&&!1===onChange(visibility)||setTooltipShown(visibility)}),[onChange]);return Object(react.useEffect)((function(){var hide=function hide(){return onVisibilityChange(!1)};WithTooltip_document.addEventListener("keydown",hide,!1);var iframes=Array.from(WithTooltip_document.getElementsByTagName("iframe")),unbinders=[];return iframes.forEach((function(iframe){var bind=function bind(){try{iframe.contentWindow.document&&(iframe.contentWindow.document.addEventListener("click",hide),unbinders.push((function(){try{iframe.contentWindow.document.removeEventListener("click",hide)}catch(e){}})))}catch(e){}};bind(),iframe.addEventListener("load",bind),unbinders.push((function(){iframe.removeEventListener("load",bind)}))})),function(){WithTooltip_document.removeEventListener("keydown",hide),unbinders.forEach((function(unbind){unbind()}))}})),react_default.a.createElement(WithTooltip_WithTooltipPure,WithTooltip_extends({},rest,{tooltipShown:tooltipShown,onVisibilityChange:onVisibilityChange}))};WithTooltip_WithToolTipState.displayName="WithToolTipState"}}]); -------------------------------------------------------------------------------- /docs/10.6dedbf62.iframe.bundle.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[10],{"./node_modules/@storybook/components/dist/modern/ScrollArea/GlobalScrollAreaStyles.js":function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,"getScrollAreaStyles",(function(){return getScrollAreaStyles}));var react__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__("./node_modules/react/index.js"),react__WEBPACK_IMPORTED_MODULE_0___default=__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__),_storybook_theming__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__("./node_modules/@emotion/core/dist/core.browser.esm.js");const hsResizeObserverDummyAnimation=_storybook_theming__WEBPACK_IMPORTED_MODULE_1__.d`0%{z-index:0}to{z-index:-1}`,getScrollAreaStyles=theme=>({"html.os-html, html.os-html>.os-host":{display:"block",overflow:"hidden",boxSizing:"border-box",height:"100%!important",width:"100%!important",minWidth:"100%!important",minHeight:"100%!important",margin:"0!important",position:"absolute!important"},"html.os-html>.os-host>.os-padding":{position:"absolute"},"body.os-dragging, body.os-dragging *":{cursor:"default"},".os-host, .os-host-textarea":{position:"relative",overflow:"visible!important",flexDirection:"column",flexWrap:"nowrap",justifyContent:"flex-start",alignContent:"flex-start",alignItems:"flex-start"},".os-host-flexbox":{overflow:"hidden!important",display:"flex"},".os-host-flexbox>.os-size-auto-observer":{height:"inherit!important"},".os-host-flexbox>.os-content-glue":{flexGrow:1,flexShrink:0},".os-host-flexbox>.os-size-auto-observer, .os-host-flexbox>.os-content-glue":{minHeight:0,minWidth:0,flexGrow:0,flexShrink:1,flexBasis:"auto"},"#os-dummy-scrollbar-size":{position:"fixed",opacity:0,visibility:"hidden",overflow:"scroll",height:500,width:500},"#os-dummy-scrollbar-size>div":{width:"200%",height:"200%",margin:10},"#os-dummy-scrollbar-size, .os-viewport":{},".os-viewport-native-scrollbars-invisible#os-dummy-scrollbar-size, .os-viewport-native-scrollbars-invisible.os-viewport":{scrollbarWidth:"none!important"},".os-viewport-native-scrollbars-invisible#os-dummy-scrollbar-size::-webkit-scrollbar, .os-viewport-native-scrollbars-invisible.os-viewport::-webkit-scrollbar, .os-viewport-native-scrollbars-invisible#os-dummy-scrollbar-size::-webkit-scrollbar-corner, .os-viewport-native-scrollbars-invisible.os-viewport::-webkit-scrollbar-corner":{display:"none!important",width:"0!important",height:"0!important",visibility:"hidden!important",background:"0 0!important"},".os-content-glue":{boxSizing:"inherit",maxHeight:"100%",maxWidth:"100%",width:"100%",pointerEvents:"none"},".os-padding":{boxSizing:"inherit",direction:"inherit",position:"absolute",overflow:"visible",padding:0,margin:0,left:0,top:0,bottom:0,right:0,width:"auto!important",height:"auto!important",zIndex:1},".os-host-overflow>.os-padding":{overflow:"hidden"},".os-viewport":{direction:"inherit!important",boxSizing:"inherit!important",resize:"none!important",outline:"0!important",position:"absolute",overflow:"hidden",top:0,left:0,bottom:0,right:0,padding:0,margin:0},".os-content-arrange":{position:"absolute",zIndex:-1,minHeight:1,minWidth:1,pointerEvents:"none"},".os-content":{direction:"inherit",boxSizing:"border-box!important",position:"relative",display:"block",height:"100%",width:"100%",visibility:"visible"},".os-content:before, .os-content:after":{content:"''",display:"table",width:0,height:0,lineHeight:0,fontSize:0},".os-content>.os-textarea":{boxSizing:"border-box!important",direction:"inherit!important",background:"0 0!important",outline:"0 transparent!important",overflow:"hidden!important",position:"absolute!important",display:"block!important",top:"0!important",left:"0!important",margin:"0!important",borderRadius:"0!important",float:"none!important",filter:"none!important",border:"0!important",resize:"none!important",transform:"none!important",maxWidth:"none!important",maxHeight:"none!important",boxShadow:"none!important",perspective:"none!important",opacity:"1!important",zIndex:"1!important",clip:"auto!important",verticalAlign:"baseline!important",padding:0},".os-host-rtl>.os-padding>.os-viewport>.os-content>.os-textarea":{right:"0!important"},".os-content>.os-textarea-cover":{zIndex:-1,pointerEvents:"none"},".os-content>.os-textarea[wrap=off]":{whiteSpace:"pre!important",margin:"0!important"},".os-text-inherit":{fontFamily:"inherit",fontSize:"inherit",fontWeight:"inherit",fontStyle:"inherit",fontVariant:"inherit",textTransform:"inherit",textDecoration:"inherit",textIndent:"inherit",textAlign:"inherit",textShadow:"inherit",textOverflow:"inherit",letterSpacing:"inherit",wordSpacing:"inherit",lineHeight:"inherit",unicodeBidi:"inherit",direction:"inherit",color:"inherit",cursor:"text"},".os-resize-observer, .os-resize-observer-host":{boxSizing:"inherit",display:"block",opacity:0,position:"absolute",top:0,left:0,height:"100%",width:"100%",overflow:"hidden",pointerEvents:"none",zIndex:-1},".os-resize-observer-host":{padding:"inherit",border:"inherit",borderColor:"transparent",borderStyle:"solid",boxSizing:"border-box"},".os-resize-observer-host:after":{content:"''"},".os-resize-observer-host>.os-resize-observer, .os-resize-observer-host:after":{height:"200%",width:"200%",padding:"inherit",border:"inherit",margin:0,display:"block",boxSizing:"content-box"},".os-resize-observer.observed, object.os-resize-observer":{boxSizing:"border-box!important"},".os-size-auto-observer":{boxSizing:"inherit!important",height:"100%",width:"inherit",maxWidth:1,position:"relative",float:"left",maxHeight:1,overflow:"hidden",zIndex:-1,padding:0,margin:0,pointerEvents:"none",flexGrow:"inherit",flexShrink:0,flexBasis:0},".os-size-auto-observer>.os-resize-observer":{width:"1000%",height:"1000%",minHeight:1,minWidth:1},".os-resize-observer-item":{position:"absolute",top:0,right:0,bottom:0,left:0,overflow:"hidden",zIndex:-1,opacity:0,direction:"ltr!important",flex:"none!important"},".os-resize-observer-item-final":{position:"absolute",left:0,top:0,transition:"none!important",flex:"none!important"},".os-resize-observer":{animationDuration:".001s",animationName:`${hsResizeObserverDummyAnimation}`},".os-host-transition>.os-scrollbar, .os-host-transition>.os-scrollbar-corner":{transition:"opacity .3s,visibility .3s,top .3s,right .3s,bottom .3s,left .3s"},"html.os-html>.os-host>.os-scrollbar":{position:"absolute",zIndex:999999},".os-scrollbar, .os-scrollbar-corner":{position:"absolute",opacity:1,zIndex:1},".os-scrollbar-corner":{bottom:0,right:0,height:10,width:10,backgroundColor:"transparent"},".os-scrollbar":{pointerEvents:"none",padding:2,boxSizing:"border-box",background:0},".os-scrollbar-track":{pointerEvents:"auto",position:"relative",height:"100%",width:"100%",padding:"0!important",border:"0!important"},".os-scrollbar-handle":{pointerEvents:"auto",position:"absolute",width:"100%",height:"100%"},".os-scrollbar-handle-off, .os-scrollbar-track-off":{pointerEvents:"none"},".os-scrollbar.os-scrollbar-unusable, .os-scrollbar.os-scrollbar-unusable *":{pointerEvents:"none!important"},".os-scrollbar.os-scrollbar-unusable .os-scrollbar-handle":{opacity:"0!important"},".os-scrollbar-horizontal":{bottom:0,left:0,right:10,height:10},".os-scrollbar-vertical":{top:0,right:0,bottom:10,width:10},".os-host-rtl>.os-scrollbar-horizontal":{right:0},".os-host-rtl>.os-scrollbar-vertical":{right:"auto",left:0},".os-host-rtl>.os-scrollbar-corner":{right:"auto",left:0},".os-scrollbar-auto-hidden, .os-padding+.os-scrollbar-corner, .os-host-resize-disabled.os-host-scrollbar-horizontal-hidden>.os-scrollbar-corner, .os-host-scrollbar-horizontal-hidden>.os-scrollbar-horizontal, .os-host-resize-disabled.os-host-scrollbar-vertical-hidden>.os-scrollbar-corner, .os-host-scrollbar-vertical-hidden>.os-scrollbar-vertical, .os-scrollbar-horizontal.os-scrollbar-auto-hidden+.os-scrollbar-vertical+.os-scrollbar-corner, .os-scrollbar-horizontal+.os-scrollbar-vertical.os-scrollbar-auto-hidden+.os-scrollbar-corner, .os-scrollbar-horizontal.os-scrollbar-auto-hidden+.os-scrollbar-vertical.os-scrollbar-auto-hidden+.os-scrollbar-corner":{opacity:0,visibility:"hidden",pointerEvents:"none"},".os-scrollbar-corner-resize-both":{cursor:"nwse-resize"},".os-host-rtl>.os-scrollbar-corner-resize-both":{cursor:"nesw-resize"},".os-scrollbar-corner-resize-horizontal":{cursor:"ew-resize"},".os-scrollbar-corner-resize-vertical":{cursor:"ns-resize"},".os-dragging .os-scrollbar-corner.os-scrollbar-corner-resize":{cursor:"default"},".os-host-resize-disabled.os-host-scrollbar-horizontal-hidden>.os-scrollbar-vertical":{top:0,bottom:0},".os-host-resize-disabled.os-host-scrollbar-vertical-hidden>.os-scrollbar-horizontal, .os-host-rtl.os-host-resize-disabled.os-host-scrollbar-vertical-hidden>.os-scrollbar-horizontal":{right:0,left:0},".os-scrollbar:hover, .os-scrollbar-corner.os-scrollbar-corner-resize":{opacity:"1!important",visibility:"visible!important"},".os-scrollbar-corner.os-scrollbar-corner-resize":{backgroundImage:"linear-gradient(135deg, rgba(0,0,0,0) 0%, rgba(0,0,0,0) 50%, rgba(0,0,0,0.4) 50%, rgba(0,0,0,0.4) 100%)",backgroundRepeat:"no-repeat",backgroundPosition:"100% 100%",pointerEvents:"auto!important"},".os-host-rtl>.os-scrollbar-corner.os-scrollbar-corner-resize":{transform:"scale(-1,1)"},".os-host-overflow":{overflow:"hidden!important"},".os-theme-dark.os-host-rtl>.os-scrollbar-horizontal":{left:10,right:0},".os-scrollbar.os-scrollbar-unusable":{background:0},".os-scrollbar>.os-scrollbar-track":{background:0},".os-scrollbar-horizontal>.os-scrollbar-track>.os-scrollbar-handle":{minWidth:30},".os-scrollbar-vertical>.os-scrollbar-track>.os-scrollbar-handle":{minHeight:30},".os-theme-dark.os-host-transition>.os-scrollbar>.os-scrollbar-track>.os-scrollbar-handle":{transition:"background-color .3s"},".os-scrollbar>.os-scrollbar-track>.os-scrollbar-handle, .os-scrollbar>.os-scrollbar-track":{borderRadius:10},".os-scrollbar>.os-scrollbar-track>.os-scrollbar-handle":{background:theme.color.mediumdark,opacity:.5},".os-scrollbar:hover>.os-scrollbar-track>.os-scrollbar-handle":{opacity:.6},".os-scrollbar-horizontal .os-scrollbar-handle:before, .os-scrollbar-vertical .os-scrollbar-handle:before":{content:"''",position:"absolute",left:0,right:0,top:0,bottom:0,display:"block"},".os-theme-dark.os-host-scrollbar-horizontal-hidden>.os-scrollbar-horizontal .os-scrollbar-handle:before, .os-theme-dark.os-host-scrollbar-vertical-hidden>.os-scrollbar-vertical .os-scrollbar-handle:before":{display:"none"},".os-scrollbar-horizontal .os-scrollbar-handle:before":{top:-6,bottom:-2},".os-scrollbar-vertical .os-scrollbar-handle:before":{left:-6,right:-2},".os-host-rtl.os-scrollbar-vertical .os-scrollbar-handle:before":{right:-6,left:-2}}),GlobalScrollAreaStyles=()=>react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_storybook_theming__WEBPACK_IMPORTED_MODULE_1__.a,{styles:getScrollAreaStyles});GlobalScrollAreaStyles.displayName="GlobalScrollAreaStyles",__webpack_exports__.default=GlobalScrollAreaStyles}}]); -------------------------------------------------------------------------------- /docs/10.a85ea1a67689be8e19ff.manager.bundle.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[10],{869:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,"createCopyToClipboardFunction",(function(){return createCopyToClipboardFunction})),__webpack_require__.d(__webpack_exports__,"SyntaxHighlighter",(function(){return syntaxhighlighter_SyntaxHighlighter}));__webpack_require__(90),__webpack_require__(40),__webpack_require__(15),__webpack_require__(109),__webpack_require__(5),__webpack_require__(88),__webpack_require__(4),__webpack_require__(10),__webpack_require__(13),__webpack_require__(8),__webpack_require__(9),__webpack_require__(12),__webpack_require__(16),__webpack_require__(14),__webpack_require__(17),__webpack_require__(43),__webpack_require__(23);var react=__webpack_require__(0),react_default=__webpack_require__.n(react),esm=__webpack_require__(25),dist_esm=__webpack_require__(1),global_window=__webpack_require__(6),window_default=__webpack_require__.n(global_window),memoizerific=__webpack_require__(30),memoizerific_default=__webpack_require__.n(memoizerific),jsx=__webpack_require__(922),bash=__webpack_require__(929),css=__webpack_require__(931),js_extras=__webpack_require__(920),json=__webpack_require__(923),graphql=__webpack_require__(936),markup=__webpack_require__(932),markdown=__webpack_require__(927),yaml=__webpack_require__(925),tsx=__webpack_require__(933),typescript=__webpack_require__(935),prism_light=__webpack_require__(943),ActionBar=__webpack_require__(866),ScrollArea=__webpack_require__(408),dist=__webpack_require__(34),dist_default=__webpack_require__.n(dist),formatter=memoizerific_default()(2)((function(code){return dist_default()(code)}));function _extends(){return(_extends=Object.assign||function(target){for(var i=1;i=0||(target[key]=source[key]);return target}(source,excluded);if(Object.getOwnPropertySymbols){var sourceSymbolKeys=Object.getOwnPropertySymbols(source);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(source,key)&&(target[key]=source[key])}return target}function asyncGeneratorStep(gen,resolve,reject,_next,_throw,key,arg){try{var info=gen[key](arg),value=info.value}catch(error){return void reject(error)}info.done?resolve(value):Promise.resolve(value).then(_next,_throw)}function _slicedToArray(arr,i){return function _arrayWithHoles(arr){if(Array.isArray(arr))return arr}(arr)||function _iterableToArrayLimit(arr,i){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(arr)))return;var _arr=[],_n=!0,_d=!1,_e=void 0;try{for(var _s,_i=arr[Symbol.iterator]();!(_n=(_s=_i.next()).done)&&(_arr.push(_s.value),!i||_arr.length!==i);_n=!0);}catch(err){_d=!0,_e=err}finally{try{_n||null==_i.return||_i.return()}finally{if(_d)throw _e}}return _arr}(arr,i)||function _unsupportedIterableToArray(o,minLen){if(!o)return;if("string"==typeof o)return _arrayLikeToArray(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);"Object"===n&&o.constructor&&(n=o.constructor.name);if("Map"===n||"Set"===n)return Array.from(o);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _arrayLikeToArray(o,minLen)}(arr,i)||function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function _arrayLikeToArray(arr,len){(null==len||len>arr.length)&&(len=arr.length);for(var i=0,arr2=new Array(len);i 5 | * @author Lea Verou 6 | * @namespace 7 | * @public 8 | */ 9 | -------------------------------------------------------------------------------- /docs/2.8ee2e21f.iframe.bundle.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"2.8ee2e21f.iframe.bundle.js","sources":[],"mappings":";A","sourceRoot":""} -------------------------------------------------------------------------------- /docs/4.f9fdbe4b.iframe.bundle.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[4],{"./node_modules/@storybook/preview-web/dist/modern/renderDocs.js":function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,"renderDocs",(function(){return renderDocs})),__webpack_require__.d(__webpack_exports__,"unmountDocs",(function(){return unmountDocs}));var react=__webpack_require__("./node_modules/react/index.js"),react_default=__webpack_require__.n(react),react_dom=__webpack_require__("./node_modules/react-dom/index.js"),react_dom_default=__webpack_require__.n(react_dom);const wrapper={fontSize:"14px",letterSpacing:"0.2px",margin:"10px 0"},main={margin:"auto",padding:30,borderRadius:10,background:"rgba(0,0,0,0.03)"},heading={textAlign:"center"},NoDocs=()=>react_default.a.createElement("div",{style:wrapper,className:"sb-nodocs sb-wrapper"},react_default.a.createElement("div",{style:main},react_default.a.createElement("h1",{style:heading},"No Docs"),react_default.a.createElement("p",null,"Sorry, but there are no docs for the selected story. To add them, set the story's ",react_default.a.createElement("code",null,"docs")," parameter. If you think this is an error:"),react_default.a.createElement("ul",null,react_default.a.createElement("li",null,"Please check the story definition."),react_default.a.createElement("li",null,"Please check the Storybook config."),react_default.a.createElement("li",null,"Try reloading the page.")),react_default.a.createElement("p",null,"If the problem persists, check the browser console, or the terminal you've run Storybook from.")));function renderDocs(story,docsContext,element,callback){return async function renderDocsAsync(story,docsContext,element){var _docs$getContainer,_docs$getPage;const{docs:docs}=story.parameters;if((null!=docs&&docs.getPage||null!=docs&&docs.page)&&!(null!=docs&&docs.getContainer||null!=docs&&docs.container))throw new Error("No `docs.container` set, did you run `addon-docs/preset`?");const DocsContainer=docs.container||await(null===(_docs$getContainer=docs.getContainer)||void 0===_docs$getContainer?void 0:_docs$getContainer.call(docs))||(({children:children})=>react_default.a.createElement(react_default.a.Fragment,null,children)),Page=docs.page||await(null===(_docs$getPage=docs.getPage)||void 0===_docs$getPage?void 0:_docs$getPage.call(docs))||NoDocs,docsElement=react_default.a.createElement(DocsContainer,{key:story.componentId,context:docsContext},react_default.a.createElement(Page,null));await new Promise((resolve=>{react_dom_default.a.render(docsElement,element,resolve)}))}(story,docsContext,element).then(callback)}function unmountDocs(element){react_dom_default.a.unmountComponentAtNode(element)}NoDocs.displayName="NoDocs"}}]); -------------------------------------------------------------------------------- /docs/5.f459d151315e6780c20f.manager.bundle.js.LICENSE.txt: -------------------------------------------------------------------------------- 1 | /** 2 | * Prism: Lightweight, robust, elegant syntax highlighting 3 | * 4 | * @license MIT 5 | * @author Lea Verou 6 | * @namespace 7 | * @public 8 | */ 9 | -------------------------------------------------------------------------------- /docs/6.3bd64d820f3745f262ff.manager.bundle.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[6],{886:function(module,exports,__webpack_require__){function _slicedToArray(arr,i){return function _arrayWithHoles(arr){if(Array.isArray(arr))return arr}(arr)||function _iterableToArrayLimit(arr,i){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(arr)))return;var _arr=[],_n=!0,_d=!1,_e=void 0;try{for(var _s,_i=arr[Symbol.iterator]();!(_n=(_s=_i.next()).done)&&(_arr.push(_s.value),!i||_arr.length!==i);_n=!0);}catch(err){_d=!0,_e=err}finally{try{_n||null==_i.return||_i.return()}finally{if(_d)throw _e}}return _arr}(arr,i)||function _unsupportedIterableToArray(o,minLen){if(!o)return;if("string"==typeof o)return _arrayLikeToArray(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);"Object"===n&&o.constructor&&(n=o.constructor.name);if("Map"===n||"Set"===n)return Array.from(o);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _arrayLikeToArray(o,minLen)}(arr,i)||function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function _arrayLikeToArray(arr,len){(null==len||len>arr.length)&&(len=arr.length);for(var i=0,arr2=new Array(len);i1&&(h-=1)),[360*h,100*s,100*v]},convert.rgb.hwb=function(rgb){var r=rgb[0],g=rgb[1],b=rgb[2];return[convert.rgb.hsl(rgb)[0],100*(1/255*Math.min(r,Math.min(g,b))),100*(b=1-1/255*Math.max(r,Math.max(g,b)))]},convert.rgb.cmyk=function(rgb){var r=rgb[0]/255,g=rgb[1]/255,b=rgb[2]/255,k=Math.min(1-r,1-g,1-b);return[100*((1-r-k)/(1-k)||0),100*((1-g-k)/(1-k)||0),100*((1-b-k)/(1-k)||0),100*k]},convert.rgb.keyword=function(rgb){var reversed=reverseKeywords[rgb];if(reversed)return reversed;for(var currentClosestKeyword,x,y,currentClosestDistance=1/0,_i3=0,_Object$keys3=Object.keys(cssKeywords);_i3<_Object$keys3.length;_i3++){var _keyword=_Object$keys3[_i3],_value=cssKeywords[_keyword],_distance=(x=rgb,y=_value,Math.pow(x[0]-y[0],2)+Math.pow(x[1]-y[1],2)+Math.pow(x[2]-y[2],2));_distance.04045?Math.pow((r+.055)/1.055,2.4):r/12.92)+.3576*(g=g>.04045?Math.pow((g+.055)/1.055,2.4):g/12.92)+.1805*(b=b>.04045?Math.pow((b+.055)/1.055,2.4):b/12.92)),100*(.2126*r+.7152*g+.0722*b),100*(.0193*r+.1192*g+.9505*b)]},convert.rgb.lab=function(rgb){var xyz=convert.rgb.xyz(rgb),x=xyz[0],y=xyz[1],z=xyz[2];return y/=100,z/=108.883,x=(x/=95.047)>.008856?Math.pow(x,1/3):7.787*x+16/116,[116*(y=y>.008856?Math.pow(y,1/3):7.787*y+16/116)-16,500*(x-y),200*(y-(z=z>.008856?Math.pow(z,1/3):7.787*z+16/116))]},convert.hsl.rgb=function(hsl){var t2,t3,val,h=hsl[0]/360,s=hsl[1]/100,l=hsl[2]/100;if(0===s)return[val=255*l,val,val];for(var t1=2*l-(t2=l<.5?l*(1+s):l+s-l*s),rgb=[0,0,0],i=0;i<3;i++)(t3=h+1/3*-(i-1))<0&&t3++,t3>1&&t3--,val=6*t3<1?t1+6*(t2-t1)*t3:2*t3<1?t2:3*t3<2?t1+(t2-t1)*(2/3-t3)*6:t1,rgb[i]=255*val;return rgb},convert.hsl.hsv=function(hsl){var h=hsl[0],s=hsl[1]/100,l=hsl[2]/100,smin=s,lmin=Math.max(l,.01);return s*=(l*=2)<=1?l:2-l,smin*=lmin<=1?lmin:2-lmin,[h,100*(0===l?2*smin/(lmin+smin):2*s/(l+s)),100*((l+s)/2)]},convert.hsv.rgb=function(hsv){var h=hsv[0]/60,s=hsv[1]/100,v=hsv[2]/100,hi=Math.floor(h)%6,f=h-Math.floor(h),p=255*v*(1-s),q=255*v*(1-s*f),t=255*v*(1-s*(1-f));switch(v*=255,hi){case 0:return[v,t,p];case 1:return[q,v,p];case 2:return[p,v,t];case 3:return[p,q,v];case 4:return[t,p,v];case 5:return[v,p,q]}},convert.hsv.hsl=function(hsv){var sl,l,h=hsv[0],s=hsv[1]/100,v=hsv[2]/100,vmin=Math.max(v,.01);l=(2-s)*v;var lmin=(2-s)*vmin;return sl=s*vmin,[h,100*(sl=(sl/=lmin<=1?lmin:2-lmin)||0),100*(l/=2)]},convert.hwb.rgb=function(hwb){var f,h=hwb[0]/360,wh=hwb[1]/100,bl=hwb[2]/100,ratio=wh+bl;ratio>1&&(wh/=ratio,bl/=ratio);var i=Math.floor(6*h),v=1-bl;f=6*h-i,0!=(1&i)&&(f=1-f);var r,g,b,n=wh+f*(v-wh);switch(i){default:case 6:case 0:r=v,g=n,b=wh;break;case 1:r=n,g=v,b=wh;break;case 2:r=wh,g=v,b=n;break;case 3:r=wh,g=n,b=v;break;case 4:r=n,g=wh,b=v;break;case 5:r=v,g=wh,b=n}return[255*r,255*g,255*b]},convert.cmyk.rgb=function(cmyk){var c=cmyk[0]/100,m=cmyk[1]/100,y=cmyk[2]/100,k=cmyk[3]/100;return[255*(1-Math.min(1,c*(1-k)+k)),255*(1-Math.min(1,m*(1-k)+k)),255*(1-Math.min(1,y*(1-k)+k))]},convert.xyz.rgb=function(xyz){var r,g,b,x=xyz[0]/100,y=xyz[1]/100,z=xyz[2]/100;return g=-.9689*x+1.8758*y+.0415*z,b=.0557*x+-.204*y+1.057*z,r=(r=3.2406*x+-1.5372*y+-.4986*z)>.0031308?1.055*Math.pow(r,1/2.4)-.055:12.92*r,g=g>.0031308?1.055*Math.pow(g,1/2.4)-.055:12.92*g,b=b>.0031308?1.055*Math.pow(b,1/2.4)-.055:12.92*b,[255*(r=Math.min(Math.max(0,r),1)),255*(g=Math.min(Math.max(0,g),1)),255*(b=Math.min(Math.max(0,b),1))]},convert.xyz.lab=function(xyz){var x=xyz[0],y=xyz[1],z=xyz[2];return y/=100,z/=108.883,x=(x/=95.047)>.008856?Math.pow(x,1/3):7.787*x+16/116,[116*(y=y>.008856?Math.pow(y,1/3):7.787*y+16/116)-16,500*(x-y),200*(y-(z=z>.008856?Math.pow(z,1/3):7.787*z+16/116))]},convert.lab.xyz=function(lab){var x,y,z,l=lab[0];x=lab[1]/500+(y=(l+16)/116),z=y-lab[2]/200;var y2=Math.pow(y,3),x2=Math.pow(x,3),z2=Math.pow(z,3);return y=y2>.008856?y2:(y-16/116)/7.787,x=x2>.008856?x2:(x-16/116)/7.787,z=z2>.008856?z2:(z-16/116)/7.787,[x*=95.047,y*=100,z*=108.883]},convert.lab.lch=function(lab){var h,l=lab[0],a=lab[1],b=lab[2];return(h=360*Math.atan2(b,a)/2/Math.PI)<0&&(h+=360),[l,Math.sqrt(a*a+b*b),h]},convert.lch.lab=function(lch){var l=lch[0],c=lch[1],hr=lch[2]/360*2*Math.PI;return[l,c*Math.cos(hr),c*Math.sin(hr)]},convert.rgb.ansi16=function(args){var saturation=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,_args=_slicedToArray(args,3),r=_args[0],g=_args[1],b=_args[2],value=null===saturation?convert.rgb.hsv(args)[2]:saturation;if(0===(value=Math.round(value/50)))return 30;var ansi=30+(Math.round(b/255)<<2|Math.round(g/255)<<1|Math.round(r/255));return 2===value&&(ansi+=60),ansi},convert.hsv.ansi16=function(args){return convert.rgb.ansi16(convert.hsv.rgb(args),args[2])},convert.rgb.ansi256=function(args){var r=args[0],g=args[1],b=args[2];return r===g&&g===b?r<8?16:r>248?231:Math.round((r-8)/247*24)+232:16+36*Math.round(r/255*5)+6*Math.round(g/255*5)+Math.round(b/255*5)},convert.ansi16.rgb=function(args){var color=args%10;if(0===color||7===color)return args>50&&(color+=3.5),[color=color/10.5*255,color,color];var mult=.5*(1+~~(args>50));return[(1&color)*mult*255,(color>>1&1)*mult*255,(color>>2&1)*mult*255]},convert.ansi256.rgb=function(args){if(args>=232){var c=10*(args-232)+8;return[c,c,c]}var rem;return args-=16,[Math.floor(args/36)/5*255,Math.floor((rem=args%36)/6)/5*255,rem%6/5*255]},convert.rgb.hex=function(args){var string=(((255&Math.round(args[0]))<<16)+((255&Math.round(args[1]))<<8)+(255&Math.round(args[2]))).toString(16).toUpperCase();return"000000".substring(string.length)+string},convert.hex.rgb=function(args){var match=args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!match)return[0,0,0];var colorString=match[0];3===match[0].length&&(colorString=colorString.split("").map((function(char){return char+char})).join(""));var integer=parseInt(colorString,16);return[integer>>16&255,integer>>8&255,255&integer]},convert.rgb.hcg=function(rgb){var hue,r=rgb[0]/255,g=rgb[1]/255,b=rgb[2]/255,max=Math.max(Math.max(r,g),b),min=Math.min(Math.min(r,g),b),chroma=max-min;return hue=chroma<=0?0:max===r?(g-b)/chroma%6:max===g?2+(b-r)/chroma:4+(r-g)/chroma,hue/=6,[360*(hue%=1),100*chroma,100*(chroma<1?min/(1-chroma):0)]},convert.hsl.hcg=function(hsl){var s=hsl[1]/100,l=hsl[2]/100,c=l<.5?2*s*l:2*s*(1-l),f=0;return c<1&&(f=(l-.5*c)/(1-c)),[hsl[0],100*c,100*f]},convert.hsv.hcg=function(hsv){var s=hsv[1]/100,v=hsv[2]/100,c=s*v,f=0;return c<1&&(f=(v-c)/(1-c)),[hsv[0],100*c,100*f]},convert.hcg.rgb=function(hcg){var h=hcg[0]/360,c=hcg[1]/100,g=hcg[2]/100;if(0===c)return[255*g,255*g,255*g];var mg,pure=[0,0,0],hi=h%1*6,v=hi%1,w=1-v;switch(Math.floor(hi)){case 0:pure[0]=1,pure[1]=v,pure[2]=0;break;case 1:pure[0]=w,pure[1]=1,pure[2]=0;break;case 2:pure[0]=0,pure[1]=1,pure[2]=v;break;case 3:pure[0]=0,pure[1]=w,pure[2]=1;break;case 4:pure[0]=v,pure[1]=0,pure[2]=1;break;default:pure[0]=1,pure[1]=0,pure[2]=w}return mg=(1-c)*g,[255*(c*pure[0]+mg),255*(c*pure[1]+mg),255*(c*pure[2]+mg)]},convert.hcg.hsv=function(hcg){var c=hcg[1]/100,v=c+hcg[2]/100*(1-c),f=0;return v>0&&(f=c/v),[hcg[0],100*f,100*v]},convert.hcg.hsl=function(hcg){var c=hcg[1]/100,l=hcg[2]/100*(1-c)+.5*c,s=0;return l>0&&l<.5?s=c/(2*l):l>=.5&&l<1&&(s=c/(2*(1-l))),[hcg[0],100*s,100*l]},convert.hcg.hwb=function(hcg){var c=hcg[1]/100,v=c+hcg[2]/100*(1-c);return[hcg[0],100*(v-c),100*(1-v)]},convert.hwb.hcg=function(hwb){var w=hwb[1]/100,v=1-hwb[2]/100,c=v-w,g=0;return c<1&&(g=(v-c)/(1-c)),[hwb[0],100*c,100*g]},convert.apple.rgb=function(apple){return[apple[0]/65535*255,apple[1]/65535*255,apple[2]/65535*255]},convert.rgb.apple=function(rgb){return[rgb[0]/255*65535,rgb[1]/255*65535,rgb[2]/255*65535]},convert.gray.rgb=function(args){return[args[0]/100*255,args[0]/100*255,args[0]/100*255]},convert.gray.hsl=function(args){return[0,0,args[0]]},convert.gray.hsv=convert.gray.hsl,convert.gray.hwb=function(gray){return[0,100,gray[0]]},convert.gray.cmyk=function(gray){return[0,0,0,gray[0]]},convert.gray.lab=function(gray){return[gray[0],0,0]},convert.gray.hex=function(gray){var val=255&Math.round(gray[0]/100*255),string=((val<<16)+(val<<8)+val).toString(16).toUpperCase();return"000000".substring(string.length)+string},convert.rgb.gray=function(rgb){return[(rgb[0]+rgb[1]+rgb[2])/3/255*100]}},938:function(module,exports,__webpack_require__){__webpack_require__(23),__webpack_require__(39);var conversions=__webpack_require__(886),route=__webpack_require__(940),convert={};Object.keys(conversions).forEach((function(fromModel){convert[fromModel]={},Object.defineProperty(convert[fromModel],"channels",{value:conversions[fromModel].channels}),Object.defineProperty(convert[fromModel],"labels",{value:conversions[fromModel].labels});var routes=route(fromModel);Object.keys(routes).forEach((function(toModel){var fn=routes[toModel];convert[fromModel][toModel]=function wrapRounded(fn){var wrappedFn=function wrappedFn(){for(var _len2=arguments.length,args=new Array(_len2),_key2=0;_key2<_len2;_key2++)args[_key2]=arguments[_key2];var arg0=args[0];if(null==arg0)return arg0;arg0.length>1&&(args=arg0);var result=fn(args);if("object"==typeof result)for(var len=result.length,i=0;i1&&(args=arg0),fn(args))};return"conversion"in fn&&(wrappedFn.conversion=fn.conversion),wrappedFn}(fn)}))})),module.exports=convert},939:function(module,exports,__webpack_require__){"use strict";module.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}},940:function(module,exports,__webpack_require__){__webpack_require__(23);var conversions=__webpack_require__(886);function deriveBFS(fromModel){var graph=function buildGraph(){for(var graph={},models=Object.keys(conversions),len=models.length,i=0;i=0||(n[t]=e[t]);return n}var c="undefined"!=typeof window?react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect:react__WEBPACK_IMPORTED_MODULE_0__.useEffect;function i(e){var r=Object(react__WEBPACK_IMPORTED_MODULE_0__.useRef)(e);return Object(react__WEBPACK_IMPORTED_MODULE_0__.useEffect)((function(){r.current=e})),Object(react__WEBPACK_IMPORTED_MODULE_0__.useCallback)((function(e){return r.current&&r.current(e)}),[])}var s,f=function(e,r,t){return void 0===r&&(r=0),void 0===t&&(t=1),e>t?t:e0:e.buttons>0)&&h.current?_(d(h.current,e)):b(!1)}),[_]),x=Object(react__WEBPACK_IMPORTED_MODULE_0__.useCallback)((function(e){var r=e.nativeEvent;r.preventDefault(),function(e){return!(m.current&&!v(e)||(m.current||(m.current=v(e)),0))}(r)&&(_(d(h.current,r)),b(!0))}),[_]),H=Object(react__WEBPACK_IMPORTED_MODULE_0__.useCallback)((function(e){var r=e.which||e.keyCode;r<37||r>40||(e.preventDefault(),C({left:39===r?.05:37===r?-.05:0,top:40===r?.05:38===r?-.05:0}))}),[C]),N=Object(react__WEBPACK_IMPORTED_MODULE_0__.useCallback)((function(){return b(!1)}),[]),w=Object(react__WEBPACK_IMPORTED_MODULE_0__.useCallback)((function(e){var r=e?window.addEventListener:window.removeEventListener;r(m.current?"touchmove":"mousemove",E),r(m.current?"touchend":"mouseup",N)}),[E,N]);return c((function(){return w(p),function(){p&&w(!1)}}),[p,w]),react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div",l({},f,{className:"react-colorful__interactive",ref:h,onTouchStart:x,onMouseDown:x,onKeyDown:H,tabIndex:0,role:"slider"}))})),m=function(e){return e.filter(Boolean).join(" ")},g=function(r){var t=r.color,o=r.left,n=r.top,a=void 0===n?.5:n,l=m(["react-colorful__pointer",r.className]);return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div",{className:l,style:{top:100*a+"%",left:100*o+"%"}},react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div",{className:"react-colorful__pointer-fill",style:{backgroundColor:t}}))},p=function(e,r,t){return void 0===r&&(r=0),void 0===t&&(t=Math.pow(10,r)),Math.round(t*e)/t},b=function(e){return"#"===e[0]&&(e=e.substr(1)),e.length<6?{r:parseInt(e[0]+e[0],16),g:parseInt(e[1]+e[1],16),b:parseInt(e[2]+e[2],16),a:1}:{r:parseInt(e.substr(0,2),16),g:parseInt(e.substr(2,2),16),b:parseInt(e.substr(4,2),16),a:1}},_=function(e){var r=/hsla?\((\d+\.?\d*),\s*(\d+\.?\d*)%?,\s*(\d+\.?\d*)%?,?\s*(\d+\.?\d*)?\)/.exec(e);return r?E({h:Number(r[1]),s:Number(r[2]),l:Number(r[3]),a:void 0===r[4]?1:Number(r[4])}):{h:0,s:0,v:0,a:1}},E=function(e){var r=e.s,t=e.l;return{h:e.h,s:(r*=(t<50?t:100-t)/100)>0?2*r/(t+r)*100:0,v:t+r,a:e.a}},x=function(e){var r=e.s,t=e.v,o=e.a,n=(200-r)*t/100;return{h:p(e.h),s:p(n>0&&n<200?r*t/100/(n<=100?n:200-n)*100:0),l:p(n/2),a:p(o,2)}},H=function(e){var r=x(e);return"hsl("+r.h+", "+r.s+"%, "+r.l+"%)"},N=function(e){var r=x(e);return"hsla("+r.h+", "+r.s+"%, "+r.l+"%, "+r.a+")"},w=function(e){var r=e.h,t=e.s,o=e.v,n=e.a;r=r/360*6,t/=100,o/=100;var a=Math.floor(r),l=o*(1-t),u=o*(1-(r-a)*t),c=o*(1-(1-r+a)*t),i=a%6;return{r:p(255*[o,u,l,l,c,o][i]),g:p(255*[c,o,o,u,l,l][i]),b:p(255*[l,l,c,o,o,u][i]),a:p(n,2)}},q=function(e){var r=/rgba?\((\d+),\s*(\d+),\s*(\d+),?\s*(\d+\.?\d*)?\)/.exec(e);return r?I({r:Number(r[1]),g:Number(r[2]),b:Number(r[3]),a:void 0===r[4]?1:Number(r[4])}):{h:0,s:0,v:0,a:1}},O=function(e){var r=e.toString(16);return r.length<2?"0"+r:r},I=function(e){var r=e.r,t=e.g,o=e.b,n=e.a,a=Math.max(r,t,o),l=a-Math.min(r,t,o),u=l?a===r?(t-o)/l:a===t?2+(o-r)/l:4+(r-t)/l:0;return{h:p(60*(u<0?u+6:u)),s:p(a?l/a*100:0),v:p(a/255*100),a:n}},z=react__WEBPACK_IMPORTED_MODULE_0___default.a.memo((function(r){var t=r.hue,o=r.onChange,n=m(["react-colorful__hue",r.className]);return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div",{className:n},react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(h,{onMove:function(e){o({h:360*e.left})},onKey:function(e){o({h:f(t+360*e.left,0,360)})},"aria-label":"Hue","aria-valuetext":p(t)},react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(g,{className:"react-colorful__hue-pointer",left:t/360,color:H({h:t,s:100,v:100,a:1})})))})),B=react__WEBPACK_IMPORTED_MODULE_0___default.a.memo((function(r){var t=r.hsva,o=r.onChange,n={backgroundColor:H({h:t.h,s:100,v:100,a:1})};return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div",{className:"react-colorful__saturation",style:n},react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(h,{onMove:function(e){o({s:100*e.left,v:100-100*e.top})},onKey:function(e){o({s:f(t.s+100*e.left,0,100),v:f(t.v-100*e.top,0,100)})},"aria-label":"Color","aria-valuetext":"Saturation "+p(t.s)+"%, Brightness "+p(t.v)+"%"},react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(g,{className:"react-colorful__saturation-pointer",top:1-t.v/100,left:t.s/100,color:H(t)})))})),K=function(e,r){if(e===r)return!0;for(var t in e)if(e[t]!==r[t])return!1;return!0},A=function(e,r){return e.replace(/\s/g,"")===r.replace(/\s/g,"")};function D(e,r,l){var u=i(l),c=Object(react__WEBPACK_IMPORTED_MODULE_0__.useState)((function(){return e.toHsva(r)})),s=c[0],f=c[1],v=Object(react__WEBPACK_IMPORTED_MODULE_0__.useRef)({color:r,hsva:s});Object(react__WEBPACK_IMPORTED_MODULE_0__.useEffect)((function(){if(!e.equal(r,v.current.color)){var t=e.toHsva(r);v.current={hsva:t,color:r},f(t)}}),[r,e]),Object(react__WEBPACK_IMPORTED_MODULE_0__.useEffect)((function(){var r;K(s,v.current.hsva)||e.equal(r=e.fromHsva(s),v.current.color)||(v.current={hsva:s,color:r},u(r))}),[s,e,u]);var d=Object(react__WEBPACK_IMPORTED_MODULE_0__.useCallback)((function(e){f((function(r){return Object.assign({},r,e)}))}),[]);return[s,d]}var L,T=function(){c((function(){if("undefined"!=typeof document&&!L){(L=document.createElement("style")).innerHTML='.react-colorful{position:relative;display:flex;flex-direction:column;width:200px;height:200px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.react-colorful__saturation{position:relative;flex-grow:1;border-bottom:12px solid #000;border-radius:8px 8px 0 0;background-image:linear-gradient(0deg,#000,transparent),linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.react-colorful__alpha-gradient,.react-colorful__pointer-fill{content:"";position:absolute;left:0;top:0;right:0;bottom:0;pointer-events:none;border-radius:inherit}.react-colorful__alpha-gradient,.react-colorful__saturation{box-shadow:inset 0 0 0 1px rgba(0,0,0,.05)}.react-colorful__alpha,.react-colorful__hue{position:relative;height:24px}.react-colorful__hue{background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red)}.react-colorful__last-control{border-radius:0 0 8px 8px}.react-colorful__interactive{position:absolute;left:0;top:0;right:0;bottom:0;border-radius:inherit;outline:none;touch-action:none}.react-colorful__pointer{position:absolute;z-index:1;box-sizing:border-box;width:28px;height:28px;transform:translate(-50%,-50%);background-color:#fff;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.2)}.react-colorful__interactive:focus .react-colorful__pointer{transform:translate(-50%,-50%) scale(1.1)}.react-colorful__alpha,.react-colorful__alpha-pointer{background-color:#fff;background-image:url(\'data:image/svg+xml;charset=utf-8,\')}.react-colorful__saturation-pointer{z-index:3}.react-colorful__hue-pointer{z-index:2}';var e=s||__webpack_require__.nc;e&&L.setAttribute("nonce",e),document.head.appendChild(L)}}),[])},X=function(r){var t=r.className,o=r.colorModel,n=r.color,a=void 0===n?o.defaultColor:n,c=r.onChange,i=u(r,["className","colorModel","color","onChange"]);T();var s=D(o,a,c),f=s[0],v=s[1],d=m(["react-colorful",t]);return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div",l({},i,{className:d}),react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(B,{hsva:f,onChange:v}),react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(z,{hue:f.h,onChange:v,className:"react-colorful__last-control"}))},Y={defaultColor:"000",toHsva:function(e){return I(b(e))},fromHsva:function(e){return t=(r=w(e)).g,o=r.b,"#"+O(r.r)+O(t)+O(o);var r,t,o},equal:function(e,r){return e.toLowerCase()===r.toLowerCase()||K(b(e),b(r))}},$=function(r){return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(X,l({},r,{colorModel:Y}))},P=function(r){var t=r.className,o=r.hsva,n=r.onChange,a={backgroundImage:"linear-gradient(90deg, "+N(Object.assign({},o,{a:0}))+", "+N(Object.assign({},o,{a:1}))+")"},l=m(["react-colorful__alpha",t]);return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div",{className:l},react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div",{className:"react-colorful__alpha-gradient",style:a}),react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(h,{onMove:function(e){n({a:e.left})},onKey:function(e){n({a:f(o.a+e.left)})},"aria-label":"Alpha","aria-valuetext":p(100*o.a)+"%"},react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(g,{className:"react-colorful__alpha-pointer",left:o.a,color:N(o)})))},R=function(r){var t=r.className,o=r.colorModel,n=r.color,a=void 0===n?o.defaultColor:n,c=r.onChange,i=u(r,["className","colorModel","color","onChange"]);T();var s=D(o,a,c),f=s[0],v=s[1],d=m(["react-colorful",t]);return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div",l({},i,{className:d}),react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(B,{hsva:f,onChange:v}),react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(z,{hue:f.h,onChange:v}),react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(P,{hsva:f,onChange:v,className:"react-colorful__last-control"}))},Q={defaultColor:"hsla(0, 0%, 0%, 1)",toHsva:_,fromHsva:N,equal:A},U=function(r){return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(R,l({},r,{colorModel:Q}))},fe={defaultColor:"rgba(0, 0, 0, 1)",toHsva:q,fromHsva:function(e){var r=w(e);return"rgba("+r.r+", "+r.g+", "+r.b+", "+r.a+")"},equal:A},ve=function(r){return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(R,l({},r,{colorModel:fe}))}}}]); -------------------------------------------------------------------------------- /docs/7.3d04765dbf3f1dcd706c.manager.bundle.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[7],{867:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,"getScrollAreaStyles",(function(){return getScrollAreaStyles}));__webpack_require__(16),__webpack_require__(52);var _templateObject,react__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(0),react__WEBPACK_IMPORTED_MODULE_2___default=__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__),_storybook_theming__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(56);var hsResizeObserverDummyAnimation=Object(_storybook_theming__WEBPACK_IMPORTED_MODULE_3__.d)(_templateObject||(_templateObject=function _taggedTemplateLiteral(strings,raw){return raw||(raw=strings.slice(0)),Object.freeze(Object.defineProperties(strings,{raw:{value:Object.freeze(raw)}}))}(["0%{z-index:0}to{z-index:-1}"]))),getScrollAreaStyles=function getScrollAreaStyles(theme){return{"html.os-html, html.os-html>.os-host":{display:"block",overflow:"hidden",boxSizing:"border-box",height:"100%!important",width:"100%!important",minWidth:"100%!important",minHeight:"100%!important",margin:"0!important",position:"absolute!important"},"html.os-html>.os-host>.os-padding":{position:"absolute"},"body.os-dragging, body.os-dragging *":{cursor:"default"},".os-host, .os-host-textarea":{position:"relative",overflow:"visible!important",flexDirection:"column",flexWrap:"nowrap",justifyContent:"flex-start",alignContent:"flex-start",alignItems:"flex-start"},".os-host-flexbox":{overflow:"hidden!important",display:"flex"},".os-host-flexbox>.os-size-auto-observer":{height:"inherit!important"},".os-host-flexbox>.os-content-glue":{flexGrow:1,flexShrink:0},".os-host-flexbox>.os-size-auto-observer, .os-host-flexbox>.os-content-glue":{minHeight:0,minWidth:0,flexGrow:0,flexShrink:1,flexBasis:"auto"},"#os-dummy-scrollbar-size":{position:"fixed",opacity:0,visibility:"hidden",overflow:"scroll",height:500,width:500},"#os-dummy-scrollbar-size>div":{width:"200%",height:"200%",margin:10},"#os-dummy-scrollbar-size, .os-viewport":{},".os-viewport-native-scrollbars-invisible#os-dummy-scrollbar-size, .os-viewport-native-scrollbars-invisible.os-viewport":{scrollbarWidth:"none!important"},".os-viewport-native-scrollbars-invisible#os-dummy-scrollbar-size::-webkit-scrollbar, .os-viewport-native-scrollbars-invisible.os-viewport::-webkit-scrollbar, .os-viewport-native-scrollbars-invisible#os-dummy-scrollbar-size::-webkit-scrollbar-corner, .os-viewport-native-scrollbars-invisible.os-viewport::-webkit-scrollbar-corner":{display:"none!important",width:"0!important",height:"0!important",visibility:"hidden!important",background:"0 0!important"},".os-content-glue":{boxSizing:"inherit",maxHeight:"100%",maxWidth:"100%",width:"100%",pointerEvents:"none"},".os-padding":{boxSizing:"inherit",direction:"inherit",position:"absolute",overflow:"visible",padding:0,margin:0,left:0,top:0,bottom:0,right:0,width:"auto!important",height:"auto!important",zIndex:1},".os-host-overflow>.os-padding":{overflow:"hidden"},".os-viewport":{direction:"inherit!important",boxSizing:"inherit!important",resize:"none!important",outline:"0!important",position:"absolute",overflow:"hidden",top:0,left:0,bottom:0,right:0,padding:0,margin:0},".os-content-arrange":{position:"absolute",zIndex:-1,minHeight:1,minWidth:1,pointerEvents:"none"},".os-content":{direction:"inherit",boxSizing:"border-box!important",position:"relative",display:"block",height:"100%",width:"100%",visibility:"visible"},".os-content:before, .os-content:after":{content:"''",display:"table",width:0,height:0,lineHeight:0,fontSize:0},".os-content>.os-textarea":{boxSizing:"border-box!important",direction:"inherit!important",background:"0 0!important",outline:"0 transparent!important",overflow:"hidden!important",position:"absolute!important",display:"block!important",top:"0!important",left:"0!important",margin:"0!important",borderRadius:"0!important",float:"none!important",filter:"none!important",border:"0!important",resize:"none!important",transform:"none!important",maxWidth:"none!important",maxHeight:"none!important",boxShadow:"none!important",perspective:"none!important",opacity:"1!important",zIndex:"1!important",clip:"auto!important",verticalAlign:"baseline!important",padding:0},".os-host-rtl>.os-padding>.os-viewport>.os-content>.os-textarea":{right:"0!important"},".os-content>.os-textarea-cover":{zIndex:-1,pointerEvents:"none"},".os-content>.os-textarea[wrap=off]":{whiteSpace:"pre!important",margin:"0!important"},".os-text-inherit":{fontFamily:"inherit",fontSize:"inherit",fontWeight:"inherit",fontStyle:"inherit",fontVariant:"inherit",textTransform:"inherit",textDecoration:"inherit",textIndent:"inherit",textAlign:"inherit",textShadow:"inherit",textOverflow:"inherit",letterSpacing:"inherit",wordSpacing:"inherit",lineHeight:"inherit",unicodeBidi:"inherit",direction:"inherit",color:"inherit",cursor:"text"},".os-resize-observer, .os-resize-observer-host":{boxSizing:"inherit",display:"block",opacity:0,position:"absolute",top:0,left:0,height:"100%",width:"100%",overflow:"hidden",pointerEvents:"none",zIndex:-1},".os-resize-observer-host":{padding:"inherit",border:"inherit",borderColor:"transparent",borderStyle:"solid",boxSizing:"border-box"},".os-resize-observer-host:after":{content:"''"},".os-resize-observer-host>.os-resize-observer, .os-resize-observer-host:after":{height:"200%",width:"200%",padding:"inherit",border:"inherit",margin:0,display:"block",boxSizing:"content-box"},".os-resize-observer.observed, object.os-resize-observer":{boxSizing:"border-box!important"},".os-size-auto-observer":{boxSizing:"inherit!important",height:"100%",width:"inherit",maxWidth:1,position:"relative",float:"left",maxHeight:1,overflow:"hidden",zIndex:-1,padding:0,margin:0,pointerEvents:"none",flexGrow:"inherit",flexShrink:0,flexBasis:0},".os-size-auto-observer>.os-resize-observer":{width:"1000%",height:"1000%",minHeight:1,minWidth:1},".os-resize-observer-item":{position:"absolute",top:0,right:0,bottom:0,left:0,overflow:"hidden",zIndex:-1,opacity:0,direction:"ltr!important",flex:"none!important"},".os-resize-observer-item-final":{position:"absolute",left:0,top:0,transition:"none!important",flex:"none!important"},".os-resize-observer":{animationDuration:".001s",animationName:"".concat(hsResizeObserverDummyAnimation)},".os-host-transition>.os-scrollbar, .os-host-transition>.os-scrollbar-corner":{transition:"opacity .3s,visibility .3s,top .3s,right .3s,bottom .3s,left .3s"},"html.os-html>.os-host>.os-scrollbar":{position:"absolute",zIndex:999999},".os-scrollbar, .os-scrollbar-corner":{position:"absolute",opacity:1,zIndex:1},".os-scrollbar-corner":{bottom:0,right:0,height:10,width:10,backgroundColor:"transparent"},".os-scrollbar":{pointerEvents:"none",padding:2,boxSizing:"border-box",background:0},".os-scrollbar-track":{pointerEvents:"auto",position:"relative",height:"100%",width:"100%",padding:"0!important",border:"0!important"},".os-scrollbar-handle":{pointerEvents:"auto",position:"absolute",width:"100%",height:"100%"},".os-scrollbar-handle-off, .os-scrollbar-track-off":{pointerEvents:"none"},".os-scrollbar.os-scrollbar-unusable, .os-scrollbar.os-scrollbar-unusable *":{pointerEvents:"none!important"},".os-scrollbar.os-scrollbar-unusable .os-scrollbar-handle":{opacity:"0!important"},".os-scrollbar-horizontal":{bottom:0,left:0,right:10,height:10},".os-scrollbar-vertical":{top:0,right:0,bottom:10,width:10},".os-host-rtl>.os-scrollbar-horizontal":{right:0},".os-host-rtl>.os-scrollbar-vertical":{right:"auto",left:0},".os-host-rtl>.os-scrollbar-corner":{right:"auto",left:0},".os-scrollbar-auto-hidden, .os-padding+.os-scrollbar-corner, .os-host-resize-disabled.os-host-scrollbar-horizontal-hidden>.os-scrollbar-corner, .os-host-scrollbar-horizontal-hidden>.os-scrollbar-horizontal, .os-host-resize-disabled.os-host-scrollbar-vertical-hidden>.os-scrollbar-corner, .os-host-scrollbar-vertical-hidden>.os-scrollbar-vertical, .os-scrollbar-horizontal.os-scrollbar-auto-hidden+.os-scrollbar-vertical+.os-scrollbar-corner, .os-scrollbar-horizontal+.os-scrollbar-vertical.os-scrollbar-auto-hidden+.os-scrollbar-corner, .os-scrollbar-horizontal.os-scrollbar-auto-hidden+.os-scrollbar-vertical.os-scrollbar-auto-hidden+.os-scrollbar-corner":{opacity:0,visibility:"hidden",pointerEvents:"none"},".os-scrollbar-corner-resize-both":{cursor:"nwse-resize"},".os-host-rtl>.os-scrollbar-corner-resize-both":{cursor:"nesw-resize"},".os-scrollbar-corner-resize-horizontal":{cursor:"ew-resize"},".os-scrollbar-corner-resize-vertical":{cursor:"ns-resize"},".os-dragging .os-scrollbar-corner.os-scrollbar-corner-resize":{cursor:"default"},".os-host-resize-disabled.os-host-scrollbar-horizontal-hidden>.os-scrollbar-vertical":{top:0,bottom:0},".os-host-resize-disabled.os-host-scrollbar-vertical-hidden>.os-scrollbar-horizontal, .os-host-rtl.os-host-resize-disabled.os-host-scrollbar-vertical-hidden>.os-scrollbar-horizontal":{right:0,left:0},".os-scrollbar:hover, .os-scrollbar-corner.os-scrollbar-corner-resize":{opacity:"1!important",visibility:"visible!important"},".os-scrollbar-corner.os-scrollbar-corner-resize":{backgroundImage:"linear-gradient(135deg, rgba(0,0,0,0) 0%, rgba(0,0,0,0) 50%, rgba(0,0,0,0.4) 50%, rgba(0,0,0,0.4) 100%)",backgroundRepeat:"no-repeat",backgroundPosition:"100% 100%",pointerEvents:"auto!important"},".os-host-rtl>.os-scrollbar-corner.os-scrollbar-corner-resize":{transform:"scale(-1,1)"},".os-host-overflow":{overflow:"hidden!important"},".os-theme-dark.os-host-rtl>.os-scrollbar-horizontal":{left:10,right:0},".os-scrollbar.os-scrollbar-unusable":{background:0},".os-scrollbar>.os-scrollbar-track":{background:0},".os-scrollbar-horizontal>.os-scrollbar-track>.os-scrollbar-handle":{minWidth:30},".os-scrollbar-vertical>.os-scrollbar-track>.os-scrollbar-handle":{minHeight:30},".os-theme-dark.os-host-transition>.os-scrollbar>.os-scrollbar-track>.os-scrollbar-handle":{transition:"background-color .3s"},".os-scrollbar>.os-scrollbar-track>.os-scrollbar-handle, .os-scrollbar>.os-scrollbar-track":{borderRadius:10},".os-scrollbar>.os-scrollbar-track>.os-scrollbar-handle":{background:theme.color.mediumdark,opacity:.5},".os-scrollbar:hover>.os-scrollbar-track>.os-scrollbar-handle":{opacity:.6},".os-scrollbar-horizontal .os-scrollbar-handle:before, .os-scrollbar-vertical .os-scrollbar-handle:before":{content:"''",position:"absolute",left:0,right:0,top:0,bottom:0,display:"block"},".os-theme-dark.os-host-scrollbar-horizontal-hidden>.os-scrollbar-horizontal .os-scrollbar-handle:before, .os-theme-dark.os-host-scrollbar-vertical-hidden>.os-scrollbar-vertical .os-scrollbar-handle:before":{display:"none"},".os-scrollbar-horizontal .os-scrollbar-handle:before":{top:-6,bottom:-2},".os-scrollbar-vertical .os-scrollbar-handle:before":{left:-6,right:-2},".os-host-rtl.os-scrollbar-vertical .os-scrollbar-handle:before":{right:-6,left:-2}}},GlobalScrollAreaStyles=function GlobalScrollAreaStyles(){return react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(_storybook_theming__WEBPACK_IMPORTED_MODULE_3__.a,{styles:getScrollAreaStyles})};GlobalScrollAreaStyles.displayName="GlobalScrollAreaStyles",__webpack_exports__.default=GlobalScrollAreaStyles}}]); -------------------------------------------------------------------------------- /docs/8.b541eadfcb9164835dfc.manager.bundle.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[8],{868:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,"OverlayScrollbarsComponent",(function(){return OverlayScrollbarsComponent}));__webpack_require__(455),__webpack_require__(27),__webpack_require__(88),__webpack_require__(80),__webpack_require__(63),__webpack_require__(32),__webpack_require__(79),__webpack_require__(42),__webpack_require__(18),__webpack_require__(23),__webpack_require__(4),__webpack_require__(15);var react__WEBPACK_IMPORTED_MODULE_12__=__webpack_require__(0),react__WEBPACK_IMPORTED_MODULE_12___default=__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_12__),overlayscrollbars__WEBPACK_IMPORTED_MODULE_13__=__webpack_require__(890),overlayscrollbars__WEBPACK_IMPORTED_MODULE_13___default=__webpack_require__.n(overlayscrollbars__WEBPACK_IMPORTED_MODULE_13__);function _extends(){return(_extends=Object.assign||function(target){for(var i=1;i=0||(target[key]=source[key]);return target}(source,excluded);if(Object.getOwnPropertySymbols){var sourceSymbolKeys=Object.getOwnPropertySymbols(source);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(source,key)&&(target[key]=source[key])}return target}var OverlayScrollbarsComponent=function OverlayScrollbarsComponent(_ref){var _ref$options=_ref.options,options=void 0===_ref$options?{}:_ref$options,extensions=_ref.extensions,className=_ref.className,children=_ref.children,rest=_objectWithoutProperties(_ref,["options","extensions","className","children"]),osTargetRef=react__WEBPACK_IMPORTED_MODULE_12___default.a.useRef(),osInstance=react__WEBPACK_IMPORTED_MODULE_12___default.a.useRef();return react__WEBPACK_IMPORTED_MODULE_12___default.a.useEffect((function(){return osInstance.current=overlayscrollbars__WEBPACK_IMPORTED_MODULE_13___default()(osTargetRef.current,options,extensions),mergeHostClassNames(osInstance.current,className),function(){overlayscrollbars__WEBPACK_IMPORTED_MODULE_13___default.a.valid(osInstance.current)&&(osInstance.current.destroy(),osInstance.current=null)}}),[]),react__WEBPACK_IMPORTED_MODULE_12___default.a.useEffect((function(){overlayscrollbars__WEBPACK_IMPORTED_MODULE_13___default.a.valid(osInstance.current)&&osInstance.current.options(options)}),[options]),react__WEBPACK_IMPORTED_MODULE_12___default.a.useEffect((function(){overlayscrollbars__WEBPACK_IMPORTED_MODULE_13___default.a.valid(osInstance.current)&&mergeHostClassNames(osInstance.current,className)}),[className]),react__WEBPACK_IMPORTED_MODULE_12___default.a.createElement("div",_extends({className:"os-host"},rest,{ref:osTargetRef}),react__WEBPACK_IMPORTED_MODULE_12___default.a.createElement("div",{className:"os-resize-observer-host"}),react__WEBPACK_IMPORTED_MODULE_12___default.a.createElement("div",{className:"os-padding"},react__WEBPACK_IMPORTED_MODULE_12___default.a.createElement("div",{className:"os-viewport"},react__WEBPACK_IMPORTED_MODULE_12___default.a.createElement("div",{className:"os-content"},children))),react__WEBPACK_IMPORTED_MODULE_12___default.a.createElement("div",{className:"os-scrollbar os-scrollbar-horizontal "},react__WEBPACK_IMPORTED_MODULE_12___default.a.createElement("div",{className:"os-scrollbar-track"},react__WEBPACK_IMPORTED_MODULE_12___default.a.createElement("div",{className:"os-scrollbar-handle"}))),react__WEBPACK_IMPORTED_MODULE_12___default.a.createElement("div",{className:"os-scrollbar os-scrollbar-vertical"},react__WEBPACK_IMPORTED_MODULE_12___default.a.createElement("div",{className:"os-scrollbar-track"},react__WEBPACK_IMPORTED_MODULE_12___default.a.createElement("div",{className:"os-scrollbar-handle"}))),react__WEBPACK_IMPORTED_MODULE_12___default.a.createElement("div",{className:"os-scrollbar-corner"}))};function mergeHostClassNames(osInstance,className){if(overlayscrollbars__WEBPACK_IMPORTED_MODULE_13___default.a.valid(osInstance)){var host=osInstance.getElements().host,regex=new RegExp("(^os-host([-_].+|)$)|".concat(osInstance.options().className.replace(/\s/g,"$|"),"$"),"g"),osClassNames=host.className.split(" ").filter((function(name){return name.match(regex)})).join(" ");host.className="".concat(osClassNames," ").concat(className||"")}}OverlayScrollbarsComponent.displayName="OverlayScrollbarsComponent",__webpack_exports__.default=OverlayScrollbarsComponent}}]); -------------------------------------------------------------------------------- /docs/9.411ac8e451bbb10926c7.manager.bundle.js: -------------------------------------------------------------------------------- 1 | (window.webpackJsonp=window.webpackJsonp||[]).push([[9],{870:function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,"ColorControl",(function(){return Color_ColorControl}));__webpack_require__(23),__webpack_require__(4),__webpack_require__(10),__webpack_require__(5),__webpack_require__(13),__webpack_require__(8),__webpack_require__(9),__webpack_require__(12),__webpack_require__(17),__webpack_require__(18),__webpack_require__(15),__webpack_require__(67),__webpack_require__(42),__webpack_require__(27),__webpack_require__(21),__webpack_require__(118),__webpack_require__(80),__webpack_require__(168),__webpack_require__(79),__webpack_require__(16),__webpack_require__(32),__webpack_require__(14);var react=__webpack_require__(0),react_default=__webpack_require__.n(react),index_module=__webpack_require__(941),color_convert=__webpack_require__(938),color_convert_default=__webpack_require__.n(color_convert),throttle=__webpack_require__(410),throttle_default=__webpack_require__.n(throttle),esm=__webpack_require__(1);__webpack_require__(48);function _objectWithoutProperties(source,excluded){if(null==source)return{};var key,i,target=function _objectWithoutPropertiesLoose(source,excluded){if(null==source)return{};var key,i,target={},sourceKeys=Object.keys(source);for(i=0;i=0||(target[key]=source[key]);return target}(source,excluded);if(Object.getOwnPropertySymbols){var sourceSymbolKeys=Object.getOwnPropertySymbols(source);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(source,key)&&(target[key]=source[key])}return target}var Note=esm.styled.div((function(_ref){var theme=_ref.theme;return{padding:"2px 6px",lineHeight:"16px",fontSize:10,fontWeight:theme.typography.weight.bold,color:theme.color.lightest,boxShadow:"0 0 5px 0 rgba(0, 0, 0, 0.3)",borderRadius:4,whiteSpace:"nowrap",pointerEvents:"none",zIndex:-1,background:"light"===theme.base?"rgba(60, 60, 60, 0.9)":"rgba(20, 20, 20, 0.85)",margin:6}})),TooltipNote_TooltipNote=function TooltipNote(_ref2){var note=_ref2.note,props=_objectWithoutProperties(_ref2,["note"]);return react_default.a.createElement(Note,props,note)};TooltipNote_TooltipNote.displayName="TooltipNote";var _ColorPicker,_fallbackColor,lazy_WithTooltip=__webpack_require__(407),esm_form=__webpack_require__(55),icon=__webpack_require__(60),helpers=__webpack_require__(37);function _slicedToArray(arr,i){return function _arrayWithHoles(arr){if(Array.isArray(arr))return arr}(arr)||function _iterableToArrayLimit(arr,i){if("undefined"==typeof Symbol||!(Symbol.iterator in Object(arr)))return;var _arr=[],_n=!0,_d=!1,_e=void 0;try{for(var _s,_i=arr[Symbol.iterator]();!(_n=(_s=_i.next()).done)&&(_arr.push(_s.value),!i||_arr.length!==i);_n=!0);}catch(err){_d=!0,_e=err}finally{try{_n||null==_i.return||_i.return()}finally{if(_d)throw _e}}return _arr}(arr,i)||function _unsupportedIterableToArray(o,minLen){if(!o)return;if("string"==typeof o)return _arrayLikeToArray(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);"Object"===n&&o.constructor&&(n=o.constructor.name);if("Map"===n||"Set"===n)return Array.from(o);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _arrayLikeToArray(o,minLen)}(arr,i)||function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function _arrayLikeToArray(arr,len){(null==len||len>arr.length)&&(len=arr.length);for(var i=0,arr2=new Array(len);i=0||(target[key]=source[key]);return target}(source,excluded);if(Object.getOwnPropertySymbols){var sourceSymbolKeys=Object.getOwnPropertySymbols(source);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(source,key)&&(target[key]=source[key])}return target}var Wrapper=esm.styled.div({position:"relative",maxWidth:250}),PickerTooltip=Object(esm.styled)(lazy_WithTooltip.a)({position:"absolute",zIndex:1,top:4,left:4}),TooltipContent=esm.styled.div({width:200,margin:5,".react-colorful__saturation":{borderRadius:"4px 4px 0 0"},".react-colorful__hue":{boxShadow:"inset 0 0 0 1px rgb(0 0 0 / 5%)"},".react-colorful__last-control":{borderRadius:"0 0 4px 4px"}}),Color_Note=Object(esm.styled)(TooltipNote_TooltipNote)((function(_ref){return{fontFamily:_ref.theme.typography.fonts.base}})),Swatches=esm.styled.div({display:"grid",gridTemplateColumns:"repeat(9, 16px)",gap:6,padding:3,marginTop:5,width:200}),SwatchColor=esm.styled.div((function(_ref2){var theme=_ref2.theme;return{width:16,height:16,boxShadow:_ref2.active?"".concat(theme.appBorderColor," 0 0 0 1px inset, ").concat(theme.color.mediumdark,"50 0 0 0 4px"):"".concat(theme.appBorderColor," 0 0 0 1px inset"),borderRadius:theme.appBorderRadius}})),Color_Swatch=function Swatch(_ref3){var value=_ref3.value,active=_ref3.active,onClick=_ref3.onClick,style=_ref3.style,props=Color_objectWithoutProperties(_ref3,["value","active","onClick","style"]),backgroundImage="linear-gradient(".concat(value,", ").concat(value,"), ").concat('url(\'data:image/svg+xml;charset=utf-8,\')',", linear-gradient(#fff, #fff)");return react_default.a.createElement(SwatchColor,_extends({},props,{active:active,onClick:onClick,style:Object.assign({},style,{backgroundImage:backgroundImage})}))};Color_Swatch.displayName="Swatch";var ColorSpace,Input=Object(esm.styled)(esm_form.a.Input)((function(_ref4){return{width:"100%",paddingLeft:30,paddingRight:30,boxSizing:"border-box",fontFamily:_ref4.theme.typography.fonts.base}})),ToggleIcon=Object(esm.styled)(icon.a)((function(_ref5){return{position:"absolute",zIndex:1,top:6,right:7,width:20,height:20,padding:4,boxSizing:"border-box",cursor:"pointer",color:_ref5.theme.input.color}}));!function(ColorSpace){ColorSpace.RGB="rgb",ColorSpace.HSL="hsl",ColorSpace.HEX="hex"}(ColorSpace||(ColorSpace={}));var COLOR_SPACES=Object.values(ColorSpace),COLOR_REGEXP=/\(([0-9]+),\s*([0-9]+)%?,\s*([0-9]+)%?,?\s*([0-9.]+)?\)/,RGB_REGEXP=/^\s*rgba?\(([0-9]+),\s*([0-9]+),\s*([0-9]+),?\s*([0-9.]+)?\)\s*$/i,HSL_REGEXP=/^\s*hsla?\(([0-9]+),\s*([0-9]+)%,\s*([0-9]+)%,?\s*([0-9.]+)?\)\s*$/i,HEX_REGEXP=/^\s*#?([0-9a-f]{3}|[0-9a-f]{6})\s*$/i,SHORTHEX_REGEXP=/^\s*#?([0-9a-f]{3})\s*$/i,ColorPicker=(_defineProperty(_ColorPicker={},ColorSpace.HEX,index_module.a),_defineProperty(_ColorPicker,ColorSpace.RGB,index_module.c),_defineProperty(_ColorPicker,ColorSpace.HSL,index_module.b),_ColorPicker),fallbackColor=(_defineProperty(_fallbackColor={},ColorSpace.HEX,"transparent"),_defineProperty(_fallbackColor,ColorSpace.RGB,"rgba(0, 0, 0, 0)"),_defineProperty(_fallbackColor,ColorSpace.HSL,"hsla(0, 0%, 0%, 0)"),_fallbackColor),stringToArgs=function stringToArgs(value){var match=null==value?void 0:value.match(COLOR_REGEXP);if(!match)return[0,0,0,1];var _match=_slicedToArray(match,5),x=_match[1],y=_match[2],z=_match[3],_match$=_match[4];return[x,y,z,void 0===_match$?1:_match$].map(Number)},Color_parseValue=function parseValue(value){var _ref12;if(value){var valid=!0;if(RGB_REGEXP.test(value)){var _ref8,_stringToArgs2=_slicedToArray(stringToArgs(value),4),r=_stringToArgs2[0],g=_stringToArgs2[1],b=_stringToArgs2[2],a=_stringToArgs2[3],_ref7=_slicedToArray(color_convert_default.a.rgb.hsl([r,g,b])||[0,0,0],3),h=_ref7[0],s=_ref7[1],l=_ref7[2];return _defineProperty(_ref8={valid:valid,value:value,keyword:color_convert_default.a.rgb.keyword([r,g,b]),colorSpace:ColorSpace.RGB},ColorSpace.RGB,value),_defineProperty(_ref8,ColorSpace.HSL,"hsla(".concat(h,", ").concat(s,"%, ").concat(l,"%, ").concat(a,")")),_defineProperty(_ref8,ColorSpace.HEX,"#".concat(color_convert_default.a.rgb.hex([r,g,b]).toLowerCase())),_ref8}if(HSL_REGEXP.test(value)){var _ref11,_stringToArgs4=_slicedToArray(stringToArgs(value),4),_h=_stringToArgs4[0],_s2=_stringToArgs4[1],_l=_stringToArgs4[2],_a=_stringToArgs4[3],_ref10=_slicedToArray(color_convert_default.a.hsl.rgb([_h,_s2,_l])||[0,0,0],3),_r=_ref10[0],_g=_ref10[1],_b=_ref10[2];return _defineProperty(_ref11={valid:valid,value:value,keyword:color_convert_default.a.hsl.keyword([_h,_s2,_l]),colorSpace:ColorSpace.HSL},ColorSpace.RGB,"rgba(".concat(_r,", ").concat(_g,", ").concat(_b,", ").concat(_a,")")),_defineProperty(_ref11,ColorSpace.HSL,value),_defineProperty(_ref11,ColorSpace.HEX,"#".concat(color_convert_default.a.hsl.hex([_h,_s2,_l]).toLowerCase())),_ref11}var plain=value.replace("#",""),rgb=color_convert_default.a.keyword.rgb(plain)||color_convert_default.a.hex.rgb(plain),hsl=color_convert_default.a.rgb.hsl(rgb),mapped=value;if(/[^#a-f0-9]/i.test(value)?mapped=plain:HEX_REGEXP.test(value)&&(mapped="#".concat(plain)),mapped.startsWith("#"))valid=HEX_REGEXP.test(mapped);else try{color_convert_default.a.keyword.hex(mapped)}catch(e){valid=!1}return _defineProperty(_ref12={valid:valid,value:mapped,keyword:color_convert_default.a.rgb.keyword(rgb),colorSpace:ColorSpace.HEX},ColorSpace.RGB,"rgba(".concat(rgb[0],", ").concat(rgb[1],", ").concat(rgb[2],", 1)")),_defineProperty(_ref12,ColorSpace.HSL,"hsla(".concat(hsl[0],", ").concat(hsl[1],"%, ").concat(hsl[2],"%, 1)")),_defineProperty(_ref12,ColorSpace.HEX,mapped),_ref12}},Color_useColorInput=function useColorInput(initialValue,onChange){var _useState2=_slicedToArray(Object(react.useState)(initialValue||""),2),value=_useState2[0],setValue=_useState2[1],_useState4=_slicedToArray(Object(react.useState)((function(){return Color_parseValue(value)})),2),color=_useState4[0],setColor=_useState4[1],_useState6=_slicedToArray(Object(react.useState)((null==color?void 0:color.colorSpace)||ColorSpace.HEX),2),colorSpace=_useState6[0],setColorSpace=_useState6[1];Object(react.useEffect)((function(){void 0===initialValue&&(setValue(""),setColor(void 0),setColorSpace(ColorSpace.HEX))}),[initialValue]);var realValue=Object(react.useMemo)((function(){return function getRealValue(value,color,colorSpace){if(!value||null==color||!color.valid)return fallbackColor[colorSpace];if(colorSpace!==ColorSpace.HEX)return(null==color?void 0:color[colorSpace])||fallbackColor[colorSpace];if(!color.hex.startsWith("#"))try{return"#".concat(color_convert_default.a.keyword.hex(color.hex))}catch(e){return fallbackColor.hex}var short=color.hex.match(SHORTHEX_REGEXP);if(!short)return HEX_REGEXP.test(color.hex)?color.hex:fallbackColor.hex;var _short$1$split2=_slicedToArray(short[1].split(""),3),r=_short$1$split2[0],g=_short$1$split2[1],b=_short$1$split2[2];return"#".concat(r).concat(r).concat(g).concat(g).concat(b).concat(b)}(value,color,colorSpace).toLowerCase()}),[value,color,colorSpace]),updateValue=Object(react.useCallback)((function(update){var parsed=Color_parseValue(update);setValue((null==parsed?void 0:parsed.value)||update||""),parsed&&(setColor(parsed),setColorSpace(parsed.colorSpace),onChange(parsed.value))}),[onChange]),cycleColorSpace=Object(react.useCallback)((function(){var next=COLOR_SPACES.indexOf(colorSpace)+1;next>=COLOR_SPACES.length&&(next=0),setColorSpace(COLOR_SPACES[next]);var update=(null==color?void 0:color[COLOR_SPACES[next]])||"";setValue(update),onChange(update)}),[color,colorSpace,onChange]);return{value:value,realValue:realValue,updateValue:updateValue,color:color,colorSpace:colorSpace,cycleColorSpace:cycleColorSpace}},id=function id(value){return value.replace(/\s*/,"").toLowerCase()},Color_ColorControl=function ColorControl(_ref13){var name=_ref13.name,initialValue=_ref13.value,onChange=_ref13.onChange,onFocus=_ref13.onFocus,onBlur=_ref13.onBlur,presetColors=_ref13.presetColors,startOpen=_ref13.startOpen,_useColorInput=Color_useColorInput(initialValue,throttle_default()(onChange,200)),value=_useColorInput.value,realValue=_useColorInput.realValue,updateValue=_useColorInput.updateValue,color=_useColorInput.color,colorSpace=_useColorInput.colorSpace,cycleColorSpace=_useColorInput.cycleColorSpace,_usePresets=function usePresets(presetColors,currentColor,colorSpace){var _useState8=_slicedToArray(Object(react.useState)(null!=currentColor&¤tColor.valid?[currentColor]:[]),2),selectedColors=_useState8[0],setSelectedColors=_useState8[1];Object(react.useEffect)((function(){void 0===currentColor&&setSelectedColors([])}),[currentColor]);var presets=Object(react.useMemo)((function(){return(presetColors||[]).map((function(preset){return"string"==typeof preset?Color_parseValue(preset):preset.title?Object.assign({},Color_parseValue(preset.color),{keyword:preset.title}):Color_parseValue(preset.color)})).concat(selectedColors).filter(Boolean).slice(-27)}),[presetColors,selectedColors]),addPreset=Object(react.useCallback)((function(color){null!=color&&color.valid&&(presets.some((function(preset){return id(preset[colorSpace])===id(color[colorSpace])}))||setSelectedColors((function(arr){return arr.concat(color)})))}),[colorSpace,presets]);return{presets:presets,addPreset:addPreset}}(presetColors,color,colorSpace),presets=_usePresets.presets,addPreset=_usePresets.addPreset,Picker=ColorPicker[colorSpace];return react_default.a.createElement(Wrapper,null,react_default.a.createElement(PickerTooltip,{trigger:"click",startOpen:startOpen,closeOnClick:!0,onVisibilityChange:function onVisibilityChange(){return addPreset(color)},tooltip:react_default.a.createElement(TooltipContent,null,react_default.a.createElement(Picker,{color:"transparent"===realValue?"#000000":realValue,onChange:updateValue,onFocus:onFocus,onBlur:onBlur}),presets.length>0&&react_default.a.createElement(Swatches,null,presets.map((function(preset,index){return react_default.a.createElement(lazy_WithTooltip.a,{key:"".concat(preset.value,"-").concat(index),hasChrome:!1,tooltip:react_default.a.createElement(Color_Note,{note:preset.keyword||preset.value})},react_default.a.createElement(Color_Swatch,{value:preset[colorSpace],active:color&&id(preset[colorSpace])===id(color[colorSpace]),onClick:function onClick(){return updateValue(preset.value)}}))}))))},react_default.a.createElement(Color_Swatch,{value:realValue,style:{margin:4}})),react_default.a.createElement(Input,{id:Object(helpers.a)(name),value:value,onChange:function onChange(e){return updateValue(e.target.value)},onFocus:function onFocus(e){return e.target.select()},placeholder:"Choose color..."}),value?react_default.a.createElement(ToggleIcon,{icon:"markup",onClick:cycleColorSpace}):null)};Color_ColorControl.displayName="ColorControl";__webpack_exports__.default=Color_ColorControl}}]); -------------------------------------------------------------------------------- /docs/9.7709c9e9.iframe.bundle.js.LICENSE.txt: -------------------------------------------------------------------------------- 1 | /*! 2 | * OverlayScrollbars 3 | * https://github.com/KingSora/OverlayScrollbars 4 | * 5 | * Version: 1.13.0 6 | * 7 | * Copyright KingSora | Rene Haas. 8 | * https://github.com/KingSora 9 | * 10 | * Released under the MIT license. 11 | * Date: 02.08.2020 12 | */ 13 | -------------------------------------------------------------------------------- /docs/9.7709c9e9.iframe.bundle.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"9.7709c9e9.iframe.bundle.js","sources":[],"mappings":";A","sourceRoot":""} -------------------------------------------------------------------------------- /docs/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/kitwon/vue-loading-skeleton/8a429762316b10ceeb7cd67981028caf6235d431/docs/favicon.ico -------------------------------------------------------------------------------- /docs/iframe.html: -------------------------------------------------------------------------------- 1 | Webpack App

No Preview

Sorry, but you either have no stories or none are selected somehow.

  • Please check the Storybook config.
  • Try reloading the page.

If the problem persists, check the browser console, or the terminal you've run Storybook from.

-------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | Webpack App
-------------------------------------------------------------------------------- /docs/runtime~main.91a0c7330ab317d35c4a.manager.bundle.js: -------------------------------------------------------------------------------- 1 | !function(modules){function webpackJsonpCallback(data){for(var moduleId,chunkId,chunkIds=data[0],moreModules=data[1],executeModules=data[2],i=0,resolves=[];i 11 | * @license MIT 12 | */ 13 | 14 | /*! 15 | * isobject 16 | * 17 | * Copyright (c) 2014-2017, Jon Schlinkert. 18 | * Released under the MIT License. 19 | */ 20 | 21 | /** @license React v16.14.0 22 | * react.production.min.js 23 | * 24 | * Copyright (c) Facebook, Inc. and its affiliates. 25 | * 26 | * This source code is licensed under the MIT license found in the 27 | * LICENSE file in the root directory of this source tree. 28 | */ 29 | 30 | //! stable.js 0.1.8, https://github.com/Two-Screen/stable 31 | 32 | //! © 2018 Angry Bytes and contributors. MIT licensed. 33 | -------------------------------------------------------------------------------- /docs/vendors~main.ebe7153f.iframe.bundle.js.map: -------------------------------------------------------------------------------- 1 | {"version":3,"file":"vendors~main.ebe7153f.iframe.bundle.js","sources":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;A","sourceRoot":""} -------------------------------------------------------------------------------- /docs/vendors~main.f7f16cebbf3aa96a4f89.manager.bundle.js.LICENSE.txt: -------------------------------------------------------------------------------- 1 | /* 2 | object-assign 3 | (c) Sindre Sorhus 4 | @license MIT 5 | */ 6 | 7 | /*! 8 | Copyright (c) 2017 Jed Watson. 9 | Licensed under the MIT License (MIT), see 10 | http://jedwatson.github.io/classnames 11 | */ 12 | 13 | /*! 14 | * Fuse.js v3.6.1 - Lightweight fuzzy-search (http://fusejs.io) 15 | * 16 | * Copyright (c) 2012-2017 Kirollos Risk (http://kiro.me) 17 | * All Rights Reserved. Apache Software License 2.0 18 | * 19 | * http://www.apache.org/licenses/LICENSE-2.0 20 | */ 21 | 22 | /*! 23 | * https://github.com/es-shims/es5-shim 24 | * @license es5-shim Copyright 2009-2020 by contributors, MIT License 25 | * see https://github.com/es-shims/es5-shim/blob/master/LICENSE 26 | */ 27 | 28 | /*! 29 | * https://github.com/paulmillr/es6-shim 30 | * @license es6-shim Copyright 2013-2016 by Paul Miller (http://paulmillr.com) 31 | * and contributors, MIT License 32 | * es6-shim: v0.35.4 33 | * see https://github.com/paulmillr/es6-shim/blob/0.35.3/LICENSE 34 | * Details and documentation: 35 | * https://github.com/paulmillr/es6-shim/ 36 | */ 37 | 38 | /*! 39 | * isobject 40 | * 41 | * Copyright (c) 2014-2017, Jon Schlinkert. 42 | * Released under the MIT License. 43 | */ 44 | 45 | /** 46 | * React Router DOM v6.0.2 47 | * 48 | * Copyright (c) Remix Software Inc. 49 | * 50 | * This source code is licensed under the MIT license found in the 51 | * LICENSE.md file in the root directory of this source tree. 52 | * 53 | * @license MIT 54 | */ 55 | 56 | /** 57 | * React Router v6.0.2 58 | * 59 | * Copyright (c) Remix Software Inc. 60 | * 61 | * This source code is licensed under the MIT license found in the 62 | * LICENSE.md file in the root directory of this source tree. 63 | * 64 | * @license MIT 65 | */ 66 | 67 | /** @license React v0.19.1 68 | * scheduler.production.min.js 69 | * 70 | * Copyright (c) Facebook, Inc. and its affiliates. 71 | * 72 | * This source code is licensed under the MIT license found in the 73 | * LICENSE file in the root directory of this source tree. 74 | */ 75 | 76 | /** @license React v16.13.1 77 | * react-is.production.min.js 78 | * 79 | * Copyright (c) Facebook, Inc. and its affiliates. 80 | * 81 | * This source code is licensed under the MIT license found in the 82 | * LICENSE file in the root directory of this source tree. 83 | */ 84 | 85 | /** @license React v16.14.0 86 | * react-dom.production.min.js 87 | * 88 | * Copyright (c) Facebook, Inc. and its affiliates. 89 | * 90 | * This source code is licensed under the MIT license found in the 91 | * LICENSE file in the root directory of this source tree. 92 | */ 93 | 94 | /** @license React v16.14.0 95 | * react.production.min.js 96 | * 97 | * Copyright (c) Facebook, Inc. and its affiliates. 98 | * 99 | * This source code is licensed under the MIT license found in the 100 | * LICENSE file in the root directory of this source tree. 101 | */ 102 | 103 | /** @license React v17.0.1 104 | * react-is.production.min.js 105 | * 106 | * Copyright (c) Facebook, Inc. and its affiliates. 107 | * 108 | * This source code is licensed under the MIT license found in the 109 | * LICENSE file in the root directory of this source tree. 110 | */ 111 | -------------------------------------------------------------------------------- /jest.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | setupFiles: ['/tests/unit/register-context.js'], 3 | moduleFileExtensions: [ 4 | 'js', 5 | 'jsx', 6 | 'json', 7 | 'vue' 8 | ], 9 | transform: { 10 | '^.+\\.vue$': 'vue-jest', 11 | '.+\\.(css|styl|less|sass|scss|svg|png|jpg|ttf|woff|woff2)$': 'jest-transform-stub', 12 | '^.+\\.jsx?$': 'babel-jest' 13 | }, 14 | transformIgnorePatterns: [ 15 | '/node_modules/' 16 | ], 17 | moduleNameMapper: { 18 | '^@/(.*)$': '/src/$1' 19 | }, 20 | snapshotSerializers: [ 21 | 'jest-serializer-vue' 22 | ], 23 | testMatch: [ 24 | '**/tests/unit/**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx)' 25 | ], 26 | testURL: 'http://localhost/', 27 | watchPlugins: [ 28 | 'jest-watch-typeahead/filename', 29 | 'jest-watch-typeahead/testname' 30 | ] 31 | }; 32 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vue-loading-skeleton", 3 | "version": "2.0.0-beta.1", 4 | "main": "dist/vue-loading-skeleton.cjs.js", 5 | "module": "dist/vue-loading-skeleton.es.js", 6 | "description": "Make beautiful loading skeleton that automatically adapt your vue app.", 7 | "keywords": [ 8 | "vuejs", 9 | "vue", 10 | "skeleton" 11 | ], 12 | "types": "types/index.d.ts", 13 | "style": "dist/style.css", 14 | "license": "MIT", 15 | "scripts": { 16 | "build": "vite build", 17 | "deploy": "npm run lint && npm run test:unit && npm run build && npm run build-storybook", 18 | "lint": "vue-cli-service lint", 19 | "test:unit": "vue-cli-service test:unit", 20 | "storybook": "start-storybook -p 6006", 21 | "build:storybook": "build-storybook --modern -o ./docs" 22 | }, 23 | "dependencies": { 24 | "@vue/compat": "^3.1.0", 25 | "core-js": "2", 26 | "vue": "^3.1.0" 27 | }, 28 | "devDependencies": { 29 | "@babel/core": "^7.17.5", 30 | "@rollup/plugin-babel": "^5.3.0", 31 | "@rollup/plugin-node-resolve": "^13.1.3", 32 | "@storybook/addon-actions": "^6.4.19", 33 | "@storybook/addon-essentials": "^6.4.19", 34 | "@storybook/addon-links": "^6.4.19", 35 | "@storybook/vue3": "^6.4.19", 36 | "@typescript-eslint/eslint-plugin": "^5.12.0", 37 | "@typescript-eslint/parser": "^5.12.0", 38 | "@vitejs/plugin-vue": "^2.2.0", 39 | "@vue/cli-plugin-babel": "^5.0.1", 40 | "@vue/cli-plugin-eslint": "^5.0.1", 41 | "@vue/compiler-sfc": "^3.2.31", 42 | "@vue/eslint-config-typescript": "^10.0.0", 43 | "@vue/test-utils": "2.0.0-rc.18", 44 | "babel-loader": "^8.2.3", 45 | "eslint": "^8.9.0", 46 | "eslint-config-prettier": "^8.4.0", 47 | "eslint-plugin-vue": "^8.4.1", 48 | "prettier": "^2.5.1", 49 | "rollup": "^2.67.3", 50 | "rollup-plugin-css-only": "^3.1.0", 51 | "rollup-plugin-vue": "^6.0.0-beta.10", 52 | "typescript": "^4.5.5", 53 | "vite": "^2.8.4", 54 | "vue-loader": "^16.8.3", 55 | "vue-tsc": "^0.29.8" 56 | }, 57 | "bowserslist": [ 58 | "defaults" 59 | ] 60 | } 61 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | autoprefixer: {} 4 | } 5 | }; 6 | -------------------------------------------------------------------------------- /rollup.config.js: -------------------------------------------------------------------------------- 1 | /* eslint import/no-extraneous-dependencies: off */ 2 | import path from "path"; 3 | import resolve from "@rollup/plugin-node-resolve"; 4 | import babel from "@rollup/plugin-babel"; 5 | import vue from "rollup-plugin-vue"; 6 | import css from "rollup-plugin-css-only"; 7 | 8 | const r = (p) => path.join(__dirname, ".", p); 9 | 10 | module.exports = { 11 | input: r("src/index.js"), 12 | output: [ 13 | { 14 | file: r("dist/vue-loading-skeleton.esm.js"), 15 | format: "es", 16 | }, 17 | { 18 | file: r("dist/vue-loading-skeleton.cjs.js"), 19 | format: "cjs", 20 | }, 21 | { 22 | file: r("dist/vue-loading-skeleton.umd.js"), 23 | format: "umd", 24 | }, 25 | ], 26 | plugins: [ 27 | resolve({ 28 | moduleDirectories: ["node_modules"], 29 | }), 30 | css(), 31 | vue({ 32 | css: false, 33 | }), 34 | babel({ exclude: r("node_modules/**") }), 35 | ], 36 | }; 37 | -------------------------------------------------------------------------------- /src/composition/theme.ts: -------------------------------------------------------------------------------- 1 | import { InjectionKey, ComputedRef } from "vue"; 2 | 3 | export const DEFAULT_BACKGROUND = '#eeeeee'; 4 | export const DEFAULT_HIGHLIGHT = '#f5f5f5'; 5 | export const SkeletonStyle = { 6 | animation: '', 7 | backgroundColor: DEFAULT_BACKGROUND, 8 | backgroundImage: `linear-gradient( 9 | 90deg, 10 | ${DEFAULT_BACKGROUND}, 11 | ${DEFAULT_HIGHLIGHT}, 12 | ${DEFAULT_BACKGROUND} 13 | )` 14 | }; 15 | 16 | export const ThemeStyleProviderKey = Symbol('_themeStyle') as InjectionKey> 17 | export const ThemeProviderKey = Symbol('_theme') 18 | export function createThemeProvider() { 19 | return ThemeProviderKey as InjectionKey 20 | } 21 | 22 | -------------------------------------------------------------------------------- /src/env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | declare module '*.vue' { 4 | import type { DefineComponent } from 'vue' 5 | // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types 6 | const component: DefineComponent<{}, {}, any> 7 | export default component 8 | } 9 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import PuSkeleton from './skeleton.vue'; 2 | import PuSkeletonTheme from './skeleton-theme.vue'; 3 | import { App } from 'vue'; 4 | 5 | export const Skeleton = PuSkeleton; 6 | export const SkeletonTheme = PuSkeletonTheme; 7 | 8 | export default { 9 | install(Vue: App) { 10 | Vue.component(Skeleton.name, Skeleton); 11 | Vue.component(SkeletonTheme.name, SkeletonTheme); 12 | } 13 | }; 14 | -------------------------------------------------------------------------------- /src/skeleton-theme.vue: -------------------------------------------------------------------------------- 1 | 72 | -------------------------------------------------------------------------------- /src/skeleton.vue: -------------------------------------------------------------------------------- 1 | 109 | -------------------------------------------------------------------------------- /src/stories/assets/code-brackets.svg: -------------------------------------------------------------------------------- 1 | illustration/code-brackets -------------------------------------------------------------------------------- /src/stories/assets/colors.svg: -------------------------------------------------------------------------------- 1 | illustration/colors -------------------------------------------------------------------------------- /src/stories/assets/comments.svg: -------------------------------------------------------------------------------- 1 | illustration/comments -------------------------------------------------------------------------------- /src/stories/assets/direction.svg: -------------------------------------------------------------------------------- 1 | illustration/direction -------------------------------------------------------------------------------- /src/stories/assets/flow.svg: -------------------------------------------------------------------------------- 1 | illustration/flow -------------------------------------------------------------------------------- /src/stories/assets/plugin.svg: -------------------------------------------------------------------------------- 1 | illustration/plugin -------------------------------------------------------------------------------- /src/stories/assets/repo.svg: -------------------------------------------------------------------------------- 1 | illustration/repo -------------------------------------------------------------------------------- /src/stories/assets/stackalt.svg: -------------------------------------------------------------------------------- 1 | illustration/stackalt -------------------------------------------------------------------------------- /src/stories/index.stories.js: -------------------------------------------------------------------------------- 1 | import Item from "./item.vue"; 2 | import ItemWithIf from './item-with-if.vue'; 3 | 4 | export default { 5 | title: 'Skeleton' 6 | } 7 | 8 | export const Default = () => ({ 9 | components: { Item }, 10 | data() { 11 | return { 12 | itemData: {} 13 | }; 14 | }, 15 | mounted() { 16 | setTimeout(() => { 17 | this.itemData = { 18 | img: './image.png', 19 | title: 'Item Title', 20 | body: 'Make beautiful, animated loading skeletons that automatically adapt to your app.' 21 | }; 22 | }, 1500); 23 | }, 24 | template: `` 25 | }) 26 | 27 | export const UseWithVif = () => ( 28 | { 29 | components: { ItemWithIf }, 30 | data() { 31 | return { 32 | itemData: {} 33 | }; 34 | }, 35 | mounted() { 36 | setTimeout(() => { 37 | this.itemData = { 38 | img: './image.png', 39 | title: 'Item Title', 40 | body: 'Make beautiful, animated loading skeletons that automatically adapt to your app.' 41 | }; 42 | }, 1500); 43 | }, 44 | template: `` 45 | } 46 | ) 47 | 48 | export const UseWithList = () => ( 49 | { 50 | components: { 51 | Item 52 | }, 53 | template: ` 54 |
55 | 56 |
57 | `, 58 | data() { 59 | return { 60 | itemData: 4 61 | }; 62 | }, 63 | mounted() { 64 | const tempArr = [1, 2, 3, 4]; 65 | 66 | setTimeout(() => { 67 | this.itemData = tempArr.map(i => ( 68 | { 69 | img: `./image${i}.png`, 70 | title: `Item Title ${i}`, 71 | body: `Make beautiful, animated loading skeletons that automatically adapt to your app ${i}.` 72 | } 73 | )); 74 | }, 1500); 75 | } 76 | } 77 | ) 78 | 79 | export const DisableAnimation = () => { 80 | return { 81 | components: { Item }, 82 | template: `` 83 | } 84 | }; 85 | 86 | 87 | -------------------------------------------------------------------------------- /src/stories/item-with-if.vue: -------------------------------------------------------------------------------- 1 | 21 | 22 | 38 | 39 | 78 | -------------------------------------------------------------------------------- /src/stories/item.vue: -------------------------------------------------------------------------------- 1 | 18 | 19 | 37 | 38 | 77 | -------------------------------------------------------------------------------- /src/stories/theme.stories.js: -------------------------------------------------------------------------------- 1 | import Item from "./item.vue"; 2 | import { SkeletonTheme } from "../../dist/vue-loading-skeleton.es"; 3 | 4 | export default { 5 | title: "Skeleton Theme" 6 | }; 7 | 8 | export const ChangeTheme = () => { 9 | return { 10 | components: { Item, SkeletonTheme }, 11 | template: ` 12 | 13 | 14 | 15 | ` 16 | }; 17 | }; 18 | 19 | export const DisableAllAnimation = () => { 20 | return { 21 | components: { Item, SkeletonTheme }, 22 | template: ` 23 | 24 | 25 | 26 | 27 | ` 28 | }; 29 | }; 30 | 31 | export const ControlAllLoadingStatus = () => { 32 | return { 33 | components: { SkeletonTheme, Item }, 34 | data() { 35 | return { 36 | loading: true 37 | }; 38 | }, 39 | computed: { 40 | itemData() { 41 | return Array(4).fill(0).map((_, i) => ({ 42 | img: `./image${i}.png`, 43 | title: `Item Title ${i}`, 44 | body: `Make beautiful, animated loading skeletons that automatically adapt to your app ${i}.` 45 | })) 46 | } 47 | }, 48 | mounted() { 49 | setTimeout(() => { 50 | this.loading = false; 51 | }, 1500); 52 | }, 53 | template: ` 54 | 55 | 56 | 57 | ` 58 | }; 59 | }; 60 | -------------------------------------------------------------------------------- /src/style.css: -------------------------------------------------------------------------------- 1 | .pu-skeleton { 2 | background-size: 200px 100%; 3 | background-repeat: no-repeat; 4 | border-radius: 3px; 5 | display: inline-block; 6 | line-height: 1; 7 | width: 100%; 8 | height: inherit; 9 | } 10 | 11 | @keyframes SkeletonLoading { 12 | 0% { 13 | background-position: -200px 0; 14 | } 15 | 100% { 16 | background-position: calc(200px + 100%) 0; 17 | } 18 | } -------------------------------------------------------------------------------- /tests/unit/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | env: { 3 | jest: true 4 | } 5 | }; 6 | -------------------------------------------------------------------------------- /tests/unit/__snapshots__/storybook.spec.js.snap: -------------------------------------------------------------------------------- 1 | // Jest Snapshot v1, https://goo.gl/fbAQLP 2 | 3 | exports[`Storyshots Skeleton Component Default 1`] = ` 4 |
7 |
10 | 11 | 15 | ‌ 16 | 17 | 18 |
19 | 20 |
23 |
26 | 27 | 31 | ‌ 32 | 33 | 34 |
35 | 36 |
39 | 40 | 44 | ‌ 45 | 46 | 50 | ‌ 51 | 52 | 53 |
54 |
55 |
56 | `; 57 | 58 | exports[`Storyshots Skeleton Component Disable animation 1`] = ` 59 |
63 |
66 | 67 | 71 | ‌ 72 | 73 | 74 |
75 | 76 |
79 |
82 | 83 | 87 | ‌ 88 | 89 | 90 |
91 | 92 |
95 | 96 | 100 | ‌ 101 | 102 | 106 | ‌ 107 | 108 | 109 |
110 |
111 |
112 | `; 113 | 114 | exports[`Storyshots Skeleton Component Use with list 1`] = ` 115 |
119 |
122 |
125 | 126 | 130 | ‌ 131 | 132 | 133 |
134 | 135 |
138 |
141 | 142 | 146 | ‌ 147 | 148 | 149 |
150 | 151 |
154 | 155 | 159 | ‌ 160 | 161 | 165 | ‌ 166 | 167 | 168 |
169 |
170 |
171 |
174 |
177 | 178 | 182 | ‌ 183 | 184 | 185 |
186 | 187 |
190 |
193 | 194 | 198 | ‌ 199 | 200 | 201 |
202 | 203 |
206 | 207 | 211 | ‌ 212 | 213 | 217 | ‌ 218 | 219 | 220 |
221 |
222 |
223 |
226 |
229 | 230 | 234 | ‌ 235 | 236 | 237 |
238 | 239 |
242 |
245 | 246 | 250 | ‌ 251 | 252 | 253 |
254 | 255 |
258 | 259 | 263 | ‌ 264 | 265 | 269 | ‌ 270 | 271 | 272 |
273 |
274 |
275 |
278 |
281 | 282 | 286 | ‌ 287 | 288 | 289 |
290 | 291 |
294 |
297 | 298 | 302 | ‌ 303 | 304 | 305 |
306 | 307 |
310 | 311 | 315 | ‌ 316 | 317 | 321 | ‌ 322 | 323 | 324 |
325 |
326 |
327 |
328 | `; 329 | 330 | exports[`Storyshots Skeleton Component Use with v-if 1`] = ` 331 |
334 |
337 | 338 | 342 | ‌ 343 | 344 | 345 |
346 | 347 |
350 |
353 | 354 | 358 | ‌ 359 | 360 | 361 |
362 | 363 |
366 | 367 | 371 | ‌ 372 | 373 | 377 | ‌ 378 | 379 | 380 |
381 |
382 |
383 | `; 384 | 385 | exports[`Storyshots Skeleton Theme Change Theme 1`] = ` 386 |
387 |
390 |
393 | 394 | 398 | ‌ 399 | 400 | 401 |
402 | 403 |
406 |
409 | 410 | 414 | ‌ 415 | 416 | 417 |
418 | 419 |
422 | 423 | 427 | ‌ 428 | 429 | 433 | ‌ 434 | 435 | 436 |
437 |
438 |
439 |
440 | `; 441 | 442 | exports[`Storyshots Skeleton Theme Control all lodaing status 1`] = ` 443 |
446 |
449 |
452 | 453 | 457 | ‌ 458 | 459 | 460 |
461 | 462 |
465 |
468 | 469 | 473 | ‌ 474 | 475 | 476 |
477 | 478 |
481 | 482 | 486 | ‌ 487 | 488 | 492 | ‌ 493 | 494 | 495 |
496 |
497 |
498 |
501 |
504 | 505 | 509 | ‌ 510 | 511 | 512 |
513 | 514 |
517 |
520 | 521 | 525 | ‌ 526 | 527 | 528 |
529 | 530 |
533 | 534 | 538 | ‌ 539 | 540 | 544 | ‌ 545 | 546 | 547 |
548 |
549 |
550 |
553 |
556 | 557 | 561 | ‌ 562 | 563 | 564 |
565 | 566 |
569 |
572 | 573 | 577 | ‌ 578 | 579 | 580 |
581 | 582 |
585 | 586 | 590 | ‌ 591 | 592 | 596 | ‌ 597 | 598 | 599 |
600 |
601 |
602 |
605 |
608 | 609 | 613 | ‌ 614 | 615 | 616 |
617 | 618 |
621 |
624 | 625 | 629 | ‌ 630 | 631 | 632 |
633 | 634 |
637 | 638 | 642 | ‌ 643 | 644 | 648 | ‌ 649 | 650 | 651 |
652 |
653 |
654 |
655 | `; 656 | 657 | exports[`Storyshots Skeleton Theme Disable all animation 1`] = ` 658 |
659 |
662 |
665 | 666 | 670 | ‌ 671 | 672 | 673 |
674 | 675 |
678 |
681 | 682 | 686 | ‌ 687 | 688 | 689 |
690 | 691 |
694 | 695 | 699 | ‌ 700 | 701 | 705 | ‌ 706 | 707 | 708 |
709 |
710 |
711 |
714 |
717 | 718 | 722 | ‌ 723 | 724 | 725 |
726 | 727 |
730 |
733 | 734 | 738 | ‌ 739 | 740 | 741 |
742 | 743 |
746 | 747 | 751 | ‌ 752 | 753 | 757 | ‌ 758 | 759 | 760 |
761 |
762 |
763 |
764 | `; 765 | -------------------------------------------------------------------------------- /tests/unit/register-context.js: -------------------------------------------------------------------------------- 1 | import registerRequireContextHook from 'babel-plugin-require-context-hook/register'; 2 | 3 | registerRequireContextHook(); 4 | -------------------------------------------------------------------------------- /tests/unit/storybook.spec.js: -------------------------------------------------------------------------------- 1 | import initStoryshots from '@storybook/addon-storyshots'; 2 | 3 | initStoryshots(); 4 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "esnext", 4 | "useDefineForClassFields": true, 5 | "module": "esnext", 6 | "moduleResolution": "node", 7 | "strict": true, 8 | "jsx": "preserve", 9 | "sourceMap": true, 10 | "resolveJsonModule": true, 11 | "esModuleInterop": true, 12 | "lib": ["esnext", "dom"] 13 | }, 14 | "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue", "types/index.d.ts", "types/skeleton-theme.vue.d.ts", "types/skeleton.vue.d.ts"], 15 | "references": [{ "path": "./tsconfig.node.json" }] 16 | } 17 | -------------------------------------------------------------------------------- /tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "composite": true, 4 | "module": "esnext", 5 | "moduleResolution": "node" 6 | }, 7 | "include": ["vite.config.ts"] 8 | } -------------------------------------------------------------------------------- /types/composition/theme.d.ts: -------------------------------------------------------------------------------- 1 | import { InjectionKey, ComputedRef } from "vue"; 2 | export declare const DEFAULT_BACKGROUND = "#eeeeee"; 3 | export declare const DEFAULT_HIGHLIGHT = "#f5f5f5"; 4 | export declare const SkeletonStyle: { 5 | animation: string; 6 | backgroundColor: string; 7 | backgroundImage: string; 8 | }; 9 | export declare const ThemeStyleProviderKey: InjectionKey>; 14 | export declare const ThemeProviderKey: unique symbol; 15 | export declare function createThemeProvider(): InjectionKey; 16 | -------------------------------------------------------------------------------- /types/index.d.ts: -------------------------------------------------------------------------------- 1 | import { App } from 'vue'; 2 | export declare const Skeleton: import("vue").DefineComponent<{ 3 | prefix: { 4 | type: StringConstructor; 5 | default: string; 6 | }; 7 | count: { 8 | type: NumberConstructor; 9 | default: number; 10 | }; 11 | duration: { 12 | type: NumberConstructor; 13 | default: number; 14 | }; 15 | tag: { 16 | type: StringConstructor; 17 | default: string; 18 | }; 19 | width: { 20 | type: (StringConstructor | NumberConstructor)[]; 21 | default: number; 22 | }; 23 | height: { 24 | type: (StringConstructor | NumberConstructor)[]; 25 | default: number; 26 | }; 27 | circle: BooleanConstructor; 28 | loading: { 29 | type: import("vue").PropType; 30 | default: any; 31 | }; 32 | }, () => import("vue").VNode | import("vue").VNode[], unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly; 64 | default: any; 65 | }; 66 | }>>, { 67 | height: string | number; 68 | width: string | number; 69 | loading: any; 70 | circle: boolean; 71 | prefix: string; 72 | tag: string; 73 | duration: number; 74 | count: number; 75 | }>; 76 | export declare const SkeletonTheme: import("vue").DefineComponent<{ 77 | color: { 78 | type: StringConstructor; 79 | default: string; 80 | }; 81 | highlight: { 82 | type: StringConstructor; 83 | default: string; 84 | }; 85 | duration: { 86 | type: NumberConstructor; 87 | default: number; 88 | }; 89 | tag: { 90 | type: StringConstructor; 91 | default: string; 92 | }; 93 | loading: { 94 | type: BooleanConstructor; 95 | default: any; 96 | }; 97 | }, () => import("vue").VNode, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly>, { 121 | color: string; 122 | loading: boolean; 123 | tag: string; 124 | duration: number; 125 | highlight: string; 126 | }>; 127 | declare const _default: { 128 | install(Vue: App): void; 129 | }; 130 | export default _default; 131 | -------------------------------------------------------------------------------- /types/skeleton-theme.vue.d.ts: -------------------------------------------------------------------------------- 1 | export declare const ThemeProvider: import("vue").InjectionKey; 2 | declare const SkeletonTheme: import("vue").DefineComponent<{ 3 | color: { 4 | type: StringConstructor; 5 | default: string; 6 | }; 7 | highlight: { 8 | type: StringConstructor; 9 | default: string; 10 | }; 11 | duration: { 12 | type: NumberConstructor; 13 | default: number; 14 | }; 15 | tag: { 16 | type: StringConstructor; 17 | default: string; 18 | }; 19 | loading: { 20 | type: BooleanConstructor; 21 | default: any; 22 | }; 23 | }, () => import("vue").VNode, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly>, { 47 | color: string; 48 | loading: boolean; 49 | tag: string; 50 | duration: number; 51 | highlight: string; 52 | }>; 53 | export default SkeletonTheme; 54 | -------------------------------------------------------------------------------- /types/skeleton.vue.d.ts: -------------------------------------------------------------------------------- 1 | import { PropType } from "vue"; 2 | import "./style.css"; 3 | declare const _default: import("vue").DefineComponent<{ 4 | prefix: { 5 | type: StringConstructor; 6 | default: string; 7 | }; 8 | count: { 9 | type: NumberConstructor; 10 | default: number; 11 | }; 12 | duration: { 13 | type: NumberConstructor; 14 | default: number; 15 | }; 16 | tag: { 17 | type: StringConstructor; 18 | default: string; 19 | }; 20 | width: { 21 | type: (StringConstructor | NumberConstructor)[]; 22 | default: number; 23 | }; 24 | height: { 25 | type: (StringConstructor | NumberConstructor)[]; 26 | default: number; 27 | }; 28 | circle: BooleanConstructor; 29 | loading: { 30 | type: PropType; 31 | default: any; 32 | }; 33 | }, () => import("vue").VNode | import("vue").VNode[], unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly; 65 | default: any; 66 | }; 67 | }>>, { 68 | height: string | number; 69 | width: string | number; 70 | loading: any; 71 | circle: boolean; 72 | prefix: string; 73 | tag: string; 74 | duration: number; 75 | count: number; 76 | }>; 77 | export default _default; 78 | -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import vue from '@vitejs/plugin-vue' 3 | 4 | export default defineConfig({ 5 | build: { 6 | lib: { 7 | entry: './src/index.ts', 8 | name: 'vue-loading-skeleton', 9 | fileName: 'vue-loading-skeleton', 10 | formats: ['es' , 'cjs' , 'umd'] 11 | }, 12 | rollupOptions: { 13 | external: ['vue'], 14 | output: { 15 | globals: { 16 | vue: 'Vue' 17 | } 18 | } 19 | } 20 | }, 21 | plugins: [vue()] 22 | }) 23 | --------------------------------------------------------------------------------