/******/ (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 How to Install Hardwood Floors - Parquet Flooring Dubai
No Comments

How to Install Hardwood Floors

Hardwood Floors

The installation of hardwood floors in your space is one of the best ways to improve your home’s beauty. The right installation, with the right tools and a little planning, can improve your desired elegance. Parquet Flooring Dubai provides expert installation services of these hardwood floors according to your preferences. In this guide, we will be discussing professional steps to install hardwood floors in your space.

Why There is need of Hardwood Floors?

Before making hardwood floor installation, you should know why hardwood floors are a great choice for home and commercial spaces.

  • Hardwood floors bring timeless elegance by adding natural warmth.
  • Hardwood floors last for decades if kept with proper care.
  • These floors need little maintenance and can be swept or mopped.
  • Buyers love these hardwood floors because they increase their home value.

Tools Required

Before installing hardwood floors, make sure you have the following tools

 

  • Measuring tape
  • Pry bar
  • Hammer or Rubber Mallet
  • Chalk line
  • Floor nailer or stapler
  • Circular saw or miter saw
  • Drill Machine
  • Utility Knife
  • Levelor
  • Moisture Meter

Materials Required

  • Hardwood planks
  • Underlayment
  • Vapor barrier
  • Flooring Nails
  • Wood Glue
  • Spacers
  • Transition Strips

Steps for a Proper Hardwood Installation

  • Choose the Right Hardwood

There are two types of hardwood flooring

Solid Hardwood

Solid hardwood is made from a single piece of wood and it can be refinished many times as per your needs.

Engineered hardwood

This hardwood flooring is crafted with a real hardwood top layer and plywood beneath it. This type is excellent for moisture-prone areas like basements and kitchens.

  • Acclimate the Wood

Hardwood floors usually adjust according to your room temperature and humidity. For this reason, you need to unbox the planks and let them sit in your room for 4-5 days. This will help planks resist more expansion or shrinking after floors installation.

  • Prepare the Subfloor

Start the installation process by removing old flooring and thoroughly cleaning the subfloor. That floor should be

  • Dry
  • Flat
  • Clean
  • Structurally Sound

Use a level tool to check for dips and bumps. Sand down high spots or fill in low areas. If you are installing it over concrete, try applying a vapor barrier.

  • Install Underlayment

You should install an underlayment according to your floor and subfloor type. It will add cushioning, soundproofing and moisture protection features.

Roll out all the underlayment and secure it with tape. Keep avoiding overlaps.

  • Plan Your Layout

Measure your room and use a chalk line to mark the starting point for the installation. It is good to run the hardwood planks parallel to the longest wall or main light source. Make sure the layout allows for staggered seams and never align them side by side.

  • Begin the Installation

Nail Down Method

  • Start your installation from the longest wall and leave almost a ½ gap for expansion that may occur in cold weather.
  • You should nail the row through the tongue and close the wall.
  • Fasten each plank with the help of a floor nailer.
  • Stagger the seams between rows by cutting planks to length.
  • Use a tapping block or a mallet to snug planks together.

Glue Down Method

  • Consider applying the adhesive with a trowel in small sections.
  • Press the planks into the glue.
  • Use spacers to keep the expansion gap along walls.
  • Wipe off any excess glue before it dries.

Floating Foor

  • Attach the planks using a click lock system or by gluing the tongues.
  • No nails or glue are needed in the subfloor in this method.
  • Use a spacer around the room for expansion gaps.
  • Cut around Obstacles

Use a cutter or a jigsaw to cut planks around door frames, vents, and corners. Always double-check your measurements before cutting these planks.

  • Finishing Touches

Once all planks are installed:

  • Remove spacers.
  • Install baseboards or quarter-round molding to cover expansion gaps.
  • Add transition strips between hardwood and other flooring types.

Let the floor dry and settle for 24 hours before placing furniture on it.

Tips to get a professional finish

  • Start installation in small sections
  • Keep a clean workspace.
  • Wear knee pads to avoid any injury.
  • Mix planks from different boxes to vary color and grain.
  • Keep temperature and humidity stable throughout the installation.

Conclusion

Installation of hardwood floors may seem like a difficult and big job, but if it is done in steps, it becomes totally doable. These floors bring stunning results that transform your space. Hire a professional, in case DIY becomes too much to handle. You can achieve the kind of results you want on your floors without any trouble, as it can be achieved seamlessly with right tools.

Looking for professional flooring installation? Contact Parquet Flooring Dubai to get hassle-free and seamless hardwood floor installation at your doorstep.

You might also like