font-controls 1.3.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/font-controls.js +1059 -873
- package/dist/font-controls.umd.cjs +12 -12
- package/dist/index.d.ts +51 -4
- package/dist/style.css +1 -1
- package/package.json +2 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
(function(
|
|
1
|
+
(function(V,I){typeof exports=="object"&&typeof module<"u"?I(exports,require("react"),require("react-dom")):typeof define=="function"&&define.amd?define(["exports","react","react-dom"],I):(V=typeof globalThis<"u"?globalThis:V||self,I(V.FontControls={},V.React,V.ReactDOM))})(this,function(V,I,Ge){"use strict";function Ct(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Ce={exports:{}},he={};/**
|
|
2
2
|
* @license React
|
|
3
3
|
* react-jsx-runtime.production.js
|
|
4
4
|
*
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
* This source code is licensed under the MIT license found in the
|
|
8
8
|
* LICENSE file in the root directory of this source tree.
|
|
9
|
-
*/var
|
|
9
|
+
*/var Ve;function _t(){if(Ve)return he;Ve=1;var e=Symbol.for("react.transitional.element"),t=Symbol.for("react.fragment");function n(o,a,i){var p=null;if(i!==void 0&&(p=""+i),a.key!==void 0&&(p=""+a.key),"key"in a){i={};for(var l in a)l!=="key"&&(i[l]=a[l])}else i=a;return a=i.ref,{$$typeof:e,type:o,key:p,ref:a!==void 0?a:null,props:i}}return he.Fragment=t,he.jsx=n,he.jsxs=n,he}var ge={};/**
|
|
10
10
|
* @license React
|
|
11
11
|
* react-jsx-runtime.development.js
|
|
12
12
|
*
|
|
@@ -14,36 +14,36 @@
|
|
|
14
14
|
*
|
|
15
15
|
* This source code is licensed under the MIT license found in the
|
|
16
16
|
* LICENSE file in the root directory of this source tree.
|
|
17
|
-
*/var
|
|
17
|
+
*/var qe;function Pt(){return qe||(qe=1,process.env.NODE_ENV!=="production"&&function(){function e(r){if(r==null)return null;if(typeof r=="function")return r.$$typeof===ae?null:r.displayName||r.name||null;if(typeof r=="string")return r;switch(r){case O:return"Fragment";case d:return"Profiler";case g:return"StrictMode";case D:return"Suspense";case X:return"SuspenseList";case $:return"Activity"}if(typeof r=="object")switch(typeof r.tag=="number"&&console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),r.$$typeof){case F:return"Portal";case x:return r.displayName||"Context";case w:return(r._context.displayName||"Context")+".Consumer";case s:var h=r.render;return r=r.displayName,r||(r=h.displayName||h.name||"",r=r!==""?"ForwardRef("+r+")":"ForwardRef"),r;case B:return h=r.displayName||null,h!==null?h:e(r.type)||"Memo";case W:h=r._payload,r=r._init;try{return e(r(h))}catch{}}return null}function t(r){return""+r}function n(r){try{t(r);var h=!1}catch{h=!0}if(h){h=console;var b=h.error,v=typeof Symbol=="function"&&Symbol.toStringTag&&r[Symbol.toStringTag]||r.constructor.name||"Object";return b.call(h,"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",v),t(r)}}function o(r){if(r===O)return"<>";if(typeof r=="object"&&r!==null&&r.$$typeof===W)return"<...>";try{var h=e(r);return h?"<"+h+">":"<...>"}catch{return"<...>"}}function a(){var r=se.A;return r===null?null:r.getOwner()}function i(){return Error("react-stack-top-frame")}function p(r){if(ie.call(r,"key")){var h=Object.getOwnPropertyDescriptor(r,"key").get;if(h&&h.isReactWarning)return!1}return r.key!==void 0}function l(r,h){function b(){H||(H=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",h))}b.isReactWarning=!0,Object.defineProperty(r,"key",{get:b,configurable:!0})}function f(){var r=e(this.type);return Z[r]||(Z[r]=!0,console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")),r=this.props.ref,r!==void 0?r:null}function y(r,h,b,v,R,_){var S=b.ref;return r={$$typeof:Y,type:r,key:h,props:b,_owner:v},(S!==void 0?S:null)!==null?Object.defineProperty(r,"ref",{enumerable:!1,get:f}):Object.defineProperty(r,"ref",{enumerable:!1,value:null}),r._store={},Object.defineProperty(r._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(r,"_debugInfo",{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(r,"_debugStack",{configurable:!1,enumerable:!1,writable:!0,value:R}),Object.defineProperty(r,"_debugTask",{configurable:!1,enumerable:!1,writable:!0,value:_}),Object.freeze&&(Object.freeze(r.props),Object.freeze(r)),r}function T(r,h,b,v,R,_){var S=h.children;if(S!==void 0)if(v)if(ee(S)){for(v=0;v<S.length;v++)C(S[v]);Object.freeze&&Object.freeze(S)}else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else C(S);if(ie.call(h,"key")){S=e(r);var P=Object.keys(h).filter(function(N){return N!=="key"});v=0<P.length?"{key: someKey, "+P.join(": ..., ")+": ...}":"{key: someKey}",c[S+v]||(P=0<P.length?"{"+P.join(": ..., ")+": ...}":"{}",console.error(`A props object containing a "key" prop is being spread into JSX:
|
|
18
18
|
let props = %s;
|
|
19
19
|
<%s {...props} />
|
|
20
20
|
React keys must be passed directly to JSX without using spread:
|
|
21
21
|
let props = %s;
|
|
22
|
-
<%s key={someKey} {...props} />`,
|
|
22
|
+
<%s key={someKey} {...props} />`,v,S,P,S),c[S+v]=!0)}if(S=null,b!==void 0&&(n(b),S=""+b),p(h)&&(n(h.key),S=""+h.key),"key"in h){b={};for(var A in h)A!=="key"&&(b[A]=h[A])}else b=h;return S&&l(b,typeof r=="function"?r.displayName||r.name||"Unknown":r),y(r,S,b,a(),R,_)}function C(r){E(r)?r._store&&(r._store.validated=1):typeof r=="object"&&r!==null&&r.$$typeof===W&&(r._payload.status==="fulfilled"?E(r._payload.value)&&r._payload.value._store&&(r._payload.value._store.validated=1):r._store&&(r._store.validated=1))}function E(r){return typeof r=="object"&&r!==null&&r.$$typeof===Y}var j=I,Y=Symbol.for("react.transitional.element"),F=Symbol.for("react.portal"),O=Symbol.for("react.fragment"),g=Symbol.for("react.strict_mode"),d=Symbol.for("react.profiler"),w=Symbol.for("react.consumer"),x=Symbol.for("react.context"),s=Symbol.for("react.forward_ref"),D=Symbol.for("react.suspense"),X=Symbol.for("react.suspense_list"),B=Symbol.for("react.memo"),W=Symbol.for("react.lazy"),$=Symbol.for("react.activity"),ae=Symbol.for("react.client.reference"),se=j.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,ie=Object.prototype.hasOwnProperty,ee=Array.isArray,ue=console.createTask?console.createTask:function(){return null};j={react_stack_bottom_frame:function(r){return r()}};var H,Z={},re=j.react_stack_bottom_frame.bind(j,i)(),fe=ue(o(i)),c={};ge.Fragment=O,ge.jsx=function(r,h,b){var v=1e4>se.recentlyCreatedOwnerStacks++;return T(r,h,b,!1,v?Error("react-stack-top-frame"):re,v?ue(o(r)):fe)},ge.jsxs=function(r,h,b){var v=1e4>se.recentlyCreatedOwnerStacks++;return T(r,h,b,!0,v?Error("react-stack-top-frame"):re,v?ue(o(r)):fe)}}()),ge}process.env.NODE_ENV==="production"?Ce.exports=_t():Ce.exports=Pt();var u=Ce.exports,ye={exports:{}},Je={},_e={exports:{}},ve={exports:{}},k={};/** @license React v16.13.1
|
|
23
23
|
* react-is.production.min.js
|
|
24
24
|
*
|
|
25
25
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
26
26
|
*
|
|
27
27
|
* This source code is licensed under the MIT license found in the
|
|
28
28
|
* LICENSE file in the root directory of this source tree.
|
|
29
|
-
*/var
|
|
29
|
+
*/var Ke;function jt(){if(Ke)return k;Ke=1;var e=typeof Symbol=="function"&&Symbol.for,t=e?Symbol.for("react.element"):60103,n=e?Symbol.for("react.portal"):60106,o=e?Symbol.for("react.fragment"):60107,a=e?Symbol.for("react.strict_mode"):60108,i=e?Symbol.for("react.profiler"):60114,p=e?Symbol.for("react.provider"):60109,l=e?Symbol.for("react.context"):60110,f=e?Symbol.for("react.async_mode"):60111,y=e?Symbol.for("react.concurrent_mode"):60111,T=e?Symbol.for("react.forward_ref"):60112,C=e?Symbol.for("react.suspense"):60113,E=e?Symbol.for("react.suspense_list"):60120,j=e?Symbol.for("react.memo"):60115,Y=e?Symbol.for("react.lazy"):60116,F=e?Symbol.for("react.block"):60121,O=e?Symbol.for("react.fundamental"):60117,g=e?Symbol.for("react.responder"):60118,d=e?Symbol.for("react.scope"):60119;function w(s){if(typeof s=="object"&&s!==null){var D=s.$$typeof;switch(D){case t:switch(s=s.type,s){case f:case y:case o:case i:case a:case C:return s;default:switch(s=s&&s.$$typeof,s){case l:case T:case Y:case j:case p:return s;default:return D}}case n:return D}}}function x(s){return w(s)===y}return k.AsyncMode=f,k.ConcurrentMode=y,k.ContextConsumer=l,k.ContextProvider=p,k.Element=t,k.ForwardRef=T,k.Fragment=o,k.Lazy=Y,k.Memo=j,k.Portal=n,k.Profiler=i,k.StrictMode=a,k.Suspense=C,k.isAsyncMode=function(s){return x(s)||w(s)===f},k.isConcurrentMode=x,k.isContextConsumer=function(s){return w(s)===l},k.isContextProvider=function(s){return w(s)===p},k.isElement=function(s){return typeof s=="object"&&s!==null&&s.$$typeof===t},k.isForwardRef=function(s){return w(s)===T},k.isFragment=function(s){return w(s)===o},k.isLazy=function(s){return w(s)===Y},k.isMemo=function(s){return w(s)===j},k.isPortal=function(s){return w(s)===n},k.isProfiler=function(s){return w(s)===i},k.isStrictMode=function(s){return w(s)===a},k.isSuspense=function(s){return w(s)===C},k.isValidElementType=function(s){return typeof s=="string"||typeof s=="function"||s===o||s===y||s===i||s===a||s===C||s===E||typeof s=="object"&&s!==null&&(s.$$typeof===Y||s.$$typeof===j||s.$$typeof===p||s.$$typeof===l||s.$$typeof===T||s.$$typeof===O||s.$$typeof===g||s.$$typeof===d||s.$$typeof===F)},k.typeOf=w,k}var M={};/** @license React v16.13.1
|
|
30
30
|
* react-is.development.js
|
|
31
31
|
*
|
|
32
32
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
33
33
|
*
|
|
34
34
|
* This source code is licensed under the MIT license found in the
|
|
35
35
|
* LICENSE file in the root directory of this source tree.
|
|
36
|
-
*/var
|
|
36
|
+
*/var Ze;function Rt(){return Ze||(Ze=1,process.env.NODE_ENV!=="production"&&function(){var e=typeof Symbol=="function"&&Symbol.for,t=e?Symbol.for("react.element"):60103,n=e?Symbol.for("react.portal"):60106,o=e?Symbol.for("react.fragment"):60107,a=e?Symbol.for("react.strict_mode"):60108,i=e?Symbol.for("react.profiler"):60114,p=e?Symbol.for("react.provider"):60109,l=e?Symbol.for("react.context"):60110,f=e?Symbol.for("react.async_mode"):60111,y=e?Symbol.for("react.concurrent_mode"):60111,T=e?Symbol.for("react.forward_ref"):60112,C=e?Symbol.for("react.suspense"):60113,E=e?Symbol.for("react.suspense_list"):60120,j=e?Symbol.for("react.memo"):60115,Y=e?Symbol.for("react.lazy"):60116,F=e?Symbol.for("react.block"):60121,O=e?Symbol.for("react.fundamental"):60117,g=e?Symbol.for("react.responder"):60118,d=e?Symbol.for("react.scope"):60119;function w(m){return typeof m=="string"||typeof m=="function"||m===o||m===y||m===i||m===a||m===C||m===E||typeof m=="object"&&m!==null&&(m.$$typeof===Y||m.$$typeof===j||m.$$typeof===p||m.$$typeof===l||m.$$typeof===T||m.$$typeof===O||m.$$typeof===g||m.$$typeof===d||m.$$typeof===F)}function x(m){if(typeof m=="object"&&m!==null){var oe=m.$$typeof;switch(oe){case t:var we=m.type;switch(we){case f:case y:case o:case i:case a:case C:return we;default:var wt=we&&we.$$typeof;switch(wt){case l:case T:case Y:case j:case p:return wt;default:return oe}}case n:return oe}}}var s=f,D=y,X=l,B=p,W=t,$=T,ae=o,se=Y,ie=j,ee=n,ue=i,H=a,Z=C,re=!1;function fe(m){return re||(re=!0,console.warn("The ReactIs.isAsyncMode() alias has been deprecated, and will be removed in React 17+. Update your code to use ReactIs.isConcurrentMode() instead. It has the exact same API.")),c(m)||x(m)===f}function c(m){return x(m)===y}function r(m){return x(m)===l}function h(m){return x(m)===p}function b(m){return typeof m=="object"&&m!==null&&m.$$typeof===t}function v(m){return x(m)===T}function R(m){return x(m)===o}function _(m){return x(m)===Y}function S(m){return x(m)===j}function P(m){return x(m)===n}function A(m){return x(m)===i}function N(m){return x(m)===a}function q(m){return x(m)===C}M.AsyncMode=s,M.ConcurrentMode=D,M.ContextConsumer=X,M.ContextProvider=B,M.Element=W,M.ForwardRef=$,M.Fragment=ae,M.Lazy=se,M.Memo=ie,M.Portal=ee,M.Profiler=ue,M.StrictMode=H,M.Suspense=Z,M.isAsyncMode=fe,M.isConcurrentMode=c,M.isContextConsumer=r,M.isContextProvider=h,M.isElement=b,M.isForwardRef=v,M.isFragment=R,M.isLazy=_,M.isMemo=S,M.isPortal=P,M.isProfiler=A,M.isStrictMode=N,M.isSuspense=q,M.isValidElementType=w,M.typeOf=x}()),M}var Qe;function et(){return Qe||(Qe=1,process.env.NODE_ENV==="production"?ve.exports=jt():ve.exports=Rt()),ve.exports}/*
|
|
37
37
|
object-assign
|
|
38
38
|
(c) Sindre Sorhus
|
|
39
39
|
@license MIT
|
|
40
|
-
*/var
|
|
41
|
-
Valid keys: `+JSON.stringify(Object.keys(
|
|
40
|
+
*/var Pe,tt;function Ot(){if(tt)return Pe;tt=1;var e=Object.getOwnPropertySymbols,t=Object.prototype.hasOwnProperty,n=Object.prototype.propertyIsEnumerable;function o(i){if(i==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(i)}function a(){try{if(!Object.assign)return!1;var i=new String("abc");if(i[5]="de",Object.getOwnPropertyNames(i)[0]==="5")return!1;for(var p={},l=0;l<10;l++)p["_"+String.fromCharCode(l)]=l;var f=Object.getOwnPropertyNames(p).map(function(T){return p[T]});if(f.join("")!=="0123456789")return!1;var y={};return"abcdefghijklmnopqrst".split("").forEach(function(T){y[T]=T}),Object.keys(Object.assign({},y)).join("")==="abcdefghijklmnopqrst"}catch{return!1}}return Pe=a()?Object.assign:function(i,p){for(var l,f=o(i),y,T=1;T<arguments.length;T++){l=Object(arguments[T]);for(var C in l)t.call(l,C)&&(f[C]=l[C]);if(e){y=e(l);for(var E=0;E<y.length;E++)n.call(l,y[E])&&(f[y[E]]=l[y[E]])}}return f},Pe}var je,nt;function Re(){if(nt)return je;nt=1;var e="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED";return je=e,je}var Oe,rt;function ot(){return rt||(rt=1,Oe=Function.call.bind(Object.prototype.hasOwnProperty)),Oe}var De,at;function Dt(){if(at)return De;at=1;var e=function(){};if(process.env.NODE_ENV!=="production"){var t=Re(),n={},o=ot();e=function(i){var p="Warning: "+i;typeof console<"u"&&console.error(p);try{throw new Error(p)}catch{}}}function a(i,p,l,f,y){if(process.env.NODE_ENV!=="production"){for(var T in i)if(o(i,T)){var C;try{if(typeof i[T]!="function"){var E=Error((f||"React class")+": "+l+" type `"+T+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+typeof i[T]+"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");throw E.name="Invariant Violation",E}C=i[T](p,T,f,l,null,t)}catch(Y){C=Y}if(C&&!(C instanceof Error)&&e((f||"React class")+": type specification of "+l+" `"+T+"` is invalid; the type checker function must return `null` or an `Error` but returned a "+typeof C+". You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument)."),C instanceof Error&&!(C.message in n)){n[C.message]=!0;var j=y?y():"";e("Failed "+l+" type: "+C.message+(j??""))}}}}return a.resetWarningCache=function(){process.env.NODE_ENV!=="production"&&(n={})},De=a,De}var Ne,st;function Nt(){if(st)return Ne;st=1;var e=et(),t=Ot(),n=Re(),o=ot(),a=Dt(),i=function(){};process.env.NODE_ENV!=="production"&&(i=function(l){var f="Warning: "+l;typeof console<"u"&&console.error(f);try{throw new Error(f)}catch{}});function p(){return null}return Ne=function(l,f){var y=typeof Symbol=="function"&&Symbol.iterator,T="@@iterator";function C(c){var r=c&&(y&&c[y]||c[T]);if(typeof r=="function")return r}var E="<<anonymous>>",j={array:g("array"),bigint:g("bigint"),bool:g("boolean"),func:g("function"),number:g("number"),object:g("object"),string:g("string"),symbol:g("symbol"),any:d(),arrayOf:w,element:x(),elementType:s(),instanceOf:D,node:$(),objectOf:B,oneOf:X,oneOfType:W,shape:se,exact:ie};function Y(c,r){return c===r?c!==0||1/c===1/r:c!==c&&r!==r}function F(c,r){this.message=c,this.data=r&&typeof r=="object"?r:{},this.stack=""}F.prototype=Error.prototype;function O(c){if(process.env.NODE_ENV!=="production")var r={},h=0;function b(R,_,S,P,A,N,q){if(P=P||E,N=N||S,q!==n){if(f){var m=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use `PropTypes.checkPropTypes()` to call them. Read more at http://fb.me/use-check-prop-types");throw m.name="Invariant Violation",m}else if(process.env.NODE_ENV!=="production"&&typeof console<"u"){var oe=P+":"+S;!r[oe]&&h<3&&(i("You are manually calling a React.PropTypes validation function for the `"+N+"` prop on `"+P+"`. This is deprecated and will throw in the standalone `prop-types` package. You may be seeing this warning due to a third-party PropTypes library. See https://fb.me/react-warning-dont-call-proptypes for details."),r[oe]=!0,h++)}}return _[S]==null?R?_[S]===null?new F("The "+A+" `"+N+"` is marked as required "+("in `"+P+"`, but its value is `null`.")):new F("The "+A+" `"+N+"` is marked as required in "+("`"+P+"`, but its value is `undefined`.")):null:c(_,S,P,A,N)}var v=b.bind(null,!1);return v.isRequired=b.bind(null,!0),v}function g(c){function r(h,b,v,R,_,S){var P=h[b],A=H(P);if(A!==c){var N=Z(P);return new F("Invalid "+R+" `"+_+"` of type "+("`"+N+"` supplied to `"+v+"`, expected ")+("`"+c+"`."),{expectedType:c})}return null}return O(r)}function d(){return O(p)}function w(c){function r(h,b,v,R,_){if(typeof c!="function")return new F("Property `"+_+"` of component `"+v+"` has invalid PropType notation inside arrayOf.");var S=h[b];if(!Array.isArray(S)){var P=H(S);return new F("Invalid "+R+" `"+_+"` of type "+("`"+P+"` supplied to `"+v+"`, expected an array."))}for(var A=0;A<S.length;A++){var N=c(S,A,v,R,_+"["+A+"]",n);if(N instanceof Error)return N}return null}return O(r)}function x(){function c(r,h,b,v,R){var _=r[h];if(!l(_)){var S=H(_);return new F("Invalid "+v+" `"+R+"` of type "+("`"+S+"` supplied to `"+b+"`, expected a single ReactElement."))}return null}return O(c)}function s(){function c(r,h,b,v,R){var _=r[h];if(!e.isValidElementType(_)){var S=H(_);return new F("Invalid "+v+" `"+R+"` of type "+("`"+S+"` supplied to `"+b+"`, expected a single ReactElement type."))}return null}return O(c)}function D(c){function r(h,b,v,R,_){if(!(h[b]instanceof c)){var S=c.name||E,P=fe(h[b]);return new F("Invalid "+R+" `"+_+"` of type "+("`"+P+"` supplied to `"+v+"`, expected ")+("instance of `"+S+"`."))}return null}return O(r)}function X(c){if(!Array.isArray(c))return process.env.NODE_ENV!=="production"&&(arguments.length>1?i("Invalid arguments supplied to oneOf, expected an array, got "+arguments.length+" arguments. A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z])."):i("Invalid argument supplied to oneOf, expected an array.")),p;function r(h,b,v,R,_){for(var S=h[b],P=0;P<c.length;P++)if(Y(S,c[P]))return null;var A=JSON.stringify(c,function(q,m){var oe=Z(m);return oe==="symbol"?String(m):m});return new F("Invalid "+R+" `"+_+"` of value `"+String(S)+"` "+("supplied to `"+v+"`, expected one of "+A+"."))}return O(r)}function B(c){function r(h,b,v,R,_){if(typeof c!="function")return new F("Property `"+_+"` of component `"+v+"` has invalid PropType notation inside objectOf.");var S=h[b],P=H(S);if(P!=="object")return new F("Invalid "+R+" `"+_+"` of type "+("`"+P+"` supplied to `"+v+"`, expected an object."));for(var A in S)if(o(S,A)){var N=c(S,A,v,R,_+"."+A,n);if(N instanceof Error)return N}return null}return O(r)}function W(c){if(!Array.isArray(c))return process.env.NODE_ENV!=="production"&&i("Invalid argument supplied to oneOfType, expected an instance of array."),p;for(var r=0;r<c.length;r++){var h=c[r];if(typeof h!="function")return i("Invalid argument supplied to oneOfType. Expected an array of check functions, but received "+re(h)+" at index "+r+"."),p}function b(v,R,_,S,P){for(var A=[],N=0;N<c.length;N++){var q=c[N],m=q(v,R,_,S,P,n);if(m==null)return null;m.data&&o(m.data,"expectedType")&&A.push(m.data.expectedType)}var oe=A.length>0?", expected one of type ["+A.join(", ")+"]":"";return new F("Invalid "+S+" `"+P+"` supplied to "+("`"+_+"`"+oe+"."))}return O(b)}function $(){function c(r,h,b,v,R){return ee(r[h])?null:new F("Invalid "+v+" `"+R+"` supplied to "+("`"+b+"`, expected a ReactNode."))}return O(c)}function ae(c,r,h,b,v){return new F((c||"React class")+": "+r+" type `"+h+"."+b+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+v+"`.")}function se(c){function r(h,b,v,R,_){var S=h[b],P=H(S);if(P!=="object")return new F("Invalid "+R+" `"+_+"` of type `"+P+"` "+("supplied to `"+v+"`, expected `object`."));for(var A in c){var N=c[A];if(typeof N!="function")return ae(v,R,_,A,Z(N));var q=N(S,A,v,R,_+"."+A,n);if(q)return q}return null}return O(r)}function ie(c){function r(h,b,v,R,_){var S=h[b],P=H(S);if(P!=="object")return new F("Invalid "+R+" `"+_+"` of type `"+P+"` "+("supplied to `"+v+"`, expected `object`."));var A=t({},h[b],c);for(var N in A){var q=c[N];if(o(c,N)&&typeof q!="function")return ae(v,R,_,N,Z(q));if(!q)return new F("Invalid "+R+" `"+_+"` key `"+N+"` supplied to `"+v+"`.\nBad object: "+JSON.stringify(h[b],null," ")+`
|
|
41
|
+
Valid keys: `+JSON.stringify(Object.keys(c),null," "));var m=q(S,N,v,R,_+"."+N,n);if(m)return m}return null}return O(r)}function ee(c){switch(typeof c){case"number":case"string":case"undefined":return!0;case"boolean":return!c;case"object":if(Array.isArray(c))return c.every(ee);if(c===null||l(c))return!0;var r=C(c);if(r){var h=r.call(c),b;if(r!==c.entries){for(;!(b=h.next()).done;)if(!ee(b.value))return!1}else for(;!(b=h.next()).done;){var v=b.value;if(v&&!ee(v[1]))return!1}}else return!1;return!0;default:return!1}}function ue(c,r){return c==="symbol"?!0:r?r["@@toStringTag"]==="Symbol"||typeof Symbol=="function"&&r instanceof Symbol:!1}function H(c){var r=typeof c;return Array.isArray(c)?"array":c instanceof RegExp?"object":ue(r,c)?"symbol":r}function Z(c){if(typeof c>"u"||c===null)return""+c;var r=H(c);if(r==="object"){if(c instanceof Date)return"date";if(c instanceof RegExp)return"regexp"}return r}function re(c){var r=Z(c);switch(r){case"array":case"object":return"an "+r;case"boolean":case"date":case"regexp":return"a "+r;default:return r}}function fe(c){return!c.constructor||!c.constructor.name?E:c.constructor.name}return j.checkPropTypes=a,j.resetWarningCache=a.resetWarningCache,j.PropTypes=j,j},Ne}var Ae,it;function At(){if(it)return Ae;it=1;var e=Re();function t(){}function n(){}return n.resetWarningCache=t,Ae=function(){function o(p,l,f,y,T,C){if(C!==e){var E=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw E.name="Invariant Violation",E}}o.isRequired=o;function a(){return o}var i={array:o,bigint:o,bool:o,func:o,number:o,object:o,string:o,symbol:o,any:o,arrayOf:a,element:o,elementType:o,instanceOf:a,node:o,objectOf:a,oneOf:a,oneOfType:a,shape:a,exact:a,checkPropTypes:n,resetWarningCache:t};return i.PropTypes=i,i},Ae}if(process.env.NODE_ENV!=="production"){var kt=et(),Mt=!0;_e.exports=Nt()(kt.isElement,Mt)}else _e.exports=At()();var lt=_e.exports,ke={exports:{}};function ct(e){var t,n,o="";if(typeof e=="string"||typeof e=="number")o+=e;else if(typeof e=="object")if(Array.isArray(e)){var a=e.length;for(t=0;t<a;t++)e[t]&&(n=ct(e[t]))&&(o&&(o+=" "),o+=n)}else for(n in e)e[n]&&(o&&(o+=" "),o+=n);return o}function ut(){for(var e,t,n=0,o="",a=arguments.length;n<a;n++)(e=arguments[n])&&(t=ct(e))&&(o&&(o+=" "),o+=t);return o}ke.exports=ut,ke.exports.clsx=ut;var Ft=ke.exports,L={},te={};Object.defineProperty(te,"__esModule",{value:!0}),te.dontSetMe=$t,te.findInArray=It,te.int=Wt,te.isFunction=Yt,te.isNum=Lt;function It(e,t){for(let n=0,o=e.length;n<o;n++)if(t.apply(t,[e[n],n,e]))return e[n]}function Yt(e){return typeof e=="function"||Object.prototype.toString.call(e)==="[object Function]"}function Lt(e){return typeof e=="number"&&!isNaN(e)}function Wt(e){return parseInt(e,10)}function $t(e,t,n){if(e[t])return new Error(`Invalid prop ${t} passed to ${n} - do not set this, set it on the child.`)}var de={};Object.defineProperty(de,"__esModule",{value:!0}),de.browserPrefixToKey=dt,de.browserPrefixToStyle=Ut,de.default=void 0,de.getPrefix=ft;const Me=["Moz","Webkit","O","ms"];function ft(){var n,o;let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"transform";if(typeof window>"u")return"";const t=(o=(n=window.document)==null?void 0:n.documentElement)==null?void 0:o.style;if(!t||e in t)return"";for(let a=0;a<Me.length;a++)if(dt(e,Me[a])in t)return Me[a];return""}function dt(e,t){return t?`${t}${Xt(e)}`:e}function Ut(e,t){return t?`-${t.toLowerCase()}-${e}`:e}function Xt(e){let t="",n=!0;for(let o=0;o<e.length;o++)n?(t+=e[o].toUpperCase(),n=!1):e[o]==="-"?n=!0:t+=e[o];return t}de.default=ft(),Object.defineProperty(L,"__esModule",{value:!0}),L.addClassName=yt,L.addEvent=Ht,L.addUserSelectStyles=nn,L.createCSSTransform=Zt,L.createSVGTransform=Qt,L.getTouch=en,L.getTouchIdentifier=tn,L.getTranslation=Fe,L.innerHeight=qt,L.innerWidth=Jt,L.matchesSelector=gt,L.matchesSelectorAndParentsTo=Bt,L.offsetXYFromParent=Kt,L.outerHeight=Gt,L.outerWidth=Vt,L.removeClassName=vt,L.removeEvent=zt,L.scheduleRemoveUserSelectStyles=rn;var J=te,pt=ht(de);function ht(e,t){if(typeof WeakMap=="function")var n=new WeakMap,o=new WeakMap;return(ht=function(a,i){if(!i&&a&&a.__esModule)return a;var p,l,f={__proto__:null,default:a};if(a===null||typeof a!="object"&&typeof a!="function")return f;if(p=i?o:n){if(p.has(a))return p.get(a);p.set(a,f)}for(const y in a)y!=="default"&&{}.hasOwnProperty.call(a,y)&&((l=(p=Object.defineProperty)&&Object.getOwnPropertyDescriptor(a,y))&&(l.get||l.set)?p(f,y,l):f[y]=a[y]);return f})(e,t)}let be="";function gt(e,t){return be||(be=(0,J.findInArray)(["matches","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector"],function(n){return(0,J.isFunction)(e[n])})),(0,J.isFunction)(e[be])?e[be](t):!1}function Bt(e,t,n){let o=e;do{if(gt(o,t))return!0;if(o===n)return!1;o=o.parentNode}while(o);return!1}function Ht(e,t,n,o){if(!e)return;const a={capture:!0,...o};e.addEventListener?e.addEventListener(t,n,a):e.attachEvent?e.attachEvent("on"+t,n):e["on"+t]=n}function zt(e,t,n,o){if(!e)return;const a={capture:!0,...o};e.removeEventListener?e.removeEventListener(t,n,a):e.detachEvent?e.detachEvent("on"+t,n):e["on"+t]=null}function Gt(e){let t=e.clientHeight;const n=e.ownerDocument.defaultView.getComputedStyle(e);return t+=(0,J.int)(n.borderTopWidth),t+=(0,J.int)(n.borderBottomWidth),t}function Vt(e){let t=e.clientWidth;const n=e.ownerDocument.defaultView.getComputedStyle(e);return t+=(0,J.int)(n.borderLeftWidth),t+=(0,J.int)(n.borderRightWidth),t}function qt(e){let t=e.clientHeight;const n=e.ownerDocument.defaultView.getComputedStyle(e);return t-=(0,J.int)(n.paddingTop),t-=(0,J.int)(n.paddingBottom),t}function Jt(e){let t=e.clientWidth;const n=e.ownerDocument.defaultView.getComputedStyle(e);return t-=(0,J.int)(n.paddingLeft),t-=(0,J.int)(n.paddingRight),t}function Kt(e,t,n){const a=t===t.ownerDocument.body?{left:0,top:0}:t.getBoundingClientRect(),i=(e.clientX+t.scrollLeft-a.left)/n,p=(e.clientY+t.scrollTop-a.top)/n;return{x:i,y:p}}function Zt(e,t){const n=Fe(e,t,"px");return{[(0,pt.browserPrefixToKey)("transform",pt.default)]:n}}function Qt(e,t){return Fe(e,t,"")}function Fe(e,t,n){let{x:o,y:a}=e,i=`translate(${o}${n},${a}${n})`;if(t){const p=`${typeof t.x=="string"?t.x:t.x+n}`,l=`${typeof t.y=="string"?t.y:t.y+n}`;i=`translate(${p}, ${l})`+i}return i}function en(e,t){return e.targetTouches&&(0,J.findInArray)(e.targetTouches,n=>t===n.identifier)||e.changedTouches&&(0,J.findInArray)(e.changedTouches,n=>t===n.identifier)}function tn(e){if(e.targetTouches&&e.targetTouches[0])return e.targetTouches[0].identifier;if(e.changedTouches&&e.changedTouches[0])return e.changedTouches[0].identifier}function nn(e){if(!e)return;let t=e.getElementById("react-draggable-style-el");t||(t=e.createElement("style"),t.type="text/css",t.id="react-draggable-style-el",t.innerHTML=`.react-draggable-transparent-selection *::-moz-selection {all: inherit;}
|
|
42
42
|
`,t.innerHTML+=`.react-draggable-transparent-selection *::selection {all: inherit;}
|
|
43
|
-
`,e.getElementsByTagName("head")[0].appendChild(t)),e.body&&dt(e.body,"react-draggable-transparent-selection")}function Qt(e){window.requestAnimationFrame?window.requestAnimationFrame(()=>{ft(e)}):ft(e)}function ft(e){if(e)try{if(e.body&&pt(e.body,"react-draggable-transparent-selection"),e.selection)e.selection.empty();else{const t=(e.defaultView||window).getSelection();t&&t.type!=="Caret"&&t.removeAllRanges()}}catch{}}function dt(e,t){e.classList?e.classList.add(t):e.className.match(new RegExp(`(?:^|\\s)${t}(?!\\S)`))||(e.className+=` ${t}`)}function pt(e,t){e.classList?e.classList.remove(t):e.className=e.className.replace(new RegExp(`(?:^|\\s)${t}(?!\\S)`,"g"),"")}var re={};Object.defineProperty(re,"__esModule",{value:!0}),re.canDragX=rr,re.canDragY=nr,re.createCoreData=ar,re.createDraggableData=sr,re.getBoundPosition=er,re.getControlPosition=or,re.snapToGrid=tr;var J=te,pe=Y;function er(e,t,r){if(!e.props.bounds)return[t,r];let{bounds:o}=e.props;o=typeof o=="string"?o:ir(o);const a=Fe(e);if(typeof o=="string"){const{ownerDocument:i}=a,d=i.defaultView;let c;if(o==="parent"?c=a.parentNode:c=a.getRootNode().querySelector(o),!(c instanceof d.HTMLElement))throw new Error('Bounds selector "'+o+'" could not find an element.');const h=c,g=d.getComputedStyle(a),v=d.getComputedStyle(h);o={left:-a.offsetLeft+(0,J.int)(v.paddingLeft)+(0,J.int)(g.marginLeft),top:-a.offsetTop+(0,J.int)(v.paddingTop)+(0,J.int)(g.marginTop),right:(0,pe.innerWidth)(h)-(0,pe.outerWidth)(a)-a.offsetLeft+(0,J.int)(v.paddingRight)-(0,J.int)(g.marginRight),bottom:(0,pe.innerHeight)(h)-(0,pe.outerHeight)(a)-a.offsetTop+(0,J.int)(v.paddingBottom)-(0,J.int)(g.marginBottom)}}return(0,J.isNum)(o.right)&&(t=Math.min(t,o.right)),(0,J.isNum)(o.bottom)&&(r=Math.min(r,o.bottom)),(0,J.isNum)(o.left)&&(t=Math.max(t,o.left)),(0,J.isNum)(o.top)&&(r=Math.max(r,o.top)),[t,r]}function tr(e,t,r){const o=Math.round(t/e[0])*e[0],a=Math.round(r/e[1])*e[1];return[o,a]}function rr(e){return e.props.axis==="both"||e.props.axis==="x"}function nr(e){return e.props.axis==="both"||e.props.axis==="y"}function or(e,t,r){const o=typeof t=="number"?(0,pe.getTouch)(e,t):null;if(typeof t=="number"&&!o)return null;const a=Fe(r),i=r.props.offsetParent||a.offsetParent||a.ownerDocument.body;return(0,pe.offsetXYFromParent)(o||e,i,r.props.scale)}function ar(e,t,r){const o=!(0,J.isNum)(e.lastX),a=Fe(e);return o?{node:a,deltaX:0,deltaY:0,lastX:t,lastY:r,x:t,y:r}:{node:a,deltaX:t-e.lastX,deltaY:r-e.lastY,lastX:e.lastX,lastY:e.lastY,x:t,y:r}}function sr(e,t){const r=e.props.scale;return{node:t.node,x:e.state.x+t.deltaX/r,y:e.state.y+t.deltaY/r,deltaX:t.deltaX/r,deltaY:t.deltaY/r,lastX:e.state.x,lastY:e.state.y}}function ir(e){return{left:e.left,top:e.top,right:e.right,bottom:e.bottom}}function Fe(e){const t=e.findDOMNode();if(!t)throw new Error("<DraggableCore>: Unmounted during event!");return t}var Se={},xe={};Object.defineProperty(xe,"__esModule",{value:!0}),xe.default=lr;function lr(){}Object.defineProperty(Se,"__esModule",{value:!0}),Se.default=void 0;var Ie=ht(H),z=$e(nt),cr=$e(Ue),L=Y,le=re,Ye=te,ge=$e(xe);function $e(e){return e&&e.__esModule?e:{default:e}}function ht(e,t){if(typeof WeakMap=="function")var r=new WeakMap,o=new WeakMap;return(ht=function(a,i){if(!i&&a&&a.__esModule)return a;var d,c,h={__proto__:null,default:a};if(a===null||typeof a!="object"&&typeof a!="function")return h;if(d=i?o:r){if(d.has(a))return d.get(a);d.set(a,h)}for(const g in a)g!=="default"&&{}.hasOwnProperty.call(a,g)&&((c=(d=Object.defineProperty)&&Object.getOwnPropertyDescriptor(a,g))&&(c.get||c.set)?d(h,g,c):h[g]=a[g]);return h})(e,t)}function q(e,t,r){return(t=ur(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function ur(e){var t=fr(e,"string");return typeof t=="symbol"?t:t+""}function fr(e,t){if(typeof e!="object"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var o=r.call(e,t);if(typeof o!="object")return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}const Q={touch:{start:"touchstart",move:"touchmove",stop:"touchend"},mouse:{start:"mousedown",move:"mousemove",stop:"mouseup"}};let ce=Q.mouse,Te=class extends Ie.Component{constructor(){super(...arguments),q(this,"dragging",!1),q(this,"lastX",NaN),q(this,"lastY",NaN),q(this,"touchIdentifier",null),q(this,"mounted",!1),q(this,"handleDragStart",t=>{if(this.props.onMouseDown(t),!this.props.allowAnyClick&&typeof t.button=="number"&&t.button!==0)return!1;const r=this.findDOMNode();if(!r||!r.ownerDocument||!r.ownerDocument.body)throw new Error("<DraggableCore> not mounted on DragStart!");const{ownerDocument:o}=r;if(this.props.disabled||!(t.target instanceof o.defaultView.Node)||this.props.handle&&!(0,L.matchesSelectorAndParentsTo)(t.target,this.props.handle,r)||this.props.cancel&&(0,L.matchesSelectorAndParentsTo)(t.target,this.props.cancel,r))return;t.type==="touchstart"&&!this.props.allowMobileScroll&&t.preventDefault();const a=(0,L.getTouchIdentifier)(t);this.touchIdentifier=a;const i=(0,le.getControlPosition)(t,a,this);if(i==null)return;const{x:d,y:c}=i,h=(0,le.createCoreData)(this,d,c);(0,ge.default)("DraggableCore: handleDragStart: %j",h),(0,ge.default)("calling",this.props.onStart),!(this.props.onStart(t,h)===!1||this.mounted===!1)&&(this.props.enableUserSelectHack&&(0,L.addUserSelectStyles)(o),this.dragging=!0,this.lastX=d,this.lastY=c,(0,L.addEvent)(o,ce.move,this.handleDrag),(0,L.addEvent)(o,ce.stop,this.handleDragStop))}),q(this,"handleDrag",t=>{const r=(0,le.getControlPosition)(t,this.touchIdentifier,this);if(r==null)return;let{x:o,y:a}=r;if(Array.isArray(this.props.grid)){let c=o-this.lastX,h=a-this.lastY;if([c,h]=(0,le.snapToGrid)(this.props.grid,c,h),!c&&!h)return;o=this.lastX+c,a=this.lastY+h}const i=(0,le.createCoreData)(this,o,a);if((0,ge.default)("DraggableCore: handleDrag: %j",i),this.props.onDrag(t,i)===!1||this.mounted===!1){try{this.handleDragStop(new MouseEvent("mouseup"))}catch{const h=document.createEvent("MouseEvents");h.initMouseEvent("mouseup",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),this.handleDragStop(h)}return}this.lastX=o,this.lastY=a}),q(this,"handleDragStop",t=>{if(!this.dragging)return;const r=(0,le.getControlPosition)(t,this.touchIdentifier,this);if(r==null)return;let{x:o,y:a}=r;if(Array.isArray(this.props.grid)){let h=o-this.lastX||0,g=a-this.lastY||0;[h,g]=(0,le.snapToGrid)(this.props.grid,h,g),o=this.lastX+h,a=this.lastY+g}const i=(0,le.createCoreData)(this,o,a);if(this.props.onStop(t,i)===!1||this.mounted===!1)return!1;const c=this.findDOMNode();c&&this.props.enableUserSelectHack&&(0,L.scheduleRemoveUserSelectStyles)(c.ownerDocument),(0,ge.default)("DraggableCore: handleDragStop: %j",i),this.dragging=!1,this.lastX=NaN,this.lastY=NaN,c&&((0,ge.default)("DraggableCore: Removing handlers"),(0,L.removeEvent)(c.ownerDocument,ce.move,this.handleDrag),(0,L.removeEvent)(c.ownerDocument,ce.stop,this.handleDragStop))}),q(this,"onMouseDown",t=>(ce=Q.mouse,this.handleDragStart(t))),q(this,"onMouseUp",t=>(ce=Q.mouse,this.handleDragStop(t))),q(this,"onTouchStart",t=>(ce=Q.touch,this.handleDragStart(t))),q(this,"onTouchEnd",t=>(ce=Q.touch,this.handleDragStop(t)))}componentDidMount(){this.mounted=!0;const t=this.findDOMNode();t&&(0,L.addEvent)(t,Q.touch.start,this.onTouchStart,{passive:!1})}componentWillUnmount(){this.mounted=!1;const t=this.findDOMNode();if(t){const{ownerDocument:r}=t;(0,L.removeEvent)(r,Q.mouse.move,this.handleDrag),(0,L.removeEvent)(r,Q.touch.move,this.handleDrag),(0,L.removeEvent)(r,Q.mouse.stop,this.handleDragStop),(0,L.removeEvent)(r,Q.touch.stop,this.handleDragStop),(0,L.removeEvent)(t,Q.touch.start,this.onTouchStart,{passive:!1}),this.props.enableUserSelectHack&&(0,L.scheduleRemoveUserSelectStyles)(r)}}findDOMNode(){var t,r,o;return(t=this.props)!=null&&t.nodeRef?(o=(r=this.props)==null?void 0:r.nodeRef)==null?void 0:o.current:cr.default.findDOMNode(this)}render(){return Ie.cloneElement(Ie.Children.only(this.props.children),{onMouseDown:this.onMouseDown,onMouseUp:this.onMouseUp,onTouchEnd:this.onTouchEnd})}};Se.default=Te,q(Te,"displayName","DraggableCore"),q(Te,"propTypes",{allowAnyClick:z.default.bool,allowMobileScroll:z.default.bool,children:z.default.node.isRequired,disabled:z.default.bool,enableUserSelectHack:z.default.bool,offsetParent:function(e,t){if(e[t]&&e[t].nodeType!==1)throw new Error("Draggable's offsetParent must be a DOM Node.")},grid:z.default.arrayOf(z.default.number),handle:z.default.string,cancel:z.default.string,nodeRef:z.default.object,onStart:z.default.func,onDrag:z.default.func,onStop:z.default.func,onMouseDown:z.default.func,scale:z.default.number,className:Ye.dontSetMe,style:Ye.dontSetMe,transform:Ye.dontSetMe}),q(Te,"defaultProps",{allowAnyClick:!1,allowMobileScroll:!1,disabled:!1,enableUserSelectHack:!0,onStart:function(){},onDrag:function(){},onStop:function(){},onMouseDown:function(){},scale:1}),function(e){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"DraggableCore",{enumerable:!0,get:function(){return h.default}}),e.default=void 0;var t=P(H),r=v(nt),o=v(Ue),a=Nt,i=Y,d=re,c=te,h=v(Se),g=v(xe);function v(_){return _&&_.__esModule?_:{default:_}}function P(_,x){if(typeof WeakMap=="function")var E=new WeakMap,S=new WeakMap;return(P=function(s,R){if(!R&&s&&s.__esModule)return s;var U,X,$={__proto__:null,default:s};if(s===null||typeof s!="object"&&typeof s!="function")return $;if(U=R?S:E){if(U.has(s))return U.get(s);U.set(s,$)}for(const W in s)W!=="default"&&{}.hasOwnProperty.call(s,W)&&((X=(U=Object.defineProperty)&&Object.getOwnPropertyDescriptor(s,W))&&(X.get||X.set)?U($,W,X):$[W]=s[W]);return $})(_,x)}function k(){return k=Object.assign?Object.assign.bind():function(_){for(var x=1;x<arguments.length;x++){var E=arguments[x];for(var S in E)({}).hasOwnProperty.call(E,S)&&(_[S]=E[S])}return _},k.apply(null,arguments)}function N(_,x,E){return(x=I(x))in _?Object.defineProperty(_,x,{value:E,enumerable:!0,configurable:!0,writable:!0}):_[x]=E,_}function I(_){var x=F(_,"string");return typeof x=="symbol"?x:x+""}function F(_,x){if(typeof _!="object"||!_)return _;var E=_[Symbol.toPrimitive];if(E!==void 0){var S=E.call(_,x);if(typeof S!="object")return S;throw new TypeError("@@toPrimitive must return a primitive value.")}return(x==="string"?String:Number)(_)}class T extends t.Component{static getDerivedStateFromProps(x,E){let{position:S}=x,{prevPropsPosition:s}=E;return S&&(!s||S.x!==s.x||S.y!==s.y)?((0,g.default)("Draggable: getDerivedStateFromProps %j",{position:S,prevPropsPosition:s}),{x:S.x,y:S.y,prevPropsPosition:{...S}}):null}constructor(x){super(x),N(this,"onDragStart",(E,S)=>{if((0,g.default)("Draggable: onDragStart: %j",S),this.props.onStart(E,(0,d.createDraggableData)(this,S))===!1)return!1;this.setState({dragging:!0,dragged:!0})}),N(this,"onDrag",(E,S)=>{if(!this.state.dragging)return!1;(0,g.default)("Draggable: onDrag: %j",S);const s=(0,d.createDraggableData)(this,S),R={x:s.x,y:s.y,slackX:0,slackY:0};if(this.props.bounds){const{x:X,y:$}=R;R.x+=this.state.slackX,R.y+=this.state.slackY;const[W,ae]=(0,d.getBoundPosition)(this,R.x,R.y);R.x=W,R.y=ae,R.slackX=this.state.slackX+(X-R.x),R.slackY=this.state.slackY+($-R.y),s.x=R.x,s.y=R.y,s.deltaX=R.x-this.state.x,s.deltaY=R.y-this.state.y}if(this.props.onDrag(E,s)===!1)return!1;this.setState(R)}),N(this,"onDragStop",(E,S)=>{if(!this.state.dragging||this.props.onStop(E,(0,d.createDraggableData)(this,S))===!1)return!1;(0,g.default)("Draggable: onDragStop: %j",S);const R={dragging:!1,slackX:0,slackY:0};if(!!this.props.position){const{x:X,y:$}=this.props.position;R.x=X,R.y=$}this.setState(R)}),this.state={dragging:!1,dragged:!1,x:x.position?x.position.x:x.defaultPosition.x,y:x.position?x.position.y:x.defaultPosition.y,prevPropsPosition:{...x.position},slackX:0,slackY:0,isElementSVG:!1},x.position&&!(x.onDrag||x.onStop)&&console.warn("A `position` was applied to this <Draggable>, without drag handlers. This will make this component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the `position` of this element.")}componentDidMount(){typeof window.SVGElement<"u"&&this.findDOMNode()instanceof window.SVGElement&&this.setState({isElementSVG:!0})}componentWillUnmount(){this.state.dragging&&this.setState({dragging:!1})}findDOMNode(){var x,E;return((E=(x=this.props)==null?void 0:x.nodeRef)==null?void 0:E.current)??o.default.findDOMNode(this)}render(){const{axis:x,bounds:E,children:S,defaultPosition:s,defaultClassName:R,defaultClassNameDragging:U,defaultClassNameDragged:X,position:$,positionOffset:W,scale:ae,...se}=this.props;let ie={},ee=null;const B=!!!$||this.state.dragging,K=$||s,ne={x:(0,d.canDragX)(this)&&B?this.state.x:K.x,y:(0,d.canDragY)(this)&&B?this.state.y:K.y};this.state.isElementSVG?ee=(0,i.createSVGTransform)(ne,W):ie=(0,i.createCSSTransform)(ne,W);const fe=(0,a.clsx)(S.props.className||"",R,{[U]:this.state.dragging,[X]:this.state.dragged});return t.createElement(h.default,k({},se,{onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop}),t.cloneElement(t.Children.only(S),{className:fe,style:{...S.props.style,...ie},transform:ee}))}}e.default=T,N(T,"displayName","Draggable"),N(T,"propTypes",{...h.default.propTypes,axis:r.default.oneOf(["both","x","y","none"]),bounds:r.default.oneOfType([r.default.shape({left:r.default.number,right:r.default.number,top:r.default.number,bottom:r.default.number}),r.default.string,r.default.oneOf([!1])]),defaultClassName:r.default.string,defaultClassNameDragging:r.default.string,defaultClassNameDragged:r.default.string,defaultPosition:r.default.shape({x:r.default.number,y:r.default.number}),positionOffset:r.default.shape({x:r.default.oneOfType([r.default.number,r.default.string]),y:r.default.oneOfType([r.default.number,r.default.string])}),position:r.default.shape({x:r.default.number,y:r.default.number}),className:c.dontSetMe,style:c.dontSetMe,transform:c.dontSetMe}),N(T,"defaultProps",{...h.default.defaultProps,axis:"both",bounds:!1,defaultClassName:"react-draggable",defaultClassNameDragging:"react-draggable-dragging",defaultClassNameDragged:"react-draggable-dragged",defaultPosition:{x:0,y:0},scale:1})}(He);const{default:mt,DraggableCore:dr}=He;ye.exports=mt,ye.exports.default=mt,ye.exports.DraggableCore=dr;var pr=ye.exports;const hr=xt(pr),mr=({title:e,collapsed:t=!1,draggable:r=!0,position:o={x:20,y:20},children:a})=>{const[i,d]=H.useState(t),c=H.useRef(null);return u.jsx(hr,{nodeRef:c,handle:".font-controls-header",disabled:!r,defaultPosition:o,bounds:"parent",children:u.jsxs("div",{ref:c,className:"font-controls-panel",children:[u.jsxs("div",{className:"font-controls-header",children:[u.jsx("h3",{className:"font-controls-title",children:e}),u.jsx("button",{className:`font-controls-toggle ${i?"collapsed":""}`,onClick:()=>d(!i),type:"button","aria-label":i?"Expand":"Collapse",children:u.jsx("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:u.jsx("polyline",{points:"6 9 12 15 18 9"})})})]}),!i&&u.jsx("div",{className:"font-controls-content",children:a})]})})},gr=({value:e,onChange:t,fontFamilies:r})=>u.jsxs("div",{className:"font-control-group",children:[u.jsx("label",{className:"font-control-label",children:"Font Family"}),u.jsx("select",{className:"font-control-input font-control-select",value:e,onChange:o=>t(o.target.value),style:{fontFamily:e},children:r.map(o=>u.jsx("option",{value:o,style:{fontFamily:o},children:o},o))})]}),yr=({value:e,onChange:t,min:r,max:o,step:a})=>u.jsxs("div",{className:"font-control-group",children:[u.jsx("label",{className:"font-control-label",children:"Font Size"}),u.jsxs("div",{className:"font-control-slider-container",children:[u.jsx("input",{type:"range",className:"font-control-slider",min:r,max:o,step:a,value:e,onChange:i=>t(Number(i.target.value))}),u.jsx("input",{type:"number",className:"font-control-input font-control-number",min:r,max:o,step:a,value:e,onChange:i=>t(Number(i.target.value))})]})]}),vr=[{value:100,label:"Thin"},{value:200,label:"Extra Light"},{value:300,label:"Light"},{value:400,label:"Regular"},{value:500,label:"Medium"},{value:600,label:"Semi Bold"},{value:700,label:"Bold"},{value:800,label:"Extra Bold"},{value:900,label:"Black"}],br=({value:e,onChange:t})=>u.jsxs("div",{className:"font-control-group",children:[u.jsx("label",{className:"font-control-label",children:"Font Weight"}),u.jsx("select",{className:"font-control-input font-control-select",value:e,onChange:r=>t(Number(r.target.value)),children:vr.map(r=>u.jsxs("option",{value:r.value,children:[r.label," (",r.value,")"]},r.value))})]}),Sr=({value:e,onChange:t})=>u.jsxs("div",{className:"font-control-group",children:[u.jsx("label",{className:"font-control-label",children:"Line Height"}),u.jsxs("div",{className:"font-control-slider-container",children:[u.jsx("input",{type:"range",className:"font-control-slider",min:.5,max:3,step:.1,value:e,onChange:r=>t(Number(r.target.value))}),u.jsx("input",{type:"number",className:"font-control-input font-control-number",min:.5,max:3,step:.1,value:e,onChange:r=>t(Number(r.target.value))})]})]}),xr=({value:e,onChange:t})=>u.jsxs("div",{className:"font-control-group",children:[u.jsx("label",{className:"font-control-label",children:"Letter Spacing"}),u.jsxs("div",{className:"font-control-slider-container",children:[u.jsx("input",{type:"range",className:"font-control-slider",min:-5,max:10,step:.1,value:e,onChange:r=>t(Number(r.target.value))}),u.jsx("input",{type:"number",className:"font-control-input font-control-number",min:-5,max:10,step:.1,value:e,onChange:r=>t(Number(r.target.value))})]})]}),Tr=[{value:"none",label:"None"},{value:"uppercase",label:"UPPERCASE"},{value:"lowercase",label:"lowercase"},{value:"capitalize",label:"Capitalize"}],Er=({value:e,onChange:t})=>u.jsxs("div",{className:"font-control-group",children:[u.jsx("label",{className:"font-control-label",children:"Text Transform"}),u.jsx("select",{className:"font-control-input font-control-select",value:e,onChange:r=>t(r.target.value),children:Tr.map(r=>u.jsx("option",{value:r.value,children:r.label},r.value))})]}),_r=({value:e,onChange:t})=>u.jsxs("div",{className:"font-control-group",children:[u.jsx("label",{className:"font-control-label",children:"Text Color"}),u.jsxs("div",{className:"font-control-color-input",children:[u.jsx("div",{className:"font-control-color-preview",children:u.jsx("input",{type:"color",value:e,onChange:r=>t(r.target.value)})}),u.jsx("input",{type:"text",className:"font-control-input font-control-text-input",value:e,onChange:r=>t(r.target.value),placeholder:"#000000"})]})]}),wr=[{value:"left",icon:"⬅"},{value:"center",icon:"↔"},{value:"right",icon:"➡"},{value:"justify",icon:"⬌"}],Cr=({value:e,onChange:t})=>u.jsxs("div",{className:"font-control-group",children:[u.jsx("label",{className:"font-control-label",children:"Text Align"}),u.jsx("div",{className:"font-control-button-group",children:wr.map(r=>u.jsx("button",{className:`font-control-button ${e===r.value?"active":""}`,onClick:()=>t(r.value),type:"button",children:r.icon},r.value))})]}),We=({title:e,code:t,language:r="css"})=>{const[o,a]=H.useState(!1),i=async()=>{try{await navigator.clipboard.writeText(t),a(!0),setTimeout(()=>a(!1),2e3)}catch(d){console.error("Failed to copy:",d)}};return u.jsxs("div",{className:"font-control-code-block",children:[u.jsxs("div",{className:"font-control-code-header",children:[u.jsx("span",{className:"font-control-code-title",children:e}),u.jsx("button",{className:"font-control-copy-button",onClick:i,type:"button",children:o?u.jsxs(u.Fragment,{children:[u.jsx("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:u.jsx("polyline",{points:"20 6 9 17 4 12"})}),"Copied!"]}):u.jsxs(u.Fragment,{children:[u.jsxs("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[u.jsx("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),u.jsx("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]}),"Copy"]})})]}),u.jsx("pre",{className:"font-control-code-content",children:u.jsx("code",{className:`language-${r}`,children:t})})]})},gt=new Set;function yt(e){if(gt.has(e))return;const t=document.createElement("link");t.rel="stylesheet",t.href=`https://fonts.googleapis.com/css2?family=${e.replace(/ /g,"+")}:wght@100;200;300;400;500;600;700;800;900&display=swap`,document.head.appendChild(t),gt.add(e)}function vt(e){if(!document.querySelector('link[href*="fonts.googleapis.com"]')){const t=document.createElement("link");t.rel="preconnect",t.href="https://fonts.googleapis.com";const r=document.createElement("link");r.rel="preconnect",r.href="https://fonts.gstatic.com",r.crossOrigin="anonymous",document.head.appendChild(t),document.head.appendChild(r)}e.forEach(yt)}function Pr(e){return["Arial","Helvetica","Times New Roman","Georgia","Verdana"].includes(e)?`<!-- ${e} is a system font, no import needed -->`:`<!-- Add this to your HTML <head> -->
|
|
43
|
+
`,e.getElementsByTagName("head")[0].appendChild(t)),e.body&&yt(e.body,"react-draggable-transparent-selection")}function rn(e){window.requestAnimationFrame?window.requestAnimationFrame(()=>{mt(e)}):mt(e)}function mt(e){if(e)try{if(e.body&&vt(e.body,"react-draggable-transparent-selection"),e.selection)e.selection.empty();else{const t=(e.defaultView||window).getSelection();t&&t.type!=="Caret"&&t.removeAllRanges()}}catch{}}function yt(e,t){e.classList?e.classList.add(t):e.className.match(new RegExp(`(?:^|\\s)${t}(?!\\S)`))||(e.className+=` ${t}`)}function vt(e,t){e.classList?e.classList.remove(t):e.className=e.className.replace(new RegExp(`(?:^|\\s)${t}(?!\\S)`,"g"),"")}var ne={};Object.defineProperty(ne,"__esModule",{value:!0}),ne.canDragX=sn,ne.canDragY=ln,ne.createCoreData=un,ne.createDraggableData=fn,ne.getBoundPosition=on,ne.getControlPosition=cn,ne.snapToGrid=an;var K=te,pe=L;function on(e,t,n){if(!e.props.bounds)return[t,n];let{bounds:o}=e.props;o=typeof o=="string"?o:dn(o);const a=Ie(e);if(typeof o=="string"){const{ownerDocument:i}=a,p=i.defaultView;let l;if(o==="parent"?l=a.parentNode:l=a.getRootNode().querySelector(o),!(l instanceof p.HTMLElement))throw new Error('Bounds selector "'+o+'" could not find an element.');const f=l,y=p.getComputedStyle(a),T=p.getComputedStyle(f);o={left:-a.offsetLeft+(0,K.int)(T.paddingLeft)+(0,K.int)(y.marginLeft),top:-a.offsetTop+(0,K.int)(T.paddingTop)+(0,K.int)(y.marginTop),right:(0,pe.innerWidth)(f)-(0,pe.outerWidth)(a)-a.offsetLeft+(0,K.int)(T.paddingRight)-(0,K.int)(y.marginRight),bottom:(0,pe.innerHeight)(f)-(0,pe.outerHeight)(a)-a.offsetTop+(0,K.int)(T.paddingBottom)-(0,K.int)(y.marginBottom)}}return(0,K.isNum)(o.right)&&(t=Math.min(t,o.right)),(0,K.isNum)(o.bottom)&&(n=Math.min(n,o.bottom)),(0,K.isNum)(o.left)&&(t=Math.max(t,o.left)),(0,K.isNum)(o.top)&&(n=Math.max(n,o.top)),[t,n]}function an(e,t,n){const o=Math.round(t/e[0])*e[0],a=Math.round(n/e[1])*e[1];return[o,a]}function sn(e){return e.props.axis==="both"||e.props.axis==="x"}function ln(e){return e.props.axis==="both"||e.props.axis==="y"}function cn(e,t,n){const o=typeof t=="number"?(0,pe.getTouch)(e,t):null;if(typeof t=="number"&&!o)return null;const a=Ie(n),i=n.props.offsetParent||a.offsetParent||a.ownerDocument.body;return(0,pe.offsetXYFromParent)(o||e,i,n.props.scale)}function un(e,t,n){const o=!(0,K.isNum)(e.lastX),a=Ie(e);return o?{node:a,deltaX:0,deltaY:0,lastX:t,lastY:n,x:t,y:n}:{node:a,deltaX:t-e.lastX,deltaY:n-e.lastY,lastX:e.lastX,lastY:e.lastY,x:t,y:n}}function fn(e,t){const n=e.props.scale;return{node:t.node,x:e.state.x+t.deltaX/n,y:e.state.y+t.deltaY/n,deltaX:t.deltaX/n,deltaY:t.deltaY/n,lastX:e.state.x,lastY:e.state.y}}function dn(e){return{left:e.left,top:e.top,right:e.right,bottom:e.bottom}}function Ie(e){const t=e.findDOMNode();if(!t)throw new Error("<DraggableCore>: Unmounted during event!");return t}var Se={},xe={};Object.defineProperty(xe,"__esModule",{value:!0}),xe.default=pn;function pn(){}Object.defineProperty(Se,"__esModule",{value:!0}),Se.default=void 0;var Ye=bt(I),z=We(lt),hn=We(Ge),U=L,le=ne,Le=te,me=We(xe);function We(e){return e&&e.__esModule?e:{default:e}}function bt(e,t){if(typeof WeakMap=="function")var n=new WeakMap,o=new WeakMap;return(bt=function(a,i){if(!i&&a&&a.__esModule)return a;var p,l,f={__proto__:null,default:a};if(a===null||typeof a!="object"&&typeof a!="function")return f;if(p=i?o:n){if(p.has(a))return p.get(a);p.set(a,f)}for(const y in a)y!=="default"&&{}.hasOwnProperty.call(a,y)&&((l=(p=Object.defineProperty)&&Object.getOwnPropertyDescriptor(a,y))&&(l.get||l.set)?p(f,y,l):f[y]=a[y]);return f})(e,t)}function G(e,t,n){return(t=gn(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function gn(e){var t=mn(e,"string");return typeof t=="symbol"?t:t+""}function mn(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var o=n.call(e,t);if(typeof o!="object")return o;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}const Q={touch:{start:"touchstart",move:"touchmove",stop:"touchend"},mouse:{start:"mousedown",move:"mousemove",stop:"mouseup"}};let ce=Q.mouse,Te=class extends Ye.Component{constructor(){super(...arguments),G(this,"dragging",!1),G(this,"lastX",NaN),G(this,"lastY",NaN),G(this,"touchIdentifier",null),G(this,"mounted",!1),G(this,"handleDragStart",t=>{if(this.props.onMouseDown(t),!this.props.allowAnyClick&&typeof t.button=="number"&&t.button!==0)return!1;const n=this.findDOMNode();if(!n||!n.ownerDocument||!n.ownerDocument.body)throw new Error("<DraggableCore> not mounted on DragStart!");const{ownerDocument:o}=n;if(this.props.disabled||!(t.target instanceof o.defaultView.Node)||this.props.handle&&!(0,U.matchesSelectorAndParentsTo)(t.target,this.props.handle,n)||this.props.cancel&&(0,U.matchesSelectorAndParentsTo)(t.target,this.props.cancel,n))return;t.type==="touchstart"&&!this.props.allowMobileScroll&&t.preventDefault();const a=(0,U.getTouchIdentifier)(t);this.touchIdentifier=a;const i=(0,le.getControlPosition)(t,a,this);if(i==null)return;const{x:p,y:l}=i,f=(0,le.createCoreData)(this,p,l);(0,me.default)("DraggableCore: handleDragStart: %j",f),(0,me.default)("calling",this.props.onStart),!(this.props.onStart(t,f)===!1||this.mounted===!1)&&(this.props.enableUserSelectHack&&(0,U.addUserSelectStyles)(o),this.dragging=!0,this.lastX=p,this.lastY=l,(0,U.addEvent)(o,ce.move,this.handleDrag),(0,U.addEvent)(o,ce.stop,this.handleDragStop))}),G(this,"handleDrag",t=>{const n=(0,le.getControlPosition)(t,this.touchIdentifier,this);if(n==null)return;let{x:o,y:a}=n;if(Array.isArray(this.props.grid)){let l=o-this.lastX,f=a-this.lastY;if([l,f]=(0,le.snapToGrid)(this.props.grid,l,f),!l&&!f)return;o=this.lastX+l,a=this.lastY+f}const i=(0,le.createCoreData)(this,o,a);if((0,me.default)("DraggableCore: handleDrag: %j",i),this.props.onDrag(t,i)===!1||this.mounted===!1){try{this.handleDragStop(new MouseEvent("mouseup"))}catch{const f=document.createEvent("MouseEvents");f.initMouseEvent("mouseup",!0,!0,window,0,0,0,0,0,!1,!1,!1,!1,0,null),this.handleDragStop(f)}return}this.lastX=o,this.lastY=a}),G(this,"handleDragStop",t=>{if(!this.dragging)return;const n=(0,le.getControlPosition)(t,this.touchIdentifier,this);if(n==null)return;let{x:o,y:a}=n;if(Array.isArray(this.props.grid)){let f=o-this.lastX||0,y=a-this.lastY||0;[f,y]=(0,le.snapToGrid)(this.props.grid,f,y),o=this.lastX+f,a=this.lastY+y}const i=(0,le.createCoreData)(this,o,a);if(this.props.onStop(t,i)===!1||this.mounted===!1)return!1;const l=this.findDOMNode();l&&this.props.enableUserSelectHack&&(0,U.scheduleRemoveUserSelectStyles)(l.ownerDocument),(0,me.default)("DraggableCore: handleDragStop: %j",i),this.dragging=!1,this.lastX=NaN,this.lastY=NaN,l&&((0,me.default)("DraggableCore: Removing handlers"),(0,U.removeEvent)(l.ownerDocument,ce.move,this.handleDrag),(0,U.removeEvent)(l.ownerDocument,ce.stop,this.handleDragStop))}),G(this,"onMouseDown",t=>(ce=Q.mouse,this.handleDragStart(t))),G(this,"onMouseUp",t=>(ce=Q.mouse,this.handleDragStop(t))),G(this,"onTouchStart",t=>(ce=Q.touch,this.handleDragStart(t))),G(this,"onTouchEnd",t=>(ce=Q.touch,this.handleDragStop(t)))}componentDidMount(){this.mounted=!0;const t=this.findDOMNode();t&&(0,U.addEvent)(t,Q.touch.start,this.onTouchStart,{passive:!1})}componentWillUnmount(){this.mounted=!1;const t=this.findDOMNode();if(t){const{ownerDocument:n}=t;(0,U.removeEvent)(n,Q.mouse.move,this.handleDrag),(0,U.removeEvent)(n,Q.touch.move,this.handleDrag),(0,U.removeEvent)(n,Q.mouse.stop,this.handleDragStop),(0,U.removeEvent)(n,Q.touch.stop,this.handleDragStop),(0,U.removeEvent)(t,Q.touch.start,this.onTouchStart,{passive:!1}),this.props.enableUserSelectHack&&(0,U.scheduleRemoveUserSelectStyles)(n)}}findDOMNode(){var t,n,o;return(t=this.props)!=null&&t.nodeRef?(o=(n=this.props)==null?void 0:n.nodeRef)==null?void 0:o.current:hn.default.findDOMNode(this)}render(){return Ye.cloneElement(Ye.Children.only(this.props.children),{onMouseDown:this.onMouseDown,onMouseUp:this.onMouseUp,onTouchEnd:this.onTouchEnd})}};Se.default=Te,G(Te,"displayName","DraggableCore"),G(Te,"propTypes",{allowAnyClick:z.default.bool,allowMobileScroll:z.default.bool,children:z.default.node.isRequired,disabled:z.default.bool,enableUserSelectHack:z.default.bool,offsetParent:function(e,t){if(e[t]&&e[t].nodeType!==1)throw new Error("Draggable's offsetParent must be a DOM Node.")},grid:z.default.arrayOf(z.default.number),handle:z.default.string,cancel:z.default.string,nodeRef:z.default.object,onStart:z.default.func,onDrag:z.default.func,onStop:z.default.func,onMouseDown:z.default.func,scale:z.default.number,className:Le.dontSetMe,style:Le.dontSetMe,transform:Le.dontSetMe}),G(Te,"defaultProps",{allowAnyClick:!1,allowMobileScroll:!1,disabled:!1,enableUserSelectHack:!0,onStart:function(){},onDrag:function(){},onStop:function(){},onMouseDown:function(){},scale:1}),function(e){Object.defineProperty(e,"__esModule",{value:!0}),Object.defineProperty(e,"DraggableCore",{enumerable:!0,get:function(){return f.default}}),e.default=void 0;var t=C(I),n=T(lt),o=T(Ge),a=Ft,i=L,p=ne,l=te,f=T(Se),y=T(xe);function T(g){return g&&g.__esModule?g:{default:g}}function C(g,d){if(typeof WeakMap=="function")var w=new WeakMap,x=new WeakMap;return(C=function(s,D){if(!D&&s&&s.__esModule)return s;var X,B,W={__proto__:null,default:s};if(s===null||typeof s!="object"&&typeof s!="function")return W;if(X=D?x:w){if(X.has(s))return X.get(s);X.set(s,W)}for(const $ in s)$!=="default"&&{}.hasOwnProperty.call(s,$)&&((B=(X=Object.defineProperty)&&Object.getOwnPropertyDescriptor(s,$))&&(B.get||B.set)?X(W,$,B):W[$]=s[$]);return W})(g,d)}function E(){return E=Object.assign?Object.assign.bind():function(g){for(var d=1;d<arguments.length;d++){var w=arguments[d];for(var x in w)({}).hasOwnProperty.call(w,x)&&(g[x]=w[x])}return g},E.apply(null,arguments)}function j(g,d,w){return(d=Y(d))in g?Object.defineProperty(g,d,{value:w,enumerable:!0,configurable:!0,writable:!0}):g[d]=w,g}function Y(g){var d=F(g,"string");return typeof d=="symbol"?d:d+""}function F(g,d){if(typeof g!="object"||!g)return g;var w=g[Symbol.toPrimitive];if(w!==void 0){var x=w.call(g,d);if(typeof x!="object")return x;throw new TypeError("@@toPrimitive must return a primitive value.")}return(d==="string"?String:Number)(g)}class O extends t.Component{static getDerivedStateFromProps(d,w){let{position:x}=d,{prevPropsPosition:s}=w;return x&&(!s||x.x!==s.x||x.y!==s.y)?((0,y.default)("Draggable: getDerivedStateFromProps %j",{position:x,prevPropsPosition:s}),{x:x.x,y:x.y,prevPropsPosition:{...x}}):null}constructor(d){super(d),j(this,"onDragStart",(w,x)=>{if((0,y.default)("Draggable: onDragStart: %j",x),this.props.onStart(w,(0,p.createDraggableData)(this,x))===!1)return!1;this.setState({dragging:!0,dragged:!0})}),j(this,"onDrag",(w,x)=>{if(!this.state.dragging)return!1;(0,y.default)("Draggable: onDrag: %j",x);const s=(0,p.createDraggableData)(this,x),D={x:s.x,y:s.y,slackX:0,slackY:0};if(this.props.bounds){const{x:B,y:W}=D;D.x+=this.state.slackX,D.y+=this.state.slackY;const[$,ae]=(0,p.getBoundPosition)(this,D.x,D.y);D.x=$,D.y=ae,D.slackX=this.state.slackX+(B-D.x),D.slackY=this.state.slackY+(W-D.y),s.x=D.x,s.y=D.y,s.deltaX=D.x-this.state.x,s.deltaY=D.y-this.state.y}if(this.props.onDrag(w,s)===!1)return!1;this.setState(D)}),j(this,"onDragStop",(w,x)=>{if(!this.state.dragging||this.props.onStop(w,(0,p.createDraggableData)(this,x))===!1)return!1;(0,y.default)("Draggable: onDragStop: %j",x);const D={dragging:!1,slackX:0,slackY:0};if(!!this.props.position){const{x:B,y:W}=this.props.position;D.x=B,D.y=W}this.setState(D)}),this.state={dragging:!1,dragged:!1,x:d.position?d.position.x:d.defaultPosition.x,y:d.position?d.position.y:d.defaultPosition.y,prevPropsPosition:{...d.position},slackX:0,slackY:0,isElementSVG:!1},d.position&&!(d.onDrag||d.onStop)&&console.warn("A `position` was applied to this <Draggable>, without drag handlers. This will make this component effectively undraggable. Please attach `onDrag` or `onStop` handlers so you can adjust the `position` of this element.")}componentDidMount(){typeof window.SVGElement<"u"&&this.findDOMNode()instanceof window.SVGElement&&this.setState({isElementSVG:!0})}componentWillUnmount(){this.state.dragging&&this.setState({dragging:!1})}findDOMNode(){var d,w;return((w=(d=this.props)==null?void 0:d.nodeRef)==null?void 0:w.current)??o.default.findDOMNode(this)}render(){const{axis:d,bounds:w,children:x,defaultPosition:s,defaultClassName:D,defaultClassNameDragging:X,defaultClassNameDragged:B,position:W,positionOffset:$,scale:ae,...se}=this.props;let ie={},ee=null;const H=!!!W||this.state.dragging,Z=W||s,re={x:(0,p.canDragX)(this)&&H?this.state.x:Z.x,y:(0,p.canDragY)(this)&&H?this.state.y:Z.y};this.state.isElementSVG?ee=(0,i.createSVGTransform)(re,$):ie=(0,i.createCSSTransform)(re,$);const fe=(0,a.clsx)(x.props.className||"",D,{[X]:this.state.dragging,[B]:this.state.dragged});return t.createElement(f.default,E({},se,{onStart:this.onDragStart,onDrag:this.onDrag,onStop:this.onDragStop}),t.cloneElement(t.Children.only(x),{className:fe,style:{...x.props.style,...ie},transform:ee}))}}e.default=O,j(O,"displayName","Draggable"),j(O,"propTypes",{...f.default.propTypes,axis:n.default.oneOf(["both","x","y","none"]),bounds:n.default.oneOfType([n.default.shape({left:n.default.number,right:n.default.number,top:n.default.number,bottom:n.default.number}),n.default.string,n.default.oneOf([!1])]),defaultClassName:n.default.string,defaultClassNameDragging:n.default.string,defaultClassNameDragged:n.default.string,defaultPosition:n.default.shape({x:n.default.number,y:n.default.number}),positionOffset:n.default.shape({x:n.default.oneOfType([n.default.number,n.default.string]),y:n.default.oneOfType([n.default.number,n.default.string])}),position:n.default.shape({x:n.default.number,y:n.default.number}),className:l.dontSetMe,style:l.dontSetMe,transform:l.dontSetMe}),j(O,"defaultProps",{...f.default.defaultProps,axis:"both",bounds:!1,defaultClassName:"react-draggable",defaultClassNameDragging:"react-draggable-dragging",defaultClassNameDragged:"react-draggable-dragged",defaultPosition:{x:0,y:0},scale:1})}(Je);const{default:St,DraggableCore:yn}=Je;ye.exports=St,ye.exports.default=St,ye.exports.DraggableCore=yn;var vn=ye.exports;const bn=Ct(vn),Sn=({title:e,collapsed:t=!1,draggable:n=!0,position:o={x:20,y:20},children:a})=>{const[i,p]=I.useState(t),l=I.useRef(null);return u.jsx(bn,{nodeRef:l,handle:".font-controls-header",disabled:!n,defaultPosition:o,bounds:"parent",children:u.jsxs("div",{ref:l,className:"font-controls-panel",children:[u.jsxs("div",{className:"font-controls-header",children:[u.jsx("h3",{className:"font-controls-title",children:e}),u.jsx("button",{className:`font-controls-toggle ${i?"collapsed":""}`,onClick:()=>p(!i),type:"button","aria-label":i?"Expand":"Collapse",children:u.jsx("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:u.jsx("polyline",{points:"6 9 12 15 18 9"})})})]}),!i&&u.jsx("div",{className:"font-controls-content",children:a})]})})},xn=({value:e,onChange:t,fontFamilies:n})=>{const[o,a]=I.useState(!1),[i,p]=I.useState(""),[l,f]=I.useState(-1),y=I.useRef(null),T=I.useRef(null),C=I.useRef(null),E=n.filter(g=>g.toLowerCase().includes(i.toLowerCase()));I.useEffect(()=>{const g=d=>{y.current&&!y.current.contains(d.target)&&(a(!1),p(""),f(-1))};return o&&document.addEventListener("mousedown",g),()=>{document.removeEventListener("mousedown",g)}},[o]),I.useEffect(()=>{if(l>=0&&C.current){const g=C.current.children[l];g&&g.scrollIntoView({block:"nearest",behavior:"smooth"})}},[l]);const j=g=>{t(g),a(!1),p(""),f(-1)},Y=g=>{if(!o&&(g.key==="Enter"||g.key==="ArrowDown")){g.preventDefault(),a(!0);return}if(o)switch(g.key){case"ArrowDown":g.preventDefault(),f(d=>d<E.length-1?d+1:d);break;case"ArrowUp":g.preventDefault(),f(d=>d>0?d-1:0);break;case"Enter":g.preventDefault(),l>=0&&E[l]&&j(E[l]);break;case"Escape":g.preventDefault(),a(!1),p(""),f(-1);break}},F=g=>{p(g.target.value),f(-1),o||a(!0)},O=()=>{a(!0),T.current&&T.current.select()};return u.jsxs("div",{className:"font-control-group",ref:y,children:[u.jsx("label",{className:"font-control-label",children:"Font Family"}),u.jsxs("div",{className:"font-control-searchable-select",children:[u.jsx("input",{ref:T,type:"text",className:"font-control-input font-control-search-input",value:o?i:e,onChange:F,onClick:O,onKeyDown:Y,placeholder:"Search fonts...",style:{fontFamily:o?"inherit":e}}),o&&u.jsx("div",{className:"font-control-dropdown",ref:C,children:E.length>0?E.map((g,d)=>u.jsx("div",{className:`font-control-dropdown-item ${d===l?"highlighted":""} ${g===e?"selected":""}`,onClick:()=>j(g),onMouseEnter:()=>f(d),style:{fontFamily:g},children:g},g)):u.jsx("div",{className:"font-control-dropdown-item no-results",children:"No fonts found"})})]})]})},Tn=({value:e,onChange:t,min:n,max:o,step:a})=>u.jsxs("div",{className:"font-control-group",children:[u.jsx("label",{className:"font-control-label",children:"Font Size"}),u.jsxs("div",{className:"font-control-slider-container",children:[u.jsx("input",{type:"range",className:"font-control-slider",min:n,max:o,step:a,value:e,onChange:i=>t(Number(i.target.value))}),u.jsx("input",{type:"number",className:"font-control-input font-control-number",min:n,max:o,step:a,value:e,onChange:i=>t(Number(i.target.value))})]})]}),En=[{value:100,label:"Thin"},{value:200,label:"Extra Light"},{value:300,label:"Light"},{value:400,label:"Regular"},{value:500,label:"Medium"},{value:600,label:"Semi Bold"},{value:700,label:"Bold"},{value:800,label:"Extra Bold"},{value:900,label:"Black"}],wn=({value:e,onChange:t})=>u.jsxs("div",{className:"font-control-group",children:[u.jsx("label",{className:"font-control-label",children:"Font Weight"}),u.jsx("select",{className:"font-control-input font-control-select",value:e,onChange:n=>t(Number(n.target.value)),children:En.map(n=>u.jsxs("option",{value:n.value,children:[n.label," (",n.value,")"]},n.value))})]}),Cn=({value:e,onChange:t})=>u.jsxs("div",{className:"font-control-group",children:[u.jsx("label",{className:"font-control-label",children:"Line Height"}),u.jsxs("div",{className:"font-control-slider-container",children:[u.jsx("input",{type:"range",className:"font-control-slider",min:.5,max:3,step:.1,value:e,onChange:n=>t(Number(n.target.value))}),u.jsx("input",{type:"number",className:"font-control-input font-control-number",min:.5,max:3,step:.1,value:e,onChange:n=>t(Number(n.target.value))})]})]}),_n=({value:e,onChange:t})=>u.jsxs("div",{className:"font-control-group",children:[u.jsx("label",{className:"font-control-label",children:"Letter Spacing"}),u.jsxs("div",{className:"font-control-slider-container",children:[u.jsx("input",{type:"range",className:"font-control-slider",min:-5,max:10,step:.1,value:e,onChange:n=>t(Number(n.target.value))}),u.jsx("input",{type:"number",className:"font-control-input font-control-number",min:-5,max:10,step:.1,value:e,onChange:n=>t(Number(n.target.value))})]})]}),Pn=[{value:"none",label:"None"},{value:"uppercase",label:"UPPERCASE"},{value:"lowercase",label:"lowercase"},{value:"capitalize",label:"Capitalize"}],jn=({value:e,onChange:t})=>u.jsxs("div",{className:"font-control-group",children:[u.jsx("label",{className:"font-control-label",children:"Text Transform"}),u.jsx("select",{className:"font-control-input font-control-select",value:e,onChange:n=>t(n.target.value),children:Pn.map(n=>u.jsx("option",{value:n.value,children:n.label},n.value))})]}),Rn=({value:e,onChange:t})=>u.jsxs("div",{className:"font-control-group",children:[u.jsx("label",{className:"font-control-label",children:"Text Color"}),u.jsxs("div",{className:"font-control-color-input",children:[u.jsx("div",{className:"font-control-color-preview",children:u.jsx("input",{type:"color",value:e,onChange:n=>t(n.target.value)})}),u.jsx("input",{type:"text",className:"font-control-input font-control-text-input",value:e,onChange:n=>t(n.target.value),placeholder:"#000000"})]})]}),On=[{value:"left",icon:"⬅"},{value:"center",icon:"↔"},{value:"right",icon:"➡"},{value:"justify",icon:"⬌"}],Dn=({value:e,onChange:t})=>u.jsxs("div",{className:"font-control-group",children:[u.jsx("label",{className:"font-control-label",children:"Text Align"}),u.jsx("div",{className:"font-control-button-group",children:On.map(n=>u.jsx("button",{className:`font-control-button ${e===n.value?"active":""}`,onClick:()=>t(n.value),type:"button",children:n.icon},n.value))})]}),$e=({title:e,code:t,language:n="css"})=>{const[o,a]=I.useState(!1),i=async()=>{try{await navigator.clipboard.writeText(t),a(!0),setTimeout(()=>a(!1),2e3)}catch(p){console.error("Failed to copy:",p)}};return u.jsxs("div",{className:"font-control-code-block",children:[u.jsxs("div",{className:"font-control-code-header",children:[u.jsx("span",{className:"font-control-code-title",children:e}),u.jsx("button",{className:"font-control-copy-button",onClick:i,type:"button",children:o?u.jsxs(u.Fragment,{children:[u.jsx("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:u.jsx("polyline",{points:"20 6 9 17 4 12"})}),"Copied!"]}):u.jsxs(u.Fragment,{children:[u.jsxs("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:[u.jsx("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),u.jsx("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]}),"Copy"]})})]}),u.jsx("pre",{className:"font-control-code-content",children:u.jsx("code",{className:`language-${n}`,children:t})})]})},xt=new Set;function Tt(e){if(xt.has(e))return;const t=document.createElement("link");t.rel="stylesheet",t.href=`https://fonts.googleapis.com/css2?family=${e.replace(/ /g,"+")}:wght@100;200;300;400;500;600;700;800;900&display=swap`,document.head.appendChild(t),xt.add(e)}function Et(e){if(!document.querySelector('link[href*="fonts.googleapis.com"]')){const t=document.createElement("link");t.rel="preconnect",t.href="https://fonts.googleapis.com";const n=document.createElement("link");n.rel="preconnect",n.href="https://fonts.gstatic.com",n.crossOrigin="anonymous",document.head.appendChild(t),document.head.appendChild(n)}e.forEach(Tt)}function Nn(e){return["Arial","Helvetica","Times New Roman","Georgia","Verdana"].includes(e)?`<!-- ${e} is a system font, no import needed -->`:`<!-- Add this to your HTML <head> -->
|
|
44
44
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
45
45
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
46
|
-
<link href="${`https://fonts.googleapis.com/css2?family=${e.replace(/ /g,"+")}:wght@100;200;300;400;500;600;700;800;900&display=swap`}" rel="stylesheet">`}function
|
|
46
|
+
<link href="${`https://fonts.googleapis.com/css2?family=${e.replace(/ /g,"+")}:wght@100;200;300;400;500;600;700;800;900&display=swap`}" rel="stylesheet">`}function An(e){return`<h1 style={{
|
|
47
47
|
fontFamily: '${e.fontFamily}',
|
|
48
48
|
fontSize: '${e.fontSize}px',
|
|
49
49
|
fontWeight: ${e.fontWeight},
|
|
@@ -54,7 +54,7 @@ Valid keys: `+JSON.stringify(Object.keys(l),null," "));var p=V(b,O,m,j,w+"."+O,
|
|
|
54
54
|
textAlign: '${e.textAlign}'
|
|
55
55
|
}}>
|
|
56
56
|
Your Text Here
|
|
57
|
-
</h1>`}function
|
|
57
|
+
</h1>`}function kn(e){return`.my-text {
|
|
58
58
|
font-family: '${e.fontFamily}', sans-serif;
|
|
59
59
|
font-size: ${e.fontSize}px;
|
|
60
60
|
font-weight: ${e.fontWeight};
|
|
@@ -63,4 +63,4 @@ Valid keys: `+JSON.stringify(Object.keys(l),null," "));var p=V(b,O,m,j,w+"."+O,
|
|
|
63
63
|
text-transform: ${e.textTransform};
|
|
64
64
|
color: ${e.color};
|
|
65
65
|
text-align: ${e.textAlign};
|
|
66
|
-
}`}const
|
|
66
|
+
}`}const Ue="font-controls-config",Xe=(e,t=Ue)=>{try{typeof window<"u"&&window.localStorage&&localStorage.setItem(t,JSON.stringify(e))}catch(n){console.warn("Failed to save font config to localStorage:",n)}},Be=(e=Ue)=>{try{if(typeof window<"u"&&window.localStorage){const t=localStorage.getItem(e);if(t)return JSON.parse(t)}}catch(t){console.warn("Failed to load font config from localStorage:",t)}return null},He=(e=Ue)=>{try{typeof window<"u"&&window.localStorage&&localStorage.removeItem(e)}catch(t){console.warn("Failed to clear font config from localStorage:",t)}},Mn=["Inter","Roboto","Open Sans","Lato","Montserrat","Poppins","Raleway","Work Sans","Nunito","Source Sans Pro","DM Sans","Manrope","Plus Jakarta Sans","Outfit","Space Grotesk","Rubik","Karla","Mulish","Quicksand","Barlow","Josefin Sans","Lexend","Hind","Oxygen","Ubuntu","Noto Sans","PT Sans","Cabin","Varela Round","Asap","Exo 2","Archivo","Titillium Web","Yantramanav","Heebo","Comfortaa","Alata","Jost","Red Hat Display","Sora","Playfair Display","Merriweather","Lora","Crimson Text","EB Garamond","Libre Baskerville","Cormorant Garamond","Spectral","Cardo","Bitter","Arvo","Vollkorn","Neuton","Alegreya","Domine","Rokkitt","PT Serif","Gelasio","Noticia Text","Unna","Fira Code","JetBrains Mono","Inconsolata","Source Code Pro","Roboto Mono","IBM Plex Mono","Space Mono","Courier Prime","Anonymous Pro","Overpass Mono","Ubuntu Mono","PT Mono","Noto Sans Mono","Cousine","Share Tech Mono","Bebas Neue","Oswald","Righteous","Permanent Marker","Pacifico","Anton","Alfa Slab One","Fredoka One","Passion One","Bungee","Monoton","Abril Fatface","Lobster","Bangers","Russo One","Dancing Script","Satisfy","Great Vibes","Kaushan Script","Caveat","Shadows Into Light","Indie Flower","Amatic SC","Patrick Hand","Courgette"],Ee={fontFamily:"Arial",fontSize:16,fontWeight:400,lineHeight:1.5,letterSpacing:0,textTransform:"none",color:"#000000",textAlign:"left"},Fn=({value:e,onChange:t,fontFamilies:n=Mn,minFontSize:o=8,maxFontSize:a=120,fontSizeStep:i=1,title:p="Font Controls",collapsed:l=!1,draggable:f=!0,position:y,enableLocalStorage:T=!1,storageKey:C="font-controls-config"})=>{const[E,j]=I.useState(()=>{if(T){const d=Be(C);if(d)return{...Ee,...e,...d}}return{...Ee,...e}}),[Y,F]=I.useState(!1);I.useEffect(()=>{e&&j(d=>({...d,...e}))},[e]),I.useEffect(()=>{Et(n)},[n]);const O=(d,w)=>{const x={...E,[d]:w};j(x),t==null||t(x),T&&Xe(x,C)},g=()=>{j(Ee),t==null||t(Ee),T&&He(C)};return u.jsxs(Sn,{title:p,collapsed:l,draggable:f,position:y,children:[u.jsx(xn,{value:E.fontFamily,onChange:d=>O("fontFamily",d),fontFamilies:n}),u.jsx(Tn,{value:E.fontSize,onChange:d=>O("fontSize",d),min:o,max:a,step:i}),u.jsx(wn,{value:E.fontWeight,onChange:d=>O("fontWeight",d)}),u.jsx(Cn,{value:E.lineHeight,onChange:d=>O("lineHeight",d)}),u.jsx(_n,{value:E.letterSpacing,onChange:d=>O("letterSpacing",d)}),u.jsx(jn,{value:E.textTransform,onChange:d=>O("textTransform",d)}),u.jsx(Rn,{value:E.color,onChange:d=>O("color",d)}),u.jsx(Dn,{value:E.textAlign,onChange:d=>O("textAlign",d)}),u.jsxs("button",{className:"font-control-reset-button",onClick:g,type:"button",children:[u.jsxs("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[u.jsx("polyline",{points:"1 4 1 10 7 10"}),u.jsx("polyline",{points:"23 20 23 14 17 14"}),u.jsx("path",{d:"M20.49 9A9 9 0 0 0 5.64 5.64L1 10m22 4l-4.64 4.36A9 9 0 0 1 3.51 15"})]}),"Reset to Default"]}),u.jsxs("div",{className:"font-control-export-section",children:[u.jsxs("button",{className:"font-control-export-toggle",onClick:()=>F(!Y),type:"button",children:[u.jsx("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",className:Y?"rotated":"",children:u.jsx("polyline",{points:"9 18 15 12 9 6"})}),"Export Configuration"]}),Y&&u.jsxs("div",{className:"font-control-export-content",children:[u.jsx($e,{title:"1. Google Fonts Import (HTML)",code:Nn(E.fontFamily),language:"html"}),u.jsx($e,{title:"2. React/JSX Inline Styles",code:An(E),language:"tsx"}),u.jsx($e,{title:"3. CSS Class",code:kn(E),language:"css"})]})]})]})},ze={fontFamily:"Arial",fontSize:16,fontWeight:400,lineHeight:1.5,letterSpacing:0,textTransform:"none",color:"#000000",textAlign:"left"},In=e=>{const{initialConfig:t,enableLocalStorage:n=!1,storageKey:o="font-controls-config"}=e||{},[a,i]=I.useState(()=>{if(n){const f=Be(o);if(f)return{...ze,...t,...f}}return{...ze,...t}});return I.useEffect(()=>{n&&Xe(a,o)},[a,n,o]),{config:a,setConfig:i,updateConfig:(f,y)=>{i(T=>({...T,[f]:y}))},resetConfig:()=>{const f={...ze,...t};i(f),n&&He(o)}}};V.FontControls=Fn,V.clearFontConfig=He,V.loadAllDefaultFonts=Et,V.loadFontConfig=Be,V.loadGoogleFont=Tt,V.saveFontConfig=Xe,V.useFontControls=In,Object.defineProperty(V,Symbol.toStringTag,{value:"Module"})});
|
package/dist/index.d.ts
CHANGED
|
@@ -2,6 +2,12 @@ import { default as default_2 } from 'react';
|
|
|
2
2
|
import { Dispatch } from 'react';
|
|
3
3
|
import { SetStateAction } from 'react';
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* Clear font configuration from local storage
|
|
7
|
+
* @param storageKey - Custom storage key (optional)
|
|
8
|
+
*/
|
|
9
|
+
export declare const clearFontConfig: (storageKey?: string) => void;
|
|
10
|
+
|
|
5
11
|
export declare type ControlChangeHandler<T> = (value: T) => void;
|
|
6
12
|
|
|
7
13
|
export declare interface FontConfig {
|
|
@@ -68,6 +74,16 @@ export declare interface FontControlsProps {
|
|
|
68
74
|
x: number;
|
|
69
75
|
y: number;
|
|
70
76
|
};
|
|
77
|
+
/**
|
|
78
|
+
* Enable local storage persistence
|
|
79
|
+
* @default false
|
|
80
|
+
*/
|
|
81
|
+
enableLocalStorage?: boolean;
|
|
82
|
+
/**
|
|
83
|
+
* Custom storage key for local storage
|
|
84
|
+
* @default 'font-controls-config'
|
|
85
|
+
*/
|
|
86
|
+
storageKey?: string;
|
|
71
87
|
}
|
|
72
88
|
|
|
73
89
|
/**
|
|
@@ -76,6 +92,13 @@ export declare interface FontControlsProps {
|
|
|
76
92
|
*/
|
|
77
93
|
export declare function loadAllDefaultFonts(fontFamilies: string[]): void;
|
|
78
94
|
|
|
95
|
+
/**
|
|
96
|
+
* Load font configuration from local storage
|
|
97
|
+
* @param storageKey - Custom storage key (optional)
|
|
98
|
+
* @returns Saved font configuration or null if not found
|
|
99
|
+
*/
|
|
100
|
+
export declare const loadFontConfig: (storageKey?: string) => Partial<FontConfig> | null;
|
|
101
|
+
|
|
79
102
|
/**
|
|
80
103
|
* Load a single Google Font dynamically
|
|
81
104
|
* @param fontFamily - The font family name (e.g., "Inter", "Roboto")
|
|
@@ -83,15 +106,39 @@ export declare function loadAllDefaultFonts(fontFamilies: string[]): void;
|
|
|
83
106
|
export declare function loadGoogleFont(fontFamily: string): void;
|
|
84
107
|
|
|
85
108
|
/**
|
|
86
|
-
*
|
|
87
|
-
* @param
|
|
88
|
-
* @
|
|
109
|
+
* Save font configuration to local storage
|
|
110
|
+
* @param config - Font configuration to save
|
|
111
|
+
* @param storageKey - Custom storage key (optional)
|
|
112
|
+
*/
|
|
113
|
+
export declare const saveFontConfig: (config: FontConfig, storageKey?: string) => void;
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Custom hook for managing font configuration state with optional local storage persistence
|
|
117
|
+
* @param options - Configuration options
|
|
118
|
+
* @returns Object with config state and control functions
|
|
89
119
|
*/
|
|
90
|
-
export declare const useFontControls: (
|
|
120
|
+
export declare const useFontControls: (options?: UseFontControlsOptions) => {
|
|
91
121
|
config: FontConfig;
|
|
92
122
|
setConfig: Dispatch<SetStateAction<FontConfig>>;
|
|
93
123
|
updateConfig: <K extends keyof FontConfig>(key: K, value: FontConfig[K]) => void;
|
|
94
124
|
resetConfig: () => void;
|
|
95
125
|
};
|
|
96
126
|
|
|
127
|
+
export declare interface UseFontControlsOptions {
|
|
128
|
+
/**
|
|
129
|
+
* Initial font configuration
|
|
130
|
+
*/
|
|
131
|
+
initialConfig?: Partial<FontConfig>;
|
|
132
|
+
/**
|
|
133
|
+
* Enable local storage persistence
|
|
134
|
+
* @default false
|
|
135
|
+
*/
|
|
136
|
+
enableLocalStorage?: boolean;
|
|
137
|
+
/**
|
|
138
|
+
* Custom storage key for local storage
|
|
139
|
+
* @default "font-controls-config"
|
|
140
|
+
*/
|
|
141
|
+
storageKey?: string;
|
|
142
|
+
}
|
|
143
|
+
|
|
97
144
|
export { }
|
package/dist/style.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
:root{--fc-bg: rgba(255, 255, 255, .95);--fc-bg-hover: rgba(255, 255, 255, .98);--fc-border: rgba(0, 0, 0, .1);--fc-text: #1a1a1a;--fc-text-secondary: #666;--fc-accent: #3b82f6;--fc-accent-hover: #2563eb;--fc-input-bg: rgba(0, 0, 0, .03);--fc-input-border: rgba(0, 0, 0, .1);--fc-shadow: 0 8px 32px rgba(0, 0, 0, .1);--fc-shadow-lg: 0 20px 60px rgba(0, 0, 0, .15)}@media (prefers-color-scheme: dark){:root{--fc-bg: rgba(30, 30, 30, .95);--fc-bg-hover: rgba(40, 40, 40, .98);--fc-border: rgba(255, 255, 255, .1);--fc-text: #e5e5e5;--fc-text-secondary: #a0a0a0;--fc-accent: #60a5fa;--fc-accent-hover: #3b82f6;--fc-input-bg: rgba(255, 255, 255, .05);--fc-input-border: rgba(255, 255, 255, .1);--fc-shadow: 0 8px 32px rgba(0, 0, 0, .3);--fc-shadow-lg: 0 20px 60px rgba(0, 0, 0, .4)}}*{box-sizing:border-box;margin:0;padding:0}.font-controls-panel{position:fixed;top:0;left:0;width:320px;background:var(--fc-bg);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--fc-border);border-radius:12px;box-shadow:var(--fc-shadow);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;font-size:14px;color:var(--fc-text);z-index:9999;-webkit-user-select:none;user-select:none}.font-controls-header{display:flex;align-items:center;justify-content:space-between;padding:16px;border-bottom:1px solid var(--fc-border);cursor:grab;transition:background .2s ease}.font-controls-header:active{cursor:grabbing}.font-controls-header:hover{background:var(--fc-input-bg)}.font-controls-title{font-weight:600;font-size:15px;margin:0;display:flex;align-items:center;gap:8px}.font-controls-toggle{background:none;border:none;color:var(--fc-text-secondary);cursor:pointer;padding:4px;display:flex;align-items:center;justify-content:center;transition:all .2s ease;border-radius:4px}.font-controls-toggle:hover{background:var(--fc-input-bg);color:var(--fc-text)}.font-controls-toggle svg{width:16px;height:16px;transition:transform .3s cubic-bezier(.4,0,.2,1)}.font-controls-toggle.collapsed svg{transform:rotate(-90deg)}.font-controls-content{padding:16px;display:flex;flex-direction:column;gap:16px;max-height:600px;overflow-y:auto;overflow-x:hidden}.font-controls-content::-webkit-scrollbar{width:6px}.font-controls-content::-webkit-scrollbar-track{background:transparent}.font-controls-content::-webkit-scrollbar-thumb{background:var(--fc-border);border-radius:3px}.font-controls-content::-webkit-scrollbar-thumb:hover{background:var(--fc-text-secondary)}.font-control-group{display:flex;flex-direction:column;gap:8px}.font-control-label{font-size:12px;font-weight:500;color:var(--fc-text-secondary);text-transform:uppercase;letter-spacing:.5px}.font-control-input{width:100%;padding:8px 12px;background:var(--fc-input-bg);border:1px solid var(--fc-input-border);border-radius:6px;color:var(--fc-text);font-size:14px;transition:all .2s ease;outline:none;font-family:inherit}.font-control-input:hover{background:var(--fc-bg-hover);border-color:var(--fc-accent)}.font-control-input:focus{border-color:var(--fc-accent);box-shadow:0 0 0 3px #3b82f61a}.font-control-select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg width='12' height='8' viewBox='0 0 12 8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1.5L6 6.5L11 1.5' stroke='%23666' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:36px;cursor:pointer}.font-control-slider-container{display:flex;gap:12px;align-items:center}.font-control-slider{flex:1;height:6px;background:var(--fc-input-bg);border-radius:3px;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer}.font-control-slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:16px;height:16px;background:var(--fc-accent);border-radius:50%;cursor:pointer;transition:all .2s ease;box-shadow:0 2px 4px #0000001a}.font-control-slider::-webkit-slider-thumb:hover{background:var(--fc-accent-hover);transform:scale(1.1)}.font-control-slider::-moz-range-thumb{width:16px;height:16px;background:var(--fc-accent);border-radius:50%;cursor:pointer;border:none;transition:all .2s ease;box-shadow:0 2px 4px #0000001a}.font-control-slider::-moz-range-thumb:hover{background:var(--fc-accent-hover);transform:scale(1.1)}.font-control-number{width:70px;text-align:center;padding:6px 8px}.font-control-color-input{display:flex;gap:8px;align-items:center}.font-control-color-preview{width:40px;height:40px;border-radius:6px;border:1px solid var(--fc-input-border);cursor:pointer;transition:all .2s ease;position:relative;overflow:hidden}.font-control-color-preview:hover{transform:scale(1.05);border-color:var(--fc-accent)}.font-control-color-preview input[type=color]{position:absolute;width:200%;height:200%;top:-50%;left:-50%;border:none;cursor:pointer}.font-control-text-input{flex:1}.font-control-button-group{display:grid;grid-template-columns:repeat(4,1fr);gap:4px}.font-control-button{padding:8px;background:var(--fc-input-bg);border:1px solid var(--fc-input-border);border-radius:6px;color:var(--fc-text);cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center;font-size:14px}.font-control-button:hover{background:var(--fc-bg-hover);border-color:var(--fc-accent)}.font-control-button.active{background:var(--fc-accent);border-color:var(--fc-accent);color:#fff}.font-control-button svg{width:16px;height:16px}.font-control-reset-button{width:100%;padding:10px 16px;background:var(--fc-input-bg);border:1px solid var(--fc-input-border);border-radius:6px;color:var(--fc-text);cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center;gap:8px;font-size:13px;font-weight:500;font-family:inherit;margin-top:8px}.font-control-reset-button:hover{background:var(--fc-accent);border-color:var(--fc-accent);color:#fff;transform:translateY(-1px);box-shadow:0 4px 12px #3b82f633}.font-control-reset-button:active{transform:translateY(0)}.font-control-reset-button svg{width:16px;height:16px}.font-control-export-section{margin-top:16px;border-top:1px solid var(--fc-border);padding-top:16px}.font-control-export-toggle{width:100%;padding:10px 16px;background:var(--fc-input-bg);border:1px solid var(--fc-input-border);border-radius:6px;color:var(--fc-text);cursor:pointer;transition:all .2s ease;display:flex;align-items:center;gap:8px;font-size:13px;font-weight:500;font-family:inherit}.font-control-export-toggle:hover{background:var(--fc-bg-hover);border-color:var(--fc-accent)}.font-control-export-toggle svg{width:14px;height:14px;transition:transform .3s ease}.font-control-export-toggle svg.rotated{transform:rotate(90deg)}.font-control-export-content{margin-top:12px;display:flex;flex-direction:column;gap:12px}.font-control-code-block{background:var(--fc-input-bg);border:1px solid var(--fc-input-border);border-radius:6px;overflow:hidden}.font-control-code-header{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;background:#00000008;border-bottom:1px solid var(--fc-border)}@media (prefers-color-scheme: dark){.font-control-code-header{background:#ffffff08}}.font-control-code-title{font-size:11px;font-weight:600;color:var(--fc-text-secondary);text-transform:uppercase;letter-spacing:.5px}.font-control-copy-button{background:transparent;border:none;color:var(--fc-text-secondary);cursor:pointer;padding:4px 8px;border-radius:4px;font-size:11px;font-weight:500;display:flex;align-items:center;gap:4px;transition:all .2s ease;font-family:inherit}.font-control-copy-button:hover{background:var(--fc-input-bg);color:var(--fc-accent)}.font-control-copy-button svg{width:12px;height:12px}.font-control-code-content{margin:0;padding:12px;overflow-x:auto;font-family:Fira Code,Consolas,Monaco,monospace;font-size:11px;line-height:1.6;color:var(--fc-text)}.font-control-code-content::-webkit-scrollbar{height:6px}.font-control-code-content::-webkit-scrollbar-track{background:transparent}.font-control-code-content::-webkit-scrollbar-thumb{background:var(--fc-border);border-radius:3px}.font-control-code-content code{font-family:inherit}@keyframes slideDown{0%{opacity:0;max-height:0}to{opacity:1;max-height:600px}}@keyframes slideUp{0%{opacity:1;max-height:600px}to{opacity:0;max-height:0}}.font-controls-content.entering{animation:slideDown .3s cubic-bezier(.4,0,.2,1) forwards}.font-controls-content.exiting{animation:slideUp .3s cubic-bezier(.4,0,.2,1) forwards}
|
|
1
|
+
:root{--fc-bg: rgba(255, 255, 255, .95);--fc-bg-hover: rgba(255, 255, 255, .98);--fc-border: rgba(0, 0, 0, .1);--fc-text: #1a1a1a;--fc-text-secondary: #666;--fc-accent: #3b82f6;--fc-accent-hover: #2563eb;--fc-input-bg: rgba(0, 0, 0, .03);--fc-input-border: rgba(0, 0, 0, .1);--fc-shadow: 0 8px 32px rgba(0, 0, 0, .1);--fc-shadow-lg: 0 20px 60px rgba(0, 0, 0, .15)}@media (prefers-color-scheme: dark){:root{--fc-bg: rgba(30, 30, 30, .95);--fc-bg-hover: rgba(40, 40, 40, .98);--fc-border: rgba(255, 255, 255, .1);--fc-text: #e5e5e5;--fc-text-secondary: #a0a0a0;--fc-accent: #60a5fa;--fc-accent-hover: #3b82f6;--fc-input-bg: rgba(255, 255, 255, .05);--fc-input-border: rgba(255, 255, 255, .1);--fc-shadow: 0 8px 32px rgba(0, 0, 0, .3);--fc-shadow-lg: 0 20px 60px rgba(0, 0, 0, .4)}}*{box-sizing:border-box;margin:0;padding:0}.font-controls-panel{position:fixed;top:0;left:0;width:320px;background:var(--fc-bg);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid var(--fc-border);border-radius:12px;box-shadow:var(--fc-shadow);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;font-size:14px;color:var(--fc-text);z-index:9999;-webkit-user-select:none;user-select:none}.font-controls-header{display:flex;align-items:center;justify-content:space-between;padding:16px;border-bottom:1px solid var(--fc-border);cursor:grab;transition:background .2s ease}.font-controls-header:active{cursor:grabbing}.font-controls-header:hover{background:var(--fc-input-bg)}.font-controls-title{font-weight:600;font-size:15px;margin:0;display:flex;align-items:center;gap:8px}.font-controls-toggle{background:none;border:none;color:var(--fc-text-secondary);cursor:pointer;padding:4px;display:flex;align-items:center;justify-content:center;transition:all .2s ease;border-radius:4px}.font-controls-toggle:hover{background:var(--fc-input-bg);color:var(--fc-text)}.font-controls-toggle svg{width:16px;height:16px;transition:transform .3s cubic-bezier(.4,0,.2,1)}.font-controls-toggle.collapsed svg{transform:rotate(-90deg)}.font-controls-content{padding:16px;display:flex;flex-direction:column;gap:16px;max-height:600px;overflow-y:auto;overflow-x:hidden}.font-controls-content::-webkit-scrollbar{width:6px}.font-controls-content::-webkit-scrollbar-track{background:transparent}.font-controls-content::-webkit-scrollbar-thumb{background:var(--fc-border);border-radius:3px}.font-controls-content::-webkit-scrollbar-thumb:hover{background:var(--fc-text-secondary)}.font-control-group{display:flex;flex-direction:column;gap:8px}.font-control-label{font-size:12px;font-weight:500;color:var(--fc-text-secondary);text-transform:uppercase;letter-spacing:.5px}.font-control-input{width:100%;padding:8px 12px;background:var(--fc-input-bg);border:1px solid var(--fc-input-border);border-radius:6px;color:var(--fc-text);font-size:14px;transition:all .2s ease;outline:none;font-family:inherit}.font-control-input:hover{background:var(--fc-bg-hover);border-color:var(--fc-accent)}.font-control-input:focus{border-color:var(--fc-accent);box-shadow:0 0 0 3px #3b82f61a}.font-control-select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg width='12' height='8' viewBox='0 0 12 8' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1.5L6 6.5L11 1.5' stroke='%23666' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:36px;cursor:pointer}.font-control-searchable-select{position:relative;width:100%}.font-control-search-input{cursor:text}.font-control-dropdown{position:absolute;top:calc(100% + 4px);left:0;right:0;max-height:300px;overflow-y:auto;background:var(--fc-bg);border:1px solid var(--fc-input-border);border-radius:6px;box-shadow:var(--fc-shadow);z-index:1000;animation:dropdownSlideIn .2s cubic-bezier(.4,0,.2,1)}.font-control-dropdown::-webkit-scrollbar{width:6px}.font-control-dropdown::-webkit-scrollbar-track{background:transparent}.font-control-dropdown::-webkit-scrollbar-thumb{background:var(--fc-border);border-radius:3px}.font-control-dropdown::-webkit-scrollbar-thumb:hover{background:var(--fc-text-secondary)}.font-control-dropdown-item{padding:10px 12px;cursor:pointer;transition:all .15s ease;color:var(--fc-text);font-size:14px;border-bottom:1px solid var(--fc-border)}.font-control-dropdown-item:last-child{border-bottom:none}.font-control-dropdown-item:hover{background:var(--fc-input-bg)}.font-control-dropdown-item.highlighted{background:var(--fc-accent);color:#fff}.font-control-dropdown-item.selected{background:#3b82f61a;font-weight:500}.font-control-dropdown-item.no-results{cursor:default;color:var(--fc-text-secondary);text-align:center;font-style:italic}.font-control-dropdown-item.no-results:hover{background:transparent}@keyframes dropdownSlideIn{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.font-control-slider-container{display:flex;gap:12px;align-items:center}.font-control-slider{flex:1;height:6px;background:var(--fc-input-bg);border-radius:3px;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer}.font-control-slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:16px;height:16px;background:var(--fc-accent);border-radius:50%;cursor:pointer;transition:all .2s ease;box-shadow:0 2px 4px #0000001a}.font-control-slider::-webkit-slider-thumb:hover{background:var(--fc-accent-hover);transform:scale(1.1)}.font-control-slider::-moz-range-thumb{width:16px;height:16px;background:var(--fc-accent);border-radius:50%;cursor:pointer;border:none;transition:all .2s ease;box-shadow:0 2px 4px #0000001a}.font-control-slider::-moz-range-thumb:hover{background:var(--fc-accent-hover);transform:scale(1.1)}.font-control-number{width:70px;text-align:center;padding:6px 8px}.font-control-color-input{display:flex;gap:8px;align-items:center}.font-control-color-preview{width:40px;height:40px;border-radius:6px;border:1px solid var(--fc-input-border);cursor:pointer;transition:all .2s ease;position:relative;overflow:hidden}.font-control-color-preview:hover{transform:scale(1.05);border-color:var(--fc-accent)}.font-control-color-preview input[type=color]{position:absolute;width:200%;height:200%;top:-50%;left:-50%;border:none;cursor:pointer}.font-control-text-input{flex:1}.font-control-button-group{display:grid;grid-template-columns:repeat(4,1fr);gap:4px}.font-control-button{padding:8px;background:var(--fc-input-bg);border:1px solid var(--fc-input-border);border-radius:6px;color:var(--fc-text);cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center;font-size:14px}.font-control-button:hover{background:var(--fc-bg-hover);border-color:var(--fc-accent)}.font-control-button.active{background:var(--fc-accent);border-color:var(--fc-accent);color:#fff}.font-control-button svg{width:16px;height:16px}.font-control-reset-button{width:100%;padding:10px 16px;background:var(--fc-input-bg);border:1px solid var(--fc-input-border);border-radius:6px;color:var(--fc-text);cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center;gap:8px;font-size:13px;font-weight:500;font-family:inherit;margin-top:8px}.font-control-reset-button:hover{background:var(--fc-accent);border-color:var(--fc-accent);color:#fff;transform:translateY(-1px);box-shadow:0 4px 12px #3b82f633}.font-control-reset-button:active{transform:translateY(0)}.font-control-reset-button svg{width:16px;height:16px}.font-control-export-section{margin-top:16px;border-top:1px solid var(--fc-border);padding-top:16px}.font-control-export-toggle{width:100%;padding:10px 16px;background:var(--fc-input-bg);border:1px solid var(--fc-input-border);border-radius:6px;color:var(--fc-text);cursor:pointer;transition:all .2s ease;display:flex;align-items:center;gap:8px;font-size:13px;font-weight:500;font-family:inherit}.font-control-export-toggle:hover{background:var(--fc-bg-hover);border-color:var(--fc-accent)}.font-control-export-toggle svg{width:14px;height:14px;transition:transform .3s ease}.font-control-export-toggle svg.rotated{transform:rotate(90deg)}.font-control-export-content{margin-top:12px;display:flex;flex-direction:column;gap:12px}.font-control-code-block{background:var(--fc-input-bg);border:1px solid var(--fc-input-border);border-radius:6px;overflow:hidden}.font-control-code-header{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;background:#00000008;border-bottom:1px solid var(--fc-border)}@media (prefers-color-scheme: dark){.font-control-code-header{background:#ffffff08}}.font-control-code-title{font-size:11px;font-weight:600;color:var(--fc-text-secondary);text-transform:uppercase;letter-spacing:.5px}.font-control-copy-button{background:transparent;border:none;color:var(--fc-text-secondary);cursor:pointer;padding:4px 8px;border-radius:4px;font-size:11px;font-weight:500;display:flex;align-items:center;gap:4px;transition:all .2s ease;font-family:inherit}.font-control-copy-button:hover{background:var(--fc-input-bg);color:var(--fc-accent)}.font-control-copy-button svg{width:12px;height:12px}.font-control-code-content{margin:0;padding:12px;overflow-x:auto;font-family:Fira Code,Consolas,Monaco,monospace;font-size:11px;line-height:1.6;color:var(--fc-text)}.font-control-code-content::-webkit-scrollbar{height:6px}.font-control-code-content::-webkit-scrollbar-track{background:transparent}.font-control-code-content::-webkit-scrollbar-thumb{background:var(--fc-border);border-radius:3px}.font-control-code-content code{font-family:inherit}@keyframes slideDown{0%{opacity:0;max-height:0}to{opacity:1;max-height:600px}}@keyframes slideUp{0%{opacity:1;max-height:600px}to{opacity:0;max-height:0}}.font-controls-content.entering{animation:slideDown .3s cubic-bezier(.4,0,.2,1) forwards}.font-controls-content.exiting{animation:slideUp .3s cubic-bezier(.4,0,.2,1) forwards}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "font-controls",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.0",
|
|
4
4
|
"description": "A beautiful, Leva-inspired font controls library for React",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/font-controls.umd.cjs",
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"require": "./dist/font-controls.umd.cjs",
|
|
13
13
|
"types": "./dist/index.d.ts"
|
|
14
14
|
},
|
|
15
|
-
"./
|
|
15
|
+
"./style.css": "./dist/style.css"
|
|
16
16
|
},
|
|
17
17
|
"files": [
|
|
18
18
|
"dist"
|