/******/ (function() { // webpackBootstrap /******/ "use strict"; /******/ var __webpack_modules__ = ({ /***/ "@reduxjs/toolkit": /*!****************************************************!*\ !*** external ["elementorVendors","reduxToolkit"] ***! \****************************************************/ /***/ (function(module) { module.exports = window["elementorVendors"]["reduxToolkit"]; /***/ }), /***/ "react-redux": /*!**************************************************!*\ !*** external ["elementorVendors","reactRedux"] ***! \**************************************************/ /***/ (function(module) { module.exports = window["elementorVendors"]["reactRedux"]; /***/ }) /******/ }); /************************************************************************/ /******/ // The module cache /******/ var __webpack_module_cache__ = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ // Check if module is in cache /******/ var cachedModule = __webpack_module_cache__[moduleId]; /******/ if (cachedModule !== undefined) { /******/ return cachedModule.exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = __webpack_module_cache__[moduleId] = { /******/ // no module.id needed /******/ // no module.loaded needed /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /************************************************************************/ /******/ /* webpack/runtime/compat get default export */ /******/ !function() { /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function() { return module['default']; } : /******/ function() { return module; }; /******/ __webpack_require__.d(getter, { a: getter }); /******/ return getter; /******/ }; /******/ }(); /******/ /******/ /* webpack/runtime/define property getters */ /******/ !function() { /******/ // define getter functions for harmony exports /******/ __webpack_require__.d = function(exports, definition) { /******/ for(var key in definition) { /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); /******/ } /******/ } /******/ }; /******/ }(); /******/ /******/ /* webpack/runtime/hasOwnProperty shorthand */ /******/ !function() { /******/ __webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); } /******/ }(); /******/ /******/ /* webpack/runtime/make namespace object */ /******/ !function() { /******/ // define __esModule on exports /******/ __webpack_require__.r = function(exports) { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ }(); /******/ /************************************************************************/ var __webpack_exports__ = {}; // This entry needs to be wrapped in an IIFE because it needs to be isolated against other modules in the chunk. !function() { /*!***************************************************!*\ !*** ./packages/packages/libs/store/src/index.ts ***! \***************************************************/ __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ __StoreProvider: function() { return /* reexport safe */ react_redux__WEBPACK_IMPORTED_MODULE_1__.Provider; }, /* harmony export */ __addMiddleware: function() { return /* binding */ addMiddleware; }, /* harmony export */ __createAction: function() { return /* reexport safe */ _reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0__.createAction; }, /* harmony export */ __createAsyncThunk: function() { return /* reexport safe */ _reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0__.createAsyncThunk; }, /* harmony export */ __createSelector: function() { return /* reexport safe */ _reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0__.createSelector; }, /* harmony export */ __createSlice: function() { return /* reexport safe */ _reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0__.createSlice; }, /* harmony export */ __createStore: function() { return /* binding */ createStore; }, /* harmony export */ __deleteStore: function() { return /* binding */ deleteStore; }, /* harmony export */ __dispatch: function() { return /* binding */ dispatch; }, /* harmony export */ __getState: function() { return /* binding */ getState; }, /* harmony export */ __getStore: function() { return /* binding */ getStore; }, /* harmony export */ __registerSlice: function() { return /* binding */ registerSlice; }, /* harmony export */ __subscribe: function() { return /* binding */ subscribe; }, /* harmony export */ __subscribeWithSelector: function() { return /* binding */ subscribeWithSelector; }, /* harmony export */ __useDispatch: function() { return /* reexport safe */ react_redux__WEBPACK_IMPORTED_MODULE_1__.useDispatch; }, /* harmony export */ __useSelector: function() { return /* reexport safe */ react_redux__WEBPACK_IMPORTED_MODULE_1__.useSelector; } /* harmony export */ }); /* harmony import */ var _reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @reduxjs/toolkit */ "@reduxjs/toolkit"); /* harmony import */ var _reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-redux */ "react-redux"); /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_1__); /** * Usage: * * const mySlice = addSlice( ... ); * * type MySliceState = SliceState; * * const value = useSelector( ( state: MySliceState ) => state.mySlice.value ); */ // The `configureStore` function from Redux Toolkit infers its actions from the `reducers` // key of the initialization object. This is fine when creating the store statically, but // breaks in our case since we create the store dynamically, which means that TypeScript // can't infer the types. Therefore, we force the store to accept any actions using a // generic store type. // eslint-disable-next-line @typescript-eslint/no-explicit-any let instance = null; let slices = {}; const pendingActions = []; const middlewares = new Set(); const getReducers = () => { const reducers = Object.entries(slices).reduce((reducersData, [name, slice]) => { reducersData[name] = slice.reducer; return reducersData; }, {}); return (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0__.combineReducers)(reducers); }; function registerSlice(slice) { if (slices[slice.name]) { throw new Error(`Slice with name "${slice.name}" already exists.`); } slices[slice.name] = slice; } const addMiddleware = middleware => { middlewares.add(middleware); }; // eslint-disable-next-line @typescript-eslint/no-explicit-any -- See the comment above about `AnyStore` const dispatch = action => { if (!instance) { pendingActions.push(action); return; } return instance.dispatch(action); }; const getState = () => { if (!instance) { throw new Error('The store instance does not exist.'); } return instance.getState(); }; const subscribe = listener => { if (!instance) { throw new Error('The store instance does not exist.'); } return instance.subscribe(listener); }; // eslint-disable-next-line @typescript-eslint/no-explicit-any const subscribeWithSelector = (selector, listener) => { let prevState = selector(getState()); return subscribe(() => { const nextState = selector(getState()); if (prevState === nextState) { return; } prevState = nextState; listener(nextState); }); }; const createStore = () => { if (instance) { throw new Error('The store instance already exists.'); } instance = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_0__.configureStore)({ reducer: getReducers(), middleware: getDefaultMiddleware => { return [...getDefaultMiddleware(), ...Array.from(middlewares)]; } }); if (pendingActions.length) { pendingActions.forEach(action => dispatch(action)); pendingActions.length = 0; } return instance; }; const getStore = () => { return instance; }; const deleteStore = () => { instance = null; slices = {}; pendingActions.length = 0; middlewares.clear(); }; }(); (window.elementorV2 = window.elementorV2 || {}).store = __webpack_exports__; /******/ })() ; window.elementorV2.store?.init?.(); //# sourceMappingURL=store.js.mapPremium Pros And Cons Of Rubber Flooring | A Comprehensive Guide
No Comments

The Pros And Cons Of Rubber Flooring

The Pros And Cons Of Rubber Flooring

Rubber flooring has been growing in popularity for use in different spaces. But is it the right choice for your space? Here we outline the pros and cons of rubber flooring to help inform your decision.

This flooring offers benefits like durability, shock absorption, sound reduction, and ease of cleaning. The pros and cons of rubber flooring depends somewhat on the specific environment it will be used in. In today’s article, we’ll examine the potential advantages and disadvantages of these floors.

Pros of Rubber Flooring

There are many reasons to choose rubber flooring for different spaces. Some of the pros include:

1. Durability

Rubber is extremely durable and stands up well to heavy foot traffic. Quality rubber tiles and rolls can last 20-25 years or more with proper care and maintenance. This makes it ideal for commercial settings and homes with pets and active children. You won’t be replacing rubber floors anytime soon.

2. Shock Absorption

Thanks to its elasticity, rubber floors absorb shock and impact. This is gentler underfoot, reducing fatigue. It also provides cushioning if someone falls, making it safer for play areas, gyms, and elderly care facilities. The exceptional shock absorption of rubber floors is a major plus.

3. Sound Dampening

Rubber naturally dampens sound by up to 10-20 decibels. Unlike loud laminate or tile, rubber flooring absorbs noise from footsteps and falling items. This helps keep sound levels lower in multi-unit housing, gymnasiums, playrooms, and more.

4. Easy Maintenance

Properly sealed rubber flooring repels liquids, dirt, and grime. It can easily be cleaned by damp mopping with a gentle cleaner. Heavy scrubbing or waxing isn’t required when it is used as a gym flooring. Many types also have antimicrobial properties to inhibit molds and bacteria. This ease of maintenance is a huge perk.

5. Temperature Neutral

Unlike wood, tile, or laminate which can feel cold underfoot, rubber flooring maintains a temperature-neutral surface. This adds comfort in basements or areas prone to temperature fluctuations.

6. Customizable Style

From eye-catching colors and patterns to a classic black gym mat style, there are endless design options. Custom logos can also be incorporated on rubber flooring for businesses, sports teams, etc. This lets you tailor the look to suit your space.

Pros of Rubber Flooring

Cons of Rubber Flooring

There are some minor drawbacks of choosing these floors. The cons of rubber flooring include:

1. Upfront Cost

The installation cost is higher than basic flooring like carpet, vinyl, and laminate. But lower than higher-end ceramic tile or solid hardwood. This upfront investment pays off long-term thanks to extreme durability and decades of use per installation.

2. Off-Gassing

Some people note a strong rubber odor from lower-quality flooring, especially when newly installed. Seek products marked “low VOC” (volatile organic compounds). 

3. Regular Sealing

While resistant to most liquids, moisture can seep between tile seams or through microscopic perforations in the material over months and years. Annual or bi-annual sealing is essential to waterproof rubber floors as time passes. Skip this and moisture infiltration can lead to mold, mildew, and floor failure.

4. Limitations With Underfloor Heating

Unlike stone, ceramic, or wood floors, rubber is not well suited for radiant heating systems. It acts as an insulator, failing to transmit warmth efficiently from subfloor pipes or electric grids. This limits options for supplemental warmth. Look to alternative flooring types if radiant heat is preferred.

Ideal Uses for Rubber Flooring

Rubber floor tiles and sheets have flexibility across numerous residential, commercial, and institutional settings. After weighing the pros and cons of rubber flooring, ideal applications include:

Ideal Uses for Rubber Flooring

Playrooms & Game Rooms

Thanks to rubber’s noise-dampening, safety, and durability, it shines in kids’ recreational spaces. Protective and practical underactive young feet.

Home Gyms & Exercise Rooms

The ultimate shock-absorbing foundation for cardio gear, strength training, HIIT workouts, yoga, etc. Cushions fall, reduce injuries, and muffle noise.

Daycare & Preschool Facilities

Desktop daycares and learning centers welcome rubber floors’ sound absorption, easy cleaning, and slip resistance. A safe choice for little ones at play and rest time.

Retail Spaces

Durable rubber withstands heavy customer traffic in stores and malls. Easy maintenance also appeals to facilities management teams. Style options from modern to vintage distinguish brand identity.

Sports Training Facilities

Protect athletes while promoting performance with rubber sports mats. Absorbs shock for reduced injuries during repetitive plyometrics and weightlifting.

Conclusion

Ultimately rubber flooring brings an exceptional balance of performance, safety, acoustic comfort, and sensible economics. After examining the pros and cons of rubber flooring, it is evident rubber is ideal for settings from home gyms to daycares to sports facilities and beyond. 

With proper installation and routine sealing, quality rubber floors will serve properties exceptionally for decades. Weigh your unique needs and space considerations as you explore if this is the right flooring for your next project.

Read more: Best Flooring Option For Home

You might also like