3d-shape-particle-text 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- (function(ae,q){typeof exports=="object"&&typeof module<"u"?q(exports,require("react"),require("three")):typeof define=="function"&&define.amd?define(["exports","react","three"],q):(ae=typeof globalThis<"u"?globalThis:ae||self,q(ae["3dShapeParticleText"]={},ae.React,ae.THREE))})(this,function(ae,q,ut){"use strict";function ft(z){const T=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(z){for(const $ in z)if($!=="default"){const y=Object.getOwnPropertyDescriptor(z,$);Object.defineProperty(T,$,y.get?y:{enumerable:!0,get:()=>z[$]})}}return T.default=z,Object.freeze(T)}const u=ft(ut);var Ke={exports:{}},Te={};/**
1
+ (function(ue,ee){typeof exports=="object"&&typeof module<"u"?ee(exports,require("react"),require("three")):typeof define=="function"&&define.amd?define(["exports","react","three"],ee):(ue=typeof globalThis<"u"?globalThis:ue||self,ee(ue["3dShapeParticleText"]={},ue.React,ue.THREE))})(this,(function(ue,ee,pr){"use strict";function mr(t){const s=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const f in t)if(f!=="default"){const i=Object.getOwnPropertyDescriptor(t,f);Object.defineProperty(s,f,i.get?i:{enumerable:!0,get:()=>t[f]})}}return s.default=t,Object.freeze(s)}const d=mr(pr);var Ne={exports:{}},Le={};/**
2
2
  * @license React
3
3
  * react-jsx-runtime.production.min.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 it;function dt(){if(it)return Te;it=1;var z=q,T=Symbol.for("react.element"),$=Symbol.for("react.fragment"),y=Object.prototype.hasOwnProperty,k=z.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,be={key:!0,ref:!0,__self:!0,__source:!0};function ue(J,P,K){var w,M={},H=null,fe=null;K!==void 0&&(H=""+K),P.key!==void 0&&(H=""+P.key),P.ref!==void 0&&(fe=P.ref);for(w in P)y.call(P,w)&&!be.hasOwnProperty(w)&&(M[w]=P[w]);if(J&&J.defaultProps)for(w in P=J.defaultProps,P)M[w]===void 0&&(M[w]=P[w]);return{$$typeof:T,type:J,key:H,ref:fe,props:M,_owner:k.current}}return Te.Fragment=$,Te.jsx=ue,Te.jsxs=ue,Te}var Se={};/**
9
+ */var sr;function vr(){if(sr)return Le;sr=1;var t=ee,s=Symbol.for("react.element"),f=Symbol.for("react.fragment"),i=Object.prototype.hasOwnProperty,a=t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,g={key:!0,ref:!0,__self:!0,__source:!0};function O(C,_,T){var w,M={},j=null,H=null;T!==void 0&&(j=""+T),_.key!==void 0&&(j=""+_.key),_.ref!==void 0&&(H=_.ref);for(w in _)i.call(_,w)&&!g.hasOwnProperty(w)&&(M[w]=_[w]);if(C&&C.defaultProps)for(w in _=C.defaultProps,_)M[w]===void 0&&(M[w]=_[w]);return{$$typeof:s,type:C,key:j,ref:H,props:M,_owner:a.current}}return Le.Fragment=f,Le.jsx=O,Le.jsxs=O,Le}var We={};/**
10
10
  * @license React
11
11
  * react-jsx-runtime.development.js
12
12
  *
@@ -14,17 +14,17 @@
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 ot;function ht(){return ot||(ot=1,process.env.NODE_ENV!=="production"&&function(){var z=q,T=Symbol.for("react.element"),$=Symbol.for("react.portal"),y=Symbol.for("react.fragment"),k=Symbol.for("react.strict_mode"),be=Symbol.for("react.profiler"),ue=Symbol.for("react.provider"),J=Symbol.for("react.context"),P=Symbol.for("react.forward_ref"),K=Symbol.for("react.suspense"),w=Symbol.for("react.suspense_list"),M=Symbol.for("react.memo"),H=Symbol.for("react.lazy"),fe=Symbol.for("react.offscreen"),Oe=Symbol.iterator,Le="@@iterator";function ee(e){if(e===null||typeof e!="object")return null;var t=Oe&&e[Oe]||e[Le];return typeof t=="function"?t:null}var te=z.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function _(e){{for(var t=arguments.length,r=new Array(t>1?t-1:0),s=1;s<t;s++)r[s-1]=arguments[s];Ze("error",e,r)}}function Ze(e,t,r){{var s=te.ReactDebugCurrentFrame,h=s.getStackAddendum();h!==""&&(t+="%s",r=r.concat([h]));var d=r.map(function(l){return String(l)});d.unshift("Warning: "+t),Function.prototype.apply.call(console[e],console,d)}}var Qe=!1,We=!1,ye=!1,E=!1,de=!1,xe;xe=Symbol.for("react.module.reference");function ct(e){return!!(typeof e=="string"||typeof e=="function"||e===y||e===be||de||e===k||e===K||e===w||E||e===fe||Qe||We||ye||typeof e=="object"&&e!==null&&(e.$$typeof===H||e.$$typeof===M||e.$$typeof===ue||e.$$typeof===J||e.$$typeof===P||e.$$typeof===xe||e.getModuleId!==void 0))}function ie(e,t,r){var s=e.displayName;if(s)return s;var h=t.displayName||t.name||"";return h!==""?r+"("+h+")":r}function re(e){return e.displayName||"Context"}function g(e){if(e==null)return null;if(typeof e.tag=="number"&&_("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case y:return"Fragment";case $:return"Portal";case be:return"Profiler";case k:return"StrictMode";case K:return"Suspense";case w:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case J:var t=e;return re(t)+".Consumer";case ue:var r=e;return re(r._context)+".Provider";case P:return ie(e,e.render,"ForwardRef");case M:var s=e.displayName||null;return s!==null?s:g(e.type)||"Memo";case H:{var h=e,d=h._payload,l=h._init;try{return g(l(d))}catch{return null}}}return null}var D=Object.assign,L=0,he,W,je,we,Ee,G,S;function p(){}p.__reactDisabledLog=!0;function lt(){{if(L===0){he=console.log,W=console.info,je=console.warn,we=console.error,Ee=console.group,G=console.groupCollapsed,S=console.groupEnd;var e={configurable:!0,enumerable:!0,value:p,writable:!0};Object.defineProperties(console,{info:e,log:e,warn:e,error:e,group:e,groupCollapsed:e,groupEnd:e})}L++}}function I(){{if(L--,L===0){var e={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:D({},e,{value:he}),info:D({},e,{value:W}),warn:D({},e,{value:je}),error:D({},e,{value:we}),group:D({},e,{value:Ee}),groupCollapsed:D({},e,{value:G}),groupEnd:D({},e,{value:S})})}L<0&&_("disabledDepth fell below zero. This is a bug in React. Please file an issue.")}}var ke=te.ReactCurrentDispatcher,Ae;function Re(e,t,r){{if(Ae===void 0)try{throw Error()}catch(h){var s=h.stack.trim().match(/\n( *(at )?)/);Ae=s&&s[1]||""}return`
18
- `+Ae+e}}var X=!1,Pe;{var et=typeof WeakMap=="function"?WeakMap:Map;Pe=new et}function Ge(e,t){if(!e||X)return"";{var r=Pe.get(e);if(r!==void 0)return r}var s;X=!0;var h=Error.prepareStackTrace;Error.prepareStackTrace=void 0;var d;d=ke.current,ke.current=null,lt();try{if(t){var l=function(){throw Error()};if(Object.defineProperty(l.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(l,[])}catch(F){s=F}Reflect.construct(e,[],l)}else{try{l.call()}catch(F){s=F}e.call(l.prototype)}}else{try{throw Error()}catch(F){s=F}e()}}catch(F){if(F&&s&&typeof F.stack=="string"){for(var f=F.stack.split(`
19
- `),C=s.stack.split(`
20
- `),b=f.length-1,x=C.length-1;b>=1&&x>=0&&f[b]!==C[x];)x--;for(;b>=1&&x>=0;b--,x--)if(f[b]!==C[x]){if(b!==1||x!==1)do if(b--,x--,x<0||f[b]!==C[x]){var N=`
21
- `+f[b].replace(" at new "," at ");return e.displayName&&N.includes("<anonymous>")&&(N=N.replace("<anonymous>",e.displayName)),typeof e=="function"&&Pe.set(e,N),N}while(b>=1&&x>=0);break}}}finally{X=!1,ke.current=d,I(),Error.prepareStackTrace=h}var Me=e?e.displayName||e.name:"",ge=Me?Re(Me):"";return typeof e=="function"&&Pe.set(e,ge),ge}function tt(e,t,r){return Ge(e,!1)}function Ie(e){var t=e.prototype;return!!(t&&t.isReactComponent)}function pe(e,t,r){if(e==null)return"";if(typeof e=="function")return Ge(e,Ie(e));if(typeof e=="string")return Re(e);switch(e){case K:return Re("Suspense");case w:return Re("SuspenseList")}if(typeof e=="object")switch(e.$$typeof){case P:return tt(e.render);case M:return pe(e.type,t,r);case H:{var s=e,h=s._payload,d=s._init;try{return pe(d(h),t,r)}catch{}}}return""}var oe=Object.prototype.hasOwnProperty,ve={},Z=te.ReactDebugCurrentFrame;function se(e){if(e){var t=e._owner,r=pe(e.type,e._source,t?t.type:null);Z.setExtraStackFrame(r)}else Z.setExtraStackFrame(null)}function rt(e,t,r,s,h){{var d=Function.call.bind(oe);for(var l in e)if(d(e,l)){var f=void 0;try{if(typeof e[l]!="function"){var C=Error((s||"React class")+": "+r+" type `"+l+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+typeof e[l]+"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");throw C.name="Invariant Violation",C}f=e[l](t,l,s,r,null,"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED")}catch(b){f=b}f&&!(f instanceof Error)&&(se(h),_("%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).",s||"React class",r,l,typeof f),se(null)),f instanceof Error&&!(f.message in ve)&&(ve[f.message]=!0,se(h),_("Failed %s type: %s",r,f.message),se(null))}}}var Ye=Array.isArray;function Ce(e){return Ye(e)}function nt(e){{var t=typeof Symbol=="function"&&Symbol.toStringTag,r=t&&e[Symbol.toStringTag]||e.constructor.name||"Object";return r}}function _e(e){try{return me(e),!1}catch{return!0}}function me(e){return""+e}function ne(e){if(_e(e))return _("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.",nt(e)),me(e)}var Fe=te.ReactCurrentOwner,ce={key:!0,ref:!0,__self:!0,__source:!0},ze,Q;function Be(e){if(oe.call(e,"ref")){var t=Object.getOwnPropertyDescriptor(e,"ref").get;if(t&&t.isReactWarning)return!1}return e.ref!==void 0}function Ve(e){if(oe.call(e,"key")){var t=Object.getOwnPropertyDescriptor(e,"key").get;if(t&&t.isReactWarning)return!1}return e.key!==void 0}function De(e,t){typeof e.ref=="string"&&Fe.current}function Ue(e,t){{var r=function(){ze||(ze=!0,_("%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://reactjs.org/link/special-props)",t))};r.isReactWarning=!0,Object.defineProperty(e,"key",{get:r,configurable:!0})}}function Ne(e,t){{var r=function(){Q||(Q=!0,_("%s: `ref` 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://reactjs.org/link/special-props)",t))};r.isReactWarning=!0,Object.defineProperty(e,"ref",{get:r,configurable:!0})}}var $e=function(e,t,r,s,h,d,l){var f={$$typeof:T,type:e,key:t,ref:r,props:l,_owner:d};return f._store={},Object.defineProperty(f._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:!1}),Object.defineProperty(f,"_self",{configurable:!1,enumerable:!1,writable:!1,value:s}),Object.defineProperty(f,"_source",{configurable:!1,enumerable:!1,writable:!1,value:h}),Object.freeze&&(Object.freeze(f.props),Object.freeze(f)),f};function He(e,t,r,s,h){{var d,l={},f=null,C=null;r!==void 0&&(ne(r),f=""+r),Ve(t)&&(ne(t.key),f=""+t.key),Be(t)&&(C=t.ref,De(t,h));for(d in t)oe.call(t,d)&&!ce.hasOwnProperty(d)&&(l[d]=t[d]);if(e&&e.defaultProps){var b=e.defaultProps;for(d in b)l[d]===void 0&&(l[d]=b[d])}if(f||C){var x=typeof e=="function"?e.displayName||e.name||"Unknown":e;f&&Ue(l,x),C&&Ne(l,x)}return $e(e,f,C,h,s,Fe.current,l)}}var n=te.ReactCurrentOwner,a=te.ReactDebugCurrentFrame;function o(e){if(e){var t=e._owner,r=pe(e.type,e._source,t?t.type:null);a.setExtraStackFrame(r)}else a.setExtraStackFrame(null)}var c;c=!1;function i(e){return typeof e=="object"&&e!==null&&e.$$typeof===T}function m(){{if(n.current){var e=g(n.current.type);if(e)return`
17
+ */var cr;function gr(){return cr||(cr=1,process.env.NODE_ENV!=="production"&&(function(){var t=ee,s=Symbol.for("react.element"),f=Symbol.for("react.portal"),i=Symbol.for("react.fragment"),a=Symbol.for("react.strict_mode"),g=Symbol.for("react.profiler"),O=Symbol.for("react.provider"),C=Symbol.for("react.context"),_=Symbol.for("react.forward_ref"),T=Symbol.for("react.suspense"),w=Symbol.for("react.suspense_list"),M=Symbol.for("react.memo"),j=Symbol.for("react.lazy"),H=Symbol.for("react.offscreen"),re=Symbol.iterator,fe="@@iterator";function z(e){if(e===null||typeof e!="object")return null;var r=re&&e[re]||e[fe];return typeof r=="function"?r:null}var G=t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function E(e){{for(var r=arguments.length,n=new Array(r>1?r-1:0),l=1;l<r;l++)n[l-1]=arguments[l];ge("error",e,n)}}function ge(e,r,n){{var l=G.ReactDebugCurrentFrame,v=l.getStackAddendum();v!==""&&(r+="%s",n=n.concat([v]));var b=n.map(function(m){return String(m)});b.unshift("Warning: "+r),Function.prototype.apply.call(console[e],console,b)}}var J=!1,Y=!1,de=!1,xe=!1,B=!1,R;R=Symbol.for("react.module.reference");function te(e){return!!(typeof e=="string"||typeof e=="function"||e===i||e===g||B||e===a||e===T||e===w||xe||e===H||J||Y||de||typeof e=="object"&&e!==null&&(e.$$typeof===j||e.$$typeof===M||e.$$typeof===O||e.$$typeof===C||e.$$typeof===_||e.$$typeof===R||e.getModuleId!==void 0))}function ye(e,r,n){var l=e.displayName;if(l)return l;var v=r.displayName||r.name||"";return v!==""?n+"("+v+")":n}function Te(e){return e.displayName||"Context"}function ne(e){if(e==null)return null;if(typeof e.tag=="number"&&E("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case i:return"Fragment";case f:return"Portal";case g:return"Profiler";case a:return"StrictMode";case T:return"Suspense";case w:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case C:var r=e;return Te(r)+".Consumer";case O:var n=e;return Te(n._context)+".Provider";case _:return ye(e,e.render,"ForwardRef");case M:var l=e.displayName||null;return l!==null?l:ne(e.type)||"Memo";case j:{var v=e,b=v._payload,m=v._init;try{return ne(m(b))}catch{return null}}}return null}var A=Object.assign,V=0,U,$,N,he,Z,be,I;function De(){}De.__reactDisabledLog=!0;function Ie(){{if(V===0){U=console.log,$=console.info,N=console.warn,he=console.error,Z=console.group,be=console.groupCollapsed,I=console.groupEnd;var e={configurable:!0,enumerable:!0,value:De,writable:!0};Object.defineProperties(console,{info:e,log:e,warn:e,error:e,group:e,groupCollapsed:e,groupEnd:e})}V++}}function ze(){{if(V--,V===0){var e={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:A({},e,{value:U}),info:A({},e,{value:$}),warn:A({},e,{value:N}),error:A({},e,{value:he}),group:A({},e,{value:Z}),groupCollapsed:A({},e,{value:be}),groupEnd:A({},e,{value:I})})}V<0&&E("disabledDepth fell below zero. This is a bug in React. Please file an issue.")}}var F=G.ReactCurrentDispatcher,L;function y(e,r,n){{if(L===void 0)try{throw Error()}catch(v){var l=v.stack.trim().match(/\n( *(at )?)/);L=l&&l[1]||""}return`
18
+ `+L+e}}var Ge=!1,Me;{var tr=typeof WeakMap=="function"?WeakMap:Map;Me=new tr}function qe(e,r){if(!e||Ge)return"";{var n=Me.get(e);if(n!==void 0)return n}var l;Ge=!0;var v=Error.prepareStackTrace;Error.prepareStackTrace=void 0;var b;b=F.current,F.current=null,Ie();try{if(r){var m=function(){throw Error()};if(Object.defineProperty(m.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(m,[])}catch(D){l=D}Reflect.construct(e,[],m)}else{try{m.call()}catch(D){l=D}e.call(m.prototype)}}else{try{throw Error()}catch(D){l=D}e()}}catch(D){if(D&&l&&typeof D.stack=="string"){for(var p=D.stack.split(`
19
+ `),k=l.stack.split(`
20
+ `),P=p.length-1,x=k.length-1;P>=1&&x>=0&&p[P]!==k[x];)x--;for(;P>=1&&x>=0;P--,x--)if(p[P]!==k[x]){if(P!==1||x!==1)do if(P--,x--,x<0||p[P]!==k[x]){var q=`
21
+ `+p[P].replace(" at new "," at ");return e.displayName&&q.includes("<anonymous>")&&(q=q.replace("<anonymous>",e.displayName)),typeof e=="function"&&Me.set(e,q),q}while(P>=1&&x>=0);break}}}finally{Ge=!1,F.current=b,ze(),Error.prepareStackTrace=v}var Fe=e?e.displayName||e.name:"",Pe=Fe?y(Fe):"";return typeof e=="function"&&Me.set(e,Pe),Pe}function ae(e,r,n){return qe(e,!1)}function nr(e){var r=e.prototype;return!!(r&&r.isReactComponent)}function Se(e,r,n){if(e==null)return"";if(typeof e=="function")return qe(e,nr(e));if(typeof e=="string")return y(e);switch(e){case T:return y("Suspense");case w:return y("SuspenseList")}if(typeof e=="object")switch(e.$$typeof){case _:return ae(e.render);case M:return Se(e.type,r,n);case j:{var l=e,v=l._payload,b=l._init;try{return Se(b(v),r,n)}catch{}}}return""}var we=Object.prototype.hasOwnProperty,He={},Ye=G.ReactDebugCurrentFrame;function Re(e){if(e){var r=e._owner,n=Se(e.type,e._source,r?r.type:null);Ye.setExtraStackFrame(n)}else Ye.setExtraStackFrame(null)}function Je(e,r,n,l,v){{var b=Function.call.bind(we);for(var m in e)if(b(e,m)){var p=void 0;try{if(typeof e[m]!="function"){var k=Error((l||"React class")+": "+n+" type `"+m+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+typeof e[m]+"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");throw k.name="Invariant Violation",k}p=e[m](r,m,l,n,null,"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED")}catch(P){p=P}p&&!(p instanceof Error)&&(Re(v),E("%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).",l||"React class",n,m,typeof p),Re(null)),p instanceof Error&&!(p.message in He)&&(He[p.message]=!0,Re(v),E("Failed %s type: %s",n,p.message),Re(null))}}}var Oe=Array.isArray;function X(e){return Oe(e)}function Be(e){{var r=typeof Symbol=="function"&&Symbol.toStringTag,n=r&&e[Symbol.toStringTag]||e.constructor.name||"Object";return n}}function ar(e){try{return Xe(e),!1}catch{return!0}}function Xe(e){return""+e}function Ke(e){if(ar(e))return E("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.",Be(e)),Xe(e)}var _e=G.ReactCurrentOwner,je={key:!0,ref:!0,__self:!0,__source:!0},ie,Ve;function pe(e){if(we.call(e,"ref")){var r=Object.getOwnPropertyDescriptor(e,"ref").get;if(r&&r.isReactWarning)return!1}return e.ref!==void 0}function ir(e){if(we.call(e,"key")){var r=Object.getOwnPropertyDescriptor(e,"key").get;if(r&&r.isReactWarning)return!1}return e.key!==void 0}function oe(e,r){typeof e.ref=="string"&&_e.current}function Ze(e,r){{var n=function(){ie||(ie=!0,E("%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://reactjs.org/link/special-props)",r))};n.isReactWarning=!0,Object.defineProperty(e,"key",{get:n,configurable:!0})}}function Qe(e,r){{var n=function(){Ve||(Ve=!0,E("%s: `ref` 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://reactjs.org/link/special-props)",r))};n.isReactWarning=!0,Object.defineProperty(e,"ref",{get:n,configurable:!0})}}var Ue=function(e,r,n,l,v,b,m){var p={$$typeof:s,type:e,key:r,ref:n,props:m,_owner:b};return p._store={},Object.defineProperty(p._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:!1}),Object.defineProperty(p,"_self",{configurable:!1,enumerable:!1,writable:!1,value:l}),Object.defineProperty(p,"_source",{configurable:!1,enumerable:!1,writable:!1,value:v}),Object.freeze&&(Object.freeze(p.props),Object.freeze(p)),p};function er(e,r,n,l,v){{var b,m={},p=null,k=null;n!==void 0&&(Ke(n),p=""+n),ir(r)&&(Ke(r.key),p=""+r.key),pe(r)&&(k=r.ref,oe(r,v));for(b in r)we.call(r,b)&&!je.hasOwnProperty(b)&&(m[b]=r[b]);if(e&&e.defaultProps){var P=e.defaultProps;for(b in P)m[b]===void 0&&(m[b]=P[b])}if(p||k){var x=typeof e=="function"?e.displayName||e.name||"Unknown":e;p&&Ze(m,x),k&&Qe(m,x)}return Ue(e,p,k,v,l,_e.current,m)}}var Ce=G.ReactCurrentOwner,$e=G.ReactDebugCurrentFrame;function se(e){if(e){var r=e._owner,n=Se(e.type,e._source,r?r.type:null);$e.setExtraStackFrame(n)}else $e.setExtraStackFrame(null)}var o;o=!1;function c(e){return typeof e=="object"&&e!==null&&e.$$typeof===s}function u(){{if(Ce.current){var e=ne(Ce.current.type);if(e)return`
22
22
 
23
- Check the render method of \``+e+"`."}return""}}function O(e){return""}var v={};function A(e){{var t=m();if(!t){var r=typeof e=="string"?e:e.displayName||e.name;r&&(t=`
23
+ Check the render method of \``+e+"`."}return""}}function S(e){return""}var h={};function ce(e){{var r=u();if(!r){var n=typeof e=="string"?e:e.displayName||e.name;n&&(r=`
24
24
 
25
- Check the top-level render call using <`+r+">.")}return t}}function R(e,t){{if(!e._store||e._store.validated||e.key!=null)return;e._store.validated=!0;var r=A(t);if(v[r])return;v[r]=!0;var s="";e&&e._owner&&e._owner!==n.current&&(s=" It was passed a child from "+g(e._owner.type)+"."),o(e),_('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',r,s),o(null)}}function B(e,t){{if(typeof e!="object")return;if(Ce(e))for(var r=0;r<e.length;r++){var s=e[r];i(s)&&R(s,t)}else if(i(e))e._store&&(e._store.validated=!0);else if(e){var h=ee(e);if(typeof h=="function"&&h!==e.entries)for(var d=h.call(e),l;!(l=d.next()).done;)i(l.value)&&R(l.value,t)}}}function V(e){{var t=e.type;if(t==null||typeof t=="string")return;var r;if(typeof t=="function")r=t.propTypes;else if(typeof t=="object"&&(t.$$typeof===P||t.$$typeof===M))r=t.propTypes;else return;if(r){var s=g(t);rt(r,e.props,"prop",s,e)}else if(t.PropTypes!==void 0&&!c){c=!0;var h=g(t);_("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?",h||"Unknown")}typeof t.getDefaultProps=="function"&&!t.getDefaultProps.isReactClassApproved&&_("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.")}}function le(e){{for(var t=Object.keys(e.props),r=0;r<t.length;r++){var s=t[r];if(s!=="children"&&s!=="key"){o(e),_("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.",s),o(null);break}}e.ref!==null&&(o(e),_("Invalid attribute `ref` supplied to `React.Fragment`."),o(null))}}var j={};function Y(e,t,r,s,h,d){{var l=ct(e);if(!l){var f="";(e===void 0||typeof e=="object"&&e!==null&&Object.keys(e).length===0)&&(f+=" You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.");var C=O();C?f+=C:f+=m();var b;e===null?b="null":Ce(e)?b="array":e!==void 0&&e.$$typeof===T?(b="<"+(g(e.type)||"Unknown")+" />",f=" Did you accidentally export a JSX literal instead of a component?"):b=typeof e,_("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s",b,f)}var x=He(e,t,r,h,d);if(x==null)return x;if(l){var N=t.children;if(N!==void 0)if(s)if(Ce(N)){for(var Me=0;Me<N.length;Me++)B(N[Me],e);Object.freeze&&Object.freeze(N)}else _("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 B(N,e)}if(oe.call(t,"key")){var ge=g(e),F=Object.keys(t).filter(function(mt){return mt!=="key"}),at=F.length>0?"{key: someKey, "+F.join(": ..., ")+": ...}":"{key: someKey}";if(!j[ge+at]){var vt=F.length>0?"{"+F.join(": ..., ")+": ...}":"{}";_(`A props object containing a "key" prop is being spread into JSX:
25
+ Check the top-level render call using <`+n+">.")}return r}}function ke(e,r){{if(!e._store||e._store.validated||e.key!=null)return;e._store.validated=!0;var n=ce(r);if(h[n])return;h[n]=!0;var l="";e&&e._owner&&e._owner!==Ce.current&&(l=" It was passed a child from "+ne(e._owner.type)+"."),se(e),E('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',n,l),se(null)}}function W(e,r){{if(typeof e!="object")return;if(X(e))for(var n=0;n<e.length;n++){var l=e[n];c(l)&&ke(l,r)}else if(c(e))e._store&&(e._store.validated=!0);else if(e){var v=z(e);if(typeof v=="function"&&v!==e.entries)for(var b=v.call(e),m;!(m=b.next()).done;)c(m.value)&&ke(m.value,r)}}}function Q(e){{var r=e.type;if(r==null||typeof r=="string")return;var n;if(typeof r=="function")n=r.propTypes;else if(typeof r=="object"&&(r.$$typeof===_||r.$$typeof===M))n=r.propTypes;else return;if(n){var l=ne(r);Je(n,e.props,"prop",l,e)}else if(r.PropTypes!==void 0&&!o){o=!0;var v=ne(r);E("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?",v||"Unknown")}typeof r.getDefaultProps=="function"&&!r.getDefaultProps.isReactClassApproved&&E("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.")}}function le(e){{for(var r=Object.keys(e.props),n=0;n<r.length;n++){var l=r[n];if(l!=="children"&&l!=="key"){se(e),E("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.",l),se(null);break}}e.ref!==null&&(se(e),E("Invalid attribute `ref` supplied to `React.Fragment`."),se(null))}}var Ae={};function Ee(e,r,n,l,v,b){{var m=te(e);if(!m){var p="";(e===void 0||typeof e=="object"&&e!==null&&Object.keys(e).length===0)&&(p+=" You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.");var k=S();k?p+=k:p+=u();var P;e===null?P="null":X(e)?P="array":e!==void 0&&e.$$typeof===s?(P="<"+(ne(e.type)||"Unknown")+" />",p=" Did you accidentally export a JSX literal instead of a component?"):P=typeof e,E("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s",P,p)}var x=er(e,r,n,v,b);if(x==null)return x;if(m){var q=r.children;if(q!==void 0)if(l)if(X(q)){for(var Fe=0;Fe<q.length;Fe++)W(q[Fe],e);Object.freeze&&Object.freeze(q)}else E("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 W(q,e)}if(we.call(r,"key")){var Pe=ne(e),D=Object.keys(r).filter(function(Mr){return Mr!=="key"}),or=D.length>0?"{key: someKey, "+D.join(": ..., ")+": ...}":"{key: someKey}";if(!Ae[Pe+or]){var Tr=D.length>0?"{"+D.join(": ..., ")+": ...}":"{}";E(`A props object containing a "key" prop is being spread into JSX:
26
26
  let props = %s;
27
27
  <%s {...props} />
28
28
  React keys must be passed directly to JSX without using spread:
29
29
  let props = %s;
30
- <%s key={someKey} {...props} />`,at,ge,vt,ge),j[ge+at]=!0}}return e===y?le(x):V(x),x}}function U(e,t,r){return Y(e,t,r,!0)}function Xe(e,t,r){return Y(e,t,r,!1)}var qe=Xe,Je=U;Se.Fragment=y,Se.jsx=qe,Se.jsxs=Je}()),Se}process.env.NODE_ENV==="production"?Ke.exports=dt():Ke.exports=ht();var st=Ke.exports;const pt=({text:z="AI",particleCount:T=24e3,particleSize:$=.01,primaryColor:y={r:.396,g:.239,b:.82},secondaryColor:k={r:.537,g:.239,b:.82},backgroundColor:be="#000000",transparent:ue=!1,morphDuration:J=2.5,rotationSpeed:P=.4,hoverIntensity:K=.05,lightningIntensity:w=1,lightningColor:M=null,zapSpread:H=.7,zapWidth:fe=.02,cameraDistance:Oe=5.5,globeOpacity:Le=.08,globeColor:ee=null,showGlobe:te=!0,glowEffect:_=!0,className:Ze="",style:Qe={}})=>{const We=q.useRef(null),ye=q.useRef(null);return q.useRef([]),q.useEffect(()=>{const E=We.current;if(!E){console.error("ShapeParticleText: Canvas element not found");return}let de=!0;const xe=[];return(()=>{var $e,He;if(!de)return;const ie=new u.Scene,re=new u.PerspectiveCamera(50,E.offsetWidth/E.offsetHeight,.1,1e3);let g;try{const n={alpha:!0,antialias:!0,powerPreference:"default"},a=E.getContext("webgl2",n)||E.getContext("webgl",n)||E.getContext("experimental-webgl",n);if(!a){console.error("ShapeParticleText: WebGL not supported in this environment");return}const o=(c,i)=>{const m=Object.getOwnPropertyDescriptor(c,i);return m&&!m.writable&&!m.configurable};if(!a.getShaderPrecisionFormat._isPatched){const c=a.getShaderPrecisionFormat,i=function(...m){return{rangeMin:127,rangeMax:127,precision:23}};i._isPatched=!0,Object.defineProperty(a,"getShaderPrecisionFormat",{value:i,configurable:!0})}if(!a.getParameter._isPatched){const c=a.getParameter,i=function(...m){let O=null;try{O=c.apply(a,m)}catch{}const v=m[0];return O??(v===7938?"WebGL 1.0 (Three.js Mock)":v===35724?"WebGL GLSL ES 1.0 (Three.js Mock)":v===7936?"Three.js Mock Vendor":v===7937?"Three.js Mock Renderer":v===34921||v===34930||v===35657||v===35658?16:"")};i._isPatched=!0,Object.defineProperty(a,"getParameter",{value:i,configurable:!0})}if(!a.getExtension._isPatched){const c=a.getExtension,i=function(...m){let O=null;try{O=c.apply(a,m)}catch{}return O===null&&m[0]==="WEBGL_debug_renderer_info"?null:O};i._isPatched=!0,Object.defineProperty(a,"getExtension",{value:i,configurable:!0})}g=new u.WebGLRenderer({canvas:E,context:a,precision:"mediump",...n}),g.capabilities&&(g.capabilities.isWebGL2||(g.capabilities.isWebGL2=!0),g.capabilities.precision||(g.capabilities.precision="mediump"))}catch(n){console.warn("ShapeParticleText: Failed to initialize custom context renderer, attempting hard fallback...",n);try{g=new u.WebGLRenderer({canvas:E})}catch(a){console.error("ShapeParticleText: Fatal error initializing WebGL renderer:",a);return}}g.setSize(E.offsetWidth,E.offsetHeight),g.setPixelRatio(Math.min(window.devicePixelRatio,2)),g.setClearColor(0,0);let D=null;if(te){const n=new u.SphereGeometry(2,48,48);let a;ee?a=typeof ee=="string"?new u.Color(ee):new u.Color(ee.r,ee.g,ee.b):a=new u.Color(y.r,y.g,y.b);const o=new u.MeshBasicMaterial({color:a,wireframe:!0,transparent:!0,opacity:Le});D=new u.Mesh(n,o),ie.add(D)}const L=new u.Group,he=new Float32Array(T*3),W=new Float32Array(T*3),je=new Float32Array(T),we=[],Ee=[],G=[],S=[];let p=0;for(let n=0;n<T;n++){const a=n<T/2?-1:1,o=Math.random()*Math.PI,c=Math.random()*Math.PI*2,i=1.4+Math.random()*.3,m=1.2+Math.random()*.2,O=1+Math.random()*.2;let v=i*Math.sin(o)*Math.cos(c),A=m*Math.sin(o)*Math.sin(c),R=O*Math.cos(o);v=v*.85+a*.35;const B=(Math.sin(o*8)*Math.cos(c*6)+Math.sin(o*12)*Math.sin(c*8))*.12,V=Math.sqrt(v*v+A*A+R*R);V>.1&&(v+=B*(v/V),A+=B*(A/V),R+=B*(R/V));const le=Math.sqrt(v*v+A*A+R*R);if(le<1||le>2||a===-1&&v>-.15||a===1&&v<.15)continue;const j=new u.Vector3(v,A,R);j.x<0?we.push(j.clone()):Ee.push(j.clone()),he[p*3]=j.x,he[p*3+1]=j.y,he[p*3+2]=j.z,G.push(j.x,j.y,j.z);const Y=(A+m)/(m*2);if(Y<.3)W[p*3]=y.r*.5+Y*.4,W[p*3+1]=y.g*1+Y*.05,W[p*3+2]=y.b*1+Y*.05;else if(Y<.6){const U=(Y-.3)/.3;W[p*3]=(y.r*(1-U)+k.r*U)*1.1,W[p*3+1]=(y.g*(1-U)+k.g*U)*1.1,W[p*3+2]=(y.b*(1-U)+k.b*U)*1.1}else W[p*3]=k.r*1,W[p*3+1]=k.g*1,W[p*3+2]=k.b*1;je[p]=Math.random()*1.5+.8,p++}const I=((n,a=1.5)=>{const o=n&&n.trim().length>0?n:"AI",c=document.createElement("canvas"),i=c.getContext("2d");c.width=1024,c.height=512,i.fillStyle="white",i.textAlign="center",i.textBaseline="middle";let m=350;i.font=`bold ${m}px Arial`;const O=c.width*.85;let v=i.measureText(o);for(;(v.width>O||m>c.height*.7)&&m>20;)m-=10,i.font=`bold ${m}px Arial`,v=i.measureText(o);i.fillText(o,c.width/2,c.height/2);const A=i.getImageData(0,0,c.width,c.height),R=[],B=3,V=220;let le=1/0,j=-1/0,Y=1/0,U=-1/0;for(let r=0;r<c.height;r+=B)for(let s=0;s<c.width;s+=B){const h=(Math.floor(r)*c.width+Math.floor(s))*4;if(A.data[h+3]>160){const d=(s-c.width/2)/V*a,l=-(r-c.height/2)/V*a,f=(Math.random()-.5)*.25;R.push({x:d,y:l,z:f}),d<le&&(le=d),d>j&&(j=d),l<Y&&(Y=l),l>U&&(U=l)}}const Xe=j-le,qe=U-Y,Je=3.2,e=2.5;let t=1;return Xe>Je&&(t=Je/Xe),qe*t>e&&(t=e/qe),t<1&&R.forEach(r=>{r.x*=t,r.y*=t,r.z*=t}),R})(z,1.8);if(I.length>0)if(I.length>p){const n=I.length/p;for(let a=0;a<p;a++){const o=Math.floor(a*n),c=I[Math.min(o,I.length-1)];S.push(c.x,c.y,c.z)}}else for(let n=0;n<p;n++)if(n<I.length)S.push(I[n].x,I[n].y,I[n].z);else{const a=I[Math.floor(Math.random()*I.length)];S.push(a.x+(Math.random()-.5)*.5,a.y+(Math.random()-.5)*.5,a.z+(Math.random()-.5)*.3)}else for(let n=0;n<p;n++)S.push(0,0,0);const ke=he.slice(0,p*3),Ae=W.slice(0,p*3),Re=je.slice(0,p),X=new u.BufferGeometry;X.setAttribute("position",new u.BufferAttribute(ke,3)),X.setAttribute("color",new u.BufferAttribute(Ae,3)),X.setAttribute("size",new u.BufferAttribute(Re,1)),X.setDrawRange(0,p);const Pe=new u.PointsMaterial({size:$,vertexColors:!0,transparent:!0,opacity:1,blending:_?u.AdditiveBlending:u.NormalBlending,sizeAttenuation:!0}),et=new u.Points(X,Pe);L.add(et),ie.add(L);const Ge=new u.Color(k.r,k.g,k.b),tt=new u.LineBasicMaterial({color:Ge,transparent:!0,opacity:.2}),Ie=new u.Group,pe=we.length,oe=Ee.length;if(pe>0&&oe>0)for(let n=0;n<80;n++){const a=($e=we[Math.floor(Math.random()*pe)])==null?void 0:$e.clone(),o=(He=Ee[Math.floor(Math.random()*oe)])==null?void 0:He.clone();if(!a||!o)continue;const c=new u.BufferGeometry().setFromPoints([a,o]),i=new u.Line(c,tt);Ie.add(i)}L.add(Ie);const ve=new u.Group;L.add(ve);const Z=[];let se=0;const rt=6,Ye=n=>new u.Vector3((Math.random()-.5)*n,(Math.random()-.5)*n,(Math.random()-.5)*n),Ce=()=>{if(!de||!p)return;const n=Math.floor(Math.random()*p),a=Math.floor(Math.random()*p),o=X.attributes.position.array,c=new u.Vector3(o[n*3],o[n*3+1],o[n*3+2]),i=new u.Vector3(o[a*3],o[a*3+1],o[a*3+2]);if(c.lengthSq()<.1||i.lengthSq()<.1||c.distanceToSquared(i)<.5)return;const m=c.clone().lerp(i,.3).add(Ye(H)),O=c.clone().lerp(i,.7).add(Ye(H)),v=new u.CatmullRomCurve3([c,m,O,i]),A=new u.TubeGeometry(v,12,fe,4,!1);let R;M?M.r!==void 0?R=new u.Color(M.r,M.g,M.b):R=new u.Color(M):R=new u.Color().setHSL(.7+Math.random()*.08,1,.7+Math.random()*.15);const B=new u.MeshBasicMaterial({color:R,transparent:!0,opacity:.85,blending:u.AdditiveBlending}),V=new u.Mesh(A,B);ve.add(V),Z.push({line:V,material:B,life:0,maxLife:.5+Math.random()*.9,flickerSpeed:18+Math.random()*20,phase:Math.random()*Math.PI*2})},nt=new u.Clock;re.position.set(0,0,Oe);const _e={x:0,y:0},me={x:0,y:0},ne={x:0,y:0},Fe=n=>{if(!E)return;const a=E.getBoundingClientRect();_e.x=(n.clientX-a.left)/a.width*2-1,_e.y=-((n.clientY-a.top)/a.height)*2+1,me.y=_e.x*.3*(K/.05),me.x=_e.y*.2*(K/.05)};E.addEventListener("mousemove",Fe),xe.push(()=>{E.removeEventListener("mousemove",Fe)});let ce=0;const ze=.08;let Q=0,Be=1;const Ve=3;let De=Ve;function Ue(){if(!de)return;ye.current=requestAnimationFrame(Ue);const n=nt.getDelta();if(ce+=n,ne.x+=(me.x-ne.x)*.05,ne.y+=(me.y-ne.y)*.05,D&&(D.rotation.y+=n*.1,D.rotation.x=Math.sin(ce*.3)*.03),L.rotation.y=Math.sin(ce*.4)*P+ne.y,L.rotation.x=Math.sin(ce*.25)*ze+ne.x,L.rotation.z=Math.cos(ce*.15)*.015,De-=n,De<=0){Q+=n/J,Q>=1&&(Q=0,Be*=-1,De=Ve);const a=Q<.5?2*Q*Q:1-Math.pow(-2*Q+2,2)/2,o=X.attributes.position;for(let c=0;c<p;c++){const i=c*3;Be===1?(o.array[i]=G[i]+(S[i]-G[i])*a,o.array[i+1]=G[i+1]+(S[i+1]-G[i+1])*a,o.array[i+2]=G[i+2]+(S[i+2]-G[i+2])*a):(o.array[i]=S[i]+(G[i]-S[i])*a,o.array[i+1]=S[i+1]+(G[i+1]-S[i+1])*a,o.array[i+2]=S[i+2]+(G[i+2]-S[i+2])*a)}o.needsUpdate=!0}se-=n,w>0&&se<=0&&Z.length<rt*w&&(Ce(),se=(.12+Math.random()*.25)/Math.max(.1,w));for(let a=Z.length-1;a>=0;a--){const o=Z[a];if(!o||!o.material)continue;o.life+=n;const c=o.life/o.maxLife,i=Math.pow(Math.max(0,1-c),1.5),m=.6+Math.sin(ce*o.flickerSpeed+o.phase)*.4;o.material.opacity=Math.max(0,i*m*Math.min(1,w)),o.life>=o.maxLife&&(ve.remove(o.line),o.line.geometry&&o.line.geometry.dispose(),o.material&&o.material.dispose(),Z.splice(a,1))}g.render(ie,re)}Ue();const Ne=()=>{if(!de||!E)return;const n=E.offsetWidth,a=E.offsetHeight;n===0||a===0||(re.aspect=n/a,re.updateProjectionMatrix(),g.setSize(n,a),g.setPixelRatio(Math.min(window.devicePixelRatio*1.5,3)))};window.addEventListener("resize",Ne),xe.push(()=>{window.removeEventListener("resize",Ne),Z.forEach(n=>{n.line&&(ve.remove(n.line),n.line.geometry&&n.line.geometry.dispose(),n.material&&n.material.dispose())}),Z.length=0,ie.traverse(n=>{n.geometry&&n.geometry.dispose(),n.material&&(Array.isArray(n.material)?n.material.forEach(a=>a.dispose()):n.material.dispose())}),g.dispose()})})(),()=>{de=!1,ye.current&&(cancelAnimationFrame(ye.current),ye.current=null),xe.forEach(ie=>{try{ie()}catch(re){console.error("Cleanup error:",re)}})}},[z,T,$,y,k,J,P,K,w,M,H,fe,Oe,Le,ee,te,_]),st.jsx("div",{className:Ze,style:{position:"relative",width:"100%",height:"100%",backgroundColor:ue?"transparent":be,...Qe},children:st.jsx("canvas",{ref:We,style:{display:"block",width:"100%",height:"100%",outline:"none"}})})};ae.ShapeParticleText=pt,Object.defineProperty(ae,Symbol.toStringTag,{value:"Module"})});
30
+ <%s key={someKey} {...props} />`,or,Pe,Tr,Pe),Ae[Pe+or]=!0}}return e===i?le(x):Q(x),x}}function rr(e,r,n){return Ee(e,r,n,!0)}function K(e,r,n){return Ee(e,r,n,!1)}var me=K,ve=rr;We.Fragment=i,We.jsx=me,We.jsxs=ve})()),We}var lr;function yr(){return lr||(lr=1,process.env.NODE_ENV==="production"?Ne.exports=vr():Ne.exports=gr()),Ne.exports}var ur=yr();const br=t=>t?{error:(...s)=>console.error(...s),warn:(...s)=>console.warn(...s)}:{error:()=>{},warn:()=>{}},fr=(t,s)=>{if(!t)return s;if(typeof t=="string"){const f=new d.Color(t);return{r:f.r,g:f.g,b:f.b}}return typeof t=="object"&&typeof t.r=="number"?t:s},wr=t=>{if(!(!t||t.__shapeParticleTextPatched)){if(Object.defineProperty(t,"__shapeParticleTextPatched",{value:!0,configurable:!0}),typeof t.getShaderPrecisionFormat=="function"&&!t.getShaderPrecisionFormat.__shapeParticleTextPatched){const s=t.getShaderPrecisionFormat.bind(t),f=(...i)=>{try{const a=s(...i);if(a&&typeof a.precision=="number")return a}catch{}return{rangeMin:127,rangeMax:127,precision:23}};Object.defineProperty(f,"__shapeParticleTextPatched",{value:!0}),Object.defineProperty(t,"getShaderPrecisionFormat",{value:f,configurable:!0})}if(typeof t.getParameter=="function"&&!t.getParameter.__shapeParticleTextPatched){const s=t.getParameter.bind(t),f=(...i)=>{let a;try{a=s(...i)}catch{a=void 0}const g=i[0];return a??(g===7938?"WebGL 1.0 (Three.js Mock)":g===35724?"WebGL GLSL ES 1.0 (Three.js Mock)":g===7936?"Three.js Mock Vendor":g===7937?"Three.js Mock Renderer":g===34921||g===34930||g===35657||g===35658?16:"")};Object.defineProperty(f,"__shapeParticleTextPatched",{value:!0}),Object.defineProperty(t,"getParameter",{value:f,configurable:!0})}if(typeof t.getExtension=="function"&&!t.getExtension.__shapeParticleTextPatched){const s=t.getExtension.bind(t),f=(...i)=>{let a;try{a=s(...i)}catch{a=null}return a===null&&i[0]==="WEBGL_debug_renderer_info"?null:a};Object.defineProperty(f,"__shapeParticleTextPatched",{value:!0}),Object.defineProperty(t,"getExtension",{value:f,configurable:!0})}}},dr=({canvas:t,context:s,contextAttributes:f,log:i})=>{try{const a=new d.WebGLRenderer({canvas:t,context:s,precision:"mediump",...f});return a.capabilities&&(a.capabilities.isWebGL2||(a.capabilities.isWebGL2=!0),a.capabilities.precision||(a.capabilities.precision="mediump")),a}catch(a){return i.warn("ShapeParticleText: Failed to initialize WebGL renderer",a),null}},Rr=({canvas:t,context:s,contextAttributes:f,log:i})=>{const a=dr({canvas:t,context:s,contextAttributes:f,log:{warn:()=>{}}});if(a)return a;wr(s);const g=dr({canvas:t,context:s,contextAttributes:f,log:i});if(g)return g;i.warn("ShapeParticleText: Failed to initialize custom context renderer, attempting hard fallback...");try{return new d.WebGLRenderer({canvas:t})}catch(O){return i.error("ShapeParticleText: Fatal error initializing WebGL renderer:",O),null}},_r=(t,s=1.5)=>{const f=t&&t.trim().length>0?t:"AI",i=document.createElement("canvas"),a=i.getContext("2d");i.width=1024,i.height=512,a.fillStyle="white",a.textAlign="center",a.textBaseline="middle";let g=350;a.font=`bold ${g}px Arial`;const O=i.width*.85;let C=a.measureText(f);for(;(C.width>O||g>i.height*.7)&&g>20;)g-=10,a.font=`bold ${g}px Arial`,C=a.measureText(f);a.fillText(f,i.width/2,i.height/2);const _=a.getImageData(0,0,i.width,i.height),T=[],w=3,M=220;let j=1/0,H=-1/0,re=1/0,fe=-1/0;for(let Y=0;Y<i.height;Y+=w)for(let de=0;de<i.width;de+=w){const xe=(Math.floor(Y)*i.width+Math.floor(de))*4;if(_.data[xe+3]>160){const B=(de-i.width/2)/M*s,R=-(Y-i.height/2)/M*s,te=(Math.random()-.5)*.25;T.push({x:B,y:R,z:te}),B<j&&(j=B),B>H&&(H=B),R<re&&(re=R),R>fe&&(fe=R)}}const z=H-j,G=fe-re,E=3.2,ge=2.5;let J=1;return z>E&&(J=E/z),G*J>ge&&(J=ge/G),J<1&&T.forEach(Y=>{Y.x*=J,Y.y*=J,Y.z*=J}),T},Er=({textParticlesData:t,actualCount:s})=>{const f=[];if(t.length>0)if(t.length>s){const i=t.length/s;for(let a=0;a<s;a++){const g=Math.floor(a*i),O=t[Math.min(g,t.length-1)];f.push(O.x,O.y,O.z)}}else for(let i=0;i<s;i++)if(i<t.length)f.push(t[i].x,t[i].y,t[i].z);else{const a=t[Math.floor(Math.random()*t.length)];f.push(a.x+(Math.random()-.5)*.5,a.y+(Math.random()-.5)*.5,a.z+(Math.random()-.5)*.3)}else for(let i=0;i<s;i++)f.push(0,0,0);return f},hr=t=>new d.Vector3((Math.random()-.5)*t,(Math.random()-.5)*t,(Math.random()-.5)*t),Pr=({start:t,end:s,zapSpread:f,zapWidth:i,lightningColor:a})=>{const g=t.clone().lerp(s,.3).add(hr(f)),O=t.clone().lerp(s,.7).add(hr(f)),C=new d.CatmullRomCurve3([t,g,O,s]),_=new d.TubeGeometry(C,12,i,4,!1);let T;a?a.r!==void 0?T=new d.Color(a.r,a.g,a.b):T=new d.Color(a):T=new d.Color().setHSL(.7+Math.random()*.08,1,.7+Math.random()*.15);const w=new d.MeshBasicMaterial({color:T,transparent:!0,opacity:.85,blending:d.AdditiveBlending}),M=new d.Mesh(_,w),j={line:M,material:w,life:0,maxLife:.5+Math.random()*.9,flickerSpeed:18+Math.random()*20,phase:Math.random()*Math.PI*2};return{line:M,material:w,segment:j}},xr=({text:t="AI",particleCount:s=24e3,particleSize:f=.01,primaryColor:i={r:.396,g:.239,b:.82},secondaryColor:a={r:.537,g:.239,b:.82},backgroundColor:g="#000000",transparent:O=!1,morphDuration:C=2.5,rotationSpeed:_=.4,hoverIntensity:T=.05,lightningIntensity:w=1,lightningColor:M=null,zapSpread:j=.7,zapWidth:H=.02,cameraDistance:re=5.5,globeOpacity:fe=.08,globeColor:z=null,showGlobe:G=!0,glowEffect:E=!0,debug:ge=!1,className:J="",style:Y={},...de})=>{const xe=ee.useRef(null),B=ee.useRef(null);return ee.useEffect(()=>{const R=xe.current,te=br(ge);if(!R){te.error("ShapeParticleText: Canvas element not found");return}let ye=!0;const Te=[];return(()=>{var $e,se;if(!ye)return;const A=new d.Scene,V=new d.PerspectiveCamera(50,R.offsetWidth/R.offsetHeight,.1,1e3);let U;try{const o={alpha:!0,antialias:!0,powerPreference:"default"};let c=null;try{c=R.getContext("webgl2",o)||R.getContext("webgl",o)||R.getContext("experimental-webgl",o)}catch{c=null}if(!c){te.error("ShapeParticleText: WebGL not supported in this environment");return}if(U=Rr({canvas:R,context:c,contextAttributes:o,log:te}),!U)return}catch(o){te.error("ShapeParticleText: Unexpected error initializing scene:",o);return}U.setSize(R.offsetWidth,R.offsetHeight),U.setPixelRatio(Math.min(window.devicePixelRatio,2)),U.setClearColor(0,0);const $=fr(i,{r:.396,g:.239,b:.82}),N=fr(a,{r:.537,g:.239,b:.82});let he=null;if(G){const o=new d.SphereGeometry(2,48,48);let c;z?c=typeof z=="string"?new d.Color(z):new d.Color(z.r,z.g,z.b):c=new d.Color($.r,$.g,$.b);const u=new d.MeshBasicMaterial({color:c,wireframe:!0,transparent:!0,opacity:fe});he=new d.Mesh(o,u),A.add(he)}const Z=new d.Group,be=new Float32Array(s*3),I=new Float32Array(s*3),De=new Float32Array(s),Ie=[],ze=[],F=[],L=[];let y=0;for(let o=0;o<s;o++){const c=o<s/2?-1:1,u=Math.random()*Math.PI,S=Math.random()*Math.PI*2,h=1.4+Math.random()*.3,ce=1.2+Math.random()*.2,ke=1+Math.random()*.2;let W=h*Math.sin(u)*Math.cos(S),Q=ce*Math.sin(u)*Math.sin(S),le=ke*Math.cos(u);W=W*.85+c*.35;const Ae=(Math.sin(u*8)*Math.cos(S*6)+Math.sin(u*12)*Math.sin(S*8))*.12,Ee=Math.sqrt(W*W+Q*Q+le*le);Ee>.1&&(W+=Ae*(W/Ee),Q+=Ae*(Q/Ee),le+=Ae*(le/Ee));const rr=Math.sqrt(W*W+Q*Q+le*le);if(rr<1||rr>2||c===-1&&W>-.15||c===1&&W<.15)continue;const K=new d.Vector3(W,Q,le);K.x<0?Ie.push(K.clone()):ze.push(K.clone()),be[y*3]=K.x,be[y*3+1]=K.y,be[y*3+2]=K.z,F.push(K.x,K.y,K.z);const me=(Q+ce)/(ce*2);if(me<.3)I[y*3]=$.r*.5+me*.4,I[y*3+1]=$.g*1+me*.05,I[y*3+2]=$.b*1+me*.05;else if(me<.6){const ve=(me-.3)/.3;I[y*3]=($.r*(1-ve)+N.r*ve)*1.1,I[y*3+1]=($.g*(1-ve)+N.g*ve)*1.1,I[y*3+2]=($.b*(1-ve)+N.b*ve)*1.1}else I[y*3]=N.r*1,I[y*3+1]=N.g*1,I[y*3+2]=N.b*1;De[y]=Math.random()*1.5+.8,y++}const Ge=_r(t,1.8);L.push(...Er({textParticlesData:Ge,actualCount:y}));const Me=be.slice(0,y*3),tr=I.slice(0,y*3),qe=De.slice(0,y),ae=new d.BufferGeometry;ae.setAttribute("position",new d.BufferAttribute(Me,3)),ae.setAttribute("color",new d.BufferAttribute(tr,3)),ae.setAttribute("size",new d.BufferAttribute(qe,1)),ae.setDrawRange(0,y);const nr=new d.PointsMaterial({size:f,vertexColors:!0,transparent:!0,opacity:1,blending:E?d.AdditiveBlending:d.NormalBlending,sizeAttenuation:!0}),Se=new d.Points(ae,nr);Z.add(Se),A.add(Z);const we=new d.Color(N.r,N.g,N.b),He=new d.LineBasicMaterial({color:we,transparent:!0,opacity:.2}),Ye=new d.Group,Re=Ie.length,Je=ze.length;if(Re>0&&Je>0)for(let o=0;o<80;o++){const c=($e=Ie[Math.floor(Math.random()*Re)])==null?void 0:$e.clone(),u=(se=ze[Math.floor(Math.random()*Je)])==null?void 0:se.clone();if(!c||!u)continue;const S=new d.BufferGeometry().setFromPoints([c,u]),h=new d.Line(S,He);Ye.add(h)}Z.add(Ye);const Oe=new d.Group;Z.add(Oe);const X=[];let Be=0;const ar=6,Xe=()=>{if(!ye||!y)return;const o=Math.floor(Math.random()*y),c=Math.floor(Math.random()*y),u=ae.attributes.position.array,S=new d.Vector3(u[o*3],u[o*3+1],u[o*3+2]),h=new d.Vector3(u[c*3],u[c*3+1],u[c*3+2]);if(S.lengthSq()<.1||h.lengthSq()<.1||S.distanceToSquared(h)<.5)return;const{line:ce,segment:ke}=Pr({start:S,end:h,zapSpread:j,zapWidth:H,lightningColor:M});Oe.add(ce),X.push(ke)},Ke=new d.Clock;V.position.set(0,0,re);const _e={x:0,y:0},je={x:0,y:0},ie={x:0,y:0},Ve=o=>{if(!R)return;const c=R.getBoundingClientRect();_e.x=(o.clientX-c.left)/c.width*2-1,_e.y=-((o.clientY-c.top)/c.height)*2+1,je.y=_e.x*.3*(T/.05),je.x=_e.y*.2*(T/.05)};R.addEventListener("mousemove",Ve),Te.push(()=>{R.removeEventListener("mousemove",Ve)});let pe=0;const ir=.08;let oe=0,Ze=1;const Qe=3;let Ue=Qe;function er(){if(!ye)return;B.current=requestAnimationFrame(er);const o=Ke.getDelta();if(pe+=o,ie.x+=(je.x-ie.x)*.05,ie.y+=(je.y-ie.y)*.05,he&&(he.rotation.y+=o*.1,he.rotation.x=Math.sin(pe*.3)*.03),Z.rotation.y=Math.sin(pe*.4)*_+ie.y,Z.rotation.x=Math.sin(pe*.25)*ir+ie.x,Z.rotation.z=Math.cos(pe*.15)*.015,Ue-=o,Ue<=0){oe+=o/C,oe>=1&&(oe=0,Ze*=-1,Ue=Qe);const c=oe<.5?2*oe*oe:1-Math.pow(-2*oe+2,2)/2,u=ae.attributes.position;for(let S=0;S<y;S++){const h=S*3;Ze===1?(u.array[h]=F[h]+(L[h]-F[h])*c,u.array[h+1]=F[h+1]+(L[h+1]-F[h+1])*c,u.array[h+2]=F[h+2]+(L[h+2]-F[h+2])*c):(u.array[h]=L[h]+(F[h]-L[h])*c,u.array[h+1]=L[h+1]+(F[h+1]-L[h+1])*c,u.array[h+2]=L[h+2]+(F[h+2]-L[h+2])*c)}u.needsUpdate=!0}Be-=o,w>0&&Be<=0&&X.length<ar*w&&(Xe(),Be=(.12+Math.random()*.25)/Math.max(.1,w));for(let c=X.length-1;c>=0;c--){const u=X[c];if(!u||!u.material)continue;u.life+=o;const S=u.life/u.maxLife,h=Math.pow(Math.max(0,1-S),1.5),ce=.6+Math.sin(pe*u.flickerSpeed+u.phase)*.4;u.material.opacity=Math.max(0,h*ce*Math.min(1,w)),u.life>=u.maxLife&&(Oe.remove(u.line),u.line.geometry&&u.line.geometry.dispose(),u.material&&u.material.dispose(),X.splice(c,1))}U.render(A,V)}er();const Ce=()=>{if(!ye||!R)return;const o=R.offsetWidth,c=R.offsetHeight;o===0||c===0||(V.aspect=o/c,V.updateProjectionMatrix(),U.setSize(o,c),U.setPixelRatio(Math.min(window.devicePixelRatio*1.5,3)))};window.addEventListener("resize",Ce),Te.push(()=>{window.removeEventListener("resize",Ce),X.forEach(o=>{o.line&&(Oe.remove(o.line),o.line.geometry&&o.line.geometry.dispose(),o.material&&o.material.dispose())}),X.length=0,A.traverse(o=>{o.geometry&&o.geometry.dispose(),o.material&&(Array.isArray(o.material)?o.material.forEach(c=>c.dispose()):o.material.dispose())}),U.dispose()})})(),()=>{ye=!1,B.current&&(cancelAnimationFrame(B.current),B.current=null),Te.forEach(A=>{try{A()}catch(V){te.error("Cleanup error:",V)}})}},[t,s,f,i,a,C,_,T,w,M,j,H,re,fe,z,G,E,ge]),ur.jsx("div",{...de,className:J,style:{position:"relative",width:"100%",height:"100%",backgroundColor:O?"transparent":g,...Y},children:ur.jsx("canvas",{ref:xe,style:{display:"block",width:"100%",height:"100%",outline:"none"}})})};ue.ShapeParticleText=xr,Object.defineProperty(ue,Symbol.toStringTag,{value:"Module"})}));
package/index.d.ts ADDED
@@ -0,0 +1,30 @@
1
+ import * as React from 'react'
2
+
3
+ export type RGBColor = { r: number; g: number; b: number }
4
+
5
+ export type Color = string | RGBColor
6
+
7
+ export interface ShapeParticleTextProps extends React.HTMLAttributes<HTMLDivElement> {
8
+ text?: string
9
+ particleCount?: number
10
+ particleSize?: number
11
+ primaryColor?: Color
12
+ secondaryColor?: Color
13
+ backgroundColor?: string
14
+ transparent?: boolean
15
+ morphDuration?: number
16
+ rotationSpeed?: number
17
+ hoverIntensity?: number
18
+ lightningIntensity?: number
19
+ lightningColor?: Color | null
20
+ zapSpread?: number
21
+ zapWidth?: number
22
+ cameraDistance?: number
23
+ globeOpacity?: number
24
+ globeColor?: Color | null
25
+ showGlobe?: boolean
26
+ glowEffect?: boolean
27
+ debug?: boolean
28
+ }
29
+
30
+ export const ShapeParticleText: React.FC<ShapeParticleTextProps>
package/package.json CHANGED
@@ -1,16 +1,19 @@
1
1
  {
2
2
  "name": "3d-shape-particle-text",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "Interactive 3D particle system morphing between brain shape and text, with lightning effects and full customization.",
5
5
  "main": "dist/3d-shape-particle-text.umd.js",
6
6
  "module": "dist/3d-shape-particle-text.es.js",
7
+ "types": "index.d.ts",
7
8
  "files": [
8
9
  "dist",
10
+ "index.d.ts",
9
11
  "README.md",
10
12
  "LICENSE"
11
13
  ],
12
14
  "exports": {
13
15
  ".": {
16
+ "types": "./index.d.ts",
14
17
  "import": "./dist/3d-shape-particle-text.es.js",
15
18
  "require": "./dist/3d-shape-particle-text.umd.js"
16
19
  }
@@ -41,15 +44,15 @@
41
44
  "license": "MIT",
42
45
  "repository": {
43
46
  "type": "git",
44
- "url": "https://github.com/mukes555/3d-shape-particle-text"
47
+ "url": "git+https://github.com/mukes555/3d-shape-particle-text.git"
45
48
  },
46
49
  "bugs": {
47
50
  "url": "https://github.com/mukes555/3d-shape-particle-text/issues"
48
51
  },
49
52
  "homepage": "https://github.com/mukes555/3d-shape-particle-text#readme",
50
53
  "peerDependencies": {
51
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0",
52
- "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0",
54
+ "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
55
+ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
53
56
  "three": "^0.128.0 || ^0.130.0 || ^0.140.0 || ^0.150.0 || ^0.160.0"
54
57
  },
55
58
  "devDependencies": {
@@ -57,6 +60,6 @@
57
60
  "react": "^18.2.0",
58
61
  "react-dom": "^18.2.0",
59
62
  "three": "^0.160.0",
60
- "vite": "^5.0.0"
63
+ "vite": "^6.1.7"
61
64
  }
62
65
  }