From 69c3872c7736e5790d3b4fd4264d4f8eae580209 Mon Sep 17 00:00:00 2001 From: Peter Hrynkow Date: Sat, 26 May 2018 23:46:25 -0700 Subject: [PATCH 1/2] Support a custom splitter function --- README.md | 13 +++++++-- ...ype_CircleType_Demo_6_demo__n6_0_phone.png | Bin 9522 -> 10760 bytes ...pe_CircleType_Demo_6_demo__n6_1_tablet.png | Bin 10923 -> 27715 bytes dist/circletype.min.js | 4 +-- package.json | 2 +- src/class.js | 19 ++++++++++-- src/utils/__tests__/splitNode-test.js | 27 ++++-------------- src/utils/splitNode.js | 15 ++++++---- 8 files changed, 45 insertions(+), 35 deletions(-) diff --git a/README.md b/README.md index e05cd97..86cf772 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,7 @@ A CircleType instance creates a circular text element. **Kind**: global class * [CircleType](#CircleType) - * [new CircleType(elem)](#new_CircleType_new) + * [new CircleType(elem, [splitter])](#new_CircleType_new) * [.radius(value)](#CircleType+radius) ⇒ [CircleType](#CircleType) * [.radius()](#CircleType+radius) ⇒ number * [.dir(value)](#CircleType+dir) ⇒ [CircleType](#CircleType) @@ -48,11 +48,12 @@ A CircleType instance creates a circular text element. -### new CircleType(elem) +### new CircleType(elem, [splitter]) | Param | Type | Description | | --- | --- | --- | | elem | HTMLElement | A target HTML element. | +| [splitter] | function | An optional function used to split the element's text content into individual characters | **Example** ```js @@ -61,6 +62,14 @@ const circleType = new CircleType(document.getElementById('myElement')); // Set the text radius and direction. Note: setter methods are chainable. circleType.radius(200).dir(-1); + +// Provide your own splitter function to handle emojis +// @see https://github.com/orling/grapheme-splitter +const splitter = new GraphemeSplitter() +new CircleType( + document.getElementById('myElement'), + splitter.splitGraphemes.bind(splitter) +); ``` diff --git a/backstop_data/bitmaps_reference/circletype_CircleType_Demo_6_demo__n6_0_phone.png b/backstop_data/bitmaps_reference/circletype_CircleType_Demo_6_demo__n6_0_phone.png index 571da7148058bc449684d65ba774f227937485d1..b7e66f35d5393d519414cd5d08ca321b557d173f 100644 GIT binary patch literal 10760 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 n2mOp~?zcSFT{iU%7&@ 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 literal 10923 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 h;0yo#xaJ;#0?r:n)(t)}},function(t,e){t.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},function(t,e){t.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},function(t,e){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++n+r).toString(36))}},function(t,e){t.exports={}},function(t,e,n){var r=n(24)("keys"),i=n(12);t.exports=function(t){return r[t]||(r[t]=i(t))}},function(t,e){t.exports=!1},function(t,e,n){var r=n(1),i=n(2),o=n(3),u=n(19),c=n(20),f=function(t,e,n){var a,s,l,p,h=t&f.F,d=t&f.G,v=t&f.S,y=t&f.P,_=t&f.B,m=d?r:v?r[e]||(r[e]={}):(r[e]||{}).prototype,g=d?i:i[e]||(i[e]={}),x=g.prototype||(g.prototype={});d&&(n=e);for(a in n)s=!h&&m&&void 0!==m[a],l=(s?m:n)[a],p=_&&s?c(l,r):y&&"function"==typeof l?c(Function.call,l):l,m&&u(m,a,l,t&f.U),g[a]!=l&&o(g,a,p),y&&x[a]!=l&&(x[a]=l)};r.core=i,f.F=1,f.G=2,f.S=4,f.P=8,f.B=16,f.W=32,f.U=64,f.R=128,t.exports=f},function(t,e){t.exports=function(t){try{return!!t()}catch(t){return!0}}},function(t,e,n){var r=n(10),i=n(1).document,o=r(i)&&r(i.createElement);t.exports=function(t){return o?i.createElement(t):{}}},function(t,e,n){var r=n(1),i=n(3),o=n(7),u=n(12)("src"),c=Function.toString,f=(""+c).split("toString");n(2).inspectSource=function(t){return c.call(t)},(t.exports=function(t,e,n,c){var a="function"==typeof n;a&&(o(n,"name")||i(n,"name",e)),t[e]!==n&&(a&&(o(n,u)||i(n,u,t[e]?""+t[e]:f.join(String(e)))),t===r?t[e]=n:c?t[e]?t[e]=n:i(t,e,n):(delete t[e],i(t,e,n)))})(Function.prototype,"toString",function(){return"function"==typeof this&&this[u]||c.call(this)})},function(t,e,n){var r=n(36);t.exports=function(t,e,n){if(r(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,r){return t.call(e,n,r)};case 3:return function(n,r,i){return t.call(e,n,r,i)}}return function(){return t.apply(e,arguments)}}},function(t,e,n){var r=n(42),i=n(9);t.exports=function(t){return r(i(t))}},function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},function(t,e,n){var r=n(8),i=Math.min;t.exports=function(t){return t>0?i(r(t),9007199254740991):0}},function(t,e,n){var r=n(2),i=n(1),o=i["__core-js_shared__"]||(i["__core-js_shared__"]={});(t.exports=function(t,e){return o[t]||(o[t]=void 0!==e?e:{})})("versions",[]).push({version:r.version,mode:n(15)?"pure":"global",copyright:"© 2018 Denis Pushkarev (zloirock.ru)"})},function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(t,e,n){var r=n(4).f,i=n(7),o=n(0)("toStringTag");t.exports=function(t,e,n){t&&!i(t=n?t:t.prototype,o)&&r(t,o,{configurable:!0,value:e})}},function(t,e,n){var r=n(9);t.exports=function(t){return Object(r(t))}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=Math.PI/180;e.default=function(t){return t*r}},function(t,e,n){"use strict";n(30);var r=n(54),i=function(t){return t&&t.__esModule?t:{default:t}}(r);t.exports=i.default},function(t,e,n){n(31),n(47),t.exports=n(2).Array.from},function(t,e,n){"use strict";var r=n(32)(!0);n(33)(String,"String",function(t){this._t=String(t),this._i=0},function(){var t,e=this._t,n=this._i;return n>=e.length?{value:void 0,done:!0}:(t=r(e,n),this._i+=t.length,{value:t,done:!1})})},function(t,e,n){var r=n(8),i=n(9);t.exports=function(t){return function(e,n){var o,u,c=String(i(e)),f=r(n),a=c.length;return f<0||f>=a?t?"":void 0:(o=c.charCodeAt(f),o<55296||o>56319||f+1===a||(u=c.charCodeAt(f+1))<56320||u>57343?t?c.charAt(f):o:t?c.slice(f,f+2):u-56320+(o-55296<<10)+65536)}}},function(t,e,n){"use strict";var r=n(15),i=n(16),o=n(19),u=n(3),c=n(13),f=n(37),a=n(26),s=n(46),l=n(0)("iterator"),p=!([].keys&&"next"in[].keys()),h=function(){return this};t.exports=function(t,e,n,d,v,y,_){f(n,e,d);var m,g,x,b=function(t){if(!p&&t in M)return M[t];switch(t){case"keys":case"values":return function(){return new n(this,t)}}return function(){return new n(this,t)}},O=e+" Iterator",w="values"==v,j=!1,M=t.prototype,S=M[l]||M["@@iterator"]||v&&M[v],P=S||b(v),A=v?w?b("entries"):P:void 0,T="Array"==e?M.entries||S:S;if(T&&(x=s(T.call(new t)))!==Object.prototype&&x.next&&(a(x,O,!0),r||"function"==typeof x[l]||u(x,l,h)),w&&S&&"values"!==S.name&&(j=!0,P=function(){return S.call(this)}),r&&!_||!p&&!j&&M[l]||u(M,l,P),c[e]=P,c[O]=h,v)if(m={values:w?P:b("values"),keys:y?P:b("keys"),entries:A},_)for(g in m)g in M||o(M,g,m[g]);else i(i.P+i.F*(p||j),e,m);return m}},function(t,e,n){t.exports=!n(6)&&!n(17)(function(){return 7!=Object.defineProperty(n(18)("div"),"a",{get:function(){return 7}}).a})},function(t,e,n){var r=n(10);t.exports=function(t,e){if(!r(t))return t;var n,i;if(e&&"function"==typeof(n=t.toString)&&!r(i=n.call(t)))return i;if("function"==typeof(n=t.valueOf)&&!r(i=n.call(t)))return i;if(!e&&"function"==typeof(n=t.toString)&&!r(i=n.call(t)))return i;throw TypeError("Can't convert object to primitive value")}},function(t,e){t.exports=function(t){if("function"!=typeof t)throw TypeError(t+" is not a function!");return t}},function(t,e,n){"use strict";var r=n(38),i=n(11),o=n(26),u={};n(3)(u,n(0)("iterator"),function(){return this}),t.exports=function(t,e,n){t.prototype=r(u,{next:i(1,n)}),o(t,e+" Iterator")}},function(t,e,n){var r=n(5),i=n(39),o=n(25),u=n(14)("IE_PROTO"),c=function(){},f=function(){var t,e=n(18)("iframe"),r=o.length;for(e.style.display="none",n(45).appendChild(e),e.src="javascript:",t=e.contentWindow.document,t.open(),t.write(" + +
@@ -31,175 +33,75 @@

Features

Download on GitHub

- - - -

Demos

Basic Arc

Here’s some curved text that flows clockwise.

Here’s some curved text flowing clockwise.

- <h2 id="demo1">Here’s some curved text flowing clockwise.</h2> -new CircleType(document.getElementById('demo1')).radius(384); - - - - - +
// <h2 id="demo1">Here’s some curved text flowing clockwise.</h2>
+new CircleType(document.getElementById('demo1'))
+  .radius(384);

Reversed Arc

By setting dir to -1, the text will flow counter-clockwise instead.

Here’s some curved text flowing counter-clockwise.

- <h2 id="demo2">Here’s some curved text flowing counter-clockwise.</h2> -new CircleType(document.getElementById('demo2')).dir(-1).radius(384); - - - - - +
// <h2 id="demo2">Here’s some curved text flowing counter-clockwise.</h2>
+new CircleType(document.getElementById('demo2'))
+  .dir(-1)
+  .radius(384);

Auto Radius

By leaving the radius empty, CircleType.js will find the perfect radius so the text makes a complete rotation.

This text makes a complete rotation no matter how long it is.

- <h2 id="demo3">This text makes a complete rotation no matter how long it is. </h2> -new CircleType(document.getElementById('demo3')); - - - - - +
// <h2 id="demo3">This text makes a complete rotation no matter how long it is. </h2>
+new CircleType(document.getElementById('demo3'));

Fluid

Update the radius when the window is resized to create a fluid effect (try resizing your window).

This curved type shrinks and expands to fit inside its container.

- <h2 id="demo4">This curved type shrinks and expands to fit inside its container. </h2> +
// <h2 id="demo4">This curved type shrinks and expands to fit inside its container. </h2>
 var demo4 = new CircleType(document.getElementById('demo4'));
 window.addEventListener('resize', function updateRadius() {
   demo4.radius(demo4.element.offsetWidth / 2);
 });
-updateRadius();
-
-      
-      
-      
-
+updateRadius();

Using FitText.js

-

Here’s how you can use FitText.js to make the text scale (try resizing your window)

+

Here’s how you can use FitText.js to make the text scale (try resizing your window).

I play well with FitText.js too!

- <h2 id="demo5">I play well with FitText.js too! </h2> -var demo5 = new CircleType(document.getElementById('demo5')).radius(180); -$(demo5.element).fitText(); - - - - - +
// <h2 id="demo5">I play well with FitText.js too! </h2>
+var demo5 = new CircleType(document.getElementById('demo5'))
+  .radius(180);
+$(demo5.element).fitText();

Destroy

Here’s how you can remove the effect from an element.

Destroy Me

Easily remove the effect.

- <button id="destroyButton">Destroy Me</button> -<h2 id="demo6">Easily remove the effect.</h2> -var demo6 = new CircleType(document.getElementById('demo6')).radius(180); -document.getElementById('destroyButton').addEventListener('click', demo6.destroy.bind(demo6)); - - - - - +
// <button id="destroyButton">Destroy Me</button>
+// <h2 id="demo6">Easily remove the effect.</h2>
+var demo6 = new CircleType(document.getElementById('demo6'))
+  .radius(180);
+document.getElementById('destroyButton')
+  .addEventListener('click', demo6.destroy.bind(demo6));

Emojis

-

I work with emojis!

+

I work with emojis but you’ll need to provide your own splitter function. Here is an example that uses GraphemeSplitter:

-

🍩🍩🍩🍩🍩🍩🍩🍩🍩🍩🍩🍩🍩🍩🍩🍩🍩🍩

+

👨‍👩‍👧‍👦👨‍👩‍👧‍👦👨‍👩‍👧‍👦👨‍👩‍👧‍👦👨‍👩‍👧‍👦👨‍👩‍👧‍👦👨‍👩‍👧‍👦👨‍👩‍👧‍👦👨‍👩‍👧‍👦👨‍👩‍👧‍👦👨‍👩‍👧‍👦👨‍👩‍👧‍👦👨‍👩‍👧‍👦👨‍👩‍👧‍👦

- <h2 id="demo7">🍩🍩🍩🍩🍩🍩🍩🍩🍩🍩🍩🍩🍩🍩🍩🍩🍩🍩</h2> -var demo7 = new CircleType(document.getElementById('demo7')); - - - - - +
// <script src="https://cdn.rawgit.com/orling/grapheme-splitter/b4500feb/index.js"></script>
+// <h2 id="demo7">👨‍👩‍👧‍👦👨‍👩‍👧‍👦👨‍👩‍👧‍👦👨‍👩‍👧‍👦👨‍👩‍👧‍👦👨‍👩‍👧‍👦👨‍👩‍👧‍👦👨‍👩‍👧‍👦👨‍👩‍👧‍👦👨‍👩‍👧‍👦👨‍👩‍👧‍👦👨‍👩‍👧‍👦👨‍👩‍👧‍👦👨‍👩‍👧‍👦</h2>
+var splitter = new GraphemeSplitter()
+var demo7 = new CircleType(
+  document.getElementById('demo7'),
+  splitter.splitGraphemes.bind(splitter)
+);

Browser Support

  • Chrome, Firefox, Safari, Opera, Edge (last 2 versions)
  • @@ -213,6 +115,7 @@

    Browser Support

+ +