@inpageedit/core 0.13.1 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/LICENSE +20 -20
  2. package/dist/{BasePlugin-Bf2UuIHF.js → BasePlugin-CU8beLYu.js} +17 -26
  3. package/dist/BasePlugin-CU8beLYu.js.map +1 -0
  4. package/dist/IconQuickEdit-CMCQncyj.js.map +1 -1
  5. package/dist/InputBox-nQKtiWtZ.js.map +1 -1
  6. package/dist/{PluginPrefSync-Dn1Xsiqz.js → PluginPrefSync-B-gPsC2n.js} +124 -128
  7. package/dist/PluginPrefSync-B-gPsC2n.js.map +1 -0
  8. package/dist/PluginStoreApp-CDteVCBG.js +453 -0
  9. package/dist/PluginStoreApp-CDteVCBG.js.map +1 -0
  10. package/dist/{endpoints-DgyuoRZd.js → Preferences-85Q9FAmb.js} +589 -565
  11. package/dist/Preferences-85Q9FAmb.js.map +1 -0
  12. package/dist/WatchlistAction-BbNAyryN.js.map +1 -1
  13. package/dist/components/index.js.map +1 -1
  14. package/dist/{index-DqA6EAM6.js → index-19CgGBI0.js} +1419 -921
  15. package/dist/index-19CgGBI0.js.map +1 -0
  16. package/dist/{index-B7c6jL9x.js → index-BKIf3i0I.js} +146 -137
  17. package/dist/index-BKIf3i0I.js.map +1 -0
  18. package/dist/{index-CCRMmnwk.js → index-BrtFJ-M0.js} +67 -66
  19. package/dist/index-BrtFJ-M0.js.map +1 -0
  20. package/dist/index-CG38LlAh.js.map +1 -1
  21. package/dist/index-CM_6yF2v.js.map +1 -1
  22. package/dist/index-CQr1DJ8n.js +173 -0
  23. package/dist/index-CQr1DJ8n.js.map +1 -0
  24. package/dist/{index-BQ-cHWkJ.js → index-CVTBg5O9.js} +66 -48
  25. package/dist/index-CVTBg5O9.js.map +1 -0
  26. package/dist/index-Ci82vLXg.js +179 -0
  27. package/dist/index-Ci82vLXg.js.map +1 -0
  28. package/dist/{index-BwdWyHLe.js → index-D3iZhRMJ.js} +93 -93
  29. package/dist/index-D3iZhRMJ.js.map +1 -0
  30. package/dist/index-DD5CVCfD.js.map +1 -1
  31. package/dist/{index-BJ7_Q1mB.js → index-DGtq21uW.js} +17 -16
  32. package/dist/index-DGtq21uW.js.map +1 -0
  33. package/dist/index-DXL7teb0.js +394 -0
  34. package/dist/index-DXL7teb0.js.map +1 -0
  35. package/dist/index-DjPpAyfE.js +116 -0
  36. package/dist/index-DjPpAyfE.js.map +1 -0
  37. package/dist/{index-eSlbrNqF.js → index-rpiO9fpc.js} +4 -5
  38. package/dist/{index-eSlbrNqF.js.map → index-rpiO9fpc.js.map} +1 -1
  39. package/dist/index.d.ts +318 -25
  40. package/dist/index.js +32 -26
  41. package/dist/index.js.map +1 -1
  42. package/dist/makeCallable-LDU0xZMJ.js.map +1 -1
  43. package/dist/models/index.js +174 -154
  44. package/dist/models/index.js.map +1 -1
  45. package/dist/noop-ClDc6zv4.js.map +1 -1
  46. package/dist/plugins/index.js +10 -10
  47. package/dist/services/index.js +1 -1
  48. package/dist/style.css +1 -1
  49. package/dist/vueHooks-l04s8cIl.js.map +1 -1
  50. package/lib/index.umd.js +20 -12
  51. package/lib/index.umd.js.map +1 -1
  52. package/lib/style.css +1 -1
  53. package/package.json +4 -4
  54. package/dist/BasePlugin-Bf2UuIHF.js.map +0 -1
  55. package/dist/PluginPrefSync-Dn1Xsiqz.js.map +0 -1
  56. package/dist/PluginStoreApp-CpOLArL7.js +0 -452
  57. package/dist/PluginStoreApp-CpOLArL7.js.map +0 -1
  58. package/dist/Preferences-DS4-CFWe.js +0 -9
  59. package/dist/Preferences-DS4-CFWe.js.map +0 -1
  60. package/dist/endpoints-DgyuoRZd.js.map +0 -1
  61. package/dist/index-2RfILgXm.js +0 -180
  62. package/dist/index-2RfILgXm.js.map +0 -1
  63. package/dist/index-B7c6jL9x.js.map +0 -1
  64. package/dist/index-BJ7_Q1mB.js.map +0 -1
  65. package/dist/index-BNh95-x2.js +0 -115
  66. package/dist/index-BNh95-x2.js.map +0 -1
  67. package/dist/index-BQ-cHWkJ.js.map +0 -1
  68. package/dist/index-BwdWyHLe.js.map +0 -1
  69. package/dist/index-CCRMmnwk.js.map +0 -1
  70. package/dist/index-CnIpUF9x.js +0 -173
  71. package/dist/index-CnIpUF9x.js.map +0 -1
  72. package/dist/index-CyG7_IYz.js +0 -394
  73. package/dist/index-CyG7_IYz.js.map +0 -1
  74. package/dist/index-DqA6EAM6.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index-CM_6yF2v.js","sources":["../../../node_modules/.pnpm/jsx-dom@8.1.6/node_modules/jsx-dom/index.js","../src/components/ProgressBar/index.tsx"],"sourcesContent":["/* eslint-disable */\nconst keys = Object.keys;\nfunction identity(value) {\n return value;\n}\nfunction isBoolean(val) {\n return typeof val === \"boolean\";\n}\nfunction isElement(val) {\n return val && typeof val.nodeType === \"number\";\n}\nfunction isString(val) {\n return typeof val === \"string\";\n}\nfunction isNumber(val) {\n return typeof val === \"number\";\n}\nfunction isObject(val) {\n return typeof val === \"object\" ? val !== null : isFunction(val);\n}\nfunction isFunction(val) {\n return typeof val === \"function\";\n}\nfunction isComponentClass(Component) {\n return !!(Component && Component.isComponent);\n}\nfunction isArrayLike(obj) {\n return (\n isObject(obj) &&\n typeof obj.length === \"number\" &&\n typeof obj.nodeType !== \"number\"\n );\n}\nfunction forEach(value, fn) {\n if (!value) return;\n for (const key of keys(value)) {\n fn(value[key], key);\n }\n}\n\nfunction createRef() {\n return Object.seal({\n current: null,\n });\n}\nfunction isRef(maybeRef) {\n return isObject(maybeRef) && \"current\" in maybeRef;\n}\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found on\n * https://github.com/facebook/react/blob/b87aabdfe1b7461e7331abb3601d9e6bb27544bc/LICENSE\n */\n\n/**\n * CSS properties which accept numbers but are not in units of \"px\".\n */\nconst isUnitlessNumber = {\n animationIterationCount: 0,\n borderImageOutset: 0,\n borderImageSlice: 0,\n borderImageWidth: 0,\n boxFlex: 0,\n boxFlexGroup: 0,\n boxOrdinalGroup: 0,\n columnCount: 0,\n columns: 0,\n flex: 0,\n flexGrow: 0,\n flexPositive: 0,\n flexShrink: 0,\n flexNegative: 0,\n flexOrder: 0,\n gridArea: 0,\n gridRow: 0,\n gridRowEnd: 0,\n gridRowSpan: 0,\n gridRowStart: 0,\n gridColumn: 0,\n gridColumnEnd: 0,\n gridColumnSpan: 0,\n gridColumnStart: 0,\n fontWeight: 0,\n lineClamp: 0,\n lineHeight: 0,\n opacity: 0,\n order: 0,\n orphans: 0,\n tabSize: 0,\n widows: 0,\n zIndex: 0,\n zoom: 0,\n // SVG-related properties\n fillOpacity: 0,\n floodOpacity: 0,\n stopOpacity: 0,\n strokeDasharray: 0,\n strokeDashoffset: 0,\n strokeMiterlimit: 0,\n strokeOpacity: 0,\n strokeWidth: 0,\n};\n\n/**\n * @param prefix vendor-specific prefix, eg: Webkit\n * @param key style name, eg: transitionDuration\n * @return style name prefixed with `prefix`, properly camelCased, eg:\n * WebkitTransitionDuration\n */\nfunction prefixKey(prefix, key) {\n return prefix + key.charAt(0).toUpperCase() + key.substring(1);\n}\n\n/**\n * Support style names that may come passed in prefixed by adding permutations\n * of vendor prefixes.\n */\nconst prefixes = [\"Webkit\", \"ms\", \"Moz\", \"O\"];\n// Using Object.keys here, or else the vanilla for-in loop makes IE8 go into an\n// infinite loop, because it iterates over the newly added props too.\nkeys(isUnitlessNumber).forEach((prop) => {\n prefixes.forEach((prefix) => {\n isUnitlessNumber[prefixKey(prefix, prop)] = 0; // isUnitlessNumber[prop]\n });\n});\n\nconst jsxDomType = Symbol.for(\"jsx-dom:type\");\nvar JsxDomType = /*#__PURE__*/ (function (JsxDomType) {\n JsxDomType[\"ShadowRoot\"] = \"ShadowRoot\";\n return JsxDomType;\n})(JsxDomType || {});\nfunction ShadowRoot(_ref) {\n let { children, ref, ...attr } = _ref;\n return {\n [jsxDomType]: JsxDomType.ShadowRoot,\n ref,\n attr,\n children,\n };\n}\nfunction isShadowRoot(el) {\n return el != null && el[jsxDomType] === JsxDomType.ShadowRoot;\n}\n\nconst SVGNamespace = \"http://www.w3.org/2000/svg\";\nconst XLinkNamespace = \"http://www.w3.org/1999/xlink\";\nconst XMLNamespace = \"http://www.w3.org/XML/1998/namespace\";\n\n// https://facebook.github.io/react/docs/jsx-in-depth.html#booleans-null-and-undefined-are-ignored\n// Emulate JSX Expression logic to ignore certain type of children or className.\nfunction isVisibleChild(value) {\n return !isBoolean(value) && value != null;\n}\n\n/**\n * Convert a `value` to a className string.\n * `value` can be a string, an array or a `Dictionary<boolean>`.\n */\nfunction className(value) {\n if (Array.isArray(value)) {\n return value.map(className).filter(Boolean).join(\" \");\n } else if (isObject(value)) {\n if (Symbol.iterator in value) {\n return className(Array.from(value));\n }\n return keys(value)\n .filter((k) => value[k])\n .join(\" \");\n } else if (isVisibleChild(value)) {\n return \"\" + value;\n } else {\n return \"\";\n }\n}\nconst svg = {\n animate: 0,\n circle: 0,\n clipPath: 0,\n defs: 0,\n desc: 0,\n ellipse: 0,\n feBlend: 0,\n feColorMatrix: 0,\n feComponentTransfer: 0,\n feComposite: 0,\n feConvolveMatrix: 0,\n feDiffuseLighting: 0,\n feDisplacementMap: 0,\n feDistantLight: 0,\n feFlood: 0,\n feFuncA: 0,\n feFuncB: 0,\n feFuncG: 0,\n feFuncR: 0,\n feGaussianBlur: 0,\n feImage: 0,\n feMerge: 0,\n feMergeNode: 0,\n feMorphology: 0,\n feOffset: 0,\n fePointLight: 0,\n feSpecularLighting: 0,\n feSpotLight: 0,\n feTile: 0,\n feTurbulence: 0,\n filter: 0,\n foreignObject: 0,\n g: 0,\n image: 0,\n line: 0,\n linearGradient: 0,\n marker: 0,\n mask: 0,\n metadata: 0,\n path: 0,\n pattern: 0,\n polygon: 0,\n polyline: 0,\n radialGradient: 0,\n rect: 0,\n stop: 0,\n svg: 0,\n switch: 0,\n symbol: 0,\n text: 0,\n textPath: 0,\n tspan: 0,\n use: 0,\n view: 0,\n};\nconst nonPresentationSVGAttributes =\n /^(a(ll|t|u)|base[FP]|c(al|lipPathU|on)|di|ed|ex|filter[RU]|g(lyphR|r)|ke|l(en|im)|ma(rker[HUW]|s)|n|pat|pr|point[^e]|re[^n]|s[puy]|st[^or]|ta|textL|vi|xC|y|z)/;\nfunction createFactory(tag) {\n return createElement.bind(null, tag);\n}\nfunction Fragment(attr) {\n const fragment = document.createDocumentFragment();\n appendChild(attr.children, fragment);\n return fragment;\n}\nclass Component {\n static isComponent = true;\n constructor(props) {\n this.props = props;\n }\n render() {\n return null;\n }\n}\nfunction initComponentClass(Class, attr, children) {\n attr = {\n ...attr,\n children,\n };\n const instance = new Class(attr);\n const node = instance.render();\n if (\"ref\" in attr) {\n attachRef(attr.ref, instance);\n }\n return node;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction jsx(tag, _ref) {\n let { children, ...attr } = _ref;\n if (!attr.namespaceURI && svg[tag] === 0) {\n attr = {\n ...attr,\n namespaceURI: SVGNamespace,\n };\n }\n let node;\n if (isString(tag)) {\n node = attr.namespaceURI\n ? document.createElementNS(attr.namespaceURI, tag)\n : document.createElement(tag);\n attributes(attr, node);\n appendChild(children, node);\n\n // Select `option` elements in `select`\n if (node instanceof window.HTMLSelectElement && attr.value != null) {\n if (attr.multiple === true && Array.isArray(attr.value)) {\n const values = attr.value.map((value) => String(value));\n node\n .querySelectorAll(\"option\")\n .forEach(\n (option) => (option.selected = values.includes(option.value)),\n );\n } else {\n node.value = attr.value;\n }\n }\n attachRef(attr.ref, node);\n } else if (isFunction(tag)) {\n // Custom elements.\n if (isObject(tag.defaultProps)) {\n attr = {\n ...tag.defaultProps,\n ...attr,\n };\n }\n node = isComponentClass(tag)\n ? initComponentClass(tag, attr, children)\n : tag({\n ...attr,\n children,\n });\n } else {\n throw new TypeError(`Invalid JSX element type: ${tag}`);\n }\n return node;\n}\nfunction createElement(tag, attr) {\n for (\n var _len = arguments.length,\n children = new Array(_len > 2 ? _len - 2 : 0),\n _key2 = 2;\n _key2 < _len;\n _key2++\n ) {\n children[_key2 - 2] = arguments[_key2];\n }\n if (isString(attr) || Array.isArray(attr)) {\n children.unshift(attr);\n attr = {};\n }\n attr = attr || {};\n if (attr.children != null && !children.length) {\n ({ children, ...attr } = attr);\n }\n return jsx(\n tag,\n {\n ...attr,\n children,\n },\n attr.key,\n );\n}\nfunction attachRef(ref, node) {\n if (isRef(ref)) {\n ref.current = node;\n } else if (isFunction(ref)) {\n ref(node);\n }\n}\nfunction appendChild(child, node) {\n if (isArrayLike(child)) {\n appendChildren(child, node);\n } else if (isString(child) || isNumber(child)) {\n appendChildToNode(document.createTextNode(child), node);\n } else if (child === null) {\n appendChildToNode(document.createComment(\"\"), node);\n } else if (isElement(child)) {\n appendChildToNode(child, node);\n } else if (isShadowRoot(child)) {\n const shadowRoot = node.attachShadow(child.attr);\n appendChild(child.children, shadowRoot);\n attachRef(child.ref, shadowRoot);\n }\n}\nfunction appendChildren(children, node) {\n for (const child of [...children]) {\n appendChild(child, node);\n }\n return node;\n}\nfunction appendChildToNode(child, node) {\n if (node instanceof window.HTMLTemplateElement) {\n node.content.appendChild(child);\n } else {\n node.appendChild(child);\n }\n}\nfunction normalizeAttribute(s, separator) {\n return s.replace(/[A-Z]/g, (match) => separator + match.toLowerCase());\n}\nfunction style(node, value) {\n if (value == null || value === false);\n else if (Array.isArray(value)) {\n value.forEach((v) => style(node, v));\n } else if (isString(value)) {\n node.setAttribute(\"style\", value);\n } else if (isObject(value)) {\n forEach(value, (val, key) => {\n if (key.indexOf(\"-\") === 0) {\n // CSS custom properties (variables) start with `-` (e.g. `--my-variable`)\n // and must be assigned via `setProperty`.\n node.style.setProperty(key, val);\n } else if (isNumber(val) && isUnitlessNumber[key] !== 0) {\n node.style[key] = val + \"px\";\n } else {\n node.style[key] = val;\n }\n });\n }\n}\nfunction attribute(key, value, node) {\n switch (key) {\n case \"xlinkActuate\":\n case \"xlinkArcrole\":\n case \"xlinkHref\":\n case \"xlinkRole\":\n case \"xlinkShow\":\n case \"xlinkTitle\":\n case \"xlinkType\":\n attrNS(node, XLinkNamespace, normalizeAttribute(key, \":\"), value);\n return;\n case \"xmlnsXlink\":\n attr(node, normalizeAttribute(key, \":\"), value);\n return;\n case \"xmlBase\":\n case \"xmlLang\":\n case \"xmlSpace\":\n attrNS(node, XMLNamespace, normalizeAttribute(key, \":\"), value);\n return;\n }\n switch (key) {\n case \"htmlFor\":\n attr(node, \"for\", value);\n return;\n case \"dataset\":\n forEach(value, (dataValue, dataKey) => {\n if (dataValue != null) {\n node.dataset[dataKey] = dataValue;\n }\n });\n return;\n case \"innerHTML\":\n case \"innerText\":\n case \"textContent\":\n if (isVisibleChild(value)) {\n node[key] = value;\n }\n return;\n case \"dangerouslySetInnerHTML\":\n if (isObject(value)) {\n node.innerHTML = value[\"__html\"];\n }\n return;\n case \"value\":\n if (value == null || node instanceof window.HTMLSelectElement) {\n // skip nullish values\n // for `<select>` apply value after appending `<option>` elements\n return;\n } else if (node instanceof window.HTMLTextAreaElement) {\n node.value = value;\n return;\n }\n // use attribute for other elements\n break;\n case \"spellCheck\":\n node.spellcheck = value;\n return;\n case \"class\":\n case \"className\":\n if (isFunction(value)) {\n value(node);\n } else {\n attr(node, \"class\", className(value));\n }\n return;\n case \"ref\":\n case \"namespaceURI\":\n return;\n case \"style\":\n style(node, value);\n return;\n case \"on\":\n case \"onCapture\":\n forEach(value, (eventHandler, eventName) => {\n node.addEventListener(eventName, eventHandler, key === \"onCapture\");\n });\n return;\n // fallthrough\n }\n if (isFunction(value)) {\n if (key[0] === \"o\" && key[1] === \"n\") {\n let attribute = key.toLowerCase();\n const useCapture = attribute.endsWith(\"capture\");\n if (attribute === \"ondoubleclick\") {\n attribute = \"ondblclick\";\n } else if (useCapture && attribute === \"ondoubleclickcapture\") {\n attribute = \"ondblclickcapture\";\n }\n if (!useCapture && node[attribute] === null) {\n // use property when possible PR #17\n node[attribute] = value;\n } else if (useCapture) {\n node.addEventListener(\n attribute.substring(2, attribute.length - 7),\n value,\n true,\n );\n } else {\n let eventName;\n if (attribute in window) {\n // standard event\n // the JSX attribute could have been \"onMouseOver\" and the\n // member name \"onmouseover\" is on the window's prototype\n // so let's add the listener \"mouseover\", which is all lowercased\n const standardEventName = attribute.substring(2);\n eventName = standardEventName;\n } else {\n // custom event\n // the JSX attribute could have been \"onMyCustomEvent\"\n // so let's trim off the \"on\" prefix and lowercase the first character\n // and add the listener \"myCustomEvent\"\n // except for the first character, we keep the event name case\n const customEventName = attribute[2] + key.slice(3);\n eventName = customEventName;\n }\n node.addEventListener(eventName, value);\n }\n }\n } else if (isObject(value)) {\n node[key] = value;\n } else if (value === true) {\n attr(node, key, \"\");\n } else if (value !== false && value != null) {\n if (node instanceof SVGElement && !nonPresentationSVGAttributes.test(key)) {\n attr(node, normalizeAttribute(key, \"-\"), value);\n } else {\n attr(node, key, value);\n }\n }\n}\nfunction attr(node, key, value) {\n node.setAttribute(key, value);\n}\nfunction attrNS(node, namespace, key, value) {\n node.setAttributeNS(namespace, key, value);\n}\nfunction attributes(attr, node) {\n for (const key of keys(attr)) {\n attribute(key, attr[key], node);\n }\n return node;\n}\n\nfunction useText(initialValue) {\n const text = new Text();\n Object.defineProperty(text, \"toString\", {\n value() {\n return this.textContent;\n },\n });\n function setText(value) {\n text.textContent = value;\n }\n if (initialValue != null) {\n setText(initialValue);\n }\n return [text, setText];\n}\nfunction useClassList(initialValue) {\n const div = document.createElement(\"div\");\n if (initialValue != null) {\n div.className = className(initialValue);\n }\n let list = div.classList;\n function ClassList(value) {\n value.setAttribute(\"class\", list.value);\n list = value.classList;\n }\n Object.defineProperties(\n ClassList,\n Object.getOwnPropertyDescriptors({\n get size() {\n return list.length;\n },\n get value() {\n return list.value;\n },\n add() {\n list.add(...arguments);\n },\n remove() {\n list.remove(...arguments);\n },\n toggle(token, force) {\n list.toggle(token, force);\n },\n contains(token) {\n return list.contains(token);\n },\n }),\n );\n return ClassList;\n}\n\nfunction useMemo(factory) {\n return factory();\n}\nfunction forwardRef(render) {\n return (_ref) => {\n let { ref, ...props } = _ref;\n return render(props, ref ?? createRef());\n };\n}\nfunction useImperativeHandle(ref, init) {\n attachRef(ref, init());\n}\n\nconst cache = /* @__PURE__ */ new Map();\nconst createStyledComponent = (name) =>\n function (list) {\n for (\n var _len = arguments.length,\n interpolations = new Array(_len > 1 ? _len - 1 : 0),\n _key = 1;\n _key < _len;\n _key++\n ) {\n interpolations[_key - 1] = arguments[_key];\n }\n return (_ref) => {\n let { style, ...props } = _ref;\n const lastIndex = list.length - 1;\n const css =\n list.slice(0, lastIndex).reduce((p, s, i) => {\n const interpolation = interpolations[i];\n const current =\n typeof interpolation === \"function\"\n ? interpolation(props)\n : interpolation;\n return p + s + current;\n }, \"\") + list[lastIndex];\n return createElement(name, {\n style: [css, style],\n ...props,\n });\n };\n };\nconst baseStyled = (customComponent) => createStyledComponent(customComponent);\nconst styled = /* @__PURE__ */ new Proxy(baseStyled, {\n get(_, name) {\n return setIfAbsent(cache, name, () => createStyledComponent(name));\n },\n});\nfunction setIfAbsent(map, key, getValue) {\n if (map.has(key)) {\n return map.get(key);\n } else {\n const value = getValue(key);\n map.set(key, value);\n return value;\n }\n}\n\nvar index = {\n Component,\n PureComponent: Component,\n createElement,\n Fragment,\n ShadowRoot,\n};\nfunction preventDefault(event) {\n event.preventDefault();\n return event;\n}\nfunction stopPropagation(event) {\n event.stopPropagation();\n return event;\n}\n\nexport {\n Component,\n Fragment,\n Component as PureComponent,\n SVGNamespace,\n ShadowRoot,\n Fragment as StrictMode,\n className,\n createElement,\n createFactory,\n createRef,\n index as default,\n forwardRef,\n createElement as h,\n isRef,\n jsx,\n jsx as jsxs,\n identity as memo,\n preventDefault,\n stopPropagation,\n styled,\n identity as useCallback,\n useClassList,\n useImperativeHandle,\n useMemo,\n createRef as useRef,\n useText,\n};\n","import { JSX } from 'vue/jsx-runtime'\r\nimport styles from './styles.module.sass'\r\n\r\nexport const ProgressBar = (\r\n attrs: JSX.IntrinsicElements['div'] & { indeterminate?: boolean; progress?: number }\r\n) => {\r\n const indeterminate = attrs.indeterminate ?? true\r\n const bar = (\r\n <div\r\n class={`${styles.ipe_progress}`}\r\n data-indeterminate={`${indeterminate}`}\r\n // @ts-ignore\r\n style={{ width: '100%', '--progress': attrs.progress ? `${attrs.progress}%` : '0%' }}\r\n {...attrs}\r\n ></div>\r\n ) as HTMLElement & { setProgress: (progress: number) => void }\r\n bar.setProgress = (progress: number | undefined) => {\r\n if (typeof progress === 'number') {\r\n bar.dataset.indeterminate = 'false'\r\n bar.style.setProperty('--progress', `${progress}%`)\r\n } else {\r\n bar.dataset.indeterminate = 'true'\r\n bar.style.setProperty('--progress', '0%')\r\n }\r\n }\r\n return bar\r\n}\r\n"],"names":["keys","isBoolean","val","isElement","isString","isNumber","isObject","isFunction","isComponentClass","Component","isArrayLike","obj","forEach","value","fn","key","isRef","maybeRef","isUnitlessNumber","prefixKey","prefix","prefixes","prop","jsxDomType","JsxDomType","isShadowRoot","el","SVGNamespace","XLinkNamespace","XMLNamespace","isVisibleChild","className","k","svg","nonPresentationSVGAttributes","Fragment","attr","fragment","appendChild","initComponentClass","Class","children","instance","node","attachRef","jsx","tag","_ref","attributes","values","option","createElement","_len","_key2","ref","child","appendChildren","appendChildToNode","shadowRoot","normalizeAttribute","s","separator","match","style","v","attribute","attrNS","dataValue","dataKey","eventHandler","eventName","useCapture","namespace","ProgressBar","attrs","indeterminate","bar","styles","progress"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"index-CM_6yF2v.js","sources":["../../../node_modules/.pnpm/jsx-dom@8.1.6/node_modules/jsx-dom/index.js","../src/components/ProgressBar/index.tsx"],"sourcesContent":["/* eslint-disable */\nconst keys = Object.keys;\nfunction identity(value) {\n return value;\n}\nfunction isBoolean(val) {\n return typeof val === \"boolean\";\n}\nfunction isElement(val) {\n return val && typeof val.nodeType === \"number\";\n}\nfunction isString(val) {\n return typeof val === \"string\";\n}\nfunction isNumber(val) {\n return typeof val === \"number\";\n}\nfunction isObject(val) {\n return typeof val === \"object\" ? val !== null : isFunction(val);\n}\nfunction isFunction(val) {\n return typeof val === \"function\";\n}\nfunction isComponentClass(Component) {\n return !!(Component && Component.isComponent);\n}\nfunction isArrayLike(obj) {\n return (\n isObject(obj) &&\n typeof obj.length === \"number\" &&\n typeof obj.nodeType !== \"number\"\n );\n}\nfunction forEach(value, fn) {\n if (!value) return;\n for (const key of keys(value)) {\n fn(value[key], key);\n }\n}\n\nfunction createRef() {\n return Object.seal({\n current: null,\n });\n}\nfunction isRef(maybeRef) {\n return isObject(maybeRef) && \"current\" in maybeRef;\n}\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found on\n * https://github.com/facebook/react/blob/b87aabdfe1b7461e7331abb3601d9e6bb27544bc/LICENSE\n */\n\n/**\n * CSS properties which accept numbers but are not in units of \"px\".\n */\nconst isUnitlessNumber = {\n animationIterationCount: 0,\n borderImageOutset: 0,\n borderImageSlice: 0,\n borderImageWidth: 0,\n boxFlex: 0,\n boxFlexGroup: 0,\n boxOrdinalGroup: 0,\n columnCount: 0,\n columns: 0,\n flex: 0,\n flexGrow: 0,\n flexPositive: 0,\n flexShrink: 0,\n flexNegative: 0,\n flexOrder: 0,\n gridArea: 0,\n gridRow: 0,\n gridRowEnd: 0,\n gridRowSpan: 0,\n gridRowStart: 0,\n gridColumn: 0,\n gridColumnEnd: 0,\n gridColumnSpan: 0,\n gridColumnStart: 0,\n fontWeight: 0,\n lineClamp: 0,\n lineHeight: 0,\n opacity: 0,\n order: 0,\n orphans: 0,\n tabSize: 0,\n widows: 0,\n zIndex: 0,\n zoom: 0,\n // SVG-related properties\n fillOpacity: 0,\n floodOpacity: 0,\n stopOpacity: 0,\n strokeDasharray: 0,\n strokeDashoffset: 0,\n strokeMiterlimit: 0,\n strokeOpacity: 0,\n strokeWidth: 0,\n};\n\n/**\n * @param prefix vendor-specific prefix, eg: Webkit\n * @param key style name, eg: transitionDuration\n * @return style name prefixed with `prefix`, properly camelCased, eg:\n * WebkitTransitionDuration\n */\nfunction prefixKey(prefix, key) {\n return prefix + key.charAt(0).toUpperCase() + key.substring(1);\n}\n\n/**\n * Support style names that may come passed in prefixed by adding permutations\n * of vendor prefixes.\n */\nconst prefixes = [\"Webkit\", \"ms\", \"Moz\", \"O\"];\n// Using Object.keys here, or else the vanilla for-in loop makes IE8 go into an\n// infinite loop, because it iterates over the newly added props too.\nkeys(isUnitlessNumber).forEach((prop) => {\n prefixes.forEach((prefix) => {\n isUnitlessNumber[prefixKey(prefix, prop)] = 0; // isUnitlessNumber[prop]\n });\n});\n\nconst jsxDomType = Symbol.for(\"jsx-dom:type\");\nvar JsxDomType = /*#__PURE__*/ (function (JsxDomType) {\n JsxDomType[\"ShadowRoot\"] = \"ShadowRoot\";\n return JsxDomType;\n})(JsxDomType || {});\nfunction ShadowRoot(_ref) {\n let { children, ref, ...attr } = _ref;\n return {\n [jsxDomType]: JsxDomType.ShadowRoot,\n ref,\n attr,\n children,\n };\n}\nfunction isShadowRoot(el) {\n return el != null && el[jsxDomType] === JsxDomType.ShadowRoot;\n}\n\nconst SVGNamespace = \"http://www.w3.org/2000/svg\";\nconst XLinkNamespace = \"http://www.w3.org/1999/xlink\";\nconst XMLNamespace = \"http://www.w3.org/XML/1998/namespace\";\n\n// https://facebook.github.io/react/docs/jsx-in-depth.html#booleans-null-and-undefined-are-ignored\n// Emulate JSX Expression logic to ignore certain type of children or className.\nfunction isVisibleChild(value) {\n return !isBoolean(value) && value != null;\n}\n\n/**\n * Convert a `value` to a className string.\n * `value` can be a string, an array or a `Dictionary<boolean>`.\n */\nfunction className(value) {\n if (Array.isArray(value)) {\n return value.map(className).filter(Boolean).join(\" \");\n } else if (isObject(value)) {\n if (Symbol.iterator in value) {\n return className(Array.from(value));\n }\n return keys(value)\n .filter((k) => value[k])\n .join(\" \");\n } else if (isVisibleChild(value)) {\n return \"\" + value;\n } else {\n return \"\";\n }\n}\nconst svg = {\n animate: 0,\n circle: 0,\n clipPath: 0,\n defs: 0,\n desc: 0,\n ellipse: 0,\n feBlend: 0,\n feColorMatrix: 0,\n feComponentTransfer: 0,\n feComposite: 0,\n feConvolveMatrix: 0,\n feDiffuseLighting: 0,\n feDisplacementMap: 0,\n feDistantLight: 0,\n feFlood: 0,\n feFuncA: 0,\n feFuncB: 0,\n feFuncG: 0,\n feFuncR: 0,\n feGaussianBlur: 0,\n feImage: 0,\n feMerge: 0,\n feMergeNode: 0,\n feMorphology: 0,\n feOffset: 0,\n fePointLight: 0,\n feSpecularLighting: 0,\n feSpotLight: 0,\n feTile: 0,\n feTurbulence: 0,\n filter: 0,\n foreignObject: 0,\n g: 0,\n image: 0,\n line: 0,\n linearGradient: 0,\n marker: 0,\n mask: 0,\n metadata: 0,\n path: 0,\n pattern: 0,\n polygon: 0,\n polyline: 0,\n radialGradient: 0,\n rect: 0,\n stop: 0,\n svg: 0,\n switch: 0,\n symbol: 0,\n text: 0,\n textPath: 0,\n tspan: 0,\n use: 0,\n view: 0,\n};\nconst nonPresentationSVGAttributes =\n /^(a(ll|t|u)|base[FP]|c(al|lipPathU|on)|di|ed|ex|filter[RU]|g(lyphR|r)|ke|l(en|im)|ma(rker[HUW]|s)|n|pat|pr|point[^e]|re[^n]|s[puy]|st[^or]|ta|textL|vi|xC|y|z)/;\nfunction createFactory(tag) {\n return createElement.bind(null, tag);\n}\nfunction Fragment(attr) {\n const fragment = document.createDocumentFragment();\n appendChild(attr.children, fragment);\n return fragment;\n}\nclass Component {\n static isComponent = true;\n constructor(props) {\n this.props = props;\n }\n render() {\n return null;\n }\n}\nfunction initComponentClass(Class, attr, children) {\n attr = {\n ...attr,\n children,\n };\n const instance = new Class(attr);\n const node = instance.render();\n if (\"ref\" in attr) {\n attachRef(attr.ref, instance);\n }\n return node;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction jsx(tag, _ref) {\n let { children, ...attr } = _ref;\n if (!attr.namespaceURI && svg[tag] === 0) {\n attr = {\n ...attr,\n namespaceURI: SVGNamespace,\n };\n }\n let node;\n if (isString(tag)) {\n node = attr.namespaceURI\n ? document.createElementNS(attr.namespaceURI, tag)\n : document.createElement(tag);\n attributes(attr, node);\n appendChild(children, node);\n\n // Select `option` elements in `select`\n if (node instanceof window.HTMLSelectElement && attr.value != null) {\n if (attr.multiple === true && Array.isArray(attr.value)) {\n const values = attr.value.map((value) => String(value));\n node\n .querySelectorAll(\"option\")\n .forEach(\n (option) => (option.selected = values.includes(option.value)),\n );\n } else {\n node.value = attr.value;\n }\n }\n attachRef(attr.ref, node);\n } else if (isFunction(tag)) {\n // Custom elements.\n if (isObject(tag.defaultProps)) {\n attr = {\n ...tag.defaultProps,\n ...attr,\n };\n }\n node = isComponentClass(tag)\n ? initComponentClass(tag, attr, children)\n : tag({\n ...attr,\n children,\n });\n } else {\n throw new TypeError(`Invalid JSX element type: ${tag}`);\n }\n return node;\n}\nfunction createElement(tag, attr) {\n for (\n var _len = arguments.length,\n children = new Array(_len > 2 ? _len - 2 : 0),\n _key2 = 2;\n _key2 < _len;\n _key2++\n ) {\n children[_key2 - 2] = arguments[_key2];\n }\n if (isString(attr) || Array.isArray(attr)) {\n children.unshift(attr);\n attr = {};\n }\n attr = attr || {};\n if (attr.children != null && !children.length) {\n ({ children, ...attr } = attr);\n }\n return jsx(\n tag,\n {\n ...attr,\n children,\n },\n attr.key,\n );\n}\nfunction attachRef(ref, node) {\n if (isRef(ref)) {\n ref.current = node;\n } else if (isFunction(ref)) {\n ref(node);\n }\n}\nfunction appendChild(child, node) {\n if (isArrayLike(child)) {\n appendChildren(child, node);\n } else if (isString(child) || isNumber(child)) {\n appendChildToNode(document.createTextNode(child), node);\n } else if (child === null) {\n appendChildToNode(document.createComment(\"\"), node);\n } else if (isElement(child)) {\n appendChildToNode(child, node);\n } else if (isShadowRoot(child)) {\n const shadowRoot = node.attachShadow(child.attr);\n appendChild(child.children, shadowRoot);\n attachRef(child.ref, shadowRoot);\n }\n}\nfunction appendChildren(children, node) {\n for (const child of [...children]) {\n appendChild(child, node);\n }\n return node;\n}\nfunction appendChildToNode(child, node) {\n if (node instanceof window.HTMLTemplateElement) {\n node.content.appendChild(child);\n } else {\n node.appendChild(child);\n }\n}\nfunction normalizeAttribute(s, separator) {\n return s.replace(/[A-Z]/g, (match) => separator + match.toLowerCase());\n}\nfunction style(node, value) {\n if (value == null || value === false);\n else if (Array.isArray(value)) {\n value.forEach((v) => style(node, v));\n } else if (isString(value)) {\n node.setAttribute(\"style\", value);\n } else if (isObject(value)) {\n forEach(value, (val, key) => {\n if (key.indexOf(\"-\") === 0) {\n // CSS custom properties (variables) start with `-` (e.g. `--my-variable`)\n // and must be assigned via `setProperty`.\n node.style.setProperty(key, val);\n } else if (isNumber(val) && isUnitlessNumber[key] !== 0) {\n node.style[key] = val + \"px\";\n } else {\n node.style[key] = val;\n }\n });\n }\n}\nfunction attribute(key, value, node) {\n switch (key) {\n case \"xlinkActuate\":\n case \"xlinkArcrole\":\n case \"xlinkHref\":\n case \"xlinkRole\":\n case \"xlinkShow\":\n case \"xlinkTitle\":\n case \"xlinkType\":\n attrNS(node, XLinkNamespace, normalizeAttribute(key, \":\"), value);\n return;\n case \"xmlnsXlink\":\n attr(node, normalizeAttribute(key, \":\"), value);\n return;\n case \"xmlBase\":\n case \"xmlLang\":\n case \"xmlSpace\":\n attrNS(node, XMLNamespace, normalizeAttribute(key, \":\"), value);\n return;\n }\n switch (key) {\n case \"htmlFor\":\n attr(node, \"for\", value);\n return;\n case \"dataset\":\n forEach(value, (dataValue, dataKey) => {\n if (dataValue != null) {\n node.dataset[dataKey] = dataValue;\n }\n });\n return;\n case \"innerHTML\":\n case \"innerText\":\n case \"textContent\":\n if (isVisibleChild(value)) {\n node[key] = value;\n }\n return;\n case \"dangerouslySetInnerHTML\":\n if (isObject(value)) {\n node.innerHTML = value[\"__html\"];\n }\n return;\n case \"value\":\n if (value == null || node instanceof window.HTMLSelectElement) {\n // skip nullish values\n // for `<select>` apply value after appending `<option>` elements\n return;\n } else if (node instanceof window.HTMLTextAreaElement) {\n node.value = value;\n return;\n }\n // use attribute for other elements\n break;\n case \"spellCheck\":\n node.spellcheck = value;\n return;\n case \"class\":\n case \"className\":\n if (isFunction(value)) {\n value(node);\n } else {\n attr(node, \"class\", className(value));\n }\n return;\n case \"ref\":\n case \"namespaceURI\":\n return;\n case \"style\":\n style(node, value);\n return;\n case \"on\":\n case \"onCapture\":\n forEach(value, (eventHandler, eventName) => {\n node.addEventListener(eventName, eventHandler, key === \"onCapture\");\n });\n return;\n // fallthrough\n }\n if (isFunction(value)) {\n if (key[0] === \"o\" && key[1] === \"n\") {\n let attribute = key.toLowerCase();\n const useCapture = attribute.endsWith(\"capture\");\n if (attribute === \"ondoubleclick\") {\n attribute = \"ondblclick\";\n } else if (useCapture && attribute === \"ondoubleclickcapture\") {\n attribute = \"ondblclickcapture\";\n }\n if (!useCapture && node[attribute] === null) {\n // use property when possible PR #17\n node[attribute] = value;\n } else if (useCapture) {\n node.addEventListener(\n attribute.substring(2, attribute.length - 7),\n value,\n true,\n );\n } else {\n let eventName;\n if (attribute in window) {\n // standard event\n // the JSX attribute could have been \"onMouseOver\" and the\n // member name \"onmouseover\" is on the window's prototype\n // so let's add the listener \"mouseover\", which is all lowercased\n const standardEventName = attribute.substring(2);\n eventName = standardEventName;\n } else {\n // custom event\n // the JSX attribute could have been \"onMyCustomEvent\"\n // so let's trim off the \"on\" prefix and lowercase the first character\n // and add the listener \"myCustomEvent\"\n // except for the first character, we keep the event name case\n const customEventName = attribute[2] + key.slice(3);\n eventName = customEventName;\n }\n node.addEventListener(eventName, value);\n }\n }\n } else if (isObject(value)) {\n node[key] = value;\n } else if (value === true) {\n attr(node, key, \"\");\n } else if (value !== false && value != null) {\n if (node instanceof SVGElement && !nonPresentationSVGAttributes.test(key)) {\n attr(node, normalizeAttribute(key, \"-\"), value);\n } else {\n attr(node, key, value);\n }\n }\n}\nfunction attr(node, key, value) {\n node.setAttribute(key, value);\n}\nfunction attrNS(node, namespace, key, value) {\n node.setAttributeNS(namespace, key, value);\n}\nfunction attributes(attr, node) {\n for (const key of keys(attr)) {\n attribute(key, attr[key], node);\n }\n return node;\n}\n\nfunction useText(initialValue) {\n const text = new Text();\n Object.defineProperty(text, \"toString\", {\n value() {\n return this.textContent;\n },\n });\n function setText(value) {\n text.textContent = value;\n }\n if (initialValue != null) {\n setText(initialValue);\n }\n return [text, setText];\n}\nfunction useClassList(initialValue) {\n const div = document.createElement(\"div\");\n if (initialValue != null) {\n div.className = className(initialValue);\n }\n let list = div.classList;\n function ClassList(value) {\n value.setAttribute(\"class\", list.value);\n list = value.classList;\n }\n Object.defineProperties(\n ClassList,\n Object.getOwnPropertyDescriptors({\n get size() {\n return list.length;\n },\n get value() {\n return list.value;\n },\n add() {\n list.add(...arguments);\n },\n remove() {\n list.remove(...arguments);\n },\n toggle(token, force) {\n list.toggle(token, force);\n },\n contains(token) {\n return list.contains(token);\n },\n }),\n );\n return ClassList;\n}\n\nfunction useMemo(factory) {\n return factory();\n}\nfunction forwardRef(render) {\n return (_ref) => {\n let { ref, ...props } = _ref;\n return render(props, ref ?? createRef());\n };\n}\nfunction useImperativeHandle(ref, init) {\n attachRef(ref, init());\n}\n\nconst cache = /* @__PURE__ */ new Map();\nconst createStyledComponent = (name) =>\n function (list) {\n for (\n var _len = arguments.length,\n interpolations = new Array(_len > 1 ? _len - 1 : 0),\n _key = 1;\n _key < _len;\n _key++\n ) {\n interpolations[_key - 1] = arguments[_key];\n }\n return (_ref) => {\n let { style, ...props } = _ref;\n const lastIndex = list.length - 1;\n const css =\n list.slice(0, lastIndex).reduce((p, s, i) => {\n const interpolation = interpolations[i];\n const current =\n typeof interpolation === \"function\"\n ? interpolation(props)\n : interpolation;\n return p + s + current;\n }, \"\") + list[lastIndex];\n return createElement(name, {\n style: [css, style],\n ...props,\n });\n };\n };\nconst baseStyled = (customComponent) => createStyledComponent(customComponent);\nconst styled = /* @__PURE__ */ new Proxy(baseStyled, {\n get(_, name) {\n return setIfAbsent(cache, name, () => createStyledComponent(name));\n },\n});\nfunction setIfAbsent(map, key, getValue) {\n if (map.has(key)) {\n return map.get(key);\n } else {\n const value = getValue(key);\n map.set(key, value);\n return value;\n }\n}\n\nvar index = {\n Component,\n PureComponent: Component,\n createElement,\n Fragment,\n ShadowRoot,\n};\nfunction preventDefault(event) {\n event.preventDefault();\n return event;\n}\nfunction stopPropagation(event) {\n event.stopPropagation();\n return event;\n}\n\nexport {\n Component,\n Fragment,\n Component as PureComponent,\n SVGNamespace,\n ShadowRoot,\n Fragment as StrictMode,\n className,\n createElement,\n createFactory,\n createRef,\n index as default,\n forwardRef,\n createElement as h,\n isRef,\n jsx,\n jsx as jsxs,\n identity as memo,\n preventDefault,\n stopPropagation,\n styled,\n identity as useCallback,\n useClassList,\n useImperativeHandle,\n useMemo,\n createRef as useRef,\n useText,\n};\n","import { JSX } from 'vue/jsx-runtime'\nimport styles from './styles.module.sass'\n\nexport const ProgressBar = (\n attrs: JSX.IntrinsicElements['div'] & { indeterminate?: boolean; progress?: number }\n) => {\n const indeterminate = attrs.indeterminate ?? true\n const bar = (\n <div\n class={`${styles.ipe_progress}`}\n data-indeterminate={`${indeterminate}`}\n // @ts-ignore\n style={{ width: '100%', '--progress': attrs.progress ? `${attrs.progress}%` : '0%' }}\n {...attrs}\n ></div>\n ) as HTMLElement & { setProgress: (progress: number) => void }\n bar.setProgress = (progress: number | undefined) => {\n if (typeof progress === 'number') {\n bar.dataset.indeterminate = 'false'\n bar.style.setProperty('--progress', `${progress}%`)\n } else {\n bar.dataset.indeterminate = 'true'\n bar.style.setProperty('--progress', '0%')\n }\n }\n return bar\n}\n"],"names":["keys","isBoolean","val","isElement","isString","isNumber","isObject","isFunction","isComponentClass","Component","isArrayLike","obj","forEach","value","fn","key","isRef","maybeRef","isUnitlessNumber","prefixKey","prefix","prefixes","prop","jsxDomType","JsxDomType","isShadowRoot","el","SVGNamespace","XLinkNamespace","XMLNamespace","isVisibleChild","className","k","svg","nonPresentationSVGAttributes","Fragment","attr","fragment","appendChild","initComponentClass","Class","children","instance","node","attachRef","jsx","tag","_ref","attributes","values","option","createElement","_len","_key2","ref","child","appendChildren","appendChildToNode","shadowRoot","normalizeAttribute","s","separator","match","style","v","attribute","attrNS","dataValue","dataKey","eventHandler","eventName","useCapture","namespace","ProgressBar","attrs","indeterminate","bar","styles","progress"],"mappings":"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","x_google_ignoreList":[0]}
