mirror of
https://github.com/flarum/core.git
synced 2025-10-22 12:16:07 +02:00
* Improve typings for ItemList * Add new `.replace()` syntax * Update JSDoc * Add missing `T` type * Fix typo Co-authored-by: Alexander Skvortsov <38059171+askvortsov1@users.noreply.github.com> * Allow choice to not set `itemName` property when calling `toArray` * Make `ItemList.items` read-only * Modify `.replace()`; add `.changePriority()` * Complete rename * Update JSDoc * Add `.toObject()` method; deprecate `.items` * Rewrite `.toArray()` to use Proxy instead of modifying the item content - Fixes #3030 - Fixes issue where setting `itemName` property could result in errors depending on the object type (e.g. proxies) - Fixes unneeded duplication of item list - Add option to disable setting `itemName` property on primitives * Simplify condition * Remove debug code * Make proxying function protected instead of private * Update a usage of ItemList as an example * Make `itemName` property read-only * Use correct capitalisation of `object` * Invert `toArray` parameter function * Simplify isEmpty check * Update ItemList.ts * Fix `merge()` * Remove extra JSDoc comment * Use `._items` directly for merging * Rename methods: `replace` -> `set`; `changePriority` -> `setPriority` This more closely matches our existing method names (`get()`) * Change `items` getter * Simplify proxying * Update URL to source function * Update compat * Various changes to toObject * Remove `Item.key` * Make item content proxy method private * Enforce merge typings * Update TSDoc comments to use `{@link}` for references to methods * Correct references to deprecated `.replace` method * Throw error when setting content/priority of non-existent items * Remove intermediary variable * Update TSDoc block * Update js/src/@types/global.d.ts Co-authored-by: Alexander Skvortsov <38059171+askvortsov1@users.noreply.github.com>
168 lines
6.5 KiB
JavaScript
168 lines
6.5 KiB
JavaScript
import * as extend from './extend.ts';
|
|
import Session from './Session';
|
|
import Store from './Store';
|
|
import BasicEditorDriver from './utils/BasicEditorDriver';
|
|
import evented from './utils/evented';
|
|
import liveHumanTimes from './utils/liveHumanTimes';
|
|
import ItemList from './utils/ItemList';
|
|
import mixin from './utils/mixin';
|
|
import humanTime from './utils/humanTime';
|
|
import computed from './utils/computed';
|
|
import insertText from './utils/insertText';
|
|
import styleSelectedText from './utils/styleSelectedText';
|
|
import Drawer from './utils/Drawer';
|
|
import anchorScroll from './utils/anchorScroll';
|
|
import RequestError from './utils/RequestError';
|
|
import abbreviateNumber from './utils/abbreviateNumber';
|
|
import escapeRegExp from './utils/escapeRegExp';
|
|
import * as string from './utils/string';
|
|
import * as ThrottleDebounce from './utils/throttleDebounce';
|
|
import Stream from './utils/Stream';
|
|
import SubtreeRetainer from './utils/SubtreeRetainer';
|
|
import setRouteWithForcedRefresh from './utils/setRouteWithForcedRefresh';
|
|
import extract from './utils/extract';
|
|
import ScrollListener from './utils/ScrollListener';
|
|
import stringToColor from './utils/stringToColor';
|
|
import subclassOf from './utils/subclassOf';
|
|
import patchMithril from './utils/patchMithril';
|
|
import proxifyCompat from './utils/proxifyCompat';
|
|
import classList from './utils/classList';
|
|
import extractText from './utils/extractText';
|
|
import formatNumber from './utils/formatNumber';
|
|
import mapRoutes from './utils/mapRoutes';
|
|
import withAttr from './utils/withAttr';
|
|
import Notification from './models/Notification';
|
|
import User from './models/User';
|
|
import Post from './models/Post';
|
|
import Discussion from './models/Discussion';
|
|
import Group from './models/Group';
|
|
import Forum from './models/Forum';
|
|
import Component from './Component';
|
|
import Translator from './Translator';
|
|
import AlertManager from './components/AlertManager';
|
|
import Page from './components/Page';
|
|
import Switch from './components/Switch';
|
|
import Badge from './components/Badge';
|
|
import LoadingIndicator from './components/LoadingIndicator';
|
|
import Placeholder from './components/Placeholder';
|
|
import Separator from './components/Separator';
|
|
import Dropdown from './components/Dropdown';
|
|
import SplitDropdown from './components/SplitDropdown';
|
|
import RequestErrorModal from './components/RequestErrorModal';
|
|
import FieldSet from './components/FieldSet';
|
|
import Select from './components/Select';
|
|
import Navigation from './components/Navigation';
|
|
import Alert from './components/Alert';
|
|
import Link from './components/Link';
|
|
import LinkButton from './components/LinkButton';
|
|
import Checkbox from './components/Checkbox';
|
|
import SelectDropdown from './components/SelectDropdown';
|
|
import ModalManager from './components/ModalManager';
|
|
import Button from './components/Button';
|
|
import Modal from './components/Modal';
|
|
import GroupBadge from './components/GroupBadge';
|
|
import TextEditor from './components/TextEditor';
|
|
import TextEditorButton from './components/TextEditorButton';
|
|
import EditUserModal from './components/EditUserModal';
|
|
import Tooltip from './components/Tooltip';
|
|
import Model from './Model';
|
|
import Application from './Application';
|
|
import fullTime from './helpers/fullTime';
|
|
import avatar from './helpers/avatar';
|
|
import icon from './helpers/icon';
|
|
import humanTimeHelper from './helpers/humanTime';
|
|
import punctuateSeries from './helpers/punctuateSeries';
|
|
import highlight from './helpers/highlight';
|
|
import username from './helpers/username';
|
|
import userOnline from './helpers/userOnline';
|
|
import listItems from './helpers/listItems';
|
|
import Fragment from './Fragment';
|
|
import DefaultResolver from './resolvers/DefaultResolver';
|
|
import PaginatedListState from './states/PaginatedListState';
|
|
import isObject from './utils/isObject';
|
|
|
|
export default {
|
|
extend: extend,
|
|
Session: Session,
|
|
Store: Store,
|
|
'utils/BasicEditorDriver': BasicEditorDriver,
|
|
'utils/evented': evented,
|
|
'utils/liveHumanTimes': liveHumanTimes,
|
|
'utils/ItemList': ItemList,
|
|
'utils/mixin': mixin,
|
|
'utils/humanTime': humanTime,
|
|
'utils/computed': computed,
|
|
'utils/insertText': insertText,
|
|
'utils/styleSelectedText': styleSelectedText,
|
|
'utils/Drawer': Drawer,
|
|
'utils/anchorScroll': anchorScroll,
|
|
'utils/RequestError': RequestError,
|
|
'utils/abbreviateNumber': abbreviateNumber,
|
|
'utils/string': string,
|
|
'utils/SubtreeRetainer': SubtreeRetainer,
|
|
'utils/escapeRegExp': escapeRegExp,
|
|
'utils/extract': extract,
|
|
'utils/ScrollListener': ScrollListener,
|
|
'utils/stringToColor': stringToColor,
|
|
'utils/Stream': Stream,
|
|
'utils/subclassOf': subclassOf,
|
|
'utils/setRouteWithForcedRefresh': setRouteWithForcedRefresh,
|
|
'utils/patchMithril': patchMithril,
|
|
'utils/proxifyCompat': proxifyCompat,
|
|
'utils/classList': classList,
|
|
'utils/extractText': extractText,
|
|
'utils/formatNumber': formatNumber,
|
|
'utils/mapRoutes': mapRoutes,
|
|
'utils/withAttr': withAttr,
|
|
'utils/throttleDebounce': ThrottleDebounce,
|
|
'utils/isObject': isObject,
|
|
'models/Notification': Notification,
|
|
'models/User': User,
|
|
'models/Post': Post,
|
|
'models/Discussion': Discussion,
|
|
'models/Group': Group,
|
|
'models/Forum': Forum,
|
|
Component: Component,
|
|
Fragment: Fragment,
|
|
Translator: Translator,
|
|
'components/AlertManager': AlertManager,
|
|
'components/Page': Page,
|
|
'components/Switch': Switch,
|
|
'components/Badge': Badge,
|
|
'components/LoadingIndicator': LoadingIndicator,
|
|
'components/Placeholder': Placeholder,
|
|
'components/Separator': Separator,
|
|
'components/Dropdown': Dropdown,
|
|
'components/SplitDropdown': SplitDropdown,
|
|
'components/RequestErrorModal': RequestErrorModal,
|
|
'components/FieldSet': FieldSet,
|
|
'components/Select': Select,
|
|
'components/Navigation': Navigation,
|
|
'components/Alert': Alert,
|
|
'components/Link': Link,
|
|
'components/LinkButton': LinkButton,
|
|
'components/Checkbox': Checkbox,
|
|
'components/SelectDropdown': SelectDropdown,
|
|
'components/ModalManager': ModalManager,
|
|
'components/Button': Button,
|
|
'components/Modal': Modal,
|
|
'components/GroupBadge': GroupBadge,
|
|
'components/TextEditor': TextEditor,
|
|
'components/TextEditorButton': TextEditorButton,
|
|
'components/Tooltip': Tooltip,
|
|
'components/EditUserModal': EditUserModal,
|
|
Model: Model,
|
|
Application: Application,
|
|
'helpers/fullTime': fullTime,
|
|
'helpers/avatar': avatar,
|
|
'helpers/icon': icon,
|
|
'helpers/humanTime': humanTimeHelper,
|
|
'helpers/punctuateSeries': punctuateSeries,
|
|
'helpers/highlight': highlight,
|
|
'helpers/username': username,
|
|
'helpers/userOnline': userOnline,
|
|
'helpers/listItems': listItems,
|
|
'resolvers/DefaultResolver': DefaultResolver,
|
|
'states/PaginatedListState': PaginatedListState,
|
|
};
|