PageSourceSearch

https://cdn4.hola.org/www/hola/pub/unblock_my_settings.js

js hola.org collected 2026-09-24 10:16:52 UTC 33,754 bytes, 435 lines download raw bytes

vendor: 6,996 bytes, lines 1-2
1;(function () {// LICENSE_CODE ZON
2  'use strict'; /*jslint browser:true, es6:true, node:true, react:true*/function _extends() {return _extends = Object.assign ? Object.assign.bind() : function (n) {for (var e = 1; e < arguments.length; e++) {var t = arguments[e];for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);}return n;}, _extends.apply(null, arguments);}function ownKeys(e, r) {var t = Object.keys(e);if (Object.getOwnPropertySymbols) {var o = Object.getOwnPropertySymbols(e);r && (o = o.filter(function (r) {return Object.getOwnPropertyDescriptor(e, r).enumerable;})), t.push.apply(t, o);}return t;}function _objectSpread(e) {for (var r = 1; r < arguments.length; r++) {var t = null != arguments[r] ? arguments[r] : {};r % 2 ? ownKeys(Object(t), !0).forEach(function (r) {_defineProperty(e, r, t[r]);}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) {Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r));});}return e;}function _classCallCheck(a, n) {if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function");}function _defineProperties(e, r) {for (var t = 0; t < r.length; t++) {var o = r[t];o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o);}}function _createClass(e, r, t) {return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e;}function _callSuper(t, o, e) {return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e));}function _possibleConstructorReturn(t, e) {if (e && ("object" == _typeof(e) || "function" == typeof e)) return e;if (void 0 !== e) throw new TypeError("Derived constructors may only return object or undefined");return _assertThisInitialized(t);}function _assertThisInitialized(e) {if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e;}function _isNativeReflectConstruct() {try {var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));} catch (t) {}return (_isNativeReflectConstruct = function _isNativeReflectConstruct() {return !!t;})();}function _getPrototypeOf(t) {return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {return t.__proto__ || Object.getPrototypeOf(t);}, _getPrototypeOf(t);}function _inherits(t, e) {if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } }), Object.defineProperty(t, "prototype", { writable: !1 }), e && _setPrototypeOf(t, e);}function _setPrototypeOf(t, e) {return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {return t.__proto__ = e, t;}, _setPrototypeOf(t, e);}function _defineProperty(e, r, t) {return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e;}function _toPropertyKey(t) {var i = _toPrimitive(t, "string");return "symbol" == _typeof(i) ? i : i + "";}function _toPrimitive(t, r) {if ("object" != _typeof(t) || !t) return t;var e = t[Symbol.toPrimitive];if (void 0 !== e) {var i = e.call(t, r || "default");if ("object" != _typeof(i)) return i;throw new TypeError("@@toPrimitive must return a primitive value.");}return ("string" === r ? String : Number)(t);}function _slicedToArray(r, e) {return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();}function _nonIterableRest() {throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");}function _unsupportedIterableToArray(r, a) {if (r) {if ("string" == typeof r) return _arrayLikeToArray(r, a);var t = {}.toString.call(r).slice(8, -1);return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;}}function _arrayLikeToArray(r, a) {(null == a || a > r.length) && (a = r.length);for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];return n;}function _iterableToArrayLimit(r, l) {var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];if (null != t) {var e,n,i,u,a = [],f = !0,o = !1;try {if (i = (t = t.call(r)).next, 0 === l) {if (Object(t) !== t) return;f = !1;} else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);} catch (r) {o = !0, n = r;} finally {try {if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return;} finally {if (o) throw n;}}return a;}}function _arrayWithHoles(r) {if (Array.isArray(r)) return r;}function _regenerator() {/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */var e,t,r = "function" == typeof Symbol ? Symbol : {},n = r.iterator || "@@iterator",o = r.toStringTag || "@@toStringTag";function i(r, n, o, i) {var c = n && n.prototype instanceof Generator ? n : Generator,u = Object.create(c.prototype);return _regeneratorDefine2(u, "_invoke", function (r, n, o) {var i,c,u,f = 0,p = o || [],y = !1,G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) {return i = t, c = 0, u = e, G.n = r, a;} };function d(r, n) {for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) {var o,i = p[t],d = G.p,l = i[2];r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0));}if (o || r > 1) return a;throw y = !0, n;}return function (o, p, l) {if (f > 1) throw TypeError("Generator is already running");for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) {i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u);try {if (f = 2, i) {if (c || (o = "next"), t = i[o]) {if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object");if (!t.done) return t;u = t.value, c < 2 && (c = 0);} else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1);i = e;} else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break;} catch (t) {i = e, c = 1, u = t;} finally {f = 1;}}return { value: t, done: y };};}(r, o, i), !0), u;}var a = {};function Generator() {}function GeneratorFunction() {}function GeneratorFunctionPrototype() {}t = Object.getPrototypeOf;
2var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () {return this;}), t),u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c);function f(e) {return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e;}return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () {return this;}), _regeneratorDefine2(u, "toString", function () {return "[object Generator]";}), (_regenerator = function _regenerator() {return { w: i, m: f };})();}function _regeneratorDefine2(e, r, n, t) {var i = Object.defineProperty;try {i({}, "", {});} catch (e) {i = 0;}_regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) {function o(r, n) {_regeneratorDefine2(e, r, function (e) {return this._invoke(r, n, e);});}r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2));}, _regeneratorDefine2(e, r, n, t);}function _typeof(o) {"@babel/helpers - typeof";return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) {return typeof o;} : function (o) {return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o;}, _typeof(o);}
3  var define;
4  var is_node = (typeof module === "undefined" ? "undefined" : _typeof(module)) == 'object' && module.exports;
5  if (is_node)
6  define = require('../../../util/require_node.js').define(module, '..');else
7
8  define = self.define;
9  define(['react', '/www/hola/pub/context.js',
10  '/www/hola/pub/util.js', '/www/hola/pub/config.js', '/util/util.js',
11  'hola_opt', '/util/string.js', 'classnames', '/www/hola/pub/be.js',
12  '/util/url.js', '/util/etask.js', '/util/version_util.js',
13  'svc_versions', '/util/escape.js', 'react-router-dom',
14  '/www/hola/pub/404.js', '/www/hola/pub/img/svg/icon/ic_slope.svg',
15  '/www/hola/pub/shared/svg', '/svc/vpn/pub/util.js',
16  // import only
17  '/www/hola/pub/css/unblock_my_settings.less',
18  '/www/hola/pub/css/wbm_flags.less'],
19  function (React, context, www_util, config, zutil, hopt, string, cn, be,
20  zurl, etask, version_util, hola_versions, zescape, RRD, not_found,
21  Icon_slope, _ref, svc_util)
22  {var Svg = _ref.Svg;
23    var E = {};
24    var App_context = context.App_context;
25    var useLocation = RRD.useLocation;
26    var useEffect = React.useEffect,useContext = React.useContext,useState = React.useState;
27
28    var Settings_header = function Settings_header(props) {var _be$svc;
29      var info = props.info;
30      // product_info() drops appid, take it from the raw svc info
31      var latest = svc_util.pick_version(hola_versions,
32      svc_util.get_product((_be$svc = be.svc()) === null || _be$svc === void 0 ? void 0 : _be$svc.appid), 'windows');
33      var show_update = info.svc_version &&
34      version_util.cmp(info.svc_version, latest) < 0;
35      var update_href = "/download?cid=".concat(info.cid, "&upgrade=1");
36      var update_cls = 'update-available btn btn-primary btn-xs';
37      return /*#__PURE__*/React.createElement("div", { className: "page_header container-fluid" }, /*#__PURE__*/
38      React.createElement("div", { className: "container" }, /*#__PURE__*/
39      React.createElement("div", { className: "row" }, /*#__PURE__*/
40      React.createElement("div", { className: "col-xs-12 settings-header" },
41      show_update && /*#__PURE__*/React.createElement("a", { href: update_href, className: update_cls }, "Update is available"
42      )
43      )
44      )
45      )
46      );
47    };
48
49    var About_header = function About_header(props) {
50      var info = props.info;
51      var show_report = !be.is_android();
52      var to = be.is_android() ? '[email protected]' : '[email protected]';
53      var report_href = zescape.mailto_url({ to: to,
54        subject: 'Problem with Hola (my settings)',
55        body: '(Please include a brief explanation of the problem and ' +
56        'a screenshot if possible)\n\n' +
57        'Information automatically generated about my problem:\n' +
58        be.print_product_info(document.createElement('div'), info) });
59      var on_report = function on_report(ev) {
60        be.perr({ id: 'www_report_problem', info: 'my_settings' });
61        if (be.is_chrome())
62        return;
63        ev.preventDefault();
64        window.open(report_href, '_blank', 'resizable');
65      };
66      return /*#__PURE__*/React.createElement("div", { className: "row list-header about_header" }, /*#__PURE__*/
67      React.createElement("div", { className: "col-xs-7 headline" }, /*#__PURE__*/
68      React.createElement("h4", null, "About this version")
69      ), /*#__PURE__*/
70      React.createElement("div", { className: "col-xs-5 actions" },
71      show_report && /*#__PURE__*/React.createElement("div", { className: "report-problem" }, /*#__PURE__*/
72      React.createElement("span", null, "Report a problem - "), /*#__PURE__*/
73      React.createElement("a", { href: report_href, onClick: on_report }, to)
74      )
75      )
76      );
77    };
78
79    var remove_rule = function remove_rule(rule) {return etask(/*#__PURE__*/_regenerator().m(function _callee() {return _regenerator().w(function (_context) {while (1) switch (_context.n) {case 0:
80              this.on('uncaught', function (e) {
81                be.perr({ id: 'www_rule_unset_err', bt: e.stack,
82                  info: 'sid ' + rule.sid + ' name ' + rule.name + ' ' + e });
83              });_context.n = 1;
84              return be.rule_set(rule, 0, { del: 1 });case 1:_context.n = 2;
85              return be.fetch_all();case 2:return _context.a(2);}}, _callee, this);})
86      );};
87    var toggle_rule = function toggle_rule(rule, active) {return etask(/*#__PURE__*/_regenerator().m(function _callee2() {return _regenerator().w(function (_context2) {while (1) switch (_context2.n) {case 0:
88              this.on('uncaught', function (e) {
89                be.perr({ id: 'www_rule_set_err', bt: e.stack,
90                  info: 'sid ' + rule.sid + ' name ' + rule.name + ' ' + e });
91              });_context2.n = 1;
92              return be.rule_set(rule, active);case 1:_context2.n = 2;
93              return be.fetch_all();case 2:return _context2.a(2);}}, _callee2, this);})
94      );};
95    var Rule = function Rule(props) {
96      var rule = props.rule,id = props.id,add_undo = props.add_undo;
97      var enabled = rule.enabled,name = rule.name,link = rule.link,country = rule.country;
98      var _useState = useState(enabled),_useState2 = _slicedToArray(_useState, 2),active = _useState2[0],set_active = _useState2[1];
99      var on = active && props.enabled;
100      var domain = zurl.get_host(zurl.add_proto(link || '') + '/') || name;
101      var href = "http://".concat(domain);
102      var cls = cn('rule dynamic entry', { active: on });
103      var switch_cls = cn('rule-switch checkbox', { checked: on });
104      var on_toggle = function on_toggle() {return set_active(function (v) {return !v;});};
105      var on_remove = function on_remove() {
106        remove_rule(rule);
107        add_undo(rule);
108      };
109      useEffect(function () {
110        etask(/*#__PURE__*/_regenerator().m(function _callee3() {return _regenerator().w(function (_context3) {while (1) switch (_context3.n) {case 0:if (!(
111                active == enabled)) {_context3.n = 1;break;}return _context3.a(2);case 1:if (!
112
113                active) {_context3.n = 2;break;}_context3.n = 2;
114                return be.enable_unblocker(true);case 2:_context3.n = 3;
115                return toggle_rule(rule, active);case 3:return _context3.a(2);}}, _callee3);})
116        );
117      }, [active]);
118      return /*#__PURE__*/React.createElement("li", { className: cls, "data-id": id }, /*#__PURE__*/
119      React.createElement("div", { className: "rule_item rule-switch-wrap", onClick: on_toggle }, /*#__PURE__*/
120      React.createElement("span", { className: switch_cls, "data-original-title": "", title: "" }), /*#__PURE__*/
121      React.createElement("div", { className: "tooltip fade top in", role: "tooltip" }, /*#__PURE__*/
122      React.createElement("div", { className: "tooltip-arrow", style: { left: '50%' } }), /*#__PURE__*/
123      React.createElement("div", { className: "tooltip-inner" }, "Turn ", on ? 'off' : 'on')
124      )
125      ), /*#__PURE__*/
126      React.createElement("div", { className: "rule_item rule-country-wrap" }, /*#__PURE__*/
127      React.createElement("span", { className: "f32" }, /*#__PURE__*/
128      React.createElement("i", { className: "flag ".concat(country) })
129      )
130      ), /*#__PURE__*/
131      React.createElement("div", { className: "rule_item rule-url-wrap" }, /*#__PURE__*/
132      React.createElement("a", { className: "rule-url", href: href,
133        target: "_blank", rel: "noopener noreferrer" },
134      name
135      )
136      ), /*#__PURE__*/
137      React.createElement("div", { className: "rule_item rule-remove-wrap", onClick: on_remove }, /*#__PURE__*/
138      React.createElement("span", { className: "rule-remove", "data-original-title": "", title: "Delete" })
139      )
140      );
141    };
142
143    var Vpn_rule_list = function Vpn_rule_list(props) {
144      var rules = props.rules,add_undo = props.add_undo;
145      var _useState3 = useState(be.get('enabled')),_useState4 = _slicedToArray(_useState3, 2),enabled = _useState4[0],set_enabled = _useState4[1];
146      var keys = Object.keys(rules);
147      useEffect(function () {
148        var cb = function cb() {return set_enabled(be.get('enabled'));};
149        be.on('change:svc.info change:ext.info', cb);
150        be.fetch_rules();
151      }, []);
152      return /*#__PURE__*/React.createElement("ul", null,
153      keys.map(function (k) {return /*#__PURE__*/React.createElement(Rule, { key: k, id: k, rule: rules[k],
154          enabled: enabled, add_undo: add_undo });}),
155      !keys.length && /*#__PURE__*/React.createElement("li", { className: "rule entry empty_entry" }, /*#__PURE__*/
156      React.createElement("div", { className: "message" }, /*#__PURE__*/
157      React.createElement("span", { className: "text" }, "You have not selected any site to unblock."
158
159      ), /*#__PURE__*/
160      React.createElement("a", { href: "/access/popular", className: "link" }, " Click to find sites")
161      )
162      )
163      );
164    };
165
166    var Product_info = function Product_info(props) {
167      var _props$info = props.info,info = _props$info === void 0 ? be.product_info() : _props$info,dev = props.dev;
168      var ext_version =
169        info.ext_version,server_version = info.server_version,svc_version = info.svc_version,svc_mode = info.svc_mode,product_type = info.product_type,browser2 = info.browser2,browser = info.browser,platform = info.platform,cid = info.cid,uuid = info.uuid,svc_mode_pending = info.svc_mode_pending;
170      if (!ext_version)
171      ext_version = window.zon_config && window.zon_config.ZON_VERSION;
172      var mode;
173      if (svc_mode)
174      {
175        mode = "".concat(svc_mode, " active").concat(svc_mode_pending ?
176        ', ' + svc_mode_pending + ' pending' : '');
177      }
178      cid = be.be_bg_main && be.be_bg_main.get('svc.cid') || cid;
179      uuid = be.be_bg_main && be.be_bg_main.get('uuid') || uuid;
180      return /*#__PURE__*/React.createElement("div", { className: "panel panel-default product_info" }, /*#__PURE__*/
181      React.createElement("div", { className: "panel-body" },
182      ext_version && /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/
183      React.createElement("span", null, "Ext version: "), /*#__PURE__*/React.createElement("span", null, ext_version)
184      ),
185      server_version && /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/
186      React.createElement("span", null, "WWW version: "), /*#__PURE__*/React.createElement("span", null, server_version)
187      ),
188      svc_version && /*#__PURE__*/React.createElement("div", { className: "product-service-version" }, /*#__PURE__*/
189      React.createElement("span", null, "Service: "), /*#__PURE__*/React.createElement("span", null, svc_version)
190      ),
191      svc_mode && /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/
192      React.createElement("span", null, "Mode: "), /*#__PURE__*/React.createElement("span", null, mode)
193      ),
194      product_type && /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/
195      React.createElement("span", null, "Product: "), /*#__PURE__*/React.createElement("span", null, product_type)
196      ),
197      (browser2 || browser) && /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/
198      React.createElement("span", null, "Browser: "), /*#__PURE__*/React.createElement("span", null, browser2 || browser)
199      ),
200      platform && /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/
201      React.createElement("span", null, "Platform: "), /*#__PURE__*/React.createElement("span", null, platform)
202      ),
203      cid && /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/
204      React.createElement("span", null, "CID: "), /*#__PURE__*/React.createElement("span", null, cid)
205      ),
206      uuid && /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/
207      React.createElement("span", null, "UUID: "), /*#__PURE__*/React.createElement("span", null, uuid)
208      ),
209      dev && /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/
210      React.createElement("span", null, "Dev info: "), /*#__PURE__*/React.createElement("span", null, dev)
211      )
212      )
213      );
214    };
215
216    var Settings_hr = function Settings_hr() {return /*#__PURE__*/React.createElement("div", { className: "settings-hr" });};
217
218    var Settings_p = function Settings_p(props) {return /*#__PURE__*/React.createElement("div", { className: "settings-p" }, props.children);};
219
220    var Subscribe_plus_btn = function Subscribe_plus_btn() {return /*#__PURE__*/React.createElement("a", { className: "subscribe-plus-btn",
221        href: "/plus?ref=p2p_settings" }, /*#__PURE__*/
222      React.createElement("span", null, "Subscribe to PLUS $2.99/mo")
223      );};
224
225    // XXX sergeir: always true, need to make it switchable when needed
226    var Settings_switch = /*#__PURE__*/function (_React$Component) {function Settings_switch() {var _this;_classCallCheck(this, Settings_switch);for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {args[_key] = arguments[_key];}_this = _callSuper(this, Settings_switch, [].concat(args));_defineProperty(_this, "on_click",
227        function () {
228          _this.props.on_change();
229        });return _this;}_inherits(Settings_switch, _React$Component);return _createClass(Settings_switch, [{ key: "render", value:
230        function render() {
231          return /*#__PURE__*/React.createElement("div", { className: "settings-switch", onClick: this.on_click }, /*#__PURE__*/
232          React.createElement("div", { className: "info" }, /*#__PURE__*/
233          React.createElement("div", { className: "title" }, this.props.title), /*#__PURE__*/
234          React.createElement("div", { className: "subtitle" }, this.props.subtitle)
235          ), /*#__PURE__*/
236          React.createElement("div", { className: "switch" })
237          );
238        } }]);}(React.Component);var
239
240
241    P2p_settings_tab = /*#__PURE__*/function (_React$Component2) {function P2p_settings_tab() {var _this2;_classCallCheck(this, P2p_settings_tab);for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {args[_key2] = arguments[_key2];}_this2 = _callSuper(this, P2p_settings_tab, [].concat(args));_defineProperty(_this2, "state",
242        {});_defineProperty(_this2, "promote_plus",
243        function () {
244          _this2.setState({ promote_plus: true });
245        });return _this2;}_inherits(P2p_settings_tab, _React$Component2);return _createClass(P2p_settings_tab, [{ key: "render", value:
246        function render() {
247          return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/
248          React.createElement(Settings_switch, { title: 'Allow to be a peer',
249            subtitle: 'Share minimal resources',
250            on_change: this.promote_plus }),
251          this.state.promote_plus && /*#__PURE__*/
252          React.createElement(Settings_p, null, "If you don't want to be a peer, subscribe to PLUS", /*#__PURE__*/
253
254          React.createElement(Subscribe_plus_btn, null)
255          ), /*#__PURE__*/
256          React.createElement(Settings_hr, null), /*#__PURE__*/
257          React.createElement(Settings_p, null, /*#__PURE__*/
258          React.createElement("a", { href: "https://support.hola.org/en/collections/9935345-faq" }, "About the hola P2P Network")
259          )
260          );
261        } }]);}(React.Component);
262
263
264    var Svg_slope = function Svg_slope() {
265      return /*#__PURE__*/React.createElement(Svg, { icon: /*#__PURE__*/React.createElement(Icon_slope, { width: 20, height: 36 }), cls: "tabs-side" });
266    };
267    var software_attribution_url = '/software_attribution?ref=unblock&amp;' +
268    'utm_source=settings';
269    var get_rules = function get_rules() {return be.get('rules') || {};};
270    var get_info = function get_info() {return be.product_info();};
271    var Root = function Access_my_settings(props) {
272      if (props.internal_err)
273      return /*#__PURE__*/React.createElement(not_found.Root, props);
274      var _useContext = useContext(App_context),user = _useContext.user,is_plus = _useContext.is_plus;
275      var user_country = props.user_country;
276      var _useLocation = useLocation(),hash = _useLocation.hash,pathname = _useLocation.pathname;
277      var _useState5 = useState((hash.match(/^#\/?(.*)/) || [])[1] ||
278        'vpn'),_useState6 = _slicedToArray(_useState5, 2),tab = _useState6[0],set_tab = _useState6[1];
279      var _useState7 = useState(get_rules()),_useState8 = _slicedToArray(_useState7, 2),rules = _useState8[0],set_rules = _useState8[1];
280      var _useState9 = useState(get_info()),_useState0 = _slicedToArray(_useState9, 2),info = _useState0[0],set_info = _useState0[1];
281      var _useState1 = useState({}),_useState10 = _slicedToArray(_useState1, 2),undo = _useState10[0],set_undo = _useState10[1];
282      var _useState11 = useState(be.is_svc()),_useState12 = _slicedToArray(_useState11, 2),is_svc = _useState12[0],set_is_svc = _useState12[1];
283      var undo_length = Object.keys(undo).length;
284      var add_undo = function add_undo(rule) {
285        if (undo[rule.id])
286        return;
287        var fn = function fn() {return etask(/*#__PURE__*/_regenerator().m(function _callee4() {return _regenerator().w(function (_context4) {while (1) switch (_context4.n) {case 0:_context4.n = 1;
288                  return toggle_rule(rule, rule.enabled);case 1:return _context4.a(2);}}, _callee4);})
289          );};
290        set_undo(function (v) {return _objectSpread(_objectSpread({}, v), {}, _defineProperty({}, rule.id, fn));});
291      };
292      var on_undo = function on_undo() {
293        Object.keys(undo).forEach(function (k) {return etask(/*#__PURE__*/_regenerator().m(function _callee5() {return _regenerator().w(function (_context5) {while (1) switch (_context5.n) {case 0:_context5.n = 1;
294                  return undo[k]();case 1:
295                  set_undo(function (v) {
296                    delete v[k];
297                    return v;
298                  });case 2:return _context5.a(2);}}, _callee5);})
299          );});
300      };
301      var on_clear_all = function on_clear_all() {
302        Object.keys(rules).forEach(function (k) {return etask(/*#__PURE__*/_regenerator().m(function _callee6() {var rule;return _regenerator().w(function (_context6) {while (1) switch (_context6.n) {case 0:
303                  rule = rules[k];_context6.n = 1;
304                  return remove_rule(rule);case 1:
305                  add_undo(rule);case 2:return _context6.a(2);}}, _callee6);})
306          );});
307      };
308      useEffect(function () {
309        www_util.perr_www_visit({ id: 'www_access_my_settings_visit', user: user });
310        be.init({ src_country: user_country });
311        be.on('change:rules', function () {return set_rules(get_rules());});
312        be.on('change:svc.info change:ext.info', function () {
313          set_info(get_info());
314          set_is_svc(be.is_svc());
315        });
316        be.on('change:svc.info change:ext.info change:browser', function () {});
317        be.init_fetch_rules();
318        document.documentElement.classList.add('my_settings');
319        return function () {
320          document.documentElement.classList.remove('my_settings');
321        };
322      }, []);
323      var on_tab_click = function on_tab_click(label) {return function () {
324          set_tab(label);
325          history.replaceState(null, null, "".concat(pathname, "#/").concat(label));
326        };};
327      var vpn_tab_cls = cn('tabs-button', { 'tabs-active': tab == 'vpn' });
328      var about_tab_cls = cn('tabs-button', { 'tabs-active': tab == 'about' });
329      var p2p_tab_cls = cn('tabs-button', {
330        hidden: !is_svc || is_plus,
331        'tabs-active': tab == 'p2p'
332      });
333      var vpn_cls = cn('col-xs-12 tab-content', { 'tabs-active': tab == 'vpn' });
334      var about_cls = cn('col-xs-12 tab-content', {
335        'tabs-active': tab == 'about'
336      });
337      var p2p_cls = cn('col-xs-12 tab-content', { 'tabs-active': tab == 'p2p' });
338      var undo_cls = cn('vpn-undo', { 'undo-hidden': !undo_length });
339      var undo_title = 'Undo remove ' + (undo_length == 1 ? 'one rule' : "".concat(
340        undo_length, " rules"));
341      return /*#__PURE__*/React.createElement("div", { className: "unblock-settings_new" }, /*#__PURE__*/React.createElement("div", { className: "wrap" }, /*#__PURE__*/
342      React.createElement(Settings_header, _extends({}, props, { info: info })), /*#__PURE__*/
343      React.createElement("div", { className: "container rules" }, /*#__PURE__*/
344      React.createElement("div", { className: "tabs-row row" }, /*#__PURE__*/
345      React.createElement("span", { className: vpn_tab_cls, "data-label": "vpn",
346        onClick: on_tab_click('vpn') }, /*#__PURE__*/
347      React.createElement(Svg_slope, null), /*#__PURE__*/
348      React.createElement("span", { className: "tabs-icon vpn-icon" }), /*#__PURE__*/
349      React.createElement("span", { className: "tabs-label" }, "Hola"), /*#__PURE__*/
350      React.createElement(Svg_slope, null)
351      ), /*#__PURE__*/
352      React.createElement("span", { className: p2p_tab_cls, "data-label": "p2p",
353        onClick: on_tab_click('p2p') }, /*#__PURE__*/
354      React.createElement(Svg_slope, null), /*#__PURE__*/
355      React.createElement("span", { className: "tabs-icon p2p-icon" }), /*#__PURE__*/
356      React.createElement("span", { className: "tabs-label" }, "P2P"), /*#__PURE__*/
357      React.createElement(Svg_slope, null)
358      ), /*#__PURE__*/
359      React.createElement("span", { className: about_tab_cls, "data-label": "about",
360        onClick: on_tab_click('about') }, /*#__PURE__*/
361      React.createElement(Svg_slope, null), /*#__PURE__*/
362      React.createElement("span", { className: "tabs-icon about-icon" }), /*#__PURE__*/
363      React.createElement("span", { className: "tabs-label" }, "About"), /*#__PURE__*/
364      React.createElement(Svg_slope, null)
365      )
366      )
367      ), /*#__PURE__*/
368      React.createElement("div", { className: "container activate-hola-wrap" }, /*#__PURE__*/
369      React.createElement("div", { className: "msg_install_anchor row" })
370      ), /*#__PURE__*/
371      React.createElement("div", { className: "msg_error_anchor container" }), /*#__PURE__*/
372      React.createElement("div", { className: "container main-container" }, /*#__PURE__*/
373      React.createElement("div", { className: "row tabs-container" }, /*#__PURE__*/
374      React.createElement("div", { "data-label": "vpn", className: vpn_cls }, /*#__PURE__*/
375      React.createElement("div", { className: "row" }, /*#__PURE__*/
376      React.createElement("div", { className: "col-xs-12" }, /*#__PURE__*/
377      React.createElement("div", { className: "my-scripts-anchor" })
378      ), /*#__PURE__*/
379      React.createElement("div", { className: "col-xs-12 list-header-wrap" }, /*#__PURE__*/
380      React.createElement("div", { className: "row list-header rules_list_header" }, /*#__PURE__*/
381      React.createElement("div", { className: "col-xs-11 headline" }, /*#__PURE__*/
382      React.createElement("h4", null, "Recently visited sites")
383      ), /*#__PURE__*/
384      React.createElement("div", { className: "col-xs-1 actions" }, /*#__PURE__*/
385      React.createElement("span", { className: "vpn-clear-all-data", title: "Clear all",
386        onClick: on_clear_all }), /*#__PURE__*/
387      React.createElement("span", { className: undo_cls, title: undo_title,
388        onClick: on_undo })
389      )
390      )
391      ), /*#__PURE__*/
392      React.createElement("div", { className: "col-xs-12 table-wrap" }, /*#__PURE__*/
393      React.createElement(Vpn_rule_list, { rules: rules, add_undo: add_undo })
394      )
395      )
396      ), /*#__PURE__*/
397      React.createElement("div", { "data-label": "p2p", className: p2p_cls }, /*#__PURE__*/
398      React.createElement("div", { className: "row" }, /*#__PURE__*/
399      React.createElement("div", { className: "col-xs-12" }, /*#__PURE__*/
400      React.createElement("div", { className: "col-xs-12 list-header-wrap" }, /*#__PURE__*/
401      React.createElement("div", { className: "row list-header settings_header" }, /*#__PURE__*/
402      React.createElement("div", { className: "col-xs-12 headline" }, /*#__PURE__*/
403      React.createElement("h4", null, "P2P settings")
404      )
405      )
406      )
407      ), /*#__PURE__*/
408      React.createElement("div", { className: "col-xs-12 p2p-wrap" },
409      is_svc && !is_plus && /*#__PURE__*/React.createElement(P2p_settings_tab, null)
410      )
411      )
412      ), /*#__PURE__*/
413      React.createElement("div", { "data-label": "about", className: about_cls }, /*#__PURE__*/
414      React.createElement("div", { className: "row" }, /*#__PURE__*/
415      React.createElement("div", { className: "col-xs-12" }, /*#__PURE__*/
416      React.createElement("div", { className: "col-xs-12 list-header-wrap" }, /*#__PURE__*/
417      React.createElement(About_header, { info: info })
418      )
419      ), /*#__PURE__*/
420      React.createElement("div", { className: "col-xs-12 table-wrap" }, /*#__PURE__*/
421      React.createElement(Product_info, { info: info }), /*#__PURE__*/
422      React.createElement("a", { href: software_attribution_url }, "Creative licenses")
423      )
424      )
425      )
426      )
427      )
428      ));
429    };
430
431    E = { Root: Root };
432
433    return E;
434  });})();
435//# sourceMappingURL=unblock_my_settings.js.map

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.