UNPKG

@catfishkrenzer/react-meta-tags

Version:

Handle document meta/head tags in isomorphic react with ease.

2 lines (1 loc) 4.82 kB
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react"),require("react-dom")):"function"==typeof define&&define.amd?define(["exports","react","react-dom"],t):t((e=e||self).MetaTags={},e.React,e.ReactDOM)}(this,function(e,t,r){"use strict";var n="default"in t?t.default:t;function o(e,t,r){t=p(t);var n=e,t=i()?Reflect.construct(t,r||[],p(e).constructor):t.apply(e,r);if(t&&("object"==typeof t||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");e=n;if(void 0!==e)return e;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}function i(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(i=function(){return!!e})()}function c(e){e=function(e,t){if("object"!=typeof e||!e)return e;var r=e[Symbol.toPrimitive];if(void 0===r)return("string"===t?String:Number)(e);if("object"!=typeof(r=r.call(e,t||"default")))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}(e,"string");return"symbol"==typeof e?e:String(e)}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function u(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,c(n.key),n)}}function l(e,t,r){t&&u(e.prototype,t),r&&u(e,r),Object.defineProperty(e,"prototype",{writable:!1})}function f(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&d(e,t)}function p(e){return(p=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function d(e,t){return(d=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}r=r&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r;var s=t.createContext({}),h=function(){function e(){return a(this,e),o(this,e,arguments)}return f(e,t.Component),l(e,[{key:"render",value:function(){return n.createElement(s.Provider,{value:{extract:this.props.extract}},t.Children.only(this.props.children))}}]),e}(),y=["property","name","itemprop"];function m(n){var o=document.head;return y.reduce(function(e,t){var r=n.getAttribute(t);return r?e.concat((t=o.querySelectorAll("[".concat(t,' = "').concat(r,'"]')),(t=Array.prototype.slice.call(t||[])).filter(function(e){return!e.id}))):e},[])}function v(e,t){for(var r=0,n=(t=void 0===t.length?[t]:t).length;r<n;r++)e.removeChild(t[r])}var b,O,g=function(){function e(){return a(this,e),o(this,e,arguments)}return f(e,t.Component),l(e,[{key:"componentDidMount",value:function(){this.temporaryElement=document.createElement("div"),this.handleChildrens()}},{key:"componentDidUpdate",value:function(e){e.children!==this.props.children&&this.handleChildrens()}},{key:"componentWillUnmount",value:function(){this.temporaryElement&&r.unmountComponentAtNode(this.temporaryElement)}},{key:"extractChildren",value:function(){var e=this.context.extract,t=this.props.children;t&&e&&e(t)}},{key:"handleChildrens",value:function(){var u,l=this,e=this.props.children;!this.context.extract&&e&&(u=n.createElement("div",{className:"react-head-temp"},e),r.createRoot(this.temporaryElement).render(function(){var e=l.temporaryElement.innerHTML;if(l.lastChildStr!==e){l.lastChildStr=e;e=l.temporaryElement.querySelector(".react-head-temp");if(null!==e){var e=Array.prototype.slice.call(e.children),n=document.head,t=n.innerHTML,r=((e=(e=e.filter(function(e){return-1===t.indexOf(e.outerHTML)})).map(function(e){return e.cloneNode(!0)})).forEach(function(e){var t,r=e.tagName.toLowerCase();"title"===r?(t=document.head.querySelectorAll("title"))&&v(n,t):e.id?(t=(t=(t=e).id)&&document.head.querySelector("#".concat(t)))&&v(n,t):"meta"===r?(t=m(e))&&v(n,t):"link"===r&&"canonical"===e.rel&&(t=document.head.querySelectorAll('link[rel="canonical"]'))&&v(n,t)}),document.head),o=e;void 0===o.length&&(o=[o]);for(var i=document.createDocumentFragment(),c=0,a=o.length;c<a;c++)i.appendChild(o[c]);return r.appendChild(i),u}}}))}},{key:"render",value:function(){return this.extractChildren(),null}}]),e}(),C=(C=g,O=s,(b=c(b="contextType"))in C?Object.defineProperty(C,b,{value:O,enumerable:!0,configurable:!0,writable:!0}):C[b]=O,function(){function e(){return a(this,e),o(this,e,arguments)}return f(e,t.Component),l(e,[{key:"render",value:function(){return n.createElement(g,null,n.createElement("title",null,this.props.title))}}]),e}());e.MetaTags=g,e.MetaTagsContext=h,e.ReactTitle=C,e.default=g,Object.defineProperty(e,"__esModule",{value:!0})});