/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

"use strict";

const {
  getFormatStr,
  getStr,
} = require("resource://devtools/client/inspector/changes/utils/l10n.js");

/**
 * Get a human-friendly style source path to display in the Changes panel.
 * For element inline styles, return a string indicating that.
 * For inline stylesheets, return a string indicating that plus the stylesheet's index.
 * For URLs, return just the stylesheet filename.
 *
 * @param {Object} source
 *        Information about the style source. Contains:
 *        - type: {String} One of "element" or "stylesheet"
 *        - href: {String|null} Stylesheet URL or document URL for elmeent inline styles
 *        - index: {Number} Position of the stylesheet in its document's stylesheet list.
 * @return {String}
 */
function getSourceForDisplay(source) {
  let href;

  switch (source.type) {
    case "element":
      href = getStr("changes.elementStyleLabel");
      break;
    case "inline":
      href = getFormatStr("changes.inlineStyleSheetLabel", `#${source.index}`);
      break;
    case "stylesheet":
      const url = new URL(source.href);
      href = url.pathname.substring(url.pathname.lastIndexOf("/") + 1);
      break;
  }

  return href;
}

module.exports.getSourceForDisplay = getSourceForDisplay;