@@ -0,0 +1,173 @@
1
+ import { j as r, P as m } from "./index-CM_6yF2v.js";
2
+ import { B as h } from "./BasePlugin-CU8beLYu.js";
3
+ import { T as u } from "./index-DD5CVCfD.js";
4
+ import { I as f, C as g } from "./InputBox-nQKtiWtZ.js";
5
+ import { S as d } from "./Preferences-85Q9FAmb.js";
6
+ class y extends h {
7
+ constructor(e) {
8
+ super(e, {}, "quick-redirect"), this.ctx = e;
9
+ }
10
+ static {
11
+ this.inject = ["api", "wikiPage", "modal", "$"];
12
+ }
13
+ static {
14
+ this.PreferencesSchema = d.object({
15
+ "quickRedirect.reason": d.string().default("[IPE-NEXT] Quick redirect")
16
+ }).description("Quick redirect options").extra("category", "editor");
17
+ }
18
+ start() {
19
+ this.ctx.set("quickRedirect", this);
20
+ const e = this.ctx.$, t = window.mw?.config.get("wgPageName") || "", a = window.mw?.config.get("wgIsProbablyEditable");
21
+ this.ctx.inject(["toolbox"], (i) => {
22
+ this.ctx = i, i.toolbox.addButton({
23
+ id: "quick-redirect",
24
+ icon: /* @__PURE__ */ r(
25
+ "svg",
26
+ {
27
+ xmlns: "http://www.w3.org/2000/svg",
28
+ width: "24",
29
+ height: "24",
30
+ viewBox: "0 0 24 24",
31
+ fill: "none",
32
+ stroke: "currentColor",
33
+ "stroke-width": "2",
34
+ "stroke-linecap": "round",
35
+ "stroke-linejoin": "round",
36
+ class: "icon icon-tabler icons-tabler-outline icon-tabler-file-symlink",
37
+ children: [
38
+ /* @__PURE__ */ r("path", { stroke: "none", d: "M0 0h24v24H0z", fill: "none" }),
39
+ /* @__PURE__ */ r("path", { d: "M4 21v-4a3 3 0 0 1 3 -3h5" }),
40
+ /* @__PURE__ */ r("path", { d: "M9 17l3 -3l-3 -3" }),
41
+ /* @__PURE__ */ r("path", { d: "M14 3v4a1 1 0 0 0 1 1h4" }),
42
+ /* @__PURE__ */ r("path", { d: "M5 11v-6a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2h-9.5" })
43
+ ]
44
+ }
45
+ ),
46
+ tooltip: e`Quick Redirect`,
47
+ group: "group1",
48
+ index: 2,
49
+ onClick: () => {
50
+ this.showModal(
51
+ a ? {
52
+ to: t
53
+ } : {}
54
+ );
55
+ }
56
+ }), this.addDisposeHandler((o) => {
57
+ o.toolbox.removeButton("quick-redirect");
58
+ });
59
+ });
60
+ }
61
+ stop() {
62
+ }
63
+ async showModal(e) {
64
+ const t = this.ctx.$, a = await this.ctx.preferences.get("quickRedirect.reason");
65
+ e || (e = {}), this.ctx.emit("quick-redirect/init-options", { ctx: this.ctx, options: e });
66
+ const i = this.ctx.modal.createObject({
67
+ title: t`Quick Redirect`,
68
+ content: /* @__PURE__ */ r(m, {}),
69
+ className: "quick-redirect compact-buttons",
70
+ sizeClass: "smallToMedium",
71
+ center: !0
72
+ }).init();
73
+ let o = null;
74
+ return i.setContent(
75
+ /* @__PURE__ */ r(
76
+ "form",
77
+ {
78
+ ref: (s) => o = s,
79
+ style: {
80
+ display: "flex",
81
+ flexDirection: "column",
82
+ gap: "1rem"
83
+ },
84
+ onSubmit: (s) => {
85
+ if (s.preventDefault(), o?.checkValidity(), !o?.reportValidity())
86
+ return;
87
+ const c = new FormData(o), n = {
88
+ from: c.get("from")?.toString().trim(),
89
+ to: c.get("to")?.toString().trim(),
90
+ reason: c.get("reason") || "",
91
+ overwrite: c.get("overwrite") === "on"
92
+ };
93
+ if (!n.from || !n.to) {
94
+ this.ctx.modal.notify("error", {
95
+ title: t`Failed to redirect`,
96
+ content: t`From and to are required.`
97
+ });
98
+ return;
99
+ }
100
+ this.ctx.emit("quick-redirect/submit", { ctx: this.ctx, payload: n }), i.setLoadingState(!0), this.redirectPage(n).then((l) => {
101
+ i.close(), this.ctx.modal.notify("success", {
102
+ title: t`Redirect successful`,
103
+ content: t`The redirect has been created.`
104
+ });
105
+ }).catch((l) => {
106
+ i.setLoadingState(!1), this.ctx.modal.notify("error", {
107
+ title: t`Failed to redirect`,
108
+ content: l instanceof Error ? l.message : String(l)
109
+ });
110
+ });
111
+ },
112
+ children: [
113
+ /* @__PURE__ */ r(
114
+ u,
115
+ {
116
+ inputs: [
117
+ {
118
+ label: t`Redirect from`,
119
+ name: "from",
120
+ value: e?.from,
121
+ required: !0
122
+ },
123
+ {
124
+ label: t`Redirect to`,
125
+ name: "to",
126
+ value: e?.to,
127
+ required: !0
128
+ }
129
+ ]
130
+ }
131
+ ),
132
+ /* @__PURE__ */ r(
133
+ f,
134
+ {
135
+ label: t`Reason`,
136
+ id: "reason",
137
+ name: "reason",
138
+ value: e?.reason ?? a ?? ""
139
+ }
140
+ ),
141
+ /* @__PURE__ */ r("div", { children: /* @__PURE__ */ r(g, { name: "overwrite", id: "overwrite", checked: e?.overwrite, children: t`Force create redirect even if the from page already exists` }) })
142
+ ]
143
+ }
144
+ )
145
+ ), i.setButtons([
146
+ {
147
+ label: t`Create Redirect`,
148
+ className: "is-primary is-ghost",
149
+ method: () => {
150
+ o?.dispatchEvent(new Event("submit"));
151
+ }
152
+ }
153
+ ]), this.ctx.emit("quick-redirect/show-modal", { ctx: this.ctx, modal: i }), i.show();
154
+ }
155
+ async redirectPage(e) {
156
+ const { from: t, to: a, reason: i = "", overwrite: o = !1 } = e, s = await this.ctx.wikiPage.newBlankPage({
157
+ title: t
158
+ }), c = `#REDIRECT [[:${a}]]`;
159
+ return s.edit(
160
+ {
161
+ text: c,
162
+ summary: i
163
+ },
164
+ {
165
+ createonly: !o
166
+ }
167
+ );
168
+ }
169
+ }
170
+ export {
171
+ y as PluginQuickRedirect
172
+ };
173
+ //# sourceMappingURL=index-CQr1DJ8n.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-CQr1DJ8n.js","sources":["../src/plugins/quick-redirect/index.tsx"],"sourcesContent":["import { InPageEdit, Schema } from '@/InPageEdit'\nimport { IPEModal } from '@inpageedit/modal'\n\ndeclare module '@/InPageEdit' {\n interface InPageEdit {\n quickRedirect: PluginQuickRedirect\n }\n interface Events {\n 'quick-redirect/init-options'(payload: {\n ctx: InPageEdit\n options: Partial<QuickRedirectOptions>\n }): void\n 'quick-redirect/show-modal'(payload: { ctx: InPageEdit; modal: IPEModal }): void\n 'quick-redirect/submit'(payload: { ctx: InPageEdit; payload: RedirectPageOptions }): void\n }\n interface PreferencesMap {\n 'quickRedirect.reason': string\n }\n}\n\nexport interface RedirectPageOptions {\n from: string\n to: string\n reason?: string\n overwrite?: boolean\n}\nexport interface QuickRedirectOptions extends Partial<RedirectPageOptions> {}\n\nexport class PluginQuickRedirect extends BasePlugin {\n static readonly inject = ['api', 'wikiPage', 'modal', '$']\n static readonly PreferencesSchema = Schema.object({\n 'quickRedirect.reason': Schema.string().default('[IPE-NEXT] Quick redirect'),\n })\n .description('Quick redirect options')\n .extra('category', 'editor')\n\n constructor(public ctx: InPageEdit) {\n super(ctx, {}, 'quick-redirect')\n }\n\n protected start(): Promise<void> | void {\n this.ctx.set('quickRedirect', this)\n const $ = this.ctx.$\n\n const curPageName = window.mw?.config.get('wgPageName') || ''\n const canEdit = window.mw?.config.get('wgIsProbablyEditable')\n this.ctx.inject(['toolbox'], (ctx) => {\n this.ctx = ctx\n ctx.toolbox.addButton({\n id: 'quick-redirect',\n icon: (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n class=\"icon icon-tabler icons-tabler-outline icon-tabler-file-symlink\"\n >\n <path stroke=\"none\" d=\"M0 0h24v24H0z\" fill=\"none\" />\n <path d=\"M4 21v-4a3 3 0 0 1 3 -3h5\" />\n <path d=\"M9 17l3 -3l-3 -3\" />\n <path d=\"M14 3v4a1 1 0 0 0 1 1h4\" />\n <path d=\"M5 11v-6a2 2 0 0 1 2 -2h7l5 5v11a2 2 0 0 1 -2 2h-9.5\" />\n </svg>\n ) as HTMLElement,\n tooltip: $`Quick Redirect`,\n group: 'group1',\n index: 2,\n onClick: () => {\n this.showModal(\n canEdit\n ? {\n to: curPageName,\n }\n : {}\n )\n },\n })\n this.addDisposeHandler((ctx) => {\n ctx.toolbox.removeButton('quick-redirect')\n })\n })\n }\n\n protected stop(): Promise<void> | void {}\n\n async showModal(options?: Partial<QuickRedirectOptions>) {\n const $ = this.ctx.$\n const reason = await this.ctx.preferences.get('quickRedirect.reason')\n if (!options) {\n options = {}\n }\n this.ctx.emit('quick-redirect/init-options', { ctx: this.ctx, options })\n const modal = this.ctx.modal\n .createObject({\n title: $`Quick Redirect`,\n content: (<ProgressBar />) as HTMLElement,\n className: 'quick-redirect compact-buttons',\n sizeClass: 'smallToMedium',\n center: true,\n })\n .init()\n\n let formRef: HTMLFormElement | null = null\n modal.setContent(\n (\n <form\n ref={(el) => (formRef = el)}\n style={{\n display: 'flex',\n flexDirection: 'column',\n gap: '1rem',\n }}\n onSubmit={(e) => {\n e.preventDefault()\n formRef?.checkValidity()\n if (!formRef?.reportValidity()) {\n return\n }\n const formData = new FormData(formRef!)\n const options = {\n from: formData.get('from')?.toString().trim()!,\n to: formData.get('to')?.toString().trim()!,\n reason: (formData.get('reason') as string) || '',\n overwrite: formData.get('overwrite') === 'on',\n }\n if (!options.from || !options.to) {\n this.ctx.modal.notify('error', {\n title: $`Failed to redirect`,\n content: $`From and to are required.`,\n })\n return\n }\n this.ctx.emit('quick-redirect/submit', { ctx: this.ctx, payload: options })\n modal.setLoadingState(true)\n this.redirectPage(options)\n .then((res) => {\n modal.close()\n this.ctx.modal.notify('success', {\n title: $`Redirect successful`,\n content: $`The redirect has been created.`,\n })\n })\n .catch((error) => {\n modal.setLoadingState(false)\n this.ctx.modal.notify('error', {\n title: $`Failed to redirect`,\n content: error instanceof Error ? error.message : String(error),\n })\n })\n }}\n >\n <TwinSwapInput\n inputs={[\n {\n label: $`Redirect from`,\n name: 'from',\n value: options?.from,\n required: true,\n },\n {\n label: $`Redirect to`,\n name: 'to',\n value: options?.to,\n required: true,\n },\n ]}\n />\n <InputBox\n label={$`Reason`}\n id=\"reason\"\n name=\"reason\"\n value={options?.reason ?? reason ?? ''}\n />\n <div>\n <CheckBox name=\"overwrite\" id=\"overwrite\" checked={options?.overwrite}>\n {$`Force create redirect even if the from page already exists`}\n </CheckBox>\n </div>\n </form>\n ) as HTMLFormElement\n )\n modal.setButtons([\n {\n label: $`Create Redirect`,\n className: 'is-primary is-ghost',\n method: () => {\n formRef?.dispatchEvent(new Event('submit'))\n },\n },\n ])\n\n this.ctx.emit('quick-redirect/show-modal', { ctx: this.ctx, modal })\n\n return modal.show()\n }\n\n async redirectPage(options: RedirectPageOptions) {\n const { from, to, reason = '', overwrite = false } = options\n const wikiPage = await this.ctx.wikiPage.newBlankPage({\n title: from,\n })\n const content = `#REDIRECT [[:${to}]]`\n return wikiPage.edit(\n {\n text: content,\n summary: reason,\n },\n {\n createonly: !overwrite,\n }\n )\n }\n}\n"],"names":["PluginQuickRedirect","BasePlugin","ctx","Schema","$","curPageName","canEdit","jsxs","jsx","options","reason","modal","ProgressBar","formRef","el","e","formData","res","error","TwinSwapInput","InputBox","CheckBox","from","to","overwrite","wikiPage","content"],"mappings":"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"}
@@ -1,50 +1,55 @@
1
1
  import { j as n } from "./index-CM_6yF2v.js";
