;ELC   
;;; Compiled
;;; in Emacs version 26.1
;;; with all optimizations.

;;; This file uses dynamic docstrings, first added in Emacs 19.29.

;;; This file does not contain utf-8 non-ASCII characters,
;;; and so can be loaded in Emacs versions earlier than 23.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


(require 'js2-mode)
#@399 List of JavaScript class definition or extension styles.

:framework is a valid value in `js2-imenu-enabled-frameworks'.

:call-re is a regular expression that has no capturing groups.

:recorder is a function name that will be called when the regular
expression matches some text in the buffer.  When it's called, point will be
at the end of the match.  The function must keep the point position.
(defvar js2-imenu-extension-styles (byte-code "\301\302\303\304\305\306\307\310Q\311BBBB\312BBBB\207" [js2-mode-identifier-re (:framework jquery :call-re "\\_<\\(?:jQuery\\|\\$\\|_\\)\\.extend\\s-*(" :recorder js2-imenu-record-jquery-extend) (:framework jquery-ui :call-re "^\\s-*\\(?:jQuery\\|\\$\\)\\.widget\\s-*(" :recorder js2-imenu-record-string-declare) (:framework dojo :call-re "^\\s-*dojo.declare\\s-*(" :recorder js2-imenu-record-string-declare) :framework backbone :call-re "\\_<" "\\.extend\\s-*(" (:recorder js2-imenu-record-backbone-extend) ((:framework enyo :call-re "\\_<enyo\\.kind\\s-*(" :recorder js2-imenu-record-enyo-kind) (:framework react :call-re "\\_<React\\.createClass\\s-*(" :recorder js2-imenu-record-react-class) (:framework sencha :call-re "^\\s-*Ext\\.define\\s-*(" :recorder js2-imenu-record-sencha-class))] 9) (#$ . 429))
#@49 List of available JavaScript framework symbols.
(defconst js2-imenu-available-frameworks (mapcar #[(style) "\301\302\"\207" [style plist-get :framework] 3] js2-imenu-extension-styles) (#$ . 1690))
(byte-code "\301\302\300\303\304\305\306\307\"B\310\311&\210\301\312\313\314\304\315\310\311&\210\301\316\317\320\304\321\310\311&\210\301\322\313\323\304\315\310\311&\210\301\324\313\325\304\315\310\311&\207" [js2-imenu-available-frameworks custom-declare-variable js2-imenu-enabled-frameworks "Frameworks to be recognized by `js2-mode'." :type set mapcar #[(x) "\301D\207" [x const] 2] :group js2-imenu js2-imenu-show-other-functions t "Non-nil to show functions not recognized by other mechanisms,\nin a shared namespace." boolean js2-imenu-other-functions-ns "?" "Namespace name to use for other functions." string js2-imenu-show-module-pattern "Non-nil to recognize the module pattern:\n\nvar foobs = (function(a) {\n  return {fib: function() {}, fub: function() {}};\n})(b);\n\nWe record the returned hash as belonging to the named module, and\nprefix any functions defined inside the IIFE with the module name." js2-imenu-split-string-identifiers "When non-nil, split string identifiers on dots.\nCurrently used for jQuery widgets, Dojo and Enyo declarations."] 9)
(defalias 'js2-imenu-extras-setup #[nil "\203 \303\304\305\306\211$\210	\204 \n\205 \303\304\307\306\211$\207" [js2-imenu-enabled-frameworks js2-imenu-show-other-functions js2-imenu-show-module-pattern add-hook js2-build-imenu-callbacks js2-imenu-record-declarations t js2-imenu-walk-ast] 5])
(defalias 'js2-imenu-extras-remove #[nil "\300\301\302\303#\210\300\301\304\303#\207" [remove-hook js2-build-imenu-callbacks js2-imenu-record-declarations t js2-imenu-walk-ast] 4])
(defalias 'js2-imenu-record-declarations #[nil "\306\211	:\203\" 	@\307\n\310\"\f>\203 \nB	A\211\202 \237+\311\312\313#eb\210\314\306\315#\205{ \316GS\315\306X\203t T\224\203g \3078\317\" \306\211\202h \315\203t T\211\202I \210,\2020 *\207" [js2-imenu-extension-styles #1=#:--cl-var-- style #2=#:--cl-var-- js2-imenu-enabled-frameworks styles nil plist-get :framework mapconcat #[(style) "\301\302\303\"\304Q\207" [style "\\(" plist-get :call-re "\\)"] 4] "\\|" js2-re-search-forward t 0 :recorder re i #3=#:--cl-var-- #4=#:--cl-var-- #5=#:--cl-var--] 5])
(defalias 'js2-imenu-record-jquery-extend #[nil "\301\302`S\303#)\207" [pred #[(subject) "\303!	>\205O \303\211!	>\204 \304\305\306D\"\210\307H!\n>\2049 \304\305\310\303!	>\2043 \304\305\306D\"\210\307HD\"\210\303!	>\204H \304\305\306D\"\210\307H\311H\312\230\207" [subject cl-struct-js2-prop-get-node-tags cl-struct-js2-name-node-tags type-of signal wrong-type-argument js2-prop-get-node 8 js2-name-node 6 "prototype"] 7] js2-imenu-record-extend-first-arg js2-compute-nested-prop-get] 4])
(defalias 'js2-imenu-record-string-declare #[nil "\300`S\301\302#\207" [js2-imenu-record-extend-first-arg js2-string-node-p #[(node) "\203 \303\304	!\n>\204 \305\306\307	D\"\210	\310H\311\312#\207\304	!\n>\204* \305\306\307	D\"\210	\310HC\207" [js2-imenu-split-string-identifiers node cl-struct-js2-string-node-tags split-string type-of signal wrong-type-argument js2-string-node 6 "\\." t] 5]] 4])
(defalias 'js2-imenu-record-extend-first-arg #[(point pred qname-fn) "\306!\307	!\n>\204 \310\311\312	D\"\210	\313H\211@\f!\205T A\314:\203R @\307!>\203I \315\f!\316!#\210A\211\202) *\314+\207" [point node cl-struct-js2-call-node-tags args subject pred js2-node-at-point type-of signal wrong-type-argument js2-call-node 7 nil js2-record-object-literal js2-node-abs-pos #1=#:--cl-var-- arg cl-struct-js2-object-node-tags qname-fn] 6])
(defalias 'js2-imenu-record-backbone-or-react #[nil "\306`S!\307!	>\204 \310\311\312D\"\210\313H\211@\307!\f>\204* \310\311\314D\"\210\315H\307!>\205\203 \307!>\203V \307!>\204P \310\311\316D\"\210\317H\202r \307!>\205r \307!>\204o \310\311\320D\"\210\313H\211\205\202 \321\322!\323!#),\207" [node cl-struct-js2-call-node-tags args methods cl-struct-js2-node-tags parent js2-node-at-point type-of signal wrong-type-argument js2-call-node 7 js2-node 5 js2-var-init-node 6 js2-assign-node js2-record-object-literal js2-compute-nested-prop-get js2-node-abs-pos cl-struct-js2-object-node-tags cl-struct-js2-var-init-node-tags cl-struct-js2-assign-node-tags subject] 6])
(byte-code "\300\301\302\"\210\300\303\302\"\207" [defalias js2-imenu-record-backbone-extend js2-imenu-record-backbone-or-react js2-imenu-record-react-class] 3)
(defalias 'js2-imenu-record-enyo-kind #[nil "\306`S!\307!	>\204 \310\311\312D\"\210\313H\211@\307!\f>\205\307!\f>\2042 \310\311\314D\"\210\315H\316\317\316:\203\362 @\307!>\204Z \310\311\320D\"\210\313H\307!>\204p \310\311\320D\"\210\321H\307!>\203\233 \307!>\204\224 \310\311\322D\"\210\315H\202\273 \307! >\205\273 \307! >\204\267 \310\311\323D\"\210\315H\324\232\205\340 \307! >\205\340 \307! >\204\334 \310\311\323D\"\210\315H*\211?\211\203\362 A\211\202@ ,\211!\205\325\"\203\n\326!\327\"\202!C\330!#)+\207" [node cl-struct-js2-call-node-tags args options cl-struct-js2-object-node-tags #1=#:--cl-var-- js2-node-at-point type-of signal wrong-type-argument js2-call-node 7 js2-object-node 6 nil t js2-object-prop-node 8 js2-name-node js2-string-node "name" js2-record-object-literal split-string "\\." js2-node-abs-pos elem #2=#:--cl-flag-- #3=#:--cl-var-- cl-struct-js2-object-prop-node-tags value key cl-struct-js2-name-node-tags cl-struct-js2-string-node-tags name-value js2-imenu-split-string-identifiers] 6])
(defalias 'js2-imenu-record-sencha-class #[nil "\306`S!\307!	>\204 \310\311\312D\"\210\313H\211@\nA@\307!>\205\\ \307\f!>\205\\ \307!>\204? \310\311\314D\"\210\315H\316\f\203T \317\320\321#\202W C\322\f!#),\207" [node cl-struct-js2-call-node-tags args name methods cl-struct-js2-string-node-tags js2-node-at-point type-of signal wrong-type-argument js2-call-node 7 js2-string-node 6 js2-record-object-literal split-string "\\." t js2-node-abs-pos cl-struct-js2-object-node-tags name-value js2-imenu-split-string-identifiers] 7])
(defalias 'js2-imenu-walk-ast #[nil "\301\302\"\207" [js2-mode-ast js2-visit-ast #[(node end-p) "?\205M	\203 \306\n!>\203 \307\n!\210\202L\306\n!\f>\203\260 	\203g \306\211\n!\f>\2044 \310\311\312\nD\"\210\n\313H!>\203g \314\306\n!\f>\204M \310\311\312\nD\"\210\n\315H\306\n!\f>\204_ \310\311\312\nD\"\210\n\313H\"\210\202L\203L\306\211\n!\f>\204| \310\311\312\nD\"\210\n\313H!>\203L\316\306\n!\f>\204\226 \310\311\312\nD\"\210\n\315H\306\n!\f>\204\250 \310\311\312\nD\"\210\n\313H\"\210\202L\306\n!>\203L	\203\306\211\n!>\204\316 \310\311\317\nD\"\210\n\315H!>\203\314\306\n!>\204\350 \310\311\317\nD\"\210\n\320H\306\n!>\204\373 \310\311\317\nD\"\210\n\315H\"\210\202L\203L\306\211\n!>\204\310\311\317\nD\"\210\n\315H!>\203L\316\306\n!>\2044\310\311\317\nD\"\210\n\320H\306\n!>\204G\310\311\317\nD\"\210\n\315H\"\210\321\207" [end-p js2-imenu-show-other-functions node cl-struct-js2-object-prop-node-tags cl-struct-js2-assign-node-tags cl-struct-js2-function-node-tags type-of js2-imenu-record-orphan-prop-node-function signal wrong-type-argument js2-assign-node 8 js2-imenu-record-orphan-assign-node-function 7 js2-imenu-record-module-pattern js2-var-init-node 6 t js2-imenu-show-module-pattern cl-struct-js2-call-node-tags cl-struct-js2-var-init-node-tags] 6]] 3])
#@199 Get the list of parent key names of NODE.

For example, for code

  {rules: {password: {required: function() {}}}}

when NODE is the inner `js2-object-prop-mode',
it returns `("rules" "password")'.
(defalias 'js2-imenu-parent-key-names #[(node) "\304\305	!\211\203& \306\307	!>\204 \310\311\312	D\"\210	\313H!\nB\202 \n*\207" [node n rlt cl-struct-js2-object-prop-node-tags nil js2-imenu-parent-prop-node js2-prop-node-name type-of signal wrong-type-argument js2-object-prop-node 7] 5 (#$ . 9269)])
#@118 When the parent of NODE is `js2-object-node',
and the grandparent is `js2-object-prop-node',
return the grandparent.
(defalias 'js2-imenu-parent-prop-node #[(node) "\306\211\307\n!>\204 \310\311\312\nD\"\210\n\313H\211\205C \307	!\f>\205C \307	!>\2042 \310\311\312	D\"\210	\313H\211\205C \307!>\205C *\207" [p3 p2 node cl-struct-js2-node-tags cl-struct-js2-object-node-tags cl-struct-js2-object-prop-node-tags nil type-of signal wrong-type-argument js2-node 5] 5 (#$ . 9783)])
#@90 Record orphan function when it's the value of NODE.
NODE must be `js2-object-prop-node'.
(defalias 'js2-imenu-record-orphan-prop-node-function #[(node) "\306\211!	>\204 \307\310\311D\"\210\312H!\n>\205l \306!	>\204( \307\310\311D\"\210\312H\f\2054 \313\f\"?\205k \306!	>\204G \307\310\311D\"\210\314H\315!\316\317!\320!C\244B\321\322!#+)\207" [node cl-struct-js2-object-prop-node-tags cl-struct-js2-function-node-tags fn-node js2-imenu-function-map chain type-of signal wrong-type-argument js2-object-prop-node 8 gethash 7 js2-imenu-parent-prop-node nil js2-imenu-parent-key-names js2-prop-node-name js2-record-imenu-entry js2-node-abs-pos parent-prop-node key-node js2-imenu-other-functions-ns] 5 (#$ . 10276)])
#@57 Record orphan function FN-NODE assigned to node TARGET.
(defalias 'js2-imenu-record-orphan-assign-node-function #[(target-node fn-node) "\203 \305	\306#\306=\205\" \307\n!\211\205! \fB\310	\311	!#)\207" [js2-imenu-function-map fn-node target-node chain js2-imenu-other-functions-ns gethash skip js2-compute-nested-prop-get js2-record-imenu-entry js2-node-abs-pos] 6 (#$ . 11025)])
#@81 Recognize and record module pattern use instance.
INIT must be `js2-call-node'.
(defalias 'js2-imenu-record-module-pattern #[(target init) "\306!	>\204 \307\310\311D\"\210\312H\306\n!>\205\322 \306\211\n!>\204+ \307\310\313\nD\"\210\n\312H!\f>\205\322 \306\n!>\204C \307\310\313\nD\"\210\n\312H\306!\f>\204V \307\310\314D\"\210\315H\316\306!>\204n \307\310\317D\"\210\312H!@\306!>\205\321 \306\211!>\204\223 \307\310\320D\"\210\312H!>\205\321 \306!>\204\260 \307\310\320D\"\210\312H\321!\322\323!#\210\324\323!#*+)\207" [init cl-struct-js2-call-node-tags callt cl-struct-js2-paren-node-tags cl-struct-js2-function-node-tags fn type-of signal wrong-type-argument js2-call-node 6 js2-paren-node js2-function-node 22 last js2-block-node js2-return-node js2-compute-nested-prop-get js2-record-object-literal js2-node-abs-pos js2-record-imenu-entry blk cl-struct-js2-block-node-tags ret cl-struct-js2-return-node-tags cl-struct-js2-object-node-tags target target-qname retval] 5 (#$ . 11419)])
#@111 Non-nil if Js2-Imenu-Extras mode is enabled.
Use the command `js2-imenu-extras-mode' to change this variable.
(defvar js2-imenu-extras-mode nil (#$ . 12478))
(make-variable-buffer-local 'js2-imenu-extras-mode)
#@62 Toggle Imenu support for frameworks and structural patterns.
(defalias 'js2-imenu-extras-mode #[(&optional arg) "\304 	\305=\203 \n?\202 \306	!\307V\211\203 \310 \210\202! \311 \210\312\313\n\203+ \314\202, \315\"\210\316\317!\203Q \304 \203@ \304 \232\203Q \320\321\322\n\203L \323\202M \324#\210))\325 \210\n\207" [#1=#:last-message arg js2-imenu-extras-mode local current-message toggle prefix-numeric-value 0 js2-imenu-extras-setup js2-imenu-extras-remove run-hooks js2-imenu-extras-mode-hook js2-imenu-extras-mode-on-hook js2-imenu-extras-mode-off-hook called-interactively-p any " in current buffer" message "Js2-Imenu-Extras mode %sabled%s" "en" "dis" force-mode-line-update] 5 (#$ . 12694) (list (or current-prefix-arg 'toggle))])
(defvar js2-imenu-extras-mode-hook nil)
(byte-code "\301\302N\204\f \303\301\302\304#\210\305\306\307\310\300!\205 \311\211%\210\312\313!\207" [js2-imenu-extras-mode-map js2-imenu-extras-mode-hook variable-documentation put "Hook run after entering or leaving `js2-imenu-extras-mode'.\nNo problems result if this variable is not bound.\n`add-hook' automatically binds it.  (This is true for all hook variables.)" add-minor-mode js2-imenu-extras-mode "" boundp nil provide js2-imenu-extras] 6)
