UNPKG

react-meta-tags2

Version:

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

9 lines (7 loc) 5.21 kB
/** * react-meta-tags2 - 1.0.2 * Author : Sudhanshu Yadav * Copyright (c) 2016, 2023 to Sudhanshu Yadav, released under the MIT license. * https://github.com/s-yadav/react-meta-tags */ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react"),require("react-dom/client")):"function"==typeof define&&define.amd?define(["exports","react","react-dom/client"],t):t(e.MetaTags={},e.React,e.client)}(this,function(e,r,n){"use strict";var o="default"in r?r.default:r;function i(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 c(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,i(n.key),n)}}function a(e,t,r){t&&u(e.prototype,t),r&&u(e,r),Object.defineProperty(e,"prototype",{writable:!1})}function l(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&&p(e,t)}function f(e){return(f=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function p(e,t){return(p=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}function d(e,t){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");t=e;if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function s(r){var n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(e){return!1}}();return function(){var e,t=f(r);return d(this,n?(e=f(this).constructor,Reflect.construct(t,arguments,e)):t.apply(this,arguments))}}var h=r.createContext({}),t=function(){l(t,r.Component);var e=s(t);function t(){return c(this,t),e.apply(this,arguments)}return a(t,[{key:"render",value:function(){return o.createElement(h.Provider,{value:{extract:this.props.extract}},r.Children.only(this.props.children))}}]),t}(),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,g,C=function(){l(t,r.Component);var e=s(t);function t(){return c(this,t),e.apply(this,arguments)}return a(t,[{key:"componentDidMount",value:function(){this.temporaryElement=document.createElement("div"),this.root=n.createRoot(this.temporaryElement),this.handleChildrens()}},{key:"componentDidUpdate",value:function(e){e.children!==this.props.children&&this.handleChildrens()}},{key:"componentWillUnmount",value:function(){this.root&&this.root.unmount()}},{key:"extractChildren",value:function(){var e=this.context.extract,t=this.props.children;t&&e&&e(t)}},{key:"handleChildrens",value:function(){var t=this.props.children;function e(e){var a=e.this;return r.useEffect(function(){var e=a.temporaryElement.innerHTML;if(a.lastChildStr!==e){a.lastChildStr=e;e=a.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,u=o.length;c<u;c++)i.appendChild(o[c]);r.appendChild(i)}}}),o.createElement("div",{className:"react-head-temp"},t)}!this.context.extract&&t&&this.root.render(o.createElement(e,{this:this}))}},{key:"render",value:function(){return this.extractChildren(),null}}]),t}(),O=(O=C,g=h,(b=i(b="contextType"))in O?Object.defineProperty(O,b,{value:g,enumerable:!0,configurable:!0,writable:!0}):O[b]=g,function(){l(t,r.Component);var e=s(t);function t(){return c(this,t),e.apply(this,arguments)}return a(t,[{key:"render",value:function(){return o.createElement(C,null,o.createElement("title",null,this.props.title))}}]),t}());e.default=C,e.MetaTags=C,e.MetaTagsContext=t,e.ReactTitle=O,Object.defineProperty(e,"__esModule",{value:!0})});