2
- import { S as p, E as b, p as I, I as x } from "./endpoints-DgyuoRZd.js";
3
- import { B as P, p as U } from "./BasePlugin-Bf2UuIHF.js";
2
+ import { S as g, E as b, p as A, d as x, I as P } from "./Preferences-85Q9FAmb.js";
3
+ import { B as U } from "./BasePlugin-CU8beLYu.js";
4
4
  var B = Object.create, f = Object.defineProperty, q = Object.getOwnPropertyDescriptor, v = (i, e) => (e = Symbol[i]) ? e : Symbol.for("Symbol." + i), w = (i) => {
5
5
  throw TypeError(i);
6
6
  }, L = (i, e, t) => e in i ? f(i, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : i[e] = t, N = (i, e) => f(i, "name", { value: e, configurable: !0 }), T = (i) => [, , , B(i?.[v("metadata")] ?? null)], D = ["class", "method", "getter", "setter", "accessor", "field", "value", "get", "set"], k = (i) => i !== void 0 && typeof i != "function" ? w("Function expected") : i, O = (i, e, t, a, s) => ({ kind: D[i], name: e, metadata: a, addInitializer: (r) => t._ ? w("Already initialized") : s.push(k(r || null)) }), j = (i, e) => L(e, v("metadata"), i[3]), C = (i, e, t, a) => {
7
- for (var s = 0, r = i[e >> 1], c = r && r.length; s < c; s++) r[s].call(t);
7
+ for (var s = 0, r = i[e >> 1], o = r && r.length; s < o; s++) r[s].call(t);
8
8
  return a;
9
- }, M = (i, e, t, a, s, r) => {
10
- var c, d, h, o = e & 7, l = !1, y = 0, A = i[y] || (i[y] = []), u = o && (s = s.prototype, o < 5 && (o > 3 || !l) && q(s, t));
9
+ }, $ = (i, e, t, a, s, r) => {
10
+ var o, d, h, c = e & 7, l = !1, y = 0, I = i[y] || (i[y] = []), u = c && (s = s.prototype, c < 5 && (c > 3 || !l) && q(s, t));
11
11
  N(s, t);
12
- for (var g = a.length - 1; g >= 0; g--)
13
- h = O(o, t, d = {}, i[3], A), c = (0, a[g])(s, h), d._ = 1, k(c) && (s = c);
14
- return j(i, s), u && f(s, t, u), l ? o ^ 4 ? r : u : s;
12
+ for (var p = a.length - 1; p >= 0; p--)
13
+ h = O(c, t, d = {}, i[3], I), o = (0, a[p])(s, h), d._ = 1, k(o) && (s = o);
14
+ return j(i, s), u && f(s, t, u), l ? c ^ 4 ? r : u : s;
15
15
  }, E, _, S;
16
- E = [x(["wiki", "preferences"])];
17
- class m extends (S = P) {
16
+ E = [P(["wiki", "preferences", "$"])];
17
+ class m extends (S = U) {
18
18
  // 1分钟
19
19
  constructor(e) {
20
20
  super(e, {}, "analytics"), this.ctx = e, this._usages = [], this._timer = null, this.MAX_QUEUE_SIZE = 50, this.INTERVAL_MS = 60 * 1e3, this._setupTimer(), this._registerUnloadHandler(), this._showConfirmNotify(), this._initPluginListeners(), e.set("analytics", this);
21
21
  }
22
22
  start() {
23
- this.ctx.preferences.registerCustomConfig(
23
+ const e = this.ctx, t = e.$;
24
+ e.preferences.registerCustomConfig(
24
25
  "analytics",
25
- p.object({
26
- "analytics._intro": p.const(
26
+ g.object({
27
+ "analytics._intro": g.const(
27
28
  /* @__PURE__ */ n("section", { children: [
28
- /* @__PURE__ */ n("h3", { children: "InPageEdit Analytics" }),
29
- /* @__PURE__ */ n("p", { children: "InPageEdit Analytics is the companion analytics platform for the InPageEdit NEXT project. By collecting and displaying usage data from around the world, it helps developers and the community better understand how the tool is used, optimize feature design, and enhance user experience." }),
30
- /* @__PURE__ */ n("h4", { children: "What data will be collected?" }),
29
+ /* @__PURE__ */ n("h3", { children: t`InPageEdit Analytics` }),
30
+ /* @__PURE__ */ n("p", { children: t`InPageEdit Analytics is the companion analytics platform for the InPageEdit NEXT project. By collecting and displaying usage data from around the world, it helps developers and the community better understand how the tool is used, optimize feature design, and enhance user experience.` }),
31
+ /* @__PURE__ */ n("h4", { children: t`What data will be collected?` }),
31
32
  /* @__PURE__ */ n("ol", { style: { listStyle: "number", paddingLeft: "1em" }, children: [
32
33
  /* @__PURE__ */ n("li", { children: [
33
- /* @__PURE__ */ n("strong", { children: "Usage data" }),
34
- ": When and which features you use, what pages you edit, etc."
34
+ /* @__PURE__ */ n("strong", { children: t`Usage data` }),
35
+ ":",
36
+ " ",
37
+ t`When and which features you use, what pages you edit, etc.`
35
38
  ] }),
36
39
  /* @__PURE__ */ n("li", { children: [
37
- /* @__PURE__ */ n("strong", { children: "User information" }),
38
- ": Your user name and user ID."
40
+ /* @__PURE__ */ n("strong", { children: t`User information` }),
41
+ ": ",
42
+ t`Your user name and user ID.`
39
43
  ] }),
40
44
  /* @__PURE__ */ n("li", { children: [
41
- /* @__PURE__ */ n("strong", { children: "Site information" }),
42
- ": This wiki's url and site name."
45
+ /* @__PURE__ */ n("strong", { children: t`Site information` }),
46
+ ": ",
47
+ t`This wiki's url and site name.`
43
48
  ] })
44
49
  ] }),
45
- /* @__PURE__ */ n("p", { children: /* @__PURE__ */ n("strong", { children: "NO sensitive data will be collected." }) }),
50
+ /* @__PURE__ */ n("p", { children: /* @__PURE__ */ n("strong", { children: t`NO sensitive data will be collected.` }) }),
46
51
  /* @__PURE__ */ n("div", { style: { display: "grid", gap: "0.5rem" }, children: [
47
- /* @__PURE__ */ n("a", { href: this.analyticsDashUrl, target: "_blank", rel: "noopener noreferrer", children: /* @__PURE__ */ n("button", { className: "btn", style: { width: "100%" }, children: "Analytics Platform" }) }),
52
+ /* @__PURE__ */ n("a", { href: this.analyticsDashUrl, target: "_blank", rel: "noopener noreferrer", children: /* @__PURE__ */ n("button", { className: "btn", style: { width: "100%" }, children: t`Analytics Platform` }) }),
48
53
  /* @__PURE__ */ n(
49
54
  "a",
50
55
  {
@@ -54,14 +59,14 @@ class m extends (S = P) {
54
59
  }).toString()}`,
55
60
  target: "_blank",
56
61
  rel: "noopener noreferrer",
57
- children: /* @__PURE__ */ n("button", { className: "btn", style: { width: "100%" }, children: "View My Data" })
62
+ children: /* @__PURE__ */ n("button", { className: "btn", style: { width: "100%" }, children: t`View My Data` })
58
63
  }
59
64
  )
60
65
  ] })
61
66
  ] })
62
67
  ).role("raw-html"),
63
- "analytics.enabled": p.boolean().description("Share my usage data with the community.").default(!1)
64
- }).description("Analytics settings"),
68
+ "analytics.enabled": g.boolean().description(t`prefs.analytics.enabled`).default(!1)
69
+ }).description(t`prefs.analytics.$`),
65
70
  "general"
66
71
  );
67
72
  }
@@ -85,35 +90,48 @@ class m extends (S = P) {
85
90
  }), window.addEventListener("pagehide", e), window.addEventListener("beforeunload", e);
86
91
  }
87
92
  async _showConfirmNotify() {
88
- this.ctx.inject(["modal", "storage"], async (e) => {
89
- const t = "analytics/confirm-shown", a = await e.storage.simpleKV.get(t), s = await e.preferences.get("analytics.enabled");
90
- a || s || e.modal.notify(
93
+ const e = this.ctx.$;
94
+ this.ctx.inject(["modal", "storage"], async (t) => {
95
+ const a = "analytics/confirm-shown", s = await t.storage.simpleKV.get(a), r = await t.preferences.get("analytics.enabled");
96
+ s || r || t.modal.notify(
91
97
  "confirm",
92
98
  {
93
- title: "Enable Analytics",
99
+ title: e`Enable Analytics`,
94
100
  content: /* @__PURE__ */ n("div", { children: [
95
- /* @__PURE__ */ n("p", { children: "Help us improve InPageEdit by sharing your usage data with us." }),
96
- /* @__PURE__ */ n("p", { children: "What data will be collected?" }),
101
+ /* @__PURE__ */ n("p", { children: e`Help us improve InPageEdit by sharing your usage data with us.` }),
102
+ /* @__PURE__ */ n("p", { children: e`What data will be collected?` }),
97
103
  /* @__PURE__ */ n("ul", { style: { listStyle: "auto", paddingLeft: "1.5em" }, children: [
98
- /* @__PURE__ */ n("li", { children: "Usage data: What features you use, what pages you edit, etc." }),
99
- /* @__PURE__ */ n("li", { children: "User information: Your username, user ID." }),
100
- /* @__PURE__ */ n("li", { children: "Site information: The wiki you are editing." })
104
+ /* @__PURE__ */ n("li", { children: [
105
+ e`Usage data`,
106
+ ": ",
107
+ e`When and which features you use, what pages you edit, etc.`
108
+ ] }),
109
+ /* @__PURE__ */ n("li", { children: [
110
+ e`User information`,
111
+ ": ",
112
+ e`Your user name and user ID.`
113
+ ] }),
114
+ /* @__PURE__ */ n("li", { children: [
115
+ e`Site information`,
116
+ ": ",
117
+ e`This wiki's url and site name.`
118
+ ] })
101
119
  ] }),
102
- /* @__PURE__ */ n("p", { children: /* @__PURE__ */ n("strong", { children: "NO sensitive data will be collected." }) })
120
+ /* @__PURE__ */ n("p", { children: /* @__PURE__ */ n("strong", { children: e`NO sensitive data will be collected.` }) })
103
121
  ] }),
104
122
  okBtn: {
105
- label: "Enable"
123
+ label: e`Enable`
106
124
  },
107
125
  cancelBtn: {
108
- label: "Disable"
126
+ label: e`Disable`
109
127
  },
110
128
  closeAfter: 0,
111
129
  onClose: () => {
112
- this.ctx.storage.simpleKV.set(t, 1);
130
+ this.ctx.storage.simpleKV.set(a, 1);
113
131
  }
114
132
  },
115
- (r) => {
116
- e.preferences.set("analytics.enabled", r), r && this.addEvent("analytics", "enabled");
133
+ (o) => {
134
+ t.preferences.set("analytics.enabled", o), o && this.addEvent("analytics", "enabled");
117
135
  }
118
136
  );
119
137
  });
@@ -121,7 +139,7 @@ class m extends (S = P) {
121
139
  _initPluginListeners() {
122
140
  const e = this.ctx;
123
141
  e.on("in-article-links/anchor-clicked", (t) => {
124
- this.addEvent("in-article-links", U(t.action));
142
+ this.addEvent("in-article-links", A(t.action));
125
143
  }), e.on("quick-diff/loaded", (t) => {
126
144
  this.addEvent("quick-diff", "loaded", t.compare.fromtitle);
127
145
  }), e.on("quick-redirect/submit", (t) => {
@@ -164,16 +182,16 @@ class m extends (S = P) {
164
182
  return this.logger.debug("Beacon sent successfully", a), !0;
165
183
  {
166
184
  this.logger.debug("Beacon failed, sending via XMLHttpRequest");
167
- const { promise: d, resolve: h, reject: o } = I();
185
+ const { promise: d, resolve: h, reject: c } = x();
168
186
  try {
169
187
  const l = new XMLHttpRequest();
170
188
  l.open("POST", r, !0), l.setRequestHeader("Content-Type", "application/json"), l.send(s), l.onload = () => {
171
189
  this.logger.debug("Beacon sent successfully via XMLHttpRequest", a), h(l.status >= 200 && l.status < 300);
172
190
  }, l.onerror = () => {
173
- o(new Error("Failed to send beacon"));
191
+ c(new Error("Failed to send beacon"));
174
192
  };
175
193
  } catch (l) {
176
- o(l);
194
+ c(l);
177
195
  }
178
196
  return d;
179
197
  }
@@ -186,9 +204,9 @@ class m extends (S = P) {
186
204
  }
187
205
  }
188
206
  _ = T(S);
189
- m = M(_, 0, "PluginAnalytics", E, m);
207
+ m = $(_, 0, "PluginAnalytics", E, m);
190
208
  C(_, 1, m);
191
209
  export {
192
210
  m as PluginAnalytics
193
211
  };
194
- //# sourceMappingURL=index-BQ-cHWkJ.js.map
212
+ //# sourceMappingURL=index-CVTBg5O9.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-CVTBg5O9.js","sources":["../src/plugins/analytics/index.tsx"],"sourcesContent":["import { Endpoints } from '@/constants/endpoints.js'\nimport { Inject, InPageEdit, Schema } from '@/InPageEdit'\n\ndeclare module '@/InPageEdit' {\n interface InPageEdit {\n analytics: PluginAnalytics\n }\n}\n\nexport interface IPEBeaconPayload {\n siteApi: string\n siteName?: string\n userId: number\n userName: string\n version?: string\n usages: IPEBeaconUsage[]\n}\n\nexport interface IPEBeaconUsage {\n ts: number\n feature: string\n subtype?: string\n page?: string\n}\n\n@Inject(['wiki', 'preferences', '$'])\nexport class PluginAnalytics extends BasePlugin {\n private _usages: IPEBeaconUsage[] = []\n private _timer: ReturnType<typeof setInterval> | null = null\n private readonly MAX_QUEUE_SIZE = 50\n private readonly INTERVAL_MS = 60 * 1000 // 1分钟\n\n constructor(public ctx: InPageEdit) {\n super(ctx, {}, 'analytics')\n this._setupTimer()\n this._registerUnloadHandler()\n this._showConfirmNotify()\n this._initPluginListeners()\n ctx.set('analytics', this)\n }\n\n protected start(): Promise<void> | void {\n const ctx = this.ctx\n const $ = ctx.$\n ctx.preferences.registerCustomConfig(\n 'analytics',\n Schema.object({\n 'analytics._intro': Schema.const(\n <section>\n <h3>{$`InPageEdit Analytics`}</h3>\n <p>\n {$`InPageEdit Analytics is the companion analytics platform for the InPageEdit NEXT project. By collecting and displaying usage data from around the world, it helps developers and the community better understand how the tool is used, optimize feature design, and enhance user experience.`}\n </p>\n <h4>{$`What data will be collected?`}</h4>\n <ol style={{ listStyle: 'number', paddingLeft: '1em' }}>\n <li>\n <strong>{$`Usage data`}</strong>:{' '}\n {$`When and which features you use, what pages you edit, etc.`}\n </li>\n <li>\n <strong>{$`User information`}</strong>: {$`Your user name and user ID.`}\n </li>\n <li>\n <strong>{$`Site information`}</strong>: {$`This wiki's url and site name.`}\n </li>\n </ol>\n <p>\n <strong>{$`NO sensitive data will be collected.`}</strong>\n </p>\n <div style={{ display: 'grid', gap: '0.5rem' }}>\n <a href={this.analyticsDashUrl} target=\"_blank\" rel=\"noopener noreferrer\">\n <button className=\"btn\" style={{ width: '100%' }}>\n {$`Analytics Platform`}\n </button>\n </a>\n <a\n href={`${this.analyticsDashUrl}/_redirect/user?${new URLSearchParams({\n siteApi: this.ctx.wiki.getSciprtUrl('api'),\n mwUserId: this.ctx.wiki.userInfo.id.toString(),\n }).toString()}`}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <button className=\"btn\" style={{ width: '100%' }}>\n {$`View My Data`}\n </button>\n </a>\n </div>\n </section>\n ).role('raw-html'),\n 'analytics.enabled': Schema.boolean()\n .description($`prefs.analytics.enabled`)\n .default(false),\n }).description($`prefs.analytics.$`),\n 'general'\n )\n }\n\n private get analyticsDashUrl() {\n return import.meta.env.PROD ? Endpoints.ANALYTICS_DASH_URL : 'http://localhost:20105'\n }\n private get analyticsApiBase() {\n return import.meta.env.PROD ? Endpoints.ANALYTICS_API_BASE : 'http://localhost:20105/api/v6'\n }\n\n private _setupTimer() {\n this._timer = setInterval(() => {\n if (this._usages.length > 0) {\n this.sendBeacon()\n }\n }, this.INTERVAL_MS)\n }\n\n private _registerUnloadHandler() {\n const handleUnload = () => {\n if (this._usages.length > 0) {\n this.sendBeacon()\n }\n }\n\n window.addEventListener('visibilitychange', () => {\n if (document.visibilityState === 'hidden') {\n handleUnload()\n }\n })\n\n window.addEventListener('pagehide', handleUnload)\n window.addEventListener('beforeunload', handleUnload)\n }\n\n private async _showConfirmNotify() {\n const $ = this.ctx.$\n this.ctx.inject(['modal', 'storage'], async (ctx) => {\n const key = 'analytics/confirm-shown'\n const shown = await ctx.storage.simpleKV.get(key)\n const enabled = await ctx.preferences.get('analytics.enabled')\n if (shown || enabled) {\n return\n }\n ctx.modal.notify(\n 'confirm',\n {\n title: $`Enable Analytics`,\n content: (\n <div>\n <p>{$`Help us improve InPageEdit by sharing your usage data with us.`}</p>\n <p>{$`What data will be collected?`}</p>\n <ul style={{ listStyle: 'auto', paddingLeft: '1.5em' }}>\n <li>\n {$`Usage data`}: {$`When and which features you use, what pages you edit, etc.`}\n </li>\n <li>\n {$`User information`}: {$`Your user name and user ID.`}\n </li>\n <li>\n {$`Site information`}: {$`This wiki's url and site name.`}\n </li>\n </ul>\n <p>\n <strong>{$`NO sensitive data will be collected.`}</strong>\n </p>\n </div>\n ),\n okBtn: {\n label: $`Enable`,\n },\n cancelBtn: {\n label: $`Disable`,\n },\n closeAfter: 0,\n onClose: () => {\n this.ctx.storage.simpleKV.set(key, 1)\n },\n },\n (result) => {\n ctx.preferences.set('analytics.enabled', result)\n if (result) {\n this.addEvent('analytics', 'enabled')\n }\n }\n )\n })\n }\n\n private _initPluginListeners() {\n const ctx = this.ctx\n ctx.on('in-article-links/anchor-clicked', (payload) => {\n this.addEvent('in-article-links', paramCase(payload.action))\n })\n ctx.on('quick-diff/loaded', (payload) => {\n this.addEvent('quick-diff', 'loaded', payload.compare.fromtitle)\n })\n ctx.on('quick-redirect/submit', (payload) => {\n this.addEvent('quick-redirect', 'submit', payload.payload.to || undefined)\n })\n ctx.on('quick-preview/loaded', (payload) => {\n this.addEvent('quick-preview', 'loaded', payload.wikiPage.title)\n })\n ctx.on('quick-edit/wiki-page', (payload) => {\n this.addEvent('quick-edit', undefined, payload.wikiPage.title)\n })\n ctx.on('quick-edit/submit', (payload) => {\n this.addEvent('quick-edit', 'submit', payload.wikiPage.title)\n })\n ctx.on('quick-move/submit', (payload) => {\n this.addEvent('quick-move', 'submit')\n })\n ctx.on('toolbox/button-clicked', (payload) => {\n this.addEvent('toolbox', `button-clicked#${payload.id || 'unknown'}`)\n })\n }\n\n public addEvent(feature: string, subtype?: string, page?: string) {\n const usage: IPEBeaconUsage = {\n ts: Date.now(),\n feature,\n subtype,\n page,\n }\n this._usages.push(usage)\n\n // 如果usages数组超过50个,立即发送\n if (this._usages.length >= this.MAX_QUEUE_SIZE) {\n this.sendBeacon()\n }\n\n return this\n }\n\n private async sendBeacon() {\n if (this._usages.length === 0) {\n return true\n }\n\n const enabled = await this.ctx.preferences.get<boolean>('analytics.enabled', false)\n if (!enabled) {\n this.logger.debug('Analytics disabled, skipping')\n return true\n }\n\n const usages = this._usages.splice(0, this._usages.length)\n const payload: IPEBeaconPayload = {\n siteApi: this.ctx.wiki.getSciprtUrl('api'),\n siteName: this.ctx.wiki.siteInfo.general.sitename,\n userId: this.ctx.wiki.userInfo.id,\n userName: this.ctx.wiki.userInfo.name,\n version: this.ctx.version.split('-')[0],\n usages,\n }\n const body = JSON.stringify(payload)\n\n const endpoint = `${this.analyticsApiBase}/submit`\n\n const beaconOK = navigator?.sendBeacon?.(endpoint, body)\n if (beaconOK) {\n this.logger.debug('Beacon sent successfully', payload)\n return true\n } else {\n this.logger.debug('Beacon failed, sending via XMLHttpRequest')\n const { promise, resolve, reject } = promiseWithResolvers<boolean>()\n try {\n const xhr = new XMLHttpRequest()\n xhr.open('POST', endpoint, true)\n xhr.setRequestHeader('Content-Type', 'application/json')\n xhr.send(body)\n xhr.onload = () => {\n this.logger.debug('Beacon sent successfully via XMLHttpRequest', payload)\n resolve(xhr.status >= 200 && xhr.status < 300)\n }\n xhr.onerror = () => {\n reject(new Error('Failed to send beacon'))\n }\n } catch (error) {\n reject(error)\n }\n return promise\n }\n }\n\n /**\n * 清理资源\n */\n protected stop() {\n if (this._timer !== null) {\n clearInterval(this._timer)\n this._timer = null\n }\n // 在销毁前发送剩余的数据\n if (this._usages.length > 0) {\n this.sendBeacon()\n }\n }\n}\n"],"names":["_PluginAnalytics_decorators","_init","_a","Inject","PluginAnalytics","BasePlugin","ctx","$","Schema","jsx","jsxs","Endpoints","handleUnload","key","shown","enabled","result","payload","paramCase","feature","subtype","page","usage","usages","body","endpoint","promise","resolve","reject","promiseWithResolvers","xhr","error","__decoratorStart","__decorateElement","__runInitializers"],"mappings":"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"}