From e59a1d89270970e83aacc8c3fe306c0af2eab03a Mon Sep 17 00:00:00 2001 From: Tim Willig <92720438+twilligls@users.noreply.github.com> Date: Wed, 2 Aug 2023 10:20:31 +0200 Subject: [PATCH] Fixed issue #CR-1265: fileupload question rtl (#3315) * dev: changed css files for rtl file-upload questiontype align content in table for rtl * dev: added rtl fileupload fix for new surveytheme * dev: added rtl fileupload fix for new surveytheme (changed location of rtl) --------- Co-authored-by: pstelling --- .../questions/upload/styles/uploader.css | 4 + .../file_upload/file_upload.scss | 4 + .../css/variations/theme_apple-rtl.css | 4 + .../css/variations/theme_apple.css | 4 + .../css/variations/theme_blueberry-rtl.css | 4 + .../css/variations/theme_blueberry.css | 4 + .../css/variations/theme_grape-rtl.css | 4 + .../css/variations/theme_grape.css | 4 + .../css/variations/theme_mango-rtl.css | 4 + .../css/variations/theme_mango.css | 4 + .../fruity_twentythree/scripts/theme.js | 351 +++++++++++++++++- 11 files changed, 379 insertions(+), 12 deletions(-) diff --git a/assets/packages/questions/upload/styles/uploader.css b/assets/packages/questions/upload/styles/uploader.css index 890836b15ba..3bcb58f2729 100644 --- a/assets/packages/questions/upload/styles/uploader.css +++ b/assets/packages/questions/upload/styles/uploader.css @@ -92,6 +92,10 @@ img.uploaded { text-align: left; } +.dir-rtl .uploadedfiles tbody tr td { + text-align: right; +} + .uploadedfiles thead tr th { font-weight: bold; } diff --git a/assets/survey_themes/fruity_twentythree/questiontypes/file_upload/file_upload.scss b/assets/survey_themes/fruity_twentythree/questiontypes/file_upload/file_upload.scss index cc4ade85a39..135db18a645 100644 --- a/assets/survey_themes/fruity_twentythree/questiontypes/file_upload/file_upload.scss +++ b/assets/survey_themes/fruity_twentythree/questiontypes/file_upload/file_upload.scss @@ -1,3 +1,7 @@ .file-preview fieldset span { margin-left: 0; +} + +.uploadedfiles tbody tr td { + text-align: left; } \ No newline at end of file diff --git a/themes/survey/fruity_twentythree/css/variations/theme_apple-rtl.css b/themes/survey/fruity_twentythree/css/variations/theme_apple-rtl.css index 37e8ac864e3..f07e37163a2 100644 --- a/themes/survey/fruity_twentythree/css/variations/theme_apple-rtl.css +++ b/themes/survey/fruity_twentythree/css/variations/theme_apple-rtl.css @@ -13939,6 +13939,10 @@ body .imageselect-listitem label::after { margin-right: 0; } +.uploadedfiles tbody tr td { + text-align: right; +} + .answer-container .bootstrap-select .bs-searchbox .form-control { padding: 0.375rem 0.75rem; margin-bottom: 4px; diff --git a/themes/survey/fruity_twentythree/css/variations/theme_apple.css b/themes/survey/fruity_twentythree/css/variations/theme_apple.css index a37f6e20d9a..fee2bcf1b67 100644 --- a/themes/survey/fruity_twentythree/css/variations/theme_apple.css +++ b/themes/survey/fruity_twentythree/css/variations/theme_apple.css @@ -13962,6 +13962,10 @@ body .imageselect-listitem label::after { margin-left: 0; } +.uploadedfiles tbody tr td { + text-align: left; +} + .answer-container .bootstrap-select .bs-searchbox .form-control { padding: 0.375rem 0.75rem; margin-bottom: 4px; diff --git a/themes/survey/fruity_twentythree/css/variations/theme_blueberry-rtl.css b/themes/survey/fruity_twentythree/css/variations/theme_blueberry-rtl.css index 4bd81992029..bb7acd8667f 100644 --- a/themes/survey/fruity_twentythree/css/variations/theme_blueberry-rtl.css +++ b/themes/survey/fruity_twentythree/css/variations/theme_blueberry-rtl.css @@ -13939,6 +13939,10 @@ body .imageselect-listitem label::after { margin-right: 0; } +.uploadedfiles tbody tr td { + text-align: right; +} + .answer-container .bootstrap-select .bs-searchbox .form-control { padding: 0.375rem 0.75rem; margin-bottom: 4px; diff --git a/themes/survey/fruity_twentythree/css/variations/theme_blueberry.css b/themes/survey/fruity_twentythree/css/variations/theme_blueberry.css index 23afc7e3b79..04e2cc6f588 100644 --- a/themes/survey/fruity_twentythree/css/variations/theme_blueberry.css +++ b/themes/survey/fruity_twentythree/css/variations/theme_blueberry.css @@ -13962,6 +13962,10 @@ body .imageselect-listitem label::after { margin-left: 0; } +.uploadedfiles tbody tr td { + text-align: left; +} + .answer-container .bootstrap-select .bs-searchbox .form-control { padding: 0.375rem 0.75rem; margin-bottom: 4px; diff --git a/themes/survey/fruity_twentythree/css/variations/theme_grape-rtl.css b/themes/survey/fruity_twentythree/css/variations/theme_grape-rtl.css index eda926c6a8c..727cb714089 100644 --- a/themes/survey/fruity_twentythree/css/variations/theme_grape-rtl.css +++ b/themes/survey/fruity_twentythree/css/variations/theme_grape-rtl.css @@ -13939,6 +13939,10 @@ body .imageselect-listitem label::after { margin-right: 0; } +.uploadedfiles tbody tr td { + text-align: right; +} + .answer-container .bootstrap-select .bs-searchbox .form-control { padding: 0.375rem 0.75rem; margin-bottom: 4px; diff --git a/themes/survey/fruity_twentythree/css/variations/theme_grape.css b/themes/survey/fruity_twentythree/css/variations/theme_grape.css index 8aa7105fa55..06eab8325e8 100644 --- a/themes/survey/fruity_twentythree/css/variations/theme_grape.css +++ b/themes/survey/fruity_twentythree/css/variations/theme_grape.css @@ -13962,6 +13962,10 @@ body .imageselect-listitem label::after { margin-left: 0; } +.uploadedfiles tbody tr td { + text-align: left; +} + .answer-container .bootstrap-select .bs-searchbox .form-control { padding: 0.375rem 0.75rem; margin-bottom: 4px; diff --git a/themes/survey/fruity_twentythree/css/variations/theme_mango-rtl.css b/themes/survey/fruity_twentythree/css/variations/theme_mango-rtl.css index 132550dab80..5a9fe13fb66 100644 --- a/themes/survey/fruity_twentythree/css/variations/theme_mango-rtl.css +++ b/themes/survey/fruity_twentythree/css/variations/theme_mango-rtl.css @@ -13939,6 +13939,10 @@ body .imageselect-listitem label::after { margin-right: 0; } +.uploadedfiles tbody tr td { + text-align: right; +} + .answer-container .bootstrap-select .bs-searchbox .form-control { padding: 0.375rem 0.75rem; margin-bottom: 4px; diff --git a/themes/survey/fruity_twentythree/css/variations/theme_mango.css b/themes/survey/fruity_twentythree/css/variations/theme_mango.css index a8d48c50edd..9d3a78f87b8 100644 --- a/themes/survey/fruity_twentythree/css/variations/theme_mango.css +++ b/themes/survey/fruity_twentythree/css/variations/theme_mango.css @@ -13962,6 +13962,10 @@ body .imageselect-listitem label::after { margin-left: 0; } +.uploadedfiles tbody tr td { + text-align: left; +} + .answer-container .bootstrap-select .bs-searchbox .form-control { padding: 0.375rem 0.75rem; margin-bottom: 4px; diff --git a/themes/survey/fruity_twentythree/scripts/theme.js b/themes/survey/fruity_twentythree/scripts/theme.js index dd1e922619f..11e5e6c4082 100755 --- a/themes/survey/fruity_twentythree/scripts/theme.js +++ b/themes/survey/fruity_twentythree/scripts/theme.js @@ -1066,8 +1066,9 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } },{"../../../assets/bootstrap_5/js/bootstrap_5.js":1,"./core/old_core_theme.js":2,"./navbar/navbar.js":5,"./questiontypes/array/array.js":6,"./theme_js_disclaimer.js":7}],9:[function(require,module,exports){ +(function (process){(function (){ /** - * @popperjs/core v2.11.8 - MIT License + * @popperjs/core v2.11.7 - MIT License */ 'use strict'; @@ -1455,6 +1456,90 @@ function debounce(fn) { return pending; }; } +function format(str) { + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + return [].concat(args).reduce(function (p, c) { + return p.replace(/%s/, c); + }, str); +} +var INVALID_MODIFIER_ERROR = 'Popper: modifier "%s" provided an invalid %s property, expected %s but got %s'; +var MISSING_DEPENDENCY_ERROR = 'Popper: modifier "%s" requires "%s", but "%s" modifier is not available'; +var VALID_PROPERTIES = ['name', 'enabled', 'phase', 'fn', 'effect', 'requires', 'options']; +function validateModifiers(modifiers) { + modifiers.forEach(function (modifier) { + [].concat(Object.keys(modifier), VALID_PROPERTIES) // IE11-compatible replacement for `new Set(iterable)` + .filter(function (value, index, self) { + return self.indexOf(value) === index; + }).forEach(function (key) { + switch (key) { + case 'name': + if (typeof modifier.name !== 'string') { + console.error(format(INVALID_MODIFIER_ERROR, String(modifier.name), '"name"', '"string"', "\"" + String(modifier.name) + "\"")); + } + break; + case 'enabled': + if (typeof modifier.enabled !== 'boolean') { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"enabled"', '"boolean"', "\"" + String(modifier.enabled) + "\"")); + } + break; + case 'phase': + if (modifierPhases.indexOf(modifier.phase) < 0) { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"phase"', "either " + modifierPhases.join(', '), "\"" + String(modifier.phase) + "\"")); + } + break; + case 'fn': + if (typeof modifier.fn !== 'function') { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"fn"', '"function"', "\"" + String(modifier.fn) + "\"")); + } + break; + case 'effect': + if (modifier.effect != null && typeof modifier.effect !== 'function') { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"effect"', '"function"', "\"" + String(modifier.fn) + "\"")); + } + break; + case 'requires': + if (modifier.requires != null && !Array.isArray(modifier.requires)) { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requires"', '"array"', "\"" + String(modifier.requires) + "\"")); + } + break; + case 'requiresIfExists': + if (!Array.isArray(modifier.requiresIfExists)) { + console.error(format(INVALID_MODIFIER_ERROR, modifier.name, '"requiresIfExists"', '"array"', "\"" + String(modifier.requiresIfExists) + "\"")); + } + break; + case 'options': + case 'data': + break; + default: + console.error("PopperJS: an invalid property has been provided to the \"" + modifier.name + "\" modifier, valid properties are " + VALID_PROPERTIES.map(function (s) { + return "\"" + s + "\""; + }).join(', ') + "; but \"" + key + "\" was provided."); + } + modifier.requires && modifier.requires.forEach(function (requirement) { + if (modifiers.find(function (mod) { + return mod.name === requirement; + }) == null) { + console.error(format(MISSING_DEPENDENCY_ERROR, String(modifier.name), requirement, requirement)); + } + }); + }); + }); +} +function uniqueBy(arr, fn) { + var identifiers = new Set(); + return arr.filter(function (item) { + var identifier = fn(item); + if (!identifiers.has(identifier)) { + identifiers.add(identifier); + return true; + } + }); +} +function getBasePlacement(placement) { + return placement.split('-')[0]; +} function mergeByName(modifiers) { var merged = modifiers.reduce(function (merged, current) { var existing = merged[current.name]; @@ -1592,9 +1677,6 @@ function getClippingRect(element, boundary, rootBoundary, strategy) { clippingRect.y = clippingRect.top; return clippingRect; } -function getBasePlacement(placement) { - return placement.split('-')[0]; -} function getVariation(placement) { return placement.split('-')[1]; } @@ -1725,6 +1807,8 @@ function detectOverflow(state, options) { } return overflowOffsets; } +var INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.'; +var INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.'; var DEFAULT_OPTIONS = { placement: 'bottom', modifiers: [], @@ -1781,7 +1865,37 @@ function popperGenerator(generatorOptions) { state.orderedModifiers = orderedModifiers.filter(function (m) { return m.enabled; - }); + }); // Validate the provided modifiers so that the consumer will get warned + // if one of the modifiers is invalid for any reason + + if (process.env.NODE_ENV !== "production") { + var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) { + var name = _ref.name; + return name; + }); + validateModifiers(modifiers); + if (getBasePlacement(state.options.placement) === auto) { + var flipModifier = state.orderedModifiers.find(function (_ref2) { + var name = _ref2.name; + return name === 'flip'; + }); + if (!flipModifier) { + console.error(['Popper: "auto" placements require the "flip" modifier be', 'present and enabled to work.'].join(' ')); + } + } + var _getComputedStyle = getComputedStyle(popper), + marginTop = _getComputedStyle.marginTop, + marginRight = _getComputedStyle.marginRight, + marginBottom = _getComputedStyle.marginBottom, + marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can + // cause bugs with positioning, so we'll warn the consumer + + if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) { + return parseFloat(margin); + })) { + console.warn(['Popper: CSS "margin" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' ')); + } + } runModifierEffects(); return instance.update(); }, @@ -1800,6 +1914,9 @@ function popperGenerator(generatorOptions) { // anymore if (!areValidElements(reference, popper)) { + if (process.env.NODE_ENV !== "production") { + console.error(INVALID_ELEMENT_ERROR); + } return; } // Store the reference and popper rects to be read by modifiers @@ -1821,7 +1938,15 @@ function popperGenerator(generatorOptions) { state.orderedModifiers.forEach(function (modifier) { return state.modifiersData[modifier.name] = Object.assign({}, modifier.data); }); + var __debug_loops__ = 0; for (var index = 0; index < state.orderedModifiers.length; index++) { + if (process.env.NODE_ENV !== "production") { + __debug_loops__ += 1; + if (__debug_loops__ > 100) { + console.error(INFINITE_LOOP_ERROR); + break; + } + } if (state.reset === true) { state.reset = false; index = -1; @@ -1856,6 +1981,9 @@ function popperGenerator(generatorOptions) { } }; if (!areValidElements(reference, popper)) { + if (process.env.NODE_ENV !== "production") { + console.error(INVALID_ELEMENT_ERROR); + } return instance; } instance.setOptions(options).then(function (state) { @@ -1869,11 +1997,11 @@ function popperGenerator(generatorOptions) { // one. function runModifierEffects() { - state.orderedModifiers.forEach(function (_ref) { - var name = _ref.name, - _ref$options = _ref.options, - options = _ref$options === void 0 ? {} : _ref$options, - effect = _ref.effect; + state.orderedModifiers.forEach(function (_ref3) { + var name = _ref3.name, + _ref3$options = _ref3.options, + options = _ref3$options === void 0 ? {} : _ref3$options, + effect = _ref3.effect; if (typeof effect === 'function') { var cleanupFn = effect({ state: state, @@ -2063,6 +2191,14 @@ function computeStyles(_ref5) { adaptive = _options$adaptive === void 0 ? true : _options$adaptive, _options$roundOffsets = options.roundOffsets, roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets; + if (process.env.NODE_ENV !== "production") { + var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || ''; + if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) { + return transitionProperty.indexOf(property) >= 0; + })) { + console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: "transform", "top", "right", "bottom", "left".', '\n\n', 'Disable the "computeStyles" modifier\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\n\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' ')); + } + } var commonStyles = { placement: getBasePlacement(state.placement), variation: getVariation(state.placement), @@ -2261,6 +2397,9 @@ function computeAutoPlacement(state, options) { }); if (allowedPlacements.length === 0) { allowedPlacements = placements$1; + if (process.env.NODE_ENV !== "production") { + console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, "auto" cannot be used to allow "bottom-start".', 'Use "auto-start" instead.'].join(' ')); + } } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions... var overflows = allowedPlacements.reduce(function (acc, placement) { @@ -2570,7 +2709,15 @@ function effect(_ref2) { return; } } + if (process.env.NODE_ENV !== "production") { + if (!isHTMLElement(arrowElement)) { + console.error(['Popper: "arrow" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' ')); + } + } if (!contains(state.elements.popper, arrowElement)) { + if (process.env.NODE_ENV !== "production") { + console.error(['Popper: "arrow" modifier\'s `element` must be a child of the popper', 'element.'].join(' ')); + } return; } state.elements.arrow = arrowElement; @@ -2664,7 +2811,8 @@ exports.popperGenerator = popperGenerator; exports.popperOffsets = popperOffsets$1; exports.preventOverflow = preventOverflow$1; -},{}],10:[function(require,module,exports){ +}).call(this)}).call(this,require('_process')) +},{"_process":11}],10:[function(require,module,exports){ "use strict"; Object.defineProperty(exports, "__esModule", { @@ -7412,4 +7560,183 @@ enableDismissTrigger(Toast); defineJQueryPlugin(Toast); -},{"@popperjs/core":9}]},{},[8]); +},{"@popperjs/core":9}],11:[function(require,module,exports){ +"use strict"; + +// shim for using process in browser +var process = module.exports = {}; + +// cached from whatever global is present so that test runners that stub it +// don't break things. But we need to wrap it in a try catch in case it is +// wrapped in strict mode code which doesn't define any globals. It's inside a +// function because try/catches deoptimize in certain engines. + +var cachedSetTimeout; +var cachedClearTimeout; +function defaultSetTimout() { + throw new Error('setTimeout has not been defined'); +} +function defaultClearTimeout() { + throw new Error('clearTimeout has not been defined'); +} +(function () { + try { + if (typeof setTimeout === 'function') { + cachedSetTimeout = setTimeout; + } else { + cachedSetTimeout = defaultSetTimout; + } + } catch (e) { + cachedSetTimeout = defaultSetTimout; + } + try { + if (typeof clearTimeout === 'function') { + cachedClearTimeout = clearTimeout; + } else { + cachedClearTimeout = defaultClearTimeout; + } + } catch (e) { + cachedClearTimeout = defaultClearTimeout; + } +})(); +function runTimeout(fun) { + if (cachedSetTimeout === setTimeout) { + //normal enviroments in sane situations + return setTimeout(fun, 0); + } + // if setTimeout wasn't available but was latter defined + if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { + cachedSetTimeout = setTimeout; + return setTimeout(fun, 0); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedSetTimeout(fun, 0); + } catch (e) { + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedSetTimeout.call(null, fun, 0); + } catch (e) { + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error + return cachedSetTimeout.call(this, fun, 0); + } + } +} +function runClearTimeout(marker) { + if (cachedClearTimeout === clearTimeout) { + //normal enviroments in sane situations + return clearTimeout(marker); + } + // if clearTimeout wasn't available but was latter defined + if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { + cachedClearTimeout = clearTimeout; + return clearTimeout(marker); + } + try { + // when when somebody has screwed with setTimeout but no I.E. maddness + return cachedClearTimeout(marker); + } catch (e) { + try { + // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally + return cachedClearTimeout.call(null, marker); + } catch (e) { + // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. + // Some versions of I.E. have different rules for clearTimeout vs setTimeout + return cachedClearTimeout.call(this, marker); + } + } +} +var queue = []; +var draining = false; +var currentQueue; +var queueIndex = -1; +function cleanUpNextTick() { + if (!draining || !currentQueue) { + return; + } + draining = false; + if (currentQueue.length) { + queue = currentQueue.concat(queue); + } else { + queueIndex = -1; + } + if (queue.length) { + drainQueue(); + } +} +function drainQueue() { + if (draining) { + return; + } + var timeout = runTimeout(cleanUpNextTick); + draining = true; + var len = queue.length; + while (len) { + currentQueue = queue; + queue = []; + while (++queueIndex < len) { + if (currentQueue) { + currentQueue[queueIndex].run(); + } + } + queueIndex = -1; + len = queue.length; + } + currentQueue = null; + draining = false; + runClearTimeout(timeout); +} +process.nextTick = function (fun) { + var args = new Array(arguments.length - 1); + if (arguments.length > 1) { + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + } + queue.push(new Item(fun, args)); + if (queue.length === 1 && !draining) { + runTimeout(drainQueue); + } +}; + +// v8 likes predictible objects +function Item(fun, array) { + this.fun = fun; + this.array = array; +} +Item.prototype.run = function () { + this.fun.apply(null, this.array); +}; +process.title = 'browser'; +process.browser = true; +process.env = {}; +process.argv = []; +process.version = ''; // empty string to avoid regexp issues +process.versions = {}; +function noop() {} +process.on = noop; +process.addListener = noop; +process.once = noop; +process.off = noop; +process.removeListener = noop; +process.removeAllListeners = noop; +process.emit = noop; +process.prependListener = noop; +process.prependOnceListener = noop; +process.listeners = function (name) { + return []; +}; +process.binding = function (name) { + throw new Error('process.binding is not supported'); +}; +process.cwd = function () { + return '/'; +}; +process.chdir = function (dir) { + throw new Error('process.chdir is not supported'); +}; +process.umask = function () { + return 0; +}; + +},{}]},{},[8]);